|
| template<int Priority, typename EOS, typename Field, typename Fields, typename Rows, typename SolvedTerms, typename PreferredField> |
| consteval auto | field_candidates () |
| | Search one precedence level, without asking the EOS for a relation when pressure is already an unknown.
|
| |
| template<int Priority, typename EOS, typename Rows, typename SolvedTerms, typename PreferredField, typename... Fields> |
| consteval auto | select_candidates (utils::dependencies::KeyList< Fields... > fields) |
| | Prefer a pressure unknown, then an explicit inverse, then a direct pressure residual.
|
| |
| template<PressureSurfaceFormulationType Formulation, template< typename > typename SampleKey, typename... Terms> |
| auto | make_surface_eos_computation (utils::dependencies::KeyList< Terms... >) |
| | Declare the exact EOS inputs from the formulation, so derivative metadata and cache dependencies cannot diverge.
|
| |
| template<PressureSurfaceFormulationType Formulation, template< typename > typename SampleKey> |
| auto | make_surface_linearization_computation () |
| | Keep the inexpensive boundary residual separate from the reusable EOS response and its partials.
|
| |
| template<typename... Terms> |
| consteval auto | thermodynamic_fields (utils::dependencies::KeyList< Terms... >) |
| | Collect physical fields, retaining distinct terms with equal quantities so ambiguity remains visible.
|
| |
| template<typename Quantity, typename Carrier, typename... Fields> |
| consteval auto | quantity_field (utils::dependencies::KeyList< Fields... >) |
| | Return a unique field for a quantity; the chosen residual carrier supplies its own quantity unambiguously.
|
| |
| template<typename Carrier, typename Fields, typename... Quantities> |
| consteval auto | relation_bindings (utils::dependencies::KeyList< Quantities... >) |
| | Bind only the quantities read by this candidate, ignoring unrelated fields and quantities.
|
| |
| template<typename EOS, typename Carrier, typename Fields, typename Relation> |
| consteval auto | inverse_candidate () |
| | Test a declared inverse and every required analytic partial before publishing its formulation.
|
| |
| template<typename EOS, typename Carrier, typename Fields, typename Relation> |
| consteval auto | direct_candidate () |
| | A direct pressure relation may replace only a row belonging to one of its solved inputs.
|
| |
| template<bool Inverse, typename EOS, typename Carrier, typename Fields, typename... Relations> |
| consteval auto | relation_candidates (eos::relations::RelationCatalog< Relations... >) |
| | Keep every admissible relation; catalog order never selects a physical implementation.
|
| |
| template<typename... Terms> |
| std::expected< std::size_t, SurfaceFailure > | surface_sample_count (const BoundaryValues< Terms > &... columns) |
| | All EOS columns must describe the same ordered, nonempty set of boundary points.
|
| |
| template<PressureSurfaceFormulationType Formulation, typename... Terms> |
| SurfacePoint< Formulation > | surface_point (const std::size_t sample, const BoundaryValues< Terms > &... columns) |
| | Assemble the conventional equation point from typed columns; no mesh assumptions enter the physical calculation.
|
| |
| template<typename Value, typename Evaluate> |
| std::expected< std::vector< Value >, SurfaceFailure > | collect_surface_samples (std::size_t count, Evaluate evaluate) |
| | Collect one ordered batch, attaching the first failure's sample index before any result is published.
|
| |
| template<PressureSurfaceFormulationType Formulation, typename... Terms> |
| std::expected< std::vector< SurfaceEOSResponse< Formulation > >, SurfaceFailure > | evaluate_response_samples (const typename Formulation::EquationOfState &equation_of_state, const dimensions::PressureValue pressure, const BoundaryValues< Terms > &... columns) |
| | Evaluate the EOS once per state sample, or once for a genuinely pressure-only relation.
|
| |
| template<PressureSurfaceFormulationType Formulation> |
| std::expected< std::vector< SurfaceLinearization< Formulation > >, SurfaceFailure > | linearize_carrier_samples (const std::vector< SurfaceEOSResponse< Formulation > > &responses, const BoundaryValues< typename Formulation::CarrierTerm > &carrier) |
| | Broadcast only a pressure-only relation; every state-dependent carrier sample needs its own response.
|
| |
| template<PressureSurfaceFormulationType Formulation> |
| std::expected< std::vector< SurfaceLinearization< Formulation > >, SurfaceFailure > | linearize_pressure_samples (const IsobaricSurface &condition, const std::vector< SurfaceEOSResponse< Formulation > > &responses) |
| | Changing prescribed pressure reuses all values and partials of a direct-pressure EOS relation.
|
| |
| template<typename Quantity, PressureSurfaceFormulationType Formulation> |
| dimensions::QuantityValue< Quantity > | state_value (const SurfacePoint< Formulation > &point) |
| | Read one thermodynamic role from its bound term, preserving the EOS argument's physical type.
|
| |
| template<typename Quantity, PressureSurfaceFormulationType Formulation> |
| dimensions::QuantityValue< Quantity > | relation_input (const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point) |
| | Only the carrier-resolved formulation substitutes prescribed pressure for an EOS input.
|
| |
| template<PressureSurfaceFormulationType Formulation, typename... Quantities> |
| bool | finite_state (const SurfacePoint< Formulation > &point, utils::dependencies::KeyList< Quantities... >) |
| | Validate precisely the state read by this calculation, leaving unrelated state outside its dependencies.
|
| |
| template<typename Quantity, PressureSurfaceFormulationType Formulation, typename... Inputs> |
| void | accumulate_partial (const typename Formulation::EquationOfState &equation_of_state, const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point, SurfaceEOSResponse< Formulation > &response, dimensions::QuantityList< Inputs... >) |
| | Add each quantity's chain-rule contribution, including distinct roles bound to the same unknown.
|
| |
| template<PressureSurfaceFormulationType Formulation, typename... Inputs, typename... StateQuantities> |
| SurfaceEOSResponse< Formulation > | evaluate_relation (const typename Formulation::EquationOfState &equation_of_state, const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point, dimensions::QuantityList< Inputs... > inputs, utils::dependencies::KeyList< StateQuantities... >) |
| | Evaluate one selected relation and all required partials without any hidden EOS inversion.
|
| |
| template<PressureSurfaceFormulationType Formulation> |
| std::expected< SurfaceEOSResponse< Formulation >, SurfaceFailure > | evaluate_surface_response (const typename Formulation::EquationOfState &equation_of_state, const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point) |
| | Reject non-finite thermodynamic inputs, EOS outputs, and partials as values.
|
| |
| template<PressureSurfaceFormulationType Formulation> |
| SurfaceLinearization< Formulation > | linearize_surface (const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point, const SurfaceEOSResponse< Formulation > &response) |
| | Form the declared residual from an already evaluated EOS response, keeping the carrier identity explicit.
|
| |
| template<PressureSurfaceFormulationType Formulation> |
| std::expected< SurfaceLinearization< Formulation >, SurfaceFailure > | checked_linearization (const dimensions::PressureValue pressure, const SurfacePoint< Formulation > &point, const SurfaceEOSResponse< Formulation > &response) |
| | Catch overflow in residual subtraction or derivative accumulation before publishing a linearization.
|
| |
| template<typename EOS, typename Relation, typename... Quantities> |
| consteval bool | supports_partials (utils::dependencies::KeyList< Quantities... >) |
| | Check only the derivatives of unknown state; prescribed pressure has no Newton column.
|
| |
| template<typename EOS, typename Bindings, typename Carrier, typename Relation> |
| consteval bool | matches_pressure_relation () |
| | A resolved carrier must be supplied by one pressure-input relation, with all remaining inputs and partials available.
|
| |