/[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.10 by heimbach, Fri Jun 27 01:54:20 2003 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    
3  #include "CTRL_CPPOPTIONS.h"  #include "CTRL_CPPOPTIONS.h"
4    #ifdef ALLOW_PTRACERS
5    # include "PTRACERS_OPTIONS.h"
6    #endif
7    
8  CBOP  CBOP
9  C     !ROUTINE: ctrl_map_ini  C     !ROUTINE: ctrl_map_ini
# Line 20  C     !USES: Line 23  C     !USES:
23        implicit none        implicit none
24    
25  c     == global variables ==  c     == global variables ==
 #include "EEPARAMS.h"  
26  #include "SIZE.h"  #include "SIZE.h"
27    #include "EEPARAMS.h"
28    #include "PARAMS.h"
29  #include "DYNVARS.h"  #include "DYNVARS.h"
30  #include "TR1.h"  #include "GRID.h"
31    #ifdef ALLOW_PASSIVE_TRACER
32    # include "TR1.h"
33    #endif
34    #ifdef ALLOW_PTRACERS
35    # include "PTRACERS.h"
36    #endif
37    
38  #include "ctrl.h"  #include "ctrl.h"
39  #include "ctrl_dummy.h"  #include "ctrl_dummy.h"
40  #include "optim.h"  #include "optim.h"
# Line 52  c     == local variables == Line 63  c     == local variables ==
63        character*( 80)   fnametr1        character*( 80)   fnametr1
64        character*( 80)   fnamediffkr        character*( 80)   fnamediffkr
65        character*( 80)   fnamekapgm        character*( 80)   fnamekapgm
66          character*( 80)   fnameefluxy
67          character*( 80)   fnameefluxp
68          character*( 80)   fnamebottomdrag
69    
70        _RL     fac        _RL     fac
71    
# Line 66  CEOP Line 80  CEOP
80        jthi = mybyhi(mythid)        jthi = mybyhi(mythid)
81        itlo = mybxlo(mythid)        itlo = mybxlo(mythid)
82        ithi = mybxhi(mythid)        ithi = mybxhi(mythid)
83        jmin = 1-oly        jmin = 1
84        jmax = sny+oly        jmax = sny
85        imin = 1-olx        imin = 1
86        imax = snx+olx        imax = snx
87    
88        doglobalread = .false.        doglobalread = .false.
89        ladinit      = .false.        ladinit      = .false.
# Line 98  c--   Temperature field. Line 112  c--   Temperature field.
112                do i = imin,imax                do i = imin,imax
113                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
114       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
115  cph                gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +                  if(theta(i,j,k,bi,bj).lt.-2.0)
116  cph     &                               fac*tmpfld3d(i,j,k,bi,bj)       &               theta(i,j,k,bi,bj)= -2.0  
117                enddo                enddo
118              enddo              enddo
119            enddo            enddo
# Line 123  c--   Temperature field. Line 137  c--   Temperature field.
137                do i = imin,imax                do i = imin,imax
138                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
139       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
 cph                gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +  
 cph     &                               fac*tmpfld3d(i,j,k,bi,bj)  
140                enddo                enddo
141              enddo              enddo
142            enddo            enddo
# Line 146  c--   Temperature field. Line 158  c--   Temperature field.
158            do k = 1,nr            do k = 1,nr
159              do j = jmin,jmax              do j = jmin,jmax
160                do i = imin,imax                do i = imin,imax
161    #if (defined (ALLOW_PASSIVE_TRACER))
162                  tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +                  tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
163       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
164  cph                gtr1Nm1(i,j,k,bi,bj) = gtr1Nm1(i,j,k,bi,bj) +  #elif (defined (ALLOW_PTRACERS))
165  cph     &                               fac*tmpfld3d(i,j,k,bi,bj)                  IF ( NUMBER_OF_PTRACERS .GT. 1 ) STOP
166         & 'ALLOW_TR10_CONTROL with ALLOW_PTRACERS implemented for 1 tracer'
167                    ptracer(i,j,k,bi,bj,1) = ptracer(i,j,k,bi,bj,1) +
168         &                               fac*tmpfld3d(i,j,k,bi,bj)
169    #endif
170                enddo                enddo
171              enddo              enddo
172            enddo            enddo
# Line 201  c--   kapgm. Line 218  c--   kapgm.
218        enddo        enddo
219  #endif  #endif
220    
221    #ifdef ALLOW_EFLUXY0_CONTROL
222    c--   y-component EP-flux field.
223          il=ilnblnk( xx_efluxy_file )
224          write(fnameefluxy(1:80),'(2a,i10.10)')
225         &     xx_efluxy_file(1:il),'.',optimcycle
226          call active_read_xyz( fnameefluxy, tmpfld3d, 1,
227         &                      doglobalread, ladinit, optimcycle,
228         &                      mythid, xx_efluxy_dummy )
229    
230          do bj = jtlo,jthi
231            do bi = itlo,ithi
232              do k = 1,nr
233                do j = jmin,jmax
234                  do i = imin,imax
235                    EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
236         &                                - fac*tmpfld3d(i,j,k,bi,bj)
237         &                                  *maskS(i,j,k,bi,bj)
238    cph                EfluxY(i,j,k,bi,bj) = EfluxY(i,j,k,bi,bj)
239    cph     &                                - rSphere*cosFacU(J,bi,bj)
240    cph     &                                  *fac*tmpfld3d(i,j,k,bi,bj)
241                  enddo
242                enddo
243              enddo
244           enddo
245          enddo
246    #endif
247    
248    #ifdef ALLOW_EFLUXP0_CONTROL
249    c--   p-component EP-flux field.
250          il=ilnblnk( xx_efluxp_file )
251          write(fnameefluxp(1:80),'(2a,i10.10)')
252         &     xx_efluxp_file(1:il),'.',optimcycle
253          call active_read_xyz( fnameefluxp, tmpfld3d, 1,
254         &                      doglobalread, ladinit, optimcycle,
255         &                      mythid, xx_efluxp_dummy )
256    
257          do bj = jtlo,jthi
258            do bi = itlo,ithi
259              do k = 1,nr
260                do j = jmin,jmax
261                  do i = imin,imax
262                    EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
263         &                                + fCori(i,j,bi,bj)
264         &                                  *fac*tmpfld3d(i,j,k,bi,bj)
265         &                                  *hFacV(i,j,k,bi,bj)
266    cph                EfluxP(i,j,k,bi,bj) = EfluxP(i,j,k,bi,bj)
267    cph     &                                + fCori(i,j,bi,bj)
268    cph     &                                  *rSphere*cosFacU(J,bi,bj)
269    cph     &                                  *fac*tmpfld3d(i,j,k,bi,bj)
270                  enddo
271                enddo
272              enddo
273           enddo
274          enddo
275    #endif
276    
277    #ifdef ALLOW_BOTTOMDRAG_CONTROL
278    c--   bottom drag
279          il=ilnblnk( xx_bottomdrag_file )
280          write(fnamebottomdrag(1:80),'(2a,i10.10)')
281         &     xx_bottomdrag_file(1:il),'.',optimcycle
282          call active_read_xy ( fnamebottomdrag, tmpfld2d, 1,
283         &                      doglobalread, ladinit, optimcycle,
284         &                      mythid, xx_bottomdrag_dummy )
285          do bj = jtlo,jthi
286            do bi = itlo,ithi
287              do j = jmin,jmax
288                do i = imin,imax
289                  bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
290         &                                   + tmpfld2d(i,j,bi,bj)
291                enddo
292              enddo
293            enddo
294          enddo
295    #endif
296    
297    
298  c--   Update the tile edges.  c--   Update the tile edges.
299    
300  #ifdef ALLOW_THETA0_CONTROL  #ifdef ALLOW_THETA0_CONTROL
301        _EXCH_XYZ_R8( theta, mythid )        _EXCH_XYZ_R8( theta, mythid )
       _EXCH_XYZ_R8( gtNm1, mythid )  
302  #endif  #endif
303  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
304        _EXCH_XYZ_R8(  salt, mythid )        _EXCH_XYZ_R8(  salt, mythid )
       _EXCH_XYZ_R8( gsNm1, mythid )  
305  #endif  #endif
306  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
307    # if (defined (ALLOW_PASSIVE_TRACER))
308        _EXCH_XYZ_R8(     tr1, mythid )        _EXCH_XYZ_R8(     tr1, mythid )
309        _EXCH_XYZ_R8( gTr1Nm1, mythid )  # elif (defined (ALLOW_PTRACERS))
310          _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,1),myThid)
311    # endif
312  #endif  #endif
313  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
314        _EXCH_XYZ_R8( diffkr, mythid)        _EXCH_XYZ_R8( diffkr, mythid)
# Line 222  c--   Update the tile edges. Line 316  c--   Update the tile edges.
316  #ifdef ALLOW_KAPGM_CONTROL  #ifdef ALLOW_KAPGM_CONTROL
317        _EXCH_XYZ_R8( kapgm, mythid)        _EXCH_XYZ_R8( kapgm, mythid)
318  #endif  #endif
319    #ifdef ALLOW_EFLUXY0_CONTROL
320          _EXCH_XYZ_R8( EfluxY, mythid )
321    #endif
322    #ifdef ALLOW_EFLUXP0_CONTROL
323          _EXCH_XYZ_R8( EfluxP, mythid )
324    #endif
325    #ifdef ALLOW_BOTTOMDRAG_CONTROL
326          _EXCH_XY_R8( bottomdragfld, mythid )
327    #endif
328    
329    
330        return        return

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

  ViewVC Help
Powered by ViewVC 1.1.22