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

将libMesh风格的函数指针封装成FunctionBase对象。 更多...

#include <wrapped_function.h>

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

Public 成员函数

 WrappedFunction (const System &sys, Output fptr(const Point &p, const Parameters &parameters, const std::string &sys_name, const std::string &unknown_name)=nullptr, const Parameters *parameters=nullptr, unsigned int varnum=0)
 用于封装标量值函数指针的构造函数。 更多...
 
WrappedFunctionoperator= (const WrappedFunction &)=delete
 此类包含const引用,因此无法赋值。 更多...
 
WrappedFunctionoperator= (WrappedFunction &&)=delete
 
 WrappedFunction (WrappedFunction &&)=default
 移动/复制构造函数和析构函数被默认化。 更多...
 
 WrappedFunction (const WrappedFunction &)=default
 
virtual ~WrappedFunction ()=default
 
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
 评估函数在给定点和时间的输出向量。 更多...
 
virtual Output component (unsigned int i, const Point &p, Real time=0.) override
 评估函数的特定分量值。 更多...
 
virtual void init ()
 实际的初始化过程。 更多...
 
virtual void clear ()
 清除函数。 更多...
 
void operator() (const Point &p, DenseVector< Output > &output)
 Evaluation function for time-independent vector-valued functions. 更多...
 
bool initialized () const
 
void set_is_time_dependent (bool is_time_dependent)
 设置函数是否依赖时间的函数。 这仅应该由无法本地确定时间依赖性的子类使用。 在这种情况下,应在构造之后立即使用这个函数。 更多...
 
bool is_time_dependent () const
 

Protected 属性

const System & _sys
 引用一个System对象,用于评估函数的上下文。 更多...
 
Output(* _fptr )(const Point &p, const Parameters &parameters, const std::string &sys_name, const std::string &unknown_name)
 指向函数指针的指针,用于评估函数。 更多...
 
const Parameters * _parameters
 指向函数参数的指针。 更多...
 
unsigned int _varnum
 用于指示函数操作的变量编号。 更多...
 
const FunctionBase_master
 指向我们的主函数对象的const指针,初始化为 nullptr。 可能存在需要多个函数的情况,但为了节省内存,一个主函数对象可以处理一些集中的数据。 更多...
 
bool _initialized
 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。 更多...
 
bool _is_time_dependent
 成员变量用于缓存函数是否真正依赖于时间。 更多...
 

详细描述

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

将libMesh风格的函数指针封装成FunctionBase对象。

该类提供了一个包装器,用于在FunctionBase兼容接口中评估(libMesh风格的)函数指针。 所有重写的虚拟函数在function_base.h中有文档。

作者
Roy Stogner
日期
2012
注解
若要封装普通函数指针,请使用AnalyticFunction类。
模板参数
Output输出类型,默认为Number。

在文件 wrapped_function.h50 行定义.

构造及析构函数说明

template<typename Output = Number>
libMesh::WrappedFunction< Output >::WrappedFunction ( const System &  sys,
Output   fptrconst Point &p,const Parameters &parameters,const std::string &sys_name,const std::string &unknown_name = nullptr,
const Parameters *  parameters = nullptr,
unsigned int  varnum = 0 
)
inline

用于封装标量值函数指针的构造函数。

参数
sysSystem对象。
fptr用于评估函数的函数指针。
parameters函数参数,默认为nullptr。
varnum变量编号,默认为0。

在文件 wrapped_function.h61 行定义.

参考 libMesh::FunctionBase< Output >::_initialized , 以及 libMesh::WrappedFunction< Output >::_parameters.

68  : _sys(sys),
69  _fptr(fptr),
70  _parameters(parameters),
71  _varnum(varnum)
72  {
73  this->_initialized = true;
74  if (!parameters)
75  _parameters = &sys.get_equation_systems().parameters;
76  }
unsigned int _varnum
用于指示函数操作的变量编号。
const System & _sys
引用一个System对象,用于评估函数的上下文。
bool _initialized
当 init() 被调用以确保一切都准备好后,可以调用 operator() (...) 时为 true。
Output(* _fptr)(const Point &p, const Parameters &parameters, const std::string &sys_name, const std::string &unknown_name)
指向函数指针的指针,用于评估函数。
const Parameters * _parameters
指向函数参数的指针。
template<typename Output = Number>
libMesh::WrappedFunction< Output >::WrappedFunction ( WrappedFunction< Output > &&  )
default

移动/复制构造函数和析构函数被默认化。

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

成员函数说明

template<typename Output>
virtual void libMesh::FunctionBase< Output >::clear ( )
inlinevirtualinherited

清除函数。

这个函数可以用来清除函数对象的状态,以备重新使用。

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

在文件 function_base.h95 行定义.

95 {}
template<typename Output = Number>
virtual std::unique_ptr<FunctionBase<Output> > libMesh::WrappedFunction< Output >::clone ( ) const
overridevirtual

创建此对象的副本。

返回
返回包含此对象副本的std::unique_ptr。

实现了 libMesh::FunctionBase< Output >.

template<typename Output = Number>
virtual Output libMesh::WrappedFunction< Output >::component ( unsigned int  i,
const Point &  p,
Real  time = 0. 
)
overridevirtual

评估函数的特定分量值。

参数
i分量索引。
p三维空间点。
time时间,默认为0。
返回
返回特定分量的值。

重载 libMesh::FunctionBase< Output > .

template<typename Output>
virtual void libMesh::FunctionBase< Output >::init ( )
inlinevirtualinherited

实际的初始化过程。

这个函数可以用来进行函数对象的初始化工作。

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

在文件 function_base.h89 行定义.

89 {}
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 = Number>
virtual Output libMesh::WrappedFunction< Output >::operator() ( const Point &  p,
const Real  time = 0. 
)
overridevirtual

评估函数在给定点和时间的值。

参数
p三维空间点。
time时间,默认为0。
返回
返回函数在给定点和时间的值。

实现了 libMesh::FunctionBase< Output >.

template<typename Output = Number>
virtual void libMesh::WrappedFunction< Output >::operator() ( const Point &  p,
const Real  time,
DenseVector< Output > &  output 
)
overridevirtual

评估函数在给定点和时间的输出向量。

参数
p三维空间点。
time时间。
output输出向量。

实现了 libMesh::FunctionBase< Output >.

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 = Number>
WrappedFunction& libMesh::WrappedFunction< Output >::operator= ( const WrappedFunction< Output > &  )
delete

此类包含const引用,因此无法赋值。

template<typename Output = Number>
WrappedFunction& libMesh::WrappedFunction< Output >::operator= ( WrappedFunction< Output > &&  )
delete
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 = Number>
Output(* libMesh::WrappedFunction< Output >::_fptr)(const Point &p, const Parameters &parameters, const std::string &sys_name, const std::string &unknown_name)
protected

指向函数指针的指针,用于评估函数。

在文件 wrapped_function.h137 行定义.

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>
const Parameters* libMesh::WrappedFunction< Output >::_parameters
protected

指向函数参数的指针。

此指针指向包含有关函数参数的信息。

在文件 wrapped_function.h146 行定义.

参考自 libMesh::WrappedFunction< Output >::WrappedFunction().

template<typename Output = Number>
const System& libMesh::WrappedFunction< Output >::_sys
protected

引用一个System对象,用于评估函数的上下文。

在文件 wrapped_function.h132 行定义.

template<typename Output = Number>
unsigned int libMesh::WrappedFunction< Output >::_varnum
protected

用于指示函数操作的变量编号。

可以用来区分系统中的不同变量。

在文件 wrapped_function.h152 行定义.


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