#488 closed enhancement (fixed)
Add L2-L1 BA extrapolation option to OCC tool
Reported by: | Ian Culverwell | Owned by: | Ian Culverwell |
---|---|---|---|
Priority: | normal | Milestone: | 9.1 |
Component: | ropp_pp | Version: | 9.0 |
Keywords: | L2-L1 | Cc: |
Description
Mi Liao (ROM SAF VS from CMA) had some problems getting ROPP to work with GNOS data, probably because a lot of the L2 profiles from that instrument disappear below about 40 km. She and Sean Healy (ECMWF) solved this by fitting L1-L2 above this height to a simple Zorro function (~ (a2-x2)-3/2) and extrapolating downwards to define an L2 below 40 km. Prototype code is attached. We should consider adding this as an option to ROPP.
Attachments (15)
Change history (26)
by , 8 years ago
Attachment: | ropp_pp_occ_tool.f90 added |
---|
comment:2 by , 8 years ago
Mi also sent two examples of files (attached) that caused ROPP to go into limbo before having to be manually crashed out. The height of the LEO flattens off at the end (wrongly), but the implied LEO lat and lon go crazy (equally wrongly). See attached figures. We should probably set a threshold on the change of the angle subtended by the LEO during an occultation, and bail out of it goes crazy.
by , 8 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC added |
---|
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC
by , 8 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.NC added |
---|
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.NC
by , 8 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.gif
by , 8 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif
by , 7 years ago
Attachment: | ropp_pp_occ_tool_17012018.f90 added |
---|
comment:4 by , 7 years ago
Four more files have been added to the ticket. These correspond to the rising/setting bad/good L2 extrapolation examples in Mi's VSR.
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC = bad/rising,
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC = bad/setting,
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC = good/rising
and
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC = good/setting.
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC added |
---|
test-data/FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC added |
---|
test-data/FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC added |
---|
test-data/FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC added |
---|
test-data/FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC
comment:5 by , 7 years ago
Note that we will have to put in support for reading GNOS data too. This work is covered in #377.
comment:6 by , 7 years ago
A branch to hold this work is at
https://trac.romsaf.org/ropp/browser/ropp_src/branches/dev/Share/ic_gnos
comment:7 by , 7 years ago
There are two problems to address. The first is the occasional jumps in the POD, which can (apparently) cause ROPP to hang. This has been fixed by calculating the angle between the radius to the LEO at the start and end of the orbit, and exiting the calculation if this exceeds 10 degrees. (Experimentation suggests that this angle is usually less than 5 deg for 'good' cases, and usually more than 20 deg for 'bad' cases.) Implementing this change, in a new routine ropp_pp/preprocess/ropp_pp_preprocess_gnos.f90, changes the processing of FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC (see the attached FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif for its crazy POD info) from
WARNING (from ropp_pp_preprocess): Occultation LEO id G001 not recognised . No mission-specific data pre-processing conducted. INFO (from ropp_pp_cutoff): Cut-off (bangle/impact criterion). Keep data 1 to 175 ... (from ropp_pp_radiooptic_analysis): L1 aperture: 16612.852 FFT points: 1024 forrtl: severe (174): SIGSEGV, segmentation fault occurred Image PC Routine Line Source ropp_pp_occ_tool 00000000004601D6 Unknown Unknown Unknown ropp_pp_occ_tool 0000000000499971 Unknown Unknown Unknown ropp_pp_occ_tool 000000000049D577 Unknown Unknown Unknown ropp_pp_occ_tool 0000000000484C18 Unknown Unknown Unknown ropp_pp_occ_tool 0000000000414C15 Unknown Unknown Unknown ropp_pp_occ_tool 0000000000405897 Unknown Unknown Unknown ropp_pp_occ_tool 00000000004041CC Unknown Unknown Unknown libc.so.6 0000003ECCA1ED1D Unknown Unknown Unknown ropp_pp_occ_tool 00000000004040C9 Unknown Unknown Unknown
to
INFO (from ropp_pp_preprocess): GNOS data preprocessing WARNING (from ropp_pp_preprocess_GNOS): Line of sight to LEO changes too much ( 1.087E+02 deg) during its orbit. Exiting processing. INFO: Writing to output file data/FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS_ROPP_test1.nc
Note that we don't try to process these rare profiles, just to exclude them smoothly from the processing. The resulting output file FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS_ROPP_test1.nc has no level 1a/1b/2a structures in it. The ROPP9.0 version doesn't exist at all, of course, the code having crashed out with a segmentation fault.
comment:8 by , 7 years ago
The second change concerns the extrapolation of L2 when the minimum valid height is too high. Code to do this, based on the attached ropp_pp_occ_tool_17012018.f90, has been implemented in the new routine ropp_pp/bangle/ropp_pp_bangle_gnos.f90.
Applying this code has the following effects on the examples in the VS32 report. (Every 10th point is plotted, for clarity.)
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC = bad/rising: Note how the crazy lower L2 bending angles have been overwritten by sane ones, which are obtained by extrapolating L1-L2 from higher up. Because of the negative refractivities generated when ROPP9.0 is run on this profile, no dry temperatures could be constructed in this case. At ROPP9.1, however, reasonable dry temperatures are obtained.
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC = bad/setting: The same replacement of unrealistic L2 bending angles is obtained as before. In this case the ROPP9.0 code could generate dry temperatures, but they are so poor as to be no more use than missing data.
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC = good/rising In this case, for which the L2 signal descends below 20 km, the modifications to the code correctly have little effect. One can see small differences in the dry temperature at around 25 km. This probably says more about the sensitivity of the calculation of dry temperature.
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC = good/setting There is very little difference between the ROPP9.0 and ROPP9.1 versions of the code in this case.
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif
by , 7 years ago
Attachment: | FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif added |
---|
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif
comment:9 by , 7 years ago
Milestone: | 10.0 → 9.1 |
---|
comment:10 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
All works OK across a range of compilers. We echo the remark in #377 that we should include a big lump of GNOS data in the test folder at ROPP10.0. But we can close the ticket for ROPP9.1.
comment:11 by , 6 years ago
(For the record, the ic_gnos mods were merged into ROPP91_prototype at r5623.)
ropp_pp_occ_tool.f90