为有限元类型的计算定义了一个抽象的稠密矩阵基类。例如 DenseSubMatrices 可以从这个类派生出来。 更多...
#include <dense_matrix_base.h>
Public 成员函数 | |
DenseMatrixBase (DenseMatrixBase &&)=default | |
这五个特殊函数可以为此类默认。因为它不管理任何内存本身。 更多... | |
DenseMatrixBase (const DenseMatrixBase &)=default | |
DenseMatrixBase & | operator= (const DenseMatrixBase &)=default |
DenseMatrixBase & | operator= (DenseMatrixBase &&)=default |
virtual | ~DenseMatrixBase ()=default |
virtual void | zero ()=0 |
将矩阵的每个元素设置为 0。必须重新定义零矩阵的含义,因为它取决于值的存储方式。 更多... | |
virtual T | el (const unsigned int i, const unsigned int j) const =0 |
返回矩阵的 (i,j) 元素。 由于内部数据表示可能不同,必须重新定义此函数。 更多... | |
virtual T & | el (const unsigned int i, const unsigned int j)=0 |
返回矩阵的 (i,j) 元素的可写引用。 由于内部数据表示可能不同,必须重新定义此函数。 更多... | |
virtual void | left_multiply (const DenseMatrixBase< T > &M2)=0 |
执行操作: (*this) <- M2 * (*this)。 更多... | |
virtual void | right_multiply (const DenseMatrixBase< T > &M3)=0 |
执行操作: (*this) <- (*this) * M3。 更多... | |
unsigned int | m () const |
返回矩阵的行维度。 更多... | |
unsigned int | n () const |
返回矩阵的列维度。 更多... | |
void | print (std::ostream &os=libMesh::out) const |
漂亮地打印矩阵,默认为 libMesh::out。 更多... | |
void | print_scientific (std::ostream &os, unsigned precision=8) const |
以科学计数法格式打印矩阵。 更多... | |
template<typename T2 , typename T3 > | |
boostcopy::enable_if_c < ScalarTraits< T2 >::value, void >::type | add (const T2 factor, const DenseMatrixBase< T3 > &mat) |
将 factor 添加到矩阵的每个元素。 这应该仅在 T += T2 * T3 是有效的 C++,且 T2 是标量的情况下工作。返回类型是 void。 更多... | |
DenseVector< T > | diagonal () const |
返回矩阵的对角线。 更多... | |
Protected 成员函数 | |
DenseMatrixBase (const unsigned int new_m=0, const unsigned int new_n=0) | |
构造函数。创建一个维度为 m 乘 n 的稠密矩阵。 Protected,以便用户无法创建一个实例。 更多... | |
void | condense (const unsigned int i, const unsigned int j, const T val, DenseVectorBase< T > &rhs) |
将矩阵的 (i,j) 条目压缩出来,强制它取值为 val。这对于在数值模拟中应用边界条件很有用。 保留矩阵的对称性。 更多... | |
静态 Protected 成员函数 | |
static void | multiply (DenseMatrixBase< T > &M1, const DenseMatrixBase< T > &M2, const DenseMatrixBase< T > &M3) |
辅助函数 - 执行计算 M1 = M2 * M3 其中: M1 = (m x n) M2 = (m x p) M3 = (p x n) 更多... | |
Protected 属性 | |
unsigned int | _m |
行维度。 更多... | |
unsigned int | _n |
列维度。 更多... | |
友元 | |
std::ostream & | operator<< (std::ostream &os, const DenseMatrixBase< T > &m) |
格式化打印,允许执行 DenseMatrix K; libMesh::out << K << std::endl;。 更多... | |
为有限元类型的计算定义了一个抽象的稠密矩阵基类。例如 DenseSubMatrices 可以从这个类派生出来。
在文件 dense_matrix_base.h 第 45 行定义.
|
inlineprotected |
构造函数。创建一个维度为 m
乘 n
的稠密矩阵。 Protected,以便用户无法创建一个实例。
new_m | 矩阵的行维度。 |
new_n | 矩阵的列维度。 |
在文件 dense_matrix_base.h 第 56 行定义.
|
default |
这五个特殊函数可以为此类默认。因为它不管理任何内存本身。
|
default |
|
virtualdefault |
|
inline |
将 factor
添加到矩阵的每个元素。 这应该仅在 T += T2 * T3 是有效的 C++,且 T2 是标量的情况下工作。返回类型是 void。
factor | 要添加的标量因子。 |
mat | 乘法的右操作数矩阵。 |
在文件 dense_matrix_base.h 第 217 行定义.
参考 libMesh::DenseMatrixBase< T >::el(), libMesh::DenseMatrixBase< T >::m() , 以及 libMesh::DenseMatrixBase< T >::n().
|
protected |
将矩阵的 (i,j) 条目压缩出来,强制它取值为
val。这对于在数值模拟中应用边界条件很有用。
保留矩阵的对称性。
将矩阵列约减为已知值。
i | 要压缩的行索引。 |
j | 要压缩的列索引。 |
val | 压缩出的值。 |
rhs | 与压缩操作相关联的右侧向量。 |
T | 矩阵元素类型。 |
iv | 列索引。 |
jv | 列索引。 |
val | 已知值。 |
rhs | 包含右侧向量的 DenseVectorBase 对象。 |
在文件 dense_matrix_base_impl.h 第 94 行定义.
参考 libMesh::DenseVectorBase< T >::el() , 以及 libMesh::DenseVectorBase< T >::size().
参考自 libMesh::DenseMatrix< T >::condense().
DenseVector< T > libMesh::DenseMatrixBase< T >::diagonal | ( | ) | const |
返回矩阵的对角线。
返回稠密矩阵的对角线。
T | 矩阵元素类型。 |
在文件 dense_matrix_base_impl.h 第 43 行定义.
参考自 libMesh::DiagonalMatrix< T >::add_matrix().
|
pure virtual |
返回矩阵的 (i,j) 元素。 由于内部数据表示可能不同,必须重新定义此函数。
i | 行索引。 |
j | 列索引。 |
在 libMesh::DenseMatrix< T > , 以及 libMesh::DenseSubMatrix< T > 内被实现.
参考自 libMesh::DenseMatrixBase< T >::add() , 以及 libMesh::DenseMatrixBase< T >::multiply().
|
pure virtual |
返回矩阵的 (i,j) 元素的可写引用。 由于内部数据表示可能不同,必须重新定义此函数。
i | 行索引。 |
j | 列索引。 |
在 libMesh::DenseMatrix< T > , 以及 libMesh::DenseSubMatrix< T > 内被实现.
|
pure virtual |
执行操作: (*this) <- M2 * (*this)。
M2 | 乘法的右操作数矩阵。 |
在 libMesh::DenseMatrix< T > , 以及 libMesh::DenseSubMatrix< T > 内被实现.
|
inline |
返回矩阵的行维度。
在文件 dense_matrix_base.h 第 115 行定义.
参考 libMesh::DenseMatrixBase< T >::_m.
参考自 libMesh::DenseMatrix< T >::_left_multiply_transpose(), libMesh::DenseMatrix< T >::_multiply_blas(), libMesh::DenseMatrix< T >::_right_multiply_transpose(), libMesh::DenseMatrix< T >::_svd_solve_lapack(), libMesh::DenseMatrixBase< T >::add(), libMesh::SparseMatrix< T >::add_block_matrix(), libMesh::PetscMatrix< T >::add_block_matrix(), libMesh::EigenSparseMatrix< T >::add_matrix(), libMesh::DiagonalMatrix< T >::add_matrix(), libMesh::LaspackMatrix< T >::add_matrix(), libMesh::EpetraMatrix< T >::add_matrix(), libMesh::PetscMatrix< T >::add_matrix(), libMesh::DofMap::build_constraint_matrix(), libMesh::DofMap::build_constraint_matrix_and_vector(), libMesh::DofMap::constrain_element_dyad_matrix(), libMesh::DofMap::constrain_element_matrix(), libMesh::DofMap::constrain_element_matrix_and_vector(), libMesh::DofMap::constrain_element_vector(), libMesh::DofMap::extract_local_vector(), libMesh::DenseMatrix< T >::get_transpose(), libMesh::DofMap::heterogeneously_constrain_element_jacobian_and_residual(), libMesh::DofMap::heterogeneously_constrain_element_matrix_and_vector(), libMesh::DofMap::heterogeneously_constrain_element_residual(), libMesh::DofMap::heterogeneously_constrain_element_vector(), libMesh::DenseMatrix< T >::left_multiply(), libMesh::DofMap::max_constraint_error(), libMesh::DenseMatrixBase< T >::multiply(), libMesh::DenseMatrix< T >::right_multiply() , 以及 MetaPhysicL::RawType< libMesh::DenseMatrix< T > >::value().
|
staticprotected |
辅助函数 - 执行计算 M1 = M2 * M3 其中: M1 = (m x n) M2 = (m x p) M3 = (p x n)
将两个矩阵相乘。
M1 | 乘法的结果矩阵。 |
M2 | 乘法的左操作数矩阵。 |
M3 | 乘法的右操作数矩阵。 |
T | 矩阵元素类型。 |
M1 | 存储结果的矩阵。 |
M2 | 第一个矩阵。 |
M3 | 第二个矩阵。 |
在文件 dense_matrix_base_impl.h 第 61 行定义.
参考 libMesh::DenseMatrixBase< T >::el(), libMesh::DenseMatrixBase< T >::m() , 以及 libMesh::DenseMatrixBase< T >::n().
|
inline |
返回矩阵的列维度。
在文件 dense_matrix_base.h 第 122 行定义.
参考 libMesh::DenseMatrixBase< T >::_n.
参考自 libMesh::DenseMatrix< T >::_left_multiply_transpose(), libMesh::DenseMatrix< T >::_multiply_blas(), libMesh::DenseMatrix< T >::_right_multiply_transpose(), libMesh::DenseMatrix< T >::_svd_solve_lapack(), libMesh::DenseMatrixBase< T >::add(), libMesh::SparseMatrix< T >::add_block_matrix(), libMesh::PetscMatrix< T >::add_block_matrix(), libMesh::EigenSparseMatrix< T >::add_matrix(), libMesh::DiagonalMatrix< T >::add_matrix(), libMesh::LaspackMatrix< T >::add_matrix(), libMesh::EpetraMatrix< T >::add_matrix(), libMesh::PetscMatrix< T >::add_matrix(), libMesh::DofMap::build_constraint_matrix(), libMesh::DofMap::build_constraint_matrix_and_vector(), libMesh::DofMap::constrain_element_dyad_matrix(), libMesh::DofMap::constrain_element_matrix(), libMesh::DofMap::constrain_element_matrix_and_vector(), libMesh::DofMap::constrain_element_residual(), libMesh::DofMap::constrain_element_vector(), libMesh::DofMap::extract_local_vector(), libMesh::DenseMatrix< T >::get_transpose(), libMesh::DofMap::heterogeneously_constrain_element_jacobian_and_residual(), libMesh::DofMap::heterogeneously_constrain_element_matrix_and_vector(), libMesh::DofMap::heterogeneously_constrain_element_residual(), libMesh::DofMap::heterogeneously_constrain_element_vector(), libMesh::DenseMatrix< T >::left_multiply(), libMesh::DofMap::max_constraint_error(), libMesh::DenseMatrixBase< T >::multiply(), libMesh::DenseMatrix< T >::right_multiply() , 以及 MetaPhysicL::RawType< libMesh::DenseMatrix< T > >::value().
|
default |
|
default |
void libMesh::DenseMatrixBase< T >::print | ( | std::ostream & | os = libMesh::out | ) | const |
漂亮地打印矩阵,默认为 libMesh::out。
以普通格式打印矩阵。
os | 输出流,默认为 libMesh::out。 |
T | 矩阵元素类型。 |
os | 输出流。 |
在文件 dense_matrix_base_impl.h 第 155 行定义.
void libMesh::DenseMatrixBase< T >::print_scientific | ( | std::ostream & | os, |
unsigned | precision = 8 |
||
) | const |
以科学计数法格式打印矩阵。
os | 输出流。 |
precision | 打印的精度。 |
T | 矩阵元素类型。 |
os | 输出流。 |
precision | 打印的精度。 |
在文件 dense_matrix_base_impl.h 第 126 行定义.
|
pure virtual |
执行操作: (*this) <- (*this) * M3。
M3 | 乘法的右操作数矩阵。 |
在 libMesh::DenseMatrix< T > , 以及 libMesh::DenseSubMatrix< T > 内被实现.
|
pure virtual |
将矩阵的每个元素设置为 0。必须重新定义零矩阵的含义,因为它取决于值的存储方式。
在 libMesh::DenseMatrix< T > , 以及 libMesh::DenseSubMatrix< T > 内被实现.
|
friend |
格式化打印,允许执行 DenseMatrix K; libMesh::out << K << std::endl;。
os | 输出流。 |
在文件 dense_matrix_base.h 第 136 行定义.
|
protected |
|
protected |