Opened 15 years ago
Closed 15 years ago
#204 closed enhancement (fixed)
Review refractivity thinner (missing data case)
Reported by: | Huw Lewis | Owned by: | Huw Lewis |
---|---|---|---|
Priority: | normal | Milestone: | 4.1 |
Component: | ropp_io | Version: | 4.0 |
Keywords: | thinner | Cc: |
Description
Input from Stig:
ROPP thinner > ------------ > > Stig is right in saying that the Levtmp variable used in part of the > refractivity thinning code comes from Level1b%Impact variable. There > was a (long-standing) assumption that if refractivity values are > available then so would some bending angle data. The Levtmp value is > used if there are missing refractivity values in a profile to define > an N value, which is then used to compute an impact height value Lev(:). > > The thinning is then applied to the ROdata%Lev2a%Refrac(:) data as a > function of Lev(:). The thinner now has a check for only using levels > with a valid height and data (refractivity) values, so I don't see > that there can be any influence of the height scale calculation where > we have missing refractivity data. Please pass on an example case > should you find one of course.
You're right! after the implementation of check on both Lev and Val in ropp_io_thin_select.f90 (since ROPP-3), this part of code should have no influence on the thinning if there are invalid refrac values. But are you saying that the intention was in fact to use the Level1b%Impact variable here in Levtmp? That seems odd, since there is generally a different number of samples in Lev1b and Lev2a, so the levels would not correspond to each other at all. Anyways, looking more at this piece of code it occurred to me that if ROdata%Lev2a%Alt_refrac(i) is invalid (-9999.9 in ROPP-3.0), then Lev(i) would be > 0, and not considered invalid in the check in thin_select, although it would be completely wrong. In ROPP-4, where missing value is -99999999.9, it is caught, though. Maybe it's better to get rid of this piece of code altogether in a future version. Instead we could do: WHERE (ROdata%Lev2a%Refrac > ropp_MDTV .AND. ROdata%Lev2a%Alt_refrac > ropp_MDTV) Lev = ( 1.0_wp + 1e-6_wp * ROdata%Lev2a%Refrac) & * ( ROdata%Lev2a%Alt_refrac + roc + undulation ) ELSEWHERE Lev = ropp_MDFV END WHERE If either roc or undulation is invalid it should fail instead of putting in default potentially wrong values (all levels set to ropp_MDFV in this case; i.e. thinning using the impact levels not possible then), -Stig
Note:
See TracTickets
for help on using tickets.
The thinner (v4.1) has now been updated to check that if no Level1b data exist in an input file, then Levtmp is allocated to the number of Level2a data points and initialised as Levtmp = ROdata%Lev2a%geop_refrac + roc See [2487].
Otherwise, the Lev() variable is initialised from the observation alt_refrac values. Note that Levtmp() is only used in the refractivity thinning in the calculation of reference refractivity values to compute sensible impact parameter values for all heights.
Ticket closed as fixed.