UFO
ufo::GaussianThinningParameters Class Reference

Options controlling the operation of the Gaussian_Thinning filter. More...

#include <GaussianThinningParameters.h>

Inheritance diagram for ufo::GaussianThinningParameters:
Collaboration diagram for ufo::GaussianThinningParameters:

Public Member Functions

void deserialize (util::CompositePath &path, const eckit::Configuration &config) override
 Reimplemented to detect incompatible options. More...
 
- Public Member Functions inherited from ufo::FilterParametersBase
const FilterActionParametersBaseaction () const override
 Return parameters defining the action performed on observations flagged by the filter. More...
 

Public Attributes

oops::Parameter< float > horizontalMesh {"horizontal_mesh", defaultHorizontalMesh(), this}
 
oops::Parameter< bool > useReducedHorizontalGrid {"use_reduced_horizontal_grid", true, this}
 
oops::OptionalParameter< bool > roundHorizontalBinCountToNearest
 
oops::Parameter< float > verticalMesh {"vertical_mesh", -1.0f, this}
 
oops::Parameter< float > verticalMin {"vertical_min", 100.0f, this}
 Lower bound of the vertical coordinate interval split into cells of size vertical_mesh. More...
 
oops::Parameter< float > verticalMax {"vertical_max", 110000.0f, this}
 
oops::Parameter< std::string > verticalCoord {"vertical_coordinate", "air_pressure", this}
 Observation vertical coordinate. More...
 
oops::OptionalParameter< util::Duration > timeMesh {"time_mesh", this}
 
oops::OptionalParameter< util::DateTime > timeMin {"time_min", this}
 
oops::OptionalParameter< util::DateTime > timeMax {"time_max", this}
 
oops::OptionalParameter< VariablecategoryVariable {"category_variable", this}
 
oops::OptionalParameter< VariablepriorityVariable {"priority_variable", this}
 
oops::OptionalParameter< DistanceNormdistanceNorm {"distance_norm", this}
 
oops::Parameter< bool > opsCompatibilityMode {"ops_compatibility_mode", false, this}
 
oops::Parameter< bool > thinIfAnyFilterVariablesAreValid {"thin_if_any_filter_variables_are_valid", true, this}
 
- Public Attributes inherited from ufo::FilterParametersBaseWithAbstractAction
oops::OptionalParameter< std::vector< Variable > > filterVariables
 
oops::Parameter< std::vector< WhereParameters > > where {"where", {}, this}
 
oops::Parameter< bool > deferToPost {"defer to post", false, this}
 

Static Private Member Functions

static float defaultHorizontalMesh ()
 

Detailed Description

Options controlling the operation of the Gaussian_Thinning filter.

Definition at line 55 of file GaussianThinningParameters.h.

Member Function Documentation

◆ defaultHorizontalMesh()

static float ufo::GaussianThinningParameters::defaultHorizontalMesh ( )
inlinestaticprivate

Definition at line 182 of file GaussianThinningParameters.h.

◆ deserialize()

void ufo::GaussianThinningParameters::deserialize ( util::CompositePath &  path,
const eckit::Configuration &  config 
)
override

Reimplemented to detect incompatible options.

Definition at line 16 of file GaussianThinningParameters.cc.

Member Data Documentation

◆ categoryVariable

oops::OptionalParameter<Variable> ufo::GaussianThinningParameters::categoryVariable {"category_variable", this}

A string-valued or integer-valued variable. Observations with different values of that variable are thinned separately.

Note: The filter will automatically detect if the chosen variable was also used to group observations into records when the ObsSpace was constructed, and if so, avoid exchanging data with other MPI processes, since in these circumstances each process can thin its observations independently from others.

The variable used to group observations into records can be set with the obs space.obsdatain.obsgrouping.group variable YAML option.

Definition at line 125 of file GaussianThinningParameters.h.

◆ distanceNorm

oops::OptionalParameter<DistanceNorm> ufo::GaussianThinningParameters::distanceNorm {"distance_norm", this}

Determines which of the highest-priority observations lying in a cell is retained.

Allowed values:

  • geodesic: retain the observation closest to the cell centre in the horizontal direction (the vertical coordinate and time are ignored)
  • maximum: retain the observation lying furthest from the cell's bounding box in the system of coordinates in which the cell is a unit cube (all dimensions along which thinning is enabled are taken into account).

Defaults to geodesic unless the ops_compatibility_mode option is enabled, in which case it's set to maximum.

Definition at line 146 of file GaussianThinningParameters.h.

◆ horizontalMesh

oops::Parameter<float> ufo::GaussianThinningParameters::horizontalMesh {"horizontal_mesh", defaultHorizontalMesh(), this}

Cell size (in km) along the meridians. Thinning in the horizontal direction is disabled if this parameter is negative.

Definition at line 70 of file GaussianThinningParameters.h.

◆ opsCompatibilityMode

oops::Parameter<bool> ufo::GaussianThinningParameters::opsCompatibilityMode {"ops_compatibility_mode", false, this}

Set this option to true to make the filter produce identical results as the Ops_Thinning subroutine from the Met Office OPS system when both are run serially (on a single process).

The filter behavior is modified in several ways:

  • The round_horizontal_bin_count_to_nearest option is set to true.
  • The distance_norm option is set to maximum.
  • Bin indices are calculated by rounding values away from rather towards zero. This can alter the bin indices assigned to observations lying at bin boundaries.
  • The bin lattice is assumed to cover the whole real axis (for times and pressures) or the [-360, 720] degrees interval (for longitudes) rather than just the intervals [time_min, time_max], [pressure_min, pressure_max] and [0, 360] degrees, respectively. This may cause observations lying at the boundaries of the latter intervals to be put in bins of their own, which is normally undesirable.
  • A different (non-stable) sorting algorithm is used to order observations before inspection. This can alter the set of retained observations if some bins contain multiple equally good observations (with the same priority and distance to the cell center measured with the selected norm). If this happens for a significant fraction of bins, it may be a sign the criteria used to rank observations (the priority and the distance norm) are not specific enough.

Definition at line 172 of file GaussianThinningParameters.h.

◆ priorityVariable

oops::OptionalParameter<Variable> ufo::GaussianThinningParameters::priorityVariable {"priority_variable", this}

Variable storing observation priorities. Among all observations in a cell, only those with the highest priority are considered as candidates for retaining. If not specified, all observations are assumed to have equal priority.

Definition at line 132 of file GaussianThinningParameters.h.

◆ roundHorizontalBinCountToNearest

oops::OptionalParameter<bool> ufo::GaussianThinningParameters::roundHorizontalBinCountToNearest
Initial value:
{
"round_horizontal_bin_count_to_nearest", this}

True to set the number of zonal bands so that the band width is as close as possible to horizontal_mesh, and the number of bins in each zonal band so that the bin width in the zonal direction is as close as possible to that in the meridional direction. False to set the number of zonal bands so that the band width is as small as possible, but no smaller than horizontal_mesh, and the bin width in the zonal direction is as small as possible, but no smaller than in the meridional direction.

Defaults to false unless the ops_compatibility_mode option is enabled, in which case it's set to true.

Definition at line 83 of file GaussianThinningParameters.h.

◆ thinIfAnyFilterVariablesAreValid

oops::Parameter<bool> ufo::GaussianThinningParameters::thinIfAnyFilterVariablesAreValid {"thin_if_any_filter_variables_are_valid", true, this}

Option to choose how to treat observations where there are multiple filter variables. If true, treats an observation location as valid if any filter variables have not been rejected. If false, observations are treated as valid only if all filter variables have passed QC. This is an optional parameter, if omitted the default value is true.

Definition at line 179 of file GaussianThinningParameters.h.

◆ timeMax

oops::OptionalParameter<util::DateTime> ufo::GaussianThinningParameters::timeMax {"time_max", this}

Upper bound of the time interval split into cells of size time_mesh. This parameter is rounded upwards to the nearest multiple of time_mesh starting from time_min. Temporal thinning is disabled if this parameter is not specified.

Definition at line 111 of file GaussianThinningParameters.h.

◆ timeMesh

oops::OptionalParameter<util::Duration> ufo::GaussianThinningParameters::timeMesh {"time_mesh", this}

Cell size in the temporal direction. Temporal thinning is disabled if this this parameter is not specified or set to 0.

Definition at line 104 of file GaussianThinningParameters.h.

◆ timeMin

oops::OptionalParameter<util::DateTime> ufo::GaussianThinningParameters::timeMin {"time_min", this}

Lower bound of the time interval split into cells of size time_mesh. Temporal thinning is disabled if this parameter is not specified.

Definition at line 107 of file GaussianThinningParameters.h.

◆ useReducedHorizontalGrid

oops::Parameter<bool> ufo::GaussianThinningParameters::useReducedHorizontalGrid {"use_reduced_horizontal_grid", true, this}

True to use a reduced grid, with fewer cells at high latitudes. False to use a regular grid, with the same number of cells at all latitudes.

Definition at line 73 of file GaussianThinningParameters.h.

◆ verticalCoord

oops::Parameter<std::string> ufo::GaussianThinningParameters::verticalCoord {"vertical_coordinate", "air_pressure", this}

Observation vertical coordinate.

Definition at line 98 of file GaussianThinningParameters.h.

◆ verticalMax

oops::Parameter<float> ufo::GaussianThinningParameters::verticalMax {"vertical_max", 110000.0f, this}

Upper bound of the vertical coordinate interval split into cells of size vertical_mesh. This parameter is rounded upwards to the nearest multiple of vertical_mesh starting from vertical_min.

Definition at line 96 of file GaussianThinningParameters.h.

◆ verticalMesh

oops::Parameter<float> ufo::GaussianThinningParameters::verticalMesh {"vertical_mesh", -1.0f, this}

Cell size in the vertical direction. Thinning in the vertical direction is disabled if this parameter is not specified or negative.

Definition at line 90 of file GaussianThinningParameters.h.

◆ verticalMin

oops::Parameter<float> ufo::GaussianThinningParameters::verticalMin {"vertical_min", 100.0f, this}

Lower bound of the vertical coordinate interval split into cells of size vertical_mesh.

Definition at line 92 of file GaussianThinningParameters.h.


The documentation for this class was generated from the following files: