source: LMDZ5/trunk/libf/dyn3dmem/abort_gcm.F @ 1747

Last change on this file since 1747 was 1747, checked in by lguez, 12 years ago

When an MPI process is stopped by a Fortran stop, other MPI processes may not stop. Use mpi_abort instead.

File size: 1.3 KB
Line 
1!
2! $Id: abort_gcm.F 1492 2011-03-08 08:10:25Z fairhead $
3!
4c
5c
6      SUBROUTINE abort_gcm(modname, message, ierr)
7     
8#ifdef CPP_IOIPSL
9      USE IOIPSL
10#else
11! if not using IOIPSL, we still need to use (a local version of) getin_dump
12      USE ioipsl_getincom
13#endif
14      USE parallel
15#include "iniprint.h"
16 
17C
18C Stops the simulation cleanly, closing files and printing various
19C comments
20C
21C  Input: modname = name of calling program
22C         message = stuff to print
23C         ierr    = severity of situation ( = 0 normal )
24
25      character(len=*) modname
26      integer ierr, ierror_mpi
27      character(len=*) message
28
29      write(lunout,*) 'in abort_gcm'
30#ifdef CPP_IOIPSL
31c$OMP MASTER
32      call histclo
33      call restclo
34      if (MPI_rank .eq. 0) then
35         call getin_dump
36      endif
37c$OMP END MASTER
38#endif
39c     call histclo(2)
40c     call histclo(3)
41c     call histclo(4)
42c     call histclo(5)
43      write(lunout,*) 'Stopping in ', modname
44      write(lunout,*) 'Reason = ',message
45      if (ierr .eq. 0) then
46        write(lunout,*) 'Everything is cool'
47      else
48        write(lunout,*) 'Houston, we have a problem ', ierr
49#ifdef CPP_MPI
50C$OMP CRITICAL MPI
51        call MPI_ABORT(COMM_LMDZ, 1, ierror_mpi)
52C$OMP END CRITICAL MPI
53#else
54        stop 1
55#endif         
56      endif
57      END
Note: See TracBrowser for help on using the repository browser.