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)
554 lines
37 KiB
XML
554 lines
37 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="arithmetic_8hpp" kind="file" language="C++">
|
|
<compoundname>arithmetic.hpp</compoundname>
|
|
<includes local="no">cmath</includes>
|
|
<includes local="no">concepts</includes>
|
|
<includes local="no">stdexcept</includes>
|
|
<includes local="no">string_view</includes>
|
|
<includes local="no">tuple</includes>
|
|
<includes local="no">utility</includes>
|
|
<includes refid="equations_2concepts_8hpp" local="yes">serif/equations/concepts.hpp</includes>
|
|
<includes refid="errors_8hpp" local="yes">serif/utils/error/errors.hpp</includes>
|
|
<includedby refid="displacement__force_8hpp" local="yes">src/include/serif/equations/displacement_force.hpp</includedby>
|
|
<includedby refid="equations_8hpp" local="yes">src/include/serif/equations/equations.hpp</includedby>
|
|
<includedby refid="sum_8hpp" local="yes">src/include/serif/equations/sum.hpp</includedby>
|
|
<incdepgraph>
|
|
<node id="14">
|
|
<label>serif/dimensions/dimensions.hpp</label>
|
|
<link refid="dimensions_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="15" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="15">
|
|
<label>serif/dimensions/quantities.hpp</label>
|
|
<link refid="quantities_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="16" relation="include">
|
|
</childnode>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="17" relation="include">
|
|
</childnode>
|
|
<childnode refid="18" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="19">
|
|
<label>serif/discretization/blocks/base.hpp</label>
|
|
<link refid="base_8hpp"/>
|
|
</node>
|
|
<node id="12">
|
|
<label>serif/discretization/blocks/concepts.hpp</label>
|
|
<link refid="discretization_2blocks_2concepts_8hpp"/>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="13">
|
|
<label>serif/discretization/blocks/fields.hpp</label>
|
|
<link refid="fields_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="14" relation="include">
|
|
</childnode>
|
|
<childnode refid="19" relation="include">
|
|
</childnode>
|
|
<childnode refid="20" relation="include">
|
|
</childnode>
|
|
<childnode refid="25" relation="include">
|
|
</childnode>
|
|
<childnode refid="32" relation="include">
|
|
</childnode>
|
|
<childnode refid="33" relation="include">
|
|
</childnode>
|
|
<childnode refid="34" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="11">
|
|
<label>serif/discretization/blocks/traits.hpp</label>
|
|
<link refid="discretization_2blocks_2traits_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="12" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="25">
|
|
<label>serif/discretization/domain/concepts.hpp</label>
|
|
<link refid="discretization_2domain_2concepts_8hpp"/>
|
|
<childnode refid="26" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="27" relation="include">
|
|
</childnode>
|
|
<childnode refid="28" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="29" relation="include">
|
|
</childnode>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
<childnode refid="17" relation="include">
|
|
</childnode>
|
|
<childnode refid="31" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="32">
|
|
<label>serif/discretization/domain/physical_domains.hpp</label>
|
|
<link refid="physical__domains_8hpp"/>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
<childnode refid="25" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="30">
|
|
<label>serif/discretization/domain/types.hpp</label>
|
|
<link refid="types_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="36">
|
|
<label>serif/discretization/forms/operands.hpp</label>
|
|
<link refid="operands_8hpp"/>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="12" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="38">
|
|
<label>serif/discretization/forms/value.hpp</label>
|
|
<link refid="value_8hpp"/>
|
|
<childnode refid="28" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="11" relation="include">
|
|
</childnode>
|
|
<childnode refid="36" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="20">
|
|
<label>serif/discretization/functional_space/space.hpp</label>
|
|
<link refid="space_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="22" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="1">
|
|
<label>src/include/serif/equations/arithmetic.hpp</label>
|
|
<link refid="arithmetic_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="4" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="7" relation="include">
|
|
</childnode>
|
|
<childnode refid="8" relation="include">
|
|
</childnode>
|
|
<childnode refid="39" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="8">
|
|
<label>serif/equations/concepts.hpp</label>
|
|
<link refid="equations_2concepts_8hpp"/>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="9" relation="include">
|
|
</childnode>
|
|
<childnode refid="37" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="9">
|
|
<label>serif/equations/contributions.hpp</label>
|
|
<link refid="equations_2contributions_8hpp"/>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="7" relation="include">
|
|
</childnode>
|
|
<childnode refid="11" relation="include">
|
|
</childnode>
|
|
<childnode refid="36" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="37">
|
|
<label>serif/equations/point.hpp</label>
|
|
<link refid="point_8hpp"/>
|
|
<childnode refid="28" relation="include">
|
|
</childnode>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="26" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="38" relation="include">
|
|
</childnode>
|
|
<childnode refid="33" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="22">
|
|
<label>serif/meta/enums.hpp</label>
|
|
<link refid="enums_8hpp"/>
|
|
<childnode refid="23" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="24" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="34">
|
|
<label>serif/meta/names.hpp</label>
|
|
<link refid="names_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="35" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="50">
|
|
<label>serif/utils/error/codes.hpp</label>
|
|
<link refid="codes_8hpp"/>
|
|
<childnode refid="42" relation="include">
|
|
</childnode>
|
|
<childnode refid="22" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="39">
|
|
<label>serif/utils/error/errors.hpp</label>
|
|
<link refid="errors_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="41" relation="include">
|
|
</childnode>
|
|
<childnode refid="42" relation="include">
|
|
</childnode>
|
|
<childnode refid="43" relation="include">
|
|
</childnode>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
<childnode refid="45" relation="include">
|
|
</childnode>
|
|
<childnode refid="48" relation="include">
|
|
</childnode>
|
|
<childnode refid="50" relation="include">
|
|
</childnode>
|
|
<childnode refid="51" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="48">
|
|
<label>serif/utils/misc/concepts/exceptions.hpp</label>
|
|
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
|
|
<childnode refid="49" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="41" relation="include">
|
|
</childnode>
|
|
<childnode refid="18" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="18">
|
|
<label>serif/utils/misc/concepts/numeric.hpp</label>
|
|
<link refid="numeric_8hpp"/>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="17">
|
|
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
|
|
<link refid="cleaning_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="31">
|
|
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
|
|
<link refid="variadic__cleaning_8hpp"/>
|
|
<childnode refid="26" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="45">
|
|
<label>serif/utils/misc/terminal/colors.hpp</label>
|
|
<link refid="colors_8hpp"/>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="46" relation="include">
|
|
</childnode>
|
|
<childnode refid="7" relation="include">
|
|
</childnode>
|
|
<childnode refid="47" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="51">
|
|
<label>serif/utils/types/strings.hpp</label>
|
|
<link refid="types_2strings_8hpp"/>
|
|
<childnode refid="43" relation="include">
|
|
</childnode>
|
|
<childnode refid="52" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="33">
|
|
<label>serif/utils/types/type_list.hpp</label>
|
|
<link refid="type__list_8hpp"/>
|
|
</node>
|
|
<node id="43">
|
|
<label>algorithm</label>
|
|
</node>
|
|
<node id="28">
|
|
<label>array</label>
|
|
</node>
|
|
<node id="2">
|
|
<label>cmath</label>
|
|
</node>
|
|
<node id="16">
|
|
<label>compare</label>
|
|
</node>
|
|
<node id="3">
|
|
<label>concepts</label>
|
|
</node>
|
|
<node id="26">
|
|
<label>cstddef</label>
|
|
</node>
|
|
<node id="42">
|
|
<label>cstdint</label>
|
|
</node>
|
|
<node id="40">
|
|
<label>cstdio</label>
|
|
</node>
|
|
<node id="46">
|
|
<label>cstdlib</label>
|
|
</node>
|
|
<node id="49">
|
|
<label>exception</label>
|
|
</node>
|
|
<node id="21">
|
|
<label>format</label>
|
|
</node>
|
|
<node id="52">
|
|
<label>iostream</label>
|
|
</node>
|
|
<node id="24">
|
|
<label>magic_enum/magic_enum_all.hpp</label>
|
|
</node>
|
|
<node id="35">
|
|
<label>nameof.hpp</label>
|
|
</node>
|
|
<node id="29">
|
|
<label>numeric</label>
|
|
</node>
|
|
<node id="27">
|
|
<label>span</label>
|
|
</node>
|
|
<node id="4">
|
|
<label>stdexcept</label>
|
|
</node>
|
|
<node id="41">
|
|
<label>string</label>
|
|
</node>
|
|
<node id="5">
|
|
<label>string_view</label>
|
|
</node>
|
|
<node id="6">
|
|
<label>tuple</label>
|
|
</node>
|
|
<node id="10">
|
|
<label>type_traits</label>
|
|
</node>
|
|
<node id="47">
|
|
<label>unistd.h</label>
|
|
</node>
|
|
<node id="23">
|
|
<label>unordered_map</label>
|
|
</node>
|
|
<node id="7">
|
|
<label>utility</label>
|
|
</node>
|
|
<node id="44">
|
|
<label>version</label>
|
|
</node>
|
|
</incdepgraph>
|
|
<invincdepgraph>
|
|
<node id="3">
|
|
<label>src/compile_time_checks/serif/model/execution_validation.cpp</label>
|
|
<link refid="execution__validation_8cpp"/>
|
|
</node>
|
|
<node id="4">
|
|
<label>src/compile_time_checks/serif/model/normalization.cpp</label>
|
|
<link refid="normalization_8cpp"/>
|
|
</node>
|
|
<node id="5">
|
|
<label>src/compile_time_checks/serif/operators/plan.cpp</label>
|
|
<link refid="operators_2plan_8cpp"/>
|
|
</node>
|
|
<node id="1">
|
|
<label>src/include/serif/equations/arithmetic.hpp</label>
|
|
<link refid="arithmetic_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="7" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="2">
|
|
<label>src/include/serif/equations/displacement_force.hpp</label>
|
|
<link refid="displacement__force_8hpp"/>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="4" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="6">
|
|
<label>src/include/serif/equations/equations.hpp</label>
|
|
<link refid="equations_8hpp"/>
|
|
</node>
|
|
<node id="7">
|
|
<label>src/include/serif/equations/sum.hpp</label>
|
|
<link refid="sum_8hpp"/>
|
|
</node>
|
|
</invincdepgraph>
|
|
<innerclass refid="classserif_1_1equations_1_1_equation_scale" prot="public">serif::equations::EquationScale</innerclass>
|
|
<innerclass refid="classserif_1_1equations_1_1_equation_sum" prot="public">serif::equations::EquationSum</innerclass>
|
|
<innerclass refid="classserif_1_1equations_1_1_equation_difference" prot="public">serif::equations::EquationDifference</innerclass>
|
|
<innernamespace refid="namespaceserif">serif</innernamespace>
|
|
<innernamespace refid="namespaceserif_1_1equations">serif::equations</innernamespace>
|
|
<briefdescription>
|
|
<para>File containing the EquationScale and EquationSum templates, which allow for scaling and summing equations. </para>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><simplesect kind="author"><para>Emily M. Boudreaux</para>
|
|
</simplesect>
|
|
</para>
|
|
<para>The astute observer will notice that none of the code in this file or indeed in in any part of the equations module actually implements summation or scaled addition more generally. Rather, the code to manage that is implemented in the operator/backend/mfem module. Effectively these templates are compile time tags telling that system how to combine weak contributions. The reason for this comes down to we dont really want to sum at the point wise level; rather, we generally want to sum already integrated contributions. Since equations, by design, do not know any details about the global system they are unable to manage this themselves.</para>
|
|
<para>There is another, as yet unexplored case, where we introduce some point-wise summation equation. This could be implemented in a much more local fashion and would probably be easier to trace; however, it would be semantically different in its meaning. </para>
|
|
</detaileddescription>
|
|
<programlisting>
|
|
<codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="2"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="18"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="19"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><cmath></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="20"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><concepts></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="21"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><stdexcept></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="22"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><string_view></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="23"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><tuple></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="24"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><utility></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="25"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="equations_2concepts_8hpp" kindref="compound">serif/equations/concepts.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="errors_8hpp" kindref="compound">serif/utils/error/errors.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="28"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="29"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations" kindref="compound">serif::equations</ref><sp/>{</highlight></codeline>
|
|
<codeline lineno="30"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><Equation<sp/>EquationT></highlight></codeline>
|
|
<codeline lineno="41" refid="classserif_1_1equations_1_1_equation_scale" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_scale_1a7b292b9840bea2aef28ddf89ac4500d7" kindref="member">EquationScale</ref><sp/>final<sp/>{</highlight></codeline>
|
|
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_scale_1a23b430a4a619cd130c77798845f7bcbd" kindref="member">Test</ref><sp/>=<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>EquationT::Test;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
|
|
<codeline lineno="44"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>std::string_view<sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a48568645865c3ef778037ea98d7646ac" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">"scaled<sp/>equation"</highlight><highlight class="normal">;<sp/></highlight></codeline>
|
|
<codeline lineno="46"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a7b292b9840bea2aef28ddf89ac4500d7" kindref="member">EquationScale</ref>(</highlight></codeline>
|
|
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>EquationT<sp/>equation,</highlight></codeline>
|
|
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a94f8f3ec20b0e52d8225cad2edcc47c7" kindref="member">coefficient</ref></highlight></codeline>
|
|
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>:</highlight></codeline>
|
|
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a0b79460d5decec4a17c0ac81d1581c28" kindref="member">m_equation</ref>(std::move(equation)),</highlight></codeline>
|
|
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1abeace9eb6cb17ea29dfef4ffb371f52a" kindref="member">m_coefficient</ref>(<ref refid="classserif_1_1equations_1_1_equation_scale_1a94f8f3ec20b0e52d8225cad2edcc47c7" kindref="member">coefficient</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/>namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1utils_1_1errors" kindref="compound">utils::errors</ref>;</highlight></codeline>
|
|
<codeline lineno="64"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::NON_FINITE_VALUE_ERROR,<sp/>std::invalid_argument>(std::isfinite(<ref refid="classserif_1_1equations_1_1_equation_scale_1a94f8f3ec20b0e52d8225cad2edcc47c7" kindref="member">coefficient</ref>),<sp/></highlight><highlight class="stringliteral">"An<sp/>equation<sp/>coefficient<sp/>must<sp/>be<sp/>finite."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="66"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="68"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a98e752b768f90f6dc5a857842acc0211" kindref="member">contributions</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
|
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::tie(<ref refid="classserif_1_1equations_1_1_equation_scale_1a0b79460d5decec4a17c0ac81d1581c28" kindref="member">m_equation</ref>);</highlight></codeline>
|
|
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="77"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a94f8f3ec20b0e52d8225cad2edcc47c7" kindref="member">coefficient</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
|
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1abeace9eb6cb17ea29dfef4ffb371f52a" kindref="member">m_coefficient</ref>;</highlight></codeline>
|
|
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="86"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>EquationT<sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1a0b79460d5decec4a17c0ac81d1581c28" kindref="member">m_equation</ref>;<sp/><sp/><sp/></highlight></codeline>
|
|
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_scale_1abeace9eb6cb17ea29dfef4ffb371f52a" kindref="member">m_coefficient</ref>;<sp/><sp/><sp/></highlight></codeline>
|
|
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
|
<codeline lineno="91"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><<ref refid="conceptserif_1_1equations_1_1_equation" kindref="compound">Equation</ref><sp/>FirstT,<sp/><ref refid="conceptserif_1_1equations_1_1_equation" kindref="compound">Equation</ref>...<sp/>RestTs></highlight></codeline>
|
|
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/>(std::same_as<typename<sp/>FirstT::Test,<sp/>typename<sp/>RestTs::Test><sp/>&&<sp/>...)</highlight></codeline>
|
|
<codeline lineno="111" refid="classserif_1_1equations_1_1_equation_sum" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_sum_1a432eae6302032684381459f2dbaa7b7e" kindref="member">EquationSum</ref><sp/>final<sp/>{</highlight></codeline>
|
|
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_sum_1ad71e43f85758b239d3b360e411511b1c" kindref="member">Test</ref><sp/>=<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>FirstT::Test;<sp/><sp/></highlight></codeline>
|
|
<codeline lineno="114"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>std::string_view<sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a6e9cd50a59e263d916781929208a77a4" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">"equation<sp/>sum"</highlight><highlight class="normal">;<sp/></highlight></codeline>
|
|
<codeline lineno="116"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a432eae6302032684381459f2dbaa7b7e" kindref="member">EquationSum</ref>(</highlight></codeline>
|
|
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>FirstT<sp/>first,</highlight></codeline>
|
|
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>RestTs...<sp/>rest</highlight></codeline>
|
|
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>:</highlight></codeline>
|
|
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a96550772c094344d84f5d0e26fc9d879" kindref="member">m_equations</ref>(std::move(first),<sp/>std::move(rest)...)<sp/>{}</highlight></codeline>
|
|
<codeline lineno="130"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&<sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a3bd8a9d8173ad4d5ee1f527426549289" kindref="member">contributions</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
|
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a96550772c094344d84f5d0e26fc9d879" kindref="member">m_equations</ref>;</highlight></codeline>
|
|
<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="139"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::tuple<FirstT,<sp/>RestTs...><sp/><ref refid="classserif_1_1equations_1_1_equation_sum_1a96550772c094344d84f5d0e26fc9d879" kindref="member">m_equations</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
|
<codeline lineno="143"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><Equation<sp/>LeftT,<sp/>Equation<sp/>RightT></highlight></codeline>
|
|
<codeline lineno="161"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/>std::same_as<typename<sp/>LeftT::Test,<sp/>typename<sp/>RightT::Test></highlight></codeline>
|
|
<codeline lineno="162" refid="classserif_1_1equations_1_1_equation_difference" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_difference_1aca0411d188be6f8d8fe21854c18650aa" kindref="member">EquationDifference</ref><sp/>final<sp/>{</highlight></codeline>
|
|
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1equations_1_1_equation_difference_1a9fb29442088c72b118afc63922adc7fc" kindref="member">Test</ref><sp/>=<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>LeftT::Test;<sp/></highlight></codeline>
|
|
<codeline lineno="165"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>std::string_view<sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1abcdd6748565e31ce424c67c6bd4c986d" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">"equation<sp/>difference"</highlight><highlight class="normal">;<sp/></highlight></codeline>
|
|
<codeline lineno="167"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1aca0411d188be6f8d8fe21854c18650aa" kindref="member">EquationDifference</ref>(</highlight></codeline>
|
|
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>LeftT<sp/>left,</highlight></codeline>
|
|
<codeline lineno="176"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>RightT<sp/>right</highlight></codeline>
|
|
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>:</highlight></codeline>
|
|
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1a53326f6cf6e128808dff2745da1a7ca1" kindref="member">m_equation</ref>(std::move(left),<sp/><ref refid="classserif_1_1equations_1_1_equation_scale" kindref="compound">EquationScale</ref>{std::move(right),<sp/>-1.0})<sp/>{}</highlight></codeline>
|
|
<codeline lineno="179"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&<sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1af4e4c207733a0c0e6a4e101c5ac60c1b" kindref="member">contributions</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
|
<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1a53326f6cf6e128808dff2745da1a7ca1" kindref="member">m_equation</ref>.contributions();</highlight></codeline>
|
|
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="188"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="189"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1equations_1_1_equation_sum" kindref="compound">EquationSum<LeftT, EquationScale<RightT></ref>><sp/><ref refid="classserif_1_1equations_1_1_equation_difference_1a53326f6cf6e128808dff2745da1a7ca1" kindref="member">m_equation</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
|
<codeline lineno="192"><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>serif::equations</highlight><highlight class="normal"></highlight></codeline>
|
|
</programlisting>
|
|
<location file="src/include/serif/equations/arithmetic.hpp"/>
|
|
</compounddef>
|
|
</doxygen>
|