libmesh解析
本工作只是尝试解析原libmesh的代码,供学习使用
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 
Public 类型 | Public 成员函数 | Public 属性 | Protected 属性 | 所有成员列表
libMesh::AnalyticFunction< Output > 模板类 参考

将函数指针封装成FunctionBase对象。 更多...

#include <analytic_function.h>

类 libMesh::AnalyticFunction< Output > 继承关系图:
[图例]

Public 类型

typedef Output(* OutputFunction )(const Point &p, const Real time)
 标量返回值函数指针类型。 更多...
 
typedef void(* OutputVectorFunction )(DenseVector< Output > &output, const Point &p, const Real time)
 矢量返回值函数指针类型。 更多...
 

Public 成员函数

 AnalyticFunction (OutputFunction fptr)
 构造函数。接受标量返回值函数的函数指针。 更多...
 
 AnalyticFunction (OutputVectorFunction fptr)
 构造函数。接受矢量值函数的函数指针。 更多...
 
 AnalyticFunction (AnalyticFunction &&)=default
 该类的5个特殊函数可以为该类默认。 更多...
 
 AnalyticFunction (const AnalyticFunction &)=default
 
AnalyticFunctionoperator= (const AnalyticFunction &)=default
 
AnalyticFunctionoperator= (AnalyticFunction &&)=default
 
virtual ~AnalyticFunction ()=default
 
virtual void init () override
 初始化函数。检查是否已准备好使用。 更多...
 
virtual void clear () override
 清理函数。将函数指针重置为nullptr,并标记未准备好使用。 更多...
 
virtual std::unique_ptr
< FunctionBase< Output > > 
clone () const override
 克隆函数。创建并返回一个与当前实例相同类型的新实例。 更多...
 
virtual Output operator() (const Point &p, const Real time=0.) override
 重载操作符,用于计算标量值。 更多...
 
virtual void operator() (const Point &p, const Real time, DenseVector< Output > &output) override
 重载操作符,用于计算矢量值。 更多...
 
void operator() (const Point &p, DenseVector< Output > &output)
 Evaluation function for time-independent vector-valued functions. 更多...
 
virtual Output component (unsigned int i, const Point &p, Real time=0.)
 
bool initialized () const
 
void set_is_time_dependent (bool is_time_dependent)
 设置函数是否依赖时间的函数。 这仅应该由无法本地确定时间依赖性的子类使用。 在这种情况下,应在构造之后立即使用这个函数。 更多...
 
bool is_time_dependent () const
 

Public 属性

OutputFunction _number_fptr
 指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。 更多...
 
OutputVectorFunction _vector_fptr
 指向用户提供的矢量值函数的指针。 更多...
 

Protected 属性

const FunctionBase_master
 指向我们的主函数对象的const指针,初始化为 nullptr。 可能存在需要多个函数的情况,但为了节省内存,一个主函数对象可以处理一些集中的数据。 更多...
 
bool _initialized
 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。 更多...
 
bool _is_time_dependent
 成员变量用于缓存函数是否真正依赖于时间。 更多...
 

详细描述

template<typename Output = Number>
class libMesh::AnalyticFunction< Output >

将函数指针封装成FunctionBase对象。

该类提供了函数样式的对象,其中用户可以提供返回标量或矢量值的函数指针。 所有重载的虚拟函数在function_base.h中有文档说明。 这个类的目的是允许用户提供函数指针,以便创建一个类,该类的实例可以被用作函数。 它可以处理返回标量或矢量的情况。

作者
Daniel Dreyer
日期
2003

在文件 analytic_function.h48 行定义.

成员类型定义说明

template<typename Output = Number>
typedef Output(* libMesh::AnalyticFunction< Output >::OutputFunction)(const Point &p, const Real time)

标量返回值函数指针类型。

在文件 analytic_function.h53 行定义.

template<typename Output = Number>
typedef void(* libMesh::AnalyticFunction< Output >::OutputVectorFunction)(DenseVector< Output > &output, const Point &p, const Real time)

矢量返回值函数指针类型。

在文件 analytic_function.h62 行定义.

构造及析构函数说明

template<typename Output >
libMesh::AnalyticFunction< Output >::AnalyticFunction ( OutputFunction  fptr)

构造函数。接受标量返回值函数的函数指针。

参数
fptr标量返回值函数的函数指针。

在文件 analytic_function.h158 行定义.

参考 libMesh::FunctionBase< Output >::_initialized.

158  :
159  FunctionBase<Output>(),
160  _number_fptr(fptr),
161  _vector_fptr(nullptr)
162 {
163  libmesh_assert(fptr);
164  this->_initialized = true;
165 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output >
libMesh::AnalyticFunction< Output >::AnalyticFunction ( OutputVectorFunction  fptr)
inline

构造函数。接受矢量值函数的函数指针。

参数
fptr矢量返回值函数的函数指针。

在文件 analytic_function.h173 行定义.

参考 libMesh::FunctionBase< Output >::_initialized.

173  :
174  FunctionBase<Output>(),
175  _number_fptr(nullptr),
176  _vector_fptr(fptr)
177 {
178  libmesh_assert(fptr);
179  this->_initialized = true;
180 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output = Number>
libMesh::AnalyticFunction< Output >::AnalyticFunction ( AnalyticFunction< Output > &&  )
default

该类的5个特殊函数可以为该类默认。

template<typename Output = Number>
libMesh::AnalyticFunction< Output >::AnalyticFunction ( const AnalyticFunction< Output > &  )
default
template<typename Output = Number>
virtual libMesh::AnalyticFunction< Output >::~AnalyticFunction ( )
virtualdefault

成员函数说明

template<typename Output >
void libMesh::AnalyticFunction< Output >::clear ( )
inlineoverridevirtual

清理函数。将函数指针重置为nullptr,并标记未准备好使用。

重载 libMesh::FunctionBase< Output > .

在文件 analytic_function.h200 行定义.

201 {
202  // 我们可能需要一个方法来稍后重置这些...
203  _number_fptr = nullptr;
204  _vector_fptr = nullptr;
205 
206  // 绝对没准备好
207  this->_initialized = false;
208 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output >
std::unique_ptr< FunctionBase< Output > > libMesh::AnalyticFunction< Output >::clone ( ) const
inlineoverridevirtual

克隆函数。创建并返回一个与当前实例相同类型的新实例。

实现了 libMesh::FunctionBase< Output >.

在文件 analytic_function.h215 行定义.

216 {
217  return std::unique_ptr<FunctionBase<Output>>
218  (_number_fptr ?
219  new AnalyticFunction<Output>(_number_fptr) :
220  new AnalyticFunction<Output>(_vector_fptr));
221 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output >
Output libMesh::FunctionBase< Output >::component ( unsigned int  i,
const Point &  p,
Real  time = 0. 
)
inlinevirtualinherited
返回
用于时间相关的矢量值函数的评估函数,在坐标 p 和时间 time 处的向量分量 i。
注解
子类不需要重写这个函数,因为默认实现基于完整向量评估,通常是正确的。
推荐子类重写这个函数,因为默认实现基于向量评估,通常是不必要的低效率。
默认实现调用带有大小为 i+1 的DenseVector的operator(),如果operator()在该限制之外进行访问,将导致意外行为。
参数
p坐标点。
time时间。
output输出的向量。

libMesh::CompositeFunction< Output >, libMesh::ParsedFunction< Output, OutputGradient >, libMesh::ParsedFunction< T > , 以及 libMesh::WrappedFunction< Output > 重载.

在文件 function_base.h240 行定义.

243 {
244  DenseVector<Output> outvec(i+1);
245  (*this)(p, time, outvec);
246  return outvec(i);
247 }
template<typename Output >
void libMesh::AnalyticFunction< Output >::init ( )
overridevirtual

初始化函数。检查是否已准备好使用。

重载 libMesh::FunctionBase< Output > .

在文件 analytic_function.h186 行定义.

187 {
188  // 双重测试
189  libmesh_assert((_number_fptr != nullptr) || (_vector_fptr != nullptr));
190 
191  // 绝对准备好
192  this->_initialized = true;
193 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output >
bool libMesh::FunctionBase< Output >::initialized ( ) const
inlineinherited
返回
在坐标 p 和时间 time 处的向量的分量 i。

子类可以选择重写这个函数以提高效率,因为默认实现基于向量评估,通常是不必要的低效率。

参数
i分量的索引。
p坐标点。
time时间。
注解
默认实现调用带有大小为 i+1 的DenseVector的operator(),如果operator() 在该限制之外进行访问,将导致意外行为。

在文件 function_base.h216 行定义.

217 {
218  return (this->_initialized);
219 }
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
template<typename Output >
bool libMesh::FunctionBase< Output >::is_time_dependent ( ) const
inlineinherited
返回
当前对象表示的函数是否实际上是时间相关的,是返回 true ,否则返回 false。

这个函数用于查询函数对象是否依赖于时间。有些函数对象的时间依赖性是从外部确定的,因此可以使用这个函数设置。

在文件 function_base.h232 行定义.

参考自 libMesh::CompositeFunction< Output >::attach_subfunction().

233 {
234  return (this->_is_time_dependent);
235 }
bool _is_time_dependent
成员变量用于缓存函数是否真正依赖于时间。
template<typename Output >
Output libMesh::AnalyticFunction< Output >::operator() ( const Point &  p,
const Real  time = 0. 
)
inlineoverridevirtual

重载操作符,用于计算标量值。

参数
p计算点的坐标。
time时间值,默认为0。
返回
计算得到的标量值。

实现了 libMesh::FunctionBase< Output >.

在文件 analytic_function.h132 行定义.

参考 libMesh::initialized().

133 {
134  libmesh_assert(this->initialized());
135  return (this->_number_fptr(p, time));
136 }
OutputFunction _number_fptr
指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。
bool initialized() const
template<typename Output>
void libMesh::FunctionBase< Output >::operator() ( const Point &  p,
DenseVector< Output > &  output 
)
inlineinherited

Evaluation function for time-independent vector-valued functions.

Sets output values in the passed-in output DenseVector.

在文件 function_base.h252 行定义.

254 {
255  // 调用时间相关的函数,时间设为0。
256  this->operator()(p, 0., output);
257 }
virtual Output operator()(const Point &p, const Real time=0.)=0
template<typename Output >
void libMesh::AnalyticFunction< Output >::operator() ( const Point &  p,
const Real  time,
DenseVector< Output > &  output 
)
inlineoverridevirtual

重载操作符,用于计算矢量值。

参数
p计算点的坐标。
time时间值。
output计算得到的矢量值。

实现了 libMesh::FunctionBase< Output >.

在文件 analytic_function.h146 行定义.

参考 libMesh::initialized().

147 {
148  libmesh_assert(this->initialized());
149  this->_vector_fptr(output, p, time);
150  return;
151 }
bool initialized() const
OutputVectorFunction _vector_fptr
指向用户提供的矢量值函数的指针。
template<typename Output = Number>
AnalyticFunction& libMesh::AnalyticFunction< Output >::operator= ( const AnalyticFunction< Output > &  )
default
template<typename Output = Number>
AnalyticFunction& libMesh::AnalyticFunction< Output >::operator= ( AnalyticFunction< Output > &&  )
default
template<typename Output >
void libMesh::FunctionBase< Output >::set_is_time_dependent ( bool  is_time_dependent)
inlineinherited

设置函数是否依赖时间的函数。 这仅应该由无法本地确定时间依赖性的子类使用。 在这种情况下,应在构造之后立即使用这个函数。

在文件 function_base.h224 行定义.

225 {
227 }
bool is_time_dependent() const
bool _is_time_dependent
成员变量用于缓存函数是否真正依赖于时间。

类成员变量说明

template<typename Output>
bool libMesh::FunctionBase< Output >::_initialized
protectedinherited

init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。

这个成员变量用于跟踪函数对象是否已经完成初始化,如果已经准备好进行评估,则为 true。

在文件 function_base.h191 行定义.

参考自 libMesh::AnalyticFunction< Output >::AnalyticFunction(), libMesh::ConstFunction< Output >::ConstFunction(), libMesh::ParsedFunction< Output, OutputGradient >::ParsedFunction() , 以及 libMesh::WrappedFunction< Output >::WrappedFunction().

template<typename Output>
bool libMesh::FunctionBase< Output >::_is_time_dependent
protectedinherited

成员变量用于缓存函数是否真正依赖于时间。

在文件 function_base.h197 行定义.

参考自 libMesh::CompositeFunction< Output >::attach_subfunction() , 以及 libMesh::ConstFunction< Output >::ConstFunction().

template<typename Output>
const FunctionBase* libMesh::FunctionBase< Output >::_master
protectedinherited

指向我们的主函数对象的const指针,初始化为 nullptr。 可能存在需要多个函数的情况,但为了节省内存,一个主函数对象可以处理一些集中的数据。

这个成员变量用于指向主函数对象的指针,有时候多个函数对象需要共享一些数据,可以通过主函数对象来管理。

在文件 function_base.h184 行定义.

template<typename Output = Number>
OutputFunction libMesh::AnalyticFunction< Output >::_number_fptr

指向用户提供的函数的指针,该函数在有解析表达式时计算边界值。

在文件 analytic_function.h83 行定义.

template<typename Output = Number>
OutputVectorFunction libMesh::AnalyticFunction< Output >::_vector_fptr

指向用户提供的矢量值函数的指针。

在文件 analytic_function.h88 行定义.


该类的文档由以下文件生成: