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 10955 – NEMO

Changeset 10955


Ignore:
Timestamp:
2019-05-10T11:15:50+02:00 (5 years ago)
Author:
acc
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Convert ZDF modules and all knock on effects of these conversions. SETTE tested

Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfddm.F90

    r10068 r10955  
    3838CONTAINS 
    3939 
    40    SUBROUTINE zdf_ddm( kt, p_avm, p_avt, p_avs ) 
     40   SUBROUTINE zdf_ddm( kt, Kmm, p_avm, p_avt, p_avs ) 
    4141      !!---------------------------------------------------------------------- 
    4242      !!                  ***  ROUTINE zdf_ddm  *** 
     
    6868      !! References :   Merryfield et al., JPO, 29, 1124-1142, 1999. 
    6969      !!---------------------------------------------------------------------- 
    70       INTEGER, INTENT(in   ) ::   kt       ! ocean time-step indexocean time step 
     70      INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index 
     71      INTEGER, INTENT(in   ) ::   Kmm      ! ocean time level index 
    7172      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   p_avm   !  Kz on momentum    (w-points) 
    7273      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   p_avt   !  Kz on temperature (w-points) 
     
    9394         DO jj = 1, jpj                !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
    9495            DO ji = 1, jpi 
    95                zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
    96 !!gm please, use e3w_n below  
    97                   &  / ( gdept_n(ji,jj,jk-1) - gdept_n(ji,jj,jk) )  
     96               zrw =   ( gdepw(ji,jj,jk  ,Kmm) - gdept(ji,jj,jk,Kmm) )   & 
     97!!gm please, use e3w(:,:,:,Kmm) below  
     98                  &  / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) )  
    9899               ! 
    99100               zaw = (  rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem) * zrw  )  & 
     
    102103                   &    * tmask(ji,jj,jk) * tmask(ji,jj,jk-1) 
    103104               ! 
    104                zdt = zaw * ( tsn(ji,jj,jk-1,jp_tem) - tsn(ji,jj,jk,jp_tem) ) 
    105                zds = zbw * ( tsn(ji,jj,jk-1,jp_sal) - tsn(ji,jj,jk,jp_sal) )  
     105               zdt = zaw * ( ts(ji,jj,jk-1,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ) 
     106               zds = zbw * ( ts(ji,jj,jk-1,jp_sal,Kmm) - ts(ji,jj,jk,jp_sal,Kmm) )  
    106107               IF( ABS( zds) <= 1.e-20_wp )   zds = 1.e-20_wp 
    107108               zrau(ji,jj) = MAX(  1.e-20, zdt / zds  )    ! only retains positive value of zrau 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfdrg.F90

    r10946 r10955  
    8181CONTAINS 
    8282 
    83    SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0,   &   ! <<== in  
     83   SUBROUTINE zdf_drg( kt, Kmm, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0,   &   ! <<== in  
    8484      &                                                     pCdU )      ! ==>> out : bottom drag [m/s] 
    8585      !!---------------------------------------------------------------------- 
     
    9999      !!---------------------------------------------------------------------- 
    100100      INTEGER                 , INTENT(in   ) ::   kt       ! ocean time-step index 
     101      INTEGER                 , INTENT(in   ) ::   Kmm      ! ocean time level index 
    101102      !                       !               !!         !==  top or bottom variables  ==! 
    102103      INTEGER , DIMENSION(:,:), INTENT(in   ) ::   k_mk     ! wet level (1st or last) 
     
    117118            DO ji = 2, jpim1 
    118119               imk = k_mk(ji,jj)          ! ocean bottom level at t-points 
    119                zut = un(ji,jj,imk) + un(ji-1,jj,imk)     ! 2 x velocity at t-point 
    120                zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk) 
    121                zzz = 0.5_wp * e3t_n(ji,jj,imk)           ! altitude below/above (top/bottom) the boundary 
     120               zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     121               zvt = vv(ji,jj,imk,Kmm) + vv(ji,jj-1,imk,Kmm) 
     122               zzz = 0.5_wp * e3t(ji,jj,imk,Kmm)           ! altitude below/above (top/bottom) the boundary 
    122123               ! 
    123124!!JC: possible WAD implementation should modify line below if layers vanish 
     
    131132            DO ji = 2, jpim1 
    132133               imk = k_mk(ji,jj)    ! ocean bottom level at t-points 
    133                zut = un(ji,jj,imk) + un(ji-1,jj,imk)     ! 2 x velocity at t-point 
    134                zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk) 
     134               zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     135               zvt = vv(ji,jj,imk,Kmm) + vv(ji,jj-1,imk,Kmm) 
    135136               !                                                           ! here pCd0 = mask*boost * drag 
    136137               pCdU(ji,jj) = - pCd0(ji,jj) * SQRT(  0.25 * ( zut*zut + zvt*zvt ) + pke0  ) 
     
    183184            ! 
    184185            ! Apply stability criteria on absolute value  : abs(bfr/e3) < 1/(2dt) => bfr/e3 > -1/(2dt) 
    185             zCdu = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) / e3u_n(ji,jj,ikbu) 
    186             zCdv = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) / e3v_n(ji,jj,ikbv) 
     186            zCdu = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) / e3u(ji,jj,ikbu,Kmm) 
     187            zCdv = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) / e3v(ji,jj,ikbv,Kmm) 
    187188            ! 
    188189            pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
     
    198199               ! 
    199200               ! Apply stability criteria on absolute value  : abs(bfr/e3) < 1/(2dt) => bfr/e3 > -1/(2dt) 
    200                zCdu = 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) / e3u_n(ji,jj,ikbu)    ! NB: Cdtop masked 
    201                zCdv = 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / e3v_n(ji,jj,ikbv) 
     201               zCdu = 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) / e3u(ji,jj,ikbu,Kmm)    ! NB: Cdtop masked 
     202               zCdv = 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / e3v(ji,jj,ikbv,Kmm) 
    202203               ! 
    203204               pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfiwm.F90

    r10425 r10955  
    6969 
    7070 
    71    SUBROUTINE zdf_iwm( kt, p_avm, p_avt, p_avs ) 
     71   SUBROUTINE zdf_iwm( kt, Kmm, p_avm, p_avt, p_avs ) 
    7272      !!---------------------------------------------------------------------- 
    7373      !!                  ***  ROUTINE zdf_iwm  *** 
     
    118118      !!---------------------------------------------------------------------- 
    119119      INTEGER                    , INTENT(in   ) ::   kt             ! ocean time step 
     120      INTEGER                    , INTENT(in   ) ::   Kmm            ! time level index 
    120121      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avm          ! momentum Kz (w-points) 
    121122      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avt, p_avs   ! tracer   Kz (w-points) 
     
    155156         END DO 
    156157      END DO 
    157 !!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept_n - sshn 
     158!!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept(:,:,:,Kmm) - ssh(:,:,Kmm) 
    158159      DO jk = 2, jpkm1              ! complete with the level-dependent part 
    159160         DO jj = 1, jpj              
     
    162163                  zemx_iwm(ji,jj,jk) = 0._wp 
    163164               ELSE 
    164                   zemx_iwm(ji,jj,jk) = zfact(ji,jj) * (  EXP( ( gde3w_n(ji,jj,jk  ) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) )     & 
    165                        &                               - EXP( ( gde3w_n(ji,jj,jk-1) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) ) )   & 
    166                        &                            / ( gde3w_n(ji,jj,jk) - gde3w_n(ji,jj,jk-1) ) 
     165                  zemx_iwm(ji,jj,jk) = zfact(ji,jj) * (  EXP( ( gde3w(ji,jj,jk  ) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) )     & 
     166                       &                               - EXP( ( gde3w(ji,jj,jk-1) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) ) )   & 
     167                       &                            / ( gde3w(ji,jj,jk) - gde3w(ji,jj,jk-1) ) 
    167168               ENDIF 
    168169            END DO 
    169170         END DO 
    170 !!gm delta(gde3w_n) = e3t_n  !!  Please verify the grid-point position w versus t-point 
     171!!gm delta(gde3w) = e3t(:,:,:,Kmm)  !!  Please verify the grid-point position w versus t-point 
    171172!!gm it seems to me that only 1/hcri_iwm  is used ==>  compute it one for all 
    172173 
     
    182183         zfact(:,:) = 0._wp 
    183184         DO jk = 2, jpkm1              ! part independent of the level 
    184             zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
     185            zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
    185186         END DO 
    186187         ! 
     
    199200         zfact(:,:) = 0._wp 
    200201         DO jk = 2, jpkm1              ! part independent of the level 
    201             zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 
     202            zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 
    202203         END DO 
    203204         ! 
     
    220221      zfact(:,:)   = 0._wp 
    221222      DO jk = 2, jpkm1 
    222          zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
     223         zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
    223224         zwkb(:,:,jk) = zfact(:,:) 
    224225      END DO 
    225226!!gm even better: 
    226227!      DO jk = 2, jpkm1 
    227 !         zwkb(:,:) = zwkb(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) 
     228!         zwkb(:,:) = zwkb(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) 
    228229!      END DO 
    229230!      zfact(:,:) = zwkb(:,:,jpkm1) 
     
    267268      DO jk = 2, jpkm1              ! complete with the level-dependent part 
    268269         zemx_iwm(:,:,jk) = zemx_iwm(:,:,jk) + zweight(:,:,jk) * zfact(:,:) * wmask(:,:,jk)   & 
    269             &                                / ( gde3w_n(:,:,jk) - gde3w_n(:,:,jk-1) ) 
    270 !!gm  use of e3t_n just above? 
     270            &                                / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 
     271!!gm  use of e3t(:,:,:,Kmm) just above? 
    271272      END DO 
    272273      ! 
    273274!!gm  this is to be replaced by just a constant value znu=1.e-6 m2/s 
    274275      ! Calculate molecular kinematic viscosity 
    275       znu_t(:,:,:) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * tsn(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem)  & 
    276          &                                  + 0.02305_wp * tsn(:,:,:,jp_sal)  ) * tmask(:,:,:) * r1_rau0 
     276      znu_t(:,:,:) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm)  & 
     277         &                                  + 0.02305_wp * ts(:,:,:,jp_sal,Kmm)  ) * tmask(:,:,:) * r1_rau0 
    277278      DO jk = 2, jpkm1 
    278279         znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) 
     
    314315            DO jj = 1, jpj 
    315316               DO ji = 1, jpi 
    316                   zztmp = zztmp + e3w_n(ji,jj,jk) * e1e2t(ji,jj)   & 
     317                  zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj)   & 
    317318                     &          * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    318319               END DO 
     
    374375         z2d(:,:) = 0._wp 
    375376         DO jk = 2, jpkm1 
    376             z2d(:,:) = z2d(:,:) + e3w_n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk) 
     377            z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 
    377378         END DO 
    378379         z2d(:,:) = rau0 * z2d(:,:) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfmxl.F90

    r10425 r10955  
    5757 
    5858 
    59    SUBROUTINE zdf_mxl( kt ) 
     59   SUBROUTINE zdf_mxl( kt, Kmm ) 
    6060      !!---------------------------------------------------------------------- 
    6161      !!                  ***  ROUTINE zdfmxl  *** 
     
    7575      !!---------------------------------------------------------------------- 
    7676      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     77      INTEGER, INTENT(in) ::   Kmm  ! ocean time level index 
    7778      ! 
    7879      INTEGER  ::   ji, jj, jk      ! dummy loop indices 
     
    9899            DO ji = 1, jpi 
    99100               ikt = mbkt(ji,jj) 
    100                hmlp(ji,jj) = hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w_n(ji,jj,jk) 
     101               hmlp(ji,jj) = hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 
    101102               IF( hmlp(ji,jj) < zN2_c )   nmln(ji,jj) = MIN( jk , ikt ) + 1   ! Mixed layer level 
    102103            END DO 
     
    118119            iiki = imld(ji,jj) 
    119120            iikn = nmln(ji,jj) 
    120             hmld (ji,jj) = gdepw_n(ji,jj,iiki  ) * ssmask(ji,jj)    ! Turbocline depth  
    121             hmlp (ji,jj) = gdepw_n(ji,jj,iikn  ) * ssmask(ji,jj)    ! Mixed layer depth 
    122             hmlpt(ji,jj) = gdept_n(ji,jj,iikn-1) * ssmask(ji,jj)    ! depth of the last T-point inside the mixed layer 
     121            hmld (ji,jj) = gdepw(ji,jj,iiki  ,Kmm) * ssmask(ji,jj)    ! Turbocline depth  
     122            hmlp (ji,jj) = gdepw(ji,jj,iikn  ,Kmm) * ssmask(ji,jj)    ! Mixed layer depth 
     123            hmlpt(ji,jj) = gdept(ji,jj,iikn-1,Kmm) * ssmask(ji,jj)    ! depth of the last T-point inside the mixed layer 
    123124         END DO 
    124125      END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfosm.F90

    r10954 r10955  
    941941 ! Stable conditions 
    942942               DO jk = 2, ibld(ji,jj) 
    943                   zznd_d=gdepw_n(ji,jj,jk) / dstokes(ji,jj) 
     943                  zznd_d=gdepw(ji,jj,jk,Kmm) / dstokes(ji,jj) 
    944944                  ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) & 
    945945                       &          *                 ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_wth_1(ji,jj) 
     
    10661066            IF ( lconv(ji,jj) ) THEN 
    10671067               DO jk = 2, imld(ji,jj) 
    1068                   zznd_ml=gdepw_n(ji,jj,jk) / zhml(ji,jj) 
     1068                  zznd_ml=gdepw(ji,jj,jk,Kmm) / zhml(ji,jj) 
    10691069                  ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3 * zsc_wth_1(ji,jj)                & 
    10701070                       &          * ( -2.0 + 2.75 * (       ( 1.0 + 0.6 * zznd_ml**4 )      & 
     
    11881188             IF ( lconv(ji,jj) ) THEN 
    11891189               DO jk = 1, imld(ji,jj) - 1 
    1190                   znd=gdepw_n(ji,jj,jk) / zhml(ji,jj) 
     1190                  znd=gdepw(ji,jj,jk,Kmm) / zhml(ji,jj) 
    11911191                  ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + zwth_ent(ji,jj) * znd 
    11921192                  ghams(ji,jj,jk) = ghams(ji,jj,jk) + zws_ent(ji,jj) * znd 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfphy.F90

    r10946 r10955  
    192192      ioptio = 0  
    193193      IF( ln_zdfcst ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_CST   ;   ENDIF 
    194       IF( ln_zdfric ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_RIC   ;   CALL zdf_ric_init   ;   ENDIF 
    195       IF( ln_zdftke ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_TKE   ;   CALL zdf_tke_init   ;   ENDIF 
    196       IF( ln_zdfgls ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_GLS   ;   CALL zdf_gls_init   ;   ENDIF 
     194      IF( ln_zdfric ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_RIC   ;   CALL zdf_ric_init          ;   ENDIF 
     195      IF( ln_zdftke ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_TKE   ;   CALL zdf_tke_init( Kmm )   ;   ENDIF 
     196      IF( ln_zdfgls ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_GLS   ;   CALL zdf_gls_init          ;   ENDIF 
    197197      IF( ln_zdfosm ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_OSM   ;   CALL zdf_osm_init( Kmm )   ;   ENDIF 
    198198      ! 
     
    244244         ! 
    245245         !                       !* bottom drag 
    246          CALL zdf_drg( kt, mbkt    , r_Cdmin_bot, r_Cdmax_bot,   &   ! <<== in  
     246         CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot,   &   ! <<== in  
    247247            &              r_z0_bot,   r_ke0_bot,    rCd0_bot,   & 
    248248            &                                        rCdU_bot  )     ! ==>> out : bottom drag [m/s] 
    249249         IF( ln_isfcav ) THEN    !* top drag   (ocean cavities) 
    250             CALL zdf_drg( kt, mikt    , r_Cdmin_top, r_Cdmax_top,   &   ! <<== in  
     250            CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top,   &   ! <<== in  
    251251               &              r_z0_top,   r_ke0_top,    rCd0_top,   & 
    252252               &                                        rCdU_top  )     ! ==>> out : bottom drag [m/s] 
     
    287287      !                                         !* double diffusive mixing 
    288288      IF( ln_zdfddm ) THEN                            ! update avt and compute avs 
    289                         CALL zdf_ddm( kt, avm, avt, avs ) 
     289                        CALL zdf_ddm( kt, Kmm,  avm, avt, avs ) 
    290290      ELSE                                            ! same mixing on all tracers 
    291291         avs(2:jpim1,2:jpjm1,1:jpkm1) = avt(2:jpim1,2:jpjm1,1:jpkm1) 
     
    293293      ! 
    294294      !                                         !* wave-induced mixing  
    295       IF( ln_zdfswm )   CALL zdf_swm( kt, avm, avt, avs )   ! surface  wave (Qiao et al. 2004)  
    296       IF( ln_zdfiwm )   CALL zdf_iwm( kt, avm, avt, avs )   ! internal wave (de Lavergne et al 2017) 
     295      IF( ln_zdfswm )   CALL zdf_swm( kt, Kmm, avm, avt, avs )   ! surface  wave (Qiao et al. 2004)  
     296      IF( ln_zdfiwm )   CALL zdf_iwm( kt, Kmm, avm, avt, avs )   ! internal wave (de Lavergne et al 2017) 
    297297 
    298298#if defined key_agrif  
     
    315315      ENDIF 
    316316      ! 
    317       CALL zdf_mxl( kt )                        !* mixed layer depth, and level 
     317      CALL zdf_mxl( kt, Kmm )                        !* mixed layer depth, and level 
    318318      ! 
    319319      IF( lrst_oce ) THEN                       !* write TKE, GLS or RIC fields in the restart file 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfswm.F90

    r10069 r10955  
    3434CONTAINS 
    3535 
    36    SUBROUTINE zdf_swm( kt, p_avm, p_avt, p_avs ) 
     36   SUBROUTINE zdf_swm( kt, Kmm, p_avm, p_avt, p_avs ) 
    3737      !!--------------------------------------------------------------------- 
    3838      !!                     ***  ROUTINE zdf_swm *** 
     
    5252      !!--------------------------------------------------------------------- 
    5353      INTEGER                    , INTENT(in   ) ::   kt             ! ocean time step 
     54      INTEGER                    , INTENT(in   ) ::   Kmm            ! time level index 
    5455      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avm          ! momentum Kz (w-points) 
    5556      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avt, p_avs   ! tracer   Kz (w-points) 
     
    6364         DO jj = 2, jpjm1 
    6465            DO ji = 2, jpim1 
    65                zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw_n(ji,jj,jk) ) * wmask(ji,jj,jk) 
     66               zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw(ji,jj,jk,Kmm) ) * wmask(ji,jj,jk) 
    6667               ! 
    6768               p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zqb 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdftke.F90

    r10883 r10955  
    630630 
    631631 
    632    SUBROUTINE zdf_tke_init 
     632   SUBROUTINE zdf_tke_init( Kmm ) 
    633633      !!---------------------------------------------------------------------- 
    634634      !!                  ***  ROUTINE zdf_tke_init  *** 
     
    646646      USE zdf_oce , ONLY : ln_zdfiwm   ! Internal Wave Mixing flag 
    647647      !! 
    648       INTEGER ::   ji, jj, jk   ! dummy loop indices 
    649       INTEGER ::   ios 
     648      INTEGER, INTENT(in) ::   Kmm          ! time level index 
     649      INTEGER             ::   ji, jj, jk   ! dummy loop indices 
     650      INTEGER             ::   ios 
    650651      !! 
    651652      NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin  ,          & 
     
    724725      ENDIF 
    725726       
    726       IF( nn_etau == 2  )   CALL zdf_mxl( nit000 )      ! Initialization of nmln  
     727      IF( nn_etau == 2  )   CALL zdf_mxl( nit000, Kmm )      ! Initialization of nmln  
    727728 
    728729      !                               !* depth of penetration of surface tke 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/dtadyn.F90

    r10954 r10955  
    162162      CALL bn2    ( ts(:,:,:,:,Kmm), rab_n, rn2, Kmm )  ! before Brunt-Vaisala frequency need for zdfmxl 
    163163 
    164       rn2b(:,:,:) = rn2(:,:,:)         ! need for zdfmxl 
    165       CALL zdf_mxl( kt )                                                   ! In any case, we need mxl 
     164      rn2b(:,:,:) = rn2(:,:,:)         ! needed for zdfmxl 
     165      CALL zdf_mxl( kt, Kmm )          ! In any case, we need mxl 
    166166      ! 
    167167      hmld(:,:)       = sf_dyn(jf_mld)%fnow(:,:,1) * tmask(:,:,1)    ! mixed layer depht 
     
    796796         &                                        rhd, gru , grv , grui, grvi )  ! of t, s, rd at the first ocean level 
    797797 
    798          rn2b(:,:,:) = rn2(:,:,:)         ! need for zdfmxl 
    799          CALL zdf_mxl( kt )            ! mixed layer depth 
     798         rn2b(:,:,:) = rn2(:,:,:)                ! needed for zdfmxl 
     799         CALL zdf_mxl( kt, Kmm )                 ! mixed layer depth 
    800800         CALL ldf_slp( kt, rhd, rn2, Kbb, Kmm )  ! slopes 
    801801         puslp (:,:,:) = uslp (:,:,:) 
Note: See TracChangeset for help on using the changeset viewer.