/[MITgcm]/MITgcm/pkg/ecco/ecco_cost_init_barfiles.F
ViewVC logotype

Contents of /MITgcm/pkg/ecco/ecco_cost_init_barfiles.F

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


Revision 1.28 - (show annotations) (download)
Tue Oct 2 17:01:34 2012 UTC (11 years, 9 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint64, checkpoint65, checkpoint65b, checkpoint65a
Changes since 1.27: +11 -3 lines
- cost_gencost_assignperiod.F, ecco_cost_init_fixed.F : add missing gencost_flag test.
- cost_averagesfields.F, ecco_cost_init_barfiles.F : add missing using_gencost test.
- ecco_cost_init_barfiles.F, cost_averagesfields.F : add using_altim, etc. tests.
- ecco_check.F : switch off cost term if no a single file was found (regarless
                 of startdates for this general test).
- ecco_readparms.F : bug fix ('OR'; from previous rev) and print additional
                 information when failed test stops.

1 C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost_init_barfiles.F,v 1.27 2012/08/10 19:45:27 jmc Exp $
2 C $Name: $
3
4 #include "ECCO_OPTIONS.h"
5 #include "AD_CONFIG.h"
6
7 subroutine ecco_cost_init_barfiles( mythid )
8
9 c ==================================================================
10 c SUBROUTINE ecco_cost_init_barfiles
11 c ==================================================================
12 c
13 c-- Initialise adjoint of monthly mean files calculated
14 c-- in cost_averagesfields (and their ad...).
15 c
16 c started: heimbach@mit.edu 20-Mar-2002
17 c
18 c ==================================================================
19 c SUBROUTINE ecco_cost_cost_init_barfiles
20 c ==================================================================
21
22 implicit none
23
24 c == global variables ==
25
26 #include "EEPARAMS.h"
27 #include "SIZE.h"
28 #include "PARAMS.h"
29
30 #include "ecco_cost.h"
31 #ifdef ALLOW_CTRL
32 # include "optim.h"
33 # include "CTRL_SIZE.h"
34 # include "ctrl.h"
35 # include "ctrl_dummy.h"
36 #endif
37 #ifdef ALLOW_SEAICE
38 # include "SEAICE_COST.h"
39 #endif
40
41 c == routine arguments ==
42
43 integer mythid
44
45 c == local variables ==
46
47 integer bi,bj
48 integer i,j,k
49 integer itlo,ithi
50 integer jtlo,jthi
51 integer jmin,jmax
52 integer imin,imax
53
54 integer ilps, ils, ilt, irec
55
56 character*(128) fnamepsbar
57 character*(128) fnametbar
58 character*(128) fnamesbar
59 character*(128) fnamesstbar
60 character*(128) fnameubar
61 character*(128) fnamevbar
62 character*(128) fnamewbar
63 character*(128) fnametauxbar
64 character*(128) fnametauybar
65 character*(128) fnamehfluxmeanbar
66 character*(128) fnamesfluxmeanbar
67 character*(128) fnamebpbar
68 character*(128) fnamesmrareabar
69 character*(128) fnamesmrsstbar
70 character*(128) fnamesmrsssbar
71 character*(128) fnameiestaubar
72 #ifdef ALLOW_GENCOST_CONTRIBUTION
73 character*(128) fname_gencostbar(NGENCOST)
74 #endif /* ALLOW_GENCOST_CONTRIBUTION */
75 c
76 character*(128) adfnamepsbar
77 character*(128) adfnametbar
78 character*(128) adfnamesbar
79 character*(128) adfnamesstbar
80 character*(128) adfnameubar
81 character*(128) adfnamevbar
82 character*(128) adfnamewbar
83 character*(128) adfnametauxbar
84 character*(128) adfnametauybar
85 character*(128) adfnamehfluxmeanbar
86 character*(128) adfnamesfluxmeanbar
87 character*(128) adfnamebpbar
88 character*(128) adfnamesmrareabar
89 character*(128) adfnamesmrsstbar
90 character*(128) adfnamesmrsssbar
91 #ifdef ALLOW_GENCOST_CONTRIBUTION
92 character*(128) adfname_gencostbar(NGENCOST)
93 #endif /* ALLOW_GENCOST_CONTRIBUTION */
94 character*(128) adfnameiestaubar
95
96 c == external functions ==
97
98 integer ilnblnk
99 external ilnblnk
100
101 c == end of interface ==
102
103 jtlo = mybylo(mythid)
104 jthi = mybyhi(mythid)
105 itlo = mybxlo(mythid)
106 ithi = mybxhi(mythid)
107 jmin = 1
108 jmax = sny
109 imin = 1
110 imax = snx
111
112 do bj = jtlo,jthi
113 do bi = itlo,ithi
114 do j = jmin,jmax
115 do i = imin,imax
116 tmpfld2d(i,j,bi,bj) = 0. _d 0
117 enddo
118 enddo
119 enddo
120 enddo
121 do bj = jtlo,jthi
122 do bi = itlo,ithi
123 do k = 1,nr
124 do j = jmin,jmax
125 do i = imin,imax
126 tmpfld3d(i,j,k,bi,bj) = 0. _d 0
127 enddo
128 enddo
129 enddo
130 enddo
131 enddo
132
133 #ifdef ALLOW_SSH_COST_CONTRIBUTION
134 IF (using_cost_altim) THEN
135 c-- Save psbar on file.
136 ilps=ilnblnk( psbarfile )
137 write(fnamepsbar,'(2a,i10.10)')
138 & psbarfile(1:ilps), '.', optimcycle
139 write(adfnamepsbar,'(3a,i10.10)')
140 & yadprefix, psbarfile(1:ilps), '.', optimcycle
141
142 do irec = 1, ndaysrec
143 #ifdef ALLOW_ADJOINT_RUN
144 call active_write_xy( adfnamepsbar, tmpfld2d, irec,
145 & optimcycle,mythid, xx_psbar_mean_dummy )
146 #endif
147 enddo
148 ENDIF
149 #endif /* ALLOW_SSH_COST_CONTRIBUTION */
150
151 #ifdef ALLOW_BP_COST_CONTRIBUTION
152 IF (using_cost_bp) THEN
153 c-- Save bpbar on file.
154 ilps=ilnblnk( bpbarfile )
155 write(fnamebpbar,'(2a,i10.10)')
156 & bpbarfile(1:ilps), '.', optimcycle
157 write(adfnamebpbar,'(3a,i10.10)')
158 & yadprefix, bpbarfile(1:ilps), '.', optimcycle
159
160 do irec = 1, nmonsrec
161 #ifdef ALLOW_ADJOINT_RUN
162 call active_write_xy( adfnamebpbar, tmpfld2d, irec,
163 & optimcycle,mythid, xx_bpbar_mean_dummy )
164 #endif
165 enddo
166 ENDIF ! IF (using_cost_bp) THEN
167 #endif
168
169 #if (defined (ALLOW_THETA_COST_CONTRIBUTION) || \
170 defined (ALLOW_CTDT_COST_CONTRIBUTION) || \
171 defined (ALLOW_CTDTCLIM_COST_CONTRIBUTION) || \
172 defined (ALLOW_XBT_COST_CONTRIBUTION) || \
173 defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
174 defined (ALLOW_OBCS_COST_CONTRIBUTION))
175 c-- Save tbar on file.
176 ilt=ilnblnk( tbarfile )
177 write(fnametbar,'(2a,i10.10)')
178 & tbarfile(1:ilt), '.', optimcycle
179 write(adfnametbar,'(3a,i10.10)')
180 & yadprefix, tbarfile(1:ilt), '.', optimcycle
181
182 do irec = 1,nmonsrec
183 #ifdef ALLOW_ADJOINT_RUN
184 call active_write_xyz( adfnametbar, tmpfld3d, irec,
185 & optimcycle, mythid, xx_tbar_mean_dummy )
186 #endif
187 enddo
188 #else
189 #ifdef ALLOW_SST_COST_CONTRIBUTION
190 c-- Save tbar on file.
191 ilt=ilnblnk( tbarfile )
192 write(fnametbar,'(2a,i10.10)')
193 & tbarfile(1:ilt), '.', optimcycle
194 write(adfnametbar,'(3a,i10.10)')
195 & yadprefix, tbarfile(1:ilt), '.', optimcycle
196 do irec = 1,nmonsrec
197 #ifdef ALLOW_ADJOINT_RUN
198 call active_write_xy( adfnametbar, tmpfld2d, irec,
199 & optimcycle, mythid, xx_tbar_mean_dummy )
200 #endif
201 enddo
202 #endif
203 #endif
204
205 #ifdef ALLOW_DAILYSST_COST_CONTRIBUTION
206 IF (using_cost_sst) THEN
207 cph#ifdef ALLOW_SEAICE_COST_AREASST
208 c-- Save tbar on file.
209 ilt=ilnblnk( sstbarfile )
210 write(fnamesstbar,'(2a,i10.10)')
211 & sstbarfile(1:ilt), '.', optimcycle
212 write(adfnamesstbar,'(3a,i10.10)')
213 & yadprefix, sstbarfile(1:ilt), '.', optimcycle
214 do irec = 1,ndaysrec
215 #ifdef ALLOW_ADJOINT_RUN
216 call active_write_xy( adfnamesstbar, tmpfld2d, irec,
217 & optimcycle, mythid, xx_sstbar_mean_dummy )
218 #endif
219 enddo
220 ENDIF ! IF (using_cost_sst) THEN
221 #endif
222
223 #if (defined (ALLOW_SALT_COST_CONTRIBUTION) || \
224 defined (ALLOW_CTDS_COST_CONTRIBUTION) || \
225 defined (ALLOW_CTDSCLIM_COST_CONTRIBUTION) || \
226 defined (ALLOW_DRIFT_COST_CONTRIBUTION) || \
227 defined (ALLOW_OBCS_COST_CONTRIBUTION))
228 c-- Save sbar.
229 ils=ilnblnk( sbarfile )
230 write(fnamesbar,'(2a,i10.10)')
231 & sbarfile(1:ils), '.', optimcycle
232 write(adfnamesbar,'(3a,i10.10)')
233 & yadprefix, sbarfile(1:ils), '.', optimcycle
234
235 do irec = 1,nmonsrec
236 #ifdef ALLOW_ADJOINT_RUN
237 call active_write_xyz( adfnamesbar, tmpfld3d, irec,
238 & optimcycle, mythid, xx_sbar_mean_dummy)
239 #endif
240 enddo
241 #else
242 #ifdef ALLOW_SST_COST_CONTRIBUTION
243 c-- Save sbar.
244 ils=ilnblnk( sbarfile )
245 write(fnamesbar,'(2a,i10.10)')
246 & sbarfile(1:ils), '.', optimcycle
247 write(adfnamesbar,'(3a,i10.10)')
248 & yadprefix, sbarfile(1:ils), '.', optimcycle
249
250 do irec = 1,nmonsrec
251 #ifdef ALLOW_ADJOINT_RUN
252 call active_write_xy( adfnamesbar, tmpfld2d, irec,
253 & optimcycle, mythid, xx_sbar_mean_dummy)
254 #endif
255 enddo
256 #endif
257 #endif
258
259 #if (defined (ALLOW_DRIFTER_COST_CONTRIBUTION) || \
260 defined (ALLOW_OBCS_COST_CONTRIBUTION))
261 cph There is a mismatch between the cost_drifer and the
262 cph cost_obcs usage of ubar, vbar.
263 cph cost_obcs refers to monthly means, cost_drifer to total mean.
264 cph Needs to be updated for cost_drifer.
265
266 c-- Save ubar and vbar.
267 ils=ilnblnk( ubarfile )
268 write(fnameubar,'(2a,i10.10)')
269 & ubarfile(1:ils), '.', optimcycle
270 write(fnamevbar,'(2a,i10.10)')
271 & vbarfile(1:ils), '.', optimcycle
272 write(adfnameubar,'(3a,i10.10)')
273 & yadprefix, ubarfile(1:ils), '.', optimcycle
274 write(adfnamevbar,'(3a,i10.10)')
275 & yadprefix, vbarfile(1:ils), '.', optimcycle
276
277 do irec = 1,nmonsrec
278 #ifdef ALLOW_ADJOINT_RUN
279 call active_write_xyz( adfnameubar, tmpfld3d, irec,
280 & optimcycle, mythid, xx_ubar_mean_dummy)
281 call active_write_xyz( adfnamevbar, tmpfld3d, irec,
282 & optimcycle, mythid, xx_vbar_mean_dummy)
283 #endif
284 enddo
285 #endif
286
287 #ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
288 c-- Save wbar
289 ils=ilnblnk( wbarfile )
290 write(fnamewbar,'(2a,i10.10)')
291 & wbarfile(1:ils), '.', optimcycle
292 write(adfnamewbar,'(3a,i10.10)')
293 & yadprefix, wbarfile(1:ils), '.', optimcycle
294
295 do irec = 1,nmonsrec
296 #ifdef ALLOW_ADJOINT_RUN
297 call active_write_xyz( adfnamewbar, tmpfld3d, irec,
298 & optimcycle, mythid, xx_wbar_mean_dummy)
299 #endif
300 enddo
301 #endif
302
303 IF (using_cost_scat) THEN
304 #if (defined (ALLOW_SCAT_COST_CONTRIBUTION) || \
305 defined (ALLOW_DAILYSCAT_COST_CONTRIBUTION) )
306 c-- Save tauxbar, tauybar on file.
307 ilps=ilnblnk( tauxbarfile )
308 write(fnametauxbar,'(2a,i10.10)')
309 & tauxbarfile(1:ilps), '.', optimcycle
310 write(adfnametauxbar,'(3a,i10.10)')
311 & yadprefix, tauxbarfile(1:ilps), '.', optimcycle
312 ilps=ilnblnk( tauybarfile )
313 write(fnametauybar,'(2a,i10.10)')
314 & tauybarfile(1:ilps), '.', optimcycle
315 write(adfnametauybar,'(3a,i10.10)')
316 & yadprefix, tauybarfile(1:ilps), '.', optimcycle
317
318 #ifdef ALLOW_SCAT_COST_CONTRIBUTION
319 do irec = 1, nmonsrec
320 #else
321 do irec = 1, ndaysrec
322 #endif
323 #ifdef ALLOW_ADJOINT_RUN
324 call active_write_xy( adfnametauxbar, tmpfld2d, irec,
325 & optimcycle,mythid, xx_taux_mean_dummy )
326 call active_write_xy( adfnametauybar, tmpfld2d, irec,
327 & optimcycle,mythid, xx_tauy_mean_dummy )
328 #endif
329 enddo
330 #endif
331 ENDIF ! IF (using_cost_scat) THEN
332
333 #ifdef ALLOW_MEAN_HFLUX_COST_CONTRIBUTION
334 c-- Save hfluxmeanbar on file.
335 ilps=ilnblnk( hfluxmeanbarfile )
336 write(fnamehfluxmeanbar,'(2a,i10.10)')
337 & hfluxmeanbarfile(1:ilps), '.', optimcycle
338 write(adfnamehfluxmeanbar,'(3a,i10.10)')
339 & yadprefix, hfluxmeanbarfile(1:ilps), '.', optimcycle
340
341 do irec = 1, nyearsrec
342 #ifdef ALLOW_ADJOINT_RUN
343 call active_write_xy( adfnamehfluxmeanbar, tmpfld2d, irec,
344 & optimcycle,mythid, xx_hflux_mean_dummy )
345 #endif
346 enddo
347 #endif
348
349 #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
350 c-- Save sfluxmeanbar on file.
351 ilps=ilnblnk( sfluxmeanbarfile )
352 write(fnamesfluxmeanbar,'(2a,i10.10)')
353 & sfluxmeanbarfile(1:ilps), '.', optimcycle
354 write(adfnamesfluxmeanbar,'(3a,i10.10)')
355 & yadprefix, sfluxmeanbarfile(1:ilps), '.', optimcycle
356
357 do irec = 1, nyearsrec
358 #ifdef ALLOW_ADJOINT_RUN
359 call active_write_xy( adfnamesfluxmeanbar, tmpfld2d, irec,
360 & optimcycle,mythid, xx_sflux_mean_dummy )
361 #endif
362 enddo
363 #endif
364
365 #ifdef ALLOW_SEAICE
366 if (useSEAICE) then
367
368 #ifdef ALLOW_SEAICE_COST_SMR_AREA
369 c initialize smr area bar
370 ilps=ilnblnk( smrareabarfile )
371 write(fnamesmrareabar,'(2a,i10.10)')
372 & smrareabarfile(1:ilps), '.', optimcycle
373 write(adfnamesmrareabar,'(3a,i10.10)')
374 & yadprefix, smrareabarfile(1:ilps), '.', optimcycle
375 c initialize smr sst bar
376 ilps=ilnblnk( smrsstbarfile )
377 write(fnamesmrsstbar,'(2a,i10.10)')
378 & smrsstbarfile(1:ilps), '.', optimcycle
379 write(adfnamesmrsstbar,'(3a,i10.10)')
380 & yadprefix, smrsstbarfile(1:ilps), '.', optimcycle
381 c initialize smr sss bar
382 ilps=ilnblnk( smrsssbarfile )
383 write(fnamesmrsssbar,'(2a,i10.10)')
384 & smrsssbarfile(1:ilps), '.', optimcycle
385 write(adfnamesmrsssbar,'(3a,i10.10)')
386 & yadprefix, smrsssbarfile(1:ilps), '.', optimcycle
387
388 do irec = 1, ndaysrec
389 #ifdef ALLOW_ADJOINT_RUN
390 call active_write_xy( adfnamesmrareabar, tmpfld2d, irec,
391 & optimcycle,mythid, xx_smrareabar_mean_dummy )
392 call active_write_xy( adfnamesmrsstbar, tmpfld3d, irec,
393 & optimcycle,mythid, xx_smrsstbar_mean_dummy )
394 call active_write_xy( adfnamesmrsssbar, tmpfld3d, irec,
395 & optimcycle,mythid, xx_smrsssbar_mean_dummy )
396 #endif
397 enddo
398 #endif /* ALLOW_SEAICE_COST_SMR_AREA */
399
400 endif
401 #endif /* ALLOW_SEAICE */
402
403
404 #ifdef ALLOW_GENCOST_CONTRIBUTION
405 c-- Save gencost_barfile on file.
406 do k=1,NGENCOST
407 if ( (using_gencost(k)).AND.(gencost_barfile(k).ne.' ') ) then
408 ilt=ilnblnk( gencost_barfile(k) )
409 write(fname_gencostbar,'(2a,i10.10)')
410 & gencost_barfile(k)(1:ilt), '.', optimcycle
411 write(adfname_gencostbar,'(3a,i10.10)')
412 & yadprefix, gencost_barfile(k)(1:ilt), '.', optimcycle
413 do irec = 1,gencost_nrec(k)
414 #ifdef ALLOW_ADJOINT_RUN
415 call active_write_xy( adfname_gencostbar, tmpfld2d, irec,
416 & optimcycle, mythid, xx_genbar_dummy(k) )
417 #endif
418 enddo
419 endif
420 enddo
421 #endif /* ALLOW_GENCOST_CONTRIBUTION */
422
423 #ifdef ALLOW_IESTAU_COST_CONTRIBUTION
424 ilps=ilnblnk( iestaubarfile )
425 write(fnameiestaubar,'(2a,i10.10)')
426 & iestaubarfile(1:ilps), '.', optimcycle
427 write(adfnameiestaubar,'(3a,i10.10)')
428 & yadprefix, iestaubarfile(1:ilps), '.', optimcycle
429 do irec = 1, ndaysrec
430 #ifdef ALLOW_ADJOINT_RUN
431 call active_write_xy( adfnameiestaubar, tmpfld2d, irec,
432 & optimcycle,mythid, xx_iestaubar_mean_dummy )
433 #endif
434 enddo
435
436 #endif
437
438 return
439 end
440

  ViewVC Help
Powered by ViewVC 1.1.22