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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 221 - (show annotations)
Thu Apr 20 14:44:47 2017 UTC (7 years ago) by guez
File size: 2274 byte(s)
clcdrag is no longer used in LMDZ. Replaced by cdrag in LMDZ. In cdrag
in LMDZ, zxli is a symbolic constant, false. So removed case zxli true
in LMDZE.

read_sst is called zero (if no ocean point on the whole planet) time or
once per call of physiq. If mod(itap - 1, lmt_pas) == 0 then we have
advanced in time of lmt_pas and deja_lu is necessarily false.

qsat[sl] and dqsat[sl] were never called.

Added output of qsurf in histins, following LMDZ.

Last dummy argument dtime of phystokenc is always the same as first
dummy argument pdtphys, removed dtime.

Removed make rules for nag_xref95, since it does not exist any longer.

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
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