1 |
C $Header: /u/gcmpack/MITgcm/pkg/mypackage/mypackage_check.F,v 1.6 2012/04/03 00:20:14 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "OFFLINE_OPTIONS.h" |
5 |
#ifdef ALLOW_DIC |
6 |
#include "DIC_OPTIONS.h" |
7 |
#endif |
8 |
#ifdef ALLOW_DARWIN |
9 |
#include "DARWIN_OPTIONS.h" |
10 |
#endif |
11 |
|
12 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
13 |
CBOP 0 |
14 |
C !ROUTINE: OFFLINE_CHECK |
15 |
|
16 |
C !INTERFACE: |
17 |
SUBROUTINE OFFLINE_CHECK( myThid ) |
18 |
|
19 |
C !DESCRIPTION: |
20 |
C Check dependances with other packages |
21 |
|
22 |
C !USES: |
23 |
IMPLICIT NONE |
24 |
#include "SIZE.h" |
25 |
#include "EEPARAMS.h" |
26 |
#include "PARAMS.h" |
27 |
#include "OFFLINE.h" |
28 |
#include "OFFLINE_SWITCH.h" |
29 |
|
30 |
C !INPUT PARAMETERS: |
31 |
C myThid :: my Thread Id number |
32 |
INTEGER myThid |
33 |
CEOP |
34 |
|
35 |
#ifdef ALLOW_OFFLINE |
36 |
C !LOCAL VARIABLES: |
37 |
C msgBuf :: Informational/error message buffer |
38 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
39 |
INTEGER errCount |
40 |
|
41 |
_BEGIN_MASTER(myThid) |
42 |
|
43 |
WRITE(msgBuf,'(A)') 'OFFLINE_CHECK: #define OFFLINE' |
44 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
45 |
& SQUEEZE_RIGHT, myThid ) |
46 |
|
47 |
C-- Print out some kee parameters : |
48 |
CALL WRITE_0D_L( offlineLoadGMRedi, INDEX_NONE, |
49 |
& 'offlineLoadGMRedi=', ' /* load (not compute) GMRedi tensor */') |
50 |
CALL WRITE_0D_L( offlineLoadKPP, INDEX_NONE, |
51 |
& 'offlineLoadKPP=', ' /* load (not compute) KPP mixing coeff */') |
52 |
CALL WRITE_0D_L( offlineLoadConvec, INDEX_NONE, |
53 |
& 'offlineLoadConvec=', ' /* load (not compute) Convect Mix */') |
54 |
CALL WRITE_0D_I( offlineIter0, INDEX_NONE, |
55 |
& 'offlineIter0 =', ' /* initial offline field timestep */') |
56 |
CALL WRITE_0D_I( offlineOffsetIter, INDEX_NONE, |
57 |
& 'offlineOffsetIter=', ' /* iteration number offset */') |
58 |
CALL WRITE_0D_I( offlineLoadPrec, INDEX_NONE, |
59 |
& 'offlineLoadPrec =', |
60 |
& ' /* precision (32,64) of offline files */') |
61 |
CALL WRITE_0D_RL( deltaToffline, INDEX_NONE, |
62 |
& 'deltaToffline =', ' /* time-step to load offline files */') |
63 |
CALL WRITE_0D_RL( offlineForcingPeriod, INDEX_NONE, |
64 |
& 'offlineForcingPeriod=', |
65 |
& ' /* time interval between reccords [s] */') |
66 |
CALL WRITE_0D_RL( offlineForcingCycle, INDEX_NONE, |
67 |
& 'offlineForcingCycle =', ' /* length of 1 cycle [s] */') |
68 |
CALL WRITE_0D_C( UvelFile, -1, INDEX_NONE, 'UvelFile =', |
69 |
& ' /* file name of loaded uVel field */') |
70 |
|
71 |
C-- Check parameters: |
72 |
errCount = 0 |
73 |
|
74 |
C- Put stops here if some flags are wrongly chosen. |
75 |
|
76 |
C- better not to modify temperature that was loaded from file: |
77 |
C => disable allowFreezing |
78 |
IF ( allowFreezing ) THEN |
79 |
WRITE(msgBuf,'(A)') 'allowFreezing=T not allowed if useOffLine' |
80 |
CALL PRINT_ERROR( msgBuf, myThid ) |
81 |
errCount = errCount + 1 |
82 |
ENDIF |
83 |
|
84 |
C- stop if files are specified but not used. |
85 |
IF ( HFluxFile.NE.' ' ) THEN |
86 |
WRITE(msgBuf,'(A)') 'HFluxFile is set but not used' |
87 |
CALL PRINT_ERROR( msgBuf, myThid ) |
88 |
errCount = errCount + 1 |
89 |
ENDIF |
90 |
#ifndef ALLOW_OLD_VIRTUALFLUX |
91 |
IF ( SFluxFile.NE.' ' ) THEN |
92 |
WRITE(msgBuf,'(A)') 'SFluxFile is set but not used' |
93 |
CALL PRINT_ERROR( msgBuf, myThid ) |
94 |
errCount = errCount + 1 |
95 |
ENDIF |
96 |
#endif /* ndef ALLOW_OLD_VIRTUALFLUX */ |
97 |
IF ( IceFile.NE.' ' ) THEN |
98 |
WRITE(msgBuf,'(A)') 'IceFile is set but not used' |
99 |
CALL PRINT_ERROR( msgBuf, myThid ) |
100 |
errCount = errCount + 1 |
101 |
ENDIF |
102 |
IF ( offlineLoadGMRedi .AND. .NOT.useGMRedi ) THEN |
103 |
WRITE(msgBuf,'(A)') 'some GMxxFile are set but not used' |
104 |
CALL PRINT_ERROR( msgBuf, myThid ) |
105 |
errCount = errCount + 1 |
106 |
ENDIF |
107 |
IF ( offlineLoadKPP .AND. .NOT.useKPP ) THEN |
108 |
WRITE(msgBuf,'(A)') 'some KPP_xxxxxFile are set but not used' |
109 |
CALL PRINT_ERROR( msgBuf, myThid ) |
110 |
errCount = errCount + 1 |
111 |
ENDIF |
112 |
IF ( offlineLoadConvec .AND. ivdc_kappa.EQ.0. ) THEN |
113 |
WRITE(msgBuf,'(A)') 'ConvFile is set but not used' |
114 |
CALL PRINT_ERROR( msgBuf, myThid ) |
115 |
errCount = errCount + 1 |
116 |
ENDIF |
117 |
|
118 |
IF ( errCount.GE.1 ) THEN |
119 |
WRITE(msgBuf,'(A,I3,A)') |
120 |
& 'OFFLINE_CHECK: detected', errCount,' fatal error(s)' |
121 |
CALL PRINT_ERROR( msgBuf, myThid ) |
122 |
CALL ALL_PROC_DIE( 0 ) |
123 |
STOP 'ABNORMAL END: S/R OFFLINE_CHECK' |
124 |
ENDIF |
125 |
|
126 |
WRITE(msgBuf,'(A)') 'OFFLINE_CHECK: done' |
127 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
128 |
& SQUEEZE_RIGHT, myThid ) |
129 |
|
130 |
_END_MASTER(myThid) |
131 |
|
132 |
#endif /* ALLOW_OFFLINE */ |
133 |
|
134 |
RETURN |
135 |
END |