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

Annotation of /trunk/Sources/phylmd/clvent.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 206 - (hide annotations)
Tue Aug 30 12:52:46 2016 UTC (7 years, 7 months ago) by guez
File size: 3566 byte(s)
Removed dimension klev of flux_[tquv] and y_flux_[tquv] in
clmain. Removed dimension klev of flux_[tquv] in physiq. Removed
dimension klev of flux_[tq] in hbtm. Removed dimension klev of
flux_[tq] in clqh and computations for layers other than the surface
layer. Removed dimension klev of flux_v in clvent and computations for
layers other than the surface layer. Values for layers other than the
surface layer were not used nor output (not even in LMDZ).

Removed argument dnwd0 of concvl. Simply write - mp in physiq
(following LMDZ).

Removed useless intermediary variables zxflux[tquv] in physiq.

1 guez 62 module clvent_m
2    
3     IMPLICIT none
4    
5     contains
6    
7     SUBROUTINE clvent(knon, dtime, u1lay, v1lay, coef, t, ven, paprs, pplay, &
8     delp, d_ven, flux_v)
9    
10 guez 70 ! Author: Z. X. Li (LMD/CNRS)
11     ! Date: 1993/08/18
12 guez 62 ! Objet : diffusion verticale de la vitesse
13    
14     USE dimphy, ONLY: klev, klon
15     USE suphec_m, ONLY: rd, rg
16    
17 guez 70 INTEGER knon
18 guez 202 REAL, intent(in):: dtime ! intervalle de temps (en s)
19 guez 70
20     REAL u1lay(klon), v1lay(klon)
21 guez 62 ! u1lay----input-R- vent u de la premiere couche (m/s)
22     ! v1lay----input-R- vent v de la premiere couche (m/s)
23 guez 70
24     REAL, intent(in):: coef(:, :) ! (knon, klev)
25     ! Coefficient d'echange (m**2/s) multiplié par le cisaillement du
26     ! vent (dV/dz). La première valeur indique la valeur de Cdrag (sans
27     ! unité).
28    
29     REAL t(klon, klev), ven(klon, klev)
30 guez 62 ! t--------input-R- temperature (K)
31     ! ven------input-R- vitesse horizontale (m/s)
32 guez 70 REAL paprs(klon, klev+1), pplay(klon, klev), delp(klon, klev)
33 guez 62 ! paprs----input-R- pression a inter-couche (Pa)
34     ! pplay----input-R- pression au milieu de couche (Pa)
35     ! delp-----input-R- epaisseur de couche (Pa)
36 guez 70 REAL d_ven(klon, klev)
37 guez 62 ! d_ven----output-R- le changement de "ven"
38    
39 guez 206 REAL, intent(out):: flux_v(:) ! (knon)
40     ! (diagnostic) flux du vent à la surface, en (kg m/s)/(m**2 s)
41     ! flux_v est le flux de moment angulaire (positif vers bas)
42    
43 guez 70 ! Local:
44 guez 62 INTEGER i, k
45     REAL zx_cv(klon, 2:klev)
46     REAL zx_dv(klon, 2:klev)
47     REAL zx_buf(klon)
48     REAL zx_coef(klon, klev)
49     REAL local_ven(klon, klev)
50     REAL zx_alf1(klon), zx_alf2(klon)
51    
52     !------------------------------------------------------------------
53    
54     DO k = 1, klev
55     DO i = 1, knon
56     local_ven(i, k) = ven(i, k)
57     ENDDO
58     ENDDO
59    
60     DO i = 1, knon
61     zx_alf1(i) = 1.0
62     zx_alf2(i) = 1.0 - zx_alf1(i)
63 guez 70 zx_coef(i, 1) = coef(i, 1) * (1. + SQRT(u1lay(i)**2 + v1lay(i)**2)) &
64     * pplay(i, 1) / (RD * t(i, 1))
65     zx_coef(i, 1) = zx_coef(i, 1) * dtime * RG
66 guez 62 ENDDO
67    
68     DO k = 2, klev
69     DO i = 1, knon
70 guez 70 zx_coef(i, k) = coef(i, k) * RG / (pplay(i, k-1) - pplay(i, k)) &
71     * (paprs(i, k) * 2 / (t(i, k) + t(i, k - 1)) / RD)**2
72     zx_coef(i, k) = zx_coef(i, k) * dtime * RG
73 guez 62 ENDDO
74     ENDDO
75    
76     DO i = 1, knon
77     zx_buf(i) = delp(i, 1) + zx_coef(i, 1)*zx_alf1(i)+zx_coef(i, 2)
78     zx_cv(i, 2) = local_ven(i, 1)*delp(i, 1) / zx_buf(i)
79     zx_dv(i, 2) = (zx_coef(i, 2)-zx_alf2(i)*zx_coef(i, 1)) &
80     /zx_buf(i)
81     ENDDO
82     DO k = 3, klev
83     DO i = 1, knon
84     zx_buf(i) = delp(i, k-1) + zx_coef(i, k) &
85     + zx_coef(i, k-1)*(1.-zx_dv(i, k-1))
86     zx_cv(i, k) = (local_ven(i, k-1)*delp(i, k-1) &
87     +zx_coef(i, k-1)*zx_cv(i, k-1) )/zx_buf(i)
88     zx_dv(i, k) = zx_coef(i, k)/zx_buf(i)
89     ENDDO
90     ENDDO
91     DO i = 1, knon
92     local_ven(i, klev) = ( local_ven(i, klev)*delp(i, klev) &
93     +zx_coef(i, klev)*zx_cv(i, klev) ) &
94     / ( delp(i, klev) + zx_coef(i, klev) &
95     -zx_coef(i, klev)*zx_dv(i, klev) )
96     ENDDO
97     DO k = klev-1, 1, -1
98     DO i = 1, knon
99     local_ven(i, k) = zx_cv(i, k+1) + zx_dv(i, k+1)*local_ven(i, k+1)
100     ENDDO
101     ENDDO
102    
103     DO i = 1, knon
104 guez 206 flux_v(i) = zx_coef(i, 1)/(RG*dtime) &
105 guez 62 *(local_ven(i, 1)*zx_alf1(i) &
106     +local_ven(i, 2)*zx_alf2(i))
107     ENDDO
108    
109     DO k = 1, klev
110     DO i = 1, knon
111     d_ven(i, k) = local_ven(i, k) - ven(i, k)
112     ENDDO
113     ENDDO
114    
115     END SUBROUTINE clvent
116    
117     end module clvent_m

  ViewVC Help
Powered by ViewVC 1.1.21