Files
MeanField_SERiF/docs/latex/namespaceserif_1_1discretization_1_1blocks.tex
Emily Boudreaux 6b57738330 docs(docs): built docs
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)
2026-11-09 14:09:44 -05:00

325 lines
32 KiB
TeX

\doxysection{serif\+::discretization\+::blocks Namespace Reference}
\hypertarget{namespaceserif_1_1discretization_1_1blocks}{}\label{namespaceserif_1_1discretization_1_1blocks}\index{serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_1_1detail}{detail}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_1_1keys}{keys}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant}{barotropic\+\_\+constant}}
\begin{DoxyCompactList}\small\item\em This field holds the effective potential level on the stellar isobar. The level is solved together with the fixed total mass. The \doxylink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant}{barotropic\+\_\+constant} name is retained as an internal coordinate identity. In the density formulation its value is Us, the gravitational potential minus the centrifugal potential on the surface; it is not the polytropic EOS constant K. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1block}{block}}
\begin{DoxyCompactList}\small\item\em Base class for all block types in the discretization framework. \end{DoxyCompactList}\item
class \mbox{\hyperlink{classserif_1_1discretization_1_1blocks_1_1_block_vector_view}{Block\+Vector\+View}}
\begin{DoxyCompactList}\small\item\em Build a non-\/owning view of a packed layout as a span. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1density}{density}}
\begin{DoxyCompactList}\small\item\em The density field used to represent the distribution of mass in the system. This is a scalar field that is associated with the mass density of the system. The density field is used to enforce the mass conservation condition in the weak form. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement}{displacement}}
\begin{DoxyCompactList}\small\item\em The displacement field is a 3 vector H1 field (C0 continuous) that is used to represent continuous nodal displacement over the entire domain. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1field}{field}}
\begin{DoxyCompactList}\small\item\em The field struct is a tag type that is used to identify a field in the discretization. It is used to group together terms that belong to the same field. Each field should have a unique name and a list of terms that belong to it. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_field_descriptor}{Field\+Descriptor}}
\begin{DoxyCompactList}\small\item\em Runtime descriptor for a field, containing its name. Two Field\+Descriptors are equal if they have identical names. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1frame__acceleration}{frame\+\_\+acceleration}}
\begin{DoxyCompactList}\small\item\em Uniform translation reaction, one global scalar per Cartesian axis, to be paired with Barycenter\+Constraint (for example when an external companion potential acts on the star). It must vanish in a physical equilibrium. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1global__scalar}{global\+\_\+scalar}}
\begin{DoxyCompactList}\small\item\em A global scalar is a term that has a single value over the entire domain (think angular momentum or total mass). Broadly we need to separate these from the other terms since they require different (often less enriched) information at compile time. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1gravity}{gravity}}
\begin{DoxyCompactList}\small\item\em The gravity field contains the scalar potential. The primal formulation solves the potential and obtains its gradient by differentiation. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1residual__block}{residual\+\_\+block}}
\begin{DoxyCompactList}\small\item\em Final class for residual blocks with a fixed index, derived from \doxylink{structserif_1_1discretization_1_1blocks_1_1residual__block__base}{residual\+\_\+block\+\_\+base}. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1residual__block__base}{residual\+\_\+block\+\_\+base}}
\begin{DoxyCompactList}\small\item\em Base class for residual blocks, derived from block. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1rotation}{rotation}}
\begin{DoxyCompactList}\small\item\em The rotational field, represented as the angular velocity term, given that we currently only model rigid rotation this is a global scalar. A future extension which models differential rotation will likely need to modify this to some vector field or other more complex representation of the rotation. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_spatial_term_traits}{Spatial\+Term\+Traits}}
\begin{DoxyCompactList}\small\item\em Helper struct representing the traits of some spatial term type, including its functional space, support, family, order, and rank. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1surface__deformation}{surface\+\_\+deformation}}
\begin{DoxyCompactList}\small\item\em The surface corollary field to the full displacement field. This is in some ways more general than the others in so far as it is not pointwise defined over the domain. Rather, it is some general field of numbers, divorced from the underlying discrimination, that is used to represent the surface deformation of the system. This may be used, for example to represent spherical harmonic coefficients of the surface deformation. For more information see the surface and deformation systems. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_system_layout}{System\+Layout}}
\begin{DoxyCompactList}\small\item\em Describe the independently ordered physical state and residual coordinates of a discrete system. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1term}{term}}
\begin{DoxyCompactList}\small\item\em The term struct is a tag type that is used to identify a term in the discretization. It is used to group together terms that belong to the same field. Each term should have a unique name and a list of blocks that belong to it. Note that generally you should always use term rather than \doxylink{structserif_1_1discretization_1_1blocks_1_1term__base}{term\+\_\+base} as term associates to a particular field at compile time. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1term__base}{term\+\_\+base}}
\begin{DoxyCompactList}\small\item\em The \doxylink{structserif_1_1discretization_1_1blocks_1_1term__base}{term\+\_\+base} struct is a tag type that is used to identify a term in the discretization. It is used to group together terms that belong to the same field. Each term should have a unique name and a list of blocks that belong to it. Generally you should always use term rather than \doxylink{structserif_1_1discretization_1_1blocks_1_1term__base}{term\+\_\+base} as term associates to a particular field at compile time. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_term_descriptor}{Term\+Descriptor}}
\begin{DoxyCompactList}\small\item\em Runtime descriptor for a term, containing its associated field and name. Two Term\+Descriptors are equal if they have identical fields and names. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1value__block}{value\+\_\+block}}
\begin{DoxyCompactList}\small\item\em Final class for value blocks with a fixed index, derived from \doxylink{structserif_1_1discretization_1_1blocks_1_1value__block__base}{value\+\_\+block\+\_\+base}. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1value__block__base}{value\+\_\+block\+\_\+base}}
\begin{DoxyCompactList}\small\item\em Base class for value blocks, derived from block. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Concepts}
\begin{DoxyCompactItemize}
\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_field}{Field}}
\begin{DoxyCompactList}\small\item\em Concept for field types in the discretization framework. To be a field a type must derive from the field base class. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term}}
\begin{DoxyCompactList}\small\item\em Concept for term types in the discretization framework. To be a term a type must derive from term\+\_\+base, must have a field\+\_\+type member, and that field\+\_\+type member must be a valid field. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_has_functional_space}{Has\+Functional\+Space}}
\begin{DoxyCompactList}\small\item\em Concept for term types that have a functional space. To have a functional space a type must first be a valid \doxylink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term} and must have a Functional\+Space member type. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_has_support}{Has\+Support}}
\begin{DoxyCompactList}\small\item\em Concept for term types that have a domain over which they are supported. To have support a type must first be a valid \doxylink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term} and must have a Support member type. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_has_quantity}{Has\+Quantity}}
\begin{DoxyCompactList}\small\item\em Concept for term types that have a physical quantity associated with them. To have a quantity a type must first be a valid \doxylink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term} and must have a Quantity member type. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_has_value_block}{Has\+Value\+Block}}
\begin{DoxyCompactList}\small\item\em Concept for term types that have a value block associated with them. To have a value block a type must first be a valid \doxylink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term} and must have a value member type. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_has_residual_block}{Has\+Residual\+Block}}
\begin{DoxyCompactList}\small\item\em Concept for term types that have a residual block associated with them. To have a residual block a type must first be a valid \doxylink{conceptserif_1_1discretization_1_1blocks_1_1_term}{Term} and must have a residual member type. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_spatial_term}{Spatial\+Term}}
\begin{DoxyCompactList}\small\item\em Concept for term types that are spatial terms. A spatial term is a term that has a functional space (\doxylink{conceptserif_1_1discretization_1_1blocks_1_1_has_functional_space}{Has\+Functional\+Space}) and a support (\doxylink{conceptserif_1_1discretization_1_1blocks_1_1_has_support}{Has\+Support}). \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_global_scalar_term}{Global\+Scalar\+Term}}
\begin{DoxyCompactList}\small\item\em Concept for term types that are global scalar terms. A global scalar term is a term that has support (\doxylink{conceptserif_1_1discretization_1_1blocks_1_1_has_support}{Has\+Support}) but does not have a functional space (\doxylink{conceptserif_1_1discretization_1_1blocks_1_1_has_functional_space}{Has\+Functional\+Space}) and is derived from the global\+\_\+scalar class. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_system_layout_type}{System\+Layout\+Type}}
\begin{DoxyCompactList}\small\item\em Compile time check for a System\+Layout type, e.\+g. System\+Layout$<$\+Values, Residuals$>$. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1discretization_1_1blocks_1_1_scalar_trace_term}{Scalar\+Trace\+Term}}
\begin{DoxyCompactList}\small\item\em A unique scalar boundary value is available for continuous scalar fields and scalar globals. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$Has\+Functional\+Space TermT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a8b16d088f59cff9d40cd84eebd53d3b1}{Functional\+Space\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Functional\+Space
\begin{DoxyCompactList}\small\item\em Extract the functional space type associated with a given term type. Will have a type of whatever Term\+T\+::\+Functional\+Space is. \end{DoxyCompactList}\item
{\footnotesize template$<$Has\+Support TermT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aba18df102a90506f2263dc6395e3f975}{Support\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Support
\begin{DoxyCompactList}\small\item\em Extract the support type associated with a given term type. Will have a type of whatever Term\+T\+::\+Support is. \end{DoxyCompactList}\item
{\footnotesize template$<$Has\+Quantity TermT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aef1a0354784f797bfa87d2369652b5cb}{Quantity\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Quantity
\begin{DoxyCompactList}\small\item\em Extract the quantity type associated with a given term type. Will have a type of whatever Term\+T\+::\+Quantity is. \end{DoxyCompactList}\item
{\footnotesize template$<$System\+Layout\+Type Layout, typename Scalar = double$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aaf621ef3cd1e663131647a86d13e5990}{State\+View}} = \mbox{\hyperlink{classserif_1_1discretization_1_1blocks_1_1_block_vector_view}{Block\+Vector\+View}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804}{Represented\+Value\+Kind\+::value}}, Layout, Scalar$>$
\begin{DoxyCompactList}\small\item\em A convenient alias for a view of the physical state coefficients. \end{DoxyCompactList}\item
{\footnotesize template$<$System\+Layout\+Type Layout, typename Scalar = double$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a1ee29035ab1c1c9e232b42e92ff8514d}{Residual\+View}} = \mbox{\hyperlink{classserif_1_1discretization_1_1blocks_1_1_block_vector_view}{Block\+Vector\+View}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9}{Represented\+Value\+Kind\+::residual}}, Layout, Scalar$>$
\begin{DoxyCompactList}\small\item\em A convenient alias for a view of the residual coefficients. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item
enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{Represented\+Value\+Kind}} \{ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804}{value}}
, \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9}{residual}}
\}
\begin{DoxyCompactList}\small\item\em Enum representing the kind of value a block represents, either a physical quantity (value) or a residual (residual). \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
std\+::size\+\_\+t \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a946d6244b79cf4fad47d07fb97db32e1}{checked\+\_\+block\+\_\+size}} (std\+::span$<$ const std\+::size\+\_\+t $>$ sizes)
\begin{DoxyCompactList}\small\item\em Sum some memory span with checking for if any element is too large to fit in a size\+\_\+t. \end{DoxyCompactList}\item
{\footnotesize template$<$System\+Layout\+Type Layout, typename Size\+Resolver$>$ }\\constexpr std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a71adc03af28a2984d945fdf54a8cee2e}{make\+\_\+system\+\_\+layout}} (const Size\+Resolver \&size)
\begin{DoxyCompactList}\small\item\em Build both coordinate orderings from the same physical size resolver. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item
constexpr int \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a8eaaa61c301de12ca7a32a728e39e986}{DYNAMIC\+\_\+\+BLOCK\+\_\+\+SIZE}} = -\/1
\item
{\footnotesize template$<$Field FieldT$>$ }\\constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_field_descriptor}{Field\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a979c72b7f7e82015163d35bf5a970d90}{field\+\_\+descriptor}} \{.name = Field\+T\+::name\}
\begin{DoxyCompactList}\small\item\em Create a \doxylink{structserif_1_1discretization_1_1blocks_1_1_field_descriptor}{Field\+Descriptor} for a given field type. \end{DoxyCompactList}\item
{\footnotesize template$<$Term TermT$>$ }\\constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_term_descriptor}{Term\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aa9f0d01c3fa0c64f62d684acf9f7ae27}{term\+\_\+descriptor}}
\begin{DoxyCompactList}\small\item\em Create a \doxylink{structserif_1_1discretization_1_1blocks_1_1_term_descriptor}{Term\+Descriptor} for a given term type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Typedef Documentation}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a8b16d088f59cff9d40cd84eebd53d3b1}\index{serif::discretization::blocks@{serif::discretization::blocks}!FunctionalSpaceOf@{FunctionalSpaceOf}}
\index{FunctionalSpaceOf@{FunctionalSpaceOf}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{FunctionalSpaceOf}{FunctionalSpaceOf}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a8b16d088f59cff9d40cd84eebd53d3b1}
template$<$Has\+Functional\+Space TermT$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a8b16d088f59cff9d40cd84eebd53d3b1}{serif\+::discretization\+::blocks\+::\+Functional\+Space\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Functional\+Space}
Extract the functional space type associated with a given term type. Will have a type of whatever Term\+T\+::\+Functional\+Space is.
\begin{DoxyTemplParams}{Template Parameters}
{\em TermT} & The term type from which to extract the functional space type.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000016}{Todo}}]For consistency with other types consider renaming Term\+T\+::\+Functional\+Space to Term\+T\+::functional\+\_\+space. This would require updating all term definitions to use the new naming convention. CLion or some other IDE should be able to handle this refactor easily. \end{DoxyRefDesc}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aef1a0354784f797bfa87d2369652b5cb}\index{serif::discretization::blocks@{serif::discretization::blocks}!QuantityOf@{QuantityOf}}
\index{QuantityOf@{QuantityOf}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{QuantityOf}{QuantityOf}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_aef1a0354784f797bfa87d2369652b5cb}
template$<$Has\+Quantity TermT$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aef1a0354784f797bfa87d2369652b5cb}{serif\+::discretization\+::blocks\+::\+Quantity\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Quantity}
Extract the quantity type associated with a given term type. Will have a type of whatever Term\+T\+::\+Quantity is.
\begin{DoxyTemplParams}{Template Parameters}
{\em TermT} & The term type from which to extract the quantity type.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000018}{Todo}}]For consistency with other types consider renaming Term\+T\+::\+Quantity to Term\+T\+::quantity. This would require updating all term definitions to use the new naming convention. CLion or some other IDE should be able to handle this refactor easily. \end{DoxyRefDesc}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a1ee29035ab1c1c9e232b42e92ff8514d}\index{serif::discretization::blocks@{serif::discretization::blocks}!ResidualView@{ResidualView}}
\index{ResidualView@{ResidualView}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{ResidualView}{ResidualView}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a1ee29035ab1c1c9e232b42e92ff8514d}
template$<$System\+Layout\+Type Layout, typename Scalar = double$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a1ee29035ab1c1c9e232b42e92ff8514d}{serif\+::discretization\+::blocks\+::\+Residual\+View}} = \mbox{\hyperlink{classserif_1_1discretization_1_1blocks_1_1_block_vector_view}{Block\+Vector\+View}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9}{Represented\+Value\+Kind\+::residual}}, Layout, Scalar$>$}
A convenient alias for a view of the residual coefficients.
\begin{DoxyTemplParams}{Template Parameters}
{\em Layout} & The block layout type, e.\+g. \doxylink{structserif_1_1discretization_1_1blocks_1_1_system_layout}{System\+Layout}. \\
\hline
{\em Scalar} & The scalar type of the coefficients, e.\+g. double. \\
\hline
\end{DoxyTemplParams}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aaf621ef3cd1e663131647a86d13e5990}\index{serif::discretization::blocks@{serif::discretization::blocks}!StateView@{StateView}}
\index{StateView@{StateView}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{StateView}{StateView}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_aaf621ef3cd1e663131647a86d13e5990}
template$<$System\+Layout\+Type Layout, typename Scalar = double$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aaf621ef3cd1e663131647a86d13e5990}{serif\+::discretization\+::blocks\+::\+State\+View}} = \mbox{\hyperlink{classserif_1_1discretization_1_1blocks_1_1_block_vector_view}{Block\+Vector\+View}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804}{Represented\+Value\+Kind\+::value}}, Layout, Scalar$>$}
A convenient alias for a view of the physical state coefficients.
\begin{DoxyTemplParams}{Template Parameters}
{\em Layout} & The block layout type, e.\+g. \doxylink{structserif_1_1discretization_1_1blocks_1_1_system_layout}{System\+Layout}. \\
\hline
{\em Scalar} & The scalar type of the coefficients, e.\+g. double. \\
\hline
\end{DoxyTemplParams}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aba18df102a90506f2263dc6395e3f975}\index{serif::discretization::blocks@{serif::discretization::blocks}!SupportOf@{SupportOf}}
\index{SupportOf@{SupportOf}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{SupportOf}{SupportOf}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_aba18df102a90506f2263dc6395e3f975}
template$<$Has\+Support TermT$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aba18df102a90506f2263dc6395e3f975}{serif\+::discretization\+::blocks\+::\+Support\+Of}} = std\+::remove\+\_\+cvref\+\_\+t$<$TermT$>$\+::\+Support}
Extract the support type associated with a given term type. Will have a type of whatever Term\+T\+::\+Support is.
\begin{DoxyTemplParams}{Template Parameters}
{\em TermT} & The term type from which to extract the support type.\\
\hline
\end{DoxyTemplParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000017}{Todo}}]For consistency with other types consider renaming Term\+T\+::\+Support to Term\+T\+::support. This would require updating all term definitions to use the new naming convention. CLion or some other IDE should be able to handle this refactor easily. \end{DoxyRefDesc}
\doxysubsection{Enumeration Type Documentation}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}\index{serif::discretization::blocks@{serif::discretization::blocks}!RepresentedValueKind@{RepresentedValueKind}}
\index{RepresentedValueKind@{RepresentedValueKind}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{RepresentedValueKind}{RepresentedValueKind}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}
enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{serif\+::discretization\+::blocks\+::\+Represented\+Value\+Kind}}\hspace{0.3cm}{\ttfamily [strong]}}
Enum representing the kind of value a block represents, either a physical quantity (value) or a residual (residual).
Generally this is mostly used in the solver/normalization system. \begin{DoxyEnumFields}[2]{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!serif::discretization::blocks@{serif::discretization::blocks}}\index{serif::discretization::blocks@{serif::discretization::blocks}!value@{value}}}\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804}\label{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804}
value&A value representing a physical quantity (e.\+g., temperature, pressure). \\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{residual@{residual}!serif::discretization::blocks@{serif::discretization::blocks}}\index{serif::discretization::blocks@{serif::discretization::blocks}!residual@{residual}}}\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9}\label{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9}
residual&A residual representing the difference between the current state and the desired state in a numerical method. \\
\hline
\end{DoxyEnumFields}
\doxysubsection{Function Documentation}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a946d6244b79cf4fad47d07fb97db32e1}\index{serif::discretization::blocks@{serif::discretization::blocks}!checked\_block\_size@{checked\_block\_size}}
\index{checked\_block\_size@{checked\_block\_size}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{checked\_block\_size()}{checked\_block\_size()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a946d6244b79cf4fad47d07fb97db32e1}
std\+::size\+\_\+t serif\+::discretization\+::blocks\+::checked\+\_\+block\+\_\+size (\begin{DoxyParamCaption}\item[{std\+::span$<$ const std\+::size\+\_\+t $>$}]{sizes}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Sum some memory span with checking for if any element is too large to fit in a size\+\_\+t.
\begin{DoxyParams}{Parameters}
{\em sizes} & A span of sizes to sum \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The sum of the sizes
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em std\+::overflow\+\_\+error} & If an element of sizes is too large to fit in a size\+\_\+t\\
\hline
\end{DoxyExceptions}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000015}{Todo}}]Really this does not need to be specific to this module, this might more generally be named something like "{}safe sum"{} and moved to a more general location. \end{DoxyRefDesc}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a71adc03af28a2984d945fdf54a8cee2e}\index{serif::discretization::blocks@{serif::discretization::blocks}!make\_system\_layout@{make\_system\_layout}}
\index{make\_system\_layout@{make\_system\_layout}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{make\_system\_layout()}{make\_system\_layout()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a71adc03af28a2984d945fdf54a8cee2e}
template$<$System\+Layout\+Type Layout, typename Size\+Resolver$>$ \\
std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ serif\+::discretization\+::blocks\+::make\+\_\+system\+\_\+layout (\begin{DoxyParamCaption}\item[{const Size\+Resolver \&}]{size}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [constexpr]}}
Build both coordinate orderings from the same physical size resolver.
\begin{DoxyParams}{Parameters}
{\em size} & A callable whose templated operator()$<$\+Coordinate$>$() returns that coordinate\textquotesingle{}s coefficient count. \\
\hline
\end{DoxyParams}
\doxysubsection{Variable Documentation}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a8eaaa61c301de12ca7a32a728e39e986}\index{serif::discretization::blocks@{serif::discretization::blocks}!DYNAMIC\_BLOCK\_SIZE@{DYNAMIC\_BLOCK\_SIZE}}
\index{DYNAMIC\_BLOCK\_SIZE@{DYNAMIC\_BLOCK\_SIZE}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{DYNAMIC\_BLOCK\_SIZE}{DYNAMIC\_BLOCK\_SIZE}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a8eaaa61c301de12ca7a32a728e39e986}
int serif\+::discretization\+::blocks\+::\+DYNAMIC\+\_\+\+BLOCK\+\_\+\+SIZE = -\/1\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_a979c72b7f7e82015163d35bf5a970d90}\index{serif::discretization::blocks@{serif::discretization::blocks}!field\_descriptor@{field\_descriptor}}
\index{field\_descriptor@{field\_descriptor}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{field\_descriptor}{field\_descriptor}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_a979c72b7f7e82015163d35bf5a970d90}
template$<$Field FieldT$>$ \\
\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_field_descriptor}{Field\+Descriptor}} serif\+::discretization\+::blocks\+::field\+\_\+descriptor \{.name = Field\+T\+::name\}\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}}
Create a \doxylink{structserif_1_1discretization_1_1blocks_1_1_field_descriptor}{Field\+Descriptor} for a given field type.
\begin{DoxyTemplParams}{Template Parameters}
{\em FieldT} & The field type for which to create the descriptor. \\
\hline
\end{DoxyTemplParams}
\Hypertarget{namespaceserif_1_1discretization_1_1blocks_aa9f0d01c3fa0c64f62d684acf9f7ae27}\index{serif::discretization::blocks@{serif::discretization::blocks}!term\_descriptor@{term\_descriptor}}
\index{term\_descriptor@{term\_descriptor}!serif::discretization::blocks@{serif::discretization::blocks}}
\doxysubsubsection{\texorpdfstring{term\_descriptor}{term\_descriptor}}
{\footnotesize\ttfamily \label{namespaceserif_1_1discretization_1_1blocks_aa9f0d01c3fa0c64f62d684acf9f7ae27}
template$<$Term TermT$>$ \\
\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_term_descriptor}{Term\+Descriptor}} serif\+::discretization\+::blocks\+::term\+\_\+descriptor\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}}
{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ .field\ =\ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_a979c72b7f7e82015163d35bf5a970d90}{field\_descriptor<typename\ TermT::field\_type>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ .name\ =\ TermT::name}
\DoxyCodeLine{\ \ \ \ \}}
\end{DoxyCode}
Create a \doxylink{structserif_1_1discretization_1_1blocks_1_1_term_descriptor}{Term\+Descriptor} for a given term type.
\begin{DoxyTemplParams}{Template Parameters}
{\em TermT} & The term type for which to create the descriptor. \\
\hline
\end{DoxyTemplParams}