这是一个通用的稀疏矩阵类。该类包含了必须在派生类中覆盖的纯虚拟成员。 使用一个公共的基类允许从不同的求解器包中以不同的格式统一访问稀疏矩阵。 更多...
#include <dof_map.h>
Public 成员函数 | |
SparseMatrix (const Parallel::Communicator &comm) | |
构造函数;初始化矩阵为空,没有任何结构,即矩阵无法使用。 更多... | |
SparseMatrix (SparseMatrix &&)=default | |
五个特殊函数对于这个类可以默认,因为它本身不管理任何内存。 更多... | |
SparseMatrix (const SparseMatrix &)=default | |
SparseMatrix & | operator= (const SparseMatrix &)=default |
SparseMatrix & | operator= (SparseMatrix &&)=default |
virtual | ~SparseMatrix ()=default |
virtual bool | initialized () const |
void | attach_dof_map (const DofMap &dof_map) |
设置要使用的 DofMap 的指针。如果不使用单独的稀疏性模式, 则使用来自 DofMap 的模式。 更多... | |
void | attach_sparsity_pattern (const SparsityPattern::Build &sp) |
设置要使用的稀疏性模式的指针。在矩阵需要比系统中的大(或更小以提高效率)的模式, 或者在 DofMap 未计算系统稀疏性模式的情况下使用。 更多... | |
virtual bool | need_full_sparsity_pattern () const |
virtual void | update_sparsity_pattern (const SparsityPattern::Graph &) |
更新矩阵的稀疏性模式。当您的 SparseMatrix<T> 实现不需要此数据时, 只需不覆盖此方法。 更多... | |
virtual void | init (const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const numeric_index_type nnz=30, const numeric_index_type noz=10, const numeric_index_type blocksize=1)=0 |
使用指定的大小初始化 SparseMatrix。 更多... | |
virtual void | init (ParallelType type=PARALLEL)=0 |
使用由 dof_map 计算的稀疏性结构初始化此矩阵。 更多... | |
virtual void | clear ()=0 |
恢复 SparseMatrix<T> 到原始状态。 更多... | |
virtual void | zero ()=0 |
将所有条目设置为 0。 更多... | |
virtual std::unique_ptr < SparseMatrix< T > > | zero_clone () const =0 |
virtual std::unique_ptr < SparseMatrix< T > > | clone () const =0 |
virtual void | zero_rows (std::vector< numeric_index_type > &rows, T diag_value=0.0) |
将所有行条目设置为 0,然后将 diag_value 放在对角线条目。 更多... | |
virtual void | close ()=0 |
调用 SparseMatrix 的内部装配例程,确保值在处理器之间保持一致。 更多... | |
virtual void | flush () |
对于 PETSc 矩阵,此函数类似于 close,但不收缩内存。 当我们希望在 ADD_VALUES 和 INSERT_VALUES 之间切换时,这很有用。 在使用矩阵之前应该调用 close。 更多... | |
virtual numeric_index_type | m () const =0 |
virtual numeric_index_type | local_m () const |
获取此进程拥有的行数。 更多... | |
virtual numeric_index_type | n () const =0 |
virtual numeric_index_type | row_start () const =0 |
virtual numeric_index_type | row_stop () const =0 |
virtual void | set (const numeric_index_type i, const numeric_index_type j, const T value)=0 |
设置元素 (i,j) 为 value . 更多... | |
virtual void | add (const numeric_index_type i, const numeric_index_type j, const T value)=0 |
将 value 添加到元素 (i,j) . 更多... | |
virtual void | add_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols)=0 |
将完整矩阵 dm 添加到 SparseMatrix。这对于在装配时添加元素矩阵很有用。 更多... | |
virtual void | add_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &dof_indices)=0 |
与 add_matrix 相同,但假定行和列映射相同。因此矩阵 dm 必须是方阵。 更多... | |
virtual void | add_block_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &brows, const std::vector< numeric_index_type > &bcols) |
将完整矩阵 dm 添加到 SparseMatrix。这对于在装配时添加元素矩阵很有用。 矩阵被假定为块矩阵,brow、 更多... | |
virtual void | add_block_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &dof_indices) |
与 add_block_matrix() 相同,但假定行和列映射相同。 因此矩阵 dm 必须是方阵。 更多... | |
virtual void | add (const T a, const SparseMatrix< T > &X)=0 |
计算 ![]() a 为标量,X 为矩阵。 更多... | |
virtual void | matrix_matrix_mult (SparseMatrix< T > &, SparseMatrix< T > &, bool) |
计算 Y = A*X,其中 X 为矩阵。 更多... | |
virtual void | add_sparse_matrix (const SparseMatrix< T > &, const std::map< numeric_index_type, numeric_index_type > &, const std::map< numeric_index_type, numeric_index_type > &, const T) |
将 scalar* spm 添加到此矩阵的行和列中: A(rows[i], cols[j]) += scalar * spm(i,j) 更多... | |
virtual T | operator() (const numeric_index_type i, const numeric_index_type j) const =0 |
virtual Real | l1_norm () const =0 |
获取矩阵的 ![]() ![]() | |
virtual Real | linfty_norm () const =0 |
获取矩阵的 ![]() | |
virtual bool | closed () const =0 |
void | print (std::ostream &os=libMesh::out, const bool sparse=false) const |
将矩阵的内容以统一的样式打印到屏幕上,而不考虑正在使用的矩阵/求解器包。 更多... | |
virtual void | print_personal (std::ostream &os=libMesh::out) const =0 |
以个性化的风格(如果可用)将矩阵的内容打印到屏幕上。 更多... | |
virtual void | print_matlab (const std::string &="") const |
以 Matlab 的稀疏矩阵格式打印矩阵的内容。可选择将矩阵打印到名为 name 的文件中。 如果未指定 name ,则将其转储到屏幕上。 更多... | |
virtual void | create_submatrix (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) const |
此函数创建一个名为 "submatrix" 的矩阵,其定义由 "rows" 和 "cols" 条目中的行和列索引给定。 目前,此操作仅对 PetscMatrix 类型定义。 注意:rows 和 cols 向量需要排序; 如果 rows 和 cols 向量未排序,则使用下面的 nosort 版本; rows 和 cols 仅包含由此处理器拥有的索引。 更多... | |
virtual void | create_submatrix_nosort (SparseMatrix< T > &, const std::vector< numeric_index_type > &, const std::vector< numeric_index_type > &) const |
与上述函数类似,此函数创建由 rows 和 cols 向量中的索引定义的 submatrix。 注意:rows 和 cols 可以是无序的; 如果索引已排序,则对于效率更高的操作,请使用上面的函数; rows 和 cols 可以包含由其他处理器拥有的索引。 更多... | |
virtual void | reinit_submatrix (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) const |
此函数与上述函数类似,但允许您重用 "submatrix" 的现有稀疏性模式,而不是再次分配它。 如果经常提取相同大小的子矩阵,这应该更有效。 更多... | |
void | vector_mult (NumericVector< T > &dest, const NumericVector< T > &arg) const |
将矩阵乘以 NumericVector arg 并将结果存储在 NumericVector dest 中。 更多... | |
void | vector_mult_add (NumericVector< T > &dest, const NumericVector< T > &arg) const |
将矩阵乘以 NumericVector arg ,并将结果添加到 NumericVector dest 中。 更多... | |
virtual void | get_diagonal (NumericVector< T > &dest) const =0 |
复制矩阵的对角线部分到 dest。 更多... | |
virtual void | get_transpose (SparseMatrix< T > &dest) const =0 |
将矩阵的转置复制到 dest 中,dest 可能是 *this。 更多... | |
virtual void | get_row (numeric_index_type, std::vector< numeric_index_type > &, std::vector< T > &) const |
从矩阵获取一行。 更多... | |
template<> | |
void | print (std::ostream &os, const bool sparse) const |
静态 Public 成员函数 | |
static std::unique_ptr < SparseMatrix< T > > | build (const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package(), const MatrixBuildType matrix_build_type=MatrixBuildType::AUTOMATIC) |
使用由 solver_package 指定的线性求解器包构建一个 SparseMatrix<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 成员函数 | |
virtual void | _get_submatrix (SparseMatrix< T > &, const std::vector< numeric_index_type > &, const std::vector< numeric_index_type > &, const bool) const |
创建子矩阵和 reinit_submatrix 例程的受保护实现。 更多... | |
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 属性 | |
DofMap const * | _dof_map |
与此对象关联的 DofMap 对象。可以查询其在处理器上的自由度计数。 更多... | |
SparsityPattern::Build const * | _sp |
与此对象关联的 sparsity pattern。在需要时, 应查询其入口计数(或使用 need_full_sparsity_pattern,模式)。 更多... | |
bool | _is_initialized |
标志,指示矩阵是否已初始化。 更多... | |
静态 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. 更多... | |
友元 | |
std::ostream & | operator<< (std::ostream &os, const SparseMatrix< T > &m) |
与上述打印方法相同,但允许您以标准语法将其打印到流中。 更多... | |
这是一个通用的稀疏矩阵类。该类包含了必须在派生类中覆盖的纯虚拟成员。 使用一个公共的基类允许从不同的求解器包中以不同的格式统一访问稀疏矩阵。
|
protectedinherited |
Data structure to log the information.
The log is identified by the class name.
在文件 reference_counter.h 第 119 行定义.
|
explicit |
构造函数;初始化矩阵为空,没有任何结构,即矩阵无法使用。
因此,该构造函数仅对作为类成员的矩阵有用。所有其他矩阵应在数据流的某个点创建, 在那里所有必要的信息都是可用的。
在使用之前,您必须使用 init
(...) 初始化矩阵。
comm | 通信器对象,指定通信环境。 |
在文件 sparse_matrix.C 第 48 行定义.
|
default |
五个特殊函数对于这个类可以默认,因为它本身不管理任何内存。
|
default |
|
virtualdefault |
|
inlineprotectedvirtual |
创建子矩阵和 reinit_submatrix 例程的受保护实现。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 483 行定义.
参考自 libMesh::SparseMatrix< T >::create_submatrix() , 以及 libMesh::SparseMatrix< T >::reinit_submatrix().
|
pure virtual |
将 value
添加到元素 (i,j) .
如果条目不存在,则抛出错误。 可以将零值“添加”到不存在的条目中。
i | 矩阵行索引 |
j | 矩阵列索引 |
value | 元素的值 |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::EigenSparseMatrix< T > , 以及 libMesh::LumpedMassMatrix< T > 内被实现.
|
pure virtual |
计算 ,其中
a
为标量,X
为矩阵。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::EigenSparseMatrix< T > , 以及 libMesh::LumpedMassMatrix< T > 内被实现.
|
virtual |
将完整矩阵 dm
添加到 SparseMatrix。这对于在装配时添加元素矩阵很有用。 矩阵被假定为块矩阵,brow、
bcol
对应于*块*行和列索引。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.C 第 77 行定义.
参考 libMesh::DenseMatrixBase< T >::m() , 以及 libMesh::DenseMatrixBase< T >::n().
参考自 libMesh::SparseMatrix< T >::add_block_matrix().
|
inlinevirtual |
与 add_block_matrix()
相同,但假定行和列映射相同。 因此矩阵 dm
必须是方阵。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 278 行定义.
参考 libMesh::SparseMatrix< T >::add_block_matrix().
|
pure virtual |
将完整矩阵 dm
添加到 SparseMatrix。这对于在装配时添加元素矩阵很有用。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
与 add_matrix
相同,但假定行和列映射相同。因此矩阵 dm
必须是方阵。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlinevirtual |
将 scalar*
spm
添加到此矩阵的行和列中: A(rows[i], cols[j]) += scalar * spm(i,j)
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 297 行定义.
void libMesh::SparseMatrix< T >::attach_dof_map | ( | const DofMap & | dof_map | ) |
设置要使用的 DofMap
的指针。如果不使用单独的稀疏性模式, 则使用来自 DofMap 的模式。
dof_map
的生命周期必须超过 this
的生命周期。
在文件 sparse_matrix.C 第 58 行定义.
参考 libMesh::DofMap::get_sparsity_pattern().
参考自 libMesh::DofMap::update_sparsity_pattern().
void libMesh::SparseMatrix< T >::attach_sparsity_pattern | ( | const SparsityPattern::Build & | sp | ) |
设置要使用的稀疏性模式的指针。在矩阵需要比系统中的大(或更小以提高效率)的模式, 或者在 DofMap 未计算系统稀疏性模式的情况下使用。
sp
的生命周期必须超过 this
的生命周期。
在文件 sparse_matrix.C 第 68 行定义.
参考自 libMesh::DofMap::update_sparsity_pattern().
|
static |
使用由 solver_package
指定的线性求解器包构建一个 SparseMatrix<T>。
在文件 sparse_matrix.C 第 151 行定义.
参考 libMesh::EIGEN_SOLVERS, libMesh::LASPACK_SOLVERS, libMesh::libmesh_ignore() , 以及 libMesh::TRILINOS_SOLVERS.
参考自 libMesh::DofMap::process_mesh_constraint_rows().
|
pure virtual |
恢复 SparseMatrix<T>
到原始状态。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
参考自 libMesh::PetscMatrix< T >::_get_submatrix() , 以及 libMesh::PetscMatrix< T >::get_transpose().
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::EigenSparseMatrix< T > , 以及 libMesh::LumpedMassMatrix< T > 内被实现.
|
pure virtual |
调用 SparseMatrix 的内部装配例程,确保值在处理器之间保持一致。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
true。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlinevirtual |
此函数创建一个名为 "submatrix" 的矩阵,其定义由 "rows" 和 "cols" 条目中的行和列索引给定。 目前,此操作仅对 PetscMatrix 类型定义。 注意:rows
和 cols
向量需要排序; 如果 rows
和 cols
向量未排序,则使用下面的 nosort 版本; rows
和 cols
仅包含由此处理器拥有的索引。
在文件 sparse_matrix.h 第 388 行定义.
参考 libMesh::SparseMatrix< T >::_get_submatrix().
|
inlinevirtual |
与上述函数类似,此函数创建由 rows
和 cols
向量中的索引定义的 submatrix。
注意:rows
和 cols
可以是无序的; 如果索引已排序,则对于效率更高的操作,请使用上面的函数; rows
和 cols
可以包含由其他处理器拥有的索引。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 404 行定义.
|
staticinherited |
在文件 reference_counter.C 第 100 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter.
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
在文件 reference_counter.C 第 94 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter.
|
inlinevirtual |
对于 PETSc 矩阵,此函数类似于 close,但不收缩内存。 当我们希望在 ADD_VALUES 和 INSERT_VALUES 之间切换时,这很有用。 在使用矩阵之前应该调用 close。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 202 行定义.
参考 libMesh::SparseMatrix< T >::close().
|
pure virtual |
复制矩阵的对角线部分到 dest。
dest | 存储对角线的目标 NumericVector。 |
dest
中。 在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
参考自 libMesh::LumpedMassMatrix< T >::add() , 以及 libMesh::DiagonalMatrix< T >::add().
|
staticinherited |
Gets a string containing the reference information.
在文件 reference_counter.C 第 47 行定义.
参考 libMesh::ReferenceCounter::_counts.
参考自 libMesh::ReferenceCounter::print_info().
|
inlinevirtual |
从矩阵获取一行。
i | 要获取的矩阵行 |
indices | 将填充为与(可能)非零值对应的列索引的容器 |
values | 包含列值的容器 |
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 469 行定义.
|
pure virtual |
将矩阵的转置复制到 dest
中,dest
可能是 *this。
dest | 存储转置的目标 SparseMatrix。 |
dest
中。 在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlineprotectednoexceptinherited |
Increments the construction counter.
Should be called in the constructor of any derived class that will be reference counted.
在文件 reference_counter.h 第 183 行定义.
参考 libMesh::err.
参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::ReferenceCountedObject().
|
inlineprotectednoexceptinherited |
Increments the destruction counter.
Should be called in the destructor of any derived class that will be reference counted.
在文件 reference_counter.h 第 207 行定义.
参考 libMesh::err.
参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::~ReferenceCountedObject().
|
pure virtual |
使用指定的大小初始化 SparseMatrix。
m | 全局行数。 |
n | 全局列数。 |
m_l | 本地行数。 |
n_l | 本地列数。 |
nnz | 每行的对角线非零元素数(默认为 30)。 |
noz | 每行的非对角线非零元素数(默认为 10)。 |
blocksize | 用于具有多个相同类型变量的系统的稠密耦合块的可选值。 |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::DiagonalMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
使用由 dof_map
计算的稀疏性结构初始化此矩阵。
type | 矩阵的串行/并行/幽灵类型 |
dof_map
计算的稀疏性结构初始化矩阵。 在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::DiagonalMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlinevirtual |
true,否则为
false。
在文件 sparse_matrix.h 第 102 行定义.
参考 libMesh::SparseMatrix< T >::_is_initialized.
参考自 libMesh::PetscMatrix< T >::_get_submatrix().
|
pure virtual |
获取矩阵的 -范数,即最大列和:
这是与向量的 -范数兼容的自然矩阵范数,即
。 (参见 Haemmerlin-Hoffmann:Numerische Mathematik)
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
获取矩阵的 -范数,即最大行和:
这是与向量的 -范数兼容的自然矩阵范数,即
。 (参见 Haemmerlin-Hoffmann:Numerische Mathematik)
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlinevirtual |
获取此进程拥有的行数。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 212 行定义.
参考 libMesh::SparseMatrix< T >::row_start() , 以及 libMesh::SparseMatrix< T >::row_stop().
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
参考自 libMesh::EigenSparseMatrix< T >::add(), libMesh::LaspackMatrix< T >::add(), libMesh::EpetraMatrix< T >::add(), libMesh::PetscMatrix< T >::add(), libMesh::PetscMatrix< T >::add_sparse_matrix() , 以及 libMesh::PetscMatrix< T >::matrix_matrix_mult().
|
inlinevirtual |
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
参考自 libMesh::EigenSparseMatrix< T >::add(), libMesh::LaspackMatrix< T >::add(), libMesh::EpetraMatrix< T >::add(), libMesh::PetscMatrix< T >::add() , 以及 libMesh::PetscMatrix< T >::add_sparse_matrix().
|
inlinestaticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
在文件 reference_counter.h 第 85 行定义.
参考 libMesh::ReferenceCounter::_n_objects.
参考自 libMesh::LibMeshInit::~LibMeshInit().
|
inlinevirtual |
true。
这对于 LaspackMatrix
是 true,但对于 PetscMatrix
是 false。 在不需要完整图形的情况下,我们可以有效地近似它以提供对稀疏矩阵所需大小的良好估计。
被 libMesh::EpetraMatrix< T > , 以及 libMesh::LaspackMatrix< T > 重载.
在文件 sparse_matrix.h 第 126 行定义.
参考自 libMesh::DofMap::attach_matrix() , 以及 libMesh::DofMap::update_sparsity_pattern().
|
pure virtual |
(i,j) 的副本。i | 行索引。 |
j | 列索引。 |
(i,j) 的矩阵条目的副本。 在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
default |
|
default |
void libMesh::SparseMatrix< Complex >::print | ( | std::ostream & | os, |
const bool | sparse | ||
) | const |
在文件 sparse_matrix.C 第 117 行定义.
参考 std::imag() , 以及 std::real().
void libMesh::SparseMatrix< T >::print | ( | std::ostream & | os = libMesh::out , |
const bool | sparse = false |
||
) | const |
将矩阵的内容以统一的样式打印到屏幕上,而不考虑正在使用的矩阵/求解器包。
在文件 sparse_matrix.C 第 225 行定义.
参考自 libMesh::EigenSparseMatrix< T >::print_personal() , 以及 libMesh::LaspackMatrix< T >::print_personal().
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
在文件 reference_counter.C 第 81 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter , 以及 libMesh::ReferenceCounter::get_info().
参考自 libMesh::LibMeshInit::~LibMeshInit().
|
inlinevirtual |
以 Matlab 的稀疏矩阵格式打印矩阵的内容。可选择将矩阵打印到名为 name
的文件中。 如果未指定 name
,则将其转储到屏幕上。
被 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.h 第 376 行定义.
|
pure virtual |
以个性化的风格(如果可用)将矩阵的内容打印到屏幕上。
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
inlinevirtual |
此函数与上述函数类似,但允许您重用 "submatrix" 的现有稀疏性模式,而不是再次分配它。 如果经常提取相同大小的子矩阵,这应该更有效。
在文件 sparse_matrix.h 第 415 行定义.
参考 libMesh::SparseMatrix< T >::_get_submatrix().
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T > , 以及 libMesh::EigenSparseMatrix< T > 内被实现.
|
pure virtual |
设置元素 (i,j) 为
value
.
如果条目不存在,则抛出错误。 可以将零值“存储”在不存在的字段中。
i | 矩阵行索引 |
j | 矩阵列索引 |
value | 元素的值 |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::EigenSparseMatrix< T > , 以及 libMesh::LumpedMassMatrix< T > 内被实现.
|
inlinevirtual |
更新矩阵的稀疏性模式。当您的 SparseMatrix<T>
实现不需要此数据时, 只需不覆盖此方法。
被 libMesh::EpetraMatrix< T > , 以及 libMesh::LaspackMatrix< T > 重载.
在文件 sparse_matrix.h 第 133 行定义.
void libMesh::SparseMatrix< T >::vector_mult | ( | NumericVector< T > & | dest, |
const NumericVector< T > & | arg | ||
) | const |
将矩阵乘以 NumericVector arg
并将结果存储在 NumericVector dest
中。
dest | 存储结果的目标 NumericVector。 |
arg | 乘法的源 NumericVector。 |
arg
并将结果存储在 dest
中。 在文件 sparse_matrix.C 第 195 行定义.
参考 libMesh::NumericVector< T >::zero().
void libMesh::SparseMatrix< T >::vector_mult_add | ( | NumericVector< T > & | dest, |
const NumericVector< T > & | arg | ||
) | const |
将矩阵乘以 NumericVector arg
,并将结果添加到 NumericVector dest
中。
在文件 sparse_matrix.C 第 205 行定义.
|
pure virtual |
|
pure virtual |
在 libMesh::PetscMatrix< T >, libMesh::EpetraMatrix< T >, libMesh::DiagonalMatrix< T >, libMesh::LaspackMatrix< T >, libMesh::EigenSparseMatrix< T > , 以及 libMesh::LumpedMassMatrix< T > 内被实现.
|
virtual |
将所有行条目设置为 0,然后将 diag_value
放在对角线条目。
被 libMesh::DiagonalMatrix< T > , 以及 libMesh::PetscMatrix< T > 重载.
在文件 sparse_matrix.C 第 216 行定义.
|
friend |
与上述打印方法相同,但允许您以标准语法将其打印到流中。
这种方法似乎是“首选”技术,参见 http://www.parashift.com/c++-faq-lite/template-friends.html
|
staticprotectedinherited |
Actually holds the data.
在文件 reference_counter.h 第 124 行定义.
|
protected |
与此对象关联的 DofMap
对象。可以查询其在处理器上的自由度计数。
在文件 sparse_matrix.h 第 494 行定义.
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
在文件 reference_counter.h 第 143 行定义.
参考自 libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info() , 以及 libMesh::ReferenceCounter::print_info().
|
protected |
标志,指示矩阵是否已初始化。
在文件 sparse_matrix.h 第 505 行定义.
参考自 libMesh::PetscMatrix< T >::_get_submatrix(), libMesh::PetscMatrix< T >::create_submatrix_nosort(), libMesh::EpetraMatrix< T >::EpetraMatrix(), libMesh::PetscMatrix< T >::get_transpose(), libMesh::SparseMatrix< T >::initialized() , 以及 libMesh::PetscMatrix< T >::PetscMatrix().
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
在文件 reference_counter.h 第 137 行定义.
|
staticprotectedinherited |
The number of objects.
Print the reference count information when the number returns to 0.
在文件 reference_counter.h 第 132 行定义.
参考自 libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter() , 以及 libMesh::ReferenceCounter::~ReferenceCounter().
|
protected |
与此对象关联的 sparsity
pattern。在需要时, 应查询其入口计数(或使用 need_full_sparsity_pattern,模式)。
在文件 sparse_matrix.h 第 500 行定义.