/[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.11 - (show annotations) (download)
Fri Jul 18 21:10:16 2003 UTC (20 years, 9 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint51k_post, hrcube4, checkpoint52d_pre, checkpoint52j_pre, checkpoint51o_pre, checkpoint51l_post, checkpoint52k_post, checkpoint52, checkpoint52f_post, checkpoint51f_post, checkpoint51d_post, checkpoint51t_post, checkpoint51n_post, checkpoint52i_pre, hrcube_1, hrcube_2, hrcube_3, checkpoint51s_post, checkpoint51j_post, checkpoint52e_pre, checkpoint52e_post, checkpoint51n_pre, checkpoint52b_pre, checkpoint51l_pre, checkpoint51q_post, checkpoint52b_post, checkpoint52c_post, checkpoint51h_pre, checkpoint52f_pre, branchpoint-genmake2, checkpoint51r_post, checkpoint51i_post, checkpoint52d_post, checkpoint52a_pre, checkpoint52i_post, checkpoint51i_pre, checkpoint52h_pre, checkpoint52j_post, branch-netcdf, checkpoint51e_post, checkpoint51o_post, checkpoint51f_pre, checkpoint52a_post, checkpoint51g_post, ecco_c52_e35, checkpoint51m_post, checkpoint51p_post, checkpoint51u_post
Branch point for: branch-genmake2, branch-nonh, tg2-branch, netcdf-sm0, checkpoint51n_branch
Changes since 1.10: +13 -30 lines
Merging from ecco-branch:
Use cluster local disks for purely local I/O
vs. globally visible disks needed for ctrl stuff.

1 C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_map_ini.F,v 1.5.6.3 2003/07/16 16:38:58 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 character*( 80) fnamebottomdrag
60
61 _RL fac
62
63 c == external ==
64 integer ilnblnk
65 external ilnblnk
66
67 c == end of interface ==
68 CEOP
69
70 jtlo = mybylo(mythid)
71 jthi = mybyhi(mythid)
72 itlo = mybxlo(mythid)
73 ithi = mybxhi(mythid)
74 jmin = 1
75 jmax = sny
76 imin = 1
77 imax = snx
78
79 doglobalread = .false.
80 ladinit = .false.
81
82 equal = .true.
83
84 if ( equal ) then
85 fac = 1. _d 0
86 else
87 fac = 0. _d 0
88 endif
89
90 #ifdef ALLOW_THETA0_CONTROL
91 c-- Temperature field.
92 il=ilnblnk( xx_theta_file )
93 write(fnametheta(1:80),'(2a,i10.10)')
94 & xx_theta_file(1:il),'.',optimcycle
95 call active_read_xyz_loc( fnametheta, tmpfld3d, 1,
96 & doglobalread, ladinit, optimcycle,
97 & mythid, xx_theta_dummy )
98
99 do bj = jtlo,jthi
100 do bi = itlo,ithi
101 do k = 1,nr
102 do j = jmin,jmax
103 do i = imin,imax
104 theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
105 & fac*tmpfld3d(i,j,k,bi,bj)
106 if(theta(i,j,k,bi,bj).lt.-2.0)
107 & theta(i,j,k,bi,bj)= -2.0
108 enddo
109 enddo
110 enddo
111 enddo
112 enddo
113 #endif
114
115 #ifdef ALLOW_SALT0_CONTROL
116 c-- Temperature field.
117 il=ilnblnk( xx_salt_file )
118 write(fnamesalt(1:80),'(2a,i10.10)')
119 & xx_salt_file(1:il),'.',optimcycle
120 call active_read_xyz_loc( fnamesalt, tmpfld3d, 1,
121 & doglobalread, ladinit, optimcycle,
122 & mythid, xx_salt_dummy )
123
124 do bj = jtlo,jthi
125 do bi = itlo,ithi
126 do k = 1,nr
127 do j = jmin,jmax
128 do i = imin,imax
129 salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
130 & fac*tmpfld3d(i,j,k,bi,bj)
131 enddo
132 enddo
133 enddo
134 enddo
135 enddo
136 #endif
137
138 #ifdef ALLOW_TR10_CONTROL
139 c-- Temperature field.
140 il=ilnblnk( xx_tr1_file )
141 write(fnametr1(1:80),'(2a,i10.10)')
142 & xx_tr1_file(1:il),'.',optimcycle
143 call active_read_xyz_loc( fnametr1, tmpfld3d, 1,
144 & doglobalread, ladinit, optimcycle,
145 & mythid, xx_tr1_dummy )
146
147 do bj = jtlo,jthi
148 do bi = itlo,ithi
149 do k = 1,nr
150 do j = jmin,jmax
151 do i = imin,imax
152 tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
153 & fac*tmpfld3d(i,j,k,bi,bj)
154 enddo
155 enddo
156 enddo
157 enddo
158 enddo
159 #endif
160
161 #ifdef ALLOW_DIFFKR_CONTROL
162 c-- diffkr.
163 il=ilnblnk( xx_diffkr_file )
164 write(fnamediffkr(1:80),'(2a,i10.10)')
165 & xx_diffkr_file(1:il),'.',optimcycle
166 call active_read_xyz_loc( fnamediffkr, tmpfld3d, 1,
167 & doglobalread, ladinit, optimcycle,
168 & mythid, xx_diffkr_dummy )
169 do bj = jtlo,jthi
170 do bi = itlo,ithi
171 do k = 1,nr
172 do j = jmin,jmax
173 do i = imin,imax
174 diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) +
175 & tmpfld3d(i,j,k,bi,bj)
176 enddo
177 enddo
178 enddo
179 enddo
180 enddo
181 #endif
182
183 #ifdef ALLOW_KAPGM_CONTROL
184 c-- kapgm.
185 il=ilnblnk( xx_kapgm_file )
186 write(fnamekapgm(1:80),'(2a,i10.10)')
187 & xx_kapgm_file(1:il),'.',optimcycle
188 call active_read_xyz_loc( fnamekapgm, tmpfld3d, 1,
189 & doglobalread, ladinit, optimcycle,
190 & mythid, xx_kapgm_dummy )
191 do bj = jtlo,jthi
192 do bi = itlo,ithi
193 do k = 1,nr
194 do j = jmin,jmax
195 do i = imin,imax
196 kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) +
197 & tmpfld3d(i,j,k,bi,bj)
198 enddo
199 enddo
200 enddo
201 enddo
202 enddo
203 #endif
204
205 #ifdef ALLOW_EFLUXY0_CONTROL
206 c-- y-component EP-flux field.
207 il=ilnblnk( xx_efluxy_file )
208 write(fnameefluxy(1:80),'(2a,i10.10)')
209 & xx_efluxy_file(1:il),'.',optimcycle
210 call active_read_xyz_loc( fnameefluxy, tmpfld3d, 1,
211 & doglobalread, ladinit, optimcycle,
212 & mythid, xx_efluxy_dummy )
213
214 do bj = jtlo,jthi
215 do bi = itlo,ithi
216 do k = 1,nr
217 do j = jmin,jmax
218 do i = imin,imax
219 EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
220 & - fac*tmpfld3d(i,j,k,bi,bj)
221 & *maskS(i,j,k,bi,bj)
222 cph EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
223 cph & - rSphere*cosFacU(J,bi,bj)
224 cph & *fac*tmpfld3d(i,j,k,bi,bj)
225 enddo
226 enddo
227 enddo
228 enddo
229 enddo
230 #endif
231
232 #ifdef ALLOW_EFLUXP0_CONTROL
233 c-- p-component EP-flux field.
234 il=ilnblnk( xx_efluxp_file )
235 write(fnameefluxp(1:80),'(2a,i10.10)')
236 & xx_efluxp_file(1:il),'.',optimcycle
237 call active_read_xyz_loc( fnameefluxp, tmpfld3d, 1,
238 & doglobalread, ladinit, optimcycle,
239 & mythid, xx_efluxp_dummy )
240
241 do bj = jtlo,jthi
242 do bi = itlo,ithi
243 do k = 1,nr
244 do j = jmin,jmax
245 do i = imin,imax
246 EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
247 & + fCori(i,j,bi,bj)
248 & *fac*tmpfld3d(i,j,k,bi,bj)
249 & *hFacV(i,j,k,bi,bj)
250 cph EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
251 cph & + fCori(i,j,bi,bj)
252 cph & *rSphere*cosFacU(J,bi,bj)
253 cph & *fac*tmpfld3d(i,j,k,bi,bj)
254 enddo
255 enddo
256 enddo
257 enddo
258 enddo
259 #endif
260
261 #ifdef ALLOW_BOTTOMDRAG_CONTROL
262 c-- bottom drag
263 il=ilnblnk( xx_bottomdrag_file )
264 write(fnamebottomdrag(1:80),'(2a,i10.10)')
265 & xx_bottomdrag_file(1:il),'.',optimcycle
266 call active_read_xy_loc ( fnamebottomdrag, tmpfld2d, 1,
267 & doglobalread, ladinit, optimcycle,
268 & mythid, xx_bottomdrag_dummy )
269 do bj = jtlo,jthi
270 do bi = itlo,ithi
271 do j = jmin,jmax
272 do i = imin,imax
273 bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
274 & + tmpfld2d(i,j,bi,bj)
275 enddo
276 enddo
277 enddo
278 enddo
279 #endif
280
281
282 c-- Update the tile edges.
283
284 #ifdef ALLOW_THETA0_CONTROL
285 _EXCH_XYZ_R8( theta, mythid )
286 cph _EXCH_XYZ_R8( gtNm1, mythid )
287 #endif
288 #ifdef ALLOW_SALT0_CONTROL
289 _EXCH_XYZ_R8( salt, mythid )
290 cph _EXCH_XYZ_R8( gsNm1, mythid )
291 #endif
292 #ifdef ALLOW_TR10_CONTROL
293 _EXCH_XYZ_R8( tr1, mythid )
294 cph _EXCH_XYZ_R8( gTr1Nm1, mythid )
295 #endif
296 #ifdef ALLOW_DIFFKR_CONTROL
297 _EXCH_XYZ_R8( diffkr, mythid)
298 #endif
299 #ifdef ALLOW_KAPGM_CONTROL
300 _EXCH_XYZ_R8( kapgm, mythid)
301 #endif
302 #ifdef ALLOW_EFLUXY0_CONTROL
303 _EXCH_XYZ_R8( EfluxY, mythid )
304 #endif
305 #ifdef ALLOW_EFLUXP0_CONTROL
306 _EXCH_XYZ_R8( EfluxP, mythid )
307 #endif
308 #ifdef ALLOW_BOTTOMDRAG_CONTROL
309 _EXCH_XY_R8( bottomdragfld, mythid )
310 #endif
311
312
313 return
314 end
315

  ViewVC Help
Powered by ViewVC 1.1.22