Changeset 499
- Timestamp:
- Jan 16, 2012, 10:16:46 AM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/calltherm_interface.F90
r342 r499 6 6 & ptimestep,pu,pv,pt,pq,pdu,pdv,pdt,pdq,q2, & 7 7 & pplay,pplev,pphi,zpopsk, & 8 & pdu_th,pdv_th,pdt_th,pdq_th,lmax,zmaxth,pbl_dtke,hfmax,w max)8 & pdu_th,pdv_th,pdt_th,pdq_th,lmax,zmaxth,pbl_dtke,hfmax,wstar) 9 9 10 10 USE ioipsl_getincom … … 45 45 REAL, INTENT(OUT) :: zmaxth(ngridmx) 46 46 REAL, INTENT(OUT) :: pbl_dtke(ngridmx,nlayermx+1) 47 REAL, INTENT(OUT) :: wstar(ngridmx) 47 48 48 49 !-------------------------------------------------------- … … 66 67 REAL zdz(ngridmx,nlayermx) 67 68 LOGICAL qtransport_thermals,dtke_thermals 68 INTEGER l,ig,iq 69 INTEGER l,ig,iq,ii(1) 69 70 CHARACTER (LEN=20) :: modname 70 71 … … 97 98 REAL buoyancyEst(ngridmx,nlayermx) 98 99 REAL hfmax(ngridmx),wmax(ngridmx) 100 REAL pbl_teta(ngridmx),dteta(ngridmx,nlayermx) 99 101 100 102 !--------------------------------------------------------- … … 352 354 pdt_th(:,:)=d_t_ajs(:,:)/ptimestep 353 355 356 357 ! ********************************************************************** 358 ! Compute the free convection velocity scale for vdifc 359 ! ********************************************************************** 360 361 362 ! Potential temperature gradient 363 364 dteta(:,nlayermx)=0. 365 DO l=1,nlayermx-1 366 DO ig=1, ngridmx 367 dteta(ig,l) = ((zt(ig,l+1)-zt(ig,l))/zpopsk(ig,l)) & 368 & /(zzlay(ig,l+1)-zzlay(ig,l)) 369 ENDDO 370 ENDDO 371 372 ! Computation of the pbl mixed layer temperature 373 374 DO ig=1, ngridmx 375 ii=MINLOC(abs(dteta(ig,1:lmax(ig)))) 376 pbl_teta(ig) = zt(ig,ii(1))/zpopsk(ig,ii(1)) 377 ENDDO 378 379 ! We follow Spiga et. al 2010 (QJRMS) 380 ! ------------ 381 382 DO ig=1, ngridmx 383 IF (zmax(ig) .gt. 0.) THEN 384 wstar(ig)=(g*zmaxth(ig)*hfmax(ig)/pbl_teta(ig))**(1./3.) 385 ELSE 386 wstar(ig)=0. 387 ENDIF 388 ENDDO 389 390 391 354 392 ! ********************************************************************** 355 393 ! Diagnostics -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r496 r499 332 332 333 333 REAL lmax_th_out(ngridmx),zmax_th(ngridmx) 334 REAL, SAVE :: w max_th(ngridmx)334 REAL, SAVE :: wstar(ngridmx) 335 335 REAL, SAVE :: hfmax_th(ngridmx) 336 336 REAL pdu_th(ngridmx,nlayermx),pdv_th(ngridmx,nlayermx) … … 342 342 REAL z_out ! height of interpolation between z0 and z1 [meters] 343 343 REAL ustar(ngridmx),tstar(ngridmx) ! friction velocity and friction potential temp 344 REAL L_mo(ngridmx),wstar (ngridmx),vhf(ngridmx),vvv(ngridmx)344 REAL L_mo(ngridmx),wstarpbl(ngridmx),vhf(ngridmx),vvv(ngridmx) 345 345 REAL zu2(ngridmx) 346 346 c======================================================================= … … 359 359 fluxrad(:)=0 360 360 361 w max_th(:)=0.361 wstar(:)=0. 362 362 363 363 c read startfi … … 747 747 DO ig=1, ngridmx 748 748 IF (zh(ig,1) .lt. tsurf(ig)) THEN 749 w max_th(ig)=1.749 wstar(ig)=1. 750 750 hfmax_th(ig)=0.2 751 751 ELSE 752 w max_th(ig)=0.752 wstar(ig)=0. 753 753 hfmax_th(ig)=0. 754 754 ENDIF … … 768 768 $ zdum1,zdum2,zdh,pdq,zflubid, 769 769 $ zdudif,zdvdif,zdhdif,zdtsdif,q2, 770 & zdqdif,zdqsdif,w max_th,zcdv,zcdh,hfmax_th)770 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th) 771 771 772 772 #ifdef MESOSCALE … … 829 829 $ pplay,pplev,pphi,zpopsk, 830 830 $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,zmax_th, 831 $ dtke_th,hfmax_th,w max_th)831 $ dtke_th,hfmax_th,wstar) 832 832 833 833 DO l=1,nlayer … … 858 858 else !of if calltherm 859 859 lmax_th(:)=0 860 w max_th(:)=0.860 wstar(:)=0. 861 861 hfmax_th(:)=0. 862 862 lmax_th_out(:)=0. … … 1812 1812 1813 1813 call pbl_parameters(ngrid,nlayer,z0, 1814 & g,zzlay,zu,zv,w max_th,hfmax_th,zmax_th,tsurf,zh,z_out,1815 & Teta_out,u_out,ustar,tstar,wstar ,L_mo,vhf,vvv)1814 & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out, 1815 & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv) 1816 1816 1817 1817 else … … 1851 1851 & 'maximum TH heat flux','K.m/s', 1852 1852 & 2,hfmax_th) 1853 call WRITEDIAGFI(ngridmx,'w max_th',1853 call WRITEDIAGFI(ngridmx,'wstar', 1854 1854 & 'maximum TH vertical velocity','m/s', 1855 & 2,w max_th)1855 & 2,wstar) 1856 1856 1857 1857 endif … … 1905 1905 1906 1906 call pbl_parameters(ngrid,nlayer,z0, 1907 & g,zzlay,zu,zv,w max_th,hfmax_th,zmax_th,tsurf,zh,z_out,1908 & Teta_out,u_out,ustar,tstar,wstar ,L_mo,vhf,vvv)1907 & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out, 1908 & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv) 1909 1909 1910 1910 else … … 1927 1927 & 'maximum TH heat flux','K.m/s', 1928 1928 & 0,hfmax_th) 1929 call WRITEDIAGFI(ngridmx,'w max_th',1929 call WRITEDIAGFI(ngridmx,'wstar', 1930 1930 & 'maximum TH vertical velocity','m/s', 1931 & 0,w max_th)1931 & 0,wstar) 1932 1932 1933 1933 co2col(:)=0. -
trunk/LMDZ.MARS/libf/phymars/vdif_cd.F
r496 r499 1 1 SUBROUTINE vdif_cd(ngrid,nlay,pz0, 2 & pg,pz,pu,pv,w max,pts,ph,pcdv,pcdh)2 & pg,pz,pu,pv,wstar,pts,ph,pcdv,pcdh) 3 3 IMPLICIT NONE 4 4 c======================================================================= … … 46 46 REAL, INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay) 47 47 REAL, INTENT(IN) :: pts(ngrid),ph(ngrid,nlay) 48 REAL, INTENT(IN) :: w max(ngrid)48 REAL, INTENT(IN) :: wstar(ngrid) 49 49 REAL, INTENT(OUT) :: pcdv(ngrid),pcdh(ngrid) ! momentum and heat drag coefficient 50 50 … … 146 146 c Richardson number formulation proposed by D.E. England et al. (1995) 147 147 148 ! zu2=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),0.25*w max(ig)**2)148 ! zu2=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),0.25*wstar(ig)**2) 149 149 ! zu2=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) 150 zu2(ig)=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),wmax(ig)**2) 151 ! zu2(ig)=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.5*wmax(ig))**2 152 153 ! we add the wmax to simulate 150 zu2(ig)=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1), & 151 & (0.3*wstar(ig))**2) 152 ! zu2(ig)=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.5*wstar(ig))**2 153 154 ! we add the wstar to simulate 154 155 ! bulk Ri changes due to subgrid wind feeding the thermals 155 156 -
trunk/LMDZ.MARS/libf/phymars/vdifc.F
r496 r499 5 5 $ pdufi,pdvfi,pdhfi,pdqfi,pfluxsrf, 6 6 $ pdudif,pdvdif,pdhdif,pdtsrf,pq2, 7 $ pdqdif,pdqsdif,w max,zcdv_true,zcdh_true,hfmax)7 $ pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true,hfmax) 8 8 IMPLICIT NONE 9 9 … … 60 60 c Argument added to account for subgrid gustiness : 61 61 62 REAL w max(ngridmx), hfmax(ngridmx)62 REAL wstar(ngridmx), hfmax(ngridmx), zi(ngridmx) 63 63 64 64 c Traceurs : … … 313 313 c --------------------- 314 314 315 CALL vdif_cd(ngrid,nlay,pz0,g,pzlay,pu,pv,w max,ptsrf,ph315 CALL vdif_cd(ngrid,nlay,pz0,g,pzlay,pu,pv,wstar,ptsrf,ph 316 316 & ,zcdv_true,zcdh_true) 317 317 … … 319 319 320 320 IF (callrichsl) THEN 321 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+ (6.*hfmax(:))**2) ! subgrid gustiness added by quadratic interpolation with a coeff beta322 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+(10.*hfmax(:))**2) ! LES comparisons. This parameter is linked to the thermals settings)323 324 ! zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+(0.7*wmax(:))**2) ! subgrid gustiness added by quadratic interpolation with a coeff beta 325 ! zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+(1.2*wmax(:))**2) ! LES comparisons. This parameter is linked to the thermals settings) 326 327 ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+(6.*hfmax(:))**2)321 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+ 322 & (14.75*sqrt(hfmax(:)) - 10.*hfmax(:) + 1.7*hfmax(:)**2)**2) ! subgrid gustiness added by quadratic interpolation with a coeff beta 323 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+ 324 & (20.6*hfmax(:) - 22.8*hfmax(:)**2 + 9.*hfmax(:)**4)**2) ! LES comparisons. This parameter is linked to the thermals settings) 325 326 ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+ 327 & (14.75*sqrt(hfmax(:)) - 10.*hfmax(:) + 1.7*hfmax(:)**2)**2) 328 328 tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:) 329 ! ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+(0.7*wmax(:))**2)330 ! tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:)331 329 ! ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)) 332 330 ! tst(:)=(ph(:,1)-ptsrf(:))*zcdh_true(:)/sqrt(zcdv_true(:)) … … 334 332 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic momentum conductance 335 333 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic heat conductance 336 ! ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:))337 ! tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:)338 334 ENDIF 339 335
Note: See TracChangeset
for help on using the changeset viewer.