Changeset 1127 for LMDZ4/branches/LMDZ4-dev/libf/phylmd/cv3_routines.F
- Timestamp:
- Mar 19, 2009, 11:38:04 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4-dev/libf/phylmd/cv3_routines.F
r1044 r1127 1 1 ! 2 ! $Header $2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/cv3_routines.F,v 1.16 2008-11-06 16:29:35 lmdzadmin Exp $ 3 3 ! 4 4 c … … 120 120 121 121 c ori do 110 k=1,nlp 122 do 110 k=1,nl ! convect3 122 ! abderr do 110 k=1,nl ! convect3 123 do 110 k=1,nlp 124 123 125 do 100 i=1,len 124 126 cdebug lv(i,k)= lv0-clmcpv*(t(i,k)-t0) … … 2256 2258 SUBROUTINE cv3_yield(nloc,ncum,nd,na,ntra 2257 2259 : ,icb,inb,delt 2258 : ,t,rr,t_wake,rr_wake, u,v,tra2260 : ,t,rr,t_wake,rr_wake,s_wake,u,v,tra 2259 2261 : ,gz,p,ph,h,hp,lv,cpn,th,th_wake 2260 2262 : ,ep,clw,m,tp,mp,rp,up,vp,trap … … 2283 2285 real t(nloc,nd), rr(nloc,nd), u(nloc,nd), v(nloc,nd) 2284 2286 real t_wake(nloc,nd), rr_wake(nloc,nd) 2287 real s_wake(nloc) 2285 2288 real tra(nloc,nd,ntra), sig(nloc,nd) 2286 2289 real gz(nloc,na), ph(nloc,nd+1), h(nloc,na), hp(nloc,na) … … 2327 2330 real esum(nloc), fsum(nloc), gsum(nloc), hsum(nloc) 2328 2331 real th_wake(nloc,nd) 2332 real alpha_qpos(nloc) 2329 2333 real qcond(nloc,nd), nqcond(nloc,nd), wa(nloc,nd) ! cld 2330 2334 real siga(nloc,nd), sax(nloc,nd), mac(nloc,nd) ! cld … … 2961 2965 c *** integrated enthalpy and water tendencies *** 2962 2966 c 2967 c Correction bug le 18-03-09 2963 2968 do 503 il=1,ncum 2964 2969 IF (iflag(il) .le. 1) THEN 2965 ax=0.1*ment(il,inb(il),inb(il))*(hp(il,inb(il))-h(il,inb(il))2966 : +t(il,inb(il))*(cpv-cpd)2970 ax=0.1*ment(il,inb(il),inb(il))*(hp(il,inb(il)) 2971 : -h(il,inb(il))+t(il,inb(il))*(cpv-cpd) 2967 2972 : *(rr(il,inb(il))-qent(il,inb(il),inb(il)))) 2968 2973 : /(cpn(il,inb(il))*(ph(il,inb(il))-ph(il,inb(il)+1))) … … 3065 3070 enddo 3066 3071 enddo 3072 3073 c 3074 c *** Check that moisture stays positive. If not, scale tendencies 3075 c in order to ensure moisture positivity 3076 DO il = 1,ncum 3077 IF (iflag(il) .le. 1) THEN 3078 alpha_qpos(il) = max(1. , -delt*fr(il,1)/ 3079 : (s_wake(il)*rr_wake(il,1)+(1.-s_wake(il))*rr(il,1))) 3080 ENDIF 3081 ENDDO 3082 DO i = 2,nl 3083 DO il = 1,ncum 3084 IF (iflag(il) .le. 1) THEN 3085 alpha_qpos(il) = max(alpha_qpos(il) , -delt*fr(il,i)/ 3086 : (s_wake(il)*rr_wake(il,i)+(1.-s_wake(il))*rr(il,i))) 3087 ENDIF 3088 ENDDO 3089 ENDDO 3090 DO il = 1,ncum 3091 IF (iflag(il) .le. 1 .and. alpha_qpos(il) .gt. 1.001) THEN 3092 alpha_qpos(il) = alpha_qpos(il)*1.1 3093 ENDIF 3094 ENDDO 3095 DO il = 1,ncum 3096 IF (iflag(il) .le. 1) THEN 3097 sigd(il) = sigd(il)/alpha_qpos(il) 3098 precip(il) = precip(il)/alpha_qpos(il) 3099 ENDIF 3100 ENDDO 3101 DO i = 1,nl 3102 DO il = 1,ncum 3103 IF (iflag(il) .le. 1) THEN 3104 fr(il,i) = fr(il,i)/alpha_qpos(il) 3105 ft(il,i) = ft(il,i)/alpha_qpos(il) 3106 fqd(il,i) = fqd(il,i)/alpha_qpos(il) 3107 ftd(il,i) = ftd(il,i)/alpha_qpos(il) 3108 fu(il,i) = fu(il,i)/alpha_qpos(il) 3109 fv(il,i) = fv(il,i)/alpha_qpos(il) 3110 m(il,i) = m(il,i)/alpha_qpos(il) 3111 mp(il,i) = mp(il,i)/alpha_qpos(il) 3112 Vprecip(il,i) = Vprecip(il,i)/alpha_qpos(il) 3113 ENDIF 3114 ENDDO 3115 ENDDO 3116 DO i = 1,nl 3117 DO j = 1,nl 3118 DO il = 1,ncum 3119 IF (iflag(il) .le. 1) THEN 3120 ment(il,i,j) = ment(il,i,j)/alpha_qpos(il) 3121 ENDIF 3122 ENDDO 3123 ENDDO 3124 ENDDO 3125 DO j = 1,ntra 3126 DO i = 1,nl 3127 DO il = 1,ncum 3128 IF (iflag(il) .le. 1) THEN 3129 ftra(il,i,j) = ftra(il,i,j)/alpha_qpos(il) 3130 ENDIF 3131 ENDDO 3132 ENDDO 3133 ENDDO 3134 3067 3135 c 3068 3136 c *** reset counter and return ***
Note: See TracChangeset
for help on using the changeset viewer.