PolarHasGeomSource Concept Reference

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

PolarHasGeomSource<M>: internal concept – true if M exposes polar_geom_source(u, r) -> State. More...

#include <polar_operator.hpp>

Concept definition

template<class M>
concept pops::detail::PolarHasGeomSource = requires(const M m, const typename M::State u, Real r) {
{ m.polar_geom_source(u, r) } -> std::convertible_to<typename M::State>;
}
PolarHasGeomSource<M>: internal concept – true if M exposes polar_geom_source(u, r) -> State.
Definition polar_operator.hpp:85
double Real
Definition types.hpp:30

Detailed Description

PolarHasGeomSource<M>: internal concept – true if M exposes polar_geom_source(u, r) -> State.

The GEOMETRIC curvature term (centrifugal -rho v_theta^2/r etc.) only makes sense in polar metric and depends ONLY on the state and the cell radius (no aux). A SCALAR transport brick (ExBVelocityPolar) does not expose it -> we fall back to 0 (bit-identical to the historical polar ExB transport). A polar FLUID brick (IsothermalFluxPolar) exposes it -> it is added in cell by PolarAssembleRhsKernel (which alone knows r_cell(i)).