include/pops/coupling/source/coupled_source.hpp File ReferenceΒΆ

adc_cpp: include/pops/coupling/source/coupled_source.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
coupled_source.hpp File Reference

CoupledSourceFor / NoCoupledSource: contract of an inter-species COUPLING source. More...

+ Include dependency graph for coupled_source.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::NoCoupledSource
 NULL coupling source (default): apply() is a no-op. More...
 

Namespaces

namespace  pops
 

Concepts

concept  pops::CoupledSourceFor
 Concept: C is a valid coupling source for System if System is a CoupledSystem and if C exposes apply(System&, const MultiFab& aux, Real dt) (updates the blocks over the step dt).
 

Detailed Description

CoupledSourceFor / NoCoupledSource: contract of an inter-species COUPLING source.

model.source(U, aux) is PURELY LOCAL (state of a single block only). A multi-species plasma exchanges between species (collisions, charge transfer, friction): S_e depends on U_i, etc. This term does NOT belong in the local PhysicalModel: it is a system-level responsibility. A CoupledSource reads the state of MULTIPLE blocks (+ aux = phi, grad phi) and updates the blocks over a step dt, via the minimal contract apply(system, aux, dt). The skeleton applies it by splitting (additive forward-Euler, SystemCoupler::coupled_source_step). The concrete sources live in adc_cases / the tests (the core stays model-free).