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

594 lines
57 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="mixed__gravity_8hpp" kind="file" language="C++">
<compoundname>mixed_gravity.hpp</compoundname>
<includes local="no">cmath</includes>
<includes local="no">tuple</includes>
<includes local="no">string_view</includes>
<includes local="no">stdexcept</includes>
<includes refid="equations_2contributions_8hpp" local="yes">serif/equations/contributions.hpp</includes>
<includes refid="point_8hpp" local="yes">serif/equations/point.hpp</includes>
<includes refid="errors_8hpp" local="yes">serif/utils/error/errors.hpp</includes>
<includedby refid="execution__validation_8cpp" local="yes">src/compile_time_checks/serif/model/execution_validation.cpp</includedby>
<includedby refid="normalization_8cpp" local="yes">src/compile_time_checks/serif/model/normalization.cpp</includedby>
<includedby refid="coordinate__identity__meanfield_8cpp" local="yes">src/compile_time_checks/serif/operators/coordinate_identity_meanfield.cpp</includedby>
<includedby refid="operators_2plan_8cpp" local="yes">src/compile_time_checks/serif/operators/plan.cpp</includedby>
<includedby refid="solver_2normalization_2plan_8cpp" local="yes">src/compile_time_checks/serif/solver/normalization/plan.cpp</includedby>
<includedby refid="equations_8hpp" local="yes">src/include/serif/equations/equations.hpp</includedby>
<incdepgraph>
<node id="12">
<label>serif/dimensions/dimensions.hpp</label>
<link refid="dimensions_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
</node>
<node id="13">
<label>serif/dimensions/quantities.hpp</label>
<link refid="quantities_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="18">
<label>serif/discretization/blocks/base.hpp</label>
<link refid="base_8hpp"/>
</node>
<node id="10">
<label>serif/discretization/blocks/concepts.hpp</label>
<link refid="discretization_2blocks_2concepts_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="11">
<label>serif/discretization/blocks/fields.hpp</label>
<link refid="fields_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
<childnode refid="32" relation="include">
</childnode>
<childnode refid="33" relation="include">
</childnode>
</node>
<node id="9">
<label>serif/discretization/blocks/traits.hpp</label>
<link refid="discretization_2blocks_2traits_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="24">
<label>serif/discretization/domain/concepts.hpp</label>
<link refid="discretization_2domain_2concepts_8hpp"/>
<childnode refid="25" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="31">
<label>serif/discretization/domain/physical_domains.hpp</label>
<link refid="physical__domains_8hpp"/>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
</node>
<node id="29">
<label>serif/discretization/domain/types.hpp</label>
<link refid="types_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="35">
<label>serif/discretization/forms/operands.hpp</label>
<link refid="operands_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="37">
<label>serif/discretization/forms/value.hpp</label>
<link refid="value_8hpp"/>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
</node>
<node id="19">
<label>serif/discretization/functional_space/space.hpp</label>
<link refid="space_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="6">
<label>serif/equations/contributions.hpp</label>
<link refid="equations_2contributions_8hpp"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
</node>
<node id="1">
<label>src/include/serif/equations/mixed_gravity.hpp</label>
<link refid="mixed__gravity_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="36" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
</node>
<node id="36">
<label>serif/equations/point.hpp</label>
<link refid="point_8hpp"/>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="25" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
<childnode refid="32" relation="include">
</childnode>
</node>
<node id="21">
<label>serif/meta/enums.hpp</label>
<link refid="enums_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="33">
<label>serif/meta/names.hpp</label>
<link refid="names_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="34" relation="include">
</childnode>
</node>
<node id="49">
<label>serif/utils/error/codes.hpp</label>
<link refid="codes_8hpp"/>
<childnode refid="41" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="38">
<label>serif/utils/error/errors.hpp</label>
<link refid="errors_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="39" 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="47" relation="include">
</childnode>
<childnode refid="49" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
</node>
<node id="47">
<label>serif/utils/misc/concepts/exceptions.hpp</label>
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="17">
<label>serif/utils/misc/concepts/numeric.hpp</label>
<link refid="numeric_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
</node>
<node id="16">
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
<link refid="cleaning_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
</node>
<node id="30">
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
<link refid="variadic__cleaning_8hpp"/>
<childnode refid="25" relation="include">
</childnode>
</node>
<node id="44">
<label>serif/utils/misc/terminal/colors.hpp</label>
<link refid="colors_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="50">
<label>serif/utils/types/strings.hpp</label>
<link refid="types_2strings_8hpp"/>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="32">
<label>serif/utils/types/type_list.hpp</label>
<link refid="type__list_8hpp"/>
</node>
<node id="42">
<label>algorithm</label>
</node>
<node id="27">
<label>array</label>
</node>
<node id="2">
<label>cmath</label>
</node>
<node id="14">
<label>compare</label>
</node>
<node id="15">
<label>concepts</label>
</node>
<node id="25">
<label>cstddef</label>
</node>
<node id="41">
<label>cstdint</label>
</node>
<node id="39">
<label>cstdio</label>
</node>
<node id="45">
<label>cstdlib</label>
</node>
<node id="48">
<label>exception</label>
</node>
<node id="20">
<label>format</label>
</node>
<node id="51">
<label>iostream</label>
</node>
<node id="23">
<label>magic_enum/magic_enum_all.hpp</label>
</node>
<node id="34">
<label>nameof.hpp</label>
</node>
<node id="28">
<label>numeric</label>
</node>
<node id="26">
<label>span</label>
</node>
<node id="5">
<label>stdexcept</label>
</node>
<node id="40">
<label>string</label>
</node>
<node id="4">
<label>string_view</label>
</node>
<node id="3">
<label>tuple</label>
</node>
<node id="7">
<label>type_traits</label>
</node>
<node id="46">
<label>unistd.h</label>
</node>
<node id="22">
<label>unordered_map</label>
</node>
<node id="8">
<label>utility</label>
</node>
<node id="43">
<label>version</label>
</node>
</incdepgraph>
<invincdepgraph>
<node id="2">
<label>src/compile_time_checks/serif/model/execution_validation.cpp</label>
<link refid="execution__validation_8cpp"/>
</node>
<node id="3">
<label>src/compile_time_checks/serif/model/normalization.cpp</label>
<link refid="normalization_8cpp"/>
</node>
<node id="4">
<label>src/compile_time_checks/serif/operators/coordinate_identity_meanfield.cpp</label>
<link refid="coordinate__identity__meanfield_8cpp"/>
</node>
<node id="5">
<label>src/compile_time_checks/serif/operators/plan.cpp</label>
<link refid="operators_2plan_8cpp"/>
</node>
<node id="6">
<label>src/compile_time_checks/serif/solver/normalization/plan.cpp</label>
<link refid="solver_2normalization_2plan_8cpp"/>
</node>
<node id="7">
<label>src/include/serif/equations/equations.hpp</label>
<link refid="equations_8hpp"/>
</node>
<node id="1">
<label>src/include/serif/equations/mixed_gravity.hpp</label>
<link refid="mixed__gravity_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>
</node>
</invincdepgraph>
<innerclass refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value" prot="public">serif::equations::gravity_contributions::GradientValue</innerclass>
<innerclass refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value" prot="public">serif::equations::gravity_contributions::PotentialValue</innerclass>
<innerclass refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence" prot="public">serif::equations::gravity_contributions::GradientDivergence</innerclass>
<innerclass refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source" prot="public">serif::equations::gravity_contributions::DensitySource</innerclass>
<innerclass refid="structserif_1_1equations_1_1_gravity_gradient_relation" prot="public">serif::equations::GravityGradientRelation</innerclass>
<innerclass refid="classserif_1_1equations_1_1_poisson_balance" prot="public">serif::equations::PoissonBalance</innerclass>
<innernamespace refid="namespaceserif">serif</innernamespace>
<innernamespace refid="namespaceserif_1_1equations">serif::equations</innernamespace>
<innernamespace refid="namespaceserif_1_1equations_1_1gravity__contributions">serif::equations::gravity_contributions</innernamespace>
<briefdescription>
<para>File containing the mixed gravity equation and its contributions. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Emily M. Boudreaux</para>
</simplesect>
</para>
<para>In SERiF we used a mixed formulation when solving for the gravitational potential and gravitational field. This is a pragmatic choice to try to avoid loss of accuracy when differentiating the potential to get the field.</para>
<para>More specifically, if we were to just solve for the potential and then differentiate to get the field we would lose one order of accuracy in the field when compared to the potential. Due to the required accuracy in virialization (which is fundamentally related to the gravitational field) we cannot afford to loose that order and maintain the low-ish resolution mesh we use. I was already solving for potential when I went this route so I wanted to keep it. I suppose there is some world where you could solve for the field and then integrate it to get the potential; however, I have not thought deeply about the effects that would have on either the accuracy or run-time performance.</para>
<para>As it stands we solve for the potential and the field separately but simultaneously and we weakly constrain them to agree. </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="24"><highlight class="normal"></highlight></codeline>
<codeline lineno="25"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;cmath&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;tuple&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;string_view&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;stdexcept&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="equations_2contributions_8hpp" kindref="compound">serif/equations/contributions.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="point_8hpp" kindref="compound">serif/equations/point.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="errors_8hpp" kindref="compound">serif/utils/error/errors.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal"></highlight></codeline>
<codeline lineno="34"><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="35"><highlight class="normal"></highlight></codeline>
<codeline lineno="36"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>TODO:<sp/>I<sp/>know<sp/>that<sp/>these<sp/>deeply<sp/>nested<sp/>namespaces<sp/>are<sp/>really<sp/>a<sp/>C++<sp/>no-no<sp/>(or<sp/>as<sp/>we<sp/>in<sp/>the<sp/>biz<sp/>call<sp/>them<sp/>an<sp/>anit-pattern).<sp/>I<sp/>think</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>my<sp/>background<sp/>as<sp/>a<sp/>python<sp/>dev<sp/>makes<sp/>me<sp/>like<sp/>them,<sp/>but<sp/>perhaps<sp/>at<sp/>some<sp/>point<sp/>we<sp/>should<sp/>go<sp/>through<sp/>and<sp/>flatten<sp/>this<sp/>out<sp/>so<sp/>we</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>avoid<sp/>having<sp/>these<sp/>long<sp/>alias<sp/>definitions<sp/>at<sp/>the<sp/>starts<sp/>of<sp/>classes<sp/>and<sp/>namespaces<sp/>(which<sp/>is<sp/>also<sp/>bad<sp/>in<sp/>a<sp/>header<sp/>to<sp/>begin<sp/>with)?</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Something<sp/>to<sp/>think<sp/>about</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="40"><highlight class="normal"></highlight></codeline>
<codeline lineno="41" refid="namespaceserif_1_1equations_1_1gravity__contributions" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions" kindref="compound">gravity_contributions</ref><sp/>{</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a837a609a8d8541408685b9932bd7878e" kindref="member">Gradient</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1gravity_1_1gradient" kindref="compound">discretization::blocks::gravity::gradient</ref>;</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="namespaceserif_1_1equations_1_1gravity__contributions_1a98dd4af361f2042f0e7987ce2a5c9e03" kindref="member">Potential</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1gravity_1_1potential" kindref="compound">discretization::blocks::gravity::potential</ref>;</highlight></codeline>
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a5b07eaa35e09bf8db7e989ffc7dce8f8" kindref="member">Density</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1density_1_1mass" kindref="compound">discretization::blocks::density::mass</ref>;</highlight></codeline>
<codeline lineno="45"><highlight class="normal"></highlight></codeline>
<codeline lineno="46"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a699f80ebbb549a6a44ae1c6359d1b30c" kindref="member">Value</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1forms_1_1_operation_1_1_value" kindref="compound">discretization::forms::Operation::Value</ref>;</highlight></codeline>
<codeline lineno="47"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a60f97be62f8d8be1888413a64a430e17" kindref="member">Divergence</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1forms_1_1_operation_1_1_divergence" kindref="compound">discretization::forms::Operation::Divergence</ref>;</highlight></codeline>
<codeline lineno="48"><highlight class="normal"></highlight></codeline>
<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Term,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Operation<sp/>=<sp/>Value&gt;</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1forms_1_1_operand" kindref="compound">discretization::forms::Operand&lt;Term, Operation&gt;</ref>;</highlight></codeline>
<codeline lineno="51"><highlight class="normal"></highlight></codeline>
<codeline lineno="61" refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value" kindref="compound">GradientValue</ref><sp/>:<sp/><ref refid="structserif_1_1equations_1_1_contribution" kindref="compound">Contribution</ref>&lt;Operand&lt;Gradient&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value_1ad43f2f18c96f5a59fe20eb9c363e7b38" kindref="member">Operands</ref><sp/>=<sp/><ref refid="structserif_1_1utils_1_1types_1_1_type_list" kindref="compound">utils::types::TypeList&lt;Operand&lt;Gradient&gt;</ref>&gt;;<sp/></highlight></codeline>
<codeline lineno="63"><highlight class="normal"></highlight></codeline>
<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands, discretization::forms::VectorValue&gt;</ref><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value_1a04fe7421b1410e88701ebc9683d2d999" kindref="member">evaluate</ref>(</highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_equation_point" kindref="compound">EquationPoint&lt;Operands&gt;</ref>&amp;<sp/>point</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>{</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands, discretization::forms::VectorValue&gt;</ref><sp/>result;</highlight></codeline>
<codeline lineno="76"><highlight class="normal"></highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a9bc0792fca97f037ddede6adacf0f422" kindref="member">residual</ref><sp/>=<sp/>point.<ref refid="structserif_1_1equations_1_1_equation_point_1a9a3734ccf2487dfccfc2613917f7d4e8" kindref="member">fields</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a837a609a8d8541408685b9932bd7878e" kindref="member">Gradient</ref>&gt;();</highlight></codeline>
<codeline lineno="78"><highlight class="normal"></highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>axis<sp/>=<sp/>0;<sp/>axis<sp/>&lt;<sp/>3;<sp/>++axis)<sp/>{</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a67c6f514532b7eae1456c4f70d964878" kindref="member">field_derivatives</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a837a609a8d8541408685b9932bd7878e" kindref="member">Gradient</ref>&gt;()[axis][axis]<sp/>=<sp/>1.0;</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="85"><highlight class="normal"></highlight></codeline>
<codeline lineno="93"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value_1a09ba9632b5dab4843df1376602e69b34" kindref="member">additional_order</ref>(<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Gradient&gt;</ref><sp/></highlight><highlight class="comment">/*operand-type*/</highlight><highlight class="normal">,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/></highlight><highlight class="comment">/*position-order*/</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="97"><highlight class="normal"></highlight></codeline>
<codeline lineno="107" refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value" kindref="compound">PotentialValue</ref><sp/>:<sp/><ref refid="structserif_1_1equations_1_1_contribution" kindref="compound">Contribution</ref>&lt;Operand&lt;Gradient,<sp/>Divergence&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value_1a92114c0762531f8bb9618cf1bf992d5e" kindref="member">Operands</ref><sp/>=<sp/><ref refid="structserif_1_1utils_1_1types_1_1_type_list" kindref="compound">utils::types::TypeList&lt;Operand&lt;Potential&gt;</ref>&gt;;<sp/></highlight></codeline>
<codeline lineno="109"><highlight class="normal"></highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value_1a6328b2251c9e14c39ad36852f22f74ba" kindref="member">evaluate</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_equation_point" kindref="compound">EquationPoint&lt;Operands&gt;</ref>&amp;<sp/>point)<sp/>{</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/>result;</highlight></codeline>
<codeline lineno="125"><highlight class="normal"></highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a9bc0792fca97f037ddede6adacf0f422" kindref="member">residual</ref><sp/>=<sp/>point.<ref refid="structserif_1_1equations_1_1_equation_point_1a9a3734ccf2487dfccfc2613917f7d4e8" kindref="member">fields</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a98dd4af361f2042f0e7987ce2a5c9e03" kindref="member">Potential</ref>&gt;();</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a67c6f514532b7eae1456c4f70d964878" kindref="member">field_derivatives</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a98dd4af361f2042f0e7987ce2a5c9e03" kindref="member">Potential</ref>&gt;()<sp/>=<sp/>1.0;</highlight></codeline>
<codeline lineno="128"><highlight class="normal"></highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="131"><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value_1a3e33014c358781b81de2dbe135190f6d" kindref="member">additional_order</ref>(<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Potential&gt;</ref><sp/></highlight><highlight class="comment">/*operand-type*/</highlight><highlight class="normal">,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/></highlight><highlight class="comment">/*position-order*/</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="144"><highlight class="normal"></highlight></codeline>
<codeline lineno="154" refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence" kindref="compound">GradientDivergence</ref><sp/>:<sp/><ref refid="structserif_1_1equations_1_1_contribution" kindref="compound">Contribution</ref>&lt;Operand&lt;Potential&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence_1a84a16399311c657741e2708194103770" kindref="member">Operands</ref><sp/>=<sp/><ref refid="structserif_1_1utils_1_1types_1_1_type_list" kindref="compound">utils::types::TypeList&lt;Operand&lt;Gradient, Divergence&gt;</ref>&gt;;</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence_1aa8d135c6e0cd03ab3bd47be28e46c6aa" kindref="member">evaluate</ref>(</highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_equation_point" kindref="compound">EquationPoint&lt;Operands&gt;</ref>&amp;<sp/>point</highlight></codeline>
<codeline lineno="159"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="160"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/>result;</highlight></codeline>
<codeline lineno="161"><highlight class="normal"></highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a9bc0792fca97f037ddede6adacf0f422" kindref="member">residual</ref><sp/>=<sp/>point.<ref refid="structserif_1_1equations_1_1_equation_point_1a9a3734ccf2487dfccfc2613917f7d4e8" kindref="member">fields</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Gradient, Divergence&gt;</ref>&gt;();</highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a67c6f514532b7eae1456c4f70d964878" kindref="member">field_derivatives</ref>.get&lt;<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Gradient, Divergence&gt;</ref>&gt;()<sp/>=<sp/>1.0;</highlight></codeline>
<codeline lineno="164"><highlight class="normal"></highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="167"><highlight class="normal"></highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence_1a413bfffebe3b31b063369dcec06a7c8f" kindref="member">additional_order</ref>(<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Gradient, Divergence&gt;</ref>,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="172"><highlight class="normal"></highlight></codeline>
<codeline lineno="173" refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1a65b084e13a89a8805953944622e567a5" kindref="member">DensitySource</ref><sp/>:<sp/><ref refid="structserif_1_1equations_1_1_contribution" kindref="compound">Contribution</ref>&lt;Operand&lt;Potential&gt;,<sp/>discretization::domain::StellarDomains&gt;<sp/>{</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1a854e690c1f699f6caa4e67a25f7202af" kindref="member">Operands</ref><sp/>=<sp/><ref refid="structserif_1_1utils_1_1types_1_1_type_list" kindref="compound">utils::types::TypeList&lt;Operand&lt;Density&gt;</ref>&gt;;</highlight></codeline>
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1ac8ceec1b4c549cba2ba6d9c79d45379b" kindref="member">four_pi_G</ref>;</highlight></codeline>
<codeline lineno="176"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1a65b084e13a89a8805953944622e567a5" kindref="member">DensitySource</ref>(</highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>coefficient)<sp/>:<sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1ac8ceec1b4c549cba2ba6d9c79d45379b" kindref="member">four_pi_G</ref>(coefficient)<sp/>{}</highlight></codeline>
<codeline lineno="177"><highlight class="normal"></highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1ad5d069801e4a495b5f6f579bcc90cd12" kindref="member">evaluate</ref>(</highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_equation_point" kindref="compound">EquationPoint&lt;Operands&gt;</ref>&amp;<sp/>point</highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1equations_1_1_point_linearization" kindref="compound">PointLinearization&lt;Operands&gt;</ref><sp/>result;</highlight></codeline>
<codeline lineno="183"><highlight class="normal"></highlight></codeline>
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a9bc0792fca97f037ddede6adacf0f422" kindref="member">residual</ref><sp/>=<sp/>-<ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1ac8ceec1b4c549cba2ba6d9c79d45379b" kindref="member">four_pi_G</ref><sp/>*<sp/>point.<ref refid="structserif_1_1equations_1_1_equation_point_1a9a3734ccf2487dfccfc2613917f7d4e8" kindref="member">fields</ref>.template<sp/>get&lt;Density&gt;();</highlight></codeline>
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1equations_1_1_point_linearization_1a67c6f514532b7eae1456c4f70d964878" kindref="member">field_derivatives</ref>.template<sp/>get&lt;Density&gt;()<sp/>=<sp/>-<ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1ac8ceec1b4c549cba2ba6d9c79d45379b" kindref="member">four_pi_G</ref>;</highlight></codeline>
<codeline lineno="186"><highlight class="normal"></highlight></codeline>
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
<codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="189"><highlight class="normal"></highlight></codeline>
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source_1a430d88872ca6d254b2c57e93932d0ab1" kindref="member">additional_order</ref>(<ref refid="namespaceserif_1_1equations_1_1gravity__contributions_1a9ea47ed28b5226ebdaca33078479e174" kindref="member">Operand&lt;Density&gt;</ref>,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>gravity_contributions</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"></highlight></codeline>
<codeline lineno="196" refid="structserif_1_1equations_1_1_gravity_gradient_relation" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1_gravity_gradient_relation" kindref="compound">GravityGradientRelation</ref><sp/>{</highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1_gravity_gradient_relation_1a4520d38cfaac145e3197843eb278e205" kindref="member">Test</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1gravity_1_1gradient" kindref="compound">discretization::blocks::gravity::gradient</ref>;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1equations_1_1_gravity_gradient_relation_1a6f95566df7c7f01183b368b5e99469bb" kindref="member">ResidualQuantity</ref><sp/>=<sp/><ref refid="structserif_1_1dimensions_1_1_acceleration" kindref="compound">dimensions::Acceleration</ref>;</highlight></codeline>
<codeline lineno="199"><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="structserif_1_1equations_1_1_gravity_gradient_relation_1a60c35dfada57161d7d4f5896e09a491d" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;gravity-gradient<sp/>relation&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="200"><highlight class="normal"></highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1equations_1_1_gravity_gradient_relation_1aec998a64b7ecb93e3c18345226c51fc3" kindref="member">contributions</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="202"><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::tuple{<ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_value" kindref="compound">gravity_contributions::GradientValue</ref>{},<sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_potential_value" kindref="compound">gravity_contributions::PotentialValue</ref>{}};</highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="204"><highlight class="normal"></highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="206"><highlight class="normal"></highlight></codeline>
<codeline lineno="207" refid="classserif_1_1equations_1_1_poisson_balance" 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_poisson_balance_1a96b55bd49f72ee5a48fd1681e4d447d4" kindref="member">PoissonBalance</ref><sp/>{</highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="209"><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_poisson_balance_1a33ceef48381b81c388b83dbd15e0167c" kindref="member">Test</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1gravity_1_1potential" kindref="compound">discretization::blocks::gravity::potential</ref>;</highlight></codeline>
<codeline lineno="210"><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_poisson_balance_1a4068dd0a39368a2b2caf2252e3293af3" kindref="member">ResidualQuantity</ref><sp/>=<sp/><ref refid="structserif_1_1dimensions_1_1_inverse_time_squared" kindref="compound">dimensions::InverseTimeSquared</ref>;</highlight></codeline>
<codeline lineno="211"><highlight class="normal"></highlight></codeline>
<codeline lineno="212"><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_poisson_balance_1a730f54393b20bb7f13d78fde823d7090" kindref="member">name</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;Poisson<sp/>balance&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="213"><highlight class="normal"></highlight></codeline>
<codeline lineno="214"><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_poisson_balance_1a96b55bd49f72ee5a48fd1681e4d447d4" kindref="member">PoissonBalance</ref>(</highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>four_pi_G)<sp/>:<sp/><ref refid="classserif_1_1equations_1_1_poisson_balance_1a5ee3bce32ec10d52ef18d4036abaa862" kindref="member">m_four_pi_G</ref>(four_pi_G)<sp/>{</highlight></codeline>
<codeline lineno="215"><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="216"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument&gt;(std::isfinite(four_pi_G)<sp/>&amp;&amp;<sp/>four_pi_G<sp/>&gt;<sp/>0.0,<sp/></highlight><highlight class="stringliteral">&quot;Poisson<sp/>balance<sp/>requires<sp/>positive<sp/>finite<sp/>4<sp/>pi<sp/>G.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="218"><highlight class="normal"></highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1equations_1_1_poisson_balance_1ae53a60dc56bbe51e7f9c9b410cb56d05" kindref="member">contributions</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="220"><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::tuple{<ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_gradient_divergence" kindref="compound">gravity_contributions::GradientDivergence</ref>{},<sp/><ref refid="structserif_1_1equations_1_1gravity__contributions_1_1_density_source" kindref="compound">gravity_contributions::DensitySource</ref>{<ref refid="classserif_1_1equations_1_1_poisson_balance_1a5ee3bce32ec10d52ef18d4036abaa862" kindref="member">m_four_pi_G</ref>}};</highlight></codeline>
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="222"><highlight class="normal"></highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="224"><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_poisson_balance_1a5ee3bce32ec10d52ef18d4036abaa862" kindref="member">m_four_pi_G</ref>;</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="226"><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/mixed_gravity.hpp"/>
</compounddef>
</doxygen>