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

Contents of /trunk/phylmd/concvl.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 103 - (show annotations)
Fri Aug 29 13:00:05 2014 UTC (9 years, 8 months ago) by guez
File size: 3777 byte(s)
Renamed module cvparam to cv_param. Deleted procedure
cv_param. Changed variables of module cv_param into parameters.

In procedures cv_driver, cv_uncompress and cv3_uncompress, removed
some arguments giving dimensions and used module variables klon and
klev instead.

In procedures gradiv2, laplacien_gam and laplacien, changed
declarations of local variables because klevel is not always klev.

Removed code for nudging surface pressure.

Removed arguments pim and pjm of tau2alpha. Added assignment of false
to variable first.

Replaced real argument del of procedures foeew and FOEDE by logical
argument.

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 dimens_m, ONLY: nqmx
20 USE dimphy, ONLY: klev, klon
21 USE fcttre, ONLY: foeew
22 USE suphec_m, ONLY: retv, rtt
23 USE yoethf_m, ONLY: r2es
24
25 REAL, INTENT (IN):: dtime ! pas d'integration (s)
26 REAL, INTENT (IN):: paprs(klon, klev+1)
27 REAL, INTENT (IN):: play(klon, klev)
28 REAL, intent(in):: t(klon, klev)
29 real, intent(in):: q(klon, klev) ! vapeur d'eau (en kg/kg)
30 real, INTENT (IN):: u(klon, klev), v(klon, klev)
31 REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
32 REAL, intent(out):: d_t(klon, klev)
33 REAL, intent(out):: d_q(klon, klev) ! increment de la vapeur d'eau
34 REAL, intent(out):: d_u(klon, klev), d_v(klon, klev)
35 REAL, intent(out):: rain(klon) ! pluie (mm/s)
36 REAL, intent(out):: snow(klon) ! neige (mm/s)
37 INTEGER kbas(klon), ktop(klon)
38
39 REAL, intent(out):: upwd(klon, klev)
40 ! saturated updraft mass flux (kg/m**2/s)
41
42 real, intent(out):: dnwd(klon, klev)
43 ! saturated downdraft mass flux (kg/m**2/s)
44
45 real, intent(out):: dnwd0(klon, klev)
46 ! unsaturated downdraft mass flux (kg/m**2/s)
47
48 REAL ma(klon, klev), cape(klon)
49 ! Cape----output-R-CAPE (J/kg)
50
51 INTEGER iflag(klon)
52 REAL qcondc(klon, klev)
53 REAL wd(klon)
54 REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
55 REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
56
57 ! Local:
58
59 REAL em_ph(klon, klev+1), em_p(klon, klev)
60 REAL zx_t, zx_qs, zcor
61 INTEGER i, k
62 REAL qs(klon, klev)
63 REAL, save:: cbmf(klon)
64 INTEGER:: ifrst = 0
65
66 !-----------------------------------------------------------------
67
68 snow = 0
69
70 IF (ifrst==0) THEN
71 ifrst = 1
72 DO i = 1, klon
73 cbmf(i) = 0.
74 END DO
75 END IF
76
77 DO k = 1, klev + 1
78 DO i = 1, klon
79 em_ph(i, k) = paprs(i, k)/100.0
80 pmflxs(i, k) = 0.
81 END DO
82 END DO
83
84 DO k = 1, klev
85 DO i = 1, klon
86 em_p(i, k) = play(i, k)/100.0
87 END DO
88 END DO
89
90
91 IF (iflag_con==4) THEN
92 DO k = 1, klev
93 DO i = 1, klon
94 zx_t = t(i, k)
95 zx_qs = min(0.5, r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0)
96 zcor = 1./(1.-retv*zx_qs)
97 qs(i, k) = zx_qs*zcor
98 END DO
99 END DO
100 ELSE
101 ! iflag_con=3 (modif de puristes qui fait la diffce pour la
102 ! convergence numerique)
103 DO k = 1, klev
104 DO i = 1, klon
105 zx_t = t(i, k)
106 zx_qs = r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0
107 zx_qs = min(0.5, zx_qs)
108 zcor = 1./(1.-retv*zx_qs)
109 zx_qs = zx_qs*zcor
110 qs(i, k) = zx_qs
111 END DO
112 END DO
113 END IF
114
115 CALL cv_driver(t, q, qs, u, v, em_p, em_ph, iflag, d_t, d_q, &
116 d_u, d_v, rain, pmflxr, cbmf, sig1, w01, kbas, ktop, dtime, ma, &
117 upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp)
118
119 DO i = 1, klon
120 rain(i) = rain(i)/86400.
121 END DO
122
123 DO k = 1, klev
124 DO i = 1, klon
125 d_t(i, k) = dtime*d_t(i, k)
126 d_q(i, k) = dtime*d_q(i, k)
127 d_u(i, k) = dtime*d_u(i, k)
128 d_v(i, k) = dtime*d_v(i, k)
129 END DO
130 END DO
131
132 END SUBROUTINE concvl
133
134 end module concvl_m

  ViewVC Help
Powered by ViewVC 1.1.21