Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
cell_chemistry_kernels::AdvanceFunctor Struct Reference

Advances the cells of a queue over dt, writes their partial densities, last sub-step and cost, and counts failures. The temperature seed stays as the RHS left it: halo copies of a cell get no chemistry, and their seeds must follow the owner's. More...

Public Types

using value_type = uint32_t
 

Public Member Functions

KOKKOS_INLINE_FUNCTION double cell_dt (const uint32_t c) const
 
KOKKOS_INLINE_FUNCTION double cell_forcing (const uint32_t c, const uint32_t k, const double rho, const double e) const
 Entry k of the reactor's forcing of cell c (g_k, or g_e for k = n_species; see ConstantVolumeReactor): rho Y_k gains its rate per unit time and rho e goes linearly to that of U_end, both over the time scaled by s.
 
KOKKOS_INLINE_FUNCTION void operator() (const uint32_t i, uint32_t &failures) const
 One thread per cell, with its work memory in the global work array.
 
template<uint32_t N>
KOKKOS_INLINE_FUNCTION void operator() (LocalWork< N >, const uint32_t i, uint32_t &failures) const
 One thread per cell, with its work memory (at most N doubles) on the thread's stack: GPUs interleave the threads' local memory, so that the lanes of a warp at the same offset share cache lines.
 
KOKKOS_INLINE_FUNCTION void advance_cell (const uint32_t i, double *Y, uint32_t *pivots, uint32_t &failures) const
 
template<bool Sparse>
KOKKOS_INLINE_FUNCTION void operator() (TeamTag< Sparse >, const Member &member, uint32_t &failures) const
 All threads and lanes of a team per cell.
 

Public Attributes

Mixture gas
 
chemistry::KineticsTable kinetics
 
StateView U
 
SpeciesView rhoY
 
Kokkos::View< rtype * > T_seed
 
Kokkos::View< rtype * > chem_h
 
Kokkos::View< rtype * > chem_cost
 
Kokkos::View< float * > previous_cost
 
Kokkos::View< double **, Kokkos::LayoutRight > work
 
Kokkos::View< uint32_t **, Kokkos::LayoutRight > pivot
 
Kokkos::View< uint32_t * > queue
 
uint32_t offset
 
chemistry::ReactorOptions options
 
double dt
 
uint32_t lanes
 
chemistry::SparseLUPattern pattern
 
bool sparse
 
uint32_t fast_size
 
Kokkos::View< rtype * > time_scale
 
uint32_t forcing_offset = 0
 
SpeciesView rate {}
 
StateView U_end {}
 
SpeciesView rhoY_end {}
 

Detailed Description

Advances the cells of a queue over dt, writes their partial densities, last sub-step and cost, and counts failures. The temperature seed stays as the RHS left it: halo copies of a cell get no chemistry, and their seeds must follow the owner's.

Member Typedef Documentation

◆ value_type

Member Function Documentation

◆ advance_cell()

KOKKOS_INLINE_FUNCTION void cell_chemistry_kernels::AdvanceFunctor::advance_cell ( const uint32_t  i,
double *  Y,
uint32_t *  pivots,
uint32_t &  failures 
) const
inline

◆ cell_dt()

KOKKOS_INLINE_FUNCTION double cell_chemistry_kernels::AdvanceFunctor::cell_dt ( const uint32_t  c) const
inline

◆ cell_forcing()

KOKKOS_INLINE_FUNCTION double cell_chemistry_kernels::AdvanceFunctor::cell_forcing ( const uint32_t  c,
const uint32_t  k,
const double  rho,
const double  e 
) const
inline

Entry k of the reactor's forcing of cell c (g_k, or g_e for k = n_species; see ConstantVolumeReactor): rho Y_k gains its rate per unit time and rho e goes linearly to that of U_end, both over the time scaled by s.

◆ operator()() [1/3]

KOKKOS_INLINE_FUNCTION void cell_chemistry_kernels::AdvanceFunctor::operator() ( const uint32_t  i,
uint32_t &  failures 
) const
inline

One thread per cell, with its work memory in the global work array.

◆ operator()() [2/3]

template<uint32_t N>
KOKKOS_INLINE_FUNCTION void cell_chemistry_kernels::AdvanceFunctor::operator() ( LocalWork< N >  ,
const uint32_t  i,
uint32_t &  failures 
) const
inline

One thread per cell, with its work memory (at most N doubles) on the thread's stack: GPUs interleave the threads' local memory, so that the lanes of a warp at the same offset share cache lines.

◆ operator()() [3/3]

template<bool Sparse>
KOKKOS_INLINE_FUNCTION void cell_chemistry_kernels::AdvanceFunctor::operator() ( TeamTag< Sparse >  ,
const Member &  member,
uint32_t &  failures 
) const
inline

All threads and lanes of a team per cell.

Member Data Documentation

◆ chem_cost

Kokkos::View<rtype *> cell_chemistry_kernels::AdvanceFunctor::chem_cost

◆ chem_h

Kokkos::View<rtype *> cell_chemistry_kernels::AdvanceFunctor::chem_h

◆ dt

double cell_chemistry_kernels::AdvanceFunctor::dt

◆ fast_size

uint32_t cell_chemistry_kernels::AdvanceFunctor::fast_size

◆ forcing_offset

uint32_t cell_chemistry_kernels::AdvanceFunctor::forcing_offset = 0

◆ gas

Mixture cell_chemistry_kernels::AdvanceFunctor::gas

◆ kinetics

chemistry::KineticsTable cell_chemistry_kernels::AdvanceFunctor::kinetics

◆ lanes

uint32_t cell_chemistry_kernels::AdvanceFunctor::lanes

◆ offset

uint32_t cell_chemistry_kernels::AdvanceFunctor::offset

◆ options

chemistry::ReactorOptions cell_chemistry_kernels::AdvanceFunctor::options

◆ pattern

chemistry::SparseLUPattern cell_chemistry_kernels::AdvanceFunctor::pattern

◆ pivot

Kokkos::View<uint32_t **, Kokkos::LayoutRight> cell_chemistry_kernels::AdvanceFunctor::pivot

◆ previous_cost

Kokkos::View<float *> cell_chemistry_kernels::AdvanceFunctor::previous_cost

◆ queue

Kokkos::View<uint32_t *> cell_chemistry_kernels::AdvanceFunctor::queue

◆ rate

SpeciesView cell_chemistry_kernels::AdvanceFunctor::rate {}

◆ rhoY

SpeciesView cell_chemistry_kernels::AdvanceFunctor::rhoY

◆ rhoY_end

SpeciesView cell_chemistry_kernels::AdvanceFunctor::rhoY_end {}

◆ sparse

bool cell_chemistry_kernels::AdvanceFunctor::sparse

◆ T_seed

Kokkos::View<rtype *> cell_chemistry_kernels::AdvanceFunctor::T_seed

◆ time_scale

Kokkos::View<rtype *> cell_chemistry_kernels::AdvanceFunctor::time_scale

◆ U

StateView cell_chemistry_kernels::AdvanceFunctor::U

◆ U_end

StateView cell_chemistry_kernels::AdvanceFunctor::U_end {}

◆ work

Kokkos::View<double **, Kokkos::LayoutRight> cell_chemistry_kernels::AdvanceFunctor::work

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