/[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.18 by heimbach, Tue Jan 3 17:10:35 2006 UTC revision 1.25 by jmc, Tue Oct 9 00:00:00 2007 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 93  c--   Temperature field. Line 94  c--   Temperature field.
94        il=ilnblnk( xx_theta_file )        il=ilnblnk( xx_theta_file )
95        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
96       &     xx_theta_file(1:il),'.',optimcycle       &     xx_theta_file(1:il),'.',optimcycle
97        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
98       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
99       &                      mythid, xx_theta_dummy )       &                      mythid, xx_theta_dummy )
100    
# Line 108  c--   Temperature field. Line 109  c--   Temperature field.
109       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
110       $          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))
111  #endif  #endif
112  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
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*xx_theta(i,j,k,bi,bj)       &                               fac*xx_theta(i,j,k,bi,bj) +
115         &                               fac*tmpfld3d(i,j,k,bi,bj)
116  #else  #else
117                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
118       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
119  #endif  #endif
120                  if(theta(i,j,k,bi,bj).lt.-2.0)                  if(theta(i,j,k,bi,bj).lt.-2.0)
121       &               theta(i,j,k,bi,bj)= -2.0       &               theta(i,j,k,bi,bj)= -2.0
122                enddo                enddo
123              enddo              enddo
124            enddo            enddo
# Line 130  c--   Temperature field. Line 132  c--   Temperature field.
132        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
133        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
134       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
135        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
136       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
137       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
138    
# Line 145  c--   Temperature field. Line 147  c--   Temperature field.
147       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
148       $          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))
149  #endif  #endif
150  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
151                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
152       &                               fac*xx_salt(i,j,k,bi,bj)       &                               fac*xx_salt(i,j,k,bi,bj) +
153         &                               fac*tmpfld3d(i,j,k,bi,bj)
154  #else  #else
155                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
156       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
# Line 166  c--   Temperature field. Line 169  c--   Temperature field.
169        il=ilnblnk( xx_tr1_file )        il=ilnblnk( xx_tr1_file )
170        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
171       &     xx_tr1_file(1:il),'.',optimcycle       &     xx_tr1_file(1:il),'.',optimcycle
172        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
173       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
174       &                      mythid, xx_tr1_dummy )       &                      mythid, xx_tr1_dummy )
175    
# Line 190  c--   sst0. Line 193  c--   sst0.
193        il=ilnblnk( xx_sst_file )        il=ilnblnk( xx_sst_file )
194        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
195       &     xx_sst_file(1:il),'.',optimcycle       &     xx_sst_file(1:il),'.',optimcycle
196        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
197       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
198       &                      mythid, xx_sst_dummy )       &                      mythid, xx_sst_dummy )
199        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 198  c--   sst0. Line 201  c--   sst0.
201            do j = jmin,jmax            do j = jmin,jmax
202              do i = imin,imax              do i = imin,imax
203  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)
204                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)
205       &                             + tmpfld2d(i,j,bi,bj)       &                             + tmpfld2d(i,j,bi,bj)
206              enddo              enddo
207            enddo            enddo
# Line 211  c--   sss0. Line 214  c--   sss0.
214        il=ilnblnk( xx_sss_file )        il=ilnblnk( xx_sss_file )
215        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
216       &     xx_sss_file(1:il),'.',optimcycle       &     xx_sss_file(1:il),'.',optimcycle
217        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
218       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
219       &                      mythid, xx_sss_dummy )       &                      mythid, xx_sss_dummy )
220        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 232  c--   diffkr. Line 235  c--   diffkr.
235        il=ilnblnk( xx_diffkr_file )        il=ilnblnk( xx_diffkr_file )
236        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
237       &     xx_diffkr_file(1:il),'.',optimcycle       &     xx_diffkr_file(1:il),'.',optimcycle
238        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
239       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
240       &                      mythid, xx_diffkr_dummy )       &                      mythid, xx_diffkr_dummy )
241        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 254  c--   kapgm. Line 257  c--   kapgm.
257        il=ilnblnk( xx_kapgm_file )        il=ilnblnk( xx_kapgm_file )
258        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
259       &     xx_kapgm_file(1:il),'.',optimcycle       &     xx_kapgm_file(1:il),'.',optimcycle
260        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
261       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
262       &                      mythid, xx_kapgm_dummy )       &                      mythid, xx_kapgm_dummy )
263        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 276  c--   y-component EP-flux field. Line 279  c--   y-component EP-flux field.
279        il=ilnblnk( xx_efluxy_file )        il=ilnblnk( xx_efluxy_file )
280        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
281       &     xx_efluxy_file(1:il),'.',optimcycle       &     xx_efluxy_file(1:il),'.',optimcycle
282        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
283       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
284       &                      mythid, xx_efluxy_dummy )       &                      mythid, xx_efluxy_dummy )
285    
# Line 303  c--   p-component EP-flux field. Line 306  c--   p-component EP-flux field.
306        il=ilnblnk( xx_efluxp_file )        il=ilnblnk( xx_efluxp_file )
307        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
308       &     xx_efluxp_file(1:il),'.',optimcycle       &     xx_efluxp_file(1:il),'.',optimcycle
309        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
310       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
311       &                      mythid, xx_efluxp_dummy )       &                      mythid, xx_efluxp_dummy )
312    
# Line 332  c--   bottom drag Line 335  c--   bottom drag
335        il=ilnblnk( xx_bottomdrag_file )        il=ilnblnk( xx_bottomdrag_file )
336        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
337       &     xx_bottomdrag_file(1:il),'.',optimcycle       &     xx_bottomdrag_file(1:il),'.',optimcycle
338        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
339       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
340       &                      mythid, xx_bottomdrag_dummy )       &                      mythid, xx_bottomdrag_dummy )
341        do bj = jtlo,jthi        do bj = jtlo,jthi
342          do bi = itlo,ithi          do bi = itlo,ithi
343            do j = jmin,jmax            do j = jmin,jmax
344              do i = imin,imax              do i = imin,imax
345                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
346       &                                   + tmpfld2d(i,j,bi,bj)       &                                   + tmpfld2d(i,j,bi,bj)
347              enddo              enddo
348            enddo            enddo
# Line 360  c-- zonal eddy stress : edtaux Line 363  c-- zonal eddy stress : edtaux
363            do k = 1,nr            do k = 1,nr
364              do j = jmin,jmax              do j = jmin,jmax
365                do i = imin,imax                do i = imin,imax
366                  Eddytaux(i,j,k,bi,bj) = Eddytaux(i,j,k,bi,bj) +                  eddyTauX(i,j,k,bi,bj) = eddyTauX(i,j,k,bi,bj) +
367       &                                tmpfld3d(i,j,k,bi,bj)       &            fCori(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj)
368                enddo                enddo
369              enddo              enddo
370            enddo            enddo
# Line 382  c-- meridional eddy stress : edtauy Line 385  c-- meridional eddy stress : edtauy
385            do k = 1,nr            do k = 1,nr
386              do j = jmin,jmax              do j = jmin,jmax
387                do i = imin,imax                do i = imin,imax
388                  Eddytauy(i,j,k,bi,bj) = Eddytauy(i,j,k,bi,bj) +                  eddyTauY(i,j,k,bi,bj) = eddyTauY(i,j,k,bi,bj) +
389       &                                tmpfld3d(i,j,k,bi,bj)       &            fCoriG(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj)
390                enddo                enddo
391              enddo              enddo
392            enddo            enddo
# Line 404  c-- initial zonal velocity Line 407  c-- initial zonal velocity
407            do k = 1,nr            do k = 1,nr
408              do j = jmin,jmax              do j = jmin,jmax
409                do i = imin,imax                do i = imin,imax
410    #ifdef ALLOW_AUTODIFF_OPENAD
411                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
412       &                              tmpfld3d(i,j,k,bi,bj)       &                                  fac*xx_uvel(i,j,k,bi,bj)
413    #else
414                    uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
415         &                                  fac*tmpfld3d(i,j,k,bi,bj)
416    #endif
417                enddo                enddo
418              enddo              enddo
419            enddo            enddo
# Line 426  c-- initial merid. velocity Line 434  c-- initial merid. velocity
434            do k = 1,nr            do k = 1,nr
435              do j = jmin,jmax              do j = jmin,jmax
436                do i = imin,imax                do i = imin,imax
437    #ifdef ALLOW_AUTODIFF_OPENAD
438                    vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
439         &                                  fac*xx_vvel(i,j,k,bi,bj)
440    #else
441                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
442       &                              tmpfld3d(i,j,k,bi,bj)       &                                  fac*tmpfld3d(i,j,k,bi,bj)
443    #endif
444                enddo                enddo
445              enddo              enddo
446            enddo            enddo
# Line 440  c--   initial Eta. Line 453  c--   initial Eta.
453        il=ilnblnk( xx_etan_file )        il=ilnblnk( xx_etan_file )
454        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
455       &     xx_etan_file(1:il),'.',optimcycle       &     xx_etan_file(1:il),'.',optimcycle
456        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
457       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
458       &                      mythid, xx_etan_dummy )       &                      mythid, xx_etan_dummy )
459        do bj = jtlo,jthi        do bj = jtlo,jthi
460          do bi = itlo,ithi          do bi = itlo,ithi
461            do j = jmin,jmax            do j = jmin,jmax
462              do i = imin,imax              do i = imin,imax
463                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)  #ifdef ALLOW_AUTODIFF_OPENAD
464                  etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
465         &                              fac*xx_etan(i,j,bi,bj)
466    #else
467                  etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
468         &                              fac*tmpfld2d(i,j,bi,bj)
469    #endif
470              enddo              enddo
471            enddo            enddo
472          enddo          enddo
# Line 459  c--   SST relaxation coefficient. Line 478  c--   SST relaxation coefficient.
478        il=ilnblnk( xx_relaxsst_file )        il=ilnblnk( xx_relaxsst_file )
479        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
480       &     xx_relaxsst_file(1:il),'.',optimcycle       &     xx_relaxsst_file(1:il),'.',optimcycle
481        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
482       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
483       &                      mythid, xx_relaxsst_dummy )       &                      mythid, xx_relaxsst_dummy )
484        do bj = jtlo,jthi        do bj = jtlo,jthi
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                lambdaThetaClimRelax(i,j,bi,bj) =                lambdaThetaClimRelax(i,j,bi,bj) =
489       &              lambdaThetaClimRelax(i,j,bi,bj)       &              lambdaThetaClimRelax(i,j,bi,bj)
490       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
491              enddo              enddo
492            enddo            enddo
# Line 480  c--   SSS relaxation coefficient. Line 499  c--   SSS relaxation coefficient.
499        il=ilnblnk( xx_relaxsss_file )        il=ilnblnk( xx_relaxsss_file )
500        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
501       &     xx_relaxsss_file(1:il),'.',optimcycle       &     xx_relaxsss_file(1:il),'.',optimcycle
502        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
503       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
504       &                      mythid, xx_relaxsss_dummy )       &                      mythid, xx_relaxsss_dummy )
505        do bj = jtlo,jthi        do bj = jtlo,jthi
506          do bi = itlo,ithi          do bi = itlo,ithi
507            do j = jmin,jmax            do j = jmin,jmax
508              do i = imin,imax              do i = imin,imax
509                lambdaSaltClimRelax(i,j,bi,bj) =                lambdaSaltClimRelax(i,j,bi,bj) =
510       &              lambdaSaltClimRelax(i,j,bi,bj)       &              lambdaSaltClimRelax(i,j,bi,bj)
511       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
512              enddo              enddo
513            enddo            enddo
# Line 496  c--   SSS relaxation coefficient. Line 515  c--   SSS relaxation coefficient.
515        enddo        enddo
516  #endif  #endif
517    
518    #ifdef ALLOW_SEAICE
519          call seaice_ctrl_map_ini( mythid )
520    #endif
521    
522  c--   Update the tile edges.  c--   Update the tile edges.
523    
524  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))
# Line 526  c--   Update the tile edges. Line 549  c--   Update the tile edges.
549  #endif  #endif
550    
551  #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))  #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))
552         CALL EXCH_UV_XYZ_RS(Eddytaux,Eddytauy,.TRUE.,myThid)         CALL EXCH_UV_XYZ_RS(eddyTauX,eddyTauY,.TRUE.,myThid)
553  #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))  #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))
554         STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'         STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'
555  #endif  #endif

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.25

  ViewVC Help
Powered by ViewVC 1.1.22