/[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.15 - (show annotations) (download)
Fri Nov 20 22:29:08 2009 UTC (14 years, 7 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62b, checkpoint62a, checkpoint61z
Changes since 1.14: +24 -33 lines
o Adding I. Fenty seaice cost extensions (after minor cleanup)
  - smrsst, smrsss
  - based on modified seaice_cost_driver (not yet checked into CVS)
  - new runtime "clamp" parameters SEAICE_clamp_salt, SEAICE_clamp_theta

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

  ViewVC Help
Powered by ViewVC 1.1.22