Files
MeanField_SERiF/docs/xml/numerics_8hpp.xml

2264 lines
268 KiB
XML
Raw Normal View History

<?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="numerics_8hpp" kind="file" language="C++">
<compoundname>numerics.hpp</compoundname>
<includes refid="utils_2serialize_2model_8hpp" local="yes">serif/utils/serialize/model.hpp</includes>
<includes refid="configured__discretization_8hpp" local="yes">serif/model/configured_discretization.hpp</includes>
<includes refid="solver_2normalization_2configuration_8hpp" local="yes">serif/solver/normalization/configuration.hpp</includes>
<includes refid="solver_2normalization_2diagonal_8hpp" local="yes">serif/solver/normalization/diagonal.hpp</includes>
<includes refid="solver_2normalization_2plan_8hpp" local="yes">serif/solver/normalization/plan.hpp</includes>
<includes refid="default__preconditioners_8hpp" local="yes">serif/solver/preconditioner/default_preconditioners.hpp</includes>
<includes refid="solver_2nonlinear_2options_8hpp" local="yes">serif/solver/nonlinear/options.hpp</includes>
<includes refid="policy_8hpp" local="yes">serif/discretization/quadrature/policy.hpp</includes>
<includes refid="model_2normalization_2plan_8hpp" local="yes">serif/model/normalization/plan.hpp</includes>
<includes refid="geometry_2deformation_2computations_8hpp" local="yes">serif/geometry/deformation/computations.hpp</includes>
<includedby refid="backend_2mfem_2serialize_2configuration_8hpp" local="yes">src/include/serif/backend/mfem/serialize/configuration.hpp</includedby>
<includedby refid="backend_2mfem_2serialize_2options_8hpp" local="yes">src/include/serif/backend/mfem/serialize/options.hpp</includedby>
<includedby refid="utils_2serialize_2solver_8hpp" local="yes">src/include/serif/utils/serialize/solver.hpp</includedby>
<incdepgraph>
<node id="27">
<label>serif/dimensions/dimensions.hpp</label>
<link refid="dimensions_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
</node>
<node id="40">
<label>serif/dimensions/partial.hpp</label>
<link refid="partial_8hpp"/>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="28">
<label>serif/dimensions/quantities.hpp</label>
<link refid="quantities_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="39">
<label>serif/dimensions/type_alias.hpp</label>
<link refid="type__alias_8hpp"/>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="76">
<label>serif/discretization/blocks/base.hpp</label>
<link refid="base_8hpp"/>
</node>
<node id="74">
<label>serif/discretization/blocks/concepts.hpp</label>
<link refid="discretization_2blocks_2concepts_8hpp"/>
<childnode refid="75" relation="include">
</childnode>
</node>
<node id="75">
<label>serif/discretization/blocks/fields.hpp</label>
<link refid="fields_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="76" relation="include">
</childnode>
<childnode refid="77" relation="include">
</childnode>
<childnode refid="78" relation="include">
</childnode>
<childnode refid="81" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
<childnode refid="82" relation="include">
</childnode>
</node>
<node id="144">
<label>serif/discretization/blocks/runtime.hpp</label>
<link refid="discretization_2blocks_2runtime_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
</node>
<node id="105">
<label>serif/discretization/blocks/system_layout.hpp</label>
<link refid="system__layout_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="76" relation="include">
</childnode>
<childnode refid="106" relation="include">
</childnode>
</node>
<node id="73">
<label>serif/discretization/blocks/traits.hpp</label>
<link refid="discretization_2blocks_2traits_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
</node>
<node id="103">
<label>serif/discretization/blocks/vector_view.hpp</label>
<link refid="vector__view_8hpp"/>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="104" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="105" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="78">
<label>serif/discretization/domain/concepts.hpp</label>
<link refid="discretization_2domain_2concepts_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="79" relation="include">
</childnode>
<childnode refid="80" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="81">
<label>serif/discretization/domain/physical_domains.hpp</label>
<link refid="physical__domains_8hpp"/>
<childnode refid="80" relation="include">
</childnode>
<childnode refid="78" relation="include">
</childnode>
</node>
<node id="80">
<label>serif/discretization/domain/types.hpp</label>
<link refid="discretization_2domain_2types_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="145">
<label>serif/discretization/forms/concept.hpp</label>
<link refid="concept_8hpp"/>
<childnode refid="146" relation="include">
</childnode>
</node>
<node id="147">
<label>serif/discretization/forms/form_traits.hpp</label>
<link refid="form__traits_8hpp"/>
<childnode refid="145" relation="include">
</childnode>
<childnode refid="146" relation="include">
</childnode>
</node>
<node id="146">
<label>serif/discretization/forms/forms.hpp</label>
<link refid="forms_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
<childnode refid="84" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
<childnode refid="82" relation="include">
</childnode>
</node>
<node id="84">
<label>serif/discretization/forms/operands.hpp</label>
<link refid="operands_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
</node>
<node id="143">
<label>serif/discretization/forms/runtime.hpp</label>
<link refid="discretization_2forms_2runtime_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="144" relation="include">
</childnode>
<childnode refid="145" relation="include">
</childnode>
</node>
<node id="86">
<label>serif/discretization/forms/value.hpp</label>
<link refid="value_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="73" relation="include">
</childnode>
<childnode refid="84" relation="include">
</childnode>
</node>
<node id="77">
<label>serif/discretization/functional_space/space.hpp</label>
<link refid="space_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="65" relation="include">
</childnode>
</node>
<node id="140">
<label>serif/discretization/quadrature/policy.hpp</label>
<link refid="policy_8hpp"/>
<childnode refid="141" relation="include">
</childnode>
<childnode refid="142" relation="include">
</childnode>
</node>
<node id="141">
<label>serif/discretization/quadrature/query.hpp</label>
<link refid="query_8hpp"/>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="142" relation="include">
</childnode>
<childnode refid="81" relation="include">
</childnode>
<childnode refid="147" relation="include">
</childnode>
<childnode refid="143" relation="include">
</childnode>
</node>
<node id="142">
<label>serif/discretization/quadrature/rules.hpp</label>
<link refid="rules_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="143" relation="include">
</childnode>
</node>
<node id="89">
<label>serif/eos/evaluation.hpp</label>
<link refid="eos_2evaluation_8hpp"/>
<childnode refid="90" relation="include">
</childnode>
</node>
<node id="94">
<label>serif/eos/exceptions.hpp</label>
<link refid="eos_2exceptions_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="90">
<label>serif/eos/models/concepts.hpp</label>
<link refid="eos_2models_2concepts_8hpp"/>
<childnode refid="91" relation="include">
</childnode>
<childnode refid="33" relation="include">
</childnode>
</node>
<node id="32">
<label>serif/eos/models/polytropic.hpp</label>
<link refid="eos_2models_2polytropic_8hpp"/>
<childnode refid="33" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="40" relation="include">
</childnode>
</node>
<node id="91">
<label>serif/eos/models/traits.hpp</label>
<link refid="eos_2models_2traits_8hpp"/>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="92" relation="include">
</childnode>
</node>
<node id="34">
<label>serif/eos/relations/catalog.hpp</label>
<link refid="catalog_8hpp"/>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
</node>
<node id="92">
<label>serif/eos/relations/concepts.hpp</label>
<link refid="eos_2relations_2concepts_8hpp"/>
<childnode refid="93" relation="include">
</childnode>
</node>
<node id="33">
<label>serif/eos/relations/relations.hpp</label>
<link refid="eos_2relations_2relations_8hpp"/>
<childnode refid="34" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="93">
<label>serif/eos/relations/traits.hpp</label>
<link refid="eos_2relations_2traits_8hpp"/>
<childnode refid="34" relation="include">
</childnode>
</node>
<node id="71">
<label>serif/equations/angular_momentum.hpp</label>
<link refid="angular__momentum_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="87" relation="include">
</childnode>
</node>
<node id="88">
<label>serif/equations/barotropic_density.hpp</label>
<link refid="barotropic__density_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="89" relation="include">
</childnode>
<childnode refid="94" relation="include">
</childnode>
<childnode refid="33" relation="include">
</childnode>
<childnode refid="95" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="87" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="101">
<label>serif/equations/barycenter.hpp</label>
<link refid="barycenter_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="95">
<label>serif/equations/companion.hpp</label>
<link refid="companion_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="87" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="96">
<label>serif/equations/concepts.hpp</label>
<link refid="equations_2concepts_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
</node>
<node id="72">
<label>serif/equations/contributions.hpp</label>
<link refid="equations_2contributions_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="73" relation="include">
</childnode>
<childnode refid="84" relation="include">
</childnode>
</node>
<node id="70">
<label>serif/equations/equations.hpp</label>
<link refid="equations_2equations_8hpp"/>
<childnode refid="71" relation="include">
</childnode>
<childnode refid="88" relation="include">
</childnode>
<childnode refid="96" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="97" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="98" relation="include">
</childnode>
<childnode refid="87" relation="include">
</childnode>
<childnode refid="99" relation="include">
</childnode>
<childnode refid="100" relation="include">
</childnode>
<childnode refid="101" relation="include">
</childnode>
<childnode refid="95" relation="include">
</childnode>
</node>
<node id="97">
<label>serif/equations/mass_normalization.hpp</label>
<link refid="mass__normalization_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="85">
<label>serif/equations/point.hpp</label>
<link refid="point_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="86" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="99">
<label>serif/equations/primal_gravity.hpp</label>
<link refid="primal__gravity_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="98">
<label>serif/equations/registry.hpp</label>
<link refid="registry_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="96" relation="include">
</childnode>
</node>
<node id="87">
<label>serif/equations/rigid_rotation.hpp</label>
<link refid="rigid__rotation_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="86" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="100">
<label>serif/equations/surface_potential.hpp</label>
<link refid="equations_2surface__potential_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="95" relation="include">
</childnode>
<childnode refid="85" relation="include">
</childnode>
<childnode refid="87" relation="include">
</childnode>
</node>
<node id="161">
<label>serif/geometry/deformation/actions.hpp</label>
<link refid="geometry_2deformation_2actions_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="162" relation="include">
</childnode>
<childnode refid="163" relation="include">
</childnode>
<childnode refid="165" relation="include">
</childnode>
<childnode refid="166" relation="include">
</childnode>
</node>
<node id="160">
<label>serif/geometry/deformation/composition.hpp</label>
<link refid="composition_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="161" relation="include">
</childnode>
</node>
<node id="159">
<label>serif/geometry/deformation/computations.hpp</label>
<link refid="geometry_2deformation_2computations_8hpp"/>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="160" relation="include">
</childnode>
<childnode refid="167" relation="include">
</childnode>
<childnode refid="168" relation="include">
</childnode>
</node>
<node id="163">
<label>serif/geometry/deformation/detail/action_storage.hpp</label>
<link refid="action__storage_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="164" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="162" relation="include">
</childnode>
</node>
<node id="162">
<label>serif/geometry/deformation/failure.hpp</label>
<link refid="geometry_2deformation_2failure_8hpp"/>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="167">
<label>serif/geometry/deformation/linearization.hpp</label>
<link refid="deformation_2linearization_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="161" relation="include">
</childnode>
</node>
<node id="69">
<label>serif/geometry/deformation/models.hpp</label>
<link refid="models_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
</node>
<node id="165">
<label>serif/geometry/deformation/spaces.hpp</label>
<link refid="spaces_8hpp"/>
</node>
<node id="166">
<label>serif/geometry/deformation/workspace.hpp</label>
<link refid="geometry_2deformation_2workspace_8hpp"/>
</node>
<node id="154">
<label>serif/geometry/surface/automatic.hpp</label>
<link refid="automatic_8hpp"/>
<childnode refid="155" relation="include">
</childnode>
</node>
<node id="156">
<label>serif/geometry/surface/compilation.hpp</label>
<link refid="compilation_8hpp"/>
<childnode refid="157" relation="include">
</childnode>
<childnode refid="68" relation="include">
</childnode>
</node>
<node id="155">
<label>serif/geometry/surface/detail/automatic_relations.hpp</label>
<link refid="automatic__relations_8hpp"/>
<childnode refid="156" relation="include">
</childnode>
<childnode refid="73" relation="include">
</childnode>
</node>
<node id="157">
<label>serif/geometry/surface/detail/relations.hpp</label>
<link refid="geometry_2surface_2detail_2relations_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="86" relation="include">
</childnode>
<childnode refid="90" relation="include">
</childnode>
<childnode refid="106" relation="include">
</childnode>
</node>
<node id="68">
<label>serif/geometry/surface/isobaric.hpp</label>
<link refid="isobaric_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
</node>
<node id="65">
<label>serif/meta/enums.hpp</label>
<link refid="enums_8hpp"/>
<childnode refid="66" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="67" relation="include">
</childnode>
</node>
<node id="82">
<label>serif/meta/names.hpp</label>
<link refid="names_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="83" relation="include">
</childnode>
</node>
<node id="114">
<label>serif/model/configured_discretization.hpp</label>
<link refid="configured__discretization_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="115" relation="include">
</childnode>
</node>
<node id="41">
<label>serif/model/description.hpp</label>
<link refid="description_8hpp"/>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
<childnode refid="47" relation="include">
</childnode>
<childnode refid="49" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
</node>
<node id="52">
<label>serif/model/detail/specification_list.hpp</label>
<link refid="specification__list_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
<childnode refid="53" relation="include">
</childnode>
</node>
<node id="153">
<label>serif/model/detail/surface_plan.hpp</label>
<link refid="surface__plan_8hpp"/>
<childnode refid="154" relation="include">
</childnode>
<childnode refid="42" relation="include">
</childnode>
</node>
<node id="54">
<label>serif/model/eos_reference.hpp</label>
<link refid="eos__reference_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="42">
<label>serif/model/equilibrium_equations.hpp</label>
<link refid="equilibrium__equations_8hpp"/>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="149">
<label>serif/model/equilibrium_plan.hpp</label>
<link refid="equilibrium__plan_8hpp"/>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="150" relation="include">
</childnode>
<childnode refid="153" relation="include">
</childnode>
<childnode refid="152" relation="include">
</childnode>
<childnode refid="100" relation="include">
</childnode>
<childnode refid="99" relation="include">
</childnode>
</node>
<node id="148">
<label>serif/model/normalization/plan.hpp</label>
<link refid="model_2normalization_2plan_8hpp"/>
<childnode refid="149" relation="include">
</childnode>
<childnode refid="116" relation="include">
</childnode>
<childnode refid="158" relation="include">
</childnode>
</node>
<node id="115">
<label>serif/model/normalization/reference.hpp</label>
<link refid="reference_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
<childnode refid="116" relation="include">
</childnode>
</node>
<node id="150">
<label>serif/model/plan.hpp</label>
<link refid="model_2plan_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="105" relation="include">
</childnode>
<childnode refid="98" relation="include">
</childnode>
<childnode refid="151" relation="include">
</childnode>
</node>
<node id="43">
<label>serif/model/specification.hpp</label>
<link refid="specification_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="44" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="47">
<label>serif/model/specifications/fixed_angular_momentum.hpp</label>
<link refid="fixed__angular__momentum_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
</node>
<node id="49">
<label>serif/model/specifications/fixed_total_mass.hpp</label>
<link refid="fixed__total__mass_8hpp"/>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
</node>
<node id="48">
<label>serif/model/specifications/physical_names.hpp</label>
<link refid="physical__names_8hpp"/>
</node>
<node id="102">
<label>serif/model/state.hpp</label>
<link refid="model_2state_8hpp"/>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="103" relation="include">
</childnode>
</node>
<node id="50">
<label>serif/model/stellar_model.hpp</label>
<link refid="stellar__model_8hpp"/>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="52" relation="include">
</childnode>
<childnode refid="42" relation="include">
</childnode>
</node>
<node id="152">
<label>serif/operators/concepts.hpp</label>
<link refid="operators_2concepts_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="73" relation="include">
</childnode>
<childnode refid="77" relation="include">
</childnode>
<childnode refid="96" relation="include">
</childnode>
</node>
<node id="129">
<label>serif/operators/linearized_system_view.hpp</label>
<link refid="linearized__system__view_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="105" relation="include">
</childnode>
<childnode refid="110" relation="include">
</childnode>
</node>
<node id="151">
<label>serif/operators/plan.hpp</label>
<link refid="operators_2plan_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="106" relation="include">
</childnode>
<childnode refid="146" relation="include">
</childnode>
<childnode refid="152" relation="include">
</childnode>
</node>
<node id="139">
<label>serif/solver/linear/linear.hpp</label>
<link refid="linear_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
</node>
<node id="138">
<label>serif/solver/nonlinear/options.hpp</label>
<link refid="solver_2nonlinear_2options_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="139" relation="include">
</childnode>
</node>
<node id="116">
<label>serif/solver/normalization/configuration.hpp</label>
<link refid="solver_2normalization_2configuration_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="117" relation="include">
</childnode>
<childnode refid="110" relation="include">
</childnode>
<childnode refid="118" relation="include">
</childnode>
</node>
<node id="121">
<label>serif/solver/normalization/diagonal.hpp</label>
<link refid="solver_2normalization_2diagonal_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="76" relation="include">
</childnode>
</node>
<node id="124">
<label>serif/solver/normalization/dimensionless.hpp</label>
<link refid="dimensionless_8hpp"/>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="123" relation="include">
</childnode>
</node>
<node id="123">
<label>serif/solver/normalization/metrics.hpp</label>
<link refid="metrics_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
<childnode refid="106" relation="include">
</childnode>
</node>
<node id="158">
<label>serif/solver/normalization/physical_coordinates.hpp</label>
<link refid="physical__coordinates_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="122" relation="include">
</childnode>
</node>
<node id="122">
<label>serif/solver/normalization/plan.hpp</label>
<link refid="solver_2normalization_2plan_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="76" relation="include">
</childnode>
<childnode refid="123" relation="include">
</childnode>
<childnode refid="124" relation="include">
</childnode>
<childnode refid="109" relation="include">
</childnode>
</node>
<node id="117">
<label>serif/solver/normalization/scales.hpp</label>
<link refid="scales_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="133">
<label>serif/solver/preconditioner/contract.hpp</label>
<link refid="contract_8hpp"/>
</node>
<node id="125">
<label>serif/solver/preconditioner/default_preconditioners.hpp</label>
<link refid="default__preconditioners_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="105" relation="include">
</childnode>
<childnode refid="126" relation="include">
</childnode>
<childnode refid="134" relation="include">
</childnode>
<childnode refid="135" relation="include">
</childnode>
<childnode refid="136" relation="include">
</childnode>
<childnode refid="137" relation="include">
</childnode>
</node>
<node id="128">
<label>serif/solver/preconditioner/keys.hpp</label>
<link refid="solver_2preconditioner_2keys_8hpp"/>
<childnode refid="129" relation="include">
</childnode>
</node>
<node id="134">
<label>serif/solver/preconditioner/recipes/block.hpp</label>
<link refid="block_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="128" relation="include">
</childnode>
</node>
<node id="126">
<label>serif/solver/preconditioner/recipes/bordered.hpp</label>
<link refid="bordered_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="127" relation="include">
</childnode>
<childnode refid="132" relation="include">
</childnode>
</node>
<node id="127">
<label>serif/solver/preconditioner/recipes/coupled.hpp</label>
<link refid="coupled_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="128" relation="include">
</childnode>
<childnode refid="130" relation="include">
</childnode>
</node>
<node id="131">
<label>serif/solver/preconditioner/strategies/coupling/order.hpp</label>
<link refid="solver_2preconditioner_2strategies_2coupling_2order_8hpp"/>
</node>
<node id="130">
<label>serif/solver/preconditioner/strategies/coupling/policies.hpp</label>
<link refid="policies_8hpp"/>
<childnode refid="131" relation="include">
</childnode>
</node>
<node id="132">
<label>serif/solver/preconditioner/strategies/inverse/dense.hpp</label>
<link refid="solver_2preconditioner_2strategies_2inverse_2dense_8hpp"/>
<childnode refid="133" relation="include">
</childnode>
</node>
<node id="135">
<label>serif/solver/preconditioner/strategies/inverse/diagonal.hpp</label>
<link refid="solver_2preconditioner_2strategies_2inverse_2diagonal_8hpp"/>
<childnode refid="133" relation="include">
</childnode>
</node>
<node id="136">
<label>serif/solver/preconditioner/strategies/inverse/fixed_amg.hpp</label>
<link refid="fixed__amg_8hpp"/>
<childnode refid="133" relation="include">
</childnode>
</node>
<node id="137">
<label>serif/solver/preconditioner/strategies/inverse/sparse_direct.hpp</label>
<link refid="solver_2preconditioner_2strategies_2inverse_2sparse__direct_8hpp"/>
<childnode refid="133" relation="include">
</childnode>
</node>
<node id="109">
<label>serif/utils/dependencies/binding.hpp</label>
<link refid="utils_2dependencies_2binding_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="36" relation="include">
</childnode>
</node>
<node id="169">
<label>serif/utils/dependencies/computation.hpp</label>
<link refid="computation_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="108" relation="include">
</childnode>
</node>
<node id="168">
<label>serif/utils/dependencies/computation_graph.hpp</label>
<link refid="computation__graph_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="169" relation="include">
</childnode>
<childnode refid="106" relation="include">
</childnode>
<childnode refid="170" relation="include">
</childnode>
</node>
<node id="110">
<label>serif/utils/dependencies/dependency_context.hpp</label>
<link refid="dependency__context_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="111" relation="include">
</childnode>
<childnode refid="107" relation="include">
</childnode>
<childnode refid="113" relation="include">
</childnode>
</node>
<node id="170">
<label>serif/utils/dependencies/detail/graph.hpp</label>
<link refid="utils_2dependencies_2detail_2graph_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="107" relation="include">
</childnode>
</node>
<node id="107">
<label>serif/utils/dependencies/detail/type_lists.hpp</label>
<link refid="type__lists_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="108" relation="include">
</childnode>
</node>
<node id="108">
<label>serif/utils/dependencies/key_list.hpp</label>
<link refid="key__list_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="109" relation="include">
</childnode>
<childnode refid="36" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="106">
<label>serif/utils/dependencies/key_list_operations.hpp</label>
<link refid="key__list__operations_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="107" relation="include">
</childnode>
</node>
<node id="111">
<label>serif/utils/dependencies/resource.hpp</label>
<link refid="resource_8hpp"/>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="112" relation="include">
</childnode>
</node>
<node id="112">
<label>serif/utils/dependencies/snapshot.hpp</label>
<link refid="snapshot_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="64">
<label>serif/utils/error/codes.hpp</label>
<link refid="codes_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="65" relation="include">
</childnode>
</node>
<node id="56">
<label>serif/utils/error/errors.hpp</label>
<link refid="errors_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="58" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="59" relation="include">
</childnode>
<childnode refid="60" relation="include">
</childnode>
<childnode refid="63" relation="include">
</childnode>
<childnode refid="64" relation="include">
</childnode>
<childnode refid="44" relation="include">
</childnode>
</node>
<node id="118">
<label>serif/utils/laneemden/laneemden.hpp</label>
<link refid="laneemden_8hpp"/>
<childnode refid="119" relation="include">
</childnode>
<childnode refid="120" relation="include">
</childnode>
</node>
<node id="120">
<label>serif/utils/laneemden/scaling.hpp</label>
<link refid="scaling_8hpp"/>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="119" relation="include">
</childnode>
</node>
<node id="119">
<label>serif/utils/laneemden/solution.hpp</label>
<link refid="solution_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
</node>
<node id="113">
<label>serif/utils/misc/concepts/concat.hpp</label>
<link refid="concat_8hpp"/>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="63">
<label>serif/utils/misc/concepts/exceptions.hpp</label>
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
<childnode refid="17" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="53">
<label>serif/utils/misc/concepts/filter.hpp</label>
<link refid="filter_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="31">
<label>serif/utils/misc/concepts/numeric.hpp</label>
<link refid="numeric_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
</node>
<node id="35">
<label>serif/utils/misc/concepts/type_uniqueness.hpp</label>
<link refid="concepts_2type__uniqueness_8hpp"/>
<childnode refid="36" relation="include">
</childnode>
</node>
<node id="30">
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
<link refid="cleaning_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
</node>
<node id="37">
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
<link refid="variadic__cleaning_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
</node>
<node id="60">
<label>serif/utils/misc/terminal/colors.hpp</label>
<link refid="colors_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="58" relation="include">
</childnode>
<childnode refid="61" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="62" relation="include">
</childnode>
</node>
<node id="36">
<label>serif/utils/misc/traits/type_uniqueness.hpp</label>
<link refid="traits_2type__uniqueness_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="8">
<label>serif/utils/serialize/components.hpp</label>
<link refid="components_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
</node>
<node id="3">
<label>serif/utils/serialize/equations.hpp</label>
<link refid="utils_2serialize_2equations_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="70" relation="include">
</childnode>
<childnode refid="98" relation="include">
</childnode>
</node>
<node id="2">
<label>serif/utils/serialize/model.hpp</label>
<link refid="utils_2serialize_2model_8hpp"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="102" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="110" relation="include">
</childnode>
</node>
<node id="1">
<label>src/include/serif/utils/serialize/numerics.hpp</label>
<link refid="numerics_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="114" relation="include">
</childnode>
<childnode refid="116" relation="include">
</childnode>
<childnode refid="121" relation="include">
</childnode>
<childnode refid="122" relation="include">
</childnode>
<childnode refid="125" relation="include">
</childnode>
<childnode refid="138" relation="include">
</childnode>
<childnode refid="140" relation="include">
</childnode>
<childnode refid="148" relation="include">
</childnode>
<childnode refid="159" relation="include">
</childnode>
</node>
<node id="4">
<label>serif/utils/serialize/physics.hpp</label>
<link refid="physics_8hpp"/>
<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="27" relation="include">
</childnode>
<childnode refid="32" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
<childnode refid="54" relation="include">
</childnode>
<childnode refid="68" relation="include">
</childnode>
<childnode refid="69" relation="include">
</childnode>
</node>
<node id="12">
<label>serif/utils/serialize/record.hpp</label>
<link refid="record_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="25" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
</node>
<node id="44">
<label>serif/utils/types/strings.hpp</label>
<link refid="types_2strings_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="46">
<label>serif/utils/types/type_list.hpp</label>
<link refid="type__list_8hpp"/>
</node>
<node id="6">
<label>algorithm</label>
</node>
<node id="13">
<label>array</label>
</node>
<node id="14">
<label>bit</label>
</node>
<node id="7">
<label>cmath</label>
</node>
<node id="29">
<label>compare</label>
</node>
<node id="15">
<label>concepts</label>
</node>
<node id="38">
<label>cstddef</label>
</node>
<node id="16">
<label>cstdint</label>
</node>
<node id="58">
<label>cstdio</label>
</node>
<node id="61">
<label>cstdlib</label>
</node>
<node id="17">
<label>exception</label>
</node>
<node id="18">
<label>expected</label>
</node>
<node id="57">
<label>format</label>
</node>
<node id="19">
<label>functional</label>
</node>
<node id="164">
<label>initializer_list</label>
</node>
<node id="45">
<label>iostream</label>
</node>
<node id="20">
<label>limits</label>
</node>
<node id="67">
<label>magic_enum/magic_enum_all.hpp</label>
</node>
<node id="21">
<label>map</label>
</node>
<node id="5">
<label>memory</label>
</node>
<node id="83">
<label>nameof.hpp</label>
</node>
<node id="79">
<label>numeric</label>
</node>
<node id="22">
<label>optional</label>
</node>
<node id="104">
<label>ranges</label>
</node>
<node id="51">
<label>span</label>
</node>
<node id="55">
<label>stdexcept</label>
</node>
<node id="23">
<label>string</label>
</node>
<node id="9">
<label>string_view</label>
</node>
<node id="10">
<label>tuple</label>
</node>
<node id="24">
<label>type_traits</label>
</node>
<node id="62">
<label>unistd.h</label>
</node>
<node id="66">
<label>unordered_map</label>
</node>
<node id="11">
<label>utility</label>
</node>
<node id="25">
<label>variant</label>
</node>
<node id="26">
<label>vector</label>
</node>
<node id="59">
<label>version</label>
</node>
</incdepgraph>
<invincdepgraph>
<node id="6">
<label>src/compile_time_checks/serif/backend_independent.cpp</label>
<link refid="backend__independent_8cpp"/>
</node>
<node id="2">
<label>src/include/serif/backend/mfem/serialize/configuration.hpp</label>
<link refid="backend_2mfem_2serialize_2configuration_8hpp"/>
</node>
<node id="3">
<label>src/include/serif/backend/mfem/serialize/options.hpp</label>
<link refid="backend_2mfem_2serialize_2options_8hpp"/>
</node>
<node id="1">
<label>src/include/serif/utils/serialize/numerics.hpp</label>
<link refid="numerics_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="5">
<label>src/include/serif/utils/serialize/serialize.hpp</label>
<link refid="serialize_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
</node>
<node id="4">
<label>src/include/serif/utils/serialize/solver.hpp</label>
<link refid="utils_2serialize_2solver_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
</node>
</invincdepgraph>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675" prot="public">serif::utils::serialize::Serializer&lt; model::DiscretizationOptions&lt; Model, FiniteElements, Normalization, Preconditioner &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" prot="public">serif::utils::serialize::RecipeSerializer</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_newton_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::Newton &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_backtracking_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::Backtracking &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_control_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::linear::Control &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_f_g_m_r_e_s_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::linear::FGMRES &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_normalized_residual_metric_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::NormalizedResidualMetric &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_standard_newton_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::StandardNewton &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4" prot="public">serif::utils::serialize::Serializer&lt; laneemden::IntegrationOptions &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_from_model_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::FromModel &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_automatic_plan_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::AutomaticPlan &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::Dimensionless &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::StellarReferenceScales &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_unit_metric_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::UnitMetric &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_identity_coordinate_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::IdentityCoordinate &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1preconditioning_1_1_none_01_4" prot="public">serif::utils::serialize::Serializer&lt; model::preconditioning::None &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::strategies::inverse::Diagonal &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::strategies::inverse::DenseDirect &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::strategies::inverse::FixedAMG &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::strategies::inverse::SparseDirect &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1c749e8d76ab33c4221418ab091a95767f" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::strategies::coupling::SecondThenFirst &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_solver_options_3_01_metric_00_013ca3bdcad21963925dfd88948dd19ab4" prot="public">serif::utils::serialize::Serializer&lt; solver::SolverOptions&lt; Metric, Strategies, Linear &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::LaneEmdenApproximation&lt; Mass, Density &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::NormalizationOptions&lt; Scheme, Coordinates, Plan, Sources, Computations &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_block_precondi8332ef5e96df07be9da235c2e3175838" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::BlockPreconditioner&lt; Row, Field, Strategy &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_coupled_precon5f86489d6a54160e4f32d710885530a8" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::CoupledPreconditioner&lt; First, Second, Policy &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_bordered_preco61576a59daf50c7dd924da92bf2d3074" prot="public">serif::utils::serialize::Serializer&lt; solver::preconditioner::BorderedPreconditioner&lt; Fields, Constraints &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::DiagonalNormalization &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" prot="public">serif::utils::serialize::SchemaSerializer</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_reference_volume_metric_3_01_term_01_4_01_4" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::ReferenceVolumeMetric&lt; Term &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01geometry_1_1deformation_1_1keys_1_1_surface_metric_01_4" prot="public">serif::utils::serialize::Serializer&lt; geometry::deformation::keys::SurfaceMetric &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1normalization_1_1_surface_rows_01_4" prot="public">serif::utils::serialize::Serializer&lt; model::normalization::SurfaceRows &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_with_point_rows7f253a21848d4633f0a601821f4c7a4e" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::WithPointRows&lt; Volume, Quantity, Selection &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_physical_riesz_adabf6970471703d441b80d61686d40f" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::PhysicalRieszCoordinate&lt; Quantity, Metric &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_r5cccab2fd1f566ce0d4cd0c4272c0de8" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::DimensionlessRieszCoordinate&lt; Quantity, Metric, Geometry &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_binding_3_01_key_00_01_target_01_4_01_4" prot="public">serif::utils::serialize::Serializer&lt; dependencies::Binding&lt; Key, Target &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_bindings_3_01_bindings_8_8_8_01_4_01_4" prot="public">serif::utils::serialize::Serializer&lt; dependencies::Bindings&lt; Bindings... &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_p405753c19e233a35f6ab15d812b35123" prot="public">serif::utils::serialize::Serializer&lt; solver::normalization::NormalizationPlan&lt; Values, Residuals &gt; &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4" prot="public">serif::utils::serialize::Serializer&lt; discretization::quadrature::RuleControl &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4" prot="public">serif::utils::serialize::Serializer&lt; discretization::quadrature::RuleSet &gt;</innerclass>
<innerclass refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4" prot="public">serif::utils::serialize::Serializer&lt; discretization::quadrature::Policy &gt;</innerclass>
<innernamespace refid="namespaceserif">serif</innernamespace>
<innernamespace refid="namespaceserif_1_1utils">serif::utils</innernamespace>
<innernamespace refid="namespaceserif_1_1utils_1_1serialize">serif::utils::serialize</innernamespace>
<briefdescription>
</briefdescription>
<detaileddescription>
</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="3"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="utils_2serialize_2model_8hpp" kindref="compound">serif/utils/serialize/model.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="configured__discretization_8hpp" kindref="compound">serif/model/configured_discretization.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="solver_2normalization_2configuration_8hpp" kindref="compound">serif/solver/normalization/configuration.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="solver_2normalization_2diagonal_8hpp" kindref="compound">serif/solver/normalization/diagonal.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="7"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="solver_2normalization_2plan_8hpp" kindref="compound">serif/solver/normalization/plan.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="8"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="default__preconditioners_8hpp" kindref="compound">serif/solver/preconditioner/default_preconditioners.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="solver_2nonlinear_2options_8hpp" kindref="compound">serif/solver/nonlinear/options.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="policy_8hpp" kindref="compound">serif/discretization/quadrature/policy.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="model_2normalization_2plan_8hpp" kindref="compound">serif/model/normalization/plan.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="12"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="geometry_2deformation_2computations_8hpp" kindref="compound">serif/geometry/deformation/computations.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="13"><highlight class="normal"></highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1utils_1_1serialize" kindref="compound">serif::utils::serialize</ref><sp/>{</highlight></codeline>
<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;model::StellarModelType<sp/>Model,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>FiniteElements,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Normalization,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Preconditioner&gt;</highlight></codeline>
<codeline lineno="16" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1model" kindref="compound">model</ref>::DiscretizationOptions&lt;Model,<sp/>FiniteElements,<sp/>Normalization,<sp/>Preconditioner&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="17"><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_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1af93aaabc24605f770845a462cb07c981" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1model_1_1_discretization_options" kindref="compound">model::DiscretizationOptions&lt;Model, FiniteElements, Normalization, Preconditioner&gt;</ref>;</highlight></codeline>
<codeline lineno="18"><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_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1aa22930521989d837ea86cadcb59bbb6d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;configuration&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="19"><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_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1ad44decc2e241b27c3da3e2701824013a" kindref="member">type</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;model.configured_discretization&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="20"><highlight class="normal"></highlight></codeline>
<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1aa13f327defa8d2096a0b896cbe870f3d" kindref="member">save</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1af93aaabc24605f770845a462cb07c981" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="23"><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="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1ad44decc2e241b27c3da3e2701824013a" kindref="member">type</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;model&quot;</highlight><highlight class="normal">,<sp/>value.model),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;finite_elements&quot;</highlight><highlight class="normal">,<sp/>value.finite_elements),</highlight></codeline>
<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;normalization&quot;</highlight><highlight class="normal">,<sp/>value.normalization),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;preconditioner&quot;</highlight><highlight class="normal">,<sp/>value.preconditioner));</highlight></codeline>
<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;T&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1ad0c0d17a6c81dc6f58fff17eb961b78e" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="29"><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="namespaceserif_1_1utils_1_1serialize_1adb5114bee6aa1ea6612b96babf0ae8c2" kindref="member">read_object</ref>(node,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1ad44decc2e241b27c3da3e2701824013a" kindref="member">type</ref>,<sp/>[](Model<sp/><ref refid="namespaceserif_1_1model" kindref="compound">model</ref>,<sp/>FiniteElements<sp/>finite_elements,<sp/>Normalization<sp/>normalization,<sp/>Preconditioner<sp/>preconditioner)<sp/>{</highlight></codeline>
<codeline lineno="30"><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/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1_discretization_options_3_01_model6067d6d29d8c7435c40c1c6cda543675_1af93aaabc24605f770845a462cb07c981" kindref="member">T</ref>{.model<sp/>=<sp/>std::move(<ref refid="namespaceserif_1_1model" kindref="compound">model</ref>),<sp/>.finite_elements<sp/>=<sp/>std::move(finite_elements),</highlight></codeline>
<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>.normalization<sp/>=<sp/>std::move(normalization),<sp/>.preconditioner<sp/>=<sp/>std::move(preconditioner)};</highlight></codeline>
<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>},<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Model&gt;</ref>(</highlight><highlight class="stringliteral">&quot;model&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;FiniteElements&gt;</ref>(</highlight><highlight class="stringliteral">&quot;finite_elements&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Normalization&gt;</ref>(</highlight><highlight class="stringliteral">&quot;normalization&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Preconditioner&gt;</ref>(</highlight><highlight class="stringliteral">&quot;preconditioner&quot;</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="35"><highlight class="normal"></highlight></codeline>
<codeline lineno="37"><highlight class="normal"><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/>T&gt;</highlight></codeline>
<codeline lineno="38" refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" kindref="compound">RecipeSerializer</ref><sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;T&gt;<sp/>{</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer_1a3b3420ddbae61107077da2d355f29b16" kindref="member">save</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>T&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/>result<sp/>=<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer_1a038ff86a82c26afe692b6c3724b0bcff" kindref="member">StructSerializer&lt;T&gt;::save</ref>(value);</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.emplace(</highlight><highlight class="stringliteral">&quot;rows&quot;</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a4ea480fabb9d06528d01b26691fa80ec" kindref="member">encode</ref>(</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>T::Rows{}));</highlight></codeline>
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.emplace(</highlight><highlight class="stringliteral">&quot;values&quot;</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a4ea480fabb9d06528d01b26691fa80ec" kindref="member">encode</ref>(</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>T::Values{}));</highlight></codeline>
<codeline lineno="44"><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/>result;</highlight></codeline>
<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="47"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;T&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer_1a2b2ec0b5d13f7b0310ac1143869c2175" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>rows<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a21172de2e2f37c8797a238eb0bdaea30" kindref="member">read_field&lt;typename T::Rows&gt;</ref>(node,<sp/></highlight><highlight class="stringliteral">&quot;rows&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!rows)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(rows.error());<sp/>}</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>values<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a21172de2e2f37c8797a238eb0bdaea30" kindref="member">read_field&lt;typename T::Values&gt;</ref>(node,<sp/></highlight><highlight class="stringliteral">&quot;values&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!values)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(values.error());<sp/>}</highlight></codeline>
<codeline lineno="52"><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="structserif_1_1utils_1_1serialize_1_1_struct_serializer_1a9286f3e92418115aa288c59dac7a693b" kindref="member">StructSerializer&lt;T&gt;::load</ref>(node);</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="54"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="55"><highlight class="normal"></highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="57" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_newton_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::Newton&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::Newton&gt;<sp/>{</highlight></codeline>
<codeline lineno="58"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_newton_01_4_1a99f173fa02a19f4df1a7703ac47f1a03" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1_newton" kindref="compound">solver::Newton</ref>;</highlight></codeline>
<codeline lineno="59"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_newton_01_4_1a844bd1545cde4dd69ded93d86e61140d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.newton&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="60"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_newton_01_4_1a32a8dbc0a2a82670d8b0c4f13ba7876c" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;relative_tolerance&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_newton_1a0f0f39dd50491d41a52256f9f6d7a397" kindref="member">T::relative_tolerance</ref>),</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;absolute_tolerance&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_newton_1ad898cfc3de115a418fc6782e31bb53fa" kindref="member">T::absolute_tolerance</ref>),</highlight></codeline>
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;maximum_iterations&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_newton_1a673a168331c73603a181f66f23487759" kindref="member">T::maximum_iterations</ref>),</highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;linear_solve&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_newton_1ad7ad5d765234464e957ba660aa0253ff" kindref="member">T::linear_solve</ref>)</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="66"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="69" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_backtracking_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::Backtracking&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::Backtracking&gt;<sp/>{</highlight></codeline>
<codeline lineno="70"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_backtracking_01_4_1a075434e2fc6c694df1156fa5994488ba" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1_backtracking" kindref="compound">solver::Backtracking</ref>;</highlight></codeline>
<codeline lineno="71"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_backtracking_01_4_1ac97322031acc5d2b6ca4c332c50f7643" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.backtracking&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="72"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_backtracking_01_4_1ac0e3c4b4839ed2fcfd5e0d299ea930d8" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;initial_step&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1aebcf24ae783fc9ff3ad60d99a2ec6c66" kindref="member">T::initial_step</ref>),</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;contraction&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1a7911ba8308c60432c6de212dfd695e8f" kindref="member">T::contraction</ref>),</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;fraction_to_boundary&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1a367c1a51e0b8d12774708d13c9094a8a" kindref="member">T::fraction_to_boundary</ref>),</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;sufficient_decrease&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1abf45ecd4ec4a59442d45bca50a8d10ef" kindref="member">T::sufficient_decrease</ref>),</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;minimum_step&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1a53406b3dd0cdd6e269f8e7269ec02d03" kindref="member">T::minimum_step</ref>),</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;maximum_trials&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1aeaad4d74cf2435b028349a8fee1d2710" kindref="member">T::maximum_trials</ref>),</highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;geometry_preflight&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_backtracking_1aa74244d42ad42a75376e4d647c983d93" kindref="member">T::geometry_preflight</ref>)</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="84" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_control_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::linear::Control&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::linear::Control&gt;<sp/>{</highlight></codeline>
<codeline lineno="85"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_control_01_4_1a4677ff18759d199609cd72099c0a6b0b" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1linear_1_1_control" kindref="compound">solver::linear::Control</ref>;</highlight></codeline>
<codeline lineno="86"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_control_01_4_1a195a9cfed479c470751eafe7bcbdaf18" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.linear.control&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="87"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_control_01_4_1ac84aa3d768e235502969866bd02b4095" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;relative_tolerance&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1linear_1_1_control_1a1dfa0bf223efb2e1c828f68926c2f544" kindref="member">T::relative_tolerance</ref>),</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;absolute_tolerance&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1linear_1_1_control_1aee53a6c3a61ac1e76db6867800579382" kindref="member">T::absolute_tolerance</ref>),</highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;maximum_iterations&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1linear_1_1_control_1a40faab0885e0dbe0ae663e7d9764dce9" kindref="member">T::maximum_iterations</ref>)</highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="93"><highlight class="normal"></highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="95" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_f_g_m_r_e_s_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::linear::FGMRES&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::linear::FGMRES&gt;<sp/>{</highlight></codeline>
<codeline lineno="96"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_f_g_m_r_e_s_01_4_1a9b648a0155915ff0c169861b45a05448" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1linear_1_1_f_g_m_r_e_s" kindref="compound">solver::linear::FGMRES</ref>;</highlight></codeline>
<codeline lineno="97"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_f_g_m_r_e_s_01_4_1a67a8bfd85edc656b394c5b0d77711de0" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.linear.fgmres&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="98"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1linear_1_1_f_g_m_r_e_s_01_4_1ad094035108b6d80baeaf23c3524bd641" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;restart_length&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1linear_1_1_f_g_m_r_e_s_1a1acab699fb76610914b3a9bfcf916afc" kindref="member">T::restart_length</ref>),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;print_level&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1linear_1_1_f_g_m_r_e_s_1a1c8ce46064a938ab2215f490e569a82c" kindref="member">T::print_level</ref>)};</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="100"><highlight class="normal"></highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="102" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_normalized_residual_metric_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::NormalizedResidualMetric&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::NormalizedResidualMetric&gt;<sp/>{</highlight></codeline>
<codeline lineno="103"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_normalized_residual_metric_01_4_1a6c995cbf4fc65806765d9d57b1227170" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1_normalized_residual_metric" kindref="compound">solver::NormalizedResidualMetric</ref>;</highlight></codeline>
<codeline lineno="104"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_normalized_residual_metric_01_4_1a4dfe3d63889258cf4907b3b44e1fa7dc" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.metric.normalized_residual&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="105"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_normalized_residual_metric_01_4_1a72b5758f25fd7f8b82a6469e55ffd008" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="107"><highlight class="normal"></highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="109" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_standard_newton_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::StandardNewton&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::StandardNewton&gt;<sp/>{</highlight></codeline>
<codeline lineno="110"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_standard_newton_01_4_1a4ce5012371d30795b0ad4e6a1881fb58" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1_standard_newton" kindref="compound">solver::StandardNewton</ref>;</highlight></codeline>
<codeline lineno="111"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_standard_newton_01_4_1a05ccdbd0beeb4125f72f5a199d25c263" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver.strategy.standard_newton&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="112"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_standard_newton_01_4_1ada11a6e6054e53704bf8934fe19270ac" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="114"><highlight class="normal"></highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="116" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1utils_1_1laneemden" kindref="compound">laneemden</ref>::IntegrationOptions&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;laneemden::IntegrationOptions&gt;<sp/>{</highlight></codeline>
<codeline lineno="117"><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_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4_1ac6f8cf455c14e0fccc8f9364778c0987" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options" kindref="compound">laneemden::IntegrationOptions</ref>;</highlight></codeline>
<codeline lineno="118"><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_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4_1a76fd1300c15763a3542a0c614cb07304" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;lane_emden.integration&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="119"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4_1a372c1684d329053771abab587b9908d8" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;step&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options_1af239fee4cf42ae448865d70fc7114bff" kindref="member">T::step</ref>),</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;maximum_radius&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options_1aac80123ebcec8a343c9375d2fd86ebc6" kindref="member">T::maximum_radius</ref>),</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;maximum_steps&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options_1a85a0926bde7453430269791323190ca2" kindref="member">T::maximum_steps</ref>),</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;surface_tolerance&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options_1af1276d1742eb704d227245be9803a94c" kindref="member">T::surface_tolerance</ref>),</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;central_series_terms&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1utils_1_1laneemden_1_1_integration_options_1a989c93ecaa89d1389fe252794a418942" kindref="member">T::central_series_terms</ref>)</highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4_1aa831b4d70377bd08496a3a051e13f4d9" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01laneemden_1_1_integration_options_01_4_1ac6f8cf455c14e0fccc8f9364778c0987" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="128"><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::isfinite(value.step)<sp/>&amp;&amp;<sp/>value.step<sp/>&gt;<sp/>0.0<sp/>&amp;&amp;<sp/>std::isfinite(value.maximum_radius)<sp/>&amp;&amp;<sp/>value.maximum_radius<sp/>&gt;<sp/>0.0<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::isfinite(value.surface_tolerance)<sp/>&amp;&amp;<sp/>value.surface_tolerance<sp/>&gt;<sp/>0.0<sp/>&amp;&amp;<sp/>value.surface_tolerance<sp/>&lt;<sp/>0.01<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>value.maximum_steps<sp/>&gt;<sp/>0<sp/>&amp;&amp;<sp/>value.central_series_terms<sp/>&gt;=<sp/>6<sp/>&amp;&amp;<sp/>value.central_series_terms<sp/>&lt;=<sp/>64;</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="132"><highlight class="normal"></highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="134"><highlight class="normal"></highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="136" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_from_model_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::FromModel&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::FromModel&gt;<sp/>{</highlight></codeline>
<codeline lineno="137"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_from_model_01_4_1a1f9e5667b80192c2c8d5c211210c935c" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_from_model" kindref="compound">solver::normalization::FromModel</ref>;</highlight></codeline>
<codeline lineno="138"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_from_model_01_4_1a8dd23659b37b7796f0cf796d50a6289f" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.from_model&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="139"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_from_model_01_4_1a53f71b09e59d79821b8bbf841767d254" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="141"><highlight class="normal"></highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="143" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_automatic_plan_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::AutomaticPlan&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::AutomaticPlan&gt;<sp/>{</highlight></codeline>
<codeline lineno="144"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_automatic_plan_01_4_1a7e862f10305c9b0320923ce97b2647eb" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_automatic_plan" kindref="compound">solver::normalization::AutomaticPlan</ref>;</highlight></codeline>
<codeline lineno="145"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_automatic_plan_01_4_1a5511bfeac1c66d9cc86114723aaf5539" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.automatic_plan&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="146"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_automatic_plan_01_4_1a2e1dfa619160123ccce7fc3f29658806" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="148"><highlight class="normal"></highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="150" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::Dimensionless&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::Dimensionless&gt;<sp/>{</highlight></codeline>
<codeline lineno="151"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_01_4_1af2c13b209fcd071778ee15ccfaa28966" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_dimensionless" kindref="compound">solver::normalization::Dimensionless</ref>;</highlight></codeline>
<codeline lineno="152"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_01_4_1a979758b9fcf4f7f4373269043d560744" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.dimensionless&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="153"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_01_4_1affa9a0343b3211c8ef5b837b53e9f984" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="155"><highlight class="normal"></highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="157" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::StellarReferenceScales&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::StellarReferenceScales&gt;<sp/>{</highlight></codeline>
<codeline lineno="158"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1a747f4531dac136d840958adc7252b497" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales" kindref="compound">solver::normalization::StellarReferenceScales</ref>;</highlight></codeline>
<codeline lineno="159"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1a7177d232ffe7519adf46cbb4d6e6cdc6" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.reference_scales&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="160"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1af6ecfc46391c75fce2bd6524701b8ffb" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="161"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;mass&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a1bb471d0f0ab4f0be16ffddb6dfc52ce" kindref="member">T::mass</ref>),</highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;radius&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1aa91df74d3e28545ea06eb70a326b517b" kindref="member">T::radius</ref>),</highlight></codeline>
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;gravitational_constant&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a59a352614abef9204e6976ae21252a94" kindref="member">T::gravitational_constant</ref>),</highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;density&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a2ee22ccabb151a87c7770d7fad3f7a7c" kindref="member">T::density</ref>),</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;acceleration&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1ae1dcf1cd6f03a1a64f9ce9be56c3d6a1" kindref="member">T::acceleration</ref>),</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;inverse_time_squared&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a5e75ae46af76e07353df2c4f5b6de591" kindref="member">T::inverse_time_squared</ref>),</highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;specific_energy&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a0c830f5cdf3b2281cbe4c9ba8a06b4da" kindref="member">T::specific_energy</ref>),</highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;pressure&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a58056a9f389b6e4de7d86f73d9aaf0d5" kindref="member">T::pressure</ref>),</highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;angular_velocity&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a424f96333a4882dea008a2e8a849d536" kindref="member">T::angular_velocity</ref>),</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;angular_momentum&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a3230cef67c754f242134a643fa04198b" kindref="member">T::angular_momentum</ref>),</highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;force&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales_1a010184707e1c502b52e2e2f8b8f89dda" kindref="member">T::force</ref>)</highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1a515cc76e1363c5589ec6e03a4e8d0894" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1a747f4531dac136d840958adc7252b497" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="175"><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::apply([&amp;](</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&amp;...<sp/>fields)<sp/>{</highlight></codeline>
<codeline lineno="176"><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/>((std::isfinite((value.*fields.pointer).value())<sp/>&amp;&amp;<sp/>(value.*fields.pointer).value()<sp/>&gt;<sp/>0.0)<sp/>&amp;&amp;<sp/>...);</highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>},<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_stellar_reference_scales_01_4_1af6ecfc46391c75fce2bd6524701b8ffb" kindref="member">members</ref>);</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="179"><highlight class="normal"></highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="181"><highlight class="normal"></highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="183" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_unit_metric_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::UnitMetric&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::UnitMetric&gt;<sp/>{</highlight></codeline>
<codeline lineno="184"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_unit_metric_01_4_1abb965aac41c50f5bc175dec1c8ed94d1" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_unit_metric" kindref="compound">solver::normalization::UnitMetric</ref>;</highlight></codeline>
<codeline lineno="185"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_unit_metric_01_4_1a60a9e4b9db29269fa6412ac2eedfb34d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.metric.unit&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="186"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_unit_metric_01_4_1a14fb916b3aac5f7696b73665f1aa4a5e" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="187"><highlight class="normal"><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">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="190" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_identity_coordinate_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::IdentityCoordinate&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::IdentityCoordinate&gt;<sp/>{</highlight></codeline>
<codeline lineno="191"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_identity_coordinate_01_4_1a002642c5863d7f99092e54f082d4d12c" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_identity_coordinate" kindref="compound">solver::normalization::IdentityCoordinate</ref>;</highlight></codeline>
<codeline lineno="192"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_identity_coordinate_01_4_1a5e6f54c5b0df4e7085e9c1689bdbb600" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.coordinate.identity&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="193"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_identity_coordinate_01_4_1ac1ccaac72147bdcbae73b4120fa4a5ef" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="195"><highlight class="normal"></highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="197" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1preconditioning_1_1_none_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1model" kindref="compound">model</ref>::preconditioning::None&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;model::preconditioning::None&gt;<sp/>{</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_1utils_1_1serialize_1_1_serializer_3_01model_1_1preconditioning_1_1_none_01_4_1ab9fbc9e001643ee4deca315b8869d8f3" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1model_1_1preconditioning_1_1_none" kindref="compound">model::preconditioning::None</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_1utils_1_1serialize_1_1_serializer_3_01model_1_1preconditioning_1_1_none_01_4_1af6af4eb703ebf9a808a2978da612c80c" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.default&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="200"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1preconditioning_1_1_none_01_4_1a3e1b8312d8b5dde83bdda4a94eba4d6f" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="202"><highlight class="normal"></highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="204" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::strategies::inverse::Diagonal&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::preconditioner::strategies::inverse::Diagonal&gt;<sp/>{</highlight></codeline>
<codeline lineno="205"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal_01_4_1a702ccd7ba0f8ccd2e3cd51590d74bc77" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal" kindref="compound">solver::preconditioner::strategies::inverse::Diagonal</ref>;</highlight></codeline>
<codeline lineno="206"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal_01_4_1af7c8cc4638b2565905ecf91e58bf793a" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.inverse.diagonal&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="207"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_diagonal_01_4_1a04387fded2d0f8362b61d796fe038b53" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="209"><highlight class="normal"></highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="211" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::strategies::inverse::DenseDirect&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::preconditioner::strategies::inverse::DenseDirect&gt;<sp/>{</highlight></codeline>
<codeline lineno="212"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4_1ad601f75776f1f17e6d0f06ba7285ccc1" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct" kindref="compound">solver::preconditioner::strategies::inverse::DenseDirect</ref>;</highlight></codeline>
<codeline lineno="213"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4_1ac7e0b122faf9f839c7cdbbc60672374e" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.inverse.dense_direct&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="214"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4_1a17b9a064e7845519c0d5a0a2b3d0d2bd" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;minimum_reciprocal_condition&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_1a4d5c1124e95bbd751f9de7ba6a79dcdb" kindref="member">T::minimum_reciprocal_condition</ref>)};</highlight></codeline>
<codeline lineno="216"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4_1ae44cf37c4ec3eff8882a3e9e7f6e03a7" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct_01_4_1ad601f75776f1f17e6d0f06ba7285ccc1" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="217"><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::isfinite(value.minimum_reciprocal_condition)<sp/>&amp;&amp;<sp/>value.minimum_reciprocal_condition<sp/>&gt;=<sp/>0.0<sp/>&amp;&amp;<sp/>value.minimum_reciprocal_condition<sp/>&lt;=<sp/>1.0;</highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="219"><highlight class="normal"></highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="221"><highlight class="normal"></highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="223" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::strategies::inverse::FixedAMG&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::preconditioner::strategies::inverse::FixedAMG&gt;<sp/>{</highlight></codeline>
<codeline lineno="224"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4_1a11ea78a70606cc6b129097d46f4ed1ee" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g" kindref="compound">solver::preconditioner::strategies::inverse::FixedAMG</ref>;</highlight></codeline>
<codeline lineno="225"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4_1a93bb26d85bb46707b7b8f781c9578558" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.inverse.fixed_amg&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="226"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4_1ac65e7fa385a219abfdbde1fdbf950369" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;cycles&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_1aa747055b2d45998657a99b0a9551f915" kindref="member">T::cycles</ref>)};</highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4_1a24cb9e99cfc426c094e1a29619879ab9" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_fixed_a_m_g_01_4_1a11ea78a70606cc6b129097d46f4ed1ee" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="229"><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/>value.cycles<sp/>&gt;<sp/>0;</highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="231"><highlight class="normal"></highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="233"><highlight class="normal"></highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="235" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::strategies::inverse::SparseDirect&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::preconditioner::strategies::inverse::SparseDirect&gt;<sp/>{</highlight></codeline>
<codeline lineno="236"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct_01_4_1a170e5ec5c2f904cbdd2b931103d0333f" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct" kindref="compound">solver::preconditioner::strategies::inverse::SparseDirect</ref>;</highlight></codeline>
<codeline lineno="237"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct_01_4_1af643fe876ae0c50b3a3a7efc6ee7930b" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.inverse.sparse_direct&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="238"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_sparse_direct_01_4_1a88a3543694dd3d7535d6a141443b2870" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="240"><highlight class="normal"></highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="242" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1c749e8d76ab33c4221418ab091a95767f" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::strategies::coupling::SecondThenFirst&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::preconditioner::strategies::coupling::SecondThenFirst&gt;<sp/>{</highlight></codeline>
<codeline lineno="243"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1c749e8d76ab33c4221418ab091a95767f_1ad515785d4bbc1e1855a32ee77cb281be" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1_1_second_then_first" kindref="compound">solver::preconditioner::strategies::coupling::SecondThenFirst</ref>;</highlight></codeline>
<codeline lineno="244"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1c749e8d76ab33c4221418ab091a95767f_1a1e1b13b7e129508908617f92d9986532" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.coupling.second_then_first&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="245"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1strategies_1_1c749e8d76ab33c4221418ab091a95767f_1a5d50852dce04ea3efe004c9ff15f23bc" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="247"><highlight class="normal"></highlight></codeline>
<codeline lineno="248"><highlight class="normal"><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/>Metric,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Strategies,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Linear&gt;</highlight></codeline>
<codeline lineno="249" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_solver_options_3_01_metric_00_013ca3bdcad21963925dfd88948dd19ab4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::SolverOptions&lt;Metric,<sp/>Strategies,<sp/>Linear&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::SolverOptions&lt;Metric,<sp/>Strategies,<sp/>Linear&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="250"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_solver_options_3_01_metric_00_013ca3bdcad21963925dfd88948dd19ab4_1aeeef9fcc2004a2d24b4715f070cd5491" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1_solver_options" kindref="compound">solver::SolverOptions&lt;Metric, Strategies, Linear&gt;</ref>;</highlight></codeline>
<codeline lineno="251"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_solver_options_3_01_metric_00_013ca3bdcad21963925dfd88948dd19ab4_1ae91132702c0f67c1fc02c9960fc0fa18" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;solver_options&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="252"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1_solver_options_3_01_metric_00_013ca3bdcad21963925dfd88948dd19ab4_1a9be5e40951be3c5f3b5fa55c56b7b3de" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;method&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_solver_options_1afcffd183ddae18b64c8e54739d0efcdc" kindref="member">T::method</ref>),</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;linear_solver&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_solver_options_1a550d84a311fc84906ecb7b5f1271d9d7" kindref="member">T::linear_solver</ref>),</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;line_search&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_solver_options_1aff5b9e6845723e02340c2d8f3cd76178" kindref="member">T::line_search</ref>),</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;metric&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_solver_options_1a086c841a47cde4255896b508dc94848e" kindref="member">T::metric</ref>),</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;strategies&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1_solver_options_1a6212e31119c4bd92bda8ac1e1163ba11" kindref="member">T::strategies</ref>)</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="260"><highlight class="normal"></highlight></codeline>
<codeline lineno="261"><highlight class="normal"><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/>Mass,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Density&gt;</highlight></codeline>
<codeline lineno="262" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::LaneEmdenApproximation&lt;Mass,<sp/>Density&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::LaneEmdenApproximation&lt;Mass,<sp/>Density&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="263"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a_1ade8e6ba2c32da1be696e83920bf1952a" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation" kindref="compound">solver::normalization::LaneEmdenApproximation&lt;Mass, Density&gt;</ref>;</highlight></codeline>
<codeline lineno="264"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a_1a224b9f170421c6468ef20690d97965a7" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.lane_emden&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="265"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a_1ad2a9c9249b5ec682683dfa6dc16645bd" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;n&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation_1a794dee41f1544388ed6fd6d99ecb1f8c" kindref="member">T::n</ref>),</highlight></codeline>
<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;mass&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation_1a6ce67d7958d45308f6d5f658f1168c01" kindref="member">T::mass</ref>),</highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;central_density&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation_1a9fa6bc89ba1c5e8add9de29f638c9c99" kindref="member">T::central_density</ref>),</highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;integration&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation_1a80e50eb1a73dd08940f5f95515eb3dda" kindref="member">T::integration</ref>)</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a_1afb2d48b92696c4430d36e017e43a27ac" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_lane_emden_appr280bda78ea4050d0ff8b72e64d00b94a_1ade8e6ba2c32da1be696e83920bf1952a" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="273"><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::isfinite(value.n)<sp/>&amp;&amp;<sp/>value.n<sp/>&gt;=<sp/>0.0<sp/>&amp;&amp;<sp/>[&amp;]<sp/>{</highlight></codeline>
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>(!std::same_as&lt;Mass,<sp/>solver::normalization::FromModel&gt;)<sp/>{</highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!std::isfinite(value.mass.value())<sp/>||<sp/>value.mass.value()<sp/>&lt;=<sp/>0.0)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;<sp/>}</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>(!std::same_as&lt;Density,<sp/>solver::normalization::FromModel&gt;)<sp/>{</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!std::isfinite(value.central_density.value())<sp/>||<sp/>value.central_density.value()<sp/>&lt;=<sp/>0.0)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;<sp/>}</highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="280"><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/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}();</highlight></codeline>
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="283"><highlight class="normal"></highlight></codeline>
<codeline lineno="284"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="285"><highlight class="normal"></highlight></codeline>
<codeline lineno="286"><highlight class="normal"><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/>Scheme,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Coordinates,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Plan,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Sources,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Computations&gt;</highlight></codeline>
<codeline lineno="287" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::NormalizationOptions&lt;Scheme,<sp/>Coordinates,<sp/>Plan,<sp/>Sources,<sp/>Computations&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;solver::normalization::NormalizationOptions&lt;Scheme,<sp/>Coordinates,<sp/>Plan,<sp/>Sources,<sp/>Computations&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="288"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5_1a6610dbdaea6a78672d1a1e212ef250e9" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options" kindref="compound">solver::normalization::NormalizationOptions&lt;Scheme, Coordinates, Plan, Sources, Computations&gt;</ref>;</highlight></codeline>
<codeline lineno="289"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5_1a53ca18f8e51f584062a0a9bdefc3912d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="290"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5_1a86e38ca44a6b8e7368ecd5131bcc5e4e" kindref="member">members</ref><sp/>=<sp/>std::tuple{</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;scheme&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1a26d87bc4ec8d84f139242b40182dae84" kindref="member">T::scheme</ref>),</highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;coordinates&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1a9c05d05425226c8530613b25347cad0f" kindref="member">T::coordinates</ref>),</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;plan&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1acae9bab5f710f391f9cba3b2b71dcafe" kindref="member">T::plan</ref>),</highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;gravitational_constant&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1aa7256a8704057da78824a1f6c1813046" kindref="member">T::gravitational_constant</ref>),</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;sources&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1ad3b6609a1597b77d7f8dc2d89c67bf93" kindref="member">T::sources</ref>),</highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;computations&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1normalization_1_1_normalization_options_1a5d4f10cd41cfbe51c04502a5bf04cd6f" kindref="member">T::computations</ref>)</highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="299"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5_1ae1c7bfef812b2eda06cd7377bb66f4cb" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_o6acc76af4c0fbc1dccb396f0a7cb69c5_1a6610dbdaea6a78672d1a1e212ef250e9" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="300"><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::isfinite(value.gravitational_constant.value())<sp/>&amp;&amp;<sp/>value.gravitational_constant.value()<sp/>&gt;<sp/>0.0;</highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="302"><highlight class="normal"></highlight></codeline>
<codeline lineno="303"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="304"><highlight class="normal"></highlight></codeline>
<codeline lineno="305"><highlight class="normal"><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/>Row,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Field,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Strategy&gt;</highlight></codeline>
<codeline lineno="306" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_block_precondi8332ef5e96df07be9da235c2e3175838" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::BlockPreconditioner&lt;Row,<sp/>Field,<sp/>Strategy&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" kindref="compound">RecipeSerializer</ref>&lt;solver::preconditioner::BlockPreconditioner&lt;Row,<sp/>Field,<sp/>Strategy&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="307"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_block_precondi8332ef5e96df07be9da235c2e3175838_1a42634e7d2b41ae781a73f6dd77899fa3" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1_block_preconditioner" kindref="compound">solver::preconditioner::BlockPreconditioner&lt;Row, Field, Strategy&gt;</ref>;</highlight></codeline>
<codeline lineno="308"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_block_precondi8332ef5e96df07be9da235c2e3175838_1a4381c9e41247163b7149709c4265121e" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.block&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="309"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_block_precondi8332ef5e96df07be9da235c2e3175838_1a658975e3db9ccbd7f22603f1e84fb4be" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;inverse&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_block_preconditioner_1a86797f12ecaca6b79df1e2e0514021bd" kindref="member">T::inverse</ref>)};</highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
<codeline lineno="312"><highlight class="normal"><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/>First,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Second,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Policy&gt;</highlight></codeline>
<codeline lineno="313" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_coupled_precon5f86489d6a54160e4f32d710885530a8" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::CoupledPreconditioner&lt;First,<sp/>Second,<sp/>Policy&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" kindref="compound">RecipeSerializer</ref>&lt;solver::preconditioner::CoupledPreconditioner&lt;First,<sp/>Second,<sp/>Policy&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="314"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_coupled_precon5f86489d6a54160e4f32d710885530a8_1a63ee90eab7ef6eedcb764730f7677be9" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1_coupled_preconditioner" kindref="compound">solver::preconditioner::CoupledPreconditioner&lt;First, Second, Policy&gt;</ref>;</highlight></codeline>
<codeline lineno="315"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_coupled_precon5f86489d6a54160e4f32d710885530a8_1a3ffd7734246ddd1d9a37b1b6409b5c01" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.coupled&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="316"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_coupled_precon5f86489d6a54160e4f32d710885530a8_1aa34d570b957d1df06170fec05a834038" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;first&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_coupled_preconditioner_1a1c983711e7ddc483cd78812f9748662a" kindref="member">T::first</ref>),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;second&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_coupled_preconditioner_1ad8c0a6194915537e4ebbf3b90c8ccef1" kindref="member">T::second</ref>),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;coupling&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_coupled_preconditioner_1a6d0a2dd58cbbb738fd2e8c27f4d23b4c" kindref="member">T::coupling</ref>)};</highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="318"><highlight class="normal"></highlight></codeline>
<codeline lineno="319"><highlight class="normal"><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/>Fields,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Constra</highlight><highlight class="keywordtype">int</highlight><highlight class="normal">s&gt;</highlight></codeline>
<codeline lineno="320" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_bordered_preco61576a59daf50c7dd924da92bf2d3074" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::preconditioner::BorderedPreconditioner&lt;Fields,<sp/>Constraints&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_recipe_serializer" kindref="compound">RecipeSerializer</ref>&lt;solver::preconditioner::BorderedPreconditioner&lt;Fields,<sp/>Constraints&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="321"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_bordered_preco61576a59daf50c7dd924da92bf2d3074_1a6337af2ca2e2a9789911b76db8fd39ae" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1solver_1_1preconditioner_1_1_bordered_preconditioner" kindref="compound">solver::preconditioner::BorderedPreconditioner&lt;Fields, Constraints&gt;</ref>;</highlight></codeline>
<codeline lineno="322"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_bordered_preco61576a59daf50c7dd924da92bf2d3074_1a3361fae93c3f117525dc1028b652c49a" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;preconditioner.bordered&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="323"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1preconditioner_1_1_bordered_preco61576a59daf50c7dd924da92bf2d3074_1aca1508b2628897db8ab18bdf8d5623d1" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;fields&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_bordered_preconditioner_1a0cfed2cf16ef9e1a7cf7b20b3462182d" kindref="member">T::fields</ref>),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;constraint_inverse&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1solver_1_1preconditioner_1_1_bordered_preconditioner_1ad97a67e90c711623e9ac0bec04d4b0b2" kindref="member">T::constraint_inverse</ref>)};</highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="325"><highlight class="normal"></highlight></codeline>
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="327" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::DiagonalNormalization&gt;<sp/>{</highlight></codeline>
<codeline lineno="328"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4_1a67abaee6a52774a70b1a0fec348ce092" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.diagonal&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4_1a3f83ff2528d5bd7e429f26bcb08c2009" kindref="member">save</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1normalization_1_1_diagonal_normalization" kindref="compound">solver::normalization::DiagonalNormalization</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="331"><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="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4_1a67abaee6a52774a70b1a0fec348ce092" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;state&quot;</highlight><highlight class="normal">,<sp/>std::vector&lt;double&gt;{value.state_factors().begin(),<sp/>value.state_factors().end()}),</highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;residual&quot;</highlight><highlight class="normal">,<sp/>std::vector&lt;double&gt;{value.residual_factors().begin(),<sp/>value.residual_factors().end()}));</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;solver::normalization::DiagonalNormalization&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4_1abcf629139cbdd09df8dd660ad3d4e466" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>factors<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1adb5114bee6aa1ea6612b96babf0ae8c2" kindref="member">read_object</ref>(node,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_diagonal_normalization_01_4_1a67abaee6a52774a70b1a0fec348ce092" kindref="member">key</ref>,<sp/>[](std::vector&lt;double&gt;<sp/>state,<sp/>std::vector&lt;double&gt;<sp/>residual)<sp/>{</highlight></codeline>
<codeline lineno="337"><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/><ref refid="namespaceserif_1_1solver_1_1normalization_1aabf5cac29f49d4d8d91c3f3725c8abfd" kindref="member">solver::normalization::make_diagonal_normalization</ref>(std::move(state),<sp/>std::move(residual));</highlight></codeline>
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>},<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;std::vector&lt;double&gt;</ref>&gt;(</highlight><highlight class="stringliteral">&quot;state&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;std::vector&lt;double&gt;</ref>&gt;(</highlight><highlight class="stringliteral">&quot;residual&quot;</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!factors)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(factors.error());<sp/>}</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!*factors)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(<ref refid="structserif_1_1utils_1_1serialize_1_1_error" kindref="compound">Error</ref>{</highlight><highlight class="stringliteral">&quot;&quot;</highlight><highlight class="normal">,<sp/>factors-&gt;error()});<sp/>}</highlight></codeline>
<codeline lineno="341"><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::move(**factors);</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="344"><highlight class="normal"></highlight></codeline>
<codeline lineno="346"><highlight class="normal"><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/>T&gt;</highlight></codeline>
<codeline lineno="347" refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref><sp/>{</highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer_1a397ef670bf0bbe3e6523e9aa153cc682" kindref="member">save</ref>(T)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer&lt;T&gt;::schema</ref>();<sp/>}</highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;T&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer_1aad3c7c506ad6cde78ba46edf3dee8932" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>valid<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ab00ec68c8966b7783b811342ba3202a5" kindref="member">validate_schema</ref>(node,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer&lt;T&gt;::schema</ref>());</highlight></codeline>
<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!valid)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(valid.error());<sp/>}</highlight></codeline>
<codeline lineno="354"><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/>T{};</highlight></codeline>
<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="356"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="357"><highlight class="normal"></highlight></codeline>
<codeline lineno="358"><highlight class="normal"><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&gt;</highlight></codeline>
<codeline lineno="359" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_reference_volume_metric_3_01_term_01_4_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::ReferenceVolumeMetric&lt;Term&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;solver::normalization::ReferenceVolumeMetric&lt;Term&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="360"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_reference_volume_metric_3_01_term_01_4_01_4_1a21a0caf8c8d2adf718823a0699e3f6cf" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.metric.volume&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_reference_volume_metric_3_01_term_01_4_01_4_1a3f61b1d0be083c49d31a225641d44ddd" kindref="member">schema</ref>()<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_reference_volume_metric_3_01_term_01_4_01_4_1a21a0caf8c8d2adf718823a0699e3f6cf" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;coordinate&quot;</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a2467d2dec6186bb040f634a1320c279a" kindref="member">term_schema&lt;Term&gt;</ref>()));<sp/>}</highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="364"><highlight class="normal"></highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="366" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01geometry_1_1deformation_1_1keys_1_1_surface_metric_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1geometry" kindref="compound">geometry</ref>::deformation::keys::SurfaceMetric&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;geometry::deformation::keys::SurfaceMetric&gt;<sp/>{</highlight></codeline>
<codeline lineno="367"><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_1utils_1_1serialize_1_1_serializer_3_01geometry_1_1deformation_1_1keys_1_1_surface_metric_01_4_1a8495d8afee5b6dced1d60f8bef044c8c" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.metric.surface&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="368"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01geometry_1_1deformation_1_1keys_1_1_surface_metric_01_4_1abe9d90c39b92d215c36b9df43070a0ae" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="371" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1normalization_1_1_surface_rows_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1model" kindref="compound">model</ref>::normalization::SurfaceRows&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;model::normalization::SurfaceRows&gt;<sp/>{</highlight></codeline>
<codeline lineno="372"><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_1utils_1_1serialize_1_1_serializer_3_01model_1_1normalization_1_1_surface_rows_01_4_1a6e36ed755bd76866fc4e18e78c0467ae" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.surface_rows&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="373"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01model_1_1normalization_1_1_surface_rows_01_4_1ab84738232f8c4d115116be38e55cc5a3" kindref="member">members</ref><sp/>=<sp/>std::tuple{};</highlight></codeline>
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="375"><highlight class="normal"></highlight></codeline>
<codeline lineno="376"><highlight class="normal"><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/>Volume,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Quantity,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Selection&gt;</highlight></codeline>
<codeline lineno="377" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_with_point_rows7f253a21848d4633f0a601821f4c7a4e" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::WithPointRows&lt;Volume,<sp/>Quantity,<sp/>Selection&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;solver::normalization::WithPointRows&lt;Volume,<sp/>Quantity,<sp/>Selection&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="378"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_with_point_rows7f253a21848d4633f0a601821f4c7a4e_1a21ed80769b64c8d0e0ccca5b4b132ea0" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.coordinate.point_rows&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_with_point_rows7f253a21848d4633f0a601821f4c7a4e_1af91dd14019ee709467d98dbb5ec0ff4a" kindref="member">schema</ref>()<sp/>{</highlight></codeline>
<codeline lineno="381"><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="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_with_point_rows7f253a21848d4633f0a601821f4c7a4e_1a21ed80769b64c8d0e0ccca5b4b132ea0" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;volume&quot;</highlight><highlight class="normal">,<sp/>Volume{}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;dimension&quot;</highlight><highlight class="normal">,<sp/>std::string{Quantity::identifier}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;selection&quot;</highlight><highlight class="normal">,<sp/>Selection{}));</highlight></codeline>
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="384"><highlight class="normal"></highlight></codeline>
<codeline lineno="385"><highlight class="normal"><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/>Quantity,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Metric&gt;</highlight></codeline>
<codeline lineno="386" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_physical_riesz_adabf6970471703d441b80d61686d40f" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::PhysicalRieszCoordinate&lt;Quantity,<sp/>Metric&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;solver::normalization::PhysicalRieszCoordinate&lt;Quantity,<sp/>Metric&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="387"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_physical_riesz_adabf6970471703d441b80d61686d40f_1a1f0240bde2e2227bd57e0e9e8a4e2ab6" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.coordinate.physical_riesz&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_physical_riesz_adabf6970471703d441b80d61686d40f_1ac934357506034c18e1399ff08b9ef5ac" kindref="member">schema</ref>()<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_physical_riesz_adabf6970471703d441b80d61686d40f_1a1f0240bde2e2227bd57e0e9e8a4e2ab6" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;dimension&quot;</highlight><highlight class="normal">,<sp/>std::string{Quantity::identifier}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;metric&quot;</highlight><highlight class="normal">,<sp/>Metric{}));<sp/>}</highlight></codeline>
<codeline lineno="390"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="391"><highlight class="normal"></highlight></codeline>
<codeline lineno="392"><highlight class="normal"><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/>Quantity,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Metric,<sp/>solver::normalization::ReferenceGeometry<sp/>Geometry&gt;</highlight></codeline>
<codeline lineno="393" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_r5cccab2fd1f566ce0d4cd0c4272c0de8" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::DimensionlessRieszCoordinate&lt;Quantity,<sp/>Metric,<sp/>Geometry&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;solver::normalization::DimensionlessRieszCoordinate&lt;Quantity,<sp/>Metric,<sp/>Geometry&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="394"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_r5cccab2fd1f566ce0d4cd0c4272c0de8_1a4e67a4fe78a32f2260b5ea9590ea3dad" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.coordinate.dimensionless_riesz&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_r5cccab2fd1f566ce0d4cd0c4272c0de8_1af43ddb448c6c642316b8986ae7ffb440" kindref="member">schema</ref>()<sp/>{</highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/>std::array<sp/>names{</highlight><highlight class="stringliteral">&quot;volume&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;surface&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;algebraic&quot;</highlight><highlight class="normal">};</highlight></codeline>
<codeline lineno="398"><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="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_dimensionless_r5cccab2fd1f566ce0d4cd0c4272c0de8_1a4e67a4fe78a32f2260b5ea9590ea3dad" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;dimension&quot;</highlight><highlight class="normal">,<sp/>std::string{Quantity::identifier}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;metric&quot;</highlight><highlight class="normal">,<sp/>Metric{}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;geometry&quot;</highlight><highlight class="normal">,<sp/>std::string{names[</highlight><highlight class="keyword">static_cast&lt;</highlight><highlight class="normal">std::size_t</highlight><highlight class="keyword">&gt;</highlight><highlight class="normal">(Geometry)]}));</highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="401"><highlight class="normal"></highlight></codeline>
<codeline lineno="402"><highlight class="normal"><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/>Key,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Target&gt;</highlight></codeline>
<codeline lineno="403" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_binding_3_01_key_00_01_target_01_4_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1utils_1_1dependencies" kindref="compound">dependencies</ref>::Binding&lt;Key,<sp/>Target&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;dependencies::Binding&lt;Key,<sp/>Target&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="404"><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_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_binding_3_01_key_00_01_target_01_4_01_4_1aa0018ebca30c6583b6897a485210bbfb" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.rule&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_binding_3_01_key_00_01_target_01_4_01_4_1a36f8d5cd16815b2dde055bb2c0b54202" kindref="member">schema</ref>()<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_binding_3_01_key_00_01_target_01_4_01_4_1aa0018ebca30c6583b6897a485210bbfb" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;coordinate&quot;</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a2467d2dec6186bb040f634a1320c279a" kindref="member">term_schema&lt;Key&gt;</ref>()),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;method&quot;</highlight><highlight class="normal">,<sp/>Target{}));<sp/>}</highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="408"><highlight class="normal"></highlight></codeline>
<codeline lineno="409"><highlight class="normal"><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/>Bindings&gt;</highlight></codeline>
<codeline lineno="410" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_bindings_3_01_bindings_8_8_8_01_4_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1utils_1_1dependencies" kindref="compound">dependencies</ref>::Bindings&lt;Bindings...&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;dependencies::Bindings&lt;Bindings...&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="411"><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_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_bindings_3_01_bindings_8_8_8_01_4_01_4_1a7313a12eceafe425974303c9af15dabd" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.rules&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_bindings_3_01_bindings_8_8_8_01_4_01_4_1a3bdae87870e68e3adb24690cc3fe27bb" kindref="member">schema</ref>()<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01dependencies_1_1_bindings_3_01_bindings_8_8_8_01_4_01_4_1a7313a12eceafe425974303c9af15dabd" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;rules&quot;</highlight><highlight class="normal">,<sp/>std::tuple&lt;Bindings...&gt;{}));<sp/>}</highlight></codeline>
<codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="415"><highlight class="normal"></highlight></codeline>
<codeline lineno="416"><highlight class="normal"><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/>Values,<sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Res</highlight><highlight class="keywordtype">id</highlight><highlight class="normal">uals&gt;</highlight></codeline>
<codeline lineno="417" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_p405753c19e233a35f6ab15d812b35123" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1solver" kindref="compound">solver</ref>::normalization::NormalizationPlan&lt;Values,<sp/>Residuals&gt;&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_schema_serializer" kindref="compound">SchemaSerializer</ref>&lt;solver::normalization::NormalizationPlan&lt;Values,<sp/>Residuals&gt;&gt;<sp/>{</highlight></codeline>
<codeline lineno="418"><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_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_p405753c19e233a35f6ab15d812b35123_1abf325d2c5042b6ad54f2cfa489c59bb6" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;normalization.plan&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="420"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_p405753c19e233a35f6ab15d812b35123_1a305fbb311fd3f3aad7766fbd64864181" kindref="member">schema</ref>()<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01solver_1_1normalization_1_1_normalization_p405753c19e233a35f6ab15d812b35123_1abf325d2c5042b6ad54f2cfa489c59bb6" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;values&quot;</highlight><highlight class="normal">,<sp/>Values{}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;residuals&quot;</highlight><highlight class="normal">,<sp/>Residuals{}));<sp/>}</highlight></codeline>
<codeline lineno="421"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="422"><highlight class="normal"></highlight></codeline>
<codeline lineno="423"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="424" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1discretization" kindref="compound">discretization</ref>::quadrature::RuleControl&gt;<sp/>:<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_struct_serializer" kindref="compound">StructSerializer</ref>&lt;discretization::quadrature::RuleControl&gt;<sp/>{</highlight></codeline>
<codeline lineno="425"><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_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4_1a31c2105556ce44d2ae4ba79f9fb5eba8" kindref="member">T</ref><sp/>=<sp/><ref refid="structserif_1_1discretization_1_1quadrature_1_1_rule_control" kindref="compound">discretization::quadrature::RuleControl</ref>;</highlight></codeline>
<codeline lineno="426"><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_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4_1a58957d68d0accf41ee4d1ab28c7ca55d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;quadrature.control&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="427"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4_1af858e9217bb1e850385cc591d31f5124" kindref="member">members</ref><sp/>=<sp/>std::tuple{<ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;fixed_order&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1discretization_1_1quadrature_1_1_rule_control_1a5ec76c518caa42895574fa1635c5ab1e" kindref="member">T::fixed_order</ref>),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a57bf01379dd9f09662f2eca940c2287a" kindref="member">member_field</ref>(</highlight><highlight class="stringliteral">&quot;boost&quot;</highlight><highlight class="normal">,<sp/>&amp;<ref refid="structserif_1_1discretization_1_1quadrature_1_1_rule_control_1a2e3abf71283bcb37ace1cddf3a0b2e6e" kindref="member">T::boost</ref>)};</highlight></codeline>
<codeline lineno="429"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4_1af652d80a165aafccbb086a7ece991551" kindref="member">valid</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_control_01_4_1a31c2105556ce44d2ae4ba79f9fb5eba8" kindref="member">T</ref>&amp;<sp/>value)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>!value.fixed_order<sp/>||<sp/>*value.fixed_order<sp/>&gt;=<sp/>0;<sp/>}</highlight></codeline>
<codeline lineno="430"><highlight class="normal"></highlight></codeline>
<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="432"><highlight class="normal"></highlight></codeline>
<codeline lineno="433"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="434" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1discretization" kindref="compound">discretization</ref>::quadrature::RuleSet&gt;<sp/>{</highlight></codeline>
<codeline lineno="435"><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_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a1dd08a0cb6602f3bd98e259d10d14577" kindref="member">T</ref><sp/>=<sp/><ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set" kindref="compound">discretization::quadrature::RuleSet</ref>;</highlight></codeline>
<codeline lineno="436"><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_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a4fa929ba96bfc80215a121dda047444d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;quadrature.rules&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="438"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1aa0a308617757a8dc08ac88bd5b2f515f" kindref="member">save</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a1dd08a0cb6602f3bd98e259d10d14577" kindref="member">T</ref>&amp;<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="439"><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">Role<sp/>=<sp/><ref refid="namespaceserif_1_1discretization_1_1quadrature_1a2170ba7c65dd986e68afb2cc85f2ad88" kindref="member">discretization::quadrature::QuadratureRole</ref>;</highlight></codeline>
<codeline lineno="440"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/>result<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a4fa929ba96bfc80215a121dda047444d" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;discretization&quot;</highlight><highlight class="normal">,<sp/>value.role_control(Role::discretization)),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;preconditioner&quot;</highlight><highlight class="normal">,<sp/>value.role_control(Role::preconditioner)),</highlight></codeline>
<codeline lineno="441"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;diagnostic&quot;</highlight><highlight class="normal">,<sp/>value.role_control(Role::diagnostic)),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;projection&quot;</highlight><highlight class="normal">,<sp/>value.role_control(Role::projection)),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;fallback&quot;</highlight><highlight class="normal">,<sp/>value.fallback_control()));</highlight></codeline>
<codeline lineno="442"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(value.begin()<sp/>!=<sp/>value.end())<sp/>{</highlight></codeline>
<codeline lineno="443"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/>forms<sp/>=<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(</highlight><highlight class="stringliteral">&quot;quadrature.form_rules&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="444"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>forms.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.emplace(</highlight><highlight class="stringliteral">&quot;reconstruction&quot;</highlight><highlight class="normal">,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>{.type<sp/>=<sp/></highlight><highlight class="stringliteral">&quot;unsupported&quot;</highlight><highlight class="normal">,<sp/>.value<sp/>=<sp/>std::string{</highlight><highlight class="stringliteral">&quot;Form-specific<sp/>quadrature<sp/>controls<sp/>require<sp/>registered<sp/>owning<sp/>form<sp/>descriptors.&quot;</highlight><highlight class="normal">}});</highlight></codeline>
<codeline lineno="445"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::size_t<sp/>index<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="446"><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="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&amp;<sp/>rule<sp/>:<sp/>value)<sp/>{</highlight></codeline>
<codeline lineno="447"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>forms.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.emplace(std::to_string(index++),<sp/></highlight><highlight class="keywordtype">object</highlight><highlight class="normal">(</highlight><highlight class="stringliteral">&quot;quadrature.form_rule&quot;</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="448"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;name&quot;</highlight><highlight class="normal">,<sp/>std::string{rule.form.name}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;trial_field&quot;</highlight><highlight class="normal">,<sp/>std::string{rule.form.trial.field.name}),</highlight></codeline>
<codeline lineno="449"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;trial_term&quot;</highlight><highlight class="normal">,<sp/>std::string{rule.form.trial.name}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;test_field&quot;</highlight><highlight class="normal">,<sp/>std::string{rule.form.test.field.name}),</highlight></codeline>
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;test_term&quot;</highlight><highlight class="normal">,<sp/>std::string{rule.form.test.name}),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;control&quot;</highlight><highlight class="normal">,<sp/>rule.control)));</highlight></codeline>
<codeline lineno="451"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.emplace(</highlight><highlight class="stringliteral">&quot;forms&quot;</highlight><highlight class="normal">,<sp/>std::move(forms));</highlight></codeline>
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="454"><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/>result;</highlight></codeline>
<codeline lineno="455"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="457"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;T&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1af02a55bd6446798163fc97d87588615a" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(node.<ref refid="structserif_1_1utils_1_1serialize_1_1_node_1ac511083838516727510ce4edc0ab52ca" kindref="member">children</ref>.contains(</highlight><highlight class="stringliteral">&quot;forms&quot;</highlight><highlight class="normal">))<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected(<ref refid="structserif_1_1utils_1_1serialize_1_1_error" kindref="compound">Error</ref>{</highlight><highlight class="stringliteral">&quot;forms&quot;</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;Form-specific<sp/>quadrature<sp/>descriptors<sp/>are<sp/>not<sp/>reconstructible<sp/>by<sp/>this<sp/>loader.&quot;</highlight><highlight class="normal">});<sp/>}</highlight></codeline>
<codeline lineno="459"><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">Control<sp/>=<sp/><ref refid="structserif_1_1discretization_1_1quadrature_1_1_rule_control" kindref="compound">discretization::quadrature::RuleControl</ref>;</highlight></codeline>
<codeline lineno="460"><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="namespaceserif_1_1utils_1_1serialize_1adb5114bee6aa1ea6612b96babf0ae8c2" kindref="member">read_object</ref>(node,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a4fa929ba96bfc80215a121dda047444d" kindref="member">key</ref>,<sp/>[](Control<sp/><ref refid="namespaceserif_1_1discretization" kindref="compound">discretization</ref>,<sp/>Control<sp/>preconditioner,<sp/>Control<sp/>diagnostic,<sp/>Control<sp/><ref refid="namespaceserif_1_1utils_1_1projection" kindref="compound">projection</ref>,<sp/>Control<sp/>fallback)<sp/>{</highlight></codeline>
<codeline lineno="461"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal">Role<sp/>=<sp/><ref refid="namespaceserif_1_1discretization_1_1quadrature_1a2170ba7c65dd986e68afb2cc85f2ad88" kindref="member">discretization::quadrature::QuadratureRole</ref>;</highlight></codeline>
<codeline lineno="462"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_rule_set_01_4_1a1dd08a0cb6602f3bd98e259d10d14577" kindref="member">T</ref><sp/>result;</highlight></codeline>
<codeline lineno="463"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set_1a9670755a2b27b0f4792543e774308a9e" kindref="member">set_role_control</ref>(Role::discretization,<sp/><ref refid="namespaceserif_1_1discretization" kindref="compound">discretization</ref>);</highlight></codeline>
<codeline lineno="464"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set_1a9670755a2b27b0f4792543e774308a9e" kindref="member">set_role_control</ref>(Role::preconditioner,<sp/>preconditioner);</highlight></codeline>
<codeline lineno="465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set_1a9670755a2b27b0f4792543e774308a9e" kindref="member">set_role_control</ref>(Role::diagnostic,<sp/>diagnostic);</highlight></codeline>
<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set_1a9670755a2b27b0f4792543e774308a9e" kindref="member">set_role_control</ref>(Role::projection,<sp/><ref refid="namespaceserif_1_1utils_1_1projection" kindref="compound">projection</ref>);</highlight></codeline>
<codeline lineno="467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set_1a5f79ff06d823e4b87e88c7a0fdf93eb7" kindref="member">set_fallback_control</ref>(fallback);</highlight></codeline>
<codeline lineno="468"><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="469"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>},<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Control&gt;</ref>(</highlight><highlight class="stringliteral">&quot;discretization&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Control&gt;</ref>(</highlight><highlight class="stringliteral">&quot;preconditioner&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Control&gt;</ref>(</highlight><highlight class="stringliteral">&quot;diagnostic&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Control&gt;</ref>(</highlight><highlight class="stringliteral">&quot;projection&quot;</highlight><highlight class="normal">),<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;Control&gt;</ref>(</highlight><highlight class="stringliteral">&quot;fallback&quot;</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="470"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="471"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="472"><highlight class="normal"></highlight></codeline>
<codeline lineno="473"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;&gt;</highlight></codeline>
<codeline lineno="474" refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer" kindref="compound">Serializer</ref>&lt;<ref refid="namespaceserif_1_1discretization" kindref="compound">discretization</ref>::quadrature::Policy&gt;<sp/>{</highlight></codeline>
<codeline lineno="475"><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_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4_1a776727e479fe9f7b58c08653e536584d" kindref="member">key</ref><sp/>=<sp/></highlight><highlight class="stringliteral">&quot;quadrature.policy&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="477"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4_1a121b28e34c24588706eef8ff5fd93afc" kindref="member">save</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1quadrature_1_1_policy" kindref="compound">discretization::quadrature::Policy</ref>&amp;<sp/>value)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1accd9d8a1543b90311f64896a155c6e1c" kindref="member">object</ref>(<ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4_1a776727e479fe9f7b58c08653e536584d" kindref="member">key</ref>,<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a73c789fd95f83d2f547facf07bc3ea79" kindref="member">field</ref>(</highlight><highlight class="stringliteral">&quot;rules&quot;</highlight><highlight class="normal">,<sp/>value.rules()));<sp/>}</highlight></codeline>
<codeline lineno="479"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1ace9e0af29889a767ef1c95a09a4b7265" kindref="member">Result&lt;discretization::quadrature::Policy&gt;</ref><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4_1a513827411e9f806028e9faa09b6b88ad" kindref="member">load</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_node" kindref="compound">Node</ref>&amp;<sp/>node)<sp/>{</highlight></codeline>
<codeline lineno="480"><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="namespaceserif_1_1utils_1_1serialize_1adb5114bee6aa1ea6612b96babf0ae8c2" kindref="member">read_object</ref>(node,<sp/><ref refid="structserif_1_1utils_1_1serialize_1_1_serializer_3_01discretization_1_1quadrature_1_1_policy_01_4_1a776727e479fe9f7b58c08653e536584d" kindref="member">key</ref>,<sp/>[](<ref refid="classserif_1_1discretization_1_1quadrature_1_1_rule_set" kindref="compound">discretization::quadrature::RuleSet</ref><sp/>rules)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1quadrature_1_1_policy" kindref="compound">discretization::quadrature::Policy</ref>{std::move(rules)};<sp/>},<sp/><ref refid="namespaceserif_1_1utils_1_1serialize_1a019c595419bddb41b7a05042e2f6d611" kindref="member">member&lt;discretization::quadrature::RuleSet&gt;</ref>(</highlight><highlight class="stringliteral">&quot;rules&quot;</highlight><highlight class="normal">));</highlight></codeline>
<codeline lineno="481"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="482"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="483"><highlight class="normal">}</highlight></codeline>
</programlisting>
<location file="src/include/serif/utils/serialize/numerics.hpp"/>
</compounddef>
</doxygen>