SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
evaluation.hpp File Reference
#include <cmath>
#include <expected>
#include "serif/eos/evaluation.hpp"
#include "serif/geometry/surface/linearization.hpp"
Include dependency graph for evaluation.hpp:
This graph shows which files directly or indirectly include this file:

Namespaces

namespace  serif
 
namespace  serif::geometry
 
namespace  serif::geometry::surface
 
namespace  serif::geometry::surface::detail
 

Functions

template<typename Quantity, PressureSurfaceFormulationType Formulation>
dimensions::QuantityValue< Quantity > serif::geometry::surface::detail::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 > serif::geometry::surface::detail::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 serif::geometry::surface::detail::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 serif::geometry::surface::detail::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 > serif::geometry::surface::detail::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 > serif::geometry::surface::detail::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 > serif::geometry::surface::detail::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 > serif::geometry::surface::detail::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.