Opened 14 years ago

Last modified 13 years ago

#255 closed enhancement

Extra WLC diagnostic in ropp_pp — at Version 1

Reported by: Ian Culverwell Owned by: Ian Culverwell
Priority: normal Milestone: 6.0
Component: ropp_pp Version: 5.0
Keywords: Diag, wlc Cc:

Description (last modified by Ian Culverwell)

User Kjartan Kinch has raised the following request, on behalf of Hans Gleisner:

The variable we would like to include in the list of diagnostic 
quantities is an array that measures the weight of the observation 
contribution in the optimized bending angle. This weight is an 
array of numbers between 0 and 1. A weight of 1 at a given impact 
parameter indicates that at this height the optimized bending angle 
is 100% data, in other words the optimized bending angle is 
identical to the raw bending angle at this height. If the weight is 
0 the optimized bending angle is 100% MSIS with no contribution 
from the data. The array of weights will gradually transition from 
numbers close to zero at high altitude to numbers close to one at 
low altitude.



I am attaching 3 Fortran code files (made by Hans) that demonstrate 
a possible implementation. These are modified versions of 
ropp_pp_occ_tool.f90, ropp_pp.f90 and 
ropp_pp_ionospheric_correction.f90. They are based on ROPP 5.0 and 
you should be able to proceed from these without to much trouble. 
Changes are marked with !HGL (although there might be a few changes 
that slipped in without this comment)



The solution implemented here adds the variable WLC to all three 
routines and the internal variable WLCH inside 
ropp_pp_ionospheric_correction.f90. Both variables represent the 
array of weights, just at two different sets of impact heights. The 
values are calculated in WLCH and then interpolated to form WLC, 
which is added to the output. 



In this implementation WLC is just added to standard output. It is 
probably more reasonable to add it to the diag structure and only 
add it to the output if the diag = .true. flag is set.



The extra argument to ropp_pp_ionospheric_correction.f90 is made 
OPTIONAL since we weren't sure that we know all the routines that 
called this. You might want to implement it differently



The programs are attached.

Sounds fair enough to me. I asked Hans Gleisner for comparison files to test.

Change history (4)

by Ian Culverwell, 14 years ago

Attachment: ropp_pp.f90 added

by Ian Culverwell, 14 years ago

by Ian Culverwell, 14 years ago

Attachment: ropp_pp_occ_tool.f90 added

comment:1 by Ian Culverwell, 14 years ago

Description: modified (diff)

Agreed with Hans that it would be neater to incorporate this extra diagnostics in the ppDiag structure, which holds "extra" data that are output if output_diag is set to .true. in the ropp_pp config file. (This means we don't have to alter the interfaces between the routines.)

Works OK in ropp6.0 base code. The following files are modified:

common/ropp_pp_types.f90

common/ropp_pp_diag2roprof.f90

tools/ropp_pp_invert_tool.f90

tools/ropp_pp_occ_tool.f90

icorr/ropp_pp_ionospheric_correction.f90

There's a small difference wrt Hans's data (supplied separately in brown covers). This was traced to the linearisation error discussed in ticket #223 (fixed in ropp>5.1, not fixed in Hans's code.)

When Hans's code is put on ROPP5.0 base code, there remains a puzzling very small difference (~1e-6 frac diff). Maybe some residual diff between the source codes. I've asked him if he's happy to live with this.

Note: See TracTickets for help on using tickets.