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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 207 - (show annotations)
Thu Sep 1 10:30:53 2016 UTC (7 years, 7 months ago) by guez
File size: 2288 byte(s)
New philosophy on compiler options.

Removed source code for thermcep = f. (Not used in LMDZ either.)

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

  ViewVC Help
Powered by ViewVC 1.1.21