Changeset 1322 for LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3_routines.F
- Timestamp:
- Mar 12, 2010, 11:54:11 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3_routines.F
r1299 r1322 74 74 c dtcrit = -5.0 75 75 c tau = 3000. 76 cc tau = 1800. 77 c tau= 2800. 78 tau=8000. 76 tau = 1800. 77 cc tau=8000. 79 78 beta = 1.0 - delt/tau 80 79 alpha1 = 1.5e-3 … … 2094 2093 cc---end jyg--- 2095 2094 c 2096 c--------retour à la formulation originale d' 'Emanuel.2095 c--------retour à la formulation originale d'Emanuel. 2097 2096 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2098 2097 c6=water(il,i+1)+bfac*wdtrain(il) … … 2100 2099 if(c6.gt.0.0)then 2101 2100 revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2102 water(il,i)=revap*revap !equation de conservation 2101 cjyg Dans sa formulation originale, Emanuel calcule l'evaporation par: 2102 cc evap(il,i)=sigt*afac*revap 2103 c ce qui n'est pas correct. Dans cv_routines, la formulation a été modifiee. 2104 c Ici,l'evaporation evap est simplement calculee par l'equation de 2105 c conservation. 2106 water(il,i)=revap*revap 2103 2107 else 2108 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2104 2109 water(il,i) = 0. 2105 2110 endif … … 2345 2350 real esum(nloc), fsum(nloc), gsum(nloc), hsum(nloc) 2346 2351 real th_wake(nloc,nd) 2347 real alpha_qpos(nloc) 2352 real alpha_qpos(nloc),alpha_qpos1(nloc) 2348 2353 real qcond(nloc,nd), nqcond(nloc,nd), wa(nloc,nd) ! cld 2349 2354 real siga(nloc,nd), sax(nloc,nd), mac(nloc,nd) ! cld … … 3050 3055 do il=1,ncum 3051 3056 IF (iflag(il) .le. 1) THEN 3057 IF (cvflag_grav) then 3058 ex=0.01*grav*ment(il,inb(il),inb(il)) 3059 : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j)) 3060 : /(ph(i l,inb(il))-ph(il,inb(il)+1)) 3061 ftra(il,inb(il),j)=ftra(il,inb(il),j)-ex 3062 ftra(il,inb(il)-1,j)=ftra(il,inb(il)-1,j) 3063 : +ex*(ph(il,inb(il))-ph(il,inb(il)+1)) 3064 : /(ph(il,inb(il)-1)-ph(il,inb(il))) 3065 else 3052 3066 ex=0.1*ment(il,inb(il),inb(il)) 3053 3067 : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j)) … … 3057 3071 : +ex*(ph(il,inb(il))-ph(il,inb(il)+1)) 3058 3072 : /(ph(il,inb(il)-1)-ph(il,inb(il))) 3073 ENDIF !cvflag grav 3059 3074 ENDIF !iflag 3060 3075 enddo … … 3122 3137 c in order to ensure moisture positivity 3123 3138 DO il = 1,ncum 3139 alpha_qpos(il)=1. 3124 3140 IF (iflag(il) .le. 1) THEN 3125 alpha_qpos(il) = max(1. , -delt*fr(il,1)/ 3141 if (fr(il,1) .le. 0.) then 3142 alpha_qpos(il) = max(alpha_qpos(il) , 3143 : (-delt*fr(il,1))/ 3126 3144 : (s_wake(il)*rr_wake(il,1)+(1.-s_wake(il))*rr(il,1))) 3145 end if 3127 3146 ENDIF 3128 3147 ENDDO … … 3130 3149 DO il = 1,ncum 3131 3150 IF (iflag(il) .le. 1) THEN 3132 alpha_qpos(il) = max(alpha_qpos(il) , -delt*fr(il,i)/ 3151 IF (fr(il,i) .le. 0.) THEN 3152 alpha_qpos1(il)=max(1. , (-delt*fr(il,i))/ 3133 3153 : (s_wake(il)*rr_wake(il,i)+(1.-s_wake(il))*rr(il,i))) 3154 IF (alpha_qpos1(il) .ge. alpha_qpos(il)) 3155 : alpha_qpos(il)=alpha_qpos1(il) 3156 ENDIF 3134 3157 ENDIF 3135 3158 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.