20 #ifndef LIBMESH_ANALYTIC_FUNCTION_H
21 #define LIBMESH_ANALYTIC_FUNCTION_H
24 #include "libmesh/function_base.h"
47 template <
typename Output=Number>
93 virtual void init()
override;
98 virtual void clear()
override;
103 virtual std::unique_ptr<FunctionBase<Output>>
clone()
const override;
111 virtual Output
operator()(
const Point & p,
const Real time=0.)
override;
130 template <
typename Output>
135 return (this->_number_fptr(p, time));
144 template <
typename Output>
149 this->_vector_fptr(output, p, time);
157 template <
typename Output>
161 _vector_fptr(nullptr)
163 libmesh_assert(fptr);
171 template <
typename Output>
175 _number_fptr(nullptr),
178 libmesh_assert(fptr);
185 template <
typename Output>
189 libmesh_assert((_number_fptr !=
nullptr) || (_vector_fptr !=
nullptr));
192 this->_initialized =
true;
198 template <
typename Output>
203 _number_fptr =
nullptr;
204 _vector_fptr =
nullptr;
207 this->_initialized =
false;
213 template <
typename Output>
217 return std::unique_ptr<FunctionBase<Output>>
225 #endif // LIBMESH_ANALYTIC_FUNCTION_H
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
virtual Output operator()(const Point &p, const Real time=0.) override
重载操作符,用于计算标量值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
void(* OutputVectorFunction)(DenseVector< Output > &output, const Point &p, const Real time)
矢量返回值函数指针类型。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
virtual std::unique_ptr< FunctionBase< Output > > clone() const override
克隆函数。创建并返回一个与当前实例相同类型的新实例。
virtual ~AnalyticFunction()=default
AnalyticFunction(OutputFunction fptr)
构造函数。接受标量返回值函数的函数指针。
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void init() override
初始化函数。检查是否已准备好使用。
Output(* OutputFunction)(const Point &p, const Real time)
标量返回值函数指针类型。
virtual void clear() override
清理函数。将函数指针重置为nullptr,并标记未准备好使用。
bool initialized()
Checks that library initialization has been done.
FunctionBase是一个函数对象的基类,可以在某一点(可选地包括时间)进行评估。
AnalyticFunction & operator=(const AnalyticFunction &)=default