Actual source code: ex1f.F
petsc-3.6.4 2016-04-12
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