Problems discovered during testing

This list documents issues discovered during the testing of the REAPER L2 chain. The current status of the ReaperProducts is maintained on that page.

There are also ReaperIssues which were noted during development. These need to be checked to find out if they are problems.

Documents that may need to be updated can be found in here msslc6:/home/djb/00_REAPER_docs/. Take a copy, make a small change, and put it back here with a suffix describing the change. DJB will merge it in Word and then put the updated master copy back.

During testing, capture how you test a field and put that information into the test document. That way, we write it as we go along.

If you spot something that is correct according to the DPM accepted at CDR but could be improved, then note it as ReaperImprovements.

Renumbering of fields and sizes in documentation

Symptom

After the "L2 output cleanups" task (see below), many fields (i.e. netCDF variables) have been added and removed.

Diagnosis

When testing and L2 product changes are considered completed, L2 fields need renumbering in documents. Also, the byte size subtotals and totals need to be recalculated. This applies to tables in the documents and to paragraphs describing each field. The affected documents are (at least) Reaper-ProdSpec-v....docx and Reaper-IODD-v....docx.

Owner

Open (put initials here once claimed)

Corrective Steps

TBD

L2 output cleanups (S)GDR

Symptom

Some variables are not filled, some are not at the right cadence, general confusion

Split mean_quadratic_error into mean_quadratic_error_ice2 and mean_quadratic_error_ocean. Make the internal variables (j_MQE_ocean, j_MQE_ice2) double rather than long int to preserve precision for conversion to units of 10^4 counts on output.

Remove Alt_wnd

Fill CG_Rng_C from d_COG_C in internal block H15

Make ice2_le_width 20Hz

Make ice2_1st_te_slope 20 Hz

Make ice2_2nd_te_slope 20 Hz

Remove L_inst_rng_C

Remove L_Dop_C

Remove flagging of slopes application and errors from the 1Hz flag and create new 20 Hz booleans using bytes next to the offset_ variables. f_slope_applied and f_slope_error. Fill f_slope_applied from at_RA_RP_H12_TOL[i_HRB].i_slope_corrected. Details of changes made: 1Hz bit COR_APP_SLOPE (in t_RA_RP_L5_CORR.uj_f_corr_applied) changed to spare. Uses of it are replace by the existing boolean at_RA_RP_H12_TOL[i_HRB].i_slope_corrected. This boolean is written to L2 product in the 20Hz netCDF variable f_slope_applied. 1Hz bit COR_ERR_SLOPE (in t_RA_RP_L5_CORR.uj_f_corr_error) changed to spare. Uses of it are replace by a new boolean at_RA_RP_H12_TOL[i_HRB].i_f_slope_error. This boolean is written to L2 product in the 20Hz netCDF variable f_slope_error. The related map_slope_valid field was also removed from the product.

Create new variable elevation_ice1 = alt - ice1_range. To be filled after ice1_range is fully corrected, so do on output.

Create new variable sum_C_applied at 20 Hz. Fill it with sum_corr from L2URNGE plus the SSB if applied for that HRB.

Remove H_LPTNE (Other changes made: also removed from meteo product)

Remove 20 Hz versions of Tb_23_8 and Tb_36_5 as they are not used

Remove Rng_Est, SWH_Est, Sig0_Est, f_HRB_deriv_valid, noise_floor

agc removed from GDR. (There remains an AGC field in SGDR).

Tb_23_6 typos corrected to Tb_23_8.

AGG typo corrected to AGC.

Retracker Failures

Symptom

Retrackers (OCOG and sea-ice) fail on all records.

Diagnosis

The retrackers can't cope with normal ERS waveforms. They have significant power in the first few bins and the retracker attempts to retrack to that instead of the actual waveform.

Owner

DJB Working

Corrective Steps

Check the DPM and update if necessary. The algorithms should only use the bins between OCOG_start_bin and OCOG_end_bin (different name for sea-ice retracker) so that these parameters can be tuned to exclude the bins that we don't want. Note, there may be an existing algorithm spec for ERS with this in (TBC).

Send updated DPM copy to DJB for merging into master

Update the code (this has already been done as a quick hack to allow initial testing).

Corrective Steps

Move the parameter from characterisation to algorithm constants and update the XML files, readers and structures.

Ionospheric code only handles one filetype

Symptom

No handling of differences between GPS and model corrections

Diagnosis

Remko supplied two different sets of files, one from a NIC09 model and the other from GPS. We just treat it all the same.

Owner

LKG. Done. Put in CVS 17/08/11. Choice of GPS or model is selectable, if no selection made GPS is the default.

Corrective Steps

Duplicate the Ionospheric code so that it handles 2 filetypes, one for model and one for GPS. GPS is optional but model is mandatory.

Interpolate the model and fill i_Iono_C_mod and the GPS if available and fill i_Iono_C_GIM

Make the range calculation prefer GIM but fall back to model if GIM is not available.

Uses of uninitialised values

Symptom

valgrind reports many uses of an "uninitialised value" which is allocated on the stack by xf_tree_path_read_integer_node_value(). No obvious problem results from these errors. However, when running under Ubuntu this libxml2 library consistently crashed with a SEGV, during j_ALGORITHM_CONSTANTS_reader(), until it was upgraded to v2.7.8. So this library may be a prime suspect if any crashes occur in future.

Corrective Steps

L2_name2id string lookups are slow

The L2_name2id lookups involve a search+comparison through a table of strings. This is apparently done 21 million times and takes up to 8 seconds of total execution time. Look in to optimising this.

Diagnosis

n/a

Owner

CD. Completed on 18/08/2011.

Corrective Steps

Revision 1.11 of output_SGDR.c and 1.9 of output_meteo.c no longer use any searching or comparisons. Compile time identifiers are now in an enum. These are translated to run-time IDs by a direct lookup in an array. The chain now runs 6 seconds (7%) faster.