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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/phylmd/clvent.f
File size: 4553 byte(s)
Initial import
1 SUBROUTINE clvent(knon,dtime, u1lay,v1lay,coef,t,ven,
2 e paprs,pplay,delp,
3 s d_ven,flux_v)
4 use dimens_m
5 use dimphy
6 use iniprint
7 use YOMCST
8 IMPLICIT none
9 c======================================================================
10 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930818
11 c Objet: diffusion vertical de la vitesse "ven"
12 c======================================================================
13 c Arguments:
14 c dtime----input-R- intervalle du temps (en second)
15 c u1lay----input-R- vent u de la premiere couche (m/s)
16 c v1lay----input-R- vent v de la premiere couche (m/s)
17 c coef-----input-R- le coefficient d'echange (m**2/s) multiplie par
18 c le cisaillement du vent (dV/dz); la premiere
19 c valeur indique la valeur de Cdrag (sans unite)
20 c t--------input-R- temperature (K)
21 c ven------input-R- vitesse horizontale (m/s)
22 c paprs----input-R- pression a inter-couche (Pa)
23 c pplay----input-R- pression au milieu de couche (Pa)
24 c delp-----input-R- epaisseur de couche (Pa)
25 c
26 c
27 c d_ven----output-R- le changement de "ven"
28 c flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s)
29 c======================================================================
30 INTEGER knon
31 REAL dtime
32 REAL u1lay(klon), v1lay(klon)
33 REAL coef(klon,klev)
34 REAL t(klon,klev), ven(klon,klev)
35 REAL paprs(klon,klev+1), pplay(klon,klev), delp(klon,klev)
36 REAL d_ven(klon,klev)
37 REAL flux_v(klon,klev)
38 c======================================================================
39 c======================================================================
40 INTEGER i, k
41 REAL zx_cv(klon,2:klev)
42 REAL zx_dv(klon,2:klev)
43 REAL zx_buf(klon)
44 REAL zx_coef(klon,klev)
45 REAL local_ven(klon,klev)
46 REAL zx_alf1(klon), zx_alf2(klon)
47 c======================================================================
48 DO k = 1, klev
49 DO i = 1, knon
50 local_ven(i,k) = ven(i,k)
51 ENDDO
52 ENDDO
53 c======================================================================
54 DO i = 1, knon
55 ccc zx_alf1(i) = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2))
56 zx_alf1(i) = 1.0
57 zx_alf2(i) = 1.0 - zx_alf1(i)
58 zx_coef(i,1) = coef(i,1)
59 . * (1.0+SQRT(u1lay(i)**2+v1lay(i)**2))
60 . * pplay(i,1)/(RD*t(i,1))
61 zx_coef(i,1) = zx_coef(i,1) * dtime*RG
62 ENDDO
63 c======================================================================
64 DO k = 2, klev
65 DO i = 1, knon
66 zx_coef(i,k) = coef(i,k)*RG/(pplay(i,k-1)-pplay(i,k))
67 . *(paprs(i,k)*2/(t(i,k)+t(i,k-1))/RD)**2
68 zx_coef(i,k) = zx_coef(i,k) * dtime*RG
69 ENDDO
70 ENDDO
71 c======================================================================
72 DO i = 1, knon
73 zx_buf(i) = delp(i,1) + zx_coef(i,1)*zx_alf1(i)+zx_coef(i,2)
74 zx_cv(i,2) = local_ven(i,1)*delp(i,1) / zx_buf(i)
75 zx_dv(i,2) = (zx_coef(i,2)-zx_alf2(i)*zx_coef(i,1))
76 . /zx_buf(i)
77 ENDDO
78 DO k = 3, klev
79 DO i = 1, knon
80 zx_buf(i) = delp(i,k-1) + zx_coef(i,k)
81 . + zx_coef(i,k-1)*(1.-zx_dv(i,k-1))
82 zx_cv(i,k) = (local_ven(i,k-1)*delp(i,k-1)
83 . +zx_coef(i,k-1)*zx_cv(i,k-1) )/zx_buf(i)
84 zx_dv(i,k) = zx_coef(i,k)/zx_buf(i)
85 ENDDO
86 ENDDO
87 DO i = 1, knon
88 local_ven(i,klev) = ( local_ven(i,klev)*delp(i,klev)
89 . +zx_coef(i,klev)*zx_cv(i,klev) )
90 . / ( delp(i,klev) + zx_coef(i,klev)
91 . -zx_coef(i,klev)*zx_dv(i,klev) )
92 ENDDO
93 DO k = klev-1, 1, -1
94 DO i = 1, knon
95 local_ven(i,k) = zx_cv(i,k+1) + zx_dv(i,k+1)*local_ven(i,k+1)
96 ENDDO
97 ENDDO
98 c======================================================================
99 c== flux_v est le flux de moment angulaire (positif vers bas)
100 c== dont l'unite est: (kg m/s)/(m**2 s)
101 DO i = 1, knon
102 flux_v(i,1) = zx_coef(i,1)/(RG*dtime)
103 . *(local_ven(i,1)*zx_alf1(i)
104 . +local_ven(i,2)*zx_alf2(i))
105 ENDDO
106 DO k = 2, klev
107 DO i = 1, knon
108 flux_v(i,k) = zx_coef(i,k)/(RG*dtime)
109 . * (local_ven(i,k)-local_ven(i,k-1))
110 ENDDO
111 ENDDO
112 c
113 DO k = 1, klev
114 DO i = 1, knon
115 d_ven(i,k) = local_ven(i,k) - ven(i,k)
116 ENDDO
117 ENDDO
118 c
119 RETURN
120 END

  ViewVC Help
Powered by ViewVC 1.1.21