GetSeaLevelPressure Function

public function GetSeaLevelPressure(StnPressure, Altitude, TDryBulb) result(SeaLevelPressure)

Return sea level pressure given dry-bulb temperature, altitude above sea level and pressure. Reference: Hess SL, Introduction to theoretical meteorology, Holt Rinehart and Winston, NY 1959, ch. 6.5; Stull RB, Meteorology for scientists and engineers, 2nd edition, Brooks/Cole 2000, ch. 1. Notes: The standard procedure for the US is to use for TDryBulb the average of the current station temperature and the station temperature from 12 hours ago.

Arguments

Type IntentOptional AttributesName
real, intent(in) :: StnPressure

Observed station pressure in Psi [IP] or Pa [SI]

real, intent(in) :: Altitude

Altitude in ft [IP] or m [SI]

real, intent(in) :: TDryBulb

Dry-bulb temperature in °F [IP] or °C [SI]

Return Value real

Sea level barometric pressure in Psi [IP] or Pa [SI]


Calls

proc~~getsealevelpressure~~CallsGraph proc~getsealevelpressure GetSeaLevelPressure proc~isip isIP proc~getsealevelpressure->proc~isip proc~gettrankinefromtfahrenheit GetTRankineFromTFahrenheit proc~getsealevelpressure->proc~gettrankinefromtfahrenheit proc~gettkelvinfromtcelsius GetTKelvinFromTCelsius proc~getsealevelpressure->proc~gettkelvinfromtcelsius

Called by

proc~~getsealevelpressure~~CalledByGraph proc~getsealevelpressure GetSeaLevelPressure proc~getstationpressure GetStationPressure proc~getstationpressure->proc~getsealevelpressure

Contents

Source Code


Source Code

  function GetSeaLevelPressure(StnPressure, Altitude, TDryBulb) result(SeaLevelPressure)
    !+ Return sea level pressure given dry-bulb temperature, altitude above sea level and pressure.
    !+ Reference:
    !+ Hess SL, Introduction to theoretical meteorology, Holt Rinehart and Winston, NY 1959,
    !+ ch. 6.5; Stull RB, Meteorology for scientists and engineers, 2nd edition,
    !+ Brooks/Cole 2000, ch. 1.
    !+ Notes:
    !+ The standard procedure for the US is to use for TDryBulb the average
    !+ of the current station temperature and the station temperature from 12 hours ago.

    real, intent(in)  ::  StnPressure
      !+ Observed station pressure in Psi [IP] or Pa [SI]
    real, intent(in)  ::  Altitude
      !+ Altitude in ft [IP] or m [SI]
    real, intent(in)  ::  TDryBulb
      !+ Dry-bulb temperature in °F [IP] or °C [SI]
    real              ::  SeaLevelPressure
      !+ Sea level barometric pressure in Psi [IP] or Pa [SI]
    real              ::  TColumn
      !+ Average temperature in column of air in R [IP] or K [SI]
    real              ::  H
      !+ scale height (dimensionless)

    if (isIP()) then
      ! Calculate average temperature in column of air, assuming a lapse rate
      ! of 3.6 °F/1000ft
      TColumn = TDryBulb + 0.0036 * Altitude / 2.0

      ! Determine the scale height
      H = 53.351 * GetTRankineFromTFahrenheit(TColumn)
    else
      ! Calculate average temperature in column of air, assuming a lapse rate
      ! of 6.5 °C/km
      TColumn = TDryBulb + 0.0065 * Altitude / 2.0

      ! Determine the scale height
      H = 287.055 * GetTKelvinFromTCelsius(TColumn) / 9.807
    end if

    ! Calculate the sea level pressure
    SeaLevelPressure = StnPressure * exp(Altitude / H)
  end function GetSeaLevelPressure