Actual source code: ex20f.F

petsc-3.7.4 2016-10-02
Report Typos and Errors
  1: !
  2:       program main
  3:       implicit none
  4: #include <petsc/finclude/petscsys.h>
  5: #include <petsc/finclude/petscvec.h>
  6: #include <petsc/finclude/petscviewer.h>

  8: !
  9: !      This example demonstrates writing an array to a file in binary
 10: !      format that may be read in by PETSc's VecLoad() routine.
 11: !
 12:        PetscInt n,i,ione
 13:        PetscErrorCode ierr
 14:        integer fd
 15:        PetscInt vecclassid(1)
 16:        PetscScalar      array(5)
 17:        Vec              x
 18:        PetscViewer           v

 20:        ione         = 1
 21:        n            = 5
 22:        vecclassid(1) = 1211211 + 3

 24:        call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 26:        do 10, i=1,5
 27:          array(i) = i
 28:  10    continue

 30: !      Open binary file for writing
 31:        call PetscBinaryOpen('testfile',FILE_MODE_WRITE,fd,ierr)
 32: !      Write the Vec header
 33:        call PetscBinaryWrite(fd,vecclassid,ione,PETSC_INT,                    &
 34:      &                       PETSC_FALSE,ierr)
 35: !      Write the array length
 36:        call PetscBinaryWrite(fd,n,ione,PETSC_INT,PETSC_FALSE,ierr)
 37: !      Write the array
 38:        call PetscBinaryWrite(fd,array,n,PETSC_DOUBLE,PETSC_FALSE,ierr)
 39: !      Close the file
 40:        call PetscBinaryClose(fd,ierr)

 42: !
 43: !      Open the file for reading by PETSc
 44: !
 45:        call PetscViewerBinaryOpen(PETSC_COMM_SELF,'testfile',                &
 46:      &                       FILE_MODE_READ,v,ierr)
 47: !
 48: !      Load the vector
 49: !
 50:        call VecCreate(PETSC_COMM_WORLD,x,ierr)
 51:        call VecLoad(x,v,ierr)
 52:        call PetscViewerDestroy(v,ierr)
 53: !
 54: !      Print the vector
 55: !
 56:        call VecView(x,PETSC_VIEWER_STDOUT_SELF,ierr)
 57: !

 59:        call VecDestroy(x,ierr)
 60:        call PetscFinalize(ierr)
 61:        end