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...
|
| 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 |
| |
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.