/[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.84 - (show annotations) (download)
Thu Sep 15 00:13:09 2016 UTC (7 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z
Changes since 1.83: +1 -28 lines
- move setting of icefront Sub-Glacial RunOff forcing (currently unused)
  from pkg/exf (read from data.exf) to pkg/icefront (read from data.icefront)

1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_readparms.F,v 1.83 2016/09/12 23:43:00 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 & rotateStressOnAgrid, 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 & exf_output_interp
230 #endif /* USE_EXF_INTERPOLATION */
231
232 #ifdef ALLOW_OBCS
233 NAMELIST /EXF_NML_OBCS/
234 & useOBCSYearlyFields,
235 & obcsNstartdate1, obcsNstartdate2, obcsNperiod,
236 & obcsSstartdate1, obcsSstartdate2, obcsSperiod,
237 & obcsEstartdate1, obcsEstartdate2, obcsEperiod,
238 & obcsWstartdate1, obcsWstartdate2, obcsWperiod,
239 & siobNstartdate1, siobNstartdate2, siobNperiod,
240 & siobSstartdate1, siobSstartdate2, siobSperiod,
241 & siobEstartdate1, siobEstartdate2, siobEperiod,
242 & siobWstartdate1, siobWstartdate2, siobWperiod
243 #endif /* ALLOW_OBCS */
244
245 #ifdef USE_EXF_INTERPOLATION
246 # ifdef ALLOW_EXCH2
247 gridNx = exch2_mydNx(1)
248 gridNy = exch2_mydNy(1)
249 # else /* ALLOW_EXCH2 */
250 gridNx = Nx
251 gridNy = Ny
252 # endif /* ALLOW_EXCH2 */
253 #endif /* USE_EXF_INTERPOLATION */
254
255 IF ( .NOT.useEXF ) THEN
256 C- pkg EXF is not used
257 _BEGIN_MASTER(myThid)
258 C- Track pkg activation status:
259 C print a (weak) warning if data.exf is found
260 CALL PACKAGES_UNUSED_MSG( 'useEXF', ' ', ' ' )
261 _END_MASTER(myThid)
262 RETURN
263 ENDIF
264
265 _BEGIN_MASTER(myThid)
266
267 C Set default values.
268
269 c exf_verbose = debugMode
270 exf_verbose = .FALSE.
271 exf_debugLev = debugLevel
272 exf_monFreq = monitorFreq
273 useExfCheckRange = .TRUE.
274 useExfZenAlbedo = .FALSE.
275 select_ZenAlbedo = 0
276 useExfZenIncoming = .FALSE.
277 readStressOnAgrid = .FALSE.
278 rotateStressOnAgrid = .FALSE.
279 readStressOnCgrid = .FALSE.
280 #ifdef ALLOW_ATM_WIND
281 useAtmWind = .TRUE.
282 #else
283 useAtmWind = .FALSE.
284 #endif
285 useRelativeWind = .FALSE.
286 noNegativeEvap = .FALSE.
287
288 C- default value should be set to main model parameter:
289 c cen2kel = celsius2K
290 c gravity_mks = gravity
291 c atmcp = atm_Cp
292 c humid_fac = atm_Rq <- default is zero !!!
293
294 cen2kel = 273.150 _d 0
295 gravity_mks = 9.81 _d 0
296 atmrho = 1.200 _d 0
297 atmcp = 1005.000 _d 0
298 flamb = 2500000.000 _d 0
299 flami = 334000.000 _d 0
300 cvapor_fac = 640380.000 _d 0
301 cvapor_exp = 5107.400 _d 0
302 cvapor_fac_ice = 11637800.000 _d 0
303 cvapor_exp_ice = 5897.800 _d 0
304 humid_fac = 0.606 _d 0
305 gamma_blk = 0.010 _d 0
306 saltsat = 0.980 _d 0
307 sstExtrapol = 0.0 _d 0
308 cdrag_1 = 0.0027000 _d 0
309 cdrag_2 = 0.0001420 _d 0
310 cdrag_3 = 0.0000764 _d 0
311 cstanton_1 = 0.0327 _d 0
312 cstanton_2 = 0.0180 _d 0
313 cdalton = 0.0346 _d 0
314 zolmin = -100.000 _d 0
315 psim_fac = 5.000 _d 0
316 zref = 10.000 _d 0
317 hu = 10.000 _d 0
318 ht = 2.000 _d 0
319 umin = 0.5 _d 0
320 useStabilityFct_overIce = .FALSE.
321 exf_iceCd = 1.63 _d -3
322 exf_iceCe = 1.63 _d -3
323 exf_iceCh = 1.63 _d -3
324 exf_albedo = 0.1 _d 0
325 C-- this default is chosen to be backward compatible with
326 C-- an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann
327 ocean_emissivity = 5.50 _d -8 / 5.670 _d -8
328 ice_emissivity = 0.95 _d 0
329 snow_emissivity = 0.95 _d 0
330
331 C Calendar data.
332 hfluxstartdate1 = 0
333 hfluxstartdate2 = 0
334 hfluxperiod = 0.0 _d 0
335 hfluxconst = 0.0 _d 0
336 hflux_exfremo_intercept = 0.0 _d 0
337 hflux_exfremo_slope = 0.0 _d 0
338
339 atempstartdate1 = 0
340 atempstartdate2 = 0
341 atempperiod = 0.0 _d 0
342 atempconst = celsius2K
343 atemp_exfremo_intercept = 0.0 _d 0
344 atemp_exfremo_slope = 0.0 _d 0
345
346 aqhstartdate1 = 0
347 aqhstartdate2 = 0
348 aqhperiod = 0.0 _d 0
349 aqhconst = 0.0 _d 0
350 aqh_exfremo_intercept = 0.0 _d 0
351 aqh_exfremo_slope = 0.0 _d 0
352
353 sfluxstartdate1 = 0
354 sfluxstartdate2 = 0
355 sfluxperiod = 0.0 _d 0
356 sfluxconst = 0.0 _d 0
357 sflux_exfremo_intercept = 0.0 _d 0
358 sflux_exfremo_slope = 0.0 _d 0
359
360 evapstartdate1 = 0
361 evapstartdate2 = 0
362 evapperiod = 0.0 _d 0
363 evapconst = 0.0 _d 0
364 evap_exfremo_intercept = 0.0 _d 0
365 evap_exfremo_slope = 0.0 _d 0
366
367 precipstartdate1 = 0
368 precipstartdate2 = 0
369 precipperiod = 0.0 _d 0
370 precipconst = 0.0 _d 0
371 precip_exfremo_intercept = 0.0 _d 0
372 precip_exfremo_slope = 0.0 _d 0
373
374 snowprecipstartdate1 = 0
375 snowprecipstartdate2 = 0
376 snowprecipperiod = 0.0 _d 0
377 snowprecipconst = 0.0 _d 0
378 snowprecip_exfremo_intercept = 0.0 _d 0
379 snowprecip_exfremo_slope = 0.0 _d 0
380
381 runoffstartdate1 = 0
382 runoffstartdate2 = 0
383 runoffperiod = 0.0 _d 0
384 runoffconst = 0.0 _d 0
385 runoff_exfremo_intercept = 0.0 _d 0
386 runoff_exfremo_slope = 0.0 _d 0
387
388 runoftempconst = 0.0 _d 0
389 runoftemp_exfremo_intercept = 0.0 _d 0
390 runoftemp_exfremo_slope = 0.0 _d 0
391
392 ustressstartdate1 = 0
393 ustressstartdate2 = 0
394 ustressperiod = 0.0 _d 0
395 ustressconst = 0.0 _d 0
396 ustress_exfremo_intercept = 0.0 _d 0
397 ustress_exfremo_slope = 0.0 _d 0
398
399 vstressstartdate1 = 0
400 vstressstartdate2 = 0
401 vstressperiod = 0.0 _d 0
402 vstressconst = 0.0 _d 0
403 vstress_exfremo_intercept = 0.0 _d 0
404 vstress_exfremo_slope = 0.0 _d 0
405
406 uwindstartdate1 = 0
407 uwindstartdate2 = 0
408 uwindperiod = 0.0 _d 0
409 uwindconst = 0.0 _d 0
410 uwind_exfremo_intercept = 0.0 _d 0
411 uwind_exfremo_slope = 0.0 _d 0
412
413 vwindstartdate1 = 0
414 vwindstartdate2 = 0
415 vwindperiod = 0.0 _d 0
416 vwindconst = 0.0 _d 0
417 vwind_exfremo_intercept = 0.0 _d 0
418 vwind_exfremo_slope = 0.0 _d 0
419
420 wspeedstartdate1 = 0
421 wspeedstartdate2 = 0
422 wspeedperiod = 0.0 _d 0
423 wspeedconst = 0.0 _d 0
424 wspeed_exfremo_intercept = 0.0 _d 0
425 wspeed_exfremo_slope = 0.0 _d 0
426
427 swfluxstartdate1 = 0
428 swfluxstartdate2 = 0
429 swfluxperiod = 0.0 _d 0
430 swfluxconst = 0.0 _d 0
431 swflux_exfremo_intercept = 0.0 _d 0
432 swflux_exfremo_slope = 0.0 _d 0
433
434 lwfluxstartdate1 = 0
435 lwfluxstartdate2 = 0
436 lwfluxperiod = 0.0 _d 0
437 lwfluxconst = 0.0 _d 0
438 lwflux_exfremo_intercept = 0.0 _d 0
439 lwflux_exfremo_slope = 0.0 _d 0
440
441 swdownstartdate1 = 0
442 swdownstartdate2 = 0
443 swdownperiod = 0.0 _d 0
444 swdownconst = 0.0 _d 0
445 swdown_exfremo_intercept = 0.0 _d 0
446 swdown_exfremo_slope = 0.0 _d 0
447
448 lwdownstartdate1 = 0
449 lwdownstartdate2 = 0
450 lwdownperiod = 0.0 _d 0
451 lwdownconst = 0.0 _d 0
452 lwdown_exfremo_intercept = 0.0 _d 0
453 lwdown_exfremo_slope = 0.0 _d 0
454
455 apressurestartdate1 = 0
456 apressurestartdate2 = 0
457 apressureperiod = 0.0 _d 0
458 apressureconst = 0.0 _d 0
459 apressure_exfremo_intercept = 0.0 _d 0
460 apressure_exfremo_slope = 0.0 _d 0
461
462 areamaskstartdate1 = 0
463 areamaskstartdate2 = 0
464 areamaskperiod = 0.0 _d 0
465 areamaskTauRelax = 0.0 _d 0
466 areamaskconst = 0.0 _d 0
467 areamask_exfremo_intercept = 0. _d 0
468 areamask_exfremo_slope = 0. _d 0
469
470 climsststartdate1 = 0
471 climsststartdate2 = 0
472 climsstperiod = 0
473 climsstTauRelax = 0.0 _d 0
474 climsstconst = 0.0 _d 0
475 climsst_exfremo_intercept = 0.0 _d 0
476 climsst_exfremo_slope = 0.0 _d 0
477
478 climsssstartdate1 = 0
479 climsssstartdate2 = 0
480 climsssperiod = 0
481 climsssTauRelax = 0.0 _d 0
482 climsssconst = 0.0 _d 0
483 climsss_exfremo_intercept = 0.0 _d 0
484 climsss_exfremo_slope = 0.0 _d 0
485
486 climustrstartdate1 = 0
487 climustrstartdate2 = 0
488 climustrperiod = 0
489 climustrTauRelax = 0.0 _d 0
490 climustrconst = 0.0 _d 0
491 climustr_exfremo_intercept = 0.0 _d 0
492 climustr_exfremo_slope = 0.0 _d 0
493
494 climvstrstartdate1 = 0
495 climvstrstartdate2 = 0
496 climvstrperiod = 0
497 climvstrTauRelax = 0.0 _d 0
498 climvstrconst = 0.0 _d 0
499 climvstr_exfremo_intercept = 0.0 _d 0
500 climvstr_exfremo_slope = 0.0 _d 0
501
502 useOBCSYearlyFields = .FALSE.
503 obcsNstartdate1 = 0
504 obcsNstartdate2 = 0
505 obcsNperiod = 0.0 _d 0
506 obcsSstartdate1 = 0
507 obcsSstartdate2 = 0
508 obcsSperiod = 0.0 _d 0
509 obcsEstartdate1 = 0
510 obcsEstartdate2 = 0
511 obcsEperiod = 0.0 _d 0
512 obcsWstartdate1 = 0
513 obcsWstartdate2 = 0
514 obcsWperiod = 0.0 _d 0
515
516 siobNstartdate1 = UNSET_I
517 siobNstartdate2 = UNSET_I
518 siobNperiod = UNSET_RL
519 siobSstartdate1 = UNSET_I
520 siobSstartdate2 = UNSET_I
521 siobSperiod = UNSET_RL
522 siobEstartdate1 = UNSET_I
523 siobEstartdate2 = UNSET_I
524 siobEperiod = UNSET_RL
525 siobWstartdate1 = UNSET_I
526 siobWstartdate2 = UNSET_I
527 siobWperiod = UNSET_RL
528
529 repeatPeriod = 0.0 _d 0
530 windstressmax = 2.0 _d 0
531
532 exf_scal_BulkCdn = 1.0 _d 0
533
534 C Initialise freezing temperature of sea water
535 climtempfreeze = -1.9 _d 0
536
537 C Data files.
538 hfluxfile = ' '
539 atempfile = ' '
540 aqhfile = ' '
541 evapfile = ' '
542 precipfile = ' '
543 snowprecipfile = ' '
544 sfluxfile = ' '
545 runofffile = ' '
546 runoftempfile = ' '
547 ustressfile = ' '
548 vstressfile = ' '
549 uwindfile = ' '
550 vwindfile = ' '
551 wspeedfile = ' '
552 swfluxfile = ' '
553 lwfluxfile = ' '
554 swdownfile = ' '
555 lwdownfile = ' '
556 apressurefile = ' '
557 areamaskfile = ' '
558 climsstfile = ' '
559 climsssfile = ' '
560 climustrfile = ' '
561 climvstrfile = ' '
562
563 C Start dates.
564 hfluxstartdate = 0.
565 atempstartdate = 0.
566 aqhstartdate = 0.
567 evapstartdate = 0.
568 precipstartdate = 0.
569 snowprecipstartdate= 0.
570 sfluxstartdate = 0.
571 runoffstartdate = 0.
572 ustressstartdate = 0.
573 vstressstartdate = 0.
574 uwindstartdate = 0.
575 vwindstartdate = 0.
576 wspeedstartdate = 0.
577 swfluxstartdate = 0.
578 lwfluxstartdate = 0.
579 swdownstartdate = 0.
580 lwdownstartdate = 0.
581 obcsNstartdate = 0.
582 obcsSstartdate = 0.
583 obcsEstartdate = 0.
584 obcsWstartdate = 0.
585 siobNstartdate = 0.
586 siobSstartdate = 0.
587 siobEstartdate = 0.
588 siobWstartdate = 0.
589 apressurestartdate = 0.
590 areamaskstartdate = 0.
591 climsststartdate = 0.
592 climsssstartdate = 0.
593 climustrstartdate = 0.
594 climvstrstartdate = 0.
595
596 C Initialise file type and field precision
597 exf_iprec = 32
598 exf_iprec_obcs = UNSET_I
599 exf_yftype = 'RL'
600 useExfYearlyFields = .FALSE.
601 twoDigitYear = .FALSE.
602
603 C Input scaling factors.
604 exf_inscal_hflux = 1. _d 0
605 exf_inscal_sflux = 1. _d 0
606 exf_inscal_ustress = 1. _d 0
607 exf_inscal_vstress = 1. _d 0
608 exf_inscal_uwind = 1. _d 0
609 exf_inscal_vwind = 1. _d 0
610 exf_inscal_wspeed = 1. _d 0
611 exf_inscal_swflux = 1. _d 0
612 exf_inscal_lwflux = 1. _d 0
613 exf_inscal_precip = 1. _d 0
614 exf_inscal_snowprecip= 1. _d 0
615 exf_inscal_sst = 1. _d 0
616 exf_inscal_sss = 1. _d 0
617 exf_inscal_atemp = 1. _d 0
618 exf_offset_atemp = 0. _d 0
619 exf_inscal_aqh = 1. _d 0
620 exf_inscal_evap = 1. _d 0
621 exf_inscal_apressure = 1. _d 0
622 exf_inscal_runoff = 1. _d 0
623 exf_inscal_runoftemp = 1. _d 0
624 exf_inscal_swdown = 1. _d 0
625 exf_inscal_lwdown = 1. _d 0
626 exf_inscal_climsst = 1. _d 0
627 exf_inscal_climsss = 1. _d 0
628 exf_inscal_climustr = 1. _d 0
629 exf_inscal_climvstr = 1. _d 0
630 exf_inscal_areamask = 1. _d 0
631
632 C Output scaling factors.
633 exf_outscal_hflux = 1. _d 0
634 exf_outscal_sflux = 1. _d 0
635 exf_outscal_ustress = 1. _d 0
636 exf_outscal_vstress = 1. _d 0
637 exf_outscal_swflux = 1. _d 0
638 exf_outscal_sst = 1. _d 0
639 exf_outscal_sss = 1. _d 0
640 exf_outscal_apressure= 1. _d 0
641 exf_outscal_areamask = 1. _d 0
642
643 #ifdef USE_EXF_INTERPOLATION
644 C-- set default input location to match (in case of simple Lat-Lonp grid)
645 C model grid cell-center position (leading to trivial interpolation)
646 inp_lon0 = xgOrigin + delX(1)*exf_half
647 inp_lat0 = ygOrigin + delY(1)*exf_half
648 inp_dLon = delX(1)
649 inp_dLat = delY(1)
650
651 ustress_lon0 = inp_lon0
652 uwind_lon0 = inp_lon0
653 vstress_lon0 = inp_lon0
654 hflux_lon0 = inp_lon0
655 sflux_lon0 = inp_lon0
656 swflux_lon0 = inp_lon0
657 runoff_lon0 = inp_lon0
658 atemp_lon0 = inp_lon0
659 aqh_lon0 = inp_lon0
660 evap_lon0 = inp_lon0
661 precip_lon0 = inp_lon0
662 snowprecip_lon0= inp_lon0
663 vwind_lon0 = inp_lon0
664 wspeed_lon0 = inp_lon0
665 lwflux_lon0 = inp_lon0
666 swdown_lon0 = inp_lon0
667 lwdown_lon0 = inp_lon0
668 apressure_lon0 = inp_lon0
669 areamask_lon0 = inp_lon0
670 vstress_lat0 = inp_lat0
671 vwind_lat0 = inp_lat0
672 wspeed_lat0 = inp_lat0
673 ustress_lat0 = inp_lat0
674 hflux_lat0 = inp_lat0
675 sflux_lat0 = inp_lat0
676 runoff_lat0 = inp_lat0
677 swflux_lat0 = inp_lat0
678 atemp_lat0 = inp_lat0
679 aqh_lat0 = inp_lat0
680 evap_lat0 = inp_lat0
681 precip_lat0 = inp_lat0
682 snowprecip_lat0= inp_lat0
683 uwind_lat0 = inp_lat0
684 lwflux_lat0 = inp_lat0
685 swdown_lat0 = inp_lat0
686 lwdown_lat0 = inp_lat0
687 apressure_lat0 = inp_lat0
688 areamask_lat0 = inp_lat0
689 ustress_nlon = gridNx
690 ustress_nlat = gridNy
691 vstress_nlon = gridNx
692 vstress_nlat = gridNy
693 hflux_nlon = gridNx
694 hflux_nlat = gridNy
695 sflux_nlon = gridNx
696 sflux_nlat = gridNy
697 swflux_nlon = gridNx
698 swflux_nlat = gridNy
699 runoff_nlon = gridNx
700 runoff_nlat = gridNy
701 atemp_nlon = gridNx
702 atemp_nlat = gridNy
703 aqh_nlon = gridNx
704 aqh_nlat = gridNy
705 evap_nlon = gridNx
706 evap_nlat = gridNy
707 precip_nlon = gridNx
708 snowprecip_nlon= gridNx
709 precip_nlat = gridNy
710 snowprecip_nlat= gridNy
711 uwind_nlon = gridNx
712 uwind_nlat = gridNy
713 vwind_nlon = gridNx
714 vwind_nlat = gridNy
715 wspeed_nlon = gridNx
716 wspeed_nlat = gridNy
717 lwflux_nlon = gridNx
718 lwflux_nlat = gridNy
719 swdown_nlon = gridNx
720 swdown_nlat = gridNy
721 lwdown_nlon = gridNx
722 lwdown_nlat = gridNy
723 apressure_nlon = gridNx
724 apressure_nlat = gridNy
725 areamask_nlon = gridNx
726 areamask_nlat = gridNy
727 ustress_lon_inc = inp_dLon
728 vstress_lon_inc = inp_dLon
729 hflux_lon_inc = inp_dLon
730 sflux_lon_inc = inp_dLon
731 swflux_lon_inc = inp_dLon
732 runoff_lon_inc = inp_dLon
733 atemp_lon_inc = inp_dLon
734 aqh_lon_inc = inp_dLon
735 evap_lon_inc = inp_dLon
736 precip_lon_inc = inp_dLon
737 snowprecip_lon_inc= inp_dLon
738 uwind_lon_inc = inp_dLon
739 vwind_lon_inc = inp_dLon
740 wspeed_lon_inc = inp_dLon
741 lwflux_lon_inc = inp_dLon
742 swdown_lon_inc = inp_dLon
743 lwdown_lon_inc = inp_dLon
744 apressure_lon_inc = inp_dLon
745 areamask_lon_inc = inp_dLon
746
747 climsst_lon0 = inp_lon0
748 climsss_lon0 = inp_lon0
749 climustr_lon0 = inp_lon0
750 climvstr_lon0 = inp_lon0
751 climsst_lat0 = inp_lat0
752 climsss_lat0 = inp_lat0
753 climustr_lat0 = inp_lat0
754 climvstr_lat0 = inp_lat0
755 climsst_nlon = gridNx
756 climsst_nlat = gridNy
757 climsss_nlon = gridNx
758 climsss_nlat = gridNy
759 climustr_nlon = gridNx
760 climustr_nlat = gridNy
761 climvstr_nlon = gridNx
762 climvstr_nlat = gridNy
763 climsst_lon_inc = inp_dLon
764 climsss_lon_inc = inp_dLon
765 climustr_lon_inc= inp_dLon
766 climvstr_lon_inc= inp_dLon
767
768 DO j=1,MAX_LAT_INC
769 IF (j.LT.gridNy) THEN
770 inp_dLat = (delY(j) + delY(j+1))*exf_half
771 ELSE
772 inp_dLat = 0.
773 ENDIF
774 ustress_lat_inc(j) = inp_dLat
775 vstress_lat_inc(j) = inp_dLat
776 hflux_lat_inc(j) = inp_dLat
777 sflux_lat_inc(j) = inp_dLat
778 swflux_lat_inc(j) = inp_dLat
779 runoff_lat_inc(j) = inp_dLat
780 atemp_lat_inc(j) = inp_dLat
781 aqh_lat_inc(j) = inp_dLat
782 evap_lat_inc(j) = inp_dLat
783 precip_lat_inc(j) = inp_dLat
784 snowprecip_lat_inc(j)= inp_dLat
785 uwind_lat_inc(j) = inp_dLat
786 vwind_lat_inc(j) = inp_dLat
787 wspeed_lat_inc(j) = inp_dLat
788 lwflux_lat_inc(j) = inp_dLat
789 swdown_lat_inc(j) = inp_dLat
790 lwdown_lat_inc(j) = inp_dLat
791 apressure_lat_inc(j) = inp_dLat
792 areamask_lat_inc(j) = inp_dLat
793 climsst_lat_inc(j) = inp_dLat
794 climsss_lat_inc(j) = inp_dLat
795 climustr_lat_inc(j) = inp_dLat
796 climvstr_lat_inc(j) = inp_dLat
797 ENDDO
798
799 ustress_interpMethod = 12
800 vstress_interpMethod = 22
801 hflux_interpMethod = 1
802 sflux_interpMethod = 1
803 swflux_interpMethod = 1
804 runoff_interpMethod = 1
805 atemp_interpMethod = 1
806 aqh_interpMethod = 1
807 evap_interpMethod = 1
808 precip_interpMethod = 1
809 snowprecip_interpMethod= 1
810 uwind_interpMethod = 12
811 vwind_interpMethod = 22
812 wspeed_interpMethod = 1
813 lwflux_interpMethod = 1
814 swdown_interpMethod = 1
815 lwdown_interpMethod = 1
816 apressure_interpMethod = 1
817 areamask_interpMethod = 1
818 climsst_interpMethod = 2
819 climsss_interpMethod = 2
820 climustr_interpMethod = 12
821 climvstr_interpMethod = 22
822
823 exf_output_interp = .FALSE.
824 #endif /* USE_EXF_INTERPOLATION */
825
826 C Next, read the forcing data file.
827 WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'
828 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
829 & SQUEEZE_RIGHT , 1)
830
831 CALL OPEN_COPY_DATA_FILE(
832 I 'data.exf', 'EXF_READPARMS',
833 O iUnit,
834 I myThid )
835
836 WRITE(msgBuf,'(A)')
837 & 'EXF_READPARMS: reading EXF_NML_01'
838 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
839 & SQUEEZE_RIGHT , 1)
840 READ( iUnit, nml = EXF_NML_01 )
841 WRITE(msgBuf,'(A)')
842 & 'EXF_READPARMS: reading EXF_NML_02'
843 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
844 & SQUEEZE_RIGHT , 1)
845 READ( iUnit, nml = EXF_NML_02 )
846 WRITE(msgBuf,'(A)')
847 & 'EXF_READPARMS: reading EXF_NML_03'
848 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
849 & SQUEEZE_RIGHT , 1)
850 READ( iUnit, nml = EXF_NML_03 )
851 #ifdef USE_EXF_INTERPOLATION
852 WRITE(msgBuf,'(A)')
853 & 'EXF_READPARMS: reading EXF_NML_04'
854 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
855 & SQUEEZE_RIGHT , 1)
856 READ( iUnit, nml = EXF_NML_04 )
857 #endif /* USE_EXF_INTERPOLATION */
858
859 #ifdef ALLOW_OBCS
860 IF ( useOBCS ) THEN
861 WRITE(msgBuf,'(A)')
862 & 'EXF_READPARMS: reading EXF_NML_OBCS'
863 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
864 & SQUEEZE_RIGHT , 1)
865 READ( iUnit, nml = EXF_NML_OBCS )
866 ENDIF
867 IF(siobNstartdate1.EQ.UNSET_I ) siobNstartdate1=obcsNstartdate1
868 IF(siobNstartdate2.EQ.UNSET_I ) siobNstartdate2=obcsNstartdate2
869 IF(siobNperiod .EQ.UNSET_RL) siobNperiod =obcsNperiod
870 IF(siobSstartdate1.EQ.UNSET_I ) siobSstartdate1=obcsSstartdate1
871 IF(siobSstartdate2.EQ.UNSET_I ) siobSstartdate2=obcsSstartdate2
872 IF(siobSperiod .EQ.UNSET_RL) siobSperiod =obcsSperiod
873 IF(siobEstartdate1.EQ.UNSET_I ) siobEstartdate1=obcsEstartdate1
874 IF(siobEstartdate2.EQ.UNSET_I ) siobEstartdate2=obcsEstartdate2
875 IF(siobEperiod .EQ.UNSET_RL) siobEperiod =obcsEperiod
876 IF(siobWstartdate1.EQ.UNSET_I ) siobWstartdate1=obcsWstartdate1
877 IF(siobWstartdate2.EQ.UNSET_I ) siobWstartdate2=obcsWstartdate2
878 IF(siobWperiod .EQ.UNSET_RL) siobWperiod =obcsWperiod
879
880 IF(exf_iprec_obcs .EQ. UNSET_I) exf_iprec_obcs =exf_iprec
881 #endif /* ALLOW_OBCS */
882
883 WRITE(msgBuf,'(A)')
884 & 'EXF_READPARMS: finished reading data.exf'
885 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
886 & SQUEEZE_RIGHT , 1)
887
888 CLOSE( iUnit )
889
890 C-- Retired parameters
891 IF ( exf_yftype.NE.'RL' ) THEN
892 STOP 'S/R EXF_READPARAMS: value of exf_yftype not allowed'
893 ENDIF
894
895 C-- Derive other parameters:
896 IF ( exf_verbose ) exf_debugLev = MAX( exf_debugLev, debLevD )
897 hq = ht
898 stressIsOnCgrid = readStressOnCgrid
899 #if ( defined (ALLOW_BULKFORMULAE) )
900 IF ( useAtmWind ) stressIsOnCgrid = .FALSE.
901 #endif
902 #ifdef USE_EXF_INTERPOLATION
903 IF ( (ustress_interpMethod.GE.1 .AND. ustressfile.NE.' ') .OR.
904 & (vstress_interpMethod.GE.1 .AND. vstressfile.NE.' ') )
905 & stressIsOnCgrid = .FALSE.
906 #endif /* USE_EXF_INTERPOLATION */
907
908 IF ( select_ZenAlbedo.GT.0 ) THEN
909 useExfZenAlbedo=.TRUE.
910 ENDIf
911
912 C-- Overwrite tauThetaClimRelax but stop if already set.
913 C- Note: need this, even if EXF option ALLOW_CLIMSST_RELAXATION is undef;
914 C this prevents to apply relaxation towards potentially wrong SST since,
915 C with EXF, we skip the update of loaded SST in EXTERNAL_FIELDS_LOAD.
916 C- Note2: let s see whether we can put this back under ifdef
917 C ALLOW_CLIMSST_RELAXATION, but always call EXTERNAL_FIELDS_LOAD.
918 C If ALLOW_CLIMSST_RELAXATION is undef, clim.relaxation could still
919 C be done outside of exf.
920 #ifdef ALLOW_CLIMSST_RELAXATION
921 IF ( tauThetaClimRelax.NE.0. _d 0 ) THEN
922 WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
923 & 'with EXF, cannot use "tauThetaClimRelax" in "data"'
924 CALL PRINT_ERROR( msgBuf, myThid )
925 WRITE(msgBuf,'(2A)') 'since SST relax. is handled by EXF',
926 & ' (data.exf, "climsstTauRelax")'
927 CALL PRINT_ERROR( msgBuf, myThid )
928 STOP 'ABNORMAL END: S/R EXF_READPARMS'
929 ENDIF
930 tauThetaClimRelax = climsstTauRelax
931 #endif
932
933 #ifdef ALLOW_CLIMSSS_RELAXATION
934 C-- Overwrite tauSaltClimRelax but stop if already set.
935 IF ( tauSaltClimRelax.NE.0. _d 0 ) THEN
936 WRITE(msgBuf,'(2A)') 'EXF_READPARMS: ',
937 & 'with EXF, cannot use "tauSaltClimRelax" in "data"'
938 CALL PRINT_ERROR( msgBuf, myThid )
939 WRITE(msgBuf,'(2A)') 'since SSS relax. is handled by EXF',
940 & ' (data.exf, "climsssTauRelax")'
941 CALL PRINT_ERROR( msgBuf, myThid )
942 STOP 'ABNORMAL END: S/R EXF_READPARMS'
943 ENDIF
944 tauSaltClimRelax = climsssTauRelax
945 #endif
946
947 C Complete the start date specifications for the forcing
948 C fields to get a complete calendar date array.
949 C => moved to EXF_INIT_FIXED
950
951 _END_MASTER( myThid )
952 _BARRIER
953
954 RETURN
955 END

  ViewVC Help
Powered by ViewVC 1.1.22