/[lmdze]/trunk/Sources/phylmd/Orography/lift_noro.f
ViewVC logotype

Annotation of /trunk/Sources/phylmd/Orography/lift_noro.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (hide annotations)
Thu Jan 6 17:52:19 2011 UTC (13 years, 4 months ago) by guez
Original Path: trunk/libf/phylmd/Orography/lift_noro.f90
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 guez 23 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 guez 38 USE suphec_m
7 guez 23 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