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

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

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


Revision 1.35 - (hide annotations) (download)
Fri Mar 13 01:58:37 2009 UTC (15 years, 2 months ago) by heimbach
Branch: MAIN
Changes since 1.34: +20 -3 lines
File MIME type: text/plain
Modify cost calculation for SSH anomalies:
* Model mean is sampled according to altimeter data for each instrument
* Period for computing model mean can be prescribed through daily flags;
  corresponding daily flag time series provided in files
  tpTimeMaskFile, ersTimeMaskFile, gfoTimeMaskFile
NOT YET TESTED.

1 heimbach 1.35 C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost.h,v 1.34 2009/02/20 15:27:50 heimbach Exp $
2 jmc 1.30 C $Name: $
3 heimbach 1.1
4     c ==================================================================
5     c HEADER AVERAGES
6     c ==================================================================
7     c
8     c o Header for averaged temperature, salinity, and surface pressure
9     c fields and counters associated with the averaging.
10     c
11     c started: Christian Eckert eckert@mit.edu 30-Jun-1999
12 heimbach 1.2 c
13 heimbach 1.1 c ==================================================================
14     c HEADER AVERAGES
15     c ==================================================================
16    
17     c Averaging counters:
18     c ===================
19     c
20     c sum1day - counter for the daily averaging
21     c sum1mon - counter for the monthly averaging
22     c dayrec - number of averaged surface pressure records.
23     c monrec - number of averaged theta and salinity records.
24    
25 jmc 1.30 common /average_i/
26 heimbach 1.21 & sum1day,sum1mon,sum1year,
27     & dayrec,monrec,yearrec
28 heimbach 1.1 integer sum1day
29     integer sum1mon
30 heimbach 1.21 integer sum1year
31 heimbach 1.1 integer dayrec
32     integer monrec
33 heimbach 1.21 integer yearrec
34 heimbach 1.1
35 gforget 1.26 c Number of Generic Cost terms:
36     c =============================
37     INTEGER NGENCOST
38     PARAMETER ( NGENCOST=10 )
39 heimbach 1.1
40 heimbach 1.35 c Number of days: (hard-coded to set up some vector dimensions
41     c =============================
42     INTEGER maxNumDays
43     PARAMETER ( maxNumDays = 5844 )
44    
45 heimbach 1.1 c Averaged Fields:
46     c ================
47     c
48     c tbar - contains the averaged temperature field after the call
49     c to subroutine POST_MONTHLY. Before, it accumulates the
50     c intantaneous temperatures.
51     c sbar - contains the averaged salinity field after the call
52     c to subroutine POST_MONTHLY. Before, it accumulates the
53     c intantaneous salinities.
54     c psbar - contains the averaged surface pressure field after the call
55     c to subroutine POST_DAILY. Before, it accumulates the
56     c intantaneous surface pressure field.
57 jmc 1.30 c ubar - contains the averaged zonal velocity component for the
58 heimbach 1.1 c whole integration period. Before, it accumulates the
59     c intantaneous field.
60     c vbar - contains the averaged zonal velocity component for the
61     c whole integration period. Before, it accumulates the
62     c intantaneous field.
63     c tauxbar - contains the averaged zonal velocity component for the
64     c whole integration period. Before, it accumulates the
65     c intantaneous field.
66     c tauybar - contains the averaged zonal velocity component for the
67     c whole integration period. Before, it accumulates the
68     c intantaneous field.
69     c hfluxbar - contains the averaged zonal velocity component for the
70     c whole integration period. Before, it accumulates the
71     c intantaneous field.
72     c sfluxbar - contains the averaged zonal velocity component for the
73     c whole integration period. Before, it accumulates the
74     c intantaneous field.
75    
76 jmc 1.30 common /averages_r/
77 heimbach 1.1 & tbar,
78     & sbar,
79 heimbach 1.33 & sstbar,
80 heimbach 1.1 & psbar,
81 heimbach 1.28 & bpbar,
82 heimbach 1.1 & ubar,
83     & vbar,
84     & wbar,
85     & tauxbar,
86     & tauybar,
87     & hfluxbar,
88     & sfluxbar,
89 jmc 1.30 & Slmean,
90 heimbach 1.1 & Tlmean,
91     & wlmean,
92     & Sfmean,
93 jmc 1.30 & Tfmean,
94 heimbach 1.2 & sbar_gen,
95     & tbar_gen,
96     & wfmean
97 heimbach 1.1
98     #if (defined (ALLOW_THETA_COST_CONTRIBUTION) || \
99     defined (ALLOW_CTDT_COST_CONTRIBUTION) || \
100     defined (ALLOW_XBT_COST_CONTRIBUTION) || \
101     defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
102     defined (ALLOW_OBCS_COST_CONTRIBUTION))
103     _RL tbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
104     #else
105 heimbach 1.2 #ifdef ALLOW_SST_COST_CONTRIBUTION
106     _RL tbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
107     #else
108 heimbach 1.1 _RL tbar
109     #endif
110 heimbach 1.2 #endif
111     #ifdef GENERIC_BAR_MONTH
112     _RL tbar_gen (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
113     _RL sbar_gen (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
114     #else
115     _RL tbar_gen
116     _RL sbar_gen
117     #endif
118 heimbach 1.1
119 heimbach 1.33 #ifdef ALLOW_SEAICE_COST_AREASST
120     _RL sstbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
121     #else
122     _RL sstbar
123     #endif
124    
125 heimbach 1.1 #if (defined (ALLOW_SALT_COST_CONTRIBUTION) || \
126     defined (ALLOW_CTDS_COST_CONTRIBUTION) || \
127     defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
128     defined (ALLOW_OBCS_COST_CONTRIBUTION))
129     _RL sbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
130     #else
131 heimbach 1.2 #ifdef ALLOW_SSS_COST_CONTRIBUTION
132     _RL sbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
133     #else
134 heimbach 1.1 _RL sbar
135     #endif
136     #endif
137    
138     #ifdef ALLOW_SSH_COST_CONTRIBUTION
139     _RL psbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
140     #else
141     _RL psbar
142     #endif
143    
144 heimbach 1.28 #ifdef ALLOW_BP_COST_CONTRIBUTION
145     _RL bpbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
146     #else
147     _RL bpbar
148     #endif
149    
150 heimbach 1.1 #if (defined (ALLOW_DRIFTER_COST_CONTRIBUTION) || \
151 heimbach 1.2 defined (ALLOW_OBCS_COST_CONTRIBUTION))
152 heimbach 1.1 _RL ubar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
153     _RL vbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
154     #else
155     _RL ubar
156     _RL vbar
157     #endif
158    
159     #ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
160     _RL wbar (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
161     #else
162     _RL wbar
163     #endif
164    
165     #ifdef ALLOW_DRIFT_COST_CONTRIBUTION
166     _RL Tlmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
167     _RL Slmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
168     _RL Tfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
169     _RL Sfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
170     #else
171     _RL Tlmean
172     _RL Slmean
173     _RL Tfmean
174 jmc 1.30 _RL Sfmean
175 heimbach 1.1 #endif
176    
177     #ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
178     _RL wlmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
179     _RL wfmean(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
180     #else
181     _RL wlmean
182     _RL wfmean
183     #endif
184    
185     #ifdef ALLOW_SCAT_COST_CONTRIBUTION
186     _RL tauxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
187     _RL tauybar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
188     #else
189 jmc 1.30 _RL tauxbar
190     _RL tauybar
191 heimbach 1.1 #endif
192    
193     #ifdef ALLOW_MEAN_HFLUX_COST_CONTRIBUTION
194     _RL hfluxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
195 jmc 1.30 #else
196 heimbach 1.1 _RL hfluxbar
197     #endif
198    
199     #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
200 jmc 1.30 _RL sfluxbar (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
201     #else
202 heimbach 1.1 _RL sfluxbar
203     #endif
204    
205    
206 jmc 1.30 common /averages_c/
207 heimbach 1.1 & tbarfile,
208     & sbarfile,
209 heimbach 1.33 & sstbarfile,
210 heimbach 1.1 & psbarfile,
211 heimbach 1.28 & bpbarfile,
212 heimbach 1.1 & ubarfile,
213     & vbarfile,
214     & wbarfile,
215     & tauxbarfile,
216     & tauybarfile,
217     & hfluxbarfile,
218 heimbach 1.27 & sfluxbarfile,
219     & costTranspDataFile
220 heimbach 1.1 character*(MAX_LEN_FNAM) tbarfile
221     character*(MAX_LEN_FNAM) sbarfile
222 heimbach 1.33 character*(MAX_LEN_FNAM) sstbarfile
223 heimbach 1.1 character*(MAX_LEN_FNAM) psbarfile
224 heimbach 1.28 character*(MAX_LEN_FNAM) bpbarfile
225 heimbach 1.1 character*(MAX_LEN_FNAM) ubarfile
226     character*(MAX_LEN_FNAM) vbarfile
227     character*(MAX_LEN_FNAM) wbarfile
228     character*(MAX_LEN_FNAM) tauxbarfile
229     character*(MAX_LEN_FNAM) tauybarfile
230     character*(MAX_LEN_FNAM) hfluxbarfile
231     character*(MAX_LEN_FNAM) sfluxbarfile
232 heimbach 1.27 character*(MAX_LEN_FNAM) costTranspDataFile
233    
234     #ifdef ALLOW_TRANSPORT_COST_CONTRIBUTION
235     common /averages_transp_r/
236     & transpbar
237     & , transpobs
238     & , wtransp
239 jmc 1.30 _RL transpbar(maxNumDays,nsx,nsy)
240 heimbach 1.27 _RL transpobs(maxNumDays)
241     _RL wtransp(maxNumDays)
242     #endif
243 heimbach 1.1
244     c file precision and field type
245    
246 jmc 1.30 common /prec_type_cost/
247 heimbach 1.1 & cost_iprec,
248     & cost_yftype
249    
250     integer cost_iprec
251     character*(2) cost_yftype
252    
253     c ==================================================================
254     c END OF HEADER AVERAGES
255     c ==================================================================
256    
257    
258    
259     c ==================================================================
260     c HEADER COST
261     c ==================================================================
262     c
263     c o Header for model-data comparison.
264     c
265     c The individual cost function contributions are multiplied by
266     c factors mult_"var" which allow to switch off these contributions
267     c without removing them in the adjoint code. This is useful for
268     c doing tests with the adjoint and perhaps useful in assimilation
269     c experiments where individual contributions are successively
270     c switched on. For future applications it would be better to place
271     c the initialisation of the multipliers somewhere else, for example
272     c in a namelist, which is read in at the start of the model.
273     c
274     c started: Christian Eckert eckert@mit.edu 24-Feb-1999
275     c
276     c changed: Christian Eckert eckert@mit.edu
277     c
278     c
279     c ==================================================================
280     c HEADER COST
281     c ==================================================================
282    
283    
284     c The cost function, its contributions, and multipliers:
285     c ======================================================
286     c
287     c fc - Final cost function.
288     c objf_hflux - Heat flux contribution.
289     c objf_sflux - Salt flux contribution.
290     c objf_tauu - Zonal wind stress contribution.
291     c objf_tauv - Meridional wind stress contribution.
292     c objf_hfluxm - time-mean Heat flux contribution.
293     c objf_sfluxm - time-mean Salt flux contribution.
294     c objf_tauum - time-mean Zonal wind stress contribution.
295     c objf_tauvm - time-mean Meridional wind stress contribution.
296     c objf_hfluxmm - Global time-mean Heat flux contribution.
297     c objf_sfluxmm - Global time-mean Salt flux contribution.
298     c objf_hmean - Mean sea surface height contribution.
299     c objf_h - Residual sea surface height contribution.
300 heimbach 1.21 c objf_tp - Residual sea surface height contribution from T/P
301     c objf_ers - Residual sea surface height contribution from T/P
302     c objf_gfo - Residual sea surface height contribution from T/P
303 heimbach 1.1 c objf_temp - Temperature contribution.
304     c objf_salt - Salinity contribution.
305     c objf_temp0 - Initial conditions Temperature contribution.
306     c objf_salt0 - Initial conditions Salinity contribution.
307 heimbach 1.2 c objf_sst - Sea surface temperature contribution.
308 heimbach 1.1 c objf_tmi - Sea surface temperature contribution.
309     c objf_sss - Sea surface salinity contribution.
310 jmc 1.30 c objf_ctdt - Temperature measurements from Woce CTD
311     c objf_ctds - Salinity measurements from Woce CTD
312 heimbach 1.2 c objf_ctdtclim - Temperature measurements from Woce CTD without timetag
313     c objf_ctdsclim - Salinity measurements from Woce CTD without timetag
314 heimbach 1.1 c objf_xbt - XBT temperature data
315     c objf_argot - ARGO temperature profiles
316     c objf_argos - ARGO salt profiles
317 gforget 1.26 c objf_gencost - gencost user defined contribution
318 heimbach 1.1 c objf_scatxm - time-mean zonal SCAT contribution
319     c objf_scatym - time-mean meridional SCAT contribution
320     c objf_scatx - zonal SCAT contribution
321     c objf_scaty - meridional SCAT contribution
322     c objf_kapgm - kappa GM contribution
323 gforget 1.31 c objf_kapredi - kappa REDI contribution
324 heimbach 1.1 c objf_diffkr - diffusion contribution
325     c objf_theta_ini_fin - final vs. initial theta misfit
326     c objf_salt_ini_fin - final vs. initial salt misfit
327 gforget 1.32 c objf_eddytau - eddy streamfunction contribution
328 gforget 1.25 c objf_bottomdrag - bottom drag contribution
329 heimbach 1.1 c
330     c mult_"var" - multipliers for the individual cost
331     c function contributions.
332    
333     common /ecco_cost_objf/
334     & objf_hflux,
335     & objf_hfluxm,
336     & objf_hfluxmm,
337 heimbach 1.13 & objf_hfluxsmoo,
338 heimbach 1.1 & objf_sflux,
339     & objf_sfluxm,
340     & objf_sfluxmm,
341 heimbach 1.13 & objf_sfluxsmoo,
342 heimbach 1.1 & objf_tauu,
343     & objf_tauum,
344 heimbach 1.13 & objf_tauusmoo,
345 heimbach 1.1 & objf_tauv,
346     & objf_tauvm,
347 heimbach 1.13 & objf_tauvsmoo,
348 heimbach 1.1 & objf_hmean,
349     & objf_h,
350 heimbach 1.21 & objf_tp,
351     & objf_ers,
352     & objf_gfo,
353 heimbach 1.1 & objf_temp,
354     & objf_salt,
355     & objf_temp0,
356     & objf_salt0,
357 heimbach 1.14 & objf_temp0smoo,
358     & objf_salt0smoo,
359 heimbach 1.2 & objf_sst,
360 heimbach 1.1 & objf_tmi,
361     & objf_sss,
362 heimbach 1.28 & objf_bp,
363 heimbach 1.1 & objf_ctdt,
364     & objf_ctds,
365     & objf_ctdtclim,
366     & objf_ctdsclim,
367     & objf_xbt,
368     & objf_argot,
369     & objf_argos,
370 gforget 1.26 & objf_gencost,
371 heimbach 1.1 & objf_drift,
372     & objf_tdrift,
373     & objf_sdrift,
374     & objf_wdrift,
375     & objf_scatx,
376     & objf_scaty,
377     & objf_scatxm,
378     & objf_scatym,
379     & objf_atemp,
380     & objf_aqh,
381 heimbach 1.6 & objf_precip,
382 heimbach 1.7 & objf_swflux,
383 heimbach 1.9 & objf_swdown,
384 heimbach 1.23 & objf_snowprecip,
385     & objf_lwflux,
386     & objf_lwdown,
387     & objf_evap,
388     & objf_apressure,
389     & objf_runoff,
390 heimbach 1.1 & objf_uwind,
391     & objf_vwind,
392 heimbach 1.8 & objf_atempm,
393     & objf_aqhm,
394     & objf_precipm,
395     & objf_swfluxm,
396 heimbach 1.9 & objf_swdownm,
397 heimbach 1.23 & objf_snowprecipm,
398     & objf_lwfluxm,
399     & objf_lwdownm,
400     & objf_evapm,
401     & objf_apressurem,
402     & objf_runoffm,
403 heimbach 1.8 & objf_uwindm,
404     & objf_vwindm,
405 heimbach 1.13 & objf_atempsmoo,
406     & objf_aqhsmoo,
407     & objf_precipsmoo,
408     & objf_swfluxsmoo,
409     & objf_swdownsmoo,
410 heimbach 1.23 & objf_snowprecipsmoo,
411     & objf_lwfluxsmoo,
412     & objf_lwdownsmoo,
413     & objf_evapsmoo,
414     & objf_apressuresmoo,
415     & objf_runoffsmoo,
416 heimbach 1.13 & objf_uwindsmoo,
417     & objf_vwindsmoo,
418 heimbach 1.1 & objf_obcsn,
419     & objf_obcss,
420     & objf_obcsw,
421     & objf_obcse,
422     & objf_obcsvol,
423     & objf_curmtr,
424     & objf_ageos,
425 heimbach 1.9 & objf_kapgm,
426 gforget 1.31 & objf_kapredi,
427 heimbach 1.1 & objf_diffkr,
428     & objf_theta_ini_fin,
429 heimbach 1.3 & objf_salt_ini_fin,
430 gforget 1.25 & objf_eddytau,
431 heimbach 1.27 & objf_bottomdrag,
432     & objf_transp
433 heimbach 1.1 _RL objf_hflux (nsx,nsy)
434     _RL objf_hfluxm (nsx,nsy)
435 heimbach 1.29 _RL objf_hfluxmm
436 heimbach 1.13 _RL objf_hfluxsmoo (nsx,nsy)
437 heimbach 1.1 _RL objf_sflux (nsx,nsy)
438     _RL objf_sfluxm (nsx,nsy)
439 heimbach 1.24 _RL objf_sfluxmm
440 heimbach 1.13 _RL objf_sfluxsmoo (nsx,nsy)
441 heimbach 1.1 _RL objf_tauu (nsx,nsy)
442     _RL objf_tauum (nsx,nsy)
443 heimbach 1.13 _RL objf_tauusmoo (nsx,nsy)
444 heimbach 1.1 _RL objf_tauv (nsx,nsy)
445     _RL objf_tauvm (nsx,nsy)
446 heimbach 1.13 _RL objf_tauvsmoo (nsx,nsy)
447 heimbach 1.2 _RL objf_hmean
448 heimbach 1.1 _RL objf_h (nsx,nsy)
449 heimbach 1.21 _RL objf_tp (nsx,nsy)
450     _RL objf_ers (nsx,nsy)
451     _RL objf_gfo (nsx,nsy)
452 heimbach 1.1 _RL objf_temp (nsx,nsy)
453     _RL objf_salt (nsx,nsy)
454     _RL objf_temp0(nsx,nsy)
455     _RL objf_salt0(nsx,nsy)
456 heimbach 1.14 _RL objf_temp0smoo(nsx,nsy)
457     _RL objf_salt0smoo(nsx,nsy)
458 heimbach 1.2 _RL objf_sst (nsx,nsy)
459 heimbach 1.1 _RL objf_tmi (nsx,nsy)
460 jmc 1.30 _RL objf_sss (nsx,nsy)
461     _RL objf_bp (nsx,nsy)
462 heimbach 1.1 _RL objf_ctdt (nsx,nsy)
463     _RL objf_ctds (nsx,nsy)
464     _RL objf_ctdtclim (nsx,nsy)
465     _RL objf_ctdsclim (nsx,nsy)
466     _RL objf_xbt (nsx,nsy)
467     _RL objf_argot(nsx,nsy)
468     _RL objf_argos(nsx,nsy)
469 gforget 1.26 _RL objf_gencost(NGENCOST,nsx,nsy)
470 heimbach 1.1 _RL objf_drift(nsx,nsy)
471     _RL objf_tdrift(nsx,nsy)
472     _RL objf_sdrift(nsx,nsy)
473     _RL objf_wdrift(nsx,nsy)
474     _RL objf_scatx(nsx,nsy)
475     _RL objf_scaty(nsx,nsy)
476     _RL objf_scatxm(nsx,nsy)
477     _RL objf_scatym(nsx,nsy)
478     _RL objf_atemp(nsx,nsy)
479     _RL objf_aqh (nsx,nsy)
480 heimbach 1.6 _RL objf_precip(nsx,nsy)
481 heimbach 1.7 _RL objf_swflux(nsx,nsy)
482 heimbach 1.9 _RL objf_swdown(nsx,nsy)
483 heimbach 1.23 _RL objf_snowprecip(nsx,nsy)
484     _RL objf_lwflux(nsx,nsy)
485     _RL objf_lwdown(nsx,nsy)
486     _RL objf_evap(nsx,nsy)
487     _RL objf_apressure(nsx,nsy)
488     _RL objf_runoff(nsx,nsy)
489 heimbach 1.1 _RL objf_uwind(nsx,nsy)
490     _RL objf_vwind(nsx,nsy)
491 heimbach 1.8 _RL objf_atempm(nsx,nsy)
492     _RL objf_aqhm (nsx,nsy)
493     _RL objf_precipm(nsx,nsy)
494     _RL objf_swfluxm(nsx,nsy)
495 heimbach 1.9 _RL objf_swdownm(nsx,nsy)
496 heimbach 1.23 _RL objf_snowprecipm(nsx,nsy)
497     _RL objf_lwfluxm(nsx,nsy)
498     _RL objf_lwdownm(nsx,nsy)
499     _RL objf_evapm(nsx,nsy)
500     _RL objf_apressurem(nsx,nsy)
501     _RL objf_runoffm(nsx,nsy)
502 heimbach 1.8 _RL objf_uwindm(nsx,nsy)
503     _RL objf_vwindm(nsx,nsy)
504 heimbach 1.13 _RL objf_atempsmoo(nsx,nsy)
505     _RL objf_aqhsmoo (nsx,nsy)
506     _RL objf_precipsmoo(nsx,nsy)
507     _RL objf_swfluxsmoo(nsx,nsy)
508     _RL objf_swdownsmoo(nsx,nsy)
509 heimbach 1.23 _RL objf_snowprecipsmoo(nsx,nsy)
510     _RL objf_lwfluxsmoo(nsx,nsy)
511     _RL objf_lwdownsmoo(nsx,nsy)
512     _RL objf_evapsmoo(nsx,nsy)
513     _RL objf_apressuresmoo(nsx,nsy)
514     _RL objf_runoffsmoo(nsx,nsy)
515 heimbach 1.13 _RL objf_uwindsmoo(nsx,nsy)
516     _RL objf_vwindsmoo(nsx,nsy)
517 heimbach 1.1 _RL objf_obcsn(nsx,nsy)
518     _RL objf_obcss(nsx,nsy)
519     _RL objf_obcsw(nsx,nsy)
520     _RL objf_obcse(nsx,nsy)
521 heimbach 1.2 _RL objf_obcsvol
522 heimbach 1.1 _RL objf_curmtr(nsx,nsy)
523     _RL objf_ageos(nsx,nsy)
524     _RL objf_kapgm(nsx,nsy)
525 gforget 1.31 _RL objf_kapredi(nsx,nsy)
526 heimbach 1.1 _RL objf_diffkr(nsx,nsy)
527     _RL objf_theta_ini_fin(nsx,nsy)
528     _RL objf_salt_ini_fin(nsx,nsy)
529 heimbach 1.3 _RL objf_eddytau(nsx,nsy)
530 gforget 1.25 _RL objf_bottomdrag(nsx,nsy)
531 heimbach 1.27 _RL objf_transp
532 heimbach 1.1
533 heimbach 1.4 common /ecco_cost_num/
534     & num_hflux,
535     & num_hfluxm,
536     & num_hfluxmm,
537     & num_sflux,
538     & num_sfluxm,
539     & num_sfluxmm,
540     & num_tauu,
541     & num_tauum,
542     & num_tauv,
543     & num_tauvm,
544     & num_hmean,
545     & num_h,
546 heimbach 1.21 & num_tp,
547     & num_ers,
548     & num_gfo,
549 heimbach 1.4 & num_temp,
550     & num_salt,
551     & num_temp0,
552     & num_salt0,
553     & num_sst,
554     & num_tmi,
555     & num_sss,
556 heimbach 1.28 & num_bp,
557 heimbach 1.4 & num_ctdt,
558     & num_ctds,
559     & num_ctdtclim,
560     & num_ctdsclim,
561     & num_xbt,
562     & num_argot,
563     & num_argos,
564 gforget 1.26 & num_gencost,
565 heimbach 1.4 & num_drift,
566     & num_tdrift,
567     & num_sdrift,
568     & num_wdrift,
569     & num_scatx,
570     & num_scaty,
571     & num_scatxm,
572     & num_scatym,
573     & num_atemp,
574     & num_aqh,
575 heimbach 1.6 & num_precip,
576 heimbach 1.7 & num_swflux,
577 heimbach 1.9 & num_swdown,
578 heimbach 1.23 & num_snowprecip,
579     & num_lwflux,
580     & num_lwdown,
581     & num_evap,
582     & num_apressure,
583     & num_runoff,
584 heimbach 1.4 & num_uwind,
585     & num_vwind,
586 heimbach 1.8 & num_atempm,
587     & num_aqhm,
588     & num_precipm,
589     & num_swfluxm,
590 heimbach 1.9 & num_swdownm,
591 heimbach 1.23 & num_snowprecipm,
592     & num_lwfluxm,
593     & num_lwdownm,
594     & num_evapm,
595     & num_apressurem,
596     & num_runoffm,
597 heimbach 1.8 & num_uwindm,
598     & num_vwindm,
599 heimbach 1.4 & num_obcsn,
600     & num_obcss,
601     & num_obcsw,
602     & num_obcse,
603     & num_obcsvol,
604     & num_curmtr,
605     & num_ageos,
606 heimbach 1.9 & num_kapgm,
607 gforget 1.31 & num_kapredi,
608 heimbach 1.4 & num_diffkr,
609     & num_theta_ini_fin,
610     & num_salt_ini_fin,
611 gforget 1.25 & num_eddytau,
612 heimbach 1.27 & num_bottomdrag,
613     & num_transp
614 heimbach 1.4
615     _RL num_hflux (nsx,nsy)
616     _RL num_hfluxm (nsx,nsy)
617     _RL num_hfluxmm(nsx,nsy)
618     _RL num_sflux (nsx,nsy)
619     _RL num_sfluxm (nsx,nsy)
620     _RL num_sfluxmm(nsx,nsy)
621     _RL num_tauu (nsx,nsy)
622     _RL num_tauum (nsx,nsy)
623     _RL num_tauv (nsx,nsy)
624     _RL num_tauvm (nsx,nsy)
625     _RL num_hmean
626     _RL num_h (nsx,nsy)
627 heimbach 1.21 _RL num_tp (nsx,nsy)
628     _RL num_ers (nsx,nsy)
629     _RL num_gfo (nsx,nsy)
630 heimbach 1.4 _RL num_temp (nsx,nsy)
631     _RL num_salt (nsx,nsy)
632     _RL num_temp0(nsx,nsy)
633     _RL num_salt0(nsx,nsy)
634     _RL num_sst (nsx,nsy)
635     _RL num_tmi (nsx,nsy)
636 jmc 1.30 _RL num_sss (nsx,nsy)
637     _RL num_bp (nsx,nsy)
638 heimbach 1.4 _RL num_ctdt (nsx,nsy)
639     _RL num_ctds (nsx,nsy)
640     _RL num_ctdtclim (nsx,nsy)
641     _RL num_ctdsclim (nsx,nsy)
642     _RL num_xbt (nsx,nsy)
643     _RL num_argot(nsx,nsy)
644     _RL num_argos(nsx,nsy)
645 gforget 1.26 _RL num_gencost(NGENCOST,nsx,nsy)
646 heimbach 1.4 _RL num_drift(nsx,nsy)
647     _RL num_tdrift(nsx,nsy)
648     _RL num_sdrift(nsx,nsy)
649     _RL num_wdrift(nsx,nsy)
650     _RL num_scatx(nsx,nsy)
651     _RL num_scaty(nsx,nsy)
652     _RL num_scatxm(nsx,nsy)
653     _RL num_scatym(nsx,nsy)
654     _RL num_atemp(nsx,nsy)
655     _RL num_aqh (nsx,nsy)
656 heimbach 1.6 _RL num_precip(nsx,nsy)
657 heimbach 1.7 _RL num_swflux(nsx,nsy)
658 heimbach 1.9 _RL num_swdown(nsx,nsy)
659 heimbach 1.23 _RL num_snowprecip(nsx,nsy)
660     _RL num_lwflux(nsx,nsy)
661     _RL num_lwdown(nsx,nsy)
662     _RL num_evap(nsx,nsy)
663     _RL num_apressure(nsx,nsy)
664     _RL num_runoff(nsx,nsy)
665 heimbach 1.4 _RL num_uwind(nsx,nsy)
666     _RL num_vwind(nsx,nsy)
667 heimbach 1.8 _RL num_atempm(nsx,nsy)
668     _RL num_aqhm (nsx,nsy)
669     _RL num_precipm(nsx,nsy)
670     _RL num_swfluxm(nsx,nsy)
671 heimbach 1.9 _RL num_swdownm(nsx,nsy)
672 heimbach 1.23 _RL num_snowprecipm(nsx,nsy)
673     _RL num_lwfluxm(nsx,nsy)
674     _RL num_lwdownm(nsx,nsy)
675     _RL num_evapm(nsx,nsy)
676     _RL num_apressurem(nsx,nsy)
677     _RL num_runoffm(nsx,nsy)
678 heimbach 1.8 _RL num_uwindm(nsx,nsy)
679     _RL num_vwindm(nsx,nsy)
680 heimbach 1.4 _RL num_obcsn(nsx,nsy)
681     _RL num_obcss(nsx,nsy)
682     _RL num_obcsw(nsx,nsy)
683     _RL num_obcse(nsx,nsy)
684     _RL num_obcsvol
685     _RL num_curmtr(nsx,nsy)
686     _RL num_ageos(nsx,nsy)
687     _RL num_kapgm(nsx,nsy)
688 gforget 1.31 _RL num_kapredi(nsx,nsy)
689 heimbach 1.4 _RL num_diffkr(nsx,nsy)
690     _RL num_theta_ini_fin(nsx,nsy)
691     _RL num_salt_ini_fin(nsx,nsy)
692     _RL num_eddytau(nsx,nsy)
693 gforget 1.25 _RL num_bottomdrag(nsx,nsy)
694 heimbach 1.27 _RL num_transp
695 heimbach 1.4
696 heimbach 1.1 common /ecco_cost_aux_r/
697     & mult_hflux,
698     & mult_sflux,
699 heimbach 1.16 & mult_hfluxmm,
700     & mult_sfluxmm,
701 heimbach 1.1 & mult_tauu,
702     & mult_tauv,
703     & mult_hmean,
704     & mult_h,
705 heimbach 1.21 & mult_tp,
706     & mult_ers,
707     & mult_gfo,
708 heimbach 1.1 & mult_temp,
709     & mult_salt,
710     & mult_temp0,
711     & mult_salt0,
712 heimbach 1.2 & mult_sst,
713 heimbach 1.1 & mult_tmi,
714     & mult_sss,
715 heimbach 1.28 & mult_bp,
716 heimbach 1.1 & mult_ctdt,
717     & mult_ctds,
718     & mult_ctdtclim,
719     & mult_ctdsclim,
720     & mult_xbt,
721     & mult_argot,
722     & mult_argos,
723 gforget 1.26 & mult_gencost,
724 heimbach 1.1 & mult_drift,
725     & mult_tdrift,
726     & mult_sdrift,
727     & mult_wdrift,
728     & mult_scatx,
729     & mult_scaty,
730     & mult_atemp,
731     & mult_aqh,
732 heimbach 1.6 & mult_precip,
733 heimbach 1.7 & mult_swflux,
734 heimbach 1.9 & mult_swdown,
735 heimbach 1.23 & mult_snowprecip,
736     & mult_lwflux,
737     & mult_lwdown,
738     & mult_evap,
739     & mult_apressure,
740     & mult_runoff,
741 heimbach 1.1 & mult_uwind,
742     & mult_vwind,
743     & mult_obcsn,
744     & mult_obcss,
745     & mult_obcsw,
746     & mult_obcse,
747     & mult_obcsvol,
748     & mult_curmtr,
749     & mult_ageos,
750     & mult_kapgm,
751 gforget 1.31 & mult_kapredi,
752 heimbach 1.1 & mult_diffkr,
753 heimbach 1.3 & mult_ini_fin,
754 gforget 1.25 & mult_edtau,
755     & mult_bottomdrag,
756 heimbach 1.14 & mult_smooth_ic,
757 heimbach 1.27 & mult_smooth_bc,
758     & mult_transp
759 heimbach 1.1 _RL mult_hflux
760     _RL mult_sflux
761 heimbach 1.16 _RL mult_hfluxmm
762     _RL mult_sfluxmm
763 heimbach 1.1 _RL mult_tauu
764     _RL mult_tauv
765     _RL mult_hmean
766     _RL mult_h
767 heimbach 1.21 _RL mult_tp
768     _RL mult_ers
769     _RL mult_gfo
770 heimbach 1.1 _RL mult_temp
771     _RL mult_salt
772     _RL mult_temp0
773     _RL mult_salt0
774 heimbach 1.2 _RL mult_sst
775 heimbach 1.1 _RL mult_tmi
776     _RL mult_sss
777 heimbach 1.28 _RL mult_bp
778 heimbach 1.1 _RL mult_ctdt
779     _RL mult_ctds
780     _RL mult_ctdtclim
781     _RL mult_ctdsclim
782     _RL mult_xbt
783     _RL mult_argot
784     _RL mult_argos
785 gforget 1.26 _RL mult_gencost(NGENCOST)
786 heimbach 1.1 _RL mult_drift
787     _RL mult_tdrift
788     _RL mult_sdrift
789     _RL mult_wdrift
790     _RL mult_scatx
791     _RL mult_scaty
792     _RL mult_atemp
793     _RL mult_aqh
794 heimbach 1.6 _RL mult_precip
795 heimbach 1.7 _RL mult_swflux
796 heimbach 1.9 _RL mult_swdown
797 heimbach 1.23 _RL mult_snowprecip
798     _RL mult_lwflux
799     _RL mult_lwdown
800     _RL mult_evap
801     _RL mult_apressure
802     _RL mult_runoff
803 heimbach 1.1 _RL mult_uwind
804     _RL mult_vwind
805     _RL mult_obcsn
806     _RL mult_obcss
807     _RL mult_obcsw
808     _RL mult_obcse
809     _RL mult_obcsvol
810     _RL mult_curmtr
811     _RL mult_ageos
812     _RL mult_kapgm
813 gforget 1.31 _RL mult_kapredi
814 heimbach 1.1 _RL mult_diffkr
815     _RL mult_ini_fin
816 gforget 1.25 _RL mult_edtau
817     _RL mult_bottomdrag
818 heimbach 1.14 _RL mult_smooth_ic
819     _RL mult_smooth_bc
820 heimbach 1.27 _RL mult_transp
821 heimbach 1.1
822     c Record counters relevant for the cost function evaluation.
823     c ==========================================================
824     c
825 heimbach 1.21 c nyearsrec - number of yearly records that will be generated by
826     c the current model integration.
827     c nmonsrec - number of monthly records that will be generated by
828     c the current model integration.
829     c ndaysrec - number of daily records that will be generated by
830     c the current model integration.
831 heimbach 1.1
832     common /ecco_cost_i/
833 heimbach 1.21 & nyearsrec,
834 heimbach 1.1 & nmonsrec,
835 heimbach 1.11 & ndaysrec,
836     & nnztbar,
837     & nnzsbar
838 heimbach 1.21 integer nyearsrec
839 heimbach 1.1 integer nmonsrec
840     integer ndaysrec
841 heimbach 1.11 integer nnztbar
842     integer nnzsbar
843 heimbach 1.1
844    
845     c Data files for the weights used in the cost function:
846     c =====================================================
847     c
848     c hflux_errfile - heat flux error.
849     c sflux_errfile - salt flux error.
850     c tauu_errfile - zonal wind stress error.
851     c tauum_errfile - zonal wind stress error.
852     c tauv_errfile - meridional wind stress error.
853     c tauvm_errfile - meridional wind stress error.
854     c tscatx_errfile - zonal wind stress error.
855     c tscaty_errfile - meridional wind stress error.
856     c data_errfile - weights for theta, salt, and SST
857     c geoid_errfile - geoid error.
858     c geoid_covariancefile - geoid error covariance.
859     c ssh_errfile - sea surface height error.
860     c ctdt_errfile - CTD temperature error.
861     c ctds_errfile - CTD salinity error.
862     c drift_errfile - drifter error.
863     c salterrfile - representation error due unresolved eddies
864     c temperrfile - representation error due unresolved eddies
865     c velerrfile - representation error
866    
867 jmc 1.30 common /ecco_cost_c/
868 heimbach 1.1 & hflux_errfile,
869     & hfluxm_errfile,
870     & sflux_errfile,
871     & sfluxm_errfile,
872     & tauu_errfile,
873     & tauum_errfile,
874     & tauv_errfile,
875     & tauvm_errfile,
876     & scatx_errfile,
877     & scaty_errfile,
878     & data_errfile,
879     & geoid_errfile,
880     & geoid_covariancefile,
881     & ssh_errfile,
882 heimbach 1.22 & tp_errfile,
883     & ers_errfile,
884     & gfo_errfile,
885 heimbach 1.1 & ctdt_errfile,
886 jmc 1.30 & ctds_errfile,
887 heimbach 1.1 & drift_errfile,
888 jmc 1.30 & udrifterrfile,
889     & vdrifterrfile,
890 heimbach 1.1 & salterrfile,
891     & temperrfile,
892     & velerrfile,
893 heimbach 1.12 & salt0errfile,
894     & temp0errfile,
895     & vel0errfile,
896 heimbach 1.1 & atemp_errfile,
897     & aqh_errfile,
898 heimbach 1.6 & precip_errfile,
899 heimbach 1.7 & swflux_errfile,
900 heimbach 1.9 & swdown_errfile,
901 heimbach 1.23 & snowprecip_errfile,
902     & lwflux_errfile,
903     & lwdown_errfile,
904     & evap_errfile,
905     & apressure_errfile,
906     & runoff_errfile,
907 gforget 1.25 & edtau_errfile,
908     & kapgm_errfile,
909 gforget 1.31 & kapredi_errfile,
910 gforget 1.25 & diffkr_errfile,
911     & bottomdrag_errfile,
912 gforget 1.26 & gencost_errfile,
913 heimbach 1.1 & uwind_errfile,
914     & vwind_errfile
915     character*(MAX_LEN_FNAM) hflux_errfile
916     character*(MAX_LEN_FNAM) sflux_errfile
917     character*(MAX_LEN_FNAM) tauu_errfile
918     character*(MAX_LEN_FNAM) tauv_errfile
919     character*(MAX_LEN_FNAM) hfluxm_errfile
920     character*(MAX_LEN_FNAM) sfluxm_errfile
921     character*(MAX_LEN_FNAM) tauum_errfile
922     character*(MAX_LEN_FNAM) tauvm_errfile
923     character*(MAX_LEN_FNAM) scatx_errfile
924     character*(MAX_LEN_FNAM) scaty_errfile
925     character*(MAX_LEN_FNAM) data_errfile
926     character*(MAX_LEN_FNAM) geoid_errfile
927     character*(MAX_LEN_FNAM) geoid_covariancefile
928     character*(MAX_LEN_FNAM) ssh_errfile
929 heimbach 1.22 character*(MAX_LEN_FNAM) tp_errfile
930     character*(MAX_LEN_FNAM) ers_errfile
931     character*(MAX_LEN_FNAM) gfo_errfile
932 jmc 1.30 character*(MAX_LEN_FNAM) ctdt_errfile
933     character*(MAX_LEN_FNAM) ctds_errfile
934 heimbach 1.1 character*(MAX_LEN_FNAM) drift_errfile
935     character*(MAX_LEN_FNAM) udrifterrfile
936 jmc 1.30 character*(MAX_LEN_FNAM) vdrifterrfile
937 heimbach 1.1 character*(MAX_LEN_FNAM) salterrfile
938     character*(MAX_LEN_FNAM) temperrfile
939     character*(MAX_LEN_FNAM) velerrfile
940 heimbach 1.12 character*(MAX_LEN_FNAM) salt0errfile
941     character*(MAX_LEN_FNAM) temp0errfile
942     character*(MAX_LEN_FNAM) vel0errfile
943 heimbach 1.1 character*(MAX_LEN_FNAM) atemp_errfile
944     character*(MAX_LEN_FNAM) aqh_errfile
945 heimbach 1.6 character*(MAX_LEN_FNAM) precip_errfile
946 heimbach 1.7 character*(MAX_LEN_FNAM) swflux_errfile
947 heimbach 1.9 character*(MAX_LEN_FNAM) swdown_errfile
948 heimbach 1.23 character*(MAX_LEN_FNAM) snowprecip_errfile
949     character*(MAX_LEN_FNAM) lwflux_errfile
950     character*(MAX_LEN_FNAM) lwdown_errfile
951     character*(MAX_LEN_FNAM) evap_errfile
952     character*(MAX_LEN_FNAM) apressure_errfile
953     character*(MAX_LEN_FNAM) runoff_errfile
954 gforget 1.25 character*(MAX_LEN_FNAM) edtau_errfile
955     character*(MAX_LEN_FNAM) kapgm_errfile
956 gforget 1.31 character*(MAX_LEN_FNAM) kapredi_errfile
957 gforget 1.25 character*(MAX_LEN_FNAM) diffkr_errfile
958     character*(MAX_LEN_FNAM) bottomdrag_errfile
959 gforget 1.26 character*(MAX_LEN_FNAM) gencost_errfile(NGENCOST)
960 heimbach 1.1 character*(MAX_LEN_FNAM) uwind_errfile
961     character*(MAX_LEN_FNAM) vwind_errfile
962    
963    
964     c Arrays where the weights are stored:
965     c ====================================
966     c
967     c cosphi - cosine of latitude.
968     c whflux - weight for heat flux.
969     c wsflux - weight for salt flux.
970     c wtauu - weight for zonal wind stress.
971     c wtauu - weight for meridional wind stress.
972     c wscatx - weight for zonal scat stress.
973     c wscaty - weight for meridional scat stress.
974     c wtheta - weight for temperature.
975     c wtheta2 - representation error due to unresolved eddies
976     c wsst - weight for sea surface temperature.
977     c wsss - weight for sea surface salinity.
978     c wsalt - weight for salinity.
979     c wsalt2 - representation error due to unresolved eddies
980     c wtp - weight for TOPEX/POSEIDON data.
981     c wers - weight for ERS data.
982     c wp - weight for geoid.
983     c wctdt - weight for CTD temperature.
984     c wctds - weight for CTD salinity.
985     c wudrift - weight for mean zonal velocity from drifters.
986     c wvdrift - weight for mean meridional velocity from drifters.
987    
988 jmc 1.30 common /ecco_cost_weights_r/
989 heimbach 1.1 & frame,
990     & cosphi,
991     & whflux,wsflux,wtauu,wtauv,
992 heimbach 1.23 & watemp,waqh,wprecip,wsnowprecip,
993     & wswflux,wswdown,wlwflux,wlwdown,
994     & wevap,wapressure,wrunoff,
995 gforget 1.25 & wbottomdrag,
996 heimbach 1.9 & wuwind,wvwind,
997 heimbach 1.1 & wscatx,wscaty,
998     & wtheta,wtheta2,wthetaLev,
999     & wsalt,wsalt2,wsaltLev,
1000 heimbach 1.20 & wdiffkr,wdiffkr2,wdiffkrFld,
1001     & wkapgm,wkapgm2,wkapgmFld,
1002 gforget 1.31 & wkapredi,wkapredi2,wkaprediFld,
1003 heimbach 1.20 & wedtaux,wedtaux2,wedtauxFld,
1004     & wedtauy,wedtauy2,wedtauyFld,
1005 heimbach 1.28 & wsst,wsss,wbp,
1006 heimbach 1.15 & wtp,wers,wgfo,
1007 heimbach 1.1 & wp,
1008     & wctdt,wctds,
1009     & wudrift,wvdrift,
1010     & whfluxmm,wsfluxmm,
1011     & wcurrent,wcurrent2,
1012     & wcurrentLev,wbaro
1013    
1014     _RL frame (1-olx:snx+olx,1-oly:sny+oly )
1015     _RL cosphi (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1016     _RL whflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1017     _RL whfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1018     _RL whfluxmm(1-olx:snx+olx,1-oly:sny+oly)
1019     _RL wsflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1020     _RL wsfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1021     _RL wsfluxmm(1-olx:snx+olx,1-oly:sny+oly)
1022     _RL wtauu (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1023     _RL wtauv (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1024     _RL wtauum (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1025     _RL wtauvm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1026     _RL wscatx (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1027     _RL wscaty (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1028     _RL watemp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1029     _RL waqh (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1030 heimbach 1.6 _RL wprecip (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1031 heimbach 1.7 _RL wswflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1032 heimbach 1.9 _RL wswdown (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1033 heimbach 1.23 _RL wsnowprecip (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1034     _RL wlwflux (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1035     _RL wlwdown (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1036     _RL wevap (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1037     _RL wapressure(1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1038     _RL wrunoff (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1039 gforget 1.25 _RL wbottomdrag (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
1040 heimbach 1.1 _RL wuwind (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1041     _RL wvwind (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1042     _RL wtheta ( nr,nsx,nsy)
1043     _RL wsalt ( nr,nsx,nsy)
1044     _RL wtheta2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1045     _RL wsalt2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1046     _RL wthetaLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1047     _RL wsaltLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1048     _RL wsst (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1049     _RL wsss (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1050 heimbach 1.28 _RL wbp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1051 heimbach 1.1 _RL wtp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1052     _RL wers (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1053 heimbach 1.15 _RL wgfo (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1054 heimbach 1.1 _RL wp (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1055     _RL wctdt ( nr,nsx,nsy)
1056     _RL wctds ( nr,nsx,nsy)
1057     _RL wudrift (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1058     _RL wvdrift (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1059     _RL wcurrent( nr,nsx,nsy)
1060     _RL wcurrent2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1061     _RL wcurrentLev (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1062     _RL wbaro
1063 heimbach 1.20 _RL wdiffkr ( nr,nsx,nsy)
1064     _RL wdiffkr2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1065     _RL wdiffkrFld (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1066     _RL wkapgm ( nr,nsx,nsy)
1067     _RL wkapgm2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1068     _RL wkapgmFld (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1069 gforget 1.31 _RL wkapredi ( nr,nsx,nsy)
1070     _RL wkapredi2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1071     _RL wkaprediFld (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1072 heimbach 1.20 _RL wedtaux ( nr,nsx,nsy)
1073     _RL wedtaux2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1074     _RL wedtauxFld (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1075     _RL wedtauy ( nr,nsx,nsy)
1076     _RL wedtauy2 (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1077     _RL wedtauyFld (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1078 heimbach 1.1
1079 heimbach 1.6 common /ecco_cost_weights_0_r/
1080 heimbach 1.7 & whflux0, wsflux0, wtau0,
1081 heimbach 1.23 & watemp0, waqh0, wprecip0, wsnowprecip0, wwind0,
1082 jmc 1.30 & wswflux0, wswdown0, wlwflux0, wlwdown0,
1083 gforget 1.31 & wevap0, wapressure0, wrunoff0, wkapredi0,
1084 gforget 1.25 & wbottomdrag0,wdiffkr0, wkapgm0, wedtau0
1085 heimbach 1.6 _RL whflux0
1086     _RL wsflux0
1087     _RL wtau0
1088     _RL watemp0
1089     _RL waqh0
1090     _RL wprecip0
1091 heimbach 1.7 _RL wswflux0
1092 heimbach 1.9 _RL wswdown0
1093 heimbach 1.23 _RL wsnowprecip0
1094     _RL wlwflux0
1095     _RL wlwdown0
1096     _RL wevap0
1097     _RL wapressure0
1098     _RL wrunoff0
1099 gforget 1.25 _RL wbottomdrag0
1100 heimbach 1.6 _RL wwind0
1101 heimbach 1.20 _RL wdiffkr0
1102     _RL wkapgm0
1103 gforget 1.31 _RL wkapredi0
1104 heimbach 1.20 _RL wedtau0
1105 heimbach 1.8
1106     common /ecco_cost_weights_mean_r/
1107     & wmean_hflux, wmean_sflux, wmean_tau,
1108 jmc 1.30 & wmean_atemp, wmean_aqh,
1109 heimbach 1.23 & wmean_precip, wmean_snowprecip, wmean_wind,
1110     & wmean_swflux, wmean_swdown, wmean_lwflux, wmean_lwdown,
1111     & wmean_evap, wmean_apressure, wmean_runoff
1112 heimbach 1.8 _RL wmean_hflux
1113     _RL wmean_sflux
1114     _RL wmean_tau
1115     _RL wmean_atemp
1116     _RL wmean_aqh
1117     _RL wmean_precip
1118     _RL wmean_swflux
1119 heimbach 1.9 _RL wmean_swdown
1120 heimbach 1.23 _RL wmean_snowprecip
1121     _RL wmean_lwflux
1122     _RL wmean_lwdown
1123     _RL wmean_evap
1124     _RL wmean_apressure
1125     _RL wmean_runoff
1126 heimbach 1.8 _RL wmean_wind
1127 jmc 1.30
1128 heimbach 1.5 common /ecco_cost_weights_2_r/
1129     & whflux2,wsflux2,wtauu2,wtauv2
1130     _RL whflux2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1131     _RL wsflux2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1132     _RL wtauu2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1133     _RL wtauv2 (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1134 jmc 1.30
1135    
1136 heimbach 1.5
1137 heimbach 1.1 #if (defined (ALLOW_OBCSN_COST_CONTRIBUTION) || \
1138     defined (ALLOW_OBCSN_CONTROL))
1139     common /ecco_cost_weights_obcsn/
1140     & wobcsn, wobcsnLev
1141     _RL wobcsn ( nr,nobcs)
1142     _RL wobcsnLev (1-olx:snx+olx,nr,nsx,nsy,nobcs)
1143     #endif
1144     #if (defined (ALLOW_OBCSS_COST_CONTRIBUTION) || \
1145     defined (ALLOW_OBCSS_CONTROL))
1146     common /ecco_cost_weights_obcss/
1147     & wobcss, wobcssLev
1148     _RL wobcss ( nr,nobcs)
1149     _RL wobcssLev (1-olx:snx+olx,nr,nsx,nsy,nobcs)
1150     #endif
1151     #if (defined (ALLOW_OBCSW_COST_CONTRIBUTION) || \
1152     defined (ALLOW_OBCSW_CONTROL))
1153     common /ecco_cost_weights_obcsw/
1154     & wobcsw, wobcswLev
1155     _RL wobcsw ( nr,nobcs)
1156     _RL wobcswLev (1-oly:sny+oly,nr,nsx,nsy,nobcs)
1157     #endif
1158     #if (defined (ALLOW_OBCSE_COST_CONTRIBUTION) || \
1159     defined (ALLOW_OBCSE_CONTROL))
1160     common /ecco_cost_weights_obcse/
1161     & wobcse, wobcseLev
1162     _RL wobcse ( nr,nobcs)
1163     _RL wobcseLev (1-oly:sny+oly,nr,nsx,nsy,nobcs)
1164     #endif
1165    
1166 heimbach 1.2
1167 heimbach 1.1 c Arrays that contain observations for the model-data comparison:
1168     c ===============================================================
1169     c
1170     c tdat - reference temperature data.
1171     c scatxdat - reference zonal wind stress.
1172     c scatydat - reference meridional wind stress.
1173 heimbach 1.2 c sstdat - reference sea surface temperature data.
1174 heimbach 1.1 c tmidat - reference TMI sea surface temperature data.
1175     c sssdat - reference sea surface temperature data.
1176 heimbach 1.28 c bpdat - bottom pressure from time-varying GRACE.
1177 heimbach 1.1 c tauxmask - mask for reference wind stress data.
1178 jmc 1.30 c tauymask - mask for reference wind stress data.
1179 heimbach 1.1 c scatxmask - mask for scat wind stress data.
1180 jmc 1.30 c scatymask - mask for scat wind stress data.
1181 heimbach 1.2 c sstmask - mask for reference sea surface temperature data.
1182 heimbach 1.1 c tmimask - mask for reference sea surface temperature data.
1183     c sssmask - mask for reference sea surface temperature data.
1184     c sdat - reference salinity data.
1185     c tpmean - reference mean sea surface height data.
1186     c tpmeanmask - mask for reference mean sea surface height data.
1187     c tpobs - TOPEX/POSEIDON data.
1188     c tpmask - mask for TOPEX/POSEIDON data.
1189     c ersobs - ERS data.
1190     c ersmask - mask for ERS data.
1191     c ctdtobs - CTD temperature data
1192     c ctdsobs - CTD salinity data
1193 jmc 1.30 c xbtobs - XBT data
1194     c argot - ARGO temperature data
1195     c argos - ARGO salt data
1196 heimbach 1.1 c udriftdat - drifters zonal velocities
1197     c vdriftdat - drifters meridional velocities
1198    
1199     common /ecco_cost_data_r/
1200     & tdat,
1201     & scatxdat,
1202     & scatydat,
1203 heimbach 1.2 & sstdat,
1204 heimbach 1.1 & tmidat,
1205     & sssdat,
1206 heimbach 1.28 & bpdat,
1207 heimbach 1.2 & sstmask,
1208 heimbach 1.1 & tmimask,
1209     & sssmask,
1210 heimbach 1.28 & bpmask,
1211 heimbach 1.1 & tauxmask,
1212     & tauymask,
1213     & scatxmask,
1214     & scatymask,
1215     & sdat,
1216     & tpmean,
1217     & tpmeanmask,
1218     & tpobs,
1219     & tpmask,
1220     & ersobs,
1221     & ersmask,
1222 heimbach 1.15 & gfoobs,
1223     & gfomask,
1224 heimbach 1.1 & ctdtobs,
1225     & ctdsobs,
1226     & xbtobs,
1227     & argotobs,
1228     & argosobs,
1229     & udriftdat,
1230     & vdriftdat,
1231     & curmtruobs,
1232     & curmtrvobs
1233 jmc 1.30
1234 heimbach 1.1 _RL tdat (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1235     _RL scatxdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1236     _RL scatydat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1237 heimbach 1.2 _RL sstdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1238 heimbach 1.1 _RL tmidat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1239     _RL sssdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1240 heimbach 1.28 _RL bpdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1241 heimbach 1.1 _RL tauxmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1242     _RL tauymask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1243     _RL scatxmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1244     _RL scatymask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1245 heimbach 1.2 _RL sstmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1246 heimbach 1.1 _RL tmimask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1247     _RL sssmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1248 heimbach 1.28 _RL bpmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1249 heimbach 1.1 _RL sdat (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1250     _RL tpmean (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1251     _RL tpmeanmask(1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1252     _RL tpobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1253     _RL tpmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1254     _RL ersobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1255     _RL ersmask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1256 heimbach 1.15 _RL gfoobs (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1257     _RL gfomask (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1258 heimbach 1.1 _RL ctdtobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1259     _RL ctdsobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1260     _RL xbtobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1261     _RL argotobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1262     _RL argosobs (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1263     _RL udriftdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1264     _RL vdriftdat (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
1265     _RL curmtruobs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1266     _RL curmtrvobs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
1267    
1268 heimbach 1.2
1269 heimbach 1.1 c Files that contain obervations:
1270     c ===============================
1271     c
1272     c tdatfile - reference data file for temperature.
1273     c sdatfile - reference data file for salinity.
1274     c scatxdatfile - reference data file for zonal wind stress.
1275     c scatydatfile - reference data file for meridional wind stress.
1276     c sstdatfile - reference data file for sea surface temperature.
1277 heimbach 1.2 c tmidatfile - reference data file for TMI sea surface temperature.
1278 heimbach 1.1 c topexmeanfile - reference data file for mean sea surface height.
1279     c topexfile - reference data file for sea surface height data
1280     c (TOPEX/POSEIDON).
1281     c ersfile - reference data file for sea surface height data
1282     c (ERS).
1283 jmc 1.30 c ctdtfile, ctdsfile- reference data file for temperature and salinity
1284 heimbach 1.1 c from CTD
1285     c ctdtclimfile, ctdsclimfile- reference data file for temperature
1286 heimbach 1.2 c and salinity from CTD with out timetag
1287 heimbach 1.1 c xbtfile - reference data file for xbt
1288     c ARGOtfile - reference data file for ARGO
1289     c ARGOsfile - reference data file for ARGO
1290     c driftfile - reference data file for drifter's mean velocities
1291    
1292     common /ecco_cost_data_c/
1293     & tdatfile,
1294     & sdatfile,
1295     & scatxdatfile,
1296     & scatydatfile,
1297 heimbach 1.2 & sstdatfile,
1298 heimbach 1.1 & tmidatfile,
1299     & sssdatfile,
1300 heimbach 1.28 & bpdatfile,
1301 heimbach 1.1 & topexmeanfile,
1302     & topexfile,
1303     & ersfile,
1304 heimbach 1.15 & gfofile,
1305 heimbach 1.1 & ctdtfile,
1306     & ctdsfile,
1307     & ctdtclimfile,
1308     & ctdsclimfile,
1309     & xbtfile,
1310     & argotfile,
1311     & argosfile,
1312 jmc 1.30 & udriftfile,
1313 heimbach 1.1 & vdriftfile,
1314 gforget 1.26 & gencost_datafile,
1315 heimbach 1.1 & curmtrufile,
1316 heimbach 1.19 & curmtrvfile
1317 heimbach 1.1
1318     character*(MAX_LEN_FNAM) tdatfile
1319     character*(MAX_LEN_FNAM) sdatfile
1320     character*(MAX_LEN_FNAM) scatxdatfile
1321     character*(MAX_LEN_FNAM) scatydatfile
1322 heimbach 1.2 character*(MAX_LEN_FNAM) sstdatfile
1323 heimbach 1.1 character*(MAX_LEN_FNAM) tmidatfile
1324     character*(MAX_LEN_FNAM) sssdatfile
1325 heimbach 1.28 character*(MAX_LEN_FNAM) bpdatfile
1326 heimbach 1.1 character*(MAX_LEN_FNAM) topexmeanfile
1327     character*(MAX_LEN_FNAM) topexfile
1328     character*(MAX_LEN_FNAM) ersfile
1329 heimbach 1.15 character*(MAX_LEN_FNAM) gfofile
1330 heimbach 1.1 character*(MAX_LEN_FNAM) ctdtfile
1331     character*(MAX_LEN_FNAM) ctdsfile
1332     character*(MAX_LEN_FNAM) ctdtclimfile
1333     character*(MAX_LEN_FNAM) ctdsclimfile
1334     character*(MAX_LEN_FNAM) xbtfile
1335     character*(MAX_LEN_FNAM) argotfile
1336     character*(MAX_LEN_FNAM) argosfile
1337     character*(MAX_LEN_FNAM) argofile
1338 gforget 1.26 character*(MAX_LEN_FNAM) gencost_datafile(NGENCOST)
1339 heimbach 1.1 character*(MAX_LEN_FNAM) udriftfile
1340 jmc 1.30 character*(MAX_LEN_FNAM) vdriftfile
1341 heimbach 1.1 character*(MAX_LEN_FNAM) curmtrufile
1342     character*(MAX_LEN_FNAM) curmtrvfile
1343    
1344 heimbach 1.2
1345 heimbach 1.1 c Flags used in the model-data comparison:
1346     c ========================================
1347     c
1348     c using_ers - flag that indicates the use of ERS data
1349    
1350     common /ecco_cost_data_flags/
1351     & using_topex,
1352 heimbach 1.15 & using_ers,
1353     & using_gfo
1354 heimbach 1.1 logical using_topex
1355     logical using_ers
1356 heimbach 1.15 logical using_gfo
1357 heimbach 1.1
1358     c Calendar information for the observations:
1359     c ==========================================
1360     c
1361 heimbach 1.2 c sststartdate - start date of the sea surface temperature data.
1362 heimbach 1.1 c tmistartdate - start date of the sea surface temperature data.
1363     c topexstartdate - start date of the sea surface height data.
1364     c ersstartdate - start date of the sea surface height data.
1365 heimbach 1.2 c sshperiod - sampling interval for the sea surface height data.
1366 heimbach 1.1
1367     common /ecco_cost_data_times_i/
1368     & scatxstartdate,
1369     & scatystartdate,
1370     & sststartdate,
1371     & argotstartdate,
1372     & argosstartdate,
1373 heimbach 1.2 & tmistartdate,
1374     & sssstartdate,
1375 heimbach 1.28 & bpstartdate,
1376 heimbach 1.1 & topexstartdate,
1377 heimbach 1.15 & ersstartdate,
1378     & gfostartdate
1379 heimbach 1.1 integer scatxstartdate(4)
1380     integer scatystartdate(4)
1381     integer sststartdate(4)
1382     integer argotstartdate(4)
1383     integer argosstartdate(4)
1384 heimbach 1.2 integer tmistartdate(4)
1385     integer sssstartdate(4)
1386 heimbach 1.28 integer bpstartdate(4)
1387 heimbach 1.1 integer topexstartdate(4)
1388     integer ersstartdate(4)
1389 heimbach 1.15 integer gfostartdate(4)
1390 heimbach 1.1
1391     common /ecco_cost_data_aux_i/
1392     & tmistartdate1,
1393     & tmistartdate2,
1394     & sststartdate1,
1395     & sststartdate2,
1396     & sssstartdate1,
1397     & sssstartdate2,
1398 heimbach 1.28 & bpstartdate1,
1399     & bpstartdate2,
1400 heimbach 1.1 & argotstartdate1,
1401     & argotstartdate2,
1402     & argosstartdate1,
1403     & argosstartdate2,
1404     & topexstartdate1,
1405     & topexstartdate2,
1406     & ersstartdate1,
1407     & ersstartdate2,
1408 heimbach 1.15 & gfostartdate1,
1409     & gfostartdate2,
1410 heimbach 1.1 & scatstartdate1,
1411 heimbach 1.10 & scatstartdate2
1412 heimbach 1.1
1413     integer tmistartdate1
1414     integer tmistartdate2
1415     integer sststartdate1
1416     integer sststartdate2
1417     integer sssstartdate1
1418     integer sssstartdate2
1419 heimbach 1.28 integer bpstartdate1
1420     integer bpstartdate2
1421 heimbach 1.1 integer argotstartdate1
1422     integer argotstartdate2
1423     integer argosstartdate1
1424     integer argosstartdate2
1425     integer topexstartdate1
1426     integer topexstartdate2
1427     integer ersstartdate1
1428     integer ersstartdate2
1429 heimbach 1.15 integer gfostartdate1
1430     integer gfostartdate2
1431 heimbach 1.1 integer scatstartdate1
1432     integer scatstartdate2
1433    
1434     common /ecco_cost_data_times_r/
1435     & topexperiod,
1436     & ersperiod,
1437 heimbach 1.15 & gfoperiod,
1438 heimbach 1.10 & scatperiod
1439 heimbach 1.1 _RL topexperiod
1440     _RL ersperiod
1441 heimbach 1.15 _RL gfoperiod
1442 heimbach 1.1 _RL scatperiod
1443    
1444 heimbach 1.17 common /ecco_cost_data_detrend/
1445     & topexintercept,
1446     & ersintercept,
1447     & gfointercept,
1448     & topexslope,
1449     & ersslope,
1450     & gfoslope
1451     _RL topexintercept
1452     _RL ersintercept
1453     _RL gfointercept
1454     _RL topexslope
1455     _RL ersslope
1456     _RL gfoslope
1457    
1458 heimbach 1.35 #ifdef ALLOW_SSH_COST_CONTRIBUTION
1459     common /ecco_ssh_daymask_r/
1460     & tpTimeMask, ersTimeMask, gfoTimeMask
1461     _RL tpTimeMask(maxNumDays)
1462     _RL ersTimeMask(maxNumDays)
1463     _RL gfoTimeMask(maxNumDays)
1464     #endif
1465    
1466     common /ecco_ssh_daymask_c/
1467     & tpTimeMaskFile, ersTimeMaskFile, gfoTimeMaskFile
1468     character*(MAX_LEN_FNAM) tpTimeMaskFile
1469     character*(MAX_LEN_FNAM) ersTimeMaskFile
1470     character*(MAX_LEN_FNAM) gfoTimeMaskFile
1471    
1472 heimbach 1.1 c ==================================================================
1473     c END OF HEADER COST
1474     c ==================================================================
1475 heimbach 1.2
1476    

  ViewVC Help
Powered by ViewVC 1.1.22