include/pops/numerics/time/amr/levels/amr_patch_range.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
|
Named types of the multi-patch coarse-fine interface: PatchRange (coarse footprint of a fine patch), FluxRegister (GLOBAL-indexed coarse buffer + all_reduce), CoverageMask (cells shadowed by a patch), SubcyclingSchedule (Berger-Oliger cadence) and CoarseFineInterface (coverage + reflux routing), with the multi-box fill/avgdown helpers (mf_fill_fine_ghosts_multi, mf_average_down_multi, fill_periodic_local). More...
#include <pops/numerics/time/amr/reflux/amr_flux_helpers.hpp>#include <pops/amr/hierarchy/refinement_ratio.hpp>#include <pops/parallel/comm.hpp>#include <algorithm>
Include dependency graph for amr_patch_range.hpp:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | pops::PatchRange |
| struct | pops::detail::AvgDownMultiKernel |
| struct | pops::FluxRegister |
| struct | pops::CoverageMask |
| struct | pops::SubcyclingSchedule |
| struct | pops::CoarseFineInterface |
Namespaces | |
| namespace | pops |
| namespace | pops::detail |
Functions | |
| void | pops::mf_fill_fine_ghosts_multi (MultiFab &Uf, const MultiFab &Uc_old, const MultiFab &Uc_new, Real frac) |
| void | pops::mf_average_down_multi (const MultiFab &Uf, MultiFab &Uc) |
| void | pops::fill_periodic_local (MultiFab &mf, const Box2D &dom) |
Detailed Description
Named types of the multi-patch coarse-fine interface: PatchRange (coarse footprint of a fine patch), FluxRegister (GLOBAL-indexed coarse buffer + all_reduce), CoverageMask (cells shadowed by a patch), SubcyclingSchedule (Berger-Oliger cadence) and CoarseFineInterface (coverage + reflux routing), with the multi-box fill/avgdown helpers (mf_fill_fine_ghosts_multi, mf_average_down_multi, fill_periodic_local).
Layer: include/pops/numerics/time. Role: promote to TYPES the roles previously inlined/duplicated in the multi-patch subcycling (amr_subcycling.hpp). Centralization with strictly preserved arithmetic.
Invariants:
- PatchRange uses the historical upper bound (hi-1)/2 (NOT Box2D::coarsen, floor of both bounds) -> bit-identical to the original inline footprints;
- FluxRegister / CoverageMask are built on the GLOBAL box_array (known to all ranks): MPI-safe. Each rank fills its LOCAL contributions (0 elsewhere), gather() sums them via all_reduce_sum_inplace; in serial all_reduce is the identity -> bit-for-bit identical;
- CoverageMask prevents double-reflux of a fine-fine joint (only true fine-coarse interfaces are corrected);
- AvgDownMultiKernel / route_reflux are NAMED functors/functions (no generic lambda) -> safe under nvcc;
- fill_periodic_local serves the REPLICATED coarse (per-rank dmap): purely local folding without an MPI plan, reads valid / writes ghost (no race).
Generated by