diff --git a/src/mat/impls/aij/mpi/mpiaij.c b/src/mat/impls/aij/mpi/mpiaij.c index f34ac1f..7303317 100644 --- a/src/mat/impls/aij/mpi/mpiaij.c +++ b/src/mat/impls/aij/mpi/mpiaij.c @@ -1430,6 +1430,9 @@ PetscErrorCode MatView_MPIAIJ_ASCIIorDraworSocket(Mat mat,PetscViewer viewer) */ ierr = PetscViewerGetSingleton(viewer,&sviewer);CHKERRQ(ierr); if (!rank) { + const char *matname; + ierr = PetscObjectGetName((PetscObject)mat,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)((Mat_MPIAIJ*)(A->data))->A,matname);CHKERRQ(ierr); ierr = MatView_SeqAIJ(((Mat_MPIAIJ*)(A->data))->A,sviewer);CHKERRQ(ierr); } ierr = PetscViewerRestoreSingleton(viewer,&sviewer);CHKERRQ(ierr); diff --git a/src/mat/impls/baij/mpi/mpibaij.c b/src/mat/impls/baij/mpi/mpibaij.c index 9462031..9e6f354 100644 --- a/src/mat/impls/baij/mpi/mpibaij.c +++ b/src/mat/impls/baij/mpi/mpibaij.c @@ -1042,6 +1042,9 @@ static PetscErrorCode MatView_MPIBAIJ_ASCIIorDraworSocket(Mat mat,PetscViewer vi */ ierr = PetscViewerGetSingleton(viewer,&sviewer);CHKERRQ(ierr); if (!rank) { + const char *matname; + ierr = PetscObjectGetName((PetscObject)mat,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)((Mat_MPIBAIJ*)(A->data))->A,matname);CHKERRQ(ierr); ierr = MatView_SeqBAIJ(((Mat_MPIBAIJ*)(A->data))->A,sviewer);CHKERRQ(ierr); } ierr = PetscViewerRestoreSingleton(viewer,&sviewer);CHKERRQ(ierr); diff --git a/src/mat/impls/baij/seq/baij.c b/src/mat/impls/baij/seq/baij.c index 8a74c59..388ca75 100644 --- a/src/mat/impls/baij/seq/baij.c +++ b/src/mat/impls/baij/seq/baij.c @@ -1497,8 +1497,11 @@ static PetscErrorCode MatView_SeqBAIJ_ASCII(Mat A,PetscViewer viewer) if (format == PETSC_VIEWER_ASCII_INFO || format == PETSC_VIEWER_ASCII_INFO_DETAIL) { ierr = PetscViewerASCIIPrintf(viewer," block size is %D\n",bs);CHKERRQ(ierr); } else if (format == PETSC_VIEWER_ASCII_MATLAB) { - Mat aij; + const char *matname; + Mat aij; ierr = MatConvert(A,MATSEQAIJ,MAT_INITIAL_MATRIX,&aij);CHKERRQ(ierr); + ierr = PetscObjectGetName((PetscObject)A,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)aij,matname);CHKERRQ(ierr); ierr = MatView(aij,viewer);CHKERRQ(ierr); ierr = MatDestroy(&aij);CHKERRQ(ierr); } else if (format == PETSC_VIEWER_ASCII_FACTOR_INFO) { diff --git a/src/mat/impls/sbaij/mpi/mpisbaij.c b/src/mat/impls/sbaij/mpi/mpisbaij.c index 5bac1b2..c618ba8 100644 --- a/src/mat/impls/sbaij/mpi/mpisbaij.c +++ b/src/mat/impls/sbaij/mpi/mpisbaij.c @@ -713,7 +713,10 @@ static PetscErrorCode MatView_MPISBAIJ_ASCIIorDraworSocket(Mat mat,PetscViewer v */ ierr = PetscViewerGetSingleton(viewer,&sviewer);CHKERRQ(ierr); if (!rank) { - ierr = MatView_SeqSBAIJ_ASCII(((Mat_MPISBAIJ*)(A->data))->A,sviewer);CHKERRQ(ierr); + const char *matname; + ierr = PetscObjectGetName((PetscObject)mat,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)((Mat_MPISBAIJ*)(A->data))->A,matname);CHKERRQ(ierr); + ierr = MatView_SeqSBAIJ_ASCII(((Mat_MPISBAIJ*)(A->data))->A,sviewer);CHKERRQ(ierr); } ierr = PetscViewerRestoreSingleton(viewer,&sviewer);CHKERRQ(ierr); ierr = MatDestroy(&A);CHKERRQ(ierr); diff --git a/src/mat/impls/sbaij/seq/sbaij.c b/src/mat/impls/sbaij/seq/sbaij.c index 8fcb29b..a100e84 100644 --- a/src/mat/impls/sbaij/seq/sbaij.c +++ b/src/mat/impls/sbaij/seq/sbaij.c @@ -308,12 +308,16 @@ PetscErrorCode MatView_SeqSBAIJ_ASCII(Mat A,PetscViewer viewer) if (format == PETSC_VIEWER_ASCII_INFO || format == PETSC_VIEWER_ASCII_INFO_DETAIL) { ierr = PetscViewerASCIIPrintf(viewer," block size is %D\n",bs);CHKERRQ(ierr); } else if (format == PETSC_VIEWER_ASCII_MATLAB) { - Mat aij; + Mat aij; + const char *matname; + if (A->factortype && bs>1) { ierr = PetscPrintf(PETSC_COMM_SELF,"Warning: matrix is factored with bs>1. MatView() with PETSC_VIEWER_ASCII_MATLAB is not supported and ignored!\n");CHKERRQ(ierr); PetscFunctionReturn(0); } ierr = MatConvert(A,MATSEQAIJ,MAT_INITIAL_MATRIX,&aij);CHKERRQ(ierr); + ierr = PetscObjectGetName((PetscObject)A,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)aij,matname);CHKERRQ(ierr); ierr = MatView(aij,viewer);CHKERRQ(ierr); ierr = MatDestroy(&aij);CHKERRQ(ierr); } else if (format == PETSC_VIEWER_ASCII_COMMON) { @@ -529,8 +533,11 @@ PetscErrorCode MatView_SeqSBAIJ(Mat A,PetscViewer viewer) } else if (isdraw) { ierr = MatView_SeqSBAIJ_Draw(A,viewer);CHKERRQ(ierr); } else { - Mat B; + Mat B; + const char *matname; ierr = MatConvert(A,MATSEQAIJ,MAT_INITIAL_MATRIX,&B);CHKERRQ(ierr); + ierr = PetscObjectGetName((PetscObject)A,&matname);CHKERRQ(ierr); + ierr = PetscObjectSetName((PetscObject)B,matname);CHKERRQ(ierr); ierr = MatView(B,viewer);CHKERRQ(ierr); ierr = MatDestroy(&B);CHKERRQ(ierr); ierr = PetscViewerBinaryGetInfoPointer(viewer,&file);CHKERRQ(ierr);