16 #ifndef dealii_la_parallel_block_vector_h 17 #define dealii_la_parallel_block_vector_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 24 #include <deal.II/lac/block_indices.h> 25 #include <deal.II/lac/block_vector_base.h> 26 #include <deal.II/lac/la_parallel_vector.h> 27 #include <deal.II/lac/vector_operation.h> 28 #include <deal.II/lac/vector_type_traits.h> 33 DEAL_II_NAMESPACE_OPEN
36 #ifdef DEAL_II_WITH_PETSC 46 #ifdef DEAL_II_WITH_TRILINOS 81 template <
typename Number>
98 static constexpr
unsigned int communication_block_size = 20;
115 using pointer =
typename BaseClass::pointer;
116 using const_pointer =
typename BaseClass::const_pointer;
117 using reference =
typename BaseClass::reference;
118 using const_reference =
typename BaseClass::const_reference;
119 using size_type =
typename BaseClass::size_type;
138 explicit BlockVector(
const size_type num_blocks = 0,
139 const size_type block_size = 0);
159 template <
typename OtherNumber>
166 BlockVector(
const std::vector<size_type> &block_sizes);
172 BlockVector(
const std::vector<IndexSet> &local_ranges,
173 const std::vector<IndexSet> &ghost_indices,
174 const MPI_Comm communicator);
179 BlockVector(
const std::vector<IndexSet> &local_ranges,
180 const MPI_Comm communicator);
200 template <
class Number2>
210 #ifdef DEAL_II_WITH_PETSC 222 #ifdef DEAL_II_WITH_TRILINOS 249 reinit(
const size_type num_blocks,
250 const size_type block_size = 0,
251 const bool omit_zeroing_entries =
false);
273 reinit(
const std::vector<size_type> &N,
274 const bool omit_zeroing_entries =
false);
290 template <
typename Number2>
293 const bool omit_zeroing_entries =
false);
331 update_ghost_values()
const;
342 zero_out_ghosts()
const;
348 has_ghost_elements()
const;
354 template <
typename OtherNumber>
356 add(
const std::vector<size_type> & indices,
357 const ::Vector<OtherNumber> &values);
397 all_zero()
const override;
403 mean_value()
const override;
410 lp_norm(
const real_type p)
const;
444 const bool omit_zeroing_entries =
false)
override;
450 operator*=(
const Number factor)
override;
456 operator/=(
const Number factor)
override;
482 std::shared_ptr<const CommunicationPatternBase> communication_pattern =
483 std::shared_ptr<const CommunicationPatternBase>())
override;
507 template <
typename FullMatrixType>
509 multivector_inner_product(FullMatrixType & matrix,
511 const bool symmetric =
false)
const;
529 template <
typename FullMatrixType>
531 multivector_inner_product_with_metric(
const FullMatrixType & matrix,
533 const bool symmetric =
false)
const;
544 template <
typename FullMatrixType>
547 const FullMatrixType &matrix,
548 const Number s = Number(0.),
549 const Number b = Number(1.))
const;
555 add(
const Number a)
override;
577 add(
const std::vector<size_type> &indices,
578 const std::vector<Number> & values);
608 l1_norm()
const override;
615 l2_norm()
const override;
628 linfty_norm()
const override;
651 add_and_dot(
const Number a,
660 size()
const override;
674 locally_owned_elements()
const override;
680 print(std::ostream & out,
681 const unsigned int precision = 3,
682 const bool scientific =
true,
683 const bool across =
true)
const override;
689 memory_consumption()
const override;
726 template <
typename Number>
740 template <
typename Number>
746 DEAL_II_NAMESPACE_CLOSE
749 # include <deal.II/lac/la_parallel_block_vector.templates.h>
typename BaseClass::BlockType BlockType
SymmetricTensor< rank_, dim, Number > operator*(const SymmetricTensor< rank_, dim, Number > &t, const Number &factor)
typename BaseClass::value_type value_type
void swap(BlockVector &u, BlockVector &v)
void swap(LinearAlgebra::distributed::BlockVector< Number > &u, LinearAlgebra::distributed::BlockVector< Number > &v)
#define DeclException0(Exception0)
void swap(BlockVector< Number > &v)
typename BlockType::real_type real_type