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

Annotation of /trunk/phylmd/concvl.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 99 - (hide annotations)
Wed Jul 2 18:39:15 2014 UTC (9 years, 10 months ago) by guez
File size: 3859 byte(s)
Created procedure test_disvert (following LMDZ). Added procedures
hybrid and funcd in module disvert_m. Upgraded compute_ab from
internal procedure of disvert to module procedure. Added variables y,
ya in module disvert_m. Upgraded s from local variable of procedure
disvert to module variable.

Renamed allowed value of variable vert_sampling in procedure disvert
from "read" to "read_hybrid". Added possibility to read pressure
values, value "read_pressure". Replaced vertical distribution for
value "param" by the distribution "strato_correct" from LMDZ (but kept
the value "param"). In case "tropo", replaced 1 by dsigmin (following
LMDZ). In case "strato", replaced 0.3 by dsigmin (following LMDZ).

Changed computation of bp in procedure compute_ab.

Removed debugindex case in clmain. Removed useless argument rlon of
procedure clmain. Removed useless variables ytaux, ytauy of procedure
clmain.

Removed intermediary variables tsol, qsol, tsolsrf, tslab in procedure
etat0.

Removed variable ok_veget:. coupling with the model Orchid is not
possible. Removed variable ocean: modeling an ocean slab is not
possible.

Removed useless variables tmp_rriv and tmp_rcoa from module
interface_surf.

Moved initialization of variables da, mp, phi in procedure physiq to
to inside the test iflag_con >= 3.

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

  ViewVC Help
Powered by ViewVC 1.1.21