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 7351 for branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90 – NEMO

Ignore:
Timestamp:
2016-11-28T17:04:10+01:00 (7 years ago)
Author:
emanuelaclementi
Message:

ticket #1805 step 3: /2016/dev_INGV_UKMO_2016 aligned to the trunk at revision 7161

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r5836 r7351  
    7373 
    7474   !! * Substitutions 
    75 #  include "domzgr_substitute.h90" 
    7675#  include "vectopt_loop_substitute.h90" 
    7776   !!---------------------------------------------------------------------- 
     
    112111      !! 
    113112      INTEGER  ::   ji , jj , jk    ! dummy loop indices 
    114       INTEGER  ::   ii0, ii1, iku   ! temporary integer 
    115       INTEGER  ::   ij0, ij1, ikv   ! temporary integer 
     113      INTEGER  ::   ii0, ii1        ! temporary integer 
     114      INTEGER  ::   ij0, ij1        ! temporary integer 
    116115      REAL(wp) ::   zeps, zm1_g, zm1_2g, z1_16, zcofw, z1_slpmax ! local scalars 
    117116      REAL(wp) ::   zci, zfi, zau, zbu, zai, zbi   !   -      - 
    118117      REAL(wp) ::   zcj, zfj, zav, zbv, zaj, zbj   !   -      - 
    119118      REAL(wp) ::   zck, zfk,      zbw             !   -      - 
     119      REAL(wp) ::   zdepu, zdepv                   !   -      - 
     120      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zslpml_hmlpu, zslpml_hmlpv 
    120121      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwz, zww 
    121122      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdzr 
     
    126127      ! 
    127128      CALL wrk_alloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv ) 
     129      CALL wrk_alloc( jpi,jpj, zslpml_hmlpu, zslpml_hmlpv ) 
    128130 
    129131      zeps   =  1.e-20_wp        !==   Local constant initialization   ==! 
     
    149151               zgru(ji,jj,mbku(ji,jj)) = gru(ji,jj) 
    150152               zgrv(ji,jj,mbkv(ji,jj)) = grv(ji,jj) 
     153            END DO 
     154         END DO 
     155      ENDIF 
     156      IF( ln_zps .AND. ln_isfcav ) THEN           ! partial steps correction at the bottom ocean level 
     157         DO jj = 1, jpjm1 
     158            DO ji = 1, jpim1 
     159               IF ( miku(ji,jj) > 1 ) zgru(ji,jj,miku(ji,jj)) = grui(ji,jj)  
     160               IF ( mikv(ji,jj) > 1 ) zgrv(ji,jj,mikv(ji,jj)) = grvi(ji,jj) 
    151161            END DO 
    152162         END DO 
     
    171181      ! ===========================      | vslp = d/dj( prd ) / d/dz( prd ) 
    172182      ! 
     183      IF ( ln_isfcav ) THEN 
     184         DO jj = 2, jpjm1 
     185            DO ji = fs_2, fs_jpim1   ! vector opt. 
     186               zslpml_hmlpu(ji,jj) = uslpml(ji,jj) / ( MAX(hmlpt  (ji,jj), hmlpt  (ji+1,jj  ), 5._wp) & 
     187                  &                                  - MAX(risfdep(ji,jj), risfdep(ji+1,jj  )       ) )  
     188               zslpml_hmlpv(ji,jj) = vslpml(ji,jj) / ( MAX(hmlpt  (ji,jj), hmlpt  (ji  ,jj+1), 5._wp) & 
     189                  &                                  - MAX(risfdep(ji,jj), risfdep(ji  ,jj+1)       ) ) 
     190            END DO 
     191         END DO 
     192      ELSE 
     193         DO jj = 2, jpjm1 
     194            DO ji = fs_2, fs_jpim1   ! vector opt. 
     195               zslpml_hmlpu(ji,jj) = uslpml(ji,jj) / MAX(hmlpt(ji,jj), hmlpt(ji+1,jj  ), 5._wp) 
     196               zslpml_hmlpv(ji,jj) = vslpml(ji,jj) / MAX(hmlpt(ji,jj), hmlpt(ji  ,jj+1), 5._wp) 
     197            END DO 
     198         END DO 
     199      END IF 
     200 
    173201      DO jk = 2, jpkm1                            !* Slopes at u and v points 
    174202         DO jj = 2, jpjm1 
     
    181209               !                                      ! bound the slopes: abs(zw.)<= 1/100 and zb..<0 
    182210               !                                      ! + kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    183                zbu = MIN(  zbu, - z1_slpmax * ABS( zau ) , -7.e+3_wp/fse3u(ji,jj,jk)* ABS( zau )  ) 
    184                zbv = MIN(  zbv, - z1_slpmax * ABS( zav ) , -7.e+3_wp/fse3v(ji,jj,jk)* ABS( zav )  ) 
     211               zbu = MIN(  zbu, - z1_slpmax * ABS( zau ) , -7.e+3_wp/e3u_n(ji,jj,jk)* ABS( zau )  ) 
     212               zbv = MIN(  zbv, - z1_slpmax * ABS( zav ) , -7.e+3_wp/e3v_n(ji,jj,jk)* ABS( zav )  ) 
    185213               !                                      ! uslp and vslp output in zwz and zww, resp. 
    186214               zfi = MAX( omlmask(ji,jj,jk), omlmask(ji+1,jj,jk) ) 
    187215               zfj = MAX( omlmask(ji,jj,jk), omlmask(ji,jj+1,jk) ) 
    188                zwz(ji,jj,jk) = ( ( 1. - zfi) * zau / ( zbu - zeps )                                              & 
    189                   &                   + zfi  * uslpml(ji,jj)                                                     & 
    190                   &                          * 0.5_wp * ( fsdept(ji+1,jj,jk)+fsdept(ji,jj,jk)-fse3u(ji,jj,1) )   & 
    191                   &                          / MAX( hmlpt(ji,jj), hmlpt(ji+1,jj), 5._wp ) ) * umask(ji,jj,jk) 
    192                zww(ji,jj,jk) = ( ( 1. - zfj) * zav / ( zbv - zeps )                                              & 
    193                   &                   + zfj  * vslpml(ji,jj)                                                     & 
    194                   &                          * 0.5_wp * ( fsdept(ji,jj+1,jk)+fsdept(ji,jj,jk)-fse3v(ji,jj,1) )   & 
    195                   &                          / MAX( hmlpt(ji,jj), hmlpt(ji,jj+1), 5. ) ) * vmask(ji,jj,jk) 
     216               ! thickness of water column between surface and level k at u/v point 
     217               zdepu = 0.5_wp * ( ( gdept_n (ji,jj,jk) + gdept_n (ji+1,jj,jk) )                            & 
     218                                - 2 * MAX( risfdep(ji,jj), risfdep(ji+1,jj) ) - e3u_n(ji,jj,miku(ji,jj))   ) 
     219               zdepv = 0.5_wp * ( ( gdept_n (ji,jj,jk) + gdept_n (ji,jj+1,jk) )                            & 
     220                                - 2 * MAX( risfdep(ji,jj), risfdep(ji,jj+1) ) - e3v_n(ji,jj,mikv(ji,jj))   ) 
     221               ! 
     222               zwz(ji,jj,jk) = ( ( 1._wp - zfi) * zau / ( zbu - zeps )                                     & 
     223                  &                      + zfi  * zdepu * zslpml_hmlpu(ji,jj) ) * umask(ji,jj,jk) 
     224               zww(ji,jj,jk) = ( ( 1._wp - zfj) * zav / ( zbv - zeps )                                     & 
     225                  &                      + zfj  * zdepv * zslpml_hmlpv(ji,jj) ) * vmask(ji,jj,jk) 
    196226!!gm  modif to suppress omlmask.... (as in Griffies case) 
    197227!               !                                         ! jk must be >= ML level for zf=1. otherwise  zf=0. 
    198228!               zfi = REAL( 1 - 1/(1 + jk / MAX( nmln(ji+1,jj), nmln(ji,jj) ) ), wp ) 
    199229!               zfj = REAL( 1 - 1/(1 + jk / MAX( nmln(ji,jj+1), nmln(ji,jj) ) ), wp ) 
    200 !               zci = 0.5 * ( fsdept(ji+1,jj,jk)+fsdept(ji,jj,jk) ) / MAX( hmlpt(ji,jj), hmlpt(ji+1,jj), 10. ) ) 
    201 !               zcj = 0.5 * ( fsdept(ji,jj+1,jk)+fsdept(ji,jj,jk) ) / MAX( hmlpt(ji,jj), hmlpt(ji,jj+1), 10. ) ) 
     230!               zci = 0.5 * ( gdept_n(ji+1,jj,jk)+gdept_n(ji,jj,jk) ) / MAX( hmlpt(ji,jj), hmlpt(ji+1,jj), 10. ) ) 
     231!               zcj = 0.5 * ( gdept_n(ji,jj+1,jk)+gdept_n(ji,jj,jk) ) / MAX( hmlpt(ji,jj), hmlpt(ji,jj+1), 10. ) ) 
    202232!               zwz(ji,jj,jk) = ( zfi * zai / ( zbi - zeps ) + ( 1._wp - zfi ) * wslpiml(ji,jj) * zci ) * tmask(ji,jj,jk) 
    203233!               zww(ji,jj,jk) = ( zfj * zaj / ( zbj - zeps ) + ( 1._wp - zfj ) * wslpjml(ji,jj) * zcj ) * tmask(ji,jj,jk) 
     
    265295                  &      + vmask(ji,jj-1,jk-1) + vmask(ji,jj,jk  ) , zeps  ) * e2t(ji,jj) 
    266296               zai =    (  zgru (ji-1,jj,jk  ) + zgru (ji,jj,jk-1)           & 
    267                   &      + zgru (ji-1,jj,jk-1) + zgru (ji,jj,jk  )   ) / zci * tmask (ji,jj,jk) 
     297                  &      + zgru (ji-1,jj,jk-1) + zgru (ji,jj,jk  )   ) / zci * wmask (ji,jj,jk) 
    268298               zaj =    (  zgrv (ji,jj-1,jk  ) + zgrv (ji,jj,jk-1)           & 
    269                   &      + zgrv (ji,jj-1,jk-1) + zgrv (ji,jj,jk  )   ) / zcj * tmask (ji,jj,jk) 
     299                  &      + zgrv (ji,jj-1,jk-1) + zgrv (ji,jj,jk  )   ) / zcj * wmask (ji,jj,jk) 
    270300               !                                        ! bound the slopes: abs(zw.)<= 1/100 and zb..<0. 
    271301               !                                        ! + kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    272                zbi = MIN( zbw ,- 100._wp* ABS( zai ) , -7.e+3_wp/fse3w(ji,jj,jk)* ABS( zai )  ) 
    273                zbj = MIN( zbw , -100._wp* ABS( zaj ) , -7.e+3_wp/fse3w(ji,jj,jk)* ABS( zaj )  ) 
     302               zbi = MIN( zbw ,- 100._wp* ABS( zai ) , -7.e+3_wp/e3w_n(ji,jj,jk)* ABS( zai )  ) 
     303               zbj = MIN( zbw , -100._wp* ABS( zaj ) , -7.e+3_wp/e3w_n(ji,jj,jk)* ABS( zaj )  ) 
    274304               !                                        ! wslpi and wslpj with ML flattening (output in zwz and zww, resp.) 
    275305               zfk = MAX( omlmask(ji,jj,jk), omlmask(ji,jj,jk-1) )   ! zfk=1 in the ML otherwise zfk=0 
    276                zck = fsdepw(ji,jj,jk) / MAX( hmlp(ji,jj), 10._wp ) 
    277                zwz(ji,jj,jk) = (  zai / ( zbi - zeps ) * ( 1._wp - zfk ) + zck * wslpiml(ji,jj) * zfk  ) * tmask(ji,jj,jk) 
    278                zww(ji,jj,jk) = (  zaj / ( zbj - zeps ) * ( 1._wp - zfk ) + zck * wslpjml(ji,jj) * zfk  ) * tmask(ji,jj,jk) 
     306               zck = ( gdepw_n(ji,jj,jk) - gdepw_n(ji,jj,mikt(ji,jj) ) ) / MAX( hmlp(ji,jj) - gdepw_n(ji,jj,mikt(ji,jj)), 10._wp ) 
     307               zwz(ji,jj,jk) = (  zai / ( zbi - zeps ) * ( 1._wp - zfk ) + zck * wslpiml(ji,jj) * zfk  ) * wmask(ji,jj,jk) 
     308               zww(ji,jj,jk) = (  zaj / ( zbj - zeps ) * ( 1._wp - zfk ) + zck * wslpjml(ji,jj) * zfk  ) * wmask(ji,jj,jk) 
    279309 
    280310!!gm  modif to suppress omlmask....  (as in Griffies operator) 
    281311!               !                                         ! jk must be >= ML level for zfk=1. otherwise  zfk=0. 
    282312!               zfk = REAL( 1 - 1/(1 + jk / nmln(ji+1,jj)), wp ) 
    283 !               zck = fsdepw(ji,jj,jk)    / MAX( hmlp(ji,jj), 10. ) 
     313!               zck = gdepw(ji,jj,jk)    / MAX( hmlp(ji,jj), 10. ) 
    284314!               zwz(ji,jj,jk) = ( zfk * zai / ( zbi - zeps ) + ( 1._wp - zfk ) * wslpiml(ji,jj) * zck ) * tmask(ji,jj,jk) 
    285315!               zww(ji,jj,jk) = ( zfk * zaj / ( zbj - zeps ) + ( 1._wp - zfk ) * wslpjml(ji,jj) * zck ) * tmask(ji,jj,jk) 
     
    340370      CALL lbc_lnk( wslpi, 'W', -1. )      ;      CALL lbc_lnk( wslpj, 'W', -1. ) 
    341371 
    342  
    343372      IF(ln_ctl) THEN 
    344373         CALL prt_ctl(tab3d_1=uslp , clinfo1=' slp  - u : ', tab3d_2=vslp,  clinfo2=' v : ', kdim=jpk) 
     
    347376      ! 
    348377      CALL wrk_dealloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv ) 
     378      CALL wrk_dealloc( jpi,jpj, zslpml_hmlpu, zslpml_hmlpv ) 
    349379      ! 
    350380      IF( nn_timing == 1 )  CALL timing_stop('ldf_slp') 
     
    441471                     zdks = 0._wp 
    442472                  ENDIF 
    443                   zdzrho_raw = ( - zalbet(ji,jj,jk) * zdkt + zbeta0*zdks ) / fse3w(ji,jj,jk+kp) 
     473                  zdzrho_raw = ( - zalbet(ji,jj,jk) * zdkt + zbeta0*zdks ) / e3w_n(ji,jj,jk+kp) 
    444474                  zdzrho(ji,jj,jk,kp) = - MIN( - repsln , zdzrho_raw )    ! force zdzrho >= repsln 
    445475                 END DO 
     
    451481         DO ji = 1, jpi 
    452482            jk = MIN( nmln(ji,jj), mbkt(ji,jj) ) + 1     ! MIN in case ML depth is the ocean depth 
    453             z1_mlbw(ji,jj) = 1._wp / fsdepw(ji,jj,jk) 
     483            z1_mlbw(ji,jj) = 1._wp / gdepw_n(ji,jj,jk) 
    454484         END DO 
    455485      END DO 
     
    480510                     ! Add s-coordinate slope at t-points (do this by *subtracting* gradient of depth) 
    481511                     zti_g_raw = (  zdxrho(ji+ip,jj,jk-kp,1-ip) / zdzrho(ji+ip,jj,jk-kp,kp)      & 
    482                         &          - ( fsdept(ji+1,jj,jk-kp) - fsdept(ji,jj,jk-kp) ) * r1_e1u(ji,jj)  ) * umask(ji,jj,jk) 
    483                      ze3_e1    =  fse3w(ji+ip,jj,jk-kp) * r1_e1u(ji,jj)  
     512                        &          - ( gdept_n(ji+1,jj,jk-kp) - gdept_n(ji,jj,jk-kp) ) * r1_e1u(ji,jj)  ) * umask(ji,jj,jk) 
     513                     ze3_e1    =  e3w_n(ji+ip,jj,jk-kp) * r1_e1u(ji,jj)  
    484514                     zti_mlb(ji+ip,jj   ,1-ip,kp) = SIGN( MIN( rn_slpmax, 5.0_wp * ze3_e1  , ABS( zti_g_raw ) ), zti_g_raw ) 
    485515                  ENDIF 
    486516                  ! 
    487517                  jk = nmln(ji,jj+jp) + 1 
    488                   IF( jk .GT. mbkt(ji,jj+jp) ) THEN  !ML reaches bottom 
     518                  IF( jk > mbkt(ji,jj+jp) ) THEN  !ML reaches bottom 
    489519                     ztj_mlb(ji   ,jj+jp,1-jp,kp) = 0.0_wp 
    490520                  ELSE 
    491521                     ztj_g_raw = (  zdyrho(ji,jj+jp,jk-kp,1-jp) / zdzrho(ji,jj+jp,jk-kp,kp)      & 
    492                         &      - ( fsdept(ji,jj+1,jk-kp) - fsdept(ji,jj,jk-kp) ) / e2v(ji,jj)  ) * vmask(ji,jj,jk) 
    493                      ze3_e2    =  fse3w(ji,jj+jp,jk-kp) / e2v(ji,jj) 
     522                        &      - ( gdept_n(ji,jj+1,jk-kp) - gdept_n(ji,jj,jk-kp) ) / e2v(ji,jj)  ) * vmask(ji,jj,jk) 
     523                     ze3_e2    =  e3w_n(ji,jj+jp,jk-kp) / e2v(ji,jj) 
    494524                     ztj_mlb(ji   ,jj+jp,1-jp,kp) = SIGN( MIN( rn_slpmax, 5.0_wp * ze3_e2  , ABS( ztj_g_raw ) ), ztj_g_raw ) 
    495525                  ENDIF 
     
    523553                     ! 
    524554                     ! Must mask contribution to slope for triad jk=1,kp=0 that poke up though ocean surface 
    525                      zti_coord = znot_thru_surface * ( fsdept(ji+1,jj  ,jk) - fsdept(ji,jj,jk) ) * r1_e1u(ji,jj) 
    526                      ztj_coord = znot_thru_surface * ( fsdept(ji  ,jj+1,jk) - fsdept(ji,jj,jk) ) * r1_e2v(ji,jj)     ! unmasked 
     555                     zti_coord = znot_thru_surface * ( gdept_n(ji+1,jj  ,jk) - gdept_n(ji,jj,jk) ) * r1_e1u(ji,jj) 
     556                     ztj_coord = znot_thru_surface * ( gdept_n(ji  ,jj+1,jk) - gdept_n(ji,jj,jk) ) * r1_e2v(ji,jj)     ! unmasked 
    527557                     zti_g_raw = zti_raw - zti_coord      ! ref to geopot surfaces 
    528558                     ztj_g_raw = ztj_raw - ztj_coord 
    529559                     ! additional limit required in bilaplacian case 
    530                      ze3_e1    = fse3w(ji+ip,jj   ,jk+kp) * r1_e1u(ji,jj) 
    531                      ze3_e2    = fse3w(ji   ,jj+jp,jk+kp) * r1_e2v(ji,jj) 
     560                     ze3_e1    = e3w_n(ji+ip,jj   ,jk+kp) * r1_e1u(ji,jj) 
     561                     ze3_e2    = e3w_n(ji   ,jj+jp,jk+kp) * r1_e2v(ji,jj) 
    532562                     ! NB: hard coded factor 5 (can be a namelist parameter...) 
    533563                     zti_g_lim = SIGN( MIN( rn_slpmax, 5.0_wp * ze3_e1, ABS( zti_g_raw ) ), zti_g_raw ) 
     
    542572                     zti_g_lim =          ( zfacti   * zti_g_lim                       & 
    543573                        &      + ( 1._wp - zfacti ) * zti_mlb(ji+ip,jj,1-ip,kp)   & 
    544                         &                           * fsdepw(ji+ip,jj,jk+kp) * z1_mlbw(ji+ip,jj) ) * umask(ji,jj,jk+kp) 
     574                        &                           * gdepw_n(ji+ip,jj,jk+kp) * z1_mlbw(ji+ip,jj) ) * umask(ji,jj,jk+kp) 
    545575                     ztj_g_lim =          ( zfactj   * ztj_g_lim                       & 
    546576                        &      + ( 1._wp - zfactj ) * ztj_mlb(ji,jj+jp,1-jp,kp)   & 
    547                         &                           * fsdepw(ji,jj+jp,jk+kp) * z1_mlbw(ji,jj+jp) ) * vmask(ji,jj,jk+kp) 
     577                        &                           * gdepw_n(ji,jj+jp,jk+kp) * z1_mlbw(ji,jj+jp) ) * vmask(ji,jj,jk+kp) 
    548578                     ! 
    549579                     triadi_g(ji+ip,jj   ,jk,1-ip,kp) = zti_g_lim 
     
    577607                     triadj(ji   ,jj+jp,jk,1-jp,kp) = ztj_lim * zjsw 
    578608                     ! 
    579                      zbu  = e1e2u(ji   ,jj   ) * fse3u(ji   ,jj   ,jk   ) 
    580                      zbv  = e1e2v(ji   ,jj   ) * fse3v(ji   ,jj   ,jk   ) 
    581                      zbti = e1e2t(ji+ip,jj   ) * fse3w(ji+ip,jj   ,jk+kp) 
    582                      zbtj = e1e2t(ji   ,jj+jp) * fse3w(ji   ,jj+jp,jk+kp) 
     609                     zbu  = e1e2u(ji   ,jj   ) * e3u_n(ji   ,jj   ,jk   ) 
     610                     zbv  = e1e2v(ji   ,jj   ) * e3v_n(ji   ,jj   ,jk   ) 
     611                     zbti = e1e2t(ji+ip,jj   ) * e3w_n(ji+ip,jj   ,jk+kp) 
     612                     zbtj = e1e2t(ji   ,jj+jp) * e3w_n(ji   ,jj+jp,jk+kp) 
    583613                     ! 
    584614                     wslp2(ji+ip,jj,jk+kp) = wslp2(ji+ip,jj,jk+kp) + 0.25_wp * zbu / zbti * zti_g_lim*zti_g_lim      ! masked 
     
    682712            !                        !- bound the slopes: abs(zw.)<= 1/100 and zb..<0 
    683713            !                           kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    684             zbu = MIN(  zbu , - z1_slpmax * ABS( zau ) , -7.e+3_wp/fse3u(ji,jj,iku)* ABS( zau )  ) 
    685             zbv = MIN(  zbv , - z1_slpmax * ABS( zav ) , -7.e+3_wp/fse3v(ji,jj,ikv)* ABS( zav )  ) 
     714            zbu = MIN(  zbu , - z1_slpmax * ABS( zau ) , -7.e+3_wp/e3u_n(ji,jj,iku)* ABS( zau )  ) 
     715            zbv = MIN(  zbv , - z1_slpmax * ABS( zav ) , -7.e+3_wp/e3v_n(ji,jj,ikv)* ABS( zav )  ) 
    686716            !                        !- Slope at u- & v-points (uslpml, vslpml) 
    687717            uslpml(ji,jj) = zau / ( zbu - zeps ) * umask(ji,jj,iku) 
     
    699729            zcj = MAX(   vmask(ji,jj-1,ik  ) + vmask(ji,jj,ik  )           & 
    700730               &       + vmask(ji,jj-1,ikm1) + vmask(ji,jj,ikm1) , zeps  ) * e2t(ji,jj) 
    701             zai =    (   p_gru(ji-1,jj,ik  ) + p_gru(ji,jj,ik)           & 
     731            zai =    (   p_gru(ji-1,jj,ik  ) + p_gru(ji,jj,ik)             & 
    702732               &       + p_gru(ji-1,jj,ikm1) + p_gru(ji,jj,ikm1  )  ) / zci  * tmask(ji,jj,ik) 
    703733            zaj =    (   p_grv(ji,jj-1,ik  ) + p_grv(ji,jj,ik  )           & 
     
    705735            !                        !- bound the slopes: abs(zw.)<= 1/100 and zb..<0. 
    706736            !                           kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    707             zbi = MIN(  zbw , -100._wp* ABS( zai ) , -7.e+3_wp/fse3w(ji,jj,ik)* ABS( zai )  ) 
    708             zbj = MIN(  zbw , -100._wp* ABS( zaj ) , -7.e+3_wp/fse3w(ji,jj,ik)* ABS( zaj )  ) 
     737            zbi = MIN(  zbw , -100._wp* ABS( zai ) , -7.e+3_wp/e3w_n(ji,jj,ik)* ABS( zai )  ) 
     738            zbj = MIN(  zbw , -100._wp* ABS( zaj ) , -7.e+3_wp/e3w_n(ji,jj,ik)* ABS( zaj )  ) 
    709739            !                        !- i- & j-slope at w-points (wslpiml, wslpjml) 
    710740            wslpiml(ji,jj) = zai / ( zbi - zeps ) * tmask (ji,jj,ik) 
     
    767797 
    768798         !!gm I no longer understand this..... 
    769 !!gm         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (lk_vvl .AND. ln_rstart) ) THEN 
     799!!gm         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (.NOT.ln_linssh .AND. ln_rstart) ) THEN 
    770800!            IF(lwp)   WRITE(numout,*) '          Horizontal mixing in s-coordinate: slope = slope of s-surfaces' 
    771801! 
     
    775805! 
    776806!            ! set the slope of diffusion to the slope of s-surfaces 
    777 !            !      ( c a u t i o n : minus sign as fsdep has positive value ) 
     807!            !      ( c a u t i o n : minus sign as dep has positive value ) 
    778808!            DO jk = 1, jpk 
    779809!               DO jj = 2, jpjm1 
    780810!                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    781 !                     uslp (ji,jj,jk) = - ( fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk) ) * r1_e1u(ji,jj) * umask(ji,jj,jk) 
    782 !                     vslp (ji,jj,jk) = - ( fsdept(ji,jj+1,jk) - fsdept(ji ,jj ,jk) ) * r1_e2v(ji,jj) * vmask(ji,jj,jk) 
    783 !                     wslpi(ji,jj,jk) = - ( fsdepw(ji+1,jj,jk) - fsdepw(ji-1,jj,jk) ) * r1_e1t(ji,jj) * wmask(ji,jj,jk) * 0.5 
    784 !                     wslpj(ji,jj,jk) = - ( fsdepw(ji,jj+1,jk) - fsdepw(ji,jj-1,jk) ) * r1_e2t(ji,jj) * wmask(ji,jj,jk) * 0.5 
     811!                     uslp (ji,jj,jk) = - ( gdept_n(ji+1,jj,jk) - gdept_n(ji ,jj ,jk) ) * r1_e1u(ji,jj) * umask(ji,jj,jk) 
     812!                     vslp (ji,jj,jk) = - ( gdept_n(ji,jj+1,jk) - gdept_n(ji ,jj ,jk) ) * r1_e2v(ji,jj) * vmask(ji,jj,jk) 
     813!                     wslpi(ji,jj,jk) = - ( gdepw_n(ji+1,jj,jk) - gdepw_n(ji-1,jj,jk) ) * r1_e1t(ji,jj) * wmask(ji,jj,jk) * 0.5 
     814!                     wslpj(ji,jj,jk) = - ( gdepw_n(ji,jj+1,jk) - gdepw_n(ji,jj-1,jk) ) * r1_e2t(ji,jj) * wmask(ji,jj,jk) * 0.5 
    785815!                  END DO 
    786816!               END DO 
Note: See TracChangeset for help on using the changeset viewer.