include/pops/numerics/time/reference/amr_reflux.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
|
Reference conservation-critical brick (Fab2D, 1 component): 2-level reflux a la AMReX. More...
#include <pops/core/state/state.hpp>#include <pops/amr/hierarchy/refinement_ratio.hpp>#include <pops/core/foundation/types.hpp>#include <pops/mesh/index/box2d.hpp>#include <pops/mesh/storage/fab2d.hpp>#include <pops/mesh/execution/for_each.hpp>#include <pops/numerics/spatial_operator.hpp>#include <vector>
Include dependency graph for amr_reflux.hpp:Go to the source code of this file.
Classes | |
| struct | pops::detail::RusanovFaceXKernel< Model > |
| Rusanov flux at the left face (x axis) of cell (i,j). More... | |
| struct | pops::detail::RusanovFaceYKernel< Model > |
| Rusanov flux at the bottom face (y axis) of cell (i,j). More... | |
| struct | pops::detail::AdvanceFab1cKernel |
| Explicit Euler, 1 component: U -= dt div(F) on cell (i,j). More... | |
Namespaces | |
| namespace | pops |
| namespace | pops::detail |
Functions | |
| template<class Model > | |
| void | pops::compute_fluxes_1c (const Model &m, const Fab2D &U, const Fab2D &aux, Fab2D &fx, Fab2D &fy) |
| template<class Model > | |
| void | pops::advance_fab_1c (const Model &m, Fab2D &U, const Fab2D &aux, double dx, double dy, double dt, Fab2D &fx, Fab2D &fy) |
| void | pops::fill_periodic_fab (Fab2D &U, const Box2D &dom) |
| void | pops::fill_fine_ghosts_t (Fab2D &Uf, const Fab2D &Uco, const Fab2D &Ucn, double frac) |
| void | pops::average_down_fab (const Fab2D &Uf, Fab2D &Uc, int CI0, int CI1, int CJ0, int CJ1) |
| template<class Model > | |
| void | pops::amr_step_2level (const Model &m, Fab2D &Uc, const Box2D &dom, double dxc, double dyc, Fab2D &Uf, int CI0, int CI1, int CJ0, int CJ1, const Fab2D &auxc, const Fab2D &auxf, double dt) |
Detailed Description
Reference conservation-critical brick (Fab2D, 1 component): 2-level reflux a la AMReX.
Provides the 1-component Rusanov fluxes (compute_fluxes_1c), the explicit Euler advance (advance_fab_1c), the periodic ghosts (fill_periodic_fab) and coarse-fine space-time ghosts (fill_fine_ghosts_t), average_down_fab, and the amr_step_2level step.
Layer: include/pops/numerics/time. Role: minimal and testable version of the AMR reflux. The numerical flux at the coarse-fine interface is inconsistent between the coarse and fine grids; the reflux corrects the adjacent coarse cells (FluxRegister) to restore exact conservation. This is the mono-box ground-truth of the Fab2D -> MF -> MP parity chain.
Invariants:
- minimal case: 1 component, explicit Euler, ratio 2, Berger-Oliger subcycling (r=2 substeps of dt/2, fine ghosts interpolated in time), one rectangular fine box strictly interior to the periodic coarse domain;
- the composite Poisson coupling (FAC) is handled elsewhere (elliptic/composite_fac_poisson);
- device kernels = NAMED functors (RusanovFaceXKernel, AdvanceFab1cKernel, ...) and not POPS_HD lambdas: first instantiation from an external loader TU would trip nvcc; body strictly identical to the previous lambdas -> bit-identical CPU and device.
Generated by