/[lmdze]/trunk/phylmd/CV30_routines/cv30_yield.f
ViewVC logotype

Contents of /trunk/phylmd/CV30_routines/cv30_yield.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 311 - (show annotations)
Mon Dec 3 17:52:21 2018 UTC (5 years, 5 months ago) by guez
File size: 19265 byte(s)
Move file cv_thermo.f to directory CV30_routines since it is only used
there. Rename module cv_thermo_m to cv_thermo.

Named constants instead of variables in module suphec_m.

Rename dummy argument spechum of procedure interfsurf_hq to q1lay
(same as corresponding dummy argument in calcul_fluxs).

1 module cv30_yield_m
2
3 implicit none
4
5 contains
6
7 SUBROUTINE cv30_yield(icb, inb, delt, t, rr, u, v, gz, p, ph, h, hp, lv, &
8 cpn, th, ep, clw, m, tp, mp, qp, up, vp, wt, water, evap, b, ment, &
9 qent, uent, vent, nent, elij, sig, tv, tvp, iflag, precip, VPrecip, &
10 ft, fr, fu, fv, upwd, dnwd, ma, mike, tls, tps, qcondc)
11
12 ! Tendencies, precipitation, variables of interface with other
13 ! processes, etc.
14
15 use conf_phys_m, only: iflag_clw
16 use cv30_param_m, only: minorig, nl, sigd
17 use cv_thermo, only: rowl
18 USE dimphy, ONLY: klev, klon
19 use SUPHEC_M, only: rg, rcpd, rcw, rcpv, rd, rv
20
21 ! inputs:
22
23 integer, intent(in):: icb(:)
24
25 integer, intent(in):: inb(:) ! (ncum)
26 ! first model level above the level of neutral buoyancy of the
27 ! parcel (1 <= inb <= nl - 1)
28
29 real, intent(in):: delt
30 real, intent(in):: t(klon, klev), rr(klon, klev)
31 real, intent(in):: u(klon, klev), v(klon, klev)
32 real gz(klon, klev)
33 real p(klon, klev)
34 real ph(klon, klev + 1), h(klon, klev), hp(klon, klev)
35 real, intent(in):: lv(:, :) ! (klon, klev)
36
37 real, intent(in):: cpn(:, :) ! (ncum, nl)
38 ! specific heat capacity at constant pressure of humid air, in J K-1 kg-1
39
40 real, intent(in):: th(:, :) ! (ncum, nl)
41 real ep(klon, klev), clw(klon, klev)
42 real m(klon, klev)
43 real tp(klon, klev)
44
45 real, intent(in):: mp(:, :) ! (ncum, nl) Mass flux of the
46 ! unsaturated downdraft, defined positive downward, in kg m-2
47 ! s-1. M_p in Emanuel (1991 928).
48
49 real, intent(in):: qp(:, :), up(:, :) ! (klon, klev)
50 real, intent(in):: vp(:, 2:) ! (ncum, 2:nl)
51 real, intent(in):: wt(:, :) ! (ncum, nl - 1)
52 real, intent(in):: water(:, :), evap(:, :) ! (ncum, nl)
53 real, intent(in):: b(:, :) ! (ncum, nl - 1)
54 real ment(klon, klev, klev), qent(klon, klev, klev), uent(klon, klev, klev)
55 real vent(klon, klev, klev)
56 integer nent(klon, klev)
57 real elij(klon, klev, klev)
58 real sig(klon, klev)
59 real tv(klon, klev), tvp(klon, klev)
60
61 ! outputs:
62 integer, intent(out):: iflag(:) ! (ncum)
63 real precip(klon)
64 real VPrecip(klon, klev + 1)
65 real ft(klon, klev), fr(klon, klev), fu(klon, klev), fv(klon, klev)
66 real upwd(klon, klev), dnwd(klon, klev)
67 real ma(klon, klev)
68 real mike(klon, klev)
69 real tls(klon, klev), tps(klon, klev)
70 real qcondc(klon, klev)
71
72 ! Local:
73 real, parameter:: delta = 0.01 ! interface cloud parameterization
74 integer ncum
75 integer i, k, il, n, j
76 real awat, delti
77 real ax, bx, cx, dx
78 real cpinv, rdcp, dpinv
79 real lvcp(klon, klev)
80 real am(klon), work(klon), ad(klon), amp1(klon)
81 real up1(klon, klev, klev), dn1(klon, klev, klev)
82 real asum(klon), bsum(klon), csum(klon), dsum(klon)
83 real qcond(klon, klev), nqcond(klon, klev), wa(klon, klev)
84 real siga(klon, klev), sax(klon, klev), mac(klon, klev)
85
86 !-------------------------------------------------------------
87
88 ncum = size(icb)
89 iflag = 0
90
91 ! initialization:
92
93 delti = 1.0 / delt
94
95 do il = 1, ncum
96 precip(il) = 0.0
97 VPrecip(il, klev + 1) = 0.
98 enddo
99
100 do i = 1, klev
101 do il = 1, ncum
102 VPrecip(il, i) = 0.0
103 ft(il, i) = 0.0
104 fr(il, i) = 0.0
105 fu(il, i) = 0.0
106 fv(il, i) = 0.0
107 qcondc(il, i) = 0.0
108 qcond(il, i) = 0.0
109 nqcond(il, i) = 0.0
110 enddo
111 enddo
112
113 do i = 1, nl
114 do il = 1, ncum
115 lvcp(il, i) = lv(il, i) / cpn(il, i)
116 enddo
117 enddo
118
119 ! calculate surface precipitation in mm / day
120
121 do il = 1, ncum
122 if (ep(il, inb(il)) >= 1e-4) precip(il) = wt(il, 1) * sigd &
123 * water(il, 1) * 86400. * 1000. / (rowl * rg)
124 enddo
125
126 ! CALCULATE VERTICAL PROFILE OF PRECIPITATIONs IN kg / m2 / s ===
127
128 ! MAF rajout pour lessivage
129 do k = 1, nl - 1
130 do il = 1, ncum
131 if (k <= inb(il)) VPrecip(il, k) = wt(il, k) * sigd * water(il, k) &
132 / rg
133 end do
134 end do
135
136 ! calculate tendencies of lowest level potential temperature
137 ! and mixing ratio
138
139 do il = 1, ncum
140 work(il) = 1.0 / (ph(il, 1) - ph(il, 2))
141 am(il) = 0.0
142 enddo
143
144 do k = 2, nl
145 do il = 1, ncum
146 if (k <= inb(il)) am(il) = am(il) + m(il, k)
147 enddo
148 enddo
149
150 do il = 1, ncum
151 if (0.01 * rg * work(il) * am(il) >= delti) iflag(il) = 1
152
153 ft(il, 1) = 0.01 * rg * work(il) * am(il) * (t(il, 2) - t(il, 1) &
154 + (gz(il, 2) - gz(il, 1)) / cpn(il, 1)) - 0.5 * lvcp(il, 1) &
155 * sigd * (evap(il, 1) + evap(il, 2)) - 0.009 * rg * sigd &
156 * mp(il, 2) * t(il, 1) * b(il, 1) * work(il) + 0.01 * sigd &
157 * wt(il, 1) * (rcw - rcpd) * water(il, 2) * (t(il, 2) - t(il, 1)) &
158 * work(il) / cpn(il, 1)
159
160 ! jyg Correction pour mieux conserver l'eau (conformite avec CONVECT4.3)
161 ! (sb: pour l'instant, on ne fait que le chgt concernant rg, pas evap)
162 fr(il, 1) = 0.01 * rg * mp(il, 2) * (qp(il, 2) - rr(il, 1)) &
163 * work(il) + sigd * 0.5 * (evap(il, 1) + evap(il, 2))
164 ! + tard : + sigd * evap(il, 1)
165
166 fr(il, 1) = fr(il, 1) + 0.01 * rg * am(il) * (rr(il, 2) - rr(il, 1)) &
167 * work(il)
168
169 fu(il, 1) = fu(il, 1) + 0.01 * rg * work(il) * (mp(il, 2) &
170 * (up(il, 2) - u(il, 1)) + am(il) * (u(il, 2) - u(il, 1)))
171 fv(il, 1) = fv(il, 1) + 0.01 * rg * work(il) * (mp(il, 2) &
172 * (vp(il, 2) - v(il, 1)) + am(il) * (v(il, 2) - v(il, 1)))
173 enddo
174
175 do j = 2, nl
176 do il = 1, ncum
177 if (j <= inb(il)) then
178 fr(il, 1) = fr(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
179 * (qent(il, j, 1) - rr(il, 1))
180 fu(il, 1) = fu(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
181 * (uent(il, j, 1) - u(il, 1))
182 fv(il, 1) = fv(il, 1) + 0.01 * rg * work(il) * ment(il, j, 1) &
183 * (vent(il, j, 1) - v(il, 1))
184 endif
185 enddo
186 enddo
187
188 ! calculate tendencies of potential temperature and mixing ratio
189 ! at levels above the lowest level
190
191 ! first find the net saturated updraft and downdraft mass fluxes
192 ! through each level
193
194 loop_i: do i = 2, nl - 1
195 if (any(inb >= i)) then
196 amp1(:ncum) = 0.
197 ad(:ncum) = 0.
198
199 do k = i + 1, nl + 1
200 do il = 1, ncum
201 if (i <= inb(il) .and. k <= (inb(il) + 1)) then
202 amp1(il) = amp1(il) + m(il, k)
203 endif
204 end do
205 end do
206
207 do k = 1, i
208 do j = i + 1, nl + 1
209 do il = 1, ncum
210 if (i <= inb(il) .and. j <= (inb(il) + 1)) then
211 amp1(il) = amp1(il) + ment(il, k, j)
212 endif
213 end do
214 end do
215 end do
216
217 do k = 1, i - 1
218 do j = i, nl + 1 ! newvecto: nl au lieu nl + 1?
219 do il = 1, ncum
220 if (i <= inb(il) .and. j <= inb(il)) then
221 ad(il) = ad(il) + ment(il, j, k)
222 endif
223 end do
224 end do
225 end do
226
227 do il = 1, ncum
228 if (i <= inb(il)) then
229 dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
230 cpinv = 1.0 / cpn(il, i)
231
232 if (0.01 * rg * dpinv * amp1(il) >= delti) iflag(il) = 1
233
234 ft(il, i) = 0.01 * rg * dpinv * (amp1(il) * (t(il, i + 1) &
235 - t(il, i) + (gz(il, i + 1) - gz(il, i)) * cpinv) &
236 - ad(il) * (t(il, i) - t(il, i - 1) + (gz(il, i) &
237 - gz(il, i - 1)) * cpinv)) - 0.5 * sigd * lvcp(il, i) &
238 * (evap(il, i) + evap(il, i + 1)) - 0.009 * rg * sigd &
239 * (mp(il, i + 1) * t(il, i) * b(il, i) - mp(il, i) &
240 * t(il, i - 1) * cpn(il, i - 1) * cpinv * b(il, i - 1)) &
241 * dpinv + 0.01 * rg * dpinv * ment(il, i, i) &
242 * (hp(il, i) - h(il, i) + t(il, i) * (rcpv - rcpd) &
243 * (rr(il, i) - qent(il, i, i))) * cpinv + 0.01 * sigd &
244 * wt(il, i) * (rcw - rcpd) * water(il, i + 1) &
245 * (t(il, i + 1) - t(il, i)) * dpinv * cpinv
246 fr(il, i) = 0.01 * rg * dpinv * (amp1(il) * (rr(il, i + 1) &
247 - rr(il, i)) - ad(il) * (rr(il, i) - rr(il, i - 1)))
248 fu(il, i) = fu(il, i) + 0.01 * rg * dpinv * (amp1(il) &
249 * (u(il, i + 1) - u(il, i)) - ad(il) * (u(il, i) &
250 - u(il, i - 1)))
251 fv(il, i) = fv(il, i) + 0.01 * rg * dpinv * (amp1(il) &
252 * (v(il, i + 1) - v(il, i)) - ad(il) * (v(il, i) &
253 - v(il, i - 1)))
254 endif
255 end do
256
257 do k = 1, i - 1
258 do il = 1, ncum
259 if (i <= inb(il)) then
260 dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
261 cpinv = 1.0 / cpn(il, i)
262
263 awat = elij(il, k, i) - (1. - ep(il, i)) * clw(il, i)
264 awat = amax1(awat, 0.0)
265
266 fr(il, i) = fr(il, i) + 0.01 * rg * dpinv &
267 * ment(il, k, i) * (qent(il, k, i) - awat - rr(il, i))
268 fu(il, i) = fu(il, i) + 0.01 * rg * dpinv &
269 * ment(il, k, i) * (uent(il, k, i) - u(il, i))
270 fv(il, i) = fv(il, i) + 0.01 * rg * dpinv &
271 * ment(il, k, i) * (vent(il, k, i) - v(il, i))
272
273 ! (saturated updrafts resulting from mixing)
274 qcond(il, i) = qcond(il, i) + (elij(il, k, i) - awat)
275 nqcond(il, i) = nqcond(il, i) + 1.
276 endif ! i
277 end do
278 end do
279
280 do k = i, nl + 1
281 do il = 1, ncum
282 if (i <= inb(il) .and. k <= inb(il)) then
283 dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
284 cpinv = 1.0 / cpn(il, i)
285
286 fr(il, i) = fr(il, i) + 0.01 * rg * dpinv &
287 * ment(il, k, i) * (qent(il, k, i) - rr(il, i))
288 fu(il, i) = fu(il, i) + 0.01 * rg * dpinv &
289 * ment(il, k, i) * (uent(il, k, i) - u(il, i))
290 fv(il, i) = fv(il, i) + 0.01 * rg * dpinv &
291 * ment(il, k, i) * (vent(il, k, i) - v(il, i))
292 endif
293 end do
294 end do
295
296 do il = 1, ncum
297 if (i <= inb(il)) then
298 dpinv = 1.0 / (ph(il, i) - ph(il, i + 1))
299 cpinv = 1.0 / cpn(il, i)
300
301 ! sb: on ne fait pas encore la correction permettant de mieux
302 ! conserver l'eau:
303 fr(il, i) = fr(il, i) + 0.5 * sigd * (evap(il, i) &
304 + evap(il, i + 1)) + 0.01 * rg * (mp(il, i + 1) &
305 * (qp(il, i + 1) - rr(il, i)) - mp(il, i) * (qp(il, i) &
306 - rr(il, i - 1))) * dpinv
307
308 fu(il, i) = fu(il, i) + 0.01 * rg * (mp(il, i + 1) &
309 * (up(il, i + 1) - u(il, i)) - mp(il, i) * (up(il, i) &
310 - u(il, i - 1))) * dpinv
311 fv(il, i) = fv(il, i) + 0.01 * rg * (mp(il, i + 1) &
312 * (vp(il, i + 1) - v(il, i)) - mp(il, i) * (vp(il, i) &
313 - v(il, i - 1))) * dpinv
314 endif
315 end do
316
317 ! sb: interface with the cloud parameterization:
318
319 do k = i + 1, nl
320 do il = 1, ncum
321 if (k <= inb(il) .and. i <= inb(il)) then
322 ! (saturated downdrafts resulting from mixing)
323 qcond(il, i) = qcond(il, i) + elij(il, k, i)
324 nqcond(il, i) = nqcond(il, i) + 1.
325 endif
326 enddo
327 enddo
328
329 ! (particular case: no detraining level is found)
330 do il = 1, ncum
331 if (i <= inb(il) .and. nent(il, i) == 0) then
332 qcond(il, i) = qcond(il, i) + (1. - ep(il, i)) * clw(il, i)
333 nqcond(il, i) = nqcond(il, i) + 1.
334 endif
335 enddo
336
337 do il = 1, ncum
338 if (i <= inb(il) .and. nqcond(il, i) /= 0.) then
339 qcond(il, i) = qcond(il, i) / nqcond(il, i)
340 endif
341 enddo
342 end if
343 end do loop_i
344
345 ! move the detrainment at level inb down to level inb - 1
346 ! in such a way as to preserve the vertically
347 ! integrated enthalpy and water tendencies
348
349 do il = 1, ncum
350 ax = 0.1 * ment(il, inb(il), inb(il)) * (hp(il, inb(il)) &
351 - h(il, inb(il)) + t(il, inb(il)) * (rcpv - rcpd) &
352 * (rr(il, inb(il)) - qent(il, inb(il), inb(il)))) &
353 / (cpn(il, inb(il)) * (ph(il, inb(il)) - ph(il, inb(il) + 1)))
354 ft(il, inb(il)) = ft(il, inb(il)) - ax
355 ft(il, inb(il) - 1) = ft(il, inb(il) - 1) + ax * cpn(il, inb(il)) &
356 * (ph(il, inb(il)) - ph(il, inb(il) + 1)) / (cpn(il, inb(il) - 1) &
357 * (ph(il, inb(il) - 1) - ph(il, inb(il))))
358
359 bx = 0.1 * ment(il, inb(il), inb(il)) * (qent(il, inb(il), inb(il)) &
360 - rr(il, inb(il))) / (ph(il, inb(il)) - ph(il, inb(il) + 1))
361 fr(il, inb(il)) = fr(il, inb(il)) - bx
362 fr(il, inb(il) - 1) = fr(il, inb(il) - 1) &
363 + bx * (ph(il, inb(il)) - ph(il, inb(il) + 1)) &
364 / (ph(il, inb(il) - 1) - ph(il, inb(il)))
365
366 cx = 0.1 * ment(il, inb(il), inb(il)) * (uent(il, inb(il), inb(il)) &
367 - u(il, inb(il))) / (ph(il, inb(il)) - ph(il, inb(il) + 1))
368 fu(il, inb(il)) = fu(il, inb(il)) - cx
369 fu(il, inb(il) - 1) = fu(il, inb(il) - 1) &
370 + cx * (ph(il, inb(il)) - ph(il, inb(il) + 1)) &
371 / (ph(il, inb(il) - 1) - ph(il, inb(il)))
372
373 dx = 0.1 * ment(il, inb(il), inb(il)) * (vent(il, inb(il), inb(il)) &
374 - v(il, inb(il))) / (ph(il, inb(il)) - ph(il, inb(il) + 1))
375 fv(il, inb(il)) = fv(il, inb(il)) - dx
376 fv(il, inb(il) - 1) = fv(il, inb(il) - 1) &
377 + dx * (ph(il, inb(il)) - ph(il, inb(il) + 1)) &
378 / (ph(il, inb(il) - 1) - ph(il, inb(il)))
379
380 end do
381
382 ! homoginize tendencies below cloud base
383
384 do il = 1, ncum
385 asum(il) = 0.0
386 bsum(il) = 0.0
387 csum(il) = 0.0
388 dsum(il) = 0.0
389 enddo
390
391 do i = 1, nl
392 do il = 1, ncum
393 if (i <= (icb(il) - 1)) then
394 asum(il) = asum(il) + ft(il, i) * (ph(il, i) - ph(il, i + 1))
395 bsum(il) = bsum(il) + fr(il, i) * (lv(il, i) + (rcw - rcpd) &
396 * (t(il, i) - t(il, 1))) * (ph(il, i) - ph(il, i + 1))
397 csum(il) = csum(il) + (lv(il, i) + (rcw - rcpd) * (t(il, i) &
398 - t(il, 1))) * (ph(il, i) - ph(il, i + 1))
399 dsum(il) = dsum(il) + t(il, i) * (ph(il, i) - ph(il, i + 1)) &
400 / th(il, i)
401 endif
402 enddo
403 enddo
404
405 do i = 1, nl
406 do il = 1, ncum
407 if (i <= (icb(il) - 1)) then
408 ft(il, i) = asum(il) * t(il, i) / (th(il, i) * dsum(il))
409 fr(il, i) = bsum(il) / csum(il)
410 endif
411 enddo
412 enddo
413
414 ! reset counter and return
415
416 do il = 1, ncum
417 sig(il, klev) = 2.0
418 enddo
419
420 do i = 1, klev
421 do il = 1, ncum
422 upwd(il, i) = 0.0
423 dnwd(il, i) = 0.0
424 enddo
425 enddo
426
427 do i = 1, nl
428 do il = 1, ncum
429 if (i >= icb(il) .and. i <= inb(il)) then
430 upwd(il, i) = 0.0
431 dnwd(il, i) = 0.0
432 endif
433 enddo
434 enddo
435
436 do i = 1, nl
437 do k = 1, nl
438 do il = 1, ncum
439 up1(il, k, i) = 0.0
440 dn1(il, k, i) = 0.0
441 enddo
442 enddo
443 enddo
444
445 do i = 1, nl
446 do k = i, nl
447 do n = 1, i - 1
448 do il = 1, ncum
449 if (i >= icb(il).and.i <= inb(il).and.k <= inb(il)) then
450 up1(il, k, i) = up1(il, k, i) + ment(il, n, k)
451 dn1(il, k, i) = dn1(il, k, i) - ment(il, k, n)
452 endif
453 enddo
454 enddo
455 enddo
456 enddo
457
458 do i = 2, nl
459 do k = i, nl
460 do il = 1, ncum
461 if (i <= inb(il).and.k <= inb(il)) then
462 upwd(il, i) = upwd(il, i) + m(il, k) + up1(il, k, i)
463 dnwd(il, i) = dnwd(il, i) + dn1(il, k, i)
464 endif
465 enddo
466 enddo
467 enddo
468
469 ! D\'etermination de la variation de flux ascendant entre
470 ! deux niveaux non dilu\'es mike
471
472 do i = 1, nl
473 do il = 1, ncum
474 mike(il, i) = m(il, i)
475 enddo
476 enddo
477
478 do i = nl + 1, klev
479 do il = 1, ncum
480 mike(il, i) = 0.
481 enddo
482 enddo
483
484 do i = 1, klev
485 do il = 1, ncum
486 ma(il, i) = 0
487 enddo
488 enddo
489
490 do i = 1, nl
491 do j = i, nl
492 do il = 1, ncum
493 ma(il, i) = ma(il, i) + m(il, j)
494 enddo
495 enddo
496 enddo
497
498 do i = nl + 1, klev
499 do il = 1, ncum
500 ma(il, i) = 0.
501 enddo
502 enddo
503
504 do i = 1, nl
505 do il = 1, ncum
506 if (i <= (icb(il) - 1)) then
507 ma(il, i) = 0
508 endif
509 enddo
510 enddo
511
512 ! icb repr\'esente le niveau o\`u se trouve la base du nuage, et
513 ! inb le sommet du nuage
514
515 do i = 1, klev
516 DO il = 1, ncum
517 rdcp = (rd * (1. - rr(il, i)) - rr(il, i) * rv) &
518 / (rcpd * (1. - rr(il, i)) + rr(il, i) * rcpv)
519 tls(il, i) = t(il, i) * (1000.0 / p(il, i))**rdcp
520 tps(il, i) = tp(il, i)
521 end DO
522 enddo
523
524 ! Diagnose the in-cloud mixing ratio of condensed water
525
526 do i = 1, klev
527 do il = 1, ncum
528 mac(il, i) = 0.0
529 wa(il, i) = 0.0
530 siga(il, i) = 0.0
531 sax(il, i) = 0.0
532 enddo
533 enddo
534
535 do i = minorig, nl
536 do k = i + 1, nl + 1
537 do il = 1, ncum
538 if (i <= inb(il) .and. k <= (inb(il) + 1)) then
539 mac(il, i) = mac(il, i) + m(il, k)
540 endif
541 enddo
542 enddo
543 enddo
544
545 do i = 1, nl
546 do j = 1, i
547 do il = 1, ncum
548 if (i >= icb(il) .and. i <= (inb(il) - 1) &
549 .and. j >= icb(il)) then
550 sax(il, i) = sax(il, i) + rd * (tvp(il, j) - tv(il, j)) &
551 * (ph(il, j) - ph(il, j + 1)) / p(il, j)
552 endif
553 enddo
554 enddo
555 enddo
556
557 do i = 1, nl
558 do il = 1, ncum
559 if (i >= icb(il) .and. i <= (inb(il) - 1) &
560 .and. sax(il, i) > 0.0) then
561 wa(il, i) = sqrt(2. * sax(il, i))
562 endif
563 enddo
564 enddo
565
566 do i = 1, nl
567 do il = 1, ncum
568 if (wa(il, i) > 0.0) siga(il, i) = mac(il, i) / wa(il, i) * rd &
569 * tvp(il, i) / p(il, i) / 100. / delta
570 siga(il, i) = min(siga(il, i), 1.0)
571
572 if (iflag_clw == 0) then
573 qcondc(il, i) = siga(il, i) * clw(il, i) * (1. - ep(il, i)) &
574 + (1. - siga(il, i)) * qcond(il, i)
575 else if (iflag_clw == 1) then
576 qcondc(il, i) = qcond(il, i)
577 endif
578 enddo
579 enddo
580
581 end SUBROUTINE cv30_yield
582
583 end module cv30_yield_m

  ViewVC Help
Powered by ViewVC 1.1.21