Files
MeanField_SERiF/docs/xml/namespaceserif_1_1discretization_1_1blocks.xml
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

424 lines
24 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
<compounddef id="namespaceserif_1_1discretization_1_1blocks" kind="namespace" language="C++">
<compoundname>serif::discretization::blocks</compoundname>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1barotropic__constant" prot="public">serif::discretization::blocks::barotropic_constant</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1block" prot="public">serif::discretization::blocks::block</innerclass>
<innerclass refid="classserif_1_1discretization_1_1blocks_1_1_block_vector_view" prot="public">serif::discretization::blocks::BlockVectorView</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1density" prot="public">serif::discretization::blocks::density</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1displacement" prot="public">serif::discretization::blocks::displacement</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1field" prot="public">serif::discretization::blocks::field</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1_field_descriptor" prot="public">serif::discretization::blocks::FieldDescriptor</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1frame__acceleration" prot="public">serif::discretization::blocks::frame_acceleration</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1global__scalar" prot="public">serif::discretization::blocks::global_scalar</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1gravity" prot="public">serif::discretization::blocks::gravity</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1residual__block" prot="public">serif::discretization::blocks::residual_block</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1residual__block__base" prot="public">serif::discretization::blocks::residual_block_base</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1rotation" prot="public">serif::discretization::blocks::rotation</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1_spatial_term_traits" prot="public">serif::discretization::blocks::SpatialTermTraits</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1surface__deformation" prot="public">serif::discretization::blocks::surface_deformation</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1_system_layout" prot="public">serif::discretization::blocks::SystemLayout</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1term" prot="public">serif::discretization::blocks::term</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1term__base" prot="public">serif::discretization::blocks::term_base</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1_term_descriptor" prot="public">serif::discretization::blocks::TermDescriptor</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1value__block" prot="public">serif::discretization::blocks::value_block</innerclass>
<innerclass refid="structserif_1_1discretization_1_1blocks_1_1value__block__base" prot="public">serif::discretization::blocks::value_block_base</innerclass>
<innernamespace refid="namespaceserif_1_1discretization_1_1blocks_1_1detail">serif::discretization::blocks::detail</innernamespace>
<innernamespace refid="namespaceserif_1_1discretization_1_1blocks_1_1keys">serif::discretization::blocks::keys</innernamespace>
<sectiondef kind="enum">
<memberdef kind="enum" id="namespaceserif_1_1discretization_1_1blocks_1aca74ff25d2168fcdec080e03ebc023ea" prot="public" static="no" strong="yes">
<type></type>
<name>RepresentedValueKind</name>
<qualifiedname>serif::discretization::blocks::RepresentedValueKind</qualifiedname>
<enumvalue id="namespaceserif_1_1discretization_1_1blocks_1aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804" prot="public">
<name>value</name>
<briefdescription>
<para>A value representing a physical quantity (e.g., temperature, pressure). </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
</enumvalue>
<enumvalue id="namespaceserif_1_1discretization_1_1blocks_1aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9" prot="public">
<name>residual</name>
<briefdescription>
<para>A residual representing the difference between the current state and the desired state in a numerical method. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
</enumvalue>
<briefdescription>
<para>Enum representing the kind of value a block represents, either a physical quantity (value) or a residual (residual). </para>
</briefdescription>
<detaileddescription>
<para>Generally this is mostly used in the solver/normalization system. </para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/base.hpp" line="23" column="5" bodyfile="src/include/serif/discretization/blocks/base.hpp" bodystart="23" bodyend="26"/>
</memberdef>
</sectiondef>
<sectiondef kind="typedef">
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1blocks_1a8b16d088f59cff9d40cd84eebd53d3b1" prot="public" static="no">
<templateparamlist>
<param>
<type>HasFunctionalSpace</type>
<declname>TermT</declname>
<defname>TermT</defname>
</param>
</templateparamlist>
<type>std::remove_cvref_t&lt; TermT &gt;::FunctionalSpace</type>
<definition>using serif::discretization::blocks::FunctionalSpaceOf = std::remove_cvref_t&lt;TermT&gt;::FunctionalSpace</definition>
<argsstring></argsstring>
<name>FunctionalSpaceOf</name>
<qualifiedname>serif::discretization::blocks::FunctionalSpaceOf</qualifiedname>
<briefdescription>
<para>Extract the functional space type associated with a given term type. Will have a type of whatever TermT::FunctionalSpace is. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>TermT</parametername>
</parameternamelist>
<parameterdescription>
<para>The term type from which to extract the functional space type.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<xrefsect id="todo_1_todo000016"><xreftitle>Todo</xreftitle><xrefdescription><para>For consistency with other types consider renaming TermT::FunctionalSpace to TermT::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. </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/traits.hpp" line="21" column="5" bodyfile="src/include/serif/discretization/blocks/traits.hpp" bodystart="21" bodyend="-1"/>
</memberdef>
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1blocks_1aba18df102a90506f2263dc6395e3f975" prot="public" static="no">
<templateparamlist>
<param>
<type>HasSupport</type>
<declname>TermT</declname>
<defname>TermT</defname>
</param>
</templateparamlist>
<type>std::remove_cvref_t&lt; TermT &gt;::Support</type>
<definition>using serif::discretization::blocks::SupportOf = std::remove_cvref_t&lt;TermT&gt;::Support</definition>
<argsstring></argsstring>
<name>SupportOf</name>
<qualifiedname>serif::discretization::blocks::SupportOf</qualifiedname>
<briefdescription>
<para>Extract the support type associated with a given term type. Will have a type of whatever TermT::Support is. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>TermT</parametername>
</parameternamelist>
<parameterdescription>
<para>The term type from which to extract the support type.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<xrefsect id="todo_1_todo000017"><xreftitle>Todo</xreftitle><xrefdescription><para>For consistency with other types consider renaming TermT::Support to TermT::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. </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/traits.hpp" line="30" column="5" bodyfile="src/include/serif/discretization/blocks/traits.hpp" bodystart="30" bodyend="-1"/>
</memberdef>
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1blocks_1aef1a0354784f797bfa87d2369652b5cb" prot="public" static="no">
<templateparamlist>
<param>
<type>HasQuantity</type>
<declname>TermT</declname>
<defname>TermT</defname>
</param>
</templateparamlist>
<type>std::remove_cvref_t&lt; TermT &gt;::Quantity</type>
<definition>using serif::discretization::blocks::QuantityOf = std::remove_cvref_t&lt;TermT&gt;::Quantity</definition>
<argsstring></argsstring>
<name>QuantityOf</name>
<qualifiedname>serif::discretization::blocks::QuantityOf</qualifiedname>
<briefdescription>
<para>Extract the quantity type associated with a given term type. Will have a type of whatever TermT::Quantity is. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>TermT</parametername>
</parameternamelist>
<parameterdescription>
<para>The term type from which to extract the quantity type.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<xrefsect id="todo_1_todo000018"><xreftitle>Todo</xreftitle><xrefdescription><para>For consistency with other types consider renaming TermT::Quantity to TermT::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. </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/traits.hpp" line="39" column="5" bodyfile="src/include/serif/discretization/blocks/traits.hpp" bodystart="39" bodyend="-1"/>
</memberdef>
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1blocks_1aaf621ef3cd1e663131647a86d13e5990" prot="public" static="no">
<templateparamlist>
<param>
<type>SystemLayoutType</type>
<declname>Layout</declname>
<defname>Layout</defname>
</param>
<param>
<type>typename Scalar</type>
<defval>double</defval>
</param>
</templateparamlist>
<type><ref refid="classserif_1_1discretization_1_1blocks_1_1_block_vector_view" kindref="compound">BlockVectorView</ref>&lt; <ref refid="namespaceserif_1_1discretization_1_1blocks_1aca74ff25d2168fcdec080e03ebc023eaa2063c1608d6e0baf80249c42e2be5804" kindref="member">RepresentedValueKind::value</ref>, Layout, Scalar &gt;</type>
<definition>using serif::discretization::blocks::StateView = BlockVectorView&lt;RepresentedValueKind::value, Layout, Scalar&gt;</definition>
<argsstring></argsstring>
<name>StateView</name>
<qualifiedname>serif::discretization::blocks::StateView</qualifiedname>
<briefdescription>
<para>A convenient alias for a view of the physical state coefficients. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>Layout</parametername>
</parameternamelist>
<parameterdescription>
<para>The block layout type, e.g. <ref refid="structserif_1_1discretization_1_1blocks_1_1_system_layout" kindref="compound">SystemLayout</ref>. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>Scalar</parametername>
</parameternamelist>
<parameterdescription>
<para>The scalar type of the coefficients, e.g. double. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/vector_view.hpp" line="103" column="5" bodyfile="src/include/serif/discretization/blocks/vector_view.hpp" bodystart="103" bodyend="-1"/>
</memberdef>
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1blocks_1a1ee29035ab1c1c9e232b42e92ff8514d" prot="public" static="no">
<templateparamlist>
<param>
<type>SystemLayoutType</type>
<declname>Layout</declname>
<defname>Layout</defname>
</param>
<param>
<type>typename Scalar</type>
<defval>double</defval>
</param>
</templateparamlist>
<type><ref refid="classserif_1_1discretization_1_1blocks_1_1_block_vector_view" kindref="compound">BlockVectorView</ref>&lt; <ref refid="namespaceserif_1_1discretization_1_1blocks_1aca74ff25d2168fcdec080e03ebc023eaa4db598f63d4aea6a3c8eaddfe5c2b1e9" kindref="member">RepresentedValueKind::residual</ref>, Layout, Scalar &gt;</type>
<definition>using serif::discretization::blocks::ResidualView = BlockVectorView&lt;RepresentedValueKind::residual, Layout, Scalar&gt;</definition>
<argsstring></argsstring>
<name>ResidualView</name>
<qualifiedname>serif::discretization::blocks::ResidualView</qualifiedname>
<briefdescription>
<para>A convenient alias for a view of the residual coefficients. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>Layout</parametername>
</parameternamelist>
<parameterdescription>
<para>The block layout type, e.g. <ref refid="structserif_1_1discretization_1_1blocks_1_1_system_layout" kindref="compound">SystemLayout</ref>. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>Scalar</parametername>
</parameternamelist>
<parameterdescription>
<para>The scalar type of the coefficients, e.g. double. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/vector_view.hpp" line="112" column="5" bodyfile="src/include/serif/discretization/blocks/vector_view.hpp" bodystart="112" bodyend="-1"/>
</memberdef>
</sectiondef>
<sectiondef kind="var">
<memberdef kind="variable" id="namespaceserif_1_1discretization_1_1blocks_1a8eaaa61c301de12ca7a32a728e39e986" prot="public" static="no" constexpr="yes" mutable="no">
<type>int</type>
<definition>int serif::discretization::blocks::DYNAMIC_BLOCK_SIZE</definition>
<argsstring></argsstring>
<name>DYNAMIC_BLOCK_SIZE</name>
<qualifiedname>serif::discretization::blocks::DYNAMIC_BLOCK_SIZE</qualifiedname>
<initializer>= -1</initializer>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/base.hpp" line="9" column="26" bodyfile="src/include/serif/discretization/blocks/base.hpp" bodystart="9" bodyend="-1"/>
</memberdef>
<memberdef kind="variable" id="namespaceserif_1_1discretization_1_1blocks_1a979c72b7f7e82015163d35bf5a970d90" prot="public" static="no" constexpr="yes" mutable="no">
<templateparamlist>
<param>
<type>Field</type>
<declname>FieldT</declname>
<defname>FieldT</defname>
</param>
</templateparamlist>
<type><ref refid="structserif_1_1discretization_1_1blocks_1_1_field_descriptor" kindref="compound">FieldDescriptor</ref></type>
<definition>FieldDescriptor serif::discretization::blocks::field_descriptor</definition>
<argsstring></argsstring>
<name>field_descriptor</name>
<qualifiedname>serif::discretization::blocks::field_descriptor</qualifiedname>
<initializer>{.name = FieldT::name}</initializer>
<briefdescription>
<para>Create a <ref refid="structserif_1_1discretization_1_1blocks_1_1_field_descriptor" kindref="compound">FieldDescriptor</ref> for a given field type. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>FieldT</parametername>
</parameternamelist>
<parameterdescription>
<para>The field type for which to create the descriptor. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/runtime.hpp" line="53" column="38" bodyfile="src/include/serif/discretization/blocks/runtime.hpp" bodystart="53" bodyend="53"/>
</memberdef>
<memberdef kind="variable" id="namespaceserif_1_1discretization_1_1blocks_1aa9f0d01c3fa0c64f62d684acf9f7ae27" prot="public" static="no" constexpr="yes" mutable="no">
<templateparamlist>
<param>
<type>Term</type>
<declname>TermT</declname>
<defname>TermT</defname>
</param>
</templateparamlist>
<type><ref refid="structserif_1_1discretization_1_1blocks_1_1_term_descriptor" kindref="compound">TermDescriptor</ref></type>
<definition>TermDescriptor serif::discretization::blocks::term_descriptor</definition>
<argsstring></argsstring>
<name>term_descriptor</name>
<qualifiedname>serif::discretization::blocks::term_descriptor</qualifiedname>
<initializer>{
.<ref refid="structserif_1_1discretization_1_1blocks_1_1field" kindref="compound">field</ref> = <ref refid="namespaceserif_1_1discretization_1_1blocks_1a979c72b7f7e82015163d35bf5a970d90" kindref="member">field_descriptor</ref>&lt;typename TermT::field_type&gt;,
.name = TermT::name
}</initializer>
<briefdescription>
<para>Create a <ref refid="structserif_1_1discretization_1_1blocks_1_1_term_descriptor" kindref="compound">TermDescriptor</ref> for a given term type. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>TermT</parametername>
</parameternamelist>
<parameterdescription>
<para>The term type for which to create the descriptor. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/runtime.hpp" line="60" column="37" bodyfile="src/include/serif/discretization/blocks/runtime.hpp" bodystart="60" bodyend="63"/>
</memberdef>
</sectiondef>
<sectiondef kind="func">
<memberdef kind="function" id="namespaceserif_1_1discretization_1_1blocks_1a946d6244b79cf4fad47d07fb97db32e1" prot="public" static="no" nodiscard="yes" const="no" explicit="no" inline="no" virt="non-virtual">
<type>std::size_t</type>
<definition>std::size_t serif::discretization::blocks::checked_block_size</definition>
<argsstring>(std::span&lt; const std::size_t &gt; sizes)</argsstring>
<name>checked_block_size</name>
<qualifiedname>serif::discretization::blocks::checked_block_size</qualifiedname>
<param>
<type>std::span&lt; const std::size_t &gt;</type>
<declname>sizes</declname>
</param>
<briefdescription>
<para>Sum some memory span with checking for if any element is too large to fit in a size_t. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>sizes</parametername>
</parameternamelist>
<parameterdescription>
<para>A span of sizes to sum </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The sum of the sizes</para>
</simplesect>
<parameterlist kind="exception"><parameteritem>
<parameternamelist>
<parametername>std::overflow_error</parametername>
</parameternamelist>
<parameterdescription>
<para>If an element of sizes is too large to fit in a size_t</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<xrefsect id="todo_1_todo000015"><xreftitle>Todo</xreftitle><xrefdescription><para>Really this does not need to be specific to this module, this might more generally be named something like &quot;safe sum&quot; and moved to a more general location. </para>
</xrefdescription></xrefsect></para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/lib/serif/discretization/blocks/system_layout.cpp" line="9" column="17" bodyfile="src/lib/serif/discretization/blocks/system_layout.cpp" bodystart="9" bodyend="19" declfile="src/include/serif/discretization/blocks/system_layout.hpp" declline="31" declcolumn="18"/>
</memberdef>
<memberdef kind="function" id="namespaceserif_1_1discretization_1_1blocks_1a71adc03af28a2984d945fdf54a8cee2e" prot="public" static="no" nodiscard="yes" constexpr="yes" const="no" explicit="no" inline="no" virt="non-virtual">
<templateparamlist>
<param>
<type>SystemLayoutType</type>
<declname>Layout</declname>
<defname>Layout</defname>
</param>
<param>
<type>typename SizeResolver</type>
</param>
</templateparamlist>
<type>std::remove_cvref_t&lt; Layout &gt;</type>
<definition>std::remove_cvref_t&lt; Layout &gt; serif::discretization::blocks::make_system_layout</definition>
<argsstring>(const SizeResolver &amp;size)</argsstring>
<name>make_system_layout</name>
<qualifiedname>serif::discretization::blocks::make_system_layout</qualifiedname>
<param>
<type>const SizeResolver &amp;</type>
<declname>size</declname>
</param>
<briefdescription>
<para>Build both coordinate orderings from the same physical size resolver. </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>size</parametername>
</parameternamelist>
<parameterdescription>
<para>A callable whose templated operator()&lt;Coordinate&gt;() returns that coordinate&apos;s coefficient count. </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="src/include/serif/discretization/blocks/system_layout.hpp" line="179" column="36" bodyfile="src/include/serif/discretization/blocks/system_layout.hpp" bodystart="179" bodyend="187"/>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="src/include/serif/discretization/blocks/base.hpp" line="8" column="1"/>
</compounddef>
</doxygen>