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

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

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


Revision 1.13.2.1 - (hide annotations) (download)
Fri Oct 8 06:21:29 2004 UTC (19 years, 8 months ago) by dimitri
Branch: checkpoint51n_branch
Changes since 1.13: +278 -114 lines
these mods are for a dead-end branch used for tracer
Green function computations.

1 dimitri 1.13.2.1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_readparms.F,v 1.19 2004/10/07 01:10:43 dimitri Exp $
2 jmc 1.11 C $Name: $
3 heimbach 1.1
4 edhill 1.12 #include "EXF_OPTIONS.h"
5 heimbach 1.3 #ifdef ALLOW_OBCS
6     # include "OBCS_OPTIONS.h"
7     #endif
8 heimbach 1.1
9 heimbach 1.3 subroutine exf_readparms( mythid )
10 heimbach 1.1
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 edhill 1.12 c precompiler switches have to be specified in "EXF_OPTIONS.h".
19 heimbach 1.1 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 heimbach 1.2 c changed: Patrick Heimbach, heimbach@mit.edu 04-May-2000
28 heimbach 1.1 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 heimbach 1.2 c - moved relaxation and climatology to extra routines
32 heimbach 1.1 c Patrick Heimbach, heimbach@mit.edu 04-May-2000
33     c - added obcs parameters
34 heimbach 1.2 c changed: Virginie Thierry, vthierry@ucsd.edu 04-June-2001
35     c - added new obcs parameters (for each boundaries)
36 heimbach 1.3 c included runoff D. Stammer, Nov. 25, 2001
37     c included pressure forcing. heimbach@mit.edu 05-Nov-2002
38 dimitri 1.5 c added "repeatPeriod" for cycling of forcing datasets 19-Dec-2002
39 dimitri 1.6 c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002
40 heimbach 1.1 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 dimitri 1.13.2.1 #include "PARAMS.h"
52 heimbach 1.1 #include "cal.h"
53     #include "exf.h"
54     #include "exf_param.h"
55     #include "exf_constants.h"
56    
57     c == routine arguments ==
58    
59     integer mythid
60    
61     c == local variables ==
62    
63     integer i
64 dimitri 1.13 integer date_array(4), difftime(4)
65 heimbach 1.1
66     c == external ==
67    
68     integer ilnblnk
69     external ilnblnk
70    
71     c == end of interface ==
72    
73     c Surface flux data.
74     namelist /exf_nml/
75 dimitri 1.13.2.1 & windstressmax, repeatPeriod, exf_albedo,
76 heimbach 1.1 & hfluxstartdate1, hfluxstartdate2, hfluxperiod,
77     & atempstartdate1, atempstartdate2, atempperiod,
78     & aqhstartdate1, aqhstartdate2, aqhperiod,
79     & sfluxstartdate1, sfluxstartdate2, sfluxperiod,
80 dimitri 1.5 & evapstartdate1, evapstartdate2, evapperiod,
81 heimbach 1.1 & precipstartdate1, precipstartdate2, precipperiod,
82 heimbach 1.3 & runoffstartdate1, runoffstartdate2, runoffperiod,
83 heimbach 1.1 & ustressstartdate1, ustressstartdate2, ustressperiod,
84     & vstressstartdate1, vstressstartdate2, vstressperiod,
85     & uwindstartdate1, uwindstartdate2, uwindperiod,
86     & vwindstartdate1, vwindstartdate2, vwindperiod,
87     & swfluxstartdate1, swfluxstartdate2, swfluxperiod,
88     & lwfluxstartdate1, lwfluxstartdate2, lwfluxperiod,
89 dimitri 1.6 & swdownstartdate1, swdownstartdate2, swdownperiod,
90     & lwdownstartdate1, lwdownstartdate2, lwdownperiod,
91 heimbach 1.2 & obcsNstartdate1, obcsNstartdate2, obcsNperiod,
92     & obcsSstartdate1, obcsSstartdate2, obcsSperiod,
93     & obcsEstartdate1, obcsEstartdate2, obcsEperiod,
94     & obcsWstartdate1, obcsWstartdate2, obcsWperiod,
95 heimbach 1.3 &apressurestartdate1,apressurestartdate2,apressureperiod,
96 heimbach 1.1 & hfluxfile, atempfile, aqhfile,
97 heimbach 1.3 & sfluxfile, precipfile, runofffile,
98 dimitri 1.5 & ustressfile, vstressfile, evapfile,
99 heimbach 1.3 & uwindfile, vwindfile,
100     & swfluxfile, lwfluxfile, apressurefile,
101 dimitri 1.6 & swdownfile, lwdownfile,
102 heimbach 1.3 & exf_iprec, exf_yftype,
103 dimitri 1.13.2.1 & exf_inscal_hflux, exf_inscal_sflux,
104     & exf_inscal_ustress, exf_inscal_vstress,
105     & exf_inscal_uwind, exf_inscal_vwind, exf_inscal_evap,
106     & exf_inscal_atemp, exf_offset_atemp, exf_inscal_aqh,
107     & exf_inscal_sst, exf_inscal_sss,
108     & exf_inscal_swflux, exf_inscal_lwflux, exf_inscal_precip,
109     & exf_inscal_runoff, exf_inscal_apressure,
110 heimbach 1.8 & exf_inscal_swdown, exf_inscal_lwdown,
111     & exf_outscal_hflux, exf_outscal_ustress, exf_outscal_vstress,
112 dimitri 1.13.2.1 & exf_outscal_swflux, exf_outscal_sst, exf_outscal_sss,
113 heimbach 1.8 & exf_outscal_sflux, exf_outscal_apressure,
114 heimbach 1.7 & hfluxconst,
115     & atempconst,
116     & aqhconst,
117     & sfluxconst,
118     & evapconst,
119     & precipconst,
120     & runoffconst,
121     & ustressconst,
122     & vstressconst,
123     & uwindconst,
124     & vwindconst,
125     & swfluxconst,
126     & lwfluxconst,
127     & swdownconst,
128     & lwdownconst,
129 dimitri 1.10 & apressureconst
130 dimitri 1.9 #ifdef USE_EXF_INTERPOLATION
131 jmc 1.11 & ,ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
132 dimitri 1.9 & ustress_nlon, ustress_nlat,
133 jmc 1.11 & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
134 dimitri 1.9 & vstress_nlon, vstress_nlat,
135 jmc 1.11 & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
136 dimitri 1.9 & hflux_nlon, hflux_nlat,
137 jmc 1.11 & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
138 dimitri 1.9 & sflux_nlon, sflux_nlat,
139 jmc 1.11 & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
140 dimitri 1.9 & swflux_nlon, swflux_nlat,
141 jmc 1.11 & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
142 dimitri 1.9 & runoff_nlon, runoff_nlat,
143 jmc 1.11 & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
144 dimitri 1.9 & atemp_nlon, atemp_nlat,
145 jmc 1.11 & aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc,
146 dimitri 1.9 & aqh_nlon, aqh_nlat,
147 jmc 1.11 & evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc,
148 dimitri 1.9 & evap_nlon, evap_nlat,
149 jmc 1.11 & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
150 dimitri 1.9 & precip_nlon, precip_nlat,
151 jmc 1.11 & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
152 dimitri 1.9 & uwind_nlon, uwind_nlat,
153 jmc 1.11 & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
154 dimitri 1.9 & vwind_nlon, vwind_nlat,
155 jmc 1.11 & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
156 dimitri 1.9 & lwflux_nlon, lwflux_nlat,
157 jmc 1.11 & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
158 dimitri 1.9 & swdown_nlon, swdown_nlat,
159 jmc 1.11 & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
160 dimitri 1.9 & lwdown_nlon, lwdown_nlat,
161 jmc 1.11 & apressure_lon0,apressure_lon_inc,
162 dimitri 1.9 & apressure_lat0,apressure_lat_inc,
163     & apressure_nlon,apressure_nlat
164     #endif
165 heimbach 1.1
166     _BEGIN_MASTER(mythid)
167    
168     c Set default values.
169    
170     c Calendar data.
171     hfluxstartdate1 = 0
172     hfluxstartdate2 = 0
173     hfluxperiod = 0.0 _d 0
174 heimbach 1.7 hfluxconst = 0.0 _d 0
175 heimbach 1.1
176     atempstartdate1 = 0
177     atempstartdate2 = 0
178     atempperiod = 0.0 _d 0
179 dimitri 1.13.2.1 atempconst = celsius2K
180 heimbach 1.1
181     aqhstartdate1 = 0
182     aqhstartdate2 = 0
183     aqhperiod = 0.0 _d 0
184 heimbach 1.7 aqhconst = 0.0 _d 0
185 heimbach 1.1
186     sfluxstartdate1 = 0
187     sfluxstartdate2 = 0
188     sfluxperiod = 0.0 _d 0
189 heimbach 1.7 sfluxconst = 0.0 _d 0
190 heimbach 1.1
191 dimitri 1.5 evapstartdate1 = 0
192     evapstartdate2 = 0
193     evapperiod = 0.0 _d 0
194 heimbach 1.7 evapconst = 0.0 _d 0
195 dimitri 1.5
196 heimbach 1.1 precipstartdate1 = 0
197     precipstartdate2 = 0
198     precipperiod = 0.0 _d 0
199 heimbach 1.7 precipconst = 0.0 _d 0
200 heimbach 1.1
201 heimbach 1.3 runoffstartdate1 = 0
202     runoffstartdate2 = 0
203     runoffperiod = 0.0 _d 0
204 heimbach 1.7 runoffconst = 0.0 _d 0
205 heimbach 1.3
206 heimbach 1.1 ustressstartdate1 = 0
207     ustressstartdate2 = 0
208     ustressperiod = 0.0 _d 0
209 heimbach 1.7 ustressconst = 0.0 _d 0
210 heimbach 1.1
211     vstressstartdate1 = 0
212     vstressstartdate2 = 0
213     vstressperiod = 0.0 _d 0
214 heimbach 1.7 vstressconst = 0.0 _d 0
215 heimbach 1.1
216     uwindstartdate1 = 0
217     uwindstartdate2 = 0
218     uwindperiod = 0.0 _d 0
219 heimbach 1.7 uwindconst = 0.0 _d 0
220 heimbach 1.1
221     vwindstartdate1 = 0
222     vwindstartdate2 = 0
223     vwindperiod = 0.0 _d 0
224 heimbach 1.7 vwindconst = 0.0 _d 0
225 heimbach 1.1
226     swfluxstartdate1 = 0
227     swfluxstartdate2 = 0
228     swfluxperiod = 0.0 _d 0
229 heimbach 1.7 swfluxconst = 0.0 _d 0
230 heimbach 1.1
231     lwfluxstartdate1 = 0
232     lwfluxstartdate2 = 0
233     lwfluxperiod = 0.0 _d 0
234 heimbach 1.7 lwfluxconst = 0.0 _d 0
235 heimbach 1.1
236 dimitri 1.6 swdownstartdate1 = 0
237     swdownstartdate2 = 0
238     swdownperiod = 0.0 _d 0
239 heimbach 1.7 swdownconst = 0.0 _d 0
240 dimitri 1.6
241     lwdownstartdate1 = 0
242     lwdownstartdate2 = 0
243     lwdownperiod = 0.0 _d 0
244 heimbach 1.7 lwdownconst = 0.0 _d 0
245 dimitri 1.6
246 heimbach 1.2 obcsNstartdate1 = 0
247     obcsNstartdate2 = 0
248     obcsNperiod = 0.0 _d 0
249    
250     obcsSstartdate1 = 0
251     obcsSstartdate2 = 0
252     obcsSperiod = 0.0 _d 0
253    
254     obcsEstartdate1 = 0
255     obcsEstartdate2 = 0
256     obcsEperiod = 0.0 _d 0
257    
258     obcsWstartdate1 = 0
259     obcsWstartdate2 = 0
260     obcsWperiod = 0.0 _d 0
261 heimbach 1.1
262 heimbach 1.3 apressurestartdate1 = 0
263     apressurestartdate2 = 0
264     apressureperiod = 0.0 _d 0
265 heimbach 1.7 apressureconst = 0.0 _d 0
266 cheisey 1.4
267     repeatPeriod = 0.0 _d 0
268 dimitri 1.13.2.1 exf_albedo = 0.1 _d 0
269     windstressmax = 2.0 _d 0
270 cheisey 1.4
271 heimbach 1.1 c Data files.
272     hfluxfile = ' '
273     atempfile = ' '
274     aqhfile = ' '
275 dimitri 1.5 evapfile = ' '
276 heimbach 1.1 precipfile = ' '
277     sfluxfile = ' '
278 heimbach 1.3 runofffile = ' '
279 heimbach 1.1 ustressfile = ' '
280     vstressfile = ' '
281     uwindfile = ' '
282     vwindfile = ' '
283     swfluxfile = ' '
284     lwfluxfile = ' '
285 dimitri 1.6 swdownfile = ' '
286     lwdownfile = ' '
287 heimbach 1.3 apressurefile = ' '
288 heimbach 1.1
289 dimitri 1.13 c Start dates.
290     hfluxstartdate = 0
291     atempstartdate = 0
292     aqhstartdate = 0
293     evapstartdate = 0
294     precipstartdate = 0
295     sfluxstartdate = 0
296     runoffstartdate = 0
297     ustressstartdate = 0
298     vstressstartdate = 0
299     uwindstartdate = 0
300     vwindstartdate = 0
301     swfluxstartdate = 0
302     lwfluxstartdate = 0
303     swdownstartdate = 0
304     lwdownstartdate = 0
305     obcsNstartdate = 0
306     obcsSstartdate = 0
307     obcsEstartdate = 0
308     obcsWstartdate = 0
309     apressurestartdate = 0
310 heimbach 1.1
311     c Initialise file type and field precision
312     exf_iprec = 32
313     exf_yftype = 'RL'
314    
315 dimitri 1.6 c Input scaling factors.
316 heimbach 1.8 exf_inscal_hflux = 1. _d 0
317     exf_inscal_sflux = 1. _d 0
318     exf_inscal_ustress = 1. _d 0
319     exf_inscal_vstress = 1. _d 0
320     exf_inscal_uwind = 1. _d 0
321     exf_inscal_vwind = 1. _d 0
322     exf_inscal_swflux = 1. _d 0
323     exf_inscal_lwflux = 1. _d 0
324     exf_inscal_precip = 1. _d 0
325 dimitri 1.6 exf_inscal_sst = 1. _d 0
326     exf_inscal_sss = 1. _d 0
327 heimbach 1.8 exf_inscal_atemp = 1. _d 0
328 dimitri 1.13.2.1 exf_offset_atemp = 0. _d 0
329 heimbach 1.8 exf_inscal_aqh = 1. _d 0
330     exf_inscal_evap = 1. _d 0
331 dimitri 1.6 exf_inscal_apressure = 1. _d 0
332     cds convert runoff from m/yr to m/s and change sign.
333     exf_inscal_runoff = -1.0/(86400.*365.0)
334 heimbach 1.8 exf_inscal_swdown = 1. _d 0
335     exf_inscal_lwdown = 1. _d 0
336 dimitri 1.6
337     c Output scaling factors.
338 heimbach 1.8 exf_outscal_hflux = 1. _d 0
339     exf_outscal_sflux = 1. _d 0
340     exf_outscal_ustress = 1. _d 0
341     exf_outscal_vstress = 1. _d 0
342     exf_outscal_swflux = 1. _d 0
343 dimitri 1.6 exf_outscal_sst = 1. _d 0
344     exf_outscal_sss = 1. _d 0
345     exf_outscal_apressure= 1. _d 0
346 heimbach 1.3
347 dimitri 1.13.2.1 #ifdef USE_EXF_INTERPOLATION
348     ustress_lon0 = thetaMin
349     uwind_lon0 = thetaMin
350     vstress_lon0 = thetaMin + delX(1) / 2
351     hflux_lon0 = thetaMin + delX(1) / 2
352     sflux_lon0 = thetaMin + delX(1) / 2
353     swflux_lon0 = thetaMin + delX(1) / 2
354     runoff_lon0 = thetaMin + delX(1) / 2
355     atemp_lon0 = thetaMin + delX(1) / 2
356     aqh_lon0 = thetaMin + delX(1) / 2
357     evap_lon0 = thetaMin + delX(1) / 2
358     precip_lon0 = thetaMin + delX(1) / 2
359     vwind_lon0 = thetaMin + delX(1) / 2
360     lwflux_lon0 = thetaMin + delX(1) / 2
361     swdown_lon0 = thetaMin + delX(1) / 2
362     lwdown_lon0 = thetaMin + delX(1) / 2
363     apressure_lon0 = thetaMin + delX(1) / 2
364     vstress_lat0 = phimin
365     vwind_lat0 = phimin
366     ustress_lat0 = phimin + delY(1) / 2
367     hflux_lat0 = phimin + delY(1) / 2
368     sflux_lat0 = phimin + delY(1) / 2
369     runoff_lat0 = phimin + delY(1) / 2
370     swflux_lat0 = phimin + delY(1) / 2
371     atemp_lat0 = phimin + delY(1) / 2
372     aqh_lat0 = phimin + delY(1) / 2
373     evap_lat0 = phimin + delY(1) / 2
374     precip_lat0 = phimin + delY(1) / 2
375     uwind_lat0 = phimin + delY(1) / 2
376     lwflux_lat0 = phimin + delY(1) / 2
377     swdown_lat0 = phimin + delY(1) / 2
378     lwdown_lat0 = phimin + delY(1) / 2
379     apressure_lat0 = phimin + delY(1) / 2
380     ustress_nlon = Nx
381     ustress_nlat = Ny
382     vstress_nlon = Nx
383     vstress_nlat = Ny
384     hflux_nlon = Nx
385     hflux_nlat = Ny
386     sflux_nlon = Nx
387     sflux_nlat = Ny
388     swflux_nlon = Nx
389     swflux_nlat = Ny
390     runoff_nlon = Nx
391     runoff_nlat = Ny
392     atemp_nlon = Nx
393     atemp_nlat = Ny
394     aqh_nlon = Nx
395     aqh_nlat = Ny
396     evap_nlon = Nx
397     evap_nlat = Ny
398     precip_nlon = Nx
399     precip_nlat = Ny
400     uwind_nlon = Nx
401     uwind_nlat = Ny
402     vwind_nlon = Nx
403     vwind_nlat = Ny
404     lwflux_nlon = Nx
405     lwflux_nlat = Ny
406     swdown_nlon = Nx
407     swdown_nlat = Ny
408     lwdown_nlon = Nx
409     lwdown_nlat = Ny
410     apressure_nlon = Nx
411     apressure_nlat = Ny
412     Ustress_lon_inc = delX(1)
413     vstress_lon_inc = delX(1)
414     hflux_lon_inc = delX(1)
415     sflux_lon_inc = delX(1)
416     swflux_lon_inc = delX(1)
417     runoff_lon_inc = delX(1)
418     atemp_lon_inc = delX(1)
419     aqh_lon_inc = delX(1)
420     evap_lon_inc = delX(1)
421     precip_lon_inc = delX(1)
422     uwind_lon_inc = delX(1)
423     vwind_lon_inc = delX(1)
424     lwflux_lon_inc = delX(1)
425     swdown_lon_inc = delX(1)
426     lwdown_lon_inc = delX(1)
427     apressure_lon_inc = delX(1)
428     DO i=1,MAX_LAT_INC
429     IF (i.LT.Ny) THEN
430     vstress_lat_inc(i) = delY(i)
431     vwind_lat_inc(i) = delY(i)
432     ustress_lat_inc(i) = (delY(i) + delY(i)) / 2.
433     hflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
434     sflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
435     swflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
436     runoff_lat_inc(i) = (delY(i) + delY(i)) / 2.
437     atemp_lat_inc(i) = (delY(i) + delY(i)) / 2.
438     aqh_lat_inc(i) = (delY(i) + delY(i)) / 2.
439     evap_lat_inc(i) = (delY(i) + delY(i)) / 2.
440     precip_lat_inc(i) = (delY(i) + delY(i)) / 2.
441     uwind_lat_inc(i) = (delY(i) + delY(i)) / 2.
442     lwflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
443     swdown_lat_inc(i) = (delY(i) + delY(i)) / 2.
444     lwdown_lat_inc(i) = (delY(i) + delY(i)) / 2.
445     apressure_lat_inc(i) = (delY(i) + delY(i)) / 2.
446     ELSE
447     ustress_lat_inc(i) = 0.
448     vstress_lat_inc(i) = 0.
449     hflux_lat_inc(i) = 0.
450     sflux_lat_inc(i) = 0.
451     swflux_lat_inc(i) = 0.
452     runoff_lat_inc(i) = 0.
453     atemp_lat_inc(i) = 0.
454     aqh_lat_inc(i) = 0.
455     evap_lat_inc(i) = 0.
456     precip_lat_inc(i) = 0.
457     uwind_lat_inc(i) = 0.
458     vwind_lat_inc(i) = 0.
459     lwflux_lat_inc(i) = 0.
460     swdown_lat_inc(i) = 0.
461     lwdown_lat_inc(i) = 0.
462     apressure_lat_inc(i) = 0.
463     ENDIF
464     ENDDO
465     #endif /* USE_EXF_INTERPOLATION */
466    
467 heimbach 1.1 c Check for the availability of the right calendar version.
468     if ( calendarversion .ne. usescalendarversion ) then
469     print*,' exf_readparms: You are not using the appropriate'
470     print*,' version of the calendar package.'
471     print*
472     print*,' You are using Calendar version: ', calendarversion
473     print*,' Please use Calendar version: ', usescalendarversion
474     stop ' stopped in exf_readparms.'
475     endif
476    
477     c Next, read the forcing data file.
478     call nml_filter( 'data.exf', scrunit1, myThid )
479     if (scrunit1 .eq. 0) then
480     stop 'exf_readparms: reading namelist failed'
481     end if
482     read( scrunit1, nml = exf_nml )
483     close( scrunit1 )
484    
485     c Complete the start date specifications for the forcing
486     c fields to get a complete calendar date array.
487    
488     c check for consistency
489    
490     if (.NOT.
491     & (exf_iprec .EQ. 32 .OR. exf_iprec .EQ. 64)
492     & ) then
493     stop 'stop in exf_readparms: value of exf_iprec not allowed'
494     else if (.NOT.
495     & (exf_yftype .EQ. 'RS' .OR.
496     & exf_yftype .EQ. 'RL')
497     & ) then
498     stop 'stop in exf_readparms: value of exf_yftype not allowed'
499     end if
500 dimitri 1.5
501 dimitri 1.6 #ifdef ALLOW_ATM_WIND
502 dimitri 1.13.2.1 if ( uwindfile .NE. ' ' ) then
503     call cal_FullDate ( uwindstartdate1 , uwindstartdate2,
504     & date_array ,mythid )
505     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
506     call cal_ToSeconds ( difftime, uwindstartdate ,mythid )
507     uwindstartdate = modelstart + uwindstartdate
508     endif
509     if ( vwindfile .NE. ' ' ) then
510     call cal_FullDate ( vwindstartdate1 , vwindstartdate2,
511     & date_array ,mythid )
512     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
513     call cal_ToSeconds ( difftime, vwindstartdate ,mythid )
514     vwindstartdate = modelstart + vwindstartdate
515     endif
516 dimitri 1.6 #else
517 dimitri 1.13.2.1 if ( ustressfile .NE. ' ' ) then
518     call cal_FullDate ( ustressstartdate1 , ustressstartdate2,
519     & date_array ,mythid )
520     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
521     call cal_ToSeconds ( difftime, ustressstartdate ,mythid )
522     ustressstartdate = modelstart + ustressstartdate
523     endif
524     if ( vstressfile .NE. ' ' ) then
525     call cal_FullDate ( vstressstartdate1 , vstressstartdate2,
526     & date_array ,mythid )
527     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
528     call cal_ToSeconds ( difftime, vstressstartdate ,mythid )
529     vstressstartdate = modelstart + vstressstartdate
530     endif
531 heimbach 1.3 #endif
532    
533 heimbach 1.1 #ifdef ALLOW_ATM_TEMP
534 dimitri 1.13.2.1 if ( atempfile .NE. ' ' ) then
535     call cal_FullDate ( atempstartdate1 , atempstartdate2,
536     & date_array ,mythid )
537     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
538     call cal_ToSeconds ( difftime, atempstartdate ,mythid )
539     atempstartdate = modelstart + atempstartdate
540     endif
541     if ( aqhfile .NE. ' ' ) then
542     call cal_FullDate ( aqhstartdate1 , aqhstartdate2,
543     & date_array ,mythid )
544     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
545     call cal_ToSeconds ( difftime, aqhstartdate ,mythid )
546     aqhstartdate = modelstart + aqhstartdate
547     endif
548     if ( lwfluxfile .NE. ' ' ) then
549     call cal_FullDate ( lwfluxstartdate1 , lwfluxstartdate2,
550     & date_array ,mythid )
551     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
552     call cal_ToSeconds ( difftime, lwfluxstartdate ,mythid )
553     lwfluxstartdate = modelstart + lwfluxstartdate
554     endif
555     if ( precipfile .NE. ' ' ) then
556     call cal_FullDate ( precipstartdate1 , precipstartdate2,
557     & date_array ,mythid )
558     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
559     call cal_ToSeconds ( difftime, precipstartdate ,mythid )
560     precipstartdate = modelstart + precipstartdate
561     endif
562 heimbach 1.1 #else
563 dimitri 1.13.2.1 if ( hfluxfile .NE. ' ' ) then
564     call cal_FullDate ( hfluxstartdate1 , hfluxstartdate2,
565     & date_array ,mythid )
566     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
567     call cal_ToSeconds ( difftime, hfluxstartdate ,mythid )
568     hfluxstartdate = modelstart + hfluxstartdate
569     endif
570     if ( sfluxfile .NE. ' ' ) then
571     call cal_FullDate ( sfluxstartdate1 , sfluxstartdate2,
572     & date_array ,mythid )
573     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
574     call cal_ToSeconds ( difftime, sfluxstartdate ,mythid )
575     sfluxstartdate = modelstart + sfluxstartdate
576     endif
577 heimbach 1.1 #endif
578    
579 dimitri 1.6 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
580 dimitri 1.13.2.1 if ( swfluxfile .NE. ' ' ) then
581     call cal_FullDate ( swfluxstartdate1 , swfluxstartdate2,
582     & date_array ,mythid )
583     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
584     call cal_ToSeconds ( difftime, swfluxstartdate ,mythid )
585     swfluxstartdate = modelstart + swfluxstartdate
586     endif
587 heimbach 1.1 #endif
588    
589 dimitri 1.6 #ifdef EXF_READ_EVAP
590 dimitri 1.13.2.1 if ( evapfile .NE. ' ' ) then
591     call cal_FullDate ( evapstartdate1 , evapstartdate2,
592     & date_array ,mythid )
593     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
594     call cal_ToSeconds ( difftime, evapstartdate ,mythid )
595     evapstartdate = modelstart + evapstartdate
596     endif
597 heimbach 1.1 #endif
598    
599 dimitri 1.6 #ifdef ALLOW_RUNOFF
600 dimitri 1.13.2.1 if ( runofffile .NE. ' ' ) then
601     call cal_FullDate ( runoffstartdate1 , runoffstartdate2,
602     & date_array ,mythid )
603     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
604     call cal_ToSeconds ( difftime, runoffstartdate ,mythid )
605     runoffstartdate = modelstart + runoffstartdate
606     endif
607 heimbach 1.1 #endif
608    
609 dimitri 1.6 #ifdef ALLOW_DOWNWARD_RADIATION
610 dimitri 1.13.2.1 if ( swdownfile .NE. ' ' ) then
611     call cal_FullDate ( swdownstartdate1 , swdownstartdate2,
612     & date_array ,mythid )
613     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
614     call cal_ToSeconds ( difftime, swdownstartdate ,mythid )
615     swdownstartdate = modelstart + swdownstartdate
616     endif
617     if ( lwdownfile .NE. ' ' ) then
618     call cal_FullDate ( lwdownstartdate1 , lwdownstartdate2,
619     & date_array ,mythid )
620     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
621     call cal_ToSeconds ( difftime, lwdownstartdate ,mythid )
622     lwdownstartdate = modelstart + lwdownstartdate
623     endif
624     #endif
625    
626     #ifdef ATMOSPHERIC_LOADING
627     if ( apressurefile .NE. ' ' ) then
628     call cal_FullDate ( apressurestartdate1, apressurestartdate2,
629     & date_array ,mythid )
630     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
631     call cal_ToSeconds ( difftime, apressurestartdate ,mythid )
632     apressurestartdate = modelstart + apressurestartdate
633     endif
634 heimbach 1.1 #endif
635    
636     #ifdef ALLOW_OBCS
637 heimbach 1.2 #ifdef ALLOW_OBCS_NORTH
638 dimitri 1.13.2.1 if ( obcsNperiod .NE. 0 ) then
639     call cal_FullDate ( obcsNstartdate1 , obcsNstartdate2,
640     & date_array ,mythid )
641     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
642     call cal_ToSeconds ( difftime, obcsNstartdate ,mythid )
643     obcsNstartdate = modelstart + obcsNstartdate
644     endif
645 heimbach 1.2 #endif
646     #ifdef ALLOW_OBCS_SOUTH
647 dimitri 1.13.2.1 if ( obcsSperiod .NE. 0 ) then
648     call cal_FullDate ( obcsSstartdate1 , obcsSstartdate2,
649     & date_array ,mythid )
650     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
651     call cal_ToSeconds ( difftime, obcsSstartdate ,mythid )
652     obcsSstartdate = modelstart + obcsSstartdate
653     endif
654 heimbach 1.2 #endif
655     #ifdef ALLOW_OBCS_EAST
656 dimitri 1.13.2.1 if ( obcsEperiod .NE. 0 ) then
657     call cal_FullDate ( obcsEstartdate1 , obcsEstartdate2,
658     & date_array ,mythid )
659     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
660     call cal_ToSeconds ( difftime, obcsEstartdate ,mythid )
661     obcsEstartdate = modelstart + obcsEstartdate
662     endif
663 heimbach 1.2 #endif
664     #ifdef ALLOW_OBCS_WEST
665 dimitri 1.13.2.1 if ( obcsNperiod .NE. 0 ) then
666     call cal_FullDate ( obcsWstartdate1 , obcsWstartdate2,
667     & date_array ,mythid )
668     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
669     call cal_ToSeconds ( difftime, obcsWstartdate ,mythid )
670     obcsWstartdate = modelstart + obcsWstartdate
671     endif
672 heimbach 1.3 #endif
673 dimitri 1.6 #endif /* ALLOW_OBCS */
674 heimbach 1.3
675 heimbach 1.1 _END_MASTER( mythid )
676    
677     _BARRIER
678    
679     c-- Summarize the External forcing's setup.
680     call exf_summary( mythid )
681    
682     c-- set climatology parameters
683     call exf_clim_readparms( mythid )
684    
685     c-- summarize climatologic forcing configuration
686     call exf_clim_summary( mythid )
687    
688     end

  ViewVC Help
Powered by ViewVC 1.1.22