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

Contents of /MITgcm/pkg/exf/exf_readparms.F

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


Revision 1.80 - (show annotations) (download)
Thu Jun 5 15:37:46 2014 UTC (10 years ago) by jmc
Branch: MAIN
Changes since 1.79: +9 -5 lines
- new integer parameter "exf_debugLev" (default set to main model debugLevel)
  to replace logical switch "exf_verbose".

1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_readparms.F,v 1.79 2014/05/27 23:41:31 jmc Exp $
2 C $Name: $
3
4 #include "EXF_OPTIONS.h"
5 #ifdef ALLOW_EXCH2
6 # include "W2_OPTIONS.h"
7 #endif /* ALLOW_EXCH2 */
8
9 SUBROUTINE EXF_READPARMS( myThid )
10
11 C ==================================================================
12 C SUBROUTINE exf_readparms
13 C ==================================================================
14 C
15 C o This routine initialises the package that calculates external
16 C forcing fields for a given timestep of the MITgcmUV. Parameters
17 C for this package are set in "data.externalforcing". Some additional
18 C precompiler switches have to be specified in "EXF_OPTIONS.h".
19 C
20 C started: Christian Eckert eckert@mit.edu 30-Jun-1999
21 C
22 C changed: Christian Eckert eckert@mit.edu 11-Jan-2000
23 C - Restructured the code in order to create a package
24 C for the MITgcmUV.
25 C Christian Eckert eckert@mit.edu 12-Feb-2000
26 C - Changed Routine names (package prefix: exf_)
27 C changed: Patrick Heimbach, heimbach@mit.edu 04-May-2000
28 C - changed the handling of precip and sflux with respect
29 C to CPP options ALLOW_BULKFORMULAE and ALLOW_ATM_TEMP
30 C changed: Ralf.Giering@FastOpt.de 25-Mai-20000
31 C - moved relaxation and climatology to extra routines
32 C Patrick Heimbach, heimbach@mit.edu 04-May-2000
33 C - added obcs parameters
34 C changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001
35 C - added new obcs parameters (for each boundaries)
36 C included runoff D. Stammer, Nov. 25, 2001
37 C included pressure forcing. heimbach@mit.edu 05-Nov-2002
38 C added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002
39 C mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
40 C
41 C ==================================================================
42 C SUBROUTINE exf_readparms
43 C ==================================================================
44
45 implicit none
46
47 C == global variables ==
48
49 #include "EEPARAMS.h"
50 #include "SIZE.h"
51 #include "PARAMS.h"
52 #ifdef USE_EXF_INTERPOLATION
53 # ifdef ALLOW_EXCH2
54 # include "W2_EXCH2_SIZE.h"
55 # include "W2_EXCH2_TOPOLOGY.h"
56 # endif /* ALLOW_EXCH2 */
57 # include "SET_GRID.h"
58 #endif /* USE_EXF_INTERPOLATION */
59 c#include "cal.h"
60 #include "EXF_PARAM.h"
61 #include "EXF_CONSTANTS.h"
62
63 C == routine arguments ==
64 INTEGER myThid
65
66 C == local variables ==
67 #ifdef USE_EXF_INTERPOLATION
68 INTEGER gridNx, gridNy
69 INTEGER j
70 _RL inp_lon0, inp_lat0, inp_dLon, inp_dLat
71 #endif /* USE_EXF_INTERPOLATION */
72 INTEGER iUnit
73 LOGICAL exf_verbose
74 CHARACTER*(2) exf_yftype
75 CHARACTER*(MAX_LEN_MBUF) msgBuf
76 C == end of interface ==
77
78 C Surface flux data.
79 NAMELIST /EXF_NML_01/
80 & windstressmax, repeatPeriod, exf_albedo,
81 & ocean_emissivity, ice_emissivity, snow_emissivity,
82 & exf_iceCd, exf_iceCe, exf_iceCh,
83 & exf_scal_BulkCdn, climtempfreeze, useExfCheckRange,
84 & exf_iprec , exf_iprec_obcs , exf_yftype,
85 & exf_verbose , exf_debugLev , exf_monFreq,
86 & useExfYearlyFields, twoDigitYear,
87 & useStabilityFct_overIce, readStressOnAgrid, readStressOnCgrid,
88 & useAtmWind, useRelativeWind, noNegativeEvap,
89 & select_ZenAlbedo, useExfZenIncoming,
90 & hu, ht, umin, atmrho, atmcp, cen2kel, gravity_mks,
91 & cdrag_1, cdrag_2, cdrag_3, cstanton_1, cstanton_2, cdalton,
92 & flamb, flami, zolmin, zref,
93 & cvapor_fac, cvapor_exp, cvapor_fac_ice, cvapor_exp_ice,
94 & humid_fac, gamma_blk, saltsat, sstExtrapol, psim_fac
95
96 NAMELIST /EXF_NML_02/
97 & hfluxfile, atempfile, aqhfile,
98 & sfluxfile, precipfile, runofffile,
99 & runoftempfile,
100 & ustressfile, vstressfile, evapfile,
101 & snowprecipfile, uwindfile, vwindfile,
102 & wspeedfile, swfluxfile, lwfluxfile,
103 & apressurefile, swdownfile, lwdownfile,
104 & areamaskfile, climsstfile, climsssfile,
105 & climustrfile, climvstrfile,
106 & hfluxstartdate1, hfluxstartdate2, hfluxperiod,
107 & atempstartdate1, atempstartdate2, atempperiod,
108 & aqhstartdate1, aqhstartdate2, aqhperiod,
109 & sfluxstartdate1, sfluxstartdate2, sfluxperiod,
110 & evapstartdate1, evapstartdate2, evapperiod,
111 & precipstartdate1, precipstartdate2, precipperiod,
112 & snowprecipstartdate1, snowprecipstartdate2, snowprecipperiod,
113 & runoffstartdate1, runoffstartdate2, runoffperiod,
114 & ustressstartdate1, ustressstartdate2, ustressperiod,
115 & vstressstartdate1, vstressstartdate2, vstressperiod,
116 & uwindstartdate1, uwindstartdate2, uwindperiod,
117 & vwindstartdate1, vwindstartdate2, vwindperiod,
118 & wspeedstartdate1, wspeedstartdate2, wspeedperiod,
119 & swfluxstartdate1, swfluxstartdate2, swfluxperiod,
120 & lwfluxstartdate1, lwfluxstartdate2, lwfluxperiod,
121 & swdownstartdate1, swdownstartdate2, swdownperiod,
122 & lwdownstartdate1, lwdownstartdate2, lwdownperiod,
123 &apressurestartdate1,apressurestartdate2,apressureperiod,
124 & areamaskstartdate1,areamaskstartdate2,areamaskperiod,
125 & climsststartdate1, climsststartdate2, climsstperiod,
126 & climsssstartdate1, climsssstartdate2, climsssperiod,
127 & climustrstartdate1, climustrstartdate2,climustrperiod,
128 & climvstrstartdate1, climvstrstartdate2,climvstrperiod,
129 & areamaskTauRelax, climsstTauRelax, climsssTauRelax,
130 & climustrTauRelax,climvstrTauRelax
131
132 NAMELIST /EXF_NML_03/
133 & exf_inscal_hflux, exf_inscal_sflux, exf_inscal_evap,
134 & exf_inscal_ustress, exf_inscal_vstress,
135 & exf_inscal_uwind, exf_inscal_vwind, exf_inscal_wspeed,
136 & exf_inscal_atemp, exf_offset_atemp, exf_inscal_aqh,
137 & exf_inscal_sst, exf_inscal_sss,
138 & exf_inscal_swflux, exf_inscal_lwflux, exf_inscal_precip,
139 & exf_inscal_runoff, exf_inscal_apressure, exf_inscal_snowprecip,
140 & exf_inscal_runoftemp,
141 & exf_inscal_swdown, exf_inscal_lwdown,
142 & exf_inscal_climsst, exf_inscal_climsss,
143 & exf_inscal_climustr, exf_inscal_climvstr,
144 & exf_outscal_hflux, exf_outscal_ustress, exf_outscal_vstress,
145 & exf_outscal_swflux, exf_outscal_sst, exf_outscal_sss,
146 & exf_outscal_sflux, exf_outscal_apressure,
147 & exf_inscal_areamask, exf_outscal_areamask,
148 & hfluxconst, atempconst, aqhconst, sfluxconst, evapconst,
149 & precipconst, snowprecipconst, runoffconst, ustressconst,
150 & runoftempconst,
151 & vstressconst, uwindconst, vwindconst, wspeedconst, swfluxconst,
152 & lwfluxconst, swdownconst, lwdownconst, apressureconst,
153 & areamaskconst, climsstconst, climsssconst,
154 & climustrconst, climvstrconst,
155 & hflux_exfremo_intercept, hflux_exfremo_slope,
156 & atemp_exfremo_intercept, atemp_exfremo_slope,
157 & aqh_exfremo_intercept, aqh_exfremo_slope,
158 & sflux_exfremo_intercept, sflux_exfremo_slope,
159 & evap_exfremo_intercept, evap_exfremo_slope,
160 & precip_exfremo_intercept, precip_exfremo_slope,
161 & snowprecip_exfremo_intercept, snowprecip_exfremo_slope,
162 & runoff_exfremo_intercept, runoff_exfremo_slope,
163 & runoftemp_exfremo_intercept, runoftemp_exfremo_slope,
164 & ustress_exfremo_intercept, ustress_exfremo_slope,
165 & vstress_exfremo_intercept, vstress_exfremo_slope,
166 & uwind_exfremo_intercept, uwind_exfremo_slope,
167 & vwind_exfremo_intercept, vwind_exfremo_slope,
168 & wspeed_exfremo_intercept, wspeed_exfremo_slope,
169 & swflux_exfremo_intercept, swflux_exfremo_slope,
170 & lwflux_exfremo_intercept, lwflux_exfremo_slope,
171 & swdown_exfremo_intercept, swdown_exfremo_slope,
172 & lwdown_exfremo_intercept, lwdown_exfremo_slope,
173 & apressure_exfremo_intercept, apressure_exfremo_slope,
174 & areamask_exfremo_intercept, areamask_exfremo_slope,
175 & climsst_exfremo_intercept, climsst_exfremo_slope,
176 & climsss_exfremo_intercept, climsss_exfremo_slope,
177 & climustr_exfremo_intercept, climustr_exfremo_slope,
178 & climvstr_exfremo_intercept, climvstr_exfremo_slope
179
180 #ifdef USE_EXF_INTERPOLATION
181 NAMELIST /EXF_NML_04/
182 & ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
183 & ustress_nlon, ustress_nlat, ustress_interpMethod,
184 & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
185 & vstress_nlon, vstress_nlat, vstress_interpMethod,
186 & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
187 & hflux_nlon, hflux_nlat, hflux_interpMethod,
188 & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
189 & sflux_nlon, sflux_nlat, sflux_interpMethod,
190 & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
191 & swflux_nlon, swflux_nlat, swflux_interpMethod,
192 & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
193 & lwflux_nlon, lwflux_nlat, lwflux_interpMethod,
194 & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
195 & atemp_nlon, atemp_nlat, atemp_interpMethod,
196 & aqh_lon0, aqh_lon_inc, aqh_lat0,aqh_lat_inc,
197 & aqh_nlon, aqh_nlat, aqh_interpMethod,
198 & evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc,
199 & evap_nlon, evap_nlat, evap_interpMethod,
200 & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
201 & precip_nlon, precip_nlat, precip_interpMethod,
202 & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
203 & runoff_nlon, runoff_nlat, runoff_interpMethod,
204 & snowprecip_lon0, snowprecip_lon_inc,
205 & snowprecip_lat0, snowprecip_lat_inc,
206 & snowprecip_nlon, snowprecip_nlat, snowprecip_interpMethod,
207 & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
208 & uwind_nlon, uwind_nlat, uwind_interpMethod,
209 & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
210 & vwind_nlon, vwind_nlat, vwind_interpMethod,
211 & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,
212 & wspeed_nlon, wspeed_nlat, wspeed_interpMethod,
213 & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
214 & swdown_nlon, swdown_nlat, swdown_interpMethod,
215 & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
216 & lwdown_nlon, lwdown_nlat, lwdown_interpMethod,
217 & apressure_lon0,apressure_lon_inc,apressure_lat0,apressure_lat_inc
218 & , apressure_nlon, apressure_nlat, apressure_interpMethod,
219 & areamask_lon0, areamask_lon_inc, areamask_lat0, areamask_lat_inc,
220 & areamask_nlon, areamask_nlat, areamask_interpMethod,
221 & climsst_lon0, climsst_lon_inc, climsst_lat0, climsst_lat_inc,
222 & climsst_nlon, climsst_nlat, climsst_interpMethod,
223 & climsss_lon0, climsss_lon_inc,climsss_lat0, climsss_lat_inc,
224 & climsss_nlon, climsss_nlat, climsss_interpMethod,
225 & climustr_lon0, climustr_lon_inc, climustr_lat0, climustr_lat_inc,
226 & climustr_nlon, climustr_nlat, climustr_interpMethod,
227 & climvstr_lon0, climvstr_lon_inc, climvstr_lat0, climvstr_lat_inc,
228 & climvstr_nlon, climvstr_nlat, climvstr_interpMethod
229 #endif /* USE_EXF_INTERPOLATION */
230
231 #ifdef ALLOW_ICEFRONT
232 NAMELIST /EXF_NML_SGRUNOFF/
233 & sgrunoffstartdate1, sgrunoffstartdate2,
234 & sgrunoffstartdate, sgrunoffperiod,
235 & sgrunoffconst, sgrunoff_exfremo_intercept,
236 & sgrunoff_exfremo_slope, exf_inscal_sgrunoff
237 #endif /* ALLOW_ICEFRONT */
238
239 #ifdef ALLOW_OBCS
240 NAMELIST /EXF_NML_OBCS/
241 & useOBCSYearlyFields,
242 & obcsNstartdate1, obcsNstartdate2, obcsNperiod,
243 & obcsSstartdate1, obcsSstartdate2, obcsSperiod,
244 & obcsEstartdate1, obcsEstartdate2, obcsEperiod,
245 & obcsWstartdate1, obcsWstartdate2, obcsWperiod,
246 & siobNstartdate1, siobNstartdate2, siobNperiod,
247 & siobSstartdate1, siobSstartdate2, siobSperiod,
248 & siobEstartdate1, siobEstartdate2, siobEperiod,
249 & siobWstartdate1, siobWstartdate2, siobWperiod
250 #endif /* ALLOW_OBCS */
251
252 #ifdef USE_EXF_INTERPOLATION
253 # ifdef ALLOW_EXCH2
254 gridNx = exch2_mydNx(1)
255 gridNy = exch2_mydNy(1)
256 # else /* ALLOW_EXCH2 */
257 gridNx = Nx
258 gridNy = Ny
259 # endif /* ALLOW_EXCH2 */
260 #endif /* USE_EXF_INTERPOLATION */
261
262 IF ( .NOT.useEXF ) THEN
263 C- pkg EXF is not used
264 _BEGIN_MASTER(myThid)
265 C- Track pkg activation status:
266 C print a (weak) warning if data.exf is found
267 CALL PACKAGES_UNUSED_MSG( 'useEXF', ' ', ' ' )
268 _END_MASTER(myThid)
269 RETURN
270 ENDIF
271
272 _BEGIN_MASTER(myThid)
273
274 C Set default values.
275
276 year2sec = 365.*86400.
277 c exf_verbose = debugMode
278 exf_verbose = .FALSE.
279 exf_debugLev = debugLevel
280 exf_monFreq = monitorFreq
281 useExfCheckRange = .TRUE.
282 useExfZenAlbedo = .FALSE.
283 select_ZenAlbedo = 0
284 useExfZenIncoming = .FALSE.
285 readStressOnAgrid = .FALSE.
286 readStressOnCgrid = .FALSE.
287 #ifdef ALLOW_ATM_WIND
288 useAtmWind = .TRUE.
289 #else
290 useAtmWind = .FALSE.
291 #endif
292 useRelativeWind = .FALSE.
293 noNegativeEvap = .FALSE.
294
295 C- default value should be set to main model parameter:
296 c cen2kel = celsius2K
297 c gravity_mks = gravity
298 c atmcp = atm_Cp
299 c humid_fac = atm_Rq <- default is zero !!!
300
301 cen2kel = 273.150 _d 0
302 gravity_mks = 9.81 _d 0
303 atmrho = 1.200 _d 0
304 atmcp = 1005.000 _d 0
305 flamb = 2500000.000 _d 0
306 flami = 334000.000 _d 0
307 cvapor_fac = 640380.000 _d 0
308 cvapor_exp = 5107.400 _d 0
309 cvapor_fac_ice = 11637800.000 _d 0
310 cvapor_exp_ice = 5897.800 _d 0
311 humid_fac = 0.606 _d 0
312 gamma_blk = 0.010 _d 0
313 saltsat = 0.980 _d 0
314 sstExtrapol = 0.0 _d 0
315 cdrag_1 = 0.0027000 _d 0
316 cdrag_2 = 0.0001420 _d 0
317 cdrag_3 = 0.0000764 _d 0
318 cstanton_1 = 0.0327 _d 0
319 cstanton_2 = 0.0180 _d 0
320 cdalton = 0.0346 _d 0
321 zolmin = -100.000 _d 0
322 psim_fac = 5.000 _d 0
323 zref = 10.000 _d 0
324 hu = 10.000 _d 0
325 ht = 2.000 _d 0
326 umin = 0.5 _d 0
327 useStabilityFct_overIce = .FALSE.
328 exf_iceCd = 1.63 _d -3
329 exf_iceCe = 1.63 _d -3
330 exf_iceCh = 1.63 _d -3
331 exf_albedo = 0.1 _d 0
332 C-- this default is chosen to be backward compatible with
333 C-- an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann
334 ocean_emissivity = 5.50 _d -8 / 5.670 _d -8
335 ice_emissivity = 0.95 _d 0
336 snow_emissivity = 0.95 _d 0
337
338 C Calendar data.
339 hfluxstartdate1 = 0
340 hfluxstartdate2 = 0
341 hfluxperiod = 0.0 _d 0
342 hfluxconst = 0.0 _d 0
343 hflux_exfremo_intercept = 0.0 _d 0
344 hflux_exfremo_slope = 0.0 _d 0
345
346 atempstartdate1 = 0
347 atempstartdate2 = 0
348 atempperiod = 0.0 _d 0
349 atempconst = celsius2K
350 atemp_exfremo_intercept = 0.0 _d 0
351 atemp_exfremo_slope = 0.0 _d 0
352
353 aqhstartdate1 = 0
354 aqhstartdate2 = 0
355 aqhperiod = 0.0 _d 0
356 aqhconst = 0.0 _d 0
357 aqh_exfremo_intercept = 0.0 _d 0
358 aqh_exfremo_slope = 0.0 _d 0
359
360 sfluxstartdate1 = 0
361 sfluxstartdate2 = 0
362 sfluxperiod = 0.0 _d 0
363 sfluxconst = 0.0 _d 0
364 sflux_exfremo_intercept = 0.0 _d 0
365 sflux_exfremo_slope = 0.0 _d 0
366
367 evapstartdate1 = 0
368 evapstartdate2 = 0
369 evapperiod = 0.0 _d 0
370 evapconst = 0.0 _d 0
371 evap_exfremo_intercept = 0.0 _d 0
372 evap_exfremo_slope = 0.0 _d 0
373
374 precipstartdate1 = 0
375 precipstartdate2 = 0
376 precipperiod = 0.0 _d 0
377 precipconst = 0.0 _d 0
378 precip_exfremo_intercept = 0.0 _d 0
379 precip_exfremo_slope = 0.0 _d 0
380
381 snowprecipstartdate1 = 0
382 snowprecipstartdate2 = 0
383 snowprecipperiod = 0.0 _d 0
384 snowprecipconst = 0.0 _d 0
385 snowprecip_exfremo_intercept = 0.0 _d 0
386 snowprecip_exfremo_slope = 0.0 _d 0
387
388 runoffstartdate1 = 0
389 runoffstartdate2 = 0
390 runoffperiod = 0.0 _d 0
391 runoffconst = 0.0 _d 0
392 runoff_exfremo_intercept = 0.0 _d 0
393 runoff_exfremo_slope = 0.0 _d 0
394
395 runoftempconst = 0.0 _d 0
396 runoftemp_exfremo_intercept = 0.0 _d 0
397 runoftemp_exfremo_slope = 0.0 _d 0
398
399 ustressstartdate1 = 0
400 ustressstartdate2 = 0
401 ustressperiod = 0.0 _d 0
402 ustressconst = 0.0 _d 0
403 ustress_exfremo_intercept = 0.0 _d 0
404 ustress_exfremo_slope = 0.0 _d 0
405
406 vstressstartdate1 = 0
407 vstressstartdate2 = 0
408 vstressperiod = 0.0 _d 0
409 vstressconst = 0.0 _d 0
410 vstress_exfremo_intercept = 0.0 _d 0
411 vstress_exfremo_slope = 0.0 _d 0
412
413 uwindstartdate1 = 0
414 uwindstartdate2 = 0
415 uwindperiod = 0.0 _d 0
416 uwindconst = 0.0 _d 0
417 uwind_exfremo_intercept = 0.0 _d 0
418 uwind_exfremo_slope = 0.0 _d 0
419
420 vwindstartdate1 = 0
421 vwindstartdate2 = 0
422 vwindperiod = 0.0 _d 0
423 vwindconst = 0.0 _d 0
424 vwind_exfremo_intercept = 0.0 _d 0
425 vwind_exfremo_slope = 0.0 _d 0
426
427 wspeedstartdate1 = 0
428 wspeedstartdate2 = 0
429 wspeedperiod = 0.0 _d 0
430 wspeedconst = 0.0 _d 0
431 wspeed_exfremo_intercept = 0.0 _d 0
432 wspeed_exfremo_slope = 0.0 _d 0
433
434 swfluxstartdate1 = 0
435 swfluxstartdate2 = 0
436 swfluxperiod = 0.0 _d 0
437 swfluxconst = 0.0 _d 0
438 swflux_exfremo_intercept = 0.0 _d 0
439 swflux_exfremo_slope = 0.0 _d 0
440
441 lwfluxstartdate1 = 0
442 lwfluxstartdate2 = 0
443 lwfluxperiod = 0.0 _d 0
444 lwfluxconst = 0.0 _d 0
445 lwflux_exfremo_intercept = 0.0 _d 0
446 lwflux_exfremo_slope = 0.0 _d 0
447
448 swdownstartdate1 = 0
449 swdownstartdate2 = 0
450 swdownperiod = 0.0 _d 0
451 swdownconst = 0.0 _d 0
452 swdown_exfremo_intercept = 0.0 _d 0
453 swdown_exfremo_slope = 0.0 _d 0
454
455 lwdownstartdate1 = 0
456 lwdownstartdate2 = 0
457 lwdownperiod = 0.0 _d 0
458 lwdownconst = 0.0 _d 0
459 lwdown_exfremo_intercept = 0.0 _d 0
460 lwdown_exfremo_slope = 0.0 _d 0
461
462 apressurestartdate1 = 0
463 apressurestartdate2 = 0
464 apressureperiod = 0.0 _d 0
465 apressureconst = 0.0 _d 0
466 apressure_exfremo_intercept = 0.0 _d 0
467 apressure_exfremo_slope = 0.0 _d 0
468
469 areamaskstartdate1 = 0
470 areamaskstartdate2 = 0
471 areamaskperiod = 0.0 _d 0
472 areamaskTauRelax = 0.0 _d 0
473 areamaskconst = 0.0 _d 0
474 areamask_exfremo_intercept = 0. _d 0
475 areamask_exfremo_slope = 0. _d 0
476
477 climsststartdate1 = 0
478 climsststartdate2 = 0
479 climsstperiod = 0
480 climsstTauRelax = 0.0 _d 0
481 climsstconst = 0.0 _d 0
482 climsst_exfremo_intercept = 0.0 _d 0
483 climsst_exfremo_slope = 0.0 _d 0
484
485 climsssstartdate1 = 0
486 climsssstartdate2 = 0
487 climsssperiod = 0
488 climsssTauRelax = 0.0 _d 0
489 climsssconst = 0.0 _d 0
490 climsss_exfremo_intercept = 0.0 _d 0
491 climsss_exfremo_slope = 0.0 _d 0
492
493 climustrstartdate1 = 0
494 climustrstartdate2 = 0
495 climustrperiod = 0
496 climustrTauRelax = 0.0 _d 0
497 climustrconst = 0.0 _d 0
498 climustr_exfremo_intercept = 0.0 _d 0
499 climustr_exfremo_slope = 0.0 _d 0
500
501 climvstrstartdate1 = 0
502 climvstrstartdate2 = 0
503 climvstrperiod = 0
504 climvstrTauRelax = 0.0 _d 0
505 climvstrconst = 0.0 _d 0
506 climvstr_exfremo_intercept = 0.0 _d 0
507 climvstr_exfremo_slope = 0.0 _d 0
508
509 sgrunoffstartdate1 = 0
510 sgrunoffstartdate2 = 0
511 sgrunoffstartdate = 0.
512 sgrunoffperiod = 0.0 _d 0
513 sgrunoffconst = 0.0 _d 0
514 sgrunoff_exfremo_intercept = 0.0 _d 0
515 sgrunoff_exfremo_slope = 0.0 _d 0
516 exf_inscal_sgrunoff = 1. _d 0
517
518 useOBCSYearlyFields = .FALSE.
519 obcsNstartdate1 = 0
520 obcsNstartdate2 = 0
521 obcsNperiod = 0.0 _d 0
522 obcsSstartdate1 = 0
523 obcsSstartdate2 = 0
524 obcsSperiod = 0.0 _d 0
525 obcsEstartdate1 = 0
526 obcsEstartdate2 = 0
527 obcsEperiod = 0.0 _d 0
528 obcsWstartdate1 = 0
529 obcsWstartdate2 = 0
530 obcsWperiod = 0.0 _d 0
531
532 siobNstartdate1 = UNSET_I
533 siobNstartdate2 = UNSET_I
534 siobNperiod = UNSET_RL
535 siobSstartdate1 = UNSET_I
536 siobSstartdate2 = UNSET_I
537 siobSperiod = UNSET_RL
538 siobEstartdate1 = UNSET_I
539 siobEstartdate2 = UNSET_I
540 siobEperiod = UNSET_RL
541 siobWstartdate1 = UNSET_I
542 siobWstartdate2 = UNSET_I
543 siobWperiod = UNSET_RL
544
545 repeatPeriod = 0.0 _d 0
546 windstressmax = 2.0 _d 0
547
548 exf_scal_BulkCdn = 1.0 _d 0
549
550 C Initialise freezing temperature of sea water
551 climtempfreeze = -1.9 _d 0
552
553 C Data files.
554 hfluxfile = ' '
555 atempfile = ' '
556 aqhfile = ' '
557 evapfile = ' '
558 precipfile = ' '
559 snowprecipfile = ' '
560 sfluxfile = ' '
561 runofffile = ' '
562 runoftempfile = ' '
563 ustressfile = ' '
564 vstressfile = ' '
565 uwindfile = ' '
566 vwindfile = ' '
567 wspeedfile = ' '
568 swfluxfile = ' '
569 lwfluxfile = ' '
570 swdownfile = ' '
571 lwdownfile = ' '
572 apressurefile = ' '
573 areamaskfile = ' '
574 climsstfile = ' '
575 climsssfile = ' '
576 climustrfile = ' '
577 climvstrfile = ' '
578
579 C Start dates.
580 hfluxstartdate = 0.
581 atempstartdate = 0.
582 aqhstartdate = 0.
583 evapstartdate = 0.
584 precipstartdate = 0.
585 snowprecipstartdate= 0.
586 sfluxstartdate = 0.
587 runoffstartdate = 0.
588 ustressstartdate = 0.
589 vstressstartdate = 0.
590 uwindstartdate = 0.
591 vwindstartdate = 0.
592 wspeedstartdate = 0.
593 swfluxstartdate = 0.
594 lwfluxstartdate = 0.
595 swdownstartdate = 0.
596 lwdownstartdate = 0.
597 obcsNstartdate = 0.
598 obcsSstartdate = 0.
599 obcsEstartdate = 0.
600 obcsWstartdate = 0.
601 siobNstartdate = 0.
602 siobSstartdate = 0.
603 siobEstartdate = 0.
604 siobWstartdate = 0.
605 apressurestartdate = 0.
606 areamaskstartdate = 0.
607 climsststartdate = 0.
608 climsssstartdate = 0.
609 climustrstartdate = 0.
610 climvstrstartdate = 0.
611
612 C Initialise file type and field precision
613 exf_iprec = 32
614 exf_iprec_obcs = UNSET_I
615 exf_yftype = 'RL'
616 useExfYearlyFields = .FALSE.
617 twoDigitYear = .FALSE.
618
619 C Input scaling factors.
620 exf_inscal_hflux = 1. _d 0
621 exf_inscal_sflux = 1. _d 0
622 exf_inscal_ustress = 1. _d 0
623 exf_inscal_vstress = 1. _d 0
624 exf_inscal_uwind = 1. _d 0
625 exf_inscal_vwind = 1. _d 0
626 exf_inscal_wspeed = 1. _d 0
627 exf_inscal_swflux = 1. _d 0
628 exf_inscal_lwflux = 1. _d 0
629 exf_inscal_precip = 1. _d 0
630 exf_inscal_snowprecip= 1. _d 0
631 exf_inscal_sst = 1. _d 0
632 exf_inscal_sss = 1. _d 0
633 exf_inscal_atemp = 1. _d 0
634 exf_offset_atemp = 0. _d 0
635 exf_inscal_aqh = 1. _d 0
636 exf_inscal_evap = 1. _d 0
637 exf_inscal_apressure = 1. _d 0
638 exf_inscal_runoff = 1. _d 0
639 exf_inscal_runoftemp = 1. _d 0
640 exf_inscal_swdown = 1. _d 0
641 exf_inscal_lwdown = 1. _d 0
642 exf_inscal_climsst = 1. _d 0
643 exf_inscal_climsss = 1. _d 0
644 exf_inscal_climustr = 1. _d 0
645 exf_inscal_climvstr = 1. _d 0
646 exf_inscal_areamask = 1. _d 0
647
648 C Output scaling factors.
649 exf_outscal_hflux = 1. _d 0
650 exf_outscal_sflux = 1. _d 0
651 exf_outscal_ustress = 1. _d 0
652 exf_outscal_vstress = 1. _d 0
653 exf_outscal_swflux = 1. _d 0
654 exf_outscal_sst = 1. _d 0
655 exf_outscal_sss = 1. _d 0
656 exf_outscal_apressure= 1. _d 0
657 exf_outscal_areamask = 1. _d 0
658
659 #ifdef USE_EXF_INTERPOLATION
660 C-- set default input location to match (in case of simple Lat-Lonp grid)
661 C model grid cell-center position (leading to trivial interpolation)
662 inp_lon0 = xgOrigin + delX(1)*exf_half
663 inp_lat0 = ygOrigin + delY(1)*exf_half
664 inp_dLon = delX(1)
665 inp_dLat = delY(1)
666
667 ustress_lon0 = inp_lon0
668 uwind_lon0 = inp_lon0
669 vstress_lon0 = inp_lon0
670 hflux_lon0 = inp_lon0
671 sflux_lon0 = inp_lon0
672 swflux_lon0 = inp_lon0
673 runoff_lon0 = inp_lon0
674 atemp_lon0 = inp_lon0
675 aqh_lon0 = inp_lon0
676 evap_lon0 = inp_lon0
677 precip_lon0 = inp_lon0
678 snowprecip_lon0= inp_lon0
679 vwind_lon0 = inp_lon0
680 wspeed_lon0 = inp_lon0
681 lwflux_lon0 = inp_lon0
682 swdown_lon0 = inp_lon0
683 lwdown_lon0 = inp_lon0
684 apressure_lon0 = inp_lon0
685 areamask_lon0 = inp_lon0
686 vstress_lat0 = inp_lat0
687 vwind_lat0 = inp_lat0
688 wspeed_lat0 = inp_lat0
689 ustress_lat0 = inp_lat0
690 hflux_lat0 = inp_lat0
691 sflux_lat0 = inp_lat0
692 runoff_lat0 = inp_lat0
693 swflux_lat0 = inp_lat0
694 atemp_lat0 = inp_lat0
695 aqh_lat0 = inp_lat0
696 evap_lat0 = inp_lat0
697 precip_lat0 = inp_lat0
698 snowprecip_lat0= inp_lat0
699 uwind_lat0 = inp_lat0
700 lwflux_lat0 = inp_lat0
701 swdown_lat0 = inp_lat0
702 lwdown_lat0 = inp_lat0
703 apressure_lat0 = inp_lat0
704 areamask_lat0 = inp_lat0
705 ustress_nlon = gridNx
706 ustress_nlat = gridNy
707 vstress_nlon = gridNx
708 vstress_nlat = gridNy
709 hflux_nlon = gridNx
710 hflux_nlat = gridNy
711 sflux_nlon = gridNx
712 sflux_nlat = gridNy
713 swflux_nlon = gridNx
714 swflux_nlat = gridNy
715 runoff_nlon = gridNx
716 runoff_nlat = gridNy
717 atemp_nlon = gridNx
718 atemp_nlat = gridNy
719 aqh_nlon = gridNx
720 aqh_nlat = gridNy
721 evap_nlon = gridNx
722 evap_nlat = gridNy
723 precip_nlon = gridNx
724 snowprecip_nlon= gridNx
725 precip_nlat = gridNy
726 snowprecip_nlat= gridNy
727 uwind_nlon = gridNx
728 uwind_nlat = gridNy
729 vwind_nlon = gridNx
730 vwind_nlat = gridNy
731 wspeed_nlon = gridNx
732 wspeed_nlat = gridNy
733 lwflux_nlon = gridNx
734 lwflux_nlat = gridNy
735 swdown_nlon = gridNx
736 swdown_nlat = gridNy
737 lwdown_nlon = gridNx
738 lwdown_nlat = gridNy
739 apressure_nlon = gridNx
740 apressure_nlat = gridNy
741 areamask_nlon = gridNx
742 areamask_nlat = gridNy
743 ustress_lon_inc = inp_dLon
744 vstress_lon_inc = inp_dLon
745 hflux_lon_inc = inp_dLon
746 sflux_lon_inc = inp_dLon
747 swflux_lon_inc = inp_dLon
748 runoff_lon_inc = inp_dLon
749 atemp_lon_inc = inp_dLon
750 aqh_lon_inc = inp_dLon
751 evap_lon_inc = inp_dLon
752 precip_lon_inc = inp_dLon
753 snowprecip_lon_inc= inp_dLon
754 uwind_lon_inc = inp_dLon
755 vwind_lon_inc = inp_dLon
756 wspeed_lon_inc = inp_dLon
757 lwflux_lon_inc = inp_dLon
758 swdown_lon_inc = inp_dLon
759 lwdown_lon_inc = inp_dLon
760 apressure_lon_inc = inp_dLon
761 areamask_lon_inc = inp_dLon
762
763 climsst_lon0 = inp_lon0
764 climsss_lon0 = inp_lon0
765 climustr_lon0 = inp_lon0
766 climvstr_lon0 = inp_lon0
767 climsst_lat0 = inp_lat0
768 climsss_lat0 = inp_lat0
769 climustr_lat0 = inp_lat0
770 climvstr_lat0 = inp_lat0
771 climsst_nlon = gridNx
772 climsst_nlat = gridNy
773 climsss_nlon = gridNx
774 climsss_nlat = gridNy
775 climustr_nlon = gridNx
776 climustr_nlat = gridNy
777 climvstr_nlon = gridNx
778 climvstr_nlat = gridNy
779 climsst_lon_inc = inp_dLon
780 climsss_lon_inc = inp_dLon
781 climustr_lon_inc= inp_dLon
782 climvstr_lon_inc= inp_dLon
783
784 DO j=1,MAX_LAT_INC
785 IF (j.LT.gridNy) THEN
786 inp_dLat = (delY(j) + delY(j+1))*exf_half
787 ELSE
788 inp_dLat = 0.
789 ENDIF
790 ustress_lat_inc(j) = inp_dLat
791 vstress_lat_inc(j) = inp_dLat
792 hflux_lat_inc(j) = inp_dLat
793 sflux_lat_inc(j) = inp_dLat
794 swflux_lat_inc(j) = inp_dLat
795 runoff_lat_inc(j) = inp_dLat
796 atemp_lat_inc(j) = inp_dLat
797 aqh_lat_inc(j) = inp_dLat
798 evap_lat_inc(j) = inp_dLat
799 precip_lat_inc(j) = inp_dLat
800 snowprecip_lat_inc(j)= inp_dLat
801 uwind_lat_inc(j) = inp_dLat
802 vwind_lat_inc(j) = inp_dLat
803 wspeed_lat_inc(j) = inp_dLat
804 lwflux_lat_inc(j) = inp_dLat
805 swdown_lat_inc(j) = inp_dLat
806 lwdown_lat_inc(j) = inp_dLat
807 apressure_lat_inc(j) = inp_dLat
808 areamask_lat_inc(j) = inp_dLat
809 climsst_lat_inc(j) = inp_dLat
810 climsss_lat_inc(j) = inp_dLat
811 climustr_lat_inc(j) = inp_dLat
812 climvstr_lat_inc(j) = inp_dLat
813 ENDDO
814
815 ustress_interpMethod = 12
816 vstress_interpMethod = 22
817 hflux_interpMethod = 1
818 sflux_interpMethod = 1
819 swflux_interpMethod = 1
820 runoff_interpMethod = 1
821 atemp_interpMethod = 1
822 aqh_interpMethod = 1
823 evap_interpMethod = 1
824 precip_interpMethod = 1
825 snowprecip_interpMethod= 1
826 uwind_interpMethod = 12
827 vwind_interpMethod = 22
828 wspeed_interpMethod = 1
829 lwflux_interpMethod = 1
830 swdown_interpMethod = 1
831 lwdown_interpMethod = 1
832 apressure_interpMethod = 1
833 areamask_interpMethod = 1
834 climsst_interpMethod = 2
835 climsss_interpMethod = 2
836 climustr_interpMethod = 12
837 climvstr_interpMethod = 22
838
839 #endif /* USE_EXF_INTERPOLATION */
840
841 C Next, read the forcing data file.
842 WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'
843 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
844 & SQUEEZE_RIGHT , 1)
845
846 CALL OPEN_COPY_DATA_FILE(
847 I 'data.exf', 'EXF_READPARMS',
848 O iUnit,
849 I myThid )
850
851 WRITE(msgBuf,'(A)')
852 & 'EXF_READPARMS: reading EXF_NML_01'
853 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
854 & SQUEEZE_RIGHT , 1)
855 READ( iUnit, nml = EXF_NML_01 )
856 WRITE(msgBuf,'(A)')
857 & 'EXF_READPARMS: reading EXF_NML_02'
858 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
859 & SQUEEZE_RIGHT , 1)
860 READ( iUnit, nml = EXF_NML_02 )
861 WRITE(msgBuf,'(A)')
862 & 'EXF_READPARMS: reading EXF_NML_03'
863 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
864 & SQUEEZE_RIGHT , 1)
865 READ( iUnit, nml = EXF_NML_03 )
866 #ifdef USE_EXF_INTERPOLATION
867 WRITE(msgBuf,'(A)')
868 & 'EXF_READPARMS: reading EXF_NML_04'
869 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
870 & SQUEEZE_RIGHT , 1)
871 READ( iUnit, nml = EXF_NML_04 )
872 #endif /* USE_EXF_INTERPOLATION */
873
874 #ifdef ALLOW_ICEFRONT
875 IF ( useIcefront ) THEN
876 WRITE(msgBuf,'(A)')
877 & 'EXF_READPARMS: reading EXF_NML_SGRUNOFF'
878 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
879 & SQUEEZE_RIGHT , 1)
880 READ( iUnit, nml = EXF_NML_SGRUNOFF )
881 ENDIF
882 #endif /* ALLOW_ICEFRONT */
883
884 #ifdef ALLOW_OBCS
885 IF ( useOBCS ) THEN
886 WRITE(msgBuf,'(A)')
887 & 'EXF_READPARMS: reading EXF_NML_OBCS'
888 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
889 & SQUEEZE_RIGHT , 1)
890 READ( iUnit, nml = EXF_NML_OBCS )
891 ENDIF
892 IF(siobNstartdate1.EQ.UNSET_I ) siobNstartdate1=obcsNstartdate1
893 IF(siobNstartdate2.EQ.UNSET_I ) siobNstartdate2=obcsNstartdate2
894 IF(siobNperiod .EQ.UNSET_RL) siobNperiod =obcsNperiod
895 IF(siobSstartdate1.EQ.UNSET_I ) siobSstartdate1=obcsSstartdate1
896 IF(siobSstartdate2.EQ.UNSET_I ) siobSstartdate2=obcsSstartdate2
897 IF(siobSperiod .EQ.UNSET_RL) siobSperiod =obcsSperiod
898 IF(siobEstartdate1.EQ.UNSET_I ) siobEstartdate1=obcsEstartdate1
899 IF(siobEstartdate2.EQ.UNSET_I ) siobEstartdate2=obcsEstartdate2
900 IF(siobEperiod .EQ.UNSET_RL) siobEperiod =obcsEperiod
901 IF(siobWstartdate1.EQ.UNSET_I ) siobWstartdate1=obcsWstartdate1
902 IF(siobWstartdate2.EQ.UNSET_I ) siobWstartdate2=obcsWstartdate2
903 IF(siobWperiod .EQ.UNSET_RL) siobWperiod =obcsWperiod
904
905 IF(exf_iprec_obcs .EQ. UNSET_I) exf_iprec_obcs =exf_iprec
906 #endif /* ALLOW_OBCS */
907
908 WRITE(msgBuf,'(A)')
909 & 'EXF_READPARMS: finished reading data.exf'
910 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
911 & SQUEEZE_RIGHT , 1)
912
913 CLOSE( iUnit )
914
915 C-- Retired parameters
916 IF ( exf_yftype.NE.'RL' ) THEN
917 STOP 'S/R EXF_READPARAMS: value of exf_yftype not allowed'
918 ENDIF
919
920 C-- Derive other parameters:
921 IF ( exf_verbose ) exf_debugLev = MAX( exf_debugLev, debLevD )
922 hq = ht
923 stressIsOnCgrid = readStressOnCgrid
924 #if ( defined (ALLOW_BULKFORMULAE) )
925 IF ( useAtmWind ) stressIsOnCgrid = .FALSE.
926 #endif
927 #ifdef USE_EXF_INTERPOLATION
928 IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.
929 & (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') )
930 & stressIsOnCgrid = .FALSE.
931 #endif /* USE_EXF_INTERPOLATION */
932
933 IF ( select_ZenAlbedo.GT.0 ) THEN
934 useExfZenAlbedo=.TRUE.
935 ENDIf
936
937 C-- Overwrite tauThetaClimRelax but stop if already set.
938 C- Note: need this, even if EXF option ALLOW_CLIMSST_RELAXATION is undef;
939 C this prevents to apply relaxation towards potentially wrong SST since,
940 C with EXF, we skip the update of loaded SST in EXTERNAL_FIELDS_LOAD.
941 C- Note2: let s see whether we can put this back under ifdef
942 C ALLOW_CLIMSST_RELAXATION, but always call EXTERNAL_FIELDS_LOAD.
943 C If ALLOW_CLIMSST_RELAXATION is undef, clim.relaxation could still
944 C be done outside of exf.
945 #ifdef ALLOW_CLIMSST_RELAXATION
946 IF ( tauThetaClimRelax.NE.0. _d 0 ) THEN
947 WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
948 & 'with EXF, cannot use "tauThetaClimRelax" in "data"'
949 CALL PRINT_ERROR( msgBuf, myThid )
950 WRITE(msgBuf,'(2A)') 'since SST relax. is handled by EXF',
951 & ' (data.exf, "climsstTauRelax")'
952 CALL PRINT_ERROR( msgBuf, myThid )
953 STOP 'ABNORMAL END: S/R EXF_READPARMS'
954 ENDIF
955 tauThetaClimRelax = climsstTauRelax
956 #endif
957
958 #ifdef ALLOW_CLIMSSS_RELAXATION
959 C-- Overwrite tauSaltClimRelax but stop if already set.
960 IF ( tauSaltClimRelax.NE.0. _d 0 ) THEN
961 WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
962 & 'with EXF, cannot use "tauSaltClimRelax" in "data"'
963 CALL PRINT_ERROR( msgBuf, myThid )
964 WRITE(msgBuf,'(2A)') 'since SSS relax. is handled by EXF',
965 & ' (data.exf, "climsssTauRelax")'
966 CALL PRINT_ERROR( msgBuf, myThid )
967 STOP 'ABNORMAL END: S/R EXF_READPARMS'
968 ENDIF
969 tauSaltClimRelax = climsssTauRelax
970 #endif
971
972 C Complete the start date specifications for the forcing
973 C fields to get a complete calendar date array.
974 C => moved to EXF_INIT_FIXED
975
976 _END_MASTER( myThid )
977 _BARRIER
978
979 RETURN
980 END

  ViewVC Help
Powered by ViewVC 1.1.22