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

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

Runtime multi-species composition: one coupled system, block by block. More...

#include <pops/core/state/variables.hpp>
#include <pops/numerics/time/integrators/implicit_stepper.hpp>
#include <pops/runtime/export.hpp>
#include <pops/runtime/facade_options.hpp>
#include <pops/runtime/context/grid_context.hpp>
#include <pops/runtime/config/model_spec.hpp>
#include <pops/runtime/config/runtime_params.hpp>
#include <array>
#include <functional>
#include <map>
#include <memory>
#include <string>
#include <vector>
+ Include dependency graph for system.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::SystemConfig
 Mesh and domain shared by all blocks (physical parameters are per block, in the ModelSpec). More...
 
class  pops::System
 Coupled multi-species system, composed at runtime from generic bricks. More...
 
struct  pops::System::SourceNewtonReport
 Report of the implicit source Newton (IMEX) of a block, AGGREGATED over the substeps of the LAST advance of the block. More...
 

Namespaces

namespace  pops
 
namespace  pops::runtime
 
namespace  pops::runtime::program
 

Detailed Description

Runtime multi-species composition: one coupled system, block by block.

Each block is a species (one state U) described by a ModelSpec (composition of generic bricks: transport + source + elliptic right-hand side), with its spatial scheme (limiter + Riemann flux), its time treatment and its substeps. All blocks share a Poisson whose right-hand side is the sum of the per-block elliptic_rhs; the source S acts per block. The core names no scenario; scenarios are compositions defined on the application side (adc_cases).

Python composes (brick objects); the per-cell computation (assemble_rhs<L,F>, Newton of the implicit source, multigrid/FFT) stays C++-compiled and is frozen when the block is added. No Python callback in the hot path, except a time integrator written in Python via eval_rhs / get_state / set_state.