Composite physical model: one HYPERBOLIC brick + one source + one elliptic right-hand side.
More...
|
| POPS_HD State | flux (const State &u, const Aux &a, int dir) const |
| |
| POPS_HD Real | max_wave_speed (const State &u, const Aux &a, int dir) const |
| |
| POPS_HD State | source (const State &u, const Aux &a) const |
| |
| POPS_HD Real | elliptic_rhs (const State &u) const |
| |
| POPS_HD Prim | to_primitive (const State &u) const |
| |
| POPS_HD State | to_conservative (const Prim &p) const |
| |
| POPS_HD Real | pressure (const State &u) const |
| |
| POPS_HD void | wave_speeds (const State &u, const Aux &a, int dir, Real &smin, Real &smax) const |
| |
| POPS_HD Real | contact_speed (const State &ul, const State &ur, Real pl, Real pr, Real sl, Real sr, int dir) const |
| | Riemann CAPABILITIES (audit wave 3): HLLC hooks (contact_speed + hllc_star_state) and Roe (roe_dissipation) forwarded from the HYPERBOLIC brick when it declares them (the DSL emits them via enable_hllc; a C++ model can write them by hand).
|
| |
| POPS_HD State | hllc_star_state (const State &u, Real p, Real s, Real sStar, int dir) const |
| |
| POPS_HD State | roe_dissipation (const State &ul, const Aux &al, const State &ur, const Aux &ar, int dir) const |
| |
| POPS_HD State | polar_geom_source (const State &u, Real r) const |
| | GEOMETRIC source term of polar curvature, delegated to the hyperbolic brick when it exposes it (polar fluid: IsothermalFluxPolar).
|
| |
| POPS_HD Real | stability_speed (const State &u, const Aux &a, int dir) const |
| | Optional STEP BOUNDS (audit 2026-06, see core/physical_model.hpp): forwarded conditionally like pressure / wave_speeds, otherwise the composite does not expose them and the step policy stays the history.
|
| |
| POPS_HD Real | stability_dt (const State &u, const Aux &a) const |
| |
| POPS_HD Real | source_frequency (const State &u, const Aux &a) const |
| |
| POPS_HD State | project (const State &u, const Aux &a) const |
| | PROJECTION PONCTUELLE post-pas (ADC-177) : forwardee depuis la brique HYPERBOLIQUE quand elle declare project(U, aux) (le DSL l'emet via m.projection ; une brique native peut l'ecrire a la main).
|
| |
| POPS_HD void | source_jacobian (const State &u, const Aux &a, Real(&J)[n_vars][n_vars]) const |
| | ANALYTIC JACOBIAN of the source (audit wave 3): forwarded from the SOURCE brick when it declares jacobian(U, aux, J) (J[r][c] = dS_r/dU_c).
|
| |
template<class Hyperbolic, class Source, class Elliptic>
struct pops::CompositeModel< Hyperbolic, Source, Elliptic >
Composite physical model: one HYPERBOLIC brick + one source + one elliptic right-hand side.
Satisfies the PhysicalModel concept; the Vars (conversions + descriptor), the flux and the wave speeds come from the hyperbolic; pressure / wave_speeds are exposed when the hyperbolic provides them (required by the HLLC / Roe flux).
CONTRACT: CompositeModel is a pure function of its 3 bricks, device-callable (POPS_HD). No MultiFab, no allocation, no global access. Every delegated method inherits the device-clean invariant of the underlying brick.
n_aux propagation: n_aux = max(aux_comps<Hyperbolic>, aux_comps<Source>, aux_comps<Elliptic>). The system sizes the aux channel accordingly. A brick without n_aux (default kAuxBaseComps=3) does not change the bit-identical history.
template<class Hyperbolic , class Source , class Elliptic >
ANALYTIC JACOBIAN of the source (audit wave 3): forwarded from the SOURCE brick when it declares jacobian(U, aux, J) (J[r][c] = dS_r/dU_c).
The Newton of the implicit source uses it instead of finite differences (HasSourceJacobian trait); without the method, nothing is exposed and the Newton keeps the historical finite differences.
template<class Hyperbolic , class Source , class Elliptic >
Optional STEP BOUNDS (audit 2026-06, see core/physical_model.hpp): forwarded conditionally like pressure / wave_speeds, otherwise the composite does not expose them and the step policy stays the history.
stability_speed / stability_dt come from the HYPERBOLIC brick (it is the one the DSL emits); source_frequency comes from the SOURCE brick (it is the source that knows its relaxation/collision frequency).