/[MITgcm]/MITgcm/pkg/ecco/ecco_cost.h
ViewVC logotype

Contents of /MITgcm/pkg/ecco/ecco_cost.h

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


Revision 1.15 - (show annotations) (download)
Wed Feb 15 20:01:51 2006 UTC (18 years, 4 months ago) by heimbach
Branch: MAIN
Changes since 1.14: +20 -3 lines
File MIME type: text/plain
o Adding GFO observations
o Modified masks to add costs beyond TOPEX 66N/S

1
2 c ==================================================================
3 c HEADER AVERAGES
4 c ==================================================================
5 c
6 c o Header for averaged temperature, salinity, and surface pressure
7 c fields and counters associated with the averaging.
8 c
9 c started: Christian Eckert eckert@mit.edu 30-Jun-1999
10 c
11 c ==================================================================
12 c HEADER AVERAGES
13 c ==================================================================
14
15 c Averaging counters:
16 c ===================
17 c
18 c sum1day - counter for the daily averaging
19 c sum1mon - counter for the monthly averaging
20 c dayrec - number of averaged surface pressure records.
21 c monrec - number of averaged theta and salinity records.
22
23 common /average_i/
24 & sum1day,sum1mon,
25 & dayrec,monrec
26 integer sum1day
27 integer sum1mon
28 integer dayrec
29 integer monrec
30
31
32 c Averaged Fields:
33 c ================
34 c
35 c tbar - contains the averaged temperature field after the call
36 c to subroutine POST_MONTHLY. Before, it accumulates the
37 c intantaneous temperatures.
38 c sbar - contains the averaged salinity field after the call
39 c to subroutine POST_MONTHLY. Before, it accumulates the
40 c intantaneous salinities.
41 c psbar - contains the averaged surface pressure field after the call
42 c to subroutine POST_DAILY. Before, it accumulates the
43 c intantaneous surface pressure field.
44 c ubar - contains the averaged zonal velocity component for the
45 c whole integration period. Before, it accumulates the
46 c intantaneous field.
47 c vbar - contains the averaged zonal velocity component for the
48 c whole integration period. Before, it accumulates the
49 c intantaneous field.
50 c tauxbar - contains the averaged zonal velocity component for the
51 c whole integration period. Before, it accumulates the
52 c intantaneous field.
53 c tauybar - contains the averaged zonal velocity component for the
54 c whole integration period. Before, it accumulates the
55 c intantaneous field.
56 c hfluxbar - contains the averaged zonal velocity component for the
57 c whole integration period. Before, it accumulates the
58 c intantaneous field.
59 c sfluxbar - contains the averaged zonal velocity component for the
60 c whole integration period. Before, it accumulates the
61 c intantaneous field.
62
63 common /averages_r/
64 & tbar,
65 & sbar,
66 & psbar,
67 & ubar,
68 & vbar,
69 & wbar,
70 & tauxbar,
71 & tauybar,
72 & hfluxbar,
73 & sfluxbar,
74 & Slmean,
75 & Tlmean,
76 & wlmean,
77 & Sfmean,
78 & Tfmean,
79 & sbar_gen,
80 & tbar_gen,
81 & wfmean
82
83 #if (defined (ALLOW_THETA_COST_CONTRIBUTION) || \
84 defined (ALLOW_CTDT_COST_CONTRIBUTION) || \
85 defined (ALLOW_XBT_COST_CONTRIBUTION) || \
86 defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
87 defined (ALLOW_OBCS_COST_CONTRIBUTION))
88 _RL tbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
89 #else
90 #ifdef ALLOW_SST_COST_CONTRIBUTION
91 _RL tbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
92 #else
93 _RL tbar
94 #endif
95 #endif
96 #ifdef GENERIC_BAR_MONTH
97 _RL tbar_gen (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
98 _RL sbar_gen (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
99 #else
100 _RL tbar_gen
101 _RL sbar_gen
102 #endif
103
104 #if (defined (ALLOW_SALT_COST_CONTRIBUTION) || \
105 defined (ALLOW_CTDS_COST_CONTRIBUTION) || \
106 defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
107 defined (ALLOW_OBCS_COST_CONTRIBUTION))
108 _RL sbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
109 #else
110 #ifdef ALLOW_SSS_COST_CONTRIBUTION
111 _RL sbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
112 #else
113 _RL sbar
114 #endif
115 #endif
116
117 #ifdef ALLOW_SSH_COST_CONTRIBUTION
118 _RL psbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
119 #else
120 _RL psbar
121 #endif
122
123 #if (defined (ALLOW_DRIFTER_COST_CONTRIBUTION) || \
124 defined (ALLOW_OBCS_COST_CONTRIBUTION))
125 _RL ubar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
126 _RL vbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
127 #else
128 _RL ubar
129 _RL vbar
130 #endif
131
132 #ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
133 _RL wbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
134 #else
135 _RL wbar
136 #endif
137
138 #ifdef ALLOW_DRIFT_COST_CONTRIBUTION
139 _RL Tlmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
140 _RL Slmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
141 _RL Tfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
142 _RL Sfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
143 #else
144 _RL Tlmean
145 _RL Slmean
146 _RL Tfmean
147 _RL Sfmean
148 #endif
149
150 #ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
151 _RL wlmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
152 _RL wfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
153 #else
154 _RL wlmean
155 _RL wfmean
156 #endif
157
158 #ifdef ALLOW_SCAT_COST_CONTRIBUTION
159 _RL tauxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
160 _RL tauybar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
161 #else
162 _RL tauxbar
163 _RL tauybar
164 #endif
165
166 #ifdef ALLOW_MEAN_HFLUX_COST_CONTRIBUTION
167 _RL hfluxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
168 #else
169 _RL hfluxbar
170 #endif
171
172 #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
173 _RL sfluxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
174 #else
175 _RL sfluxbar
176 #endif
177
178
179 common /averages_c/
180 & tbarfile,
181 & sbarfile,
182 & psbarfile,
183 & ubarfile,
184 & vbarfile,
185 & wbarfile,
186 & tauxbarfile,
187 & tauybarfile,
188 & hfluxbarfile,
189 & sfluxbarfile
190 character*(MAX_LEN_FNAM) tbarfile
191 character*(MAX_LEN_FNAM) sbarfile
192 character*(MAX_LEN_FNAM) psbarfile
193 character*(MAX_LEN_FNAM) ubarfile
194 character*(MAX_LEN_FNAM) vbarfile
195 character*(MAX_LEN_FNAM) wbarfile
196 character*(MAX_LEN_FNAM) tauxbarfile
197 character*(MAX_LEN_FNAM) tauybarfile
198 character*(MAX_LEN_FNAM) hfluxbarfile
199 character*(MAX_LEN_FNAM) sfluxbarfile
200
201 c file precision and field type
202
203 common /prec_type_cost/
204 & cost_iprec,
205 & cost_yftype
206
207 integer cost_iprec
208 character*(2) cost_yftype
209
210 c ==================================================================
211 c END OF HEADER AVERAGES
212 c ==================================================================
213
214
215
216 c ==================================================================
217 c HEADER COST
218 c ==================================================================
219 c
220 c o Header for model-data comparison.
221 c
222 c The individual cost function contributions are multiplied by
223 c factors mult_"var" which allow to switch off these contributions
224 c without removing them in the adjoint code. This is useful for
225 c doing tests with the adjoint and perhaps useful in assimilation
226 c experiments where individual contributions are successively
227 c switched on. For future applications it would be better to place
228 c the initialisation of the multipliers somewhere else, for example
229 c in a namelist, which is read in at the start of the model.
230 c
231 c started: Christian Eckert eckert@mit.edu 24-Feb-1999
232 c
233 c changed: Christian Eckert eckert@mit.edu
234 c
235 c
236 c ==================================================================
237 c HEADER COST
238 c ==================================================================
239
240
241 c The cost function, its contributions, and multipliers:
242 c ======================================================
243 c
244 c fc - Final cost function.
245 c objf_hflux - Heat flux contribution.
246 c objf_sflux - Salt flux contribution.
247 c objf_tauu - Zonal wind stress contribution.
248 c objf_tauv - Meridional wind stress contribution.
249 c objf_hfluxm - time-mean Heat flux contribution.
250 c objf_sfluxm - time-mean Salt flux contribution.
251 c objf_tauum - time-mean Zonal wind stress contribution.
252 c objf_tauvm - time-mean Meridional wind stress contribution.
253 c objf_hfluxmm - Global time-mean Heat flux contribution.
254 c objf_sfluxmm - Global time-mean Salt flux contribution.
255 c objf_hmean - Mean sea surface height contribution.
256 c objf_h - Residual sea surface height contribution.
257 c objf_temp - Temperature contribution.
258 c objf_salt - Salinity contribution.
259 c objf_temp0 - Initial conditions Temperature contribution.
260 c objf_salt0 - Initial conditions Salinity contribution.
261 c objf_sst - Sea surface temperature contribution.
262 c objf_tmi - Sea surface temperature contribution.
263 c objf_sss - Sea surface salinity contribution.
264 c objf_ctdt - Temperature measurements from Woce CTD
265 c objf_ctds - Salinity measurements from Woce CTD
266 c objf_ctdtclim - Temperature measurements from Woce CTD without timetag
267 c objf_ctdsclim - Salinity measurements from Woce CTD without timetag
268 c objf_xbt - XBT temperature data
269 c objf_argot - ARGO temperature profiles
270 c objf_argos - ARGO salt profiles
271 c objf_scatxm - time-mean zonal SCAT contribution
272 c objf_scatym - time-mean meridional SCAT contribution
273 c objf_scatx - zonal SCAT contribution
274 c objf_scaty - meridional SCAT contribution
275 c objf_kapgm - kappa GM contribution
276 c objf_diffkr - diffusion contribution
277 c objf_theta_ini_fin - final vs. initial theta misfit
278 c objf_salt_ini_fin - final vs. initial salt misfit
279 c
280 c mult_"var" - multipliers for the individual cost
281 c function contributions.
282
283 common /ecco_cost_objf/
284 & objf_hflux,
285 & objf_hfluxm,
286 & objf_hfluxmm,
287 & objf_hfluxsmoo,
288 & objf_sflux,
289 & objf_sfluxm,
290 & objf_sfluxmm,
291 & objf_sfluxsmoo,
292 & objf_tauu,
293 & objf_tauum,
294 & objf_tauusmoo,
295 & objf_tauv,
296 & objf_tauvm,
297 & objf_tauvsmoo,
298 & objf_hmean,
299 & objf_h,
300 & objf_temp,
301 & objf_salt,
302 & objf_temp0,
303 & objf_salt0,
304 & objf_temp0smoo,
305 & objf_salt0smoo,
306 & objf_sst,
307 & objf_tmi,
308 & objf_sss,
309 & objf_ctdt,
310 & objf_ctds,
311 & objf_ctdtclim,
312 & objf_ctdsclim,
313 & objf_xbt,
314 & objf_argot,
315 & objf_argos,
316 & objf_drift,
317 & objf_tdrift,
318 & objf_sdrift,
319 & objf_wdrift,
320 & objf_scatx,
321 & objf_scaty,
322 & objf_scatxm,
323 & objf_scatym,
324 & objf_atemp,
325 & objf_aqh,
326 & objf_precip,
327 & objf_swflux,
328 & objf_swdown,
329 & objf_uwind,
330 & objf_vwind,
331 & objf_atempm,
332 & objf_aqhm,
333 & objf_precipm,
334 & objf_swfluxm,
335 & objf_swdownm,
336 & objf_uwindm,
337 & objf_vwindm,
338 & objf_atempsmoo,
339 & objf_aqhsmoo,
340 & objf_precipsmoo,
341 & objf_swfluxsmoo,
342 & objf_swdownsmoo,
343 & objf_uwindsmoo,
344 & objf_vwindsmoo,
345 & objf_obcsn,
346 & objf_obcss,
347 & objf_obcsw,
348 & objf_obcse,
349 & objf_obcsvol,
350 & objf_curmtr,
351 & objf_ageos,
352 & objf_kapgm,
353 & objf_diffkr,
354 & objf_theta_ini_fin,
355 & objf_salt_ini_fin,
356 & objf_eddytau
357
358 _RL objf_hflux (nsx,nsy)
359 _RL objf_hfluxm (nsx,nsy)
360 _RL objf_hfluxmm(nsx,nsy)
361 _RL objf_hfluxsmoo (nsx,nsy)
362 _RL objf_sflux (nsx,nsy)
363 _RL objf_sfluxm (nsx,nsy)
364 _RL objf_sfluxmm(nsx,nsy)
365 _RL objf_sfluxsmoo (nsx,nsy)
366 _RL objf_tauu (nsx,nsy)
367 _RL objf_tauum (nsx,nsy)
368 _RL objf_tauusmoo (nsx,nsy)
369 _RL objf_tauv (nsx,nsy)
370 _RL objf_tauvm (nsx,nsy)
371 _RL objf_tauvsmoo (nsx,nsy)
372 _RL objf_hmean
373 _RL objf_h (nsx,nsy)
374 _RL objf_temp (nsx,nsy)
375 _RL objf_salt (nsx,nsy)
376 _RL objf_temp0(nsx,nsy)
377 _RL objf_salt0(nsx,nsy)
378 _RL objf_temp0smoo(nsx,nsy)
379 _RL objf_salt0smoo(nsx,nsy)
380 _RL objf_sst (nsx,nsy)
381 _RL objf_tmi (nsx,nsy)
382 _RL objf_sss (nsx,nsy)
383 _RL objf_ctdt (nsx,nsy)
384 _RL objf_ctds (nsx,nsy)
385 _RL objf_ctdtclim (nsx,nsy)
386 _RL objf_ctdsclim (nsx,nsy)
387 _RL objf_xbt (nsx,nsy)
388 _RL objf_argot(nsx,nsy)
389 _RL objf_argos(nsx,nsy)
390 _RL objf_drift(nsx,nsy)
391 _RL objf_tdrift(nsx,nsy)
392 _RL objf_sdrift(nsx,nsy)
393 _RL objf_wdrift(nsx,nsy)
394 _RL objf_scatx(nsx,nsy)
395 _RL objf_scaty(nsx,nsy)
396 _RL objf_scatxm(nsx,nsy)
397 _RL objf_scatym(nsx,nsy)
398 _RL objf_atemp(nsx,nsy)
399 _RL objf_aqh (nsx,nsy)
400 _RL objf_precip(nsx,nsy)
401 _RL objf_swflux(nsx,nsy)
402 _RL objf_swdown(nsx,nsy)
403 _RL objf_uwind(nsx,nsy)
404 _RL objf_vwind(nsx,nsy)
405 _RL objf_atempm(nsx,nsy)
406 _RL objf_aqhm (nsx,nsy)
407 _RL objf_precipm(nsx,nsy)
408 _RL objf_swfluxm(nsx,nsy)
409 _RL objf_swdownm(nsx,nsy)
410 _RL objf_uwindm(nsx,nsy)
411 _RL objf_vwindm(nsx,nsy)
412 _RL objf_atempsmoo(nsx,nsy)
413 _RL objf_aqhsmoo (nsx,nsy)
414 _RL objf_precipsmoo(nsx,nsy)
415 _RL objf_swfluxsmoo(nsx,nsy)
416 _RL objf_swdownsmoo(nsx,nsy)
417 _RL objf_uwindsmoo(nsx,nsy)
418 _RL objf_vwindsmoo(nsx,nsy)
419 _RL objf_obcsn(nsx,nsy)
420 _RL objf_obcss(nsx,nsy)
421 _RL objf_obcsw(nsx,nsy)
422 _RL objf_obcse(nsx,nsy)
423 _RL objf_obcsvol
424 _RL objf_curmtr(nsx,nsy)
425 _RL objf_ageos(nsx,nsy)
426 _RL objf_kapgm(nsx,nsy)
427 _RL objf_diffkr(nsx,nsy)
428 _RL objf_theta_ini_fin(nsx,nsy)
429 _RL objf_salt_ini_fin(nsx,nsy)
430 _RL objf_eddytau(nsx,nsy)
431
432 common /ecco_cost_num/
433 & num_hflux,
434 & num_hfluxm,
435 & num_hfluxmm,
436 & num_sflux,
437 & num_sfluxm,
438 & num_sfluxmm,
439 & num_tauu,
440 & num_tauum,
441 & num_tauv,
442 & num_tauvm,
443 & num_hmean,
444 & num_h,
445 & num_temp,
446 & num_salt,
447 & num_temp0,
448 & num_salt0,
449 & num_sst,
450 & num_tmi,
451 & num_sss,
452 & num_ctdt,
453 & num_ctds,
454 & num_ctdtclim,
455 & num_ctdsclim,
456 & num_xbt,
457 & num_argot,
458 & num_argos,
459 & num_drift,
460 & num_tdrift,
461 & num_sdrift,
462 & num_wdrift,
463 & num_scatx,
464 & num_scaty,
465 & num_scatxm,
466 & num_scatym,
467 & num_atemp,
468 & num_aqh,
469 & num_precip,
470 & num_swflux,
471 & num_swdown,
472 & num_uwind,
473 & num_vwind,
474 & num_atempm,
475 & num_aqhm,
476 & num_precipm,
477 & num_swfluxm,
478 & num_swdownm,
479 & num_uwindm,
480 & num_vwindm,
481 & num_obcsn,
482 & num_obcss,
483 & num_obcsw,
484 & num_obcse,
485 & num_obcsvol,
486 & num_curmtr,
487 & num_ageos,
488 & num_kapgm,
489 & num_diffkr,
490 & num_theta_ini_fin,
491 & num_salt_ini_fin,
492 & num_eddytau
493
494 _RL num_hflux (nsx,nsy)
495 _RL num_hfluxm (nsx,nsy)
496 _RL num_hfluxmm(nsx,nsy)
497 _RL num_sflux (nsx,nsy)
498 _RL num_sfluxm (nsx,nsy)
499 _RL num_sfluxmm(nsx,nsy)
500 _RL num_tauu (nsx,nsy)
501 _RL num_tauum (nsx,nsy)
502 _RL num_tauv (nsx,nsy)
503 _RL num_tauvm (nsx,nsy)
504 _RL num_hmean
505 _RL num_h (nsx,nsy)
506 _RL num_temp (nsx,nsy)
507 _RL num_salt (nsx,nsy)
508 _RL num_temp0(nsx,nsy)
509 _RL num_salt0(nsx,nsy)
510 _RL num_sst (nsx,nsy)
511 _RL num_tmi (nsx,nsy)
512 _RL num_sss (nsx,nsy)
513 _RL num_ctdt (nsx,nsy)
514 _RL num_ctds (nsx,nsy)
515 _RL num_ctdtclim (nsx,nsy)
516 _RL num_ctdsclim (nsx,nsy)
517 _RL num_xbt (nsx,nsy)
518 _RL num_argot(nsx,nsy)
519 _RL num_argos(nsx,nsy)
520 _RL num_drift(nsx,nsy)
521 _RL num_tdrift(nsx,nsy)
522 _RL num_sdrift(nsx,nsy)
523 _RL num_wdrift(nsx,nsy)
524 _RL num_scatx(nsx,nsy)
525 _RL num_scaty(nsx,nsy)
526 _RL num_scatxm(nsx,nsy)
527 _RL num_scatym(nsx,nsy)
528 _RL num_atemp(nsx,nsy)
529 _RL num_aqh (nsx,nsy)
530 _RL num_precip(nsx,nsy)
531 _RL num_swflux(nsx,nsy)
532 _RL num_swdown(nsx,nsy)
533 _RL num_uwind(nsx,nsy)
534 _RL num_vwind(nsx,nsy)
535 _RL num_atempm(nsx,nsy)
536 _RL num_aqhm (nsx,nsy)
537 _RL num_precipm(nsx,nsy)
538 _RL num_swfluxm(nsx,nsy)
539 _RL num_swdownm(nsx,nsy)
540 _RL num_uwindm(nsx,nsy)
541 _RL num_vwindm(nsx,nsy)
542 _RL num_obcsn(nsx,nsy)
543 _RL num_obcss(nsx,nsy)
544 _RL num_obcsw(nsx,nsy)
545 _RL num_obcse(nsx,nsy)
546 _RL num_obcsvol
547 _RL num_curmtr(nsx,nsy)
548 _RL num_ageos(nsx,nsy)
549 _RL num_kapgm(nsx,nsy)
550 _RL num_diffkr(nsx,nsy)
551 _RL num_theta_ini_fin(nsx,nsy)
552 _RL num_salt_ini_fin(nsx,nsy)
553 _RL num_eddytau(nsx,nsy)
554
555 common /ecco_cost_aux_r/
556 & mult_hflux,
557 & mult_sflux,
558 & mult_tauu,
559 & mult_tauv,
560 & mult_hmean,
561 & mult_h,
562 & mult_temp,
563 & mult_salt,
564 & mult_temp0,
565 & mult_salt0,
566 & mult_sst,
567 & mult_tmi,
568 & mult_sss,
569 & mult_ctdt,
570 & mult_ctds,
571 & mult_ctdtclim,
572 & mult_ctdsclim,
573 & mult_xbt,
574 & mult_argot,
575 & mult_argos,
576 & mult_drift,
577 & mult_tdrift,
578 & mult_sdrift,
579 & mult_wdrift,
580 & mult_scatx,
581 & mult_scaty,
582 & mult_atemp,
583 & mult_aqh,
584 & mult_precip,
585 & mult_swflux,
586 & mult_swdown,
587 & mult_uwind,
588 & mult_vwind,
589 & mult_obcsn,
590 & mult_obcss,
591 & mult_obcsw,
592 & mult_obcse,
593 & mult_obcsvol,
594 & mult_curmtr,
595 & mult_ageos,
596 & mult_kapgm,
597 & mult_diffkr,
598 & mult_ini_fin,
599 & mult_eddytau,
600 & mult_smooth_ic,
601 & mult_smooth_bc
602
603 _RL mult_hflux
604 _RL mult_sflux
605 _RL mult_tauu
606 _RL mult_tauv
607 _RL mult_hmean
608 _RL mult_h
609 _RL mult_temp
610 _RL mult_salt
611 _RL mult_temp0
612 _RL mult_salt0
613 _RL mult_sst
614 _RL mult_tmi
615 _RL mult_sss
616 _RL mult_ctdt
617 _RL mult_ctds
618 _RL mult_ctdtclim
619 _RL mult_ctdsclim
620 _RL mult_xbt
621 _RL mult_argot
622 _RL mult_argos
623 _RL mult_drift
624 _RL mult_tdrift
625 _RL mult_sdrift
626 _RL mult_wdrift
627 _RL mult_scatx
628 _RL mult_scaty
629 _RL mult_atemp
630 _RL mult_aqh
631 _RL mult_precip
632 _RL mult_swflux
633 _RL mult_swdown
634 _RL mult_uwind
635 _RL mult_vwind
636 _RL mult_obcsn
637 _RL mult_obcss
638 _RL mult_obcsw
639 _RL mult_obcse
640 _RL mult_obcsvol
641 _RL mult_curmtr
642 _RL mult_ageos
643 _RL mult_kapgm
644 _RL mult_diffkr
645 _RL mult_ini_fin
646 _RL mult_eddytau
647 _RL mult_smooth_ic
648 _RL mult_smooth_bc
649
650 c Record counters relevant for the cost function evaluation.
651 c ==========================================================
652 c
653 c nmonsrec - number of monthly records that will be generated by
654 c the current model integration.
655 c ndaysrec - number of daily records that will be generated by
656 c the current model integration.
657
658 common /ecco_cost_i/
659 & nmonsrec,
660 & ndaysrec,
661 & nnztbar,
662 & nnzsbar
663 integer nmonsrec
664 integer ndaysrec
665 integer nnztbar
666 integer nnzsbar
667
668
669 c Data files for the weights used in the cost function:
670 c =====================================================
671 c
672 c hflux_errfile - heat flux error.
673 c sflux_errfile - salt flux error.
674 c tauu_errfile - zonal wind stress error.
675 c tauum_errfile - zonal wind stress error.
676 c tauv_errfile - meridional wind stress error.
677 c tauvm_errfile - meridional wind stress error.
678 c tscatx_errfile - zonal wind stress error.
679 c tscaty_errfile - meridional wind stress error.
680 c data_errfile - weights for theta, salt, and SST
681 c geoid_errfile - geoid error.
682 c geoid_covariancefile - geoid error covariance.
683 c ssh_errfile - sea surface height error.
684 c ctdt_errfile - CTD temperature error.
685 c ctds_errfile - CTD salinity error.
686 c drift_errfile - drifter error.
687 c salterrfile - representation error due unresolved eddies
688 c temperrfile - representation error due unresolved eddies
689 c velerrfile - representation error
690
691 common /ecco_cost_c/
692 & hflux_errfile,
693 & hfluxm_errfile,
694 & sflux_errfile,
695 & sfluxm_errfile,
696 & tauu_errfile,
697 & tauum_errfile,
698 & tauv_errfile,
699 & tauvm_errfile,
700 & scatx_errfile,
701 & scaty_errfile,
702 & data_errfile,
703 & geoid_errfile,
704 & geoid_covariancefile,
705 & ssh_errfile,
706 & ctdt_errfile,
707 & ctds_errfile,
708 & drift_errfile,
709 & udrifterrfile,
710 & vdrifterrfile,
711 & salterrfile,
712 & temperrfile,
713 & velerrfile,
714 & salt0errfile,
715 & temp0errfile,
716 & vel0errfile,
717 & atemp_errfile,
718 & aqh_errfile,
719 & precip_errfile,
720 & swflux_errfile,
721 & swdown_errfile,
722 & uwind_errfile,
723 & vwind_errfile
724 character*(MAX_LEN_FNAM) hflux_errfile
725 character*(MAX_LEN_FNAM) sflux_errfile
726 character*(MAX_LEN_FNAM) tauu_errfile
727 character*(MAX_LEN_FNAM) tauv_errfile
728 character*(MAX_LEN_FNAM) hfluxm_errfile
729 character*(MAX_LEN_FNAM) sfluxm_errfile
730 character*(MAX_LEN_FNAM) tauum_errfile
731 character*(MAX_LEN_FNAM) tauvm_errfile
732 character*(MAX_LEN_FNAM) scatx_errfile
733 character*(MAX_LEN_FNAM) scaty_errfile
734 character*(MAX_LEN_FNAM) data_errfile
735 character*(MAX_LEN_FNAM) geoid_errfile
736 character*(MAX_LEN_FNAM) geoid_covariancefile
737 character*(MAX_LEN_FNAM) ssh_errfile
738 character*(MAX_LEN_FNAM) ctdt_errfile
739 character*(MAX_LEN_FNAM) ctds_errfile
740 character*(MAX_LEN_FNAM) drift_errfile
741 character*(MAX_LEN_FNAM) udrifterrfile
742 character*(MAX_LEN_FNAM) vdrifterrfile
743 character*(MAX_LEN_FNAM) salterrfile
744 character*(MAX_LEN_FNAM) temperrfile
745 character*(MAX_LEN_FNAM) velerrfile
746 character*(MAX_LEN_FNAM) salt0errfile
747 character*(MAX_LEN_FNAM) temp0errfile
748 character*(MAX_LEN_FNAM) vel0errfile
749 character*(MAX_LEN_FNAM) atemp_errfile
750 character*(MAX_LEN_FNAM) aqh_errfile
751 character*(MAX_LEN_FNAM) precip_errfile
752 character*(MAX_LEN_FNAM) swflux_errfile
753 character*(MAX_LEN_FNAM) swdown_errfile
754 character*(MAX_LEN_FNAM) uwind_errfile
755 character*(MAX_LEN_FNAM) vwind_errfile
756
757
758 c Arrays where the weights are stored:
759 c ====================================
760 c
761 c cosphi - cosine of latitude.
762 c whflux - weight for heat flux.
763 c wsflux - weight for salt flux.
764 c wtauu - weight for zonal wind stress.
765 c wtauu - weight for meridional wind stress.
766 c wscatx - weight for zonal scat stress.
767 c wscaty - weight for meridional scat stress.
768 c wtheta - weight for temperature.
769 c wtheta2 - representation error due to unresolved eddies
770 c wsst - weight for sea surface temperature.
771 c wsss - weight for sea surface salinity.
772 c wsalt - weight for salinity.
773 c wsalt2 - representation error due to unresolved eddies
774 c wtp - weight for TOPEX/POSEIDON data.
775 c wers - weight for ERS data.
776 c wp - weight for geoid.
777 c wctdt - weight for CTD temperature.
778 c wctds - weight for CTD salinity.
779 c wudrift - weight for mean zonal velocity from drifters.
780 c wvdrift - weight for mean meridional velocity from drifters.
781
782 common /ecco_cost_weights_r/
783 & frame,
784 & cosphi,
785 & whflux,wsflux,wtauu,wtauv,
786 & watemp,waqh,wprecip,wswflux,wswdown,
787 & wuwind,wvwind,
788 & wscatx,wscaty,
789 & wtheta,wtheta2,wthetaLev,
790 & wsalt,wsalt2,wsaltLev,
791 & wsst,wsss,
792 & wtp,wers,wgfo,
793 & wp,
794 & wctdt,wctds,
795 & wudrift,wvdrift,
796 & whfluxmm,wsfluxmm,
797 & wcurrent,wcurrent2,
798 & wcurrentLev,wbaro
799
800 _RL frame (1-olx:snx+olx,1-oly:sny+oly )
801 _RL cosphi (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
802 _RL whflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
803 _RL whfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
804 _RL whfluxmm(1-olx:snx+olx,1-oly:sny+oly)
805 _RL wsflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
806 _RL wsfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
807 _RL wsfluxmm(1-olx:snx+olx,1-oly:sny+oly)
808 _RL wtauu (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
809 _RL wtauv (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
810 _RL wtauum (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
811 _RL wtauvm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
812 _RL wscatx (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
813 _RL wscaty (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
814 _RL watemp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
815 _RL waqh (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
816 _RL wprecip (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
817 _RL wswflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
818 _RL wswdown (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
819 _RL wuwind (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
820 _RL wvwind (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
821 _RL wtheta ( nr,nsx,nsy)
822 _RL wsalt ( nr,nsx,nsy)
823 _RL wtheta2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
824 _RL wsalt2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
825 _RL wthetaLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
826 _RL wsaltLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
827 _RL wsst (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
828 _RL wsss (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
829 _RL wtp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
830 _RL wers (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
831 _RL wgfo (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
832 _RL wp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
833 _RL wctdt ( nr,nsx,nsy)
834 _RL wctds ( nr,nsx,nsy)
835 _RL wudrift (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
836 _RL wvdrift (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
837 _RL wcurrent( nr,nsx,nsy)
838 _RL wcurrent2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
839 _RL wcurrentLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
840 _RL wbaro
841
842 common /ecco_cost_weights_0_r/
843 & whflux0, wsflux0, wtau0,
844 & watemp0, waqh0, wprecip0, wswflux0, wswdown0, wwind0
845 _RL whflux0
846 _RL wsflux0
847 _RL wtau0
848 _RL watemp0
849 _RL waqh0
850 _RL wprecip0
851 _RL wswflux0
852 _RL wswdown0
853 _RL wwind0
854
855 common /ecco_cost_weights_mean_r/
856 & wmean_hflux, wmean_sflux, wmean_tau,
857 & wmean_atemp, wmean_aqh,
858 & wmean_precip, wmean_swflux, wmean_swdown, wmean_wind
859 _RL wmean_hflux
860 _RL wmean_sflux
861 _RL wmean_tau
862 _RL wmean_atemp
863 _RL wmean_aqh
864 _RL wmean_precip
865 _RL wmean_swflux
866 _RL wmean_swdown
867 _RL wmean_wind
868
869 common /ecco_cost_weights_2_r/
870 & whflux2,wsflux2,wtauu2,wtauv2
871 _RL whflux2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
872 _RL wsflux2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
873 _RL wtauu2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
874 _RL wtauv2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
875
876
877
878 #if (defined (ALLOW_OBCSN_COST_CONTRIBUTION) || \
879 defined (ALLOW_OBCSN_CONTROL))
880 common /ecco_cost_weights_obcsn/
881 & wobcsn, wobcsnLev
882 _RL wobcsn ( nr,nobcs)
883 _RL wobcsnLev (1-olx:snx+olx,nr,nsx,nsy,nobcs)
884 #endif
885 #if (defined (ALLOW_OBCSS_COST_CONTRIBUTION) || \
886 defined (ALLOW_OBCSS_CONTROL))
887 common /ecco_cost_weights_obcss/
888 & wobcss, wobcssLev
889 _RL wobcss ( nr,nobcs)
890 _RL wobcssLev (1-olx:snx+olx,nr,nsx,nsy,nobcs)
891 #endif
892 #if (defined (ALLOW_OBCSW_COST_CONTRIBUTION) || \
893 defined (ALLOW_OBCSW_CONTROL))
894 common /ecco_cost_weights_obcsw/
895 & wobcsw, wobcswLev
896 _RL wobcsw ( nr,nobcs)
897 _RL wobcswLev (1-oly:sny+oly,nr,nsx,nsy,nobcs)
898 #endif
899 #if (defined (ALLOW_OBCSE_COST_CONTRIBUTION) || \
900 defined (ALLOW_OBCSE_CONTROL))
901 common /ecco_cost_weights_obcse/
902 & wobcse, wobcseLev
903 _RL wobcse ( nr,nobcs)
904 _RL wobcseLev (1-oly:sny+oly,nr,nsx,nsy,nobcs)
905 #endif
906
907
908 c Arrays that contain observations for the model-data comparison:
909 c ===============================================================
910 c
911 c tdat - reference temperature data.
912 c scatxdat - reference zonal wind stress.
913 c scatydat - reference meridional wind stress.
914 c sstdat - reference sea surface temperature data.
915 c tmidat - reference TMI sea surface temperature data.
916 c sssdat - reference sea surface temperature data.
917 c tauxmask - mask for reference wind stress data.
918 c tauymask - mask for reference wind stress data.
919 c scatxmask - mask for scat wind stress data.
920 c scatymask - mask for scat wind stress data.
921 c sstmask - mask for reference sea surface temperature data.
922 c tmimask - mask for reference sea surface temperature data.
923 c sssmask - mask for reference sea surface temperature data.
924 c sdat - reference salinity data.
925 c tpmean - reference mean sea surface height data.
926 c tpmeanmask - mask for reference mean sea surface height data.
927 c tpobs - TOPEX/POSEIDON data.
928 c tpmask - mask for TOPEX/POSEIDON data.
929 c ersobs - ERS data.
930 c ersmask - mask for ERS data.
931 c ctdtobs - CTD temperature data
932 c ctdsobs - CTD salinity data
933 c xbtobs - XBT data
934 c argot - ARGO temperature data
935 c argos - ARGO salt data
936 c udriftdat - drifters zonal velocities
937 c vdriftdat - drifters meridional velocities
938
939 common /ecco_cost_data_r/
940 & tdat,
941 & scatxdat,
942 & scatydat,
943 & sstdat,
944 & tmidat,
945 & sssdat,
946 & sstmask,
947 & tmimask,
948 & sssmask,
949 & tauxmask,
950 & tauymask,
951 & scatxmask,
952 & scatymask,
953 & sdat,
954 & tpmean,
955 & tpmeanmask,
956 & tpobs,
957 & tpmask,
958 & ersobs,
959 & ersmask,
960 & gfoobs,
961 & gfomask,
962 & ctdtobs,
963 & ctdsobs,
964 & xbtobs,
965 & argotobs,
966 & argosobs,
967 & udriftdat,
968 & vdriftdat,
969 & curmtruobs,
970 & curmtrvobs
971
972 _RL tdat (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
973 _RL scatxdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
974 _RL scatydat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
975 _RL sstdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
976 _RL tmidat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
977 _RL sssdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
978 _RL tauxmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
979 _RL tauymask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
980 _RL scatxmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
981 _RL scatymask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
982 _RL sstmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
983 _RL tmimask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
984 _RL sssmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
985 _RL sdat (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
986 _RL tpmean (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
987 _RL tpmeanmask(1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
988 _RL tpobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
989 _RL tpmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
990 _RL ersobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
991 _RL ersmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
992 _RL gfoobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
993 _RL gfomask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
994 _RL ctdtobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
995 _RL ctdsobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
996 _RL xbtobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
997 _RL argotobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
998 _RL argosobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
999 _RL udriftdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1000 _RL vdriftdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1001 _RL curmtruobs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1002 _RL curmtrvobs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1003
1004
1005 c Files that contain obervations:
1006 c ===============================
1007 c
1008 c tdatfile - reference data file for temperature.
1009 c sdatfile - reference data file for salinity.
1010 c scatxdatfile - reference data file for zonal wind stress.
1011 c scatydatfile - reference data file for meridional wind stress.
1012 c sstdatfile - reference data file for sea surface temperature.
1013 c tmidatfile - reference data file for TMI sea surface temperature.
1014 c topexmeanfile - reference data file for mean sea surface height.
1015 c topexfile - reference data file for sea surface height data
1016 c (TOPEX/POSEIDON).
1017 c ersfile - reference data file for sea surface height data
1018 c (ERS).
1019 c ctdtfile, ctdsfile- reference data file for temperature and salinity
1020 c from CTD
1021 c ctdtclimfile, ctdsclimfile- reference data file for temperature
1022 c and salinity from CTD with out timetag
1023 c xbtfile - reference data file for xbt
1024 c ARGOtfile - reference data file for ARGO
1025 c ARGOsfile - reference data file for ARGO
1026 c driftfile - reference data file for drifter's mean velocities
1027
1028 common /ecco_cost_data_c/
1029 & tdatfile,
1030 & sdatfile,
1031 & scatxdatfile,
1032 & scatydatfile,
1033 & sstdatfile,
1034 & tmidatfile,
1035 & sssdatfile,
1036 & topexmeanfile,
1037 & topexfile,
1038 & ersfile,
1039 & gfofile,
1040 & ctdtfile,
1041 & ctdsfile,
1042 & ctdtclimfile,
1043 & ctdsclimfile,
1044 & xbtfile,
1045 & argotfile,
1046 & argosfile,
1047 & udriftfile,
1048 & vdriftfile,
1049 & curmtrufile,
1050 & curmtrvfile
1051
1052 character*(MAX_LEN_FNAM) tdatfile
1053 character*(MAX_LEN_FNAM) sdatfile
1054 character*(MAX_LEN_FNAM) scatxdatfile
1055 character*(MAX_LEN_FNAM) scatydatfile
1056 character*(MAX_LEN_FNAM) sstdatfile
1057 character*(MAX_LEN_FNAM) tmidatfile
1058 character*(MAX_LEN_FNAM) sssdatfile
1059 character*(MAX_LEN_FNAM) topexmeanfile
1060 character*(MAX_LEN_FNAM) topexfile
1061 character*(MAX_LEN_FNAM) ersfile
1062 character*(MAX_LEN_FNAM) gfofile
1063 character*(MAX_LEN_FNAM) ctdtfile
1064 character*(MAX_LEN_FNAM) ctdsfile
1065 character*(MAX_LEN_FNAM) ctdtclimfile
1066 character*(MAX_LEN_FNAM) ctdsclimfile
1067 character*(MAX_LEN_FNAM) xbtfile
1068 character*(MAX_LEN_FNAM) argotfile
1069 character*(MAX_LEN_FNAM) argosfile
1070 character*(MAX_LEN_FNAM) argofile
1071 character*(MAX_LEN_FNAM) udriftfile
1072 character*(MAX_LEN_FNAM) vdriftfile
1073 character*(MAX_LEN_FNAM) curmtrufile
1074 character*(MAX_LEN_FNAM) curmtrvfile
1075
1076
1077 c Flags used in the model-data comparison:
1078 c ========================================
1079 c
1080 c using_ers - flag that indicates the use of ERS data
1081
1082 common /ecco_cost_data_flags/
1083 & using_topex,
1084 & using_ers,
1085 & using_gfo
1086 logical using_topex
1087 logical using_ers
1088 logical using_gfo
1089
1090 c Calendar information for the observations:
1091 c ==========================================
1092 c
1093 c sststartdate - start date of the sea surface temperature data.
1094 c tmistartdate - start date of the sea surface temperature data.
1095 c topexstartdate - start date of the sea surface height data.
1096 c ersstartdate - start date of the sea surface height data.
1097 c sshperiod - sampling interval for the sea surface height data.
1098
1099 common /ecco_cost_data_times_i/
1100 & scatxstartdate,
1101 & scatystartdate,
1102 & sststartdate,
1103 & argotstartdate,
1104 & argosstartdate,
1105 & tmistartdate,
1106 & sssstartdate,
1107 & topexstartdate,
1108 & ersstartdate,
1109 & gfostartdate
1110 integer scatxstartdate(4)
1111 integer scatystartdate(4)
1112 integer sststartdate(4)
1113 integer argotstartdate(4)
1114 integer argosstartdate(4)
1115 integer tmistartdate(4)
1116 integer sssstartdate(4)
1117 integer topexstartdate(4)
1118 integer ersstartdate(4)
1119 integer gfostartdate(4)
1120
1121 common /ecco_cost_data_aux_i/
1122 & tmistartdate1,
1123 & tmistartdate2,
1124 & sststartdate1,
1125 & sststartdate2,
1126 & sssstartdate1,
1127 & sssstartdate2,
1128 & argotstartdate1,
1129 & argotstartdate2,
1130 & argosstartdate1,
1131 & argosstartdate2,
1132 & topexstartdate1,
1133 & topexstartdate2,
1134 & ersstartdate1,
1135 & ersstartdate2,
1136 & gfostartdate1,
1137 & gfostartdate2,
1138 & scatstartdate1,
1139 & scatstartdate2
1140
1141 integer tmistartdate1
1142 integer tmistartdate2
1143 integer sststartdate1
1144 integer sststartdate2
1145 integer sssstartdate1
1146 integer sssstartdate2
1147 integer argotstartdate1
1148 integer argotstartdate2
1149 integer argosstartdate1
1150 integer argosstartdate2
1151 integer topexstartdate1
1152 integer topexstartdate2
1153 integer ersstartdate1
1154 integer ersstartdate2
1155 integer gfostartdate1
1156 integer gfostartdate2
1157 integer scatstartdate1
1158 integer scatstartdate2
1159
1160 common /ecco_cost_data_times_r/
1161 & topexperiod,
1162 & ersperiod,
1163 & gfoperiod,
1164 & scatperiod
1165 _RL topexperiod
1166 _RL ersperiod
1167 _RL gfoperiod
1168 _RL scatperiod
1169
1170 c ==================================================================
1171 c END OF HEADER COST
1172 c ==================================================================
1173
1174

  ViewVC Help
Powered by ViewVC 1.1.22