1 | ! |
---|
2 | ! $Header$ |
---|
3 | ! |
---|
4 | SUBROUTINE TLIFT(P,T,RR,RS,GZ,PLCL,ICB,NK, |
---|
5 | . TVP,TPK,CLW,ND,NL, |
---|
6 | . DTVPDT1,DTVPDQ1) |
---|
7 | C |
---|
8 | C Argument NK ajoute (jyg) = Niveau de depart de la |
---|
9 | C convection |
---|
10 | C |
---|
11 | PARAMETER (NA=60) |
---|
12 | REAL GZ(ND),TPK(ND),CLW(ND) |
---|
13 | REAL T(ND),RR(ND),RS(ND),TVP(ND),P(ND) |
---|
14 | REAL DTVPDT1(ND),DTVPDQ1(ND) ! Derivatives of parcel virtual |
---|
15 | C temperature wrt T1 and Q1 |
---|
16 | C |
---|
17 | REAL CLW_NEW(NA),QI(NA) |
---|
18 | REAL DTPDT1(NA),DTPDQ1(NA) ! Derivatives of parcel temperature |
---|
19 | C wrt T1 and Q1 |
---|
20 | |
---|
21 | C |
---|
22 | LOGICAL ICE_CONV |
---|
23 | C |
---|
24 | C *** ASSIGN VALUES OF THERMODYNAMIC CONSTANTS *** |
---|
25 | C |
---|
26 | c sb CPD=1005.7 |
---|
27 | c sb CPV=1870.0 |
---|
28 | c sb CL=4190.0 |
---|
29 | c sb CPVMCL=2320.0 |
---|
30 | c sb RV=461.5 |
---|
31 | c sb RD=287.04 |
---|
32 | c sb EPS=RD/RV |
---|
33 | c sb ALV0=2.501E6 |
---|
34 | ccccccccccccccccccccccc |
---|
35 | c constantes coherentes avec le modele du Centre Europeen |
---|
36 | c sb RD = 1000.0 * 1.380658E-23 * 6.0221367E+23 / 28.9644 |
---|
37 | c sb RV = 1000.0 * 1.380658E-23 * 6.0221367E+23 / 18.0153 |
---|
38 | c sb CPD = 3.5 * RD |
---|
39 | c sb CPV = 4.0 * RV |
---|
40 | c sb CL = 4218.0 |
---|
41 | c sb CI=2090.0 |
---|
42 | c sb CPVMCL=CL-CPV |
---|
43 | c sb CLMCI=CL-CI |
---|
44 | c sb EPS=RD/RV |
---|
45 | c sb ALV0=2.5008E+06 |
---|
46 | c sb ALF0=3.34E+05 |
---|
47 | |
---|
48 | cccccccccccc |
---|
49 | c on utilise les constantes thermo du Centre Europeen: (SB) |
---|
50 | c |
---|
51 | #include "YOMCST.h" |
---|
52 | GRAVITY = RG !sb: Pr que gravite ne devienne pas humidite! |
---|
53 | c |
---|
54 | CPD = RCPD |
---|
55 | CPV = RCPV |
---|
56 | CL = RCW |
---|
57 | CI = RCS |
---|
58 | CPVMCL = CL-CPV |
---|
59 | CLMCI = CL-CI |
---|
60 | EPS = RD/RV |
---|
61 | ALV0 = RLVTT |
---|
62 | ALF0 = RLMLT ! (ALF0 = RLSTT-RLVTT) |
---|
63 | c |
---|
64 | cccccccccccccccccccccc |
---|
65 | C |
---|
66 | C *** CALCULATE CERTAIN PARCEL QUANTITIES, INCLUDING STATIC ENERGY *** |
---|
67 | C |
---|
68 | ICB1=MAX(ICB,2) |
---|
69 | ICB1=MIN(ICB,NL) |
---|
70 | C |
---|
71 | Cjyg1 |
---|
72 | CC CPP=CPD*(1.-RR(1))+RR(1)*CPV |
---|
73 | CPP=CPD*(1.-RR(NK))+RR(NK)*CPV |
---|
74 | Cjyg2 |
---|
75 | CPINV=1./CPP |
---|
76 | Cjyg1 |
---|
77 | C ICB may be below condensation level |
---|
78 | CCC DO 100 I=1,ICB1-1 |
---|
79 | CCC TPK(I)=T(1)-GZ(I)*CPINV |
---|
80 | CCC TVP(I)=TPK(I)*(1.+RR(1)/EPS) |
---|
81 | DO 50 I=1,ICB1 |
---|
82 | CLW(I)=0.0 |
---|
83 | 50 CONTINUE |
---|
84 | C |
---|
85 | DO 100 I=NK,ICB1 |
---|
86 | TPK(I)=T(NK)-(GZ(I) - GZ(NK))*CPINV |
---|
87 | Cjyg1 |
---|
88 | CCC TVP(I)=TPK(I)*(1.+RR(NK)/EPS) |
---|
89 | TVP(I)=TPK(I)*(1.+RR(NK)/EPS-RR(NK)) |
---|
90 | Cjyg2 |
---|
91 | DTVPDT1(I) = 1.+RR(NK)/EPS-RR(NK) |
---|
92 | DTVPDQ1(I) = TPK(I)*(1./EPS-1.) |
---|
93 | C |
---|
94 | Cjyg2 |
---|
95 | |
---|
96 | 100 CONTINUE |
---|
97 | |
---|
98 | C |
---|
99 | C *** FIND LIFTED PARCEL TEMPERATURE AND MIXING RATIO *** |
---|
100 | C |
---|
101 | Cjyg1 |
---|
102 | CC AH0=(CPD*(1.-RR(1))+CL*RR(1))*T(1) |
---|
103 | CC $ +RR(1)*(ALV0-CPVMCL*(T(1)-273.15)) |
---|
104 | AH0=(CPD*(1.-RR(NK))+CL*RR(NK))*T(NK) |
---|
105 | $ +RR(NK)*(ALV0-CPVMCL*(T(NK)-273.15)) + GZ(NK) |
---|
106 | Cjyg2 |
---|
107 | C |
---|
108 | Cjyg1 |
---|
109 | IMIN = ICB1 |
---|
110 | C If ICB is below LCL, start loop at ICB+1 |
---|
111 | IF (PLCL .LT. P(ICB1)) IMIN = MIN(IMIN+1,NL) |
---|
112 | C |
---|
113 | CCC DO 300 I=ICB1,NL |
---|
114 | DO 300 I=IMIN,NL |
---|
115 | Cjyg2 |
---|
116 | ALV=ALV0-CPVMCL*(T(I)-273.15) |
---|
117 | ALF=ALF0+CLMCI*(T(I)-273.15) |
---|
118 | |
---|
119 | RG=RS(I) |
---|
120 | TG=T(I) |
---|
121 | C S=CPD+ALV*ALV*RG/(RV*T(I)*T(I)) |
---|
122 | Cjyg1 |
---|
123 | CC S=CPD*(1.-RR(1))+CL*RR(1)+ALV*ALV*RG/(RV*T(I)*T(I)) |
---|
124 | S=CPD*(1.-RR(NK))+CL*RR(NK)+ALV*ALV*RG/(RV*T(I)*T(I)) |
---|
125 | Cjyg2 |
---|
126 | S=1./S |
---|
127 | |
---|
128 | DO 200 J=1,2 |
---|
129 | Cjyg1 |
---|
130 | CC AHG=CPD*TG+(CL-CPD)*RR(1)*TG+ALV*RG+GZ(I) |
---|
131 | AHG=CPD*TG+(CL-CPD)*RR(NK)*TG+ALV*RG+GZ(I) |
---|
132 | Cjyg2 |
---|
133 | TG=TG+S*(AH0-AHG) |
---|
134 | TC=TG-273.15 |
---|
135 | DENOM=243.5+TC |
---|
136 | DENOM=MAX(DENOM,1.0) |
---|
137 | C |
---|
138 | C FORMULE DE BOLTON POUR PSAT |
---|
139 | C |
---|
140 | ES=6.112*EXP(17.67*TC/DENOM) |
---|
141 | RG=EPS*ES/(P(I)-ES*(1.-EPS)) |
---|
142 | |
---|
143 | |
---|
144 | 200 CONTINUE |
---|
145 | |
---|
146 | Cjyg1 |
---|
147 | CC TPK(I)=(AH0-GZ(I)-ALV*RG)/(CPD+(CL-CPD)*RR(1)) |
---|
148 | TPK(I)=(AH0-GZ(I)-ALV*RG)/(CPD+(CL-CPD)*RR(NK)) |
---|
149 | Cjyg2 |
---|
150 | C TPK(I)=(AH0-GZ(I)-ALV*RG-(CL-CPD)*T(I)*RR(1))/CPD |
---|
151 | |
---|
152 | Cjyg1 |
---|
153 | CC CLW(I)=RR(1)-RG |
---|
154 | CLW(I)=RR(NK)-RG |
---|
155 | Cjyg2 |
---|
156 | CLW(I)=MAX(0.0,CLW(I)) |
---|
157 | Cjyg1 |
---|
158 | CCC TVP(I)=TPK(I)*(1.+RG/EPS) |
---|
159 | TVP(I)=TPK(I)*(1.+RG/EPS-RR(NK)) |
---|
160 | Cjyg2 |
---|
161 | C |
---|
162 | Cjyg1 Derivatives |
---|
163 | C |
---|
164 | DTPDT1(I) = CPD*S |
---|
165 | DTPDQ1(I) = ALV*S |
---|
166 | C |
---|
167 | DTVPDT1(I) = DTPDT1(I)*(1. + RG/EPS - |
---|
168 | . RR(NK) + ALV*RG/(RD*TPK(I)) ) |
---|
169 | DTVPDQ1(I) = DTPDQ1(I)*(1. + RG/EPS - |
---|
170 | . RR(NK) + ALV*RG/(RD*TPK(I)) ) - TPK(I) |
---|
171 | C |
---|
172 | Cjyg2 |
---|
173 | |
---|
174 | 300 CONTINUE |
---|
175 | C |
---|
176 | ICE_CONV = .FALSE. |
---|
177 | |
---|
178 | IF (ICE_CONV) THEN |
---|
179 | C |
---|
180 | CJAM |
---|
181 | C RAJOUT DE LA PROCEDURE ICEFRAC |
---|
182 | C |
---|
183 | c sb CALL ICEFRAC(T,CLW,CLW_NEW,QI,ND,NL) |
---|
184 | |
---|
185 | DO 400 I=ICB1,NL |
---|
186 | IF (T(I).LT.263.15) THEN |
---|
187 | TG=TPK(I) |
---|
188 | TC=TPK(I)-273.15 |
---|
189 | DENOM=243.5+TC |
---|
190 | ES=6.112*EXP(17.67*TC/DENOM) |
---|
191 | ALV=ALV0-CPVMCL*(T(I)-273.15) |
---|
192 | ALF=ALF0+CLMCI*(T(I)-273.15) |
---|
193 | |
---|
194 | DO J=1,4 |
---|
195 | ESI=EXP(23.33086-(6111.72784/TPK(I))+0.15215*LOG(TPK(I))) |
---|
196 | QSAT_NEW=EPS*ESI/(P(I)-ESI*(1.-EPS)) |
---|
197 | CCC SNEW= CPD*(1.-RR(1))+CL*RR(1)+ALV*ALV*QSAT_NEW/(RV*TPK(I)*TPK(I)) |
---|
198 | SNEW= CPD*(1.-RR(NK))+CL*RR(NK) |
---|
199 | . +ALV*ALV*QSAT_NEW/(RV*TPK(I)*TPK(I)) |
---|
200 | C |
---|
201 | SNEW=1./SNEW |
---|
202 | TPK(I)=TG+(ALF*QI(I)+ALV*RG*(1.-(ESI/ES)))*SNEW |
---|
203 | c@$$ PRINT*,'################################' |
---|
204 | c@$$ PRINT*,TPK(I) |
---|
205 | c@$$ PRINT*,(ALF*QI(I)+ALV*RG*(1.-(ESI/ES)))*SNEW |
---|
206 | ENDDO |
---|
207 | CCC CLW(I)=RR(1)-QSAT_NEW |
---|
208 | CLW(I)=RR(NK)-QSAT_NEW |
---|
209 | CLW(I)=MAX(0.0,CLW(I)) |
---|
210 | Cjyg1 |
---|
211 | CCC TVP(I)=TPK(I)*(1.+QSAT_NEW/EPS) |
---|
212 | TVP(I)=TPK(I)*(1.+QSAT_NEW/EPS-RR(NK)) |
---|
213 | Cjyg2 |
---|
214 | ELSE |
---|
215 | CONTINUE |
---|
216 | ENDIF |
---|
217 | |
---|
218 | 400 CONTINUE |
---|
219 | C |
---|
220 | ENDIF |
---|
221 | C |
---|
222 | |
---|
223 | ****************************************************** |
---|
224 | ** BK : RAJOUT DE LA TEMPERATURE DES ASCENDANCES |
---|
225 | ** NON DILUES AU NIVEAU KLEV = ND |
---|
226 | ** POSONS LE ENVIRON EGAL A CELUI DE KLEV-1 |
---|
227 | ******************************************************** |
---|
228 | |
---|
229 | TPK(NL+1)=TPK(NL) |
---|
230 | |
---|
231 | ******************************************************* |
---|
232 | |
---|
233 | RG = GRAVITY ! RG redevient la gravite de YOMCST (sb) |
---|
234 | |
---|
235 | |
---|
236 | RETURN |
---|
237 | END |
---|
238 | |
---|
239 | |
---|
240 | |
---|
241 | |
---|
242 | |
---|
243 | |
---|
244 | |
---|
245 | |
---|