MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t > Class Template Reference

complex_t - dof/qpt data type, real_t - ShapeEvaluator (FE basis) data type More...

#include <tevaluator.hpp>

Inheritance diagram for mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >:
[legend]
Collaboration diagram for mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >:
[legend]

Classes

struct  Action
 This struct implements the input (Eval, EvalSerialized) and output (Assemble, AssembleSerialized) operations for the given Ops. Ops is "bitwise or" of constants from the enum InOutData. More...
 
struct  Action< 0, dummy >
 
struct  Action< 1, dummy >
 
struct  Action< 2, dummy >
 
struct  Action< 3, dummy >
 
struct  AData
 Auxiliary templated struct AData, used by the Eval() and Assemble() methods. More...
 
struct  AData< 0, it_t >
 
struct  AData< 1, it_t >
 
struct  AData< 2, it_t >
 
struct  AData< 3, it_t >
 
struct  BData
 This struct is similar to struct AData, adding separate static data members for the input (InData) and output (OutData) data types. More...
 
struct  Spec
 
struct  TElementMatrix
 This struct implements element matrix computation for some combinations of input (InOps) and output (OutOps) operations. More...
 
struct  TElementMatrix< 1, 1, it_t >
 
struct  TElementMatrix< 2, 2, it_t >
 

Public Types

enum  InOutData { None = 0 , Values = 1 , Gradients = 2 }
 Enumeration for the data type used by the Eval() and Assemble() methods. The types can be obtained by summing constants from this enumeration and used as a template parameter in struct Data. More...
 
typedef complex_t complex_type
 
typedef FESpace_t FESpace_type
 
typedef FESpace_t::FE_type FE_type
 
typedef ShapeEvaluator< FE_type, IR, real_tShapeEval_type
 
typedef VecLayout_t VecLayout_type
 
typedef FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_tT_type
 

Public Member Functions

MFEM_ALWAYS_INLINE FieldEvaluator (const FESpace_t &tfes, const ShapeEval_type &shape_eval, const VecLayout_type &vec_layout, const complex_t *global_data_in, complex_t *global_data_out)
 With this constructor, fespace is a shallow copy of tfes.
 
MFEM_ALWAYS_INLINE FieldEvaluator (const FieldEvaluator &f, const complex_t *global_data_in, complex_t *global_data_out)
 With this constructor, fespace is a shallow copy of f.fespace.
 
MFEM_ALWAYS_INLINE FieldEvaluator (const FiniteElementSpace &fes, const complex_t *global_data_in, complex_t *global_data_out)
 This constructor creates a new fespace, not a shallow copy.
 
MFEM_ALWAYS_INLINE FESpace_typeFESpace ()
 
MFEM_ALWAYS_INLINE ShapeEval_typeShapeEval ()
 
MFEM_ALWAYS_INLINE VecLayout_typeVecLayout ()
 
MFEM_ALWAYS_INLINE void SetElement (int el)
 
template<typename val_layout_t , typename val_data_t >
MFEM_ALWAYS_INLINE void GetValues (int el, const val_layout_t &l, val_data_t &vals)
 val_layout_t is (qpts x vdim x NE)
 
template<typename grad_layout_t , typename grad_data_t >
MFEM_ALWAYS_INLINE void GetGradients (int el, const grad_layout_t &l, grad_data_t &grad)
 grad_layout_t is (qpts x dim x vdim x NE)
 
template<typename DataType >
MFEM_ALWAYS_INLINE void Eval (DataType &F)
 
template<typename DataType >
MFEM_ALWAYS_INLINE void Eval (int el, DataType &F)
 
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void Assemble (DataType &F)
 
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void Assemble (int el, DataType &F)
 
template<typename DataType >
MFEM_ALWAYS_INLINE void EvalSerialized (const typename DataType::vcomplex_t *loc_dofs, DataType &F)
 
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void AssembleSerialized (const DataType &F, typename DataType::vcomplex_t *loc_dofs)
 

Static Public Attributes

static const int dofs = FE_type::dofs
 
static const int dim = FE_type::dim
 
static const int qpts = IR::qpts
 
static const int vdim = VecLayout_t::vec_dim
 

Protected Types

typedef FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_t, real_tbase_class
 
- Protected Types inherited from mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, real_t, real_t >
typedef FESpace_t::FE_type FE_type
 
typedef ShapeEvaluator< FE_type, IR, real_tShapeEval_type
 

Protected Attributes

const complex_t * data_in
 
complex_t * data_out
 
FESpace_t fespace
 
ShapeEval_type shapeEval
 
VecLayout_t vec_layout
 
- Protected Attributes inherited from mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, real_t, real_t >
FESpace_t fespace
 
ShapeEval_type shapeEval
 
VecLayout_t vec_layout
 

Additional Inherited Members

- Protected Member Functions inherited from mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, real_t, real_t >
MFEM_ALWAYS_INLINE FieldEvaluator_base (const FESpace_t &tfes, const ShapeEval_type &shape_eval, const VecLayout_t &vec_layout)
 With this constructor, fespace is a shallow copy.
 
MFEM_ALWAYS_INLINE FieldEvaluator_base (const FE_type &fe, const FiniteElementSpace &fes)
 This constructor creates new fespace, not a shallow copy.
 

Detailed Description

template<typename FESpace_t, typename VecLayout_t, typename IR, typename complex_t = real_t, typename real_t = real_t>
class mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >

complex_t - dof/qpt data type, real_t - ShapeEvaluator (FE basis) data type

Definition at line 997 of file tevaluator.hpp.

Member Typedef Documentation

◆ base_class

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef FieldEvaluator_base<FESpace_t,VecLayout_t,IR,complex_t,real_t> mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::base_class
protected

Definition at line 1018 of file tevaluator.hpp.

◆ complex_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef complex_t mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::complex_type

Definition at line 1001 of file tevaluator.hpp.

◆ FE_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef FESpace_t::FE_type mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FE_type

Definition at line 1003 of file tevaluator.hpp.

◆ FESpace_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef FESpace_t mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FESpace_type

Definition at line 1002 of file tevaluator.hpp.

◆ ShapeEval_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef ShapeEvaluator<FE_type,IR,real_t> mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::ShapeEval_type

Definition at line 1004 of file tevaluator.hpp.

◆ T_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef FieldEvaluator<FESpace_t,VecLayout_t,IR,complex_t,real_t> mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::T_type

Definition at line 1008 of file tevaluator.hpp.

◆ VecLayout_type

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
typedef VecLayout_t mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::VecLayout_type

Definition at line 1005 of file tevaluator.hpp.

Member Enumeration Documentation

◆ InOutData

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
enum mfem::FieldEvaluator::InOutData

Enumeration for the data type used by the Eval() and Assemble() methods. The types can be obtained by summing constants from this enumeration and used as a template parameter in struct Data.

Enumerator
None 
Values 
Gradients 

Definition at line 1149 of file tevaluator.hpp.

Constructor & Destructor Documentation

◆ FieldEvaluator() [1/3]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FieldEvaluator ( const FESpace_t & tfes,
const ShapeEval_type & shape_eval,
const VecLayout_type & vec_layout,
const complex_t * global_data_in,
complex_t * global_data_out )
inline

With this constructor, fespace is a shallow copy of tfes.

Definition at line 1029 of file tevaluator.hpp.

◆ FieldEvaluator() [2/3]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FieldEvaluator ( const FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t > & f,
const complex_t * global_data_in,
complex_t * global_data_out )
inline

With this constructor, fespace is a shallow copy of f.fespace.

Definition at line 1039 of file tevaluator.hpp.

◆ FieldEvaluator() [3/3]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FieldEvaluator ( const FiniteElementSpace & fes,
const complex_t * global_data_in,
complex_t * global_data_out )
inline

This constructor creates a new fespace, not a shallow copy.

Definition at line 1048 of file tevaluator.hpp.

Member Function Documentation

◆ Assemble() [1/2]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::Assemble ( DataType & F)
inline

Definition at line 1112 of file tevaluator.hpp.

◆ Assemble() [2/2]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::Assemble ( int el,
DataType & F )
inline

Definition at line 1121 of file tevaluator.hpp.

◆ AssembleSerialized()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<bool Add, typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::AssembleSerialized ( const DataType & F,
typename DataType::vcomplex_t * loc_dofs )
inline

Definition at line 1138 of file tevaluator.hpp.

◆ Eval() [1/2]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::Eval ( DataType & F)
inline

Definition at line 1096 of file tevaluator.hpp.

◆ Eval() [2/2]

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::Eval ( int el,
DataType & F )
inline

Definition at line 1104 of file tevaluator.hpp.

◆ EvalSerialized()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<typename DataType >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::EvalSerialized ( const typename DataType::vcomplex_t * loc_dofs,
DataType & F )
inline

Definition at line 1130 of file tevaluator.hpp.

◆ FESpace()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE FESpace_type & mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::FESpace ( )
inline

Definition at line 1057 of file tevaluator.hpp.

◆ GetGradients()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<typename grad_layout_t , typename grad_data_t >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::GetGradients ( int el,
const grad_layout_t & l,
grad_data_t & grad )
inline

grad_layout_t is (qpts x dim x vdim x NE)

Definition at line 1082 of file tevaluator.hpp.

◆ GetValues()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
template<typename val_layout_t , typename val_data_t >
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::GetValues ( int el,
const val_layout_t & l,
val_data_t & vals )
inline

val_layout_t is (qpts x vdim x NE)

Definition at line 1070 of file tevaluator.hpp.

◆ SetElement()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE void mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::SetElement ( int el)
inline

Definition at line 1062 of file tevaluator.hpp.

◆ ShapeEval()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE ShapeEval_type & mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::ShapeEval ( )
inline

Definition at line 1058 of file tevaluator.hpp.

◆ VecLayout()

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
MFEM_ALWAYS_INLINE VecLayout_type & mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::VecLayout ( )
inline

Definition at line 1059 of file tevaluator.hpp.

Member Data Documentation

◆ data_in

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
const complex_t* mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::data_in
protected

Definition at line 1023 of file tevaluator.hpp.

◆ data_out

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
complex_t* mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::data_out
protected

Definition at line 1024 of file tevaluator.hpp.

◆ dim

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
const int mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::dim = FE_type::dim
static

Definition at line 1011 of file tevaluator.hpp.

◆ dofs

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
const int mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::dofs = FE_type::dofs
static

Definition at line 1010 of file tevaluator.hpp.

◆ fespace

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
FESpace_t mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_t, real_t >::fespace
protected

Definition at line 974 of file tevaluator.hpp.

◆ qpts

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
const int mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::qpts = IR::qpts
static

Definition at line 1012 of file tevaluator.hpp.

◆ shapeEval

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
ShapeEval_type mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_t, real_t >::shapeEval
protected

Definition at line 975 of file tevaluator.hpp.

◆ vdim

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
const int mfem::FieldEvaluator< FESpace_t, VecLayout_t, IR, complex_t, real_t >::vdim = VecLayout_t::vec_dim
static

Definition at line 1013 of file tevaluator.hpp.

◆ vec_layout

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = real_t, typename real_t = real_t>
VecLayout_t mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_t, real_t >::vec_layout
protected

Definition at line 976 of file tevaluator.hpp.


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