/[MITgcm]/MITgcm/model/src/packages_check.F
ViewVC logotype

Contents of /MITgcm/model/src/packages_check.F

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


Revision 1.69 - (show annotations) (download)
Fri Dec 25 15:19:30 2015 UTC (8 years, 5 months ago) by gforget
Branch: MAIN
Changes since 1.68: +2 -2 lines
- add missing useAUTODIFF and useSMOOTH switches.

1 C $Header: /u/gcmpack/MITgcm/model/src/packages_check.F,v 1.68 2014/11/02 21:22:00 gforget Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: PACKAGES_CHECK
9 C !INTERFACE:
10 SUBROUTINE PACKAGES_CHECK( myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE PACKAGES_CHECK
14 C | o Check runtime activated packages have been built in.
15 C *==========================================================*
16 C | All packages can be selected/deselected at build time
17 C | ( when code is compiled ) and activated/deactivated at
18 C | runtime. This routine does a quick check to trap packages
19 C | that were activated at runtime but that were not compiled
20 C | in at build time.
21 C *==========================================================*
22 C \ev
23
24 C !CALLING SEQUENCE:
25 C PACKAGES_CHECK
26 C |
27 C |-- OBCS_CHECK
28 C |
29 C |-- OPPS_CHECK
30 C |
31 C |-- PP81_CHECK
32 C |
33 C |-- KL10_CHECK
34 C |
35 C |-- MY82_CHECK
36 C |
37 C |-- GGL90_CHECK
38 C |
39 C |-- KPP_CHECK
40 C |
41 C |-- GMREDI_CHECK
42 C |
43 C |-- BBL_CHECK
44 C |
45 C |-- EXF_CHECK
46 C |
47 C |-- PTRACERS_CHECK
48 C |
49 C |-- GCHEM_CHECK
50 C |
51 C |-- OFFLINE_CHECK
52 C |
53 C |-- SEAICE_CHECK
54 C |
55 C |-- SHELFICE_CHECK
56 C |
57 C |-- STREAMICE_CHECK
58 C |
59 C |-- ICEFRONT_CHECK
60 C |
61 C |-- THSICE_CHECK
62 C |
63 C |-- LAND_CHECK
64 C |
65 C |-- ATM_PHYS_CHECK
66 C |
67 C |-- AUTODIFF_CHECK
68 C |
69 C |-- CTRL_CHECK
70 C |
71 C |-- COST_CHECK
72 C |
73 C |-- GRDCHK_CHECK
74 C |
75 C |-- SBO_CHECK
76 C |
77 C |-- ECCO_CHECK
78 C |
79 C |-- DIAGNOSTICS_CHECK
80 C |
81 C |-- REGRID_CHECK
82 C |
83 C |-- LAYERS_CHECK
84 C |
85 C |-- NEST_CHILD_CHECK
86 C |
87 C |-- NEST_PARENT_CHECK
88 C |
89 C |-- OASIS_CHECK
90 C |
91 C |-- RUNCLOCK_CHECK
92 C |
93 C |-- MYPACKAGE_CHECK
94 C |
95 C |-- GAD_CHECK
96
97 !USES:
98 IMPLICIT NONE
99 C === Global variables ===
100 #include "SIZE.h"
101 #include "EEPARAMS.h"
102 #include "PARAMS.h"
103
104 C !INPUT/OUTPUT PARAMETERS:
105 C === Routine arguments ===
106 C myThid :: my Thread Id number
107 INTEGER myThid
108
109 C !LOCAL VARIABLES:
110 C === Local variables ===
111 C msgBuf :: Informational/error message buffer
112 CHARACTER*(MAX_LEN_MBUF) msgBuf
113 CEOP
114
115 _BEGIN_MASTER(myThid)
116 WRITE(msgBuf,'(A)')
117 &'== Packages configuration : Check & print summary =='
118 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
119 & SQUEEZE_RIGHT, myThid )
120 WRITE(msgBuf,'(A)') ' '
121 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
122 & SQUEEZE_RIGHT, myThid )
123 _END_MASTER(myThid)
124
125 C--- Start with non-standard packages (without or with non standard flag)
126
127 #ifndef ALLOW_MNC
128 IF (useMNC) THEN
129 _BEGIN_MASTER(myThid)
130 WRITE(msgBuf,'(2A)') '** WARNING **',
131 & ' PACKAGES_CHECK: useMNC is TRUE'
132 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
133 & SQUEEZE_RIGHT, myThid )
134 WRITE(msgBuf,'(2A)') '** WARNING **',
135 & ' but pkg/mnc has not been compiled (#undef ALLOW_MNC)'
136 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
137 & SQUEEZE_RIGHT, myThid )
138 _END_MASTER(myThid)
139 ENDIF
140 #endif
141
142 #ifndef ALLOW_MOM_VECINV
143 IF ( momStepping .AND. vectorInvariantMomentum ) THEN
144 WRITE(msgBuf,'(2A)')
145 & 'PACKAGES_CHECK: cannot step forward Momentum',
146 & ' without pkg/mom_vecinv'
147 CALL PRINT_ERROR( msgBuf , myThid )
148 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
149 & 'Re-compile with pkg "mom_vecinv" in packages.conf'
150 CALL PRINT_ERROR( msgBuf , myThid )
151 CALL ALL_PROC_DIE( myThid )
152 STOP 'ABNORMAL END: S/R PACKAGES_CHECK'
153 ENDIF
154 #endif
155 #ifndef ALLOW_MOM_FLUXFORM
156 IF ( momStepping .AND. .NOT.vectorInvariantMomentum ) THEN
157 WRITE(msgBuf,'(2A)')
158 & 'PACKAGES_CHECK: cannot step forward Momentum',
159 & ' without pkg/mom_fluxform'
160 CALL PRINT_ERROR( msgBuf , myThid )
161 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
162 & 'Re-compile with pkg "mom_fluxform" in packages.conf'
163 CALL PRINT_ERROR( msgBuf , myThid )
164 CALL ALL_PROC_DIE( myThid )
165 STOP 'ABNORMAL END: S/R PACKAGES_CHECK'
166 ENDIF
167 #endif
168
169 #ifndef ALLOW_GENERIC_ADVDIFF
170 IF ( tempStepping .OR. saltStepping ) THEN
171 WRITE(msgBuf,'(2A)')
172 & 'PACKAGES_CHECK: cannot step forward Temp or Salt',
173 & ' without pkg/generic_advdiff'
174 CALL PRINT_ERROR( msgBuf , myThid )
175 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
176 & 'Re-compile with pkg "generic_advdiff" in packages.conf'
177 CALL PRINT_ERROR( msgBuf , myThid )
178 CALL ALL_PROC_DIE( myThid )
179 STOP 'ABNORMAL END: S/R PACKAGES_CHECK'
180 ENDIF
181 #endif
182
183 #ifndef ALLOW_MONITOR
184 C If monitorFreq is finite, make sure the pkg/monitor is being compiled
185 IF (monitorFreq.NE.0.) CALL PACKAGES_ERROR_MSG(
186 & 'MONITOR', 'monitorFreq <> 0', myThid )
187 #endif
188
189 #ifndef ALLOW_TIMEAVE
190 C If taveFreq is finite, make sure the pkg/timeave is being compiled
191 IF (taveFreq.NE.0.) CALL PACKAGES_ERROR_MSG(
192 & 'TIMEAVE', 'taveFreq <> 0', myThid )
193 #endif
194
195 #ifndef ALLOW_CD_CODE
196 IF (useCDscheme) CALL PACKAGES_ERROR_MSG(
197 & 'CD_CODE', 'useCDscheme=.T.', myThid )
198 #endif
199
200 C--- Continue with standard packages (with standard usePKG flag)
201
202 #ifdef ALLOW_OBCS
203 IF (useOBCS) CALL OBCS_CHECK( myThid )
204 #else
205 IF (useOBCS) CALL PACKAGES_ERROR_MSG('OBCS',' ',myThid)
206 #endif
207
208 #ifndef ALLOW_SHAP_FILT
209 IF (useSHAP_FILT)
210 & CALL PACKAGES_ERROR_MSG( 'SHAP_FILT', ' ', myThid )
211 #endif
212
213 #ifndef ALLOW_ZONAL_FILT
214 IF (useZONAL_FILT)
215 & CALL PACKAGES_ERROR_MSG( 'ZONAL_FILT', ' ', myThid )
216 #endif
217
218 #ifdef ALLOW_OPPS
219 IF (useOPPS) CALL OPPS_CHECK( myThid )
220 #else
221 IF (useOPPS) CALL PACKAGES_ERROR_MSG('OPPS',' ',myThid)
222 #endif
223
224 #ifdef ALLOW_PP81
225 IF (usePP81) CALL PP81_CHECK( myThid )
226 #else
227 IF (usePP81) CALL PACKAGES_ERROR_MSG('PP81',' ',myThid)
228 #endif
229
230 #ifdef ALLOW_KL10
231 IF (useKL10) CALL KL10_CHECK( myThid )
232 #else
233 IF (useKL10) CALL PACKAGES_ERROR_MSG('KL10',' ',myThid)
234 #endif
235
236 #ifdef ALLOW_MY82
237 IF (useMY82) CALL MY82_CHECK( myThid )
238 #else
239 IF (useMY82) CALL PACKAGES_ERROR_MSG('MY82',' ',myThid)
240 #endif
241
242 #ifdef ALLOW_GGL90
243 IF (useGGL90) CALL GGL90_CHECK( myThid )
244 #else
245 IF (useGGL90) CALL PACKAGES_ERROR_MSG('GGL90',' ',myThid)
246 #endif
247
248 #ifdef ALLOW_KPP
249 IF (useKPP) CALL KPP_CHECK( myThid )
250 #else
251 IF (useKPP) CALL PACKAGES_ERROR_MSG('KPP',' ',myThid)
252 #endif
253
254 #ifdef ALLOW_GMREDI
255 IF (useGMRedi) CALL GMREDI_CHECK( myThid )
256 #else
257 IF (useGMRedi) CALL PACKAGES_ERROR_MSG('GMRedi',' ',myThid)
258 #endif
259
260 #ifdef ALLOW_BBL
261 IF (useBBL) CALL BBL_CHECK( myThid )
262 #else
263 IF (useBBL) CALL PACKAGES_ERROR_MSG('BBL',' ',myThid)
264 #endif
265
266 #ifndef ALLOW_DOWN_SLOPE
267 IF (useDOWN_SLOPE)
268 & CALL PACKAGES_ERROR_MSG('DOWN_SLOPE',' ',myThid)
269 #endif
270
271 #ifndef ALLOW_CAL
272 IF (useCAL) CALL PACKAGES_ERROR_MSG('CAL',' ',myThid)
273 #endif
274
275 #ifdef ALLOW_EXF
276 IF (useEXF) CALL EXF_CHECK( myThid )
277 #else
278 IF (useEXF) CALL PACKAGES_ERROR_MSG('EXF',' ',myThid)
279 #endif
280
281 #ifndef ALLOW_BULK_FORCE
282 IF (useBulkForce) CALL PACKAGES_ERROR_MSG(
283 & 'BULK_FORCE', 'useBulkForce=.T.', myThid )
284 #endif
285
286 #ifndef ALLOW_EBM
287 IF (useEBM) CALL PACKAGES_ERROR_MSG('EBM',' ',myThid)
288 #endif
289
290 #ifndef ALLOW_CHEAPAML
291 IF (useCheapAML) CALL PACKAGES_ERROR_MSG('CheapAML',' ',myThid)
292 #endif
293
294 #ifndef ALLOW_FLT
295 IF (useFLT) CALL PACKAGES_ERROR_MSG('FLT',' ',myThid)
296 #endif
297
298 #ifdef ALLOW_PTRACERS
299 IF (usePTRACERS) CALL PTRACERS_CHECK( myThid )
300 #else
301 IF (usePTRACERS) CALL PACKAGES_ERROR_MSG('PTRACERS',' ',myThid)
302 #endif
303
304 #ifdef ALLOW_GCHEM
305 IF (useGCHEM) CALL GCHEM_CHECK( myThid )
306 #else
307 IF (useGCHEM) CALL PACKAGES_ERROR_MSG('GCHEM',' ',myThid)
308 #endif
309
310 #ifndef ALLOW_RBCS
311 IF (useRBCS) CALL PACKAGES_ERROR_MSG('RBCS',' ',myThid)
312 #endif
313
314 #ifdef ALLOW_OFFLINE
315 IF (useOffLine) CALL OFFLINE_CHECK( myThid )
316 #else
317 IF (useOffLine) CALL PACKAGES_ERROR_MSG('OffLine',' ',myThid)
318 #endif
319
320 #ifndef ALLOW_MATRIX
321 IF (useMATRIX) CALL PACKAGES_ERROR_MSG('MATRIX',' ',myThid)
322 #endif
323
324 #ifndef ALLOW_FRAZIL
325 IF (useFRAZIL) CALL PACKAGES_ERROR_MSG('FRAZIL',' ',myThid)
326 #endif
327
328 #ifdef ALLOW_SEAICE
329 IF (useSEAICE) CALL SEAICE_CHECK( myThid )
330 #else
331 IF (useSEAICE) CALL PACKAGES_ERROR_MSG('SEAICE',' ',myThid)
332 #endif
333
334 #ifdef ALLOW_SALT_PLUME
335 IF (useSALT_PLUME)CALL SALT_PLUME_CHECK( myThid )
336 #else
337 IF (useSALT_PLUME)CALL PACKAGES_ERROR_MSG('SALT_PLUME',' ',myThid)
338 #endif
339
340 #ifdef ALLOW_SHELFICE
341 IF (useShelfIce) CALL SHELFICE_CHECK( myThid )
342 #else
343 IF (useShelfIce) CALL PACKAGES_ERROR_MSG('ShelfIce',' ',myThid)
344 #endif
345
346 #ifdef ALLOW_STREAMICE
347 IF (useStreamIce) CALL STREAMICE_CHECK( myThid )
348 #else
349 IF (useStreamIce) CALL PACKAGES_ERROR_MSG('StreamIce',' ',myThid)
350 #endif
351
352 #ifdef ALLOW_ICEFRONT
353 IF (useICEFRONT) CALL ICEFRONT_CHECK( myThid )
354 #else
355 IF (useICEFRONT) CALL PACKAGES_ERROR_MSG('ICEFRONT',' ',myThid)
356 #endif
357
358 #ifdef ALLOW_THSICE
359 IF (useThSIce) CALL THSICE_CHECK( myThid )
360 #else
361 IF (useThSIce) CALL PACKAGES_ERROR_MSG('ThSIce',' ',myThid)
362 #endif
363
364 #ifdef ALLOW_LAND
365 IF (useLand) CALL LAND_CHECK( myThid )
366 #else
367 IF (useLand) CALL PACKAGES_ERROR_MSG('Land',' ',myThid)
368 #endif
369
370 #ifndef ALLOW_ATM2D
371 IF (useATM2D) CALL PACKAGES_ERROR_MSG('ATM2D',' ',myThid)
372 #endif
373
374 #ifndef ALLOW_AIM
375 IF (useAIM) CALL PACKAGES_ERROR_MSG('AIM',' ',myThid)
376 #endif
377
378 #ifdef ALLOW_ATM_PHYS
379 IF (useAtm_Phys) CALL ATM_PHYS_CHECK( myThid )
380 #else
381 IF (useAtm_Phys) CALL PACKAGES_ERROR_MSG('Atm_Phys',' ',myThid)
382 #endif
383
384 #ifndef ALLOW_FIZHI
385 IF (useFizhi) CALL PACKAGES_ERROR_MSG('Fizhi',' ',myThid)
386 #endif
387
388 #ifndef ALLOW_GRIDALT
389 IF (useGridAlt) CALL PACKAGES_ERROR_MSG('GridAlt',' ',myThid)
390 #endif
391
392 #ifdef ALLOW_AUTODIFF
393 if (useAUTODIFF) CALL AUTODIFF_CHECK( myThid )
394 #endif
395
396 #ifdef ALLOW_CTRL
397 IF (useCTRL) CALL CTRL_CHECK( myThid )
398 #endif
399
400 #ifdef ALLOW_COST
401 CALL COST_CHECK( myThid )
402 #endif
403
404 #ifdef ALLOW_GRDCHK
405 IF (useGrdChk) CALL GRDCHK_CHECK( myThid )
406 #else
407 IF (useGrdChk) CALL PACKAGES_ERROR_MSG('GrdChk',' ',myThid)
408 #endif
409
410 #ifndef ALLOW_SMOOTH
411 IF (useSMOOTH) CALL PACKAGES_ERROR_MSG('SMOOTH',' ',myThid)
412 #endif
413
414 #ifndef ALLOW_PROFILES
415 IF (usePROFILES) CALL PACKAGES_ERROR_MSG('PROFILES',' ',myThid)
416 #endif
417
418 #ifdef ALLOW_SBO
419 IF (useSBO) CALL SBO_CHECK( myThid )
420 #else
421 IF (useSBO) CALL PACKAGES_ERROR_MSG('SBO',' ',myThid)
422 #endif
423
424 #ifdef ALLOW_ECCO
425 IF (useECCO) CALL ECCO_CHECK( myThid )
426 #endif
427
428 #ifdef ALLOW_DIAGNOSTICS
429 IF (useDiagnostics) CALL DIAGNOSTICS_CHECK( myThid )
430 #else
431 IF (useDiagnostics)
432 & CALL PACKAGES_ERROR_MSG( 'Diagnostics', ' ', myThid )
433 #endif
434
435 #ifdef ALLOW_REGRID
436 IF (useREGRID) CALL REGRID_CHECK( myThid )
437 #else
438 IF (useREGRID) CALL PACKAGES_ERROR_MSG('REGRID',' ',myThid)
439 #endif
440
441 #ifdef ALLOW_LAYERS
442 IF ( useLayers ) CALL LAYERS_CHECK( myThid )
443 #else
444 IF ( useLayers ) CALL PACKAGES_ERROR_MSG('LAYERS',' ',myThid)
445 #endif /* ALLOW_LAYERS */
446
447 #ifdef ALLOW_NEST_CHILD
448 IF (useNEST_CHILD) CALL NEST_CHILD_CHECK( myThid )
449 #else
450 IF (useNEST_CHILD) CALL PACKAGES_ERROR_MSG(
451 & 'NEST_CHILD',' ',myThid)
452 #endif
453
454 #ifdef ALLOW_NEST_PARENT
455 IF (useNEST_PARENT) CALL NEST_PARENT_CHECK( myThid )
456 #else
457 IF (useNEST_PARENT) CALL PACKAGES_ERROR_MSG(
458 & 'NEST_PARENT',' ',myThid)
459 #endif
460
461 #ifdef ALLOW_OASIS
462 IF (useOASIS) CALL OASIS_CHECK( myThid )
463 #else
464 IF (useOASIS) CALL PACKAGES_ERROR_MSG('OASIS',' ',myThid)
465 #endif
466
467 #ifdef ALLOW_RUNCLOCK
468 IF (useRunClock) CALL RUNCLOCK_CHECK( myThid )
469 #else
470 IF (useRunClock) CALL PACKAGES_ERROR_MSG('RunClock',' ',myThid)
471 #endif
472
473 #ifndef ALLOW_EMBED_FILES
474 IF (useEMBED_FILES) CALL PACKAGES_ERROR_MSG(
475 & 'EMBED_FILES',' ',myThid)
476 #endif
477
478 #ifdef ALLOW_MYPACKAGE
479 IF (useMYPACKAGE) CALL MYPACKAGE_CHECK( myThid )
480 #else
481 IF (useMYPACKAGE) CALL PACKAGES_ERROR_MSG('MYPACKAGE',' ',myThid)
482 #endif
483
484 #ifdef ALLOW_GENERIC_ADVDIFF
485 C- Check generic AdvDiff setting and related overlap minimum size:
486 C for this reason, called after other ${pkg}_check S/R
487 IF (useGAD) CALL GAD_CHECK( myThid )
488 #endif
489
490 C--- Exclusive packages (which cannot be used together):
491 IF ( useEXF .AND. useBulkForce ) THEN
492 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
493 & 'both useEXF and useBulkForce are set'
494 CALL PRINT_ERROR( msgBuf , myThid )
495 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
496 & ' but cannot be used together => need to select only one.'
497 CALL PRINT_ERROR( msgBuf , myThid )
498 CALL ALL_PROC_DIE( myThid )
499 STOP 'ABNORMAL END: S/R PACKAGES_CHECK'
500 ENDIF
501
502 C--- Exclusive packages (which cannot be used together):
503 IF ( useDOWN_SLOPE .AND. useBBL ) THEN
504 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
505 & 'both useDOWN_SLOPE and useBBL are set'
506 CALL PRINT_ERROR( msgBuf , myThid )
507 WRITE(msgBuf,'(2A)') 'PACKAGES_CHECK: ',
508 & ' but cannot be used together => need to select only one.'
509 CALL PRINT_ERROR( msgBuf , myThid )
510 CALL ALL_PROC_DIE( myThid )
511 STOP 'ABNORMAL END: S/R PACKAGES_CHECK'
512 ENDIF
513
514 RETURN
515 END

  ViewVC Help
Powered by ViewVC 1.1.22