source: CPL/oasis3/trunk/src/mod/oasis3/src/ferror.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.7 KB
Line 
1      SUBROUTINE ferror
2C****
3C               *****************************
4C               * OASIS ROUTINE  -  LEVEL C *
5C               * -------------     ------- *
6C               *****************************
7C
8C**** *ferror*  - Signal handler
9C
10C     Purpose:
11C     -------
12C     ferror is executed each time signal sigcld is caught.
13C     It stops execution of run due to child process death.
14C
15C**   Interface:
16C     ---------
17C
18C     Input:
19C     -----
20C     None
21C
22C     Output:
23C     ------
24C     None
25C
26C     Workspace:
27C     ---------
28C     None
29C
30C     Externals:
31C     ---------
32C     wait, waitcld
33C
34C     Reference:
35C     ---------
36C     See OASIS manual (1997)
37C
38C     History:
39C     -------
40C       Version   Programmer     Date      Description
41C       -------   ----------     ----      ----------- 
42C       1.0       L. Terray      94/01/01  created
43C       2.0       L. Terray      95/12/20  modified: new structure
44C       2.2       L. Terray      97/10/10  added: Include nproc.h
45C       2.2       S. Valcke, L.T 97/12/24  added: call wait and waitcld 
46C       2.3       L. Terray      99/09/15  added: GMEM branch
47C       2.5       S. Valcke      2K/09/04  Remove cmach
48C
49C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50C
51C* ---------------- Include files and use of modules---------------------------
52C
53      USE mod_kinds_oasis
54      USE mod_experiment
55      USE mod_parameter
56      USE mod_nproc
57      USE mod_unit
58      USE mod_hardware
59C
60C* ---------------------------- Local declarations ----------------------
61C
62      INTEGER (kind=ip_intwp_p) wait
63C
64C* ---------------------------- Poema verses ----------------------------
65C
66C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67C
68C*    1. Signal sigcld has been caught; check which process is dead
69C        ----------------------------------------------------------
70C
71      WRITE (UNIT = nulou,FMT = *) ' '
72      WRITE (UNIT = nulou,FMT = *) ' '
73      WRITE (UNIT = nulou,FMT = *) ' ROUTINE ferror  -  Level C'
74      WRITE (UNIT = nulou,FMT = *) ' **************     *******'
75      WRITE (UNIT = nulou,FMT = *) ' '
76      WRITE (UNIT = nulou,FMT = *) ' Catch child process death'
77      WRITE (UNIT = nulou,FMT = *) ' '
78      WRITE (UNIT = nulou,FMT = *) ' '
79#ifdef use_comm_PIPE 
80          iwone = wait(isone)
81#elif defined use_comm_SIPC || defined use_comm_GMEM
82          CALL waitcld (isone, iwone)
83#endif
84      DO 110 jm = 1, ig_nmodel
85        IF (iwone .EQ. nproc(jm)) THEN
86            WRITE (UNIT = nulou,FMT = *) 
87     $          ' WARNING: sigcld has been caught by coupler'
88            WRITE (UNIT = nulou,FMT = *) 
89     $          ' =======  ======                    ======='
90            WRITE (UNIT = nulou,FMT = *) 
91     $          ' model ', cmodnam(jm), 
92     $          ' process pid = ',nproc(jm),' is dead'
93            WRITE (UNIT = nulou,FMT = *) ' '
94            WRITE (UNIT = nulou,FMT = *) 
95     $          ' We STOP the simulation now !!!'
96            WRITE (UNIT = nulou,FMT = *) ' '
97        ENDIF
98 110  CONTINUE
99      CALL FLUSH (nulou)
100C
101C
102C*    2. End of simulation if abnormal termination
103C        -----------------------------------------
104C
105      CALL HALTE ('STOP in ferror')
106C
107C
108C*    3. End of routine
109C        --------------
110C
111      RETURN
112      END
113      SUBROUTINE fignore
114C****
115C               *****************************
116C               * OASIS ROUTINE  -  LEVEL C *
117C               * -------------     ------- *
118C               *****************************
119C
120C**** *fignore*  - Signal handler
121C
122C     Purpose:
123C     -------
124C     fignore is executed each time signal sigcld is caught.
125C**   Interface:
126C     ---------
127C     Input:
128C     -----
129C     None
130C
131C     Output:
132C     ------
133C     None
134C
135C     Workspace:
136C     ---------
137C     None
138C
139C     Externals:
140C     ---------
141C
142C     Reference:
143C     ---------
144C
145C     History:
146C     -------
147C       Version   Programmer     Date      Description
148C       -------   ----------     ----      ----------- 
149C       2.5       S. Valcke      01/08/02  Created
150C
151C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
152C
153C* ---------------- Include files and use of modules-------------------   
154C
155      USE mod_unit
156C
157C* ---------------------------- Local declarations ----------------------
158C
159C* ---------------------------- Poema verses ----------------------------
160C
161C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
162C
163      WRITE (UNIT = nulou,FMT = *) ' '
164      WRITE (UNIT = nulou,FMT = *) ' '
165      WRITE (UNIT = nulou,FMT = *) ' ROUTINE fignore -  Level C'
166      WRITE (UNIT = nulou,FMT = *) ' ***************    *******'
167      WRITE (UNIT = nulou,FMT = *) ' '
168      WRITE (UNIT = nulou,FMT = *) ' '
169C
170C*    End of routine
171C     --------------
172C
173      RETURN
174      END
Note: See TracBrowser for help on using the repository browser.