[gembud] Corrections to gempak radiosonde decoder

Since there may be a minor release of gempak imminent,
here are some corrections I have made to the radiosonde decoder.

The first file is gempak/source/bridge/ru/rumand.f

Heights at 700 hPa are only encoded to be unambiguous to 1000 meters
even though the values can vary by about 1200 meters.  This fix
uses temperature to make a better guess at the value.

The second file is gempak/source/bridge/ru/ruhght.f

The first change addresses a weird encoding I have run across for
a height of minus zero.  Negative values are encoded as 500 + |height|.
It looks for a value ge 500 instead of the value gt 500.

The second one addresses what the leading digit should be at the 10 hPa
level.

*** rumand.f.dist       2019-02-13 11:35:52.000000000 -0700
--- rumand.f    2021-01-28 11:42:02.978136138 -0700
***************
*** 82,87 ****
--- 82,95 ----
  C
        CALL RU_TEMP  ( fld, rdata (2), rdata (3), ier )
  C
+ C* The 700 hPa heights can span approximately 2300 to 3500 meters
+ C* The encoding is only unambiguous to 1000 meters.  RU_HGHT returns values
+ C* between 2500 and 3499 meters.  If the height is greater than 3300 meters
+ C* and the temperature below 0, adjust the height downward by 1000 meters.
+ C
+       IF ( p .eq. 700 .and. rdata(6) > 3300 .and. rdata(2) < 0 )
+      +    rdata(6) = rdata(6) - 1000
+ C
  C*    Handle the wind group if it is present as determined by topwnd.
  C
        IF  ( p .ge. topwnd )  THEN

*** ruhght.f.dist       2019-02-13 11:35:52.000000000 -0700
--- ruhght.f    2021-01-28 12:58:04.908768256 -0700
***************
*** 66,72 ****
  C
            IF  ( ( ier .eq. 0 ) .and. ( .not. above ) )  THEN
                z = iz
!               IF ( (ipres .eq. 1000) .and. (iz .gt. 500) )  THEN
                    z = 500. - z
                  ELSE IF ( (ipres .eq. 925) .and. (iz .lt. 200) .and.
       +                             .not. drop ) THEN
--- 66,72 ----
  C
            IF  ( ( ier .eq. 0 ) .and. ( .not. above ) )  THEN
                z = iz
!               IF ( (ipres .eq. 1000) .and. (iz .ge. 500) )  THEN
                    z = 500. - z
                  ELSE IF ( (ipres .eq. 925) .and. (iz .lt. 200) .and.
       +                             .not. drop ) THEN
***************
*** 109,117 ****
                    z = z + 20000.
                  ELSE IF ( ipres .ge. 20 ) THEN
                    z = z + 20000.
!                 ELSE IF ((ipres .eq. 10) .and. (iz .gt. 8000)) THEN
                    z = z + 20000.
!                 ELSE IF ((ipres .eq. 10) .and. (iz .lt. 8000)) THEN
                    z = z + 30000.
                  ELSE IF ( ipres .ge. 3 ) THEN
                    z = z + 30000.
--- 109,117 ----
                    z = z + 20000.
                  ELSE IF ( ipres .ge. 20 ) THEN
                    z = z + 20000.
!                 ELSE IF ((ipres .eq. 10) .and. (iz .gt. 5000)) THEN
                    z = z + 20000.
!                 ELSE IF ((ipres .eq. 10) .and. (iz .lt. 5000)) THEN
                    z = z + 30000.
                  ELSE IF ( ipres .ge. 3 ) THEN
                    z = z + 30000.
--
Larry Oolman
Department of Atmospheric Science
University of Wyoming
Dept. 3038, 1000 E. University Ave.
Laramie, WY 82071
ldoolman@xxxxxxxx
http://www.uwyo.edu/atsc



  • 2021 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the gembud archives: