Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
teno_setup.h File Reference

TENO-E table setup in 3D, per cell on the device (internal to the TENO implementation). More...

#include <array>
#include <memory>
#include <string>
#include <type_traits>
#include <vector>
#include <Kokkos_Core.hpp>
#include "boundary.h"
#include "mesh.h"
#include "teno.h"

Go to the source code of this file.

Classes

struct  teno_setup::Lane< T >
 Element k of one cell's array in a batch: interleaved across cells on GPUs. More...
 
struct  teno_setup::SlotArray< T, Space >
 An array of cap elements for each of slots cells. On GPUs element k of every cell is contiguous, so that a warp working on consecutive cells reads consecutive words; on the host each cell's array is. More...
 
struct  teno_setup::TableBatchT< Space >
 Tables of a batch of cells before packing, one slot per cell, at the largest stencil sizes the searches allow. More...
 
struct  teno_setup::Options
 Options and sizes of the 3D setup. More...
 
struct  teno_setup::Timings
 Timings of the last setup, in seconds. More...
 
class  teno_setup::Setup3DHandle
 The 3D TENO-E precomputation of a mesh: the geometry it needs (cell moments, bounding boxes and ranking metrics), computed once, and the tables of any batch of cells. Every cell's tables are a function of the mesh alone, computed with the same sequence of floating-point operations on the device and on the host, so they do not depend on the batch, the thread count or where they ran. More...
 

Namespaces

namespace  teno_setup
 

Typedefs

using teno_setup::TableBatch = TableBatchT< Kokkos::DefaultExecutionSpace::memory_space >
 

Enumerations

enum  teno_setup::Status : uint8_t { teno_setup::OK = 0 , teno_setup::OUT_OF_SCRATCH = 1 }
 Why a cell's device setup must be redone on the host. More...
 

Functions

bool teno_setup::one_sided_face (const Mesh &mesh, const BoundaryCondition &bc, const uint32_t f, const bool curved_mirrors)
 Whether stencils take no mirror images across boundary face f (with condition bc): curved wall and symmetry faces, which no reflection across a plane matches beyond second order, unless curved_mirrors. Curved far fields and inflows keep theirs.
 
bool teno_setup::batch_interleaved ()
 Whether batches interleave their cells (GPUs).
 
TableBatch teno_setup::device_copy (const TableBatchT< Kokkos::HostSpace > &h)
 The device copy of a host batch.
 
teno::SmoothnessTerms teno_setup::smoothness_terms (uint8_t degree)
 The terms of every smoothness-matrix entry of the given degree, in the order the setup sums them.
 
uint16_t teno_setup::n_moments (uint8_t degree)
 Central moments per cell for the given degree.
 
std::array< double, 9 > teno_setup::ranking_metric (const Mesh &mesh, const Kokkos::View< int32_t * >::host_mirror_type &face_bc, const Kokkos::View< BoundaryCondition * >::host_mirror_type &bcs, uint32_t i)
 Metric (3 x 3, row-major) in which the stencil candidates of cell i are ranked by distance: the identity unless the spacing of its vertex neighbors (completed across its boundary faces by mirror images) is markedly anisotropic.
 

Variables

constexpr double teno_setup::GEOMETRY_TOL = precision_tol<double>(1e-10, 1e-5)
 
constexpr double teno_setup::MAX_LEBESGUE_2D = 10.0
 
constexpr double teno_setup::MAX_LEBESGUE_3D = 4.0
 
constexpr double teno_setup::LEBESGUE_SLACK = 1.25
 

Detailed Description

TENO-E table setup in 3D, per cell on the device (internal to the TENO implementation).

Author
Matthew Bonanni (mbona.nosp@m.nni0.nosp@m.01@gm.nosp@m.ail..nosp@m.com)
Version
0.1
Date
2026-10-09