source: CPL/oasis3/trunk/src/lib/clim/src/CLIM_Quit.F @ 1677

Last change on this file since 1677 was 1677, checked in by aclsce, 12 years ago

Imported oasis3 (tag ipslcm5a) from cvs server to svn server (igcmg project).

File size: 4.2 KB
Line 
1      SUBROUTINE CLIM_Quit(kinfo)
2c
3c*    *** Quit ***   CLIM 3.0
4c
5c     purpose:
6c     --------
7c        leave mpi
8c
9c     interface:
10c     ----------
11c        kinfo  : output status
12c
13c     lib mp:
14c     -------
15c        mpi-2
16c
17c     author:
18c     -------
19c        Eric Sevault   - METEO FRANCE
20c        Laurent Terray - CERFACS
21c        Jean Latour    - F.S.E.   (mpi-2)
22c        Arnaud Caubel - Fecit - Added deallocation of CLIM arrays
23c     ----------------------------------------------------------------
24#if defined use_comm_MPI1 || defined use_comm_MPI2 || !defined use_comm_MPI1 && !defined use_comm_MPI2 && !defined use_comm_SIPC && !defined use_comm_GMEM && !defined use_comm_PIPE && !defined use_comm_NONE
25      USE mod_kinds_oasis
26      USE mod_clim
27      USE mod_comclim
28#include <mpif.h>
29c     ----------------------------------------------------------------
30      INTEGER (kind=ip_intwp_p) kinfo
31c     ----------------------------------------------------------------
32      INTEGER (kind=ip_intwp_p) info, il_rank, ji
33c     ----------------------------------------------------------------
34      INTEGER (kind=ip_intwp_p)       il_bufsizebyt
35      REAL (kind=ip_double_p)  dl_bufaddr
36c
37c*    0. First Check
38c     --------------
39c
40      IF (nexit.ne.1) THEN
41          kinfo = CLIM_FastExit
42          WRITE(nulprt,FMT='(A)') 'Quit - should not be called'
43          GO TO 1010
44      ENDIF
45      WRITE(nulprt,*)'entering clim_quit'
46      kinfo = CLIM_Ok
47c
48      CALL MPI_Comm_Rank(mpi_comm,il_rank,mpi_err)
49c
50      DO ji = 0, ncplprocs-1 
51        IF (il_rank.eq.modtid(ji)) THEN
52            DEALLOCATE (ncode, stat=il_err)
53            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "ncode"
54     $          deallocation in CLIM_Quit routine ! '
55            DEALLOCATE (delta, stat=il_err)
56            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "delta"
57     $          deallocation in CLIM_Quit routine ! '
58            DEALLOCATE (delte, stat=il_err)
59            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "delte"
60     $          deallocation in CLIM_Quit routine ! '
61            DEALLOCATE (cnames, stat=il_err)
62            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "cnames"
63     $          deallocation in CLIM_Quit routine ! '
64            DEALLOCATE (myport, stat = il_ERR)
65            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
66     $          in "myport" deallocation in CLIM_Quit !'
67            DEALLOCATE (mydist,stat = il_ERR)
68            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
69     $          in "mydist" deallocation in CLIM_Quit !'
70            DEALLOCATE (cports, stat = il_ERR)
71            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
72     $          in "cports" allocation in CLIM_Quit !'
73            DEALLOCATE(clrport, stat = il_ERR)
74            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)'Error in clrport
75     $          deallocation in CLIM_Quit !'
76            DEALLOCATE(irdist, stat = il_ERR)
77            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "irdist"
78     $          deallocation in CLIM_Quit'
79            DEALLOCATE(irport, stat = il_ERR)
80            IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "irport"
81     $          deallocation in CLIM_Quit'
82            DEALLOCATE (mylink, stat = il_ERR)
83            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
84     $          in "mylink" allocation in CLIM_Quit !'
85            DEALLOCATE (pkwork, stat = il_ERR)
86            IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
87     $          in "pkwork" allocation in CLIM_Quit !'
88            IF (lg_bsend) then
89               CALL MPI_Buffer_Detach(dl_bufaddr,il_bufsizebyt,mpi_err)
90               DEALLOCATE (dg_bufsend, stat = il_ERR)
91               IF (il_ERR.ne.CLIM_Ok) WRITE(nulprt,*)' Problem
92     $             in "dg_bufsend" allocation in CLIM_Quit !'
93            ENDIF
94        ENDIF
95      END DO
96      DEALLOCATE (modtid, stat=il_err)
97      IF (il_ERR.ne.0) WRITE(nulprt,*)'Error in "modtid"
98     $    deallocation in CLIM_Quit routine ! '
99c
100c
101      CALL MPI_Finalize ( info )
102c
103      WRITE(nulprt,FMT='(A,I3,A)')
104     *     'Quit - exit status <mpi ',info,'>'
105c
106c     ----------------------------------------------------------------
107c
108 1010 CONTINUE
109      CLOSE (nulprt)
110#endif
111      RETURN
112      END
Note: See TracBrowser for help on using the repository browser.