include/pops/runtime/amr_system.hpp File ReferenceΒΆ

adc_cpp: include/pops/runtime/amr_system.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
amr_system.hpp File Reference

Multi-species composition on AMR at runtime: the refined counterpart of System. More...

#include <pops/mesh/layout/patch_box.hpp>
#include <pops/mesh/boundary/physical_bc.hpp>
#include <pops/numerics/time/integrators/implicit_stepper.hpp>
#include <pops/runtime/export.hpp>
#include <pops/runtime/facade_options.hpp>
#include <pops/runtime/config/model_spec.hpp>
#include <functional>
#include <map>
#include <memory>
#include <string>
#include <vector>
+ Include dependency graph for amr_system.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::AmrSystemConfig
 AMR mesh and cadence (per-block physical parameters live in the ModelSpec). More...
 
struct  pops::AmrBuildParams
 Frozen parameters passed to the deferred build of the compiled path (add_compiled_model). More...
 
struct  pops::AmrCompiledHooks
 Type-erased closures of a compiled AMR block, produced by amr_dsl_block::build_amr_compiled and installed via AmrSystem::set_compiled_block. More...
 
class  pops::AmrSystem
 Single block carried on an AMR hierarchy, composed at runtime. More...
 
struct  pops::AmrSystem::SourceNewtonReport
 Report of the implicit (IMEX) source Newton of a block, AGGREGATED over the levels and substeps of the block's LAST advance. More...
 

Namespaces

namespace  pops
 
namespace  pops::detail
 

Typedefs

using pops::AmrCompiledBlockBuilder = std::function< AmrRuntimeBlock(const detail::SharedAmrLayout &layout, const std::string &name, const std::vector< double > &density, bool has_density, double gamma, int substeps, bool recon_prim, bool imex, int stride, const std::vector< std::string > &implicit_vars, const std::vector< std::string > &implicit_roles, double pos_floor)>
 DEFERRED builder of a COMPILED block on the multi-block hierarchy: receives the SHARED layout (created ONCE at lazy build, common to all blocks) plus the block parameters frozen at add time (name, initial density, gamma, substeps/stride, recon/imex, partial IMEX mask resolved into component indices), and returns the type-erased AmrRuntimeBlock of the block (captures the CONCRETE Model/Limiter/Flux via detail::dispatch_amr_block, the kernel stays COMPILED).
 

Detailed Description

Multi-species composition on AMR at runtime: the refined counterpart of System.

One or SEVERAL blocks (species, described by ModelSpec of generic bricks) carried on an AMR hierarchy. Like System but on an adaptive mesh.

MONO-BLOCK (1 add_block): a single-model AmrCouplerMP<Model> (coarse + one fine level tracked by regrid, conservative reflux). Historical path, UNTOUCHED -> bit-identical.

MULTI-BLOCK (>= 2 add_block, capstone, docs/AMR_MULTIBLOCK_DESIGN.md): N blocks co-located on ONE SHARED AMR hierarchy (same BoxArray + DistributionMapping + dx/dy per level, guarded by same_layout_or_throw). All blocks live on ALL patches. A single aux per level (phi, grad phi) and a single coarse Poisson whose right-hand side is the CO-LOCATED SUM of the blocks' elliptic bricks (f = Sum_b q_b n_b read at the same cells). Conservation PER BLOCK (reflux + average_down). AmrRuntime runtime engine (type-erased registry by name). Blocks with potentially DIFFERENT spatial schemes and with PER-BLOCK TEMPORAL TREATMENT (explicit or IMEX, local stiff implicit source; capstone vii) with union-of-tags regrid (multi-block + regrid_every > 0 is NOW SUPPORTED: the mesh re-grids from the union of the tags; regrid_every == 0 = frozen hierarchy). Multirate (substeps/stride), inter-species coupled sources: already wired. Multiple COMPILED blocks (add_compiled_model) and a MIX of compiled + native: wired (capstone v, multi-block production DSL). Union regrid: later PR.

Note
Two levels (ratio 2); explicit OR imex temporal treatment (per block).