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

Annotation of /trunk/libf/phylmd/Orography/drag_noro.f90

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

  ViewVC Help
Powered by ViewVC 1.1.21