/[lmdze]/trunk/libf/phylmd/Orography/lift_noro.f90
ViewVC logotype

Contents of /trunk/libf/phylmd/Orography/lift_noro.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (show annotations)
Thu Jan 6 17:52:19 2011 UTC (13 years, 4 months ago) by guez
File size: 3373 byte(s)
Extracted ASCII art from "inigeom" into a separate text file in the
documentation.

"test_disvert" now creates a separate file for layer thicknesses.

Moved variables from module "yomcst" to module "suphec_m" because this
is where those variables are defined. Kept in "yomcst" only parameters
of Earth orbit. Gave the attribute "parameter" to some variables of
module "suphec_m".

Variables of module "yoethf" were defined in procedure "suphec". Moved
these definitions to a new procedure "yoethf" in module "yoethf_m".

1 SUBROUTINE lift_noro(nlon,nlev,dtime,paprs,pplay,plat,pmea,pstd,ppic, &
2 ktest,t,u,v,pulow,pvlow,pustr,pvstr,d_t,d_u,d_v)
3
4 USE dimens_m
5 USE dimphy
6 USE suphec_m
7 IMPLICIT NONE
8 !======================================================================
9 ! Auteur(s): F.Lott (LMD/CNRS) date: 19950201
10 ! Objet: Frottement de la montagne Interface
11 !======================================================================
12 ! Arguments:
13 ! dtime---input-R- pas d'integration (s)
14 ! paprs---input-R-pression pour chaque inter-couche (en Pa)
15 ! pplay---input-R-pression pour le mileu de chaque couche (en Pa)
16 ! t-------input-R-temperature (K)
17 ! u-------input-R-vitesse horizontale (m/s)
18 ! v-------input-R-vitesse horizontale (m/s)
19
20 ! d_t-----output-R-increment de la temperature
21 ! d_u-----output-R-increment de la vitesse u
22 ! d_v-----output-R-increment de la vitesse v
23 !======================================================================
24
25 ! ARGUMENTS
26
27 INTEGER nlon, nlev
28 REAL, INTENT (IN) :: dtime
29 REAL, INTENT (IN) :: paprs(klon,klev+1)
30 REAL, INTENT (IN) :: pplay(klon,klev)
31 REAL, INTENT (IN) :: plat(nlon)
32 REAL pmea(nlon)
33 REAL, INTENT (IN) :: pstd(nlon)
34 REAL ppic(nlon)
35 REAL pulow(nlon), pvlow(nlon), pustr(nlon), pvstr(nlon)
36 REAL t(nlon,nlev), u(nlon,nlev), v(nlon,nlev)
37 REAL d_t(nlon,nlev), d_u(nlon,nlev), d_v(nlon,nlev)
38
39 INTEGER i, k, ktest(nlon)
40
41 ! Variables locales:
42
43 REAL zgeom(klon,klev)
44 REAL pdtdt(klon,klev), pdudt(klon,klev), pdvdt(klon,klev)
45 REAL pt(klon,klev), pu(klon,klev), pv(klon,klev)
46 REAL papmf(klon,klev), papmh(klon,klev+1)
47
48 ! initialiser les variables de sortie (pour securite)
49
50 DO i = 1, klon
51 pulow(i) = 0.0
52 pvlow(i) = 0.0
53 pustr(i) = 0.0
54 pvstr(i) = 0.0
55 END DO
56 DO k = 1, klev
57 DO i = 1, klon
58 d_t(i,k) = 0.0
59 d_u(i,k) = 0.0
60 d_v(i,k) = 0.0
61 pdudt(i,k) = 0.0
62 pdvdt(i,k) = 0.0
63 pdtdt(i,k) = 0.0
64 END DO
65 END DO
66
67 ! preparer les variables d'entree (attention: l'ordre des niveaux
68 ! verticaux augmente du haut vers le bas)
69
70 DO k = 1, klev
71 DO i = 1, klon
72 pt(i,k) = t(i,klev-k+1)
73 pu(i,k) = u(i,klev-k+1)
74 pv(i,k) = v(i,klev-k+1)
75 papmf(i,k) = pplay(i,klev-k+1)
76 END DO
77 END DO
78 DO k = 1, klev + 1
79 DO i = 1, klon
80 papmh(i,k) = paprs(i,klev-k+2)
81 END DO
82 END DO
83 DO i = 1, klon
84 zgeom(i,klev) = rd*pt(i,klev)*log(papmh(i,klev+1)/papmf(i,klev))
85 END DO
86 DO k = klev - 1, 1, -1
87 DO i = 1, klon
88 zgeom(i,k) = zgeom(i,k+1) + rd*(pt(i,k)+pt(i,k+1))/2.0*log(papmf(i,k &
89 +1)/papmf(i,k))
90 END DO
91 END DO
92
93 ! appeler la routine principale
94
95 CALL orolift(klon,klev,ktest,dtime,papmh,zgeom,pt,pu,pv,plat,pmea,pstd, &
96 ppic,pulow,pvlow,pdudt,pdvdt,pdtdt)
97
98 DO k = 1, klev
99 DO i = 1, klon
100 d_u(i,klev+1-k) = dtime*pdudt(i,k)
101 d_v(i,klev+1-k) = dtime*pdvdt(i,k)
102 d_t(i,klev+1-k) = dtime*pdtdt(i,k)
103 pustr(i) = pustr(i) &
104 + pdudt(i,k)*(papmh(i,k+1)-papmh(i,k))/rg
105 pvstr(i) = pvstr(i) &
106 + pdvdt(i,k)*(papmh(i,k+1)-papmh(i,k))/rg
107 END DO
108 END DO
109
110 RETURN
111 END

  ViewVC Help
Powered by ViewVC 1.1.21