\doxysection{src/include/serif/model/validation.hpp File Reference} \hypertarget{model_2validation_8hpp}{}\label{model_2validation_8hpp}\index{src/include/serif/model/validation.hpp@{src/include/serif/model/validation.hpp}} {\ttfamily \#include "{}serif/model/description.\+hpp"{}}\newline {\ttfamily \#include "{}serif/model/detail/specification\+\_\+endpoints.\+hpp"{}}\newline {\ttfamily \#include "{}serif/model/plan.\+hpp"{}}\newline {\ttfamily \#include "{}serif/operators/linearized\+\_\+system\+\_\+view.\+hpp"{}}\newline Include dependency graph for validation.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{model_2validation_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]{model_2validation_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_equation_couplings_3_01_equation_00_01utils_1_1types_1_1_typef24c48fc52ee458347e39dd0b9bd8b4f}{serif\+::model\+::detail\+::\+Equation\+Couplings$<$ Equation, utils\+::types\+::\+Type\+List$<$ Columns... $>$ $>$}} \item struct \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_interior_couplings_3_01equations_1_1_equation_registry_3_01_equations_8_8_8_01_4_01_4}{serif\+::model\+::detail\+::\+Interior\+Couplings$<$ equations\+::\+Equation\+Registry$<$ Equations... $>$ $>$}} \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_specification_endpoints_valid}{serif\+::model\+::\+Specification\+Endpoints\+Valid}} \begin{DoxyCompactList}\small\item\em Validate physical ownership, available inputs and uniquely owned generated equations. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_specification_topology_valid}{serif\+::model\+::\+Specification\+Topology\+Valid}} \begin{DoxyCompactList}\small\item\em Validate physical endpoints and every derivative in an explicitly declared contract. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_specification_backend_available}{serif\+::model\+::\+Specification\+Backend\+Available}} \begin{DoxyCompactList}\small\item\em Require a registered implementation for every declared generated derivative, including explicit zeros. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Row, typename Field$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a95bbbd670343f9cd11939d21c5bf79ab}{serif\+::model\+::\+Derivative}} = \mbox{\hyperlink{structserif_1_1operators_1_1_physical_block}{operators\+::\+Physical\+Block}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Row$>$, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Field$>$$>$ \begin{DoxyCompactList}\small\item\em Name a physical derivative using the shared block-\/source key convention. \end{DoxyCompactList}\item {\footnotesize template$<$utils\+::dependencies\+::\+Is\+Binding... Additional$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{serif\+::model\+::\+Specification\+Bindings}} \begin{DoxyCompactList}\small\item\em Map physical names and built-\/in generated identities once; custom identities require explicit bindings. \end{DoxyCompactList}\item using \mbox{\hyperlink{namespaceserif_1_1model_adae046e777aafb66e79a039911580916}{serif\+::model\+::\+Default\+Specification\+Bindings}} = \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{Specification\+Bindings}}$<$$>$ \item {\footnotesize template$<$Executable\+Interior\+Equations Registry$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a5d147fdea58527d7b5ee14302ab8cd57}{serif\+::model\+::\+Declared\+Equation\+Couplings}} = typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_interior_couplings}{detail\+::\+Interior\+Couplings}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$Registry$>$$>$\+::\+Type \begin{DoxyCompactList}\small\item\em Derive declared interior couplings from actual operands rather than a second physical sparsity table. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification, typename Model, typename Values, typename Inputs, typename Rows, typename Inactive\+Rows, typename Bindings$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_aae26e7579ddb1668e7abef12a8c70067}{serif\+::model\+::detail\+::valid\+\_\+specification\+\_\+endpoints}} () \begin{DoxyCompactList}\small\item\em Check physical inputs separately from unknowns and explicitly inactive equations. \end{DoxyCompactList}\item {\footnotesize template$<$typename Model, typename Values, typename Inputs, typename Rows, typename Inactive\+Rows, typename Bindings, typename... Specifications$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_ad2113b4e1a949598fc2f7be37f1c0927}{serif\+::model\+::detail\+::valid\+\_\+specifications}} (\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$ Specifications... $>$) \begin{DoxyCompactList}\small\item\em Fold independent physical declarations; no equation counting or rank inference is involved. \end{DoxyCompactList}\item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification, typename Couplings, typename Bindings$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a17b67ad43340da0fcbb5688d6b90e9a1}{serif\+::model\+::detail\+::specification\+\_\+derivatives\+\_\+available}} () \begin{DoxyCompactList}\small\item\em Validate declared derivative contracts without inferring zeros from missing providers. \end{DoxyCompactList}\item {\footnotesize template$<$typename Couplings, typename Bindings, typename... Specifications$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a0d6ab5f248c85c95fd813dbb801fe90d}{serif\+::model\+::detail\+::specification\+\_\+derivatives\+\_\+available}} (\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$ Specifications... $>$) \begin{DoxyCompactList}\small\item\em Check each prescription against independently supplied derivative registrations. \end{DoxyCompactList}\end{DoxyCompactItemize}