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 5446 for branches/UKMO/dev_r5021_nn_etau_revision/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90 – NEMO

Ignore:
Timestamp:
2015-06-19T17:52:53+02:00 (9 years ago)
Author:
davestorkey
Message:

Update UKMO/dev_r5021_nn_etau_revision branch to revision 5442 of the trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5021_nn_etau_revision/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r5242 r5446  
    2626   !!                 !                                + cleaning of the parameters + bugs correction 
    2727   !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
     28   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    2829   !!---------------------------------------------------------------------- 
    2930#if defined key_zdftke   ||   defined key_esopa 
     
    241242      zfact3 = 0.5_wp       * rn_ediss 
    242243      ! 
     244      ! 
    243245      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    244246      !                     !  Surface boundary condition on tke 
    245247      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     248      IF ( ln_isfcav ) THEN 
     249         DO jj = 2, jpjm1            ! en(mikt(ji,jj))   = rn_emin 
     250            DO ji = fs_2, fs_jpim1   ! vector opt. 
     251               en(ji,jj,mikt(ji,jj))=rn_emin * tmask(ji,jj,1) 
     252            END DO 
     253         END DO 
     254      END IF 
    246255      DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
    247256         DO ji = fs_2, fs_jpim1   ! vector opt. 
    248             IF (mikt(ji,jj) .GT. 1) THEN 
    249                en(ji,jj,mikt(ji,jj))=rn_emin 
    250             ELSE 
    251                en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
    252             END IF 
     257            en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
    253258         END DO 
    254259      END DO 
     
    306311         END DO 
    307312         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
     313!CDIR NOVERRCHK 
    308314         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    309             DO jj = 2, jpjm1 
     315!CDIR NOVERRCHK 
     316            DO jj = 2, jpjm1 
     317!CDIR NOVERRCHK 
    310318               DO ji = fs_2, fs_jpim1   ! vector opt. 
    311319                  zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
     
    314322                  zwlc = zind * rn_lc * zus * SIN( rpi * fsdepw(ji,jj,jk) / zhlc(ji,jj) ) 
    315323                  !                                           ! TKE Langmuir circulation source term 
    316                   en(ji,jj,jk) = en(ji,jj,jk) + rdt * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) * tmask(ji,jj,jk) 
     324                  en(ji,jj,jk) = en(ji,jj,jk) + rdt * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    317325               END DO 
    318326            END DO 
     
    333341               avmu(ji,jj,jk) = avmu(ji,jj,jk) * ( un(ji,jj,jk-1) - un(ji,jj,jk) )   & 
    334342                  &                            * ( ub(ji,jj,jk-1) - ub(ji,jj,jk) )   &  
    335                   &           / (  fse3uw_n(ji,jj,jk)         & 
    336                   &              * fse3uw_b(ji,jj,jk) ) 
     343                  &                            / (  fse3uw_n(ji,jj,jk)               & 
     344                  &                              *  fse3uw_b(ji,jj,jk) ) 
    337345               avmv(ji,jj,jk) = avmv(ji,jj,jk) * ( vn(ji,jj,jk-1) - vn(ji,jj,jk) )   & 
    338346                  &                            * ( vb(ji,jj,jk-1) - vb(ji,jj,jk) )   & 
     
    343351      END DO 
    344352      ! 
    345       DO jj = 2, jpjm1 
    346          DO ji = fs_2, fs_jpim1   ! vector opt. 
    347             DO jk = mikt(ji,jj)+1, jpkm1           !* Matrix and right hand side in en 
     353      DO jk = 2, jpkm1           !* Matrix and right hand side in en 
     354         DO jj = 2, jpjm1 
     355            DO ji = fs_2, fs_jpim1   ! vector opt. 
    348356               zcof   = zfact1 * tmask(ji,jj,jk) 
    349357               zzd_up = zcof * ( avm  (ji,jj,jk+1) + avm  (ji,jj,jk  ) )   &  ! upper diagonal 
     
    362370               en(ji,jj,jk) = en(ji,jj,jk) + rdt * (  zesh2  -   avt(ji,jj,jk) * rn2(ji,jj,jk)    & 
    363371                  &                                 + zfact3 * dissl(ji,jj,jk) * en (ji,jj,jk)  ) & 
    364                   &                                 * tmask(ji,jj,jk) * tmask(ji,jj,jk-1) 
    365             END DO 
    366             !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
    367             DO jk = mikt(ji,jj)+2, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     372                  &                                 * wmask(ji,jj,jk) 
     373            END DO 
     374         END DO 
     375      END DO 
     376      !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
     377      DO jk = 3, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     378         DO jj = 2, jpjm1 
     379            DO ji = fs_2, fs_jpim1    ! vector opt. 
    368380               zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    369381            END DO 
    370             ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    371             zd_lw(ji,jj,mikt(ji,jj)+1) = en(ji,jj,mikt(ji,jj)+1) - zd_lw(ji,jj,mikt(ji,jj)+1) * en(ji,jj,mikt(ji,jj))    ! Surface boudary conditions on tke 
    372             ! 
    373             DO jk = mikt(ji,jj)+2, jpkm1 
     382         END DO 
     383      END DO 
     384      ! 
     385      ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     386      DO jj = 2, jpjm1 
     387         DO ji = fs_2, fs_jpim1   ! vector opt. 
     388            zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
     389         END DO 
     390      END DO 
     391      DO jk = 3, jpkm1 
     392         DO jj = 2, jpjm1 
     393            DO ji = fs_2, fs_jpim1    ! vector opt. 
    374394               zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    375395            END DO 
    376             ! 
    377             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     396         END DO 
     397      END DO 
     398      ! 
     399      ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     400      DO jj = 2, jpjm1 
     401         DO ji = fs_2, fs_jpim1   ! vector opt. 
    378402            en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    379             ! 
    380             DO jk = jpk-2, mikt(ji,jj)+1, -1 
     403         END DO 
     404      END DO 
     405      DO jk = jpk-2, 2, -1 
     406         DO jj = 2, jpjm1 
     407            DO ji = fs_2, fs_jpim1    ! vector opt. 
    381408               en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    382409            END DO 
    383             ! 
    384             DO jk = mikt(ji,jj), jpkm1                             ! set the minimum value of tke 
    385                en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * tmask(ji,jj,jk) 
     410         END DO 
     411      END DO 
     412      DO jk = 2, jpkm1                             ! set the minimum value of tke 
     413         DO jj = 2, jpjm1 
     414            DO ji = fs_2, fs_jpim1   ! vector opt. 
     415               en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * wmask(ji,jj,jk) 
    386416            END DO 
    387417         END DO 
     
    411441               DO ji = fs_2, fs_jpim1   ! vector opt. 
    412442                  en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) )   & 
    413                      &                                 * ( 1._wp - fr_i(ji,jj) )  * tmask(ji,jj,jk) * tmask(ji,jj,1) 
     443                     &                                 * ( 1._wp - fr_i(ji,jj) )  * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    414444               END DO 
    415445            END DO 
     
    420450               jk = nmln(ji,jj) 
    421451               en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) )   & 
    422                   &                                 * ( 1._wp - fr_i(ji,jj) )  * tmask(ji,jj,jk) * tmask(ji,jj,1) 
     452                  &                                 * ( 1._wp - fr_i(ji,jj) )  * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    423453            END DO 
    424454         END DO 
     
    436466                  zdif = rhftau_scl * MAX( 0._wp, zdif + rhftau_add )  ! apply some modifications... 
    437467                  en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) )   & 
    438                      &                        * ( 1._wp - fr_i(ji,jj) ) * tmask(ji,jj,jk) * tmask(ji,jj,jk-1) * tmask(ji,jj,1) 
     468                     &                        * ( 1._wp - fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    439469               END DO 
    440470            END DO 
     
    530560      !                     !* Buoyancy length scale: l=sqrt(2*e/n**2) 
    531561      ! 
     562      ! initialisation of interior minimum value (avoid a 2d loop with mikt) 
     563      zmxlm(:,:,:)  = rmxl_min     
     564      zmxld(:,:,:)  = rmxl_min 
     565      ! 
    532566      IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
    533567         DO jj = 2, jpjm1 
    534568            DO ji = fs_2, fs_jpim1 
    535                IF (mikt(ji,jj) .GT. 1) THEN 
    536                   zmxlm(ji,jj,mikt(ji,jj)) = rmxl_min 
    537                ELSE 
    538                   zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
    539                   zmxlm(ji,jj,mikt(ji,jj)) = MAX( rn_mxl0, zraug * taum(ji,jj) ) 
    540                END IF 
     569               zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
     570               zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1) ) 
    541571            END DO 
    542572         END DO 
    543573      ELSE  
    544          DO jj = 2, jpjm1 
    545             DO ji = fs_2, fs_jpim1                         ! surface set to the minimum value 
    546                zmxlm(ji,jj,mikt(ji,jj)) = MAX( tmask(ji,jj,1) * rn_mxl0, rmxl_min) 
    547             END DO 
    548          END DO 
     574         zmxlm(:,:,1) = rn_mxl0 
    549575      ENDIF 
    550       zmxlm(:,:,jpk)  = rmxl_min     ! last level set to the interior minium value 
    551       ! 
    552 !CDIR NOVERRCHK 
    553       DO jj = 2, jpjm1 
    554 !CDIR NOVERRCHK 
    555          DO ji = fs_2, fs_jpim1   ! vector opt. 
    556             !CDIR NOVERRCHK 
    557             DO jk = mikt(ji,jj)+1, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
     576      ! 
     577!CDIR NOVERRCHK 
     578      DO jk = 2, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
     579!CDIR NOVERRCHK 
     580         DO jj = 2, jpjm1 
     581!CDIR NOVERRCHK 
     582            DO ji = fs_2, fs_jpim1   ! vector opt. 
    558583               zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    559                zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
    560             END DO 
    561             zmxld(ji,jj,mikt(ji,jj)) = zmxlm(ji,jj,mikt(ji,jj))   ! surface set to the minimum value  
     584               zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 ) ) 
     585            END DO 
    562586         END DO 
    563587      END DO 
     
    565589      !                     !* Physical limits for the mixing length 
    566590      ! 
    567       zmxld(:,:, 1 ) = zmxlm(:,:,1)   ! surface set to the zmxlm   value 
     591      zmxld(:,:,1  ) = zmxlm(:,:,1)   ! surface set to the minimum value  
    568592      zmxld(:,:,jpk) = rmxl_min       ! last level  set to the minimum value 
    569593      ! 
    570594      SELECT CASE ( nn_mxl ) 
    571595      ! 
     596      ! where wmask = 0 set zmxlm == fse3w 
    572597      CASE ( 0 )           ! bounded by the distance to surface and bottom 
    573          DO jj = 2, jpjm1 
    574             DO ji = fs_2, fs_jpim1   ! vector opt. 
    575                DO jk = mikt(ji,jj)+1, jpkm1 
     598         DO jk = 2, jpkm1 
     599            DO jj = 2, jpjm1 
     600               DO ji = fs_2, fs_jpim1   ! vector opt. 
    576601                  zemxl = MIN( fsdepw(ji,jj,jk) - fsdepw(ji,jj,mikt(ji,jj)), zmxlm(ji,jj,jk),   & 
    577602                  &            fsdepw(ji,jj,mbkt(ji,jj)+1) - fsdepw(ji,jj,jk) ) 
    578                   zmxlm(ji,jj,jk) = zemxl 
    579                   zmxld(ji,jj,jk) = zemxl 
     603                  ! wmask prevent zmxlm = 0 if jk = mikt(ji,jj) 
     604                  zmxlm(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk),fse3w(ji,jj,jk)) * (1 - wmask(ji,jj,jk)) 
     605                  zmxld(ji,jj,jk) = zemxl * wmask(ji,jj,jk) + MIN(zmxlm(ji,jj,jk),fse3w(ji,jj,jk)) * (1 - wmask(ji,jj,jk)) 
    580606               END DO 
    581607            END DO 
     
    583609         ! 
    584610      CASE ( 1 )           ! bounded by the vertical scale factor 
    585          DO jj = 2, jpjm1 
    586             DO ji = fs_2, fs_jpim1   ! vector opt. 
    587                DO jk = mikt(ji,jj)+1, jpkm1 
     611         DO jk = 2, jpkm1 
     612            DO jj = 2, jpjm1 
     613               DO ji = fs_2, fs_jpim1   ! vector opt. 
    588614                  zemxl = MIN( fse3w(ji,jj,jk), zmxlm(ji,jj,jk) ) 
    589615                  zmxlm(ji,jj,jk) = zemxl 
     
    594620         ! 
    595621      CASE ( 2 )           ! |dk[xml]| bounded by e3t : 
    596          DO jj = 2, jpjm1 
    597             DO ji = fs_2, fs_jpim1   ! vector opt. 
    598                DO jk = mikt(ji,jj)+1, jpkm1         ! from the surface to the bottom : 
     622         DO jk = 2, jpkm1         ! from the surface to the bottom : 
     623            DO jj = 2, jpjm1 
     624               DO ji = fs_2, fs_jpim1   ! vector opt. 
    599625                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    600626               END DO 
    601                DO jk = jpkm1, mikt(ji,jj)+1, -1     ! from the bottom to the surface : 
     627            END DO 
     628         END DO 
     629         DO jk = jpkm1, 2, -1     ! from the bottom to the surface : 
     630            DO jj = 2, jpjm1 
     631               DO ji = fs_2, fs_jpim1   ! vector opt. 
    602632                  zemxl = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    603633                  zmxlm(ji,jj,jk) = zemxl 
     
    608638         ! 
    609639      CASE ( 3 )           ! lup and ldown, |dk[xml]| bounded by e3t : 
    610          DO jj = 2, jpjm1 
    611             DO ji = fs_2, fs_jpim1   ! vector opt. 
    612                DO jk = mikt(ji,jj)+1, jpkm1         ! from the surface to the bottom : lup 
     640         DO jk = 2, jpkm1         ! from the surface to the bottom : lup 
     641            DO jj = 2, jpjm1 
     642               DO ji = fs_2, fs_jpim1   ! vector opt. 
    613643                  zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    614644               END DO 
    615                DO jk = jpkm1, mikt(ji,jj)+1, -1     ! from the bottom to the surface : ldown 
     645            END DO 
     646         END DO 
     647         DO jk = jpkm1, 2, -1     ! from the bottom to the surface : ldown 
     648            DO jj = 2, jpjm1 
     649               DO ji = fs_2, fs_jpim1   ! vector opt. 
    616650                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    617651               END DO 
     
    650684               zsqen = SQRT( en(ji,jj,jk) ) 
    651685               zav   = rn_ediff * zmxlm(ji,jj,jk) * zsqen 
    652                avm  (ji,jj,jk) = MAX( zav,                  avmb(jk) ) * tmask(ji,jj,jk) 
    653                avt  (ji,jj,jk) = MAX( zav, avtb_2d(ji,jj) * avtb(jk) ) * tmask(ji,jj,jk) 
     686               avm  (ji,jj,jk) = MAX( zav,                  avmb(jk) ) * wmask(ji,jj,jk) 
     687               avt  (ji,jj,jk) = MAX( zav, avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) 
    654688               dissl(ji,jj,jk) = zsqen / zmxld(ji,jj,jk) 
    655689            END DO 
     
    658692      CALL lbc_lnk( avm, 'W', 1. )      ! Lateral boundary conditions (sign unchanged) 
    659693      ! 
    660       DO jj = 2, jpjm1 
    661          DO ji = fs_2, fs_jpim1   ! vector opt. 
    662             DO jk = miku(ji,jj)+1, jpkm1            !* vertical eddy viscosity at u- and v-points 
    663                avmu(ji,jj,jk) = 0.5 * ( avm(ji,jj,jk) + avm(ji+1,jj  ,jk) ) * umask(ji,jj,jk) 
    664             END DO 
    665             DO jk = mikv(ji,jj)+1, jpkm1 
    666                avmv(ji,jj,jk) = 0.5 * ( avm(ji,jj,jk) + avm(ji  ,jj+1,jk) ) * vmask(ji,jj,jk) 
     694      DO jk = 2, jpkm1            !* vertical eddy viscosity at wu- and wv-points 
     695         DO jj = 2, jpjm1 
     696            DO ji = fs_2, fs_jpim1   ! vector opt. 
     697               avmu(ji,jj,jk) = 0.5 * ( avm(ji,jj,jk) + avm(ji+1,jj  ,jk) ) * wumask(ji,jj,jk) 
     698               avmv(ji,jj,jk) = 0.5 * ( avm(ji,jj,jk) + avm(ji  ,jj+1,jk) ) * wvmask(ji,jj,jk) 
    667699            END DO 
    668700         END DO 
     
    671703      ! 
    672704      IF( nn_pdl == 1 ) THEN      !* Prandtl number case: update avt 
    673          DO jj = 2, jpjm1 
    674             DO ji = fs_2, fs_jpim1   ! vector opt. 
    675                DO jk = mikt(ji,jj)+1, jpkm1 
     705         DO jk = 2, jpkm1 
     706            DO jj = 2, jpjm1 
     707               DO ji = fs_2, fs_jpim1   ! vector opt. 
    676708                  zcoef = avm(ji,jj,jk) * 2._wp * fse3w(ji,jj,jk) * fse3w(ji,jj,jk) 
    677709                  !                                          ! shear 
     
    685717!!gm and even better with the use of the "true" ri_crit=0.22222...  (this change the results!) 
    686718!!gm              zpdlr = MAX(  0.1_wp,  ri_crit / MAX( ri_crit , zri )  ) 
    687                   avt(ji,jj,jk)   = MAX( zpdlr * avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * tmask(ji,jj,jk) 
     719                  avt(ji,jj,jk)   = MAX( zpdlr * avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) 
    688720# if defined key_c1d 
    689                   e_pdl(ji,jj,jk) = zpdlr * tmask(ji,jj,jk)  ! c1d configuration : save masked Prandlt number 
    690                   e_ric(ji,jj,jk) = zri   * tmask(ji,jj,jk)  ! c1d config. : save Ri 
     721                  e_pdl(ji,jj,jk) = zpdlr * wmask(ji,jj,jk)  ! c1d configuration : save masked Prandlt number 
     722                  e_ric(ji,jj,jk) = zri   * wmask(ji,jj,jk)  ! c1d config. : save Ri 
    691723# endif 
    692724              END DO 
     
    776808      IF( nn_pdl  < 0   .OR.  nn_pdl  > 1 )   CALL ctl_stop( 'bad flag: nn_pdl is  0 or 1    ' ) 
    777809      IF( nn_htau < 0  .OR.  nn_htau > 5 )   CALL ctl_stop( 'bad flag: nn_htau is 0 to 5    ' ) 
    778       IF( nn_etau == 3 .AND. .NOT. lk_cpl )   CALL ctl_stop( 'nn_etau == 3 : HF taum only known in coupled mode' ) 
     810      IF( nn_etau == 3 .AND. .NOT. ln_cpl )   CALL ctl_stop( 'nn_etau == 3 : HF taum only known in coupled mode' ) 
    779811 
    780812      IF( ln_mxl0 ) THEN 
     
    829861      !                               !* set vertical eddy coef. to the background value 
    830862      DO jk = 1, jpk 
    831          avt (:,:,jk) = avtb(jk) * tmask(:,:,jk) 
    832          avm (:,:,jk) = avmb(jk) * tmask(:,:,jk) 
    833          avmu(:,:,jk) = avmb(jk) * umask(:,:,jk) 
    834          avmv(:,:,jk) = avmb(jk) * vmask(:,:,jk) 
     863         avt (:,:,jk) = avtb(jk) * wmask (:,:,jk) 
     864         avm (:,:,jk) = avmb(jk) * wmask (:,:,jk) 
     865         avmu(:,:,jk) = avmb(jk) * wumask(:,:,jk) 
     866         avmv(:,:,jk) = avmb(jk) * wvmask(:,:,jk) 
    835867      END DO 
    836868      dissl(:,:,:) = 1.e-12_wp 
     
    883915              en (:,:,:) = rn_emin * tmask(:,:,:) 
    884916              CALL tke_avn                               ! recompute avt, avm, avmu, avmv and dissl (approximation) 
     917              ! 
     918              avt_k (:,:,:) = avt (:,:,:) 
     919              avm_k (:,:,:) = avm (:,:,:) 
     920              avmu_k(:,:,:) = avmu(:,:,:) 
     921              avmv_k(:,:,:) = avmv(:,:,:) 
     922              ! 
    885923              DO jit = nit000 + 1, nit000 + 10   ;   CALL zdf_tke( jit )   ;   END DO 
    886924           ENDIF 
     
    888926           en(:,:,:) = rn_emin * tmask(:,:,:) 
    889927           DO jk = 1, jpk                           ! set the Kz to the background value 
    890               avt (:,:,jk) = avtb(jk) * tmask(:,:,jk) 
    891               avm (:,:,jk) = avmb(jk) * tmask(:,:,jk) 
    892               avmu(:,:,jk) = avmb(jk) * umask(:,:,jk) 
    893               avmv(:,:,jk) = avmb(jk) * vmask(:,:,jk) 
     928              avt (:,:,jk) = avtb(jk) * wmask (:,:,jk) 
     929              avm (:,:,jk) = avmb(jk) * wmask (:,:,jk) 
     930              avmu(:,:,jk) = avmb(jk) * wumask(:,:,jk) 
     931              avmv(:,:,jk) = avmb(jk) * wvmask(:,:,jk) 
    894932           END DO 
    895933        ENDIF 
Note: See TracChangeset for help on using the changeset viewer.