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

Annotation of /MITgcm/pkg/ecco/ecco_cost_init_varia.F

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


Revision 1.17 - (hide annotations) (download)
Tue Feb 16 23:33:37 2010 UTC (14 years, 3 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint62c
Changes since 1.16: +7 -1 lines
allow user defined cost function contributions
	CPP: ALLOW_USERCOST_CONTRIBUTION
	USAGE: compute contributions in cost_usercost_all.F
note: this is identical to what ALLOW_GENCOST_CONTRIBUTION once was.
      the two options are complementary.

1 gforget 1.17 C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost_init_varia.F,v 1.16 2010/02/06 02:43:03 heimbach Exp $
2 jmc 1.13 C $Name: $
3 heimbach 1.1
4     #include "AD_CONFIG.h"
5     #include "COST_CPPOPTIONS.h"
6    
7     subroutine ecco_cost_init_varia( mythid )
8    
9     c ==================================================================
10     c SUBROUTINE ecco_cost_init_varia
11     c ==================================================================
12     c
13     c o Initialise the variable cost function part.
14     c
15     c started: Christian Eckert eckert@mit.edu 30-Jun-1999
16     c changed: Christian Eckert eckert@mit.edu 18-Apr-2000
17     c - Restructured the code in order to create a package
18     c for the MITgcmUV.
19     c heimbach@mit.edu 05-Nov-2003 Now ecco part of cost
20     c
21     c ==================================================================
22     c SUBROUTINE ecco_cost_init_varia
23     c ==================================================================
24    
25     implicit none
26    
27     c == global variables ==
28    
29     #include "EEPARAMS.h"
30     #include "SIZE.h"
31     #include "GRID.h"
32    
33     #include "ecco_cost.h"
34    
35     c == routine arguments ==
36    
37     integer mythid
38    
39     c == local variables ==
40    
41     integer bi,bj
42     integer itlo,ithi
43     integer jtlo,jthi
44     integer imin, imax
45     integer jmin, jmax
46     integer i,j,k
47 heimbach 1.4 integer num_file,num_var
48 heimbach 1.1
49     logical exst
50    
51     c == external functions ==
52    
53     c == end of interface ==
54     jtlo = mybylo(mythid)
55     jthi = mybyhi(mythid)
56     itlo = mybxlo(mythid)
57     ithi = mybxhi(mythid)
58     jmin = 1-OLy
59     jmax = sny+OLy
60     imin = 1-OLx
61     imax = snx+OLy
62    
63     c-- Initialise adjoint of monthly mean files calculated
64     c-- in cost_averagesfields (and their ad...).
65     call cost_averagesinit( mythid )
66     _BARRIER
67    
68     #ifndef ALLOW_TANGENTLINEAR_RUN
69     cph(
70     cph The following init. shoud not be applied if in the middle
71     cph of a divided adjoint run
72     cph)
73     c inquire( file='costfinal', exist=exst )
74     c if ( .NOT. exst) then
75     c call ecco_cost_init_barfiles( mythid )
76     c endif
77     #endif
78    
79     c-- Initialize the tiled cost function contributions.
80     do bj = jtlo,jthi
81     do bi = itlo,ithi
82     objf_hflux(bi,bj) = 0. _d 0
83     objf_hfluxm(bi,bj) = 0. _d 0
84     objf_sflux(bi,bj) = 0. _d 0
85     objf_sfluxm(bi,bj) = 0. _d 0
86     objf_tauu(bi,bj) = 0. _d 0
87     objf_tauum(bi,bj) = 0. _d 0
88     objf_tauv(bi,bj) = 0. _d 0
89     objf_tauvm(bi,bj) = 0. _d 0
90     objf_temp(bi,bj) = 0. _d 0
91     objf_salt(bi,bj) = 0. _d 0
92     objf_temp0(bi,bj) = 0. _d 0
93     objf_salt0(bi,bj) = 0. _d 0
94 heimbach 1.2 objf_temp0smoo(bi,bj) = 0. _d 0
95     objf_salt0smoo(bi,bj) = 0. _d 0
96 heimbach 1.1 objf_tmi(bi,bj) = 0. _d 0
97     objf_sst(bi,bj) = 0. _d 0
98     objf_sss(bi,bj) = 0. _d 0
99 heimbach 1.11 objf_bp(bi,bj) = 0. _d 0
100 heimbach 1.1 objf_h(bi,bj) = 0. _d 0
101 heimbach 1.6 objf_tp(bi,bj) = 0. _d 0
102     objf_ers(bi,bj) = 0. _d 0
103     objf_gfo(bi,bj) = 0. _d 0
104 heimbach 1.1 objf_ctdt(bi,bj) = 0. _d 0
105     objf_ctds(bi,bj) = 0. _d 0
106     objf_ctdtclim(bi,bj) = 0. _d 0
107     objf_ctdsclim(bi,bj) = 0. _d 0
108     objf_xbt(bi,bj) = 0. _d 0
109     objf_argot(bi,bj) = 0. _d 0
110     objf_argos(bi,bj) = 0. _d 0
111     objf_drift(bi,bj) = 0. _d 0
112     objf_wdrift(bi,bj) = 0. _d 0
113     objf_sdrift(bi,bj) = 0. _d 0
114     objf_tdrift(bi,bj) = 0. _d 0
115     objf_scatx(bi,bj) = 0. _d 0
116     objf_scaty(bi,bj) = 0. _d 0
117     objf_scatxm(bi,bj) = 0. _d 0
118     objf_scatym(bi,bj) = 0. _d 0
119     objf_atemp(bi,bj) = 0. _d 0
120     objf_aqh(bi,bj) = 0. _d 0
121     objf_precip(bi,bj) = 0. _d 0
122     objf_swflux(bi,bj) = 0. _d 0
123     objf_swdown(bi,bj) = 0. _d 0
124     objf_uwind(bi,bj) = 0. _d 0
125     objf_vwind(bi,bj) = 0. _d 0
126     objf_obcsn(bi,bj) = 0. _d 0
127     objf_obcss(bi,bj) = 0. _d 0
128     objf_obcsw(bi,bj) = 0. _d 0
129     objf_obcse(bi,bj) = 0. _d 0
130     objf_curmtr(bi,bj) = 0. _d 0
131     objf_ageos(bi,bj) = 0. _d 0
132     objf_diffkr(bi,bj) = 0. _d 0
133     objf_kapgm(bi,bj) = 0. _d 0
134 gforget 1.14 objf_kapredi(bi,bj) = 0. _d 0
135 heimbach 1.1 objf_theta_ini_fin(bi,bj) = 0. _d 0
136     objf_salt_ini_fin(bi,bj) = 0. _d 0
137 gforget 1.8 objf_eddytau(bi,bj) = 0. _d 0
138     objf_bottomdrag(bi,bj) = 0. _d 0
139 heimbach 1.16 #ifdef ALLOW_GENCOST_CONTRIBUTION
140 gforget 1.9 do k=1,NGENCOST
141 heimbach 1.16 objf_gencost(bi,bj,k) = 0. _d 0
142 gforget 1.9 enddo
143 heimbach 1.16 #endif
144 gforget 1.17 do k=1,NUSERCOST
145     objf_usercost(k,bi,bj) = 0. _d 0
146     enddo
147 gforget 1.15 do k=1,NSSHV4COST
148     objf_sshv4cost(k,bi,bj) = 0. _d 0
149     enddo
150 heimbach 1.1 c
151     num_hflux(bi,bj) = 0. _d 0
152     num_hfluxm(bi,bj) = 0. _d 0
153     num_hfluxmm(bi,bj) = 0. _d 0
154     num_sflux(bi,bj) = 0. _d 0
155     num_sfluxm(bi,bj) = 0. _d 0
156     num_sfluxmm(bi,bj) = 0. _d 0
157     num_tauu(bi,bj) = 0. _d 0
158     num_tauum(bi,bj) = 0. _d 0
159     num_tauv(bi,bj) = 0. _d 0
160     num_tauvm(bi,bj) = 0. _d 0
161     num_temp(bi,bj) = 0. _d 0
162     num_salt(bi,bj) = 0. _d 0
163     num_temp0(bi,bj) = 0. _d 0
164     num_salt0(bi,bj) = 0. _d 0
165     num_tmi(bi,bj) = 0. _d 0
166     num_sst(bi,bj) = 0. _d 0
167     num_sss(bi,bj) = 0. _d 0
168 heimbach 1.11 num_bp(bi,bj) = 0. _d 0
169 heimbach 1.1 num_h(bi,bj) = 0. _d 0
170 heimbach 1.6 num_tp(bi,bj) = 0. _d 0
171     num_ers(bi,bj) = 0. _d 0
172     num_gfo(bi,bj) = 0. _d 0
173 heimbach 1.1 num_ctdt(bi,bj) = 0. _d 0
174     num_ctds(bi,bj) = 0. _d 0
175     num_ctdtclim(bi,bj) = 0. _d 0
176     num_ctdsclim(bi,bj) = 0. _d 0
177     num_xbt(bi,bj) = 0. _d 0
178     num_argot(bi,bj) = 0. _d 0
179     num_argos(bi,bj) = 0. _d 0
180     num_drift(bi,bj) = 0. _d 0
181     num_wdrift(bi,bj) = 0. _d 0
182     num_sdrift(bi,bj) = 0. _d 0
183     num_tdrift(bi,bj) = 0. _d 0
184     num_scatx(bi,bj) = 0. _d 0
185     num_scaty(bi,bj) = 0. _d 0
186     num_scatxm(bi,bj) = 0. _d 0
187     num_scatym(bi,bj) = 0. _d 0
188     num_atemp(bi,bj) = 0. _d 0
189     num_aqh(bi,bj) = 0. _d 0
190     num_precip(bi,bj) = 0. _d 0
191     num_swflux(bi,bj) = 0. _d 0
192     num_swdown(bi,bj) = 0. _d 0
193     num_uwind(bi,bj) = 0. _d 0
194     num_vwind(bi,bj) = 0. _d 0
195     num_obcsn(bi,bj) = 0. _d 0
196     num_obcss(bi,bj) = 0. _d 0
197     num_obcsw(bi,bj) = 0. _d 0
198     num_obcse(bi,bj) = 0. _d 0
199     num_curmtr(bi,bj) = 0. _d 0
200     num_ageos(bi,bj) = 0. _d 0
201     num_diffkr(bi,bj) = 0. _d 0
202     num_kapgm(bi,bj) = 0. _d 0
203 gforget 1.14 num_kapredi(bi,bj) = 0. _d 0
204 gforget 1.8 num_eddytau(bi,bj) = 0. _d 0
205     num_bottomdrag(bi,bj) = 0. _d 0
206 heimbach 1.16 #ifdef ALLOW_GENCOST_CONTRIBUTION
207 gforget 1.9 do k=1,NGENCOST
208 heimbach 1.16 num_gencost(bi,bj,k) = 0. _d 0
209 gforget 1.9 enddo
210 heimbach 1.16 #endif
211 gforget 1.17 do k=1,NUSERCOST
212     num_usercost(k,bi,bj) = 0. _d 0
213     enddo
214 gforget 1.15 do k=1,NSSHV4COST
215     num_sshv4cost(k,bi,bj) = 0. _d 0
216     enddo
217 heimbach 1.1 num_theta_ini_fin(bi,bj) = 0. _d 0
218     num_salt_ini_fin(bi,bj) = 0. _d 0
219     enddo
220     enddo
221    
222     k = 1
223     do bj = jtlo,jthi
224     do bi = itlo,ithi
225     do j = jmin,jmax
226     do i = imin,imax
227     #ifdef ALLOW_SSH_COST_CONTRIBUTION
228     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
229     tpmeanmask(i,j,bi,bj) = 0. _d 0
230     else
231     tpmeanmask(i,j,bi,bj) = 1. _d 0
232     endif
233     tpmean(i,j,bi,bj) = 0. _d 0
234     #endif
235     #ifdef ALLOW_SSH_TPANOM_COST_CONTRIBUTION
236     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
237     tpmask(i,j,bi,bj) = 0. _d 0
238     else
239     tpmask(i,j,bi,bj) = 1. _d 0
240     endif
241     tpobs(i,j,bi,bj) = 0. _d 0
242     #endif
243     #ifdef ALLOW_SSH_ERSANOM_COST_CONTRIBUTION
244     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
245     ersmask(i,j,bi,bj) = 0. _d 0
246     else
247     ersmask(i,j,bi,bj) = 1. _d 0
248     endif
249     ersobs(i,j,bi,bj) = 0. _d 0
250     #endif
251 heimbach 1.3 #ifdef ALLOW_SSH_GFOANOM_COST_CONTRIBUTION
252     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
253     gfomask(i,j,bi,bj) = 0. _d 0
254     else
255     gfomask(i,j,bi,bj) = 1. _d 0
256     endif
257     gfoobs(i,j,bi,bj) = 0. _d 0
258     #endif
259 heimbach 1.1 #ifdef ALLOW_TMI_SST_COST_CONTRIBUTION
260     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
261     tmimask(i,j,bi,bj) = 0. _d 0
262     else
263     tmimask(i,j,bi,bj) = 1. _d 0
264     endif
265     #endif
266     #ifdef ALLOW_SST_COST_CONTRIBUTION
267     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
268     sstmask(i,j,bi,bj) = 0. _d 0
269     else
270     sstmask(i,j,bi,bj) = 1. _d 0
271     endif
272     #endif
273     #ifdef ALLOW_SSS_COST_CONTRIBUTION
274     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
275     sssmask(i,j,bi,bj) = 0. _d 0
276     else
277     sssmask(i,j,bi,bj) = 1. _d 0
278     endif
279     #endif
280 heimbach 1.11 #ifdef ALLOW_BP_COST_CONTRIBUTION
281     if (_hFacC(i,j,k,bi,bj) .eq. 0.) then
282     bpmask(i,j,bi,bj) = 0. _d 0
283     else
284     bpmask(i,j,bi,bj) = 1. _d 0
285     endif
286     bpdat(i,j,bi,bj) = 0. _d 0
287     #endif
288 heimbach 1.1 enddo
289     enddo
290     enddo
291     enddo
292    
293     c-- Initialise the "global" parts of the cost function.
294     _BEGIN_MASTER( mythid )
295     objf_obcsvol = 0. _d 0
296     objf_hmean = 0. _d 0
297 heimbach 1.12 objf_hfluxmm = 0. _d 0
298 heimbach 1.7 objf_sfluxmm = 0. _d 0
299 heimbach 1.10 objf_transp = 0. _d 0
300 heimbach 1.1 num_obcsvol = 0. _d 0
301     num_hmean = 0. _d 0
302 heimbach 1.10 num_transp = 0. _d 0
303 heimbach 1.1 _END_MASTER( mythid )
304    
305     _BARRIER
306    
307     return
308     end
309    

  ViewVC Help
Powered by ViewVC 1.1.22