Changeset 4881 for LMDZ6/trunk/libf/phylmd/lmdz_atke_exchange_coeff.F90
- Timestamp:
- Mar 28, 2024, 6:06:40 PM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_atke_exchange_coeff.F90
r4804 r4881 7 7 subroutine atke_compute_km_kh(ngrid,nlay,dtime, & 8 8 wind_u,wind_v,temp,qvap,play,pinterf,cdrag_uv, & 9 tke, Km_out,Kh_out)9 tke,eps,Km_out,Kh_out) 10 10 11 11 !======================================================================== … … 70 70 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: wind_u ! zonal velocity (m/s) 71 71 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: wind_v ! meridional velocity (m/s) 72 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: temp ! temperature (K) 73 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: qvap ! specific humidity (kg/kg) 74 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: play ! pressure (Pa) 75 REAL, DIMENSION(ngrid,nlay+1), INTENT(IN) :: pinterf ! pressure at interfaces(Pa) 76 REAL, DIMENSION(ngrid), INTENT(IN) :: cdrag_uv ! surface drag coefficient for momentum 77 78 REAL, DIMENSION(ngrid,nlay+1), INTENT(INOUT) :: tke ! turbulent kinetic energy at interface between layers 79 80 REAL, DIMENSION(ngrid,nlay), INTENT(OUT) :: Km_out ! output: Exchange coefficient for momentum at interface between layers 81 REAL, DIMENSION(ngrid,nlay), INTENT(OUT) :: Kh_out ! output: Exchange coefficient for heat flux at interface between layers 72 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: temp ! temperature (K) 73 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: qvap ! specific humidity (kg/kg) 74 REAL, DIMENSION(ngrid,nlay), INTENT(IN) :: play ! pressure (Pa) 75 REAL, DIMENSION(ngrid,nlay+1), INTENT(IN) :: pinterf ! pressure at interfaces(Pa) 76 REAL, DIMENSION(ngrid), INTENT(IN) :: cdrag_uv ! surface drag coefficient for momentum 77 78 REAL, DIMENSION(ngrid,nlay+1), INTENT(INOUT) :: tke ! turbulent kinetic energy at interface between layers (m2/s2) 79 80 REAL, DIMENSION(ngrid,nlay+1), INTENT(OUT) :: eps ! output: TKE dissipation rate at interface between layers (m2/s3) 81 REAL, DIMENSION(ngrid,nlay), INTENT(OUT) :: Km_out ! output: Exchange coefficient for momentum at interface between layers (m2/s) 82 REAL, DIMENSION(ngrid,nlay), INTENT(OUT) :: Kh_out ! output: Exchange coefficient for heat flux at interface between layers (m2/s) 82 83 83 84 ! Local variables … … 259 260 tke(igrid,ilay) = cepsilon * l_exchange(igrid,ilay)**2 * Sm(igrid,ilay) * & 260 261 shear2(igrid,ilay) * (1. - Ri(igrid,ilay) / Prandtl(igrid,ilay)) 262 eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay)) 261 263 ENDDO 262 264 ENDDO … … 275 277 qq=(-2.*sqrt(2.)*cepsilon*l_exchange(igrid,ilay)/dtime + sqrt(delta))/2. 276 278 qq=max(0.,qq) 277 tke(igrid,ilay)=0.5*(qq**2) 279 tke(igrid,ilay)=0.5*(qq**2) 280 eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay)) 278 281 ENDDO 279 282 ENDDO … … 292 295 /(1.+qq*dtime/(cepsilon*l_exchange(igrid,ilay)*2.*sqrt(2.))) 293 296 tke(igrid,ilay)=0.5*(qq**2) 297 eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay)) 294 298 ENDDO 295 299 ENDDO … … 302 306 DO ilay=2,nlay 303 307 DO igrid=1,ngrid 308 eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay)) 304 309 qq=max(sqrt(2.*tke(igrid,ilay)),1.e-10) 305 310 IF (Ri(igrid,ilay) .LT. 0.) THEN … … 327 332 qq=max(0.,qq) 328 333 tke(igrid,ilay)=0.5*(qq**2) 334 eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay)) 329 335 ENDDO 330 336 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.