定义用于有限元计算的稠密向量类。该类基本上是为了补充 DenseMatrix
类而设计的。 它相对于 std::vector
具有额外的功能,使其在有限元中特别有用,特别是对于方程组。 所有重写的虚拟函数都在 dense_vector_base.h 中有文档说明。
更多...
#include <dof_map.h>
Public 成员函数 | |
DenseVector (const unsigned int n=0) | |
构造函数。创建一个维数为 n 的稠密向量。 更多... | |
DenseVector (const unsigned int n, const T &val) | |
构造函数。创建一个维数为 n,所有条目值为 val 的稠密向量。 更多... | |
template<typename T2 > | |
DenseVector (const DenseVector< T2 > &other_vector) | |
复制构造函数。 更多... | |
template<typename T2 > | |
DenseVector (const std::vector< T2 > &other_vector) | |
从 std::vector 复制构造函数。 更多... | |
template<typename T2 > | |
DenseVector (std::initializer_list< T2 > init_list) | |
初始值列表构造函数。 更多... | |
DenseVector (DenseVector &&)=default | |
这五个特殊函数可以在该类中默认实现,因为它本身不管理任何内存。 更多... | |
DenseVector (const DenseVector &)=default | |
DenseVector & | operator= (const DenseVector &)=default |
DenseVector & | operator= (DenseVector &&)=default |
virtual | ~DenseVector ()=default |
virtual unsigned int | size () const overridefinal |
virtual bool | empty () const overridefinal |
virtual void | zero () overridefinal |
将向量中的每个元素设置为0。由于派生类中的存储方法可能不同,需要将其声明为纯虚函数。 更多... | |
const T & | operator() (const unsigned int i) const |
T & | operator() (const unsigned int i) |
virtual T | el (const unsigned int i) const overridefinal |
virtual T & | el (const unsigned int i) overridefinal |
template<typename T2 > | |
DenseVector< T > & | operator= (const DenseVector< T2 > &other_vector) |
赋值运算符。 更多... | |
void | swap (DenseVector< T > &other_vector) |
STL 风格的交换方法。 更多... | |
void | resize (const unsigned int n) |
调整向量的大小。将所有元素设置为0。 更多... | |
template<typename T2 > | |
void | append (const DenseVector< T2 > &other_vector) |
将其他向量的额外条目附加到(调整大小但不改变)向量。 更多... | |
void | scale (const T factor) |
将向量中的每个元素乘以 factor。 更多... | |
DenseVector< T > & | operator*= (const T factor) |
将向量中的每个元素乘以 factor。 更多... | |
template<typename T2 , typename T3 > | |
boostcopy::enable_if_c < ScalarTraits< T2 >::value, void >::type | add (const T2 factor, const DenseVector< T3 > &vec) |
将 factor 乘以 vec 添加到该向量。这应该仅在 T += T2 * T3 是有效的 C++ 且 T2 是标量的情况下起作用。 返回类型是 void。 更多... | |
template<typename T2 > | |
CompareTypes< T, T2 >::supertype | dot (const DenseVector< T2 > &vec) const |
template<typename T2 > | |
CompareTypes< T, T2 >::supertype | indefinite_dot (const DenseVector< T2 > &vec) const |
template<typename T2 > | |
bool | operator== (const DenseVector< T2 > &vec) const |
template<typename T2 > | |
bool | operator!= (const DenseVector< T2 > &vec) const |
template<typename T2 > | |
DenseVector< T > & | operator+= (const DenseVector< T2 > &vec) |
将 vec 添加到该向量。 更多... | |
template<typename T2 > | |
DenseVector< T > & | operator-= (const DenseVector< T2 > &vec) |
从该向量中减去 vec。 更多... | |
Real | min () const |
Real | max () const |
Real | l1_norm () const |
Real | l2_norm () const |
Real | linfty_norm () const |
void | get_principal_subvector (unsigned int sub_n, DenseVector< T > &dest) const |
将大小为 sub_n(即前 sub_n 个条目)的主子向量放入 dest。 更多... | |
std::vector< T > & | get_values () |
const std::vector< T > & | get_values () const |
void | print (std::ostream &os) const |
将向量漂亮地打印到 stdout。 更多... | |
void | print_scientific (std::ostream &os, unsigned precision=8) const |
以科学计数法在额外的小数位数下打印向量的条目。 更多... | |
Private 属性 | |
std::vector< T > | _val |
实际数据值,存储为一维数组。 更多... | |
定义用于有限元计算的稠密向量类。该类基本上是为了补充 DenseMatrix
类而设计的。 它相对于 std::vector
具有额外的功能,使其在有限元中特别有用,特别是对于方程组。 所有重写的虚拟函数都在 dense_vector_base.h 中有文档说明。
|
inlineexplicit |
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
default |
这五个特殊函数可以在该类中默认实现,因为它本身不管理任何内存。
|
default |
|
virtualdefault |
|
inline |
将 factor
乘以 vec
添加到该向量。这应该仅在 T += T2 * T3 是有效的 C++ 且 T2 是标量的情况下起作用。 返回类型是 void。
factor | 乘法因子。 |
vec | 与该向量相乘的向量。 |
在文件 dense_vector.h 第 485 行定义.
参考自 libMesh::DenseMatrix< T >::vector_mult_add().
|
inline |
将其他向量的额外条目附加到(调整大小但不改变)向量。
other_vector | 要附加的其他向量。 |
在文件 dense_vector.h 第 416 行定义.
|
inline |
vec
的点积。在复数值的情况下,使用 vec
的复共轭。
vec | 与 *this 相乘的向量。 |
在文件 dense_vector.h 第 500 行定义.
|
inlinefinaloverridevirtual |
|
inlinefinaloverridevirtual |
|
inlinefinaloverridevirtual |
true。
重载 libMesh::DenseVectorBase< T > .
在文件 dense_vector.h 第 116 行定义.
参考自 libMesh::NumericVector< T >::add_vector() , 以及 libMesh::NumericVector< T >::insert().
|
inline |
将大小为 sub_n(即前
sub_n
个条目)的主子向量放入 dest。
sub_n | 主子向量的大小。 |
dest | 存储主子向量的目标向量。 |
在文件 dense_vector.h 第 721 行定义.
|
inline |
注意:这应该谨慎使用(即不应更改向量的大小等),但用于与期望简单数组的低级 BLAS 例程进行交互时很有用。
在文件 dense_vector.h 第 298 行定义.
参考自 libMesh::DenseMatrix< T >::_evd_lapack(), libMesh::DenseMatrix< T >::_lu_back_substitute_lapack(), libMesh::DenseMatrix< T >::_matvec_blas() , 以及 libMesh::DenseMatrix< T >::_svd_solve_lapack().
|
inline |
|
inline |
vec
的点积。在复数值的情况下,不使用 vec
的复共轭。
vec | 与 *this 相乘的向量。 |
在文件 dense_vector.h 第 533 行定义.
|
inline |
在文件 dense_vector.h 第 650 行定义.
参考 std::abs() , 以及 libMesh::Real.
|
inline |
在文件 dense_vector.h 第 671 行定义.
参考 std::norm(), libMesh::TensorTools::norm_sq(), libMesh::Real , 以及 std::sqrt().
|
inline |
在文件 dense_vector.h 第 697 行定义.
参考 libMesh::TensorTools::norm_sq(), libMesh::Real , 以及 std::sqrt().
|
inline |
在文件 dense_vector.h 第 632 行定义.
参考 libMesh::libmesh_real() , 以及 libMesh::Real.
|
inline |
在文件 dense_vector.h 第 614 行定义.
参考 libMesh::libmesh_real() , 以及 libMesh::Real.
|
inline |
vec
与该向量不完全相等,则为 true,否则为
false。
vec | 与 *this 进行比较的向量。 |
在文件 dense_vector.h 第 566 行定义.
|
inline |
|
inline |
|
inline |
将向量中的每个元素乘以 factor。
factor | 缩放因子。 |
在文件 dense_vector.h 第 472 行定义.
|
inline |
将 vec
添加到该向量。
vec | 要添加的向量。 |
在文件 dense_vector.h 第 583 行定义.
|
inline |
从该向量中减去 vec。
vec | 要减去的向量。 |
在文件 dense_vector.h 第 599 行定义.
|
default |
|
default |
|
inline |
|
inline |
vec
与该向量完全相等,则为 true,否则为
false。
vec | 与 *this 进行比较的向量。 |
在文件 dense_vector.h 第 549 行定义.
|
inherited |
将向量漂亮地打印到 stdout。
os | 输出流。 |
在文件 dense_vector_base.C 第 51 行定义.
|
inherited |
以科学计数法在额外的小数位数下打印向量的条目。
os | 输出流。 |
precision | 小数点后的精度。 |
在文件 dense_vector_base.C 第 31 行定义.
|
inline |
调整向量的大小。将所有元素设置为0。
n | 新的向量大小。 |
在文件 dense_vector.h 第 404 行定义.
参考 libMesh::zero.
参考自 libMesh::DenseMatrix< T >::_cholesky_back_substitute(), libMesh::DenseMatrix< T >::_evd_lapack(), libMesh::DenseMatrix< T >::_lu_back_substitute(), libMesh::DenseMatrix< T >::_svd_lapack(), libMesh::DenseMatrix< T >::_svd_solve_lapack(), libMesh::DofMap::build_constraint_matrix_and_vector(), libMesh::CompositeFEMFunction< Output >::operator()(), libMesh::CompositeFunction< Output >::operator()(), libMesh::DenseMatrix< T >::vector_mult(), libMesh::DenseMatrix< T >::vector_mult_add() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
|
inlinefinaloverridevirtual |
实现了 libMesh::DenseVectorBase< T >.
在文件 dense_vector.h 第 111 行定义.
参考自 libMesh::DenseMatrix< T >::_lu_back_substitute(), libMesh::DenseMatrix< T >::_matvec_blas(), libMesh::DenseMatrix< T >::_svd_lapack(), libMesh::DenseMatrix< T >::_svd_solve_lapack(), libMesh::NumericVector< T >::add_vector(), libMesh::DofMap::constrain_element_dyad_matrix(), libMesh::DofMap::constrain_element_matrix_and_vector(), libMesh::DofMap::constrain_element_residual(), libMesh::DofMap::constrain_element_vector(), 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::NumericVector< T >::insert(), libMesh::ConstFunction< Output >::operator()(), libMesh::CompositeFEMFunction< Output >::operator()(), libMesh::ParsedFEMFunction< Output >::operator()(), libMesh::CompositeFunction< Output >::operator()(), libMesh::DenseMatrix< T >::outer_product(), MetaPhysicL::RawType< libMesh::DenseVector< T > >::value(), libMesh::DenseMatrix< T >::vector_mult(), libMesh::DenseMatrix< T >::vector_mult_add() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
|
inlinefinaloverridevirtual |
将向量中的每个元素设置为0。由于派生类中的存储方法可能不同,需要将其声明为纯虚函数。
实现了 libMesh::DenseVectorBase< T >.
在文件 dense_vector.h 第 428 行定义.
参考自 libMesh::CompositeFEMFunction< Output >::operator()() , 以及 libMesh::CompositeFunction< Output >::operator()().
|
private |