LMDZ
abort_physic.F90
Go to the documentation of this file.
1 ! $Id: $
2  SUBROUTINE abort_physic(modname, message, ierr)
3 
4 #ifdef CPP_IOIPSL
5  USE ioipsl
6 #else
7 ! if not using IOIPSL, we still need to use (a local version of) getin_dump
9 #endif
11  USE print_control_mod, ONLY: lunout
12  IMPLICIT NONE
13 !
14 ! Stops the simulation cleanly, closing files and printing various
15 ! comments
16 !
17 ! Input: modname = name of calling program
18 ! message = stuff to print
19 ! ierr = severity of situation ( = 0 normal )
20 
21  character(len=*), intent(in):: modname
22  integer ierr, ierror_mpi
23  character(len=*), intent(in):: message
24 
25  write(lunout,*) 'in abort_physic'
26 #ifdef CPP_IOIPSL
27 !$OMP MASTER
28  call histclo
29  call restclo
30  if (mpi_rank .eq. 0) then
31  call getin_dump
32  endif
33 !$OMP END MASTER
34 #endif
35 
36  write(lunout,*) 'Stopping in ', modname
37  write(lunout,*) 'Reason = ',message
38  if (ierr .eq. 0) then
39  write(lunout,*) 'Everything is cool'
40  else
41  write(lunout,*) 'Houston, we have a problem, ierr = ', ierr
42 #ifdef CPP_MPI
43 !$OMP CRITICAL (MPI_ABORT_PHYSIC)
44  call mpi_abort(comm_lmdz_phy, 1, ierror_mpi)
45 !$OMP END CRITICAL (MPI_ABORT_PHYSIC)
46 #else
47  stop 1
48 #endif
49  endif
50  END
subroutine, public getin_dump(fileprefix)
subroutine abort_physic(modname, message, ierr)
Definition: abort_physic.F90:3
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
Definition: iniprint.h:7