- Timestamp:
- Apr 6, 2010, 2:49:00 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/thermcell_plume.F90
r1311 r1338 64 64 REAL zqsatth(ngrid,klev) 65 65 REAL zta_est(ngrid,klev) 66 REAL ztemp(ngrid),zqsat(ngrid) 66 67 REAL zdw2 67 68 REAL zw2modif … … 77 78 real zdz,zfact,zbuoy,zalpha 78 79 real zcor,zdelta,zcvm5,qlbef 79 real Tbef,qsatbef80 real dqsat_dT,DT,num,denom81 80 REAL REPS,RLvCp,DDT0 82 81 PARAMETER (DDT0=.01) … … 116 115 ! write(lunout,*)'THERM 31H ' 117 116 117 print*,'THERMCELL_PLUME OPTIMISE V0 ' 118 118 ! Initialisations des variables reeles 119 119 if (1==0) then … … 239 239 ! sans tenir compte du detrainement et de l'entrainement dans cette 240 240 ! couche 241 ! C'est a dire qu'on suppose 242 ! ztla(l)=ztla(l-1) et zqta(l)=zqta(l-1) 241 243 ! Ici encore, on doit pouvoir ajouter entr_star (qui peut etre calculer 242 244 ! avant) a l'alimentation pour avoir un calcul plus propre 243 245 !--------------------------------------------------------------------------- 244 246 245 call thermcell_condens(ngrid,active, & 246 & zpspsk(:,l),pplev(:,l),ztla(:,l-1),zqta(:,l-1),zqla_est(:,l)) 247 ztemp(:)=zpspsk(:,l)*ztla(:,l-1) 248 call thermcell_qsat(ngrid,active,pplev(:,l),ztemp,zqta(:,l-1),zqsat) 249 247 250 248 251 do ig=1,ngrid 249 252 if(active(ig)) then 253 zqla_est(ig,l) = max(0.,zqta(ig,l-1)-zqsat(ig)) 250 254 ztva_est(ig,l) = ztla(ig,l-1)*zpspsk(ig,l)+RLvCp*zqla_est(ig,l) 251 255 zta_est(ig,l)=ztva_est(ig,l) … … 366 370 enddo 367 371 368 call thermcell_condens(ngrid,activetmp,zpspsk(:,l),pplev(:,l),ztla(:,l),zqta(:,l),zqla(:,l))369 372 ztemp(:)=zpspsk(:,l)*ztla(:,l) 373 call thermcell_qsat(ngrid,activetmp,pplev(:,l),ztemp,zqta(:,l),zqsatth(:,l)) 370 374 371 375 do ig=1,ngrid … … 373 377 if (prt_level.ge.20) print*,'coucou calcul detr 4512: ig, l', ig, l 374 378 ! on ecrit de maniere conservative (sat ou non) 379 zqla(ig,l) = max(0.,zqta(ig,l)-zqsatth(ig,l)) 375 380 ! T = Tl +Lv/Cp ql 376 381 ztva(ig,l) = ztla(ig,l)*zpspsk(ig,l)+RLvCp*zqla(ig,l) … … 382 387 383 388 !on ecrit zqsat 384 zqsatth(ig,l)=qsatbef385 389 386 390 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 554 558 REAL zqsatth(ngrid,klev) 555 559 REAL zta_est(ngrid,klev) 560 REAL ztemp(ngrid),zqsat(ngrid) 556 561 REAL zdw2 557 562 REAL zw2modif … … 570 575 real zcor,zdelta,zcvm5,qlbef,zdz2 571 576 real betalpha,zbetalpha 572 real Tbef,qsatbef,b1,eps, afact 573 real dqsat_dT,DT,num,denom,m 577 real eps, afact 574 578 REAL REPS,RLvCp,DDT0 575 579 PARAMETER (DDT0=.01) … … 589 593 590 594 ! print*,'THERM 31B' 595 print*,'THERMCELL_PLUME OPTIMISE V1 CCC ' 591 596 592 597 ! Initialisations des variables reeles … … 624 629 linter(:)=1. 625 630 ! linter(:)=1. 626 b1=2.627 631 ! Initialisation des variables entieres 628 632 lmix(:)=1 … … 631 635 lalim(:)=1 632 636 633 ! print*,'THERMCELL PLUME ARNAUD DEDANS'637 print*,'THERMCELL PLUME QSAT2 NDDDDN' 634 638 635 639 !------------------------------------------------------------------------- … … 708 712 ! sans tenir compte du detrainement et de l'entrainement dans cette 709 713 ! couche 714 ! C'est a dire qu'on suppose 715 ! ztla(l)=ztla(l-1) et zqta(l)=zqta(l-1) 710 716 ! Ici encore, on doit pouvoir ajouter entr_star (qui peut etre calculer 711 717 ! avant) a l'alimentation pour avoir un calcul plus propre 712 718 !--------------------------------------------------------------------------- 713 719 714 call thermcell_condens(ngrid,active, & 715 & zpspsk(:,l),pplev(:,l),ztla(:,l-1),zqta(:,l-1),zqla_est(:,l)) 716 720 ztemp(:)=zpspsk(:,l)*ztla(:,l-1) 721 call thermcell_qsat(ngrid,active,pplev(:,l),ztemp,zqta(:,l-1),zqsat(:)) 717 722 718 723 do ig=1,ngrid 719 724 ! print*,'active',active(ig),ig,l 720 725 if(active(ig)) then 726 zqla_est(ig,l)=max(0.,zqta(ig,l-1)-zqsat(ig)) 721 727 ztva_est(ig,l) = ztla(ig,l-1)*zpspsk(ig,l)+RLvCp*zqla_est(ig,l) 722 728 zta_est(ig,l)=ztva_est(ig,l) … … 747 753 !------------------------------------------------- 748 754 755 print*,'THERM V1 SANS DQ' 749 756 do ig=1,ngrid 750 757 if (active(ig)) then … … 758 765 zalpha=f0(ig)*f_star(ig,l)/sqrt(w_est(ig,l+1))/rhobarz(ig,l) 759 766 zdqt(ig,l)=max(zqta(ig,l-1)-po(ig,l),0.)/po(ig,l) 767 zdqt(ig,l)=0. 760 768 761 769 … … 800 808 enddo 801 809 802 call thermcell_condens(ngrid,activetmp,zpspsk(:,l),pplev(:,l),ztla(:,l),zqta(:,l),zqla(:,l))803 810 ztemp(:)=zpspsk(:,l)*ztla(:,l) 811 call thermcell_qsat(ngrid,activetmp,pplev(:,l),ztemp,zqta(:,l),zqsatth(:,l)) 804 812 805 813 do ig=1,ngrid … … 808 816 ! on ecrit de maniere conservative (sat ou non) 809 817 ! T = Tl +Lv/Cp ql 818 zqla(ig,l)=max(0.,zqta(ig,l)-zqsatth(ig,l)) 810 819 ztva(ig,l) = ztla(ig,l)*zpspsk(ig,l)+RLvCp*zqla(ig,l) 811 820 ztva(ig,l) = ztva(ig,l)/zpspsk(ig,l) … … 814 823 ztva(ig,l) = ztva(ig,l)*(1.+RETV*(zqta(ig,l) & 815 824 & -zqla(ig,l))-zqla(ig,l)) 816 817 !on ecrit zqsat818 zqsatth(ig,l)=qsatbef819 820 825 zbuoy(ig,l)=RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l) 821 826 zdz=zlev(ig,l+1)-zlev(ig,l)
Note: See TracChangeset
for help on using the changeset viewer.