UFO
ufo::ConventionalProfileProcessing Class Reference

Conventional profile processing. More...

#include <ConventionalProfileProcessing.h>

Inheritance diagram for ufo::ConventionalProfileProcessing:
Collaboration diagram for ufo::ConventionalProfileProcessing:

Public Types

typedef ConventionalProfileProcessingParameters Parameters_
 

Public Member Functions

 ConventionalProfileProcessing (ioda::ObsSpace &, const Parameters_ &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
 
 ~ConventionalProfileProcessing ()
 
std::vector< int > getMismatches () const
 
- 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
 
void individualProfileChecks (ProfileDataHandler &profileDataHandler, ProfileCheckValidator &profileCheckValidator, ProfileChecker &profileChecker, const CheckSubgroup &subGroupChecks) const
 Run checks on individual profiles sequentially. More...
 
void entireSampleChecks (ProfileDataHandler &profileDataHandler, ProfileCheckValidator &profileCheckValidator, ProfileChecker &profileChecker, const CheckSubgroup &subGroupChecks) const
 Run checks that use all of the profiles at once. More...
 
int qcFlag () const override
 

Private Attributes

ConventionalProfileProcessingParameters options_
 Configurable options. More...
 
std::vector< int > nMismatches_
 

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

Conventional profile processing.

This filter applies a variety of QC checks to profile data. The filter also averages profiles onto model levels prior to their use in data assimilation.

The temperature consistency checks available are as follows:

  1. Basic checks of pressure
  2. Check for different temperatures at the same pressure
  3. Temperature sign change test using model background
  4. Check for superadiabatic layers more than 50 hPa above surface
  5. Check of standard level temperatures against values interpolated from significant levels
  6. Check for hydrostatic consistency of standard levels (+ surface)
    1. calculation of thickness residuals
    2. decision making algorithm used where there are large residuals
  7. Junk whole report if > 8 errors There are also consistency checks for the interpolated wind speed and the relative humidity.

The sign, standard level and hydrostatic checks are largely based on methods described in the WMO Guide on the Global Data-Procesing System (1993). In general the tolerances have been relaxed slightly so that fewer 'marginal' cases are flagged. In the hydrostatic check the effect of moisture on the thickness is neglected and no special account is taken of the tropopause. Corrections are suggested for apparently simple temperature or height errors. If a height correction is within 10 m of a multiple of 100 m then the rounded correction is applied, temperature corrections are not applied. In some cases interpolation flags are switched off if the hydrostatic check is fairly clear-cut.

Inputs:

  • Arrays containing observed and background values
    • Should be in order of increasing height/decreasing pressure
    • interleaved standard and significant levels (if input is standard levels only then superadiabatic and hydrostatic checks will be performed)

Outputs:

  • QC flags
  • Some corrections to reported values (not applied by default):
    • corrections to sign of temperature
    • corrections to height (multiples of 100 m)

Definition at line 86 of file src/ufo/filters/ConventionalProfileProcessing.h.

Member Typedef Documentation

◆ Parameters_

Constructor & Destructor Documentation

◆ ConventionalProfileProcessing()

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

Definition at line 32 of file ConventionalProfileProcessing.cc.

Here is the call graph for this function:

◆ ~ConventionalProfileProcessing()

ufo::ConventionalProfileProcessing::~ConventionalProfileProcessing ( )

Definition at line 79 of file ConventionalProfileProcessing.cc.

Member Function Documentation

◆ applyFilter()

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

Implements ufo::FilterBase.

Definition at line 149 of file ConventionalProfileProcessing.cc.

Here is the call graph for this function:

◆ classname()

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

◆ entireSampleChecks()

void ufo::ConventionalProfileProcessing::entireSampleChecks ( ProfileDataHandler profileDataHandler,
ProfileCheckValidator profileCheckValidator,
ProfileChecker profileChecker,
const CheckSubgroup subGroupChecks 
) const
private

Run checks that use all of the profiles at once.

Definition at line 128 of file ConventionalProfileProcessing.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getMismatches()

std::vector<int> ufo::ConventionalProfileProcessing::getMismatches ( ) const
inline

Return the number of mismatches between values produced by the checking routines and the equivalents produced in the OPS code. The values checked are: the QC flags for each observation, intermediate values used in various calculations for each observation, and error counters for each profile.

Definition at line 103 of file src/ufo/filters/ConventionalProfileProcessing.h.

Here is the caller graph for this function:

◆ individualProfileChecks()

void ufo::ConventionalProfileProcessing::individualProfileChecks ( ProfileDataHandler profileDataHandler,
ProfileCheckValidator profileCheckValidator,
ProfileChecker profileChecker,
const CheckSubgroup subGroupChecks 
) const
private

Run checks on individual profiles sequentially.

Definition at line 83 of file ConventionalProfileProcessing.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ print()

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

Implements ufo::FilterBase.

Definition at line 200 of file ConventionalProfileProcessing.cc.

Here is the caller graph for this function:

◆ qcFlag()

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

Implements ufo::FilterBase.

Definition at line 122 of file src/ufo/filters/ConventionalProfileProcessing.h.

Member Data Documentation

◆ nMismatches_

std::vector<int> ufo::ConventionalProfileProcessing::nMismatches_
mutableprivate

Number of mismatches between values produced in this code and their OPS equivalents (used for validation)

Definition at line 129 of file src/ufo/filters/ConventionalProfileProcessing.h.

◆ options_

ConventionalProfileProcessingParameters ufo::ConventionalProfileProcessing::options_
private

Configurable options.

Definition at line 125 of file src/ufo/filters/ConventionalProfileProcessing.h.


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