data.hpp mfem/fem/fe/fe_base.hpp mfem/fem/fespace.hpp mfem/linalg/vector.hpp mfem/linalg/densemat.hpp mfem/mesh/mesh.hpp cstdint serif/backend/mfem/mapping/compactification/kelvin.hpp serif/backend/mfem/mapping/context.hpp serif/backend/mfem/mapping/data.hpp src/include/serif/backend/mfem/mapping/data.hpp src/include/serif/backend/mfem/mapping/domain_mapper.hpp src/include/serif/backend/mfem/operators/element_data.hpp src/include/serif/backend/mfem/operators/workspace.hpp src/lib/serif/backend/mfem/mapping/data.cpp serif::mapping::ElementDisplacementData serif::mapping::CompactificationPointData serif::mapping::ElementCompactificationData serif::mapping::ElementMappingData serif::mapping::DMWorkspace serif::mapping::DMFixedMeshGeometry serif::mapping::DMReferenceDisplacementSample serif serif::mapping File containing some misc data structures for the mapping module. This was the very first file I ported over from MeanField and I think because of that its organization is actually quite wonky. For one its int this poorly named "data" file, which could mean any number of things. Regardless, these are basically low leval containers for useful stuff and also some scratch workspaces for mapping operations. Emily M. Boudreaux TodoAs said above there is some refactoring to make this cleaner which could happen. #pragmaonce #include"mfem/fem/fe/fe_base.hpp" #include"mfem/fem/fespace.hpp" #include"mfem/linalg/vector.hpp" #include"mfem/linalg/densemat.hpp" #include"mfem/mesh/mesh.hpp" #include<cstdint> #include"serif/backend/mfem/mapping/compactification/kelvin.hpp" #include"serif/backend/mfem/mapping/context.hpp" #include"serif/backend/mfem/mapping/data.hpp" namespaceserif::mapping{ enumclassFaceElementSide:uint8_t{ ELEMENT_1, ELEMENT_2 }; classElementDisplacementData{ public: ElementDisplacementData( constmfem::FiniteElement&element, mfem::Vector&displacement_dofs ); [[nodiscard]]constmfem::FiniteElement&get_element()constnoexcept; [[nodiscard]]constmfem::DenseMatrix&get_dof_matrix()constnoexcept; [[nodiscard]]intget_dimension()constnoexcept; [[nodiscard]]intget_dof_count()constnoexcept; private: constmfem::FiniteElement*m_element; mfem::DenseMatrixm_dof_matrix; intm_dimension; }; structCompactificationPointData{ doublecompactification_coordinate{0.0}; mfem::Vectorcoordinate_gradient; }; [[nodiscard]]ElementDisplacementDataelement_displacement_data_from_element_vdofs( constmfem::FiniteElement&element, mfem::Vector&displacement_dofs ); classElementCompactificationData{ public: ElementCompactificationData( constmfem::FiniteElement&element, constmfem::Vector&dofs ); [[nodiscard]]constmfem::FiniteElement&get_element()constnoexcept; [[nodiscard]]constmfem::Vector&get_dofs()constnoexcept; [[nodiscard]]intget_dof_count()constnoexcept; private: constmfem::FiniteElement*m_element; mfem::Vectorm_dofs; }; structElementMappingData{ constElementDisplacementData&displacement; constElementCompactificationData&compactification; }; classDMWorkspace{ public: explicitDMWorkspace(intdimension=3); voidset_dimension(intdimension); [[nodiscard]]intget_dimension()constnoexcept; public://Thisisaworkspaceclass,thesemembersarekeptpublicsowedonotneedindirectionthroughgetterstoaccessthem mfem::Vectorm_shape; mfem::DenseMatrixm_reference_dshape; mfem::DenseMatrixm_mesh_dshape; mfem::DenseMatrixm_reference_field_jacobian; mfem::Vectorm_field_value; mfem::DenseMatrixm_field_jacobian; mfem::Vectorm_compactification_shape; mfem::DenseMatrixm_compactification_dshape; CompactificationPointDatam_compactification_point; mfem::Vectorm_reference_normal; mfem::Vectorm_mapped_normal; mfem::DenseMatrixm_full_element_jacobian; mfem::Vectorm_vector_temp; mfem::DenseMatrixm_matrix_temp_1; mfem::DenseMatrixm_matrix_temp_2; compactification::ExteriorMapResultm_exterior_result; compactification::ExteriorMapVariationm_exterior_variation; private: intm_dimension; }; structDMFixedMeshGeometry{ mfem::Vectorposition; mfem::DenseMatrixjacobian; mfem::DenseMatrixinverse_jacobian; doubleweight{0.0}; }; structDMReferenceDisplacementSample{ constmfem::Vector&value; constmfem::DenseMatrix&gradient; }; }