/[MITgcm]/MITgcm/pkg/ctrl/ctrl.h
ViewVC logotype

Contents of /MITgcm/pkg/ctrl/ctrl.h

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


Revision 1.14 - (show annotations) (download)
Thu Nov 11 06:28:33 2004 UTC (19 years, 6 months ago) by heimbach
Branch: MAIN
Changes since 1.13: +4 -0 lines
File MIME type: text/plain
o More ECCO-GODAE merge: wind stress sign affects
  * exf_inscal_[u/v]stress
  * sign of xx_tau[u/v] adjustments
  * signs in cost_scat
o run time flag for initializing xx_ fields

1
2
3 c ==================================================================
4 c HEADER CONTROLVARS
5 c ==================================================================
6 c
7 c o Control variables of the ECCO state estimation tool.
8 c
9 c Depending on the specific problem to be studied users will have to
10 c modify this header file.
11 c
12 c started: Christian Eckert eckert@mit.edu 30-Jun-1999
13 c
14 c changed: Christian Eckert eckert@mit.edu
15 c
16 c
17 c ==================================================================
18 c HEADER CONTROLVARS
19 c ==================================================================
20 c
21 c nwet[c/s/w]tile - Number of wet points in a tile for center (c),
22 c south (s), and western (w) mask, resp. .
23
24 integer maxcvars
25 parameter ( maxcvars = 30 )
26
27 cph ctrlprec will be set to 32 for ECCO to reduce I/O
28 cph but jeopardizes some gradient checks, so should be
29 cph set to 64 by default.
30 cph Need to put this in namelist at some point!
31 integer ctrlprec
32 parameter ( ctrlprec = 64 )
33
34 common /controlvars_l /
35 & doInitXX
36 logical doInitXX
37
38 common /controlvars_i/
39 & nvartype,
40 & nvarlength,
41 & ncvarindex,
42 & ncvarrecs,
43 & ncvarrecstart,
44 & ncvarrecsend,
45 & ncvarxmax,
46 & ncvarymax,
47 & ncvarnrmax,
48 & nwetctile,
49 & nwetstile,
50 & nwetwtile,
51 & nwetvtile,
52 & nwetcglobal,
53 & nwetsglobal,
54 & nwetwglobal,
55 & nwetvglobal
56 integer nvartype
57 integer nvarlength
58 integer ncvarindex ( maxcvars )
59 integer ncvarrecs ( maxcvars )
60 integer ncvarrecstart ( maxcvars )
61 integer ncvarrecsend ( maxcvars )
62 integer ncvarxmax ( maxcvars )
63 integer ncvarymax ( maxcvars )
64 integer ncvarnrmax ( maxcvars )
65 integer nwetctile ( nsx,nsy,nr )
66 integer nwetstile ( nsx,nsy,nr )
67 integer nwetwtile ( nsx,nsy,nr )
68 integer nwetvtile ( nsx,nsy,nr )
69 integer nwetcglobal ( nr )
70 integer nwetsglobal ( nr )
71 integer nwetwglobal ( nr )
72 integer nwetvglobal ( nr )
73
74 #ifdef ALLOW_OBCSN_CONTROL
75 common /controlvars_i_obcsn/
76 & nwetobcsn,
77 & nwetobcsnglo
78 integer nwetobcsn ( nsx,nsy,nr,nobcs )
79 integer nwetobcsnglo ( nr,nobcs )
80 #endif
81 #ifdef ALLOW_OBCSS_CONTROL
82 common /controlvars_i_obcss/
83 & nwetobcss,
84 & nwetobcssglo
85 integer nwetobcss ( nsx,nsy,nr,nobcs )
86 integer nwetobcssglo ( nr,nobcs )
87 #endif
88 #ifdef ALLOW_OBCSW_CONTROL
89 common /controlvars_i_obcsw/
90 & nwetobcsw,
91 & nwetobcswglo
92 integer nwetobcsw ( nsx,nsy,nr,nobcs )
93 integer nwetobcswglo ( nr,nobcs )
94 #endif
95 #ifdef ALLOW_OBCSE_CONTROL
96 common /controlvars_i_obcse/
97 & nwetobcse,
98 & nwetobcseglo
99 integer nwetobcse ( nsx,nsy,nr,nobcs )
100 integer nwetobcseglo ( nr,nobcs )
101 #endif
102
103 common /controlvars_c/
104 & ncvargrd
105 & , yadprefix
106 character*(1) ncvargrd(maxcvars)
107 character*(2) yadprefix
108
109 common /controlvec_header_i/
110 & filenvartype,
111 & filenvarlength,
112 & fileOptimCycle,
113 & filencbuffindex,
114 & fileIg,
115 & fileJg,
116 & fileI,
117 & fileJ,
118 & filensx,
119 & filensy,
120 & filek,
121 & filenWetcGlobal,
122 & filenWetsGlobal,
123 & filenWetwGlobal,
124 & filenWetvGlobal,
125 & filencvarindex,
126 & filencvarrecs,
127 & filencvarxmax,
128 & filencvarymax,
129 & filencvarnrmax
130 integer filenvartype
131 integer filenvarlength
132 integer fileOptimCycle
133 integer filencbuffindex
134 integer fileIg
135 integer fileJg
136 integer fileI
137 integer fileJ
138 integer filensx
139 integer filensy
140 integer filek
141 integer filenWetcGlobal(nr)
142 integer filenWetsGlobal(nr)
143 integer filenWetwGlobal(nr)
144 integer filenWetvGlobal(nr)
145 integer filencvarindex(maxcvars)
146 integer filencvarrecs(maxcvars)
147 integer filencvarxmax(maxcvars)
148 integer filencvarymax(maxcvars)
149 integer filencvarnrmax(maxcvars)
150
151 common /controlvec_header_r/
152 & filefc
153 _RL filefc
154
155 common /controlvec_header_c/
156 & fileYctrlid,
157 & filencvargrd
158 character*(10) fileYctrlid
159 character*( 1) filencvargrd(maxcvars)
160
161 c Define unit weight as a placeholder
162 common /ctrl_weights_unit_r/
163 & wunit
164 _RL wunit ( nr,nsx,nsy )
165
166 c Control variables:
167 c ==================
168 c
169 c xx_theta - control vector temperature part.
170 c xx_salt - control vector salt part.
171 c xx_hflux - control vector surface heat flux part.
172 c xx_sflux - control vector surface salt flux part.
173 c xx_tauu - control vector zonal wind stress part.
174 c xx_tauv - control vector meridional wind stress part.
175 cph(
176 c xx_... are to be replaced by tmpfld2d/3d throughout the code;
177 c control variables are written to / read from active files
178 c TAMC sees xx_..._dummy
179
180 common /controlvars_r/
181 & tmpfld2d
182 & , tmpfld3d
183 _RL tmpfld2d
184 & (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
185 _RL tmpfld3d
186 & (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
187
188 cgg This caused a lot of confusion.
189 #ifdef ALLOW_OBCS_CONTROL
190 common /controlvars_r_obcs/
191 & tmpfldxz
192 & , tmpfldxz2
193 & , tmpfldyz
194 & , tmpfldyz2
195
196 _RL tmpfldxz (1-olx:snx+olx,nr,nsx,nsy)
197 _RL tmpfldxz2 (1-olx:snx+olx,nr,nsx,nsy)
198 _RL tmpfldyz (1-oly:sny+oly,nr,nsx,nsy)
199 _RL tmpfldyz2 (1-oly:sny+oly,nr,nsx,nsy)
200 #endif
201
202 c Auxiliary storage arrays for the control variables:
203 c ===================================================
204 c
205 c xx_hflux0 - heat flux record before current date.
206 c xx_hflux1 - heat flux record after current date
207 c xx_sflux0 - salt flux record before current date.
208 c xx_sflux1 - salt flux record after current date.
209 c xx_tauu0 - zonal wind stress record before current date.
210 c xx_tauu1 - zonal wind stress record after current date.
211 c xx_tauv0 - meridional wind stress record before current date.
212 c xx_tauv1 - meridional wind stress record after current date.
213
214 #if (defined (ALLOW_HFLUX_CONTROL))
215 common /controlaux_1_r/
216 & xx_hflux0,
217 & xx_hflux1
218 #elif (defined (ALLOW_ATEMP_CONTROL))
219 common /controlaux_1_r/
220 & xx_atemp0,
221 & xx_atemp1
222 #endif
223
224 #if (defined (ALLOW_SFLUX_CONTROL))
225 common /controlaux_2_r/
226 & xx_sflux0,
227 & xx_sflux1
228 #elif (defined (ALLOW_AQH_CONTROL))
229 common /controlaux_2_r/
230 & xx_aqh0,
231 & xx_aqh1
232 #endif
233
234 #if (defined (ALLOW_USTRESS_CONTROL))
235 common /controlaux_3_r/
236 & xx_tauu0,
237 & xx_tauu1
238 #elif (defined (ALLOW_UWIND_CONTROL))
239 common /controlaux_3_r/
240 & xx_uwind0,
241 & xx_uwind1
242 #endif
243
244 #if (defined (ALLOW_VSTRESS_CONTROL))
245 common /controlaux_4_r/
246 & xx_tauv0,
247 & xx_tauv1
248 #elif (defined (ALLOW_VWIND_CONTROL))
249 common /controlaux_4_r/
250 & xx_vwind0,
251 & xx_vwind1
252 #endif
253
254 #ifdef ALLOW_OBCS_CONTROL
255 #if (defined (ALLOW_OBCSN_CONTROL))
256 common /controlaux_5obcsn_r/
257 & xx_obcsn0,
258 & xx_obcsn1
259 #endif
260
261 #if (defined (ALLOW_OBCSS_CONTROL))
262 common /controlaux_5obcss_r/
263 & xx_obcss0,
264 & xx_obcss1
265 #endif
266 #if (defined (ALLOW_OBCSW_CONTROL))
267 common /controlaux_5obcsw_r/
268 & xx_obcsw0,
269 & xx_obcsw1
270 #endif
271 #if (defined (ALLOW_OBCSE_CONTROL))
272 common /controlaux_5obcse_r/
273 & xx_obcse0,
274 & xx_obcse1
275 #endif
276 #endif
277
278 #if (defined (ALLOW_HFLUX_CONTROL))
279 _RL xx_hflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
280 _RL xx_hflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
281 #elif (defined (ALLOW_ATEMP_CONTROL))
282 _RL xx_atemp0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
283 _RL xx_atemp1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
284 #endif
285 #if (defined (ALLOW_SFLUX_CONTROL))
286 _RL xx_sflux0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
287 _RL xx_sflux1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
288 #elif (defined (ALLOW_AQH_CONTROL))
289 _RL xx_aqh0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
290 _RL xx_aqh1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
291 #endif
292 #if (defined (ALLOW_USTRESS_CONTROL))
293 _RL xx_tauu0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
294 _RL xx_tauu1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
295 #elif (defined (ALLOW_UWIND_CONTROL))
296 _RL xx_uwind0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
297 _RL xx_uwind1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
298 #endif
299 #if (defined (ALLOW_VSTRESS_CONTROL))
300 _RL xx_tauv0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
301 _RL xx_tauv1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
302 #elif (defined (ALLOW_VWIND_CONTROL))
303 _RL xx_vwind0 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
304 _RL xx_vwind1 (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
305 #endif
306 cgg(
307 #ifdef ALLOW_OBCSN_CONTROL
308 _RL xx_obcsn0 (1-Olx:sNx+Olx,Nr,nSx,nSy,nobcs)
309 _RL xx_obcsn1 (1-Olx:sNx+Olx,Nr,nSx,nSy,nobcs)
310 #endif
311
312 #ifdef ALLOW_OBCSS_CONTROL
313 _RL xx_obcss0 (1-Olx:sNx+Olx,Nr,nSx,nSy,nobcs)
314 _RL xx_obcss1 (1-Olx:sNx+Olx,Nr,nSx,nSy,nobcs)
315 #endif
316
317 #ifdef ALLOW_OBCSW_CONTROL
318 _RL xx_obcsw0 (1-Oly:sNy+Oly,Nr,nSx,nSy,nobcs)
319 _RL xx_obcsw1 (1-Oly:sNy+Oly,Nr,nSx,nSy,nobcs)
320 #endif
321
322 #ifdef ALLOW_OBCSE_CONTROL
323 _RL xx_obcse0 (1-Oly:sNy+Oly,Nr,nSx,nSy,nobcs)
324 _RL xx_obcse1 (1-Oly:sNy+Oly,Nr,nSx,nSy,nobcs)
325 #endif
326 cgg)
327
328
329 c Files where the control variables are stored:
330 c =============================================
331 c
332 c xx_theta_file - control vector temperature part.
333 c xx_salt_file - control vector salinity part.
334 c xx_hflux_file - control vector surface heat flux file.
335 c xx_sflux_file - control vector surface salt flux file.
336 c xx_tauu_file - control vector zonal wind stress file.
337 c xx_tauv_file - control vector meridional wind stress file.
338 c xx_obcsn_file - control vector Uvel at boundary
339 c xx_obcss_file - control vector Vvel at boundary
340 c xx_obcsw_file - control vector temp. at boundary
341 c xx_obcse_file - control vector salin. at boundary
342 common /controlfiles_c/
343 & xx_theta_file
344 & , xx_salt_file
345 & , xx_hflux_file
346 & , xx_sflux_file
347 & , xx_tauu_file
348 & , xx_tauv_file
349 & , xx_atemp_file
350 & , xx_aqh_file
351 & , xx_uwind_file
352 & , xx_vwind_file
353 & , xx_obcsn_file
354 & , xx_obcss_file
355 & , xx_obcsw_file
356 & , xx_obcse_file
357 & , xx_diffkr_file
358 & , xx_kapgm_file
359 & , xx_tr1_file
360 & , xx_sst_file
361 & , xx_sss_file
362 & , xx_hfacc_file
363 & , xx_efluxy_file
364 & , xx_efluxp_file
365 & , xx_bottomdrag_file
366 & , xx_theta_ini_fin_file
367 & , xx_salt_ini_fin_file
368
369 character*(MAX_LEN_FNAM) xx_theta_file
370 character*(MAX_LEN_FNAM) xx_salt_file
371 character*(MAX_LEN_FNAM) xx_hflux_file
372 character*(MAX_LEN_FNAM) xx_sflux_file
373 character*(MAX_LEN_FNAM) xx_tauu_file
374 character*(MAX_LEN_FNAM) xx_tauv_file
375 character*(MAX_LEN_FNAM) xx_atemp_file
376 character*(MAX_LEN_FNAM) xx_aqh_file
377 character*(MAX_LEN_FNAM) xx_uwind_file
378 character*(MAX_LEN_FNAM) xx_vwind_file
379 character*(MAX_LEN_FNAM) xx_obcsn_file
380 character*(MAX_LEN_FNAM) xx_obcss_file
381 character*(MAX_LEN_FNAM) xx_obcsw_file
382 character*(MAX_LEN_FNAM) xx_obcse_file
383 character*(MAX_LEN_FNAM) xx_diffkr_file
384 character*(MAX_LEN_FNAM) xx_kapgm_file
385 character*(MAX_LEN_FNAM) xx_tr1_file
386 character*(MAX_LEN_FNAM) xx_sst_file
387 character*(MAX_LEN_FNAM) xx_sss_file
388 character*(MAX_LEN_FNAM) xx_hfacc_file
389 character*(MAX_LEN_FNAM) xx_efluxy_file
390 character*(MAX_LEN_FNAM) xx_efluxp_file
391 character*(MAX_LEN_FNAM) xx_bottomdrag_file
392 character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
393 character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
394
395 common /packnames_c/
396 & yadmark,
397 & ctrlname,
398 & costname,
399 & scalname,
400 & maskname,
401 & metaname,
402 & yctrlid,
403 & yctrlposunpack,
404 & yctrlpospack
405 character*2 yadmark
406 character*9 ctrlname
407 character*9 costname
408 character*9 scalname
409 character*9 maskname
410 character*9 metaname
411 character*10 yctrlid
412 character*4 yctrlposunpack
413 character*4 yctrlpospack
414
415 c Calendar information for the control variables:
416 c ===============================================
417 c
418 c xx_hfluxperiod - sampling interval for the heat flux control part.
419 c xx_sfluxperiod - sampling interval for the salt flux control part.
420 c xx_tauuperiod - sampling interval for the zonal wind
421 c stress control part.
422 c xx_tauvperiod - sampling interval for the meridional wind
423 c stress control part.
424 c xx_obcsuperiod - sampling interval
425 c xx_obcsvperiod - sampling interval
426 c xx_obcstperiod - sampling interval
427 c xx_obcssperiod - sampling interval
428
429 common /controltimes_r/
430 & xx_hfluxperiod
431 & , xx_sfluxperiod
432 & , xx_tauuperiod
433 & , xx_tauvperiod
434 & , xx_atempperiod
435 & , xx_aqhperiod
436 & , xx_uwindperiod
437 & , xx_vwindperiod
438 & , xx_obcsnperiod
439 & , xx_obcssperiod
440 & , xx_obcswperiod
441 & , xx_obcseperiod
442 _RL xx_hfluxperiod
443 _RL xx_sfluxperiod
444 _RL xx_tauuperiod
445 _RL xx_tauvperiod
446 _RL xx_atempperiod
447 _RL xx_aqhperiod
448 _RL xx_uwindperiod
449 _RL xx_vwindperiod
450 _RL xx_obcsnperiod
451 _RL xx_obcssperiod
452 _RL xx_obcswperiod
453 _RL xx_obcseperiod
454
455 c xx_hfluxstartdate - start date for the heat flux control part.
456 c xx_sfluxstartdate - start date for the salt flux control part.
457 c xx_tauustartdate - start date for the zonal wind stress
458 c control part.
459 c xx_tauvstartdate - start date for the meridional wind stress
460 c control part.
461
462 common /controltimes_i/
463 & xx_hfluxstartdate1
464 & , xx_hfluxstartdate2
465 & , xx_sfluxstartdate1
466 & , xx_sfluxstartdate2
467 & , xx_tauustartdate1
468 & , xx_tauustartdate2
469 & , xx_tauvstartdate1
470 & , xx_tauvstartdate2
471 & , xx_atempstartdate1
472 & , xx_atempstartdate2
473 & , xx_aqhstartdate1
474 & , xx_aqhstartdate2
475 & , xx_uwindstartdate1
476 & , xx_uwindstartdate2
477 & , xx_vwindstartdate1
478 & , xx_vwindstartdate2
479 & , xx_hfluxstartdate
480 & , xx_sfluxstartdate
481 & , xx_tauustartdate
482 & , xx_tauvstartdate
483 & , xx_atempstartdate
484 & , xx_aqhstartdate
485 & , xx_uwindstartdate
486 & , xx_vwindstartdate
487 & , xx_obcsnstartdate1
488 & , xx_obcsnstartdate2
489 & , xx_obcssstartdate1
490 & , xx_obcssstartdate2
491 & , xx_obcswstartdate1
492 & , xx_obcswstartdate2
493 & , xx_obcsestartdate1
494 & , xx_obcsestartdate2
495 & , xx_obcsnstartdate
496 & , xx_obcssstartdate
497 & , xx_obcswstartdate
498 & , xx_obcsestartdate
499 integer xx_hfluxstartdate1
500 integer xx_hfluxstartdate2
501 integer xx_sfluxstartdate1
502 integer xx_sfluxstartdate2
503 integer xx_tauustartdate1
504 integer xx_tauustartdate2
505 integer xx_tauvstartdate1
506 integer xx_tauvstartdate2
507 integer xx_atempstartdate1
508 integer xx_atempstartdate2
509 integer xx_aqhstartdate1
510 integer xx_aqhstartdate2
511 integer xx_uwindstartdate1
512 integer xx_uwindstartdate2
513 integer xx_vwindstartdate1
514 integer xx_vwindstartdate2
515 integer xx_obcsnstartdate1
516 integer xx_obcsnstartdate2
517 integer xx_obcssstartdate1
518 integer xx_obcssstartdate2
519 integer xx_obcswstartdate1
520 integer xx_obcswstartdate2
521 integer xx_obcsestartdate1
522 integer xx_obcsestartdate2
523
524 integer xx_hfluxstartdate(4)
525 integer xx_sfluxstartdate(4)
526 integer xx_tauustartdate(4)
527 integer xx_tauvstartdate(4)
528 integer xx_atempstartdate(4)
529 integer xx_aqhstartdate(4)
530 integer xx_uwindstartdate(4)
531 integer xx_vwindstartdate(4)
532 integer xx_obcsnstartdate(4)
533 integer xx_obcssstartdate(4)
534 integer xx_obcswstartdate(4)
535 integer xx_obcsestartdate(4)
536
537 character*( 80) fname_theta(2)
538 character*( 80) fname_salt(2)
539 character*( 80) fname_hflux(2)
540 character*( 80) fname_sflux(2)
541 character*( 80) fname_tauu(2)
542 character*( 80) fname_tauv(2)
543 character*( 80) fname_atemp(2)
544 character*( 80) fname_aqh(2)
545 character*( 80) fname_uwind(2)
546 character*( 80) fname_vwind(2)
547 character*( 80) fname_obcsn(2)
548 character*( 80) fname_obcss(2)
549 character*( 80) fname_obcsw(2)
550 character*( 80) fname_obcse(2)
551 character*( 80) fname_diffkr(2)
552 character*( 80) fname_kapgm(2)
553 character*( 80) fname_tr1(2)
554 character*( 80) fname_sst(2)
555 character*( 80) fname_sss(2)
556 character*( 80) fname_hfacc(2)
557 character*( 80) fname_efluxy(2)
558 character*( 80) fname_efluxp(2)
559 character*( 80) fname_bottomdrag(2)
560
561 c ==================================================================
562 c END OF HEADER CONTROLVARS
563 c ==================================================================
564
565

  ViewVC Help
Powered by ViewVC 1.1.22