MFEM v4.7.0
Finite element discretization library
|
A specialized ElementTransformation class representing a face and its two neighboring elements. More...
#include <eltrans.hpp>
Public Types | |
enum | ConfigMasks { HAVE_ELEM1 = 1 , HAVE_ELEM2 = 2 , HAVE_LOC1 = 4 , HAVE_LOC2 = 8 , HAVE_FACE = 16 } |
Public Types inherited from mfem::ElementTransformation | |
enum | { ELEMENT = 1 , BDR_ELEMENT = 2 , EDGE = 3 , FACE = 4 , BDR_FACE = 5 } |
Public Member Functions | |
FaceElementTransformations () | |
void | SetGeometryType (Geometry::Type g) |
Method to set the geometry type of the face. | |
int | GetConfigurationMask () const |
Return the mask defining the configuration state. | |
void | SetIntPoint (const IntegrationPoint *face_ip) |
Set the integration point in the Face and the two neighboring elements, if present. | |
void | SetAllIntPoints (const IntegrationPoint *face_ip) |
Set the integration point in the Face and the two neighboring elements, if present. | |
const IntegrationPoint & | GetElement1IntPoint () |
Get a const reference to the integration point in neighboring element 1 corresponding to the currently set integration point on the face. | |
const IntegrationPoint & | GetElement2IntPoint () |
Get a const reference to the integration point in neighboring element 2 corresponding to the currently set integration point on the face. | |
virtual void | Transform (const IntegrationPoint &, Vector &) |
Transform integration point from reference coordinates to physical coordinates and store them in the vector. | |
virtual void | Transform (const IntegrationRule &, DenseMatrix &) |
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) |
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. | |
ElementTransformation & | GetElement1Transformation () |
ElementTransformation & | GetElement2Transformation () |
IntegrationPointTransformation & | GetIntPoint1Transformation () |
IntegrationPointTransformation & | GetIntPoint2Transformation () |
real_t | CheckConsistency (int print_level=0, std::ostream &out=mfem::out) |
Check for self-consistency: compares the result of mapping the reference face vertices to physical coordinates using the three transformations: face, element 1, and element 2. | |
Public Member Functions inherited from mfem::IsoparametricTransformation | |
IsoparametricTransformation () | |
void | SetFE (const FiniteElement *FE) |
Set the element that will be used to compute the transformations. | |
const FiniteElement * | GetFE () const |
Get the current element used to compute the transformations. | |
void | SetPointMat (const DenseMatrix &pm) |
Set the underlying point matrix describing the transformation. | |
const DenseMatrix & | GetPointMat () const |
Return the stored point matrix. | |
DenseMatrix & | GetPointMat () |
Write access to the stored point matrix. Use with caution. | |
void | SetIdentityTransformation (Geometry::Type GeomType) |
Set the FiniteElement Geometry for the reference elements being used. | |
virtual int | Order () const |
Return the order of the current element we are using for the transformation. | |
virtual int | OrderJ () const |
Return the order of the elements of the Jacobian of the transformation. | |
virtual int | OrderW () const |
Return the order of the determinant of the Jacobian (weight) of the transformation. | |
virtual int | OrderGrad (const FiniteElement *fe) const |
Return the order of \( adj(J)^T \nabla fi \). | |
virtual int | GetSpaceDim () const |
Get the dimension of the target (physical) space. | |
virtual int | TransformBack (const Vector &v, IntegrationPoint &ip, const real_t phys_rel_tol=1e-15) |
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 | ~IsoparametricTransformation () |
MFEM_DEPRECATED void | FinalizeTransformation () |
Public Member Functions inherited from mfem::ElementTransformation | |
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. | |
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. | |
Geometry::Type | GetGeometryType () const |
Return the Geometry::Type of the reference element. | |
int | GetDimension () const |
Return the topological dimension of the reference element. | |
virtual | ~ElementTransformation () |
Public Attributes | |
int | Elem1No |
int | Elem2No |
Geometry::Type & | FaceGeom |
ElementTransformation * | Elem1 |
ElementTransformation * | Elem2 |
ElementTransformation * | Face |
IntegrationPointTransformation | Loc1 |
IntegrationPointTransformation | Loc2 |
Public Attributes inherited from mfem::ElementTransformation | |
int | Attribute |
int | ElementNo |
int | ElementType |
const Mesh * | mesh |
The Mesh object containing the element. | |
Protected Member Functions | |
void | SetConfigurationMask (int m) |
Set the mask indicating which portions of the object have been setup. | |
Protected Member Functions inherited from mfem::ElementTransformation | |
real_t | EvalWeight () |
const DenseMatrix & | EvalAdjugateJ () |
const DenseMatrix & | EvalTransAdjugateJ () |
const DenseMatrix & | EvalInverseJ () |
Friends | |
class | Mesh |
class | ParMesh |
Additional Inherited Members | |
Protected Types inherited from mfem::ElementTransformation | |
enum | StateMasks { JACOBIAN_MASK = 1 , WEIGHT_MASK = 2 , ADJUGATE_MASK = 4 , INVERSE_MASK = 8 , HESSIAN_MASK = 16 , TRANS_ADJUGATE_MASK = 32 } |
Protected Attributes inherited from mfem::ElementTransformation | |
const IntegrationPoint * | IntPoint |
DenseMatrix | dFdx |
DenseMatrix | adjJ |
DenseMatrix | invJ |
DenseMatrix | d2Fdx2 |
DenseMatrix | adjJT |
real_t | Wght |
int | EvalState |
Geometry::Type | geom |
A specialized ElementTransformation class representing a face and its two neighboring elements.
This class can be used as a container for the element transformation data needed for integrating discontinuous fields on element interfaces in a Discontinuous Galerkin (DG) context.
The secondary purpose of this class is to enable the GridFunction::GetValue function, and various related functions, to properly evaluate fields with limited continuity on boundary elements.
Definition at line 483 of file eltrans.hpp.
Enumerator | |
---|---|
HAVE_ELEM1 | Element on side 1 is configured. |
HAVE_ELEM2 | Element on side 2 is configured. |
HAVE_LOC1 | Point transformation for side 1 is configured. |
HAVE_LOC2 | Point transformation for side 2 is configured. |
HAVE_FACE | Face transformation is configured. |
Definition at line 514 of file eltrans.hpp.
|
inline |
Definition at line 529 of file eltrans.hpp.
real_t mfem::FaceElementTransformations::CheckConsistency | ( | int | print_level = 0, |
std::ostream & | out = mfem::out ) |
Check for self-consistency: compares the result of mapping the reference face vertices to physical coordinates using the three transformations: face, element 1, and element 2.
[in] | print_level | If set to a positive number, print the physical coordinates of the face vertices computed through all available transformations: face, element 1, and/or element 2. |
[in,out] | out | The output stream to use for printing. |
Definition at line 643 of file eltrans.cpp.
|
inline |
Return the mask defining the configuration state.
The mask value indicates which portions of FaceElementTransformations object have been configured.
mask & 1: Elem1 is configured mask & 2: Elem2 is configured mask & 4: Loc1 is configured mask & 8: Loc2 is configured mask & 16: The Face transformation itself is configured
Definition at line 552 of file eltrans.hpp.
|
inline |
Get a const reference to the integration point in neighboring element 1 corresponding to the currently set integration point on the face.
This IntegrationPoint object will only contain up-to-date data if SetIntPoint or SetAllIntPoints has been called with the latest integration point for the face and the appropriate point transformation has been configured.
Definition at line 580 of file eltrans.hpp.
ElementTransformation & mfem::FaceElementTransformations::GetElement1Transformation | ( | ) |
Definition at line 588 of file eltrans.cpp.
|
inline |
Get a const reference to the integration point in neighboring element 2 corresponding to the currently set integration point on the face.
This IntegrationPoint object will only contain up-to-date data if SetIntPoint or SetAllIntPoints has been called with the latest integration point for the face and the appropriate point transformation has been configured.
Definition at line 590 of file eltrans.hpp.
ElementTransformation & mfem::FaceElementTransformations::GetElement2Transformation | ( | ) |
Definition at line 596 of file eltrans.cpp.
IntegrationPointTransformation & mfem::FaceElementTransformations::GetIntPoint1Transformation | ( | ) |
Definition at line 604 of file eltrans.cpp.
IntegrationPointTransformation & mfem::FaceElementTransformations::GetIntPoint2Transformation | ( | ) |
Definition at line 612 of file eltrans.cpp.
|
inline |
Set the integration point in the Face and the two neighboring elements, if present.
This is a more expressive member function name than SetIntPoint, which in this special case, does the same thing. This function can be used for greater code clarity.
Definition at line 569 of file eltrans.hpp.
|
inlineprotected |
Set the mask indicating which portions of the object have been setup.
The argument m is a bitmask used in Mesh::GetFaceElementTransformations to indicate which portions of the FaceElementTransformations object have been configured.
mask & 1: Elem1 is configured mask & 2: Elem2 is configured mask & 4: Loc1 is configured mask & 8: Loc2 is configured mask & 16: The Face transformation itself is configured
Definition at line 510 of file eltrans.hpp.
|
inline |
Method to set the geometry type of the face.
Definition at line 539 of file eltrans.hpp.
void mfem::FaceElementTransformations::SetIntPoint | ( | const IntegrationPoint * | face_ip | ) |
Set the integration point in the Face and the two neighboring elements, if present.
The point face_ip must be in the reference coordinate system of the face.
Definition at line 565 of file eltrans.cpp.
|
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.
Reimplemented from mfem::IsoparametricTransformation.
Definition at line 635 of file eltrans.cpp.
|
virtual |
Transform integration point from reference coordinates to physical coordinates and store them in the vector.
Reimplemented from mfem::IsoparametricTransformation.
Definition at line 619 of file eltrans.cpp.
|
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.
Reimplemented from mfem::IsoparametricTransformation.
Definition at line 627 of file eltrans.cpp.
|
friend |
Definition at line 494 of file eltrans.hpp.
|
friend |
Definition at line 496 of file eltrans.hpp.
ElementTransformation* mfem::FaceElementTransformations::Elem1 |
Definition at line 525 of file eltrans.hpp.
int mfem::FaceElementTransformations::Elem1No |
Definition at line 523 of file eltrans.hpp.
ElementTransformation * mfem::FaceElementTransformations::Elem2 |
Definition at line 525 of file eltrans.hpp.
int mfem::FaceElementTransformations::Elem2No |
Definition at line 523 of file eltrans.hpp.
ElementTransformation* mfem::FaceElementTransformations::Face |
Definition at line 526 of file eltrans.hpp.
Geometry::Type& mfem::FaceElementTransformations::FaceGeom |
Definition at line 524 of file eltrans.hpp.
IntegrationPointTransformation mfem::FaceElementTransformations::Loc1 |
Definition at line 527 of file eltrans.hpp.
IntegrationPointTransformation mfem::FaceElementTransformations::Loc2 |
Definition at line 527 of file eltrans.hpp.