include/pops/coupling/system/system_coupler.hpp File ReferenceΒΆ

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

Single-level multi-species coupled system: SystemAssembler (assembles) + SystemDriver (advances). More...

+ Include dependency graph for system_coupler.hpp:

Go to the source code of this file.

Classes

struct  pops::detail::ScopedBlockState< Block >
 
class  pops::SystemAssembler< System, RhsAssembler, Elliptic >
 ASSEMBLES the fields (system Poisson + shared aux) and a block residual evaluator. More...
 
class  pops::SystemDriver< System, RhsAssembler, Elliptic >
 ADVANCES the system: carries the schedule (per-species subcycling, adaptive multirate, implicit/IMEX delegated) and calls a TimeStepper. More...
 

Namespaces

namespace  pops
 
namespace  pops::detail
 

Typedefs

template<CoupledSystemLike System, class RhsAssembler , class Elliptic = GeometricMG>
using pops::SystemCoupler = SystemDriver< System, RhsAssembler, Elliptic >
 

Functions

template<class... Args>
auto pops::make_system_coupler (Args &&... args)
 

Variables

template<class >
constexpr bool pops::detail::always_false_v = false
 

Detailed Description

Single-level multi-species coupled system: SystemAssembler (assembles) + SystemDriver (advances).

Two responsibilities, two classes (advisor feedback 8.2 B). SystemAssembler ASSEMBLES: system RHS (f = Sum_s q_s n_s), Poisson, aux = (phi, grad phi), and a block residual evaluator R = -div F + S; it does NO time stepping. SystemDriver ADVANCES: carries the schedule (per-species subcycling, adaptive multirate, implicit/IMEX delegated), OWNS an Assembler and calls a TimeStepper. SystemCoupler stays an ALIAS of SystemDriver (test compat / adc_cases facade). The aux channel is SHARED by all blocks, allocated at the MAXIMUM requested width (aux_comps): a block reading B_z (n_aux=4) sees it, a base block (3) ignores the extra component. Neither replaces PhysicalModel / assemble_rhs / GeometricMG: they CONNECT them.