PetscFinalize is collective, similar to MPI_Finalize. You could MPI_Bcast the result if you want to cleanly exit. If you want to raise an error, you could use SETERRA as in other PETSc Fortran examples.
Paula Sanematsu via petsc-users <petsc-users@mcs.anl.gov> writes: > Hi, > > I have a Fortran code that calls an external function only at the root > processor. If this external function returns an error code that indicates > that it failed, then I call PetscFinalize() only at the root processor. For > example: > > if(rank==0) then > metis_call_status = METIS_SetDefaultOptions(opts) > if( metis_call_status /= 1 ) then > call PetscFinalize(ierr) > stop > end if > end if > > I noticed that this will cause the other processors to "hang". I don't want > to change the Metis call. Do you have a suggestion on how to propagate > PetscFinalize to other processors? Or another solution? > > Thank you, > > Paula