Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
1339 lines
156 KiB
XML
1339 lines
156 KiB
XML
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
|
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
|
|
<compounddef id="dof__map_8hpp" kind="file" language="C++">
|
|
<compoundname>dof_map.hpp</compoundname>
|
|
<includes local="no">cmath</includes>
|
|
<includes local="no">optional</includes>
|
|
<includes local="no">memory</includes>
|
|
<includes refid="reconstruction_8hpp" local="yes">serif/backend/mfem/discretization/reconstruction.hpp</includes>
|
|
<includes local="no">stdexcept</includes>
|
|
<includes local="yes">mfem/fem/fespace.hpp</includes>
|
|
<includes local="yes">mfem/fem/pfespace.hpp</includes>
|
|
<includes refid="errors_8hpp" local="yes">serif/utils/error/errors.hpp</includes>
|
|
<includes refid="nonfinite_8hpp" local="yes">serif/utils/error/nonfinite.hpp</includes>
|
|
<includedby refid="dof__selection_8hpp" local="yes">src/include/serif/backend/mfem/discretization/dof_selection.hpp</includedby>
|
|
<includedby refid="element__coordinates_8hpp" local="yes">src/include/serif/backend/mfem/discretization/element_coordinates.hpp</includedby>
|
|
<includedby refid="term__binding_8hpp" local="yes">src/include/serif/backend/mfem/discretization/term_binding.hpp</includedby>
|
|
<includedby refid="displacement__mapping_8hpp" local="yes">src/include/serif/backend/mfem/geometry/deformation/displacement_mapping.hpp</includedby>
|
|
<includedby refid="backend_2mfem_2model_2surface__potential_8hpp" local="yes">src/include/serif/backend/mfem/model/surface_potential.hpp</includedby>
|
|
<includedby refid="operand__evaluation_8hpp" local="yes">src/include/serif/backend/mfem/operators/operand_evaluation.hpp</includedby>
|
|
<includedby refid="serialize_2resources_8hpp" local="yes">src/include/serif/backend/mfem/serialize/resources.hpp</includedby>
|
|
<includedby refid="backend_2mfem_2serialize_2top_8hpp" local="yes">src/include/serif/backend/mfem/serialize/top.hpp</includedby>
|
|
<incdepgraph>
|
|
<node id="1">
|
|
<label>src/include/serif/backend/mfem/discretization/dof_map.hpp</label>
|
|
<link refid="dof__map_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="3" relation="include">
|
|
</childnode>
|
|
<childnode refid="4" relation="include">
|
|
</childnode>
|
|
<childnode refid="5" relation="include">
|
|
</childnode>
|
|
<childnode refid="51" relation="include">
|
|
</childnode>
|
|
<childnode refid="52" relation="include">
|
|
</childnode>
|
|
<childnode refid="53" relation="include">
|
|
</childnode>
|
|
<childnode refid="36" relation="include">
|
|
</childnode>
|
|
<childnode refid="54" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="5">
|
|
<label>serif/backend/mfem/discretization/reconstruction.hpp</label>
|
|
<link refid="reconstruction_8hpp"/>
|
|
<childnode refid="4" relation="include">
|
|
</childnode>
|
|
<childnode refid="6" relation="include">
|
|
</childnode>
|
|
<childnode refid="7" relation="include">
|
|
</childnode>
|
|
<childnode refid="8" relation="include">
|
|
</childnode>
|
|
<childnode refid="35" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="11">
|
|
<label>serif/dimensions/dimensions.hpp</label>
|
|
<link refid="dimensions_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="12" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="12">
|
|
<label>serif/dimensions/quantities.hpp</label>
|
|
<link refid="quantities_8hpp"/>
|
|
<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>
|
|
</node>
|
|
<node id="19">
|
|
<label>serif/discretization/blocks/base.hpp</label>
|
|
<link refid="base_8hpp"/>
|
|
</node>
|
|
<node id="8">
|
|
<label>serif/discretization/blocks/fields.hpp</label>
|
|
<link refid="fields_8hpp"/>
|
|
<childnode refid="9" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="11" relation="include">
|
|
</childnode>
|
|
<childnode refid="19" relation="include">
|
|
</childnode>
|
|
<childnode refid="20" relation="include">
|
|
</childnode>
|
|
<childnode refid="25" relation="include">
|
|
</childnode>
|
|
<childnode refid="31" relation="include">
|
|
</childnode>
|
|
<childnode refid="32" relation="include">
|
|
</childnode>
|
|
<childnode refid="33" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="25">
|
|
<label>serif/discretization/domain/concepts.hpp</label>
|
|
<link refid="discretization_2domain_2concepts_8hpp"/>
|
|
<childnode refid="26" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="27" relation="include">
|
|
</childnode>
|
|
<childnode refid="9" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="28" relation="include">
|
|
</childnode>
|
|
<childnode refid="29" relation="include">
|
|
</childnode>
|
|
<childnode refid="17" relation="include">
|
|
</childnode>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="31">
|
|
<label>serif/discretization/domain/physical_domains.hpp</label>
|
|
<link refid="physical__domains_8hpp"/>
|
|
<childnode refid="29" relation="include">
|
|
</childnode>
|
|
<childnode refid="25" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="29">
|
|
<label>serif/discretization/domain/types.hpp</label>
|
|
<link refid="discretization_2domain_2types_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="20">
|
|
<label>serif/discretization/functional_space/space.hpp</label>
|
|
<link refid="space_8hpp"/>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="22" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="35">
|
|
<label>serif/discretization/reconstruction/surface_power.hpp</label>
|
|
<link refid="surface__power_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="27" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="31" relation="include">
|
|
</childnode>
|
|
<childnode refid="36" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="22">
|
|
<label>serif/meta/enums.hpp</label>
|
|
<link refid="enums_8hpp"/>
|
|
<childnode refid="23" relation="include">
|
|
</childnode>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
<childnode refid="24" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="33">
|
|
<label>serif/meta/names.hpp</label>
|
|
<link refid="names_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="34" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="48">
|
|
<label>serif/utils/error/codes.hpp</label>
|
|
<link refid="codes_8hpp"/>
|
|
<childnode refid="39" relation="include">
|
|
</childnode>
|
|
<childnode refid="22" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="36">
|
|
<label>serif/utils/error/errors.hpp</label>
|
|
<link refid="errors_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="21" relation="include">
|
|
</childnode>
|
|
<childnode refid="37" relation="include">
|
|
</childnode>
|
|
<childnode refid="38" relation="include">
|
|
</childnode>
|
|
<childnode refid="39" relation="include">
|
|
</childnode>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="41" relation="include">
|
|
</childnode>
|
|
<childnode refid="42" relation="include">
|
|
</childnode>
|
|
<childnode refid="46" relation="include">
|
|
</childnode>
|
|
<childnode refid="48" relation="include">
|
|
</childnode>
|
|
<childnode refid="49" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="54">
|
|
<label>serif/utils/error/nonfinite.hpp</label>
|
|
<link refid="nonfinite_8hpp"/>
|
|
<childnode refid="51" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="46">
|
|
<label>serif/utils/misc/concepts/exceptions.hpp</label>
|
|
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
|
|
<childnode refid="47" relation="include">
|
|
</childnode>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
<childnode refid="18" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="18">
|
|
<label>serif/utils/misc/concepts/numeric.hpp</label>
|
|
<link refid="numeric_8hpp"/>
|
|
<childnode refid="15" relation="include">
|
|
</childnode>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="17">
|
|
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
|
|
<link refid="cleaning_8hpp"/>
|
|
<childnode refid="13" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="30">
|
|
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
|
|
<link refid="variadic__cleaning_8hpp"/>
|
|
<childnode refid="26" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="42">
|
|
<label>serif/utils/misc/terminal/colors.hpp</label>
|
|
<link refid="colors_8hpp"/>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
<childnode refid="37" relation="include">
|
|
</childnode>
|
|
<childnode refid="43" relation="include">
|
|
</childnode>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
<childnode refid="45" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="49">
|
|
<label>serif/utils/types/strings.hpp</label>
|
|
<link refid="types_2strings_8hpp"/>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="50" relation="include">
|
|
</childnode>
|
|
<childnode refid="10" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="32">
|
|
<label>serif/utils/types/type_list.hpp</label>
|
|
<link refid="type__list_8hpp"/>
|
|
</node>
|
|
<node id="40">
|
|
<label>algorithm</label>
|
|
</node>
|
|
<node id="9">
|
|
<label>array</label>
|
|
</node>
|
|
<node id="2">
|
|
<label>cmath</label>
|
|
</node>
|
|
<node id="14">
|
|
<label>compare</label>
|
|
</node>
|
|
<node id="15">
|
|
<label>concepts</label>
|
|
</node>
|
|
<node id="26">
|
|
<label>cstddef</label>
|
|
</node>
|
|
<node id="39">
|
|
<label>cstdint</label>
|
|
</node>
|
|
<node id="37">
|
|
<label>cstdio</label>
|
|
</node>
|
|
<node id="43">
|
|
<label>cstdlib</label>
|
|
</node>
|
|
<node id="47">
|
|
<label>exception</label>
|
|
</node>
|
|
<node id="21">
|
|
<label>format</label>
|
|
</node>
|
|
<node id="50">
|
|
<label>iostream</label>
|
|
</node>
|
|
<node id="24">
|
|
<label>magic_enum/magic_enum_all.hpp</label>
|
|
</node>
|
|
<node id="4">
|
|
<label>memory</label>
|
|
</node>
|
|
<node id="7">
|
|
<label>mfem/fem/fe/fe_base.hpp</label>
|
|
</node>
|
|
<node id="52">
|
|
<label>mfem/fem/fespace.hpp</label>
|
|
</node>
|
|
<node id="53">
|
|
<label>mfem/fem/pfespace.hpp</label>
|
|
</node>
|
|
<node id="34">
|
|
<label>nameof.hpp</label>
|
|
</node>
|
|
<node id="28">
|
|
<label>numeric</label>
|
|
</node>
|
|
<node id="3">
|
|
<label>optional</label>
|
|
</node>
|
|
<node id="27">
|
|
<label>span</label>
|
|
</node>
|
|
<node id="51">
|
|
<label>stdexcept</label>
|
|
</node>
|
|
<node id="38">
|
|
<label>string</label>
|
|
</node>
|
|
<node id="10">
|
|
<label>string_view</label>
|
|
</node>
|
|
<node id="16">
|
|
<label>tuple</label>
|
|
</node>
|
|
<node id="13">
|
|
<label>type_traits</label>
|
|
</node>
|
|
<node id="45">
|
|
<label>unistd.h</label>
|
|
</node>
|
|
<node id="23">
|
|
<label>unordered_map</label>
|
|
</node>
|
|
<node id="44">
|
|
<label>utility</label>
|
|
</node>
|
|
<node id="6">
|
|
<label>vector</label>
|
|
</node>
|
|
<node id="41">
|
|
<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="53">
|
|
<label>src/compile_time_checks/serif/model/finite_elements.cpp</label>
|
|
<link refid="compile__time__checks_2serif_2model_2finite__elements_8cpp"/>
|
|
</node>
|
|
<node id="48">
|
|
<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="46">
|
|
<label>src/compile_time_checks/serif/operators/computation_owners.cpp</label>
|
|
<link refid="computation__owners_8cpp"/>
|
|
</node>
|
|
<node id="70">
|
|
<label>src/compile_time_checks/serif/operators/plan.cpp</label>
|
|
<link refid="operators_2plan_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="1">
|
|
<label>src/include/serif/backend/mfem/discretization/dof_map.hpp</label>
|
|
<link refid="dof__map_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="28" relation="include">
|
|
</childnode>
|
|
<childnode refid="36" relation="include">
|
|
</childnode>
|
|
<childnode refid="65" relation="include">
|
|
</childnode>
|
|
<childnode refid="67" relation="include">
|
|
</childnode>
|
|
<childnode refid="69" relation="include">
|
|
</childnode>
|
|
<childnode refid="74" relation="include">
|
|
</childnode>
|
|
<childnode refid="76" 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="28">
|
|
<label>src/include/serif/backend/mfem/discretization/element_coordinates.hpp</label>
|
|
<link refid="element__coordinates_8hpp"/>
|
|
<childnode refid="29" relation="include">
|
|
</childnode>
|
|
<childnode refid="33" relation="include">
|
|
</childnode>
|
|
<childnode refid="34" relation="include">
|
|
</childnode>
|
|
<childnode refid="35" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="40">
|
|
<label>src/include/serif/backend/mfem/discretization/field_values.hpp</label>
|
|
<link refid="field__values_8hpp"/>
|
|
<childnode refid="41" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="37">
|
|
<label>src/include/serif/backend/mfem/discretization/mass_diagonal.hpp</label>
|
|
<link refid="mass__diagonal_8hpp"/>
|
|
<childnode refid="38" relation="include">
|
|
</childnode>
|
|
<childnode refid="34" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="36">
|
|
<label>src/include/serif/backend/mfem/discretization/term_binding.hpp</label>
|
|
<link refid="term__binding_8hpp"/>
|
|
<childnode refid="2" relation="include">
|
|
</childnode>
|
|
<childnode refid="37" relation="include">
|
|
</childnode>
|
|
<childnode refid="39" relation="include">
|
|
</childnode>
|
|
<childnode refid="51" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="39">
|
|
<label>src/include/serif/backend/mfem/discretization/term_coefficients.hpp</label>
|
|
<link refid="term__coefficients_8hpp"/>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="4" relation="include">
|
|
</childnode>
|
|
<childnode refid="42" relation="include">
|
|
</childnode>
|
|
<childnode refid="43" relation="include">
|
|
</childnode>
|
|
<childnode refid="49" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="65">
|
|
<label>src/include/serif/backend/mfem/geometry/deformation/displacement_mapping.hpp</label>
|
|
<link refid="displacement__mapping_8hpp"/>
|
|
<childnode refid="59" relation="include">
|
|
</childnode>
|
|
<childnode refid="66" 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="30">
|
|
<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="31" 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="47">
|
|
<label>src/include/serif/backend/mfem/model/computations/scalar_row.hpp</label>
|
|
<link refid="computations_2scalar__row_8hpp"/>
|
|
<childnode refid="48" relation="include">
|
|
</childnode>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="31">
|
|
<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="50">
|
|
<label>src/include/serif/backend/mfem/model/discretization.hpp</label>
|
|
<link refid="model_2discretization_8hpp"/>
|
|
<childnode refid="11" relation="include">
|
|
</childnode>
|
|
<childnode refid="51" relation="include">
|
|
</childnode>
|
|
<childnode refid="55" 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="51">
|
|
<label>src/include/serif/backend/mfem/model/finite_elements.hpp</label>
|
|
<link refid="backend_2mfem_2model_2finite__elements_8hpp"/>
|
|
<childnode refid="52" relation="include">
|
|
</childnode>
|
|
<childnode refid="54" 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="58">
|
|
<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="42">
|
|
<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="67">
|
|
<label>src/include/serif/backend/mfem/model/surface_potential.hpp</label>
|
|
<link refid="backend_2mfem_2model_2surface__potential_8hpp"/>
|
|
<childnode refid="31" relation="include">
|
|
</childnode>
|
|
<childnode refid="68" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="61">
|
|
<label>src/include/serif/backend/mfem/model/volume.hpp</label>
|
|
<link refid="volume_8hpp"/>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="62">
|
|
<label>src/include/serif/backend/mfem/model/volume_actions.hpp</label>
|
|
<link refid="volume__actions_8hpp"/>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
<childnode refid="47" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="59">
|
|
<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="71">
|
|
<label>src/include/serif/backend/mfem/operators/element_evaluation.hpp</label>
|
|
<link refid="element__evaluation_8hpp"/>
|
|
<childnode refid="72" relation="include">
|
|
</childnode>
|
|
<childnode refid="60" relation="include">
|
|
</childnode>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="43">
|
|
<label>src/include/serif/backend/mfem/operators/element_preparation.hpp</label>
|
|
<link refid="element__preparation_8hpp"/>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="72">
|
|
<label>src/include/serif/backend/mfem/operators/element_transpose.hpp</label>
|
|
<link refid="element__transpose_8hpp"/>
|
|
<childnode refid="60" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="73">
|
|
<label>src/include/serif/backend/mfem/operators/geometry_derivatives.hpp</label>
|
|
<link refid="geometry__derivatives_8hpp"/>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="63">
|
|
<label>src/include/serif/backend/mfem/operators/jacobian_operator.hpp</label>
|
|
<link refid="jacobian__operator_8hpp"/>
|
|
<childnode refid="46" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="69">
|
|
<label>src/include/serif/backend/mfem/operators/operand_evaluation.hpp</label>
|
|
<link refid="operand__evaluation_8hpp"/>
|
|
<childnode refid="70" relation="include">
|
|
</childnode>
|
|
<childnode refid="40" relation="include">
|
|
</childnode>
|
|
<childnode refid="71" relation="include">
|
|
</childnode>
|
|
<childnode refid="43" relation="include">
|
|
</childnode>
|
|
<childnode refid="73" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="60">
|
|
<label>src/include/serif/backend/mfem/operators/volume_application.hpp</label>
|
|
<link refid="volume__application_8hpp"/>
|
|
<childnode refid="61" relation="include">
|
|
</childnode>
|
|
<childnode refid="62" relation="include">
|
|
</childnode>
|
|
<childnode refid="63" relation="include">
|
|
</childnode>
|
|
<childnode refid="29" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="45">
|
|
<label>src/include/serif/backend/mfem/operators/volume_computations.hpp</label>
|
|
<link refid="volume__computations_8hpp"/>
|
|
<childnode refid="46" relation="include">
|
|
</childnode>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
<childnode refid="47" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="49">
|
|
<label>src/include/serif/backend/mfem/operators/volume_data.hpp</label>
|
|
<link refid="volume__data_8hpp"/>
|
|
<childnode refid="50" relation="include">
|
|
</childnode>
|
|
<childnode refid="57" relation="include">
|
|
</childnode>
|
|
<childnode refid="44" relation="include">
|
|
</childnode>
|
|
<childnode refid="64" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="29">
|
|
<label>src/include/serif/backend/mfem/operators/volume_field_block.hpp</label>
|
|
<link refid="volume__field__block_8hpp"/>
|
|
<childnode refid="30" relation="include">
|
|
</childnode>
|
|
<childnode refid="32" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="57">
|
|
<label>src/include/serif/backend/mfem/operators/volume_inputs.hpp</label>
|
|
<link refid="volume__inputs_8hpp"/>
|
|
<childnode refid="58" relation="include">
|
|
</childnode>
|
|
<childnode refid="59" relation="include">
|
|
</childnode>
|
|
<childnode refid="60" relation="include">
|
|
</childnode>
|
|
<childnode refid="45" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="44">
|
|
<label>src/include/serif/backend/mfem/operators/volume_stages.hpp</label>
|
|
<link refid="volume__stages_8hpp"/>
|
|
<childnode refid="45" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="56">
|
|
<label>src/include/serif/backend/mfem/serialize/configuration.hpp</label>
|
|
<link refid="backend_2mfem_2serialize_2configuration_8hpp"/>
|
|
</node>
|
|
<node id="55">
|
|
<label>src/include/serif/backend/mfem/serialize/discretization.hpp</label>
|
|
<link refid="serialize_2discretization_8hpp"/>
|
|
<childnode refid="56" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="64">
|
|
<label>src/include/serif/backend/mfem/serialize/options.hpp</label>
|
|
<link refid="backend_2mfem_2serialize_2options_8hpp"/>
|
|
</node>
|
|
<node id="74">
|
|
<label>src/include/serif/backend/mfem/serialize/resources.hpp</label>
|
|
<link refid="serialize_2resources_8hpp"/>
|
|
<childnode refid="55" relation="include">
|
|
</childnode>
|
|
<childnode refid="75" relation="include">
|
|
</childnode>
|
|
</node>
|
|
<node id="76">
|
|
<label>src/include/serif/backend/mfem/serialize/top.hpp</label>
|
|
<link refid="backend_2mfem_2serialize_2top_8hpp"/>
|
|
<childnode refid="41" relation="include">
|
|
</childnode>
|
|
</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="38">
|
|
<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="52">
|
|
<label>src/include/serif/model/finite_elements.hpp</label>
|
|
<link refid="model_2finite__elements_8hpp"/>
|
|
<childnode refid="53" 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="33">
|
|
<label>src/lib/serif/backend/mfem/discretization/element_coordinates.cpp</label>
|
|
<link refid="element__coordinates_8cpp"/>
|
|
</node>
|
|
<node id="34">
|
|
<label>src/lib/serif/backend/mfem/discretization/mass_diagonal.cpp</label>
|
|
<link refid="mass__diagonal_8cpp"/>
|
|
</node>
|
|
<node id="35">
|
|
<label>src/lib/serif/backend/mfem/discretization/reconstruction.cpp</label>
|
|
<link refid="reconstruction_8cpp"/>
|
|
</node>
|
|
<node id="66">
|
|
<label>src/lib/serif/backend/mfem/model/deformation.cpp</label>
|
|
<link refid="lib_2serif_2backend_2mfem_2model_2deformation_8cpp"/>
|
|
</node>
|
|
<node id="54">
|
|
<label>src/lib/serif/backend/mfem/model/finite_elements.cpp</label>
|
|
<link refid="lib_2serif_2backend_2mfem_2model_2finite__elements_8cpp"/>
|
|
</node>
|
|
<node id="68">
|
|
<label>src/lib/serif/backend/mfem/model/surface_potential.cpp</label>
|
|
<link refid="surface__potential_8cpp"/>
|
|
</node>
|
|
<node id="32">
|
|
<label>src/lib/serif/backend/mfem/model/system_selection.cpp</label>
|
|
<link refid="system__selection_8cpp"/>
|
|
</node>
|
|
<node id="75">
|
|
<label>src/lib/serif/backend/mfem/serialize/resources.cpp</label>
|
|
<link refid="resources_8cpp"/>
|
|
</node>
|
|
<node id="41">
|
|
<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_dof_map" prot="public">serif::discretization::backend::mfem::DofMap</innerclass>
|
|
<innerclass refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements" prot="public">serif::discretization::backend::mfem::DofMap::Elements</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>This file contains the DofMap which allows for the full dof vector to be projected into a reduced space of dofs on supported elements for some field Generally, while much of the code here may be exercised, you will rarely see a DofMap be directly invoked. Rather, these are generally implicitly constructed through their child class term_binding. </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="normal"></highlight></codeline>
|
|
<codeline lineno="2"><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/><cmath></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="13"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><optional></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="14"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><memory></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="15"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="reconstruction_8hpp" kindref="compound">serif/backend/mfem/discretization/reconstruction.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="16"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><stdexcept></highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="17"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="18"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"mfem/fem/fespace.hpp"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="19"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"mfem/fem/pfespace.hpp"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="20"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="errors_8hpp" kindref="compound">serif/utils/error/errors.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="21"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="nonfinite_8hpp" kindref="compound">serif/utils/error/nonfinite.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="22"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="23"><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="24"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_element_coordinates" kindref="compound">ElementCoordinates</ref>;</highlight></codeline>
|
|
<codeline lineno="25"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="39" refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref><sp/>{</highlight></codeline>
|
|
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>(</highlight></codeline>
|
|
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::FiniteElementSpace&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>,</highlight></codeline>
|
|
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Array<int>&<sp/>element_support,</highlight></codeline>
|
|
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr<const<sp/>ReconstructionPlan><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="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>:</highlight></codeline>
|
|
<codeline lineno="46"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>(&<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>),</highlight></codeline>
|
|
<codeline lineno="47"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>(*<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetMesh()),</highlight></codeline>
|
|
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1afd19f19e06e2956ae6d27c483462d04b" kindref="member">m_space_sequence</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetSequence()),</highlight></codeline>
|
|
<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1addfda1f91b38dd3fbe22b6829e70c0e2" kindref="member">m_mesh_sequence</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetMesh()->GetSequence()),</highlight></codeline>
|
|
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetNE()),</highlight></codeline>
|
|
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a77e48204234fc328a5ff5873cb7d0569" kindref="member">m_element_support</ref>(element_support),</highlight></codeline>
|
|
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetVSize()),</highlight></codeline>
|
|
<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>(std::move(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a575fa7bf1d77adeb2e06fababd825f72" kindref="member">reconstruction</ref>))<sp/>{</highlight></codeline>
|
|
<codeline lineno="54"><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="55"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="56"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>MFEM_USE_MPI</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(</highlight><highlight class="keyword">dynamic_cast<</highlight><highlight class="normal">::mfem::ParFiniteElementSpace*</highlight><highlight class="keyword">></highlight><highlight class="normal">(&<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>)<sp/>==<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">,</highlight><highlight class="stringliteral">"DofMap<sp/>does<sp/>not<sp/>yet<sp/>assemble<sp/>parallel<sp/>true<sp/>DOFs."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="58"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref><sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetConformingProlongation();</highlight></codeline>
|
|
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>()<sp/>||<sp/>!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.IsVariableOrder(),<sp/></highlight><highlight class="stringliteral">"Constrained<sp/>term<sp/>bindings<sp/>require<sp/>fixed-order<sp/>serial<sp/>spaces;<sp/>varying<sp/>element<sp/>order<sp/>is<sp/>not<sp/>supported."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DIMENSION,<sp/>std::invalid_argument>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetMesh()->Dimension()<sp/>==<sp/>3<sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetMesh()->SpaceDimension()<sp/>==<sp/>3,</highlight><highlight class="stringliteral">"Term<sp/>bindings<sp/>currently<sp/>require<sp/>a<sp/>three-dimensional<sp/>mesh."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(element_support.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetNE(),<sp/></highlight><highlight class="stringliteral">"Element<sp/>support<sp/>does<sp/>not<sp/>match<sp/>the<sp/>space."</highlight><highlight class="normal">);</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/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref><sp/>=<sp/>-1;</highlight></codeline>
|
|
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/>dofs;</highlight></codeline>
|
|
<codeline lineno="66"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="67"><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/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetNE();<sp/>++element)<sp/>{</highlight></codeline>
|
|
<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>[element]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetMesh()->GetAttribute(element);</highlight></codeline>
|
|
<codeline lineno="69"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="70"><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/>(element_support[element]<sp/>==<sp/>0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="71"><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">continue</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="73"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetElementVDofs(element,<sp/>dofs);</highlight></codeline>
|
|
<codeline lineno="75"><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="keywordtype">int</highlight><highlight class="normal"><sp/>dof<sp/>:<sp/>dofs)<sp/>{</highlight></codeline>
|
|
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[dof<sp/><<sp/>0<sp/>?<sp/>-1<sp/>-<sp/>dof<sp/>:<sp/>dof]<sp/>=<sp/>0;</highlight></codeline>
|
|
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="79"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="80"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a7edf26cb6f259f842b60b8ae021de5c6" kindref="member">m_boundary_attributes</ref>.emplace(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNBE());</highlight></codeline>
|
|
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>boundary<sp/>=<sp/>0;<sp/>boundary<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNBE();<sp/>++boundary)<sp/>{</highlight></codeline>
|
|
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>(*m_boundary_attributes)[boundary]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetBdrAttribute(boundary);</highlight></codeline>
|
|
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="86"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>)<sp/>{<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>->validate_binding(*</highlight><highlight class="keyword">this</highlight><highlight class="normal">);<sp/>}</highlight></codeline>
|
|
<codeline lineno="87"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a88f06289056fb51d54bfc0bf95408175" kindref="member">build_constrained_map</ref>();</highlight></codeline>
|
|
<codeline lineno="89"><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">;</highlight></codeline>
|
|
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="91"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="92"><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/>dof<sp/>=<sp/>0;<sp/>dof<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>.GetVSize();<sp/>++dof)<sp/>{</highlight></codeline>
|
|
<codeline lineno="93"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[dof]<sp/>==<sp/>0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[dof]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>.Size();</highlight></codeline>
|
|
<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>.Append(dof);</highlight></codeline>
|
|
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="99"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>(</highlight></codeline>
|
|
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Mesh&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>,</highlight></codeline>
|
|
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Array<int>&<sp/>element_support</highlight></codeline>
|
|
<codeline lineno="103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>:</highlight></codeline>
|
|
<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>(</highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">),</highlight></codeline>
|
|
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>),</highlight></codeline>
|
|
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1afd19f19e06e2956ae6d27c483462d04b" kindref="member">m_space_sequence</ref>(-1),</highlight></codeline>
|
|
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1addfda1f91b38dd3fbe22b6829e70c0e2" kindref="member">m_mesh_sequence</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.GetSequence()),</highlight></codeline>
|
|
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.GetNE()),</highlight></codeline>
|
|
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a77e48204234fc328a5ff5873cb7d0569" kindref="member">m_element_support</ref>(element_support),</highlight></codeline>
|
|
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>(1),</highlight></codeline>
|
|
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>(1)<sp/>{</highlight></codeline>
|
|
<codeline lineno="112"><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="113"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DIMENSION,<sp/>std::invalid_argument>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.Dimension()<sp/>==<sp/>3<sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.SpaceDimension()<sp/>==<sp/>3,<sp/></highlight><highlight class="stringliteral">"Term<sp/>bindings<sp/>currently<sp/>require<sp/>a<sp/>three-dimensional<sp/>mesh."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(element_support.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.GetNE(),<sp/></highlight><highlight class="stringliteral">"Element<sp/>support<sp/>does<sp/>not<sp/>match<sp/>the<sp/>mesh."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="116"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>[0]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[0]<sp/>=<sp/>0;</highlight></codeline>
|
|
<codeline lineno="118"><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/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.GetNE();<sp/>++element)<sp/>{</highlight></codeline>
|
|
<codeline lineno="119"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>[element]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>.GetAttribute(element);</highlight></codeline>
|
|
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="122"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ae02df25ef4ab1bc27e904f0434e87cb3" kindref="member">~DofMap</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="124"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="131" refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a7750fcf37fa68964de0839a3b96e6f55" kindref="member">Elements</ref><sp/>final<sp/>{</highlight></codeline>
|
|
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a772d442a344213811a4021bb38c1a0e9" kindref="member">element_values</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element,<sp/>const<sp/>::mfem::Vector&<sp/>reduced,<sp/>::mfem::Vector&<sp/>values)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="135"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a7a8199cd13b79144ccebc0e40e4b50b1" kindref="member">add_element</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element,<sp/>::mfem::Vector&<sp/>values,<sp/>::mfem::Vector&<sp/>full)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="138"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="140"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a6d3b680d7e4ccc829e3e4bca8e366eda" kindref="member">ElementCoordinates</ref><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a1ee16c46ba3099a24b7cc3fc731104e6" kindref="member">coordinates</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="141"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a5be136150865fa1b7488a34bf0b17e34" kindref="member">DofMap</ref>;</highlight></codeline>
|
|
<codeline lineno="144"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a6d3b680d7e4ccc829e3e4bca8e366eda" kindref="member">ElementCoordinates</ref>;</highlight></codeline>
|
|
<codeline lineno="145"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a7750fcf37fa68964de0839a3b96e6f55" kindref="member">Elements</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a5be136150865fa1b7488a34bf0b17e34" kindref="member">DofMap</ref>&<sp/>binding)<sp/>:<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a20493c380bb76a2561eb4644ded15885" kindref="member">m_binding</ref>(binding)<sp/>{}</highlight></codeline>
|
|
<codeline lineno="148"><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/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a5be136150865fa1b7488a34bf0b17e34" kindref="member">DofMap</ref>&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements_1a20493c380bb76a2561eb4644ded15885" kindref="member">m_binding</ref>;</highlight></codeline>
|
|
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
|
<codeline lineno="150"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements" kindref="compound">Elements</ref><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac405ce833efa1614fc3f7cd53f1b9a61" kindref="member">validated_elements</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>();</highlight></codeline>
|
|
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements" kindref="compound">Elements</ref>(*</highlight><highlight class="keyword">this</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="156"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr<const<sp/>ReconstructionPlan>&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a575fa7bf1d77adeb2e06fababd825f72" kindref="member">reconstruction</ref>()<sp/>const<sp/>noexcept<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>;<sp/>}</highlight></codeline>
|
|
<codeline lineno="159"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="161"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>ElementReconstruction*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ab9bbd3372044a045d75ce1c9b2bb3097" kindref="member">reconstruction_element</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="162"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref><sp/>==<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">;<sp/>}</highlight></codeline>
|
|
<codeline lineno="163"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>->element(element);</highlight></codeline>
|
|
<codeline lineno="164"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="165"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aa9c62ea79472a9b056d2144caeb3dcab" kindref="member">operator=</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&&)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aa9c62ea79472a9b056d2144caeb3dcab" kindref="member">operator=</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac23fa3df51fcf9a8a10126221f27aa32" kindref="member">DofMap</ref>&&)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="170"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::FiniteElementSpace&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad7309ffab5c37db444ecd53450f3cfdc" kindref="member">space</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="176"><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="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::CACHE_FE_BINDING_ERROR,<sp/>std::logic_error>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref><sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">,<sp/></highlight><highlight class="stringliteral">"Global<sp/>scalars<sp/>do<sp/>not<sp/>have<sp/>a<sp/>finite-element<sp/>space."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>*<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>;</highlight></codeline>
|
|
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="180"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Mesh&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a43309a9a969cda1821eca7c08fc3167d" kindref="member">mesh</ref>()<sp/>const<sp/>noexcept<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>;<sp/>}</highlight></codeline>
|
|
<codeline lineno="186"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>()<sp/>const<sp/>noexcept<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>.Size();<sp/>}</highlight></codeline>
|
|
<codeline lineno="192"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>()<sp/>const<sp/>noexcept<sp/>{</highlight></codeline>
|
|
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>.Size();</highlight></codeline>
|
|
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="200"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::optional<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3be069418a2ce002ab7af1615ed730a2" kindref="member">reduced_dof</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3e0df92dd4ed8a84875e61fdcec1f0cf" kindref="member">full_dof</ref>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="207"><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="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::out_of_range>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3e0df92dd4ed8a84875e61fdcec1f0cf" kindref="member">full_dof</ref><sp/>>=<sp/>0<sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3e0df92dd4ed8a84875e61fdcec1f0cf" kindref="member">full_dof</ref><sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>(),<sp/></highlight><highlight class="stringliteral">"Full<sp/>DOF<sp/>index<sp/>is<sp/>out<sp/>of<sp/>range."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="209"><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/>reduced<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3e0df92dd4ed8a84875e61fdcec1f0cf" kindref="member">full_dof</ref>];</highlight></codeline>
|
|
<codeline lineno="210"><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/>reduced<sp/><<sp/>0<sp/>?<sp/>std::nullopt<sp/>:<sp/>std::optional<int>{reduced};</highlight></codeline>
|
|
<codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="212"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3e0df92dd4ed8a84875e61fdcec1f0cf" kindref="member">full_dof</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>reduced)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/>namespace<sp/></highlight><highlight class="normal">utils::errors;</highlight></codeline>
|
|
<codeline lineno="216"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adf7b5b9547cf58cab454ee8b5df5694b" kindref="member">validate_structure</ref>();</highlight></codeline>
|
|
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::out_of_range>(reduced<sp/>>=<sp/>0<sp/>&&<sp/>reduced<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>(),</highlight></codeline>
|
|
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"Supported<sp/>DOF<sp/>index<sp/>{}<sp/>is<sp/>outside<sp/>the<sp/>binding<sp/>of<sp/>size<sp/>{}."</highlight><highlight class="normal">,<sp/>reduced,<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>());</highlight></codeline>
|
|
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>[reduced];</highlight></codeline>
|
|
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="222"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>()<sp/>const<sp/>noexcept<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref><sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">;<sp/>}</highlight></codeline>
|
|
<codeline lineno="225"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>()<sp/>const<sp/>noexcept<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref><sp/>==<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal"><sp/>?<sp/>1<sp/>:<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetTrueVSize();<sp/>}</highlight></codeline>
|
|
<codeline lineno="228"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Visitor></highlight></codeline>
|
|
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a3395f6ca99af3eb6a213a557578db3" kindref="member">for_each_coefficient</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>local_dof,<sp/>Visitor&&<sp/>visit)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="232"><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="233"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adf7b5b9547cf58cab454ee8b5df5694b" kindref="member">validate_structure</ref>();</highlight></codeline>
|
|
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::out_of_range>(local_dof<sp/>>=<sp/>0<sp/>&&<sp/>local_dof<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>(),<sp/></highlight><highlight class="stringliteral">"Local<sp/>DOF<sp/>index<sp/>is<sp/>outside<sp/>its<sp/>finite-element<sp/>space."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="236"><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/>(!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="237"><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/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref><sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[local_dof];</highlight></codeline>
|
|
<codeline lineno="238"><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/>(index<sp/>>=<sp/>0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>visit(index,<sp/>1.0);</highlight></codeline>
|
|
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="241"><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">;</highlight></codeline>
|
|
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="243"><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/>offsets<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetI();</highlight></codeline>
|
|
<codeline lineno="244"><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/>columns<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetJ();</highlight></codeline>
|
|
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>weights<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetData();</highlight></codeline>
|
|
<codeline lineno="246"><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/>entry<sp/>=<sp/>offsets[local_dof];<sp/>entry<sp/><<sp/>offsets[local_dof<sp/>+<sp/>1];<sp/>++entry)<sp/>{</highlight></codeline>
|
|
<codeline lineno="247"><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/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref><sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>[columns[entry]];</highlight></codeline>
|
|
<codeline lineno="248"><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/>(index<sp/>>=<sp/>0<sp/>&&<sp/>weights[entry]<sp/>!=<sp/>0.0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>visit(index,<sp/>weights[entry]);</highlight></codeline>
|
|
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="253"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Vector<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aba93fdd2e86c0f032f9b0a50b1d42fa7" kindref="member">gather_true</ref>(const<sp/>::mfem::Vector&<sp/>values)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="256"><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="257"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>();</highlight></codeline>
|
|
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::invalid_argument>(<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>(),</highlight></codeline>
|
|
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"Independent<sp/>coefficient<sp/>vector<sp/>has<sp/>size<sp/>{},<sp/>expected<sp/>{}."</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>.Size(),<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>());</highlight></codeline>
|
|
<codeline lineno="261"><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/>(!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="262"><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="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(values);</highlight></codeline>
|
|
<codeline lineno="263"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/>result(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>());</highlight></codeline>
|
|
<codeline lineno="265"><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/>index<sp/>=<sp/>0;<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref><sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>();<sp/>++<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>]<sp/>=<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>[<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adb2bc0a28f71db2c324799518538de6f" kindref="member">m_reduced_to_true</ref>[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>]];</highlight></codeline>
|
|
<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="268"><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="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="270"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Vector<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aea71ee7ed3e97c35a6efb4b5e9018763" kindref="member">scatter_true</ref>(const<sp/>::mfem::Vector&<sp/>values)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a879da8a655dd18078d2408f45e6fe102" kindref="member">validate_values</ref>(values);</highlight></codeline>
|
|
<codeline lineno="274"><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/>(!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<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/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ae79bb7f89b0a0f3dc66d2fb02e893b56" kindref="member">scatter</ref>(values);</highlight></codeline>
|
|
<codeline lineno="276"><highlight class="normal"><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/>::mfem::Vector<sp/>result(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>());</highlight></codeline>
|
|
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>0.0;</highlight></codeline>
|
|
<codeline lineno="279"><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/>index<sp/>=<sp/>0;<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref><sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>();<sp/>++<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>)<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/>result[<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adb2bc0a28f71db2c324799518538de6f" kindref="member">m_reduced_to_true</ref>[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>]]<sp/>=<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>];</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/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>result;</highlight></codeline>
|
|
<codeline lineno="283"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="284"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Vector<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a64b76eae2b6bcc6f4c0ca9f7aae9a719" kindref="member">accumulate_dual</ref>(const<sp/>::mfem::Vector&<sp/>full)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="287"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/>result;</highlight></codeline>
|
|
<codeline lineno="288"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a64b76eae2b6bcc6f4c0ca9f7aae9a719" kindref="member">accumulate_dual</ref>(full,<sp/>result);</highlight></codeline>
|
|
<codeline lineno="289"><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="290"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="291"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a64b76eae2b6bcc6f4c0ca9f7aae9a719" kindref="member">accumulate_dual</ref>(const<sp/>::mfem::Vector&<sp/>full,<sp/>::mfem::Vector&<sp/>result)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="294"><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="295"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>();</highlight></codeline>
|
|
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::invalid_argument>(full.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>(),</highlight></codeline>
|
|
<codeline lineno="298"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"Local<sp/>dual<sp/>vector<sp/>has<sp/>size<sp/>{},<sp/>expected<sp/>{}."</highlight><highlight class="normal">,<sp/>full.Size(),<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>());</highlight></codeline>
|
|
<codeline lineno="299"><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/>(!<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="300"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(full,<sp/>result);</highlight></codeline>
|
|
<codeline lineno="301"><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">;</highlight></codeline>
|
|
<codeline lineno="302"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="303"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>());</highlight></codeline>
|
|
<codeline lineno="304"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->MultTranspose(full,<sp/>independent);</highlight></codeline>
|
|
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aba93fdd2e86c0f032f9b0a50b1d42fa7" kindref="member">gather_true</ref>(independent);</highlight></codeline>
|
|
<codeline lineno="306"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="307"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aef238cf43b66e8499399b520d190f80a" kindref="member">supports</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="314"><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="315"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ELEMENT_ID_ERROR,<sp/>std::out_of_range>(element<sp/>>=<sp/>0<sp/>&&<sp/>element<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a77e48204234fc328a5ff5873cb7d0569" kindref="member">m_element_support</ref>.Size(),<sp/></highlight><highlight class="stringliteral">"Element<sp/>index<sp/>is<sp/>out<sp/>of<sp/>range."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a77e48204234fc328a5ff5873cb7d0569" kindref="member">m_element_support</ref>[element]<sp/>!=<sp/>0;</highlight></codeline>
|
|
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="319"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="323"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="324"><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="325"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="326"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adf7b5b9547cf58cab454ee8b5df5694b" kindref="member">validate_structure</ref>();</highlight></codeline>
|
|
<codeline lineno="327"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a7edf26cb6f259f842b60b8ae021de5c6" kindref="member">m_boundary_attributes</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="328"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::CACHE_FE_BINDING_ERROR>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNBE()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a7edf26cb6f259f842b60b8ae021de5c6" kindref="member">m_boundary_attributes</ref>->Size(),<sp/></highlight><highlight class="stringliteral">"Rebuild<sp/>reconstructed<sp/>bindings<sp/>after<sp/>boundary<sp/>changes."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="329"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>boundary<sp/>=<sp/>0;<sp/>boundary<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNBE();<sp/>++boundary)<sp/>{</highlight></codeline>
|
|
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::CACHE_FE_BINDING_ERROR>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetBdrAttribute(boundary)<sp/>==<sp/>(*<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a7edf26cb6f259f842b60b8ae021de5c6" kindref="member">m_boundary_attributes</ref>)[boundary],</highlight></codeline>
|
|
<codeline lineno="331"><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/></highlight><highlight class="stringliteral">"Rebuild<sp/>reconstructed<sp/>bindings<sp/>after<sp/>boundary<sp/>labels<sp/>change."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="334"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="335"><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/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNE();<sp/>++element)<sp/>{</highlight></codeline>
|
|
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::CACHE_FE_BINDING_ERROR>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetAttribute(element)<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>[element],</highlight><highlight class="stringliteral">"Term<sp/>binding<sp/>domain<sp/>attributes<sp/>changed<sp/>unexpectedly."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="339"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a879da8a655dd18078d2408f45e6fe102" kindref="member">validate_values</ref>(const<sp/>::mfem::Vector&<sp/>values)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="345"><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="346"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>();</highlight></codeline>
|
|
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::invalid_argument>(<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>(),<sp/></highlight><highlight class="stringliteral">"Term<sp/>binding<sp/>size<sp/>is<sp/>{},<sp/>expected<sp/>{}<sp/>supported<sp/>DOFs."</highlight><highlight class="normal">,<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>.Size(),<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>());</highlight></codeline>
|
|
<codeline lineno="349"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="350"><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/>i<sp/>=<sp/>0;<sp/>i<sp/><<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1adf1d7a29193c8b8a6cd17745686a04d8" kindref="member">values</ref>.Size();<sp/>++i)<sp/>{</highlight></codeline>
|
|
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::NON_FINITE_VALUE_ERROR,<sp/>NonFiniteValue>(std::isfinite(values[i]),<sp/></highlight><highlight class="stringliteral">"Term<sp/>binding<sp/>contains<sp/>a<sp/>non-finite<sp/>coefficient."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="352"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="354"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Vector<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(const<sp/>::mfem::Vector&<sp/>full)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/>result;</highlight></codeline>
|
|
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(full,<sp/>result);</highlight></codeline>
|
|
<codeline lineno="363"><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="364"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="365"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(const<sp/>::mfem::Vector&<sp/>full,<sp/>::mfem::Vector&<sp/>result)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="368"><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="369"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6b3f1ddbb971cfb23f779930a1417785" kindref="member">validate</ref>();</highlight></codeline>
|
|
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_DOF_COUNT,<sp/>std::invalid_argument>(full.Size()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>(),<sp/></highlight><highlight class="stringliteral">"Full<sp/>coefficient<sp/>vector<sp/>does<sp/>not<sp/>match<sp/>its<sp/>space."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="372"><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/>(full.GetData()<sp/>==<sp/>result.GetData())<sp/>{</highlight></codeline>
|
|
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Vector<sp/>copy(full);</highlight></codeline>
|
|
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ad41ac57947c2dcfcfabddfcbdb23fbe2" kindref="member">gather</ref>(copy,<sp/>result);</highlight></codeline>
|
|
<codeline lineno="375"><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">;</highlight></codeline>
|
|
<codeline lineno="376"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="377"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>());</highlight></codeline>
|
|
<codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetConformingRestriction()->Mult(full,<sp/>independent);</highlight></codeline>
|
|
<codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aba93fdd2e86c0f032f9b0a50b1d42fa7" kindref="member">gather_true</ref>(independent);</highlight></codeline>
|
|
<codeline lineno="381"><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">;</highlight></codeline>
|
|
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result.SetSize(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>());</highlight></codeline>
|
|
<codeline lineno="384"><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/>index<sp/>=<sp/>0;<sp/><ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref><sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>();<sp/>++<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="385"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>]<sp/>=<sp/>full[<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>[<ref refid="namespaceserif_1_1operators_1_1backend_1_1mfem_1ab297c6eedd8df878b6af2135b05e4616" kindref="member">index</ref>]];</highlight></codeline>
|
|
<codeline lineno="386"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="387"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="388"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>::mfem::Vector<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ae79bb7f89b0a0f3dc66d2fb02e893b56" kindref="member">scatter</ref>(const<sp/>::mfem::Vector&<sp/>reduced)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="397"><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="398"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a879da8a655dd18078d2408f45e6fe102" kindref="member">validate_values</ref>(reduced);</highlight></codeline>
|
|
<codeline lineno="400"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/>result(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>());</highlight></codeline>
|
|
<codeline lineno="402"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af20f3ee404ac1a4e0de2babd71acd99f" kindref="member">constrained</ref>())<sp/>{</highlight></codeline>
|
|
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->Mult(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1aea71ee7ed3e97c35a6efb4b5e9018763" kindref="member">scatter_true</ref>(reduced),<sp/>result);</highlight></codeline>
|
|
<codeline lineno="404"><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="405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>result<sp/>=<sp/>0.0;</highlight></codeline>
|
|
<codeline lineno="407"><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/>i<sp/>=<sp/>0;<sp/>i<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a8a6ce2a8958a84dfc99ca0484c64f302" kindref="member">size</ref>();<sp/>++i)<sp/>{</highlight></codeline>
|
|
<codeline lineno="408"><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_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>[i]]<sp/>=<sp/>reduced[i];</highlight></codeline>
|
|
<codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="410"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="411"><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="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="413"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="420"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a1e1fd2070b24720e0e782d5b79318384" kindref="member">element_values</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element,<sp/>const<sp/>::mfem::Vector&<sp/>reduced,<sp/>::mfem::Vector&<sp/>values)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="421"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="428"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af43d53f8759a04fbc5a11d2bbe73c97e" kindref="member">add_element</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>element,<sp/>::mfem::Vector&<sp/>values,<sp/>::mfem::Vector&<sp/>full)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="429"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="430"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
|
|
<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6d3b680d7e4ccc829e3e4bca8e366eda" kindref="member">ElementCoordinates</ref>;</highlight></codeline>
|
|
<codeline lineno="432"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="434"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a88f06289056fb51d54bfc0bf95408175" kindref="member">build_constrained_map</ref>()<sp/>{</highlight></codeline>
|
|
<codeline lineno="435"><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="436"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="437"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>.SetSize(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>());</highlight></codeline>
|
|
<codeline lineno="438"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref><sp/>=<sp/>-1;</highlight></codeline>
|
|
<codeline lineno="439"><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/>offsets<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetI();</highlight></codeline>
|
|
<codeline lineno="440"><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/>columns<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetJ();</highlight></codeline>
|
|
<codeline lineno="441"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>weights<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>->GetData();</highlight></codeline>
|
|
<codeline lineno="442"><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/>local<sp/>=<sp/>0;<sp/>local<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>();<sp/>++local)<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/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[local]<sp/><<sp/>0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="444"><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">continue</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/>}</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="keywordtype">int</highlight><highlight class="normal"><sp/>entry<sp/>=<sp/>offsets[local];<sp/>entry<sp/><<sp/>offsets[local<sp/>+<sp/>1];<sp/>++entry)<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/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(weights[entry]<sp/>!=<sp/>0.0)<sp/>{</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="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>[columns[entry]]<sp/>=<sp/>0;</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/>}</highlight></codeline>
|
|
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="451"><highlight class="normal"><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/>const<sp/>::mfem::SparseMatrix*<sp/>restriction<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetConformingRestriction();</highlight></codeline>
|
|
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(restriction<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">,</highlight></codeline>
|
|
<codeline lineno="454"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="stringliteral">"A<sp/>constrained<sp/>serial<sp/>space<sp/>must<sp/>provide<sp/>its<sp/>coefficient<sp/>restriction."</highlight><highlight class="normal">);</highlight></codeline>
|
|
<codeline lineno="455"><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/>independent<sp/>=<sp/>0;<sp/><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref><sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a82a7f93f369c8a3edff2722f7d72f101" kindref="member">true_size</ref>();<sp/>++<ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref>)<sp/>{</highlight></codeline>
|
|
<codeline lineno="456"><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/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>[independent]<sp/><<sp/>0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="457"><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">continue</highlight><highlight class="normal">;</highlight></codeline>
|
|
<codeline lineno="458"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="459"><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/>begin<sp/>=<sp/>restriction->GetI()[<ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref>];</highlight></codeline>
|
|
<codeline lineno="460"><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/>end<sp/>=<sp/>restriction->GetI()[<ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref><sp/>+<sp/>1];</highlight></codeline>
|
|
<codeline lineno="461"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::INVALID_ARGUMENT,<sp/>std::invalid_argument>(end<sp/>==<sp/>begin<sp/>+<sp/>1<sp/>&&<sp/>restriction->GetData()[begin]<sp/>==<sp/>1.0,</highlight></codeline>
|
|
<codeline lineno="462"><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">"Fixed-order<sp/>coefficient<sp/>restriction<sp/>must<sp/>select<sp/>one<sp/>independent<sp/>local<sp/>DOF;<sp/>coordinate<sp/>{}<sp/>has<sp/>an<sp/>unsupported<sp/>restriction."</highlight><highlight class="normal">,<sp/>independent);</highlight></codeline>
|
|
<codeline lineno="463"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>[<ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1strategies_1_1coupling_1a1843f298d4e3fb5770085697b48ffa55ae2580777557122a236c803c1ccad7fa4" kindref="member">independent</ref>]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adb2bc0a28f71db2c324799518538de6f" kindref="member">m_reduced_to_true</ref>.Size();</highlight></codeline>
|
|
<codeline lineno="464"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adb2bc0a28f71db2c324799518538de6f" kindref="member">m_reduced_to_true</ref>.Append(independent);</highlight></codeline>
|
|
<codeline lineno="465"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>.Append(restriction->GetJ()[begin]);</highlight></codeline>
|
|
<codeline lineno="466"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="467"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref><sp/>=<sp/>-1;</highlight></codeline>
|
|
<codeline lineno="468"><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/>local<sp/>=<sp/>0;<sp/>local<sp/><<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>();<sp/>++local)<sp/>{</highlight></codeline>
|
|
<codeline lineno="469"><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/>begin<sp/>=<sp/>offsets[local];</highlight></codeline>
|
|
<codeline lineno="470"><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/>(offsets[local<sp/>+<sp/>1]<sp/>==<sp/>begin<sp/>+<sp/>1<sp/>&&<sp/>weights[begin]<sp/>==<sp/>1.0)<sp/>{</highlight></codeline>
|
|
<codeline lineno="471"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>[local]<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>[columns[begin]];</highlight></codeline>
|
|
<codeline lineno="472"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="473"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="474"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
|
<codeline lineno="475"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="477"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adf7b5b9547cf58cab454ee8b5df5694b" kindref="member">validate_structure</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
|
<codeline lineno="478"><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="479"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="480"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>serif_ensure<SERiFErrorCode::CACHE_FE_BINDING_ERROR,<sp/>std::logic_error>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetSequence()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1addfda1f91b38dd3fbe22b6829e70c0e2" kindref="member">m_mesh_sequence</ref><sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>.GetNE()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>.Size()<sp/>&&<sp/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref><sp/>==<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal"><sp/>||<sp/>(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetMesh()<sp/>==<sp/>&<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref><sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetSequence()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1afd19f19e06e2956ae6d27c483462d04b" kindref="member">m_space_sequence</ref><sp/>&&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>->GetVSize()<sp/>==<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1af7216fe6e1685cb3c099aaabb3c69689" kindref="member">full_size</ref>())),<sp/></highlight><highlight class="stringliteral">"Rebuild<sp/>term<sp/>bindings<sp/>after<sp/>discretization<sp/>updates."</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"></highlight></codeline>
|
|
<codeline lineno="483"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::FiniteElementSpace*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1ac80119a408c7b9a0a1e6701eb014ade6" kindref="member">m_space</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="484"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Mesh&<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a6a0c67bc3aa3269d0c433094ddcbb00f" kindref="member">m_mesh</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="485"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">long</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1afd19f19e06e2956ae6d27c483462d04b" kindref="member">m_space_sequence</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="486"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">long</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1addfda1f91b38dd3fbe22b6829e70c0e2" kindref="member">m_mesh_sequence</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="487"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3c02a7aa7b5db8a03b982810ee7c0ff4" kindref="member">m_attributes</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="488"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a77e48204234fc328a5ff5873cb7d0569" kindref="member">m_element_support</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="489"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::SparseMatrix*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a42fbc17d23c403157463adee14720612" kindref="member">m_prolongation</ref>{</highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">};<sp/></highlight></codeline>
|
|
<codeline lineno="490"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a883e3bac220ea74fd71e79605a375cad" kindref="member">m_true_to_reduced</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="491"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1adb2bc0a28f71db2c324799518538de6f" kindref="member">m_reduced_to_true</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="492"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a3de4c790a52803fbfdb67701f659d2c9" kindref="member">m_reduced_to_full</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="493"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Array<int><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a4f2c15f97933d40301952aaff6e00b8c" kindref="member">m_full_to_reduced</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="494"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::optional<::mfem::Array<int>><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a7edf26cb6f259f842b60b8ae021de5c6" kindref="member">m_boundary_attributes</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="495"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr<const<sp/>ReconstructionPlan><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1a04248d954090e69479bc8edb93c5984c" kindref="member">m_reconstruction</ref>;<sp/></highlight></codeline>
|
|
<codeline lineno="496"><highlight class="normal"></highlight></codeline>
|
|
<codeline lineno="497"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
|
<codeline lineno="498"><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>serif::discretization::backend::mfem</highlight><highlight class="normal"></highlight></codeline>
|
|
</programlisting>
|
|
<location file="src/include/serif/backend/mfem/discretization/dof_map.hpp"/>
|
|
</compounddef>
|
|
</doxygen>
|