Files
MeanField_SERiF/docs/xml/basis__evaluation_8hpp.xml

883 lines
56 KiB
XML
Raw Permalink Normal View History

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
<compounddef id="basis__evaluation_8hpp" kind="file" language="C++">
<compoundname>basis_evaluation.hpp</compoundname>
<includes local="no">memory</includes>
<includes local="yes">mfem/fem/fe/fe_base.hpp</includes>
<includes local="yes">mfem/fem/intrules.hpp</includes>
<includes refid="tensor__basis_8hpp" local="yes">serif/backend/mfem/discretization/tensor_basis.hpp</includes>
<includedby refid="element__data_8hpp" local="yes">src/include/serif/backend/mfem/operators/element_data.hpp</includedby>
<includedby refid="operand__evaluation_8hpp" local="yes">src/include/serif/backend/mfem/operators/operand_evaluation.hpp</includedby>
<includedby refid="backend_2mfem_2operators_2workspace_8hpp" local="yes">src/include/serif/backend/mfem/operators/workspace.hpp</includedby>
<includedby refid="basis__evaluation_8cpp" local="yes">src/lib/serif/backend/mfem/discretization/basis_evaluation.cpp</includedby>
<incdepgraph>
<node id="1">
<label>src/include/serif/backend/mfem/discretization/basis_evaluation.hpp</label>
<link refid="basis__evaluation_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>
</node>
<node id="35">
<label>serif/backend/mfem/discretization/reconstruction.hpp</label>
<link refid="reconstruction_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="36" relation="include">
</childnode>
<childnode refid="54" relation="include">
</childnode>
</node>
<node id="5">
<label>serif/backend/mfem/discretization/tensor_basis.hpp</label>
<link refid="tensor__basis_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
<childnode refid="13" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
<childnode refid="35" relation="include">
</childnode>
</node>
<node id="37">
<label>serif/dimensions/dimensions.hpp</label>
<link refid="dimensions_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="38" relation="include">
</childnode>
</node>
<node id="38">
<label>serif/dimensions/quantities.hpp</label>
<link refid="quantities_8hpp"/>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="42">
<label>serif/discretization/blocks/base.hpp</label>
<link refid="base_8hpp"/>
</node>
<node id="36">
<label>serif/discretization/blocks/fields.hpp</label>
<link refid="fields_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
<childnode refid="44" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="52" relation="include">
</childnode>
</node>
<node id="44">
<label>serif/discretization/domain/concepts.hpp</label>
<link refid="discretization_2domain_2concepts_8hpp"/>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="47" relation="include">
</childnode>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="41" relation="include">
</childnode>
<childnode refid="49" relation="include">
</childnode>
</node>
<node id="50">
<label>serif/discretization/domain/physical_domains.hpp</label>
<link refid="physical__domains_8hpp"/>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="44" relation="include">
</childnode>
</node>
<node id="48">
<label>serif/discretization/domain/types.hpp</label>
<link refid="discretization_2domain_2types_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="43">
<label>serif/discretization/functional_space/space.hpp</label>
<link refid="space_8hpp"/>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="54">
<label>serif/discretization/reconstruction/surface_power.hpp</label>
<link refid="surface__power_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="50" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="30">
<label>serif/meta/enums.hpp</label>
<link refid="enums_8hpp"/>
<childnode refid="31" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="32" relation="include">
</childnode>
</node>
<node id="52">
<label>serif/meta/names.hpp</label>
<link refid="names_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="53" relation="include">
</childnode>
</node>
<node id="29">
<label>serif/utils/error/codes.hpp</label>
<link refid="codes_8hpp"/>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="14">
<label>serif/utils/error/errors.hpp</label>
<link refid="errors_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="33" relation="include">
</childnode>
</node>
<node id="24">
<label>serif/utils/misc/concepts/exceptions.hpp</label>
<link refid="utils_2misc_2concepts_2exceptions_8hpp"/>
<childnode refid="25" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="27">
<label>serif/utils/misc/concepts/numeric.hpp</label>
<link refid="numeric_8hpp"/>
<childnode refid="28" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
</node>
<node id="41">
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
<link refid="cleaning_8hpp"/>
<childnode refid="26" relation="include">
</childnode>
</node>
<node id="49">
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
<link refid="variadic__cleaning_8hpp"/>
<childnode refid="45" relation="include">
</childnode>
</node>
<node id="21">
<label>serif/utils/misc/terminal/colors.hpp</label>
<link refid="colors_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
</node>
<node id="33">
<label>serif/utils/types/strings.hpp</label>
<link refid="types_2strings_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="34" relation="include">
</childnode>
<childnode refid="15" relation="include">
</childnode>
</node>
<node id="51">
<label>serif/utils/types/type_list.hpp</label>
<link refid="type__list_8hpp"/>
</node>
<node id="6">
<label>algorithm</label>
</node>
<node id="7">
<label>array</label>
</node>
<node id="8">
<label>cmath</label>
</node>
<node id="39">
<label>compare</label>
</node>
<node id="28">
<label>concepts</label>
</node>
<node id="45">
<label>cstddef</label>
</node>
<node id="19">
<label>cstdint</label>
</node>
<node id="17">
<label>cstdio</label>
</node>
<node id="22">
<label>cstdlib</label>
</node>
<node id="25">
<label>exception</label>
</node>
<node id="16">
<label>format</label>
</node>
<node id="34">
<label>iostream</label>
</node>
<node id="9">
<label>limits</label>
</node>
<node id="32">
<label>magic_enum/magic_enum_all.hpp</label>
</node>
<node id="2">
<label>memory</label>
</node>
<node id="3">
<label>mfem/fem/fe/fe_base.hpp</label>
</node>
<node id="12">
<label>mfem/fem/fe/fe_h1.hpp</label>
</node>
<node id="13">
<label>mfem/fem/fe/fe_l2.hpp</label>
</node>
<node id="4">
<label>mfem/fem/intrules.hpp</label>
</node>
<node id="53">
<label>nameof.hpp</label>
</node>
<node id="47">
<label>numeric</label>
</node>
<node id="46">
<label>span</label>
</node>
<node id="18">
<label>string</label>
</node>
<node id="15">
<label>string_view</label>
</node>
<node id="40">
<label>tuple</label>
</node>
<node id="26">
<label>type_traits</label>
</node>
<node id="23">
<label>unistd.h</label>
</node>
<node id="31">
<label>unordered_map</label>
</node>
<node id="11">
<label>utility</label>
</node>
<node id="10">
<label>vector</label>
</node>
<node id="20">
<label>version</label>
</node>
</incdepgraph>
<invincdepgraph>
<node id="35">
<label>src/compile_time_checks/serif/model/finite_elements.cpp</label>
<link refid="compile__time__checks_2serif_2model_2finite__elements_8cpp"/>
</node>
<node id="22">
<label>src/compile_time_checks/serif/model/scalar_row.cpp</label>
<link refid="compile__time__checks_2serif_2model_2scalar__row_8cpp"/>
</node>
<node id="11">
<label>src/compile_time_checks/serif/model/state.cpp</label>
<link refid="state_8cpp"/>
</node>
<node id="24">
<label>src/compile_time_checks/serif/operators/computation_owners.cpp</label>
<link refid="computation__owners_8cpp"/>
</node>
<node id="48">
<label>src/compile_time_checks/serif/operators/plan.cpp</label>
<link refid="operators_2plan_8cpp"/>
</node>
<node id="1">
<label>src/include/serif/backend/mfem/discretization/basis_evaluation.hpp</label>
<link refid="basis__evaluation_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="47" relation="include">
</childnode>
<childnode refid="51" relation="include">
</childnode>
<childnode refid="52" relation="include">
</childnode>
</node>
<node id="49">
<label>src/include/serif/backend/mfem/discretization/field_values.hpp</label>
<link refid="field__values_8hpp"/>
<childnode refid="50" relation="include">
</childnode>
</node>
<node id="41">
<label>src/include/serif/backend/mfem/model/binding.hpp</label>
<link refid="backend_2mfem_2model_2binding_8hpp"/>
<childnode refid="42" relation="include">
</childnode>
<childnode refid="43" relation="include">
</childnode>
</node>
<node id="7">
<label>src/include/serif/backend/mfem/model/computations/interior.hpp</label>
<link refid="interior_8hpp"/>
<childnode refid="8" relation="include">
</childnode>
<childnode refid="18" relation="include">
</childnode>
<childnode refid="19" relation="include">
</childnode>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="8">
<label>src/include/serif/backend/mfem/model/computations/potential_infinity.hpp</label>
<link refid="potential__infinity_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="18">
<label>src/include/serif/backend/mfem/model/computations/pressure_boundary.hpp</label>
<link refid="model_2computations_2pressure__boundary_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="21">
<label>src/include/serif/backend/mfem/model/computations/scalar_row.hpp</label>
<link refid="computations_2scalar__row_8hpp"/>
<childnode refid="22" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
</node>
<node id="19">
<label>src/include/serif/backend/mfem/model/computations/surface_potential.hpp</label>
<link refid="backend_2mfem_2model_2computations_2surface__potential_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="32">
<label>src/include/serif/backend/mfem/model/discretization.hpp</label>
<link refid="model_2discretization_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="33" relation="include">
</childnode>
<childnode refid="37" relation="include">
</childnode>
</node>
<node id="10">
<label>src/include/serif/backend/mfem/model/equilibrium.hpp</label>
<link refid="backend_2mfem_2model_2equilibrium_8hpp"/>
<childnode refid="11" relation="include">
</childnode>
<childnode refid="12" relation="include">
</childnode>
</node>
<node id="42">
<label>src/include/serif/backend/mfem/model/equilibrium_evaluator.hpp</label>
<link refid="equilibrium__evaluator_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
</node>
<node id="33">
<label>src/include/serif/backend/mfem/model/finite_elements.hpp</label>
<link refid="backend_2mfem_2model_2finite__elements_8hpp"/>
<childnode refid="34" relation="include">
</childnode>
<childnode refid="36" relation="include">
</childnode>
</node>
<node id="9">
<label>src/include/serif/backend/mfem/model/graph.hpp</label>
<link refid="backend_2mfem_2model_2graph_8hpp"/>
<childnode refid="10" relation="include">
</childnode>
<childnode refid="17" relation="include">
</childnode>
</node>
<node id="40">
<label>src/include/serif/backend/mfem/model/inputs.hpp</label>
<link refid="model_2inputs_8hpp"/>
<childnode refid="41" relation="include">
</childnode>
</node>
<node id="6">
<label>src/include/serif/backend/mfem/model/volume.hpp</label>
<link refid="volume_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
</node>
<node id="20">
<label>src/include/serif/backend/mfem/model/volume_actions.hpp</label>
<link refid="volume__actions_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="45">
<label>src/include/serif/backend/mfem/model/volume_displacement.hpp</label>
<link refid="volume__displacement_8hpp"/>
<childnode refid="9" relation="include">
</childnode>
</node>
<node id="2">
<label>src/include/serif/backend/mfem/operators/element_data.hpp</label>
<link refid="element__data_8hpp"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="3">
<label>src/include/serif/backend/mfem/operators/element_evaluation.hpp</label>
<link refid="element__evaluation_8hpp"/>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="29">
<label>src/include/serif/backend/mfem/operators/element_preparation.hpp</label>
<link refid="element__preparation_8hpp"/>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="4">
<label>src/include/serif/backend/mfem/operators/element_transpose.hpp</label>
<link refid="element__transpose_8hpp"/>
<childnode refid="5" relation="include">
</childnode>
</node>
<node id="30">
<label>src/include/serif/backend/mfem/operators/geometry_derivatives.hpp</label>
<link refid="geometry__derivatives_8hpp"/>
<childnode refid="27" relation="include">
</childnode>
</node>
<node id="23">
<label>src/include/serif/backend/mfem/operators/jacobian_operator.hpp</label>
<link refid="jacobian__operator_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
</node>
<node id="47">
<label>src/include/serif/backend/mfem/operators/operand_evaluation.hpp</label>
<link refid="operand__evaluation_8hpp"/>
<childnode refid="48" relation="include">
</childnode>
<childnode refid="49" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
</node>
<node id="5">
<label>src/include/serif/backend/mfem/operators/volume_application.hpp</label>
<link refid="volume__application_8hpp"/>
<childnode refid="6" relation="include">
</childnode>
<childnode refid="20" relation="include">
</childnode>
<childnode refid="23" relation="include">
</childnode>
<childnode refid="25" relation="include">
</childnode>
</node>
<node id="28">
<label>src/include/serif/backend/mfem/operators/volume_computations.hpp</label>
<link refid="volume__computations_8hpp"/>
<childnode refid="24" relation="include">
</childnode>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="21" relation="include">
</childnode>
</node>
<node id="31">
<label>src/include/serif/backend/mfem/operators/volume_data.hpp</label>
<link refid="volume__data_8hpp"/>
<childnode refid="32" relation="include">
</childnode>
<childnode refid="39" relation="include">
</childnode>
<childnode refid="27" relation="include">
</childnode>
<childnode refid="46" relation="include">
</childnode>
</node>
<node id="25">
<label>src/include/serif/backend/mfem/operators/volume_field_block.hpp</label>
<link refid="volume__field__block_8hpp"/>
<childnode refid="7" relation="include">
</childnode>
<childnode refid="26" relation="include">
</childnode>
</node>
<node id="39">
<label>src/include/serif/backend/mfem/operators/volume_inputs.hpp</label>
<link refid="volume__inputs_8hpp"/>
<childnode refid="40" relation="include">
</childnode>
<childnode refid="45" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
<childnode refid="28" relation="include">
</childnode>
</node>
<node id="27">
<label>src/include/serif/backend/mfem/operators/volume_stages.hpp</label>
<link refid="volume__stages_8hpp"/>
<childnode refid="28" relation="include">
</childnode>
</node>
<node id="51">
<label>src/include/serif/backend/mfem/operators/workspace.hpp</label>
<link refid="backend_2mfem_2operators_2workspace_8hpp"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="29" relation="include">
</childnode>
<childnode refid="30" relation="include">
</childnode>
<childnode refid="31" relation="include">
</childnode>
</node>
<node id="38">
<label>src/include/serif/backend/mfem/serialize/configuration.hpp</label>
<link refid="backend_2mfem_2serialize_2configuration_8hpp"/>
</node>
<node id="37">
<label>src/include/serif/backend/mfem/serialize/discretization.hpp</label>
<link refid="serialize_2discretization_8hpp"/>
<childnode refid="38" relation="include">
</childnode>
</node>
<node id="46">
<label>src/include/serif/backend/mfem/serialize/options.hpp</label>
<link refid="backend_2mfem_2serialize_2options_8hpp"/>
</node>
<node id="17">
<label>src/include/serif/backend/mfem/solver/admissibility/geometry.hpp</label>
<link refid="geometry_8hpp"/>
<childnode refid="12" relation="include">
</childnode>
</node>
<node id="13">
<label>src/include/serif/backend/mfem/solver/equilibrium.hpp</label>
<link refid="backend_2mfem_2solver_2equilibrium_8hpp"/>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="12">
<label>src/include/serif/backend/mfem/solver/nonlinear/stellar_problem.hpp</label>
<link refid="stellar__problem_8hpp"/>
<childnode refid="13" relation="include">
</childnode>
</node>
<node id="43">
<label>src/include/serif/backend/mfem/solver/seed/state.hpp</label>
<link refid="backend_2mfem_2solver_2seed_2state_8hpp"/>
<childnode refid="44" relation="include">
</childnode>
</node>
<node id="34">
<label>src/include/serif/model/finite_elements.hpp</label>
<link refid="model_2finite__elements_8hpp"/>
<childnode refid="35" relation="include">
</childnode>
<childnode refid="14" relation="include">
</childnode>
</node>
<node id="15">
<label>src/include/serif/solver/continuation/equilibrium.hpp</label>
<link refid="solver_2continuation_2equilibrium_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
</node>
<node id="14">
<label>src/include/serif/solver/equilibrium.hpp</label>
<link refid="solver_2equilibrium_8hpp"/>
<childnode refid="15" relation="include">
</childnode>
<childnode refid="16" relation="include">
</childnode>
</node>
<node id="44">
<label>src/include/serif/solver/seed/state.hpp</label>
<link refid="solver_2seed_2state_8hpp"/>
<childnode refid="16" relation="include">
</childnode>
</node>
<node id="16">
<label>src/include/serif/solver/solver.hpp</label>
<link refid="solver_2solver_8hpp"/>
</node>
<node id="52">
<label>src/lib/serif/backend/mfem/discretization/basis_evaluation.cpp</label>
<link refid="basis__evaluation_8cpp"/>
</node>
<node id="36">
<label>src/lib/serif/backend/mfem/model/finite_elements.cpp</label>
<link refid="lib_2serif_2backend_2mfem_2model_2finite__elements_8cpp"/>
</node>
<node id="26">
<label>src/lib/serif/backend/mfem/model/system_selection.cpp</label>
<link refid="system__selection_8cpp"/>
</node>
<node id="50">
<label>src/lib/serif/backend/mfem/serialize/top.cpp</label>
<link refid="backend_2mfem_2serialize_2top_8cpp"/>
</node>
</invincdepgraph>
<innerclass refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" prot="public">serif::discretization::backend::mfem::BasisWorkspace</innerclass>
<innerclass refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation" prot="public">serif::discretization::backend::mfem::BasisEvaluation</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>Basis evaluation, pointwise mapping, and transpose application using dense or tensor-product representations. </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="8"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;memory&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;mfem/fem/fe/fe_base.hpp&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;mfem/fem/intrules.hpp&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="12"><highlight class="normal"></highlight></codeline>
<codeline lineno="13"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="tensor__basis_8hpp" kindref="compound">serif/backend/mfem/discretization/tensor_basis.hpp</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight></codeline>
<codeline lineno="15" refid="namespaceserif_1_1discretization" refkind="compound"><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="19" refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" kindref="compound">BasisWorkspace</ref><sp/>{</highlight></codeline>
<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_tensor_workspace" kindref="compound">TensorWorkspace</ref><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace_1a4dfc9d6b5781acae14a72355518b3dc1" kindref="member">tensor</ref>;</highlight></codeline>
<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace_1ac591e07f9bef293a7083c054a09e7e86" kindref="member">reference_values</ref>;</highlight></codeline>
<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace_1a42db4f35fff7eb1703c5be1646dbe2f1" kindref="member">mapping_input</ref>;</highlight></codeline>
<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector<sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace_1a09c273367ea6af1836e0878cd0d548a5" kindref="member">mapping_output</ref>;</highlight></codeline>
<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="25"><highlight class="normal"></highlight></codeline>
<codeline lineno="115" refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation" 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_basis_evaluation" kindref="compound">BasisEvaluation</ref><sp/>final<sp/>{</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="126"><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_basis_evaluation_1a25086f0046e053d2df0f6d32e8e456f5" kindref="member">sample</ref>(</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::FiniteElement&amp;<sp/>element,</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::IntegrationRule&amp;<sp/>rule,</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1discretization_1_1backend_1_1mfem_1af75f98db90618153ea4ca169945733f7" kindref="member">ReferenceOperation</ref><sp/>operation,</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>copies,</highlight></codeline>
<codeline lineno="131"><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_tensor_basis_cache" kindref="compound">TensorBasisCache</ref>&amp;<sp/>cache,</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1discretization_1_1backend_1_1mfem_1a24da3fc8af225640b2d32c378ef40cde" kindref="member">ContractionMode</ref><sp/>mode,</highlight></codeline>
<codeline lineno="133"><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="structserif_1_1discretization_1_1backend_1_1mfem_1_1_element_reconstruction" kindref="compound">ElementReconstruction</ref>*<sp/><ref refid="namespaceserif_1_1discretization_1_1reconstruction" kindref="compound">reconstruction</ref><sp/>=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
<codeline lineno="135"><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><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_basis_evaluation_1adbca7b7395309f4915aa9f36c82aed61" kindref="member">set_constant</ref>(</highlight></codeline>
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>points</highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
<codeline lineno="143"><highlight class="normal"></highlight></codeline>
<codeline lineno="151"><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_basis_evaluation_1adc93c0cd241b9602e9a65a5d427cc6fe" kindref="member">reset_from</ref>(</highlight></codeline>
<codeline lineno="152"><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_basis_evaluation" kindref="compound">BasisEvaluation</ref>&amp;<sp/>reference,</highlight></codeline>
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>components</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
<codeline lineno="155"><highlight class="normal"></highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>MapT&gt;</highlight></codeline>
<codeline lineno="167"><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_basis_evaluation_1ad739b800579c2b21b04a7edeea871019" kindref="member">map_point</ref>(</highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>point,</highlight></codeline>
<codeline lineno="169"><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_basis_evaluation" kindref="compound">BasisEvaluation</ref>&amp;<sp/>reference,</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>MapT&amp;&amp;<sp/>map,</highlight></codeline>
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" kindref="compound">BasisWorkspace</ref>&amp;<sp/>workspace</highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
<codeline lineno="173"><highlight class="normal"></highlight></codeline>
<codeline lineno="180"><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_basis_evaluation_1a2e508b37c9b6219daf7a32087b4796ea" kindref="member">evaluate</ref>(</highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Vector&amp;<sp/>coefficients,</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector&amp;<sp/>values,</highlight></codeline>
<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" kindref="compound">BasisWorkspace</ref>&amp;<sp/>workspace</highlight></codeline>
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="185"><highlight class="normal"></highlight></codeline>
<codeline lineno="190"><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_basis_evaluation_1ac58b9287aa52e640d01ea276a4578143" kindref="member">evaluate_many</ref>(</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Vector&amp;<sp/>coefficients,</highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector&amp;<sp/>values,</highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>lanes,</highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" kindref="compound">BasisWorkspace</ref>&amp;<sp/>workspace</highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="196"><highlight class="normal"></highlight></codeline>
<codeline lineno="203"><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_basis_evaluation_1a3790e2ba8fcaf5bb348219ec0758648d" kindref="member">integrate</ref>(</highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>::mfem::Vector&amp;<sp/>values,</highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::Vector&amp;<sp/>coefficients,</highlight></codeline>
<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace" kindref="compound">BasisWorkspace</ref>&amp;<sp/>workspace</highlight></codeline>
<codeline lineno="207"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="208"><highlight class="normal"></highlight></codeline>
<codeline lineno="210"><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_basis_evaluation_1aeab516106c97106e1461f40c1b545dc1" kindref="member">height</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="211"><highlight class="normal"></highlight></codeline>
<codeline lineno="213"><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_basis_evaluation_1af110a637837a9acb295cec4bfd9f961c" kindref="member">width</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="214"><highlight class="normal"></highlight></codeline>
<codeline lineno="216"><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_basis_evaluation_1a6338a95c8bba30d2b47bae2d1771ef61" kindref="member">uses_tensor</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="217"><highlight class="normal"></highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a7571b4804703d42e9932dede22c9066d" kindref="member">m_points</ref>{0};<sp/></highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>{0};<sp/></highlight></codeline>
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1aa904e15667230fb56ae9d9314b2fe4d7" kindref="member">m_width</ref>{0};<sp/></highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1af189b220a3a46cf57b0c0d74a9e8b9c4" kindref="member">m_identity_mapping</ref>{</highlight><highlight class="keyword">false</highlight><highlight class="normal">};<sp/></highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::shared_ptr&lt;const<sp/>TensorBasis&gt;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a17a2c4c54b9869489850f4406a0031ba" kindref="member">m_tensor</ref>;<sp/></highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::DenseMatrix<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a524a936d14d472dcc7626b3443a44353" kindref="member">m_dense</ref>;<sp/></highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>::mfem::DenseMatrix<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a409a36e1ec8e227e4f2f1162a1eb5536" kindref="member">m_mapping</ref>;<sp/></highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="227"><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>serif::discretization::backend::mfem</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="228"><highlight class="normal"></highlight></codeline>
<codeline lineno="229"><highlight class="normal"></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>MapT&gt;</highlight></codeline>
<codeline lineno="230"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1ad739b800579c2b21b04a7edeea871019" kindref="member">serif::discretization::backend::mfem::BasisEvaluation::map_point</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>point,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>BasisEvaluation&amp;<sp/>reference,<sp/>MapT&amp;&amp;<sp/>map,<sp/>BasisWorkspace&amp;<sp/>workspace)<sp/>{</highlight></codeline>
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>canonical_reference<sp/>=<sp/>reference.m_identity_mapping;</highlight></codeline>
<codeline lineno="232"><highlight class="normal"><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_basis_evaluation_1af189b220a3a46cf57b0c0d74a9e8b9c4" kindref="member">m_identity_mapping</ref>)<sp/>{</highlight></codeline>
<codeline lineno="233"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Directly<sp/>mapping<sp/>a<sp/>canonical<sp/>destination<sp/>must<sp/>preserve<sp/>the<sp/>untouched<sp/>points.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a409a36e1ec8e227e4f2f1162a1eb5536" kindref="member">m_mapping</ref>.SetSize(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a7571b4804703d42e9932dede22c9066d" kindref="member">m_points</ref><sp/>*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>,<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>);</highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a409a36e1ec8e227e4f2f1162a1eb5536" kindref="member">m_mapping</ref><sp/>=<sp/>0.0;</highlight></codeline>
<codeline lineno="236"><highlight class="normal"><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/>q<sp/>=<sp/>0;<sp/>q<sp/>&lt;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a7571b4804703d42e9932dede22c9066d" kindref="member">m_points</ref>;<sp/>++q)<sp/>{</highlight></codeline>
<codeline lineno="237"><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/>component<sp/>=<sp/>0;<sp/>component<sp/>&lt;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>;<sp/>++component)<sp/>{</highlight></codeline>
<codeline lineno="238"><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_basis_evaluation_1a409a36e1ec8e227e4f2f1162a1eb5536" kindref="member">m_mapping</ref>(q<sp/>*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref><sp/>+<sp/>component,<sp/>component)<sp/>=<sp/>1.0;</highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1af189b220a3a46cf57b0c0d74a9e8b9c4" kindref="member">m_identity_mapping</ref><sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/>const<sp/>::mfem::DenseMatrix&amp;<sp/>source<sp/>=<sp/>reference.m_tensor<sp/>?<sp/>reference.m_mapping<sp/>:<sp/>reference.m_dense;</highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/>::mfem::DenseMatrix&amp;<sp/>destination<sp/>=<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a17a2c4c54b9869489850f4406a0031ba" kindref="member">m_tensor</ref><sp/>?<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a409a36e1ec8e227e4f2f1162a1eb5536" kindref="member">m_mapping</ref><sp/>:<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a524a936d14d472dcc7626b3443a44353" kindref="member">m_dense</ref>;</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><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/>canonical_reference<sp/>?<sp/>reference.m_components<sp/>:<sp/>source.Width();</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/>::mfem::Vector&amp;<sp/>input<sp/>=<sp/>workspace.mapping_input;</highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/>::mfem::Vector&amp;<sp/>output<sp/>=<sp/>workspace.mapping_output;</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/>input.SetSize(reference.m_components);</highlight></codeline>
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/>output.SetSize(<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>);</highlight></codeline>
<codeline lineno="250"><highlight class="normal"></highlight></codeline>
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>column<sp/>=<sp/>0;<sp/>column<sp/>&lt;<sp/>columns;<sp/>++column)<sp/>{</highlight></codeline>
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>axis<sp/>=<sp/>0;<sp/>axis<sp/>&lt;<sp/>reference.m_components;<sp/>++axis)<sp/>{</highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>input[axis]<sp/>=<sp/>canonical_reference<sp/>?<sp/></highlight><highlight class="keyword">static_cast&lt;</highlight><highlight class="keywordtype">double</highlight><highlight class="keyword">&gt;</highlight><highlight class="normal">(axis<sp/>==<sp/>column)<sp/>:<sp/>source(point<sp/>*<sp/>reference.<ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref><sp/>+<sp/>axis,<sp/>column);</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>map(input,<sp/>output);</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>axis<sp/>=<sp/>0;<sp/>axis<sp/>&lt;<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref>;<sp/>++axis)<sp/>{</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>destination(point<sp/>*<sp/><ref refid="classserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_evaluation_1a2e48ab28c03dcfb248626a3f2bb9a772" kindref="member">m_components</ref><sp/>+<sp/>axis,<sp/>column)<sp/>=<sp/>output[axis];</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="260"><highlight class="normal">}</highlight></codeline>
</programlisting>
<location file="src/include/serif/backend/mfem/discretization/basis_evaluation.hpp"/>
</compounddef>
</doxygen>