Ngradcart reads a Candis file on the standard input consisting of a volume of radar data from one or more radars. A Candis file is written to the standard output interpolated to a rectangular Cartesian grid with the information needed to make a three-dimensional variational analysis in order to apply mass continuity. Corrections are made for the earth's curvature.
Positions are adjusted for storm propagation to a specified time if the -s flag with the arguments reftime, svx, and svy are supplied. The reference time, reftime, should be in kiloseconds and the storm propagation velocity components should be in meters per second. If these arguments are not given, the assumed propagation velocity is zero. Note that svx and svy are not used to make the Cartesian velocity components storm-relative; they are Earth-relative.
Interpolation of the ray to the Cartesian grid is made after corrections for the storm velocity and the curvature of the earth are made. The actual interpolation is made taking the corrected position of each gate and distributing the values to all eight corners of the box by a weighting system based upon how close the gate is to each corner.
The other flags have the following meanings: -o invokes an alternate analysis which is very similar to that used by radcart5, allowing the use of radvert4 or ngradvert to obtain the vertical velocity. -l interpolates to a longitude-latitude grid rather than a local x-y grid. -c suppresses the use of gates less than a certain elevation h = zmin0 + zmincoef*range (in kilometers) if the ray is pointing downward. This is used to eliminate surface clutter. -r limits the gates accepted in the synthesis to beyond a minimum range in kilometers.
The -z flag constrains the vertical particle velocity to be zero in data-free regions without constraining the horizontal velocity components. This is done by arranging for the second eigenvector to point vertically and setting a2 to the value associated with -z. The larger the value of a2, the more strongly zero vertical velocity is enforced in the downstream 3-D variational analysis. Typical values which have been tried are in the range 1-10. The reflectivity is set to the bad data value which indicates to later analysis that the particle terminal velocity should be set to zero. Chisq is set to zero and pcount is set to 1000 to fool downstream programs into believing that we have good data. This option only applies to the new generation option, i. e., with no -o flag.
The -a flag introduces sounding data into the calculation, with these data being contained in the file named by the -a flag. This Candis file must be in the form of a 3-D grid containing bad data except where soundings provide information. The program ngauxcart is used to create this file. The grid and the system winds assumed by ngauxcart must be the same as those assumed by ngradcart. If it is desired to use just sounding data in the 3-D VAR analysis, then the -x option can be selected. This eliminates the use of radar data.
The nine mandatory arguments define the grid. Lon0, lat0, and alt0 define the lower southwest corner of the grid in degrees (longitude and latitude) and kilometers (altitude). Dx, dy, and dz define the grid interval in kilometers unless the -l flag is invoked, in which case it is degrees (longitude and latitude) and kilometers (altitude). Xsize, ysize, and zsize define the size of the domain in kilometers unless the -l flag is invoked, in which case it is degrees (longitude and latitude) and kilometers (altitude). The number of grid points in the x dimension is calculated from nx = xsize/dx + 1.5, with similar calculations in the y and z directions.
The input file must meet certain requirements. Each variable slice must contain data associated with a single ray. Certain assumptions are made about the names of input fields. These are easily changed by editing the source file before compilation. The assumed names are all located in defines near the beginning of the program. Default names of required input fields for each variable slice are "vr" (radial velocity in meters per second), "dbz" (reflectivity in dBZ), "lon" (longitude of radar in degrees), "lat" (latitude of radar in degrees), "alt" (altitude of radar in kilometers), "monotime" or "time" (time in kiloseconds), "az" (azimuth angle of the ray in degrees), and "el" (elevation of the ray in degrees). The first two fields are assumed to be one-dimensional with index field "range" (radar range in kilometers). The other fields are scalar. Note that "lon", "lat", and "alt" are not normally supplied for every ray for ground-based radars. These need to be somehow created (using, say, cdfmath) before applying ngradcart.
The output static slice contains the three index fields x, y, and z. The reflectivity is interpolated to the Cartesian grid, and an average is taken of the actual reflectivity, not the log-reflectivity. All other fields are dropped.
Additional Cartesian fields resulting from computations on input fields are added to the output. These fields are a1, a2, a3, b1, b2, b3, u1, u2, u3, chisq, avtime, deltime, and e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z.
Results are expressed at each grid point in a coordinate system rotated to make the errors in velocity components independent of each other. The quantities (e1x, e1y, e1z) etc. are the unit vectors pointing in each axis direction. (u1 = b1/a1, u2 = b2/a2, u3 = b3/a3) are the inferred velocity components and (a1, a2, a3) measure the errors in these components with the actual error for the ith component being proportional to ai^-1/2. The ai are ordered so the direction with the largest error comes first (a1) and the direction with the smallest error comes last (a3). Typically, a1 will be very small unless triple or quad Doppler measurements are available, with a set of non-coplanar rays passing through each grid box. Since such data are very rare, a1 and u1 are set to zero in this version of ngradcart. a2 is very small if only single Doppler data are available at the gridpoint in question. Thus, thresholding on this variable by insisting that data should have a2 greater than some value is appropriate for picking out good dual Doppler regions. Experimentation is advised, but a useful starting point is a2 > 0.03. a3 should always be large, i. e., approaching unity.
Chisq is the chi squared in the fit used to determine the Cartesian velocities from the radial velocities. Large values of chisq indicate one or more possible bad radial velocities, originating perhaps from bad unfolding. Thresholding on chisq can remove bad data, with a maximum allowed value of 10 suggested. Thresholding on pcount, the number of data samples per grid point, is also warranted, as having just a few radial velocity estimates can lead to less confidence in the data. Experimentation is also in order here.
All Doppler radial velocity data in a grid box should have comparable times for best results. avtime gives the average time (ks) of the radial velocities in each grid box whereas deltime gives the weighted standard deviation. Thus, thresholding on deltime can be used to enforce similar times.