Changeset 1774 for LMDZ5/trunk
- Timestamp:
- Jun 18, 2013, 2:02:30 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/concvl.F
r1742 r1774 387 387 $ dd_t,dd_q,Plim1,Plim2,asupmax,supmax0, 388 388 $ asupmaxmin,lalim_conv, 389 !AC!+!RomP 390 $ da,phi,mp,phi2,d1a,dam,sij,clw, ! RomP 391 $ elij,evap,ep,wdtrainA,wdtrainM) ! RomP 392 !AC!+!RomP 389 !AC!+!RomP+jyg 390 $ da,phi,mp,phi2,d1a,dam,sij,clw,elij, ! RomP 391 $ evap,ep,epmlmMm,eplaMm, ! RomP 392 $ wdtrainA,wdtrainM) ! RomP 393 !AC!+!RomP+jyg 393 394 endif 394 395 C------------------------------------------------------------------ -
LMDZ5/trunk/libf/phylmd/cv3_routines.F
r1766 r1774 3561 3561 SUBROUTINE cv3_tracer(nloc,len,ncum,nd,na, 3562 3562 & ment,sigij,da,phi,phi2,d1a,dam, 3563 & ep,Vprecip,elij,clw,icb,inb) 3563 & ep,Vprecip,elij,clw,epmlmMm,eplaMm, 3564 & icb,inb) 3564 3565 implicit none 3565 3566 … … 3577 3578 real phi2(nloc,na,na) 3578 3579 real d1a(nloc,na),dam(nloc,na) 3580 real epmlmMm(nloc,na,na),eplaMm(nloc,na) 3579 3581 ! variables pour tracer dans precip de l'AA et des mel 3580 3582 c local variables: … … 3595 3597 dam(:,:)=0. 3596 3598 epm(:,:,:)=0. 3597 c 3598 ! fraction deau condensee dans les melanges convertie en precip 3599 eplaMm(:,:)=0. 3600 epmlmMm(:,:,:)=0. 3601 phi(:,:,:)=0. 3602 phi2(:,:,:)=0. 3603 c 3604 ! fraction deau condensee dans les melanges convertie en precip : epm 3605 ! et eau condensée précipitée dans masse d'air saturé : l_m*dM_m/dzdz.dzdz 3599 3606 do j=1,na 3600 3607 do k=1,na 3601 3608 do i=1,ncum 3602 3609 if(k.ge.icb(i).and.k.le.inb(i).and. 3603 & j.ge.k.and.j.le.inb(i)) then3610 !!jyg & j.ge.k.and.j.le.inb(i)) then 3604 3611 !!jyg epm(i,j,k)=1.-(1.-ep(i,j))*clw(i,j)/elij(i,k,j) 3612 & j.gt.k.and.j.le.inb(i)) then 3605 3613 epm(i,j,k)=1.-(1.-ep(i,j))*clw(i,j)/ 3606 3614 & max(elij(i,k,j),1.e-16) 3607 3615 !! 3608 3616 epm(i,j,k)=max(epm(i,j,k),0.0) 3609 3617 endif … … 3611 3619 end do 3612 3620 end do 3621 3622 ! 3623 do j=1,na 3624 do k=1,na 3625 do i=1,ncum 3626 if(k.ge.icb(i).and.k.le.inb(i)) then 3627 eplaMm(i,j)=eplaMm(i,j) + ep(i,j)*clw(i,j) 3628 & *ment(i,j,k)*(1.-sigij(i,j,k)) 3629 endif 3630 end do 3631 end do 3632 end do 3633 ! 3634 do j=1,na 3635 do k=1,j-1 3636 do i=1,ncum 3637 if(k.ge.icb(i).and.k.le.inb(i).and. 3638 & j.le.inb(i)) then 3639 epmlmMm(i,j,k)=epm(i,j,k)*elij(i,k,j)*ment(i,k,j) 3640 endif 3641 end do 3642 end do 3643 end do 3613 3644 3614 3645 ! matrices pour calculer la tendance des concentrations dans cvltr.F90 … … 3625 3656 3626 3657 phi2(i,j,k)=phi(i,j,k)*epm(i,j,k) 3627 else3628 dam(i,j)=0.3629 phi2(i,j,k)=0.3630 3658 endif 3631 3659 end do -
LMDZ5/trunk/libf/phylmd/cv3a_uncompress.F
r1745 r1774 10 10 : ,asupmaxmin 11 11 ! 12 : ,da,phi !AC! 13 : ,mp,phi2,d1a,dam,sigij !RomP 14 : ,wdtrainA,wdtrainM,elij,clw !RomP 15 : ,evap,ep !RomP 12 : ,da,phi,mp,phi2,d1a,dam,sigij ! RomP+AC+jyg 13 : ,clw,elij,evap,ep,epmlmMm,eplaMm ! RomP 14 : ,wdtrainA,wdtrainM ! RomP 16 15 ! 17 16 o ,iflag1,kbas1,ktop1 18 : ,precip1,cbmf1,plcl1,plfc1,wbeff1,sig1,w01,ptop21 19 : ,ft1,fq1,fu1,fv1,ftra1 20 : ,sigd1,Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01 21 : ,qcondc1,wd1,cape1,cin1 22 : ,tvp1 23 : ,ftd1,fqd1 24 : ,Plim11,Plim21,asupmax1,supmax01 25 : ,asupmaxmin1 26 ! 27 o ,da1,phi1 !AC! 28 o ,mp1,phi21,d1a1,dam1,sigij1 !RomP 29 o ,wdtrainA1,wdtrainM1,elij1,clw1 !RomP 30 o ,evap1,ep1) !RomP 17 o ,precip1,cbmf1,plcl1,plfc1,wbeff1,sig1,w01,ptop21 18 o ,ft1,fq1,fu1,fv1,ftra1 19 o ,sigd1,Ma1,mip1,Vprecip1,upwd1,dnwd1,dnwd01 20 o ,qcondc1,wd1,cape1,cin1 21 o ,tvp1 22 o ,ftd1,fqd1 23 o ,Plim11,Plim21,asupmax1,supmax01 24 o ,asupmaxmin1 25 ! 26 o ,da1,phi1,mp1,phi21,d1a1,dam1,sigij1 ! RomP+AC+jyg 27 o ,clw1,elij1,evap1,ep1,epmlmMm1,eplaMm1! RomP 28 o ,wdtrainA1,wdtrainM1) ! RomP 31 29 ! 32 30 *************************************************************** … … 67 65 real phi2(nloc,nd,nd) !RomP 68 66 real d1a(nloc,nd),dam(nloc,nd) !RomP 67 real sigij(nloc,nd,nd) !RomP 68 real clw(nloc,nd),elij(nloc,nd,nd) !RomP 69 real evap(nloc,nd),ep(nloc,nd) !RomP 70 real epmlmMm(nloc,nd,nd),eplaMm(nloc,nd) !RomP+jyg 69 71 real wdtrainA(nloc,nd), wdtrainM(nloc,nd) !RomP 70 real sigij(nloc,nd,nd) !RomP71 real elij(nloc,nd,nd),clw(nloc,nd) !RomP72 real evap(nloc,nd),ep(nloc,nd) !RomP73 72 ! 74 73 c outputs: … … 94 93 real phi21(nloc,nd,nd) !RomP 95 94 real d1a1(nloc,nd),dam1(nloc,nd) !RomP 95 real sigij1(len,nd,nd) !RomP 96 real clw1(len,nd),elij1(len,nd,nd) !RomP 97 real evap1(len,nd),ep1(len,nd) !RomP 98 real epmlmMm1(len,nd,nd),eplaMm1(len,nd) !RomP+jyg 96 99 real wdtrainA1(len,nd), wdtrainM1(len,nd) !RomP 97 real sigij1(len,nd,nd) !RomP98 real elij1(len,nd,nd),clw1(len,nd) !RomP99 real evap1(len,nd),ep1(len,nd) !RomP100 100 ! 101 101 c 102 102 c local variables: 103 integer i,k,j,k1,k2 103 integer i,k,j 104 cc integer k1,k2 104 105 105 106 do 2000 i=1,ncum … … 147 148 d1a1(idcum(i),k) = d1a(i,k) !RomP 148 149 dam1(idcum(i),k) = dam(i,k) !RomP 149 wdtrainA1(idcum(i),k)= wdtrainA(i,k) !RomP150 wdtrainM1(idcum(i),k)= wdtrainM(i,k) !RomP151 150 clw1(idcum(i),k) = clw(i,k) !RomP 152 151 evap1(idcum(i),k) = evap(i,k) !RomP 153 152 ep1(idcum(i),k) = ep(i,k) !RomP 153 eplaMm(idcum(i),k) = eplaMm(i,k) !RomP+jyg 154 wdtrainA1(idcum(i),k)= wdtrainA(i,k) !RomP 155 wdtrainM1(idcum(i),k)= wdtrainM(i,k) !RomP 154 156 ! 155 157 2010 continue … … 171 173 172 174 !AC! 173 do k2=1,nd174 do k 1=1,nd175 do j=1,nd 176 do k=1,nd 175 177 do i=1,ncum 176 phi1(idcum(i),k1,k2)=phi(i,k1,k2) !AC! 177 phi21(idcum(i),k1,k2)= phi2(idcum(i),k1,k2) !RomP 178 sigij1(idcum(i),k1,k2) = sigij(idcum(i),k1,k2) !RomP 179 elij1(idcum(i),k1,k2)= elij(idcum(i),k1,k2) !RomP 178 phi1(idcum(i),k,j) = phi(i,k,j) !AC! 179 phi21(idcum(i),k,j) = phi2(i,k,j) !RomP 180 sigij1(idcum(i),k,j) = sigij(i,k,j) !RomP 181 elij1(idcum(i),k,j) = elij(i,k,j) !RomP 182 epmlmMm(idcum(i),k,j)= epmlmMm(i,k,j) !RomP+jyg 180 183 end do 181 184 end do -
LMDZ5/trunk/libf/phylmd/cv_driver.F
r1742 r1774 9 9 & icb1,inb1, 10 10 & delt,Ma1,upwd1,dnwd1,dnwd01,qcondc1,wd1,cape1, 11 & da1,phi1,mp1,phi21,d1a1,dam1,sij1,clw1,elij1, 12 & evap1,ep1,epmlmMm1,eplaMm1, 13 & wdtrainA1,wdtrainM1) 11 & da1,phi1,mp1,phi21,d1a1,dam1,sij1,clw1,elij1, ! RomP 12 & evap1,ep1,epmlmMm1,eplaMm1, ! RomP 13 & wdtrainA1,wdtrainM1) ! RomP 14 14 C 15 15 USE dimphy … … 18 18 C.............................START PROLOGUE............................ 19 19 C 20 ! 21 ! All argument names (except len,nd,ntra,nloc,delt and the flags) have a "1" appended. 22 ! The "1" is removed for the corresponding compressed (local) variables. 23 ! 20 24 C PARAMETERS: 21 25 C Name Type Usage Description … … 54 58 C wd1 Real Output downdraft velocity scale for sfc fluxes 55 59 C cape1 Real Output CAPE 60 ! 61 ! wdtrainA1 Real Output precipitation detrained from adiabatic draught; 62 ! used in tracer transport (cvltr) 63 ! wdtrainM1 Real Output precipitation detrained from mixed draughts; 64 ! used in tracer transport (cvltr) 65 ! da1 Real Output used in tracer transport (cvltr) 66 ! phi1 Real Output used in tracer transport (cvltr) 67 ! mp1 Real Output used in tracer transport (cvltr) 68 ! 69 ! phi21 Real Output used in tracer transport (cvltr) 70 ! 71 ! d1a1 Real Output used in tracer transport (cvltr) 72 ! dam1 Real Output used in tracer transport (cvltr) 73 ! 74 ! evap1 Real Output 75 ! ep1 Real Output 76 ! sij1 Real Output 77 ! elij1 Real Output 56 78 C 57 79 C S. Bony, Mar 2002: … … 119 141 real epmlmMm1(len,nd,nd),eplaMm1(len,nd) 120 142 ! RomP <<< 121 122 143 ! 144 !------------------------------------------------------------------- 145 ! Original Prologue by Kerry Emanuel. 123 146 !------------------------------------------------------------------- 124 147 ! --- ARGUMENTS … … 291 314 real ments(nloc,klev,klev), qents(nloc,klev,klev) 292 315 real sij(nloc,klev,klev), elij(nloc,klev,klev) 293 ! RomP >>>294 real da(nloc,klev),phi(nloc,klev,klev),mp(nloc,klev)295 real epmlmMm(nloc,klev,klev),eplaMm(nloc,klev)296 real phi2(nloc,klev,klev)297 real d1a(nloc,klev), dam(nloc,klev)298 real wdtrainA(nloc,klev),wdtrainM(nloc,klev)299 real sigd(nloc)300 ! RomP <<<301 316 real qp(nloc,klev), up(nloc,klev), vp(nloc,klev) 302 317 real wt(nloc,klev), water(nloc,klev), evap(nloc,klev) … … 312 327 real qcondc(nloc,klev) ! cld 313 328 real wd(nloc) ! gust 329 ! 330 ! RomP >>> 331 real da(nloc,klev),phi(nloc,klev,klev),mp(nloc,klev) 332 real epmlmMm(nloc,klev,klev),eplaMm(nloc,klev) 333 real phi2(nloc,klev,klev) 334 real d1a(nloc,klev), dam(nloc,klev) 335 real wdtrainA(nloc,klev),wdtrainM(nloc,klev) 336 real sigd(nloc) 337 ! RomP <<< 314 338 315 339 nent(:,:)=0 … … 380 404 enddo 381 405 endif 406 407 ! RomP >>> 408 wdtrainA1(:,:) =0. 409 wdtrainM1(:,:) =0. 410 da1(:,:) =0. 411 phi1(:,:,:) =0. 412 epmlmMm1(:,:,:) =0. 413 eplaMm1(:,:) =0. 414 mp1(:,:) =0. 415 evap1(:,:) =0. 416 ep1(:,:) =0. 417 sij1(:,:,:) =0. 418 elij1(:,:,:) =0. 419 phi21(:,:,:) =0. 420 d1a1(:,:) =0. 421 dam1(:,:) =0. 422 ! RomP <<< 382 423 383 424 !-------------------------------------------------------------------- … … 729 770 return 730 771 end 731 -
LMDZ5/trunk/libf/phylmd/cva_driver.F
r1742 r1774 22 22 & ,lalim_conv, 23 23 & da1,phi1,mp1,phi21,d1a1,dam1,sigij1,clw1, ! RomP 24 & elij1,evap1,ep1, 24 & elij1,evap1,ep1,epmlmMm1,eplaMm1, ! RomP 25 25 & wdtrainA1,wdtrainM1) ! RomP 26 26 *************************************************************** … … 39 39 C.............................START PROLOGUE............................ 40 40 C 41 ! 42 ! All argument names (except len,nd,ntra,nloc,delt and the flags) have a "1" appended. 43 ! The "1" is removed for the corresponding compressed variables. 41 44 C PARAMETERS: 42 45 C Name Type Usage Description … … 99 102 C supmax01 Real Output 100 103 C asupmaxmin1 Real Output 104 ! 105 ! ftd1 Real Output Array of temperature tendency due to precipitations (K/s) of dimension ND, 106 ! defined at same grid levels as T, Q, QS and P. 107 ! 108 ! fqd1 Real Output Array of specific humidity tendencies due to precipitations ((gm/gm)/s) 109 ! of dimension ND, defined at same grid levels as T, Q, QS and P. 110 ! 111 ! wdtrainA1 Real Output precipitation detrained from adiabatic draught; 112 ! used in tracer transport (cvltr) 113 ! wdtrainM1 Real Output precipitation detrained from mixed draughts; 114 ! used in tracer transport (cvltr) 115 ! da1 Real Output used in tracer transport (cvltr) 116 ! phi1 Real Output used in tracer transport (cvltr) 117 ! mp1 Real Output used in tracer transport (cvltr) 118 ! 119 ! phi21 Real Output used in tracer transport (cvltr) 120 ! 121 ! d1a1 Real Output used in tracer transport (cvltr) 122 ! dam1 Real Output used in tracer transport (cvltr) 123 ! 124 ! epmlmMm1 Real Output used in tracer transport (cvltr) 125 ! eplaMm1 Real Output used in tracer transport (cvltr) 126 ! 127 ! evap1 Real Output 128 ! ep1 Real Output 129 ! sigij1 Real Output 130 ! elij1 Real Output 131 132 C 101 133 C S. Bony, Mar 2002: 102 134 C * Several modules corresponding to different physical processes … … 188 220 ! RomP >>> 189 221 real wdtrainA1(len,nd), wdtrainM1(len,nd) 190 real wdtrainA(nloc,klev),wdtrainM(nloc,klev)191 222 real da1(len,nd),phi1(len,nd,nd),mp1(len,nd) 192 real da(len,nd),phi(len,nd,nd)223 real epmlmMm1(len,nd,nd),eplaMm1(len,nd) 193 224 real evap1(len,nd),ep1(len,nd) 194 225 real sigij1(len,nd,nd),elij1(len,nd,nd) 195 real phi2(len,nd,nd)196 real d1a(len,nd), dam(len,nd)197 226 real phi21(len,nd,nd) 198 227 real d1a1(len,nd), dam1(len,nd) 199 228 ! RomP <<< 229 ! 230 !------------------------------------------------------------------- 231 ! Prolog by Kerry Emanuel. 200 232 !------------------------------------------------------------------- 201 233 ! --- ARGUMENTS … … 320 352 ! 321 353 ! det: Array of detrainment mass flux of dimension ND. 322 !323 ! ftd: Array of temperature tendency due to precipitations (K/s) of dimension ND,324 ! defined at same grid levels as T, Q, QS and P.325 !326 ! fqd: Array of specific humidity tendencies due to precipitations ((gm/gm)/s)327 ! of dimension ND, defined at same grid levels as T, Q, QS and P.328 !329 354 !------------------------------------------------------------------- 330 355 c … … 446 471 real wghti(nloc,nd) 447 472 real hnk(nloc),unk(nloc),vnk(nloc) 473 ! 474 ! RomP >>> 475 real wdtrainA(nloc,klev),wdtrainM(nloc,klev) 476 real da(len,nd),phi(len,nd,nd) 477 real epmlmMm(nloc,klev,klev),eplaMm(nloc,klev) 478 real phi2(len,nd,nd) 479 real d1a(len,nd), dam(len,nd) 480 ! RomP <<< 481 ! 448 482 logical, save :: first=.true. 449 483 c$OMP THREADPRIVATE(first) … … 498 532 nword4=len*nd*nd 499 533 500 ! call izilch(iflag1 ,nword1) 501 ! call zilch(iflag1 ,nword1) 502 do i=1,len 503 iflag1(i)=0 504 ktop1(i)=0 505 kbas1(i)=0 506 enddo 507 call zilch(ft1 ,nword2) 508 call zilch(fq1 ,nword2) 509 call zilch(fu1 ,nword2) 510 call zilch(fv1 ,nword2) 511 call zilch(ftra1 ,nword3) 512 call zilch(precip1 ,nword1) 513 ! call izilch(kbas1 ,nword1) 514 ! call zilch(kbas1 ,nword1) 515 ! call izilch(ktop1 ,nword1) 516 ! call zilch(ktop1 ,nword1) 517 call zilch(cbmf1 ,nword1) 518 call zilch(ptop21 ,nword1) 519 sigd1(:)=0. 520 call zilch(Ma1 ,nword2) 521 call zilch(mip1 ,nword2) 522 ! call zilch(Vprecip1,nword2) 523 Vprecip1=0. 524 call zilch(upwd1 ,nword2) 525 call zilch(dnwd1 ,nword2) 526 call zilch(dnwd01 ,nword2) 527 call zilch(qcondc1 ,nword2) 528 !test 529 ! call zilch(qcondc ,nword2) 530 call zilch(wd1 ,nword1) 531 call zilch(cape1 ,nword1) 532 call zilch(cin1 ,nword1) 533 call zilch(tvp1 ,nword2) 534 call zilch(ftd1 ,nword2) 535 call zilch(fqd1 ,nword2) 536 call zilch(Plim11 ,nword1) 537 call zilch(Plim21 ,nword1) 538 call zilch(asupmax1,nword2) 539 call zilch(supmax01,nword1) 540 call zilch(asupmaxmin1,nword1) 534 iflag1(:) = 0 535 ktop1(:) = 0 536 kbas1(:) = 0 537 ft1(:,:) = 0.0 538 fq1(:,:) = 0.0 539 fu1(:,:) = 0.0 540 fv1(:,:) = 0.0 541 ftra1(:,:,:) = 0. 542 precip1(:) = 0. 543 cbmf1(:) = 0. 544 ptop21(:) = 0. 545 sigd1(:) = 0. 546 Ma1(:,:) = 0. 547 mip1(:,:) = 0. 548 Vprecip1(:,:) = 0. 549 upwd1 (:,:) = 0. 550 dnwd1 (:,:) = 0. 551 dnwd01 (:,:) = 0. 552 qcondc1 (:,:) = 0. 553 wd1 (:) = 0. 554 cape1 (:) = 0. 555 cin1 (:) = 0. 556 tvp1 (:,:) = 0. 557 ftd1 (:,:) = 0. 558 fqd1 (:,:) = 0. 559 Plim11 (:) = 0. 560 Plim21 (:) = 0. 561 asupmax1(:,:) = 0. 562 supmax01(:) = 0. 563 asupmaxmin1(:)= 0. 541 564 c 542 565 DO il = 1,len … … 552 575 endif 553 576 577 ! RomP >>> 578 wdtrainA1(:,:) = 0. 579 wdtrainM1(:,:) = 0. 580 da1(:,:) = 0. 581 phi1(:,:,:) = 0. 582 epmlmMm1(:,:,:) = 0. 583 eplaMm1(:,:) = 0. 584 mp1(:,:) = 0. 585 evap1(:,:) = 0. 586 ep1(:,:) = 0. 587 sigij1(:,:,:) = 0. 588 elij1(:,:,:) = 0. 589 phi21(:,:,:) = 0. 590 d1a1(:,:) = 0. 591 dam1(:,:) = 0. 592 ! RomP <<< 554 593 !--------------------------------------------------------------------- 555 594 ! --- INITIALIZE LOCAL ARRAYS AND PARAMETERS … … 941 980 CALL cv3_tracer(nloc,len,ncum,nd,nd, 942 981 : ment,sigij,da,phi,phi2,d1a,dam, 943 : ep,Vprecip,elij,clw,icb,inb) 982 : ep,Vprecip,elij,clw,epmlmMm,eplaMm, 983 : icb,inb) 944 984 !RomP <<< 945 985 endif … … 964 1004 : ,asupmaxmin 965 1005 : ,da,phi,mp,phi2,d1a,dam,sigij ! RomP 966 : , wdtrainA,wdtrainM,elij,clw! RomP967 : , evap,ep! RomP1006 : ,clw,elij,evap,ep,epmlmMm,eplaMm ! RomP 1007 : ,wdtrainA,wdtrainM ! RomP 968 1008 o ,iflag1,kbas1,ktop1 969 1009 o ,precip1,cbmf1,plcl1,plfc1,wbeff1,sig1,w01,ptop21 … … 976 1016 o ,asupmaxmin1 977 1017 o ,da1,phi1,mp1,phi21,d1a1,dam1,sigij1 ! RomP 978 o , wdtrainA1,wdtrainM1,elij1,clw1! RomP979 o , evap1,ep1)! RomP1018 o ,clw1,elij1,evap1,ep1,epmlmMm1,eplaMm1! RomP 1019 o ,wdtrainA1,wdtrainM1) ! RomP 980 1020 endif 981 1021
Note: See TracChangeset
for help on using the changeset viewer.