1 |
c $Header: /u/gcmpack/MITgcm/pkg/exf/exf_param.h,v 1.21 2004/12/09 17:58:51 dimitri Exp $ |
2 |
c |
3 |
c |
4 |
c ================================================================== |
5 |
c HEADER exf_param |
6 |
c ================================================================== |
7 |
c |
8 |
c o Header file for the surface flux data. Used by the external |
9 |
c forcing package. |
10 |
c |
11 |
c started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
12 |
c |
13 |
c changed: Christian Eckert eckert@mit.edu 14-Jan-2000 |
14 |
c - Restructured the original version in order to have a |
15 |
c better interface to the MITgcmUV. |
16 |
c |
17 |
c Christian Eckert eckert@mit.edu 12-Feb-2000 |
18 |
c - Changed some variables names (package prefix: exf_) |
19 |
c |
20 |
c Patrick Heimbach, heimbach@mit.edu 04-May-2000 |
21 |
c - included exf_iprec, exf_yftype to enable easy |
22 |
c switch between 32bit/64 bit data format |
23 |
c |
24 |
c Patrick Heimbach, heimbach@mit.edu 01-May-2001 |
25 |
c - added obcs parameters |
26 |
c |
27 |
c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002 |
28 |
c |
29 |
c ================================================================== |
30 |
c HEADER exf_param |
31 |
c ================================================================== |
32 |
|
33 |
c year in seconds |
34 |
_RL year2sec |
35 |
|
36 |
c Calendar data. |
37 |
_RL repeatPeriod |
38 |
|
39 |
c Sea-water albedo |
40 |
_RL exf_albedo |
41 |
|
42 |
c Maximum absolute windstress, used to reset unreastically high |
43 |
c data values |
44 |
_RL windstressmax |
45 |
|
46 |
integer hfluxstartdate1 |
47 |
integer hfluxstartdate2 |
48 |
_RL hfluxstartdate |
49 |
_RL hfluxperiod |
50 |
_RL hfluxconst |
51 |
character*1 hfluxmask |
52 |
parameter( hfluxmask = 's' ) |
53 |
|
54 |
integer atempstartdate1 |
55 |
integer atempstartdate2 |
56 |
_RL atempstartdate |
57 |
_RL atempperiod |
58 |
_RL atempconst |
59 |
character*1 atempmask |
60 |
parameter( atempmask = 's' ) |
61 |
|
62 |
integer aqhstartdate1 |
63 |
integer aqhstartdate2 |
64 |
_RL aqhstartdate |
65 |
_RL aqhperiod |
66 |
_RL aqhconst |
67 |
character*1 aqhmask |
68 |
parameter( aqhmask = 's' ) |
69 |
|
70 |
integer sfluxstartdate1 |
71 |
integer sfluxstartdate2 |
72 |
_RL sfluxstartdate |
73 |
_RL sfluxperiod |
74 |
_RL sfluxconst |
75 |
character*1 sfluxmask |
76 |
parameter( sfluxmask = 's' ) |
77 |
|
78 |
integer evapstartdate1 |
79 |
integer evapstartdate2 |
80 |
_RL evapstartdate |
81 |
_RL evapperiod |
82 |
_RL evapconst |
83 |
character*1 evapmask |
84 |
parameter( evapmask = 's' ) |
85 |
|
86 |
integer precipstartdate1 |
87 |
integer precipstartdate2 |
88 |
_RL precipstartdate |
89 |
_RL precipperiod |
90 |
_RL precipconst |
91 |
character*1 precipmask |
92 |
parameter( precipmask = 's' ) |
93 |
|
94 |
integer runoffstartdate1 |
95 |
integer runoffstartdate2 |
96 |
_RL runoffstartdate |
97 |
_RL runoffperiod |
98 |
_RL runoffconst |
99 |
character*1 runoffmask |
100 |
parameter( runoffmask = 's' ) |
101 |
|
102 |
integer ustressstartdate1 |
103 |
integer ustressstartdate2 |
104 |
_RL ustressstartdate |
105 |
_RL ustressperiod |
106 |
_RL ustressconst |
107 |
character*1 ustressmask |
108 |
parameter( ustressmask = 'u' ) |
109 |
|
110 |
integer vstressstartdate1 |
111 |
integer vstressstartdate2 |
112 |
_RL vstressstartdate |
113 |
_RL vstressperiod |
114 |
_RL vstressconst |
115 |
character*1 vstressmask |
116 |
parameter( vstressmask = 'v' ) |
117 |
|
118 |
integer uwindstartdate1 |
119 |
integer uwindstartdate2 |
120 |
_RL uwindstartdate |
121 |
_RL uwindperiod |
122 |
_RL uwindconst |
123 |
character*1 uwindmask |
124 |
parameter( uwindmask = 's' ) |
125 |
|
126 |
integer vwindstartdate1 |
127 |
integer vwindstartdate2 |
128 |
_RL vwindstartdate |
129 |
_RL vwindperiod |
130 |
_RL vwindconst |
131 |
character*1 vwindmask |
132 |
parameter( vwindmask = 's' ) |
133 |
|
134 |
integer swfluxstartdate1 |
135 |
integer swfluxstartdate2 |
136 |
_RL swfluxstartdate |
137 |
_RL swfluxperiod |
138 |
_RL swfluxconst |
139 |
character*1 swfluxmask |
140 |
parameter( swfluxmask = 's' ) |
141 |
|
142 |
integer lwfluxstartdate1 |
143 |
integer lwfluxstartdate2 |
144 |
_RL lwfluxstartdate |
145 |
_RL lwfluxperiod |
146 |
_RL lwfluxconst |
147 |
character*1 lwfluxmask |
148 |
parameter( lwfluxmask = 's' ) |
149 |
|
150 |
integer swdownstartdate1 |
151 |
integer swdownstartdate2 |
152 |
_RL swdownstartdate |
153 |
_RL swdownperiod |
154 |
_RL swdownconst |
155 |
character*1 swdownmask |
156 |
parameter( swdownmask = 's' ) |
157 |
|
158 |
integer lwdownstartdate1 |
159 |
integer lwdownstartdate2 |
160 |
_RL lwdownstartdate |
161 |
_RL lwdownperiod |
162 |
_RL lwdownconst |
163 |
character*1 lwdownmask |
164 |
parameter( lwdownmask = 's' ) |
165 |
|
166 |
integer obcsNstartdate1 |
167 |
integer obcsNstartdate2 |
168 |
_RL obcsNstartdate |
169 |
_RL obcsNperiod |
170 |
|
171 |
integer obcsSstartdate1 |
172 |
integer obcsSstartdate2 |
173 |
_RL obcsSstartdate |
174 |
_RL obcsSperiod |
175 |
|
176 |
integer obcsEstartdate1 |
177 |
integer obcsEstartdate2 |
178 |
_RL obcsEstartdate |
179 |
_RL obcsEperiod |
180 |
|
181 |
integer obcsWstartdate1 |
182 |
integer obcsWstartdate2 |
183 |
_RL obcsWstartdate |
184 |
_RL obcsWperiod |
185 |
|
186 |
integer apressurestartdate1 |
187 |
integer apressurestartdate2 |
188 |
_RL apressurestartdate |
189 |
_RL apressureperiod |
190 |
_RL apressureconst |
191 |
character*1 apressuremask |
192 |
parameter( apressuremask = 's' ) |
193 |
|
194 |
c File names. |
195 |
character*(128) hfluxfile |
196 |
character*(128) atempfile |
197 |
character*(128) aqhfile |
198 |
character*(128) evapfile |
199 |
character*(128) precipfile |
200 |
character*(128) sfluxfile |
201 |
character*(128) runofffile |
202 |
character*(128) ustressfile |
203 |
character*(128) vstressfile |
204 |
character*(128) uwindfile |
205 |
character*(128) vwindfile |
206 |
character*(128) swfluxfile |
207 |
character*(128) lwfluxfile |
208 |
character*(128) swdownfile |
209 |
character*(128) lwdownfile |
210 |
character*(128) apressurefile |
211 |
|
212 |
C useExfYearlyFields :: when set, automatically add extension |
213 |
C _YEAR to input file names |
214 |
C twoDigitYear :: when set, use 2-digit year extension YR |
215 |
C instead of _YEAR for useExfYearlyFields |
216 |
logical useExfYearlyFields, twoDigitYear |
217 |
logical useExfCheckRange |
218 |
|
219 |
common /exf_param_l/ |
220 |
& useExfYearlyFields, twoDigitYear, |
221 |
& useExfCheckRange |
222 |
common /exf_param_i/ |
223 |
& hfluxstartdate1, hfluxstartdate2, |
224 |
& atempstartdate1, atempstartdate2, |
225 |
& aqhstartdate1, aqhstartdate2, |
226 |
& sfluxstartdate1, sfluxstartdate2, |
227 |
& evapstartdate1, evapstartdate2, |
228 |
& runoffstartdate1, runoffstartdate2, |
229 |
& precipstartdate1, precipstartdate2, |
230 |
& ustressstartdate1, ustressstartdate2, |
231 |
& vstressstartdate1, vstressstartdate2, |
232 |
& uwindstartdate1, uwindstartdate2, |
233 |
& vwindstartdate1, vwindstartdate2, |
234 |
& swfluxstartdate1, swfluxstartdate2, |
235 |
& lwfluxstartdate1, lwfluxstartdate2, |
236 |
& swdownstartdate1, swdownstartdate2, |
237 |
& lwdownstartdate1, lwdownstartdate2, |
238 |
& obcsNstartdate1, obcsNstartdate2, |
239 |
& obcsSstartdate1, obcsSstartdate2, |
240 |
& obcsEstartdate1, obcsEstartdate2, |
241 |
& obcsWstartdate1, obcsWstartdate2, |
242 |
& apressurestartdate1,apressurestartdate2 |
243 |
|
244 |
common /exf_param_r/ |
245 |
& year2sec, windstressmax, |
246 |
& repeatPeriod, exf_albedo, |
247 |
& hfluxperiod, hfluxstartdate, |
248 |
& atempperiod, atempstartdate, |
249 |
& aqhperiod, aqhstartdate, |
250 |
& sfluxperiod, sfluxstartdate, |
251 |
& evapperiod, evapstartdate, |
252 |
& precipperiod, precipstartdate, |
253 |
& runoffperiod, runoffstartdate, |
254 |
& ustressperiod, ustressstartdate, |
255 |
& vstressperiod, vstressstartdate, |
256 |
& uwindperiod, uwindstartdate, |
257 |
& vwindperiod, vwindstartdate, |
258 |
& swfluxperiod, swfluxstartdate, |
259 |
& lwfluxperiod, lwfluxstartdate, |
260 |
& swdownperiod, swdownstartdate, |
261 |
& lwdownperiod, lwdownstartdate, |
262 |
& obcsNperiod, obcsNstartdate, |
263 |
& obcsSperiod, obcsSstartdate, |
264 |
& obcsEperiod, obcsEstartdate, |
265 |
& obcsWperiod, obcsWstartdate, |
266 |
& apressureperiod, apressurestartdate, |
267 |
& hfluxconst, |
268 |
& atempconst, |
269 |
& aqhconst, |
270 |
& sfluxconst, |
271 |
& evapconst, |
272 |
& precipconst, |
273 |
& runoffconst, |
274 |
& ustressconst, |
275 |
& vstressconst, |
276 |
& uwindconst, |
277 |
& vwindconst, |
278 |
& swfluxconst, |
279 |
& lwfluxconst, |
280 |
& swdownconst, |
281 |
& lwdownconst, |
282 |
& apressureconst |
283 |
|
284 |
common /exf_param_c/ |
285 |
& hfluxfile, |
286 |
& atempfile, |
287 |
& aqhfile, |
288 |
& sfluxfile, |
289 |
& evapfile, |
290 |
& precipfile, |
291 |
& runofffile, |
292 |
& ustressfile, |
293 |
& vstressfile, |
294 |
& uwindfile, |
295 |
& vwindfile, |
296 |
& swfluxfile, |
297 |
& lwfluxfile, |
298 |
& swdownfile, |
299 |
& lwdownfile, |
300 |
& apressurefile |
301 |
|
302 |
c file precision and field type |
303 |
|
304 |
common /exf_param_type/ |
305 |
& exf_iprec, |
306 |
& exf_yftype |
307 |
|
308 |
integer exf_iprec |
309 |
character*(2) exf_yftype |
310 |
|
311 |
c exf_inscal_* input scaling factors |
312 |
c exf_offset_atemp input air temperature offset |
313 |
c (for conversion from C to K, if needed) |
314 |
c exf_outscale_* output scaling factors |
315 |
|
316 |
_RL exf_inscal_hflux |
317 |
_RL exf_inscal_sflux |
318 |
_RL exf_inscal_ustress |
319 |
_RL exf_inscal_vstress |
320 |
_RL exf_inscal_uwind |
321 |
_RL exf_inscal_vwind |
322 |
_RL exf_inscal_swflux |
323 |
_RL exf_inscal_lwflux |
324 |
_RL exf_inscal_precip |
325 |
_RL exf_inscal_sst |
326 |
_RL exf_inscal_sss |
327 |
_RL exf_inscal_atemp |
328 |
_RL exf_offset_atemp |
329 |
_RL exf_inscal_aqh |
330 |
_RL exf_inscal_evap |
331 |
_RL exf_inscal_apressure |
332 |
_RL exf_inscal_runoff |
333 |
_RL exf_inscal_swdown |
334 |
_RL exf_inscal_lwdown |
335 |
|
336 |
_RL exf_outscal_hflux |
337 |
_RL exf_outscal_sflux |
338 |
_RL exf_outscal_ustress |
339 |
_RL exf_outscal_vstress |
340 |
_RL exf_outscal_swflux |
341 |
_RL exf_outscal_sst |
342 |
_RL exf_outscal_sss |
343 |
_RL exf_outscal_apressure |
344 |
|
345 |
common /exf_param_scal/ |
346 |
& exf_inscal_hflux |
347 |
& , exf_inscal_sflux |
348 |
& , exf_inscal_ustress |
349 |
& , exf_inscal_vstress |
350 |
& , exf_inscal_uwind |
351 |
& , exf_inscal_vwind |
352 |
& , exf_inscal_swflux |
353 |
& , exf_inscal_lwflux |
354 |
& , exf_inscal_precip |
355 |
& , exf_inscal_sst |
356 |
& , exf_inscal_sss |
357 |
& , exf_inscal_atemp |
358 |
& , exf_offset_atemp |
359 |
& , exf_inscal_aqh |
360 |
& , exf_inscal_evap |
361 |
& , exf_inscal_apressure |
362 |
& , exf_inscal_runoff |
363 |
& , exf_inscal_swdown |
364 |
& , exf_inscal_lwdown |
365 |
& , exf_outscal_hflux |
366 |
& , exf_outscal_sflux |
367 |
& , exf_outscal_ustress |
368 |
& , exf_outscal_vstress |
369 |
& , exf_outscal_swflux |
370 |
& , exf_outscal_sst |
371 |
& , exf_outscal_sss |
372 |
& , exf_outscal_apressure |
373 |
|
374 |
#ifndef USE_EXF_INTERPOLATION |
375 |
c-- set dummy dimension 1 |
376 |
integer MAX_LAT_INC |
377 |
parameter(MAX_LAT_INC = 1) |
378 |
#else |
379 |
c for lat interpolation, arraysize currently set to 2176 max data values |
380 |
integer MAX_LAT_INC |
381 |
parameter(MAX_LAT_INC = 2176) |
382 |
_RL ustress_lon0, ustress_lon_inc |
383 |
_RL ustress_lat0, ustress_lat_inc(MAX_LAT_INC) |
384 |
INTEGER ustress_nlon, ustress_nlat |
385 |
_RL vstress_lon0, vstress_lon_inc |
386 |
_RL vstress_lat0, vstress_lat_inc(MAX_LAT_INC) |
387 |
INTEGER vstress_nlon, vstress_nlat |
388 |
_RL hflux_lon0, hflux_lon_inc |
389 |
_RL hflux_lat0, hflux_lat_inc(MAX_LAT_INC) |
390 |
INTEGER hflux_nlon, hflux_nlat |
391 |
_RL sflux_lon0, sflux_lon_inc |
392 |
_RL sflux_lat0, sflux_lat_inc(MAX_LAT_INC) |
393 |
INTEGER sflux_nlon, sflux_nlat |
394 |
_RL swflux_lon0, swflux_lon_inc |
395 |
_RL swflux_lat0, swflux_lat_inc(MAX_LAT_INC) |
396 |
INTEGER swflux_nlon, swflux_nlat |
397 |
_RL runoff_lon0, runoff_lon_inc |
398 |
_RL runoff_lat0, runoff_lat_inc(MAX_LAT_INC) |
399 |
INTEGER runoff_nlon, runoff_nlat |
400 |
_RL atemp_lon0, atemp_lon_inc |
401 |
_RL atemp_lat0, atemp_lat_inc(MAX_LAT_INC) |
402 |
INTEGER atemp_nlon, atemp_nlat |
403 |
_RL aqh_lon0, aqh_lon_inc |
404 |
_RL aqh_lat0, aqh_lat_inc(MAX_LAT_INC) |
405 |
INTEGER aqh_nlon, aqh_nlat |
406 |
_RL evap_lon0, evap_lon_inc |
407 |
_RL evap_lat0, evap_lat_inc(MAX_LAT_INC) |
408 |
INTEGER evap_nlon, evap_nlat |
409 |
_RL precip_lon0, precip_lon_inc |
410 |
_RL precip_lat0, precip_lat_inc(MAX_LAT_INC) |
411 |
INTEGER precip_nlon, precip_nlat |
412 |
_RL uwind_lon0, uwind_lon_inc |
413 |
_RL uwind_lat0, uwind_lat_inc(MAX_LAT_INC) |
414 |
INTEGER uwind_nlon, uwind_nlat |
415 |
_RL vwind_lon0, vwind_lon_inc |
416 |
_RL vwind_lat0, vwind_lat_inc(MAX_LAT_INC) |
417 |
INTEGER vwind_nlon, vwind_nlat |
418 |
_RL lwflux_lon0, lwflux_lon_inc |
419 |
_RL lwflux_lat0, lwflux_lat_inc(MAX_LAT_INC) |
420 |
INTEGER lwflux_nlon, lwflux_nlat |
421 |
_RL swdown_lon0, swdown_lon_inc |
422 |
_RL swdown_lat0, swdown_lat_inc(MAX_LAT_INC) |
423 |
INTEGER swdown_nlon, swdown_nlat |
424 |
_RL lwdown_lon0, lwdown_lon_inc |
425 |
_RL lwdown_lat0, lwdown_lat_inc(MAX_LAT_INC) |
426 |
INTEGER lwdown_nlon, lwdown_nlat |
427 |
_RL apressure_lon0,apressure_lon_inc |
428 |
_RL apressure_lat0,apressure_lat_inc(MAX_LAT_INC) |
429 |
INTEGER apressure_nlon,apressure_nlat |
430 |
|
431 |
common /exf_interpolation/ |
432 |
& ustress_lon0, ustress_lon_inc, |
433 |
& ustress_lat0, ustress_lat_inc, |
434 |
& ustress_nlon, ustress_nlat, |
435 |
& vstress_lon0, vstress_lon_inc, |
436 |
& vstress_lat0, vstress_lat_inc, |
437 |
& vstress_nlon, vstress_nlat, |
438 |
& hflux_lon0, hflux_lon_inc, |
439 |
& hflux_lat0, hflux_lat_inc, |
440 |
& hflux_nlon, hflux_nlat, |
441 |
& sflux_lon0, sflux_lon_inc, |
442 |
& sflux_lat0, sflux_lat_inc, |
443 |
& sflux_nlon, sflux_nlat, |
444 |
& swflux_lon0, swflux_lon_inc, |
445 |
& swflux_lat0, swflux_lat_inc, |
446 |
& swflux_nlon, swflux_nlat, |
447 |
& runoff_lon0, runoff_lon_inc, |
448 |
& runoff_lat0, runoff_lat_inc, |
449 |
& runoff_nlon, runoff_nlat, |
450 |
& atemp_lon0, atemp_lon_inc, |
451 |
& atemp_lat0, atemp_lat_inc, |
452 |
& atemp_nlon, atemp_nlat, |
453 |
& aqh_lon0, aqh_lon_inc, |
454 |
& aqh_lat0, aqh_lat_inc, |
455 |
& aqh_nlon, aqh_nlat, |
456 |
& evap_lon0, evap_lon_inc, |
457 |
& evap_lat0, evap_lat_inc, |
458 |
& evap_nlon, evap_nlat, |
459 |
& precip_lon0, precip_lon_inc, |
460 |
& precip_lat0, precip_lat_inc, |
461 |
& precip_nlon, precip_nlat, |
462 |
& uwind_lon0, uwind_lon_inc, |
463 |
& uwind_lat0, uwind_lat_inc, |
464 |
& uwind_nlon, uwind_nlat, |
465 |
& vwind_lon0, vwind_lon_inc, |
466 |
& vwind_lat0, vwind_lat_inc, |
467 |
& vwind_nlon, vwind_nlat, |
468 |
& lwflux_lon0, lwflux_lon_inc, |
469 |
& lwflux_lat0, lwflux_lat_inc, |
470 |
& lwflux_nlon, lwflux_nlat, |
471 |
& swdown_lon0, swdown_lon_inc, |
472 |
& swdown_lat0, swdown_lat_inc, |
473 |
& swdown_nlon, swdown_nlat, |
474 |
& lwdown_lon0, lwdown_lon_inc, |
475 |
& lwdown_lat0, lwdown_lat_inc, |
476 |
& lwdown_nlon, lwdown_nlat, |
477 |
& apressure_lon0,apressure_lon_inc, |
478 |
& apressure_lat0,apressure_lat_inc, |
479 |
& apressure_nlon,apressure_nlat |
480 |
#endif |