16 #ifndef dealii_block_sparse_matrix_ez_h 17 #define dealii_block_sparse_matrix_ez_h 39 template <
typename Number>
60 template <
typename Number>
79 const unsigned int block_cols);
135 block(
const unsigned int row,
const unsigned int column);
143 block(
const unsigned int row,
const unsigned int column)
const;
205 template <
typename somenumber>
214 template <
typename somenumber>
223 template <
typename somenumber>
233 template <
typename somenumber>
244 template <
class StreamType>
271 template <
typename Number>
280 template <
typename Number>
289 template <
typename Number>
292 const unsigned int column)
297 return blocks[row][column];
302 template <
typename Number>
305 const unsigned int column)
const 310 return blocks[row][column];
315 template <
typename Number>
324 template <
typename Number>
333 template <
typename Number>
341 const std::pair<size_type, size_type> row_index =
345 block(row_index.first, col_index.first)
346 .
set(row_index.second, col_index.second, value);
351 template <
typename Number>
359 const std::pair<unsigned int, size_type> row_index =
363 block(row_index.first, col_index.first)
364 .
add(row_index.second, col_index.second, value);
368 template <
typename Number>
369 template <
typename somenumber>
388 template <
typename Number>
389 template <
typename somenumber>
406 template <
typename Number>
407 template <
typename somenumber>
426 template <
typename Number>
427 template <
typename somenumber>
444 template <
typename number>
445 template <
class StreamType>
452 std::vector<size_type> used_by_line_total;
457 std::vector<size_type> used_by_line;
462 used_by_line.clear();
463 out <<
"block:\t" << i <<
'\t' << j << std::endl;
465 used, allocated, reserved, used_by_line, full);
467 out <<
"used:" << used << std::endl
468 <<
"allocated:" << allocated << std::endl
469 <<
"reserved:" << reserved << std::endl;
472 allocated_total += allocated;
473 reserved_total += reserved;
477 used_by_line_total.resize(used_by_line.size());
478 for (
size_type i = 0; i < used_by_line.size(); ++i)
479 if (used_by_line[i] != 0)
481 out <<
"row-entries\t" << i <<
"\trows\t" << used_by_line[i]
483 used_by_line_total[i] += used_by_line[i];
487 out <<
"Total" << std::endl
488 <<
"used:" << used_total << std::endl
489 <<
"allocated:" << allocated_total << std::endl
490 <<
"reserved:" << reserved_total << std::endl;
491 for (
size_type i = 0; i < used_by_line_total.size(); ++i)
492 if (used_by_line_total[i] != 0)
494 out <<
"row-entries\t" << i <<
"\trows\t" << used_by_line_total[i]
502 #endif // dealii_block_sparse_matrix_ez_h
void Tvmult_add(Vector< somenumber > &dst, const Vector< somenumber > &src) const
void add(const size_type i, const size_type j, const number value)
void Tvmult_add(BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const
void compute_statistics(size_type &used, size_type &allocated, size_type &reserved, std::vector< size_type > &used_by_line, const bool compute_by_line) const
#define AssertIndexRange(index, range)
Table< 2, SparseMatrixEZ< Number > > blocks
SparseMatrixEZ< Number > & block(const unsigned int row, const unsigned int column)
void set(const size_type i, const size_type j, const number value, const bool elide_zero_values=true)
void vmult_add(Vector< somenumber > &dst, const Vector< somenumber > &src) const
size_type total_size() const
void add(const size_type i, const size_type j, const Number value)
unsigned int n_block_cols() const
void vmult(BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const
#define Assert(cond, exc)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
#define DEAL_II_NAMESPACE_CLOSE
void reinit(const unsigned int n_block_rows, const unsigned int n_block_cols)
BlockSparseMatrixEZ()=default
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
void set(const size_type i, const size_type j, const Number value)
unsigned int global_dof_index
unsigned int n_blocks() const
void Tvmult(BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const
#define DEAL_II_NAMESPACE_OPEN
BlockIndices column_indices
BlockSparseMatrixEZ & operator=(const BlockSparseMatrixEZ< Number > &)
void print_statistics(StreamType &s, bool full=false)
void vmult_add(BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const
unsigned int size() const
BlockType & block(const unsigned int i)
std::pair< unsigned int, size_type > global_to_local(const size_type i) const
#define AssertIsFinite(number)
unsigned int n_block_rows() const