/[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.22 by heimbach, Mon May 14 22:02:34 2007 UTC revision 1.28 by gforget, Sat Feb 2 02:34:49 2008 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
4  #include "CTRL_CPPOPTIONS.h"  #include "CTRL_CPPOPTIONS.h"
5    
# Line 10  C     !INTERFACE: Line 11  C     !INTERFACE:
11  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
12  c     *=================================================================  c     *=================================================================
13  c     | SUBROUTINE ctrl_map_ini  c     | SUBROUTINE ctrl_map_ini
14  c     | Add the temperature, salinity, and diffusivity parts of the  c     | Add the temperature, salinity, and diffusivity parts of the
15  c     | control vector to the model state and update the tile halos.  c     | control vector to the model state and update the tile halos.
16  c     | The control vector is defined in the header file "ctrl.h".  c     | The control vector is defined in the header file "ctrl.h".
17  c     *=================================================================  c     *=================================================================
18  C     \ev  C     \ev
# Line 31  c     == global variables == Line 32  c     == global variables ==
32  #include "optim.h"  #include "optim.h"
33  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
34  # include "PTRACERS_SIZE.h"  # include "PTRACERS_SIZE.h"
35  # include "PTRACERS.h"  c#include "PTRACERS_PARAMS.h"
36    # include "PTRACERS_FIELDS.h"
37  #endif  #endif
38  #ifdef ALLOW_ECCO  #ifdef ALLOW_ECCO
39  # include "ecco_cost.h"  # include "ecco_cost.h"
# Line 108  c--   Temperature field. Line 110  c--   Temperature field.
110       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
111       $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))       $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
112  #endif  #endif
113  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
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*xx_theta(i,j,k,bi,bj) +       &                               fac*xx_theta(i,j,k,bi,bj) +
116       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
# Line 116  c--   Temperature field. Line 118  c--   Temperature field.
118                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
119       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
120  #endif  #endif
121                  if(theta(i,j,k,bi,bj).lt.-2.0)  #ifndef DISABLE_CTRL_THETA_LIMIT
122       &               theta(i,j,k,bi,bj)= -2.0                  if(theta(i,j,k,bi,bj).lt.-2.0)
123         &               theta(i,j,k,bi,bj)= -2.0
124    #endif
125                enddo                enddo
126              enddo              enddo
127            enddo            enddo
# Line 146  c--   Temperature field. Line 150  c--   Temperature field.
150       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
151       $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))       $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
152  #endif  #endif
153  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
154                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
155       &                               fac*xx_salt(i,j,k,bi,bj) +       &                               fac*xx_salt(i,j,k,bi,bj) +
156       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
# Line 200  c--   sst0. Line 204  c--   sst0.
204            do j = jmin,jmax            do j = jmin,jmax
205              do i = imin,imax              do i = imin,imax
206  cph              sst(i,j,bi,bj) = sst(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)  cph              sst(i,j,bi,bj) = sst(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
207                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)
208       &                             + tmpfld2d(i,j,bi,bj)       &                             + tmpfld2d(i,j,bi,bj)
209              enddo              enddo
210            enddo            enddo
# Line 273  c--   kapgm. Line 277  c--   kapgm.
277        enddo        enddo
278  #endif  #endif
279    
280    #ifdef ALLOW_KAPREDI_CONTROL
281    c--   kapredi.
282          il=ilnblnk( xx_kapredi_file )
283          write(fnamegeneric(1:80),'(2a,i10.10)')
284         &     xx_kapredi_file(1:il),'.',optimcycle
285          call active_read_xyz( fnamegeneric, tmpfld3d, 1,
286         &                      doglobalread, ladinit, optimcycle,
287         &                      mythid, xx_kapredi_dummy )
288          do bj = jtlo,jthi
289            do bi = itlo,ithi
290              do k = 1,nr
291                do j = jmin,jmax
292                  do i = imin,imax
293                    kapredi(i,j,k,bi,bj) = kapredi(i,j,k,bi,bj) +
294         &                               tmpfld3d(i,j,k,bi,bj)
295                  enddo
296                enddo
297              enddo
298           enddo
299          enddo
300    #endif
301    
302  #ifdef ALLOW_EFLUXY0_CONTROL  #ifdef ALLOW_EFLUXY0_CONTROL
303  c--   y-component EP-flux field.  c--   y-component EP-flux field.
304        il=ilnblnk( xx_efluxy_file )        il=ilnblnk( xx_efluxy_file )
# Line 341  c--   bottom drag Line 367  c--   bottom drag
367          do bi = itlo,ithi          do bi = itlo,ithi
368            do j = jmin,jmax            do j = jmin,jmax
369              do i = imin,imax              do i = imin,imax
370                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
371       &                                   + tmpfld2d(i,j,bi,bj)       &                                   + tmpfld2d(i,j,bi,bj)
372              enddo              enddo
373            enddo            enddo
# Line 406  c-- initial zonal velocity Line 432  c-- initial zonal velocity
432            do k = 1,nr            do k = 1,nr
433              do j = jmin,jmax              do j = jmin,jmax
434                do i = imin,imax                do i = imin,imax
435  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
436                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
437       &                                  fac*xx_uvel(i,j,k,bi,bj)       &                                  fac*xx_uvel(i,j,k,bi,bj)
438  #else  #else
# Line 433  c-- initial merid. velocity Line 459  c-- initial merid. velocity
459            do k = 1,nr            do k = 1,nr
460              do j = jmin,jmax              do j = jmin,jmax
461                do i = imin,imax                do i = imin,imax
462  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
463                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
464       &                                  fac*xx_vvel(i,j,k,bi,bj)       &                                  fac*xx_vvel(i,j,k,bi,bj)
465  #else  #else
# Line 459  c--   initial Eta. Line 485  c--   initial Eta.
485          do bi = itlo,ithi          do bi = itlo,ithi
486            do j = jmin,jmax            do j = jmin,jmax
487              do i = imin,imax              do i = imin,imax
488  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
489                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
490       &                              fac*xx_etan(i,j,bi,bj)       &                              fac*xx_etan(i,j,bi,bj)
491  #else  #else
492                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
493       &                              fac*tmpfld2d(i,j,bi,bj)       &                              fac*tmpfld2d(i,j,bi,bj)
494  #endif  #endif
495              enddo              enddo
# Line 484  c--   SST relaxation coefficient. Line 510  c--   SST relaxation coefficient.
510          do bi = itlo,ithi          do bi = itlo,ithi
511            do j = jmin,jmax            do j = jmin,jmax
512              do i = imin,imax              do i = imin,imax
513                lambdaThetaClimRelax(i,j,bi,bj) =                lambdaThetaClimRelax(i,j,bi,bj) =
514       &              lambdaThetaClimRelax(i,j,bi,bj)       &              lambdaThetaClimRelax(i,j,bi,bj)
515       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
516              enddo              enddo
517            enddo            enddo
# Line 505  c--   SSS relaxation coefficient. Line 531  c--   SSS relaxation coefficient.
531          do bi = itlo,ithi          do bi = itlo,ithi
532            do j = jmin,jmax            do j = jmin,jmax
533              do i = imin,imax              do i = imin,imax
534                lambdaSaltClimRelax(i,j,bi,bj) =                lambdaSaltClimRelax(i,j,bi,bj) =
535       &              lambdaSaltClimRelax(i,j,bi,bj)       &              lambdaSaltClimRelax(i,j,bi,bj)
536       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
537              enddo              enddo
538            enddo            enddo
# Line 514  c--   SSS relaxation coefficient. Line 540  c--   SSS relaxation coefficient.
540        enddo        enddo
541  #endif  #endif
542    
543    #ifdef ALLOW_SEAICE
544          call seaice_ctrl_map_ini( mythid )
545    #endif
546    
547  c--   Update the tile edges.  c--   Update the tile edges.
548    
549  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))
# Line 533  c--   Update the tile edges. Line 563  c--   Update the tile edges.
563  #ifdef ALLOW_KAPGM_CONTROL  #ifdef ALLOW_KAPGM_CONTROL
564        _EXCH_XYZ_R8( kapgm, mythid)        _EXCH_XYZ_R8( kapgm, mythid)
565  #endif  #endif
566    #ifdef ALLOW_KAPREDI_CONTROL
567          _EXCH_XYZ_R8( kapredi, mythid)
568    #endif
569  #ifdef ALLOW_EFLUXY0_CONTROL  #ifdef ALLOW_EFLUXY0_CONTROL
570        _EXCH_XYZ_R8( EfluxY, mythid )        _EXCH_XYZ_R8( EfluxY, mythid )
571  #endif  #endif

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.28

  ViewVC Help
Powered by ViewVC 1.1.22