Changeset 660
- Timestamp:
- May 18, 2012, 3:24:07 PM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/calltherm_interface.F90
r652 r660 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,wstar) 8 & pdu_th,pdv_th,pdt_th,pdq_th,lmax,zmaxth,pbl_dtke, & 9 & pdhdif,hfmax,wstar,sensibFlux) 9 10 10 11 USE ioipsl_getincom … … 34 35 REAL, INTENT(IN) :: q2(ngridmx,nlayermx+1) 35 36 REAL, INTENT(IN) :: zpopsk(ngridmx,nlayermx) 37 REAL, INTENT(IN) :: pdhdif(ngridmx,nlayermx) 38 REAL, INTENT(IN) :: sensibFlux(ngridmx) 36 39 37 40 !-------------------------------------------------------- … … 66 69 REAL masse(ngridmx,nlayermx) 67 70 LOGICAL qtransport_thermals,dtke_thermals 68 INTEGER l,ig,iq,ii(1) 71 INTEGER l,ig,iq,ii(1),k 69 72 CHARACTER (LEN=20) modname 70 73 … … 100 103 REAL hfmax(ngridmx),wmax(ngridmx) 101 104 REAL pbl_teta(ngridmx),dteta(ngridmx,nlayermx) 105 REAL rpdhd(ngridmx,nlayermx) 106 REAL wtdif(ngridmx,nlayermx),rho(ngridmx,nlayermx) 107 REAL wtth(ngridmx,nlayermx) 102 108 103 109 !-------------------------------------------------------- … … 380 386 381 387 DO ig=1,ngridmx 382 hfmax(ig)=MAXVAL(heatFlux(ig,:)+heatFlux_down(ig,:))383 388 wmax(ig)=MAXVAL(zw2(ig,:)) 384 389 ENDDO … … 454 459 ENDDO 455 460 461 ! we must add the heat flux from the diffusion scheme to hfmax 462 463 ! compute rho as it is after the diffusion 464 465 rho(:,:)=pplay(:,:) & 466 & /(r*(pt(:,:)+pdhdif(:,:)*zpopsk(:,:)*ptimestep)) 467 468 ! integrate -rho*pdhdif 469 470 rpdhd(:,:)=0. 471 472 DO ig=1,ngridmx 473 DO l=1,lmax(ig) 474 rpdhd(ig,l)=0. 475 DO k=1,l 476 rpdhd(ig,l)=rpdhd(ig,l)-rho(ig,k)*pdhdif(ig,k)* & 477 & (zzlev(ig,k+1)-zzlev(ig,k)) 478 ENDDO 479 rpdhd(ig,l)=rpdhd(ig,l)-sensibFlux(ig)/cpp 480 ENDDO 481 ENDDO 482 483 ! compute w'teta' from diffusion 484 485 wtdif(:,:)=rpdhd(:,:)/rho(:,:) 486 487 ! compute rho as it is after the thermals 488 489 rho(:,:)=pplay(:,:)/(r*(zt(:,:))) 490 ! integrate -rho*pdhdif 491 492 DO ig=1,ngridmx 493 DO l=1,lmax(ig) 494 rpdhd(ig,l)=0. 495 DO k=1,l 496 rpdhd(ig,l)=rpdhd(ig,l)-rho(ig,k)*(pdt_th(ig,k)/zpopsk(ig,k))* & 497 & (zzlev(ig,k+1)-zzlev(ig,k)) 498 ENDDO 499 rpdhd(ig,l)=rpdhd(ig,l)+ & 500 & rho(ig,1)*(heatFlux(ig,1)+heatFlux_down(ig,1)) 501 ENDDO 502 ENDDO 503 rpdhd(:,nlayermx)=0. 504 505 ! compute w'teta' from thermals 506 507 wtth(:,:)=rpdhd(:,:)/rho(:,:) 508 509 ! We get the max heat flux from thermals and add the contribution from the diffusion 510 511 DO ig=1,ngridmx 512 hfmax(ig)=MAXVAL(wtth(ig,:)+wtdif(ig,:)) 513 ENDDO 456 514 ! We follow Spiga et. al 2010 (QJRMS) 457 515 ! ------------ … … 499 557 call WRITEDIAGFI(ngridmx,'d_u_th', & 500 558 & 'tendance moment','m/s',1,pdu_th) 559 call WRITEDIAGFI(ngridmx,'wtdif', & 560 & 'heat flux from diffusion','K.m/s',1,wtdif) 561 call WRITEDIAGFI(ngridmx,'wtth', & 562 & 'heat flux from thermals','K.m/s',1,wtth) 563 call WRITEDIAGFI(ngridmx,'wttot', & 564 & 'heat flux PBL','K.m/s',1,wtdif(:,:)+wtth(:,:)) 565 501 566 else 502 567 -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r657 r660 353 353 REAL ustar(ngridmx),tstar(ngridmx) ! friction velocity and friction potential temp 354 354 REAL L_mo(ngridmx),vhf(ngridmx),vvv(ngridmx) 355 REAL zu2(ngridmx) 355 REAL zu2(ngridmx),sensibFlux(ngridmx) 356 356 c======================================================================= 357 357 … … 785 785 $ zdum1,zdum2,zdh,pdq,zflubid, 786 786 $ zdudif,zdvdif,zdhdif,zdtsdif,q2, 787 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th 787 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th,sensibFlux 788 788 #ifdef MESOSCALE 789 789 & ,flag_LES … … 850 850 $ pplay,pplev,pphi,zpopsk, 851 851 $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,zmax_th, 852 $ dtke_th, hfmax_th,wstar)852 $ dtke_th,zdhdif,hfmax_th,wstar,sensibFlux) 853 853 854 854 DO l=1,nlayer -
trunk/LMDZ.MARS/libf/phymars/vdifc.F
r652 r660 5 5 $ pdufi,pdvfi,pdhfi,pdqfi,pfluxsrf, 6 6 $ pdudif,pdvdif,pdhdif,pdtsrf,pq2, 7 $ pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true,hfmax 7 $ pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true, 8 $ hfmax,sensibFlux 8 9 #ifdef MESOSCALE 9 10 & ,flag_LES … … 143 144 REAL vmr_co2(ngridmx,nlayermx) 144 145 REAL qco2,mmean 146 147 REAL sensibFlux(ngridmx) 145 148 146 149 #ifdef MESOSCALE … … 649 652 pdtsrf(:)=(ztsrf2(:)-ptsrf(:))/ptimestep 650 653 654 DO ig=1,ngrid ! computing sensible heat flux (atm => surface) 655 sensibFlux(ig)=cpp*zb(ig,1)/ptimestep*(zhs(ig,1)-ztsrf2(ig)) 656 ENDDO 651 657 652 658 c-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.