MFEM  v4.4.0 Finite element discretization library
mfem::FaceElementTransformations Class Reference

A specialized ElementTransformation class representing a face and its two neighboring elements. More...

#include <eltrans.hpp>

Inheritance diagram for mfem::FaceElementTransformations:
[legend]
Collaboration diagram for mfem::FaceElementTransformations:
[legend]

## Public Types

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. More...

Return the mask defining the configuration state. More...

void SetIntPoint (const IntegrationPoint *face_ip)
Set the integration point in the Face and the two neighboring elements, if present. More...

void SetAllIntPoints (const IntegrationPoint *face_ip)
Set the integration point in the Face and the two neighboring elements, if present. More...

const IntegrationPointGetElement1IntPoint ()
Get a const reference to the integration point in neighboring element 1 corresponding to the currently set integration point on the face. More...

const IntegrationPointGetElement2IntPoint ()
Get a const reference to the integration point in neighboring element 2 corresponding to the currently set integration point on the face. More...

virtual void Transform (const IntegrationPoint &, Vector &)
Transform integration point from reference coordinates to physical coordinates and store them in the vector. More...

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. More...

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. More...

ElementTransformationGetElement1Transformation ()

ElementTransformationGetElement2Transformation ()

IntegrationPointTransformationGetIntPoint1Transformation ()

IntegrationPointTransformationGetIntPoint2Transformation ()

double 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. More...

Public Member Functions inherited from mfem::IsoparametricTransformation
IsoparametricTransformation ()

void SetFE (const FiniteElement *FE)
Set the element that will be used to compute the transformations. More...

const FiniteElementGetFE () const
Get the current element used to compute the transformations. More...

void SetPointMat (const DenseMatrix &pm)
Set the underlying point matrix describing the transformation. More...

const DenseMatrixGetPointMat () const
Return the stored point matrix. More...

DenseMatrixGetPointMat ()

void SetIdentityTransformation (Geometry::Type GeomType)
Set the FiniteElement Geometry for the reference elements being used. More...

virtual int Order () const
Return the order of the current element we are using for the transformation. More...

virtual int OrderJ () const
Return the order of the elements of the Jacobian of the transformation. More...

virtual int OrderW () const
Return the order of the determinant of the Jacobian (weight) of the transformation. More...

virtual int OrderGrad (const FiniteElement *fe) const
Return the order of $$adj(J)^T \nabla fi$$. More...

virtual int GetSpaceDim () const
Get the dimension of the target (physical) space. More...

virtual int TransformBack (const Vector &v, IntegrationPoint &ip)
Transform a point pt from physical space to a point ip in reference space. More...

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. More...

void SetIntPoint (const IntegrationPoint *ip)
Set the integration point ip that weights and Jacobians will be evaluated at. More...

const IntegrationPointGetIntPoint ()
Get a const reference to the currently set integration point. This will return NULL if no integration point is set. More...

const DenseMatrixJacobian ()
Return the Jacobian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint(). More...

const DenseMatrixHessian ()
Return the Hessian matrix of the transformation at the currently set IntegrationPoint, using the method SetIntPoint(). More...

double 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}$$. More...

Return the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint. More...

Return the transpose of the adjugate of the Jacobian matrix of the transformation at the currently set IntegrationPoint. More...

const DenseMatrixInverseJacobian ()
Return the inverse of the Jacobian matrix of the transformation at the currently set IntegrationPoint. More...

Geometry::Type GetGeometryType () const
Return the Geometry::Type of the reference element. More...

int GetDimension () const
Return the topological dimension of the reference element. More...

virtual ~ElementTransformation ()

## Public Attributes

int Elem1No

int Elem2No

Geometry::TypeFaceGeom

ElementTransformationElem1

ElementTransformationElem2

ElementTransformationFace

IntegrationPointTransformation Loc1

IntegrationPointTransformation Loc2

Public Attributes inherited from mfem::ElementTransformation
int Attribute

int ElementNo

int ElementType

class Meshmesh
The Mesh object containing the element. More...

## Protected Member Functions

Set the mask indicating which portions of the object have been setup. More...

Protected Member Functions inherited from mfem::ElementTransformation
double EvalWeight ()

const DenseMatrixEvalInverseJ ()

## Friends

class Mesh

class ParMesh

Protected Types inherited from mfem::ElementTransformation
}

Protected Attributes inherited from mfem::ElementTransformation
const IntegrationPointIntPoint

DenseMatrix dFdx

DenseMatrix invJ

DenseMatrix d2Fdx2

double Wght

int EvalState

Geometry::Type geom

## Detailed Description

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 480 of file eltrans.hpp.

## Member Enumeration Documentation

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 511 of file eltrans.hpp.

## Constructor & Destructor Documentation

 mfem::FaceElementTransformations::FaceElementTransformations ( )
inline

Definition at line 526 of file eltrans.hpp.

## Member Function Documentation

 double 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.

Parameters
 [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.
Returns
A maximal distance between physical coordinates of face vertices that should coincide. A successful check should return a small number relative to the mesh extents. If less than 2 of the three transformations are set, returns 0.
Warning
This check will generally fail on periodic boundary faces.

Definition at line 646 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 549 of file eltrans.hpp.

 const IntegrationPoint& mfem::FaceElementTransformations::GetElement1IntPoint ( )
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 577 of file eltrans.hpp.

 ElementTransformation & mfem::FaceElementTransformations::GetElement1Transformation ( )

Definition at line 591 of file eltrans.cpp.

 const IntegrationPoint& mfem::FaceElementTransformations::GetElement2IntPoint ( )
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 587 of file eltrans.hpp.

 ElementTransformation & mfem::FaceElementTransformations::GetElement2Transformation ( )

Definition at line 599 of file eltrans.cpp.

 IntegrationPointTransformation & mfem::FaceElementTransformations::GetIntPoint1Transformation ( )

Definition at line 607 of file eltrans.cpp.

 IntegrationPointTransformation & mfem::FaceElementTransformations::GetIntPoint2Transformation ( )

Definition at line 615 of file eltrans.cpp.

 void mfem::FaceElementTransformations::SetAllIntPoints ( const IntegrationPoint * face_ip )
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 566 of file eltrans.hpp.

 void mfem::FaceElementTransformations::SetConfigurationMask ( int m )
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 507 of file eltrans.hpp.

 void mfem::FaceElementTransformations::SetGeometryType ( Geometry::Type g )
inline

Method to set the geometry type of the face.

Note
This method is designed to be used when [Par]Mesh::GetFaceTransformation will not be called i.e. when the face transformation will not be needed but the neighboring element transformations will be. Using this method to override the GeometryType should only be done with great care.

Definition at line 536 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 568 of file eltrans.cpp.

 void mfem::FaceElementTransformations::Transform ( const IntegrationPoint & ip, Vector & trans )
virtual

Transform integration point from reference coordinates to physical coordinates and store them in the vector.

Reimplemented from mfem::IsoparametricTransformation.

Definition at line 622 of file eltrans.cpp.

 void mfem::FaceElementTransformations::Transform ( const IntegrationRule & ir, DenseMatrix & tr )
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 630 of file eltrans.cpp.

 void mfem::FaceElementTransformations::Transform ( const DenseMatrix & matrix, DenseMatrix & result )
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 638 of file eltrans.cpp.

## Friends And Related Function Documentation

 friend class Mesh
friend

Definition at line 491 of file eltrans.hpp.

 friend class ParMesh
friend

Definition at line 493 of file eltrans.hpp.

## Member Data Documentation

 ElementTransformation* mfem::FaceElementTransformations::Elem1

Definition at line 522 of file eltrans.hpp.

 int mfem::FaceElementTransformations::Elem1No

Definition at line 520 of file eltrans.hpp.

 ElementTransformation * mfem::FaceElementTransformations::Elem2

Definition at line 522 of file eltrans.hpp.

 int mfem::FaceElementTransformations::Elem2No

Definition at line 520 of file eltrans.hpp.

 ElementTransformation* mfem::FaceElementTransformations::Face
Deprecated:
No longer necessary

Definition at line 523 of file eltrans.hpp.

 Geometry::Type& mfem::FaceElementTransformations::FaceGeom
Deprecated: