Changeset 290 for trunk/LMDZ.MARS/libf
- Timestamp:
- Sep 9, 2011, 4:24:40 PM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/meso_inc/meso_inc_les.F
r284 r290 20 20 hfx(ig) = (pplay(ig,1)/(r*pt(ig,1)))*cpp 21 21 & *sqrt(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) 22 & + (1. 0*wmax_th(ig))**2)22 & + (1.2*wmax_th(ig))**2) 23 23 & *zcdh(ig)*(tsurf(ig)-zh(ig,1)) 24 25 24 26 25 ! New SL parametrization, ust is more accurately computed in vdif_cd : 27 26 ust(ig) = sqrt(zcdv(ig)* 28 & (pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + ( 1.0*wmax_th(ig))**2)27 & (pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.7*wmax_th(ig))**2) 29 28 & ) 30 29 -
trunk/LMDZ.MARS/libf/phymars/thermcell_main_mars.F90
r190 r290 114 114 LOGICAL active(ngridmx),activetmp(ngridmx) 115 115 REAL a1,b1,ae,be,ad,bd 116 INTEGER tic 116 117 117 118 ! ========================================== … … 334 335 alim_star(ig,1)=MAX((ztv(ig,1)-ztv(ig,2)),0.) & 335 336 & *sqrt(zlev(ig,2)) 337 ! & /sqrt(zlev(ig,2)) 336 338 ! & *zlev(ig,2) 337 339 lalim(ig)=2 … … 381 383 ! dans un panache conservatif 382 384 f_star(ig,1)=0. 385 383 386 f_star(ig,2)=alim_star(ig,1) 387 384 388 zw2(ig,2)=2.*g*(ztv(ig,1)-ztv(ig,2))/ztv(ig,2) & 385 389 & *(zlev(ig,2)-zlev(ig,1)) & 386 & 390 & *0.4*pphi(ig,1)/(pphi(ig,2)-pphi(ig,1)) 387 391 w_est(ig,2)=zw2(ig,2) 388 392 … … 420 424 421 425 ! if(l .lt. lalim(ig)) then 422 ! 426 ! ztva_est(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+ & 423 427 ! & alim_star(ig,l)*ztv(ig,l)) & 424 428 ! & /(f_star(ig,l)+alim_star(ig,l)) … … 522 526 !--------------------------------------------------------------------------- 523 527 528 DO tic=0,3 529 524 530 activetmp(:)=active(:) .and. f_star(:,l+1)>1.e-10 525 531 do ig=1,ngridmx … … 547 553 enddo 548 554 555 ! ================ RECOMPUTE ENTR, DETR, and F FROM NEW W2 =================== 556 557 558 do ig=1,ngridmx 559 if (activetmp(ig)) then 560 561 zw2m=zw2(ig,l+1) 562 if(zw2m .gt. 0) then 563 if((a1*(zbuoy(ig,l)/zw2m)-b1) .gt. 0.) then 564 entr_star(ig,l)=f_star(ig,l)*zdz* & 565 & MAX(0.,ae*(a1*(zbuoy(ig,l)/zw2m)-b1)**be) 566 else 567 entr_star(ig,l)=0. 568 endif 569 570 if(zbuoy(ig,l) .gt. 0.) then 571 if(l .lt. lalim(ig)) then 572 detr_star(ig,l)=0. 573 else 574 detr_star(ig,l) = f_star(ig,l)*zdz* & 575 & ad 576 endif 577 else 578 detr_star(ig,l)=f_star(ig,l)*zdz* & 579 & bd*zbuoy(ig,l)/zw2m 580 endif 581 else 582 entr_star(ig,l)=0. 583 detr_star(ig,l)=0. 584 endif 585 586 ! En dessous de lalim, on prend le max de alim_star et entr_star pour 587 ! alim_star et 0 sinon 588 589 if (l.lt.lalim(ig)) then 590 alim_star(ig,l)=max(alim_star(ig,l),entr_star(ig,l)) 591 entr_star(ig,l)=0. 592 endif 593 594 ! Calcul du flux montant normalise 595 596 f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l) & 597 & -detr_star(ig,l) 598 599 endif 600 enddo 601 602 ENDDO 549 603 !--------------------------------------------------------------------------- 550 604 !initialisations pour le calcul de la hauteur du thermique, de l'inversion et de la vitesse verticale max … … 1121 1175 do ig=1,ngridmx 1122 1176 if(lmax(ig) .gt. 1) then 1123 do k=1,lmax(ig) 1177 ! No downdraft in the very-near surface layer, we begin at k=3 1178 do k=3,lmax(ig) 1124 1179 zdthladj_down(ig,k)=(1./masse(ig,k))*(fm_down(ig,k+1)*ztv(ig,k+1)- & 1125 1180 & fm_down(ig,k)*ztv(ig,k)+fm_down(ig,k)*ztvd(ig,k)-fm_down(ig,k+1)*ztvd(ig,k+1)) -
trunk/LMDZ.MARS/libf/phymars/vdif_cd.F
r284 r290 149 149 ! zu2=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) 150 150 ! zu2=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) + (1.*wmax(ig))**2151 zu2(ig)=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.5*wmax(ig))**2 152 152 153 153 ! we add the wmax to simulate -
trunk/LMDZ.MARS/libf/phymars/vdifc.F
r284 r290 234 234 & ,zcdv_true,zcdh_true) 235 235 236 237 IF (callrichsl .eq. .true.) then 238 zu2(:)=pu(:,1)*pu(:,1)+pv(:,1)*pv(:,1)239 & +(1.*wmax(:))**2 ! subgrid gustiness added by quadratic interpolation with a coeff beta, here beta=1. (tuned from240 236 zu2(:)=pu(:,1)*pu(:,1)+pv(:,1)*pv(:,1) 237 238 IF (callrichsl .eq. .true.) THEN 239 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+(0.7*wmax(:))**2) ! subgrid gustiness added by quadratic interpolation with a coeff beta 240 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+(1.2*wmax(:))**2) ! LES comparisons. This parameter is linked to the thermals settings) 241 241 ELSE 242 zu2(:)=pu(:,1)*pu(:,1)+pv(:,1)*pv(:,1)243 ENDIF244 245 242 zcdv(:)=zcdv_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic momentum conductance 246 243 zcdh(:)=zcdh_true(:)*sqrt(zu2(:)) ! 1 / bulk aerodynamic heat conductance 247 ! these are the quantities to be looked at when comparing surface layers of different models 244 ENDIF 245 248 246 249 247 ! Some usefull diagnostics for the new surface layer parametrization : … … 257 255 ! call WRITEDIAGFI(ngridmx,'u*', 258 256 ! & 'friction velocity','m/s', 259 ! & 2,sqrt(zcdv_true(:))*sqrt(zu2(:)))257 ! & 2,sqrt(zcdv_true(:))*sqrt(zu2(:)+(0.7*wmax(:))**2)) 260 258 ! call WRITEDIAGFI(ngridmx,'T*', 261 259 ! & 'friction temperature','K', 262 ! & 2,-zcdh_true(:)*(ptsrf(:)-ph(:,1))/sqrt(zcdv_true(:))) 260 ! & 2,zcdh_true(:)*sqrt(zu2(:)+(1.2*wmax(:))**2)* 261 ! & -(ptsrf(:)-ph(:,1)) 262 ! & /(sqrt(zcdv_true(:))*sqrt(zu2(:)+(0.7*wmax(:))**2))) 263 263 ! call WRITEDIAGFI(ngridmx,'rm-1', 264 264 ! & 'aerodyn momentum conductance','m/s',
Note: See TracChangeset
for help on using the changeset viewer.