BlockRhsEval< Limiter, Flux, Model > Struct Template ReferenceΒΆ
|
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
|
Residual functor -div F + S (fill_ghosts then assemble_rhs), passed TO THE TimeStepper as RhsEval. More...
#include <block_builder.hpp>
Collaboration diagram for pops::detail::BlockRhsEval< Limiter, Flux, Model >:Public Member Functions | |
| void | operator() (MultiFab &U, MultiFab &R) const |
Public Attributes | |
| Model | model |
| const GridContext * | ctx |
| bool | recon_prim |
| Real | pos_floor = Real(0) |
| Zhang-Shu positivity limiter (<= 0: inactive, bit-identical) | |
| std::shared_ptr< MultiFab > | ws_cache |
| Per-cell wave speed scratch (HLL cache, opt-in). | |
Detailed Description
struct pops::detail::BlockRhsEval< Limiter, Flux, Model >
Residual functor -div F + S (fill_ghosts then assemble_rhs), passed TO THE TimeStepper as RhsEval.
NAMED FUNCTOR (not a lambda): this is what take_step receives and what triggers the instantiation of assemble_rhs<Limiter, Flux> (and its device AssembleRhsKernel). First-instantiated from an EXTERNAL TU (add_compiled_model), a lambda here makes nvcc choke on emitting the nested device kernel (Heisenbug: OK Serial + compute-sanitizer, segfault at Cuda run time). A class has a stable instantiation context -> robust device codegen. Body identical to the former lambda -> residual bit-identical to add_block on CPU (and, intended, on device).
Member Function Documentation
◆ operator()()
|
inline |
Here is the call graph for this function:Member Data Documentation
◆ ctx
| const GridContext* pops::detail::BlockRhsEval< Limiter, Flux, Model >::ctx |
◆ model
| Model pops::detail::BlockRhsEval< Limiter, Flux, Model >::model |
◆ pos_floor
| Real pops::detail::BlockRhsEval< Limiter, Flux, Model >::pos_floor = Real(0) |
Zhang-Shu positivity limiter (<= 0: inactive, bit-identical)
◆ recon_prim
| bool pops::detail::BlockRhsEval< Limiter, Flux, Model >::recon_prim |
◆ ws_cache
| std::shared_ptr<MultiFab> pops::detail::BlockRhsEval< Limiter, Flux, Model >::ws_cache |
Per-cell wave speed scratch (HLL cache, opt-in).
nullptr (default) -> per-face path strictly unchanged. Non-null ONLY for the HLL flux (cf. build_block): the cached branch is instantiated only for Flux == HLLFlux, so model.wave_speeds is always present there.
The documentation for this struct was generated from the following file:
- include/pops/runtime/builders/block/block_builder.hpp
Generated by