/[MITgcm]/MITgcm/pkg/exf/exf_check.F
ViewVC logotype

Diff of /MITgcm/pkg/exf/exf_check.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.24 by gforget, Wed Jan 4 02:33:51 2017 UTC revision 1.25 by jmc, Fri Jan 6 21:54:56 2017 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "EXF_OPTIONS.h"  #include "EXF_OPTIONS.h"
5    
6    CBOP
7    C     !ROUTINE: EXF_CHECK
8    C     !INTERFACE:
9    
10        SUBROUTINE EXF_CHECK( myThid )        SUBROUTINE EXF_CHECK( myThid )
11    
12  c     ==================================================================  C     !DESCRIPTION: \bv
13  c     SUBROUTINE EXF_CHECK  C     *==========================================================*
14  c     ==================================================================  C     | S/R EXF_CHECK
15  c  C     | o Check parameters and other package dependences
16        IMPLICIT NONE  C     *==========================================================*
17    C     \ev
18    
19  c     == global variables ==  C     !USES:
20          IMPLICIT NONE
21    
22    C     == Global variables ===
23  #include "EEPARAMS.h"  #include "EEPARAMS.h"
24  #include "SIZE.h"  #include "SIZE.h"
25  #include "PARAMS.h"  #include "PARAMS.h"
26    
27  #include "EXF_PARAM.h"  #include "EXF_PARAM.h"
28  #include "EXF_CONSTANTS.h"  #include "EXF_CONSTANTS.h"
 c     == routine arguments ==  
   
 c     myThid - thread number for this instance of the routine.  
29    
30    C     !INPUT/OUTPUT PARAMETERS:
31    C     myThid   :: my Thread Id number
32        INTEGER myThid        INTEGER myThid
33    
34  c     == local variables ==  C     !LOCAL VARIABLES:
   
35  C     msgBuf   :: Informational/error message buffer  C     msgBuf   :: Informational/error message buffer
36        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
37          INTEGER errCount
38    CEOP
39    
40          _BEGIN_MASTER(myThid)
41          errCount = 0
42    
43  c     == end of interface ==        WRITE(msgBuf,'(A)') 'EXF_CHECK: #define ALLOW_EXF'
44          CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
45         &                    SQUEEZE_RIGHT, myThid )
46    
47  c     check for consistency  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
48    C     check for consistency
49        IF (.NOT.        IF (.NOT.
50       &     (exf_iprec.EQ.precFloat32 .OR. exf_iprec.EQ.precFloat64)       &     (exf_iprec.EQ.precFloat32 .OR. exf_iprec.EQ.precFloat64)
51       &     ) THEN       &     ) THEN
52         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
53       &      'S/R EXF_CHECK: value of exf_iprec not allowed'       &      'S/R EXF_CHECK: value of exf_iprec not allowed'
54         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
55         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
56        ENDIF        ENDIF
57    
58        IF (repeatPeriod.lt.0.) THEN        IF (repeatPeriod.lt.0.) THEN
59         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
60       &      'S/R EXF_CHECK: repeatPeriod must be positive'       &      'S/R EXF_CHECK: repeatPeriod must be positive'
61         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
62         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
63        ENDIF        ENDIF
64    
65        IF (useExfYearlyFields.and.repeatPeriod.ne.0.) THEN        IF (useExfYearlyFields.and.repeatPeriod.ne.0.) THEN
66         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: The use of ',         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: The use of ',
67       $      'useExfYearlyFields AND repeatPeriod is not implemented'       $      'useExfYearlyFields AND repeatPeriod is not implemented'
68         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
69         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
70        ENDIF        ENDIF
71    
72  #ifdef ALLOW_BULKFORMULAE  #ifdef ALLOW_BULKFORMULAE
73        IF ( useAtmWind ) THEN        IF ( useAtmWind ) THEN
74        IF ( ustressfile .NE. ' ' .OR. vstressfile .NE. ' ' ) THEN         IF ( ustressfile .NE. ' ' .OR. vstressfile .NE. ' ' ) THEN
75          WRITE(msgBuf,'(A)')          WRITE(msgBuf,'(A)')
76       &   'S/R EXF_CHECK: use u,v_wind components but not wind-stress'       &   'S/R EXF_CHECK: use u,v_wind components but not wind-stress'
77          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
78          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
79        ENDIF         ENDIF
80        ENDIF        ENDIF
81  #endif  #endif
82    
# Line 72  c     check for consistency Line 85  c     check for consistency
85          WRITE(msgBuf,'(A)')          WRITE(msgBuf,'(A)')
86       & 'S/R EXF_CHECK: read-in wind-stress but not u,v_wind components'       & 'S/R EXF_CHECK: read-in wind-stress but not u,v_wind components'
87          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
88          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
89         ENDIF         ENDIF
90        ENDIF        ENDIF
91    
# Line 82  c     check for consistency Line 95  c     check for consistency
95          WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported option',          WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported option',
96       &        ' when ALLOW_ZENITHANGLE is not defined'       &        ' when ALLOW_ZENITHANGLE is not defined'
97          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
98          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
99        ENDIF        ENDIF
100  #endif  #endif
101    
# Line 91  c     check for consistency Line 104  c     check for consistency
104         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ALLOW_ZENITHANGLE does ',         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ALLOW_ZENITHANGLE does ',
105       &      'not work for carthesian and cylindrical grids'       &      'not work for carthesian and cylindrical grids'
106         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
107         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
108        ENDIF        ENDIF
109        IF ( select_ZenAlbedo.LT.0 .OR. select_ZenAlbedo.GT.3 ) THEN        IF ( select_ZenAlbedo.LT.0 .OR. select_ZenAlbedo.GT.3 ) THEN
110         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported ',         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported ',
111       &      'select_ZenAlbedo choice'       &      'select_ZenAlbedo choice'
112         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
113         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
114        ENDIF        ENDIF
115        IF ( select_ZenAlbedo.EQ.2 .) THEN        IF ( select_ZenAlbedo.EQ.2 .) THEN
116         WRITE(msgBuf,'(A,A)')         WRITE(msgBuf,'(A,A)')
117       &      'S/R EXF_CHECK: *** WARNING *** for daily mean albedo, ',       &      'S/R EXF_CHECK: *** WARNING *** for daily mean albedo, ',
118       &      'it is advised to use select_ZenAlbedo.EQ.1 instead of 2'       &      'it is advised to use select_ZenAlbedo.EQ.1 instead of 2'
119         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
# Line 110  c     check for consistency Line 123  c     check for consistency
123         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: using diurnal albedo ',         WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: using diurnal albedo ',
124       &        'formula requires diurnal downward shortwave forcing'       &        'formula requires diurnal downward shortwave forcing'
125         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
126         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
127        ENDIF        ENDIF
128        IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 3600 ) then        IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 3600 ) then
129         WRITE(msgBuf,'(A,A,A)')         WRITE(msgBuf,'(A,A,A)')
# Line 123  c     check for consistency Line 136  c     check for consistency
136  #endif  #endif
137    
138  #ifdef USE_EXF_INTERPOLATION  #ifdef USE_EXF_INTERPOLATION
139        IF ( climsstfile .NE. ' ' ) THEN        IF ( usingCartesianGrid ) THEN
140           WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
141         &      'USE_EXF_INTERPOLATION assumes latitude/longitude'
142           CALL PRINT_ERROR( msgBuf, myThid )
143           WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
144         &      'input and output coordinates. Trivial to extend to'
145           CALL PRINT_ERROR( msgBuf, myThid )
146           WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
147         &      'cartesian coordinates, but has not yet been done.'
148           CALL PRINT_ERROR( msgBuf, myThid )
149           errCount = errCount + 1
150          ENDIF
151    
152          IF ( climsst_interpMethod.GE.1 .AND. climsstfile.NE.' ' ) THEN
153         IF ( climsst_nlat .GT. MAX_LAT_INC ) THEN         IF ( climsst_nlat .GT. MAX_LAT_INC ) THEN
154          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsst_nlat > MAX_LAT_INC'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsst_nlat > MAX_LAT_INC'
155          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
156          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
157         ENDIF         ENDIF
158         IF ( (climsst_interpMethod.GT.0).AND.         IF ( climsst_lon_inc.GT.500. ) THEN
159       &      (climsst_lon_inc.EQ.UNSET_RL) ) THEN          WRITE(msgBuf,'(2A,1PE16.8)') 'S/R EXF_CHECK: ',
160          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: either ',       &    'Invalid value for: climsst_lon_inc =', climsst_lon_inc
161       &    'climsst_interpMethod must be set to 0 (no interpolation)'  c    &    'Invalid value for: snowprecip_lon_inc =', snowprecip_lon_inc
162          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
163          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: or climsst_lon_inc, etc. ',          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: Fix it ',
164       &    'must be defined explicitely in data.exf'       &    'or Turn off climsst-interp (interpMethod=0)'
165          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
166          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
167         ENDIF         ENDIF
168        ENDIF        ENDIF
169        IF ( climsssfile .NE. ' ' ) THEN        IF ( climsss_interpMethod.GE.1 .AND. climsssfile.NE.' ' ) THEN
170         IF ( climsss_nlat .GT. MAX_LAT_INC ) THEN         IF ( climsss_nlat .GT. MAX_LAT_INC ) THEN
171          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsss_nlat > MAX_LAT_INC'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsss_nlat > MAX_LAT_INC'
172          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
173          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
174         ENDIF         ENDIF
175         IF ( (climsss_interpMethod.GT.0).AND.         IF ( climsss_lon_inc.GT.500. ) THEN
176       &      (climsss_lon_inc.EQ.UNSET_RL) ) THEN          WRITE(msgBuf,'(2A,1PE16.8)') 'S/R EXF_CHECK: ',
177          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: either ',       &    'Invalid value for: climsss_lon_inc =', climsss_lon_inc
      &    'climsss_interpMethod must be set to 0 (no interpolation)'  
178          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
179          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: or climsss_lon_inc, etc. ',          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: Fix it ',
180       &    'must be defined explicitely in data.exf'       &    'or Turn off climsst-interp (interpMethod=0)'
181          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
182          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
183         ENDIF         ENDIF
184        ENDIF        ENDIF
185        IF ( usingCartesianGrid ) THEN  
        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',  
      &      'USE_EXF_INTERPOLATION assumes latitude/longitude'  
        CALL PRINT_ERROR( msgBuf, myThid )  
        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',  
      &      'input and output coordinates. Trivial to extend to'  
        CALL PRINT_ERROR( msgBuf, myThid )  
        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',  
      &      'cartesian coordinates, but has not yet been done.'  
        CALL PRINT_ERROR( msgBuf, myThid )  
        STOP 'ABNORMAL END: S/R EXF_CHECK'  
       ENDIF  
186  C-    some restrictions on 2-component vector field (might be relaxed later on)  C-    some restrictions on 2-component vector field (might be relaxed later on)
187        IF ( ( uwind_interpMethod.GE.1 .AND. uwindfile.NE.' ' ) .OR.        IF ( ( uwind_interpMethod.GE.1 .AND. uwindfile.NE.' ' ) .OR.
188       &     ( vwind_interpMethod.GE.1 .AND. vwindfile.NE.' ' ) ) THEN       &     ( vwind_interpMethod.GE.1 .AND. vwindfile.NE.' ' ) ) THEN
# Line 176  C-    some restrictions on 2-component v Line 190  C-    some restrictions on 2-component v
190          IF ( uwind_interpMethod.EQ.0 .OR. uwindfile.EQ.' ' .OR.          IF ( uwind_interpMethod.EQ.0 .OR. uwindfile.EQ.' ' .OR.
191       &       vwind_interpMethod.EQ.0 .OR. vwindfile.EQ.' ' ) THEN       &       vwind_interpMethod.EQ.0 .OR. vwindfile.EQ.' ' ) THEN
192  C-    stop if one expects interp+rotation (Curvilin-G) which will not happen  C-    stop if one expects interp+rotation (Curvilin-G) which will not happen
193           WRITE(msgBuf,'(A)')           WRITE(msgBuf,'(A)')
194       &        'S/R EXF_CHECK: interp. needs 2 components (wind)'       &        'S/R EXF_CHECK: interp. needs 2 components (wind)'
195           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
196           STOP 'ABNORMAL END: S/R EXF_CHECK'           errCount = errCount + 1
197          ENDIF          ENDIF
198          IF ( uwindstartdate .NE. vwindstartdate .OR.          IF ( uwindstartdate .NE. vwindstartdate .OR.
199       &       uwindperiod    .NE. vwindperiod   ) THEN       &       uwindperiod    .NE. vwindperiod   ) THEN
# Line 190  C-    stop if one expects interp+rotatio Line 204  C-    stop if one expects interp+rotatio
204       &        'files have to have the same startdate and period, ',       &        'files have to have the same startdate and period, ',
205       &        'because S/R EXF_SET_UV assumes that.'       &        'because S/R EXF_SET_UV assumes that.'
206           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
207           STOP 'ABNORMAL END: S/R EXF_CHECK'           errCount = errCount + 1
208          ENDIF          ENDIF
209         ENDIF         ENDIF
210        ENDIF        ENDIF
211        IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.        IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.
212       &     (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') ) THEN       &     (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') ) THEN
213         IF ( readStressOnCgrid ) THEN         IF ( readStressOnCgrid ) THEN
214          WRITE(msgBuf,'(A,A)')          WRITE(msgBuf,'(A,A)')
215       &       'S/R EXF_CHECK: readStressOnCgrid=.TRUE. ',       &       'S/R EXF_CHECK: readStressOnCgrid=.TRUE. ',
216       &       'and interp wind-stress (=A-grid) are not compatible'       &       'and interp wind-stress (=A-grid) are not compatible'
217          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
218          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
219         ENDIF         ENDIF
220         IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN         IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
221          IF ( ustress_interpMethod.EQ.0 .OR. ustressfile.EQ.' ' .OR.          IF ( ustress_interpMethod.EQ.0 .OR. ustressfile.EQ.' ' .OR.
222       &       vstress_interpMethod.EQ.0 .OR. vstressfile.EQ.' ' ) THEN       &       vstress_interpMethod.EQ.0 .OR. vstressfile.EQ.' ' ) THEN
223  C-    stop if one expects interp+rotation (Curvilin-G) which will not happen  C-    stop if one expects interp+rotation (Curvilin-G) which will not happen
224           WRITE(msgBuf,'(A)')           WRITE(msgBuf,'(A)')
225       &        'S/R EXF_CHECK: interp. needs 2 components (wind-stress)'       &        'S/R EXF_CHECK: interp. needs 2 components (wind-stress)'
226           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
227           STOP 'ABNORMAL END: S/R EXF_CHECK'           errCount = errCount + 1
228          ENDIF          ENDIF
229          IF ( ustressstartdate .NE. vstressstartdate .OR.          IF ( ustressstartdate .NE. vstressstartdate .OR.
230       &       ustressperiod    .NE. vstressperiod   ) THEN       &       ustressperiod    .NE. vstressperiod   ) THEN
# Line 221  C-    stop if one expects interp+rotatio Line 235  C-    stop if one expects interp+rotatio
235       &        'files have to have the same startdate and period, ',       &        'files have to have the same startdate and period, ',
236       &        'because S/R EXF_SET_UV assumes that.'       &        'because S/R EXF_SET_UV assumes that.'
237           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
238           STOP 'ABNORMAL END: S/R EXF_CHECK'           errCount = errCount + 1
239          ENDIF          ENDIF
240         ENDIF         ENDIF
241        ENDIF        ENDIF
# Line 236  C-    stop if one expects interp+rotatio Line 250  C-    stop if one expects interp+rotatio
250          WRITE(msgBuf,'(A)')          WRITE(msgBuf,'(A)')
251       & 'S/R EXF_CHECK: Select 1 wind-stress position: A or C-grid'       & 'S/R EXF_CHECK: Select 1 wind-stress position: A or C-grid'
252          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
253          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
254         ENDIF         ENDIF
255         IF (rotateStressOnAgrid.AND..NOT.readStressOnAgrid) THEN         IF (rotateStressOnAgrid.AND..NOT.readStressOnAgrid) THEN
256          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: rotateStressOnAgrid ',          WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: rotateStressOnAgrid ',
257       & 'only applies to cases readStressOnAgrid is true'       & 'only applies to cases readStressOnAgrid is true'
258          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
259          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
260         ENDIF         ENDIF
261    
262        ELSE        ELSE
263         IF ( readStressOnAgrid .OR. readStressOnCgrid .OR.         IF ( readStressOnAgrid .OR. readStressOnCgrid .OR.
264       &      rotateStressOnAgrid) THEN       &      rotateStressOnAgrid) THEN
265          WRITE(msgBuf,'(A)')          WRITE(msgBuf,'(A)')
266       &       'S/R EXF_CHECK: wind-stress position irrelevant'       &       'S/R EXF_CHECK: wind-stress position irrelevant'
267          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
268          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
269         ENDIF         ENDIF
270        ENDIF        ENDIF
271    
272  #ifdef USE_NO_INTERP_RUNOFF  #ifdef USE_NO_INTERP_RUNOFF
273        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
274       &     'S/R EXF_CHECK: USE_NO_INTERP_RUNOFF code has been removed;'       &     'S/R EXF_CHECK: USE_NO_INTERP_RUNOFF code has been removed;'
275        CALL PRINT_ERROR( msgBuf, myThid )        CALL PRINT_ERROR( msgBuf, myThid )
276        WRITE(msgBuf,'(A,A)')        WRITE(msgBuf,'(A,A)')
277       &     'S/R EXF_CHECK: use instead "runoff_interpMethod=0"',       &     'S/R EXF_CHECK: use instead "runoff_interpMethod=0"',
278       &      ' in "data.exf" (EXF_NML_04)'       &      ' in "data.exf" (EXF_NML_04)'
279        CALL PRINT_ERROR( msgBuf, myThid )        CALL PRINT_ERROR( msgBuf, myThid )
280        STOP 'ABNORMAL END: S/R EXF_CHECK'        errCount = errCount + 1
281  #endif /* USE_NO_INTERP_RUNOFF */  #endif /* USE_NO_INTERP_RUNOFF */
282    
283  #ifdef ALLOW_CLIMTEMP_RELAXATION  #ifdef ALLOW_CLIMTEMP_RELAXATION
284        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
285       &     'ALLOW_CLIMTEMP_RELAXATION no longer supported. Use pkg/rbcs'       &     'ALLOW_CLIMTEMP_RELAXATION no longer supported. Use pkg/rbcs'
286        CALL PRINT_ERROR( msgBuf, myThid )        CALL PRINT_ERROR( msgBuf, myThid )
287        STOP 'ABNORMAL END: S/R EXF_CHECK'        errCount = errCount + 1
288  #endif  #endif
289    
290  #ifdef ALLOW_CLIMSALT_RELAXATION  #ifdef ALLOW_CLIMSALT_RELAXATION
291        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',        WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
292       &     'ALLOW_CLIMSALT_RELAXATION no longer supported. Use pkg/rbcs'       &     'ALLOW_CLIMSALT_RELAXATION no longer supported. Use pkg/rbcs'
293        CALL PRINT_ERROR( msgBuf, myThid )        CALL PRINT_ERROR( msgBuf, myThid )
294        STOP 'ABNORMAL END: S/R EXF_CHECK'        errCount = errCount + 1
295  #endif  #endif
296    
297        IF ( climsstTauRelax.NE.0. ) THEN        IF ( climsstTauRelax.NE.0. ) THEN
298  #ifndef ALLOW_CLIMSST_RELAXATION  #ifndef ALLOW_CLIMSST_RELAXATION
299         WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0'         WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0'
300         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
301         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
302       &      'S/R EXF_CHECK: but ALLOW_CLIMSST_RELAXATION is not defined'       &      'S/R EXF_CHECK: but ALLOW_CLIMSST_RELAXATION is not defined'
303         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
304         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
305  #endif  #endif
306         IF ( climsstfile.EQ.' ' ) THEN         IF ( climsstfile.EQ.' ' ) THEN
307          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0 but'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0 but'
308          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
309          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstfile is not set'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstfile is not set'
310          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
311          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
312         ENDIf         ENDIf
313        ENDIf        ENDIf
314          
315        IF ( climsssTauRelax.NE.0. ) THEN        IF ( climsssTauRelax.NE.0. ) THEN
316  #ifndef ALLOW_CLIMSSS_RELAXATION  #ifndef ALLOW_CLIMSSS_RELAXATION
317         WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0'         WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0'
318         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
319         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
320       &      'S/R EXF_CHECK: but ALLOW_CLIMSSS_RELAXATION is not defined'       &      'S/R EXF_CHECK: but ALLOW_CLIMSSS_RELAXATION is not defined'
321         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
322         STOP 'ABNORMAL END: S/R EXF_CHECK'         errCount = errCount + 1
323  #endif  #endif
324         IF ( climsssfile.EQ.' ' ) THEN         IF ( climsssfile.EQ.' ' ) THEN
325          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0 but'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0 but'
326          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
327          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssfile is not set'          WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssfile is not set'
328          CALL PRINT_ERROR( msgBuf, myThid )          CALL PRINT_ERROR( msgBuf, myThid )
329          STOP 'ABNORMAL END: S/R EXF_CHECK'          errCount = errCount + 1
330         ENDIF         ENDIF
331        ENDIF        ENDIF
332    
333    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
334    
335          IF ( errCount.GE.1 ) THEN
336            WRITE(msgBuf,'(A,I3,A)')
337         &       'EXF_CHECK: detected', errCount,' fatal error(s)'
338            CALL PRINT_ERROR( msgBuf, myThid )
339            CALL ALL_PROC_DIE( 0 )
340            STOP 'ABNORMAL END: S/R EXF_CHECK'
341          ENDIF
342    
343          _END_MASTER(myThid)
344    
345        RETURN        RETURN
346        END        END

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

  ViewVC Help
Powered by ViewVC 1.1.22