[petsc-users] How to view draw a matrix?

Florian Lindner mailinglists at xgm.de
Fri Nov 4 09:14:56 CDT 2016


Hello,

I want to print the sparsity structure of a matrix of type MPISBAIJ and try to use this code:

  PetscErrorCode ierr = 0;
  PetscViewer viewer;
  PetscDraw draw;
  ierr = PetscViewerCreate(communicator, &viewer); CHKERRV(ierr);
  ierr = PetscViewerSetType(viewer, PETSCVIEWERDRAW); CHKERRV(ierr);
  ierr = MatView(matrix, viewer); CHKERRV(ierr);
  ierr = PetscViewerDrawGetDraw(viewer, 0, &draw); CHKERRV(ierr);
  ierr = PetscDrawSetPause(draw, -1); CHKERRV(ierr); // Wait for user
  ierr = PetscDrawDestroy(&draw); CHKERRV(ierr);
  ierr = PetscViewerDestroy(&viewer); CHKERRV(ierr);

communicator is of type MPI_Comm and is PETSC_COMM_WORLD.

It opens an X window and shows the matrix just fine. The window closes after a right click and then my application crashes:

--------------------------------------------------------------------------
[1]PETSC ERROR: PetscDrawFlush() line 27 in /data/scratch/lindnefn/software/petsc/src/sys/classes/draw/interface/dflush.c
    Wrong type of object: Parameter # 1
--------------------------------------------------------------------------

I tried to swap the DrawDestroy and ViewerDestroy calls (though, imho the order is correct), but changes nothing.

Thanks,
Florian


More information about the petsc-users mailing list