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中使用。