/[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 38 - (hide annotations)
Thu Jan 6 17:52:19 2011 UTC (13 years, 4 months ago) by guez
File size: 3546 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 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 guez 38 USE suphec_m
10 guez 23 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