/[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.1 by heimbach, Sun Mar 25 22:33:55 2001 UTC revision 1.11 by heimbach, Fri Jul 18 21:10:16 2003 UTC
# Line 2  C $Header$ Line 2  C $Header$
2    
3  #include "CTRL_CPPOPTIONS.h"  #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        subroutine ctrl_map_ini(  C     !USES:
      I                     mythid  
      &                   )  
   
 c     ==================================================================  
 c     SUBROUTINE ctrl_map_ini  
 c     ==================================================================  
 c  
 c     o Add the temperature and salinity parts of the control vector to  
 c       the model state and update the tile edges. The control vector is  
 c       defined in the header file "ctrl.h".  
 c  
 c     started: Christian Eckert eckert@mit.edu 30-Jun-1999  
 c  
 c     changed: Christian Eckert eckert@mit.edu 23-Feb-2000  
 c  
 c              - Restructured the code in order to create a package  
 c                for the MITgcmUV.  
 c  
 c     ==================================================================  
 c     SUBROUTINE ctrl_map_ini  
 c     ==================================================================  
   
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"
29  #include "ctrl.h"  #include "ctrl.h"
30  #include "ctrl_dummy.h"  #include "ctrl_dummy.h"
31    #include "optim.h"
32    
33    C     !INPUT/OUTPUT PARAMETERS:
34  c     == routine arguments ==  c     == routine arguments ==
   
35        integer mythid        integer mythid
36    
37    C     !LOCAL VARIABLES:
38  c     == local variables ==  c     == local variables ==
39    
       _RL     fac  
40        integer bi,bj        integer bi,bj
41        integer i,j,k        integer i,j,k
42        integer itlo,ithi        integer itlo,ithi
# Line 58  c     == local variables == Line 51  c     == local variables ==
51    
52        character*( 80)   fnametheta        character*( 80)   fnametheta
53        character*( 80)   fnamesalt        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  c     == external ==        _RL     fac
62    
63    c     == external ==
64        integer  ilnblnk        integer  ilnblnk
65        external ilnblnk        external ilnblnk
66    
67  c     == end of interface ==  c     == end of interface ==
68    CEOP
69    
70        jtlo = mybylo(mythid)        jtlo = mybylo(mythid)
71        jthi = mybyhi(mythid)        jthi = mybyhi(mythid)
72        itlo = mybxlo(mythid)        itlo = mybxlo(mythid)
73        ithi = mybxhi(mythid)        ithi = mybxhi(mythid)
74        jmin = 1-oly        jmin = 1
75        jmax = sny+oly        jmax = sny
76        imin = 1-olx        imin = 1
77        imax = snx+olx        imax = snx
78    
79        doglobalread = .false.        doglobalread = .false.
80        ladinit      = .false.        ladinit      = .false.
# Line 91  c--   Temperature field. Line 92  c--   Temperature field.
92        il=ilnblnk( xx_theta_file )        il=ilnblnk( xx_theta_file )
93        write(fnametheta(1:80),'(2a,i10.10)')        write(fnametheta(1:80),'(2a,i10.10)')
94       &     xx_theta_file(1:il),'.',optimcycle       &     xx_theta_file(1:il),'.',optimcycle
95        call active_read_xyz( fnametheta, tmpfld3d, 1,        call active_read_xyz_loc( fnametheta, tmpfld3d, 1,
96       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
97       &                      mythid, xx_theta_dummy )       &                      mythid, xx_theta_dummy )
98    
# Line 102  c--   Temperature field. Line 103  c--   Temperature field.
103                do i = imin,imax                do i = imin,imax
104                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
105       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
106                  gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +                  if(theta(i,j,k,bi,bj).lt.-2.0)
107       &                               fac*tmpfld3d(i,j,k,bi,bj)       &               theta(i,j,k,bi,bj)= -2.0  
108                enddo                enddo
109              enddo              enddo
110            enddo            enddo
# Line 116  c--   Temperature field. Line 117  c--   Temperature field.
117        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
118        write(fnamesalt(1:80),'(2a,i10.10)')        write(fnamesalt(1:80),'(2a,i10.10)')
119       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
120        call active_read_xyz( fnamesalt, tmpfld3d, 1,        call active_read_xyz_loc( fnamesalt, tmpfld3d, 1,
121       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
122       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
123    
# Line 127  c--   Temperature field. Line 128  c--   Temperature field.
128                do i = imin,imax                do i = imin,imax
129                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
130       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
131                  gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +                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)       &                               fac*tmpfld3d(i,j,k,bi,bj)
154                enddo                enddo
155              enddo              enddo
# Line 136  c--   Temperature field. Line 158  c--   Temperature field.
158        enddo        enddo
159  #endif  #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.  c--   Update the tile edges.
283    
284  #ifdef ALLOW_THETA0_CONTROL  #ifdef ALLOW_THETA0_CONTROL
285        _EXCH_XYZ_R8( theta, mythid )        _EXCH_XYZ_R8( theta, mythid )
286        _EXCH_XYZ_R8( gtNm1, mythid )  cph      _EXCH_XYZ_R8( gtNm1, mythid )
287  #endif  #endif
288  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
289        _EXCH_XYZ_R8(  salt, mythid )        _EXCH_XYZ_R8(  salt, mythid )
290        _EXCH_XYZ_R8( gsNm1, mythid )  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  #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        return
314        end        end

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22