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 5836 for trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90 – NEMO

Ignore:
Timestamp:
2015-10-26T15:49:40+01:00 (8 years ago)
Author:
cetlod
Message:

merge the simplification branch onto the trunk, see ticket #1612

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r5803 r5836  
    2828   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    2929   !!---------------------------------------------------------------------- 
    30 #if defined key_zdftke   ||   defined key_esopa 
     30#if defined key_zdftke 
    3131   !!---------------------------------------------------------------------- 
    3232   !!   'key_zdftke'                                   TKE vertical physics 
     
    102102#  include "vectopt_loop_substitute.h90" 
    103103   !!---------------------------------------------------------------------- 
    104    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     104   !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
    105105   !! $Id$ 
    106106   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    117117         &      e_pdl(jpi,jpj,jpk) , e_ric(jpi,jpj,jpk) ,                          & 
    118118#endif 
    119          &      apdlr(jpi,jpj,jpk) , htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
    120          &      STAT= zdf_tke_alloc      ) 
     119         &      htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
     120         &      apdlr(jpi,jpj,jpk) ,                                           STAT= zdf_tke_alloc      ) 
    121121         ! 
    122122      IF( lk_mpp             )   CALL mpp_sum ( zdf_tke_alloc ) 
     
    232232      REAL(wp) ::   zzd_up, zzd_lw                  !    -         - 
    233233!!bfr      REAL(wp) ::   zebot                           !    -         - 
    234       INTEGER , POINTER, DIMENSION(:,:  ) :: imlc 
    235       REAL(wp), POINTER, DIMENSION(:,:  ) :: zhlc 
    236       REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc, zdiag, zd_up, zd_lw, z3du, z3dv 
     234      INTEGER , POINTER, DIMENSION(:,:  ) ::   imlc 
     235      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhlc 
     236      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv 
    237237      REAL(wp)                            ::   zri  !   local Richardson number 
    238238      !!-------------------------------------------------------------------- 
     
    240240      IF( nn_timing == 1 )  CALL timing_start('tke_tke') 
    241241      ! 
    242       CALL wrk_alloc( jpi,jpj, imlc )    ! integer 
    243       CALL wrk_alloc( jpi,jpj, zhlc )  
    244       CALL wrk_alloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
     242      CALL wrk_alloc( jpi,jpj,       imlc )    ! integer 
     243      CALL wrk_alloc( jpi,jpj,       zhlc )  
     244      CALL wrk_alloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
    245245      ! 
    246246      zbbrau = rn_ebb / rau0       ! Local constant initialisation 
     
    256256         DO jj = 2, jpjm1            ! en(mikt(ji,jj))   = rn_emin 
    257257            DO ji = fs_2, fs_jpim1   ! vector opt. 
    258                en(ji,jj,mikt(ji,jj))=rn_emin * tmask(ji,jj,1) 
     258               en(ji,jj,mikt(ji,jj)) = rn_emin * tmask(ji,jj,1) 
    259259            END DO 
    260260         END DO 
     
    277277      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    278278      !                     en(bot)   = (rn_ebb0/rau0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 
    279 !CDIR NOVERRCHK 
    280279!!    DO jj = 2, jpjm1 
    281 !CDIR NOVERRCHK 
    282280!!       DO ji = fs_2, fs_jpim1   ! vector opt. 
    283281!!          ztx2 = bfrua(ji-1,jj) * ub(ji-1,jj,mbku(ji-1,jj)) + & 
     
    318316         END DO 
    319317         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
    320 !CDIR NOVERRCHK 
    321318         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    322 !CDIR NOVERRCHK 
    323             DO jj = 2, jpjm1 
    324 !CDIR NOVERRCHK 
     319            DO jj = 2, jpjm1 
    325320               DO ji = fs_2, fs_jpim1   ! vector opt. 
    326321                  zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
     
    376371         ! 
    377372      ENDIF 
    378          !          
     373      !          
    379374      DO jk = 2, jpkm1           !* Matrix and right hand side in en 
    380375         DO jj = 2, jpjm1 
     
    408403         END DO 
    409404      END DO 
    410       ! 
    411       ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    412       DO jj = 2, jpjm1 
     405      DO jj = 2, jpjm1                             ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    413406         DO ji = fs_2, fs_jpim1   ! vector opt. 
    414407            zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
     
    422415         END DO 
    423416      END DO 
    424       ! 
    425       ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    426       DO jj = 2, jpjm1 
     417      DO jj = 2, jpjm1                             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    427418         DO ji = fs_2, fs_jpim1   ! vector opt. 
    428419            en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
     
    465456         END DO 
    466457      ELSEIF( nn_etau == 3 ) THEN       !* penetration belox the mixed layer (HF variability) 
    467 !CDIR NOVERRCHK 
    468458         DO jk = 2, jpkm1 
    469 !CDIR NOVERRCHK 
    470             DO jj = 2, jpjm1 
    471 !CDIR NOVERRCHK 
     459            DO jj = 2, jpjm1 
    472460               DO ji = fs_2, fs_jpim1   ! vector opt. 
    473461                  ztx2 = utau(ji-1,jj  ) + utau(ji,jj) 
     
    484472      CALL lbc_lnk( en, 'W', 1. )      ! Lateral boundary conditions (sign unchanged) 
    485473      ! 
    486       CALL wrk_dealloc( jpi,jpj, imlc )    ! integer 
    487       CALL wrk_dealloc( jpi,jpj, zhlc )  
    488       CALL wrk_dealloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
     474      CALL wrk_dealloc( jpi,jpj,       imlc )    ! integer 
     475      CALL wrk_dealloc( jpi,jpj,       zhlc )  
     476      CALL wrk_dealloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
    489477      ! 
    490478      IF( nn_timing == 1 )  CALL timing_stop('tke_tke') 
     
    530518      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    531519      REAL(wp) ::   zrn2, zraug, zcoef, zav     ! local scalars 
    532       REAL(wp) ::   zdku, zri, zsqen     !   -      - 
     520      REAL(wp) ::   zdku, zri, zsqen            !   -      - 
    533521      REAL(wp) ::   zdkv, zemxl, zemlm, zemlp   !   -      - 
    534522      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmpdl, zmxlm, zmxld 
     
    560548      ENDIF 
    561549      ! 
    562 !CDIR NOVERRCHK 
    563550      DO jk = 2, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
    564 !CDIR NOVERRCHK 
    565          DO jj = 2, jpjm1 
    566 !CDIR NOVERRCHK 
     551         DO jj = 2, jpjm1 
    567552            DO ji = fs_2, fs_jpim1   ! vector opt. 
    568553               zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    569                zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 ) ) 
     554               zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
    570555            END DO 
    571556         END DO 
     
    574559      !                     !* Physical limits for the mixing length 
    575560      ! 
    576       zmxld(:,:,1 ) = zmxlm(:,:,1)   ! surface set to the minimum value  
     561      zmxld(:,:, 1 ) = zmxlm(:,:,1)   ! surface set to the minimum value  
    577562      zmxld(:,:,jpk) = rmxl_min       ! last level  set to the minimum value 
    578563      ! 
    579564      SELECT CASE ( nn_mxl ) 
    580565      ! 
     566 !!gm Not sure of that coding for ISF.... 
    581567      ! where wmask = 0 set zmxlm == fse3w 
    582568      CASE ( 0 )           ! bounded by the distance to surface and bottom 
     
    637623            END DO 
    638624         END DO 
    639 !CDIR NOVERRCHK 
    640625         DO jk = 2, jpkm1 
    641 !CDIR NOVERRCHK 
    642             DO jj = 2, jpjm1 
    643 !CDIR NOVERRCHK 
     626            DO jj = 2, jpjm1 
    644627               DO ji = fs_2, fs_jpim1   ! vector opt. 
    645628                  zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
     
    661644      !                     !  Vertical eddy viscosity and diffusivity  (avmu, avmv, avt) 
    662645      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    663 !CDIR NOVERRCHK 
    664646      DO jk = 1, jpkm1            !* vertical eddy viscosity & diffivity at w-points 
    665 !CDIR NOVERRCHK 
    666          DO jj = 2, jpjm1 
    667 !CDIR NOVERRCHK 
     647         DO jj = 2, jpjm1 
    668648            DO ji = fs_2, fs_jpim1   ! vector opt. 
    669649               zsqen = SQRT( en(ji,jj,jk) ) 
     
    694674# if defined key_c1d 
    695675                  e_pdl(ji,jj,jk) = apdlr(ji,jj,jk) * wmask(ji,jj,jk)    ! c1d configuration : save masked Prandlt number 
     676!!gm bug NO zri here.... 
     677!!gm remove the specific diag for c1d ! 
    696678                  e_ric(ji,jj,jk) = zri * wmask(ji,jj,jk)                            ! c1d config. : save Ri 
    697679# endif 
Note: See TracChangeset for help on using the changeset viewer.