Opened 8 years ago

Closed 6 years ago

Last modified 6 years ago

#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)

ropp_pp_occ_tool.f90 (51.7 KB ) - added by Ian Culverwell 8 years ago.
ropp_pp_occ_tool.f90
ropp_pp_occ_tool_24042017.f90 (58.5 KB ) - added by Ian Culverwell 8 years ago.
ropp_pp_occ_tool_24042017.f90
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC (1.3 MB ) - added by Ian Culverwell 8 years ago.
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.NC (1.2 MB ) - added by Ian Culverwell 8 years ago.
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.NC
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.gif (49.7 KB ) - added by Ian Culverwell 8 years ago.
FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.gif
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif (48.6 KB ) - added by Ian Culverwell 8 years ago.
FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif
ropp_pp_occ_tool_17012018.f90 (57.2 KB ) - added by Ian Culverwell 7 years ago.
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC (960.6 KB ) - added by Ian Culverwell 7 years ago.
test-data/FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC (1.4 MB ) - added by Ian Culverwell 7 years ago.
test-data/FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC (1.3 MB ) - added by Ian Culverwell 7 years ago.
test-data/FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC (1.1 MB ) - added by Ian Culverwell 7 years ago.
test-data/FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif (54.8 KB ) - added by Ian Culverwell 7 years ago.
FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif (52.6 KB ) - added by Ian Culverwell 7 years ago.
FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif (52.3 KB ) - added by Ian Culverwell 7 years ago.
FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif (52.4 KB ) - added by Ian Culverwell 7 years ago.
FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif

Change history (26)

by Ian Culverwell, 8 years ago

Attachment: ropp_pp_occ_tool.f90 added

ropp_pp_occ_tool.f90

by Ian Culverwell, 8 years ago

ropp_pp_occ_tool_24042017.f90

comment:1 by Ian Culverwell, 8 years ago

A further update to ropp_pp_occ_tool.f90 is attached.

comment:2 by Ian Culverwell, 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 Ian Culverwell, 8 years ago

FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.NC

by Ian Culverwell, 8 years ago

FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.NC

by Ian Culverwell, 8 years ago

FY3C_GNOSX_GBAL_L1_20170222_0037_AEG28_MS.gif

by Ian Culverwell, 8 years ago

FY3C_GNOSX_GBAL_L1_20170217_1403_AEG13_MS.gif

comment:3 by Ian Culverwell, 7 years ago

Attached is the very latest version of ropp_pp_occ_tool.f90.

by Ian Culverwell, 7 years ago

comment:4 by Ian Culverwell, 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 Ian Culverwell, 7 years ago

test-data/FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS.NC

by Ian Culverwell, 7 years ago

test-data/FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS.NC

by Ian Culverwell, 7 years ago

test-data/FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS.NC

by Ian Culverwell, 7 years ago

test-data/FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS.NC

comment:5 by Ian Culverwell, 7 years ago

Note that we will have to put in support for reading GNOS data too. This work is covered in #377.

comment:7 by Ian Culverwell, 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 Ian Culverwell, 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: FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif 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: FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif 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 FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif 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 FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif There is very little difference between the ROPP9.0 and ROPP9.1 versions of the code in this case.

by Ian Culverwell, 7 years ago

FY3C_GNOSX_GBAL_L1_20170128_0850_AEG18_MS_ROPP.gif

by Ian Culverwell, 7 years ago

FY3C_GNOSX_GBAL_L1_20170128_0332_AEG15_MS_ROPP.gif

by Ian Culverwell, 7 years ago

FY3C_GNOSX_GBAL_L1_20170128_1648_AEG31_MS_ROPP.gif

by Ian Culverwell, 7 years ago

FY3C_GNOSX_GBAL_L1_20170128_1138_AEG27_MS_ROPP.gif

comment:9 by Ian Culverwell, 7 years ago

Milestone: 10.09.1

comment:10 by Ian Culverwell, 6 years ago

Resolution: fixed
Status: newclosed

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 Ian Culverwell, 6 years ago

(For the record, the ic_gnos mods were merged into ROPP91_prototype at r5623.)

Note: See TracTickets for help on using tickets.