12#include "geometry_interface.h"
36 explicit QuadO2(Eigen::Matrix<double, Eigen::Dynamic, 8> coords);
44 [[nodiscard]] Eigen::MatrixXd
Global(
45 const Eigen::MatrixXd &local)
const override;
46 [[nodiscard]] Eigen::MatrixXd
Jacobian(
47 const Eigen::MatrixXd &local)
const override;
49 const Eigen::MatrixXd &local)
const override;
51 const Eigen::MatrixXd &local)
const override;
54 [[nodiscard]] std::unique_ptr<Geometry>
SubGeometry(dim_t codim,
55 dim_t i)
const override;
63 [[nodiscard]] std::vector<std::unique_ptr<Geometry>>
ChildGeometry(
70 Eigen::Matrix<double, Eigen::Dynamic, 8>
coords_;
77 Eigen::Matrix<double, Eigen::Dynamic, 1>
alpha_;
78 Eigen::Matrix<double, Eigen::Dynamic, 2>
beta_;
79 Eigen::Matrix<double, Eigen::Dynamic, 2>
gamma_;
80 Eigen::Matrix<double, Eigen::Dynamic, 1>
delta_;
81 Eigen::Matrix<double, Eigen::Dynamic, 2>
epsilon_;
Represents a reference element with all its properties.
static constexpr RefEl kQuad()
Returns the reference quadrilateral.
Interface class for shape information on a mesh cell in the spirit of parametric finite element metho...
A second-order quadrilateral in the plane or in 3D space.
Eigen::Matrix< double, Eigen::Dynamic, 2 > gamma_x_2_
Eigen::MatrixXd Jacobian(const Eigen::MatrixXd &local) const override
Evaluate the jacobian of the mapping simultaneously at numPoints points.
Eigen::Matrix< double, Eigen::Dynamic, 2 > epsilon_x_2_
base::RefEl RefEl() const override
The Reference element that defines the domain of this mapping.
Eigen::Matrix< double, Eigen::Dynamic, 2 > beta_
Eigen::VectorXd IntegrationElement(const Eigen::MatrixXd &local) const override
The integration element (factor appearing in integral transformation formula, see below) at number of...
Eigen::Matrix< double, Eigen::Dynamic, 2 > gamma_
Eigen::MatrixXd Global(const Eigen::MatrixXd &local) const override
Map a number of points in local coordinates into the global coordinate system.
dim_t DimLocal() const override
Dimension of the domain of this mapping.
Eigen::Matrix< double, Eigen::Dynamic, 8 > coords_
Coordinates of the 8 vertices/midpoints, stored in matrix columns.
Eigen::MatrixXd JacobianInverseGramian(const Eigen::MatrixXd &local) const override
Evaluate the Jacobian * Inverse Gramian ( ) simultaneously at numPoints.
std::vector< std::unique_ptr< Geometry > > ChildGeometry(const RefinementPattern &ref_pat, lf::base::dim_t codim) const override
Generate geometry objects for child entities created in the course of refinement.
Eigen::Matrix< double, Eigen::Dynamic, 1 > alpha_
Eigen::Matrix< double, Eigen::Dynamic, 1 > delta_
Eigen::Matrix< double, Eigen::Dynamic, 2 > epsilon_
QuadO2(Eigen::Matrix< double, Eigen::Dynamic, 8 > coords)
Constructor building quadrilateral from vertex/midpoint coordinates.
dim_t DimGlobal() const override
Dimension of the image of this mapping.
std::unique_ptr< Geometry > SubGeometry(dim_t codim, dim_t i) const override
Construct a new Geometry() object that describes the geometry of the i-th sub-entity with codimension...
Abstract interface class for encoding topological local refinement
unsigned int dim_t
type for dimensions and co-dimensions and numbers derived from them
Defines the Geometry interface and provides a number of classes that implement this interface + addit...