From f4d8c274dad7841675492845b9959212cec7ccc2 Mon Sep 17 00:00:00 2001 From: ESeNonFossiIo Date: Thu, 14 Apr 2016 17:15:51 +0200 Subject: [PATCH] add check on PETSc contiguos memory --- source/lac/petsc_parallel_sparse_matrix.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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; } -- 2.39.5