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 3839 for branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2013-03-14T19:00:38+01:00 (11 years ago)
Author:
gm
Message:

dev_r2739_LOCEAN8_ZTC (z-tilde): #863 correct bugs and rename some variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r2715 r3839  
    7878      !!                   ln_zco=T   z-coordinate    
    7979      !!                   ln_zps=T   z-coordinate with partial steps 
    80       !!                   ln_zco=T   s-coordinate  
     80      !!                   ln_sco=T   s-coordinate  
    8181      !! 
    8282      !! ** Action  :   define gdep., e3., mbathy and bathy 
     
    124124      IF( nprint == 1 .AND. lwp )   THEN 
    125125         WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    126          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    127             &                   ' w ',   MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) ) 
    128          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ),  & 
    129             &                   ' u ',   MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ),  & 
    130             &                   ' uw',   MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)),   & 
    131             &                   ' w ',   MINVAL( fse3w(:,:,:) ) 
    132  
    133          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    134             &                   ' w ',   MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) ) 
    135          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ),  & 
    136             &                   ' u ',   MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ),  & 
    137             &                   ' uw',   MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)),   & 
    138             &                   ' w ',   MAXVAL( fse3w(:,:,:) ) 
     126         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     127            &                   ' w ',   MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 
     128         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ),  & 
     129            &                   ' u ',   MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ),  & 
     130            &                   ' uw',   MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)),   & 
     131            &                   ' w ',   MINVAL( e3w_0(:,:,:) ) 
     132 
     133         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     134            &                   ' w ',   MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 
     135         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ),  & 
     136            &                   ' u ',   MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ),  & 
     137            &                   ' uw',   MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)),   & 
     138            &                   ' w ',   MAXVAL( e3w_0(:,:,:) ) 
    139139      ENDIF 
    140140      ! 
     
    153153      !!      function the derivative of which gives the scale factors. 
    154154      !!        both depth and scale factors only depend on k (1d arrays). 
    155       !!              w-level: gdepw_0  = fsdep(k) 
    156       !!                       e3w_0(k) = dk(fsdep)(k)     = fse3(k) 
    157       !!              t-level: gdept_0  = fsdep(k+0.5) 
    158       !!                       e3t_0(k) = dk(fsdep)(k+0.5) = fse3(k+0.5) 
    159       !! 
    160       !! ** Action  : - gdept_0, gdepw_0 : depth of T- and W-point (m) 
    161       !!              - e3t_0  , e3w_0   : scale factors at T- and W-levels (m) 
     155      !!              w-level: gdepw_1d  = gdep(k) 
     156      !!                       e3w_1d(k) = dk(gdep)(k)     = e3(k) 
     157      !!              t-level: gdept_1d  = gdep(k+0.5) 
     158      !!                       e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 
     159      !! 
     160      !! ** Action  : - gdept_1d, gdepw_1d : depth of T- and W-point (m) 
     161      !!              - e3t_1d  , e3w_1d  : scale factors at T- and W-levels (m) 
    162162      !! 
    163163      !! Reference : Marti, Madec & Delecluse, 1992, JGR, 97, No8, 12,763-12,766. 
     
    229229            zw = FLOAT( jk ) 
    230230            zt = FLOAT( jk ) + 0.5_wp 
    231             gdepw_0(jk) = ( zw - 1 ) * za1 
    232             gdept_0(jk) = ( zt - 1 ) * za1 
    233             e3w_0  (jk) =  za1 
    234             e3t_0  (jk) =  za1 
     231            gdepw_1d(jk) = ( zw - 1 ) * za1 
     232            gdept_1d(jk) = ( zt - 1 ) * za1 
     233            e3w_1d  (jk) =  za1 
     234            e3t_1d  (jk) =  za1 
    235235         END DO 
    236236      ELSE                                ! Madec & Imbard 1996 function 
     
    239239               zw = REAL( jk , wp ) 
    240240               zt = REAL( jk , wp ) + 0.5_wp 
    241                gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) )  ) 
    242                gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) )  ) 
    243                e3w_0  (jk) =          za0      + za1        * TANH(       (zw-zkth) / zacr   ) 
    244                e3t_0  (jk) =          za0      + za1        * TANH(       (zt-zkth) / zacr   ) 
     241               gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) )  ) 
     242               gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) )  ) 
     243               e3w_1d  (jk) =          za0      + za1        * TANH(       (zw-zkth) / zacr   ) 
     244               e3t_1d  (jk) =          za0      + za1        * TANH(       (zt-zkth) / zacr   ) 
    245245            END DO 
    246246         ELSE 
     
    249249               zt = FLOAT( jk ) + 0.5_wp 
    250250               ! Double tanh function 
    251                gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr  ) )    & 
    252                   &                            + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) )  ) 
    253                gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr  ) )    & 
    254                   &                            + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) )  ) 
    255                e3w_0  (jk) =          za0      + za1        * TANH(       (zw-zkth ) / zacr  )    & 
    256                   &                            + za2        * TANH(       (zw-zkth2) / zacr2 ) 
    257                e3t_0  (jk) =          za0      + za1        * TANH(       (zt-zkth ) / zacr  )    & 
    258                   &                            + za2        * TANH(       (zt-zkth2) / zacr2 ) 
     251               gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr  ) )    & 
     252                  &                             + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) )  ) 
     253               gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr  ) )    & 
     254                  &                             + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) )  ) 
     255               e3w_1d  (jk) =          za0      + za1        * TANH(       (zw-zkth ) / zacr  )    & 
     256                  &                             + za2        * TANH(       (zw-zkth2) / zacr2 ) 
     257               e3t_1d  (jk) =          za0      + za1        * TANH(       (zt-zkth ) / zacr  )    & 
     258                  &                             + za2        * TANH(       (zt-zkth2) / zacr2 ) 
    259259            END DO 
    260260         ENDIF 
    261          gdepw_0(1) = 0._wp                    ! force first w-level to be exactly at zero 
     261         gdepw_1d(1) = 0._wp                    ! force first w-level to be exactly at zero 
    262262      ENDIF 
    263263 
    264264!!gm BUG in s-coordinate this does not work! 
    265265      ! deepest/shallowest W level Above/Below ~10m 
    266       zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_0 )                    ! ref. depth with tolerance (10% of minimum layer thickness) 
    267       nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
    268       nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m 
     266      zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d )                     ! ref. depth with tolerance (10% of minimum layer thickness) 
     267      nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 )   ! shallowest W level Below ~10m 
     268      nla10 = nlb10 - 1                                                ! deepest    W level Above ~10m 
    269269!!gm end bug 
    270270 
     
    272272         WRITE(numout,*) 
    273273         WRITE(numout,*) '              Reference z-coordinate depth and scale factors:' 
    274          WRITE(numout, "(9x,' level   gdept    gdepw     e3t      e3w  ')" ) 
    275          WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk ) 
     274         WRITE(numout, "(9x,' level  gdept_1d  gdepw_1d  e3t_1d   e3w_1d  ')" ) 
     275         WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 
    276276      ENDIF 
    277277      DO jk = 1, jpk                      ! control positivity 
    278          IF( e3w_0  (jk) <= 0._wp .OR. e3t_0  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w or e3t =< 0 '    ) 
    279          IF( gdepw_0(jk) <  0._wp .OR. gdept_0(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw or gdept < 0 ' ) 
     278         IF( e3w_1d  (jk) <= 0._wp .OR. e3t_1d  (jk) <= 0._wp )   CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 '    ) 
     279         IF( gdepw_1d(jk) <  0._wp .OR. gdept_1d(jk) <  0._wp )   CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 
    280280      END DO 
    281281      ! 
     
    336336            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin' 
    337337            idta(:,:) = jpkm1                            ! before last level 
    338             zdta(:,:) = gdepw_0(jpk)                     ! last w-point depth 
    339             h_oce     = gdepw_0(jpk) 
     338            zdta(:,:) = gdepw_1d(jpk)                    ! last w-point depth 
     339            h_oce     = gdepw_1d(jpk) 
    340340         ELSE                                         ! bump centered in the basin 
    341341            IF(lwp) WRITE(numout,*) 
     
    345345            r_bump  = 50000._wp                            ! bump radius (meters)        
    346346            h_bump  =  2700._wp                            ! bump height (meters) 
    347             h_oce   = gdepw_0(jpk)                         ! background ocean depth (meters) 
     347            h_oce   = gdepw_1d(jpk)                        ! background ocean depth (meters) 
    348348            IF(lwp) WRITE(numout,*) '            bump characteristics: ' 
    349349            IF(lwp) WRITE(numout,*) '               bump center (i,j)   = ', ii_bump, ii_bump 
     
    365365               idta(:,:) = jpkm1 
    366366               DO jk = 1, jpkm1 
    367                   WHERE( gdept_0(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_0(jk+1) )   idta(:,:) = jk 
     367                  WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) )   idta(:,:) = jk 
    368368               END DO 
    369369            ENDIF 
     
    502502      !                                               ! =========================== ! 
    503503      IF ( .not. ln_sco ) THEN 
    504          IF( rn_hmin < 0._wp ) THEN    ;   ik = - INT( rn_hmin )                                      ! from a nb of level 
    505          ELSE                          ;   ik = MINLOC( gdepw_0, mask = gdepw_0 > rn_hmin, dim = 1 )  ! from a depth 
     504         IF( rn_hmin < 0._wp ) THEN    ;   ik = - INT( rn_hmin )                                        ! from a nb of level 
     505         ELSE                          ;   ik = MINLOC( gdepw_1d, mask = gdepw_1d > rn_hmin, dim = 1 )  ! from a depth 
    506506         ENDIF 
    507          zhmin = gdepw_0(ik+1)                                                         ! minimum depth = ik+1 w-levels  
     507         zhmin = gdepw_1d(ik+1)                                                        ! minimum depth = ik+1 w-levels  
    508508         WHERE( bathy(:,:) <= 0._wp )   ;   bathy(:,:) = 0._wp                         ! min=0     over the lands 
    509509         ELSE WHERE                     ;   bathy(:,:) = MAX(  zhmin , bathy(:,:)  )   ! min=zhmin over the oceans 
     
    762762      ! 
    763763      DO jk = 1, jpk 
    764          fsdept(:,:,jk) = gdept_0(jk) 
    765          fsdepw(:,:,jk) = gdepw_0(jk) 
    766          fsde3w(:,:,jk) = gdepw_0(jk) 
    767          fse3t (:,:,jk) = e3t_0(jk) 
    768          fse3u (:,:,jk) = e3t_0(jk) 
    769          fse3v (:,:,jk) = e3t_0(jk) 
    770          fse3f (:,:,jk) = e3t_0(jk) 
    771          fse3w (:,:,jk) = e3w_0(jk) 
    772          fse3uw(:,:,jk) = e3w_0(jk) 
    773          fse3vw(:,:,jk) = e3w_0(jk) 
     764         gdept_0 (:,:,jk) = gdept_1d(jk) 
     765         gdepw_0 (:,:,jk) = gdepw_1d(jk) 
     766         gdep3w_0(:,:,jk) = gdepw_1d(jk) 
     767         e3t_0   (:,:,jk) = e3t_1d  (jk) 
     768         e3u_0   (:,:,jk) = e3t_1d  (jk) 
     769         e3v_0   (:,:,jk) = e3t_1d  (jk) 
     770         e3f_0   (:,:,jk) = e3t_1d  (jk) 
     771         e3w_0   (:,:,jk) = e3w_1d  (jk) 
     772         e3uw_0  (:,:,jk) = e3w_1d  (jk) 
     773         e3vw_0  (:,:,jk) = e3w_1d  (jk) 
    774774      END DO 
    775775      ! 
     
    794794      !!      with partial steps  on 3d arrays ( i, j, k ). 
    795795      !! 
    796       !!              w-level: gdepw(i,j,k)  = fsdep(k) 
    797       !!                       e3w(i,j,k) = dk(fsdep)(k)     = fse3(i,j,k) 
    798       !!              t-level: gdept(i,j,k)  = fsdep(k+0.5) 
    799       !!                       e3t(i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5) 
     796      !!              w-level: gdepw_0(i,j,k)  = gdep(k) 
     797      !!                       e3w_0(i,j,k) = dk(gdep)(k)     = e3(i,j,k) 
     798      !!              t-level: gdept_0(i,j,k)  = gdep(k+0.5) 
     799      !!                       e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 
    800800      !! 
    801801      !!        With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), 
     
    805805      !!              - bathy = 0 => mbathy = 0 
    806806      !!              - 1 < mbathy < jpkm1     
    807       !!              - bathy > gdepw(jpk) => mbathy = jpkm1   
     807      !!              - bathy > gdepw_0(jpk) => mbathy = jpkm1   
    808808      !! 
    809809      !!        Then, for each case, we find the new depth at t- and w- levels 
     
    817817      !!      schemes. 
    818818      !! 
    819       !!         c a u t i o n : gdept_0, gdepw_0 and e3._0 are positives 
    820       !!         - - - - - - -   gdept, gdepw and e3. are positives 
     819      !!         c a u t i o n : gdept_1d, gdepw_1d and e3._0 are positives 
     820      !!         - - - - - - -   gdept_0, gdepw_0 and e3. are positives 
    821821      !!       
    822822      !!  Reference :   Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. 
     
    855855      ! bathymetry in level (from bathy_meter) 
    856856      ! =================== 
    857       zmax = gdepw_0(jpk) + e3t_0(jpk)          ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_0(jpkm1) ) 
     857      zmax = gdepw_1d(jpk) + e3t_1d(jpk)        ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_1d(jpkm1) ) 
    858858      bathy(:,:) = MIN( zmax ,  bathy(:,:) )    ! bounded value of bathy (min already set at the end of zgr_bat) 
    859859      WHERE( bathy(:,:) == 0._wp )   ;   mbathy(:,:) = 0       ! land  : set mbathy to 0 
     
    863863      ! Compute mbathy for ocean points (i.e. the number of ocean levels) 
    864864      ! find the number of ocean levels such that the last level thickness 
    865       ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_0 (where 
    866       ! e3t_0 is the reference level thickness 
     865      ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_1d (where 
     866      ! e3t_1d is the reference level thickness 
    867867      DO jk = jpkm1, 1, -1 
    868          zdepth = gdepw_0(jk) + MIN( e3zps_min, e3t_0(jk)*e3zps_rat ) 
     868         zdepth = gdepw_1d(jk) + MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 
    869869         WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth )   mbathy(:,:) = jk-1 
    870870      END DO 
     
    872872      ! Scale factors and depth at T- and W-points 
    873873      DO jk = 1, jpk                        ! intitialization to the reference z-coordinate 
    874          gdept(:,:,jk) = gdept_0(jk) 
    875          gdepw(:,:,jk) = gdepw_0(jk) 
    876          e3t  (:,:,jk) = e3t_0  (jk) 
    877          e3w  (:,:,jk) = e3w_0  (jk) 
     874         gdept_0(:,:,jk) = gdept_1d(jk) 
     875         gdepw_0(:,:,jk) = gdepw_1d(jk) 
     876         e3t_0  (:,:,jk) = e3t_1d  (jk) 
     877         e3w_0  (:,:,jk) = e3w_1d  (jk) 
    878878      END DO 
    879879      !  
     
    885885               IF( ik == jpkm1 ) THEN 
    886886                  zdepwp = bathy(ji,jj) 
    887                   ze3tp  = bathy(ji,jj) - gdepw_0(ik) 
    888                   ze3wp = 0.5_wp * e3w_0(ik) * ( 1._wp + ( ze3tp/e3t_0(ik) ) ) 
    889                   e3t(ji,jj,ik  ) = ze3tp 
    890                   e3t(ji,jj,ik+1) = ze3tp 
    891                   e3w(ji,jj,ik  ) = ze3wp 
    892                   e3w(ji,jj,ik+1) = ze3tp 
    893                   gdepw(ji,jj,ik+1) = zdepwp 
    894                   gdept(ji,jj,ik  ) = gdept_0(ik-1) + ze3wp 
    895                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp 
     887                  ze3tp  = bathy(ji,jj) - gdepw_1d(ik) 
     888                  ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 
     889                  e3t_0(ji,jj,ik  ) = ze3tp 
     890                  e3t_0(ji,jj,ik+1) = ze3tp 
     891                  e3w_0(ji,jj,ik  ) = ze3wp 
     892                  e3w_0(ji,jj,ik+1) = ze3tp 
     893                  gdepw_0(ji,jj,ik+1) = zdepwp 
     894                  gdept_0(ji,jj,ik  ) = gdept_1d(ik-1) + ze3wp 
     895                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 
    896896                  ! 
    897897               ELSE                         ! standard case 
    898                   IF( bathy(ji,jj) <= gdepw_0(ik+1) ) THEN   ;   gdepw(ji,jj,ik+1) = bathy(ji,jj) 
    899                   ELSE                                       ;   gdepw(ji,jj,ik+1) = gdepw_0(ik+1) 
     898                  IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN   ;   gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 
     899                  ELSE                                        ;   gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 
    900900                  ENDIF 
    901 !gm Bug?  check the gdepw_0 
     901!gm Bug?  check the gdepw_1d 
    902902                  !       ... on ik 
    903                   gdept(ji,jj,ik) = gdepw_0(ik) + ( gdepw  (ji,jj,ik+1) - gdepw_0(ik) )   & 
    904                      &                          * ((gdept_0(      ik  ) - gdepw_0(ik) )   & 
    905                      &                          / ( gdepw_0(      ik+1) - gdepw_0(ik) )) 
    906                   e3t  (ji,jj,ik) = e3t_0  (ik) * ( gdepw  (ji,jj,ik+1) - gdepw_0(ik) )   &  
    907                      &                          / ( gdepw_0(      ik+1) - gdepw_0(ik) )  
    908                   e3w  (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_0(ik+1) - 2._wp * gdepw_0(ik) )   & 
    909                      &                     * ( e3w_0(ik) / ( gdepw_0(ik+1) - gdepw_0(ik) ) ) 
     903                  gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0   (ji,jj,ik+1) - gdepw_1d(ik) )   & 
     904                     &                           * ((gdept_1d(      ik  ) - gdepw_1d(ik) )   & 
     905                     &                           / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )) 
     906                  e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) )   &  
     907                     &                          / ( gdepw_1d(      ik+1) - gdepw_1d(ik) )  
     908                  e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) )   & 
     909                     &                     * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 
    910910                  !       ... on ik+1 
    911                   e3w  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    912                   e3t  (ji,jj,ik+1) = e3t  (ji,jj,ik) 
    913                   gdept(ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik) 
     911                  e3w_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     912                  e3t_0  (ji,jj,ik+1) = e3t_0  (ji,jj,ik) 
     913                  gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 
    914914               ENDIF 
    915915            ENDIF 
     
    922922            ik = mbathy(ji,jj) 
    923923            IF( ik > 0 ) THEN               ! ocean point only 
    924                e3tp (ji,jj) = e3t(ji,jj,ik  ) 
    925                e3wp (ji,jj) = e3w(ji,jj,ik  ) 
     924               e3tp (ji,jj) = e3t_0(ji,jj,ik) 
     925               e3wp (ji,jj) = e3w_0(ji,jj,ik) 
    926926               ! test 
    927                zdiff= gdepw(ji,jj,ik+1) - gdept(ji,jj,ik  ) 
     927               zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik  ) 
    928928               IF( zdiff <= 0._wp .AND. lwp ) THEN  
    929929                  it = it + 1 
    930930                  WRITE(numout,*) ' it      = ', it, ' ik      = ', ik, ' (i,j) = ', ji, jj 
    931931                  WRITE(numout,*) ' bathy = ', bathy(ji,jj) 
    932                   WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff 
    933                   WRITE(numout,*) ' e3tp  = ', e3t  (ji,jj,ik), ' e3wp  = ', e3w  (ji,jj,ik  ) 
     932                  WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 
     933                  WRITE(numout,*) ' e3tp    = ', e3t_0  (ji,jj,ik), ' e3wp    = ', e3w_0  (ji,jj,ik  ) 
    934934               ENDIF 
    935935            ENDIF 
     
    939939      ! Scale factors and depth at U-, V-, UW and VW-points 
    940940      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    941          e3u (:,:,jk) = e3t_0(jk) 
    942          e3v (:,:,jk) = e3t_0(jk) 
    943          e3uw(:,:,jk) = e3w_0(jk) 
    944          e3vw(:,:,jk) = e3w_0(jk) 
     941         e3u_0 (:,:,jk) = e3t_1d(jk) 
     942         e3v_0 (:,:,jk) = e3t_1d(jk) 
     943         e3uw_0(:,:,jk) = e3w_1d(jk) 
     944         e3vw_0(:,:,jk) = e3w_1d(jk) 
    945945      END DO 
    946946      DO jk = 1,jpk                         ! Computed as the minimum of neighbooring scale factors 
    947947         DO jj = 1, jpjm1 
    948948            DO ji = 1, fs_jpim1   ! vector opt. 
    949                e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) ) 
    950                e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) ) 
    951                e3uw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) ) 
    952                e3vw(ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) ) 
    953             END DO 
    954          END DO 
    955       END DO 
    956       CALL lbc_lnk( e3u , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw, 'U', 1._wp )   ! lateral boundary conditions 
    957       CALL lbc_lnk( e3v , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     949               e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 
     950               e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 
     951               e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 
     952               e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 
     953            END DO 
     954         END DO 
     955      END DO 
     956      CALL lbc_lnk( e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
     957      CALL lbc_lnk( e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    958958      ! 
    959959      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    960          WHERE( e3u (:,:,jk) == 0._wp )   e3u (:,:,jk) = e3t_0(jk) 
    961          WHERE( e3v (:,:,jk) == 0._wp )   e3v (:,:,jk) = e3t_0(jk) 
    962          WHERE( e3uw(:,:,jk) == 0._wp )   e3uw(:,:,jk) = e3w_0(jk) 
    963          WHERE( e3vw(:,:,jk) == 0._wp )   e3vw(:,:,jk) = e3w_0(jk) 
     960         WHERE( e3u_0 (:,:,jk) == 0._wp )   e3u_0 (:,:,jk) = e3t_1d(jk) 
     961         WHERE( e3v_0 (:,:,jk) == 0._wp )   e3v_0 (:,:,jk) = e3t_1d(jk) 
     962         WHERE( e3uw_0(:,:,jk) == 0._wp )   e3uw_0(:,:,jk) = e3w_1d(jk) 
     963         WHERE( e3vw_0(:,:,jk) == 0._wp )   e3vw_0(:,:,jk) = e3w_1d(jk) 
    964964      END DO 
    965965       
    966966      ! Scale factor at F-point 
    967967      DO jk = 1, jpk                        ! initialisation to z-scale factors 
    968          e3f(:,:,jk) = e3t_0(jk) 
     968         e3f_0(:,:,jk) = e3t_1d(jk) 
    969969      END DO 
    970970      DO jk = 1, jpk                        ! Computed as the minimum of neighbooring V-scale factors 
    971971         DO jj = 1, jpjm1 
    972972            DO ji = 1, fs_jpim1   ! vector opt. 
    973                e3f(ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) ) 
    974             END DO 
    975          END DO 
    976       END DO 
    977       CALL lbc_lnk( e3f, 'F', 1._wp )       ! Lateral boundary conditions 
     973               e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 
     974            END DO 
     975         END DO 
     976      END DO 
     977      CALL lbc_lnk( e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
    978978      ! 
    979979      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    980          WHERE( e3f(:,:,jk) == 0._wp )   e3f(:,:,jk) = e3t_0(jk) 
     980         WHERE( e3f_0(:,:,jk) == 0._wp )   e3f_0(:,:,jk) = e3t_1d(jk) 
    981981      END DO 
    982982!!gm  bug ? :  must be a do loop with mj0,mj1 
    983983      !  
    984       e3t(:,mj0(1),:) = e3t(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
    985       e3w(:,mj0(1),:) = e3w(:,mj0(2),:)  
    986       e3u(:,mj0(1),:) = e3u(:,mj0(2),:)  
    987       e3v(:,mj0(1),:) = e3v(:,mj0(2),:)  
    988       e3f(:,mj0(1),:) = e3f(:,mj0(2),:)  
     984      e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:)     ! we duplicate factor scales for jj = 1 and jj = 2 
     985      e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:)  
     986      e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:)  
     987      e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:)  
     988      e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:)  
    989989 
    990990      ! Control of the sign 
    991       IF( MINVAL( e3t  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t  <= 0' ) 
    992       IF( MINVAL( e3w  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w  <= 0' ) 
    993       IF( MINVAL( gdept(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
    994       IF( MINVAL( gdepw(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw <  0' ) 
     991      IF( MINVAL( e3t_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3t_0 <= 0' ) 
     992      IF( MINVAL( e3w_0  (:,:,:) ) <= 0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   e3w_0 <= 0' ) 
     993      IF( MINVAL( gdept_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdept_0 <  0' ) 
     994      IF( MINVAL( gdepw_0(:,:,:) ) <  0._wp )   CALL ctl_stop( '    zgr_zps :   e r r o r   gdepw_0 <  0' ) 
    995995      
    996       ! Compute gdep3w (vertical sum of e3w) 
    997       gdep3w(:,:,1) = 0.5_wp * e3w(:,:,1) 
     996      ! Compute gdep3w_0 (vertical sum of e3w) 
     997      gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 
    998998      DO jk = 2, jpk 
    999          gdep3w(:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)  
     999         gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk)  
    10001000      END DO 
    10011001         
     
    10061006            DO ji = 1, jpi 
    10071007               ik = MAX( mbathy(ji,jj), 1 ) 
    1008                zprt(ji,jj,1) = e3t   (ji,jj,ik) 
    1009                zprt(ji,jj,2) = e3w   (ji,jj,ik) 
    1010                zprt(ji,jj,3) = e3u   (ji,jj,ik) 
    1011                zprt(ji,jj,4) = e3v   (ji,jj,ik) 
    1012                zprt(ji,jj,5) = e3f   (ji,jj,ik) 
    1013                zprt(ji,jj,6) = gdep3w(ji,jj,ik) 
     1008               zprt(ji,jj,1) = e3t_0   (ji,jj,ik) 
     1009               zprt(ji,jj,2) = e3w_0   (ji,jj,ik) 
     1010               zprt(ji,jj,3) = e3u_0   (ji,jj,ik) 
     1011               zprt(ji,jj,4) = e3v_0   (ji,jj,ik) 
     1012               zprt(ji,jj,5) = e3f_0   (ji,jj,ik) 
     1013               zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 
    10141014            END DO 
    10151015         END DO 
     
    10251025         WRITE(numout,*) 'domzgr e3f(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    10261026         WRITE(numout,*) 
    1027          WRITE(numout,*) 'domzgr gdep3w(mbathy)'  ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
     1027         WRITE(numout,*) 'domzgr gdep3w_0(mbathy)' ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    10281028      ENDIF   
    10291029      ! 
     
    13921392                  zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    13931393                  zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1394                   gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
    1395                   gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
    1396                   gdep3w(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
     1394                  gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 
     1395                  gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 
     1396                  gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 
    13971397               END DO 
    13981398               ! 
     
    14151415                     &              / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    14161416                  ! 
    1417                   e3t(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1418                   e3u(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1419                   e3v(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1420                   e3f(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1417                  e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1418                  e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1419                  e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1420                  e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    14211421                  ! 
    1422                   e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1423                   e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    1424                   e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1422                  e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1423                  e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
     1424                  e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 
    14251425               END DO 
    14261426            END DO 
    14271427         END DO 
    14281428 
    1429          CALL lbc_lnk( e3t , 'T', 1._wp ) 
    1430          CALL lbc_lnk( e3u , 'U', 1._wp ) 
    1431          CALL lbc_lnk( e3v , 'V', 1._wp ) 
    1432          CALL lbc_lnk( e3f , 'F', 1._wp ) 
    1433          CALL lbc_lnk( e3w , 'W', 1._wp ) 
    1434          CALL lbc_lnk( e3uw, 'U', 1._wp ) 
    1435          CALL lbc_lnk( e3vw, 'V', 1._wp ) 
     1429         CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 
     1430         CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 
     1431         CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 
     1432         CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 
     1433         CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 
     1434         CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 
     1435         CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    14361436 
    14371437         ! 
     
    14701470            zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 
    14711471            zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 
    1472             gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 
    1473             gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 
    1474             gdep3w(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 
     1472            gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 
     1473            gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 
     1474            gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 
    14751475         END DO 
    14761476!!gm: e3uw, e3vw can be suppressed  (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) 
     
    14781478            DO ji = 1, jpi 
    14791479               DO jk = 1, jpk 
    1480                  e3t(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1481                  e3u(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1482                  e3v(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    1483                  e3f(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
     1480                 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1481                 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1482                 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1483                 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 
    14841484                 ! 
    1485                  e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
    1486                  e3uw(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
    1487                  e3vw(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
     1485                 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 
     1486                 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 
     1487                 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 
    14881488               END DO 
    14891489            END DO 
     
    14921492      ENDIF ! ln_s_sigma 
    14931493 
    1494  
    1495       ! 
    1496 !!    H. Liu, POL. April 2009. Added for passing the scale check for the new released vvl code. 
    1497  
    1498       fsdept(:,:,:) = gdept (:,:,:) 
    1499       fsdepw(:,:,:) = gdepw (:,:,:) 
    1500       fsde3w(:,:,:) = gdep3w(:,:,:) 
    1501       fse3t (:,:,:) = e3t   (:,:,:) 
    1502       fse3u (:,:,:) = e3u   (:,:,:) 
    1503       fse3v (:,:,:) = e3v   (:,:,:) 
    1504       fse3f (:,:,:) = e3f   (:,:,:) 
    1505       fse3w (:,:,:) = e3w   (:,:,:) 
    1506       fse3uw(:,:,:) = e3uw  (:,:,:) 
    1507       fse3vw(:,:,:) = e3vw  (:,:,:) 
    1508 !! 
    15091494      ! HYBRID :  
    15101495      DO jj = 1, jpj 
    15111496         DO ji = 1, jpi 
    15121497            DO jk = 1, jpkm1 
    1513                IF( scobot(ji,jj) >= fsdept(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    1514                IF( scobot(ji,jj) == 0._wp            )   mbathy(ji,jj) = 0 
     1498               IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
     1499               IF( scobot(ji,jj) == 0._wp             )   mbathy(ji,jj) = 0 
    15151500            END DO 
    15161501         END DO 
     
    15281513      ENDIF 
    15291514      IF( nprint == 1  .AND. lwp )   THEN         ! min max values over the local domain 
    1530          WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)   ), ' MAX ', MAXVAL( mbathy(:,:) ) 
    1531          WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ),   & 
    1532             &                          ' w ', MINVAL( fsdepw(:,:,:) ), '3w '  , MINVAL( fsde3w(:,:,:) ) 
    1533          WRITE(numout,*) ' MIN val e3    t ', MINVAL( fse3t (:,:,:) ), ' f '  , MINVAL( fse3f (:,:,:) ),   & 
    1534             &                          ' u ', MINVAL( fse3u (:,:,:) ), ' u '  , MINVAL( fse3v (:,:,:) ),   & 
    1535             &                          ' uw', MINVAL( fse3uw(:,:,:) ), ' vw'  , MINVAL( fse3vw(:,:,:) ),   & 
    1536             &                          ' w ', MINVAL( fse3w (:,:,:) ) 
    1537  
    1538          WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ),   & 
    1539             &                          ' w ', MAXVAL( fsdepw(:,:,:) ), '3w '  , MAXVAL( fsde3w(:,:,:) ) 
    1540          WRITE(numout,*) ' MAX val e3    t ', MAXVAL( fse3t (:,:,:) ), ' f '  , MAXVAL( fse3f (:,:,:) ),   & 
    1541             &                          ' u ', MAXVAL( fse3u (:,:,:) ), ' u '  , MAXVAL( fse3v (:,:,:) ),   & 
    1542             &                          ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw'  , MAXVAL( fse3vw(:,:,:) ),   & 
    1543             &                          ' w ', MAXVAL( fse3w (:,:,:) ) 
     1515         WRITE(numout,*) ' MIN val mbathy  ', MINVAL( mbathy(:,:)    ), ' MAX ', MAXVAL( mbathy(:,:) ) 
     1516         WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ),   & 
     1517            &                          ' w ', MINVAL( gdepw_0(:,:,:) ), '3w '  , MINVAL( gdep3w_0(:,:,:) ) 
     1518         WRITE(numout,*) ' MIN val e3    t ', MINVAL( e3t_0  (:,:,:) ), ' f '  , MINVAL( e3f_0  (:,:,:) ),   & 
     1519            &                          ' u ', MINVAL( e3u_0  (:,:,:) ), ' u '  , MINVAL( e3v_0  (:,:,:) ),   & 
     1520            &                          ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw'  , MINVAL( e3vw_0  (:,:,:) ),   & 
     1521            &                          ' w ', MINVAL( e3w_0 (:,:,:) ) 
     1522 
     1523         WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ),   & 
     1524            &                          ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w '  , MAXVAL( gdep3w_0(:,:,:) ) 
     1525         WRITE(numout,*) ' MAX val e3    t ', MAXVAL( e3t_0  (:,:,:) ), ' f '  , MAXVAL( e3f_0  (:,:,:) ),   & 
     1526            &                          ' u ', MAXVAL( e3u_0  (:,:,:) ), ' u '  , MAXVAL( e3v_0  (:,:,:) ),   & 
     1527            &                          ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw'  , MAXVAL( e3vw_0  (:,:,:) ),   & 
     1528            &                          ' w ', MAXVAL( e3w_0 (:,:,:) ) 
    15441529      ENDIF 
    15451530      ! 
     
    15481533         WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 
    15491534         WRITE(numout,*) ' ~~~~~~  --------------------' 
    1550          WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1551          WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk),     & 
    1552             &                                 fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk ) 
     1535         WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1536         WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk),     & 
     1537            &                                 e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 
    15531538         DO jj = mj0(20), mj1(20) 
    15541539            DO ji = mi0(20), mi1(20) 
     
    15561541               WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    15571542               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1558                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1559                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1560                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1543               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1544               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1545                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    15611546            END DO 
    15621547         END DO 
     
    15661551               WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k)   bathy = ', bathy(ji,jj), hbatt(ji,jj) 
    15671552               WRITE(numout,*) ' ~~~~~~  --------------------' 
    1568                WRITE(numout,"(9x,' level   gdept    gdepw    gde3w     e3t      e3w  ')") 
    1569                WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk),     & 
    1570                   &                                 fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk ) 
     1553               WRITE(numout,"(9x,' level  gdept_0   gdepw_0   e3t_0    e3w_0')") 
     1554               WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk),     & 
     1555                  &                                 e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 
    15711556            END DO 
    15721557         END DO 
     
    15771562         DO jj = 1, jpj 
    15781563            DO ji = 1, jpi 
    1579                IF( fse3w(ji,jj,jk) <= 0._wp .OR. fse3t(ji,jj,jk) <= 0._wp ) THEN 
    1580                   WRITE(ctmp1,*) 'zgr_sco :   e3w   or e3t  =< 0  at point (i,j,k)= ', ji, jj, jk 
     1564               IF( e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 
     1565                  WRITE(ctmp1,*) 'zgr_sco :   e3w_0 or e3t_0 =< 0  at point (i,j,k)= ', ji, jj, jk 
    15811566                  CALL ctl_stop( ctmp1 ) 
    15821567               ENDIF 
    1583                IF( fsdepw(ji,jj,jk) < 0._wp .OR. fsdept(ji,jj,jk) < 0._wp ) THEN 
    1584                   WRITE(ctmp1,*) 'zgr_sco :   gdepw or gdept =< 0  at point (i,j,k)= ', ji, jj, jk 
     1568               IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 
     1569                  WRITE(ctmp1,*) 'zgr_sco :   gdepw_0 or gdept_0≈s =< 0  at point (i,j,k)= ', ji, jj, jk 
    15851570                  CALL ctl_stop( ctmp1 ) 
    15861571               ENDIF 
Note: See TracChangeset for help on using the changeset viewer.