13#ifndef dealii_block_sparse_matrix_ez_h
14#define dealii_block_sparse_matrix_ez_h
32template <
typename Number>
53template <
typename Number>
77 const unsigned int block_cols);
146 template <
typename block_number>
155 template <
typename block_number,
typename nonblock_number>
164 template <
typename block_number,
typename nonblock_number>
173 template <
typename nonblock_number>
182 template <
typename block_number>
191 template <
typename block_number,
typename nonblock_number>
200 template <
typename block_number,
typename nonblock_number>
209 template <
typename nonblock_number>
220 template <
typename StreamType>
230template <
typename number>
231template <
typename block_number>
239template <
typename number>
240template <
typename block_number,
typename nonblock_number>
248template <
typename number>
249template <
typename block_number,
typename nonblock_number>
257template <
typename number>
258template <
typename nonblock_number>
266template <
typename number>
267template <
typename block_number>
275template <
typename number>
276template <
typename block_number,
typename nonblock_number>
284template <
typename number>
285template <
typename block_number,
typename nonblock_number>
293template <
typename number>
294template <
typename nonblock_number>
304template <
typename number>
305template <
typename StreamType>
312 std::vector<size_type> used_by_line_total;
317 std::vector<size_type> used_by_line;
322 used_by_line.clear();
323 out <<
"block:\t" << i <<
'\t' << j << std::endl;
325 used, allocated, reserved, used_by_line, full);
327 out <<
"used:" << used << std::endl
328 <<
"allocated:" << allocated << std::endl
329 <<
"reserved:" << reserved << std::endl;
332 allocated_total += allocated;
333 reserved_total += reserved;
337 used_by_line_total.resize(used_by_line.size());
338 for (
size_type i = 0; i < used_by_line.size(); ++i)
339 if (used_by_line[i] != 0)
341 out <<
"row-entries\t" << i <<
"\trows\t" << used_by_line[i]
343 used_by_line_total[i] += used_by_line[i];
347 out <<
"Total" << std::endl
348 <<
"used:" << used_total << std::endl
349 <<
"allocated:" << allocated_total << std::endl
350 <<
"reserved:" << reserved_total << std::endl;
351 for (
size_type i = 0; i < used_by_line_total.size(); ++i)
352 if (used_by_line_total[i] != 0)
354 out <<
"row-entries\t" << i <<
"\trows\t" << used_by_line_total[i]
void Tvmult_nonblock_nonblock(VectorType &dst, const VectorType &src) const
void vmult_nonblock_nonblock(VectorType &dst, const VectorType &src) const
void Tvmult_block_block(BlockVectorType &dst, const BlockVectorType &src) const
void Tvmult_nonblock_block(VectorType &dst, const BlockVectorType &src) const
unsigned int n_block_rows() const
void vmult_block_block(BlockVectorType &dst, const BlockVectorType &src) const
void vmult_nonblock_block(VectorType &dst, const BlockVectorType &src) const
BlockMatrixBase()=default
unsigned int n_block_cols() const
void vmult_block_nonblock(BlockVectorType &dst, const VectorType &src) const
Table< 2, ObserverPointer< BlockType, BlockMatrixBase< SparseMatrixEZ< Number > > > > sub_objects
void Tvmult_block_nonblock(BlockVectorType &dst, const VectorType &src) const
types::global_dof_index size_type
void vmult(BlockVector< block_number > &dst, const BlockVector< block_number > &src) const
void print_statistics(StreamType &s, bool full=false)
BlockSparseMatrixEZ()=default
void Tvmult(BlockVector< block_number > &dst, const BlockVector< block_number > &src) const
void reinit(const unsigned int n_block_rows, const unsigned int n_block_cols)
BlockSparseMatrixEZ & operator=(const BlockSparseMatrixEZ< Number > &)
BlockSparseMatrixEZ & operator=(const double d)
BlockSparseMatrixEZ(const unsigned int block_rows, const unsigned int block_cols)
BlockMatrixBase< SparseMatrixEZ< Number > > BaseClass
BlockSparseMatrixEZ(const BlockSparseMatrixEZ< Number > &)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
unsigned int global_dof_index