.TH "serif::geometry::surface::detail" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*- .ad l .nh .SH NAME serif::geometry::surface::detail .SH SYNOPSIS .br .PP .SS "Classes" .in +1c .ti -1c .RI "struct \fBAreSurfaceBindings\fP" .br .ti -1c .RI "struct \fBAreSurfaceBindings< utils::dependencies::Bindings< Entries\&.\&.\&. > >\fP" .br .ti -1c .RI "struct \fBBoundaryValueTracking\fP" .br .ti -1c .RI "struct \fBMatchingPressureRelations\fP" .br .ti -1c .RI "struct \fBMatchingPressureRelations< EOS, Bindings, Carrier, eos::relations::RelationCatalog< Relations\&.\&.\&. > >\fP" .br .ti -1c .RI "struct \fBPressureConditionTracking\fP" .br .ti -1c .RI "struct \fBPressureSurfaceDescription\fP" .br .RI "Common physical metadata; numerical values and preparation belong to the dependency context and cache\&. " .ti -1c .RI "struct \fBRelationQuantities\fP" .br .ti -1c .RI "struct \fBRelationQuantities< eos::relations::Relation< Output, Inputs\&.\&.\&. > >\fP" .br .ti -1c .RI "struct \fBSelectedPressureSurface\fP" .br .ti -1c .RI "struct \fBSelectedPressureSurface< std::tuple< Candidate > >\fP" .br .ti -1c .RI "struct \fBSurfaceOperands\fP" .br .ti -1c .RI "struct \fBSurfaceOperands< utils::dependencies::KeyList< Terms\&.\&.\&. > >\fP" .br .ti -1c .RI "struct \fBUniqueTerms\fP" .br .ti -1c .RI "struct \fBUniqueTerms< utils::types::TypeList< Terms\&.\&.\&. > >\fP" .br .in -1c .SS "Concepts" .in +1c .ti -1c .RI "concept \fBEligibleSurfaceRow\fP" .br .RI "Strong boundary enforcement requires an actual solved, scalar H1 equation row\&. " .ti -1c .RI "concept \fBThermodynamicBoundaryField\fP" .br .RI "Globals require an explicit physical role: matching units alone would mistake C or a multiplier for enthalpy\&. " .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "template using \fBBoundTerms\fP = typename \fBUniqueTerms\fP<\fButils::dependencies::ResolvedTargets\fP>::Type" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "template consteval auto \fBfield_candidates\fP ()" .br .RI "Search one precedence level, without asking the EOS for a relation when pressure is already an unknown\&. " .ti -1c .RI "template consteval auto \fBselect_candidates\fP (\fButils::dependencies::KeyList\fP< Fields\&.\&.\&. > fields)" .br .RI "Prefer a pressure unknown, then an explicit inverse, then a direct pressure residual\&. " .ti -1c .RI "template typename SampleKey, typename\&.\&.\&. Terms> auto \fBmake_surface_eos_computation\fP (\fButils::dependencies::KeyList\fP< Terms\&.\&.\&. >)" .br .RI "Declare the exact EOS inputs from the formulation, so derivative metadata and cache dependencies cannot diverge\&. " .ti -1c .RI "template typename SampleKey> auto \fBmake_surface_linearization_computation\fP ()" .br .RI "Keep the inexpensive boundary residual separate from the reusable EOS response and its partials\&. " .ti -1c .RI "template consteval auto \fBthermodynamic_fields\fP (\fButils::dependencies::KeyList\fP< Terms\&.\&.\&. >)" .br .RI "Collect physical fields, retaining distinct terms with equal quantities so ambiguity remains visible\&. " .ti -1c .RI "template consteval auto \fBquantity_field\fP (\fButils::dependencies::KeyList\fP< Fields\&.\&.\&. >)" .br .RI "Return a unique field for a quantity; the chosen residual carrier supplies its own quantity unambiguously\&. " .ti -1c .RI "template consteval auto \fBrelation_bindings\fP (\fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. >)" .br .RI "Bind only the quantities read by this candidate, ignoring unrelated fields and quantities\&. " .ti -1c .RI "template consteval auto \fBinverse_candidate\fP ()" .br .RI "Test a declared inverse and every required analytic partial before publishing its formulation\&. " .ti -1c .RI "template consteval auto \fBdirect_candidate\fP ()" .br .RI "A direct pressure relation may replace only a row belonging to one of its solved inputs\&. " .ti -1c .RI "template consteval auto \fBrelation_candidates\fP (\fBeos::relations::RelationCatalog\fP< Relations\&.\&.\&. >)" .br .RI "Keep every admissible relation; catalog order never selects a physical implementation\&. " .ti -1c .RI "template std::expected< std::size_t, \fBSurfaceFailure\fP > \fBsurface_sample_count\fP (const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)" .br .RI "All EOS columns must describe the same ordered, nonempty set of boundary points\&. " .ti -1c .RI "template \fBSurfacePoint\fP< Formulation > \fBsurface_point\fP (const std::size_t sample, const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)" .br .RI "Assemble the conventional equation point from typed columns; no mesh assumptions enter the physical calculation\&. " .ti -1c .RI "template std::expected< std::vector< Value >, \fBSurfaceFailure\fP > \fBcollect_surface_samples\fP (std::size_t count, Evaluate evaluate)" .br .RI "Collect one ordered batch, attaching the first failure's sample index before any result is published\&. " .ti -1c .RI "template std::expected< std::vector< \fBSurfaceEOSResponse\fP< Formulation > >, \fBSurfaceFailure\fP > \fBevaluate_response_samples\fP (const typename Formulation::EquationOfState &equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)" .br .RI "Evaluate the EOS once per state sample, or once for a genuinely pressure-only relation\&. " .ti -1c .RI "template std::expected< std::vector< \fBSurfaceLinearization\fP< Formulation > >, \fBSurfaceFailure\fP > \fBlinearize_carrier_samples\fP (const std::vector< \fBSurfaceEOSResponse\fP< Formulation > > &responses, const \fBBoundaryValues\fP< typename Formulation::CarrierTerm > &carrier)" .br .RI "Broadcast only a pressure-only relation; every state-dependent carrier sample needs its own response\&. " .ti -1c .RI "template std::expected< std::vector< \fBSurfaceLinearization\fP< Formulation > >, \fBSurfaceFailure\fP > \fBlinearize_pressure_samples\fP (const \fBIsobaricSurface\fP &condition, const std::vector< \fBSurfaceEOSResponse\fP< Formulation > > &responses)" .br .RI "Changing prescribed pressure reuses all values and partials of a direct-pressure EOS relation\&. " .ti -1c .RI "template \fBdimensions::QuantityValue\fP< Quantity > \fBstate_value\fP (const \fBSurfacePoint\fP< Formulation > &point)" .br .RI "Read one thermodynamic role from its bound term, preserving the EOS argument's physical type\&. " .ti -1c .RI "template \fBdimensions::QuantityValue\fP< Quantity > \fBrelation_input\fP (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point)" .br .RI "Only the carrier-resolved formulation substitutes prescribed pressure for an EOS input\&. " .ti -1c .RI "template bool \fBfinite_state\fP (const \fBSurfacePoint\fP< Formulation > &point, \fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. >)" .br .RI "Validate precisely the state read by this calculation, leaving unrelated state outside its dependencies\&. " .ti -1c .RI "template void \fBaccumulate_partial\fP (const typename Formulation::EquationOfState &equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point, \fBSurfaceEOSResponse\fP< Formulation > &response, \fBdimensions::QuantityList\fP< Inputs\&.\&.\&. >)" .br .RI "Add each quantity's chain-rule contribution, including distinct roles bound to the same unknown\&. " .ti -1c .RI "template \fBSurfaceEOSResponse\fP< Formulation > \fBevaluate_relation\fP (const typename Formulation::EquationOfState &equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point, \fBdimensions::QuantityList\fP< Inputs\&.\&.\&. > inputs, \fButils::dependencies::KeyList\fP< StateQuantities\&.\&.\&. >)" .br .RI "Evaluate one selected relation and all required partials without any hidden EOS inversion\&. " .ti -1c .RI "template std::expected< \fBSurfaceEOSResponse\fP< Formulation >, \fBSurfaceFailure\fP > \fBevaluate_surface_response\fP (const typename Formulation::EquationOfState &equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point)" .br .RI "Reject non-finite thermodynamic inputs, EOS outputs, and partials as values\&. " .ti -1c .RI "template \fBSurfaceLinearization\fP< Formulation > \fBlinearize_surface\fP (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point, const \fBSurfaceEOSResponse\fP< Formulation > &response)" .br .RI "Form the declared residual from an already evaluated EOS response, keeping the carrier identity explicit\&. " .ti -1c .RI "template std::expected< \fBSurfaceLinearization\fP< Formulation >, \fBSurfaceFailure\fP > \fBchecked_linearization\fP (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > &point, const \fBSurfaceEOSResponse\fP< Formulation > &response)" .br .RI "Catch overflow in residual subtraction or derivative accumulation before publishing a linearization\&. " .ti -1c .RI "template consteval bool \fBsupports_partials\fP (\fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. >)" .br .RI "Check only the derivatives of unknown state; prescribed pressure has no Newton column\&. " .ti -1c .RI "template consteval bool \fBmatches_pressure_relation\fP ()" .br .RI "A resolved carrier must be supplied by one pressure-input relation, with all remaining inputs and partials available\&. " .in -1c .SS "Variables" .in +1c .ti -1c .RI "template constexpr bool \fBis_pressure_surface_formulation\fP = false" .br .ti -1c .RI "template constexpr bool \fBis_pressure_surface_formulation< PressureSurfaceFormulation< EOS, Bindings, Carrier > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBis_pressure_surface_formulation< InversePressureSurfaceFormulation< EOS, Bindings, Relation > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBis_pressure_surface_formulation< DirectPressureSurfaceFormulation< EOS, Bindings, RowQuantity, Relation > >\fP = true" .br .ti -1c .RI "template constexpr bool \fBis_pressure_surface_formulation< PressureFieldSurfaceFormulation< EOS, Bindings > >\fP = true" .br .in -1c .SH "Typedef Documentation" .PP .SS "template using \fBserif::geometry::surface::detail::BoundTerms\fP = typename \fBUniqueTerms\fP<\fButils::dependencies::ResolvedTargets\fP>::Type" .SH "Function Documentation" .PP .SS "template void serif::geometry::surface::detail::accumulate_partial (const typename Formulation::EquationOfState & equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point, \fBSurfaceEOSResponse\fP< Formulation > & response, \fBdimensions::QuantityList\fP< Inputs\&.\&.\&. > )" .PP Add each quantity's chain-rule contribution, including distinct roles bound to the same unknown\&. .SS "template std::expected< \fBSurfaceLinearization\fP< Formulation >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::checked_linearization (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point, const \fBSurfaceEOSResponse\fP< Formulation > & response)\fR [nodiscard]\fP" .PP Catch overflow in residual subtraction or derivative accumulation before publishing a linearization\&. .SS "template std::expected< std::vector< Value >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::collect_surface_samples (std::size_t count, Evaluate evaluate)\fR [nodiscard]\fP" .PP Collect one ordered batch, attaching the first failure's sample index before any result is published\&. .SS "template auto serif::geometry::surface::detail::direct_candidate ()\fR [nodiscard]\fP, \fR [consteval]\fP" .PP A direct pressure relation may replace only a row belonging to one of its solved inputs\&. .SS "template \fBSurfaceEOSResponse\fP< Formulation > serif::geometry::surface::detail::evaluate_relation (const typename Formulation::EquationOfState & equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point, \fBdimensions::QuantityList\fP< Inputs\&.\&.\&. > inputs, \fButils::dependencies::KeyList\fP< StateQuantities\&.\&.\&. > )\fR [nodiscard]\fP" .PP Evaluate one selected relation and all required partials without any hidden EOS inversion\&. .SS "template std::expected< std::vector< \fBSurfaceEOSResponse\fP< Formulation > >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::evaluate_response_samples (const typename Formulation::EquationOfState & equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)\fR [nodiscard]\fP" .PP Evaluate the EOS once per state sample, or once for a genuinely pressure-only relation\&. .SS "template std::expected< \fBSurfaceEOSResponse\fP< Formulation >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::evaluate_surface_response (const typename Formulation::EquationOfState & equation_of_state, const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point)\fR [nodiscard]\fP" .PP Reject non-finite thermodynamic inputs, EOS outputs, and partials as values\&. .PP \fBNote\fP .RS 4 Existing EOS implementations can still throw their documented domain errors; these propagate to the caller\&. .RE .PP .SS "template auto serif::geometry::surface::detail::field_candidates ()\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Search one precedence level, without asking the EOS for a relation when pressure is already an unknown\&. .SS "template bool serif::geometry::surface::detail::finite_state (const \fBSurfacePoint\fP< Formulation > & point, \fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. > )\fR [nodiscard]\fP" .PP Validate precisely the state read by this calculation, leaving unrelated state outside its dependencies\&. .SS "template auto serif::geometry::surface::detail::inverse_candidate ()\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Test a declared inverse and every required analytic partial before publishing its formulation\&. .SS "template std::expected< std::vector< \fBSurfaceLinearization\fP< Formulation > >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::linearize_carrier_samples (const std::vector< \fBSurfaceEOSResponse\fP< Formulation > > & responses, const \fBBoundaryValues\fP< typename Formulation::CarrierTerm > & carrier)\fR [nodiscard]\fP" .PP Broadcast only a pressure-only relation; every state-dependent carrier sample needs its own response\&. .SS "template std::expected< std::vector< \fBSurfaceLinearization\fP< Formulation > >, \fBSurfaceFailure\fP > serif::geometry::surface::detail::linearize_pressure_samples (const \fBIsobaricSurface\fP & condition, const std::vector< \fBSurfaceEOSResponse\fP< Formulation > > & responses)\fR [nodiscard]\fP" .PP Changing prescribed pressure reuses all values and partials of a direct-pressure EOS relation\&. .SS "template \fBSurfaceLinearization\fP< Formulation > serif::geometry::surface::detail::linearize_surface (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point, const \fBSurfaceEOSResponse\fP< Formulation > & response)\fR [nodiscard]\fP" .PP Form the declared residual from an already evaluated EOS response, keeping the carrier identity explicit\&. .SS "template typename SampleKey, typename\&.\&.\&. Terms> auto serif::geometry::surface::detail::make_surface_eos_computation (\fButils::dependencies::KeyList\fP< Terms\&.\&.\&. > )\fR [nodiscard]\fP" .PP Declare the exact EOS inputs from the formulation, so derivative metadata and cache dependencies cannot diverge\&. .SS "template typename SampleKey> auto serif::geometry::surface::detail::make_surface_linearization_computation ()\fR [nodiscard]\fP" .PP Keep the inexpensive boundary residual separate from the reusable EOS response and its partials\&. .SS "template bool serif::geometry::surface::detail::matches_pressure_relation ()\fR [nodiscard]\fP, \fR [consteval]\fP" .PP A resolved carrier must be supplied by one pressure-input relation, with all remaining inputs and partials available\&. .SS "template auto serif::geometry::surface::detail::quantity_field (\fButils::dependencies::KeyList\fP< Fields\&.\&.\&. > )\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Return a unique field for a quantity; the chosen residual carrier supplies its own quantity unambiguously\&. .SS "template auto serif::geometry::surface::detail::relation_bindings (\fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. > )\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Bind only the quantities read by this candidate, ignoring unrelated fields and quantities\&. .SS "template auto serif::geometry::surface::detail::relation_candidates (\fBeos::relations::RelationCatalog\fP< Relations\&.\&.\&. > )\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Keep every admissible relation; catalog order never selects a physical implementation\&. .SS "template \fBdimensions::QuantityValue\fP< Quantity > serif::geometry::surface::detail::relation_input (const \fBdimensions::PressureValue\fP pressure, const \fBSurfacePoint\fP< Formulation > & point)\fR [nodiscard]\fP" .PP Only the carrier-resolved formulation substitutes prescribed pressure for an EOS input\&. .SS "template auto serif::geometry::surface::detail::select_candidates (\fButils::dependencies::KeyList\fP< Fields\&.\&.\&. > fields)\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Prefer a pressure unknown, then an explicit inverse, then a direct pressure residual\&. .SS "template \fBdimensions::QuantityValue\fP< Quantity > serif::geometry::surface::detail::state_value (const \fBSurfacePoint\fP< Formulation > & point)\fR [nodiscard]\fP" .PP Read one thermodynamic role from its bound term, preserving the EOS argument's physical type\&. .SS "template bool serif::geometry::surface::detail::supports_partials (\fButils::dependencies::KeyList\fP< Quantities\&.\&.\&. > )\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Check only the derivatives of unknown state; prescribed pressure has no Newton column\&. .SS "template \fBSurfacePoint\fP< Formulation > serif::geometry::surface::detail::surface_point (const std::size_t sample, const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)\fR [nodiscard]\fP" .PP Assemble the conventional equation point from typed columns; no mesh assumptions enter the physical calculation\&. .SS "template std::expected< std::size_t, \fBSurfaceFailure\fP > serif::geometry::surface::detail::surface_sample_count (const \fBBoundaryValues\fP< Terms > &\&.\&.\&. columns)\fR [nodiscard]\fP" .PP All EOS columns must describe the same ordered, nonempty set of boundary points\&. .SS "template auto serif::geometry::surface::detail::thermodynamic_fields (\fButils::dependencies::KeyList\fP< Terms\&.\&.\&. > )\fR [nodiscard]\fP, \fR [consteval]\fP" .PP Collect physical fields, retaining distinct terms with equal quantities so ambiguity remains visible\&. .SH "Variable Documentation" .PP .SS "template bool serif::geometry::surface::detail::is_pressure_surface_formulation = false\fR [inline]\fP, \fR [constexpr]\fP" .SS "template bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBDirectPressureSurfaceFormulation\fP< EOS, Bindings, RowQuantity, Relation > > = true\fR [inline]\fP, \fR [constexpr]\fP" .SS "template bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBInversePressureSurfaceFormulation\fP< EOS, Bindings, Relation > > = true\fR [inline]\fP, \fR [constexpr]\fP" .SS "template bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBPressureFieldSurfaceFormulation\fP< EOS, Bindings > > = true\fR [inline]\fP, \fR [constexpr]\fP" .SS "template bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBPressureSurfaceFormulation\fP< EOS, Bindings, Carrier > > = true\fR [inline]\fP, \fR [constexpr]\fP" .SH "Author" .PP Generated automatically by Doxygen for SERiF from the source code\&.