NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

[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: