Files
MeanField_SERiF/docs/latex/namespaceserif_1_1eos_1_1runtime.tex
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

339 lines
33 KiB
TeX

\doxysection{serif\+::eos\+::runtime Namespace Reference}
\hypertarget{namespaceserif_1_1eos_1_1runtime}{}\label{namespaceserif_1_1eos_1_1runtime}\index{serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item
class \mbox{\hyperlink{classserif_1_1eos_1_1runtime_1_1_e_o_s_view}{EOSView}}
\begin{DoxyCompactList}\small\item\em A class to provide a runtime view of an EOS model and its relations. This class is used to provide a uniform interface for evaluating relations and partial derivatives at runtime. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_has_runtime_quantity_identifiers}{Has\+Runtime\+Quantity\+Identifiers}}
\begin{DoxyCompactList}\small\item\em A helper trait to determine if a relation has runtime quantity identifiers. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_has_runtime_quantity_identifiers_3_01relations_1_1_relation_3_cccf8857ab0156cf2afc2677bc16446c}{Has\+Runtime\+Quantity\+Identifiers$<$ relations\+::\+Relation$<$ Output\+T, Input\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_has_runtime_quantity_identifiers}{Has\+Runtime\+Quantity\+Identifiers} trait for a relation. This specialization checks if the output and input quantities of the relation have runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_dispatch}{Runtime\+Catalog\+Dispatch}}
\begin{DoxyCompactList}\small\item\em A helper struct to dispatch runtime evaluation of relations in a catalog. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_dispatch_3_01_e_o_s_00_01relations_1_1_relatio0166b9bbd8882975b3d1325bcdcd27cb}{Runtime\+Catalog\+Dispatch$<$ EOS, relations\+::\+Relation\+Catalog$<$ Relation\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_dispatch}{Runtime\+Catalog\+Dispatch} struct for a catalog of relations. This specialization dispatches runtime evaluation of relations in the catalog. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_is_supported}{Runtime\+Catalog\+Is\+Supported}}
\begin{DoxyCompactList}\small\item\em A helper trait to determine if a catalog of relations is supported by the runtime system. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_is_supported_3_01relations_1_1_relation_cataloe1dd4e8866d49db6ba530e370961bebe}{Runtime\+Catalog\+Is\+Supported$<$ relations\+::\+Relation\+Catalog$<$ Relation\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_is_supported}{Runtime\+Catalog\+Is\+Supported} trait for a catalog of relations. This specialization checks if the relations in the catalog have runtime quantity identifiers and if the runtime quantity identifiers are unambiguous. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_storage}{Runtime\+Catalog\+Storage}}
\begin{DoxyCompactList}\small\item\em A helper struct to store the runtime relation descriptors for a catalog of relations. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_storage_3_01_e_o_s_00_01relations_1_1_relation983e333b4bd596c3958f49a1bba13994}{Runtime\+Catalog\+Storage$<$ EOS, relations\+::\+Relation\+Catalog$<$ Relation\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_storage}{Runtime\+Catalog\+Storage} struct for a catalog of relations. This specialization stores the runtime relation descriptors for each relation in the catalog. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_quantities}{Runtime\+Relation\+Quantities}}
\begin{DoxyCompactList}\small\item\em A helper trait to extract the output and input quantity types from a relation. This is used to simplify the usage of relations in the runtime system. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_quantities_3_01relations_1_1_relation_3_01_ou3e28a4892e3a6a07a1f901a4b02b1a2d}{Runtime\+Relation\+Quantities$<$ relations\+::\+Relation$<$ Output\+T, Input\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_quantities}{Runtime\+Relation\+Quantities} trait for a relation. This specialization extracts the output and input quantity types from the relation and stores them in a tuple. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relations_are_supported}{Runtime\+Relations\+Are\+Supported}}
\begin{DoxyCompactList}\small\item\em A helper trait to determine if the runtime quantity identifiers in a catalog of relations are unambiguous. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relations_are_supported_3_01true_00_01_relation_ts_8_8_8_01_4}{Runtime\+Relations\+Are\+Supported$<$ true, Relation\+Ts... $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_relations_are_supported}{Runtime\+Relations\+Are\+Supported} trait for a catalog of relations. This specialization checks if the runtime quantity identifiers in the catalog are unambiguous. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_storage}{Runtime\+Relation\+Storage}}
\begin{DoxyCompactList}\small\item\em A helper trait to determine if a catalog of relations is supported by the runtime system. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_storage_3_01_e_o_s_00_01relations_1_1_relatio1af2754f79c06f8e77304f983650b533}{Runtime\+Relation\+Storage$<$ EOS, relations\+::\+Relation$<$ Output\+T, Input\+Ts... $>$ $>$}}
\begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_storage}{Runtime\+Relation\+Storage} trait for a relation. This specialization extracts the output and input quantity types from the relation and stores them in a tuple. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Concepts}
\begin{DoxyCompactItemize}
\item
concept \mbox{\hyperlink{conceptserif_1_1eos_1_1runtime_1_1_runtime_e_o_s_model}{Runtime\+EOSModel}}
\begin{DoxyCompactList}\small\item\em A concept to determine if a type is a valid runtime EOS model. A type is a valid Runtime\+EOSModel if it satisfies the EOSModel concept and if its Relations catalog is supported by the runtime system. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$Runtime\+EOSModel EOSCandidate$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_af34d4e019ddbfd7eca9b4c20fddbae2f}{Runtime\+EOSAdapter}} = \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_dispatch}{Runtime\+Catalog\+Dispatch}}$<$EOSCandidate, typename EOSCandidate\+::\+Relations$>$
\begin{DoxyCompactList}\small\item\em A helper alias to adapt a runtime EOS model to the runtime catalog dispatch system. This is used to simplify the usage of runtime EOS models in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename... Relation\+Ts$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a401a6ebdc70fa8ebcaa52ae6d85088c3}{Runtime\+Catalog\+Quantity\+Tuple}} = decltype(std\+::tuple\+\_\+cat(std\+::declval$<$typename \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_quantities}{Runtime\+Relation\+Quantities}}$<$Relation\+Ts$>$\+::\+Type$>$()...))
\begin{DoxyCompactList}\small\item\em A helper alias to extract the quantity types from a catalog of relations. This is used to simplify the usage of catalogs in the runtime system. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$Runtime\+EOSModel EOSCandidate$>$ }\\constexpr std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor}{dimensions\+::runtime\+::\+Runtime\+Relation\+Descriptor}} $>$ \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a25ab7f40da798676afd459e004a8c06d}{runtime\+Relation\+Descriptors}} () noexcept
\begin{DoxyCompactList}\small\item\em A helper function to get the runtime relation descriptors for a runtime EOS model. This is used to simplify the usage of runtime EOS models in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename First\+QuantityT, typename Second\+QuantityT$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_ad0ac24809585cfe3727b7c54825ee888}{runtime\+Quantity\+Identifiers\+Are\+Compatible}} ()
\begin{DoxyCompactList}\small\item\em A helper function to determine if two runtime quantity identifiers are compatible. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Quantity\+TupleT, std\+::size\+\_\+t First, std\+::size\+\_\+t... Offsets$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_af820c5291bf57d6f96d7394880ae120d}{runtime\+Quantity\+Identifier\+Is\+Unambiguous}} (std\+::index\+\_\+sequence$<$ Offsets... $>$)
\begin{DoxyCompactList}\small\item\em A helper function to determine if the runtime quantity identifiers in a tuple of quantity types are unambiguous. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Quantity\+TupleT, std\+::size\+\_\+t... Indices$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a70b84b0bdf6dfd9a32811741eeb5904c}{runtime\+Quantity\+Identifiers\+Are\+Unambiguous}} (std\+::index\+\_\+sequence$<$ Indices... $>$)
\begin{DoxyCompactList}\small\item\em A helper function to determine if the runtime quantity identifiers in a tuple of quantity types are unambiguous. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers. \end{DoxyCompactList}\item
std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a6bf81d411b0ecbf037e521c4fd9a73fd}{runtime\+Evaluation\+Failure}} (const \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} code)
\begin{DoxyCompactList}\small\item\em A helper function to create a std\+::unexpected with a \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code}. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename EOS, typename OutputT, typename... Input\+Ts$>$ }\\std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_ada3bf0e8223991d705767cfedd798d0e}{evaluate\+Runtime\+Relation}} (const EOS \&eos, \mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$, const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$ input\+Values)
\begin{DoxyCompactList}\small\item\em A helper function to evaluate a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Input\+QuantityT, typename EOS, typename OutputT, typename... Input\+Ts$>$ }\\bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a7a12dde1e7beb91e5714eb5f058b21b9}{try\+Runtime\+Partial\+Derivative}} (const EOS \&eos, \mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$, const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}} with\+Respect\+To, const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$ input\+Values, std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ \&result)
\begin{DoxyCompactList}\small\item\em A helper function to evaluate a partial derivative of a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename EOS, typename OutputT, typename... Input\+Ts$>$ }\\std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a8b97b3741d11fdc026685bd5c857404d}{evaluate\+Runtime\+Partial\+Derivative}} (const EOS \&eos, \mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$ relation, const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}} with\+Respect\+To, const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$ input\+Values)
\begin{DoxyCompactList}\small\item\em A helper function to evaluate a partial derivative of a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\item
{\footnotesize template$<$typename EOS, typename RelationT$>$ }\\bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a47b57535e125e2a963ff0105c77420fd}{runtime\+Relation\+Matches}} (const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}} output\+Quantity\+ID, const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$ input\+Values)
\begin{DoxyCompactList}\small\item\em A helper function to determine if a relation matches the given output quantity and input quantities at runtime. This is used to simplify the usage of std\+::expected in the runtime system. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Typedef Documentation}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a401a6ebdc70fa8ebcaa52ae6d85088c3}\index{serif::eos::runtime@{serif::eos::runtime}!RuntimeCatalogQuantityTuple@{RuntimeCatalogQuantityTuple}}
\index{RuntimeCatalogQuantityTuple@{RuntimeCatalogQuantityTuple}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{RuntimeCatalogQuantityTuple}{RuntimeCatalogQuantityTuple}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a401a6ebdc70fa8ebcaa52ae6d85088c3}
template$<$typename... Relation\+Ts$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_a401a6ebdc70fa8ebcaa52ae6d85088c3}{serif\+::eos\+::runtime\+::\+Runtime\+Catalog\+Quantity\+Tuple}} = decltype(std\+::tuple\+\_\+cat(std\+::declval$<$typename \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_relation_quantities}{Runtime\+Relation\+Quantities}}$<$Relation\+Ts$>$\+::\+Type$>$()...))}
A helper alias to extract the quantity types from a catalog of relations. This is used to simplify the usage of catalogs in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em Relation\+Ts} & The relation types in the catalog. \\
\hline
\end{DoxyTemplParams}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_af34d4e019ddbfd7eca9b4c20fddbae2f}\index{serif::eos::runtime@{serif::eos::runtime}!RuntimeEOSAdapter@{RuntimeEOSAdapter}}
\index{RuntimeEOSAdapter@{RuntimeEOSAdapter}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{RuntimeEOSAdapter}{RuntimeEOSAdapter}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_af34d4e019ddbfd7eca9b4c20fddbae2f}
template$<$Runtime\+EOSModel EOSCandidate$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1eos_1_1runtime_af34d4e019ddbfd7eca9b4c20fddbae2f}{serif\+::eos\+::runtime\+::\+Runtime\+EOSAdapter}} = \mbox{\hyperlink{structserif_1_1eos_1_1runtime_1_1_runtime_catalog_dispatch}{Runtime\+Catalog\+Dispatch}}$<$EOSCandidate, typename EOSCandidate\+::\+Relations$>$}
A helper alias to adapt a runtime EOS model to the runtime catalog dispatch system. This is used to simplify the usage of runtime EOS models in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em EOSCandidate} & The runtime EOS model type to adapt. \\
\hline
\end{DoxyTemplParams}
\doxysubsection{Function Documentation}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a8b97b3741d11fdc026685bd5c857404d}\index{serif::eos::runtime@{serif::eos::runtime}!evaluateRuntimePartialDerivative@{evaluateRuntimePartialDerivative}}
\index{evaluateRuntimePartialDerivative@{evaluateRuntimePartialDerivative}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{evaluateRuntimePartialDerivative()}{evaluateRuntimePartialDerivative()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a8b97b3741d11fdc026685bd5c857404d}
template$<$typename EOS, typename OutputT, typename... Input\+Ts$>$ \\
std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ serif\+::eos\+::runtime\+::evaluate\+Runtime\+Partial\+Derivative (\begin{DoxyParamCaption}\item[{const EOS \&}]{eos}{, }\item[{\mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$}]{relation}{, }\item[{const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}}}]{with\+Respect\+To}{, }\item[{const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$}]{input\+Values}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
A helper function to evaluate a partial derivative of a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em EOS} & The EOS model type that supports the relation. \\
\hline
{\em OutputT} & The output quantity type of the relation. \\
\hline
{\em Input\+Ts} & The input quantity types of the relation.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyParams}{Parameters}
{\em eos} & The EOS model instance to use for evaluation. \\
\hline
{\em relation} & The relation to evaluate. \\
\hline
{\em with\+Respect\+To} & The input quantity type to take the partial derivative with respect to. \\
\hline
{\em input\+Values} & The input values to use for evaluation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A std\+::expected containing the result of the evaluation or a \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code} if the evaluation failed.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_ada3bf0e8223991d705767cfedd798d0e}\index{serif::eos::runtime@{serif::eos::runtime}!evaluateRuntimeRelation@{evaluateRuntimeRelation}}
\index{evaluateRuntimeRelation@{evaluateRuntimeRelation}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{evaluateRuntimeRelation()}{evaluateRuntimeRelation()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_ada3bf0e8223991d705767cfedd798d0e}
template$<$typename EOS, typename OutputT, typename... Input\+Ts$>$ \\
std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ serif\+::eos\+::runtime\+::evaluate\+Runtime\+Relation (\begin{DoxyParamCaption}\item[{const EOS \&}]{eos}{, }\item[{\mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$}]{}{, }\item[{const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$}]{input\+Values}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
A helper function to evaluate a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em EOS} & The EOS model type that supports the relation. \\
\hline
{\em OutputT} & The output quantity type of the relation. \\
\hline
{\em Input\+Ts} & The input quantity types of the relation.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyParams}{Parameters}
{\em eos} & The EOS model instance to use for evaluation. \\
\hline
{\em relation} & The relation to evaluate. \\
\hline
{\em input\+Values} & The input values to use for evaluation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A std\+::expected containing the result of the evaluation or a \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code} if the evaluation failed.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a6bf81d411b0ecbf037e521c4fd9a73fd}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeEvaluationFailure@{runtimeEvaluationFailure}}
\index{runtimeEvaluationFailure@{runtimeEvaluationFailure}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeEvaluationFailure()}{runtimeEvaluationFailure()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a6bf81d411b0ecbf037e521c4fd9a73fd}
std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ serif\+::eos\+::runtime\+::runtime\+Evaluation\+Failure (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}}}]{code}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}}
A helper function to create a std\+::unexpected with a \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code}. This is used to simplify the usage of std\+::expected in the runtime system.
\begin{DoxyParams}{Parameters}
{\em code} & The \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code} to wrap in a std\+::unexpected. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A std\+::unexpected containing the given \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code}.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_af820c5291bf57d6f96d7394880ae120d}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeQuantityIdentifierIsUnambiguous@{runtimeQuantityIdentifierIsUnambiguous}}
\index{runtimeQuantityIdentifierIsUnambiguous@{runtimeQuantityIdentifierIsUnambiguous}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeQuantityIdentifierIsUnambiguous()}{runtimeQuantityIdentifierIsUnambiguous()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_af820c5291bf57d6f96d7394880ae120d}
template$<$typename Quantity\+TupleT, std\+::size\+\_\+t First, std\+::size\+\_\+t... Offsets$>$ \\
bool serif\+::eos\+::runtime\+::runtime\+Quantity\+Identifier\+Is\+Unambiguous (\begin{DoxyParamCaption}\item[{std\+::index\+\_\+sequence$<$ Offsets... $>$}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [consteval]}}
A helper function to determine if the runtime quantity identifiers in a tuple of quantity types are unambiguous. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
\begin{DoxyTemplParams}{Template Parameters}
{\em Quantity\+TupleT} & The tuple of quantity types to check. \\
\hline
{\em First} & The index of the first quantity type to check. \\
\hline
{\em Offsets} & The indices of the remaining quantity types to check. \\
\hline
\end{DoxyTemplParams}
\begin{DoxyReturn}{Returns}
True if the quantity identifiers are unambiguous, false otherwise.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_ad0ac24809585cfe3727b7c54825ee888}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeQuantityIdentifiersAreCompatible@{runtimeQuantityIdentifiersAreCompatible}}
\index{runtimeQuantityIdentifiersAreCompatible@{runtimeQuantityIdentifiersAreCompatible}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeQuantityIdentifiersAreCompatible()}{runtimeQuantityIdentifiersAreCompatible()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_ad0ac24809585cfe3727b7c54825ee888}
template$<$typename First\+QuantityT, typename Second\+QuantityT$>$ \\
bool serif\+::eos\+::runtime\+::runtime\+Quantity\+Identifiers\+Are\+Compatible (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [consteval]}}
A helper function to determine if two runtime quantity identifiers are compatible. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
\begin{DoxyTemplParams}{Template Parameters}
{\em First\+QuantityT} & The first quantity type to check. \\
\hline
{\em Second\+QuantityT} & The second quantity type to check. \\
\hline
\end{DoxyTemplParams}
\begin{DoxyReturn}{Returns}
True if the quantity identifiers are compatible, false otherwise.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a70b84b0bdf6dfd9a32811741eeb5904c}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeQuantityIdentifiersAreUnambiguous@{runtimeQuantityIdentifiersAreUnambiguous}}
\index{runtimeQuantityIdentifiersAreUnambiguous@{runtimeQuantityIdentifiersAreUnambiguous}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeQuantityIdentifiersAreUnambiguous()}{runtimeQuantityIdentifiersAreUnambiguous()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a70b84b0bdf6dfd9a32811741eeb5904c}
template$<$typename Quantity\+TupleT, std\+::size\+\_\+t... Indices$>$ \\
bool serif\+::eos\+::runtime\+::runtime\+Quantity\+Identifiers\+Are\+Unambiguous (\begin{DoxyParamCaption}\item[{std\+::index\+\_\+sequence$<$ Indices... $>$}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [consteval]}}
A helper function to determine if the runtime quantity identifiers in a tuple of quantity types are unambiguous. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
\begin{DoxyTemplParams}{Template Parameters}
{\em Quantity\+TupleT} & The tuple of quantity types to check. \\
\hline
{\em Indices} & The indices of the quantity types to check. \\
\hline
\end{DoxyTemplParams}
\begin{DoxyReturn}{Returns}
True if the quantity identifiers are unambiguous, false otherwise.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a25ab7f40da798676afd459e004a8c06d}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeRelationDescriptors@{runtimeRelationDescriptors}}
\index{runtimeRelationDescriptors@{runtimeRelationDescriptors}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeRelationDescriptors()}{runtimeRelationDescriptors()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a25ab7f40da798676afd459e004a8c06d}
template$<$Runtime\+EOSModel EOSCandidate$>$ \\
std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor}{dimensions\+::runtime\+::\+Runtime\+Relation\+Descriptor}} $>$ serif\+::eos\+::runtime\+::runtime\+Relation\+Descriptors (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [constexpr]}, {\ttfamily [noexcept]}}
A helper function to get the runtime relation descriptors for a runtime EOS model. This is used to simplify the usage of runtime EOS models in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em EOSCandidate} & The runtime EOS model type to get the descriptors for. \\
\hline
\end{DoxyTemplParams}
\begin{DoxyReturn}{Returns}
A span of runtime relation descriptors.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a47b57535e125e2a963ff0105c77420fd}\index{serif::eos::runtime@{serif::eos::runtime}!runtimeRelationMatches@{runtimeRelationMatches}}
\index{runtimeRelationMatches@{runtimeRelationMatches}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{runtimeRelationMatches()}{runtimeRelationMatches()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a47b57535e125e2a963ff0105c77420fd}
template$<$typename EOS, typename RelationT$>$ \\
bool serif\+::eos\+::runtime\+::runtime\+Relation\+Matches (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}}}]{output\+Quantity\+ID}{, }\item[{const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$}]{input\+Values}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
A helper function to determine if a relation matches the given output quantity and input quantities at runtime. This is used to simplify the usage of std\+::expected in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em EOS} & The EOS model type that supports the relation. \\
\hline
{\em RelationT} & The relation type to check.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyParams}{Parameters}
{\em output\+Quantity\+ID} & The output quantity type to check. \\
\hline
{\em input\+Values} & The input values to check. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True if the relation matches the given output quantity and input quantities, false otherwise.
\end{DoxyReturn}
\Hypertarget{namespaceserif_1_1eos_1_1runtime_a7a12dde1e7beb91e5714eb5f058b21b9}\index{serif::eos::runtime@{serif::eos::runtime}!tryRuntimePartialDerivative@{tryRuntimePartialDerivative}}
\index{tryRuntimePartialDerivative@{tryRuntimePartialDerivative}!serif::eos::runtime@{serif::eos::runtime}}
\doxysubsubsection{\texorpdfstring{tryRuntimePartialDerivative()}{tryRuntimePartialDerivative()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1eos_1_1runtime_a7a12dde1e7beb91e5714eb5f058b21b9}
template$<$typename Input\+QuantityT, typename EOS, typename OutputT, typename... Input\+Ts$>$ \\
bool serif\+::eos\+::runtime\+::try\+Runtime\+Partial\+Derivative (\begin{DoxyParamCaption}\item[{const EOS \&}]{eos}{, }\item[{\mbox{\hyperlink{structserif_1_1eos_1_1relations_1_1_relation}{relations\+::\+Relation}}$<$ OutputT, Input\+Ts... $>$}]{}{, }\item[{const \mbox{\hyperlink{classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d}{dimensions\+::runtime\+::\+Thermodynamic\+Quantity\+ID}}}]{with\+Respect\+To}{, }\item[{const std\+::span$<$ const \mbox{\hyperlink{structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value}{dimensions\+::runtime\+::\+Runtime\+Quantity\+Value}} $>$}]{input\+Values}{, }\item[{std\+::expected$<$ double, \mbox{\hyperlink{namespaceserif_1_1utils_1_1errors_ab04484c13887f78337c2331fb2911346}{utils\+::errors\+::\+SERi\+FError\+Code}} $>$ \&}]{result}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
A helper function to evaluate a partial derivative of a relation at runtime. This is used to simplify the usage of std\+::expected in the runtime system.
\begin{DoxyTemplParams}{Template Parameters}
{\em Input\+QuantityT} & The input quantity type to take the partial derivative with respect to. \\
\hline
{\em EOS} & The EOS model type that supports the relation. \\
\hline
{\em OutputT} & The output quantity type of the relation. \\
\hline
{\em Input\+Ts} & The input quantity types of the relation.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyParams}{Parameters}
{\em eos} & The EOS model instance to use for evaluation. \\
\hline
{\em relation} & The relation to evaluate. \\
\hline
{\em with\+Respect\+To} & The input quantity type to take the partial derivative with respect to. \\
\hline
{\em input\+Values} & The input values to use for evaluation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A std\+::expected containing the result of the evaluation or a \doxylink{views_8cpp_ab04484c13887f78337c2331fb2911346}{SERi\+FError\+Code} if the evaluation failed.
\end{DoxyReturn}