Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
TENOFunctor< DEG, PRIM, TABLE > Struct Template Reference

Per-cell TENO-E reconstruction of degree DEG to the quadrature points of all of the cell's faces. SmoothPass finishes the cells below the troubled threshold and queues the others with their central coefficients. The troubled passes then work on that queue only, so the register-heavy path does not slow the smooth cells, and split it finely, so that the few troubled cells along shocks still fill the device: sector-stencil coefficients per (cell, sector), stencil selection per (cell, face, characteristic variable), the projection back to conservative variables per (cell, face), and admissibility per cell. Each pass loops over its share of the queue, whose length never has to be read back to the host. More...

Classes

struct  GradientPass
 
struct  SmoothPass
 
struct  SmoothTeamPass
 
struct  SourcePass
 
struct  TroubledCentralPass
 
struct  TroubledCentralTeamPass
 
struct  TroubledFinishPass
 
struct  TroubledProjectPass
 
struct  TroubledSectorPass
 
struct  TroubledSelectPass
 
struct  TroubledSelectTeamPass
 

Public Member Functions

KOKKOS_INLINE_FUNCTION void entry_W (const int32_t c, const int32_t f, rtype *W_e) const
 State of a stencil entry: cell c, or its mirror across boundary face f.
 
KOKKOS_INLINE_FUNCTION void entry_conservatives (const int32_t c, const int32_t f, rtype *U) const
 
KOKKOS_INLINE_FUNCTION void conservatives (const uint32_t c, rtype *U) const
 
KOKKOS_INLINE_FUNCTION void to_primitives (const rtype *U, rtype *Wq) const
 
KOKKOS_INLINE_FUNCTION uint8_t n_quad () const
 
KOKKOS_INLINE_FUNCTION bool face_point_basis (const uint32_t f, const uint8_t q, const uint32_t i_cell, rtype *psi) const
 Monomials (minus their cell means) at quadrature point q of face f, in the scaled frame of cell i_cell. False for 3D padding points.
 
KOKKOS_INLINE_FUNCTION void operator() (GradientPass, const uint32_t i_cell) const
 Gradients of W at the centroid from the central (large-stencil) polynomial of the conservative variables, whose linear monomials carry the first derivatives at the centroid.
 
KOKKOS_INLINE_FUNCTION void operator() (SmoothPass, const uint32_t idx) const
 
template<uint8_t C, bool QUEUE = true>
KOKKOS_INLINE_FUNCTION void smooth_coefficients (const uint32_t i_cell, const rtype *U0, rtype *aK_team, int *smooth_team, const uint32_t lane) const
 Chunk C of the central coefficients of cell i_cell, into aK_team (l, var). With QUEUE, chunk 0 also finds sigma, queues the cell if troubled and leaves in smooth_team[lane] -1 if smooth, else its place in the queue.
 
KOKKOS_INLINE_FUNCTION void store_coefficients (const uint8_t part, const uint32_t slot, const rtype *aK_team, const uint32_t lane) const
 Thread part's chunk of the central coefficients in aK_team (lane), into coeffs(slot).
 
template<typename Member >
KOKKOS_INLINE_FUNCTION void operator() (SmoothTeamPass, const Member &team) const
 
KOKKOS_INLINE_FUNCTION bool is_padding (const uint32_t f, const uint8_t q) const
 
KOKKOS_INLINE_FUNCTION uint8_t side_of (const uint32_t f, const uint32_t i_cell) const
 
KOKKOS_INLINE_FUNCTION void face_eigenvectors (const uint32_t f, const uint32_t i_cell, const rtype *W0, rtype L[][N_CONSERVATIVE], rtype R[][N_CONSERVATIVE]) const
 Left and right eigenvectors for the characteristic projection on face f of cell i_cell (identity if not characteristic).
 
KOKKOS_INLINE_FUNCTION void troubled_sector (const uint32_t j, const uint8_t s) const
 Coefficients of the sector stencil s of queued cell j.
 
template<typename Matrix >
KOKKOS_INLINE_FUNCTION void troubled_select (const uint32_t j, const uint8_t k, const uint8_t var, const Matrix &S) const
 Stencil selection for characteristic variable var on face k of queued cell j, and that variable at the face's quadrature points, left in face_solution(f, q, side, var); S(e) is entry e of the cell's smoothness matrix.
 
KOKKOS_INLINE_FUNCTION void troubled_project (const uint32_t j, const uint8_t k) const
 Conservative states at the quadrature points of face k of queued cell j from the characteristic ones that troubled_select left.
 
KOKKOS_INLINE_FUNCTION uint32_t round_end () const
 End of this round's part of the queue.
 
KOKKOS_INLINE_FUNCTION uint32_t round_items (const uint32_t per_cell) const
 Items of this round, per_cell per queued cell.
 
KOKKOS_INLINE_FUNCTION void operator() (TroubledCentralPass, const uint32_t t) const
 
template<typename Member >
KOKKOS_INLINE_FUNCTION void operator() (TroubledCentralTeamPass, const Member &team) const
 
KOKKOS_INLINE_FUNCTION void operator() (SourcePass, const uint32_t i_cell) const
 Geometric source int (p - tau_thetatheta) dA of a smooth cell from its central polynomial at the points of cell_rule on a fan of triangles. Troubled cells, and cells whose polynomial is not admissible at a point, keep the source they have.
 
KOKKOS_INLINE_FUNCTION void operator() (TroubledSectorPass, const uint32_t t) const
 
KOKKOS_INLINE_FUNCTION void operator() (TroubledSelectPass, const uint32_t t) const
 
template<typename Member >
KOKKOS_INLINE_FUNCTION void operator() (TroubledSelectTeamPass, const Member &team) const
 
KOKKOS_INLINE_FUNCTION void operator() (TroubledProjectPass, const uint32_t t) const
 
KOKKOS_INLINE_FUNCTION void troubled_face_U (const uint32_t f, const uint8_t q, const uint8_t side, const rtype *U0, rtype *U) const
 Conservative face state left by troubled_project; the cell mean on padding points.
 
KOKKOS_INLINE_FUNCTION void operator() (TroubledFinishPass, const uint32_t t) const
 Admissibility check and optional bound-preserving limiting of queued cell j over all its faces, then the primitive face states.
 
KOKKOS_INLINE_FUNCTION void troubled_finish (const uint32_t j) const
 

Static Public Member Functions

template<typename F >
static KOKKOS_INLINE_FUNCTION void with_chunk (const uint8_t c, F &&f)
 
static KOKKOS_INLINE_FUNCTION rtype project (const rtype L[][N_CONSERVATIVE], const uint8_t var, const rtype *a)
 Component var of L a.
 
template<uint8_t N, typename Matrix >
static KOKKOS_INLINE_FUNCTION rtype smoothness (const rtype *c, const Matrix &S)
 Smoothness indicator c^T S c of the N coefficients c, for S with entries S(upper_index(l, m)).
 

Public Attributes

rtype sigma_threshold
 
rtype sigma_upper
 
rtype C_T
 
bool characteristic
 
bool bound_preserving
 
rtype gamma
 
Kokkos::View< uint32_t * > offsets_faces_of_cell
 
Kokkos::View< uint32_t * > faces_of_cell
 
Kokkos::View< int32_t *[2]> cells_of_face
 
Kokkos::View< uint32_t * > offsets_nodes_of_face
 
Kokkos::View< uint32_t * > nodes_of_face
 
Kokkos::View< rtype *[N_DIM]> node_coords
 
Kokkos::View< rtype *[N_DIM]> cell_coords
 
Kokkos::View< rtype *[N_DIM]> face_coords
 
Kokkos::View< rtype *[N_DIM]> face_normals
 
Kokkos::View< rtype *[N_DIM]> shifts
 
Kokkos::View< uint8_t * > face_shift
 
Kokkos::View< rtype ** > quad_points
 
Kokkos::View< rtype *** > face_quad_points
 
Kokkos::View< rtype ** > face_quad_weights
 
BoundaryData boundaries
 
Kokkos::View< rtype * > scale
 
Kokkos::View< rtype ** > basis_mean
 
Kokkos::View< uint16_t * > stencil_large_size
 
teno::PackedStencils stencil_large
 
Kokkos::View< uint16_t ** > stencil_small_size
 
teno::PackedStencils stencil_small
 
Kokkos::View< rtype ** > si_matrix
 
teno::Moments moments
 
teno::SmoothnessTerms si_terms
 
Kokkos::View< rtype * > sigma_out
 
Kokkos::View< rtype *** > coeffs
 
Kokkos::View< rtype **** > small_coeffs
 
Kokkos::View< uint32_t * > troubled_cells
 
Kokkos::View< uint32_t > n_troubled
 
Kokkos::View< rtype *[N_CONSERVATIVE]> W
 
Kokkos::View< rtype **[2][N_CONSERVATIVE]> face_solution
 
Kokkos::View< uint32_t * > cells
 
Kokkos::View< rtype *[N_CONSERVATIVE][N_DIM]> gradients
 
Kokkos::View< rtype *, Kokkos::LayoutStride > cell_gamma
 
Kokkos::View< rtype * > cell_molar_mass
 
Kokkos::View< uint8_t ** > selection
 
uint32_t n_smooth = 0
 
uint32_t stride = 0
 
uint32_t round_begin = 0
 
Kokkos::View< uint32_t * > offsets_nodes_of_cell {}
 
Kokkos::View< uint32_t * > nodes_of_cell {}
 
Kokkos::View< rtype *[3]> cell_rule {}
 
Kokkos::View< rtype *, Kokkos::LayoutStride > mu {}
 
Kokkos::View< rtype * > source {}
 

Static Public Attributes

static constexpr uint8_t NK = teno::n_dof(DEG)
 
static constexpr uint32_t TEAM_CELLS = 32
 
static constexpr bool USE_TEAM = N_DIM == 3 && DEG >= 4
 
static constexpr uint8_t PARTS = N_CONSERVATIVE
 
static constexpr uint32_t TEAM_SIZE = TEAM_CELLS * PARTS
 
static constexpr uint8_t CHUNK = (NK + PARTS - 1) / PARTS
 
static constexpr size_t TEAM_SCRATCH = sizeof(rtype) * NK * N_CONSERVATIVE * TEAM_CELLS + 2 * sizeof(int) * TEAM_CELLS
 
static constexpr uint32_t SELECT_TEAM = 32
 
static constexpr uint32_t N_SI = uint32_t(NK) * (NK + 1) / 2
 
static constexpr uint32_t N_MOMENTS = uint32_t(2 * DEG - 1) * (2 * DEG) * (2 * DEG + 1) / 6
 
static constexpr uint32_t SI_GROUP = 4
 
static constexpr size_t SELECT_SCRATCH = sizeof(rtype) * N_SI + sizeof(double) * N_MOMENTS + 16
 

Detailed Description

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
struct TENOFunctor< DEG, PRIM, TABLE >

Per-cell TENO-E reconstruction of degree DEG to the quadrature points of all of the cell's faces. SmoothPass finishes the cells below the troubled threshold and queues the others with their central coefficients. The troubled passes then work on that queue only, so the register-heavy path does not slow the smooth cells, and split it finely, so that the few troubled cells along shocks still fill the device: sector-stencil coefficients per (cell, sector), stencil selection per (cell, face, characteristic variable), the projection back to conservative variables per (cell, face), and admissibility per cell. Each pass loops over its share of the queue, whose length never has to be read back to the host.

Member Function Documentation

◆ conservatives()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::conservatives ( const uint32_t  c,
rtype *  U 
) const
inline

◆ entry_conservatives()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::entry_conservatives ( const int32_t  c,
const int32_t  f,
rtype *  U 
) const
inline

◆ entry_W()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::entry_W ( const int32_t  c,
const int32_t  f,
rtype *  W_e 
) const
inline

State of a stencil entry: cell c, or its mirror across boundary face f.

◆ face_eigenvectors()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::face_eigenvectors ( const uint32_t  f,
const uint32_t  i_cell,
const rtype *  W0,
rtype  L[][N_CONSERVATIVE],
rtype  R[][N_CONSERVATIVE] 
) const
inline

Left and right eigenvectors for the characteristic projection on face f of cell i_cell (identity if not characteristic).

◆ face_point_basis()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION bool TENOFunctor< DEG, PRIM, TABLE >::face_point_basis ( const uint32_t  f,
const uint8_t  q,
const uint32_t  i_cell,
rtype *  psi 
) const
inline

Monomials (minus their cell means) at quadrature point q of face f, in the scaled frame of cell i_cell. False for 3D padding points.

◆ is_padding()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION bool TENOFunctor< DEG, PRIM, TABLE >::is_padding ( const uint32_t  f,
const uint8_t  q 
) const
inline

◆ n_quad()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION uint8_t TENOFunctor< DEG, PRIM, TABLE >::n_quad ( ) const
inline

◆ operator()() [1/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( GradientPass  ,
const uint32_t  i_cell 
) const
inline

Gradients of W at the centroid from the central (large-stencil) polynomial of the conservative variables, whose linear monomials carry the first derivatives at the centroid.

◆ operator()() [2/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( SmoothPass  ,
const uint32_t  idx 
) const
inline

◆ operator()() [3/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<typename Member >
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( SmoothTeamPass  ,
const Member &  team 
) const
inline

◆ operator()() [4/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( SourcePass  ,
const uint32_t  i_cell 
) const
inline

Geometric source int (p - tau_thetatheta) dA of a smooth cell from its central polynomial at the points of cell_rule on a fan of triangles. Troubled cells, and cells whose polynomial is not admissible at a point, keep the source they have.

◆ operator()() [5/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledCentralPass  ,
const uint32_t  t 
) const
inline

◆ operator()() [6/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<typename Member >
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledCentralTeamPass  ,
const Member &  team 
) const
inline

◆ operator()() [7/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledFinishPass  ,
const uint32_t  t 
) const
inline

Admissibility check and optional bound-preserving limiting of queued cell j over all its faces, then the primitive face states.

◆ operator()() [8/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledProjectPass  ,
const uint32_t  t 
) const
inline

◆ operator()() [9/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledSectorPass  ,
const uint32_t  t 
) const
inline

◆ operator()() [10/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledSelectPass  ,
const uint32_t  t 
) const
inline

◆ operator()() [11/11]

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<typename Member >
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::operator() ( TroubledSelectTeamPass  ,
const Member &  team 
) const
inline

◆ project()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
static KOKKOS_INLINE_FUNCTION rtype TENOFunctor< DEG, PRIM, TABLE >::project ( const rtype  L[][N_CONSERVATIVE],
const uint8_t  var,
const rtype *  a 
)
inlinestatic

Component var of L a.

◆ round_end()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION uint32_t TENOFunctor< DEG, PRIM, TABLE >::round_end ( ) const
inline

End of this round's part of the queue.

◆ round_items()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION uint32_t TENOFunctor< DEG, PRIM, TABLE >::round_items ( const uint32_t  per_cell) const
inline

Items of this round, per_cell per queued cell.

◆ side_of()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION uint8_t TENOFunctor< DEG, PRIM, TABLE >::side_of ( const uint32_t  f,
const uint32_t  i_cell 
) const
inline

◆ smooth_coefficients()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<uint8_t C, bool QUEUE = true>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::smooth_coefficients ( const uint32_t  i_cell,
const rtype *  U0,
rtype *  aK_team,
int *  smooth_team,
const uint32_t  lane 
) const
inline

Chunk C of the central coefficients of cell i_cell, into aK_team (l, var). With QUEUE, chunk 0 also finds sigma, queues the cell if troubled and leaves in smooth_team[lane] -1 if smooth, else its place in the queue.

◆ smoothness()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<uint8_t N, typename Matrix >
static KOKKOS_INLINE_FUNCTION rtype TENOFunctor< DEG, PRIM, TABLE >::smoothness ( const rtype *  c,
const Matrix &  S 
)
inlinestatic

Smoothness indicator c^T S c of the N coefficients c, for S with entries S(upper_index(l, m)).

◆ store_coefficients()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::store_coefficients ( const uint8_t  part,
const uint32_t  slot,
const rtype *  aK_team,
const uint32_t  lane 
) const
inline

Thread part's chunk of the central coefficients in aK_team (lane), into coeffs(slot).

◆ to_primitives()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::to_primitives ( const rtype *  U,
rtype *  Wq 
) const
inline

◆ troubled_face_U()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::troubled_face_U ( const uint32_t  f,
const uint8_t  q,
const uint8_t  side,
const rtype *  U0,
rtype *  U 
) const
inline

Conservative face state left by troubled_project; the cell mean on padding points.

◆ troubled_finish()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::troubled_finish ( const uint32_t  j) const
inline

◆ troubled_project()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::troubled_project ( const uint32_t  j,
const uint8_t  k 
) const
inline

Conservative states at the quadrature points of face k of queued cell j from the characteristic ones that troubled_select left.

◆ troubled_sector()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::troubled_sector ( const uint32_t  j,
const uint8_t  s 
) const
inline

Coefficients of the sector stencil s of queued cell j.

◆ troubled_select()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<typename Matrix >
KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::troubled_select ( const uint32_t  j,
const uint8_t  k,
const uint8_t  var,
const Matrix &  S 
) const
inline

Stencil selection for characteristic variable var on face k of queued cell j, and that variable at the face's quadrature points, left in face_solution(f, q, side, var); S(e) is entry e of the cell's smoothness matrix.

◆ with_chunk()

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
template<typename F >
static KOKKOS_INLINE_FUNCTION void TENOFunctor< DEG, PRIM, TABLE >::with_chunk ( const uint8_t  c,
F &&  f 
)
inlinestatic

Member Data Documentation

◆ basis_mean

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype **> TENOFunctor< DEG, PRIM, TABLE >::basis_mean

◆ bound_preserving

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
bool TENOFunctor< DEG, PRIM, TABLE >::bound_preserving

◆ boundaries

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
BoundaryData TENOFunctor< DEG, PRIM, TABLE >::boundaries

◆ C_T

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
rtype TENOFunctor< DEG, PRIM, TABLE >::C_T

◆ cell_coords

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::cell_coords

◆ cell_gamma

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *, Kokkos::LayoutStride> TENOFunctor< DEG, PRIM, TABLE >::cell_gamma

◆ cell_molar_mass

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *> TENOFunctor< DEG, PRIM, TABLE >::cell_molar_mass

◆ cell_rule

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[3]> TENOFunctor< DEG, PRIM, TABLE >::cell_rule {}

◆ cells

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::cells

◆ cells_of_face

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<int32_t *[2]> TENOFunctor< DEG, PRIM, TABLE >::cells_of_face

◆ characteristic

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
bool TENOFunctor< DEG, PRIM, TABLE >::characteristic

◆ CHUNK

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint8_t TENOFunctor< DEG, PRIM, TABLE >::CHUNK = (NK + PARTS - 1) / PARTS
staticconstexpr

◆ coeffs

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype ***> TENOFunctor< DEG, PRIM, TABLE >::coeffs

◆ face_coords

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::face_coords

◆ face_normals

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::face_normals

◆ face_quad_points

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype ***> TENOFunctor< DEG, PRIM, TABLE >::face_quad_points

◆ face_quad_weights

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype **> TENOFunctor< DEG, PRIM, TABLE >::face_quad_weights

◆ face_shift

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint8_t *> TENOFunctor< DEG, PRIM, TABLE >::face_shift

◆ face_solution

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype **[2][N_CONSERVATIVE]> TENOFunctor< DEG, PRIM, TABLE >::face_solution

◆ faces_of_cell

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::faces_of_cell

◆ gamma

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
rtype TENOFunctor< DEG, PRIM, TABLE >::gamma

◆ gradients

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_CONSERVATIVE][N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::gradients

◆ moments

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
teno::Moments TENOFunctor< DEG, PRIM, TABLE >::moments

◆ mu

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *, Kokkos::LayoutStride> TENOFunctor< DEG, PRIM, TABLE >::mu {}

◆ N_MOMENTS

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::N_MOMENTS = uint32_t(2 * DEG - 1) * (2 * DEG) * (2 * DEG + 1) / 6
staticconstexpr

◆ N_SI

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::N_SI = uint32_t(NK) * (NK + 1) / 2
staticconstexpr

◆ n_smooth

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
uint32_t TENOFunctor< DEG, PRIM, TABLE >::n_smooth = 0

◆ n_troubled

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t> TENOFunctor< DEG, PRIM, TABLE >::n_troubled

◆ NK

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint8_t TENOFunctor< DEG, PRIM, TABLE >::NK = teno::n_dof(DEG)
staticconstexpr

◆ node_coords

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::node_coords

◆ nodes_of_cell

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::nodes_of_cell {}

◆ nodes_of_face

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::nodes_of_face

◆ offsets_faces_of_cell

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::offsets_faces_of_cell

◆ offsets_nodes_of_cell

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::offsets_nodes_of_cell {}

◆ offsets_nodes_of_face

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::offsets_nodes_of_face

◆ PARTS

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint8_t TENOFunctor< DEG, PRIM, TABLE >::PARTS = N_CONSERVATIVE
staticconstexpr

◆ quad_points

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype **> TENOFunctor< DEG, PRIM, TABLE >::quad_points

◆ round_begin

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
uint32_t TENOFunctor< DEG, PRIM, TABLE >::round_begin = 0

◆ scale

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *> TENOFunctor< DEG, PRIM, TABLE >::scale

◆ SELECT_SCRATCH

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr size_t TENOFunctor< DEG, PRIM, TABLE >::SELECT_SCRATCH = sizeof(rtype) * N_SI + sizeof(double) * N_MOMENTS + 16
staticconstexpr

◆ SELECT_TEAM

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::SELECT_TEAM = 32
staticconstexpr

◆ selection

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint8_t **> TENOFunctor< DEG, PRIM, TABLE >::selection

◆ shifts

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_DIM]> TENOFunctor< DEG, PRIM, TABLE >::shifts

◆ SI_GROUP

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::SI_GROUP = 4
staticconstexpr

◆ si_matrix

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype **> TENOFunctor< DEG, PRIM, TABLE >::si_matrix

◆ si_terms

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
teno::SmoothnessTerms TENOFunctor< DEG, PRIM, TABLE >::si_terms

◆ sigma_out

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *> TENOFunctor< DEG, PRIM, TABLE >::sigma_out

◆ sigma_threshold

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
rtype TENOFunctor< DEG, PRIM, TABLE >::sigma_threshold

◆ sigma_upper

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
rtype TENOFunctor< DEG, PRIM, TABLE >::sigma_upper

◆ small_coeffs

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype ****> TENOFunctor< DEG, PRIM, TABLE >::small_coeffs

◆ source

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *> TENOFunctor< DEG, PRIM, TABLE >::source {}

◆ stencil_large

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
teno::PackedStencils TENOFunctor< DEG, PRIM, TABLE >::stencil_large

◆ stencil_large_size

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint16_t *> TENOFunctor< DEG, PRIM, TABLE >::stencil_large_size

◆ stencil_small

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
teno::PackedStencils TENOFunctor< DEG, PRIM, TABLE >::stencil_small

◆ stencil_small_size

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint16_t **> TENOFunctor< DEG, PRIM, TABLE >::stencil_small_size

◆ stride

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
uint32_t TENOFunctor< DEG, PRIM, TABLE >::stride = 0

◆ TEAM_CELLS

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::TEAM_CELLS = 32
staticconstexpr

◆ TEAM_SCRATCH

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr size_t TENOFunctor< DEG, PRIM, TABLE >::TEAM_SCRATCH = sizeof(rtype) * NK * N_CONSERVATIVE * TEAM_CELLS + 2 * sizeof(int) * TEAM_CELLS
staticconstexpr

◆ TEAM_SIZE

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr uint32_t TENOFunctor< DEG, PRIM, TABLE >::TEAM_SIZE = TEAM_CELLS * PARTS
staticconstexpr

◆ troubled_cells

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<uint32_t *> TENOFunctor< DEG, PRIM, TABLE >::troubled_cells

◆ USE_TEAM

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
constexpr bool TENOFunctor< DEG, PRIM, TABLE >::USE_TEAM = N_DIM == 3 && DEG >= 4
staticconstexpr

◆ W

template<uint8_t DEG, bool PRIM, typename TABLE = rtype>
Kokkos::View<rtype *[N_CONSERVATIVE]> TENOFunctor< DEG, PRIM, TABLE >::W

The documentation for this struct was generated from the following file: