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

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

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


Revision 1.26 - (hide annotations) (download)
Sun Jan 8 20:32:28 2017 UTC (7 years, 5 months ago) by gforget
Branch: MAIN
Changes since 1.25: +115 -34 lines
- generalize tests on interpMethod, nlat, and lon_inc that were recently added
  for climsst, climsss to all variables via new subroutine exf_check_interp

1 gforget 1.26 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_check.F,v 1.25 2017/01/06 21:54:56 jmc Exp $
2 jmc 1.4 C $Name: $
3 heimbach 1.1
4     #include "EXF_OPTIONS.h"
5    
6 jmc 1.25 CBOP
7     C !ROUTINE: EXF_CHECK
8     C !INTERFACE:
9    
10 jmc 1.17 SUBROUTINE EXF_CHECK( myThid )
11 heimbach 1.1
12 jmc 1.25 C !DESCRIPTION: \bv
13     C *==========================================================*
14     C | S/R EXF_CHECK
15     C | o Check parameters and other package dependences
16     C *==========================================================*
17     C \ev
18    
19     C !USES:
20 jmc 1.16 IMPLICIT NONE
21 heimbach 1.1
22 jmc 1.25 C == Global variables ===
23 heimbach 1.1 #include "EEPARAMS.h"
24     #include "SIZE.h"
25     #include "PARAMS.h"
26    
27 jmc 1.4 #include "EXF_PARAM.h"
28     #include "EXF_CONSTANTS.h"
29 heimbach 1.1
30 jmc 1.25 C !INPUT/OUTPUT PARAMETERS:
31     C myThid :: my Thread Id number
32 jmc 1.17 INTEGER myThid
33 heimbach 1.1
34 jmc 1.25 C !LOCAL VARIABLES:
35 gforget 1.14 C msgBuf :: Informational/error message buffer
36     CHARACTER*(MAX_LEN_MBUF) msgBuf
37 jmc 1.25 INTEGER errCount
38     CEOP
39    
40     _BEGIN_MASTER(myThid)
41     errCount = 0
42 gforget 1.14
43 jmc 1.25 WRITE(msgBuf,'(A)') 'EXF_CHECK: #define ALLOW_EXF'
44     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
45     & SQUEEZE_RIGHT, myThid )
46 heimbach 1.1
47 jmc 1.25 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
48     C check for consistency
49 mlosch 1.22 IF (.NOT.
50 jmc 1.12 & (exf_iprec.EQ.precFloat32 .OR. exf_iprec.EQ.precFloat64)
51 mlosch 1.22 & ) THEN
52     WRITE(msgBuf,'(A)')
53     & 'S/R EXF_CHECK: value of exf_iprec not allowed'
54     CALL PRINT_ERROR( msgBuf, myThid )
55 jmc 1.25 errCount = errCount + 1
56 mlosch 1.22 ENDIF
57    
58     IF (repeatPeriod.lt.0.) THEN
59 jmc 1.25 WRITE(msgBuf,'(A)')
60 mlosch 1.22 & 'S/R EXF_CHECK: repeatPeriod must be positive'
61     CALL PRINT_ERROR( msgBuf, myThid )
62 jmc 1.25 errCount = errCount + 1
63 mlosch 1.22 ENDIF
64    
65     IF (useExfYearlyFields.and.repeatPeriod.ne.0.) THEN
66     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: The use of ',
67     $ 'useExfYearlyFields AND repeatPeriod is not implemented'
68     CALL PRINT_ERROR( msgBuf, myThid )
69 jmc 1.25 errCount = errCount + 1
70 mlosch 1.22 ENDIF
71 heimbach 1.1
72 jmc 1.20 #ifdef ALLOW_BULKFORMULAE
73     IF ( useAtmWind ) THEN
74 jmc 1.25 IF ( ustressfile .NE. ' ' .OR. vstressfile .NE. ' ' ) THEN
75 mlosch 1.22 WRITE(msgBuf,'(A)')
76     & 'S/R EXF_CHECK: use u,v_wind components but not wind-stress'
77     CALL PRINT_ERROR( msgBuf, myThid )
78 jmc 1.25 errCount = errCount + 1
79     ENDIF
80 jmc 1.20 ENDIF
81 gforget 1.19 #endif
82 gforget 1.18
83 jmc 1.20 IF ( .NOT.useAtmWind ) THEN
84 mlosch 1.22 IF ( uwindfile .NE. ' ' .OR. vwindfile .NE. ' ' ) THEN
85     WRITE(msgBuf,'(A)')
86 gforget 1.19 & 'S/R EXF_CHECK: read-in wind-stress but not u,v_wind components'
87 mlosch 1.22 CALL PRINT_ERROR( msgBuf, myThid )
88 jmc 1.25 errCount = errCount + 1
89 mlosch 1.22 ENDIF
90 jmc 1.20 ENDIF
91 jmc 1.6
92 gforget 1.13 #ifndef ALLOW_ZENITHANGLE
93 jmc 1.15 IF ( useExfZenAlbedo .OR. useExfZenIncoming .OR.
94 gforget 1.13 & select_ZenAlbedo .NE. 0 ) THEN
95 mlosch 1.22 WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported option',
96 gforget 1.14 & ' when ALLOW_ZENITHANGLE is not defined'
97 jmc 1.17 CALL PRINT_ERROR( msgBuf, myThid )
98 jmc 1.25 errCount = errCount + 1
99 gforget 1.13 ENDIF
100     #endif
101    
102     #ifdef ALLOW_ZENITHANGLE
103 mlosch 1.22 IF ( usingCartesianGrid .OR. usingCylindricalGrid ) THEN
104     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ALLOW_ZENITHANGLE does ',
105     & 'not work for carthesian and cylindrical grids'
106     CALL PRINT_ERROR( msgBuf, myThid )
107 jmc 1.25 errCount = errCount + 1
108 mlosch 1.22 ENDIF
109     IF ( select_ZenAlbedo.LT.0 .OR. select_ZenAlbedo.GT.3 ) THEN
110     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: unsupported ',
111     & 'select_ZenAlbedo choice'
112     CALL PRINT_ERROR( msgBuf, myThid )
113 jmc 1.25 errCount = errCount + 1
114 mlosch 1.22 ENDIF
115     IF ( select_ZenAlbedo.EQ.2 .) THEN
116 jmc 1.25 WRITE(msgBuf,'(A,A)')
117 mlosch 1.22 & 'S/R EXF_CHECK: *** WARNING *** for daily mean albedo, ',
118     & 'it is advised to use select_ZenAlbedo.EQ.1 instead of 2'
119     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
120     & SQUEEZE_RIGHT, myThid )
121 gforget 1.13 ENDIF
122 mlosch 1.22 IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 21600 ) THEN
123     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: using diurnal albedo ',
124 gforget 1.14 & 'formula requires diurnal downward shortwave forcing'
125 mlosch 1.22 CALL PRINT_ERROR( msgBuf, myThid )
126 jmc 1.25 errCount = errCount + 1
127 gforget 1.13 ENDIF
128     IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 3600 ) then
129 mlosch 1.22 WRITE(msgBuf,'(A,A,A)')
130     & 'S/R EXF_CHECK: *** WARNING *** ',
131     & 'the diurnal albedo formula is likely not safe for such ',
132     & 'coarse temporal resolution downward shortwave forcing'
133     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
134     & SQUEEZE_RIGHT, myThid )
135 gforget 1.13 ENDIF
136     #endif
137    
138 dimitri 1.3 #ifdef USE_EXF_INTERPOLATION
139 jmc 1.25 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 gforget 1.26
153     CALL EXF_CHECK_INTERP('ustress',ustressfile,ustress_interpMethod,
154     & ustress_nlat,ustress_lon_inc,errCount,myThid)
155     CALL EXF_CHECK_INTERP('vstress',vstressfile,vstress_interpMethod,
156     & vstress_nlat,vstress_lon_inc,errCount,myThid)
157     CALL EXF_CHECK_INTERP('hflux',hfluxfile,hflux_interpMethod,
158     & hflux_nlat,hflux_lon_inc,errCount,myThid)
159     CALL EXF_CHECK_INTERP('sflux',sfluxfile,sflux_interpMethod,
160     & sflux_nlat,sflux_lon_inc,errCount,myThid)
161     CALL EXF_CHECK_INTERP('swflux',swfluxfile,swflux_interpMethod,
162     & swflux_nlat,swflux_lon_inc,errCount,myThid)
163     CALL EXF_CHECK_INTERP('runoff',runofffile,runoff_interpMethod,
164     & runoff_nlat,runoff_lon_inc,errCount,myThid)
165     CALL EXF_CHECK_INTERP('atemp',atempfile,atemp_interpMethod,
166     & atemp_nlat,atemp_lon_inc,errCount,myThid)
167     CALL EXF_CHECK_INTERP('aqh',aqhfile,aqh_interpMethod,
168     & aqh_nlat,aqh_lon_inc,errCount,myThid)
169     CALL EXF_CHECK_INTERP('evap',evapfile,evap_interpMethod,
170     & evap_nlat,evap_lon_inc,errCount,myThid)
171     CALL EXF_CHECK_INTERP('precip',precipfile,precip_interpMethod,
172     & precip_nlat,precip_lon_inc,errCount,myThid)
173     CALL EXF_CHECK_INTERP('snowprecip',
174     & snowprecipfile,snowprecip_interpMethod,
175     & snowprecip_nlat,snowprecip_lon_inc,errCount,myThid)
176     CALL EXF_CHECK_INTERP('uwind',uwindfile,uwind_interpMethod,
177     & uwind_nlat,uwind_lon_inc,errCount,myThid)
178     CALL EXF_CHECK_INTERP('vwind',vwindfile,vwind_interpMethod,
179     & vwind_nlat,vwind_lon_inc,errCount,myThid)
180     CALL EXF_CHECK_INTERP('wspeed',wspeedfile,wspeed_interpMethod,
181     & wspeed_nlat,wspeed_lon_inc,errCount,myThid)
182     CALL EXF_CHECK_INTERP('lwflux',lwfluxfile,lwflux_interpMethod,
183     & lwflux_nlat,lwflux_lon_inc,errCount,myThid)
184     CALL EXF_CHECK_INTERP('swdown',swdownfile,swdown_interpMethod,
185     & swdown_nlat,swdown_lon_inc,errCount,myThid)
186     CALL EXF_CHECK_INTERP('lwdown',lwdownfile,lwdown_interpMethod,
187     & lwdown_nlat,lwdown_lon_inc,errCount,myThid)
188     CALL EXF_CHECK_INTERP('apressure',
189     & apressurefile,apressure_interpMethod,
190     & apressure_nlat,apressure_lon_inc,errCount,myThid)
191     CALL EXF_CHECK_INTERP('areamask',
192     & areamaskfile,areamask_interpMethod,
193     & areamask_nlat,areamask_lon_inc,errCount,myThid)
194     CALL EXF_CHECK_INTERP('climsst',climsstfile,climsst_interpMethod,
195     & climsst_nlat,climsst_lon_inc,errCount,myThid)
196     CALL EXF_CHECK_INTERP('climsss',climsssfile,climsss_interpMethod,
197     & climsss_nlat,climsss_lon_inc,errCount,myThid)
198     CALL EXF_CHECK_INTERP('climustr',
199     & climustrfile,climustr_interpMethod,
200     & climustr_nlat,climustr_lon_inc,errCount,myThid)
201     CALL EXF_CHECK_INTERP('climvstr',
202     & climvstrfile,climvstr_interpMethod,
203     & climvstr_nlat,climvstr_lon_inc,errCount,myThid)
204 jmc 1.25
205 jmc 1.15 C- some restrictions on 2-component vector field (might be relaxed later on)
206     IF ( ( uwind_interpMethod.GE.1 .AND. uwindfile.NE.' ' ) .OR.
207     & ( vwind_interpMethod.GE.1 .AND. vwindfile.NE.' ' ) ) THEN
208     IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
209 mlosch 1.22 IF ( uwind_interpMethod.EQ.0 .OR. uwindfile.EQ.' ' .OR.
210     & vwind_interpMethod.EQ.0 .OR. vwindfile.EQ.' ' ) THEN
211 jmc 1.15 C- stop if one expects interp+rotation (Curvilin-G) which will not happen
212 jmc 1.25 WRITE(msgBuf,'(A)')
213 mlosch 1.22 & 'S/R EXF_CHECK: interp. needs 2 components (wind)'
214     CALL PRINT_ERROR( msgBuf, myThid )
215 jmc 1.25 errCount = errCount + 1
216 mlosch 1.22 ENDIF
217     IF ( uwindstartdate .NE. vwindstartdate .OR.
218     & uwindperiod .NE. vwindperiod ) THEN
219     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
220     & 'For CurvilinearGrid/RotatedGrid, the u and v wind '
221     CALL PRINT_ERROR( msgBuf, myThid )
222     WRITE(msgBuf,'(A,A,A)') 'S/R EXF_CHECK: ',
223     & 'files have to have the same startdate and period, ',
224     & 'because S/R EXF_SET_UV assumes that.'
225     CALL PRINT_ERROR( msgBuf, myThid )
226 jmc 1.25 errCount = errCount + 1
227 mlosch 1.22 ENDIF
228 jmc 1.15 ENDIF
229     ENDIF
230     IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.
231     & (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') ) THEN
232     IF ( readStressOnCgrid ) THEN
233 jmc 1.25 WRITE(msgBuf,'(A,A)')
234 mlosch 1.22 & 'S/R EXF_CHECK: readStressOnCgrid=.TRUE. ',
235     & 'and interp wind-stress (=A-grid) are not compatible'
236     CALL PRINT_ERROR( msgBuf, myThid )
237 jmc 1.25 errCount = errCount + 1
238 jmc 1.15 ENDIF
239     IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
240 mlosch 1.22 IF ( ustress_interpMethod.EQ.0 .OR. ustressfile.EQ.' ' .OR.
241     & vstress_interpMethod.EQ.0 .OR. vstressfile.EQ.' ' ) THEN
242 jmc 1.15 C- stop if one expects interp+rotation (Curvilin-G) which will not happen
243 jmc 1.25 WRITE(msgBuf,'(A)')
244 mlosch 1.22 & 'S/R EXF_CHECK: interp. needs 2 components (wind-stress)'
245     CALL PRINT_ERROR( msgBuf, myThid )
246 jmc 1.25 errCount = errCount + 1
247 mlosch 1.22 ENDIF
248     IF ( ustressstartdate .NE. vstressstartdate .OR.
249     & ustressperiod .NE. vstressperiod ) THEN
250     WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
251     & 'For CurvilinearGrid/RotatedGrid, the u and v wind stress '
252     CALL PRINT_ERROR( msgBuf, myThid )
253     WRITE(msgBuf,'(A,A,A)') 'S/R EXF_CHECK: ',
254     & 'files have to have the same startdate and period, ',
255     & 'because S/R EXF_SET_UV assumes that.'
256     CALL PRINT_ERROR( msgBuf, myThid )
257 jmc 1.25 errCount = errCount + 1
258 mlosch 1.22 ENDIF
259 jmc 1.15 ENDIF
260 jmc 1.6 ENDIF
261 jmc 1.15
262     IF ( (ustress_interpMethod.EQ.0 .AND. ustressfile.NE.' ') .OR.
263     & (vstress_interpMethod.EQ.0 .AND. vstressfile.NE.' ') ) THEN
264 dimitri 1.8 #else /* ifndef USE_EXF_INTERPOLATION */
265 jmc 1.15 IF ( ustressfile .NE. ' ' .OR. vstressfile .NE. ' ' ) THEN
266     #endif /* USE_EXF_INTERPOLATION */
267 mlosch 1.22 IF ( (readStressOnAgrid.AND.readStressOnCgrid) .OR.
268     & .NOT.(readStressOnAgrid.OR.readStressOnCgrid) ) THEN
269     WRITE(msgBuf,'(A)')
270 jmc 1.6 & 'S/R EXF_CHECK: Select 1 wind-stress position: A or C-grid'
271 mlosch 1.22 CALL PRINT_ERROR( msgBuf, myThid )
272 jmc 1.25 errCount = errCount + 1
273 mlosch 1.22 ENDIF
274 gforget 1.23 IF (rotateStressOnAgrid.AND..NOT.readStressOnAgrid) THEN
275     WRITE(msgBuf,'(2A)') 'S/R EXF_CHECK: rotateStressOnAgrid ',
276     & 'only applies to cases readStressOnAgrid is true'
277     CALL PRINT_ERROR( msgBuf, myThid )
278 jmc 1.25 errCount = errCount + 1
279 gforget 1.23 ENDIF
280    
281 jmc 1.6 ELSE
282 jmc 1.25 IF ( readStressOnAgrid .OR. readStressOnCgrid .OR.
283 gforget 1.23 & rotateStressOnAgrid) THEN
284 mlosch 1.22 WRITE(msgBuf,'(A)')
285     & 'S/R EXF_CHECK: wind-stress position irrelevant'
286     CALL PRINT_ERROR( msgBuf, myThid )
287 jmc 1.25 errCount = errCount + 1
288 mlosch 1.22 ENDIF
289 jmc 1.6 ENDIF
290 jmc 1.15
291     #ifdef USE_NO_INTERP_RUNOFF
292 jmc 1.25 WRITE(msgBuf,'(A)')
293 mlosch 1.22 & 'S/R EXF_CHECK: USE_NO_INTERP_RUNOFF code has been removed;'
294 jmc 1.15 CALL PRINT_ERROR( msgBuf, myThid )
295 jmc 1.25 WRITE(msgBuf,'(A,A)')
296 mlosch 1.22 & 'S/R EXF_CHECK: use instead "runoff_interpMethod=0"',
297 jmc 1.15 & ' in "data.exf" (EXF_NML_04)'
298     CALL PRINT_ERROR( msgBuf, myThid )
299 jmc 1.25 errCount = errCount + 1
300 jmc 1.15 #endif /* USE_NO_INTERP_RUNOFF */
301 dimitri 1.3
302 heimbach 1.2 #ifdef ALLOW_CLIMTEMP_RELAXATION
303 mlosch 1.22 WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
304     & 'ALLOW_CLIMTEMP_RELAXATION no longer supported. Use pkg/rbcs'
305     CALL PRINT_ERROR( msgBuf, myThid )
306 jmc 1.25 errCount = errCount + 1
307 heimbach 1.2 #endif
308 heimbach 1.1
309 heimbach 1.2 #ifdef ALLOW_CLIMSALT_RELAXATION
310 mlosch 1.22 WRITE(msgBuf,'(A,A)') 'S/R EXF_CHECK: ',
311     & 'ALLOW_CLIMSALT_RELAXATION no longer supported. Use pkg/rbcs'
312     CALL PRINT_ERROR( msgBuf, myThid )
313 jmc 1.25 errCount = errCount + 1
314 heimbach 1.2 #endif
315    
316 jmc 1.17 IF ( climsstTauRelax.NE.0. ) THEN
317     #ifndef ALLOW_CLIMSST_RELAXATION
318 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0'
319     CALL PRINT_ERROR( msgBuf, myThid )
320 jmc 1.25 WRITE(msgBuf,'(A)')
321 mlosch 1.22 & 'S/R EXF_CHECK: but ALLOW_CLIMSST_RELAXATION is not defined'
322     CALL PRINT_ERROR( msgBuf, myThid )
323 jmc 1.25 errCount = errCount + 1
324 jmc 1.17 #endif
325     IF ( climsstfile.EQ.' ' ) THEN
326 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstTauRelax > 0 but'
327 jmc 1.17 CALL PRINT_ERROR( msgBuf, myThid )
328 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsstfile is not set'
329 jmc 1.17 CALL PRINT_ERROR( msgBuf, myThid )
330 jmc 1.25 errCount = errCount + 1
331 jmc 1.17 ENDIf
332     ENDIf
333 jmc 1.25
334 jmc 1.17 IF ( climsssTauRelax.NE.0. ) THEN
335     #ifndef ALLOW_CLIMSSS_RELAXATION
336 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0'
337     CALL PRINT_ERROR( msgBuf, myThid )
338 jmc 1.25 WRITE(msgBuf,'(A)')
339 mlosch 1.22 & 'S/R EXF_CHECK: but ALLOW_CLIMSSS_RELAXATION is not defined'
340     CALL PRINT_ERROR( msgBuf, myThid )
341 jmc 1.25 errCount = errCount + 1
342 jmc 1.17 #endif
343     IF ( climsssfile.EQ.' ' ) THEN
344 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssTauRelax > 0 but'
345 jmc 1.17 CALL PRINT_ERROR( msgBuf, myThid )
346 mlosch 1.22 WRITE(msgBuf,'(A)') 'S/R EXF_CHECK: climsssfile is not set'
347 jmc 1.17 CALL PRINT_ERROR( msgBuf, myThid )
348 jmc 1.25 errCount = errCount + 1
349     ENDIF
350     ENDIF
351    
352     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
353    
354     IF ( errCount.GE.1 ) THEN
355     WRITE(msgBuf,'(A,I3,A)')
356     & 'EXF_CHECK: detected', errCount,' fatal error(s)'
357     CALL PRINT_ERROR( msgBuf, myThid )
358     CALL ALL_PROC_DIE( 0 )
359 jmc 1.17 STOP 'ABNORMAL END: S/R EXF_CHECK'
360     ENDIF
361    
362 jmc 1.25 _END_MASTER(myThid)
363    
364 jmc 1.6 RETURN
365     END
366 gforget 1.26
367     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
368    
369     CBOP
370     C !ROUTINE: EXF_CHECK_INTERP
371     C !INTERFACE:
372    
373     SUBROUTINE EXF_CHECK_INTERP(
374     & loc_name, loc_file, loc_interpMethod,
375     & loc_nlat, loc_lon_inc, errCount, myThid )
376    
377     C !DESCRIPTION: \bv
378     C *==========================================================*
379     C | S/R EXF_CHECK_INTERP
380     C | o Check parameters for one of the pkg/exf variable
381     C *==========================================================*
382     C \ev
383    
384     C !USES:
385     IMPLICIT NONE
386    
387     C == Global variables ===
388     #include "EEPARAMS.h"
389     #include "EXF_PARAM.h"
390    
391     C !INPUT/OUTPUT PARAMETERS:
392     C myThid :: my Thread Id number
393     INTEGER myThid
394     INTEGER errCount
395     character*(*) loc_name
396     character*(*) loc_file
397     INTEGER loc_nlat
398     INTEGER loc_interpMethod
399     _RL loc_lon_inc
400    
401     C !LOCAL VARIABLES:
402     C msgBuf :: Informational/error message buffer
403     CHARACTER*(MAX_LEN_MBUF) msgBuf
404     CEOP
405    
406     IF ( loc_interpMethod.GE.1 .AND. loc_file.NE.' ' ) THEN
407     IF ( loc_nlat .GT. MAX_LAT_INC ) THEN
408     WRITE(msgBuf,'(3A)') 'S/R EXF_CHECK_INTERP: ',loc_name,
409     & '_nlat > MAX_LAT_INC'
410     CALL PRINT_ERROR( msgBuf, myThid )
411     errCount = errCount + 1
412     ENDIF
413     IF ( loc_lon_inc.GT.500. ) THEN
414     WRITE(msgBuf,'(4A,1PE16.8)') 'S/R EXF_CHECK_INTERP: ',
415     & 'Invalid value for: ',loc_name,'_lon_inc =', loc_lon_inc
416     CALL PRINT_ERROR( msgBuf, myThid )
417     WRITE(msgBuf,'(4A)') 'S/R EXF_CHECK_INTERP: Fix it ',
418     & 'or Turn off ',loc_name,'-interp (interpMethod=0)'
419     CALL PRINT_ERROR( msgBuf, myThid )
420     errCount = errCount + 1
421     ENDIF
422     ENDIF
423    
424     RETURN
425     END
426    
427    

  ViewVC Help
Powered by ViewVC 1.1.22