\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}