Files
MeanField_SERiF/docs/man/man3/serif_geometry_surface_detail.3
Emily Boudreaux 6b57738330 docs(docs): built docs
Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
2026-11-09 14:09:44 -05:00

337 lines
23 KiB
Groff

.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<typename Bindings, typename Quantities> using \fBBoundTerms\fP = typename \fBUniqueTerms\fP<\fButils::dependencies::ResolvedTargets\fP<Bindings, Quantities>>::Type"
.br
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "template<int Priority, typename EOS, typename Field, typename Fields, typename Rows, typename SolvedTerms, typename PreferredField> 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<int Priority, typename EOS, typename Rows, typename SolvedTerms, typename PreferredField, typename\&.\&.\&. Fields> 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<PressureSurfaceFormulationType Formulation, template< typename > 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<PressureSurfaceFormulationType Formulation, template< typename > 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<typename\&.\&.\&. Terms> 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<typename Quantity, typename Carrier, typename\&.\&.\&. Fields> 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<typename Carrier, typename Fields, typename\&.\&.\&. Quantities> 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<typename EOS, typename Carrier, typename Fields, typename Relation> consteval auto \fBinverse_candidate\fP ()"
.br
.RI "Test a declared inverse and every required analytic partial before publishing its formulation\&. "
.ti -1c
.RI "template<typename EOS, typename Carrier, typename Fields, typename Relation> 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<bool Inverse, typename EOS, typename Carrier, typename Fields, typename\&.\&.\&. Relations> 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<typename\&.\&.\&. Terms> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Terms> \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<typename Value, typename Evaluate> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Terms> 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<PressureSurfaceFormulationType Formulation> 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<PressureSurfaceFormulationType Formulation> 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<typename Quantity, PressureSurfaceFormulationType Formulation> \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<typename Quantity, PressureSurfaceFormulationType Formulation> \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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Quantities> 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<typename Quantity, PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Inputs> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Inputs, typename\&.\&.\&. StateQuantities> \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<PressureSurfaceFormulationType Formulation> 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<PressureSurfaceFormulationType Formulation> \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<PressureSurfaceFormulationType Formulation> 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<typename EOS, typename Relation, typename\&.\&.\&. Quantities> 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<typename EOS, typename Bindings, typename Carrier, typename Relation> 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<typename Candidate> constexpr bool \fBis_pressure_surface_formulation\fP = false"
.br
.ti -1c
.RI "template<typename EOS, typename Bindings, typename Carrier> constexpr bool \fBis_pressure_surface_formulation< PressureSurfaceFormulation< EOS, Bindings, Carrier > >\fP = true"
.br
.ti -1c
.RI "template<typename EOS, typename Bindings, typename Relation> constexpr bool \fBis_pressure_surface_formulation< InversePressureSurfaceFormulation< EOS, Bindings, Relation > >\fP = true"
.br
.ti -1c
.RI "template<typename EOS, typename Bindings, typename RowQuantity, typename Relation> constexpr bool \fBis_pressure_surface_formulation< DirectPressureSurfaceFormulation< EOS, Bindings, RowQuantity, Relation > >\fP = true"
.br
.ti -1c
.RI "template<typename EOS, typename Bindings> constexpr bool \fBis_pressure_surface_formulation< PressureFieldSurfaceFormulation< EOS, Bindings > >\fP = true"
.br
.in -1c
.SH "Typedef Documentation"
.PP
.SS "template<typename Bindings, typename Quantities> using \fBserif::geometry::surface::detail::BoundTerms\fP = typename \fBUniqueTerms\fP<\fButils::dependencies::ResolvedTargets\fP<Bindings, Quantities>>::Type"
.SH "Function Documentation"
.PP
.SS "template<typename Quantity, PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Inputs> 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<PressureSurfaceFormulationType Formulation> 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<typename Value, typename Evaluate> 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<typename EOS, typename Carrier, typename Fields, typename Relation> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Inputs, typename\&.\&.\&. StateQuantities> \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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Terms> 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<PressureSurfaceFormulationType Formulation> 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<int Priority, typename EOS, typename Field, typename Fields, typename Rows, typename SolvedTerms, typename PreferredField> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Quantities> 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<typename EOS, typename Carrier, typename Fields, typename Relation> 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<PressureSurfaceFormulationType Formulation> 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<PressureSurfaceFormulationType Formulation> 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<PressureSurfaceFormulationType Formulation> \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<PressureSurfaceFormulationType Formulation, template< typename > 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<PressureSurfaceFormulationType Formulation, template< typename > 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<typename EOS, typename Bindings, typename Carrier, typename Relation> 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<typename Quantity, typename Carrier, typename\&.\&.\&. Fields> 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<typename Carrier, typename Fields, typename\&.\&.\&. Quantities> 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<bool Inverse, typename EOS, typename Carrier, typename Fields, typename\&.\&.\&. Relations> 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<typename Quantity, PressureSurfaceFormulationType Formulation> \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<int Priority, typename EOS, typename Rows, typename SolvedTerms, typename PreferredField, typename\&.\&.\&. Fields> 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<typename Quantity, PressureSurfaceFormulationType Formulation> \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<typename EOS, typename Relation, typename\&.\&.\&. Quantities> 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<PressureSurfaceFormulationType Formulation, typename\&.\&.\&. Terms> \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<typename\&.\&.\&. Terms> 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<typename\&.\&.\&. Terms> 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<typename Candidate> bool serif::geometry::surface::detail::is_pressure_surface_formulation = false\fR [inline]\fP, \fR [constexpr]\fP"
.SS "template<typename EOS, typename Bindings, typename RowQuantity, typename Relation> 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<typename EOS, typename Bindings, typename Relation> bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBInversePressureSurfaceFormulation\fP< EOS, Bindings, Relation > > = true\fR [inline]\fP, \fR [constexpr]\fP"
.SS "template<typename EOS, typename Bindings> bool \fBserif::geometry::surface::detail::is_pressure_surface_formulation\fP< \fBPressureFieldSurfaceFormulation\fP< EOS, Bindings > > = true\fR [inline]\fP, \fR [constexpr]\fP"
.SS "template<typename EOS, typename Bindings, typename Carrier> 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\&.