Changeset 12966 for NEMO/branches/MOI/NEMO_4.03_IODRAG
- Timestamp:
- 2020-05-25T12:04:00+02:00 (4 years ago)
- Location:
- NEMO/branches/MOI/NEMO_4.03_IODRAG/src/OCE/ZDF
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/MOI/NEMO_4.03_IODRAG/src/OCE/ZDF/zdfgls.F90
r11536 r12966 146 146 REAL(wp) :: gh, gm, shr, dif, zsqen, zavt, zavm ! - - 147 147 REAL(wp) :: zmsku, zmskv ! - - 148 REAL(wp) :: rn_hsri ! ice ocean roughness 148 149 REAL(wp), DIMENSION(jpi,jpj) :: zdep 149 150 REAL(wp), DIMENSION(jpi,jpj) :: zkar 150 151 REAL(wp), DIMENSION(jpi,jpj) :: zflxs ! Turbulence fluxed induced by internal waves 151 152 REAL(wp), DIMENSION(jpi,jpj) :: zhsro ! Surface roughness (surface waves) 153 REAL(wp), DIMENSION(jpi,jpj) :: ziconc ! Tapering of wave breaking under sea ice 152 154 REAL(wp), DIMENSION(jpi,jpj,jpk) :: eb ! tke at time before 153 155 REAL(wp), DIMENSION(jpi,jpj,jpk) :: hmxl_b ! mixing length at time before … … 165 167 ustar2_bot (:,:) = 0._wp 166 168 169 ziconc(:,:) = 1._wp - TANH(fr_i(:,:) * 10._wp) 167 170 ! Compute surface, top and bottom friction at T-points 168 171 DO jj = 2, jpjm1 … … 206 209 END SELECT 207 210 ! 211 rn_hsri = 0.03_wp 212 zhsro(:,:) = (ziconc(:,:) * zhsro(:,:) + (1._wp - ziconc(:,:)) * rn_hsri)*tmask(:,:,1) + (1._wp - tmask(:,:,1)) * rn_hsro 208 213 DO jk = 2, jpkm1 !== Compute dissipation rate ==! 209 214 DO jj = 1, jpjm1 … … 300 305 CASE ( 0 ) ! Dirichlet boundary condition (set e at k=1 & 2) 301 306 ! First level 302 en (:,:,1) = MAX( rn_emin , rc02r * ustar2_surf(:,:) * (1._wp + rsbc_tke1)**r2_3 )307 en (:,:,1) = MAX( rn_emin , rc02r * ustar2_surf(:,:) * (1._wp + ziconc(:,:)*rsbc_tke1)**r2_3 ) 303 308 zd_lw(:,:,1) = en(:,:,1) 304 309 zd_up(:,:,1) = 0._wp … … 306 311 ! 307 312 ! One level below 308 en (:,:,2) = MAX( rc02r * ustar2_surf(:,:) * ( 1._wp + rsbc_tke1 * ((zhsro(:,:)+gdepw_n(:,:,2)) &313 en (:,:,2) = MAX( rc02r * ustar2_surf(:,:) * ( 1._wp + ziconc(:,:)*rsbc_tke1 * ((zhsro(:,:)+gdepw_n(:,:,2)) & 309 314 & / zhsro(:,:) )**(1.5_wp*ra_sf) )**(2._wp/3._wp) , rn_emin ) 310 315 zd_lw(:,:,2) = 0._wp … … 316 321 ! 317 322 ! Dirichlet conditions at k=1 318 en (:,:,1) = MAX( rc02r * ustar2_surf(:,:) * (1._wp + rsbc_tke1)**r2_3 , rn_emin )323 en (:,:,1) = MAX( rc02r * ustar2_surf(:,:) * (1._wp + ziconc(:,:)*rsbc_tke1)**r2_3 , rn_emin ) 319 324 zd_lw(:,:,1) = en(:,:,1) 320 325 zd_up(:,:,1) = 0._wp … … 326 331 zd_lw(:,:,2) = 0._wp 327 332 zkar (:,:) = (rl_sf + (vkarmn-rl_sf)*(1.-EXP(-rtrans*gdept_n(:,:,1)/zhsro(:,:)) )) 328 zflxs(:,:) = rsbc_tke2 * ustar2_surf(:,:)**1.5_wp * zkar(:,:) &333 zflxs(:,:) = rsbc_tke2 * ziconc(:,:) * ustar2_surf(:,:)**1.5_wp * zkar(:,:) & 329 334 & * ( ( zhsro(:,:)+gdept_n(:,:,1) ) / zhsro(:,:) )**(1.5_wp*ra_sf) 330 335 !!gm why not : * ( 1._wp + gdept_n(:,:,1) / zhsro(:,:) )**(1.5_wp*ra_sf) … … 577 582 zkar (:,:) = rl_sf + (vkarmn-rl_sf)*(1._wp-EXP(-rtrans*gdept_n(:,:,1)/zhsro(:,:) )) ! Lengh scale slope 578 583 zdep (:,:) = ((zhsro(:,:) + gdept_n(:,:,1)) / zhsro(:,:))**(rmm*ra_sf) 579 zflxs(:,:) = (rnn + rsbc_tke1 * (rnn + rmm*ra_sf) * zdep(:,:))*(1._wp +rsbc_tke1*zdep(:,:))**(2._wp*rmm/3._wp-1_wp)584 zflxs(:,:) = (rnn + ziconc(:,:)*rsbc_tke1 * (rnn + rmm*ra_sf) * zdep(:,:))*(1._wp + ziconc(:,:)*rsbc_tke1*zdep(:,:))**(2._wp*rmm/3._wp-1_wp) 580 585 zdep (:,:) = rsbc_psi1 * (zwall_psi(:,:,1)*p_avm(:,:,1)+zwall_psi(:,:,2)*p_avm(:,:,2)) * & 581 586 & ustar2_surf(:,:)**rmm * zkar(:,:)**rnn * (zhsro(:,:) + gdept_n(:,:,1))**(rnn-1.) -
NEMO/branches/MOI/NEMO_4.03_IODRAG/src/OCE/ZDF/zdftke.F90
r12703 r12966 195 195 REAL(wp) :: zrhoa = 1.22 ! Air density kg/m3 196 196 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 197 REAL(wp) :: zbbrau, z ri! local scalars197 REAL(wp) :: zbbrau, zbbrau0, zri ! local scalars 198 198 REAL(wp) :: zfact1, zfact2, zfact3 ! - - 199 199 REAL(wp) :: ztx2 , zty2 , zcof ! - - … … 202 202 REAL(wp) :: zzd_up, zzd_lw ! - - 203 203 INTEGER , DIMENSION(jpi,jpj) :: imlc 204 REAL(wp), DIMENSION(jpi,jpj) :: ziconc 204 205 REAL(wp), DIMENSION(jpi,jpj) :: zhlc, zfr_i 205 206 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpelc, zdiag, zd_up, zd_lw … … 207 208 ! 208 209 zbbrau = rn_ebb / rau0 ! Local constant initialisation 210 zbbrau0 = 3.75_wp / rau0 209 211 zfact1 = -.5_wp * rdt 210 212 zfact2 = 1.5_wp * rdt * rn_ediss … … 214 216 ! ! Surface/top/bottom boundary condition on tke 215 217 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 216 218 ziconc(:,:) = 1._wp - TANH(fr_i(:,:) * 10._wp) 219 ! 217 220 DO jj = 2, jpjm1 ! en(1) = rn_ebb taum / rau0 (min value rn_emin0) 218 221 DO ji = fs_2, fs_jpim1 ! vector opt. 219 en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 222 en(ji,jj,1) = MAX( rn_emin0, (ziconc(ji,jj)*zbbrau + (1._wp-ziconc(ji,jj))*zbbrau0) & 223 & * taum(ji,jj) ) * tmask(ji,jj,1) 220 224 END DO 221 225 END DO … … 249 253 zetop = - 0.001875_wp * rCdU_top(ji,jj) * SQRT( ( zmsku*( ub(ji,jj,mikt(ji,jj))+ub(ji-1,jj,mikt(ji,jj)) ) )**2 & 250 254 & + ( zmskv*( vb(ji,jj,mikt(ji,jj))+vb(ji,jj-1,mikt(ji,jj)) ) )**2 ) 251 en(ji,jj,mikt(ji,jj)) = en(ji,jj,1) * tmask(ji,jj,1) & 255 en(ji,jj,mikt(ji,jj)) = en(ji,jj,1) * tmask(ji,jj,1) & 252 256 & + MAX( zetop, rn_emin ) * (1._wp - tmask(ji,jj,1)) * ssmask(ji,jj) 253 257 END DO … … 479 483 REAL(wp) :: zdku, zdkv, zsqen ! - - 480 484 REAL(wp) :: zemxl, zemlm, zemlp ! - - 485 REAL(wp) :: rn_hsri 486 REAL(wp), DIMENSION(jpi,jpj) :: ziconc 481 487 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxlm, zmxld ! 3D workspace 482 488 !!-------------------------------------------------------------------- … … 502 508 zmxlm(:,:,1) = rn_mxl0 503 509 ENDIF 510 ziconc(:,:) = 1._wp - TANH(fr_i(:,:) * 10._wp) 511 rn_hsri = vkarmn * 0.03_wp ! Sea ice roughness 512 zmxlm(:,:,1) = (ziconc(:,:) * zmxlm(:,:,1) + (1._wp - ziconc(:,:)) * rn_hsri)*tmask(:,:,1) & 513 & + (1._wp - tmask(:,:,1)) * rn_mxl0 504 514 ! 505 515 DO jk = 2, jpkm1 ! interior value : l=sqrt(2*e/n^2)
Note: See TracChangeset
for help on using the changeset viewer.