Petsc questions

Nguyen, Hung V ERDC-ITL-MS Hung.V.Nguyen at
Fri Aug 15 11:00:43 CDT 2008

Hello All,

I have question about how to write a matrix to output file in binary (or
ASCII) format.
In the test case below, the ai is original matrix and a is petsc version. 

The test runs successfully to write a binary file named "matrix.mat".
However, when I rerun the test with reading matrix via "matload", then I got
the error "Unknown Mat type given: !". Please let me know how to fix it.

 Thank you in advance,



-- error at running:
 yod -np 16 ./fw -ksp_type cg -pc_type bjacobi -ksp_rtol 1.0e-15 -ksp_max_it

hvnguyen:sapphire18% yod -np 16 ./fw -ksp_type cg -pc_type bjacobi -ksp_rtol
1.0e-15 -ksp_max_it 50000
[10]PETSC ERROR: [9]PETSC ERROR: --------------------- Error Message
--------------------- Error Message ------------------------------------
[10]PETSC ERROR: [9]PETSC ERROR: Unknown type. Check for miss-spelling or
missing external package needed for type!
Unknown type. Check for miss-spelling or missing external package needed for
[10]PETSC ERROR: [9]PETSC ERROR: Unknown Mat type given: !
Unknown Mat type given: !

!         Define the a matrix.

      ione = 1
      ii = ncol
      jj = ncol / 2
      call MatCreateMPIAIJ (PETSC_COMM_WORLD, nown, nown, ng, ng,
     &  ii, PETSC_NULL_INTEGER, jj, PETSC_NULL_INTEGER, a, ierr)
      call MatSetFromOptions (a, ierr)

      do i = 1, nown

        ii = npetsc(i) - 1

        do j = 1, ncol
          jloc = id(i, j)
          if (jloc .ne. 0) then
            jj = npetsc(jloc) - 1
            v = ai(i, j)
            call MatSetValues (a, ione, ii, ione, jj, v,
     &        INSERT_VALUES, ierr)
          end if
        end do

      end do

      call MatAssemblyBegin (a, MAT_FINAL_ASSEMBLY, ierr)
      call MatAssemblyEnd (a, MAT_FINAL_ASSEMBLY, ierr)
!        Now Write this matrix to a binary file
         call PetscViewerBinaryOpen(PETSC_COMM_WORLD,'matrix.mat',
     &        FILE_MODE_WRITE,view,ierr)
         call PetscViewerSetFormat(view,PETSC_VIEWER_BINARY_NATIVE,ierr)
         call MatView(A,view,ierr)
         call PetscViewerDestroy(view,ierr)

---- Test to load A matix:
!!! read matrix

      call PetscViewerBinaryOpen(PETSC_COMM_WORLD,'matrix.mat',         &
     &                          FILE_MODE_READ,view,ierr)
         call PetscViewerSetFormat(view,PETSC_VIEWER_BINARY_NATIVE,ierr)
      call MatLoad(view,MPIAIJ,A,ierr)
      call PetscViewerDestroy(view,ierr)

More information about the petsc-users mailing list