MFEM v4.7.0
Finite element discretization library
|
#include <eltrans.hpp>
Public Types | |
enum | { ELEMENT = 1 , BDR_ELEMENT = 2 , EDGE = 3 , FACE = 4 , BDR_FACE = 5 } |
Public Member Functions | |
ElementTransformation () | |
void | Reset () |
Force the reevaluation of the Jacobian in the next call. | |
void | SetIntPoint (const IntegrationPoint *ip) |
Set the integration point ip that weights and Jacobians will be evaluated at. | |
const IntegrationPoint & | GetIntPoint () |
Get a const reference to the currently set integration point. This will return NULL if no integration point is set. | |
virtual void | Transform (const IntegrationPoint &, Vector &)=0 |
Transform integration point from reference coordinates to physical coordinates and store them in the vector. | |
virtual void | Transform (const IntegrationRule &, DenseMatrix &)=0 |
Transform all the integration points from the integration rule from reference coordinates to physical coordinates and store them as column vectors in the matrix. | |
virtual void | Transform (const DenseMatrix &matrix, DenseMatrix &result)=0 |
Transform all the integration points from the column vectors of matrix from reference coordinates to physical coordinates and store them as column vectors in result. | |
const DenseMatrix & | Jacobian () |
Return the Jacobian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint(). | |
const DenseMatrix & | Hessian () |
Return the Hessian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint(). | |
real_t | Weight () |
Return the weight of the Jacobian matrix of the transformation at the currently set IntegrationPoint. The Weight evaluates to \( \sqrt{\lvert J^T J \rvert} \). | |
const DenseMatrix & | AdjugateJacobian () |
Return the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint. | |
const DenseMatrix & | TransposeAdjugateJacobian () |
Return the transpose of the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint. | |
const DenseMatrix & | InverseJacobian () |
Return the inverse of the Jacobian matrix of the transformation at the currently set IntegrationPoint. | |
virtual int | Order () const =0 |
Return the order of the current element we are using for the transformation. | |
virtual int | OrderJ () const =0 |
Return the order of the elements of the Jacobian of the transformation. | |
virtual int | OrderW () const =0 |
Return the order of the determinant of the Jacobian (weight) of the transformation. | |
virtual int | OrderGrad (const FiniteElement *fe) const =0 |
Return the order of \( adj(J)^T \nabla fi \). | |
Geometry::Type | GetGeometryType () const |
Return the Geometry::Type of the reference element. | |
int | GetDimension () const |
Return the topological dimension of the reference element. | |
virtual int | GetSpaceDim () const =0 |
Get the dimension of the target (physical) space. | |
virtual int | TransformBack (const Vector &pt, IntegrationPoint &ip, const real_t phys_tol=1e-15)=0 |
Transform a point pt from physical space to a point ip in reference space and optionally can set a solver tolerance using phys_tol. | |
virtual | ~ElementTransformation () |
Public Attributes | |
int | Attribute |
int | ElementNo |
int | ElementType |
const Mesh * | mesh |
The Mesh object containing the element. | |
Protected Types | |
enum | StateMasks { JACOBIAN_MASK = 1 , WEIGHT_MASK = 2 , ADJUGATE_MASK = 4 , INVERSE_MASK = 8 , HESSIAN_MASK = 16 , TRANS_ADJUGATE_MASK = 32 } |
Protected Member Functions | |
virtual const DenseMatrix & | EvalJacobian ()=0 |
Evaluate the Jacobian of the transformation at the IntPoint and store it in dFdx. | |
virtual const DenseMatrix & | EvalHessian ()=0 |
Evaluate the Hessian of the transformation at the IntPoint and store it in d2Fdx2. | |
real_t | EvalWeight () |
const DenseMatrix & | EvalAdjugateJ () |
const DenseMatrix & | EvalTransAdjugateJ () |
const DenseMatrix & | EvalInverseJ () |
Protected Attributes | |
const IntegrationPoint * | IntPoint |
DenseMatrix | dFdx |
DenseMatrix | adjJ |
DenseMatrix | invJ |
DenseMatrix | d2Fdx2 |
DenseMatrix | adjJT |
real_t | Wght |
int | EvalState |
Geometry::Type | geom |
Definition at line 23 of file eltrans.hpp.
anonymous enum |
This enumeration declares the values stored in ElementTransformation::ElementType and indicates which group of objects the index stored in ElementTransformation::ElementNo refers:
| ElementType | Range of ElementNo +----------—+----------------------— | ELEMENT | [0, Mesh::GetNE() ) | BDR_ELEMENT | [0, Mesh::GetNBE() ) | EDGE | [0, Mesh::GetNEdges() ) | FACE | [0, Mesh::GetNFaces() ) | BDR_FACE | [0, Mesh::GetNBE() )
Enumerator | |
---|---|
ELEMENT | |
BDR_ELEMENT | |
EDGE | |
FACE | |
BDR_FACE |
Definition at line 69 of file eltrans.hpp.
|
protected |
Enumerator | |
---|---|
JACOBIAN_MASK | |
WEIGHT_MASK | |
ADJUGATE_MASK | |
INVERSE_MASK | |
HESSIAN_MASK | |
TRANS_ADJUGATE_MASK |
Definition at line 31 of file eltrans.hpp.
mfem::ElementTransformation::ElementTransformation | ( | ) |
Definition at line 19 of file eltrans.cpp.
|
inlinevirtual |
Definition at line 181 of file eltrans.hpp.
|
inline |
Return the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint.
Definition at line 135 of file eltrans.hpp.
|
protected |
Definition at line 36 of file eltrans.cpp.
|
protectedpure virtual |
Evaluate the Hessian of the transformation at the IntPoint and store it in d2Fdx2.
|
protected |
Definition at line 57 of file eltrans.cpp.
|
protectedpure virtual |
Evaluate the Jacobian of the transformation at the IntPoint and store it in dFdx.
|
protected |
Definition at line 46 of file eltrans.cpp.
|
protected |
Definition at line 28 of file eltrans.cpp.
|
inline |
Return the topological dimension of the reference element.
Definition at line 165 of file eltrans.hpp.
|
inline |
Return the Geometry::Type of the reference element.
Definition at line 162 of file eltrans.hpp.
|
inline |
Get a const reference to the currently set integration point. This will return NULL if no integration point is set.
Definition at line 98 of file eltrans.hpp.
|
pure virtual |
Get the dimension of the target (physical) space.
We support 2D meshes embedded in 3D; in this case the function will return "3".
Implemented in mfem::IsoparametricTransformation.
|
inline |
Return the Hessian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint().
Definition at line 125 of file eltrans.hpp.
|
inline |
Return the inverse of the Jacobian matrix of the transformation at the currently set IntegrationPoint.
Definition at line 145 of file eltrans.hpp.
|
inline |
Return the Jacobian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint().
The dimensions of the Jacobian matrix are physical-space-dim by reference-space-dim. The first column contains the x derivatives of the transformation, the second – the y derivatives, etc.
Definition at line 119 of file eltrans.hpp.
|
pure virtual |
Return the order of the current element we are using for the transformation.
Implemented in mfem::IsoparametricTransformation.
|
pure virtual |
Return the order of \( adj(J)^T \nabla fi \).
Implemented in mfem::IsoparametricTransformation.
|
pure virtual |
Return the order of the elements of the Jacobian of the transformation.
Implemented in mfem::IsoparametricTransformation.
|
pure virtual |
Return the order of the determinant of the Jacobian (weight) of the transformation.
Implemented in mfem::IsoparametricTransformation.
|
inline |
Force the reevaluation of the Jacobian in the next call.
Definition at line 89 of file eltrans.hpp.
|
inline |
Set the integration point ip that weights and Jacobians will be evaluated at.
Definition at line 93 of file eltrans.hpp.
|
pure virtual |
Transform all the integration points from the column vectors of matrix from reference coordinates to physical coordinates and store them as column vectors in result.
Implemented in mfem::FaceElementTransformations, and mfem::IsoparametricTransformation.
|
pure virtual |
Transform integration point from reference coordinates to physical coordinates and store them in the vector.
Implemented in mfem::FaceElementTransformations, and mfem::IsoparametricTransformation.
|
pure virtual |
Transform all the integration points from the integration rule from reference coordinates to physical coordinates and store them as column vectors in the matrix.
Implemented in mfem::FaceElementTransformations, and mfem::IsoparametricTransformation.
|
pure virtual |
Transform a point pt from physical space to a point ip in reference space and optionally can set a solver tolerance using phys_tol.
Attempt to find the IntegrationPoint that is transformed into the given point in physical space. If the inversion fails a non-zero value is returned. This method is not 100 percent reliable for non-linear transformations.
Implemented in mfem::IsoparametricTransformation.
|
inline |
Return the transpose of the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint.
Definition at line 140 of file eltrans.hpp.
|
inline |
Return the weight of the Jacobian matrix of the transformation at the currently set IntegrationPoint. The Weight evaluates to \( \sqrt{\lvert J^T J \rvert} \).
Definition at line 131 of file eltrans.hpp.
|
protected |
Definition at line 27 of file eltrans.hpp.
|
protected |
Definition at line 28 of file eltrans.hpp.
int mfem::ElementTransformation::Attribute |
Definition at line 78 of file eltrans.hpp.
|
protected |
Definition at line 28 of file eltrans.hpp.
|
protected |
Definition at line 27 of file eltrans.hpp.
int mfem::ElementTransformation::ElementNo |
Definition at line 78 of file eltrans.hpp.
int mfem::ElementTransformation::ElementType |
Definition at line 78 of file eltrans.hpp.
|
protected |
Definition at line 30 of file eltrans.hpp.
|
protected |
Definition at line 40 of file eltrans.hpp.
|
protected |
Definition at line 26 of file eltrans.hpp.
|
protected |
Definition at line 27 of file eltrans.hpp.
const Mesh* mfem::ElementTransformation::mesh |
The Mesh object containing the element.
If the element transformation belongs to a mesh, this will point to the containing Mesh object. ElementNo will be the number of the element in this Mesh. This will be NULL if the element does not belong to a mesh.
Definition at line 84 of file eltrans.hpp.
|
protected |
Definition at line 29 of file eltrans.hpp.