Actual source code: ex1f.F

petsc-3.7.1 2016-05-15
Report Typos and Errors
  1: !
  2: !  Simple PETSc Program to test setting error handlers from Fortran
  3: !
  4:       subroutine GenerateErr(line,ierr)
  5: #include <petsc/finclude/petscsys.h>
  6:       PetscErrorCode  ierr
  7:       integer line

  9:       call PetscError(PETSC_COMM_SELF,1,line,1,'Error message',ierr)

 11:       return
 12:       end

 14:       subroutine MyErrHandler(comm,line,fun,file,n,p,mess,ctx,ierr)
 15: #include <petsc/finclude/petscsys.h>
 16:       integer line,n,p
 17:       PetscInt ctx
 18:       PetscErrorCode ierr
 19:       MPI_Comm comm
 20:       character*(*) fun,file,mess

 22:       print*,'My error handler ',mess
 23:       return
 24:       end

 26:       program main
 27: #include <petsc/finclude/petscsys.h>
 28:       PetscErrorCode ierr
 29:       external       MyErrHandler

 31:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 33:       call PetscPushErrorHandler(PetscTraceBackErrorHandler,               &
 34:      &                           PETSC_NULL_INTEGER,ierr)

 36:       call GenerateErr(__LINE__,ierr)

 38:       call PetscPushErrorHandler(MyErrHandler,                           &
 39:      &                           PETSC_NULL_INTEGER,ierr)

 41:       call GenerateErr(__LINE__,ierr)

 43:       call PetscPushErrorHandler(PetscAbortErrorHandler,                   &
 44:      &                           PETSC_NULL_INTEGER,ierr)

 46:       call GenerateErr(__LINE__,ierr)

 48:       call PetscFinalize(ierr)
 49:       end