/[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.42 - (hide annotations) (download)
Wed Apr 18 05:02:11 2007 UTC (17 years, 1 month ago) by heimbach
Branch: MAIN
Changes since 1.41: +1 -11 lines
Partial step on cleaning CLIM part of exf.

1 heimbach 1.42 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_readparms.F,v 1.41 2007/04/17 23:51:22 heimbach 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 heimbach 1.15 #include "PARAMS.h"
52 heimbach 1.1 #include "cal.h"
53 jmc 1.40 #include "EXF_PARAM.h"
54     #include "EXF_CONSTANTS.h"
55 heimbach 1.1
56     c == routine arguments ==
57    
58     integer mythid
59    
60     c == local variables ==
61    
62     integer i
63 dimitri 1.13 integer date_array(4), difftime(4)
64 heimbach 1.26 integer iUnit
65    
66     character*(max_len_mbuf) msgbuf
67 heimbach 1.1
68     c == end of interface ==
69    
70     c Surface flux data.
71     namelist /exf_nml/
72 jmc 1.32 & windstressmax, repeatPeriod, exf_albedo,
73 mlosch 1.31 & ocean_emissivity, ice_emissivity, snow_emissivity,
74 dimitri 1.36 & exf_scal_BulkCdn,
75 heimbach 1.1 & hfluxstartdate1, hfluxstartdate2, hfluxperiod,
76     & atempstartdate1, atempstartdate2, atempperiod,
77     & aqhstartdate1, aqhstartdate2, aqhperiod,
78     & sfluxstartdate1, sfluxstartdate2, sfluxperiod,
79 dimitri 1.5 & evapstartdate1, evapstartdate2, evapperiod,
80 heimbach 1.1 & precipstartdate1, precipstartdate2, precipperiod,
81 heimbach 1.30 & snowprecipstartdate1, snowprecipstartdate2, snowprecipperiod,
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 heimbach 1.30 & wspeedstartdate1, wspeedstartdate2, wspeedperiod,
88 heimbach 1.1 & swfluxstartdate1, swfluxstartdate2, swfluxperiod,
89     & lwfluxstartdate1, lwfluxstartdate2, lwfluxperiod,
90 dimitri 1.6 & swdownstartdate1, swdownstartdate2, swdownperiod,
91     & lwdownstartdate1, lwdownstartdate2, lwdownperiod,
92 heimbach 1.2 & obcsNstartdate1, obcsNstartdate2, obcsNperiod,
93     & obcsSstartdate1, obcsSstartdate2, obcsSperiod,
94     & obcsEstartdate1, obcsEstartdate2, obcsEperiod,
95     & obcsWstartdate1, obcsWstartdate2, obcsWperiod,
96 heimbach 1.3 &apressurestartdate1,apressurestartdate2,apressureperiod,
97 heimbach 1.1 & hfluxfile, atempfile, aqhfile,
98 heimbach 1.3 & sfluxfile, precipfile, runofffile,
99 dimitri 1.5 & ustressfile, vstressfile, evapfile,
100 jmc 1.32 & snowprecipfile, uwindfile, vwindfile,
101     & wspeedfile, swfluxfile, lwfluxfile,
102     & apressurefile, swdownfile, lwdownfile,
103 heimbach 1.28 & exf_iprec, exf_yftype,
104 heimbach 1.30 & useExfYearlyFields, twoDigitYear, useExfCheckRange,
105     & exf_inscal_hflux, exf_inscal_sflux, exf_inscal_evap,
106 dimitri 1.14 & exf_inscal_ustress, exf_inscal_vstress,
107 heimbach 1.30 & exf_inscal_uwind, exf_inscal_vwind, exf_inscal_wspeed,
108     & exf_inscal_atemp, exf_offset_atemp, exf_inscal_aqh,
109 dimitri 1.14 & exf_inscal_sst, exf_inscal_sss,
110     & exf_inscal_swflux, exf_inscal_lwflux, exf_inscal_precip,
111 heimbach 1.30 & exf_inscal_runoff, exf_inscal_apressure, exf_inscal_snowprecip,
112 heimbach 1.8 & exf_inscal_swdown, exf_inscal_lwdown,
113     & exf_outscal_hflux, exf_outscal_ustress, exf_outscal_vstress,
114 dimitri 1.14 & exf_outscal_swflux, exf_outscal_sst, exf_outscal_sss,
115 heimbach 1.8 & exf_outscal_sflux, exf_outscal_apressure,
116 jmc 1.32 & hfluxconst, atempconst, aqhconst, sfluxconst, evapconst,
117     & precipconst, snowprecipconst, runoffconst, ustressconst,
118     & vstressconst, uwindconst, vwindconst, wspeedconst, swfluxconst,
119     & lwfluxconst, swdownconst, lwdownconst, apressureconst,
120 heimbach 1.29 & hflux_exfremo_intercept, hflux_exfremo_slope,
121 heimbach 1.28 & atemp_exfremo_intercept, atemp_exfremo_slope,
122     & aqh_exfremo_intercept, aqh_exfremo_slope,
123     & sflux_exfremo_intercept, sflux_exfremo_slope,
124     & evap_exfremo_intercept, evap_exfremo_slope,
125     & precip_exfremo_intercept, precip_exfremo_slope,
126 heimbach 1.30 & snowprecip_exfremo_intercept, snowprecip_exfremo_slope,
127 heimbach 1.28 & runoff_exfremo_intercept, runoff_exfremo_slope,
128     & ustress_exfremo_intercept, ustress_exfremo_slope,
129     & vstress_exfremo_intercept, vstress_exfremo_slope,
130     & uwind_exfremo_intercept, uwind_exfremo_slope,
131     & vwind_exfremo_intercept, vwind_exfremo_slope,
132 heimbach 1.30 & wspeed_exfremo_intercept, wspeed_exfremo_slope,
133 heimbach 1.28 & swflux_exfremo_intercept, swflux_exfremo_slope,
134     & lwflux_exfremo_intercept, lwflux_exfremo_slope,
135     & swdown_exfremo_intercept, swdown_exfremo_slope,
136     & lwdown_exfremo_intercept, lwdown_exfremo_slope,
137     & apressure_exfremo_intercept, apressure_exfremo_slope
138 dimitri 1.9 #ifdef USE_EXF_INTERPOLATION
139 jmc 1.11 & ,ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
140     & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
141 heimbach 1.35 & ustress_nlon, ustress_nlat, vstress_nlon, vstress_nlat,
142 jmc 1.11 & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
143     & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
144 heimbach 1.35 & hflux_nlon, hflux_nlat, sflux_nlon, sflux_nlat,
145 jmc 1.11 & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
146 heimbach 1.35 & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
147     & swflux_nlon, swflux_nlat, lwflux_nlon, lwflux_nlat,
148 jmc 1.11 & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
149 dimitri 1.9 & atemp_nlon, atemp_nlat,
150 jmc 1.32 & aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc, aqh_nlon, aqh_nlat,
151     &evap_lon0,evap_lon_inc,evap_lat0,evap_lat_inc,evap_nlon,evap_nlat,
152     & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
153 heimbach 1.35 & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
154     & precip_nlon, precip_nlat, runoff_nlon, runoff_nlat,
155 jmc 1.32 & snowprecip_lon0, snowprecip_lon_inc, snowprecip_nlon,
156     & snowprecip_lat0, snowprecip_lat_inc, snowprecip_nlat,
157 jmc 1.11 & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
158     & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
159 heimbach 1.35 & uwind_nlon, uwind_nlat, vwind_nlon, vwind_nlat,
160 heimbach 1.30 & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,
161     & wspeed_nlon, wspeed_nlat,
162 jmc 1.11 & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
163     & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
164 heimbach 1.35 & swdown_nlon, swdown_nlat, lwdown_nlon, lwdown_nlat,
165 heimbach 1.28 & apressure_lon0,apressure_lon_inc,apressure_nlon,
166     & apressure_lat0,apressure_lat_inc,apressure_nlat
167 dimitri 1.9 #endif
168 heimbach 1.1
169     _BEGIN_MASTER(mythid)
170    
171     c Set default values.
172    
173 heimbach 1.21 year2sec = 365.*86400.
174 jmc 1.33 exf_monFreq = monitorFreq
175 heimbach 1.21
176 heimbach 1.1 c Calendar data.
177     hfluxstartdate1 = 0
178     hfluxstartdate2 = 0
179     hfluxperiod = 0.0 _d 0
180 heimbach 1.7 hfluxconst = 0.0 _d 0
181 heimbach 1.27 hflux_exfremo_intercept = 0.0 _d 0
182     hflux_exfremo_slope = 0.0 _d 0
183 heimbach 1.1
184     atempstartdate1 = 0
185     atempstartdate2 = 0
186     atempperiod = 0.0 _d 0
187 heimbach 1.15 atempconst = celsius2K
188 heimbach 1.27 atemp_exfremo_intercept = 0.0 _d 0
189     atemp_exfremo_slope = 0.0 _d 0
190 heimbach 1.1
191     aqhstartdate1 = 0
192     aqhstartdate2 = 0
193     aqhperiod = 0.0 _d 0
194 heimbach 1.7 aqhconst = 0.0 _d 0
195 heimbach 1.27 aqh_exfremo_intercept = 0.0 _d 0
196     aqh_exfremo_slope = 0.0 _d 0
197 heimbach 1.1
198     sfluxstartdate1 = 0
199     sfluxstartdate2 = 0
200     sfluxperiod = 0.0 _d 0
201 heimbach 1.7 sfluxconst = 0.0 _d 0
202 heimbach 1.27 sflux_exfremo_intercept = 0.0 _d 0
203     sflux_exfremo_slope = 0.0 _d 0
204 heimbach 1.1
205 dimitri 1.5 evapstartdate1 = 0
206     evapstartdate2 = 0
207     evapperiod = 0.0 _d 0
208 heimbach 1.7 evapconst = 0.0 _d 0
209 heimbach 1.27 evap_exfremo_intercept = 0.0 _d 0
210     evap_exfremo_slope = 0.0 _d 0
211 dimitri 1.5
212 heimbach 1.1 precipstartdate1 = 0
213     precipstartdate2 = 0
214     precipperiod = 0.0 _d 0
215 heimbach 1.7 precipconst = 0.0 _d 0
216 heimbach 1.27 precip_exfremo_intercept = 0.0 _d 0
217     precip_exfremo_slope = 0.0 _d 0
218 heimbach 1.1
219 heimbach 1.30 snowprecipstartdate1 = 0
220     snowprecipstartdate2 = 0
221     snowprecipperiod = 0.0 _d 0
222     snowprecipconst = 0.0 _d 0
223     snowprecip_exfremo_intercept = 0.0 _d 0
224     snowprecip_exfremo_slope = 0.0 _d 0
225    
226 heimbach 1.3 runoffstartdate1 = 0
227     runoffstartdate2 = 0
228     runoffperiod = 0.0 _d 0
229 heimbach 1.7 runoffconst = 0.0 _d 0
230 heimbach 1.27 runoff_exfremo_intercept = 0.0 _d 0
231     runoff_exfremo_slope = 0.0 _d 0
232 heimbach 1.3
233 heimbach 1.1 ustressstartdate1 = 0
234     ustressstartdate2 = 0
235     ustressperiod = 0.0 _d 0
236 heimbach 1.7 ustressconst = 0.0 _d 0
237 heimbach 1.27 ustress_exfremo_intercept = 0.0 _d 0
238     ustress_exfremo_slope = 0.0 _d 0
239 heimbach 1.1
240     vstressstartdate1 = 0
241     vstressstartdate2 = 0
242     vstressperiod = 0.0 _d 0
243 heimbach 1.7 vstressconst = 0.0 _d 0
244 heimbach 1.27 vstress_exfremo_intercept = 0.0 _d 0
245     vstress_exfremo_slope = 0.0 _d 0
246 heimbach 1.1
247     uwindstartdate1 = 0
248     uwindstartdate2 = 0
249     uwindperiod = 0.0 _d 0
250 heimbach 1.7 uwindconst = 0.0 _d 0
251 heimbach 1.27 uwind_exfremo_intercept = 0.0 _d 0
252     uwind_exfremo_slope = 0.0 _d 0
253 heimbach 1.1
254     vwindstartdate1 = 0
255     vwindstartdate2 = 0
256     vwindperiod = 0.0 _d 0
257 heimbach 1.7 vwindconst = 0.0 _d 0
258 heimbach 1.27 vwind_exfremo_intercept = 0.0 _d 0
259     vwind_exfremo_slope = 0.0 _d 0
260 heimbach 1.1
261 heimbach 1.30 wspeedstartdate1 = 0
262     wspeedstartdate2 = 0
263     wspeedperiod = 0.0 _d 0
264     wspeedconst = 0.0 _d 0
265     wspeed_exfremo_intercept = 0.0 _d 0
266     wspeed_exfremo_slope = 0.0 _d 0
267    
268 heimbach 1.1 swfluxstartdate1 = 0
269     swfluxstartdate2 = 0
270     swfluxperiod = 0.0 _d 0
271 heimbach 1.7 swfluxconst = 0.0 _d 0
272 heimbach 1.27 swflux_exfremo_intercept = 0.0 _d 0
273     swflux_exfremo_slope = 0.0 _d 0
274 heimbach 1.1
275     lwfluxstartdate1 = 0
276     lwfluxstartdate2 = 0
277     lwfluxperiod = 0.0 _d 0
278 heimbach 1.7 lwfluxconst = 0.0 _d 0
279 heimbach 1.27 lwflux_exfremo_intercept = 0.0 _d 0
280     lwflux_exfremo_slope = 0.0 _d 0
281 heimbach 1.1
282 dimitri 1.6 swdownstartdate1 = 0
283     swdownstartdate2 = 0
284     swdownperiod = 0.0 _d 0
285 heimbach 1.7 swdownconst = 0.0 _d 0
286 heimbach 1.27 swdown_exfremo_intercept = 0.0 _d 0
287     swdown_exfremo_slope = 0.0 _d 0
288 dimitri 1.6
289     lwdownstartdate1 = 0
290     lwdownstartdate2 = 0
291     lwdownperiod = 0.0 _d 0
292 heimbach 1.7 lwdownconst = 0.0 _d 0
293 heimbach 1.27 lwdown_exfremo_intercept = 0.0 _d 0
294     lwdown_exfremo_slope = 0.0 _d 0
295    
296     apressurestartdate1 = 0
297     apressurestartdate2 = 0
298     apressureperiod = 0.0 _d 0
299     apressureconst = 0.0 _d 0
300     apressure_exfremo_intercept = 0.0 _d 0
301     apressure_exfremo_slope = 0.0 _d 0
302 dimitri 1.6
303 heimbach 1.2 obcsNstartdate1 = 0
304     obcsNstartdate2 = 0
305     obcsNperiod = 0.0 _d 0
306    
307     obcsSstartdate1 = 0
308     obcsSstartdate2 = 0
309     obcsSperiod = 0.0 _d 0
310    
311     obcsEstartdate1 = 0
312     obcsEstartdate2 = 0
313     obcsEperiod = 0.0 _d 0
314    
315     obcsWstartdate1 = 0
316     obcsWstartdate2 = 0
317     obcsWperiod = 0.0 _d 0
318 heimbach 1.1
319 heimbach 1.30 repeatPeriod = 0.0 _d 0
320     exf_albedo = 0.1 _d 0
321     windstressmax = 2.0 _d 0
322     c-- this default is chosen to be backward compatible with
323 mlosch 1.31 c-- an earlier setting of 5.5 = ocean_emissivity*stefanBoltzmann
324     ocean_emissivity = 5.50D-8/5.670D-8
325     ice_emissivity = 0.98 _d 0
326     snow_emissivity = 0.98 _d 0
327 cheisey 1.4
328 dimitri 1.36 exf_scal_BulkCdn = 1.00 _d 0
329    
330 heimbach 1.1 c Data files.
331     hfluxfile = ' '
332     atempfile = ' '
333     aqhfile = ' '
334 dimitri 1.5 evapfile = ' '
335 heimbach 1.1 precipfile = ' '
336 heimbach 1.30 snowprecipfile = ' '
337 heimbach 1.1 sfluxfile = ' '
338 heimbach 1.3 runofffile = ' '
339 heimbach 1.1 ustressfile = ' '
340     vstressfile = ' '
341     uwindfile = ' '
342     vwindfile = ' '
343 heimbach 1.30 wspeedfile = ' '
344 heimbach 1.1 swfluxfile = ' '
345     lwfluxfile = ' '
346 dimitri 1.6 swdownfile = ' '
347     lwdownfile = ' '
348 heimbach 1.3 apressurefile = ' '
349 heimbach 1.1
350 dimitri 1.13 c Start dates.
351 dimitri 1.24 hfluxstartdate = 0.
352     atempstartdate = 0.
353     aqhstartdate = 0.
354     evapstartdate = 0.
355     precipstartdate = 0.
356 heimbach 1.30 snowprecipstartdate = 0.
357 dimitri 1.24 sfluxstartdate = 0.
358     runoffstartdate = 0.
359     ustressstartdate = 0.
360     vstressstartdate = 0.
361     uwindstartdate = 0.
362     vwindstartdate = 0.
363 heimbach 1.30 wspeedstartdate = 0.
364 dimitri 1.24 swfluxstartdate = 0.
365     lwfluxstartdate = 0.
366     swdownstartdate = 0.
367     lwdownstartdate = 0.
368     obcsNstartdate = 0.
369     obcsSstartdate = 0.
370     obcsEstartdate = 0.
371     obcsWstartdate = 0.
372     apressurestartdate = 0.
373 heimbach 1.1
374     c Initialise file type and field precision
375 heimbach 1.20 exf_iprec = 32
376     exf_yftype = 'RL'
377     useExfYearlyFields = .FALSE.
378 dimitri 1.25 twoDigitYear = .FALSE.
379 heimbach 1.22 useExfCheckRange = .TRUE.
380 heimbach 1.1
381 dimitri 1.6 c Input scaling factors.
382 heimbach 1.8 exf_inscal_hflux = 1. _d 0
383     exf_inscal_sflux = 1. _d 0
384     exf_inscal_ustress = 1. _d 0
385     exf_inscal_vstress = 1. _d 0
386     exf_inscal_uwind = 1. _d 0
387     exf_inscal_vwind = 1. _d 0
388 heimbach 1.30 exf_inscal_wspeed = 1. _d 0
389 heimbach 1.8 exf_inscal_swflux = 1. _d 0
390     exf_inscal_lwflux = 1. _d 0
391     exf_inscal_precip = 1. _d 0
392 heimbach 1.30 exf_inscal_snowprecip = 1. _d 0
393 dimitri 1.6 exf_inscal_sst = 1. _d 0
394     exf_inscal_sss = 1. _d 0
395 heimbach 1.8 exf_inscal_atemp = 1. _d 0
396 dimitri 1.14 exf_offset_atemp = 0. _d 0
397 heimbach 1.8 exf_inscal_aqh = 1. _d 0
398     exf_inscal_evap = 1. _d 0
399 dimitri 1.6 exf_inscal_apressure = 1. _d 0
400 heimbach 1.21 exf_inscal_runoff = 1. _d 0
401 heimbach 1.8 exf_inscal_swdown = 1. _d 0
402     exf_inscal_lwdown = 1. _d 0
403 dimitri 1.6
404     c Output scaling factors.
405 heimbach 1.8 exf_outscal_hflux = 1. _d 0
406     exf_outscal_sflux = 1. _d 0
407     exf_outscal_ustress = 1. _d 0
408     exf_outscal_vstress = 1. _d 0
409     exf_outscal_swflux = 1. _d 0
410 dimitri 1.6 exf_outscal_sst = 1. _d 0
411     exf_outscal_sss = 1. _d 0
412     exf_outscal_apressure= 1. _d 0
413 heimbach 1.3
414 dimitri 1.19 #ifdef USE_EXF_INTERPOLATION
415     ustress_lon0 = thetaMin
416     uwind_lon0 = thetaMin
417     vstress_lon0 = thetaMin + delX(1) / 2
418     hflux_lon0 = thetaMin + delX(1) / 2
419     sflux_lon0 = thetaMin + delX(1) / 2
420     swflux_lon0 = thetaMin + delX(1) / 2
421     runoff_lon0 = thetaMin + delX(1) / 2
422     atemp_lon0 = thetaMin + delX(1) / 2
423     aqh_lon0 = thetaMin + delX(1) / 2
424     evap_lon0 = thetaMin + delX(1) / 2
425     precip_lon0 = thetaMin + delX(1) / 2
426 heimbach 1.30 snowprecip_lon0 = thetaMin + delX(1) / 2
427 dimitri 1.19 vwind_lon0 = thetaMin + delX(1) / 2
428 heimbach 1.30 wspeed_lon0 = thetaMin + delX(1) / 2
429 dimitri 1.19 lwflux_lon0 = thetaMin + delX(1) / 2
430     swdown_lon0 = thetaMin + delX(1) / 2
431     lwdown_lon0 = thetaMin + delX(1) / 2
432     apressure_lon0 = thetaMin + delX(1) / 2
433     vstress_lat0 = phimin
434     vwind_lat0 = phimin
435 heimbach 1.30 wspeed_lat0 = phimin
436 dimitri 1.19 ustress_lat0 = phimin + delY(1) / 2
437     hflux_lat0 = phimin + delY(1) / 2
438     sflux_lat0 = phimin + delY(1) / 2
439     runoff_lat0 = phimin + delY(1) / 2
440     swflux_lat0 = phimin + delY(1) / 2
441     atemp_lat0 = phimin + delY(1) / 2
442     aqh_lat0 = phimin + delY(1) / 2
443     evap_lat0 = phimin + delY(1) / 2
444     precip_lat0 = phimin + delY(1) / 2
445 heimbach 1.30 snowprecip_lat0 = phimin + delY(1) / 2
446 dimitri 1.19 uwind_lat0 = phimin + delY(1) / 2
447     lwflux_lat0 = phimin + delY(1) / 2
448     swdown_lat0 = phimin + delY(1) / 2
449     lwdown_lat0 = phimin + delY(1) / 2
450     apressure_lat0 = phimin + delY(1) / 2
451     ustress_nlon = Nx
452     ustress_nlat = Ny
453     vstress_nlon = Nx
454     vstress_nlat = Ny
455     hflux_nlon = Nx
456     hflux_nlat = Ny
457     sflux_nlon = Nx
458     sflux_nlat = Ny
459     swflux_nlon = Nx
460     swflux_nlat = Ny
461     runoff_nlon = Nx
462     runoff_nlat = Ny
463     atemp_nlon = Nx
464     atemp_nlat = Ny
465     aqh_nlon = Nx
466     aqh_nlat = Ny
467     evap_nlon = Nx
468     evap_nlat = Ny
469     precip_nlon = Nx
470 heimbach 1.30 snowprecip_nlon = Nx
471 dimitri 1.19 precip_nlat = Ny
472 heimbach 1.30 snowprecip_nlat = Ny
473 dimitri 1.19 uwind_nlon = Nx
474     uwind_nlat = Ny
475     vwind_nlon = Nx
476     vwind_nlat = Ny
477 heimbach 1.30 wspeed_nlon = Nx
478     wspeed_nlat = Ny
479 dimitri 1.19 lwflux_nlon = Nx
480     lwflux_nlat = Ny
481     swdown_nlon = Nx
482     swdown_nlat = Ny
483     lwdown_nlon = Nx
484     lwdown_nlat = Ny
485     apressure_nlon = Nx
486     apressure_nlat = Ny
487     Ustress_lon_inc = delX(1)
488     vstress_lon_inc = delX(1)
489     hflux_lon_inc = delX(1)
490     sflux_lon_inc = delX(1)
491     swflux_lon_inc = delX(1)
492     runoff_lon_inc = delX(1)
493     atemp_lon_inc = delX(1)
494     aqh_lon_inc = delX(1)
495     evap_lon_inc = delX(1)
496     precip_lon_inc = delX(1)
497 heimbach 1.30 snowprecip_lon_inc = delX(1)
498 dimitri 1.19 uwind_lon_inc = delX(1)
499     vwind_lon_inc = delX(1)
500 heimbach 1.30 wspeed_lon_inc = delX(1)
501 dimitri 1.19 lwflux_lon_inc = delX(1)
502     swdown_lon_inc = delX(1)
503     lwdown_lon_inc = delX(1)
504     apressure_lon_inc = delX(1)
505     DO i=1,MAX_LAT_INC
506     IF (i.LT.Ny) THEN
507     vstress_lat_inc(i) = delY(i)
508     vwind_lat_inc(i) = delY(i)
509 heimbach 1.30 wspeed_lat_inc(i) = delY(i)
510 dimitri 1.19 ustress_lat_inc(i) = (delY(i) + delY(i)) / 2.
511     hflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
512     sflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
513     swflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
514     runoff_lat_inc(i) = (delY(i) + delY(i)) / 2.
515     atemp_lat_inc(i) = (delY(i) + delY(i)) / 2.
516     aqh_lat_inc(i) = (delY(i) + delY(i)) / 2.
517     evap_lat_inc(i) = (delY(i) + delY(i)) / 2.
518     precip_lat_inc(i) = (delY(i) + delY(i)) / 2.
519 heimbach 1.30 snowprecip_lat_inc(i) = (delY(i) + delY(i)) / 2.
520 dimitri 1.19 uwind_lat_inc(i) = (delY(i) + delY(i)) / 2.
521     lwflux_lat_inc(i) = (delY(i) + delY(i)) / 2.
522     swdown_lat_inc(i) = (delY(i) + delY(i)) / 2.
523     lwdown_lat_inc(i) = (delY(i) + delY(i)) / 2.
524     apressure_lat_inc(i) = (delY(i) + delY(i)) / 2.
525     ELSE
526     ustress_lat_inc(i) = 0.
527     vstress_lat_inc(i) = 0.
528     hflux_lat_inc(i) = 0.
529     sflux_lat_inc(i) = 0.
530     swflux_lat_inc(i) = 0.
531     runoff_lat_inc(i) = 0.
532     atemp_lat_inc(i) = 0.
533     aqh_lat_inc(i) = 0.
534     evap_lat_inc(i) = 0.
535     precip_lat_inc(i) = 0.
536 heimbach 1.30 snowprecip_lat_inc(i) = 0.
537 dimitri 1.19 uwind_lat_inc(i) = 0.
538     vwind_lat_inc(i) = 0.
539 heimbach 1.30 wspeed_lat_inc(i) = 0.
540 dimitri 1.19 lwflux_lat_inc(i) = 0.
541     swdown_lat_inc(i) = 0.
542     lwdown_lat_inc(i) = 0.
543     apressure_lat_inc(i) = 0.
544     ENDIF
545     ENDDO
546     #endif /* USE_EXF_INTERPOLATION */
547    
548 heimbach 1.1 c Next, read the forcing data file.
549 heimbach 1.26 WRITE(msgBuf,'(A)') 'EXF_READPARMS: opening data.exf'
550     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
551     & SQUEEZE_RIGHT , 1)
552    
553     CALL OPEN_COPY_DATA_FILE(
554     I 'data.exf', 'EXF_READPARMS',
555     O iUnit,
556     I myThid )
557    
558     READ( iUnit, nml = exf_nml )
559    
560     WRITE(msgBuf,'(A)')
561     & 'EXF_READPARMS: finished reading data.exf'
562     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
563     & SQUEEZE_RIGHT , 1)
564    
565     CLOSE( iUnit )
566 heimbach 1.1
567 heimbach 1.20 call exf_check( mythid )
568    
569 heimbach 1.1 c Complete the start date specifications for the forcing
570     c fields to get a complete calendar date array.
571    
572 dimitri 1.6 #ifdef ALLOW_ATM_WIND
573 dimitri 1.38 if ( uwindfile .NE. ' ' .and. uwindperiod .gt. 0. ) then
574 heimbach 1.18 call cal_FullDate ( uwindstartdate1 , uwindstartdate2,
575     & date_array ,mythid )
576     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
577     call cal_ToSeconds ( difftime, uwindstartdate ,mythid )
578     uwindstartdate = modelstart + uwindstartdate
579     endif
580 dimitri 1.38 if ( vwindfile .NE. ' ' .and. vwindperiod .gt. 0. ) then
581 heimbach 1.18 call cal_FullDate ( vwindstartdate1 , vwindstartdate2,
582     & date_array ,mythid )
583     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
584     call cal_ToSeconds ( difftime, vwindstartdate ,mythid )
585     vwindstartdate = modelstart + vwindstartdate
586     endif
587 dimitri 1.38 if ( wspeedfile .NE. ' ' .and. wspeedperiod .gt. 0. ) then
588 heimbach 1.30 call cal_FullDate ( wspeedstartdate1, wspeedstartdate2,
589     & date_array ,mythid )
590     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
591     call cal_ToSeconds ( difftime, wspeedstartdate ,mythid )
592     wspeedstartdate = modelstart + wspeedstartdate
593     endif
594 dimitri 1.6 #else
595 dimitri 1.38 if ( ustressfile .NE. ' ' .and. ustressperiod .gt. 0. ) then
596 heimbach 1.18 call cal_FullDate ( ustressstartdate1 , ustressstartdate2,
597     & date_array ,mythid )
598     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
599     call cal_ToSeconds ( difftime, ustressstartdate ,mythid )
600     ustressstartdate = modelstart + ustressstartdate
601     endif
602 dimitri 1.38 if ( vstressfile .NE. ' ' .and. vstressperiod .gt. 0. ) then
603 heimbach 1.18 call cal_FullDate ( vstressstartdate1 , vstressstartdate2,
604     & date_array ,mythid )
605     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
606     call cal_ToSeconds ( difftime, vstressstartdate ,mythid )
607     vstressstartdate = modelstart + vstressstartdate
608     endif
609 heimbach 1.3 #endif
610    
611 heimbach 1.1 #ifdef ALLOW_ATM_TEMP
612 dimitri 1.38 if ( atempfile .NE. ' ' .and. atempperiod .gt. 0. ) then
613 heimbach 1.18 call cal_FullDate ( atempstartdate1 , atempstartdate2,
614     & date_array ,mythid )
615     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
616     call cal_ToSeconds ( difftime, atempstartdate ,mythid )
617     atempstartdate = modelstart + atempstartdate
618     endif
619 dimitri 1.38 if ( aqhfile .NE. ' ' .and. aqhperiod .gt. 0. ) then
620 heimbach 1.18 call cal_FullDate ( aqhstartdate1 , aqhstartdate2,
621     & date_array ,mythid )
622     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
623     call cal_ToSeconds ( difftime, aqhstartdate ,mythid )
624     aqhstartdate = modelstart + aqhstartdate
625     endif
626 dimitri 1.38 if ( lwfluxfile .NE. ' ' .and. lwfluxperiod .gt. 0. ) then
627 heimbach 1.18 call cal_FullDate ( lwfluxstartdate1 , lwfluxstartdate2,
628     & date_array ,mythid )
629     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
630     call cal_ToSeconds ( difftime, lwfluxstartdate ,mythid )
631     lwfluxstartdate = modelstart + lwfluxstartdate
632     endif
633 dimitri 1.38 if ( precipfile .NE. ' ' .and. precipperiod .gt. 0. ) then
634 heimbach 1.18 call cal_FullDate ( precipstartdate1 , precipstartdate2,
635     & date_array ,mythid )
636     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
637     call cal_ToSeconds ( difftime, precipstartdate ,mythid )
638     precipstartdate = modelstart + precipstartdate
639     endif
640 dimitri 1.39 if ( snowprecipfile .NE. ' ' .and. snowprecipperiod .gt. 0. ) then
641 heimbach 1.30 call cal_FullDate( snowprecipstartdate1, snowprecipstartdate2,
642     & date_array ,mythid )
643     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
644     call cal_ToSeconds ( difftime, snowprecipstartdate, mythid )
645     snowprecipstartdate = modelstart + snowprecipstartdate
646     endif
647 heimbach 1.1 #else
648 dimitri 1.38 if ( hfluxfile .NE. ' ' .and. hfluxperiod .gt. 0. ) then
649 heimbach 1.18 call cal_FullDate ( hfluxstartdate1 , hfluxstartdate2,
650     & date_array ,mythid )
651     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
652     call cal_ToSeconds ( difftime, hfluxstartdate ,mythid )
653     hfluxstartdate = modelstart + hfluxstartdate
654     endif
655 dimitri 1.38 if ( sfluxfile .NE. ' ' .and. sfluxperiod .gt. 0. ) then
656 heimbach 1.18 call cal_FullDate ( sfluxstartdate1 , sfluxstartdate2,
657     & date_array ,mythid )
658     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
659     call cal_ToSeconds ( difftime, sfluxstartdate ,mythid )
660     sfluxstartdate = modelstart + sfluxstartdate
661     endif
662 heimbach 1.1 #endif
663    
664 dimitri 1.6 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
665 dimitri 1.38 if ( swfluxfile .NE. ' ' .and. swfluxperiod .gt. 0. ) then
666 heimbach 1.18 call cal_FullDate ( swfluxstartdate1 , swfluxstartdate2,
667     & date_array ,mythid )
668     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
669     call cal_ToSeconds ( difftime, swfluxstartdate ,mythid )
670     swfluxstartdate = modelstart + swfluxstartdate
671     endif
672 heimbach 1.1 #endif
673    
674 dimitri 1.6 #ifdef EXF_READ_EVAP
675 dimitri 1.38 if ( evapfile .NE. ' ' .and. evapperiod .gt. 0. ) then
676 heimbach 1.18 call cal_FullDate ( evapstartdate1 , evapstartdate2,
677     & date_array ,mythid )
678     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
679     call cal_ToSeconds ( difftime, evapstartdate ,mythid )
680     evapstartdate = modelstart + evapstartdate
681     endif
682 heimbach 1.1 #endif
683    
684 dimitri 1.6 #ifdef ALLOW_RUNOFF
685 dimitri 1.38 if ( runofffile .NE. ' ' .AND. runoffperiod .gt. 0. ) then
686 heimbach 1.18 call cal_FullDate ( runoffstartdate1 , runoffstartdate2,
687     & date_array ,mythid )
688     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
689     call cal_ToSeconds ( difftime, runoffstartdate ,mythid )
690     runoffstartdate = modelstart + runoffstartdate
691     endif
692 heimbach 1.1 #endif
693    
694 dimitri 1.6 #ifdef ALLOW_DOWNWARD_RADIATION
695 dimitri 1.38 if ( swdownfile .NE. ' ' .and. swdownperiod .gt. 0. ) then
696 heimbach 1.18 call cal_FullDate ( swdownstartdate1 , swdownstartdate2,
697     & date_array ,mythid )
698     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
699     call cal_ToSeconds ( difftime, swdownstartdate ,mythid )
700     swdownstartdate = modelstart + swdownstartdate
701     endif
702 dimitri 1.38 if ( lwdownfile .NE. ' ' .and. lwdownperiod .gt. 0. ) then
703 heimbach 1.18 call cal_FullDate ( lwdownstartdate1 , lwdownstartdate2,
704     & date_array ,mythid )
705     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
706     call cal_ToSeconds ( difftime, lwdownstartdate ,mythid )
707     lwdownstartdate = modelstart + lwdownstartdate
708     endif
709     #endif
710    
711     #ifdef ATMOSPHERIC_LOADING
712 dimitri 1.38 if ( apressurefile .NE. ' ' .and. apressureperiod .gt. 0. ) then
713 heimbach 1.18 call cal_FullDate ( apressurestartdate1, apressurestartdate2,
714     & date_array ,mythid )
715     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
716     call cal_ToSeconds ( difftime, apressurestartdate ,mythid )
717     apressurestartdate = modelstart + apressurestartdate
718     endif
719 heimbach 1.1 #endif
720    
721     #ifdef ALLOW_OBCS
722 heimbach 1.2 #ifdef ALLOW_OBCS_NORTH
723 dimitri 1.38 if ( obcsNperiod .gt. 0 ) then
724 heimbach 1.18 call cal_FullDate ( obcsNstartdate1 , obcsNstartdate2,
725     & date_array ,mythid )
726     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
727     call cal_ToSeconds ( difftime, obcsNstartdate ,mythid )
728     obcsNstartdate = modelstart + obcsNstartdate
729     endif
730 heimbach 1.2 #endif
731     #ifdef ALLOW_OBCS_SOUTH
732 dimitri 1.38 if ( obcsSperiod .gt. 0 ) then
733 heimbach 1.18 call cal_FullDate ( obcsSstartdate1 , obcsSstartdate2,
734     & date_array ,mythid )
735     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
736     call cal_ToSeconds ( difftime, obcsSstartdate ,mythid )
737     obcsSstartdate = modelstart + obcsSstartdate
738     endif
739 heimbach 1.2 #endif
740     #ifdef ALLOW_OBCS_EAST
741 dimitri 1.38 if ( obcsEperiod .gt. 0 ) then
742 heimbach 1.18 call cal_FullDate ( obcsEstartdate1 , obcsEstartdate2,
743     & date_array ,mythid )
744     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
745     call cal_ToSeconds ( difftime, obcsEstartdate ,mythid )
746     obcsEstartdate = modelstart + obcsEstartdate
747     endif
748 heimbach 1.2 #endif
749     #ifdef ALLOW_OBCS_WEST
750 dimitri 1.38 if ( obcsNperiod .gt. 0 ) then
751 heimbach 1.18 call cal_FullDate ( obcsWstartdate1 , obcsWstartdate2,
752     & date_array ,mythid )
753     call cal_TimePassed(modelstartdate,date_array,difftime,mythid)
754     call cal_ToSeconds ( difftime, obcsWstartdate ,mythid )
755     obcsWstartdate = modelstart + obcsWstartdate
756     endif
757 heimbach 1.3 #endif
758 dimitri 1.6 #endif /* ALLOW_OBCS */
759 heimbach 1.3
760 heimbach 1.1 _END_MASTER( mythid )
761    
762     _BARRIER
763    
764     c-- Summarize the External forcing's setup.
765     call exf_summary( mythid )
766    
767     c-- set climatology parameters
768     call exf_clim_readparms( mythid )
769    
770     c-- summarize climatologic forcing configuration
771     call exf_clim_summary( mythid )
772    
773     end

  ViewVC Help
Powered by ViewVC 1.1.22