New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 3865 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2013-04-09T18:34:38+02:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Nearly complete port of 2011/dev_r2739_LOCEAN8_ZTC development branch into v3.5aplha base. Compiles and runs but currently unstable after 8 timesteps with ORCA2_LIM reference configuration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r3862 r3865  
    146146      IF( nprint == 1 .AND. lwp )   THEN 
    147147         WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    148          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    149             &                   ' w ',   MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) ) 
    150          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ),  & 
    151             &                   ' u ',   MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ),  & 
    152             &                   ' uw',   MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)),   & 
    153             &                   ' w ',   MINVAL( fse3w(:,:,:) ) 
    154  
    155          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    156             &                   ' w ',   MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) ) 
    157          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ),  & 
    158             &                   ' u ',   MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ),  & 
    159             &                   ' uw',   MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)),   & 
    160             &                   ' w ',   MAXVAL( fse3w(:,:,:) ) 
     148         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     149            &                   ' w ',   MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 
     150         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ),  & 
     151            &                   ' u ',   MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ),  & 
     152            &                   ' uw',   MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)),   & 
     153            &                   ' w ',   MINVAL( e3w_0(:,:,:) ) 
     154 
     155         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     156            &                   ' w ',   MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 
     157         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ),  & 
     158            &                   ' u ',   MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ),  & 
     159            &                   ' uw',   MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)),   & 
     160            &                   ' w ',   MAXVAL( e3w_0(:,:,:) ) 
    161161      ENDIF 
    162162      ! 
     
    177177      !!      function the derivative of which gives the scale factors. 
    178178      !!        both depth and scale factors only depend on k (1d arrays). 
    179       !!              w-level: gdepw_1d  = fsdep(k) 
    180       !!                       e3w_1d(k) = dk(fsdep)(k)     = fse3(k) 
    181       !!              t-level: gdept_1d  = fsdep(k+0.5) 
    182       !!                       e3t_1d(k) = dk(fsdep)(k+0.5) = fse3(k+0.5) 
     179      !!              w-level: gdepw_1d  = gdep(k) 
     180      !!                       e3w_1d(k) = dk(gdep)(k)     = e3(k) 
     181      !!              t-level: gdept_1d  = gdep(k+0.5) 
     182      !!                       e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 
    183183      !! 
    184184      !! ** Action  : - gdept_1d, gdepw_1d : depth of T- and W-point (m) 
     
    298298         WRITE(numout,*) 
    299299         WRITE(numout,*) '              Reference z-coordinate depth and scale factors:' 
    300          WRITE(numout, "(9x,' level   gdept    gdepw     e3t      e3w  ')" ) 
     300         WRITE(numout, "(9x,' level  gdept_1d  gdepw_1d  e3t_1d   e3w_1d  ')" ) 
    301301         WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 
    302302      ENDIF 
    303303      DO jk = 1, jpk                      ! control positivity 
    304          IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w or e3t =< 0 '    ) 
    305          IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw or gdept < 0 ' ) 
     304         IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 '    ) 
     305         IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 
    306306      END DO 
    307307      ! 
     
    369369            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin' 
    370370            idta(:,:) = jpkm1                            ! before last level 
    371             zdta(:,:) = gdepw_1d(jpk)                     ! last w-point depth 
     371            zdta(:,:) = gdepw_1d(jpk)                    ! last w-point depth 
    372372            h_oce     = gdepw_1d(jpk) 
    373373         ELSE                                         ! bump centered in the basin 
     
    378378            r_bump  = 50000._wp                            ! bump radius (meters)        
    379379            h_bump  =  2700._wp                            ! bump height (meters) 
    380             h_oce   = gdepw_1d(jpk)                         ! background ocean depth (meters) 
     380            h_oce   = gdepw_1d(jpk)                        ! background ocean depth (meters) 
    381381            IF(lwp) WRITE(numout,*) '            bump characteristics: ' 
    382382            IF(lwp) WRITE(numout,*) '               bump center (i,j)   = ', ii_bump, ii_bump 
     
    440440            CALL iom_close( inum ) 
    441441            mbathy(:,:) = INT( bathy(:,:) ) 
    442             ! 
     442            !                                                ! ===================== 
    443443            IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
    444                ! 
     444               !                                             ! ===================== 
    445445               IF( nn_cla == 0 ) THEN 
    446446                  ii0 = 140   ;   ii1 = 140                  ! Gibraltar Strait open  
     
    780780      ! 
    781781      DO jk = 1, jpk 
    782             gdept(:,:,jk) = gdept_1d(jk) 
    783             gdepw(:,:,jk) = gdepw_1d(jk) 
    784             gdep3w(:,:,jk) = gdepw_1d(jk) 
    785             e3t (:,:,jk) = e3t_1d(jk) 
    786             e3u (:,:,jk) = e3t_1d(jk) 
    787             e3v (:,:,jk) = e3t_1d(jk) 
    788             e3f (:,:,jk) = e3t_1d(jk) 
    789             e3w (:,:,jk) = e3w_1d(jk) 
    790             e3uw(:,:,jk) = e3w_1d(jk) 
    791             e3vw(:,:,jk) = e3w_1d(jk) 
     782         gdept_0 (:,:,jk) = gdept_1d(jk) 
     783         gdepw_0 (:,:,jk) = gdepw_1d(jk) 
     784         gdep3w_0(:,:,jk) = gdepw_1d(jk) 
     785         e3t_0   (:,:,jk) = e3t_1d  (jk) 
     786         e3u_0   (:,:,jk) = e3t_1d  (jk) 
     787         e3v_0   (:,:,jk) = e3t_1d  (jk) 
     788         e3f_0   (:,:,jk) = e3t_1d  (jk) 
     789         e3w_0   (:,:,jk) = e3w_1d  (jk) 
     790         e3uw_0  (:,:,jk) = e3w_1d  (jk) 
     791         e3vw_0  (:,:,jk) = e3w_1d  (jk) 
    792792      END DO 
    793793      ! 
     
    814814      !!      with partial steps  on 3d arrays ( i, j, k ). 
    815815      !! 
    816       !!              w-level: gdepw(i,j,k)  = fsdep(k) 
    817       !!                       e3w(i,j,k) = dk(fsdep)(k)     = fse3(i,j,k) 
    818       !!              t-level: gdept(i,j,k)  = fsdep(k+0.5) 
    819       !!                       e3t(i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5) 
     816      !!              w-level: gdepw_0(i,j,k)  = gdep(k) 
     817      !!                       e3w_0(i,j,k) = dk(gdep)(k)     = e3(i,j,k) 
     818      !!              t-level: gdept_0(i,j,k)  = gdep(k+0.5) 
     819      !!                       e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 
    820820      !! 
    821821      !!        With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), 
     
    825825      !!              - bathy = 0 => mbathy = 0 
    826826      !!              - 1 < mbathy < jpkm1     
    827       !!              - bathy > gdepw(jpk) => mbathy = jpkm1   
     827      !!              - bathy > gdepw_0(jpk) => mbathy = jpkm1   
    828828      !! 
    829829      !!        Then, for each case, we find the new depth at t- and w- levels 
     
    838838      !! 
    839839      !!         c a u t i o n : gdept_1d, gdepw_1d and e3._1d are positives 
    840       !!         - - - - - - -   gdept, gdepw and e3. are positives 
     840      !!         - - - - - - -   gdept_0, gdepw_0 and e3. are positives 
    841841      !!       
    842842      !!  Reference :   Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. 
     
    891891      ! Scale factors and depth at T- and W-points 
    892892      DO jk = 1, jpk                        ! intitialization to the reference z-coordinate 
    893          gdept(:,:,jk) = gdept_1d(jk) 
    894          gdepw(:,:,jk) = gdepw_1d(jk) 
    895          e3t  (:,:,jk) = e3t_1d  (jk) 
    896          e3w  (:,:,jk) = e3w_1d  (jk) 
     893         gdept_0(:,:,jk) = gdept_1d(jk) 
     894         gdepw_0(:,:,jk) = gdepw_1d(jk) 
     895         e3t_0  (:,:,jk) = e3t_1d  (jk) 
     896         e3w_0  (:,:,jk) = e3w_1d  (jk) 
    897897      END DO 
    898898      !  
     
    906906                  ze3tp  = bathy(ji,jj) - gdepw_1d(ik) 
    907907                  ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 
    908                   e3t(ji,jj,ik  ) = ze3tp 
    909                   e3t(ji,jj,ik+1) = ze3tp 
    910                   e3w(ji,jj,ik  ) = ze3wp 
    911                   e3w(ji,jj,ik+1) = ze3tp 
    912                   gdepw(ji,jj,ik+1) = zdepwp 
    913                   gdept(ji,jj,ik  ) = gdept_1d(ik-1) + ze3wp 
    914                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp 
     908                  e3t_0(ji,jj,ik  ) = ze3tp 
     909                  e3t_0(ji,jj,ik+1) = ze3tp 
     910                  e3w_0(ji,jj,ik  ) = ze3wp 
     911                  e3w_0(ji,jj,ik+1) = ze3tp 
     912                  gdepw_0(ji,jj,ik+1) = zdepwp 
     913                  gdept_0(ji,jj,ik  ) = gdept_1d(ik-1) + ze3wp 
     914                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 
    915915                  ! 
    916916               ELSE                         ! standard case 
    917                   IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN  ;   gdepw(ji,jj,ik+1) = bathy(ji,jj) 
    918                   ELSE                                       ;   gdepw(ji,jj,ik+1) = gdepw_1d(ik+1) 
     917                  IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN  ;   gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 
     918                  ELSE                                       ;   gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 
    919919                  ENDIF 
    920920!gm Bug?  check the gdepw_1d 
    921921                  !       ... on ik 
    922                   gdept(ji,jj,ik) = gdepw_1d(ik) + ( gdepw  (ji,jj,ik+1) - gdepw_1d(ik) )   & 
    923                      &                           * ((gdept_1d(     ik  ) - gdepw_1d(ik) )   & 
    924                      &                           / ( gdepw_1d(     ik+1) - gdepw_1d(ik) )) 
    925                   e3t  (ji,jj,ik) = e3t_1d  (ik) * ( gdepw  (ji,jj,ik+1) - gdepw_1d(ik)  )  &  
    926                      &                           / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )  
    927                   e3w  (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) )   & 
     922                  gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0   (ji,jj,ik+1) - gdepw_1d(ik) )   & 
     923                     &                           * ((gdept_1d(      ik  ) - gdepw_1d(ik) )   & 
     924                     &                           / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )) 
     925                  e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) )   &  
     926                     &                          / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )  
     927                  e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) )   & 
    928928                     &                     * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 
    929929                  !       ... on ik+1 
    930                   e3w  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    931                   e3t  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    932                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik) 
     930                  e3w_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     931                  e3t_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     932                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 
    933933               ENDIF 
    934934            ENDIF 
     
    941941            ik = mbathy(ji,jj) 
    942942            IF( ik > 0 ) THEN               ! ocean point only 
    943                e3tp (ji,jj) = e3t(ji,jj,ik  ) 
    944                e3wp (ji,jj) = e3w(ji,jj,ik  ) 
     943               e3tp (ji,jj) = e3t_0(ji,jj,ik) 
     944               e3wp (ji,jj) = e3w_0(ji,jj,ik) 
    945945               ! test 
    946                zdiff= gdepw(ji,jj,ik+1) - gdept(ji,jj,ik  ) 
     946               zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik  ) 
    947947               IF( zdiff <= 0._wp .AND. lwp ) THEN  
    948948                  it = it + 1 
    949949                  WRITE(numout,*) ' it      = ', it, ' ik      = ', ik, ' (i,j) = ', ji, jj 
    950950                  WRITE(numout,*) ' bathy = ', bathy(ji,jj) 
    951                   WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff 
    952                   WRITE(numout,*) ' e3tp  = ', e3t  (ji,jj,ik), ' e3wp  = ', e3w  (ji,jj,ik  ) 
     951                  WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 
     952                  WRITE(numout,*) ' e3tp    = ', e3t_0  (ji,jj,ik), ' e3wp    = ', e3w_0  (ji,jj,ik  ) 
    953953               ENDIF 
    954954            ENDIF 
     
    958958      ! Scale factors and depth at U-, V-, UW and VW-points 
    959959      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    960          e3u (:,:,jk) = e3t_1d(jk) 
    961          e3v (:,:,jk) = e3t_1d(jk) 
    962          e3uw(:,:,jk) = e3w_1d(jk) 
    963          e3vw(:,:,jk) = e3w_1d(jk) 
     960         e3u_0 (:,:,jk) = e3t_1d(jk) 
     961         e3v_0 (:,:,jk) = e3t_1d(jk) 
     962         e3uw_0(:,:,jk) = e3w_1d(jk) 
     963         e3vw_0(:,:,jk) = e3w_1d(jk) 
    964964      END DO 
    965965      DO jk = 1,jpk                         ! Computed as the minimum of neighbooring scale factors 
    966966         DO jj = 1, jpjm1 
    967967            DO ji = 1, fs_jpim1   ! vector opt. 
    968                e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) ) 
    969                e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) ) 
    970                e3uw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) ) 
    971                e3vw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) ) 
    972             END DO 
    973          END DO 
    974       END DO 
    975       CALL lbc_lnk( e3u , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw, 'U', 1._wp )   ! lateral boundary conditions 
    976       CALL lbc_lnk( e3v , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     968               e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 
     969               e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 
     970               e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 
     971               e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 
     972            END DO 
     973         END DO 
     974      END DO 
     975      CALL lbc_lnk( e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
     976      CALL lbc_lnk( e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    977977      ! 
    978978      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    979          WHERE( e3u (:,:,jk) == 0._wp )   e3u (:,:,jk) = e3t_1d(jk) 
    980          WHERE( e3v (:,:,jk) == 0._wp )   e3v (:,:,jk) = e3t_1d(jk) 
    981          WHERE( e3uw(:,:,jk) == 0._wp )   e3uw(:,:,jk) = e3w_1d(jk) 
    982          WHERE( e3vw(:,:,jk) == 0._wp )   e3vw(:,:,jk) = e3w_1d(jk) 
     979         WHERE( e3u_0 (:,:,jk) == 0._wp )   e3u_0 (:,:,jk) = e3t_1d(jk) 
     980         WHERE( e3v_0 (:,:,jk) == 0._wp )   e3v_0 (:,:,jk) = e3t_1d(jk) 
     981         WHERE( e3uw_0(:,:,jk) == 0._wp )   e3uw_0(:,:,jk) = e3w_1d(jk) 
     982         WHERE( e3vw_0(:,:,jk) == 0._wp )   e3vw_0(:,:,jk) = e3w_1d(jk) 
    983983      END DO 
    984984       
    985985      ! Scale factor at F-point 
    986986      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    987          e3f(:,:,jk) = e3t_1d(jk) 
     987         e3f_0(:,:,jk) = e3t_1d(jk) 
    988988      END DO 
    989989      DO jk = 1, jpk                        ! Computed as the minimum of neighbooring V-scale factors 
    990990         DO jj = 1, jpjm1 
    991991            DO ji = 1, fs_jpim1   ! vector opt. 
    992                e3f(ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) ) 
    993             END DO 
    994          END DO 
    995       END DO 
    996       CALL lbc_lnk( e3f, 'F', 1._wp )       ! Lateral boundary conditions 
     992               e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 
     993            END DO 
     994         END DO 
     995      END DO 
     996      CALL lbc_lnk( e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
    997997      ! 
    998998      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    999          WHERE( e3f(:,:,jk) == 0._wp )   e3f(:,:,jk) = e3t_1d(jk) 
     999         WHERE( e3f_0(:,:,jk) == 0._wp )   e3f_0(:,:,jk) = e3t_1d(jk) 
    10001000      END DO 
    10011001!!gm  bug ? :  must be a do loop with mj0,mj1 
    10021002      !  
    1003       e3t(:,mj0(1),:) = e3t(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
    1004       e3w(:,mj0(1),:) = e3w(:,mj0(2),:)  
    1005       e3u(:,mj0(1),:) = e3u(:,mj0(2),:)  
    1006       e3v(:,mj0(1),:) = e3v(:,mj0(2),:)  
    1007       e3f(:,mj0(1),:) = e3f(:,mj0(2),:)  
     1003      e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
     1004      e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:)  
     1005      e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:)  
     1006      e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:)  
     1007      e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:)  
    10081008 
    10091009      ! Control of the sign 
    1010       IF( MINVAL( e3t  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t  <= 0' ) 
    1011       IF( MINVAL( e3w  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w  <= 0' ) 
    1012       IF( MINVAL( gdept(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
    1013       IF( MINVAL( gdepw(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
     1010      IF( MINVAL( e3t_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t_0 <= 0' ) 
     1011      IF( MINVAL( e3w_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w_0 <= 0' ) 
     1012      IF( MINVAL( gdept_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdept_0 <  0' ) 
     1013      IF( MINVAL( gdepw_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw_0 <  0' ) 
    10141014      
    1015       ! Compute gdep3w (vertical sum of e3w) 
    1016       gdep3w(:,:,1) = 0.5_wp * e3w(:,:,1) 
     1015      ! Compute gdep3w_0 (vertical sum of e3w) 
     1016      gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 
    10171017      DO jk = 2, jpk 
    1018          gdep3w(:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)  
     1018         gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk)  
    10191019      END DO 
    10201020         
     
    10251025            DO ji = 1, jpi 
    10261026               ik = MAX( mbathy(ji,jj), 1 ) 
    1027                zprt(ji,jj,1) = e3t   (ji,jj,ik) 
    1028                zprt(ji,jj,2) = e3w   (ji,jj,ik) 
    1029                zprt(ji,jj,3) = e3u   (ji,jj,ik) 
    1030                zprt(ji,jj,4) = e3v   (ji,jj,ik) 
    1031                zprt(ji,jj,5) = e3f   (ji,jj,ik) 
    1032                zprt(ji,jj,6) = gdep3w(ji,jj,ik) 
     1027               zprt(ji,jj,1) = e3t_0   (ji,jj,ik) 
     1028               zprt(ji,jj,2) = e3w_0   (ji,jj,ik) 
     1029               zprt(ji,jj,3) = e3u_0   (ji,jj,ik) 
     1030               zprt(ji,jj,4) = e3v_0   (ji,jj,ik) 
     1031               zprt(ji,jj,5) = e3f_0   (ji,jj,ik) 
     1032               zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 
    10331033            END DO 
    10341034         END DO 
     
    13561356      ENDIF  
    13571357 
    1358       CALL lbc_lnk( e3t , 'T', 1._wp ) 
    1359       CALL lbc_lnk( e3u , 'U', 1._wp ) 
    1360       CALL lbc_lnk( e3v , 'V', 1._wp ) 
    1361       CALL lbc_lnk( e3f , 'F', 1._wp ) 
    1362       CALL lbc_lnk( e3w , 'W', 1._wp ) 
    1363       CALL lbc_lnk( e3uw, 'U', 1._wp ) 
    1364       CALL lbc_lnk( e3vw, 'V', 1._wp ) 
    1365  
    1366       fsdepw(:,:,:) = gdepw (:,:,:) 
    1367       fsde3w(:,:,:) = gdep3w(:,:,:) 
    1368       ! 
    1369       where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1.0 
    1370       where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1.0 
    1371       where (e3v   (:,:,:).eq.0.0)  e3v(:,:,:) = 1.0 
    1372       where (e3f   (:,:,:).eq.0.0)  e3f(:,:,:) = 1.0 
    1373       where (e3w   (:,:,:).eq.0.0)  e3w(:,:,:) = 1.0 
    1374       where (e3uw  (:,:,:).eq.0.0)  e3uw(:,:,:) = 1.0 
    1375       where (e3vw  (:,:,:).eq.0.0)  e3vw(:,:,:) = 1.0 
    1376  
    1377  
    1378       fsdept(:,:,:) = gdept (:,:,:) 
    1379       fsdepw(:,:,:) = gdepw (:,:,:) 
    1380       fsde3w(:,:,:) = gdep3w(:,:,:) 
    1381       fse3t (:,:,:) = e3t   (:,:,:) 
    1382       fse3u (:,:,:) = e3u   (:,:,:) 
    1383       fse3v (:,:,:) = e3v   (:,:,:) 
    1384       fse3f (:,:,:) = e3f   (:,:,:) 
    1385       fse3w (:,:,:) = e3w   (:,:,:) 
    1386       fse3uw(:,:,:) = e3uw  (:,:,:) 
    1387       fse3vw(:,:,:) = e3vw  (:,:,:) 
     1358      CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 
     1359      CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 
     1360      CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 
     1361      CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 
     1362      CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 
     1363      CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 
     1364      CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
     1365 
     1366      fsdepw(:,:,:) = gdepw_0 (:,:,:) 
     1367      fsde3w(:,:,:) = gdep3w_0(:,:,:) 
     1368      ! 
     1369      where (e3t_0   (:,:,:).eq.0.0)  e3t_0(:,:,:) = 1.0 
     1370      where (e3u_0   (:,:,:).eq.0.0)  e3u_0(:,:,:) = 1.0 
     1371      where (e3v_0   (:,:,:).eq.0.0)  e3v_0(:,:,:) = 1.0 
     1372      where (e3f_0   (:,:,:).eq.0.0)  e3f_0(:,:,:) = 1.0 
     1373      where (e3w_0   (:,:,:).eq.0.0)  e3w_0(:,:,:) = 1.0 
     1374      where (e3uw_0  (:,:,:).eq.0.0)  e3uw_0(:,:,:) = 1.0 
     1375      where (e3vw_0  (:,:,:).eq.0.0)  e3vw_0(:,:,:) = 1.0 
     1376 
     1377 
     1378      fsdept(:,:,:) = gdept_0 (:,:,:) 
     1379      fsdepw(:,:,:) = gdepw_0 (:,:,:) 
     1380      fsde3w(:,:,:) = gdep3w_0(:,:,:) 
     1381      fse3t (:,:,:) = e3t_0   (:,:,:) 
     1382      fse3u (:,:,:) = e3u_0   (:,:,:) 
     1383      fse3v (:,:,:) = e3v_0   (:,:,:) 
     1384      fse3f (:,:,:) = e3f_0   (:,:,:) 
     1385      fse3w (:,:,:) = e3w_0   (:,:,:) 
     1386      fse3uw(:,:,:) = e3uw_0  (:,:,:) 
     1387      fse3vw(:,:,:) = e3vw_0  (:,:,:) 
    13881388!! 
    13891389      ! HYBRID :  
     
    14001400 
    14011401      IF( nprint == 1  .AND. lwp )   THEN         ! min max values over the local domain 
    1402          WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)   ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    1403          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    1404             &                          ' w ', MINVAL( fsdepw(:,:,:) ), '3w '  , MINVAL( fsde3w(:,:,:) ) 
    1405          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t (:,:,:) ), ' f '  , MINVAL( fse3f (:,:,:) ),   & 
    1406             &                          ' u ', MINVAL( fse3u (:,:,:) ), ' u '  , MINVAL( fse3v (:,:,:) ),   & 
    1407             &                          ' uw', MINVAL( fse3uw(:,:,:) ), ' vw'  , MINVAL( fse3vw(:,:,:) ),   & 
    1408             &                          ' w ', MINVAL( fse3w (:,:,:) ) 
    1409  
    1410          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    1411             &                          ' w ', MAXVAL( fsdepw(:,:,:) ), '3w '  , MAXVAL( fsde3w(:,:,:) ) 
    1412          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t (:,:,:) ), ' f '  , MAXVAL( fse3f (:,:,:) ),   & 
    1413             &                          ' u ', MAXVAL( fse3u (:,:,:) ), ' u '  , MAXVAL( fse3v (:,:,:) ),   & 
    1414             &                          ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw'  , MAXVAL( fse3vw(:,:,:) ),   & 
    1415             &                          ' w ', MAXVAL( fse3w (:,:,:) ) 
     1402         WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)    ), ' MAX ', MAXVAL( mbathy(:,:) ) 
     1403         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     1404            &                          ' w ', MINVAL( gdepw_0(:,:,:) ), '3w '  , MINVAL( gdep3w_0(:,:,:) ) 
     1405         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0  (:,:,:) ), ' f '  , MINVAL( e3f_0  (:,:,:) ),   & 
     1406            &                          ' u ', MINVAL( e3u_0  (:,:,:) ), ' u '  , MINVAL( e3v_0  (:,:,:) ),   & 
     1407            &                          ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw'  , MINVAL( e3vw_0  (:,:,:) ),   & 
     1408            &                          ' w ', MINVAL( e3w_0 (:,:,:) ) 
     1409 
     1410         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     1411            &                          ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w '  , MAXVAL( gdep3w_0(:,:,:) ) 
     1412         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0  (:,:,:) ), ' f '  , MAXVAL( e3f_0  (:,:,:) ),   & 
     1413            &                          ' u ', MAXVAL( e3u_0  (:,:,:) ), ' u '  , MAXVAL( e3v_0  (:,:,:) ),   & 
     1414            &                          ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw'  , MAXVAL( e3vw_0  (:,:,:) ),   & 
     1415            &                          ' w ', MAXVAL( e3w_0 (:,:,:) ) 
    14161416      ENDIF 
    14171417      !  END DO 
     
    14201420         WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 
    14211421         WRITE(numout,*) ' ~~~~~~  --------------------' 
    1422          WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1423          WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk),     & 
    1424             &                                 fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk ) 
     1422         WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1423         WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk),     & 
     1424            &                                 e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 
    14251425         DO jj = mj0(20), mj1(20) 
    14261426            DO ji = mi0(20), mi1(20) 
     
    14281428               WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    14291429               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1430                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1431                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1432                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1430               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1431               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1432                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    14331433            END DO 
    14341434         END DO 
     
    14381438               WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    14391439               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1440                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1441                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1442                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1440               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1441               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1442                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    14431443            END DO 
    14441444         END DO 
     
    15581558               zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    15591559               zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1560                gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
    1561                gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
    1562                gdep3w(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
     1560               gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
     1561               gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
     1562               gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
    15631563            END DO 
    15641564           ! 
     
    15811581                  &              / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    15821582               ! 
    1583                e3t(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    1584                e3u(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigtu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    1585                e3v(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigtv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    1586                e3f(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*z_esigtf3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1583               e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1584               e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigtu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1585               e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigtv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1586               e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*z_esigtf3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    15871587               ! 
    1588                e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigw3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    1589                e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigwu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    1590                e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigwv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1588               e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigw3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1589               e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigwu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     1590               e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigwv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
    15911591            END DO 
    15921592        END DO 
     
    16861686 
    16871687          DO jk = 1, jpk 
    1688              gdept (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigt3(ji,jj,jk) 
    1689              gdepw (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigw3(ji,jj,jk) 
    1690              gdep3w(ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsi3w3(ji,jj,jk) 
     1688             gdept_0 (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigt3(ji,jj,jk) 
     1689             gdepw_0 (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigw3(ji,jj,jk) 
     1690             gdep3w_0(ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsi3w3(ji,jj,jk) 
    16911691          END DO 
    16921692 
     
    17101710                                    ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    17111711 
    1712              e3t(ji,jj,jk)=(scosrf(ji,jj)+hbatt(ji,jj))*z_esigt3(ji,jj,jk) 
    1713              e3u(ji,jj,jk)=(scosrf(ji,jj)+hbatu(ji,jj))*z_esigtu3(ji,jj,jk) 
    1714              e3v(ji,jj,jk)=(scosrf(ji,jj)+hbatv(ji,jj))*z_esigtv3(ji,jj,jk) 
    1715              e3f(ji,jj,jk)=(scosrf(ji,jj)+hbatf(ji,jj))*z_esigtf3(ji,jj,jk) 
     1712             e3t_0(ji,jj,jk)=(scosrf(ji,jj)+hbatt(ji,jj))*z_esigt3(ji,jj,jk) 
     1713             e3u_0(ji,jj,jk)=(scosrf(ji,jj)+hbatu(ji,jj))*z_esigtu3(ji,jj,jk) 
     1714             e3v_0(ji,jj,jk)=(scosrf(ji,jj)+hbatv(ji,jj))*z_esigtv3(ji,jj,jk) 
     1715             e3f_0(ji,jj,jk)=(scosrf(ji,jj)+hbatf(ji,jj))*z_esigtf3(ji,jj,jk) 
    17161716             ! 
    1717              e3w(ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk) 
    1718              e3uw(ji,jj,jk)=hbatu(ji,jj)*z_esigwu3(ji,jj,jk) 
    1719              e3vw(ji,jj,jk)=hbatv(ji,jj)*z_esigwv3(ji,jj,jk) 
     1717             e3w_0(ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk) 
     1718             e3uw_0(ji,jj,jk)=hbatu(ji,jj)*z_esigwu3(ji,jj,jk) 
     1719             e3vw_0(ji,jj,jk)=hbatv(ji,jj)*z_esigwv3(ji,jj,jk) 
    17201720          END DO 
    17211721 
     
    17231723      ENDDO 
    17241724      ! 
    1725       CALL lbc_lnk(e3t ,'T',1.) ; CALL lbc_lnk(e3u ,'T',1.) 
    1726       CALL lbc_lnk(e3v ,'T',1.) ; CALL lbc_lnk(e3f ,'T',1.) 
    1727       CALL lbc_lnk(e3w ,'T',1.) 
    1728       CALL lbc_lnk(e3uw,'T',1.) ; CALL lbc_lnk(e3vw,'T',1.) 
     1725      CALL lbc_lnk(e3t_0 ,'T',1.) ; CALL lbc_lnk(e3u_0 ,'T',1.) 
     1726      CALL lbc_lnk(e3v_0 ,'T',1.) ; CALL lbc_lnk(e3f_0 ,'T',1.) 
     1727      CALL lbc_lnk(e3w_0 ,'T',1.) 
     1728      CALL lbc_lnk(e3uw_0,'T',1.) ; CALL lbc_lnk(e3vw_0,'T',1.) 
    17291729      ! 
    17301730      !                                               ! ============= 
     
    17841784         zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    17851785         zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1786          gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigt(jk) + hift(:,:)*zcoeft ) 
    1787          gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigw(jk) + hift(:,:)*zcoefw ) 
    1788          gdep3w(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsi3w(jk) + hift(:,:)*zcoeft ) 
     1786         gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigt(jk) + hift(:,:)*zcoeft ) 
     1787         gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigw(jk) + hift(:,:)*zcoefw ) 
     1788         gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsi3w(jk) + hift(:,:)*zcoeft ) 
    17891789      END DO 
    17901790!!gm: e3uw, e3vw can be suppressed  (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) 
     
    17921792         DO ji = 1, jpi 
    17931793            DO jk = 1, jpk 
    1794               e3t(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1795               e3u(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1796               e3v(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    1797               e3f(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*z_esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
     1794              e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1795              e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1796              e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1797              e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*z_esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
    17981798              ! 
    1799               e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1800               e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1801               e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1799              e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1800              e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1801              e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    18021802            END DO 
    18031803         END DO 
Note: See TracChangeset for help on using the changeset viewer.