/[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.17 by heimbach, Thu Apr 7 23:38:43 2005 UTC revision 1.26 by heimbach, Tue Oct 30 20:19:13 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_AUTODIFF_OPENAD
113                    theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
114         &                               fac*xx_theta(i,j,k,bi,bj) +
115         &                               fac*tmpfld3d(i,j,k,bi,bj)
116    #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                  if(theta(i,j,k,bi,bj).lt.-2.0)  #endif
120       &               theta(i,j,k,bi,bj)= -2.0  #ifndef DISABLE_CTRL_THETA_LIMIT
121                    if(theta(i,j,k,bi,bj).lt.-2.0)
122         &               theta(i,j,k,bi,bj)= -2.0
123    #endif
124                enddo                enddo
125              enddo              enddo
126            enddo            enddo
# Line 125  c--   Temperature field. Line 134  c--   Temperature field.
134        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
135        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
136       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
137        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
138       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
139       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
140    
# Line 140  c--   Temperature field. Line 149  c--   Temperature field.
149       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
150       $          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))
151  #endif  #endif
152    #ifdef ALLOW_AUTODIFF_OPENAD
153                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
154         &                               fac*xx_salt(i,j,k,bi,bj) +
155       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
156    #else
157                    salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
158         &                               fac*tmpfld3d(i,j,k,bi,bj)
159    #endif
160    
161                enddo                enddo
162              enddo              enddo
# Line 156  c--   Temperature field. Line 171  c--   Temperature field.
171        il=ilnblnk( xx_tr1_file )        il=ilnblnk( xx_tr1_file )
172        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
173       &     xx_tr1_file(1:il),'.',optimcycle       &     xx_tr1_file(1:il),'.',optimcycle
174        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
175       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
176       &                      mythid, xx_tr1_dummy )       &                      mythid, xx_tr1_dummy )
177    
# Line 180  c--   sst0. Line 195  c--   sst0.
195        il=ilnblnk( xx_sst_file )        il=ilnblnk( xx_sst_file )
196        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
197       &     xx_sst_file(1:il),'.',optimcycle       &     xx_sst_file(1:il),'.',optimcycle
198        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
199       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
200       &                      mythid, xx_sst_dummy )       &                      mythid, xx_sst_dummy )
201        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 188  c--   sst0. Line 203  c--   sst0.
203            do j = jmin,jmax            do j = jmin,jmax
204              do i = imin,imax              do i = imin,imax
205  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)
206                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)                theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)
207       &                             + tmpfld2d(i,j,bi,bj)       &                             + tmpfld2d(i,j,bi,bj)
208              enddo              enddo
209            enddo            enddo
# Line 201  c--   sss0. Line 216  c--   sss0.
216        il=ilnblnk( xx_sss_file )        il=ilnblnk( xx_sss_file )
217        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
218       &     xx_sss_file(1:il),'.',optimcycle       &     xx_sss_file(1:il),'.',optimcycle
219        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
220       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
221       &                      mythid, xx_sss_dummy )       &                      mythid, xx_sss_dummy )
222        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 222  c--   diffkr. Line 237  c--   diffkr.
237        il=ilnblnk( xx_diffkr_file )        il=ilnblnk( xx_diffkr_file )
238        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
239       &     xx_diffkr_file(1:il),'.',optimcycle       &     xx_diffkr_file(1:il),'.',optimcycle
240        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
241       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
242       &                      mythid, xx_diffkr_dummy )       &                      mythid, xx_diffkr_dummy )
243        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 244  c--   kapgm. Line 259  c--   kapgm.
259        il=ilnblnk( xx_kapgm_file )        il=ilnblnk( xx_kapgm_file )
260        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
261       &     xx_kapgm_file(1:il),'.',optimcycle       &     xx_kapgm_file(1:il),'.',optimcycle
262        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
263       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
264       &                      mythid, xx_kapgm_dummy )       &                      mythid, xx_kapgm_dummy )
265        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 266  c--   y-component EP-flux field. Line 281  c--   y-component EP-flux field.
281        il=ilnblnk( xx_efluxy_file )        il=ilnblnk( xx_efluxy_file )
282        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
283       &     xx_efluxy_file(1:il),'.',optimcycle       &     xx_efluxy_file(1:il),'.',optimcycle
284        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
285       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
286       &                      mythid, xx_efluxy_dummy )       &                      mythid, xx_efluxy_dummy )
287    
# Line 293  c--   p-component EP-flux field. Line 308  c--   p-component EP-flux field.
308        il=ilnblnk( xx_efluxp_file )        il=ilnblnk( xx_efluxp_file )
309        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
310       &     xx_efluxp_file(1:il),'.',optimcycle       &     xx_efluxp_file(1:il),'.',optimcycle
311        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,        call active_read_xyz( fnamegeneric, tmpfld3d, 1,
312       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
313       &                      mythid, xx_efluxp_dummy )       &                      mythid, xx_efluxp_dummy )
314    
# Line 322  c--   bottom drag Line 337  c--   bottom drag
337        il=ilnblnk( xx_bottomdrag_file )        il=ilnblnk( xx_bottomdrag_file )
338        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
339       &     xx_bottomdrag_file(1:il),'.',optimcycle       &     xx_bottomdrag_file(1:il),'.',optimcycle
340        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
341       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
342       &                      mythid, xx_bottomdrag_dummy )       &                      mythid, xx_bottomdrag_dummy )
343        do bj = jtlo,jthi        do bj = jtlo,jthi
344          do bi = itlo,ithi          do bi = itlo,ithi
345            do j = jmin,jmax            do j = jmin,jmax
346              do i = imin,imax              do i = imin,imax
347                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)                bottomdragfld(i,j,bi,bj) = bottomdragfld(i,j,bi,bj)
348       &                                   + tmpfld2d(i,j,bi,bj)       &                                   + tmpfld2d(i,j,bi,bj)
349              enddo              enddo
350            enddo            enddo
# Line 350  c-- zonal eddy stress : edtaux Line 365  c-- zonal eddy stress : edtaux
365            do k = 1,nr            do k = 1,nr
366              do j = jmin,jmax              do j = jmin,jmax
367                do i = imin,imax                do i = imin,imax
368                  Eddytaux(i,j,k,bi,bj) = Eddytaux(i,j,k,bi,bj) +                  eddyTauX(i,j,k,bi,bj) = eddyTauX(i,j,k,bi,bj) +
369       &                                tmpfld3d(i,j,k,bi,bj)       &            fCori(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj)
370                enddo                enddo
371              enddo              enddo
372            enddo            enddo
# Line 372  c-- meridional eddy stress : edtauy Line 387  c-- meridional eddy stress : edtauy
387            do k = 1,nr            do k = 1,nr
388              do j = jmin,jmax              do j = jmin,jmax
389                do i = imin,imax                do i = imin,imax
390                  Eddytauy(i,j,k,bi,bj) = Eddytauy(i,j,k,bi,bj) +                  eddyTauY(i,j,k,bi,bj) = eddyTauY(i,j,k,bi,bj) +
391       &                                tmpfld3d(i,j,k,bi,bj)       &            fCoriG(i,j,bi,bj)*tmpfld3d(i,j,k,bi,bj)
392                enddo                enddo
393              enddo              enddo
394            enddo            enddo
# Line 394  c-- initial zonal velocity Line 409  c-- initial zonal velocity
409            do k = 1,nr            do k = 1,nr
410              do j = jmin,jmax              do j = jmin,jmax
411                do i = imin,imax                do i = imin,imax
412    #ifdef ALLOW_AUTODIFF_OPENAD
413                    uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
414         &                                  fac*xx_uvel(i,j,k,bi,bj)
415    #else
416                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +                  uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
417       &                              tmpfld3d(i,j,k,bi,bj)       &                                  fac*tmpfld3d(i,j,k,bi,bj)
418    #endif
419                enddo                enddo
420              enddo              enddo
421            enddo            enddo
# Line 416  c-- initial merid. velocity Line 436  c-- initial merid. velocity
436            do k = 1,nr            do k = 1,nr
437              do j = jmin,jmax              do j = jmin,jmax
438                do i = imin,imax                do i = imin,imax
439    #ifdef ALLOW_AUTODIFF_OPENAD
440                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +                  vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
441       &                              tmpfld3d(i,j,k,bi,bj)       &                                  fac*xx_vvel(i,j,k,bi,bj)
442    #else
443                    vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
444         &                                  fac*tmpfld3d(i,j,k,bi,bj)
445    #endif
446                enddo                enddo
447              enddo              enddo
448            enddo            enddo
# Line 430  c--   initial Eta. Line 455  c--   initial Eta.
455        il=ilnblnk( xx_etan_file )        il=ilnblnk( xx_etan_file )
456        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
457       &     xx_etan_file(1:il),'.',optimcycle       &     xx_etan_file(1:il),'.',optimcycle
458        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
459       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
460       &                      mythid, xx_etan_dummy )       &                      mythid, xx_etan_dummy )
461        do bj = jtlo,jthi        do bj = jtlo,jthi
462          do bi = itlo,ithi          do bi = itlo,ithi
463            do j = jmin,jmax            do j = jmin,jmax
464              do i = imin,imax              do i = imin,imax
465                etaN(i,j,bi,bj) = etaN(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)  #ifdef ALLOW_AUTODIFF_OPENAD
466                  etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
467         &                              fac*xx_etan(i,j,bi,bj)
468    #else
469                  etaN(i,j,bi,bj) = etaN(i,j,bi,bj) +
470         &                              fac*tmpfld2d(i,j,bi,bj)
471    #endif
472              enddo              enddo
473            enddo            enddo
474          enddo          enddo
# Line 449  c--   SST relaxation coefficient. Line 480  c--   SST relaxation coefficient.
480        il=ilnblnk( xx_relaxsst_file )        il=ilnblnk( xx_relaxsst_file )
481        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
482       &     xx_relaxsst_file(1:il),'.',optimcycle       &     xx_relaxsst_file(1:il),'.',optimcycle
483        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
484       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
485       &                      mythid, xx_relaxsst_dummy )       &                      mythid, xx_relaxsst_dummy )
486        do bj = jtlo,jthi        do bj = jtlo,jthi
487          do bi = itlo,ithi          do bi = itlo,ithi
488            do j = jmin,jmax            do j = jmin,jmax
489              do i = imin,imax              do i = imin,imax
490                lambdaThetaClimRelax(i,j,bi,bj) =                lambdaThetaClimRelax(i,j,bi,bj) =
491       &              lambdaThetaClimRelax(i,j,bi,bj)       &              lambdaThetaClimRelax(i,j,bi,bj)
492       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
493              enddo              enddo
494            enddo            enddo
# Line 470  c--   SSS relaxation coefficient. Line 501  c--   SSS relaxation coefficient.
501        il=ilnblnk( xx_relaxsss_file )        il=ilnblnk( xx_relaxsss_file )
502        write(fnamegeneric(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
503       &     xx_relaxsss_file(1:il),'.',optimcycle       &     xx_relaxsss_file(1:il),'.',optimcycle
504        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,        call active_read_xy ( fnamegeneric, tmpfld2d, 1,
505       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
506       &                      mythid, xx_relaxsss_dummy )       &                      mythid, xx_relaxsss_dummy )
507        do bj = jtlo,jthi        do bj = jtlo,jthi
508          do bi = itlo,ithi          do bi = itlo,ithi
509            do j = jmin,jmax            do j = jmin,jmax
510              do i = imin,imax              do i = imin,imax
511                lambdaSaltClimRelax(i,j,bi,bj) =                lambdaSaltClimRelax(i,j,bi,bj) =
512       &              lambdaSaltClimRelax(i,j,bi,bj)       &              lambdaSaltClimRelax(i,j,bi,bj)
513       &              + tmpfld2d(i,j,bi,bj)       &              + tmpfld2d(i,j,bi,bj)
514              enddo              enddo
515            enddo            enddo
# Line 486  c--   SSS relaxation coefficient. Line 517  c--   SSS relaxation coefficient.
517        enddo        enddo
518  #endif  #endif
519    
520    #ifdef ALLOW_SEAICE
521          call seaice_ctrl_map_ini( mythid )
522    #endif
523    
524  c--   Update the tile edges.  c--   Update the tile edges.
525    
526  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))
# Line 516  c--   Update the tile edges. Line 551  c--   Update the tile edges.
551  #endif  #endif
552    
553  #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))  #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))
554         CALL EXCH_UV_XYZ_RS(Eddytaux,Eddytauy,.TRUE.,myThid)         CALL EXCH_UV_XYZ_RS(eddyTauX,eddyTauY,.TRUE.,myThid)
555  #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))  #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))
556         STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'         STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'
557  #endif  #endif

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.26

  ViewVC Help
Powered by ViewVC 1.1.22