UFO
TrackCheckParameters.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2019 Met Office UK
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef UFO_FILTERS_TRACKCHECKPARAMETERS_H_
9 #define UFO_FILTERS_TRACKCHECKPARAMETERS_H_
10 
11 #include <map>
12 #include <string>
13 
14 #include "eckit/exception/Exceptions.h"
15 #include "oops/util/Duration.h"
16 #include "oops/util/parameters/OptionalParameter.h"
17 #include "oops/util/parameters/Parameter.h"
18 #include "oops/util/parameters/Parameters.h"
19 #include "oops/util/parameters/ParameterTraits.h"
21 #include "ufo/utils/Constants.h"
23 
24 namespace eckit {
25 class Configuration;
26 }
27 
28 namespace ufo {
29 
30 /// \brief Options controlling the operation of the track check filter.
32  OOPS_CONCRETE_PARAMETERS(TrackCheckParameters, TrackCheckUtilsParameters)
33 
34  public:
35  /// Assumed temporal resolution of the observations, i.e. absolute accuracy of the reported
36  /// observation times.
37  oops::Parameter<util::Duration> temporalResolution{
38  "temporal_resolution", util::Duration("PT1M"), this};
39  /// Assumed spatial resolution of the observations (in km), i.e. absolute accuracy of the
40  /// reported positions.
41  ///
42  /// Instantaneous speeds are estimated conservatively with the formula
43  ///
44  /// speed_estimate = (reported_distance - spatial_resolution) /
45  /// (reported_time + temporal_resolution).
46  oops::Parameter<float> spatialResolution{
47  "spatial_resolution", 1.0f, this};
48  /// Controls the size of the set of observations against which each observation is compared.
49  ///
50  /// Each observation O(x, t) (taken at time t and location x) is compared against the smallest
51  /// set of observations O'(x', t') immediately preceding and following O(x, t) that contains
52  /// \c num_distinct_buddies_per_direction earlier observations meeting the following conditions:
53  /// * |t' - t| > distinct_buddy_resolution_multiplier * temporal_resolution
54  /// * |x' - x| > distinct_buddy_resolution_multiplier * spatial_resolution
55  /// * O' has not yet been rejected
56  /// and the same number of later observations meeting the same conditions.
57  oops::Parameter<int> numDistinctBuddiesPerDirection{
58  "num_distinct_buddies_per_direction", 3, this};
59  /// Controls the size of the set of observations against which each observation is compared.
60  ///
61  /// \see numDistinctBuddiesPerDirection
62  oops::Parameter<int> distinctBuddyResolutionMultiplier{
63  "distinct_buddy_resolution_multiplier", 3, this};
64 
65  /// Maximum allowed rate of ascent and descent (Pa/s). If not set, climb rate checks are disabled.
66  oops::OptionalParameter<float> maxClimbRate{"max_climb_rate", this};
67  /// Encoding of the function mapping air pressure (in Pa) to the maximum speed (in m/s)
68  /// considered to be realistic.
69  ///
70  /// The function is taken to be a linear interpolation of a series of (pressure, speed) points.
71  /// The pressures and speeds at these points should be specified as keys and values of a
72  /// JSON-style map. Owing to a bug in the eckit YAML parser, the keys must be enclosed in quotes.
73  /// For example,
74  ///
75  /// max_speed_interpolation_points: { "0": 900, "100000": 100 }
76  ///
77  /// encodes a linear function equal to 900 m/s at 0 Pa and 100 m/s at 100000 Pa.
78  oops::Parameter<std::map<float, float>> maxSpeedInterpolationPoints{
79  "max_speed_interpolation_points", std::map<float, float>{{0.0f, 1000.0f}}, this};
80  /// Maximum fraction of climb rate or speed estimates obtained by comparison with other
81  /// observations that are allowed to fall outside the allowed ranges before an observation is
82  /// rejected.
83  oops::Parameter<float> rejectionThreshold {
84  "rejection_threshold", 0.5f, this};
85 };
86 
87 } // namespace ufo
88 
89 #endif // UFO_FILTERS_TRACKCHECKPARAMETERS_H_
Options controlling the operation of the track check filter.
oops::Parameter< std::map< float, float > > maxSpeedInterpolationPoints
oops::OptionalParameter< float > maxClimbRate
Maximum allowed rate of ascent and descent (Pa/s). If not set, climb rate checks are disabled.
oops::Parameter< float > rejectionThreshold
oops::Parameter< util::Duration > temporalResolution
oops::Parameter< float > spatialResolution
oops::Parameter< int > distinctBuddyResolutionMultiplier
oops::Parameter< int > numDistinctBuddiesPerDirection
Options controlling the operation of the track check filter.
Forward declarations.
Definition: ObsAodExt.h:21
Definition: RunCRTM.h:27