Changeset 2420 for LMDZ5/trunk/libf/phylmd/cv3p2_closure.F90
- Timestamp:
- Jan 5, 2016, 4:37:49 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/cv3p2_closure.F90
r2398 r2420 59 59 REAL :: deltap, fac, w, amu 60 60 REAL, DIMENSION (nloc, nd) :: rhodp ! Factor such that m=rhodp*sig*w 61 REAL :: dz 61 62 REAL :: pbmxup 62 63 REAL, DIMENSION (nloc, nd) :: dtmin, sigold … … 85 86 REAL, DIMENSION (nloc) :: alp2 ! Alp with offset 86 87 88 !CR: variables for new erosion of adiabiatic ascent 89 REAL, DIMENSION (nloc, nd) :: mad, me, betalim, beta_coef 90 REAL, DIMENSION (nloc, nd) :: med, md 91 REAL :: coef_peel 92 PARAMETER (coef_peel=0.25) 93 87 94 REAL :: sigmax 88 95 PARAMETER (sigmax=0.1) … … 120 127 END DO 121 128 END DO 129 130 !CR: initializations for erosion of adiabatic ascent 131 DO k = 1,nl 132 DO il = 1, ncum 133 mad(il,k)=0. 134 me(il,k)=0. 135 betalim(il,k)=1. 136 wlim(il,k)=0. 137 ENDDO 138 ENDDO 122 139 123 140 ! ------------------------------------------------------- … … 496 513 IF ((k>=(icb(il)+1)) .AND. (k<=inb(il))) THEN 497 514 515 IF (iflag_mix_adiab.eq.1) THEN 516 !CR:computation of cape from LCL: keep flag or to modify in all cases? 517 deltap = min(plcl(il), ph(il,k-1)) - min(plcl(il), ph(il,k)) 518 ELSE 498 519 deltap = min(pbase(il), ph(il,k-1)) - min(pbase(il), ph(il,k)) 520 ENDIF 499 521 cape(il) = cape(il) + rrd*buoy(il, k-1)*deltap/p(il, k-1) 500 522 cape(il) = amax1(0.0, cape(il)) … … 681 703 (k,w0(igout,k),sig(igout,k), k=icb(igout),inb(igout)) 682 704 705 !CR: new erosion of adiabatic ascent: modification of m 706 !computation of the sum of ascending fluxes 707 IF (iflag_mix_adiab.eq.1) THEN 708 709 !Verification sum(me)=sum(m) 710 DO k = 1,nl+1 711 DO il = 1, ncum 712 md(il,k)=0. 713 med(il,k)=0. 714 ENDDO 715 ENDDO 716 717 DO k = nl,1,-1 718 DO il = 1, ncum 719 md(il,k)=md(il,k+1)+m(il,k+1) 720 ENDDO 721 ENDDO 722 723 DO k = nl,1,-1 724 DO il = 1, ncum 725 IF ((k>=(icb(il))) .AND. (k<=inb(il))) THEN 726 mad(il,k)=mad(il,k+1)+m(il,k+1) 727 ENDIF 728 ! print*,"mad",il,k,mad(il,k) 729 ENDDO 730 ENDDO 731 732 !CR: erosion of each adiabatic ascent during its ascent 733 734 !Computation of erosion coefficient beta_coef 735 DO k = 1, nl 736 DO il = 1, ncum 737 IF ((k>=(icb(il)+1)) .AND. (k<=inb(il)) .AND. (mlim(il,k).gt.0.)) THEN 738 ! print*,"beta_coef",il,k,icb(il),inb(il),buoy(il,k),tv(il,k),wlim(il,k),wlim(il,k+1) 739 beta_coef(il,k)=RG*coef_peel*buoy(il,k)/tv(il,k)/((wlim(il,k)+wlim(il,k+1))/2.)**2 740 ELSE 741 beta_coef(il,k)=0. 742 ENDIF 743 ENDDO 744 ENDDO 745 746 ! print*,"apres beta_coef" 747 748 DO k = 1, nl 749 DO il = 1, ncum 750 751 IF ((k>=(icb(il)+1)) .AND. (k<=inb(il))) THEN 752 753 ! print*,"dz",il,k,tv(il, k-1) 754 dz = (ph(il,k-1)-ph(il,k))/(p(il, k-1)/(rrd*tv(il, k-1))*RG) 755 betalim(il,k)=betalim(il,k-1)*exp(-1.*beta_coef(il,k-1)*dz) 756 ! betalim(il,k)=betalim(il,k-1)*exp(-RG*coef_peel*buoy(il,k-1)/tv(il,k-1)/5.**2*dz) 757 ! print*,"me",il,k,mlim(il,k),buoy(il,k),wlim(il,k),mad(il,k) 758 dz = (ph(il,k)-ph(il,k+1))/(p(il, k)/(rrd*tv(il, k))*RG) 759 ! me(il,k)=betalim(il,k)*(m(il,k)+RG*coef_peel*buoy(il,k)/tv(il,k)/((wlim(il,k)+wlim(il,k+1))/2.)**2*dz*mad(il,k)) 760 me(il,k)=betalim(il,k)*(m(il,k)+beta_coef(il,k)*dz*mad(il,k)) 761 ! print*,"B/w2",il,k,RG*coef_peel*buoy(il,k)/tv(il,k)/((wlim(il,k)+wlim(il,k+1))/2.)**2*dz 762 763 END IF 764 765 !Modification of m 766 m(il,k)=me(il,k) 767 END DO 768 END DO 769 770 ! DO il = 1, ncum 771 ! dz = (ph(il,icb(il))-ph(il,icb(il)+1))/(p(il, icb(il))/(rrd*tv(il, icb(il)))*RG) 772 ! m(il,icb(il))=m(il,icb(il))+RG*coef_peel*buoy(il,icb(il))/tv(il,icb(il)) & 773 ! /((wlim(il,icb(il))+wlim(il,icb(il)+1))/2.)**2*dz*mad(il,icb(il)) 774 ! print*,"wlim(icb)",icb(il),wlim(il,icb(il)),m(il,icb(il)) 775 ! ENDDO 776 777 !Verification sum(me)=sum(m) 778 DO k = nl,1,-1 779 DO il = 1, ncum 780 med(il,k)=med(il,k+1)+m(il,k+1) 781 ! print*,"somme(me),somme(m)",il,k,icb(il),med(il,k),md(il,k),me(il,k),m(il,k),wlim(il,k) 782 ENDDO 783 ENDDO 784 785 786 ENDIF !(iflag_mix_adiab) 787 !RC 788 683 789 ! c 3. Compute final cloud base mass flux; 684 790 ! c set iflag to 3 if cloud base mass flux is exceedingly small and is
Note: See TracChangeset
for help on using the changeset viewer.