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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 207 - (hide 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 guez 52 module diagcld2_m
2 guez 51
3     IMPLICIT none
4    
5 guez 52 contains
6 guez 51
7 guez 52 SUBROUTINE diagcld2(paprs, pplay, t, q, diafra, dialiq)
8 guez 51
9 guez 52 USE dimphy, ONLY : klev, klon
10     USE suphec_m, ONLY : rcpd, rd, retv, rtt
11     USE yoethf_m, ONLY : r2es
12 guez 207 USE fcttre, ONLY : foeew, qsatl, qsats
13 guez 51
14 guez 52 ! 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 guez 51
20 guez 52 ! Arguments de sortie:
21     REAL diafra(klon, klev) ! fraction nuageuse diagnostiquee
22     REAL dialiq(klon, klev) ! eau liquide nuageuse
23 guez 51
24 guez 52 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 guez 51
32 guez 52 ! Variables locales:
33     INTEGER i, k, kb, invb(klon)
34     REAL zqs, zrhb, zcll, zdthmin(klon), zdthdp
35 guez 103 REAL zcor
36 guez 51
37 guez 52 !-----------------------------------------------------------
38 guez 51
39 guez 52 ! Initialisation:
40 guez 51
41 guez 52 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 guez 51
48 guez 52 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 guez 207 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 guez 52 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