The Radar Software Library (RSL)

Introduction

By John H. Merritt and David B. Wolff; NASA/TRMM Office
Software Verson 1.44 (released 11/21/2013)


This library is an object oriented programming environment to keep application programming simple, for the casual C programmer, as well as for analysis software applicable to all RADAR data related to the TRMM GV effort. This library reads the wsr88d, lassen, kwajalein, mcgill, toga, UF, and native RSL file formats. The most important functions provided are those which load any one of the radar file formats into memory; see RSL_anyformat_to_radar. Additional functions are provide to mainpulate the RSL objects. Nearly all of the functions return objects. When they don't, they usually perform actions like output, making images, etc. The most general object in RSL is Radar. The structure Radar is the method used to define the ideal or universal radar representation in RAM while keeping the natural resolution of the data unchanged. More simply, Radar represents the super set of all radar file formats. The Radar structure is hierarchically defined such that it is composed of Volumes, each containing one field type. Volumes are composed of Sweeps. Sweeps are composed of Rays and Rays contains a vector of the field type. Some field types are Reflectivity(DZ), Velocity(VR), Spectrum Width(SW), etc. There are approximately 20 field types. See the Users Guide and the what's new for more information.

An example of a function that returns the Radar object is the Lassen ingest function. The function allocates all memory required to store the values from the lassen file in RAM.

Radar *radar; radar = RSL_lassen_to_radar("lassen.file.22");

Syntactically, the object returned is a pointer. However, the functions provided in RSL treat this pointer as an object.

The names of the functions in the library are very descriptive of the function they perform. In the previous example, you may infer that some conversion from lassen to radar is taking place. Knowing that lassen is a file format for the Darwin RADAR datasets and that radar refers to the data structure Radar helps you understand that the function ingests lassen files and loads it into the Radar data structure.

The data structure Radar is composed of other objects called Volumes. You will notice that throughout this discussion, the natural vocabulary of the scientists who talk about the different components of the data received from a RADAR is used. This vocabulary is used to describe each component of the data structure. The Radar data structure holds RADAR measurements of a volume of physical space for the smallest unit of time possible. Typically a RADAR can produce a volume of data in 5 to 8 minutes; that becomes the smallest unit of time for a volume. This volume of space measured is referred to as Volume, in the RSL, and represents one particular measurement type or field type. The types of measurements are: reflectivity, velocity, spectrum width, quality controlled reflectivity, total reflectivity, differential reflectivity and LDR (another form of differential reflectivity). Normally, the RADAR records as many fields that it is designed to record and that really is one volume. However, I have split the fields into seperate volumes so that you can concentrate on only one field type. Thus, the Radar datatype is composed of an array of Volumes; one to the number of fields.

The Volume data structure, a single field type, is composed of several 360 degree revolutions of the RADAR. These revolutions are refered to as sweeps. The first sweep for a volume, commonly known as the base scan, is the sweep made by the RADAR pointing nearly horizontally and directing a RADAR beam toward the horizon. Then, the RADAR is tilted upwards slightly and another revolution is performed. This process continues 10 to 16 times, depending on the RADAR. These sweeps are referred to as Sweep in the RSL. Thus, a Volume is simply composed of an array of Sweeps; one to the number of elevation steps.

Similiarly, a Sweep is defined as a collection of rays throughout the 360 degree revolution. The RADAR takes measurements continually while it is sweeping. The number of rays collected is typically a function of the beamwidth. A beam width of .95 degrees will yield 379 rays for each sweep. For nexrad data the number of rays collected for each sweep is approximately 366. These rays are referred to as Ray in the RSL. Thus, a Sweep is simply an array of Rays; one to the number of rays.

And, a Ray is one ray measurement from the RADAR. A ray is a series of measurements from the minimum to the maximum range of the RADAR. Think of it as a meaurement from zero to the maximum range while the RADAR is at one azimuthal angle. In reality, the radar is revolving continuously. The number of data values in a ray is represented in KM and it defines the resolution of the RADAR. NEXRAD is typcally 1.0KM and the new SIGMET RADAR is .25 KM. Thus, a Ray is simply an array of Range values; one to the number of bin. The number of bins is defined by the range of measured space divided by the resolution of a measurement less any to the minimum range.

Finally, a Range value is simply a floating point number that represents the data.

It should be obvious that the Radar data structure is an array of Volumes which is an array of Sweeps which is an array of Rays which is and array of Ranges. Whew! This hierarchial description is easy to understand, when you only think of each object as an array of the next subobject. Thinking of it as a 4 or 5 dimensional array is very difficult.