DiffusiveModel Concept ReferenceΒΆ

adc_cpp: pops::DiffusiveModel Concept 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
pops::DiffusiveModel Concept Reference

DiffusiveModel: optional concept for models with isotropic scalar diffusion. More...

#include <state_access.hpp>

Concept definition

template<class M>
concept pops::DiffusiveModel = requires(const M m) {
{ m.diffusivity() } -> std::convertible_to<Real>;
}
DiffusiveModel: optional concept for models with isotropic scalar diffusion.
Definition state_access.hpp:38

Detailed Description

DiffusiveModel: optional concept for models with isotropic scalar diffusion.

A model satisfies DiffusiveModel if and only if m.diffusivity() -> Real (nu >= 0). The Fickian flux F = -nu grad U is ADDED to the hyperbolic flux in assemble_rhs / compute_face_fluxes. The divergence yields exactly +nu Lap(U). INVARIANT: a model without diffusivity() does not change by a single bit (the hyperbolic path is strictly unchanged – the if constexpr is false, zero extra codegen).