1 |
SUBROUTINE sugwd(nlon,nlev,paprs,pplay) |
module sugwd_m |
2 |
|
|
3 |
!**** *SUGWD* INITIALIZE COMMON YOEGWD CONTROLLING GRAVITY WAVE DRAG |
IMPLICIT NONE |
4 |
|
|
5 |
! PURPOSE. |
contains |
|
! -------- |
|
|
! INITIALIZE YOEGWD, THE COMMON THAT CONTROLS THE |
|
|
! GRAVITY WAVE DRAG PARAMETRIZATION. |
|
6 |
|
|
7 |
!** INTERFACE. |
SUBROUTINE sugwd(paprs, pplay) |
|
! ---------- |
|
|
! CALL *SUGWD* FROM *SUPHEC* |
|
|
! ----- ------ |
|
8 |
|
|
9 |
! EXPLICIT ARGUMENTS : |
! Initialize yoegwd, the common that controls the gravity wave |
10 |
! -------------------- |
! drag parametrization. |
|
! PSIG : VERTICAL COORDINATE TABLE |
|
|
! NLEV : NUMBER OF MODEL LEVELS |
|
11 |
|
|
12 |
! IMPLICIT ARGUMENTS : |
! REFERENCE. |
13 |
! -------------------- |
! ECMWF Research Department documentation of the IFS |
|
! COMMON YOEGWD |
|
14 |
|
|
15 |
! METHOD. |
! AUTHOR. |
16 |
! ------- |
! MARTIN MILLER *ECMWF* |
|
! SEE DOCUMENTATION |
|
17 |
|
|
18 |
! EXTERNALS. |
! ORIGINAL : 90-01-01 |
|
! ---------- |
|
|
! NONE |
|
19 |
|
|
20 |
! REFERENCE. |
USE yoegwd, ONLY : gfrcrit, ghmax, gkdrag, gklift, gkwake, grahilo, & |
21 |
! ---------- |
grcrit, gsigcr, gssec, gtsec, gvcrit, gvsec, nktopg, nstra |
22 |
! ECMWF Research Department documentation of the IFS |
use nr_util, only: assert_eq |
23 |
|
|
24 |
! AUTHOR. |
REAL, INTENT(IN):: paprs(:, :) ! (nlon, nlev+1) |
25 |
! ------- |
REAL, INTENT(IN):: pplay(:, :) ! (nlon, nlev) |
|
! MARTIN MILLER *ECMWF* |
|
26 |
|
|
27 |
! MODIFICATIONS. |
! Local: |
28 |
! -------------- |
INTEGER nlon, nlev |
29 |
! ORIGINAL : 90-01-01 |
integer jk |
30 |
! ------------------------------------------------------------------ |
REAL zpr, zstra, zsigt, zpm1r |
|
USE yoegwd |
|
|
IMPLICIT NONE |
|
31 |
|
|
32 |
! ----------------------------------------------------------------- |
!------------------------------------------------------------ |
|
! ---------------------------------------------------------------- |
|
33 |
|
|
34 |
INTEGER nlon, nlev, jk |
print *, "Call sequence information: sugwd" |
35 |
REAL, INTENT (IN) :: paprs(nlon,nlev+1) |
nlon = assert_eq(size(paprs, 1), size(pplay, 1), "sugwd nlon") |
36 |
REAL, INTENT (IN) :: pplay(nlon,nlev) |
nlev = assert_eq(size(paprs, 2) - 1, size(pplay, 2), "sugwd nlon") |
|
REAL zpr, zstra, zsigt, zpm1r |
|
37 |
|
|
38 |
!* 1. SET THE VALUES OF THE PARAMETERS |
! 1. SET THE VALUES OF THE PARAMETERS |
|
! -------------------------------- |
|
39 |
|
|
40 |
100 CONTINUE |
ghmax = 10000. |
41 |
|
|
42 |
PRINT *, ' DANS SUGWD NLEV=', nlev |
zpr = 100000. |
43 |
ghmax = 10000. |
zstra = 0.1 |
44 |
|
zsigt = 0.94 |
45 |
|
|
46 |
zpr = 100000. |
DO jk = 1, nlev |
47 |
zstra = 0.1 |
zpm1r = pplay(nlon / 2, jk) / paprs(nlon / 2, 1) |
48 |
zsigt = 0.94 |
IF (zpm1r >= zsigt) nktopg = jk |
49 |
!old ZPR=80000. |
IF (zpm1r >= zstra) nstra = jk |
50 |
!old ZSIGT=0.85 |
end DO |
51 |
|
|
52 |
DO 110 jk = 1, nlev |
! inversion car dans orodrag on compte les niveaux a l'envers |
53 |
zpm1r = pplay(nlon/2,jk)/paprs(nlon/2,1) |
nktopg = nlev - nktopg + 1 |
54 |
IF (zpm1r>=zsigt) THEN |
nstra = nlev - nstra |
55 |
nktopg = jk |
PRINT *, 'nktopg=', nktopg |
56 |
END IF |
PRINT *, 'nstra=', nstra |
|
zpm1r = pplay(nlon/2,jk)/paprs(nlon/2,1) |
|
|
IF (zpm1r>=zstra) THEN |
|
|
nstra = jk |
|
|
END IF |
|
|
110 CONTINUE |
|
57 |
|
|
58 |
! inversion car dans orodrag on compte les niveaux a l'envers |
gsigcr = 0.8 |
|
nktopg = nlev - nktopg + 1 |
|
|
nstra = nlev - nstra |
|
|
PRINT *, ' DANS SUGWD nktopg=', nktopg |
|
|
PRINT *, ' DANS SUGWD nstra=', nstra |
|
59 |
|
|
60 |
gsigcr = 0.80 |
gkdrag = 0.2 |
61 |
|
grahilo = 1. |
62 |
|
grcrit = 0.01 |
63 |
|
gfrcrit = 1. |
64 |
|
gkwake = 0.5 |
65 |
|
|
66 |
gkdrag = 0.2 |
gklift = 0.5 |
67 |
grahilo = 1. |
gvcrit = 0. |
|
grcrit = 0.01 |
|
|
gfrcrit = 1.0 |
|
|
gkwake = 0.50 |
|
68 |
|
|
69 |
gklift = 0.50 |
! 2. SET VALUES OF SECURITY PARAMETERS |
70 |
gvcrit = 0.0 |
gvsec = 0.1 |
71 |
|
gssec = 1E-12 |
72 |
|
gtsec = 1E-7 |
73 |
|
|
74 |
|
END SUBROUTINE sugwd |
75 |
|
|
76 |
! ---------------------------------------------------------------- |
end module sugwd_m |
|
|
|
|
!* 2. SET VALUES OF SECURITY PARAMETERS |
|
|
! --------------------------------- |
|
|
|
|
|
200 CONTINUE |
|
|
|
|
|
gvsec = 0.10 |
|
|
gssec = 1.E-12 |
|
|
|
|
|
gtsec = 1.E-07 |
|
|
|
|
|
! ---------------------------------------------------------------- |
|
|
|
|
|
RETURN |
|
|
END |
|