MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
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.
 
QVectorLayout GetOutputLayout () const
 Query the current output Q-vector layout. The default value is QVectorLayout::byNODES.
 
void SetOutputLayout (QVectorLayout layout) const
 Set the desired output Q-vector layout. The default value is QVectorLayout::byNODES.
 
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.
 
void Values (const Vector &e_vec, Vector &q_val) const
 Interpolate the values of the E-vector e_vec at quadrature points.
 

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.
 
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.
 
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.
 
const IntegrationRuleIntRule
 Not owned.
 
QVectorLayout q_layout
 Output Q-vector layout.
 
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

◆ FaceEvalFlags

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

◆ FaceQuadratureInterpolator()

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

Definition at line 68 of file quadinterpolator_face.cpp.

Member Function Documentation

◆ DisableTensorProducts()

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.

◆ Eval2D()

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.

◆ Eval3D()

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.

◆ GetOutputLayout()

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.

◆ Mult()

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.

◆ SetOutputLayout()

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.

◆ SmemEval3D()

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.

◆ Values()

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 Symbol Documentation

◆ FiniteElementSpace

friend class FiniteElementSpace
friend

Definition at line 32 of file quadinterpolator_face.hpp.

Member Data Documentation

◆ fespace

const FiniteElementSpace* mfem::FaceQuadratureInterpolator::fespace
protected

Not owned.

Definition at line 34 of file quadinterpolator_face.hpp.

◆ IntRule

const IntegrationRule* mfem::FaceQuadratureInterpolator::IntRule
protected

Not owned.

Definition at line 35 of file quadinterpolator_face.hpp.

◆ MAX_ND1D

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

Definition at line 41 of file quadinterpolator_face.hpp.

◆ MAX_ND2D

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

Definition at line 45 of file quadinterpolator_face.hpp.

◆ MAX_ND3D

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

Definition at line 49 of file quadinterpolator_face.hpp.

◆ MAX_NQ1D

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

Definition at line 40 of file quadinterpolator_face.hpp.

◆ MAX_NQ2D

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

Definition at line 44 of file quadinterpolator_face.hpp.

◆ MAX_NQ3D

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

Definition at line 48 of file quadinterpolator_face.hpp.

◆ MAX_VDIM1D

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

Definition at line 42 of file quadinterpolator_face.hpp.

◆ MAX_VDIM2D

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

Definition at line 46 of file quadinterpolator_face.hpp.

◆ MAX_VDIM3D

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

Definition at line 50 of file quadinterpolator_face.hpp.

◆ q_layout

QVectorLayout mfem::FaceQuadratureInterpolator::q_layout
mutableprotected

Output Q-vector layout.

Definition at line 36 of file quadinterpolator_face.hpp.

◆ use_tensor_products

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: