\doxysection{src/include/serif/eos/models/traits.hpp File Reference} \hypertarget{eos_2models_2traits_8hpp}{}\label{eos_2models_2traits_8hpp}\index{src/include/serif/eos/models/traits.hpp@{src/include/serif/eos/models/traits.hpp}} File containing the traits for the eos module. These traits are used to determine if a type is an equation of state model and if it supports a given relation or partial derivative. {\ttfamily \#include "{}serif/dimensions/quantities.\+hpp"{}}\newline {\ttfamily \#include "{}serif/dimensions/partial.\+hpp"{}}\newline {\ttfamily \#include "{}serif/eos/relations/concepts.\+hpp"{}}\newline Include dependency graph for traits.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{eos_2models_2traits_8hpp__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{eos_2models_2traits_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_relation__t}{serif\+::eos\+::models\+::\+Implements\+Relation\+\_\+t$<$ EOS, Relation\+T $>$}} \begin{DoxyCompactList}\small\item\em A trait to determine if a type is an equation of state model. This is the default false specialization. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_relation_catalog__t}{serif\+::eos\+::models\+::\+Implements\+Relation\+Catalog\+\_\+t$<$ EOS, Output, Inputs $>$}} \begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1models_1_1_implements_relation__t}{Implements\+Relation\+\_\+t} trait for a relation. This is used to determine if an EOS type implements a given relation. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_relation_catalog__t_3_01_e_o_s_00_01relations_1_1_re84a27b22ac57c74adaf074b343ae5413}{serif\+::eos\+::models\+::\+Implements\+Relation\+Catalog\+\_\+t$<$ EOS, relations\+::\+Relation\+Catalog$<$ Relations... $>$ $>$}} \begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1models_1_1_implements_relation_catalog__t}{Implements\+Relation\+Catalog\+\_\+t} trait for a relation catalog. This is used to determine if an EOS type implements all relations in a given relation catalog. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_is_equation_of_state_model__t}{serif\+::eos\+::models\+::\+Is\+Equation\+Of\+State\+Model\+\_\+t$<$ EOSCandidate, typename $>$}} \begin{DoxyCompactList}\small\item\em A trait to determine if a type is an equation of state model. This is the default false specialization. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_is_equation_of_state_model__t_3_01_e_o_s_candidate_00_01std_1_12c3fff187c709d66c77cc44935c5cf28}{serif\+::eos\+::models\+::\+Is\+Equation\+Of\+State\+Model\+\_\+t$<$ EOSCandidate, std\+::void\+\_\+t$<$ typename std\+::remove\+\_\+cvref\+\_\+t$<$ EOSCandidate $>$\+::\+Relations $>$ $>$}} \begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1models_1_1_is_equation_of_state_model__t}{Is\+Equation\+Of\+State\+Model\+\_\+t} trait for a type that has a Relations type alias. A candidate is an equation of state model if it has a valid relation catalog and implements all relations in that catalog. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_partial_derivative__t}{serif\+::eos\+::models\+::\+Implements\+Partial\+Derivative\+\_\+t$<$ EOS, Relation\+T, Input\+Quantity $>$}} \begin{DoxyCompactList}\small\item\em A trait to determine if a type implements a partial derivative for a given relation and input quantity. This is the default false specialization. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_second_partial_derivative__t}{serif\+::eos\+::models\+::\+Implements\+Second\+Partial\+Derivative\+\_\+t$<$ EOS, Relation\+T, First\+Input, Second\+Input $>$}} \begin{DoxyCompactList}\small\item\em A second partial is available only for two actual inputs of the relation. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1eos}{serif\+::eos}} \item namespace \mbox{\hyperlink{namespaceserif_1_1eos_1_1models}{serif\+::eos\+::models}} \end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename EOSCandidate$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1models_a54483208e757570d1ef38aa59b9da8d6}{serif\+::eos\+::models\+::is\+\_\+equation\+\_\+of\+\_\+state\+\_\+model\+\_\+v}} = \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_is_equation_of_state_model__t}{Is\+Equation\+Of\+State\+Model\+\_\+t}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$EOSCandidate$>$$>$\+::value \begin{DoxyCompactList}\small\item\em A specialization of the \doxylink{structserif_1_1eos_1_1models_1_1_implements_partial_derivative__t}{Implements\+Partial\+Derivative\+\_\+t} trait for a relation and input quantity. This is used to determine if an EOS type implements a partial derivative for a given relation and input quantity. \end{DoxyCompactList}\item {\footnotesize template$<$typename EOS, typename RelationT$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1models_ade35b41c252dd1f4369ebf954c8c81e8}{serif\+::eos\+::models\+::supports\+\_\+relation\+\_\+v}} = \mbox{\hyperlink{namespaceserif_1_1eos_1_1models_a54483208e757570d1ef38aa59b9da8d6}{is\+\_\+equation\+\_\+of\+\_\+state\+\_\+model\+\_\+v}}$<$EOS$>$ \&\& \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_relation__t}{Implements\+Relation\+\_\+t}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$EOS$>$, std\+::remove\+\_\+cvref\+\_\+t$<$RelationT$>$$>$\+::value \begin{DoxyCompactList}\small\item\em Require an analytic implementation with the exact physical return type. \end{DoxyCompactList}\item {\footnotesize template$<$typename EOS, typename RelationT, typename Input\+Quantity$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1eos_1_1models_ab0fa71430824737b86a42a5eb08a83ee}{serif\+::eos\+::models\+::supports\+\_\+partial\+\_\+derivative\+\_\+v}} = \mbox{\hyperlink{namespaceserif_1_1eos_1_1models_a54483208e757570d1ef38aa59b9da8d6}{is\+\_\+equation\+\_\+of\+\_\+state\+\_\+model\+\_\+v}}$<$EOS$>$ \&\& \mbox{\hyperlink{structserif_1_1eos_1_1models_1_1_implements_partial_derivative__t}{Implements\+Partial\+Derivative\+\_\+t}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$EOS$>$, std\+::remove\+\_\+cvref\+\_\+t$<$RelationT$>$, Input\+Quantity$>$\+::value \begin{DoxyCompactList}\small\item\em A variable template to determine if an EOS type supports a partial derivative for a given relation and input quantity. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} File containing the traits for the eos module. These traits are used to determine if a type is an equation of state model and if it supports a given relation or partial derivative. \begin{DoxyAuthor}{Author} Emily M. Boudreaux \end{DoxyAuthor}