*/
-typedef short UF_buffer[16384]; /* Bigger than documented 4096. */
+/* Changed old buffer size (16384) for larger dualpol files. BLK 5/20/2011 */
+typedef short UF_buffer[20000]; /* Bigger than documented 4096. */
void swap_uf_buffer(UF_buffer uf);
void swap2(short *buf, int n);
if (ray->h.azimuth > 0) uf_ma[32] = ray->h.azimuth*64 + 0.5;
else uf_ma[32] = ray->h.azimuth*64 - 0.5;
uf_ma[33] = ray->h.elev*64 + 0.5;
- uf_ma[34] = uf_sweep_mode;
+ uf_ma[34] = uf_sweep_mode;
if (ray->h.fix_angle != 0.)
uf_ma[35] = ray->h.fix_angle*64.0 + 0.5;
else uf_ma[35] = sweep[k]->h.elev*64.0 + 0.5;
/* ---- Begining of LOCAL USE HEADER BLOCK. */
q_lu = 0;
- /* Note: Code within "#ifdef LUHDR_VR_AZ" below is retained for testing
- * and is not normally compiled. It was used to deal with azimuth
- * differences between DZ and VR in WSR-88D split-cuts, now handled in
- * ingest routine.
- */
-/* 5/18/2010 Temporarily define LUHDR_VR_AZ until merge_split_cuts is
- completed. */
+ /* TODO: Code within "#ifdef LUHDR_VR_AZ" below should be removed
+ * once testing of merge_split_cuts is completed.
+ */
+/* 7/25/2011 There's really no need to remove this code after merge_split_cuts.
+ * We can continue using it for exact VR azimuth in RSL. Non-RSL programs can
+ * use the mandatory header azimuth, which is exact for DZ and a close
+ * approximation for VR when merge-split-cuts is applied.
+ */
+/* Preprocessor directives are for testing. */
#define LUHDR_VR_AZ
#ifdef LUHDR_VR_AZ
/* If DZ and VR azimuths are different, store VR azimuth in Local Use
* Header. This is done for WSR-88D split cuts.
- */
+ */
if (sweep[DZ_INDEX] && sweep[VR_INDEX]) {
if (sweep[DZ_INDEX]->ray[j] && sweep[VR_INDEX]->ray[j]) {
vr_az = sweep[VR_INDEX]->ray[j]->h.azimuth;
uf_dh[2] = nfield;
/* 'nfield' indexes the field number.
* 'k' indexes the particular field from the volume.
- * RSL_ftype contains field names and is defined in rsl.h.
+ * RSL_ftype contains field names and is defined in rsl.h.
*/
if (k > max_field_names-1) {
- fprintf(stderr,
+ fprintf(stderr,
"RSL_uf_to_radar: No field name for volume index %d\n", k);
- fprintf(stderr,"RSL_ftype must be updated in rsl.h for new field.\n");
- fprintf(stderr,"Quitting now.\n");
+ fprintf(stderr,"RSL_ftype must be updated in rsl.h for new field.\n");
+ fprintf(stderr,"Quitting now.\n");
return;
- }
+ }
memcpy(&uf_dh[3+2*(nfield-1)], RSL_ftype[k], 2);
if (little_endian()) swap2(&uf_dh[3+2*(nfield-1)], 2/2);
if (current_fh_index == 0) current_fh_index = len_ma+len_op+len_lu+len_dh;
/* ---- Begining of FIELD HEADER. */
if (q_fh) {
uf_fh = uf+current_fh_index;
- uf_fh[1] = scale_factor = 100;
+ if (k != PH_INDEX) scale_factor = 100;
+ else scale_factor = 10;
+ uf_fh[1] = scale_factor;
uf_fh[2] = ray->h.range_bin1/1000.0;
uf_fh[3] = ray->h.range_bin1 - (1000*uf_fh[2]);
uf_fh[4] = ray->h.gate_size;