4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE gwprofil(nlon, nlev, ktest, kkcrith, kcrit, paphm1, & |
SUBROUTINE gwprofil(nlon, nlev, ktest, kkcrith, kcrit, paphm1, prho, pstab, & |
8 |
prho, pstab, pvph, pri, ptau, pdmod, psig, pvar) |
pvph, pri, ptau, pdmod, psig, pvar) |
9 |
|
|
10 |
! Method. The stress profile for gravity waves is computed as |
! Method. The stress profile for gravity waves is computed as |
11 |
! follows: it is constant (no gwd) at the levels between the |
! follows: it is constant (no gwd) at the levels between the |
12 |
! ground and the top of the blocked layer (kkenvh). It decreases |
! ground and the top of the blocked layer (kkenvh). It decreases |
13 |
! linearly with height from the top of the blocked layer to |
! linearly with height from the top of the blocked layer to 3 * |
14 |
! 3*varor (kknu), to simulate lee waves or nonlinear gravity wave |
! varor (kknu), to simulate lee waves or nonlinear gravity wave |
15 |
! breaking. Above it is constant, except when the wave encounters |
! breaking. Above it is constant, except when the wave encounters |
16 |
! a critical level (kcrit) or when it breaks. |
! a critical level (kcrit) or when it breaks. |
17 |
|
|
18 |
! Reference. |
! Reference. See ECMWF research department documentation of the |
19 |
! See ECMWF research department documentation of the "I.F.S." |
! "I.F.S." |
20 |
|
|
21 |
! Modifications. |
! Modifications. Passage of the new gwdrag TO I.F.S. (F. LOTT, |
22 |
! Passage of the new gwdrag TO I.F.S. (F. LOTT, 22/11/93) |
! 22/11/93) |
23 |
|
|
24 |
USE dimphy, ONLY : klev, klon |
USE dimphy, ONLY : klev, klon |
25 |
USE yoegwd, ONLY : gkdrag, grahilo, grcrit, gssec, gtsec, nstra |
USE yoegwd, ONLY : gkdrag, grahilo, grcrit, gssec, gtsec, nstra |
26 |
|
|
27 |
! 0.1 ARGUMENTS |
INTEGER, intent(in):: nlon, nlev |
28 |
|
INTEGER, intent(in):: ktest(nlon), kkcrith(nlon), kcrit(nlon) |
29 |
INTEGER nlon, nlev |
REAL, intent(in):: paphm1(nlon, nlev+1), prho(nlon, nlev+1) |
30 |
INTEGER kkcrith(nlon), kcrit(nlon), ktest(nlon) |
REAL, intent(in):: pstab(nlon, nlev+1) |
31 |
|
real, intent(in):: pvph(nlon, nlev+1), pri(nlon, nlev+1) |
32 |
REAL paphm1(nlon, nlev+1), pstab(nlon, nlev+1), prho(nlon, nlev+1), & |
real ptau(nlon, nlev+1) |
33 |
pvph(nlon, nlev+1), pri(nlon, nlev+1), ptau(nlon, nlev+1) |
REAL, intent(in):: pdmod(nlon) |
|
|
|
|
REAL pdmod(nlon) |
|
34 |
REAL, INTENT (IN) :: psig(nlon) |
REAL, INTENT (IN) :: psig(nlon) |
35 |
REAL, INTENT (IN) :: pvar(nlon) |
REAL, INTENT (IN) :: pvar(nlon) |
36 |
|
|
37 |
! 0.2 LOCAL ARRAYS |
! Local: |
|
|
|
38 |
INTEGER ilevh, jl, jk |
INTEGER ilevh, jl, jk |
39 |
REAL zsqr, zalfa, zriw, zdel, zb, zalpha, zdz2n |
REAL zsqr, zalfa, zriw, zdel, zb, zalpha, zdz2n |
40 |
REAL zdelp, zdelpt |
REAL zdelp, zdelpt |