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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 212 - (show annotations)
Thu Jan 12 12:31:31 2017 UTC (7 years, 2 months ago) by guez
File size: 3362 byte(s)
Moved variables from module com_io_dyn to module inithist_m, where
they are defined.

Split grid_atob.f into grille_m.f and dist_sphe.f. Extracted ASCCI art
to documentation. In grille_m, use automatic arrays instead of maximum
size. In grille_m, instead of printing data for every problematic
point, print a single diagnostic message.

Removed variables top_height, overlap, lev_histhf, lev_histday,
lev_histmth, type_run, ok_isccp, ok_regdyn, lonmin_ins, lonmax_ins,
latmin_ins, latmax_ins of module clesphys, not used.

Removed variable itap of module histwrite_phy_m, not used. There is a
variable itap in module time_phylmdz.

Added output of tro3.

In physiq, no need to compute wo at every time-step, since we only use
it in radlwsw.

1 module cvltr_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE cvltr(pdtime, da, phi, mp, paprs, x, upd, dnd, dx)
8
9 ! From LMDZ4/libf/phylmd/cvltr.F, version 1.1 2005/04/15 12:36:17
10
11 USE dimphy, ONLY: klev, klon
12 USE suphec_m, ONLY: rg
13
14 ! Objet : convection des traceurs / Kerry Emanuel
15 ! Authors: M.-A. Filiberti and J.-Y. Grandpeix
16
17 REAL, intent(in):: pdtime
18 real, intent(in):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
19 REAL, intent(in):: paprs(klon, klev + 1) ! pression aux 1/2 couches
20 REAL, intent(in):: x(klon, klev) ! q de traceur (bas en haut)
21 REAL, intent(in):: upd(klon, klev) ! saturated updraft mass flux
22 REAL, intent(in):: dnd(klon, klev) ! saturated downdraft mass flux
23 REAL, intent(out):: dx(klon, klev) ! tendance de traceur (bas en haut)
24
25 ! Local:
26 real zed(klon, klev), zmd(klon, klev, klev)
27 real za(klon, klev, klev)
28 real zmfd(klon, klev), zmfa(klon, klev)
29 real zmfp(klon, klev), zmfu(klon, klev)
30 integer i, k, j
31
32 !------------------------------------------------------------
33
34 ! calcul des tendances liees au downdraft
35
36 zed = 0.
37 zmfd = 0.
38 zmfa = 0.
39 zmfu = 0.
40 zmfp = 0.
41 zmd = 0.
42 za = 0.
43 ! entrainement
44 do k = 1, klev - 1
45 do i = 1, klon
46 zed(i, k) = max(0., mp(i, k) - mp(i, k + 1))
47 end do
48 end do
49
50 ! calcul de la matrice d echange
51 ! matrice de distribution de la masse entrainee en k
52
53 do k = 1, klev
54 do i = 1, klon
55 zmd(i, k, k) = zed(i, k)
56 end do
57 end do
58 do k = 2, klev
59 do j = k - 1, 1, - 1
60 do i = 1, klon
61 if(mp(i, j + 1) /= 0) then
62 zmd(i, j, k) = zmd(i, j + 1, k) * min(1., mp(i, j)/mp(i, j + 1))
63 endif
64 end do
65 end do
66 end do
67 do k = 1, klev
68 do j = 1, klev - 1
69 do i = 1, klon
70 za(i, j, k) = max(0., zmd(i, j + 1, k) - zmd(i, j, k))
71 end do
72 end do
73 end do
74
75 ! rajout du terme lie a l'ascendance induite
76
77 do j = 2, klev
78 do i = 1, klon
79 za(i, j, j - 1) = za(i, j, j - 1) + mp(i, j)
80 end do
81 end do
82
83 ! tendances
84
85 do k = 1, klev
86 do j = 1, klev
87 do i = 1, klon
88 zmfd(i, j) = zmfd(i, j) + za(i, j, k) * (x(i, k) - x(i, j))
89 end do
90 end do
91 end do
92
93 ! calcul des tendances liees aux flux satures
94
95 do j = 1, klev
96 do i = 1, klon
97 zmfa(i, j) = da(i, j) * (x(i, 1) - x(i, j))
98 end do
99 end do
100 do k = 1, klev
101 do j = 1, klev
102 do i = 1, klon
103 zmfp(i, j) = zmfp(i, j) + phi(i, j, k) * (x(i, k) - x(i, j))
104 end do
105 end do
106 end do
107 do j = 1, klev - 1
108 do i = 1, klon
109 zmfu(i, j) = max(0., upd(i, j + 1) + dnd(i, j + 1)) &
110 * (x(i, j + 1) - x(i, j))
111 end do
112 end do
113 do j = 2, klev
114 do i = 1, klon
115 zmfu(i, j) = zmfu(i, j) &
116 + min(0., upd(i, j) + dnd(i, j)) * (x(i, j) - x(i, j - 1))
117 end do
118 end do
119
120 ! calcul final des tendances
121
122 do k = 1, klev
123 do i = 1, klon
124 dx(i, k) = (zmfd(i, k) + zmfu(i, k) &
125 + zmfa(i, k) + zmfp(i, k)) * pdtime &
126 * RG/(paprs(i, k) - paprs(i, k + 1))
127 enddo
128 enddo
129
130 end SUBROUTINE cvltr
131
132 end module cvltr_m

  ViewVC Help
Powered by ViewVC 1.1.21