/[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.21 by utke, Tue May 8 17:03:12 2007 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)       &                               fac*tmpfld3d(i,j,k,bi,bj)
# Line 116  c--   Temperature field. Line 117  c--   Temperature field.
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 131  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 146  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)       &                               fac*tmpfld3d(i,j,k,bi,bj)
# Line 168  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 192  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 200  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 213  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 234  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 256  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 278  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 305  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 334  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 406  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_OPENAD  #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       &                                  fac*xx_uvel(i,j,k,bi,bj)       &                                  fac*xx_uvel(i,j,k,bi,bj)
413  #else  #else
# Line 433  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_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
438                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
439       &                                  fac*xx_vvel(i,j,k,bi,bj)       &                                  fac*xx_vvel(i,j,k,bi,bj)
440  #else  #else
# Line 452  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  #ifdef ALLOW_OPENAD  #ifdef ALLOW_AUTODIFF_OPENAD
464                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
465       &                              fac*xx_etan(i,j,bi,bj)       &                              fac*xx_etan(i,j,bi,bj)
466  #else  #else
467                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
468       &                              fac*tmpfld2d(i,j,bi,bj)       &                              fac*tmpfld2d(i,j,bi,bj)
469  #endif  #endif
470              enddo              enddo
# Line 477  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 498  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 514  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))

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

  ViewVC Help
Powered by ViewVC 1.1.22