Changeset 1403 for LMDZ4/trunk/libf/phylmd/cv3_routines.F
- Timestamp:
- Jul 1, 2010, 11:02:53 AM (14 years ago)
- Location:
- LMDZ4/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk
- Property svn:mergeinfo changed
-
LMDZ4/trunk/libf/phylmd/cv3_routines.F
r1334 r1403 1 1 ! 2 ! $ Header: /home/cvsroot/LMDZ4/libf/phylmd/cv3_routines.F,v 1.16 2008-11-06 16:29:35 lmdzadmin Exp$2 ! $Id$ 3 3 ! 4 4 c … … 36 36 real delt ! timestep (seconds) 37 37 38 CHARACTER (LEN=20) :: modname='cv3_param' 39 CHARACTER (LEN=80) :: abort_message 40 38 41 c noff: integer limit for convection (nd-noff) 39 42 c minorig: First level of convection … … 71 74 c dtcrit = -5.0 72 75 c tau = 3000. 73 cc tau = 1800. 74 c tau= 2800. 75 tau=8000. 76 tau = 1800. 77 cc tau=8000. 76 78 beta = 1.0 - delt/tau 77 79 alpha1 = 1.5e-3 … … 767 769 768 770 #include "cv3param.h" 771 include 'iniprint.h' 769 772 770 773 c inputs: … … 797 800 integer i,k,nn,j 798 801 802 CHARACTER (LEN=20) :: modname='cv3_compress' 803 CHARACTER (LEN=80) :: abort_message 799 804 800 805 do 110 k=1,nl+1 … … 839 844 840 845 if (nn.ne.ncum) then 841 print*,'strange! nn not equal to ncum: ',nn,ncum 842 stop 846 write(lunout,*)'strange! nn not equal to ncum: ',nn,ncum 847 abort_message = '' 848 CALL abort_gcm (modname,abort_message,1) 843 849 endif 844 850 … … 2087 2093 cc---end jyg--- 2088 2094 c 2089 c--------retour à la formulation originale d' 'Emanuel.2095 c--------retour à la formulation originale d'Emanuel. 2090 2096 b6=bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac 2091 2097 c6=water(il,i+1)+bfac*wdtrain(il) … … 2093 2099 if(c6.gt.0.0)then 2094 2100 revap=0.5*(-b6+sqrt(b6*b6+4.*c6)) 2095 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 2096 2107 else 2108 cjyg---- Correction : si c6 <= 0, water(il,i)=0. 2097 2109 water(il,i) = 0. 2098 2110 endif … … 2338 2350 real esum(nloc), fsum(nloc), gsum(nloc), hsum(nloc) 2339 2351 real th_wake(nloc,nd) 2340 real alpha_qpos(nloc) 2352 real alpha_qpos(nloc),alpha_qpos1(nloc) 2341 2353 real qcond(nloc,nd), nqcond(nloc,nd), wa(nloc,nd) ! cld 2342 2354 real siga(nloc,nd), sax(nloc,nd), mac(nloc,nd) ! cld … … 3043 3055 do il=1,ncum 3044 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 3045 3066 ex=0.1*ment(il,inb(il),inb(il)) 3046 3067 : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j)) … … 3050 3071 : +ex*(ph(il,inb(il))-ph(il,inb(il)+1)) 3051 3072 : /(ph(il,inb(il)-1)-ph(il,inb(il))) 3073 ENDIF !cvflag grav 3052 3074 ENDIF !iflag 3053 3075 enddo … … 3115 3137 c in order to ensure moisture positivity 3116 3138 DO il = 1,ncum 3139 alpha_qpos(il)=1. 3117 3140 IF (iflag(il) .le. 1) THEN 3118 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))/ 3119 3144 : (s_wake(il)*rr_wake(il,1)+(1.-s_wake(il))*rr(il,1))) 3145 end if 3120 3146 ENDIF 3121 3147 ENDDO … … 3123 3149 DO il = 1,ncum 3124 3150 IF (iflag(il) .le. 1) THEN 3125 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))/ 3126 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 3127 3157 ENDIF 3128 3158 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.