From: ESeNonFossiIo Date: Thu, 14 Apr 2016 15:15:51 +0000 (+0200) Subject: add check on PETSc contiguos memory X-Git-Tag: v8.5.0-rc1~1104^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2502%2Fhead;p=dealii.git add check on PETSc contiguos memory --- diff --git a/source/lac/petsc_parallel_sparse_matrix.cc b/source/lac/petsc_parallel_sparse_matrix.cc index 0888d3582a..cade60680d 100644 --- a/source/lac/petsc_parallel_sparse_matrix.cc +++ b/source/lac/petsc_parallel_sparse_matrix.cc @@ -893,10 +893,11 @@ namespace PETScWrappers IndexSet SparseMatrix::locally_owned_domain_indices () const { - PetscInt n_rows, n_cols, min, max; + PetscInt n_rows, n_cols, min, max, size; PetscErrorCode ierr; IS *rows = nullptr; IS *cols = nullptr; + IS *is = nullptr; ierr = MatGetSize (matrix, &n_rows, &n_cols); AssertThrow (ierr == 0, ExcPETScError(ierr)); @@ -908,16 +909,21 @@ namespace PETScWrappers IndexSet locally_owned_domain_indices(n_rows); locally_owned_domain_indices.add_range(min, max); + ierr = ISGetLocalSize(*is, &size); + AssertThrow (ierr == 0, ExcPETScError(ierr)); + Assert(size==max-min+1, ExcMessage("PETSc is requiring non contiguous memory allocation.")); + return locally_owned_domain_indices; } IndexSet SparseMatrix::locally_owned_range_indices () const { - PetscInt n_rows, n_cols, min, max; + PetscInt n_rows, n_cols, min, max, size; PetscErrorCode ierr; IS *rows = nullptr; IS *cols = nullptr; + IS *is = nullptr; ierr = MatGetSize (matrix, &n_rows, &n_cols); AssertThrow (ierr == 0, ExcPETScError(ierr)); @@ -929,6 +935,10 @@ namespace PETScWrappers IndexSet locally_owned_range_indices(n_cols); locally_owned_range_indices.add_range(min, max); + ierr = ISGetLocalSize(*is, &size); + AssertThrow (ierr == 0, ExcPETScError(ierr)); + Assert(size==max-min+1, ExcMessage("PETSc is requiring non contiguous memory allocation.")); + return locally_owned_range_indices; }