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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 178 - (show annotations)
Fri Mar 11 18:47:26 2016 UTC (8 years, 1 month ago) by guez
File size: 3761 byte(s)
Moved variables date0, deltat, datasz_max, ncvar_ids, point, buff_pos,
buffer, regular from module histcom_var to modules where they are
defined.

Removed procedure ioipslmpp, useless for a sequential program.

Added argument datasz_max to histwrite_real (to avoid circular
dependency with histwrite).

Removed useless variables and computations everywhere.

Changed real litteral constants from default kind to double precision
in lwb, lwu, lwvn, sw1s, swtt, swtt1, swu.

Removed unused arguments: paer of sw, sw1s, sw2s, swclr; pcldsw of
sw1s, sw2s; pdsig, prayl of swr; co2_ppm of clmain, clqh; tsol of
transp_lay; nsrf of screenp; kcrit and kknu of gwstress; pstd of
orosetup.

Added output of relative humidity.

1 module concvl_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE concvl(dtime, paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &
8 d_v, rain, snow, kbas, ktop, upwd, dnwd, dnwd0, ma, cape, iflag, &
9 qcondc, wd, pmflxr, pmflxs, da, phi, mp)
10
11 ! From phylmd/concvl.F, version 1.3 2005/04/15 12:36:17
12 ! Author: Z. X. Li (LMD/CNRS)
13 ! Date: 1993 August 18
14 ! Objet : schéma de convection d'Emanuel (1991), interface
15 ! (driver commun aux versions 3 et 4)
16
17 use clesphys2, only: iflag_con
18 use cv_driver_m, only: cv_driver
19 USE dimphy, ONLY: klev, klon
20 USE fcttre, ONLY: foeew
21 USE suphec_m, ONLY: retv, rtt
22 USE yoethf_m, ONLY: r2es
23
24 REAL, INTENT (IN):: dtime ! pas d'integration (s)
25 REAL, INTENT (IN):: paprs(klon, klev+1)
26 REAL, INTENT (IN):: play(klon, klev)
27 REAL, intent(in):: t(klon, klev)
28 real, intent(in):: q(klon, klev) ! vapeur d'eau (en kg/kg)
29 real, INTENT (IN):: u(klon, klev), v(klon, klev)
30 REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
31 REAL, intent(out):: d_t(klon, klev)
32 REAL, intent(out):: d_q(klon, klev) ! increment de la vapeur d'eau
33 REAL, intent(out):: d_u(klon, klev), d_v(klon, klev)
34 REAL, intent(out):: rain(klon) ! pluie (mm/s)
35 REAL, intent(out):: snow(klon) ! neige (mm/s)
36 INTEGER kbas(klon), ktop(klon)
37
38 REAL, intent(out):: upwd(klon, klev)
39 ! saturated updraft mass flux (kg/m**2/s)
40
41 real, intent(out):: dnwd(klon, klev)
42 ! saturated downdraft mass flux (kg/m**2/s)
43
44 real, intent(out):: dnwd0(klon, klev)
45 ! unsaturated downdraft mass flux (kg/m**2/s)
46
47 REAL ma(klon, klev), cape(klon)
48 ! Cape----output-R-CAPE (J/kg)
49
50 INTEGER iflag(klon)
51 REAL qcondc(klon, klev)
52 REAL wd(klon)
53 REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
54 REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
55
56 ! Local:
57
58 REAL em_ph(klon, klev+1), em_p(klon, klev)
59 REAL zx_t, zx_qs, zcor
60 INTEGER i, k
61 REAL qs(klon, klev)
62 REAL, save:: cbmf(klon)
63 INTEGER:: ifrst = 0
64
65 !-----------------------------------------------------------------
66
67 snow = 0
68
69 IF (ifrst==0) THEN
70 ifrst = 1
71 DO i = 1, klon
72 cbmf(i) = 0.
73 END DO
74 END IF
75
76 DO k = 1, klev + 1
77 DO i = 1, klon
78 em_ph(i, k) = paprs(i, k)/100.0
79 pmflxs(i, k) = 0.
80 END DO
81 END DO
82
83 DO k = 1, klev
84 DO i = 1, klon
85 em_p(i, k) = play(i, k)/100.0
86 END DO
87 END DO
88
89
90 IF (iflag_con==4) THEN
91 DO k = 1, klev
92 DO i = 1, klon
93 zx_t = t(i, k)
94 zx_qs = min(0.5, r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0)
95 zcor = 1./(1.-retv*zx_qs)
96 qs(i, k) = zx_qs*zcor
97 END DO
98 END DO
99 ELSE
100 ! iflag_con=3 (modification de puristes qui fait la
101 ! diff\'erence pour la convergence numerique)
102 DO k = 1, klev
103 DO i = 1, klon
104 zx_t = t(i, k)
105 zx_qs = r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0
106 zx_qs = min(0.5, zx_qs)
107 zcor = 1./(1.-retv*zx_qs)
108 zx_qs = zx_qs*zcor
109 qs(i, k) = zx_qs
110 END DO
111 END DO
112 END IF
113
114 CALL cv_driver(t, q, qs, u, v, em_p, em_ph, iflag, d_t, d_q, d_u, d_v, &
115 rain, pmflxr, cbmf, sig1, w01, kbas, ktop, dtime, ma, upwd, dnwd, &
116 dnwd0, qcondc, wd, cape, da, phi, mp)
117
118 DO i = 1, klon
119 rain(i) = rain(i)/86400.
120 END DO
121
122 DO k = 1, klev
123 DO i = 1, klon
124 d_t(i, k) = dtime*d_t(i, k)
125 d_q(i, k) = dtime*d_q(i, k)
126 d_u(i, k) = dtime*d_u(i, k)
127 d_v(i, k) = dtime*d_v(i, k)
128 END DO
129 END DO
130
131 END SUBROUTINE concvl
132
133 end module concvl_m

  ViewVC Help
Powered by ViewVC 1.1.21