/[MITgcm]/MITgcm/pkg/land/land_check.F
ViewVC logotype

Contents of /MITgcm/pkg/land/land_check.F

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


Revision 1.1 - (show annotations) (download)
Wed May 28 21:59:32 2014 UTC (9 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64z, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, HEAD
- rename LAND_INITIALISE to LAND_INIT_FIXED (without calling LAND_READPARMS)
- move LAND pkg check & summary from LAND_READPARMS to new S/R LAND_CHECK

1 C $Header: /u/gcmpack/MITgcm/pkg/land/land_readparms.F,v 1.13 2009/04/28 22:10:02 jmc Exp $
2 C $Name: $
3
4 #include "LAND_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: LAND_CHECK
8 C !INTERFACE:
9 SUBROUTINE LAND_CHECK( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R LAND_CHECK
14 C | o Check parameters and other package dependences
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20
21 C == Global variables ===
22 C-- size for MITgcm & Land package :
23 #include "LAND_SIZE.h"
24
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "LAND_PARAMS.h"
28 #ifdef ALLOW_MNC
29 # include "MNC_PARAMS.h"
30 #endif
31
32 C !INPUT/OUTPUT PARAMETERS:
33 C myThid :: my Thread Id number
34 INTEGER myThid
35
36 #ifdef ALLOW_LAND
37 C !FUNCTIONS:
38 INTEGER ILNBLNK
39 EXTERNAL ILNBLNK
40
41 C !LOCAL VARIABLES:
42 C msgBuf :: Informational/error message buffer
43 C iUnit :: Work variable for IO unit number
44 C iL :: Work variable for length of file-name
45 CHARACTER*(MAX_LEN_MBUF) msgBuf
46 INTEGER iUnit, iL
47 CEOP
48
49 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
50
51 _BEGIN_MASTER(myThid)
52
53 iUnit = standardMessageUnit
54 WRITE(msgBuf,'(A)') 'LAND_CHECK: #define ALLOW_LAND'
55 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
56
57 C-- Print out parameter values :
58 WRITE(msgBuf,'(A)') '// ==================================='
59 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
60 WRITE(msgBuf,'(A)') '// Land package parameters :'
61 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
62 WRITE(msgBuf,'(A)') '// ==================================='
63 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
64
65 C- namelist LAND_MODEL_PAR:
66 CALL WRITE_0D_L( land_calc_grT, INDEX_NONE,
67 & 'land_calc_grT =',
68 & ' /* step forward ground Temp. on/off flag */')
69 CALL WRITE_0D_L( land_calc_grW, INDEX_NONE,
70 & 'land_calc_grW =',
71 & ' /* step forward soil moiture on/off flag */')
72 CALL WRITE_0D_L( land_impl_grT, INDEX_NONE,
73 & 'land_impl_grT =',
74 & ' /* solve ground temperature implicitly */')
75 CALL WRITE_0D_L( land_calc_snow, INDEX_NONE,
76 & 'land_calc_snow =',
77 & ' /* step forward snow thickness */')
78 CALL WRITE_0D_L( land_calc_alb, INDEX_NONE,
79 & 'land_calc_alb =',
80 & ' /* compute land+snow albedo */')
81 iL = ILNBLNK( land_grT_iniFile )
82 IF ( iL.GE.1 ) THEN
83 WRITE(msgBuf,'(A,A)') 'land_grT_iniFile = ',
84 & '/* Initial ground-Temp Input-File */'
85 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
86 WRITE(msgBuf,'(16X,A)') land_grT_iniFile(1:iL)
87 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
88 msgBuf=' ;'
89 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
90 ENDIF
91 iL = ILNBLNK( land_grW_iniFile )
92 IF ( iL.GE.1 ) THEN
93 WRITE(msgBuf,'(A,A)') 'land_grW_iniFile = ',
94 & '/* Initial soil-Water Input-File */'
95 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
96 WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
97 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
98 msgBuf=' ;'
99 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
100 ENDIF
101 iL = ILNBLNK( land_snow_iniFile )
102 IF ( iL.GE.1 ) THEN
103 WRITE(msgBuf,'(A,A)') 'land_snow_iniFile= ',
104 & '/* Initial snow thickness Input-File */'
105 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
106 WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
107 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
108 msgBuf=' ;'
109 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
110 ENDIF
111 CALL WRITE_0D_RL( land_deltaT, INDEX_NONE,'land_deltaT =',
112 & ' /* land model Time-Step (s) */')
113 CALL WRITE_0D_RL( land_taveFreq, INDEX_NONE,'land_taveFreq =',
114 & ' /* Frequency^-1 for time-Aver. output (s) */')
115 CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_diagFreq =',
116 & ' /* Frequency^-1 for diagnostic output (s) */')
117 CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_monFreq =',
118 & ' /* Frequency^-1 for monitor output (s) */')
119 CALL WRITE_1D_RL( land_dzF,land_nLev, INDEX_K,'land_dzF = ',
120 & ' /* layer thickness ( m ) */')
121 CALL WRITE_1D_RL(land_rec_dzC,land_nLev,INDEX_K,'land_rec_dzC= '
122 & ,' /* recip. vertical spacing (m-1) */')
123 CALL WRITE_0D_L( land_timeave_mdsio, INDEX_NONE,
124 & 'land_timeave_mdsio =',' /* use MDSIO for Tave output */')
125 CALL WRITE_0D_L( land_timeave_mnc, INDEX_NONE,
126 & 'land_timeave_mnc =',' /* use MNC for Tave output */')
127 CALL WRITE_0D_L( land_snapshot_mdsio, INDEX_NONE,
128 & 'land_snapshot_mdsio =',
129 & ' /* use MDSIO for snapshot output */')
130 CALL WRITE_0D_L( land_snapshot_mnc, INDEX_NONE,
131 & 'land_snapshot_mnc =',' /* use MNC for snapshot output */')
132 CALL WRITE_0D_L( land_mon_stdio, INDEX_NONE,
133 & 'land_mon_stdio =',' /* use STDOUT for monitor output */')
134 CALL WRITE_0D_L( land_mon_mnc, INDEX_NONE,
135 & 'land_mon_mnc =',' /* use MNC for monitor output */')
136 CALL WRITE_0D_L( land_pickup_write_mnc, INDEX_NONE,
137 & 'land_pickup_write_mnc =',
138 & ' /* use MNC for writing pickups */')
139 CALL WRITE_0D_L( land_pickup_read_mnc, INDEX_NONE,
140 & 'land_pickup_read_mnc =',
141 & ' /* use MNC for reading pickups */')
142
143 C- namelist LAND_PHYS_PAR:
144 CALL WRITE_0D_RL(land_grdLambda,INDEX_NONE,'land_grdLambda =',
145 & ' /* Thermal conductivity of the ground (W/m/K)*/')
146 CALL WRITE_0D_RL( land_heatCs,INDEX_NONE,'land_heatCs =',
147 & ' /* Heat capacity of dry soil (J/m3/K) */')
148 CALL WRITE_0D_RL( land_CpWater,INDEX_NONE,'land_CpWater =',
149 & ' /* Heat capacity of water (J/kg/K) */')
150 CALL WRITE_0D_RL( land_wTauDiff,INDEX_NONE,'land_wTauDiff =',
151 & ' /* soil moisture diffusion time scale (s) */')
152 CALL WRITE_0D_RL( land_waterCap,INDEX_NONE,'land_waterCap =',
153 & ' /* field capacity per meter of soil (1) */')
154 CALL WRITE_0D_RL(land_fractRunOff,INDEX_NONE,'land_fractRunOff='
155 & ,' /* fraction of water in excess which run-off */')
156 CALL WRITE_0D_RL(land_rhoLiqW,INDEX_NONE,'land_rhoLiqW =',
157 & ' /* density of liquid water (kg/m3) */')
158 CALL WRITE_0D_RL(land_rhoSnow,INDEX_NONE,'land_rhoSnow =',
159 & ' /* density of snow (kg/m3) */')
160 CALL WRITE_0D_RL(land_Lfreez,INDEX_NONE,'land_Lfreez =',
161 & ' /* Latent heat of freezing (J/kg) */')
162 CALL WRITE_0D_RL(land_hMaxSnow,INDEX_NONE,'land_hMaxSnow =',
163 & ' /* maximum snow-thickness (m) */')
164 CALL WRITE_0D_RL(diffKsnow,INDEX_NONE,'diffKsnow =',
165 & ' /* thermal conductivity of snow (W/m/K) */')
166 CALL WRITE_0D_RL(timeSnowAge,INDEX_NONE,'timeSnowAge =',
167 & ' /* snow aging time scale (s) */')
168 CALL WRITE_0D_RL(hNewSnowAge,INDEX_NONE,'hNewSnowAge =',
169 & ' /* new snow thickness to refresh snow-age by 1/e */')
170 CALL WRITE_0D_RL(albColdSnow,INDEX_NONE,'albColdSnow =',
171 & ' /* albedo of cold (=dry) new snow */')
172 CALL WRITE_0D_RL(albWarmSnow,INDEX_NONE,'albWarmSnow =',
173 & ' /* albedo of warm (=wet) new snow */')
174 CALL WRITE_0D_RL(tempSnowAlbL,INDEX_NONE,'tempSnowAlbL =',
175 & ' /* Temp. transition from ColdSnow to WarmSnow Alb. (oC) */')
176 CALL WRITE_0D_RL(albOldSnow, INDEX_NONE,'albOldSnow =',
177 & ' /* albedo of old snow (snowAge >35.d)*/')
178 CALL WRITE_0D_RL(hAlbSnow, INDEX_NONE,'hAlbSnow =',
179 & ' /* snow depth for albedo transition */')
180
181 WRITE(msgBuf,'(A)') '// ==================================='
182 CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
183
184 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
185 C-- Check parameters and model configuration
186
187 C- for now, Land package works only with AIM package:
188 IF ( .NOT.useAIM ) THEN
189 WRITE(msgBuf,'(A)')
190 & 'LAND_CHECK: land pkg only implemented with AIM physics'
191 CALL PRINT_ERROR( msgBuf, myThid)
192 WRITE(msgBuf,'(A)')
193 & 'DO NOT use Land (useLand=T) without AIM (useAIM=F, data.pkg)'
194 CALL PRINT_ERROR( msgBuf, myThid)
195 STOP 'ABNORMAL END: S/R LAND_CHECK'
196 ENDIF
197
198 IF ( land_nLev.NE.2 .AND. land_impl_grT ) THEN
199 WRITE(msgBuf,'(2A,I3)') 'LAND_CHECK: ',
200 & ' land_impl_grT=.T. but land_nLev=',land_nLev
201 CALL PRINT_ERROR( msgBuf, myThid)
202 WRITE(msgBuf,'(A)')
203 & 'Implicit scheme only implemented for 2 levels land Temp'
204 CALL PRINT_ERROR( msgBuf, myThid)
205 STOP 'ABNORMAL END: S/R LAND_CHECK'
206 ENDIF
207
208 C- If land_taveFreq is positive, then must compile the land-diagnostics code
209 #ifndef ALLOW_LAND_TAVE
210 IF (land_taveFreq.GT.0.) THEN
211 WRITE(msgBuf,'(2A)') 'LAND_CHECK:',
212 & ' land_taveFreq > 0 but ALLOW_LAND_TAVE undefined'
213 CALL PRINT_ERROR( msgBuf, myThid)
214 WRITE(msgBuf,'(2A)') 'Re-compile setting: ',
215 & '#define ALLOW_LAND_TAVE (in LAND_OPTIONS.h)'
216 CALL PRINT_ERROR( msgBuf, myThid)
217 STOP 'ABNORMAL END: S/R LAND_CHECK'
218 ENDIF
219 #endif /* ALLOW_LAND_TAVE */
220
221 C- If land_monFreq is > 0, then must compile the monitor pkg
222 #ifndef ALLOW_MONITOR
223 IF (land_monFreq.GT.0.) THEN
224 WRITE(msgBuf,'(2A)') 'LAND_CHECK:',
225 & ' land_monFreq > 0 but ALLOW_MONITOR undefined'
226 CALL PRINT_ERROR( msgBuf, myThid)
227 WRITE(msgBuf,'(2A)')
228 & 'Re-compile with pkg monitor (in packages.conf)'
229 CALL PRINT_ERROR( msgBuf, myThid)
230 STOP 'ABNORMAL END: S/R LAND_CHECK'
231 ENDIF
232 #endif /* ALLOW_MONITOR */
233
234 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
235
236 _END_MASTER(myThid)
237
238 #endif /* ALLOW_LAND */
239
240 RETURN
241 END

  ViewVC Help
Powered by ViewVC 1.1.22