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)
350 lines
22 KiB
XML
350 lines
22 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_1forms" kind="namespace" language="C++">
|
|
<compoundname>serif::discretization::forms</compoundname>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1boundary__flux" prot="public">serif::discretization::forms::boundary_flux</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1divergence" prot="public">serif::discretization::forms::divergence</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1force" prot="public">serif::discretization::forms::force</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1form" prot="public">serif::discretization::forms::form</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_descriptor" prot="public">serif::discretization::forms::FormDescriptor</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits" prot="public">serif::discretization::forms::FormTraits</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01boundary__flux_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< boundary_flux< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01divergence_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< divergence< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01force_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< force< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01mass_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< mass< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01projection_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< projection< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_form_traits_3_01source_3_01_trial_t_00_01_test_t_01_4_01_4" prot="public">serif::discretization::forms::FormTraits< source< TrialT, TestT > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1mass" prot="public">serif::discretization::forms::mass</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operand" prot="public">serif::discretization::forms::Operand</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operand_result" prot="public">serif::discretization::forms::OperandResult</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operand_result_3_01_operand_t_01_4" prot="public">serif::discretization::forms::OperandResult< OperandT ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation" prot="public">serif::discretization::forms::Operation</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value" prot="public">serif::discretization::forms::OperationValue</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_010_00_01_operation_1_1_gradient_01_4" prot="public">serif::discretization::forms::OperationValue< 0, Operation::Gradient ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_010_00_01_operation_1_1_value_01_4" prot="public">serif::discretization::forms::OperationValue< 0, Operation::Value ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_curl_01_4" prot="public">serif::discretization::forms::OperationValue< 1, Operation::Curl ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_divergence_01_4" prot="public">serif::discretization::forms::OperationValue< 1, Operation::Divergence ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_gradient_01_4" prot="public">serif::discretization::forms::OperationValue< 1, Operation::Gradient ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_normal_trace_01_4" prot="public">serif::discretization::forms::OperationValue< 1, Operation::NormalTrace ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_value_01_4" prot="public">serif::discretization::forms::OperationValue< 1, Operation::Value ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1projection" prot="public">serif::discretization::forms::projection</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1source" prot="public">serif::discretization::forms::source</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_value_components" prot="public">serif::discretization::forms::ValueComponents</innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_value_components_3_01double_01_4" prot="public">serif::discretization::forms::ValueComponents< double ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_value_components_3_01std_1_1array_3_01_entry_00_01_size_01_4_01_4" prot="public">serif::discretization::forms::ValueComponents< std::array< Entry, Size > ></innerclass>
|
|
<innerclass refid="structserif_1_1discretization_1_1forms_1_1_value_components_3_01void_01_4" prot="public">serif::discretization::forms::ValueComponents< void ></innerclass>
|
|
<sectiondef kind="typedef">
|
|
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1forms_1a19001a41347e243892d7bfef18abd174" prot="public" static="no">
|
|
<type>std::array< double, 3 ></type>
|
|
<definition>using serif::discretization::forms::VectorValue = std::array<double, 3></definition>
|
|
<argsstring></argsstring>
|
|
<name>VectorValue</name>
|
|
<qualifiedname>serif::discretization::forms::VectorValue</qualifiedname>
|
|
<briefdescription>
|
|
<para>Alias for a rank 1 tensor of dimension 3 with elements doubles. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><xrefsect id="todo_1_todo000031"><xreftitle>Todo</xreftitle><xrefdescription><para>This file was a mistake, the information it is is helpful yes, however, it has lost generality, lost good type information, and does not need to be separate Really we should refactor this to be part of <ref refid="structserif_1_1discretization_1_1forms_1_1_operation" kindref="compound">Operation</ref>, remove the assumption of 3 dimensionality, and probably fall back to something like a span rather than an array. </para>
|
|
</xrefdescription></xrefsect></para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="24" column="5" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="24" bodyend="-1"/>
|
|
</memberdef>
|
|
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1forms_1aecbaccd35c1209031d60ea7348d6a452" prot="public" static="no">
|
|
<type>std::array< <ref refid="namespaceserif_1_1discretization_1_1forms_1a19001a41347e243892d7bfef18abd174" kindref="member">VectorValue</ref>, 3 ></type>
|
|
<definition>using serif::discretization::forms::MatrixValue = std::array<VectorValue, 3></definition>
|
|
<argsstring></argsstring>
|
|
<name>MatrixValue</name>
|
|
<qualifiedname>serif::discretization::forms::MatrixValue</qualifiedname>
|
|
<briefdescription>
|
|
<para>Alias for a rank 2 tensor of dimension 3 with cells as doubles. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="29" column="5" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="29" bodyend="-1"/>
|
|
</memberdef>
|
|
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1forms_1ab58e222c3ef402eeceadd03fd04180bf" prot="public" static="no">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>IsOperand</type>
|
|
<declname>OperandT</declname>
|
|
<defname>OperandT</defname>
|
|
</param>
|
|
</templateparamlist>
|
|
<type><ref refid="structserif_1_1discretization_1_1forms_1_1_operand_result" kindref="compound">OperandResult</ref>< OperandT >::type</type>
|
|
<definition>using serif::discretization::forms::OperandValue = OperandResult<OperandT>::type</definition>
|
|
<argsstring></argsstring>
|
|
<name>OperandValue</name>
|
|
<qualifiedname>serif::discretization::forms::OperandValue</qualifiedname>
|
|
<briefdescription>
|
|
<para>Alias for the value type of an operand. This is a convenience alias that allows you to easily access the value type of an operand without having to explicitly use the <ref refid="structserif_1_1discretization_1_1forms_1_1_operand_result" kindref="compound">OperandResult</ref> struct. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><parameterlist kind="templateparam"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>OperandT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The operand type to determine the value type for. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
</para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="128" column="5" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="128" bodyend="-1"/>
|
|
</memberdef>
|
|
<memberdef kind="typedef" id="namespaceserif_1_1discretization_1_1forms_1a259c1476be2e462d8cd07c803434af69" prot="public" static="no">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>typename OutputT</type>
|
|
</param>
|
|
<param>
|
|
<type>typename InputT</type>
|
|
</param>
|
|
</templateparamlist>
|
|
<type>std::conditional_t< std::same_as< OutputT, double >, InputT, std::conditional_t< std::same_as< InputT, double >, OutputT, std::array< std::array< double, <ref refid="namespaceserif_1_1discretization_1_1forms_1a8ff94af3602610b4765e1e1e87aebdb9" kindref="member">component_count</ref>< InputT > >, <ref refid="namespaceserif_1_1discretization_1_1forms_1a8ff94af3602610b4765e1e1e87aebdb9" kindref="member">component_count</ref>< OutputT > > > ></type>
|
|
<definition>using serif::discretization::forms::PartialDerivative = std::conditional_t<std::same_as<OutputT, double>, InputT, std::conditional_t<std::same_as<InputT, double>, OutputT,
|
|
std::array<std::array<double, component_count<InputT>>, component_count<OutputT>>>></definition>
|
|
<argsstring></argsstring>
|
|
<name>PartialDerivative</name>
|
|
<qualifiedname>serif::discretization::forms::PartialDerivative</qualifiedname>
|
|
<briefdescription>
|
|
<para>Alias for the partial derivative of some output type with respect to some input type. This is a convenience alias that allows you to easily access the partial derivative type without having to explicitly use the <ref refid="structserif_1_1discretization_1_1forms_1_1_operand_result" kindref="compound">OperandResult</ref> struct. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><parameterlist kind="templateparam"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>OutputT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The output type of the partial derivative. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
<parameteritem>
|
|
<parameternamelist>
|
|
<parametername>InputT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The input type of the partial derivative.</para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
<xrefsect id="todo_1_todo000033"><xreftitle>Todo</xreftitle><xrefdescription><para>Should probably be consolidated with the other <ref refid="namespaceserif_1_1discretization_1_1forms_1a259c1476be2e462d8cd07c803434af69" kindref="member">PartialDerivative</ref> system... No, should <emphasis>definitely</emphasis> be consolidated... </para>
|
|
</xrefdescription></xrefsect></para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="160" column="5" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="160" bodyend="-1"/>
|
|
</memberdef>
|
|
</sectiondef>
|
|
<sectiondef kind="var">
|
|
<memberdef kind="variable" id="namespaceserif_1_1discretization_1_1forms_1aa9c9e5345d458df1a069b05fccf45394" prot="public" static="no" constexpr="yes" mutable="no">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>Form</type>
|
|
<declname>FormT</declname>
|
|
<defname>FormT</defname>
|
|
</param>
|
|
</templateparamlist>
|
|
<type><ref refid="structserif_1_1discretization_1_1forms_1_1_form_descriptor" kindref="compound">FormDescriptor</ref></type>
|
|
<definition>FormDescriptor serif::discretization::forms::form_descriptor</definition>
|
|
<argsstring></argsstring>
|
|
<name>form_descriptor</name>
|
|
<qualifiedname>serif::discretization::forms::form_descriptor</qualifiedname>
|
|
<initializer>{
|
|
.name = FormT::name,
|
|
.trial = <ref refid="namespaceserif_1_1discretization_1_1blocks_1aa9f0d01c3fa0c64f62d684acf9f7ae27" kindref="member">blocks::term_descriptor</ref><typename FormT::trial_type>,
|
|
.test = <ref refid="namespaceserif_1_1discretization_1_1blocks_1aa9f0d01c3fa0c64f62d684acf9f7ae27" kindref="member">blocks::term_descriptor</ref><typename FormT::test_type>
|
|
}</initializer>
|
|
<briefdescription>
|
|
<para>Specialization of the <ref refid="structserif_1_1discretization_1_1forms_1_1_form_descriptor" kindref="compound">FormDescriptor</ref> class at compile time for some particular compile-time form. This allows us to generate constexpr instances of this struct at compile time and usable at runtime. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><parameterlist kind="templateparam"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>FormT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The form to generate a descriptor for </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
</para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/runtime.hpp" line="41" column="37" bodyfile="src/include/serif/discretization/forms/runtime.hpp" bodystart="41" bodyend="45"/>
|
|
</memberdef>
|
|
<memberdef kind="variable" id="namespaceserif_1_1discretization_1_1forms_1a8ff94af3602610b4765e1e1e87aebdb9" prot="public" static="no" constexpr="yes" mutable="no">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>typename ValueT</type>
|
|
</param>
|
|
</templateparamlist>
|
|
<type>int</type>
|
|
<definition>int serif::discretization::forms::component_count</definition>
|
|
<argsstring></argsstring>
|
|
<name>component_count</name>
|
|
<qualifiedname>serif::discretization::forms::component_count</qualifiedname>
|
|
<initializer>= <ref refid="structserif_1_1discretization_1_1forms_1_1_value_components" kindref="compound">ValueComponents</ref><std::remove_cv_t<ValueT>>::value</initializer>
|
|
<briefdescription>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="150" column="26" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="150" bodyend="-1"/>
|
|
</memberdef>
|
|
</sectiondef>
|
|
<sectiondef kind="func">
|
|
<memberdef kind="function" id="namespaceserif_1_1discretization_1_1forms_1aa4daa912e2157d80dc731a6ce2349dfe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>typename ValueT</type>
|
|
</param>
|
|
</templateparamlist>
|
|
<type>decltype(auto)</type>
|
|
<definition>decltype(auto) serif::discretization::forms::component</definition>
|
|
<argsstring>(ValueT &value, int index)</argsstring>
|
|
<name>component</name>
|
|
<qualifiedname>serif::discretization::forms::component</qualifiedname>
|
|
<param>
|
|
<type>ValueT &</type>
|
|
<declname>value</declname>
|
|
</param>
|
|
<param>
|
|
<type>int</type>
|
|
<declname>index</declname>
|
|
</param>
|
|
<briefdescription>
|
|
<para>Read one entry of a scalar/vector/matrix value. This is a convenience function that allows you to easily access the components of a value type without having to explicitly use the <ref refid="structserif_1_1discretization_1_1forms_1_1_operand_result" kindref="compound">OperandResult</ref> struct. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><parameterlist kind="templateparam"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>ValueT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The value type to read from. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
<parameterlist kind="param"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>value</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The value to read from. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
<parameteritem>
|
|
<parameternamelist>
|
|
<parametername>index</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The index of the component to read. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
<simplesect kind="return"><para>The component of the value at the specified index. </para>
|
|
</simplesect>
|
|
</para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="171" column="14" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="171" bodyend="179"/>
|
|
</memberdef>
|
|
<memberdef kind="function" id="namespaceserif_1_1discretization_1_1forms_1a2adce8ae20f5f99c4302d9446cad1ebb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
|
|
<templateparamlist>
|
|
<param>
|
|
<type>typename OutputT</type>
|
|
</param>
|
|
<param>
|
|
<type>typename InputT</type>
|
|
</param>
|
|
</templateparamlist>
|
|
<type>double</type>
|
|
<definition>double serif::discretization::forms::derivative_component</definition>
|
|
<argsstring>(const PartialDerivative< OutputT, InputT > &value, int output, int input)</argsstring>
|
|
<name>derivative_component</name>
|
|
<qualifiedname>serif::discretization::forms::derivative_component</qualifiedname>
|
|
<param>
|
|
<type>const <ref refid="namespaceserif_1_1discretization_1_1forms_1a259c1476be2e462d8cd07c803434af69" kindref="member">PartialDerivative</ref>< OutputT, InputT > &</type>
|
|
<declname>value</declname>
|
|
</param>
|
|
<param>
|
|
<type>int</type>
|
|
<declname>output</declname>
|
|
</param>
|
|
<param>
|
|
<type>int</type>
|
|
<declname>input</declname>
|
|
</param>
|
|
<briefdescription>
|
|
<para>Read one entry of a scalar/vector/matrix local derivative. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><parameterlist kind="templateparam"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>OutputT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The output type of the partial derivative. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
<parameteritem>
|
|
<parameternamelist>
|
|
<parametername>InputT</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The input type of the partial derivative. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
<parameterlist kind="param"><parameteritem>
|
|
<parameternamelist>
|
|
<parametername>value</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The partial derivative to read from. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
<parameteritem>
|
|
<parameternamelist>
|
|
<parametername>output</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The index of the output component to read. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
<parameteritem>
|
|
<parameternamelist>
|
|
<parametername>input</parametername>
|
|
</parameternamelist>
|
|
<parameterdescription>
|
|
<para>The index of the input component to read. </para>
|
|
</parameterdescription>
|
|
</parameteritem>
|
|
</parameterlist>
|
|
<simplesect kind="return"><para>The component of the partial derivative at the specified indices. </para>
|
|
</simplesect>
|
|
</para>
|
|
</detaileddescription>
|
|
<inbodydescription>
|
|
</inbodydescription>
|
|
<location file="src/include/serif/discretization/forms/value.hpp" line="191" column="12" bodyfile="src/include/serif/discretization/forms/value.hpp" bodystart="191" bodyend="199"/>
|
|
</memberdef>
|
|
</sectiondef>
|
|
<briefdescription>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
</detaileddescription>
|
|
<location file="src/include/serif/discretization/forms/concept.hpp" line="11" column="1"/>
|
|
</compounddef>
|
|
</doxygen>
|