MFEM  v4.3.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Attributes | List of all members
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_t > 
ShapeEval_type
 
typedef VecLayout_t VecLayout_type
 
typedef FieldEvaluator
< FESpace_t, VecLayout_t, IR,
complex_t, real_t > 
T_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. More...
 
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. More...
 
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. More...
 
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) More...
 
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) More...
 
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_t > 
base_class
 
- Protected Types inherited from mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_t, real_t >
typedef FESpace_t::FE_type FE_type
 
typedef ShapeEvaluator
< FE_type, IR, real_t > 
ShapeEval_type
 

Protected Attributes

const complex_t * data_in
 
complex_t * data_out
 
- Protected Attributes inherited from mfem::FieldEvaluator_base< FESpace_t, VecLayout_t, IR, complex_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, complex_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. More...
 
MFEM_ALWAYS_INLINE FieldEvaluator_base (const FE_type &fe, const FiniteElementSpace &fes)
 This constructor creates new fespace, not a shallow copy. More...
 

Detailed Description

template<typename FESpace_t, typename VecLayout_t, typename IR, typename complex_t = double, typename real_t = double>
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

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

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

Definition at line 1001 of file tevaluator.hpp.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

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

Definition at line 1002 of file tevaluator.hpp.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

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

Definition at line 1024 of file tevaluator.hpp.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.

template<typename FESpace_t , typename VecLayout_t , typename IR , typename complex_t = double, typename real_t = double>
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.


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