15#ifndef dealii_diagonal_matrix_h
16#define dealii_diagonal_matrix_h
28template <
typename number>
34 template <
typename,
typename>
60template <
typename VectorType = Vector<
double>>
164 template <
typename number2>
186 vmult(VectorType &dst,
const VectorType &src)
const;
194 Tvmult(VectorType &dst,
const VectorType &src)
const;
202 vmult_add(VectorType &dst,
const VectorType &src)
const;
262template <
typename VectorType>
269template <
typename VectorType>
278template <
typename VectorType>
282 return diagonal.memory_consumption();
287template <
typename VectorType>
296template <
typename VectorType>
300 dst.reinit(diagonal);
305template <
typename VectorType>
314template <
typename VectorType>
323template <
typename VectorType>
332template <
typename VectorType>
333typename VectorType::size_type
341template <
typename VectorType>
342typename VectorType::size_type
350template <
typename VectorType>
351typename VectorType::value_type
353 const size_type
j)
const
362template <
typename VectorType>
363typename VectorType::value_type &
373template <
typename VectorType>
374template <
typename number2>
377 const size_type n_cols,
383 for (size_type i = 0; i < n_cols; ++i)
390template <
typename VectorType>
394 const value_type value)
406 template <
typename VectorType>
409 const VectorType &src,
410 const VectorType &diagonal)
416 template <
typename Number>
437template <
typename VectorType>
441 internal::DiagonalMatrix::assign_and_scale(dst, src, diagonal);
446template <
typename VectorType>
455template <
typename VectorType>
458 const VectorType &src)
const
467template <
typename VectorType>
470 const VectorType &src)
const
477template <
typename VectorType>
478typename VectorType::value_type
480 const value_type src)
const
483 return diagonal.local_element(index) * src;
488template <
typename VectorType>
497 diagonal.locally_owned_elements().n_elements() + 1);
499 diagonal.locally_owned_elements().n_elements() + 1);
505 for (
unsigned int i = 0; i < length; ++i)
void initialize_dof_vector(VectorType &dst) const
void Tvmult_add(VectorType &dst, const VectorType &src) const
value_type apply(const unsigned int index, const value_type src) const
void apply_to_subrange(const unsigned int begin_range, const unsigned int end_range, const value_type *src_pointer_to_current_range, value_type *dst_pointer_to_current_range) const
value_type & operator()(const size_type i, const size_type j)
VectorType & get_vector()
std::size_t memory_consumption() const
void add(const size_type i, const size_type j, const value_type value)
DiagonalMatrix(const VectorType &vec)
value_type operator()(const size_type i, const size_type j) const
typename VectorType::size_type size_type
void compress(VectorOperation::values operation)
const VectorType & get_vector() const
void vmult(VectorType &dst, const VectorType &src) const
void reinit(const VectorType &vec)
void add(const size_type row, const size_type n_cols, const size_type *col_indices, const number2 *values, const bool elide_zero_values=true, const bool col_indices_are_sorted=false)
typename VectorType::value_type value_type
void vmult_add(VectorType &dst, const VectorType &src) const
void Tvmult(VectorType &dst, const VectorType &src) const
size_type locally_owned_size() const
std::conditional_t< rank_==1, Number, Tensor< rank_ - 1, dim, Number > > value_type
std::conditional_t< rank_==1, std::array< Number, dim >, std::array< Tensor< rank_ - 1, dim, Number >, dim > > values
#define DEAL_II_OPENMP_SIMD_PRAGMA
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcIndexRange(std::size_t arg1, std::size_t arg2, std::size_t arg3)
@ diagonal
Matrix is diagonal.
Tpetra::Vector< Number, LO, GO, NodeType< MemorySpace > > VectorType