20 #ifndef LIBMESH_WRAPPED_FUNCTOR_H
21 #define LIBMESH_WRAPPED_FUNCTOR_H
24 #include "libmesh/fem_function_base.h"
25 #include "libmesh/function_base.h"
26 #include "libmesh/point.h"
42 template <
typename Output=Number>
72 virtual std::unique_ptr<FEMFunctionBase<Output>>
clone ()
const override
74 return std::make_unique<WrappedFunctor<Output>>(*_func);
86 const Real time = 0.)
override
87 {
return _func->operator()(p, time); }
100 {
_func->operator() (p, time, output); }
113 Real time=0.)
override
114 {
return _func->component(i, p, time); }
118 std::unique_ptr<FunctionBase<Output>>
_func;
125 #endif // LIBMESH_WRAPPED_FUNCTOR_H
WrappedFunctor & operator=(const WrappedFunctor &)=delete
virtual std::unique_ptr< FEMFunctionBase< Output > > clone() const override
克隆函数,用于创建此对象的副本。
virtual Output component(const FEMContext &context, unsigned int i, const Point &p, Real time=0.) override
用于计算函数在给定点、时间和分量索引的特定分量的值。
该类提供了一个包装器,用于在FunctionBase<Output>兼容接口中评估(libMesh风格的)函数指针。
std::unique_ptr< FunctionBase< Output > > _func
virtual ~WrappedFunctor()=default
virtual Output operator()(const FEMContext &context, const Point &p, const Real time=0.) override
用于计算函数在给定点和时间的值。
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
WrappedFunctor(const FunctionBase< Output > &func)
用于将FunctionBase函数包装在FEMFunctionBase兼容的shim中的构造函数。
FunctionBase是一个函数对象的基类,可以在某一点(可选地包括时间)进行评估。
FEMFunctionBase是一个基类,用户可以从中派生出“函数样式”的对象,以在FEMSystem中使用。