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

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

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

revision 1.5 by heimbach, Fri Sep 28 15:15:55 2001 UTC revision 1.12 by heimbach, Thu Mar 4 19:49:47 2004 UTC
# Line 20  C     !USES: Line 20  C     !USES:
20        implicit none        implicit none
21    
22  c     == global variables ==  c     == global variables ==
 #include "EEPARAMS.h"  
23  #include "SIZE.h"  #include "SIZE.h"
24    #include "EEPARAMS.h"
25    #include "PARAMS.h"
26  #include "DYNVARS.h"  #include "DYNVARS.h"
27    #include "GRID.h"
28  #include "TR1.h"  #include "TR1.h"
29  #include "ctrl.h"  #include "ctrl.h"
30  #include "ctrl_dummy.h"  #include "ctrl_dummy.h"
31  #include "optim.h"  #include "optim.h"
32    #ifdef ALLOW_ECCO
33    # include "ecco_cost.h"
34    #endif
35    
36  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
37  c     == routine arguments ==  c     == routine arguments ==
# Line 52  c     == local variables == Line 57  c     == local variables ==
57        character*( 80)   fnametr1        character*( 80)   fnametr1
58        character*( 80)   fnamediffkr        character*( 80)   fnamediffkr
59        character*( 80)   fnamekapgm        character*( 80)   fnamekapgm
60          character*( 80)   fnameefluxy
61          character*( 80)   fnameefluxp
62          character*( 80)   fnamebottomdrag
63    
64        _RL     fac        _RL     fac
65          _RL tmptest
66    
67  c     == external ==  c     == external ==
68        integer  ilnblnk        integer  ilnblnk
# Line 66  CEOP Line 75  CEOP
75        jthi = mybyhi(mythid)        jthi = mybyhi(mythid)
76        itlo = mybxlo(mythid)        itlo = mybxlo(mythid)
77        ithi = mybxhi(mythid)        ithi = mybxhi(mythid)
78        jmin = 1-oly        jmin = 1
79        jmax = sny+oly        jmax = sny
80        imin = 1-olx        imin = 1
81        imax = snx+olx        imax = snx
82    
83        doglobalread = .false.        doglobalread = .false.
84        ladinit      = .false.        ladinit      = .false.
# Line 87  c--   Temperature field. Line 96  c--   Temperature field.
96        il=ilnblnk( xx_theta_file )        il=ilnblnk( xx_theta_file )
97        write(fnametheta(1:80),'(2a,i10.10)')        write(fnametheta(1:80),'(2a,i10.10)')
98       &     xx_theta_file(1:il),'.',optimcycle       &     xx_theta_file(1:il),'.',optimcycle
99        call active_read_xyz( fnametheta, tmpfld3d, 1,        call active_read_xyz_loc( fnametheta, tmpfld3d, 1,
100       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
101       &                      mythid, xx_theta_dummy )       &                      mythid, xx_theta_dummy )
102    
# Line 96  c--   Temperature field. Line 105  c--   Temperature field.
105            do k = 1,nr            do k = 1,nr
106              do j = jmin,jmax              do j = jmin,jmax
107                do i = imin,imax                do i = imin,imax
108    #ifdef ALLOW_ECCO
109                   IF (abs(tmpfld3d(i,j,k,bi,bj)).gt.
110         $          2.0/sqrt(wtheta(k,bi,bj)))
111         $          tmpfld3d(i,j,k,bi,bj)=
112         $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
113    #endif
114                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
115       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
116  cph                gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +                  if(theta(i,j,k,bi,bj).lt.-2.0)
117  cph     &                               fac*tmpfld3d(i,j,k,bi,bj)       &               theta(i,j,k,bi,bj)= -2.0
118                enddo                enddo
119              enddo              enddo
120            enddo            enddo
121         enddo         enddo
122        enddo        enddo
123    
124  #endif  #endif
125    
126  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
# Line 112  c--   Temperature field. Line 128  c--   Temperature field.
128        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
129        write(fnamesalt(1:80),'(2a,i10.10)')        write(fnamesalt(1:80),'(2a,i10.10)')
130       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
131        call active_read_xyz( fnamesalt, tmpfld3d, 1,        call active_read_xyz_loc( fnamesalt, tmpfld3d, 1,
132       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
133       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
134    
# Line 121  c--   Temperature field. Line 137  c--   Temperature field.
137            do k = 1,nr            do k = 1,nr
138              do j = jmin,jmax              do j = jmin,jmax
139                do i = imin,imax                do i = imin,imax
140    #ifdef ALLOW_ECCO
141                   IF (abs(tmpfld3d(i,j,k,bi,bj)).gt.
142         $          2.0/sqrt(wsalt(k,bi,bj)))
143         $          tmpfld3d(i,j,k,bi,bj)=
144         $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
145    #endif
146                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
147       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
148  cph                gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +  
 cph     &                               fac*tmpfld3d(i,j,k,bi,bj)  
149                enddo                enddo
150              enddo              enddo
151            enddo            enddo
152         enddo         enddo
153        enddo        enddO
154  #endif  #endif
155    
156  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
# Line 137  c--   Temperature field. Line 158  c--   Temperature field.
158        il=ilnblnk( xx_tr1_file )        il=ilnblnk( xx_tr1_file )
159        write(fnametr1(1:80),'(2a,i10.10)')        write(fnametr1(1:80),'(2a,i10.10)')
160       &     xx_tr1_file(1:il),'.',optimcycle       &     xx_tr1_file(1:il),'.',optimcycle
161        call active_read_xyz( fnametr1, tmpfld3d, 1,        call active_read_xyz_loc( fnametr1, tmpfld3d, 1,
162       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
163       &                      mythid, xx_tr1_dummy )       &                      mythid, xx_tr1_dummy )
164    
# Line 148  c--   Temperature field. Line 169  c--   Temperature field.
169                do i = imin,imax                do i = imin,imax
170                  tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +                  tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
171       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
 cph                gtr1Nm1(i,j,k,bi,bj) = gtr1Nm1(i,j,k,bi,bj) +  
 cph     &                               fac*tmpfld3d(i,j,k,bi,bj)  
172                enddo                enddo
173              enddo              enddo
174            enddo            enddo
# Line 162  c--   diffkr. Line 181  c--   diffkr.
181        il=ilnblnk( xx_diffkr_file )        il=ilnblnk( xx_diffkr_file )
182        write(fnamediffkr(1:80),'(2a,i10.10)')        write(fnamediffkr(1:80),'(2a,i10.10)')
183       &     xx_diffkr_file(1:il),'.',optimcycle       &     xx_diffkr_file(1:il),'.',optimcycle
184        call active_read_xyz( fnamediffkr, tmpfld3d, 1,        call active_read_xyz_loc( fnamediffkr, tmpfld3d, 1,
185       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
186       &                      mythid, xx_diffkr_dummy )       &                      mythid, xx_diffkr_dummy )
187        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 184  c--   kapgm. Line 203  c--   kapgm.
203        il=ilnblnk( xx_kapgm_file )        il=ilnblnk( xx_kapgm_file )
204        write(fnamekapgm(1:80),'(2a,i10.10)')        write(fnamekapgm(1:80),'(2a,i10.10)')
205       &     xx_kapgm_file(1:il),'.',optimcycle       &     xx_kapgm_file(1:il),'.',optimcycle
206        call active_read_xyz( fnamekapgm, tmpfld3d, 1,        call active_read_xyz_loc( fnamekapgm, tmpfld3d, 1,
207       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
208       &                      mythid, xx_kapgm_dummy )       &                      mythid, xx_kapgm_dummy )
209        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 201  c--   kapgm. Line 220  c--   kapgm.
220        enddo        enddo
221  #endif  #endif
222    
223    #ifdef ALLOW_EFLUXY0_CONTROL
224    c--   y-component EP-flux field.
225          il=ilnblnk( xx_efluxy_file )
226          write(fnameefluxy(1:80),'(2a,i10.10)')
227         &     xx_efluxy_file(1:il),'.',optimcycle
228          call active_read_xyz_loc( fnameefluxy, tmpfld3d, 1,
229         &                      doglobalread, ladinit, optimcycle,
230         &                      mythid, xx_efluxy_dummy )
231    
232          do bj = jtlo,jthi
233            do bi = itlo,ithi
234              do k = 1,nr
235                do j = jmin,jmax
236                  do i = imin,imax
237                    EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
238         &                                - fac*tmpfld3d(i,j,k,bi,bj)
239         &                                  *maskS(i,j,k,bi,bj)
240    cph                EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
241    cph     &                                - rSphere*cosFacU(J,bi,bj)
242    cph     &                                  *fac*tmpfld3d(i,j,k,bi,bj)
243                  enddo
244                enddo
245              enddo
246           enddo
247          enddo
248    #endif
249    
250    #ifdef ALLOW_EFLUXP0_CONTROL
251    c--   p-component EP-flux field.
252          il=ilnblnk( xx_efluxp_file )
253          write(fnameefluxp(1:80),'(2a,i10.10)')
254         &     xx_efluxp_file(1:il),'.',optimcycle
255          call active_read_xyz_loc( fnameefluxp, tmpfld3d, 1,
256         &                      doglobalread, ladinit, optimcycle,
257         &                      mythid, xx_efluxp_dummy )
258    
259          do bj = jtlo,jthi
260            do bi = itlo,ithi
261              do k = 1,nr
262                do j = jmin,jmax
263                  do i = imin,imax
264                    EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
265         &                                + fCori(i,j,bi,bj)
266         &                                  *fac*tmpfld3d(i,j,k,bi,bj)
267         &                                  *hFacV(i,j,k,bi,bj)
268    cph                EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
269    cph     &                                + fCori(i,j,bi,bj)
270    cph     &                                  *rSphere*cosFacU(J,bi,bj)
271    cph     &                                  *fac*tmpfld3d(i,j,k,bi,bj)
272                  enddo
273                enddo
274              enddo
275           enddo
276          enddo
277    #endif
278    
279    #ifdef ALLOW_BOTTOMDRAG_CONTROL
280    c--   bottom drag
281          il=ilnblnk( xx_bottomdrag_file )
282          write(fnamebottomdrag(1:80),'(2a,i10.10)')
283         &     xx_bottomdrag_file(1:il),'.',optimcycle
284          call active_read_xy_loc ( fnamebottomdrag, tmpfld2d, 1,
285         &                      doglobalread, ladinit, optimcycle,
286         &                      mythid, xx_bottomdrag_dummy )
287          do bj = jtlo,jthi
288            do bi = itlo,ithi
289              do j = jmin,jmax
290                do i = imin,imax
291                  bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
292         &                                   + tmpfld2d(i,j,bi,bj)
293                enddo
294              enddo
295            enddo
296          enddo
297    #endif
298    
299    
300  c--   Update the tile edges.  c--   Update the tile edges.
301    
302  #ifdef ALLOW_THETA0_CONTROL  #ifdef ALLOW_THETA0_CONTROL
303        _EXCH_XYZ_R8( theta, mythid )        _EXCH_XYZ_R8( theta, mythid )
304        _EXCH_XYZ_R8( gtNm1, mythid )  cph      _EXCH_XYZ_R8( gtNm1, mythid )
305  #endif  #endif
306  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
307        _EXCH_XYZ_R8(  salt, mythid )        _EXCH_XYZ_R8(  salt, mythid )
308        _EXCH_XYZ_R8( gsNm1, mythid )  cph      _EXCH_XYZ_R8( gsNm1, mythid )
309  #endif  #endif
310  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
311        _EXCH_XYZ_R8(     tr1, mythid )        _EXCH_XYZ_R8(     tr1, mythid )
312        _EXCH_XYZ_R8( gTr1Nm1, mythid )  cph      _EXCH_XYZ_R8( gTr1Nm1, mythid )
313  #endif  #endif
314  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
315        _EXCH_XYZ_R8( diffkr, mythid)        _EXCH_XYZ_R8( diffkr, mythid)
# Line 222  c--   Update the tile edges. Line 317  c--   Update the tile edges.
317  #ifdef ALLOW_KAPGM_CONTROL  #ifdef ALLOW_KAPGM_CONTROL
318        _EXCH_XYZ_R8( kapgm, mythid)        _EXCH_XYZ_R8( kapgm, mythid)
319  #endif  #endif
320    #ifdef ALLOW_EFLUXY0_CONTROL
321          _EXCH_XYZ_R8( EfluxY, mythid )
322    #endif
323    #ifdef ALLOW_EFLUXP0_CONTROL
324          _EXCH_XYZ_R8( EfluxP, mythid )
325    #endif
326    #ifdef ALLOW_BOTTOMDRAG_CONTROL
327          _EXCH_XY_R8( bottomdragfld, mythid )
328    #endif
329    
330    
331        return        return

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22