为有限元类型的计算定义密集子矩阵。 在将元素刚度矩阵相加到全局矩阵之前存储非常有用,特别是在存在方程组时。 所有重写的虚拟函数在 dense_matrix_base.h 中有文档。 更多...
#include <dense_submatrix.h>
Public 成员函数 | |
DenseSubMatrix (DenseMatrix< T > &new_parent, const unsigned int ioff=0, const unsigned int joff=0, const unsigned int m=0, const unsigned int n=0) | |
构造函数。创建矩阵 parent 的密集子矩阵。子矩阵的维度为 ![]() ![]() ![]() | |
DenseSubMatrix (DenseSubMatrix &&)=default | |
The 5 special functions can be defaulted for this class, as it does not manage any memory itself. 更多... | |
DenseSubMatrix (const DenseSubMatrix &)=default | |
DenseSubMatrix & | operator= (const DenseSubMatrix &)=default |
DenseSubMatrix & | operator= (DenseSubMatrix &&)=default |
virtual | ~DenseSubMatrix ()=default |
DenseMatrix< T > & | parent () |
返回对父矩阵的引用。 更多... | |
virtual void | zero () overridefinal |
覆盖基类的虚拟函数,将子矩阵的所有元素设置为零。 更多... | |
T | operator() (const unsigned int i, const unsigned int j) const |
返回子矩阵的 (i,j) 元素。 更多... | |
T & | operator() (const unsigned int i, const unsigned int j) |
返回子矩阵的 (i,j) 元素的可写引用。 更多... | |
virtual T | el (const unsigned int i, const unsigned int j) const overridefinal |
覆盖基类的虚函数,返回子矩阵的 (i,j) 元素。 更多... | |
virtual T & | el (const unsigned int i, const unsigned int j) overridefinal |
覆盖基类的虚函数,返回子矩阵的 (i,j) 元素的可写引用。 更多... | |
virtual void | left_multiply (const DenseMatrixBase< T > &M2) overridefinal |
覆盖基类的虚函数,左乘子矩阵。 更多... | |
virtual void | right_multiply (const DenseMatrixBase< T > &M3) overridefinal |
覆盖基类的虚函数,右乘子矩阵。 更多... | |
void | reposition (const unsigned int ioff, const unsigned int joff, const unsigned int new_m, const unsigned int new_n) |
修改子矩阵在父矩阵中的位置。 更多... | |
unsigned int | i_off () const |
返回子矩阵在父矩阵中的行偏移。 更多... | |
unsigned int | j_off () const |
返回子矩阵在父矩阵中的列偏移。 更多... | |
void | condense (const unsigned int i, const unsigned int j, const T val, DenseSubVector< T > &rhs) |
将矩阵的 (i,j) 元素压缩成值 val 对于施加边界条件在数值模拟中很有用。保持矩阵的对称性。 更多... | |
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 成员函数 | |
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 |
列维度。 更多... | |
Private 属性 | |
DenseMatrix< T > & | _parent_matrix |
包含该子矩阵的父矩阵。 引用父矩阵的对象,表示该子矩阵属于哪个父矩阵。 更多... | |
unsigned int | _i_off |
子矩阵在父矩阵中的行偏移。 更多... | |
unsigned int | _j_off |
子矩阵在父矩阵中的列偏移。 更多... | |
为有限元类型的计算定义密集子矩阵。 在将元素刚度矩阵相加到全局矩阵之前存储非常有用,特别是在存在方程组时。 所有重写的虚拟函数在 dense_matrix_base.h 中有文档。
在文件 dense_submatrix.h 第 43 行定义.
|
inline |
构造函数。创建矩阵 parent
的密集子矩阵。子矩阵的维度为 , 子矩阵的
元素位于父矩阵中的
位置。
new_parent | 父矩阵的引用。 |
ioff | 子矩阵在父矩阵中的行偏移。 |
joff | 子矩阵在父矩阵中的列偏移。 |
m | 子矩阵的行数。 |
n | 子矩阵的列数。 |
在文件 dense_submatrix.h 第 210 行定义.
参考 libMesh::DenseSubMatrix< T >::reposition().
|
default |
The 5 special functions can be defaulted for this class, as it does not manage any memory itself.
|
default |
|
virtualdefault |
|
inlineinherited |
将 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().
|
inline |
将矩阵的 (i,j) 元素压缩成值
val
对于施加边界条件在数值模拟中很有用。保持矩阵的对称性。
i | 元素的行索引。 |
j | 元素的列索引。 |
val | 要施加的值。 |
rhs | 子矩阵的右侧向量。 |
在文件 dense_submatrix.h 第 176 行定义.
参考 libMesh::DenseSubMatrix< T >::i_off(), libMesh::DenseSubMatrix< T >::j_off(), libMesh::DenseSubVector< T >::parent() , 以及 libMesh::DenseSubMatrix< T >::parent().
|
protectedinherited |
将矩阵的 (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().
|
inherited |
返回矩阵的对角线。
返回稠密矩阵的对角线。
T | 矩阵元素类型。 |
在文件 dense_matrix_base_impl.h 第 43 行定义.
参考自 libMesh::DiagonalMatrix< T >::add_matrix().
|
inlinefinaloverridevirtual |
覆盖基类的虚函数,返回子矩阵的 (i,j) 元素。
i | 元素的行索引。 |
j | 元素的列索引。 |
(i,j) 元素。 实现了 libMesh::DenseMatrixBase< T >.
在文件 dense_submatrix.h 第 112 行定义.
|
inlinefinaloverridevirtual |
覆盖基类的虚函数,返回子矩阵的 (i,j) 元素的可写引用。
i | 元素的行索引。 |
j | 元素的列索引。 |
(i,j) 元素的可写引用。 实现了 libMesh::DenseMatrixBase< T >.
在文件 dense_submatrix.h 第 123 行定义.
|
inline |
返回子矩阵在父矩阵中的行偏移。
在文件 dense_submatrix.h 第 159 行定义.
参考 libMesh::DenseSubMatrix< T >::_i_off.
参考自 libMesh::DenseSubMatrix< T >::condense().
|
inline |
返回子矩阵在父矩阵中的列偏移。
在文件 dense_submatrix.h 第 166 行定义.
参考 libMesh::DenseSubMatrix< T >::_j_off.
参考自 libMesh::DenseSubMatrix< T >::condense().
|
finaloverridevirtual |
覆盖基类的虚函数,左乘子矩阵。
M2 | 另一个矩阵,用于左乘子矩阵。 |
实现了 libMesh::DenseMatrixBase< T >.
在文件 dense_submatrix.C 第 31 行定义.
|
inlineinherited |
返回矩阵的行维度。
在文件 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().
|
staticprotectedinherited |
辅助函数 - 执行计算 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().
|
inlineinherited |
返回矩阵的列维度。
在文件 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().
|
inline |
返回子矩阵的 (i,j) 元素。
i | 元素的行索引。 |
j | 元素的列索引。 |
(i,j) 元素。 在文件 dense_submatrix.h 第 255 行定义.
|
inline |
返回子矩阵的 (i,j) 元素的可写引用。
i | 元素的行索引。 |
j | 元素的列索引。 |
(i,j) 元素的可写引用。 在文件 dense_submatrix.h 第 270 行定义.
|
default |
|
default |
|
inline |
返回对父矩阵的引用。
在文件 dense_submatrix.h 第 78 行定义.
参考 libMesh::DenseSubMatrix< T >::_parent_matrix.
参考自 libMesh::DenseSubMatrix< T >::condense().
|
inherited |
漂亮地打印矩阵,默认为 libMesh::out。
以普通格式打印矩阵。
os | 输出流,默认为 libMesh::out。 |
T | 矩阵元素类型。 |
os | 输出流。 |
在文件 dense_matrix_base_impl.h 第 155 行定义.
|
inherited |
以科学计数法格式打印矩阵。
os | 输出流。 |
precision | 打印的精度。 |
T | 矩阵元素类型。 |
os | 输出流。 |
precision | 打印的精度。 |
在文件 dense_matrix_base_impl.h 第 126 行定义.
|
inline |
修改子矩阵在父矩阵中的位置。
ioff | 子矩阵在父矩阵中的新行偏移。 |
joff | 子矩阵在父矩阵中的新列偏移。 |
new_m | 子矩阵的新行数。 |
new_n | 子矩阵的新列数。 |
在文件 dense_submatrix.h 第 224 行定义.
参考自 libMesh::DenseSubMatrix< T >::DenseSubMatrix().
|
finaloverridevirtual |
覆盖基类的虚函数,右乘子矩阵。
M3 | 另一个矩阵,用于右乘子矩阵。 |
实现了 libMesh::DenseMatrixBase< T >.
在文件 dense_submatrix.C 第 49 行定义.
|
inlinefinaloverridevirtual |
覆盖基类的虚拟函数,将子矩阵的所有元素设置为零。
实现了 libMesh::DenseMatrixBase< T >.
在文件 dense_submatrix.h 第 243 行定义.
|
private |
|
private |
|
protectedinherited |
|
protectedinherited |
|
private |
包含该子矩阵的父矩阵。 引用父矩阵的对象,表示该子矩阵属于哪个父矩阵。
在文件 dense_submatrix.h 第 192 行定义.