MFEM  v4.6.0
Finite element discretization library
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mfem::DofTransformation Class Reference

#include <doftrans.hpp>

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

Public Member Functions

void SetFaceOrientations (const Array< int > &face_orientation)
 Configure the transformation using face orientations for the current element. More...
 
const Array< int > & GetFaceOrientations () const
 
void TransformPrimal (double *v) const
 
void TransformPrimal (Vector &v) const
 
void TransformPrimalCols (DenseMatrix &V) const
 Transform groups of DoFs stored as dense matrices. More...
 
void InvTransformPrimal (double *v) const
 
void InvTransformPrimal (Vector &v) const
 
void TransformDual (double *v) const
 
void TransformDual (Vector &v) const
 
void InvTransformDual (double *v) const
 
void InvTransformDual (Vector &v) const
 
void TransformDual (DenseMatrix &V) const
 
void TransformDualRows (DenseMatrix &V) const
 Transform rows of a dense matrix containing dual DoFs. More...
 
void TransformDualCols (DenseMatrix &V) const
 Transform columns of a dense matrix containing dual DoFs. More...
 
virtual ~DofTransformation ()=default
 
virtual void TransformPrimal (const Array< int > &face_orientation, double *v) const=0
 
void TransformPrimal (const Array< int > &face_orientation, Vector &v) const
 
virtual void InvTransformPrimal (const Array< int > &face_orientation, double *v) const=0
 
void InvTransformPrimal (const Array< int > &face_orientation, Vector &v) const
 
virtual void TransformDual (const Array< int > &face_orientation, double *v) const=0
 
void TransformDual (const Array< int > &face_orientation, Vector &v) const
 
virtual void InvTransformDual (const Array< int > &face_orientation, double *v) const=0
 
void InvTransformDual (const Array< int > &face_orientation, Vector &v) const
 
- Public Member Functions inherited from mfem::StatelessDofTransformation
int Size () const
 
int Height () const
 
int NumRows () const
 
int Width () const
 
int NumCols () const
 
virtual void TransformPrimal (const Array< int > &face_orientation, double *v) const =0
 
void TransformPrimal (const Array< int > &face_orientation, Vector &v) const
 
virtual void InvTransformPrimal (const Array< int > &face_orientation, double *v) const =0
 
void InvTransformPrimal (const Array< int > &face_orientation, Vector &v) const
 
virtual void TransformDual (const Array< int > &face_orientation, double *v) const =0
 
void TransformDual (const Array< int > &face_orientation, Vector &v) const
 
virtual void InvTransformDual (const Array< int > &face_orientation, double *v) const =0
 
void InvTransformDual (const Array< int > &face_orientation, Vector &v) const
 

Protected Member Functions

 DofTransformation (int size)
 
- Protected Member Functions inherited from mfem::StatelessDofTransformation
 StatelessDofTransformation (int size)
 

Protected Attributes

Array< int > Fo
 
- Protected Attributes inherited from mfem::StatelessDofTransformation
int size_
 

Detailed Description

The DofTransformation class is an extension of the StatelessDofTransformation which stores the face orientations used to select the necessary transformations which allows it to offer a collection of convenience methods.

DofTransformation objects are provided by the FiniteElementSpace which has access to the mesh and can therefore provide the face orientations. This is convenient when working with GridFunction, LinearForm, or BilinearForm objects or their parallel counterparts.

StatelessDofTransformation objects are provided by FiniteElement or FiniteElementCollection objects which do not have access to face orientation information. This can be useful in non-standard contexts such as transferring finite element degrees of freedom between different meshes. For examples of its use see the TransferMap used by the SubMesh class.

Definition at line 136 of file doftrans.hpp.

Constructor & Destructor Documentation

◆ DofTransformation()

mfem::DofTransformation::DofTransformation ( int  size)
inlineprotected

Definition at line 141 of file doftrans.hpp.

◆ ~DofTransformation()

virtual mfem::DofTransformation::~DofTransformation ( )
virtualdefault

Member Function Documentation

◆ GetFaceOrientations()

const Array<int>& mfem::DofTransformation::GetFaceOrientations ( ) const
inline

Definition at line 152 of file doftrans.hpp.

◆ InvTransformDual() [1/4]

virtual void mfem::StatelessDofTransformation::InvTransformDual

Inverse Transform dual DoFs

◆ InvTransformDual() [2/4]

void mfem::StatelessDofTransformation::InvTransformDual
inline

Definition at line 115 of file doftrans.hpp.

◆ InvTransformDual() [3/4]

void mfem::DofTransformation::InvTransformDual ( double *  v) const
inline

Inverse Transform dual DoFs

Definition at line 195 of file doftrans.hpp.

◆ InvTransformDual() [4/4]

void mfem::DofTransformation::InvTransformDual ( Vector v) const
inline

Definition at line 197 of file doftrans.hpp.

◆ InvTransformPrimal() [1/4]

virtual void mfem::StatelessDofTransformation::InvTransformPrimal

Inverse transform local DoFs. Used to transform DoFs from a global vector back to their element-local form. For example, this must be used to transform the vector obtained using GridFunction::GetSubVector before it can be used to compute a local interpolation.

◆ InvTransformPrimal() [2/4]

void mfem::StatelessDofTransformation::InvTransformPrimal
inline

Definition at line 100 of file doftrans.hpp.

◆ InvTransformPrimal() [3/4]

void mfem::DofTransformation::InvTransformPrimal ( double *  v) const
inline

Inverse transform local DoFs. Used to transform DoFs from a global vector back to their element-local form. For example, this must be used to transform the vector obtained using GridFunction::GetSubVector before it can be used to compute a local interpolation.

Definition at line 182 of file doftrans.hpp.

◆ InvTransformPrimal() [4/4]

void mfem::DofTransformation::InvTransformPrimal ( Vector v) const
inline

Definition at line 184 of file doftrans.hpp.

◆ SetFaceOrientations()

void mfem::DofTransformation::SetFaceOrientations ( const Array< int > &  face_orientation)
inline

Configure the transformation using face orientations for the current element.

The face_orientation array can be obtained from Mesh::GetElementFaces.

Definition at line 149 of file doftrans.hpp.

◆ TransformDual() [1/5]

virtual void mfem::StatelessDofTransformation::TransformDual

Transform dual DoFs as computed by a LinearFormIntegrator before summing into a LinearForm object.

◆ TransformDual() [2/5]

void mfem::StatelessDofTransformation::TransformDual
inline

Definition at line 108 of file doftrans.hpp.

◆ TransformDual() [3/5]

void mfem::DofTransformation::TransformDual ( double *  v) const
inline

Transform dual DoFs as computed by a LinearFormIntegrator before summing into a LinearForm object.

Definition at line 189 of file doftrans.hpp.

◆ TransformDual() [4/5]

void mfem::DofTransformation::TransformDual ( Vector v) const
inline

Definition at line 191 of file doftrans.hpp.

◆ TransformDual() [5/5]

void mfem::DofTransformation::TransformDual ( DenseMatrix V) const
inline

Transform a matrix of dual DoFs entries as computed by a BilinearFormIntegrator before summing into a BilinearForm object.

Definition at line 202 of file doftrans.hpp.

◆ TransformDualCols()

void mfem::DofTransformation::TransformDualCols ( DenseMatrix V) const
inline

Transform columns of a dense matrix containing dual DoFs.

Definition at line 221 of file doftrans.hpp.

◆ TransformDualRows()

void mfem::DofTransformation::TransformDualRows ( DenseMatrix V) const
inline

Transform rows of a dense matrix containing dual DoFs.

Definition at line 209 of file doftrans.hpp.

◆ TransformPrimal() [1/4]

void mfem::StatelessDofTransformation::TransformPrimal
inline

Definition at line 89 of file doftrans.hpp.

◆ TransformPrimal() [2/4]

virtual void mfem::StatelessDofTransformation::TransformPrimal

Transform local DoFs to align with the global DoFs. For example, this transformation can be used to map the local vector computed by FiniteElement::Project() to the transformed vector stored within a GridFunction object.

◆ TransformPrimal() [3/4]

void mfem::DofTransformation::TransformPrimal ( double *  v) const
inline

Transform local DoFs to align with the global DoFs. For example, this transformation can be used to map the local vector computed by FiniteElement::Project() to the transformed vector stored within a GridFunction object.

Definition at line 163 of file doftrans.hpp.

◆ TransformPrimal() [4/4]

void mfem::DofTransformation::TransformPrimal ( Vector v) const
inline

Definition at line 165 of file doftrans.hpp.

◆ TransformPrimalCols()

void mfem::DofTransformation::TransformPrimalCols ( DenseMatrix V) const
inline

Transform groups of DoFs stored as dense matrices.

Definition at line 169 of file doftrans.hpp.

Member Data Documentation

◆ Fo

Array<int> mfem::DofTransformation::Fo
protected

Definition at line 139 of file doftrans.hpp.


The documentation for this class was generated from the following file: