From cc2b80592a6573c270abe6d59d279b0fb954f182 Mon Sep 17 00:00:00 2001 From: David Wells Date: Sat, 22 May 2021 13:57:31 -0400 Subject: [PATCH] Remove a lot of deprecated PETSc things. --- include/deal.II/lac/petsc_matrix_base.h | 10 -- include/deal.II/lac/petsc_sparse_matrix.h | 140 --------------- source/lac/petsc_matrix_base.cc | 8 - source/lac/petsc_parallel_sparse_matrix.cc | 199 +-------------------- 4 files changed, 1 insertion(+), 356 deletions(-) diff --git a/include/deal.II/lac/petsc_matrix_base.h b/include/deal.II/lac/petsc_matrix_base.h index 036cf8fee6..0f97ba8fd3 100644 --- a/include/deal.II/lac/petsc_matrix_base.h +++ b/include/deal.II/lac/petsc_matrix_base.h @@ -754,16 +754,6 @@ namespace PETScWrappers MatrixBase & add(const PetscScalar factor, const MatrixBase &other); - - /** - * Add the matrix @p other scaled by the factor @p factor to the current - * matrix. - * @deprecated Use the function with order of arguments reversed instead. - */ - DEAL_II_DEPRECATED - MatrixBase & - add(const MatrixBase &other, const PetscScalar factor); - /** * Matrix-vector multiplication: let dst = M*src with M * being this matrix. diff --git a/include/deal.II/lac/petsc_sparse_matrix.h b/include/deal.II/lac/petsc_sparse_matrix.h index 13ccb55809..3b4daed770 100644 --- a/include/deal.II/lac/petsc_sparse_matrix.h +++ b/include/deal.II/lac/petsc_sparse_matrix.h @@ -399,72 +399,6 @@ namespace PETScWrappers */ ~SparseMatrix() override; - /** - * Create a sparse matrix of dimensions @p m times @p n, with an initial - * guess of @p n_nonzero_per_row and @p n_offdiag_nonzero_per_row - * nonzero elements per row (see documentation of the MatCreateAIJ PETSc - * function for more information about these parameters). PETSc is able - * to cope with the situation that more than this number of elements are - * later allocated for a row, but this involves copying data, and is - * thus expensive. - * - * For the meaning of the @p local_row and @p local_columns parameters, - * see the class documentation. - * - * The @p is_symmetric flag determines whether we should tell PETSc that - * the matrix is going to be symmetric (as indicated by the call - * MatSetOption(mat, MAT_SYMMETRIC). Note that the PETSc - * documentation states that one cannot form an ILU decomposition of a - * matrix for which this flag has been set to @p true, only an ICC. The - * default value of this flag is @p false. - * - * @deprecated This constructor is deprecated: please use the - * constructor with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - SparseMatrix(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); - - /** - * Initialize a rectangular matrix with @p m rows and @p n columns. The - * maximal number of nonzero entries for diagonal and off- diagonal - * blocks of each row is given by the @p row_lengths and @p - * offdiag_row_lengths arrays. - * - * For the meaning of the @p local_row and @p local_columns parameters, - * see the class documentation. - * - * Just as for the other constructors: PETSc is able to cope with the - * situation that more than this number of elements are later allocated - * for a row, but this involves copying data, and is thus expensive. - * - * The @p is_symmetric flag determines whether we should tell PETSc that - * the matrix is going to be symmetric (as indicated by the call - * MatSetOption(mat, MAT_SYMMETRIC). Note that the PETSc - * documentation states that one cannot form an ILU decomposition of a - * matrix for which this flag has been set to @p true, only an ICC. The - * default value of this flag is @p false. - * - * @deprecated This constructor is deprecated: please use the - * constructor with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - SparseMatrix(const MPI_Comm & communicator, - const size_type m, - const size_type n, - const size_type local_rows, - const size_type local_columns, - const std::vector &row_lengths, - const bool is_symmetric = false, - const std::vector &offdiag_row_lengths = - std::vector()); - /** * Initialize using the given sparsity pattern with communication * happening over the provided @p communicator. @@ -515,45 +449,6 @@ namespace PETScWrappers void copy_from(const SparseMatrix &other); - /** - * Throw away the present matrix and generate one that has the same - * properties as if it were created by the constructor of this class - * with the same argument list as the present function. - * - * @deprecated This overload of reinit is deprecated: - * please use the overload with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - 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); - - /** - * Throw away the present matrix and generate one that has the same - * properties as if it were created by the constructor of this class - * with the same argument list as the present function. - * - * @deprecated This overload of reinit is deprecated: - * please use the overload with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - 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 std::vector &row_lengths, - const bool is_symmetric = false, - const std::vector &offdiag_row_lengths = - std::vector()); - /** * Initialize using the given sparsity pattern with communication * happening over the provided @p communicator. @@ -698,41 +593,6 @@ namespace PETScWrappers */ MPI_Comm communicator; - /** - * Do the actual work for the respective reinit() function and the - * matching constructor, i.e. create a matrix. Getting rid of the - * previous matrix is left to the caller. - * - * @deprecated This overload of do_reinit is deprecated: - * please use the overload with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - 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); - - /** - * Same as previous function. - * - * @deprecated This overload of do_reinit is deprecated: - * please use the overload with a sparsity pattern argument instead. - */ - DEAL_II_DEPRECATED - void - do_reinit(const size_type m, - const size_type n, - const size_type local_rows, - const size_type local_columns, - const std::vector &row_lengths, - const bool is_symmetric = false, - const std::vector &offdiag_row_lengths = - std::vector()); - /** * Same as previous functions. */ diff --git a/source/lac/petsc_matrix_base.cc b/source/lac/petsc_matrix_base.cc index 3d05e782a8..0e473c0adb 100644 --- a/source/lac/petsc_matrix_base.cc +++ b/source/lac/petsc_matrix_base.cc @@ -437,14 +437,6 @@ namespace PETScWrappers } - - MatrixBase & - MatrixBase::add(const MatrixBase &other, const PetscScalar factor) - { - return add(factor, other); - } - - void MatrixBase::vmult(VectorBase &dst, const VectorBase &src) const { diff --git a/source/lac/petsc_parallel_sparse_matrix.cc b/source/lac/petsc_parallel_sparse_matrix.cc index 383c8d11f8..adfe10b85e 100644 --- a/source/lac/petsc_parallel_sparse_matrix.cc +++ b/source/lac/petsc_parallel_sparse_matrix.cc @@ -49,47 +49,6 @@ namespace PETScWrappers destroy_matrix(matrix); } - SparseMatrix::SparseMatrix(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, - const size_type n_offdiag_nonzero_per_row) - : communicator(communicator) - { - do_reinit(m, - n, - local_rows, - local_columns, - n_nonzero_per_row, - is_symmetric, - n_offdiag_nonzero_per_row); - } - - - - SparseMatrix::SparseMatrix( - const MPI_Comm & communicator, - const size_type m, - const size_type n, - const size_type local_rows, - const size_type local_columns, - const std::vector &row_lengths, - const bool is_symmetric, - const std::vector &offdiag_row_lengths) - : communicator(communicator) - { - do_reinit(m, - n, - local_rows, - local_columns, - row_lengths, - is_symmetric, - offdiag_row_lengths); - } - template @@ -110,6 +69,7 @@ namespace PETScWrappers } + void SparseMatrix::reinit(const SparseMatrix &other) { @@ -146,59 +106,6 @@ namespace PETScWrappers AssertThrow(ierr == 0, ExcPETScError(ierr)); } - void - SparseMatrix::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, - const size_type n_offdiag_nonzero_per_row) - { - this->communicator = communicator; - - // get rid of old matrix and generate a new one - const PetscErrorCode ierr = destroy_matrix(matrix); - AssertThrow(ierr == 0, ExcPETScError(ierr)); - - do_reinit(m, - n, - local_rows, - local_columns, - n_nonzero_per_row, - is_symmetric, - n_offdiag_nonzero_per_row); - } - - - - void - SparseMatrix::reinit(const MPI_Comm & communicator, - const size_type m, - const size_type n, - const size_type local_rows, - const size_type local_columns, - const std::vector &row_lengths, - const bool is_symmetric, - const std::vector &offdiag_row_lengths) - { - this->communicator = communicator; - - // get rid of old matrix and generate a - // new one - const PetscErrorCode ierr = destroy_matrix(matrix); - AssertThrow(ierr == 0, ExcPETScError(ierr)); - - do_reinit(m, - n, - local_rows, - local_columns, - row_lengths, - is_symmetric, - offdiag_row_lengths); - } - template @@ -241,110 +148,6 @@ namespace PETScWrappers do_reinit(local_rows, local_columns, sparsity_pattern); } - void - SparseMatrix::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, - const size_type n_offdiag_nonzero_per_row) - { - Assert(local_rows <= m, ExcLocalRowsTooLarge(local_rows, m)); - - // use the call sequence indicating only - // a maximal number of elements per row - // for all rows globally - const PetscErrorCode ierr = MatCreateAIJ(communicator, - local_rows, - local_columns, - m, - n, - n_nonzero_per_row, - nullptr, - n_offdiag_nonzero_per_row, - nullptr, - &matrix); - set_matrix_option(matrix, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE); - AssertThrow(ierr == 0, ExcPETScError(ierr)); - - // set symmetric flag, if so requested - if (is_symmetric == true) - { - set_matrix_option(matrix, MAT_SYMMETRIC, PETSC_TRUE); - } - } - - - - void - SparseMatrix::do_reinit(const size_type m, - const size_type n, - const size_type local_rows, - const size_type local_columns, - const std::vector &row_lengths, - const bool is_symmetric, - const std::vector &offdiag_row_lengths) - { - Assert(local_rows <= m, ExcLocalRowsTooLarge(local_rows, m)); - - Assert(row_lengths.size() == m, - ExcDimensionMismatch(row_lengths.size(), m)); - - // For the case that local_columns is smaller than one of the row lengths - // MatCreateMPIAIJ throws an error. In this case use a - // PETScWrappers::SparseMatrix - for (const size_type row_length : row_lengths) - { - (void)row_length; - Assert(row_length <= local_columns, - ExcIndexRange(row_length, 1, local_columns + 1)); - } - - // use the call sequence indicating a - // maximal number of elements for each - // row individually. annoyingly, we - // always use unsigned ints for cases - // like this, while PETSc wants to see - // signed integers. so we have to - // convert, unless we want to play dirty - // tricks with conversions of pointers - const std::vector int_row_lengths(row_lengths.begin(), - row_lengths.end()); - const std::vector int_offdiag_row_lengths( - offdiag_row_lengths.begin(), offdiag_row_lengths.end()); - - // TODO: There must be a significantly better way to provide information - // about the off-diagonal blocks of the matrix. this way, petsc keeps - // allocating tiny chunks of memory, and gets completely hung up over this - const PetscErrorCode ierr = - MatCreateAIJ(communicator, - local_rows, - local_columns, - m, - n, - 0, - int_row_lengths.data(), - 0, - offdiag_row_lengths.size() ? - int_offdiag_row_lengths.data() : - nullptr, - &matrix); - - // TODO: Sometimes the actual number of nonzero entries allocated is - // greater than the number of nonzero entries, which petsc will complain - // about unless explicitly disabled with MatSetOption. There is probably a - // way to prevent a different number nonzero elements being allocated in - // the first place. (See also previous TODO). - set_matrix_option(matrix, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE); - AssertThrow(ierr == 0, ExcPETScError(ierr)); - - // set symmetric flag, if so requested - if (is_symmetric == true) - { - set_matrix_option(matrix, MAT_SYMMETRIC, PETSC_TRUE); - } - } template -- 2.39.5