MFEM  v4.5.1
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
mfem::FaceQuadratureInterpolator Class Reference

A class that performs interpolation from a face E-vector to quadrature point values and/or derivatives (Q-vectors) on the faces. More...

#include <quadinterpolator_face.hpp>

Collaboration diagram for mfem::FaceQuadratureInterpolator:
[legend]

Public Types

enum  FaceEvalFlags { VALUES = 1 << 0, DERIVATIVES = 1 << 1, DETERMINANTS = 1 << 2, NORMALS = 1 << 3 }
 

Public Member Functions

 FaceQuadratureInterpolator (const FiniteElementSpace &fes, const IntegrationRule &ir, FaceType type)
 
void DisableTensorProducts (bool disable=true) const
 Disable the use of tensor product evaluations, for tensor-product elements, e.g. quads and hexes. More...
 
QVectorLayout GetOutputLayout () const
 Query the current output Q-vector layout. The default value is QVectorLayout::byNODES. More...
 
void SetOutputLayout (QVectorLayout layout) const
 Set the desired output Q-vector layout. The default value is QVectorLayout::byNODES. More...
 
void Mult (const Vector &e_vec, unsigned eval_flags, Vector &q_val, Vector &q_der, Vector &q_det, Vector &q_nor) const
 Interpolate the E-vector e_vec to quadrature points. More...
 
void Values (const Vector &e_vec, Vector &q_val) const
 Interpolate the values of the E-vector e_vec at quadrature points. More...
 

Static Public Member Functions

template<const int T_VDIM = 0, const int T_ND = 0, const int T_NQ = 0>
static void Eval2D (const int NF, const int vdim, const QVectorLayout q_layout, const DofToQuad &maps, const Array< bool > &signs, const Vector &e_vec, Vector &q_val, Vector &q_der, Vector &q_det, Vector &q_nor, const int eval_flags)
 Template compute kernel for 2D. More...
 
template<const int T_VDIM = 0, const int T_ND = 0, const int T_NQ = 0>
static void Eval3D (const int NF, const int vdim, const QVectorLayout q_layout, const DofToQuad &maps, const Array< bool > &signs, const Vector &e_vec, Vector &q_val, Vector &q_der, Vector &q_det, Vector &q_nor, const int eval_flags)
 Template compute kernel for 3D. More...
 
template<const int T_VDIM = 0, const int T_ND = 0, const int T_NQ = 0>
static void SmemEval3D (const int NF, const int vdim, const QVectorLayout q_layout, const DofToQuad &maps, const Array< bool > &signs, const Vector &e_vec, Vector &q_val, Vector &q_der, Vector &q_det, Vector &q_nor, const int eval_flags)
 

Protected Attributes

const FiniteElementSpacefespace
 Not owned. More...
 
const IntegrationRuleIntRule
 Not owned. More...
 
QVectorLayout q_layout
 Output Q-vector layout. More...
 
bool use_tensor_products
 

Static Protected Attributes

static const int MAX_NQ1D = 10
 
static const int MAX_ND1D = 10
 
static const int MAX_VDIM1D = 1
 
static const int MAX_NQ2D = 100
 
static const int MAX_ND2D = 100
 
static const int MAX_VDIM2D = 2
 
static const int MAX_NQ3D = 1000
 
static const int MAX_ND3D = 1000
 
static const int MAX_VDIM3D = 3
 

Friends

class FiniteElementSpace
 

Detailed Description

A class that performs interpolation from a face E-vector to quadrature point values and/or derivatives (Q-vectors) on the faces.

A face E-vector represents the face-wise discontinuous version of the trace FE space and can be obtained, for example, from a GridFunction using the Operator returned by FiniteElementSpace::GetFaceRestriction().

Definition at line 25 of file quadinterpolator_face.hpp.

Member Enumeration Documentation

Enumerator
VALUES 

Evaluate the values at quadrature points.

DERIVATIVES 

Evaluate the derivatives at quadrature points.

DETERMINANTS 

Assuming the derivative at quadrature points form a matrix, this flag can be used to compute and store their determinants. This flag can only be used in Mult().

NORMALS 

Definition at line 53 of file quadinterpolator_face.hpp.

Constructor & Destructor Documentation

mfem::FaceQuadratureInterpolator::FaceQuadratureInterpolator ( const FiniteElementSpace fes,
const IntegrationRule ir,
FaceType  type 
)

Definition at line 68 of file quadinterpolator_face.cpp.

Member Function Documentation

void mfem::FaceQuadratureInterpolator::DisableTensorProducts ( bool  disable = true) const
inline

Disable the use of tensor product evaluations, for tensor-product elements, e.g. quads and hexes.

Currently, tensor product evaluations are not implemented and this method has no effect.

Definition at line 71 of file quadinterpolator_face.hpp.

template<const int T_VDIM, const int T_ND1D, const int T_NQ1D>
void mfem::FaceQuadratureInterpolator::Eval2D ( const int  NF,
const int  vdim,
const QVectorLayout  q_layout,
const DofToQuad maps,
const Array< bool > &  signs,
const Vector e_vec,
Vector q_val,
Vector q_der,
Vector q_det,
Vector q_nor,
const int  eval_flags 
)
static

Template compute kernel for 2D.

Definition at line 94 of file quadinterpolator_face.cpp.

template<const int T_VDIM, const int T_ND1D, const int T_NQ1D>
void mfem::FaceQuadratureInterpolator::Eval3D ( const int  NF,
const int  vdim,
const QVectorLayout  q_layout,
const DofToQuad maps,
const Array< bool > &  signs,
const Vector e_vec,
Vector q_val,
Vector q_der,
Vector q_det,
Vector q_nor,
const int  eval_flags 
)
static

Template compute kernel for 3D.

Definition at line 207 of file quadinterpolator_face.cpp.

QVectorLayout mfem::FaceQuadratureInterpolator::GetOutputLayout ( ) const
inline

Query the current output Q-vector layout. The default value is QVectorLayout::byNODES.

See Also
SetOutputLayout().

Definition at line 77 of file quadinterpolator_face.hpp.

void mfem::FaceQuadratureInterpolator::Mult ( const Vector e_vec,
unsigned  eval_flags,
Vector q_val,
Vector q_der,
Vector q_det,
Vector q_nor 
) const

Interpolate the E-vector e_vec to quadrature points.

The eval_flags are a bitwise mask of constants from the FaceEvalFlags enumeration. When the VALUES flag is set, the values at quadrature points are computed and stored in the Vector q_val. Similarly, when the flag DERIVATIVES is set, the derivatives are computed and stored in q_der. When the DETERMINANTS flags is set, it is assumed that the derivatives form a matrix at each quadrature point (i.e. the associated FiniteElementSpace is a vector space) and their determinants are computed and stored in q_det.

Definition at line 583 of file quadinterpolator_face.cpp.

void mfem::FaceQuadratureInterpolator::SetOutputLayout ( QVectorLayout  layout) const
inline

Set the desired output Q-vector layout. The default value is QVectorLayout::byNODES.

See Also
GetOutputLayout().

Definition at line 82 of file quadinterpolator_face.hpp.

template<const int T_VDIM, const int T_ND1D, const int T_NQ1D>
void mfem::FaceQuadratureInterpolator::SmemEval3D ( const int  NF,
const int  vdim,
const QVectorLayout  q_layout,
const DofToQuad maps,
const Array< bool > &  signs,
const Vector e_vec,
Vector q_val,
Vector q_der,
Vector q_det,
Vector q_nor,
const int  eval_flags 
)
static

Definition at line 391 of file quadinterpolator_face.cpp.

void mfem::FaceQuadratureInterpolator::Values ( const Vector e_vec,
Vector q_val 
) const

Interpolate the values of the E-vector e_vec at quadrature points.

Definition at line 729 of file quadinterpolator_face.cpp.

Friends And Related Function Documentation

friend class FiniteElementSpace
friend

Definition at line 32 of file quadinterpolator_face.hpp.

Member Data Documentation

const FiniteElementSpace* mfem::FaceQuadratureInterpolator::fespace
protected

Not owned.

Definition at line 34 of file quadinterpolator_face.hpp.

const IntegrationRule* mfem::FaceQuadratureInterpolator::IntRule
protected

Not owned.

Definition at line 35 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_ND1D = 10
staticprotected

Definition at line 41 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_ND2D = 100
staticprotected

Definition at line 45 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_ND3D = 1000
staticprotected

Definition at line 49 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_NQ1D = 10
staticprotected

Definition at line 40 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_NQ2D = 100
staticprotected

Definition at line 44 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_NQ3D = 1000
staticprotected

Definition at line 48 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_VDIM1D = 1
staticprotected

Definition at line 42 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_VDIM2D = 2
staticprotected

Definition at line 46 of file quadinterpolator_face.hpp.

const int mfem::FaceQuadratureInterpolator::MAX_VDIM3D = 3
staticprotected

Definition at line 50 of file quadinterpolator_face.hpp.

QVectorLayout mfem::FaceQuadratureInterpolator::q_layout
mutableprotected

Output Q-vector layout.

Definition at line 36 of file quadinterpolator_face.hpp.

bool mfem::FaceQuadratureInterpolator::use_tensor_products
mutableprotected

Definition at line 38 of file quadinterpolator_face.hpp.


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