Files
MeanField_SERiF/docs/xml/term__binding_8hpp.xml

1109 lines
60 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="term__binding_8hpp" kind="file" language="C++">
<compoundname>term_binding.hpp</compoundname>
<includes local="no">algorithm</includes>
<includes refid="discretization_2blocks_2traits_8hpp" local="yes">serif/discretization/blocks/traits.hpp</includes>
<includes refid="discretization_2domain_2schema_2concepts_8hpp" local="yes">serif/discretization/domain/schema/concepts.hpp</includes>
<includes refid="dof__map_8hpp" local="yes">serif/backend/mfem/discretization/dof_map.hpp</includes>
<includes refid="errors_8hpp" local="yes">serif/utils/error/errors.hpp</includes>
<includedby refid="dof__selection_8hpp" local="yes">src/include/serif/backend/mfem/discretization/dof_selection.hpp</includedby>
<includedby refid="mass__diagonal_8hpp" local="yes">src/include/serif/backend/mfem/discretization/mass_diagonal.hpp</includedby>
<includedby refid="term__coefficients_8hpp" local="yes">src/include/serif/backend/mfem/discretization/term_coefficients.hpp</includedby>
<includedby refid="backend_2mfem_2model_2finite__elements_8hpp" local="yes">src/include/serif/backend/mfem/model/finite_elements.hpp</includedby>
<incdepgraph>
<node id="53">
<label>serif/backend/mfem/discretization/dof_map.hpp</label>
<link refid="dof__map_8hpp"/>
<childnode refid="54" relation="include">
</childnode>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="75" relation="include">
</childnode>
<childnode refid="76" relation="include">
</childnode>
<childnode refid="77" relation="include">
</childnode>
<childnode refid="61" relation="include">
</childnode>
<childnode refid="78" relation="include">
</childnode>
</node>
<node id="57">
<label>serif/backend/mfem/discretization/reconstruction.hpp</label>
<link refid="reconstruction_8hpp"/>
<childnode refid="56" relation="include">
</childnode>
<childnode refid="58" relation="include">
</childnode>
<childnode refid="59" relation="include">
</childnode>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="60" relation="include">
</childnode>
</node>
<node id="1">
<label>src/include/serif/backend/mfem/discretization/term_binding.hpp</label>
<link refid="term__binding_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="32" relation="include">
</childnode>
<childnode refid="53" relation="include">
</childnode>
<childnode refid="61" relation="include">
</childnode>
</node>
<node id="9">
<label>serif/dimensions/dimensions.hpp</label>
<link refid="dimensions_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="10">
<label>serif/dimensions/quantities.hpp</label>
<link refid="quantities_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="16">
<label>serif/discretization/blocks/base.hpp</label>
<link refid="base_8hpp"/>
</node>
<node id="5">
<label>serif/discretization/blocks/concepts.hpp</label>
<link refid="discretization_2blocks_2concepts_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
</node>
<node id="6">
<label>serif/discretization/blocks/fields.hpp</label>
<link refid="fields_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="3">
<label>serif/discretization/blocks/traits.hpp</label>
<link refid="discretization_2blocks_2traits_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
</node>
<node id="22">
<label>serif/discretization/domain/concepts.hpp</label>
<link refid="discretization_2domain_2concepts_8hpp"/>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="25" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="40">
<label>serif/discretization/domain/ids/boundary.hpp</label>
<link refid="ids_2boundary_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
</node>
<node id="39">
<label>serif/discretization/domain/ids/concepts.hpp</label>
<link refid="discretization_2domain_2ids_2concepts_8hpp"/>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
</node>
<node id="41">
<label>serif/discretization/domain/ids/domain.hpp</label>
<link refid="domain_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
</node>
<node id="35">
<label>serif/discretization/domain/ids/lists/concepts.hpp</label>
<link refid="discretization_2domain_2ids_2lists_2concepts_8hpp"/>
<childnode refid="36" relation="include">
</childnode>
</node>
<node id="37">
<label>serif/discretization/domain/ids/lists/lists.hpp</label>
<link refid="lists_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="36">
<label>serif/discretization/domain/ids/lists/traits.hpp</label>
<link refid="discretization_2domain_2ids_2lists_2traits_8hpp"/>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="38">
<label>serif/discretization/domain/ids/validation/concepts.hpp</label>
<link refid="discretization_2domain_2ids_2validation_2concepts_8hpp"/>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
</node>
<node id="42">
<label>serif/discretization/domain/ids/validation/unique_ids.hpp</label>
<link refid="unique__ids_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="28">
<label>serif/discretization/domain/physical_domains.hpp</label>
<link refid="physical__domains_8hpp"/>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
</node>
<node id="48">
<label>serif/discretization/domain/relation/concepts.hpp</label>
<link refid="discretization_2domain_2relation_2concepts_8hpp"/>
<childnode refid="49" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="45">
<label>serif/discretization/domain/relation/lists/concepts.hpp</label>
<link refid="discretization_2domain_2relation_2lists_2concepts_8hpp"/>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="47">
<label>serif/discretization/domain/relation/lists/relation_list.hpp</label>
<link refid="relation__list_8hpp"/>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="46">
<label>serif/discretization/domain/relation/lists/traits.hpp</label>
<link refid="discretization_2domain_2relation_2lists_2traits_8hpp"/>
<childnode refid="47" relation="include">
</childnode>
</node>
<node id="49">
<label>serif/discretization/domain/relation/relations.hpp</label>
<link refid="discretization_2domain_2relation_2relations_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="50">
<label>serif/discretization/domain/relation/validation/concepts.hpp</label>
<link refid="discretization_2domain_2relation_2validation_2concepts_8hpp"/>
<childnode refid="51" relation="include">
</childnode>
</node>
<node id="51">
<label>serif/discretization/domain/relation/validation/validation.hpp</label>
<link refid="discretization_2domain_2relation_2validation_2validation_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="47" relation="include">
</childnode>
<childnode refid="52" relation="include">
</childnode>
</node>
<node id="52">
<label>serif/discretization/domain/resolver.hpp</label>
<link refid="resolver_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="32">
<label>serif/discretization/domain/schema/concepts.hpp</label>
<link refid="discretization_2domain_2schema_2concepts_8hpp"/>
<childnode refid="33" relation="include">
</childnode>
</node>
<node id="34">
<label>serif/discretization/domain/schema/domain_schema.hpp</label>
<link refid="domain__schema_8hpp"/>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
<childnode refid="52" relation="include">
</childnode>
</node>
<node id="33">
<label>serif/discretization/domain/schema/traits.hpp</label>
<link refid="discretization_2domain_2schema_2traits_8hpp"/>
<childnode refid="34" relation="include">
</childnode>
</node>
<node id="26">
<label>serif/discretization/domain/types.hpp</label>
<link refid="discretization_2domain_2types_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
</node>
<node id="17">
<label>serif/discretization/functional_space/space.hpp</label>
<link refid="space_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
</node>
<node id="60">
<label>serif/discretization/reconstruction/surface_power.hpp</label>
<link refid="surface__power_8hpp"/>
<childnode refid="54" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="61" relation="include">
</childnode>
</node>
<node id="19">
<label>serif/meta/enums.hpp</label>
<link refid="enums_8hpp"/>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="30">
<label>serif/meta/names.hpp</label>
<link refid="names_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="72">
<label>serif/utils/error/codes.hpp</label>
<link refid="codes_8hpp"/>
<childnode refid="64" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
</node>
<node id="61">
<label>serif/utils/error/errors.hpp</label>
<link refid="errors_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="62" relation="include">
</childnode>
<childnode refid="63" relation="include">
</childnode>
<childnode refid="64" relation="include">
</childnode>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="65" relation="include">
</childnode>
<childnode refid="66" relation="include">
</childnode>
<childnode refid="70" relation="include">
</childnode>
<childnode refid="72" relation="include">
</childnode>
<childnode refid="73" relation="include">
</childnode>
</node>
<node id="78">
<label>serif/utils/error/nonfinite.hpp</label>
<link refid="nonfinite_8hpp"/>
<childnode refid="75" relation="include">
</childnode>
</node>
<node id="70">
<label>serif/utils/misc/concepts/exceptions.hpp</label>
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
<childnode refid="71" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="15">
<label>serif/utils/misc/concepts/numeric.hpp</label>
<link refid="numeric_8hpp"/>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="43">
<label>serif/utils/misc/concepts/type_uniqueness.hpp</label>
<link refid="concepts_2type__uniqueness_8hpp"/>
<childnode refid="44" relation="include">
</childnode>
</node>
<node id="14">
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
<link refid="cleaning_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="27">
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
<link refid="variadic__cleaning_8hpp"/>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="66">
<label>serif/utils/misc/terminal/colors.hpp</label>
<link refid="colors_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="62" relation="include">
</childnode>
<childnode refid="67" relation="include">
</childnode>
<childnode refid="68" relation="include">
</childnode>
<childnode refid="69" relation="include">
</childnode>
</node>
<node id="44">
<label>serif/utils/misc/traits/type_uniqueness.hpp</label>
<link refid="traits_2type__uniqueness_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="73">
<label>serif/utils/types/strings.hpp</label>
<link refid="types_2strings_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="74" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
</node>
<node id="29">
<label>serif/utils/types/type_list.hpp</label>
<link refid="type__list_8hpp"/>
</node>
<node id="2">
<label>algorithm</label>
</node>
<node id="7">
<label>array</label>
</node>
<node id="54">
<label>cmath</label>
</node>
<node id="11">
<label>compare</label>
</node>
<node id="12">
<label>concepts</label>
</node>
<node id="23">
<label>cstddef</label>
</node>
<node id="64">
<label>cstdint</label>
</node>
<node id="62">
<label>cstdio</label>
</node>
<node id="67">
<label>cstdlib</label>
</node>
<node id="71">
<label>exception</label>
</node>
<node id="18">
<label>format</label>
</node>
<node id="74">
<label>iostream</label>
</node>
<node id="21">
<label>magic_enum/magic_enum_all.hpp</label>
</node>
<node id="56">
<label>memory</label>
</node>
<node id="59">
<label>mfem/fem/fe/fe_base.hpp</label>
</node>
<node id="76">
<label>mfem/fem/fespace.hpp</label>
</node>
<node id="77">
<label>mfem/fem/pfespace.hpp</label>
</node>
<node id="31">
<label>nameof.hpp</label>
</node>
<node id="25">
<label>numeric</label>
</node>
<node id="55">
<label>optional</label>
</node>
<node id="24">
<label>span</label>
</node>
<node id="75">
<label>stdexcept</label>
</node>
<node id="63">
<label>string</label>
</node>
<node id="8">
<label>string_view</label>
</node>
<node id="13">
<label>tuple</label>
</node>
<node id="4">
<label>type_traits</label>
</node>
<node id="69">
<label>unistd.h</label>
</node>
<node id="20">
<label>unordered_map</label>
</node>
<node id="68">
<label>utility</label>
</node>
<node id="58">
<label>vector</label>
</node>
<node id="65">
<label>version</label>
</node>
</incdepgraph>
<invincdepgraph>
<node id="7">
<label>src/compile_time_checks/serif/geometry/surface_boundary.cpp</label>
<link refid="surface__boundary_8cpp"/>
</node>
<node id="47">
<label>src/compile_time_checks/serif/model/finite_elements.cpp</label>
<link refid="compile__time__checks_2serif_2model_2finite__elements_8cpp"/>
</node>
<node id="42">
<label>src/compile_time_checks/serif/model/scalar_row.cpp</label>
<link refid="compile__time__checks_2serif_2model_2scalar__row_8cpp"/>
</node>
<node id="12">
<label>src/compile_time_checks/serif/model/state.cpp</label>
<link refid="state_8cpp"/>
</node>
<node id="38">
<label>src/compile_time_checks/serif/operators/computation_owners.cpp</label>
<link refid="computation__owners_8cpp"/>
</node>
<node id="3">
<label>src/include/serif/backend/mfem/discretization/boundary_trace.hpp</label>
<link refid="boundary__trace_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
</node>
<node id="2">
<label>src/include/serif/backend/mfem/discretization/dof_selection.hpp</label>
<link refid="dof__selection_8hpp"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
</node>
<node id="32">
<label>src/include/serif/backend/mfem/discretization/field_values.hpp</label>
<link refid="field__values_8hpp"/>
<childnode refid="33" relation="include">
</childnode>
</node>
<node id="28">
<label>src/include/serif/backend/mfem/discretization/mass_diagonal.hpp</label>
<link refid="mass__diagonal_8hpp"/>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="1">
<label>src/include/serif/backend/mfem/discretization/term_binding.hpp</label>
<link refid="term__binding_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
</node>
<node id="31">
<label>src/include/serif/backend/mfem/discretization/term_coefficients.hpp</label>
<link refid="term__coefficients_8hpp"/>
<childnode refid="32" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="34" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
</node>
<node id="6">
<label>src/include/serif/backend/mfem/geometry/surface/boundary_computations.hpp</label>
<link refid="boundary__computations_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="4">
<label>src/include/serif/backend/mfem/geometry/surface/boundary_data.hpp</label>
<link refid="boundary__data_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
</node>
<node id="5">
<label>src/include/serif/backend/mfem/geometry/surface/boundary_inputs.hpp</label>
<link refid="boundary__inputs_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="24">
<label>src/include/serif/backend/mfem/geometry/surface/boundary_rows.hpp</label>
<link refid="boundary__rows_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="25" relation="include">
</childnode>
</node>
<node id="8">
<label>src/include/serif/backend/mfem/geometry/surface/pressure_boundary.hpp</label>
<link refid="geometry_2surface_2pressure__boundary_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="25">
<label>src/include/serif/backend/mfem/geometry/surface/pressure_field_block.hpp</label>
<link refid="pressure__field__block_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
</node>
<node id="9">
<label>src/include/serif/backend/mfem/model/binding.hpp</label>
<link refid="backend_2mfem_2model_2binding_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
</node>
<node id="39">
<label>src/include/serif/backend/mfem/model/computations/interior.hpp</label>
<link refid="interior_8hpp"/>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="27">
<label>src/include/serif/backend/mfem/model/computations/potential_infinity.hpp</label>
<link refid="potential__infinity_8hpp"/>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="22">
<label>src/include/serif/backend/mfem/model/computations/pressure_boundary.hpp</label>
<link refid="model_2computations_2pressure__boundary_8hpp"/>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="41">
<label>src/include/serif/backend/mfem/model/computations/scalar_row.hpp</label>
<link refid="computations_2scalar__row_8hpp"/>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
</node>
<node id="40">
<label>src/include/serif/backend/mfem/model/computations/surface_potential.hpp</label>
<link refid="backend_2mfem_2model_2computations_2surface__potential_8hpp"/>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="44">
<label>src/include/serif/backend/mfem/model/discretization.hpp</label>
<link refid="model_2discretization_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="49" relation="include">
</childnode>
</node>
<node id="11">
<label>src/include/serif/backend/mfem/model/equilibrium.hpp</label>
<link refid="backend_2mfem_2model_2equilibrium_8hpp"/>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
</node>
<node id="10">
<label>src/include/serif/backend/mfem/model/equilibrium_evaluator.hpp</label>
<link refid="equilibrium__evaluator_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="45">
<label>src/include/serif/backend/mfem/model/finite_elements.hpp</label>
<link refid="backend_2mfem_2model_2finite__elements_8hpp"/>
<childnode refid="46" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
</node>
<node id="20">
<label>src/include/serif/backend/mfem/model/graph.hpp</label>
<link refid="backend_2mfem_2model_2graph_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="52">
<label>src/include/serif/backend/mfem/model/inputs.hpp</label>
<link refid="model_2inputs_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="23">
<label>src/include/serif/backend/mfem/model/normalization/computations.hpp</label>
<link refid="backend_2mfem_2model_2normalization_2computations_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
</node>
<node id="34">
<label>src/include/serif/backend/mfem/model/state.hpp</label>
<link refid="backend_2mfem_2model_2state_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="55">
<label>src/include/serif/backend/mfem/model/volume.hpp</label>
<link refid="volume_8hpp"/>
<childnode refid="39" relation="include">
</childnode>
</node>
<node id="56">
<label>src/include/serif/backend/mfem/model/volume_actions.hpp</label>
<link refid="volume__actions_8hpp"/>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
</node>
<node id="53">
<label>src/include/serif/backend/mfem/model/volume_displacement.hpp</label>
<link refid="volume__displacement_8hpp"/>
<childnode refid="20" relation="include">
</childnode>
</node>
<node id="35">
<label>src/include/serif/backend/mfem/operators/element_preparation.hpp</label>
<link refid="element__preparation_8hpp"/>
<childnode refid="36" relation="include">
</childnode>
</node>
<node id="57">
<label>src/include/serif/backend/mfem/operators/jacobian_operator.hpp</label>
<link refid="jacobian__operator_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
</node>
<node id="54">
<label>src/include/serif/backend/mfem/operators/volume_application.hpp</label>
<link refid="volume__application_8hpp"/>
<childnode refid="55" relation="include">
</childnode>
<childnode refid="56" relation="include">
</childnode>
<childnode refid="57" relation="include">
</childnode>
<childnode refid="58" relation="include">
</childnode>
</node>
<node id="37">
<label>src/include/serif/backend/mfem/operators/volume_computations.hpp</label>
<link refid="volume__computations_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
</node>
<node id="43">
<label>src/include/serif/backend/mfem/operators/volume_data.hpp</label>
<link refid="volume__data_8hpp"/>
<childnode refid="44" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="36" relation="include">
</childnode>
<childnode refid="60" relation="include">
</childnode>
</node>
<node id="58">
<label>src/include/serif/backend/mfem/operators/volume_field_block.hpp</label>
<link refid="volume__field__block_8hpp"/>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="59" relation="include">
</childnode>
</node>
<node id="51">
<label>src/include/serif/backend/mfem/operators/volume_inputs.hpp</label>
<link refid="volume__inputs_8hpp"/>
<childnode refid="52" relation="include">
</childnode>
<childnode refid="53" relation="include">
</childnode>
<childnode refid="54" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="36">
<label>src/include/serif/backend/mfem/operators/volume_stages.hpp</label>
<link refid="volume__stages_8hpp"/>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="50">
<label>src/include/serif/backend/mfem/serialize/configuration.hpp</label>
<link refid="backend_2mfem_2serialize_2configuration_8hpp"/>
</node>
<node id="49">
<label>src/include/serif/backend/mfem/serialize/discretization.hpp</label>
<link refid="serialize_2discretization_8hpp"/>
<childnode refid="50" relation="include">
</childnode>
</node>
<node id="60">
<label>src/include/serif/backend/mfem/serialize/options.hpp</label>
<link refid="backend_2mfem_2serialize_2options_8hpp"/>
</node>
<node id="21">
<label>src/include/serif/backend/mfem/solver/admissibility/geometry.hpp</label>
<link refid="geometry_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
</node>
<node id="14">
<label>src/include/serif/backend/mfem/solver/equilibrium.hpp</label>
<link refid="backend_2mfem_2solver_2equilibrium_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="13">
<label>src/include/serif/backend/mfem/solver/nonlinear/stellar_problem.hpp</label>
<link refid="stellar__problem_8hpp"/>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="29">
<label>src/include/serif/backend/mfem/solver/normalization/metric_computations.hpp</label>
<link refid="metric__computations_8hpp"/>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="18">
<label>src/include/serif/backend/mfem/solver/seed/state.hpp</label>
<link refid="backend_2mfem_2solver_2seed_2state_8hpp"/>
<childnode refid="19" relation="include">
</childnode>
</node>
<node id="46">
<label>src/include/serif/model/finite_elements.hpp</label>
<link refid="model_2finite__elements_8hpp"/>
<childnode refid="47" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="16">
<label>src/include/serif/solver/continuation/equilibrium.hpp</label>
<link refid="solver_2continuation_2equilibrium_8hpp"/>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="15">
<label>src/include/serif/solver/equilibrium.hpp</label>
<link refid="solver_2equilibrium_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="19">
<label>src/include/serif/solver/seed/state.hpp</label>
<link refid="solver_2seed_2state_8hpp"/>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="17">
<label>src/include/serif/solver/solver.hpp</label>
<link refid="solver_2solver_8hpp"/>
</node>
<node id="26">
<label>src/lib/serif/backend/mfem/discretization/boundary_trace.cpp</label>
<link refid="boundary__trace_8cpp"/>
</node>
<node id="30">
<label>src/lib/serif/backend/mfem/discretization/mass_diagonal.cpp</label>
<link refid="mass__diagonal_8cpp"/>
</node>
<node id="48">
<label>src/lib/serif/backend/mfem/model/finite_elements.cpp</label>
<link refid="lib_2serif_2backend_2mfem_2model_2finite__elements_8cpp"/>
</node>
<node id="59">
<label>src/lib/serif/backend/mfem/model/system_selection.cpp</label>
<link refid="system__selection_8cpp"/>
</node>
<node id="33">
<label>src/lib/serif/backend/mfem/serialize/top.cpp</label>
<link refid="backend_2mfem_2serialize_2top_8cpp"/>
</node>
</invincdepgraph>
<innerclass refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding" prot="public">serif::discretization::backend::mfem::TermBinding</innerclass>
<innernamespace refid="namespaceserif">serif</innernamespace>
<innernamespace refid="namespaceserif_1_1discretization">serif::discretization</innernamespace>
<innernamespace refid="namespaceserif_1_1discretization_1_1backend">serif::discretization::backend</innernamespace>
<innernamespace refid="namespaceserif_1_1discretization_1_1backend_1_1mfem">serif::discretization::backend::mfem</innernamespace>
<briefdescription>
<para>A runtime binding between some term descriptor and its MFEM finite-element space. This is used to project down the compile time term descriptors into runtime reinterpretations which can then be used to extract out things like the list of dofs, the element support, and the mesh. </para>
</briefdescription>
<detaileddescription>
<para><simplesect kind="author"><para>Emily M. Boudreaux </para>
</simplesect>
</para>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="preprocessor"></highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;algorithm&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal"></highlight></codeline>
<codeline lineno="12"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="discretization_2blocks_2traits_8hpp" kindref="compound">serif/discretization/blocks/traits.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="13"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="discretization_2domain_2schema_2concepts_8hpp" kindref="compound">serif/discretization/domain/schema/concepts.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="dof__map_8hpp" kindref="compound">serif/backend/mfem/discretization/dof_map.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="15"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="errors_8hpp" kindref="compound">serif/utils/error/errors.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="16"><highlight class="normal"></highlight></codeline>
<codeline lineno="17"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1discretization_1_1backend_1_1mfem" kindref="compound">serif::discretization::backend::mfem</ref><sp/>{</highlight></codeline>
<codeline lineno="26"><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/>TermT,<sp/>domain::schema::IsSchema<sp/>SchemaT&gt;</highlight></codeline>
<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/>(blocks::SpatialTerm&lt;TermT&gt;<sp/>||<sp/>blocks::GlobalScalarTerm&lt;TermT&gt;)</highlight></codeline>
<codeline lineno="28" refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding_1a519a0b6fc897889f51a3bf954ec78787" kindref="member">TermBinding</ref><sp/></highlight><highlight class="keyword">final</highlight><highlight class="normal"><sp/>:<sp/>public<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref><sp/>{</highlight></codeline>
<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/>public:</highlight></codeline>
<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>using<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding_1ae17dcb758314b143299e15c4cfd10ecb" kindref="member">Term</ref><sp/>=<sp/>TermT;</highlight></codeline>
<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding_1a2093288950d2d80c908fbf09ceefb85b" kindref="member">Schema</ref><sp/>=<sp/>SchemaT;</highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight></codeline>
<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding_1a519a0b6fc897889f51a3bf954ec78787" kindref="member">TermBinding</ref>(</highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::FiniteElementSpace&amp;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>,<sp/>std::shared_ptr&lt;const<sp/>ReconstructionPlan&gt;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a575fa7bf1d77adeb2e06fababd825f72" kindref="member">reconstruction</ref><sp/>=<sp/>{}</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="conceptserif_1_1discretization_1_1blocks_1_1_spatial_term" kindref="compound">blocks::SpatialTerm&lt;Term&gt;</ref><sp/>:</highlight></codeline>
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map" kindref="compound">DofMap</ref>(space,<sp/>element_support(checked_mesh(space)),<sp/>std::move(<ref refid="namespaceserif_1_1discretization_1_1reconstruction" kindref="compound">reconstruction</ref>))<sp/>{</highlight></codeline>
<codeline lineno="41"><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">Traits<sp/>=<sp/><ref refid="structserif_1_1discretization_1_1blocks_1_1_spatial_term_traits" kindref="compound">blocks::SpatialTermTraits&lt;Term&gt;</ref>;</highlight></codeline>
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/>namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1utils_1_1errors" kindref="compound">utils::errors</ref>;</highlight></codeline>
<codeline lineno="43"><highlight class="normal"></highlight></codeline>
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static_assert</highlight><highlight class="normal">(Traits::family<sp/>==<sp/><ref refid="namespaceserif_1_1discretization_1_1functional__space_1a9cef5bcb37ac268d2f0f2053433f8594a346b81a32e7007eccadf60252bb599f0" kindref="member">functional_space::Family::h1</ref><sp/>||<sp/>Traits::family<sp/>==<sp/><ref refid="namespaceserif_1_1discretization_1_1functional__space_1a9cef5bcb37ac268d2f0f2053433f8594abec25675775e9e0a0d783a5018b463e3" kindref="member">functional_space::Family::l2</ref>,<sp/></highlight><highlight class="stringliteral">&quot;The<sp/>MFEM<sp/>backend<sp/>currently<sp/>only<sp/>supports<sp/>H1<sp/>and<sp/>L2<sp/>spaces.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static_assert</highlight><highlight class="normal">(Traits::rank<sp/>&lt;=<sp/>1,<sp/></highlight><highlight class="stringliteral">&quot;Tensor<sp/>terms<sp/>are<sp/>not<sp/>supported<sp/>by<sp/>this<sp/>backend.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="46"><highlight class="normal"></highlight></codeline>
<codeline lineno="47"><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/>(this-&gt;<ref refid="namespaceserif_1_1discretization_1_1reconstruction" kindref="compound">reconstruction</ref>())<sp/>{</highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_ARGUMENT&gt;(Traits::family<sp/>==<sp/><ref refid="namespaceserif_1_1discretization_1_1functional__space_1a9cef5bcb37ac268d2f0f2053433f8594a346b81a32e7007eccadf60252bb599f0" kindref="member">functional_space::Family::h1</ref><sp/>&amp;&amp;<sp/>Traits::rank<sp/>==<sp/>0,</highlight></codeline>
<codeline lineno="49"><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="stringliteral">&quot;Radial<sp/>reconstruction<sp/>currently<sp/>supports<sp/>only<sp/>scalar<sp/>H1<sp/>fields.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_ARGUMENT&gt;(std::same_as&lt;Term,<sp/>blocks::density::mass&gt;<sp/>||</highlight></codeline>
<codeline lineno="51"><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="keyword">dynamic_cast&lt;</highlight><highlight class="keyword">const<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1reconstruction_1_1_surface_power_profile" kindref="compound">reconstruction::SurfacePowerProfile</ref>*</highlight><highlight class="keyword">&gt;</highlight><highlight class="normal">(&amp;this-&gt;<ref refid="namespaceserif_1_1discretization_1_1reconstruction" kindref="compound">reconstruction</ref>()-&gt;profile())<sp/>==<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">,</highlight></codeline>
<codeline lineno="52"><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="stringliteral">&quot;SurfacePower<sp/>has<sp/>been<sp/>validated<sp/>only<sp/>for<sp/>mass<sp/>density;<sp/>select<sp/>that<sp/>field<sp/>or<sp/>implement<sp/>a<sp/>compatible<sp/>reconstruction<sp/>form.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="54"><highlight class="normal"></highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>vector_dimension<sp/>=<sp/>Traits::rank<sp/>==<sp/>0<sp/>?<sp/>1<sp/>:<sp/>3;</highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>continuity<sp/>=<sp/>Traits::family<sp/>==<sp/><ref refid="namespaceserif_1_1discretization_1_1functional__space_1a9cef5bcb37ac268d2f0f2053433f8594a346b81a32e7007eccadf60252bb599f0" kindref="member">functional_space::Family::h1</ref><sp/>?<sp/>::mfem::FiniteElementCollection::CONTINUOUS:<sp/>::mfem::FiniteElementCollection::DISCONTINUOUS;</highlight></codeline>
<codeline lineno="57"><highlight class="normal"></highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_DIMENSION,<sp/>std::invalid_argument&gt;(space.GetVDim()<sp/>==<sp/>vector_dimension,</highlight><highlight class="stringliteral">&quot;Term<sp/>vector<sp/>dimension<sp/>disagrees<sp/>with<sp/>its<sp/>scalar-copy<sp/>representation.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument&gt;(space.FEColl()-&gt;GetContType()<sp/>==<sp/>continuity,</highlight><highlight class="stringliteral">&quot;Term<sp/>continuity<sp/>disagrees<sp/>with<sp/>its<sp/>descriptor.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="60"><highlight class="normal"></highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element<sp/>=<sp/>0;<sp/>element<sp/>&lt;<sp/>space.GetNE();<sp/>++element)<sp/>{</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">*<sp/>finite_element<sp/>=<sp/>space.GetFE(element);</highlight></codeline>
<codeline lineno="63"><highlight class="normal"></highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument&gt;(</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>finite_element<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>finite_element-&gt;GetOrder()<sp/>==<sp/>Traits::order<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="66"><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/>finite_element-&gt;GetRangeType()<sp/>==<sp/>::mfem::FiniteElement::SCALAR<sp/>&amp;&amp;</highlight></codeline>
<codeline lineno="67"><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/>finite_element-&gt;GetMapType()<sp/>==<sp/>::mfem::FiniteElement::VALUE,</highlight></codeline>
<codeline lineno="68"><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="stringliteral">&quot;Term<sp/>elements<sp/>must<sp/>match<sp/>the<sp/>registered<sp/>family<sp/>order,<sp/>range,<sp/>and<sp/>mapping.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="71"><highlight class="normal"></highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/>TermBinding(</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Mesh&amp;<sp/>mesh</highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="conceptserif_1_1discretization_1_1blocks_1_1_global_scalar_term" kindref="compound">discretization::blocks::GlobalScalarTerm&lt;Term&gt;</ref><sp/>:</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>DofMap(mesh,<sp/>element_support(mesh))<sp/>{}</highlight></codeline>
<codeline lineno="81"><highlight class="normal"></highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>static<sp/>::mfem::Mesh&amp;<sp/>checked_mesh(const<sp/>::mfem::FiniteElementSpace&amp;<sp/>space)<sp/>{</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/>namespace<sp/></highlight><highlight class="normal">utils::errors;</highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::CACHE_FE_BINDING_ERROR&gt;(space.GetMesh()<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal"><sp/>&amp;&amp;<sp/>space.FEColl()<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">&quot;Term<sp/>bindings<sp/>require<sp/>an<sp/>initialized<sp/>finite-element<sp/>space.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="91"><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/>*space.GetMesh();</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="93"><highlight class="normal"></highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>static<sp/>::mfem::Array&lt;int&gt;<sp/>element_support(const<sp/>::mfem::Mesh&amp;<sp/>mesh)<sp/>{</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/>namespace<sp/></highlight><highlight class="normal">utils::errors;</highlight></codeline>
<codeline lineno="101"><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/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>domains<sp/>=<sp/>Schema::domain_descriptors();</highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array&lt;int&gt;<sp/>result(mesh.GetNE());</highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight></codeline>
<codeline lineno="104"><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/>ID_matches<sp/>=<sp/>[](</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&amp;<sp/>domain,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>attribute)<sp/>-&gt;<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="105"><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/>domain.ID<sp/>==<sp/>attribute;</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="107"><highlight class="normal"></highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element<sp/>=<sp/>0;<sp/>element<sp/>&lt;<sp/>mesh.GetNE();<sp/>++element)<sp/>{</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>attribute<sp/>=<sp/>mesh.GetAttribute(element);</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure&lt;SERiFErrorCode::INVALID_DOMAIN_ERROR&gt;(std::ranges::any_of(domains,<sp/>[&amp;](</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&amp;<sp/>domain)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>ID_matches(domain,<sp/>attribute);<sp/>}),<sp/></highlight><highlight class="stringliteral">&quot;Element<sp/>attribute<sp/>does<sp/>not<sp/>match<sp/>the<sp/>registered<sp/>domain.&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[element]<sp/>=<sp/>Schema::template<sp/>domain_id_belongs_to&lt;typename<sp/>Term::Support&gt;(attribute);</highlight></codeline>
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="113"><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="114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="116"><highlight class="normal">}</highlight></codeline>
</programlisting>
<location file="src/include/serif/backend/mfem/discretization/term_binding.hpp"/>
</compounddef>
</doxygen>