- Timestamp:
- May 10, 2014, 10:03:34 AM (11 years ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/README
r1240 r1242 2085 2085 - Warnings in conf_phys modified accordingly. 2086 2086 2087 == 10/05/2014 == AS 2088 - Further reduction (or 'factorisation') of mesoscale includes 2089 - ustar and tstar are calculated in vdifc. so no need to recalculate 2090 those elsewhere. use turb_mod module to store it. -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r1236 r1242 838 838 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th,sensibFlux) 839 839 840 #ifdef MESOSCALE841 #include "meso_inc/meso_inc_les.F"842 #endif843 840 844 841 DO ig=1,ngrid … … 871 868 ENDDO 872 869 end if ! of if (tracer) 870 ELSE 871 write (*,*) '******************************************' 872 write (*,*) '** LES mode: the difv part is only used to' 873 write (*,*) '** - provide HFX and UST to the dynamics' 874 write (*,*) '** - update TSURF' 875 write (*,*) '******************************************' 876 !! Specific treatment for lifting in turbulent-resolving mode (AC) 877 IF (lifting .and. doubleq) THEN 878 !! lifted dust is injected in the first layer. 879 !! Sedimentation must be called after turbulent mixing, i.e. on next step, after WRF. 880 !! => lifted dust is not incremented before the sedimentation step. 881 zdqdif(1:ngrid,1,1:nq)=0. 882 zdqdif(1:ngrid,1,igcm_dust_number) = 883 . -zdqsdif(1:ngrid,igcm_dust_number) 884 zdqdif(1:ngrid,1,igcm_dust_mass) = 885 . -zdqsdif(1:ngrid,igcm_dust_mass) 886 zdqdif(1:ngrid,2:nlayermx,1:nq) = 0. 887 DO iq=1, nq 888 IF ((iq .ne. igcm_dust_mass) 889 & .and. (iq .ne. igcm_dust_number)) THEN 890 zdqsdif(:,iq)=0. 891 ENDIF 892 ENDDO 893 ELSE 894 zdqdif(1:ngrid,1:nlayer,1:nq) = 0. 895 zdqsdif(1:ngrid,1:nq) = 0. 896 ENDIF 873 897 ENDIF 874 875 898 ELSE 876 899 DO ig=1,ngrid 877 900 zdtsurf(ig)=zdtsurf(ig)+ 878 s (fluxrad(ig)+fluxgrd(ig))/capcal(ig)901 s (fluxrad(ig)+fluxgrd(ig))/capcal(ig) 879 902 ENDDO 880 903 IF (turb_resolved) THEN … … 1483 1506 & g,zzlay,zzlev,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out,n_out, 1484 1507 & T_out,u_out,ustar,tstar,L_mo,vhf,vvv) 1508 ! pourquoi ustar recalcule ici? fait dans vdifc. 1485 1509 1486 1510 #ifndef MESOSCALE … … 1909 1933 !state real RICE ikj misc 1 - h "RICE" "ICE RADIUS" "m" 1910 1934 comm_RICE(1:ngrid,1:nlayer) = rice(1:ngrid,1:nlayer) 1935 1936 1937 !! calculate sensible heat flux in W/m2 for outputs 1938 !! -- the one computed in vdifc is not the real one 1939 !! -- vdifc must have been called 1940 if (.not.callrichsl) then 1941 sensibFlux(1:ngrid) = zflubid(1:ngrid) 1942 . - capcal(1:ngrid)*zdtsdif(1:ngrid) 1943 else 1944 sensibFlux(1:ngrid) = 1945 & (pplay(1:ngrid,1)/(r*pt(1:ngrid,1)))*cpp 1946 & *sqrt(pu(1:ngrid,1)*pu(1:ngrid,1)+pv(1:ngrid,1)*pv(1:ngrid,1) 1947 & +(log(1.+0.7*wstar(1:ngrid) + 2.3*wstar(1:ngrid)**2))**2) 1948 & *zcdh(1:ngrid)*(tsurf(1:ngrid)-zh(1:ngrid,1)) 1949 endif 1950 1911 1951 #else 1912 1952 #ifndef MESOINI -
trunk/LMDZ.MARS/libf/phymars/turb_mod.F90
r1236 r1242 6 6 REAL,SAVE,ALLOCATABLE :: ustar(:) 7 7 REAL,SAVE,ALLOCATABLE :: wstar(:) 8 REAL,SAVE,ALLOCATABLE :: tstar(:) 8 9 REAL,SAVE,ALLOCATABLE :: hfmax_th(:) 9 10 REAL,SAVE,ALLOCATABLE :: zmax_th(:) … … 25 26 allocate(wstar(ngrid)) 26 27 allocate(ustar(ngrid)) 28 allocate(tstar(ngrid)) 27 29 allocate(hfmax_th(ngrid)) 28 30 allocate(zmax_th(ngrid)) -
trunk/LMDZ.MARS/libf/phymars/vdifc.F
r1240 r1242 13 13 use surfdat_h, only: watercaptag, frost_albedo_threshold, dryness 14 14 USE comcstfi_h 15 use turb_mod, only: turb_resolved 15 use turb_mod, only: turb_resolved, ustar, tstar 16 16 IMPLICIT NONE 17 17 … … 84 84 85 85 REAL :: pt(ngrid,nlay) 86 REAL ust(ngrid),tst(ngrid)87 86 88 87 INTEGER ilev,ig,ilay,nlev … … 335 334 & (log(1.+0.7*wstar(:) + 2.3*wstar(:)**2))**2) 336 335 337 ust (:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+336 ustar(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+ 338 337 & (log(1.+0.7*wstar(:) + 2.3*wstar(:)**2))**2) 339 338 340 tst (:)=0.339 tstar(:)=0. 341 340 DO ig=1,ngrid 342 341 IF (zcdh_true(ig) .ne. 0.) THEN ! When Cd=Ch=0, u*=t*=0 343 tst (ig)=(ph(ig,1)-ptsrf(ig))*zcdh(ig)/ust(ig)342 tstar(ig)=(ph(ig,1)-ptsrf(ig))*zcdh(ig)/ustar(ig) 344 343 ENDIF 345 344 ENDDO … … 348 347 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic momentum conductance 349 348 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic heat conductance 350 ust (:)=sqrt(zcdv_true(:))*sqrt(zu2(:))351 tst (:)=(ph(:,1)-ptsrf(:))*zcdh_true(:)/sqrt(zcdv_true(:))349 ustar(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)) 350 tstar(:)=(ph(:,1)-ptsrf(:))*zcdh_true(:)/sqrt(zcdv_true(:)) 352 351 ENDIF 353 352 … … 383 382 pt(:,:)=ph(:,:)*ppopsk(:,:) 384 383 CALL yamada4(ngrid,nlay,nq,ptimestep,g,r,pplev,pt 385 s ,pzlev,pzlay,pu,pv,ph,pq,zcdv_true,pq2,zkv,zkh,zkq,ust 384 s ,pzlev,pzlay,pu,pv,ph,pq,zcdv_true,pq2,zkv,zkh,zkq,ustar 386 385 s ,9) 387 386 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.