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

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

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


Revision 1.14 - (show annotations) (download)
Wed May 28 21:59:32 2014 UTC (10 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64z, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, 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
Changes since 1.13: +20 -185 lines
- 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_READPARMS
8 C !INTERFACE:
9 SUBROUTINE LAND_READPARMS( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R LAND_READPARMS
14 C | o Read Land package parameters from parameter
15 C | file "data.land"
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C == Global variables ===
23 C-- size for MITgcm & Land package :
24 #include "LAND_SIZE.h"
25
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 #include "LAND_PARAMS.h"
29 #ifdef ALLOW_MNC
30 # include "MNC_PARAMS.h"
31 #endif
32
33 C !INPUT/OUTPUT PARAMETERS:
34 C myThid :: my Thread Id number
35 INTEGER myThid
36
37 #ifdef ALLOW_LAND
38 C !LOCAL VARIABLES:
39 C msgBuf :: Informational/error message buffer
40 C iUnit :: Work variable for IO unit number
41 C k :: loop counter
42 CHARACTER*(MAX_LEN_MBUF) msgBuf
43 INTEGER iUnit, k
44 _RL tmpvar
45 CEOP
46
47 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
48
49 C-- Land model parameters:
50 C land_calc_grT :: step forward ground Temperature
51 C land_calc_grW :: step forward soil moiture
52 C land_impl_grT :: solve ground Temperature implicitly
53 C land_calc_snow :: step forward snow thickness
54 C land_calc_alb :: compute albedo of snow over land
55 C land_oldPickup :: restart from an old pickup (= before checkpoint 52j)
56 C land_grT_iniFile :: File containing initial ground Temp.
57 C land_grW_iniFile :: File containing initial ground Water.
58 C land_snow_iniFile :: File containing initial snow thickness.
59 C land_deltaT :: land model time-step
60 C land_taveFreq :: Frequency^-1 for time-Aver. output (s)
61 C land_diagFreq :: Frequency^-1 for diagnostic output (s)
62 C land_monFreq :: Frequency^-1 for monitor output (s)
63 C land_dzF :: layer thickness
64 NAMELIST /LAND_MODEL_PAR/
65 & land_calc_grT, land_calc_grW,
66 & land_impl_grT, land_calc_snow,
67 & land_calc_alb, land_oldPickup,
68 & land_grT_iniFile, land_grW_iniFile, land_snow_iniFile,
69 & land_deltaT, land_taveFreq, land_diagFreq, land_monFreq,
70 & land_dzF,
71 & land_timeave_mnc, land_snapshot_mnc, land_mon_mnc,
72 & land_pickup_write_mnc, land_pickup_read_mnc
73
74 C-- Physical constants :
75 C land_grdLambda :: Thermal conductivity of the ground
76 C land_heatCs :: Heat capacity of dry soil (J/m3/K)
77 C land_CpWater :: Heat capacity of water (J/kg/K)
78 C land_wTauDiff :: soil moisture diffusion time scale
79 C land_waterCap :: field capacity per meter of soil
80 C land_fractRunOff:: fraction of water in excess which run-off
81 C land_rhoLiqW :: density of liquid water (kg/m3)
82 C land_rhoSnow :: density of snow (kg/m3)
83 C land_Lfreez :: Latent heat of freezing (J/kg)
84 C land_hMaxSnow :: Maximum snow-thickness (m)
85 C diffKsnow :: thermal conductivity of snow (W/m/K)
86 C timeSnowAge :: snow aging time scale (s)
87 C hNewSnowAge :: new snow thickness that refresh the snow-age (by 1/e)
88 C albColdSnow :: albedo of cold (=dry) new snow (Tsfc < -10)
89 C albWarmSnow :: albedo of warm (=wet) new snow (Tsfc = 0)
90 C albOldSnow :: albedo of old snow (snowAge > 35.d)
91 C hAlbSnow :: snow thickness for albedo transition: snow/ground
92
93 NAMELIST /LAND_PHYS_PAR/
94 & land_grdLambda, land_heatCs, land_CpWater,
95 & land_wTauDiff, land_waterCap, land_fractRunOff,
96 & land_rhoLiqW,
97 & land_rhoSnow, land_Lfreez,
98 & land_hMaxSnow, diffKsnow, timeSnowAge, hNewSnowAge,
99 & albColdSnow, albWarmSnow, tempSnowAlbL, albOldSnow, hAlbSnow
100
101 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
102
103 IF ( .NOT.useLand ) THEN
104 C- pkg LAND is not used
105 _BEGIN_MASTER(myThid)
106 C- Track pkg activation status:
107 C print a (weak) warning if data.land is found
108 CALL PACKAGES_UNUSED_MSG( 'useLand', ' ', ' ' )
109 _END_MASTER(myThid)
110 RETURN
111 ENDIF
112
113 _BEGIN_MASTER(myThid)
114
115 C- Set default value:
116 land_calc_grT = .TRUE.
117 land_calc_grW = .TRUE.
118 land_impl_grT = .TRUE.
119 land_calc_snow= .TRUE.
120 land_calc_alb = .TRUE.
121 land_oldPickup= .FALSE.
122 land_grT_iniFile = ' '
123 land_grW_iniFile = ' '
124 land_snow_iniFile= ' '
125 land_deltaT = deltaTclock
126 land_taveFreq = taveFreq
127 land_diagFreq = dumpFreq
128 land_monFreq = monitorFreq
129 #ifdef ALLOW_MNC
130 land_timeave_mnc = timeave_mnc .AND. useMNC
131 land_snapshot_mnc = snapshot_mnc .AND. useMNC
132 land_mon_mnc = monitor_mnc .AND. useMNC
133 land_pickup_write_mnc = pickup_write_mnc .AND. useMNC
134 land_pickup_read_mnc = pickup_read_mnc .AND. useMNC
135 #else
136 land_timeave_mnc = .FALSE.
137 land_snapshot_mnc = .FALSE.
138 land_mon_mnc = .FALSE.
139 land_pickup_write_mnc = .FALSE.
140 land_pickup_read_mnc = .FALSE.
141 #endif
142 land_grdLambda= 0.42 _d 0
143 land_heatCs = 1.13 _d 6
144 land_CpWater = 4.2 _d 3
145 c land_CpWater = HeatCapacity_Cp
146 land_wTauDiff = 48. _d 0*3600. _d 0
147 land_waterCap = 0.24 _d 0
148 land_fractRunOff = 0.5 _d 0
149 land_rhoLiqW = rhoConstFresh
150 C- snow parameters:
151 land_rhoSnow = 330. _d 0
152 land_Lfreez = 334. _d 3
153 land_hMaxSnow = 1. _d 3
154 diffKsnow = 0.30 _d 0
155 timeSnowAge = 50. _d 0 * 86400. _d 0
156 hNewSnowAge = 2. _d -3
157 albColdSnow = 0.85 _d 0
158 albWarmSnow = 0.70 _d 0
159 tempSnowAlbL = -10. _d 0
160 albOldSnow = 0.55 _d 0
161 hAlbSnow = 0.30 _d 0
162 C- layer thickness:
163 DO k=1,land_nLev
164 land_dzF(k) = -1.
165 land_rec_dzC(k) = -1.
166 ENDDO
167
168 WRITE(msgBuf,'(A)') ' LAND_READPARMS: opening data.land'
169 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
170 I SQUEEZE_RIGHT, myThid )
171
172 CALL OPEN_COPY_DATA_FILE( 'data.land', 'LAND_READPARMS',
173 O iUnit, myThid )
174
175 C-- Read parameters from open data file:
176
177 C- Parameters for Land model:
178 READ(UNIT=iUnit,NML=LAND_MODEL_PAR)
179
180 C- Physical Constants for Land package
181 READ(UNIT=iUnit,NML=LAND_PHYS_PAR)
182
183 WRITE(msgBuf,'(A)')
184 & ' LAND_READPARMS: finished reading data.land'
185 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
186 I SQUEEZE_RIGHT, myThid )
187
188 C-- Close the open data file
189 CLOSE(iUnit)
190
191 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
192 C-- Derive other parameters:
193
194 land_impl_grT = land_calc_grT .AND. land_impl_grT
195
196 tmpvar = 0. _d 0
197 DO k=1,land_nLev
198 tmpvar = tmpvar+land_dzF(k)
199 IF (tmpvar.GT.0. _d 0) land_rec_dzC(k) = 2. _d 0 / tmpvar
200 tmpvar = land_dzF(k)
201 ENDDO
202 IF ( land_Lfreez.NE. 0. _d 0 ) THEN
203 recip_Lfreez = 1. _d 0 / land_Lfreez
204 ELSE
205 recip_Lfreez = 0. _d 0
206 ENDIF
207
208 #ifdef ALLOW_MNC
209 land_timeave_mnc = useMNC .AND. land_timeave_mnc
210 land_snapshot_mnc = useMNC .AND. land_snapshot_mnc
211 land_mon_mnc = useMNC .AND. land_mon_mnc
212 land_pickup_write_mnc = useMNC .AND. land_pickup_write_mnc
213 land_pickup_read_mnc = useMNC .AND. land_pickup_read_mnc
214
215 land_timeave_mdsio = (.NOT.land_timeave_mnc)
216 & .OR. outputTypesInclusive
217 land_snapshot_mdsio = (.NOT.land_snapshot_mnc)
218 & .OR. outputTypesInclusive
219 land_mon_stdio = (.NOT.land_mon_mnc)
220 & .OR. outputTypesInclusive
221 land_pickup_write_mdsio = (.NOT.land_pickup_write_mnc)
222 & .OR. outputTypesInclusive
223 #else
224 land_timeave_mnc = .FALSE.
225 land_snapshot_mnc = .FALSE.
226 land_mon_mnc = .FALSE.
227 land_pickup_write_mnc = .FALSE.
228 land_pickup_read_mnc = .FALSE.
229 land_timeave_mdsio = .TRUE.
230 land_snapshot_mdsio = .TRUE.
231 land_mon_stdio = .TRUE.
232 land_pickup_write_mdsio = .TRUE.
233 #endif
234
235 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
236
237 _END_MASTER(myThid)
238
239 C-- Everyone else must wait for the parameters to be loaded
240 _BARRIER
241
242 #endif /* ALLOW_LAND */
243
244 RETURN
245 END

  ViewVC Help
Powered by ViewVC 1.1.22