diff --git a/src/mat/impls/aij/mpi/mpiaij.c b/src/mat/impls/aij/mpi/mpiaij.c index a730f84..863bfae 100644 --- a/src/mat/impls/aij/mpi/mpiaij.c +++ b/src/mat/impls/aij/mpi/mpiaij.c @@ -2609,7 +2609,9 @@ PetscErrorCode MatShift_MPIAIJ(Mat Y,PetscScalar a) if (!Y->preallocated) { ierr = MatMPIAIJSetPreallocation(Y,1,NULL,0,NULL);CHKERRQ(ierr); } else if (!aij->nz) { + PetscInt nonew = aij->nonew; ierr = MatSeqAIJSetPreallocation(maij->A,1,NULL);CHKERRQ(ierr); + aij->nonew = nonew; } ierr = MatShift_Basic(Y,a);CHKERRQ(ierr); PetscFunctionReturn(0); diff --git a/src/mat/impls/baij/mpi/mpibaij.c b/src/mat/impls/baij/mpi/mpibaij.c index 1382f73..73da6fe 100644 --- a/src/mat/impls/baij/mpi/mpibaij.c +++ b/src/mat/impls/baij/mpi/mpibaij.c @@ -2680,7 +2680,9 @@ PetscErrorCode MatShift_MPIBAIJ(Mat Y,PetscScalar a) if (!Y->preallocated) { ierr = MatMPIBAIJSetPreallocation(Y,Y->rmap->bs,1,NULL,0,NULL);CHKERRQ(ierr); } else if (!aij->nz) { + PetscInt nonew = aij->nonew; ierr = MatSeqBAIJSetPreallocation(maij->A,Y->rmap->bs,1,NULL);CHKERRQ(ierr); + aij->nonew = nonew; } ierr = MatShift_Basic(Y,a);CHKERRQ(ierr); PetscFunctionReturn(0); diff --git a/src/mat/impls/sbaij/mpi/mpisbaij.c b/src/mat/impls/sbaij/mpi/mpisbaij.c index 4d1d85e..f8e37f3 100644 --- a/src/mat/impls/sbaij/mpi/mpisbaij.c +++ b/src/mat/impls/sbaij/mpi/mpisbaij.c @@ -1741,7 +1741,9 @@ PetscErrorCode MatShift_MPISBAIJ(Mat Y,PetscScalar a) if (!Y->preallocated) { ierr = MatMPISBAIJSetPreallocation(Y,Y->rmap->bs,1,NULL,0,NULL);CHKERRQ(ierr); } else if (!aij->nz) { + PetscInt nonew = aij->nonew; ierr = MatSeqSBAIJSetPreallocation(maij->A,Y->rmap->bs,1,NULL);CHKERRQ(ierr); + aij->nonew = nonew; } ierr = MatShift_Basic(Y,a);CHKERRQ(ierr); PetscFunctionReturn(0);