#pragma once /** * @file variation.hpp * @author Emily M. Boudreaux * * @brief File containing the structures for the variation of the compactification mapping. */ #include "mfem/linalg/vector.hpp" #include "mfem/linalg/densemat.hpp" namespace serif::mapping::compactification { /** * @struct ExteriorMapDirection * * @brief Structure representing the direction of the variation in the exterior domain mapping. * This includes the variation of the displaced position and the variation of the displacement Jacobian. */ struct ExteriorMapDirection { const mfem::Vector &displaced_position_variation; ///< Variation of the position in displaced space. const mfem::DenseMatrix &displacement_jacobian_variation; ///< Variation of the Jacobian of the displacement mapping. }; /** * @struct ExteriorMapVariation * * @brief Structure representing the variation of the exterior domain mapping. * This includes the variation of the physical position and the variation of the mapping Jacobian. */ struct ExteriorMapVariation { mfem::Vector physical_position_variation; ///< Variation of the position in physical space. mfem::DenseMatrix mapping_jacobian_variation; ///< Variation of the Jacobian of the mapping. }; }