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.
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
gembud
archives: