\doxysection{src/include/serif/model/specification.hpp File Reference} \hypertarget{specification_8hpp}{}\label{specification_8hpp}\index{src/include/serif/model/specification.hpp@{src/include/serif/model/specification.hpp}} {\ttfamily \#include $<$array$>$}\newline {\ttfamily \#include $<$concepts$>$}\newline {\ttfamily \#include $<$limits$>$}\newline {\ttfamily \#include $<$string\+\_\+view$>$}\newline {\ttfamily \#include $<$type\+\_\+traits$>$}\newline {\ttfamily \#include "{}serif/dimensions/quantities.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/types/strings.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/types/type\+\_\+list.\+hpp"{}}\newline Include dependency graph for specification.\+hpp\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{specification_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]{specification_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1model_1_1_scalar_constraint}{serif\+::model\+::\+Scalar\+Constraint$<$ Target, Coordinate, Residual, Coordinate\+Id, Coordinate\+Symbol, Residual\+Id, Residual\+Symbol $>$}} \begin{DoxyCompactList}\small\item\em Declare independent target, unknown and residual units and stable descriptive identities. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_specification_definition}{serif\+::model\+::\+Specification\+Definition$<$ Owner, Name, Role, Kind, Scalar, Read\+Fields, Changed\+Equations $>$}} \begin{DoxyCompactList}\small\item\em Declare a prescription once; numerical providers and normalization consume this metadata. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_generated_coordinate_of}{serif\+::model\+::\+Generated\+Coordinate\+Of$<$ Specification $>$}} \begin{DoxyCompactList}\small\item\em Name another prescription, including a forward declaration, without erasing its identity. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_constraint_of}{serif\+::model\+::\+Constraint\+Of$<$ Specification $>$}} \begin{DoxyCompactList}\small\item\em Identify a generated residual independently from its target and unknown units. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_enforcement_of}{serif\+::model\+::\+Enforcement\+Of$<$ Specification $>$}} \begin{DoxyCompactList}\small\item\em Select an explicit numerical enforcement while preserving the public physical prescription. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_specification_descriptor}{serif\+::model\+::\+Specification\+Descriptor}} \begin{DoxyCompactList}\small\item\em Inspect canonical prescription identity without claiming numerical availability. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model}{serif\+::model}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1detail}{serif\+::model\+::detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_model_specification}{serif\+::model\+::\+Model\+Specification}} \begin{DoxyCompactList}\small\item\em Recognize a self-\/describing prescription without demanding executable physics or optional metadata. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_dimensional_scalar_specification}{serif\+::model\+::\+Dimensional\+Scalar\+Specification}} \begin{DoxyCompactList}\small\item\em Require exact dimensional agreement only when scalar numerical metadata is needed. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename... Fields$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a251ff98f4ef742b690180c7cb06292bb}{serif\+::model\+::\+Reads}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Fields...$>$ \item {\footnotesize template$<$typename... Equations$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a5cbe5c0513a11299350110cee5d31821}{serif\+::model\+::\+Changes}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Equations...$>$ \item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_ac7544ec47f3986209861b7fb0b6ae4bf}{serif\+::model\+::\+Generated\+Coordinate\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Coordinate\+Quantity \begin{DoxyCompactList}\small\item\em Query scalar units only once the owning prescription is complete. \end{DoxyCompactList}\item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a36d5c59d89fffbd444ee44415f85bbed}{serif\+::model\+::\+Constraint\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Residual\+Quantity \begin{DoxyCompactList}\small\item\em Residual units remain independent from the target and generated coordinate. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{serif\+::model\+::\+Specification\+Role}} \{ \newline \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a7832eb62b9d5da114fbd828501794b90}{serif\+::model\+::constitutive\+\_\+law}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a8360be627354dd5a66ea7e358d0109a4}{serif\+::model\+::boundary\+\_\+condition}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a97a1fb4792ab0d80857d825020ced2f0}{serif\+::model\+::invariant}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ab55fad3fe78d06b3d481aef2500c784b}{serif\+::model\+::phase\+\_\+condition}} , \newline \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a49d377e11d9c996137d2ef9ca80a1482}{serif\+::model\+::gauge\+\_\+choice}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ae7aa3fcb6ca31a1a1fa583a6e4a98c30}{serif\+::model\+::rotation\+\_\+law}} \} \begin{DoxyCompactList}\small\item\em Physical purpose of a prescription, independently of its numerical implementation. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca}{serif\+::model\+::\+Generated\+State\+Kind}} \{ \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa334c4a4c42fdb79d7ebc3e73b517e6f8}{serif\+::model\+::none}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2375dfa839ccd84978745547605b21e4}{serif\+::model\+::multiplier}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa5b029370da350a18e571dffd4b78ae47}{serif\+::model\+::physical\+\_\+coordinate}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2fadfbbb30ccd79bbdcae01edd52f2b5}{serif\+::model\+::solver\+\_\+border}} \} \begin{DoxyCompactList}\small\item\em Distinguish prescribed physics from the physical meaning of a generated scalar. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item consteval bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a63cb8dc552f2d77e4cd94e95ab5632a1}{serif\+::model\+::detail\+::compatible\+\_\+generated\+\_\+state}} (\mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} role, \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca}{Generated\+State\+Kind}} kind) \begin{DoxyCompactList}\small\item\em Reject unknown enums and mismatched physical roles before inspecting optional scalar metadata. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Candidate$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a4a7f81eee6f624fa023ae185500c3af7}{serif\+::model\+::detail\+::is\+\_\+type\+\_\+list}} = false \item {\footnotesize template$<$typename... Types$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a326ac931281a47b95c3caabb1698e95a}{serif\+::model\+::detail\+::is\+\_\+type\+\_\+list$<$ utils\+::types\+::\+Type\+List$<$ Types... $>$ $>$}} = true \end{DoxyCompactItemize}