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

Contents of /trunk/Sources/phylmd/Orography/gwstress.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 134 - (show annotations)
Wed Apr 29 15:47:56 2015 UTC (9 years ago) by guez
File size: 2715 byte(s)
Sources inside, compilation outside.
1 SUBROUTINE gwstress(nlon,nlev,ktest,kcrit,kkenvh,kknu,prho,pstab,pvph, &
2 pstd,psig,pmea,ppic,ptau,pgeom1,pdmod)
3
4 !**** *gwstress*
5
6 ! purpose.
7 ! --------
8
9 !** interface.
10 ! ----------
11 ! call *gwstress* from *gwdrag*
12
13 ! explicit arguments :
14 ! --------------------
15 ! ==== inputs ===
16 ! ==== outputs ===
17
18 ! implicit arguments : none
19 ! --------------------
20
21 ! method.
22 ! -------
23
24
25 ! externals.
26 ! ----------
27
28
29 ! reference.
30 ! ----------
31
32 ! see ecmwf research department documentation of the "i.f.s."
33
34 ! author.
35 ! -------
36
37 ! modifications.
38 ! --------------
39 ! f. lott put the new gwd on ifs 22/11/93
40
41 !-----------------------------------------------------------------------
42 USE dimens_m
43 USE dimphy
44 USE suphec_m
45 USE yoegwd
46 IMPLICIT NONE
47
48 !-----------------------------------------------------------------------
49
50 !* 0.1 arguments
51 ! ---------
52
53 INTEGER nlon, nlev
54 INTEGER kcrit(nlon), ktest(nlon), kkenvh(nlon), kknu(nlon)
55
56 REAL prho(nlon,nlev+1), pstab(nlon,nlev+1), ptau(nlon,nlev+1), &
57 pvph(nlon,nlev+1), pgeom1(nlon,nlev)
58 REAL, INTENT (IN) :: pstd(nlon)
59
60 REAL, INTENT (IN) :: psig(nlon)
61 REAL pmea(nlon), ppic(nlon)
62 REAL pdmod(nlon)
63
64 !-----------------------------------------------------------------------
65
66 !* 0.2 local arrays
67 ! ------------
68 INTEGER jl
69 REAL zblock, zvar, zeff
70 LOGICAL lo
71
72 !-----------------------------------------------------------------------
73
74 !* 0.3 functions
75 ! ---------
76 ! ------------------------------------------------------------------
77
78 !* 1. initialization
79 ! --------------
80
81 !* 3.1 gravity wave stress.
82
83 DO 301 jl = 1, klon
84 IF (ktest(jl)==1) THEN
85
86 ! effective mountain height above the blocked flow
87
88 IF (kkenvh(jl)==klev) THEN
89 zblock = 0.0
90 ELSE
91 zblock = (pgeom1(jl,kkenvh(jl))+pgeom1(jl,kkenvh(jl)+1))/2./rg
92 END IF
93
94 zvar = ppic(jl) - pmea(jl)
95 zeff = amax1(0.,zvar-zblock)
96
97 ptau(jl,klev+1) = prho(jl,klev+1)*gkdrag*psig(jl)*zeff**2/4./ &
98 pstd(jl)*pvph(jl,klev+1)*pdmod(jl)*sqrt(pstab(jl,klev+1))
99
100 ! too small value of stress or low level flow include critical level
101 ! or low level flow: gravity wave stress nul.
102
103 lo = (ptau(jl,klev+1)<gtsec) .OR. (kcrit(jl)>=kknu(jl)) .OR. &
104 (pvph(jl,klev+1)<gvcrit)
105 ! if(lo) ptau(jl,klev+1)=0.0
106
107 ELSE
108
109 ptau(jl,klev+1) = 0.0
110
111 END IF
112
113 301 CONTINUE
114
115 RETURN
116 END

  ViewVC Help
Powered by ViewVC 1.1.21