1 SUBROUTINE icaoheight(MAXWP, & !input
21use ctlblk_mod,
only: jsta, jend, spval, im, ista, iend
22use physcons_post,
only: con_g, con_rd
27REAL,
INTENT(IN) :: MAXWP(ista:iend,jsta:jend)
29REAL,
INTENT(INOUT) :: MAXWICAOZ(ista:iend,jsta:jend)
33REAL,
PARAMETER :: G_over_R = con_g / con_rd
34REAL,
PARAMETER :: Lapse_RateL = 6.5e-03
35REAL,
PARAMETER :: Lapse_RateU = -1.0e-03
36REAL,
PARAMETER :: Press_Bot = 101325.
37REAL,
PARAMETER :: Press_Mid = 22632.
38REAL,
PARAMETER :: Press_Top = 5474.87
39REAL,
PARAMETER :: Temp_Bot = 288.15
40REAL,
PARAMETER :: Temp_Top = 216.65
41REAL,
PARAMETER :: Gpm1 = 11000.0
43REAL,
PARAMETER :: Gpm2 = 20000.0
44REAL,
PARAMETER :: ZP1 = lapse_ratel/g_over_r
45REAL,
PARAMETER :: ZP2 = lapse_rateu/g_over_r
67 IF ( (pressure <= 1000.) .AND. (pressure >= 0.) )
THEN
69 print*,
'lower ICAO pressure to 10 mb'
71 IF ( pressure > press_bot .and. pressure<spval)
THEN
75 IF (pressure == spval)
THEN
76 maxwicaoz(i,j) = spval
77 ELSE IF (pressure > press_mid)
THEN
78 pressure = pressure/press_bot
79 pressure = 1.0 - pressure**zp1
80 maxwicaoz(i,j) = pressure*temp_bot/lapse_ratel
82 ELSE IF (pressure > press_top)
THEN
84 pressure = pressure/press_mid
85 pressure = -alog(pressure)
86 maxwicaoz(i,j) = gpm1 + pressure*temp_top/g_over_r
89 pressure = pressure/press_top
90 pressure = 1.0 - pressure**zp2
91 maxwicaoz(i,j) = gpm2 + pressure*temp_top/lapse_rateu
101END SUBROUTINE icaoheight