UFO
ufo::ModelBestFitPressure Class Reference

A filter to calculate the best fit pressure and if the pressure is well constrained. Also can calculate the best fit eastward/northward winds. More...

#include <ModelBestFitPressure.h>

Inheritance diagram for ufo::ModelBestFitPressure:
Collaboration diagram for ufo::ModelBestFitPressure:

Public Types

typedef ModelBestFitPressureParameters Parameters_
 

Public Member Functions

 ModelBestFitPressure (ioda::ObsSpace &, const Parameters_ &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 ~ModelBestFitPressure ()
 
- Public Member Functions inherited from ufo::FilterBase
 FilterBase (ioda::ObsSpace &, const FilterParametersBaseWithAbstractAction &parameters, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 FilterBase (ioda::ObsSpace &, const eckit::Configuration &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 ~FilterBase ()
 
- Public Member Functions inherited from ufo::ObsProcessorBase
 ObsProcessorBase (ioda::ObsSpace &, bool deferToPost, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 ~ObsProcessorBase ()
 
void preProcess () override
 
void priorFilter (const GeoVaLs &) override
 
void postFilter (const ioda::ObsVector &, const ioda::ObsVector &, const ObsDiagnostics &) override
 
oops::Variables requiredVars () const override
 
oops::Variables requiredHdiagnostics () const override
 

Static Public Member Functions

static const std::string classname ()
 

Private Member Functions

void print (std::ostream &) const override
 
void applyFilter (const std::vector< bool > &, const Variables &, std::vector< std::vector< bool >> &) const override
 A filter that calculates the pressure at which the AMV wind vector (u,v) is a best match to the model wind profile. More...
 
int qcFlag () const override
 

Private Attributes

Parameters_ parameters_
 

Additional Inherited Members

- Protected Attributes inherited from ufo::FilterBase
const eckit::LocalConfiguration config_
 
ufo::Variables filtervars_
 
- Protected Attributes inherited from ufo::ObsProcessorBase
ioda::ObsSpace & obsdb_
 
std::shared_ptr< ioda::ObsDataVector< int > > flags_
 
std::shared_ptr< ioda::ObsDataVector< float > > obserr_
 
ufo::Variables allvars_
 
ObsFilterData data_
 

Detailed Description

A filter to calculate the best fit pressure and if the pressure is well constrained. Also can calculate the best fit eastward/northward winds.

The model best-fit pressure is defined as the model pressure (Pa) with the smallest vector difference between the AMV and model background wind, but additionally is not allowed to be above top pressure (top_pressure) (can reasonably expect that AMVs should not be above this level). Vertical interpolation is performed between model levels to find the minimum vector difference.

Checking if the pressure is well-constrained:

  1. Remove any winds where the minimum vector difference between the AMV eastward and northward winds and the background column u and v is greater than upper_vector_diff. This check aims to remove cases where there is no good agreement between the AMV and the winds at any level in the background wind column.
  2. Remove any winds where the vector difference is less than the minimum vector difference + lower_vector_diff outside of a band +/- pressure_band_half_width from the best-fit pressure level. This aims to catch cases where there are secondary minima or very broad minima. In both cases the best-fit pressure is not well constrained. The default parameter values were chosen by eye-balling vector difference profiles and together remove just over half the winds.

See ModelBestFitPressureParameters for the documentation of the parameters controlling this filter.

Definition at line 84 of file ModelBestFitPressure.h.

Member Typedef Documentation

◆ Parameters_

The type of parameters accepted by the constructor of this filter. This typedef is used by the FilterFactory.

Definition at line 89 of file ModelBestFitPressure.h.

Constructor & Destructor Documentation

◆ ModelBestFitPressure()

ufo::ModelBestFitPressure::ModelBestFitPressure ( ioda::ObsSpace &  obsdb,
const Parameters_ parameters,
std::shared_ptr< ioda::ObsDataVector< int > >  flags,
std::shared_ptr< ioda::ObsDataVector< float > >  obserr 
)

Definition at line 30 of file ModelBestFitPressure.cc.

◆ ~ModelBestFitPressure()

ufo::ModelBestFitPressure::~ModelBestFitPressure ( )

Definition at line 47 of file ModelBestFitPressure.cc.

Member Function Documentation

◆ applyFilter()

void ufo::ModelBestFitPressure::applyFilter ( const std::vector< bool > &  apply,
const Variables filtervars,
std::vector< std::vector< bool >> &  flagged 
) const
overrideprivatevirtual

A filter that calculates the pressure at which the AMV wind vector (u,v) is a best match to the model wind profile.

The best-fit pressure is also checked to see if it is well-constrained (True/False)

Example:

obs filter:
- filter: Model Best Fit Pressure
observation pressure:
name: air_pressure_levels@MetaData
top pressure: 10000
pressure band half-width: 10000
upper vector diff: 4
lower vector diff: 2
tolerance vector diff: 1.0e-8
tolerance pressure: 0.01
calculate bestfit winds: true
Author
A.Martins (Met Office)
Date
18/05/2021: Created

Implements ufo::FilterBase.

Definition at line 75 of file ModelBestFitPressure.cc.

Here is the call graph for this function:

◆ classname()

static const std::string ufo::ModelBestFitPressure::classname ( )
inlinestatic

Definition at line 91 of file ModelBestFitPressure.h.

◆ print()

void ufo::ModelBestFitPressure::print ( std::ostream &  os) const
overrideprivatevirtual

Implements ufo::FilterBase.

Definition at line 295 of file ModelBestFitPressure.cc.

◆ qcFlag()

int ufo::ModelBestFitPressure::qcFlag ( ) const
inlineoverrideprivatevirtual

Implements ufo::FilterBase.

Definition at line 102 of file ModelBestFitPressure.h.

Member Data Documentation

◆ parameters_

Parameters_ ufo::ModelBestFitPressure::parameters_
private

Definition at line 104 of file ModelBestFitPressure.h.


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