Changeset 1518 for LMDZ5/trunk
- Timestamp:
- May 12, 2011, 3:32:22 PM (14 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/concvl.F
r1398 r1518 5 5 . d_t,d_q,d_u,d_v,d_tra, 6 6 . rain, snow, kbas, ktop, sigd, 7 . cbmf,upwd,dnwd,dnwdbis,Ma,mip,Vprecip, 7 . cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwdbis, 8 . Ma,mip,Vprecip, 8 9 . cape,cin,tvp,Tconv,iflag, 9 10 . pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr, … … 120 121 INTEGER i,k,itra 121 122 REAL qs(klon,klev),qs_wake(klon,klev) 122 REAL cbmf(klon) 123 REAL cbmf(klon),plcl(klon),plfc(klon),wbeff(klon) 123 124 cLF SAVE cbmf 124 125 cIM/JYG REAL, SAVE, ALLOCATABLE :: cbmf(:) … … 246 247 DO i = 1, klon 247 248 cbmf(i) = 0. 249 plcl(i) = 0. 250 plfc(i) = 0. 251 wbeff(i) = 0. 248 252 sigd(i) = 0. 249 253 ENDDO … … 357 361 . em_sig1feed,em_sig2feed,em_wght, 358 362 . iflag,d_t,d_q,d_u,d_v,d_tra,rain,kbas,ktop, 359 $ cbmf, work1,work2,ptop2,sigd,363 $ cbmf,plcl,plfc,wbeff,work1,work2,ptop2,sigd, 360 364 $ Ma,mip,Vprecip,upwd,dnwd,dnwdbis,qcondc,wd, 361 365 $ cape,cin,tvp, … … 364 368 endif 365 369 C------------------------------------------------------------------ 370 print *,' cva_driver -> cbmf,plcl,plfc,wbeff ', 371 . cbmf(1),plcl(1),plfc(1),wbeff(1) 366 372 367 373 DO i = 1,klon -
LMDZ5/trunk/libf/phylmd/cv3a_uncompress.F
r1398 r1518 1 1 SUBROUTINE cv3a_uncompress(nloc,len,ncum,nd,ntra,idcum 2 2 : ,iflag,kbas,ktop 3 : ,precip,cbmf, sig,w0,ptop23 : ,precip,cbmf,plcl,plfc,wbeff,sig,w0,ptop2 4 4 : ,ft,fq,fu,fv,ftra 5 : , Ma,mip,Vprecip,upwd,dnwd,dnwd05 : ,sigd,Ma,mip,Vprecip,upwd,dnwd,dnwd0 6 6 : ,qcondc,wd,cape,cin 7 7 : ,tvp … … 10 10 : ,asupmaxmin 11 11 o ,iflag1,kbas1,ktop1 12 : ,precip1,cbmf1, sig1,w01,ptop2112 : ,precip1,cbmf1,plcl1,plfc1,wbeff1,sig1,w01,ptop21 13 13 : ,ft1,fq1,fu1,fv1,ftra1 14 : , Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd0114 : ,sigd1,Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01 15 15 : ,qcondc1,wd1,cape1,cin1 16 16 : ,tvp1 … … 35 35 integer idcum(nloc) 36 36 integer iflag(nloc),kbas(nloc),ktop(nloc) 37 real precip(nloc),cbmf(nloc) 37 real precip(nloc),cbmf(nloc),plcl(nloc),plfc(nloc) 38 real wbeff(len) 38 39 real sig(nloc,nd), w0(nloc,nd),ptop2(nloc) 39 40 real ft(nloc,nd), fq(nloc,nd), fu(nloc,nd), fv(nloc,nd) 40 41 real ftra(nloc,nd,ntra) 42 real sigd(nloc) 41 43 real Ma(nloc,nd),mip(nloc,nd),Vprecip(nloc,nd+1) 42 44 real upwd(nloc,nd),dnwd(nloc,nd),dnwd0(nloc,nd) … … 51 53 c outputs: 52 54 integer iflag1(len),kbas1(len),ktop1(len) 53 real precip1(len),cbmf1(len) 55 real precip1(len),cbmf1(len),plcl1(nloc),plfc1(nloc) 56 real wbeff1(len) 54 57 real sig1(len,nd), w01(len,nd),ptop21(len) 55 58 real ft1(len,nd), fq1(len,nd), fu1(len,nd), fv1(len,nd) 56 59 real ftra1(len,nd,ntra) 60 real sigd1(len) 57 61 real Ma1(len,nd),mip1(len,nd),Vprecip1(len,nd+1) 58 62 real upwd1(len,nd),dnwd1(len,nd),dnwd01(len,nd) … … 70 74 do 2000 i=1,ncum 71 75 ptop21(idcum(i))=ptop2(i) 76 sigd1(idcum(i))=sigd(i) 72 77 precip1(idcum(i))=precip(i) 73 78 cbmf1(idcum(i))=cbmf(i) 79 plcl1(idcum(i))=plcl(i) 80 plfc1(idcum(i))=plfc(i) 81 wbeff1(idcum(i))=wbeff(i) 74 82 iflag1(idcum(i))=iflag(i) 75 83 kbas1(idcum(i))=kbas(i) -
LMDZ5/trunk/libf/phylmd/cv3p1_closure.F
r1516 r1518 7 7 o ,sig,w0,ptop2,cape,cin,m,iflag,coef 8 8 : ,Plim1,Plim2,asupmax,supmax0 9 : ,asupmaxmin,cbmf )9 : ,asupmaxmin,cbmf,plfc,wbeff) 10 10 11 11 * … … 49 49 real asupmax(nloc,nd),supmax0(nloc) 50 50 real asupmaxmin(nloc) 51 real cbmf(nloc),plfc(nloc) 52 real wbeff(nloc) 51 53 integer iflag(nloc) 52 54 c … … 63 65 integer nsupmax(nloc) 64 66 real supcrit,temp(nloc,nd) 65 real P1(nloc),Pmin(nloc) ,plfc(nloc)67 real P1(nloc),Pmin(nloc) 66 68 real asupmax0(nloc) 67 69 logical ok(nloc) 68 70 real siglim(nloc,nd),wlim(nloc,nd),mlim(nloc,nd) 69 71 real wb2(nloc) 70 real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc) ,cbmf(nloc)72 real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc) 71 73 real cbmflast(nloc) 72 real wbeff(nloc)73 74 74 real coef(nloc) 75 75 real xp(nloc),xq(nloc),xr(nloc),discr(nloc),b3(nloc),b4(nloc) … … 203 203 nsupmax(il)=i 204 204 ok(il)=.false. 205 ENDIF ! end IF (P(i) ... 205 ENDIF ! end IF (P(i) ... ) 206 206 ENDIF ! end IF (icb+1 le i le inb) 207 207 ENDDO … … 308 308 $ /(P(il,i)-P(il,i-1)) 309 309 GO TO 425 310 ENDIF ! end IF (P(i) ... 310 ENDIF ! end IF (P(i) ... ) 311 311 ENDIF ! end IF (icb+1 le i le inb) 312 312 ENDDO … … 517 517 ENDDO 518 518 c 519 if (flag_wb==0) then 520 wbeff(:)=wbmax 521 else if (flag_wb==1) then 522 wbeff(1:ncum)=wbmax/(1.+500./(ph(1:ncum,1)-plfc(1:ncum))) 523 else 524 stop'cas non prevu iflag_wb' 525 ! ligne a suprimer un jour ... 526 endif 527 ! if (ncum==1) print*,'WB ',plfc,wbeff,alp2,cin 528 519 IF (flag_wb==0) THEN 520 wbeff(:) = wbmax 521 ELSE IF (flag_wb==1) THEN 522 wbeff(1:ncum) = wbmax/(1.+500./(ph(1:ncum,1)-plfc(1:ncum))) 523 ELSE IF (flag_wb==2) THEN 524 wbeff(1:ncum) = wbmax*(0.01*(ph(1:ncum,1)-plfc(1:ncum)))**2 525 ENDIF 526 c 529 527 DO il = 1,ncum 530 531 !jyg Modification du coef de wb*wb pour conformite avec papier Wake 532 ! cbmf1(il) = alp2(il)/(0.5*wb*wb-Cin(il)) 533 ! A partir de mai 2011 on revient au 2 wb^2, conformement au papier. 534 ! les versions d'avant (NPv2 et al) tournaient avec 0.5 wb^2 et wb=1m/s 535 ! equivalent a wb=1 m/s pour la nouvelle formulation 536 ! Puis passage de wb constant a wbeff variable suivant flag_wb 537 528 cjyg Modification du coef de wb*wb pour conformite avec papier Wake 529 cc cbmf1(il) = alp2(il)/(0.5*wb*wb-Cin(il)) 538 530 cbmf1(il) = alp2(il)/(2.*wbeff(il)*wbeff(il)-Cin(il)) 539 540 531 if(cbmf1(il).EQ.0.AND.alp2(il).NE.0.) THEN 541 532 write(lunout,*) -
LMDZ5/trunk/libf/phylmd/cva_driver.F
r1517 r1518 11 11 & sig1feed1,sig2feed1,wght1, 12 12 o iflag1,ft1,fq1,fu1,fv1,ftra1, 13 & precip1,kbas1,ktop1,cbmf1, 13 & precip1,kbas1,ktop1, 14 & cbmf1,plcl1,plfc1,wbeff1, 14 15 & sig1,w01, !input/output 15 & ptop21,sigd ,16 & ptop21,sigd1, 16 17 & Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01, 17 18 & qcondc1,wd1, … … 150 151 integer ktop1(len) 151 152 real cbmf1(len) 152 ! real cbmflast(len) 153 real plcl1(klon) 154 real plfc1(klon) 155 real wbeff1(klon) 153 156 real sig1(len,klev) !input/output 154 157 real w01(len,klev) !input/output 155 158 real ptop21(len) 159 real sigd1(len) 156 160 real Ma1(len,nd) 157 161 real mip1(len,nd) … … 320 324 c$OMP THREADPRIVATE(debut) 321 325 322 real plcl1(klon)323 326 real tnk1(klon) 324 327 real thnk1(klon) … … 365 368 integer inb(nloc), inbis(nloc) 366 369 367 real cbmf(nloc),plcl(nloc) 370 real cbmf(nloc),plcl(nloc),plfc(nloc),wbeff(nloc) 368 371 real t(nloc,klev),q(nloc,klev),qs(nloc,klev) 369 372 real t_wake(nloc,klev),q_wake(nloc,klev),qs_wake(nloc,klev) … … 495 498 call zilch(cbmf1 ,nword1) 496 499 call zilch(ptop21 ,nword1) 500 sigd1=0. 497 501 call zilch(Ma1 ,nword2) 498 502 call zilch(mip1 ,nword2) … … 794 798 o ,sig,w0,ptop2,cape,cin,m,iflag,coef_clos 795 799 : ,Plim1,Plim2,asupmax,supmax0 796 : ,asupmaxmin,cbmf) 800 : ,asupmaxmin,cbmf,plfc,wbeff) 801 802 print *,'cv3p1_closure-> plfc,wbeff ', plfc(1),wbeff(1) 797 803 ENDIF 798 804 endif ! iflag_con.eq.3 … … 863 869 if (debut) THEN 864 870 print *,'cv_unsat-> ' 865 debut=.FALSE.866 871 endif !(debut) THEN 867 872 ! … … 889 894 : ,tls,tps,qcondc,wd 890 895 : ,ftd,fqd) 891 ! print *,' cv3_yield -> fqd(1) = ',fqd(1,1) 892 endif 893 896 endif 897 c 898 if (debut) THEN 899 print *,' cv3_yield -> fqd(1) = ',fqd(1,1) 900 endif !(debut) THEN 901 c 894 902 if (iflag_con.eq.4) then 895 903 CALL cv_yield(nloc,ncum,nd,nk,icb,inb,delt … … 912 920 CALL cv3a_uncompress(nloc,len,ncum,nd,ntra,idcum 913 921 : ,iflag,icb,inb 914 : ,precip,cbmf, sig,w0,ptop2922 : ,precip,cbmf,plcl,plfc,wbeff,sig,w0,ptop2 915 923 : ,ft,fq,fu,fv,ftra 916 : , Ma,mip,Vprecip,upwd,dnwd,dnwd0924 : ,sigd,Ma,mip,Vprecip,upwd,dnwd,dnwd0 917 925 ; ,qcondc,wd,cape,cin 918 926 : ,tvp … … 921 929 : ,asupmaxmin 922 930 o ,iflag1,kbas1,ktop1 923 o ,precip1,cbmf1, sig1,w01,ptop21931 o ,precip1,cbmf1,plcl1,plfc1,wbeff1,sig1,w01,ptop21 924 932 o ,ft1,fq1,fu1,fv1,ftra1 925 o , Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01933 o ,sigd1,Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01 926 934 o ,qcondc1,wd1,cape1,cin1 927 935 o ,tvp1 … … 944 952 945 953 ENDIF ! ncum>0 954 c 955 if (debut) THEN 956 print *,' cv_compress -> ' 957 debut=.FALSE. 958 endif !(debut) THEN 959 c 946 960 947 961 9999 continue -
LMDZ5/trunk/libf/phylmd/phys_output_mod.F90
r1507 r1518 229 229 type(ctrl_out),save :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10 /),'ptop') 230 230 type(ctrl_out),save :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10 /),'fbase') 231 type(ctrl_out),save :: o_plcl = ctrl_out((/ 1, 10, 10, 10, 10 /),'plcl') 232 type(ctrl_out),save :: o_plfc = ctrl_out((/ 1, 10, 10, 10, 10 /),'plfc') 233 type(ctrl_out),save :: o_wbeff = ctrl_out((/ 1, 10, 10, 10, 10 /),'wbeff') 231 234 type(ctrl_out),save :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10 /),'prw') 232 235 … … 1004 1007 CALL histdef2d(iff,o_ptop%flag,o_ptop%name, "Cld top pressure", "Pa") 1005 1008 CALL histdef2d(iff,o_fbase%flag,o_fbase%name, "Cld base mass flux", "kg/m2/s") 1009 CALL histdef2d(iff,o_plcl%flag,o_plcl%name, "Lifting Condensation Level", "hPa") 1010 CALL histdef2d(iff,o_plfc%flag,o_plfc%name, "Level of Free Convection", "hPa") 1011 CALL histdef2d(iff,o_wbeff%flag,o_wbeff%name, "Conv. updraft velocity at LFC", "m/s") 1006 1012 CALL histdef2d(iff,o_prw%flag,o_prw%name, "Precipitable water", "kg/m2") 1007 1013 type_ecri(1) = 't_max(X)' -
LMDZ5/trunk/libf/phylmd/phys_output_write.h
r1507 r1518 550 550 CALL histwrite_phy(nid_files(iff),o_fbase%name,itau_w,ema_cbmf) 551 551 ENDIF 552 553 IF (o_plcl%flag(iff)<=lev_files(iff)) THEN 554 CALL histwrite_phy(nid_files(iff),o_plcl%name,itau_w,plcl) 555 ENDIF 556 557 IF (o_plfc%flag(iff)<=lev_files(iff)) THEN 558 CALL histwrite_phy(nid_files(iff),o_plfc%name,itau_w,plfc) 559 ENDIF 560 561 IF (o_wbeff%flag(iff)<=lev_files(iff)) THEN 562 CALL histwrite_phy(nid_files(iff),o_wbeff%name,itau_w,wbeff) 563 ENDIF 564 552 565 553 566 IF (o_prw%flag(iff)<=lev_files(iff)) THEN -
LMDZ5/trunk/libf/phylmd/physiq.F
r1517 r1518 871 871 REAL dnwd0(klon,klev) ! unsaturated downdraft mass flux 872 872 REAL tvp(klon,klev) ! virtual temp of lifted parcel 873 REAL plcl(klon) ! Lifting Condensation Level 874 REAL plfc(klon) ! Level of Free Convection 875 REAL wbeff(klon) ! saturated updraft velocity at LFC 873 876 CHARACTER*40 capemaxcels !max(CAPE) 874 877 … … 879 882 INTEGER ntra ! nb traceurs pour convect4.3 880 883 REAL pori_con(klon) ! pressure at the origin level of lifted parcel 881 REAL plcl_con(klon),dtma_con(klon),dtlcl_con(klon)884 REAL dtma_con(klon),dtlcl_con(klon) 882 885 REAL dtvpdt1(klon,klev), dtvpdq1(klon,klev) 883 886 REAL dplcldt(klon), dplcldr(klon) … … 2186 2189 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr, 2187 2190 . rain_con, snow_con, ibas_con, itop_con, sigd, 2188 . ema_cbmf, upwd,dnwd,dnwd0,2191 . ema_cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwd0, 2189 2192 . Ma,mip,Vprecip,cape,cin,tvp,Tconv,iflagctrl, 2190 2193 . pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,qcondc,wd,
Note: See TracChangeset
for help on using the changeset viewer.