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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (hide 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 guez 51 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