1 SUBROUTINE icaoheight(MAXWP, & !input
21 use ctlblk_mod
, only: jsta, jend, spval, im
27 REAL,
INTENT(IN) :: maxwp(im,jsta:jend)
29 REAL,
INTENT(INOUT) :: maxwicaoz(im,jsta:jend)
33 REAL,
PARAMETER :: g_over_r = con_g / con_rd
34 REAL,
PARAMETER :: lapse_ratel = 6.5e-03
35 REAL,
PARAMETER :: lapse_rateu = -1.0e-03
36 REAL,
PARAMETER :: press_bot = 101325.
37 REAL,
PARAMETER :: press_mid = 22632.
38 REAL,
PARAMETER :: press_top = 5474.87
39 REAL,
PARAMETER :: temp_bot = 288.15
40 REAL,
PARAMETER :: temp_top = 216.65
41 REAL,
PARAMETER :: gpm1 = 11000.0
43 REAL,
PARAMETER :: gpm2 = 20000.0
44 REAL,
PARAMETER :: zp1 = lapse_ratel/g_over_r
45 REAL,
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
101 END SUBROUTINE icaoheight