SSUSI F16 EDR-DSK format to observation sequence converters

Overview

The Special Sensor Ultraviolet Spectrographic Imager SSUSI is designed to remotely sense the ionosphere and thermosphere. The following is repeated from the SSUSI home page:

Overview Beginning in 2003, the Defense Meteorological Satellite Program (DMSP) satellites began carrying the SSUSI instrument - a combination of spectrographic imaging and photometric systems designed to remotely sense the ionosphere and thermosphere. The long term focus of the SSUSI program is to provide data concerning the upper atmospheric response to the sun over the changing conditions of the solar cycle. Data collected by SSUSI instrument can help identify structure in the equatorial and polar regions. Mission SSUSI was designed for the DMSP Block 5D-3 satellites. These satellites are placed into nearly polar, sun-synchronous orbits at an altitude of about 850 km. SSUSI is a remote-sensing instrument which measures ultraviolet (UV) emissions in five different wavelength bands from the Earth’s upper atmosphere. SSUSI is mounted on a nadir-looking panel of the satellite. The multicolor images from SSUSI cover the visible Earth disk from horizon to horizon and the anti-sunward limb up to an altitude of approximately 520 km. The UV images and the derived environmental data provide the Air Force Weather Agency (Offutt Air Force Base, Bellevue, NE) with near real-time information that can be utilized in a number of applications, such as maintenance of high frequency (HF) communication links and related systems and assessment of the environmental hazard to astronauts on the Space Station.

convert_f16_edr_dsk.f90 will extract the ON2 observations from the F16 “edr-dsk” format files and create DART observation sequence files. There is one additional preprocessing step before the edr-dsk files may be converted.
The ON2_UNCERTAINTY variable in the netcdf files have IEEE NaN values, but none of the required metadata to interpret them correctly. These 2 lines will add the required attributes so that NaNs are replaced with a fill value that can be queried and manipulated. Since the ON2_UNCERTAINTY is a standard deviation, it is sufficient to make the fill value negative. See the section on Known Bugs
ncatted -a _FillValue,ON2_UNCERTAINTY,o,f,NaN        input_file.nc
ncatted -a _FillValue,ON2_UNCERTAINTY,m,f,-1.0       input_file.nc

Data sources

http://ssusi.jhuapl.edu/data_products

Please read their data usage policy.

Programs

DART/observations/SSUSI/convert_f16_edr_dsk.f90 will extract ON2 data from the distribution files and create DART observation sequence (obs_seq) files. Build it in the SSUSI/work directory by running the ./quickbuild.sh script located there. In addition to the converters, the advance_time and obs_sequence_tool utilities will be built.

An example data file is in the data directory. An example scripts for adding the required metadata to the ON2_UNCERTAINTY variable in the shell_scripts directory. These are NOT intended to be turnkey scripts; they will certainly need to be customized for your use. There are comments at the top of the scripts saying what options they include, and should be commented enough to indicate where changes will be likely to need to be made.

Errors

The code for setting observation error variances is using fixed values, and we are not certain if they are correct. Incoming QC values larger than 0 are suspect, but it is not clear if they really signal unusable values or whether there are some codes we should accept.

Known Bugs

The netCDF files - as distributed - have NaN values to indicate “MISSING”. This makes it exceptionally hard to read or work with, as almost everything will core dump when trying to perform any math with NaNs. convert_f16_edr_dsk.f90 tries to count how many values are missing. If the NaN has not been replaced with a numerically valid MISSING value, the following FATAL ERROR is generated (by the Intel compiler, with debug and traceback enabled):

set_nml_output Echo NML values to log file only
Trying to open namelist log dart_log.nml
forrtl: error (65): floating invalid
Image              PC                Routine            Line        Source
convert_f16_edr_d  000000000051717D  MAIN__                    143  convert_f16_edr_dsk.f90
convert_f16_edr_d  0000000000409B3C  Unknown               Unknown  Unknown
libc.so.6          0000003101E1ED5D  Unknown               Unknown  Unknown
convert_f16_edr_d  0000000000409A39  Unknown               Unknown  Unknown
Abort (core dumped)

The solution is to replace the NaN values with a viable MISSING value using the shell_scripts/netcdf_manip.csh script. It relies on the netCDF Operators, freely available http://nco.sourceforge.net