/[lmdze]/trunk/Sources/phylmd/diagcld2.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/diagcld2.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (show annotations)
Tue Sep 20 09:14:34 2011 UTC (12 years, 7 months ago) by guez
Original Path: trunk/libf/phylmd/diagcld2.f90
File size: 2328 byte(s)
Split "getincom.f90" into "getincom.f90" and "getincom2.f90". Split
"nuage.f" into "nuage.f90", "diagcld1.f90" and "diagcld2.f90". Created
module "chem" from included file "chem.h". Moved "YOEGWD.f90" to
directory "Orography".

In "physiq", for evaporation of water, "zlsdcp" was equal to
"zlvdc". Removed useless variables.

1 SUBROUTINE diagcld2(paprs, pplay, t, q, diafra, dialiq)
2
3 use dimens_m
4 use dimphy
5 use SUPHEC_M
6 use yoethf_m
7 use fcttre
8
9 IMPLICIT none
10
11 ! Arguments d'entree:
12 REAL, intent(in):: paprs(klon, klev+1) ! pression (Pa) a inter-couche
13 REAL, intent(in):: pplay(klon, klev) ! pression (Pa) au milieu de couche
14 REAL t(klon, klev) ! temperature (K)
15 REAL q(klon, klev) ! humidite specifique (Kg/Kg)
16
17 ! Arguments de sortie:
18 REAL diafra(klon, klev) ! fraction nuageuse diagnostiquee
19 REAL dialiq(klon, klev) ! eau liquide nuageuse
20
21 REAL, PARAMETER:: CETAMB = 0.8
22 REAL CLOIA, CLOIB, CLOIC, CLOID
23 PARAMETER (CLOIA=1.0E+02, CLOIB=-10.00, CLOIC=-0.6, CLOID=5.0)
24 REAL RGAMMAS
25 PARAMETER (RGAMMAS=0.05)
26 REAL CRHL
27 PARAMETER (CRHL=0.15)
28 REAL t_coup
29 PARAMETER (t_coup=234.0)
30
31 ! Variables locales:
32 INTEGER i, k, kb, invb(klon)
33 REAL zqs, zrhb, zcll, zdthmin(klon), zdthdp
34 REAL zdelta, zcor
35
36 !-----------------------------------------------------------
37
38 ! Initialisation:
39
40 DO k = 1, klev
41 DO i = 1, klon
42 diafra(i, k) = 0.0
43 dialiq(i, k) = 0.0
44 ENDDO
45 ENDDO
46
47 DO i = 1, klon
48 invb(i) = klev
49 zdthmin(i)=0.0
50 ENDDO
51
52 DO k = 2, klev / 2 - 1
53 DO i = 1, klon
54 zdthdp = (t(i, k) - t(i, k+1)) / (pplay(i, k) - pplay(i, k+1)) &
55 - RD * 0.5 * (t(i, k) + t(i, k+1)) / RCPD / paprs(i, k+1)
56 zdthdp = zdthdp * CLOIA
57 IF (pplay(i, k) > CETAMB * paprs(i, 1) .AND. zdthdp < zdthmin(i)) THEN
58 zdthmin(i) = zdthdp
59 invb(i) = k
60 ENDIF
61 ENDDO
62 ENDDO
63
64 DO i = 1, klon
65 kb=invb(i)
66 IF (thermcep) THEN
67 zdelta=MAX(0., SIGN(1., RTT-t(i, kb)))
68 zqs= R2ES*FOEEW(t(i, kb), zdelta)/pplay(i, kb)
69 zqs=MIN(0.5, zqs)
70 zcor=1./(1.-RETV*zqs)
71 zqs=zqs*zcor
72 ELSE
73 IF (t(i, kb) < t_coup) THEN
74 zqs = qsats(t(i, kb)) / pplay(i, kb)
75 ELSE
76 zqs = qsatl(t(i, kb)) / pplay(i, kb)
77 ENDIF
78 ENDIF
79 zcll = CLOIB * zdthmin(i) + CLOIC
80 zcll = MIN(1.0, MAX(0.0, zcll))
81 zrhb= q(i, kb)/zqs
82 IF (zcll > 0.0.AND.zrhb < CRHL) &
83 zcll=zcll*(1.-(CRHL-zrhb)*CLOID)
84 zcll=MIN(1.0, MAX(0.0, zcll))
85 diafra(i, kb) = MAX(diafra(i, kb), zcll)
86 dialiq(i, kb)= diafra(i, kb) * RGAMMAS*zqs
87 ENDDO
88
89 END SUBROUTINE diagcld2

  ViewVC Help
Powered by ViewVC 1.1.21