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

由两个向量的张量积构成的壳矩阵,即A = v*w^T。 更多...

#include <tensor_shell_matrix.h>

类 libMesh::TensorShellMatrix< T > 继承关系图:
[图例]

Public 成员函数

 TensorShellMatrix (const NumericVector< T > &v, const NumericVector< T > &w)
 Constructor; 以两个向量的引用作为参数进行初始化。向量本身必须存储在其他地方。 更多...
 
virtual ~TensorShellMatrix ()
 Destructor(析构函数)。 更多...
 
virtual numeric_index_type m () const override
 获取矩阵的行维度。 更多...
 
virtual numeric_index_type n () const override
 获取矩阵的列维度。 更多...
 
virtual void vector_mult (NumericVector< T > &dest, const NumericVector< T > &arg) const override
 将矩阵与参数arg相乘,并将结果存储在dest中。 更多...
 
virtual void vector_mult_add (NumericVector< T > &dest, const NumericVector< T > &arg) const override
 将矩阵与参数arg相乘,然后将结果添加到dest中。 更多...
 
virtual void get_diagonal (NumericVector< T > &dest) const override
 将矩阵的对角部分复制到dest中。 更多...
 
void attach_dof_map (const DofMap &dof_map)
 附加要使用的 DofMap 指针。 更多...
 
virtual void clear ()
 清除对象,释放内存。 更多...
 
virtual void init ()
 初始化对象。 更多...
 

静态 Public 成员函数

static std::unique_ptr
< ShellMatrix< T > > 
build (const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
 使用指定的线性求解器包构建一个 ShellMatrix<T>。 更多...
 
static std::string get_info ()
 Gets a string containing the reference information. 更多...
 
static void print_info (std::ostream &out_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out. 更多...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. 更多...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info() 更多...
 
static void disable_print_counter_info ()
 

Protected 类型

typedef std::map< std::string,
std::pair< unsigned int,
unsigned int > > 
Counts
 Data structure to log the information. 更多...
 

Protected 成员函数

void increment_constructor_count (const std::string &name) noexcept
 Increments the construction counter. 更多...
 
void increment_destructor_count (const std::string &name) noexcept
 Increments the destruction counter. 更多...
 

Protected 属性

const NumericVector< T > & _v
 列向量。 更多...
 
const NumericVector< T > & _w
 行向量。 更多...
 
DofMap const * _dof_map
 与此对象关联的 DofMap 对象。 更多...
 

静态 Protected 属性

static Counts _counts
 Actually holds the data. 更多...
 
static Threads::atomic
< unsigned int > 
_n_objects
 The number of objects. 更多...
 
static Threads::spin_mutex _mutex
 Mutual exclusion object to enable thread-safe reference counting. 更多...
 
static bool _enable_print_counter = true
 Flag to control whether reference count information is printed when print_info is called. 更多...
 

详细描述

template<typename T>
class libMesh::TensorShellMatrix< T >

由两个向量的张量积构成的壳矩阵,即A = v*w^T。

这个类代表了由两个向量的张量积构成的壳矩阵,即A = v*w^T。以下是该类的详细注释:

在文件 tensor_shell_matrix.h40 行定义.

成员类型定义说明

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts
protectedinherited

Data structure to log the information.

The log is identified by the class name.

在文件 reference_counter.h119 行定义.

构造及析构函数说明

template<typename T >
libMesh::TensorShellMatrix< T >::TensorShellMatrix ( const NumericVector< T > &  v,
const NumericVector< T > &  w 
)
inline

Constructor; 以两个向量的引用作为参数进行初始化。向量本身必须存储在其他地方。

参数
v列向量
w行向量

在文件 tensor_shell_matrix.h113 行定义.

114  :
115  ShellMatrix<T>(v.comm()),
116  _v(v),
117  _w(w)
118 {}
const NumericVector< T > & _w
行向量。
const NumericVector< T > & _v
列向量。
template<typename T >
libMesh::TensorShellMatrix< T >::~TensorShellMatrix ( )
inlinevirtual

Destructor(析构函数)。

在文件 tensor_shell_matrix.h124 行定义.

125 {}

成员函数说明

template<typename T>
void libMesh::ShellMatrix< T >::attach_dof_map ( const DofMap dof_map)
inlineinherited

附加要使用的 DofMap 指针。

参数
dof_map要附加的 DofMap 对象

在文件 shell_matrix.h120 行定义.

参考 libMesh::ShellMatrix< T >::_dof_map.

121  { _dof_map = &dof_map; }
DofMap const * _dof_map
与此对象关联的 DofMap 对象。
Definition: shell_matrix.h:141
template<typename T >
std::unique_ptr< ShellMatrix< T > > libMesh::ShellMatrix< T >::build ( const Parallel::Communicator &  comm,
const SolverPackage  solver_package = libMesh::default_solver_package() 
)
staticinherited

使用指定的线性求解器包构建一个 ShellMatrix<T>。

参数
comm通信器对象
solver_package线性求解器包
返回
返回一个包含 ShellMatrix<T> 的 std::unique_ptr

在文件 shell_matrix.C32 行定义.

参考 libMesh::libmesh_ignore().

34  {
35  // Avoid unused parameter warnings when no solver packages are enabled.
36  libmesh_ignore(comm);
37 
38  // Build the appropriate vector
39  switch (solver_package)
40  {
41  #ifdef LIBMESH_HAVE_PETSC
42  case PETSC_SOLVERS:
43  return std::make_unique<PetscShellMatrix<T>>(comm);
44  #endif
45 
46  default:
47  libmesh_error_msg("ERROR: Unrecognized solver package: " << solver_package);
48  }
49  }
void libmesh_ignore(const Args &...)
template<typename T>
virtual void libMesh::ShellMatrix< T >::clear ( )
inlinevirtualinherited

清除对象,释放内存。

注解
未实现

libMesh::PetscShellMatrix< T > 重载.

在文件 shell_matrix.h128 行定义.

128 { libmesh_error_msg ("Not implemented yet"); }
void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

在文件 reference_counter.C100 行定义.

参考 libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = false;
103  return;
104 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...
void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

Methods to enable/disable the reference counter output from print_info()

在文件 reference_counter.C94 行定义.

参考 libMesh::ReferenceCounter::_enable_print_counter.

95 {
96  _enable_print_counter = true;
97  return;
98 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...
template<typename T >
void libMesh::TensorShellMatrix< T >::get_diagonal ( NumericVector< T > &  dest) const
overridevirtual

将矩阵的对角部分复制到dest中。

参数
dest存储对角元素的数值向量

实现了 libMesh::ShellMatrix< T >.

在文件 tensor_shell_matrix.C46 行定义.

参考 libMesh::NumericVector< T >::pointwise_mult().

47 {
48  dest.pointwise_mult(_v,_w);
49 }
const NumericVector< T > & _w
行向量。
const NumericVector< T > & _v
列向量。
std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

在文件 reference_counter.C47 行定义.

参考 libMesh::ReferenceCounter::_counts.

参考自 libMesh::ReferenceCounter::print_info().

48 {
49 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
50 
51  std::ostringstream oss;
52 
53  oss << '\n'
54  << " ---------------------------------------------------------------------------- \n"
55  << "| Reference count information |\n"
56  << " ---------------------------------------------------------------------------- \n";
57 
58  for (const auto & [name, cd] : _counts)
59  oss << "| " << name << " reference count information:\n"
60  << "| Creations: " << cd.first << '\n'
61  << "| Destructions: " << cd.second << '\n';
62 
63  oss << " ---------------------------------------------------------------------------- \n";
64 
65  return oss.str();
66 
67 #else
68 
69  return "";
70 
71 #endif
72 }
static Counts _counts
Actually holds the data.
void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the construction counter.

Should be called in the constructor of any derived class that will be reference counted.

在文件 reference_counter.h183 行定义.

参考 libMesh::err.

参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::ReferenceCountedObject().

184 {
185  libmesh_try
186  {
187  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188  std::pair<unsigned int, unsigned int> & p = _counts[name];
189  p.first++;
190  }
191  libmesh_catch (...)
192  {
193  auto stream = libMesh::err.get();
194  stream->exceptions(stream->goodbit); // stream must not throw
195  libMesh::err << "Encountered unrecoverable error while calling "
196  << "ReferenceCounter::increment_constructor_count() "
197  << "for a(n) " << name << " object." << std::endl;
198  std::terminate();
199  }
200 }
OStreamProxy err
static Counts _counts
Actually holds the data.
void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the destruction counter.

Should be called in the destructor of any derived class that will be reference counted.

在文件 reference_counter.h207 行定义.

参考 libMesh::err.

参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::~ReferenceCountedObject().

208 {
209  libmesh_try
210  {
211  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
212  std::pair<unsigned int, unsigned int> & p = _counts[name];
213  p.second++;
214  }
215  libmesh_catch (...)
216  {
217  auto stream = libMesh::err.get();
218  stream->exceptions(stream->goodbit); // stream must not throw
219  libMesh::err << "Encountered unrecoverable error while calling "
220  << "ReferenceCounter::increment_destructor_count() "
221  << "for a(n) " << name << " object." << std::endl;
222  std::terminate();
223  }
224 }
OStreamProxy err
static Counts _counts
Actually holds the data.
template<typename T>
virtual void libMesh::ShellMatrix< T >::init ( )
inlinevirtualinherited

初始化对象。

注解
未实现

libMesh::PetscShellMatrix< T > 重载.

在文件 shell_matrix.h135 行定义.

135 { libmesh_error_msg ("Not implemented yet"); }
template<typename T >
numeric_index_type libMesh::TensorShellMatrix< T >::m ( ) const
inlineoverridevirtual

获取矩阵的行维度。

返回
行维度

实现了 libMesh::ShellMatrix< T >.

在文件 tensor_shell_matrix.h131 行定义.

132 {
133  return _v.size();
134 }
const NumericVector< T > & _v
列向量。
template<typename T >
numeric_index_type libMesh::TensorShellMatrix< T >::n ( ) const
inlineoverridevirtual

获取矩阵的列维度。

返回
列维度

实现了 libMesh::ShellMatrix< T >.

在文件 tensor_shell_matrix.h140 行定义.

141 {
142  return _w.size();
143 }
const NumericVector< T > & _w
行向量。
static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

Prints the number of outstanding (created, but not yet destroyed) objects.

在文件 reference_counter.h85 行定义.

参考 libMesh::ReferenceCounter::_n_objects.

参考自 libMesh::LibMeshInit::~LibMeshInit().

86  { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects
The number of objects.
void libMesh::ReferenceCounter::print_info ( std::ostream &  out_stream = libMesh::out)
staticinherited

Prints the reference information, by default to libMesh::out.

在文件 reference_counter.C81 行定义.

参考 libMesh::ReferenceCounter::_enable_print_counter , 以及 libMesh::ReferenceCounter::get_info().

参考自 libMesh::LibMeshInit::~LibMeshInit().

82 {
84  out_stream << ReferenceCounter::get_info();
85 }
static std::string get_info()
Gets a string containing the reference information.
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...
template<typename T >
void libMesh::TensorShellMatrix< T >::vector_mult ( NumericVector< T > &  dest,
const NumericVector< T > &  arg 
) const
overridevirtual

将矩阵与参数arg相乘,并将结果存储在dest中。

参数
dest存储结果的数值向量
arg用于乘法的数值向量

实现了 libMesh::ShellMatrix< T >.

在文件 tensor_shell_matrix.C27 行定义.

参考 libMesh::NumericVector< T >::scale().

29 {
30  dest = _v;
31  dest.scale(_w.dot(arg));
32 }
const NumericVector< T > & _w
行向量。
const NumericVector< T > & _v
列向量。
template<typename T >
void libMesh::TensorShellMatrix< T >::vector_mult_add ( NumericVector< T > &  dest,
const NumericVector< T > &  arg 
) const
overridevirtual

将矩阵与参数arg相乘,然后将结果添加到dest中。

参数
dest存储结果的数值向量
arg用于乘法的数值向量

实现了 libMesh::ShellMatrix< T >.

在文件 tensor_shell_matrix.C37 行定义.

参考 libMesh::NumericVector< T >::add().

39 {
40  dest.add(_w.dot(arg),_v);
41 }
const NumericVector< T > & _w
行向量。
const NumericVector< T > & _v
列向量。

类成员变量说明

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

Actually holds the data.

在文件 reference_counter.h124 行定义.

参考自 libMesh::ReferenceCounter::get_info().

template<typename T>
DofMap const* libMesh::ShellMatrix< T >::_dof_map
protectedinherited

与此对象关联的 DofMap 对象。

在文件 shell_matrix.h141 行定义.

参考自 libMesh::ShellMatrix< T >::attach_dof_map().

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

Flag to control whether reference count information is printed when print_info is called.

在文件 reference_counter.h143 行定义.

参考自 libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info() , 以及 libMesh::ReferenceCounter::print_info().

Threads::spin_mutex libMesh::ReferenceCounter::_mutex
staticprotectedinherited

Mutual exclusion object to enable thread-safe reference counting.

在文件 reference_counter.h137 行定义.

Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects
staticprotectedinherited

The number of objects.

Print the reference count information when the number returns to 0.

在文件 reference_counter.h132 行定义.

参考自 libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter() , 以及 libMesh::ReferenceCounter::~ReferenceCounter().

template<typename T >
const NumericVector<T>& libMesh::TensorShellMatrix< T >::_v
protected

列向量。

在文件 tensor_shell_matrix.h100 行定义.

template<typename T >
const NumericVector<T>& libMesh::TensorShellMatrix< T >::_w
protected

行向量。

在文件 tensor_shell_matrix.h105 行定义.


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