source: LMDZ5/trunk/libf/phylmd/abort_physic.F90 @ 2311

Last change on this file since 2311 was 2311, checked in by Ehouarn Millour, 9 years ago

Further modifications to enforce physics/dynamics separation:

  • moved iniprint.h and misc_mod back to dyn3d_common, as these should only be used by dynamics.
  • created print_control_mod in the physics to store flags prt_level, lunout, debug to be local to physics (should be used rather than iniprint.h)
  • created abort_physic.F90 , which does the same job as abort_gcm() did, but should be used instead when in physics.
  • reactivated inifis (turned it into a module, inifis_mod.F90) to initialize physical constants and print_control_mod flags.

EM

File size: 1.3 KB
Line 
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
8      USE ioipsl_getincom
9#endif
10      USE mod_phys_lmdz_para
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
Note: See TracBrowser for help on using the repository browser.