/[MITgcm]/MITgcm/pkg/ctrl/ctrl_map_ini.F
ViewVC logotype

Contents of /MITgcm/pkg/ctrl/ctrl_map_ini.F

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


Revision 1.6 - (show annotations) (download)
Sat Jul 13 02:47:32 2002 UTC (21 years, 10 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint46l_post, checkpoint46g_pre, checkpoint46f_post, checkpoint46b_post, checkpoint46l_pre, checkpoint47a_post, checkpoint46d_pre, checkpoint46j_pre, checkpoint46a_post, checkpoint46j_post, checkpoint46k_post, checkpoint46e_pre, checkpoint46b_pre, checkpoint46c_pre, checkpoint46, checkpoint46h_pre, checkpoint46m_post, checkpoint46a_pre, checkpoint46g_post, checkpoint46i_post, checkpoint46c_post, checkpoint46e_post, checkpoint47, checkpoint46h_post, checkpoint46d_post
Changes since 1.5: +71 -5 lines
Merging new ctrl package from release1_p5:
o new ctrl package
  - adopted from ECCO environment to enable optimization
  - added Eliassen Palm fluxes to controls

1 C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_map_ini.F,v 1.5.4.1 2002/07/12 15:43:54 heimbach Exp $
2
3 #include "CTRL_CPPOPTIONS.h"
4
5 CBOP
6 C !ROUTINE: ctrl_map_ini
7 C !INTERFACE:
8 subroutine ctrl_map_ini( mythid )
9
10 C !DESCRIPTION: \bv
11 c *=================================================================
12 c | SUBROUTINE ctrl_map_ini
13 c | Add the temperature, salinity, and diffusivity parts of the
14 c | control vector to the model state and update the tile halos.
15 c | The control vector is defined in the header file "ctrl.h".
16 c *=================================================================
17 C \ev
18
19 C !USES:
20 implicit none
21
22 c == global variables ==
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "DYNVARS.h"
27 #include "GRID.h"
28 #include "TR1.h"
29 #include "ctrl.h"
30 #include "ctrl_dummy.h"
31 #include "optim.h"
32
33 C !INPUT/OUTPUT PARAMETERS:
34 c == routine arguments ==
35 integer mythid
36
37 C !LOCAL VARIABLES:
38 c == local variables ==
39
40 integer bi,bj
41 integer i,j,k
42 integer itlo,ithi
43 integer jtlo,jthi
44 integer jmin,jmax
45 integer imin,imax
46 integer il
47
48 logical equal
49 logical doglobalread
50 logical ladinit
51
52 character*( 80) fnametheta
53 character*( 80) fnamesalt
54 character*( 80) fnametr1
55 character*( 80) fnamediffkr
56 character*( 80) fnamekapgm
57 character*( 80) fnameefluxy
58 character*( 80) fnameefluxp
59
60 _RL fac
61
62 c == external ==
63 integer ilnblnk
64 external ilnblnk
65
66 c == end of interface ==
67 CEOP
68
69 jtlo = mybylo(mythid)
70 jthi = mybyhi(mythid)
71 itlo = mybxlo(mythid)
72 ithi = mybxhi(mythid)
73 jmin = 1-oly
74 jmax = sny+oly
75 imin = 1-olx
76 imax = snx+olx
77
78 doglobalread = .false.
79 ladinit = .false.
80
81 equal = .true.
82
83 if ( equal ) then
84 fac = 1. _d 0
85 else
86 fac = 0. _d 0
87 endif
88
89 #ifdef ALLOW_THETA0_CONTROL
90 c-- Temperature field.
91 il=ilnblnk( xx_theta_file )
92 write(fnametheta(1:80),'(2a,i10.10)')
93 & xx_theta_file(1:il),'.',optimcycle
94 call active_read_xyz( fnametheta, tmpfld3d, 1,
95 & doglobalread, ladinit, optimcycle,
96 & mythid, xx_theta_dummy )
97
98 do bj = jtlo,jthi
99 do bi = itlo,ithi
100 do k = 1,nr
101 do j = jmin,jmax
102 do i = imin,imax
103 theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
104 & fac*tmpfld3d(i,j,k,bi,bj)
105 cph gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +
106 cph & fac*tmpfld3d(i,j,k,bi,bj)
107 enddo
108 enddo
109 enddo
110 enddo
111 enddo
112 #endif
113
114 #ifdef ALLOW_SALT0_CONTROL
115 c-- Temperature field.
116 il=ilnblnk( xx_salt_file )
117 write(fnamesalt(1:80),'(2a,i10.10)')
118 & xx_salt_file(1:il),'.',optimcycle
119 call active_read_xyz( fnamesalt, tmpfld3d, 1,
120 & doglobalread, ladinit, optimcycle,
121 & mythid, xx_salt_dummy )
122
123 do bj = jtlo,jthi
124 do bi = itlo,ithi
125 do k = 1,nr
126 do j = jmin,jmax
127 do i = imin,imax
128 salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
129 & fac*tmpfld3d(i,j,k,bi,bj)
130 cph gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +
131 cph & fac*tmpfld3d(i,j,k,bi,bj)
132 enddo
133 enddo
134 enddo
135 enddo
136 enddo
137 #endif
138
139 #ifdef ALLOW_TR10_CONTROL
140 c-- Temperature field.
141 il=ilnblnk( xx_tr1_file )
142 write(fnametr1(1:80),'(2a,i10.10)')
143 & xx_tr1_file(1:il),'.',optimcycle
144 call active_read_xyz( fnametr1, tmpfld3d, 1,
145 & doglobalread, ladinit, optimcycle,
146 & mythid, xx_tr1_dummy )
147
148 do bj = jtlo,jthi
149 do bi = itlo,ithi
150 do k = 1,nr
151 do j = jmin,jmax
152 do i = imin,imax
153 tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
154 & fac*tmpfld3d(i,j,k,bi,bj)
155 cph gtr1Nm1(i,j,k,bi,bj) = gtr1Nm1(i,j,k,bi,bj) +
156 cph & fac*tmpfld3d(i,j,k,bi,bj)
157 enddo
158 enddo
159 enddo
160 enddo
161 enddo
162 #endif
163
164 #ifdef ALLOW_DIFFKR_CONTROL
165 c-- diffkr.
166 il=ilnblnk( xx_diffkr_file )
167 write(fnamediffkr(1:80),'(2a,i10.10)')
168 & xx_diffkr_file(1:il),'.',optimcycle
169 call active_read_xyz( fnamediffkr, tmpfld3d, 1,
170 & doglobalread, ladinit, optimcycle,
171 & mythid, xx_diffkr_dummy )
172 do bj = jtlo,jthi
173 do bi = itlo,ithi
174 do k = 1,nr
175 do j = jmin,jmax
176 do i = imin,imax
177 diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) +
178 & tmpfld3d(i,j,k,bi,bj)
179 enddo
180 enddo
181 enddo
182 enddo
183 enddo
184 #endif
185
186 #ifdef ALLOW_KAPGM_CONTROL
187 c-- kapgm.
188 il=ilnblnk( xx_kapgm_file )
189 write(fnamekapgm(1:80),'(2a,i10.10)')
190 & xx_kapgm_file(1:il),'.',optimcycle
191 call active_read_xyz( fnamekapgm, tmpfld3d, 1,
192 & doglobalread, ladinit, optimcycle,
193 & mythid, xx_kapgm_dummy )
194 do bj = jtlo,jthi
195 do bi = itlo,ithi
196 do k = 1,nr
197 do j = jmin,jmax
198 do i = imin,imax
199 kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) +
200 & tmpfld3d(i,j,k,bi,bj)
201 enddo
202 enddo
203 enddo
204 enddo
205 enddo
206 #endif
207
208 #ifdef ALLOW_EFLUXY0_CONTROL
209 c-- y-component EP-flux field.
210 il=ilnblnk( xx_efluxy_file )
211 write(fnameefluxy(1:80),'(2a,i10.10)')
212 & xx_efluxy_file(1:il),'.',optimcycle
213 call active_read_xyz( fnameefluxy, tmpfld3d, 1,
214 & doglobalread, ladinit, optimcycle,
215 & mythid, xx_efluxy_dummy )
216
217 do bj = jtlo,jthi
218 do bi = itlo,ithi
219 do k = 1,nr
220 do j = jmin,jmax
221 do i = imin,imax
222 EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
223 & - fac*tmpfld3d(i,j,k,bi,bj)
224 & *maskS(i,j,k,bi,bj)
225 cph EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
226 cph & - rSphere*cosFacU(J,bi,bj)
227 cph & *fac*tmpfld3d(i,j,k,bi,bj)
228 enddo
229 enddo
230 enddo
231 enddo
232 enddo
233 #endif
234
235 #ifdef ALLOW_EFLUXP0_CONTROL
236 c-- p-component EP-flux field.
237 il=ilnblnk( xx_efluxp_file )
238 write(fnameefluxp(1:80),'(2a,i10.10)')
239 & xx_efluxp_file(1:il),'.',optimcycle
240 call active_read_xyz( fnameefluxp, tmpfld3d, 1,
241 & doglobalread, ladinit, optimcycle,
242 & mythid, xx_efluxp_dummy )
243
244 do bj = jtlo,jthi
245 do bi = itlo,ithi
246 do k = 1,nr
247 do j = jmin,jmax
248 do i = imin,imax
249 EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
250 & + fCori(i,j,bi,bj)
251 & *fac*tmpfld3d(i,j,k,bi,bj)
252 & *hFacV(i,j,k,bi,bj)
253 cph EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
254 cph & + fCori(i,j,bi,bj)
255 cph & *rSphere*cosFacU(J,bi,bj)
256 cph & *fac*tmpfld3d(i,j,k,bi,bj)
257 enddo
258 enddo
259 enddo
260 enddo
261 enddo
262 #endif
263
264
265 c-- Update the tile edges.
266
267 #ifdef ALLOW_THETA0_CONTROL
268 _EXCH_XYZ_R8( theta, mythid )
269 cph _EXCH_XYZ_R8( gtNm1, mythid )
270 #endif
271 #ifdef ALLOW_SALT0_CONTROL
272 _EXCH_XYZ_R8( salt, mythid )
273 cph _EXCH_XYZ_R8( gsNm1, mythid )
274 #endif
275 #ifdef ALLOW_TR10_CONTROL
276 _EXCH_XYZ_R8( tr1, mythid )
277 cph _EXCH_XYZ_R8( gTr1Nm1, mythid )
278 #endif
279 #ifdef ALLOW_DIFFKR_CONTROL
280 _EXCH_XYZ_R8( diffkr, mythid)
281 #endif
282 #ifdef ALLOW_KAPGM_CONTROL
283 _EXCH_XYZ_R8( kapgm, mythid)
284 #endif
285 #ifdef ALLOW_EFLUXY0_CONTROL
286 _EXCH_XYZ_R8( EfluxY, mythid )
287 #endif
288 #ifdef ALLOW_EFLUXP0_CONTROL
289 _EXCH_XYZ_R8( EfluxP, mythid )
290 #endif
291
292
293 return
294 end
295

  ViewVC Help
Powered by ViewVC 1.1.22