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

Contents of /trunk/libf/phylmd/Orography/drag_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: 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 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 suphec_m
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