20 #ifndef LIBMESH_WRAPPED_FUNCTION_H
21 #define LIBMESH_WRAPPED_FUNCTION_H
24 #include "libmesh/dense_vector.h"
25 #include "libmesh/equation_systems.h"
26 #include "libmesh/function_base.h"
27 #include "libmesh/libmesh_common.h"
28 #include "libmesh/point.h"
29 #include "libmesh/system.h"
49 template <
typename Output=Number>
62 Output fptr(
const Point & p,
63 const Parameters & parameters,
64 const std::string & sys_name,
65 const std::string & unknown_name) =
nullptr,
66 const Parameters * parameters =
nullptr,
67 unsigned int varnum=0)
75 _parameters = &sys.get_equation_systems().parameters;
95 virtual std::unique_ptr<FunctionBase<Output>>
clone ()
const override;
104 const Real time = 0.)
override;
123 virtual Output
component (
unsigned int i,
125 Real time=0.)
override;
138 const Parameters & parameters,
139 const std::string & sys_name,
140 const std::string & unknown_name);
159 #endif // LIBMESH_WRAPPED_FUNCTION_H
unsigned int _varnum
用于指示函数操作的变量编号。
将libMesh风格的函数指针封装成FunctionBase对象。
const System & _sys
引用一个System对象,用于评估函数的上下文。
virtual Output component(unsigned int i, const Point &p, Real time=0.) override
评估函数的特定分量值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
Output(* _fptr)(const Point &p, const Parameters ¶meters, const std::string &sys_name, const std::string &unknown_name)
指向函数指针的指针,用于评估函数。
virtual Output operator()(const Point &p, const Real time=0.) override
评估函数在给定点和时间的值。
WrappedFunction & operator=(const WrappedFunction &)=delete
此类包含const引用,因此无法赋值。
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual ~WrappedFunction()=default
const Parameters * _parameters
指向函数参数的指针。
WrappedFunction(const System &sys, Output fptr(const Point &p, const Parameters ¶meters, const std::string &sys_name, const std::string &unknown_name)=nullptr, const Parameters *parameters=nullptr, unsigned int varnum=0)
用于封装标量值函数指针的构造函数。
FunctionBase是一个函数对象的基类,可以在某一点(可选地包括时间)进行评估。
virtual std::unique_ptr< FunctionBase< Output > > clone() const override
创建此对象的副本。