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)
99 lines
8.7 KiB
TeX
99 lines
8.7 KiB
TeX
\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}
|