include/pops/numerics/spatial/primitives/face_flux.hpp File ReferenceΒΆ

adc_cpp: include/pops/numerics/spatial/primitives/face_flux.hpp File 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
face_flux.hpp File Reference

Face-state reconstruction and face fluxes of the Cartesian spatial operator. More...

+ Include dependency graph for face_flux.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::detail::FaceFluxXKernel< Limiter, NumericalFlux, Model >
 FaceFluxXKernel: device kernel for the flux at the radial x face (between i-1 and i). More...
 
struct  pops::detail::FaceFluxYKernel< Limiter, NumericalFlux, Model >
 FaceFluxYKernel: device kernel for the flux at the y face (between j-1 and j). More...
 

Namespaces

namespace  pops
 
namespace  pops::detail
 

Functions

template<class Model >
POPS_HD Model::State pops::rusanov_flux (const Model &m, const typename Model::State &UL, const Aux &AL, const typename Model::State &UR, const Aux &AR, int dir)
 rusanov_flux: free compat, delegates to RusanovFlux{} (policy of numerical_flux.hpp).
 
template<class Model , class Limiter >
POPS_HD Model::State pops::reconstruct (const Model &model, const ConstArray4 &u, int i, int j, int dir, Real sgn, const Limiter &lim, bool prim)
 reconstruct<Model,Limiter>: face value at (i,j) extrapolated in direction dir.
 
template<class Model , class Limiter >
POPS_HD Model::State pops::reconstruct_pp (const Model &model, const ConstArray4 &u, int i, int j, int dir, Real sgn, const Limiter &lim, bool prim, Real pos_floor, int pos_comp)
 reconstruct_pp: reconstruct + zhang_shu_scale positivity limiter on the returned state.
 
template<class Limiter >
void pops::detail::require_reconstruction_ghosts (const MultiFab &U)
 require_reconstruction_ghosts<Limiter>: STRUCTURAL ENTRY GUARD of the FV spatial operators.
 
Box2D pops::xface_box (const Box2D &v)
 xface_box / yface_box: face boxes normal to x (resp.
 
Box2D pops::yface_box (const Box2D &v)
 
template<class Limiter = NoSlope, class NumericalFlux = RusanovFlux, class Model >
void pops::compute_face_fluxes (const Model &model, const MultiFab &U, const MultiFab &aux, MultiFab &Fx, MultiFab &Fy, Real dx=0, Real dy=0, bool recon_prim=false, Real pos_floor=Real(0))
 compute_face_fluxes<Limiter,NumericalFlux>: writes the face fluxes BEFORE divergence.
 

Detailed Description

Face-state reconstruction and face fluxes of the Cartesian spatial operator.

CONTRACT: everything that lives AT a face, before the divergence.

  • reconstruct<>: face value from the MUSCL or WENO5 stencil (POPS_HD).
  • reconstruct_pp<>: reconstruct + Zhang-Shu positivity limiter (positivity.hpp).
  • require_reconstruction_ghosts<>: structural entry guard (state ghosts >= stencil).
  • xface_box / yface_box: face boxes normal to x / y for a cell box.
  • rusanov_flux: free compat, delegates to RusanovFlux{}.
  • compute_face_fluxes<>: face fluxes (the brick required by the AMR reflux).

reconstruct_pp is THE single reconstruction entry point that every assembly kernel calls (cartesian_operator.hpp, masked_operator.hpp), so it bundles the limiter here next to the reconstruction it limits. Depends on state_access.hpp and positivity.hpp.