16#ifndef dealii_block_vector_h
17#define dealii_block_vector_h
37# ifdef DEAL_II_WITH_TRILINOS
69template <
typename Number>
134 template <typename OtherNumber>
137#ifdef DEAL_II_WITH_TRILINOS
166 template <
typename InputIterator>
168 const InputIterator
first,
169 const InputIterator
end);
224 template <
class Number2>
234#ifdef DEAL_II_WITH_TRILINOS
258 const bool omit_zeroing_entries =
false);
277 reinit(
const std::vector<size_type> &block_sizes,
278 const bool omit_zeroing_entries =
false);
291 const bool omit_zeroing_entries =
false);
306 template <
typename Number2>
309 const bool omit_zeroing_entries =
false);
315 template <
class BlockVector2>
338 const unsigned int precision = 3,
339 const bool scientific =
true,
340 const bool across =
true)
const;
383template <
typename Number>
384template <
typename InputIterator>
386 const InputIterator
first,
387 const InputIterator
end)
393 reinit(block_sizes,
true);
394 InputIterator start =
first;
397 InputIterator
end = start;
402 Assert(start ==
end, ExcIteratorRangeDoesNotMatchVectorSize());
407template <
typename Number>
413 BaseClass::operator=(s);
419template <
typename Number>
424 BaseClass::operator=(v);
430template <
typename Number>
434 BaseClass::operator=(v);
440template <
typename Number>
441template <
typename Number2>
446 BaseClass::operator=(v);
450template <
typename Number>
455 this->components[i].
compress(operation);
460template <
typename Number>
469template <
typename Number>
470template <
class BlockVector2>
487template <
typename Number>
497 namespace LinearOperatorImplementation
506 template <
typename number>
510 template <
typename Matrix>
514 bool omit_zeroing_entries)
516 v.
reinit(
matrix.get_row_indices(), omit_zeroing_entries);
519 template <
typename Matrix>
523 bool omit_zeroing_entries)
525 v.
reinit(
matrix.get_column_indices(), omit_zeroing_entries);
536template <
typename Number>
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DeclException0(Exception0)
::internal::BlockVectorIterators::Iterator< BlockVectorBase, false > iterator
unsigned int n_blocks() const
const value_type * const_pointer
typename BlockType::const_reference const_reference
types::global_dof_index size_type
typename BlockType::value_type value_type
#define Assert(cond, exc)
#define AssertIsFinite(number)
::internal::BlockVectorIterators::Iterator< BlockVectorBase, true > const_iterator
static void reinit_range_vector(const Matrix &matrix, BlockVector< number > &v, bool omit_zeroing_entries)
typename BlockType::reference reference
static ::ExceptionBase & ExcIteratorRangeDoesNotMatchVectorSize()
static void reinit_domain_vector(const Matrix &matrix, BlockVector< number > &v, bool omit_zeroing_entries)
BlockIndices block_indices
typename BlockType::real_type real_type
Vector< Number > BlockType
BlockVector(const std::vector< size_type > &block_sizes)
typename BaseClass::const_reference const_reference
void reinit(const BlockIndices &block_indices, const bool omit_zeroing_entries=false)
void swap(BlockVector< Number > &v)
typename BaseClass::reference reference
void print(std::ostream &out, const unsigned int precision=3, const bool scientific=true, const bool across=true) const
bool has_ghost_elements() const
BlockVector(const TrilinosWrappers::MPI::BlockVector &v)
BlockVector< Number > & operator=(const TrilinosWrappers::MPI::BlockVector &V)
BlockVector< Number > & operator=(const BlockVector< Number2 > &V)
BlockVector(const BlockIndices &block_indices)
BlockVector< Number > & operator=(BlockVector< Number > &&)=default
typename BaseClass::value_type value_type
typename BaseClass::const_pointer const_pointer
BlockVector(const BlockVector< Number > &V)
void block_write(std::ostream &out) const
typename BaseClass::pointer pointer
~BlockVector() override=default
typename BaseClass::BlockType BlockType
BlockVector(const unsigned int n_blocks=0, const size_type block_size=0)
void scale(const BlockVector2 &v)
BlockVector(BlockVector< Number > &&) noexcept=default
void reinit(const std::vector< size_type > &block_sizes, const bool omit_zeroing_entries=false)
typename BaseClass::iterator iterator
void block_read(std::istream &in)
BlockVector & operator=(const value_type s)
typename BaseClass::size_type size_type
BlockVector< Number > & operator=(const Vector< Number > &V)
BlockVector< Number > & operator=(const BlockVector< Number > &v)
BlockVector(const std::vector< size_type > &block_sizes, const InputIterator first, const InputIterator end)
void compress(::VectorOperation::values operation=::VectorOperation::unknown)
void reinit(const unsigned int n_blocks, const size_type block_size=0, const bool omit_zeroing_entries=false)
void swap(BlockVector< Number > &u, BlockVector< Number > &v)
typename BaseClass::const_iterator const_iterator
void reinit(const BlockVector< Number2 > &V, const bool omit_zeroing_entries=false)
typename BaseClass::real_type real_type
@ matrix
Contents is actually a matrix.
types::global_dof_index size_type
std::enable_if< IsBlockVector< VectorType >::value, unsignedint >::type n_blocks(const VectorType &vector)
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
VectorType::value_type * end(VectorType &V)
VectorType::value_type * begin(VectorType &V)
std::string compress(const std::string &input)
void copy(const T *begin, const T *end, U *dest)
void reinit(MatrixBlock< MatrixType > &v, const BlockSparsityPattern &p)
void advance(std::tuple< I1, I2 > &t, const unsigned int n)