Changeset 10955
- Timestamp:
- 2019-05-10T11:15:50+02:00 (5 years ago)
- 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 38 38 CONTAINS 39 39 40 SUBROUTINE zdf_ddm( kt, p_avm, p_avt, p_avs )40 SUBROUTINE zdf_ddm( kt, Kmm, p_avm, p_avt, p_avs ) 41 41 !!---------------------------------------------------------------------- 42 42 !! *** ROUTINE zdf_ddm *** … … 68 68 !! References : Merryfield et al., JPO, 29, 1124-1142, 1999. 69 69 !!---------------------------------------------------------------------- 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 71 72 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: p_avm ! Kz on momentum (w-points) 72 73 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: p_avt ! Kz on temperature (w-points) … … 93 94 DO jj = 1, jpj !== R=zrau = (alpha / beta) (dk[t] / dk[s]) ==! 94 95 DO ji = 1, jpi 95 zrw = ( gdepw _n(ji,jj,jk ) - gdept_n(ji,jj,jk) ) &96 !!gm please, use e3w _nbelow97 & / ( 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) ) 98 99 ! 99 100 zaw = ( rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem) * zrw ) & … … 102 103 & * tmask(ji,jj,jk) * tmask(ji,jj,jk-1) 103 104 ! 104 zdt = zaw * ( ts n(ji,jj,jk-1,jp_tem) - tsn(ji,jj,jk,jp_tem) )105 zds = zbw * ( ts n(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) ) 106 107 IF( ABS( zds) <= 1.e-20_wp ) zds = 1.e-20_wp 107 108 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 81 81 CONTAINS 82 82 83 SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, & ! <<== in83 SUBROUTINE zdf_drg( kt, Kmm, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, & ! <<== in 84 84 & pCdU ) ! ==>> out : bottom drag [m/s] 85 85 !!---------------------------------------------------------------------- … … 99 99 !!---------------------------------------------------------------------- 100 100 INTEGER , INTENT(in ) :: kt ! ocean time-step index 101 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 101 102 ! ! !! !== top or bottom variables ==! 102 103 INTEGER , DIMENSION(:,:), INTENT(in ) :: k_mk ! wet level (1st or last) … … 117 118 DO ji = 2, jpim1 118 119 imk = k_mk(ji,jj) ! ocean bottom level at t-points 119 zut = u n(ji,jj,imk) + un(ji-1,jj,imk) ! 2 x velocity at t-point120 zvt = v n(ji,jj,imk) + vn(ji,jj-1,imk)121 zzz = 0.5_wp * e3t _n(ji,jj,imk) ! altitude below/above (top/bottom) the boundary120 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 122 123 ! 123 124 !!JC: possible WAD implementation should modify line below if layers vanish … … 131 132 DO ji = 2, jpim1 132 133 imk = k_mk(ji,jj) ! ocean bottom level at t-points 133 zut = u n(ji,jj,imk) + un(ji-1,jj,imk) ! 2 x velocity at t-point134 zvt = v n(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) 135 136 ! ! here pCd0 = mask*boost * drag 136 137 pCdU(ji,jj) = - pCd0(ji,jj) * SQRT( 0.25 * ( zut*zut + zvt*zvt ) + pke0 ) … … 183 184 ! 184 185 ! 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) 187 188 ! 188 189 pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX( zCdu , zm1_2dt ) * pub(ji,jj,ikbu) … … 198 199 ! 199 200 ! 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 masked201 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) 202 203 ! 203 204 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 69 69 70 70 71 SUBROUTINE zdf_iwm( kt, p_avm, p_avt, p_avs )71 SUBROUTINE zdf_iwm( kt, Kmm, p_avm, p_avt, p_avs ) 72 72 !!---------------------------------------------------------------------- 73 73 !! *** ROUTINE zdf_iwm *** … … 118 118 !!---------------------------------------------------------------------- 119 119 INTEGER , INTENT(in ) :: kt ! ocean time step 120 INTEGER , INTENT(in ) :: Kmm ! time level index 120 121 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avm ! momentum Kz (w-points) 121 122 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avt, p_avs ! tracer Kz (w-points) … … 155 156 END DO 156 157 END DO 157 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept _n - sshn158 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept(:,:,:,Kmm) - ssh(:,:,Kmm) 158 159 DO jk = 2, jpkm1 ! complete with the level-dependent part 159 160 DO jj = 1, jpj … … 162 163 zemx_iwm(ji,jj,jk) = 0._wp 163 164 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) ) 167 168 ENDIF 168 169 END DO 169 170 END DO 170 !!gm delta(gde3w _n) = e3t_n!! Please verify the grid-point position w versus t-point171 !!gm delta(gde3w) = e3t(:,:,:,Kmm) !! Please verify the grid-point position w versus t-point 171 172 !!gm it seems to me that only 1/hcri_iwm is used ==> compute it one for all 172 173 … … 182 183 zfact(:,:) = 0._wp 183 184 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) 185 186 END DO 186 187 ! … … 199 200 zfact(:,:) = 0._wp 200 201 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) 202 203 END DO 203 204 ! … … 220 221 zfact(:,:) = 0._wp 221 222 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) 223 224 zwkb(:,:,jk) = zfact(:,:) 224 225 END DO 225 226 !!gm even better: 226 227 ! 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) ) ) 228 229 ! END DO 229 230 ! zfact(:,:) = zwkb(:,:,jpkm1) … … 267 268 DO jk = 2, jpkm1 ! complete with the level-dependent part 268 269 zemx_iwm(:,:,jk) = zemx_iwm(:,:,jk) + zweight(:,:,jk) * zfact(:,:) * wmask(:,:,jk) & 269 & / ( gde3w _n(:,:,jk) - gde3w_n(:,:,jk-1) )270 !!gm use of e3t _njust above?270 & / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 271 !!gm use of e3t(:,:,:,Kmm) just above? 271 272 END DO 272 273 ! 273 274 !!gm this is to be replaced by just a constant value znu=1.e-6 m2/s 274 275 ! Calculate molecular kinematic viscosity 275 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts n(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem) &276 & + 0.02305_wp * ts n(:,:,:,jp_sal) ) * tmask(:,:,:) * r1_rau0276 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 277 278 DO jk = 2, jpkm1 278 279 znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) … … 314 315 DO jj = 1, jpj 315 316 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) & 317 318 & * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 318 319 END DO … … 374 375 z2d(:,:) = 0._wp 375 376 DO jk = 2, jpkm1 376 z2d(:,:) = z2d(:,:) + e3w _n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk)377 z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 377 378 END DO 378 379 z2d(:,:) = rau0 * z2d(:,:) -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfmxl.F90
r10425 r10955 57 57 58 58 59 SUBROUTINE zdf_mxl( kt )59 SUBROUTINE zdf_mxl( kt, Kmm ) 60 60 !!---------------------------------------------------------------------- 61 61 !! *** ROUTINE zdfmxl *** … … 75 75 !!---------------------------------------------------------------------- 76 76 INTEGER, INTENT(in) :: kt ! ocean time-step index 77 INTEGER, INTENT(in) :: Kmm ! ocean time level index 77 78 ! 78 79 INTEGER :: ji, jj, jk ! dummy loop indices … … 98 99 DO ji = 1, jpi 99 100 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) 101 102 IF( hmlp(ji,jj) < zN2_c ) nmln(ji,jj) = MIN( jk , ikt ) + 1 ! Mixed layer level 102 103 END DO … … 118 119 iiki = imld(ji,jj) 119 120 iikn = nmln(ji,jj) 120 hmld (ji,jj) = gdepw _n(ji,jj,iiki) * ssmask(ji,jj) ! Turbocline depth121 hmlp (ji,jj) = gdepw _n(ji,jj,iikn) * ssmask(ji,jj) ! Mixed layer depth122 hmlpt(ji,jj) = gdept _n(ji,jj,iikn-1) * ssmask(ji,jj) ! depth of the last T-point inside the mixed layer121 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 123 124 END DO 124 125 END DO -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfosm.F90
r10954 r10955 941 941 ! Stable conditions 942 942 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) 944 944 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) & 945 945 & * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_wth_1(ji,jj) … … 1066 1066 IF ( lconv(ji,jj) ) THEN 1067 1067 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) 1069 1069 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3 * zsc_wth_1(ji,jj) & 1070 1070 & * ( -2.0 + 2.75 * ( ( 1.0 + 0.6 * zznd_ml**4 ) & … … 1188 1188 IF ( lconv(ji,jj) ) THEN 1189 1189 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) 1191 1191 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + zwth_ent(ji,jj) * znd 1192 1192 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 192 192 ioptio = 0 193 193 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 ; ENDIF195 IF( ln_zdftke ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_TKE ; CALL zdf_tke_init ; ENDIF196 IF( ln_zdfgls ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_GLS ; CALL zdf_gls_init ; ENDIF194 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 197 197 IF( ln_zdfosm ) THEN ; ioptio = ioptio + 1 ; nzdf_phy = np_OSM ; CALL zdf_osm_init( Kmm ) ; ENDIF 198 198 ! … … 244 244 ! 245 245 ! !* bottom drag 246 CALL zdf_drg( kt, mbkt, r_Cdmin_bot, r_Cdmax_bot, & ! <<== in246 CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot, & ! <<== in 247 247 & r_z0_bot, r_ke0_bot, rCd0_bot, & 248 248 & rCdU_bot ) ! ==>> out : bottom drag [m/s] 249 249 IF( ln_isfcav ) THEN !* top drag (ocean cavities) 250 CALL zdf_drg( kt, mikt, r_Cdmin_top, r_Cdmax_top, & ! <<== in250 CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top, & ! <<== in 251 251 & r_z0_top, r_ke0_top, rCd0_top, & 252 252 & rCdU_top ) ! ==>> out : bottom drag [m/s] … … 287 287 ! !* double diffusive mixing 288 288 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 ) 290 290 ELSE ! same mixing on all tracers 291 291 avs(2:jpim1,2:jpjm1,1:jpkm1) = avt(2:jpim1,2:jpjm1,1:jpkm1) … … 293 293 ! 294 294 ! !* 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) 297 297 298 298 #if defined key_agrif … … 315 315 ENDIF 316 316 ! 317 CALL zdf_mxl( kt ) !* mixed layer depth, and level317 CALL zdf_mxl( kt, Kmm ) !* mixed layer depth, and level 318 318 ! 319 319 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 34 34 CONTAINS 35 35 36 SUBROUTINE zdf_swm( kt, p_avm, p_avt, p_avs )36 SUBROUTINE zdf_swm( kt, Kmm, p_avm, p_avt, p_avs ) 37 37 !!--------------------------------------------------------------------- 38 38 !! *** ROUTINE zdf_swm *** … … 52 52 !!--------------------------------------------------------------------- 53 53 INTEGER , INTENT(in ) :: kt ! ocean time step 54 INTEGER , INTENT(in ) :: Kmm ! time level index 54 55 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avm ! momentum Kz (w-points) 55 56 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avt, p_avs ! tracer Kz (w-points) … … 63 64 DO jj = 2, jpjm1 64 65 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) 66 67 ! 67 68 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 630 630 631 631 632 SUBROUTINE zdf_tke_init 632 SUBROUTINE zdf_tke_init( Kmm ) 633 633 !!---------------------------------------------------------------------- 634 634 !! *** ROUTINE zdf_tke_init *** … … 646 646 USE zdf_oce , ONLY : ln_zdfiwm ! Internal Wave Mixing flag 647 647 !! 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 650 651 !! 651 652 NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin , & … … 724 725 ENDIF 725 726 726 IF( nn_etau == 2 ) CALL zdf_mxl( nit000 ) ! Initialization of nmln727 IF( nn_etau == 2 ) CALL zdf_mxl( nit000, Kmm ) ! Initialization of nmln 727 728 728 729 ! !* depth of penetration of surface tke -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/dtadyn.F90
r10954 r10955 162 162 CALL bn2 ( ts(:,:,:,:,Kmm), rab_n, rn2, Kmm ) ! before Brunt-Vaisala frequency need for zdfmxl 163 163 164 rn2b(:,:,:) = rn2(:,:,:) ! need for zdfmxl165 CALL zdf_mxl( kt )! In any case, we need mxl164 rn2b(:,:,:) = rn2(:,:,:) ! needed for zdfmxl 165 CALL zdf_mxl( kt, Kmm ) ! In any case, we need mxl 166 166 ! 167 167 hmld(:,:) = sf_dyn(jf_mld)%fnow(:,:,1) * tmask(:,:,1) ! mixed layer depht … … 796 796 & rhd, gru , grv , grui, grvi ) ! of t, s, rd at the first ocean level 797 797 798 rn2b(:,:,:) = rn2(:,:,:) ! need for zdfmxl799 CALL zdf_mxl( kt )! mixed layer depth798 rn2b(:,:,:) = rn2(:,:,:) ! needed for zdfmxl 799 CALL zdf_mxl( kt, Kmm ) ! mixed layer depth 800 800 CALL ldf_slp( kt, rhd, rn2, Kbb, Kmm ) ! slopes 801 801 puslp (:,:,:) = uslp (:,:,:)
Note: See TracChangeset
for help on using the changeset viewer.