21 #include "libmesh/sum_shell_matrix.h"
22 #include "libmesh/numeric_vector.h"
23 #include "libmesh/int_range.h"
31 libmesh_assert(!matrices.empty());
34 for (
auto i : index_range(matrices))
35 libmesh_assert_equal_to (matrices[i]->m(), n_rows);
45 libmesh_assert(!matrices.empty());
48 for (
auto i : index_range(matrices))
49 libmesh_assert_equal_to (matrices[i]->n(), n_cols);
61 this->vector_mult_add(dest,arg);
70 for (
auto i : index_range(matrices))
71 matrices[i]->vector_mult_add(dest, arg);
79 std::unique_ptr<NumericVector<T>> a = dest.
zero_clone();
80 for (
auto i : index_range(matrices))
82 matrices[i]->get_diagonal(*a);
virtual std::unique_ptr< NumericVector< T > > zero_clone() const =0
返回一个智能指针,指向具有相同类型、大小和分区的此向量的副本,但所有条目都为零。
将任意数量的壳矩阵组合成一个单独的壳矩阵,通过将它们相加在一起的类。
virtual numeric_index_type n() const override
获取矩阵的列维度。
virtual void zero()=0
将所有条目设置为零。等同于 v = 0,但更明显且更快。
virtual numeric_index_type m() const override
获取矩阵的行维度。
virtual void vector_mult_add(NumericVector< T > &dest, const NumericVector< T > &arg) const override
将矩阵与参数arg相乘,然后将结果添加到dest中。
dof_id_type numeric_index_type
virtual void vector_mult(NumericVector< T > &dest, const NumericVector< T > &arg) const override
将矩阵与参数arg相乘,并将结果存储在dest中。
virtual void get_diagonal(NumericVector< T > &dest) const override
将矩阵的对角部分复制到dest中。