/[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 23 - (hide annotations)
Mon Dec 14 15:25:16 2009 UTC (14 years, 5 months ago) by guez
Original Path: trunk/libf/phylmd/Orography/lift_noro.f90
File size: 3371 byte(s)
Split "orografi.f": one file for each procedure. Put the created files
in new directory "Orography".

Removed argument "vcov" of procedure "sortvarc". Removed arguments
"itau" and "time" of procedure "caldyn0". Removed arguments "itau",
"time" and "vcov" of procedure "sortvarc0".

Removed argument "time" of procedure "dynredem1". Removed NetCDF
variable "temps" in files "start.nc" and "restart.nc", because its
value is always 0.

Removed argument "nq" of procedures "iniadvtrac" and "leapfrog". The
number of "tracers read in "traceur.def" must now be equal to "nqmx",
or "nqmx" must equal 4 if there is no file "traceur.def". Replaced
variable "nq" by constant "nqmx" in "leapfrog".

NetCDF variable for ozone field in "coefoz.nc" must now be called
"tro3" instead of "r".

Fixed bug in "zenang".

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     USE yomcst
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