16 #ifndef dealii__petsc_parallel_sparse_matrix_h 17 #define dealii__petsc_parallel_sparse_matrix_h 19 #include <deal.II/base/config.h> 21 #ifdef DEAL_II_WITH_PETSC 23 # include <deal.II/lac/exceptions.h> 24 # include <deal.II/lac/petsc_matrix_base.h> 25 # include <deal.II/lac/petsc_parallel_vector.h> 28 DEAL_II_NAMESPACE_OPEN
178 const size_type local_rows,
179 const size_type local_columns,
180 const size_type n_nonzero_per_row,
182 const size_type n_offdiag_nonzero_per_row = 0);
207 const size_type local_rows,
208 const size_type local_columns,
209 const std::vector<size_type> &row_lengths,
211 const std::vector<size_type> &offdiag_row_lengths = std::vector<size_type>());
235 template <
typename SparsityPatternType>
237 const SparsityPatternType &sparsity_pattern,
238 const std::vector<size_type> &local_rows_per_process,
239 const std::vector<size_type> &local_columns_per_process,
240 const unsigned int this_process,
241 const bool preset_nonzero_locations =
true);
266 void reinit (
const MPI_Comm &communicator,
269 const size_type local_rows,
270 const size_type local_columns,
271 const size_type n_nonzero_per_row,
273 const size_type n_offdiag_nonzero_per_row = 0);
280 void reinit (
const MPI_Comm &communicator,
283 const size_type local_rows,
284 const size_type local_columns,
285 const std::vector<size_type> &row_lengths,
287 const std::vector<size_type> &offdiag_row_lengths = std::vector<size_type>());
308 template <
typename SparsityPatternType>
309 void reinit (
const MPI_Comm &communicator,
310 const SparsityPatternType &sparsity_pattern,
311 const std::vector<size_type> &local_rows_per_process,
312 const std::vector<size_type> &local_columns_per_process,
313 const unsigned int this_process,
314 const bool preset_nonzero_locations =
true);
322 template <
typename SparsityPatternType>
325 const SparsityPatternType &sparsity_pattern,
326 const MPI_Comm &communicator);
350 <<
"The number of local rows " << arg1
351 <<
" must be larger than the total number of rows " << arg2);
396 const size_type local_rows,
397 const size_type local_columns,
398 const size_type n_nonzero_per_row,
400 const size_type n_offdiag_nonzero_per_row = 0);
407 const size_type local_rows,
408 const size_type local_columns,
409 const std::vector<size_type> &row_lengths,
411 const std::vector<size_type> &offdiag_row_lengths = std::vector<size_type>());
416 template <
typename SparsityPatternType>
417 void do_reinit (
const SparsityPatternType &sparsity_pattern,
418 const std::vector<size_type> &local_rows_per_process,
419 const std::vector<size_type> &local_columns_per_process,
420 const unsigned int this_process,
421 const bool preset_nonzero_locations);
426 template <
typename SparsityPatternType>
429 const SparsityPatternType &sparsity_pattern);
450 DEAL_II_NAMESPACE_CLOSE
452 #endif // DEAL_II_WITH_PETSC
void copy_from(const SparseMatrix &other)
DeclException2(ExcLocalRowsTooLarge, int, int,<< "The number of local rows "<< arg1<< " must be larger than the total number of rows "<< arg2)
void do_reinit(const size_type m, const size_type n, const size_type local_rows, const size_type local_columns, const size_type n_nonzero_per_row, const bool is_symmetric=false, const size_type n_offdiag_nonzero_per_row=0)
types::global_dof_index size_type
virtual const MPI_Comm & get_mpi_communicator() const
PetscBool is_symmetric(const double tolerance=1.e-12)
static const bool zero_addition_can_be_elided
SparseMatrix & operator=(const value_type d)
PetscScalar matrix_scalar_product(const Vector &u, const Vector &v) const
unsigned int global_dof_index
void reinit(const MPI_Comm &communicator, const size_type m, const size_type n, const size_type local_rows, const size_type local_columns, const size_type n_nonzero_per_row, const bool is_symmetric=false, const size_type n_offdiag_nonzero_per_row=0)
PetscScalar matrix_norm_square(const Vector &v) const