UFO
ufo::ObsProfileAverage Class Reference

Observation operator for profile averaging. More...

#include <ObsProfileAverage.h>

Inheritance diagram for ufo::ObsProfileAverage:
Collaboration diagram for ufo::ObsProfileAverage:

Public Member Functions

 ObsProfileAverage (const ioda::ObsSpace &, const eckit::Configuration &)
 
 ~ObsProfileAverage () override
 
void simulateObs (const GeoVaLs &, ioda::ObsVector &, ObsDiagnostics &) const override
 Obs Operator. More...
 
const oops::Variables & requiredVars () const override
 Operator input required from Model. More...
 
oops::Variables simulatedVars () const override
 List of variables simulated by this operator. More...
 
- Public Member Functions inherited from ufo::ObsOperatorBase
 ObsOperatorBase (const ioda::ObsSpace &odb, const eckit::Configuration &=eckit::LocalConfiguration())
 
virtual ~ObsOperatorBase ()
 
virtual std::unique_ptr< Locationslocations () const
 Locations for GeoVaLs. More...
 

Static Public Member Functions

static const std::string classname ()
 

Private Member Functions

void print (std::ostream &) const override
 

Private Attributes

const ioda::ObsSpace & odb_
 ObsSpace. More...
 
ObsProfileAverageData data_
 Data handler for the ProfileAverage operator and TL/AD code. More...
 

Detailed Description

Observation operator for profile averaging.

This observation operator produces H(x) vectors which correspond to vertically-averaged profiles. The algorithm determines the locations at which reported-level profiles intersect each model pressure level. The intersections are found by stepping through the observation locations from the lowest-altitude value upwards. For each model level, the location of the observation whose pressure is larger than, and closest to, the model pressure is recorded. The <vertical coordinate> parameter controls the model pressure GeoVaLs that are used in this procedure. If there are no observations in a model level, which can occur for (e.g.) sondes reporting in low-frequency TAC format, the location corresponding to the last filled level is used. (If there are some model levels closer to the surface than the lowest-altitude observation, the location of the lowest observation is used for these levels.)

This procedure is iterated multiple times in order to account for the fact that model pressures can be slanted close to the Earth's surface. The number of iterations is configured with the <number of intersection iterations> parameter.

Having obtained the profile boundaries, values of model pressure and any simulated variables are obtained as in the locations that were determined in the procedure above. This produces a single column of model values which are used as the H(x) variable. In essence, this operator converts a set of GeoVaLs to what is referred to as a 'CX column' in OPS terminology.

In order for this operator to work correctly the ObsSpace must have been extended as in the following yaml snippet:

  • obs space: extension: average profiles onto model levels: 71

(where 71 can be replaced by the length of the air_pressure_levels GeoVaL). The H(x) values are placed in the extended section of the ObsSpace. Note that, unlike what may be expected for an observation operator, averaging of the model values across each layer is not performed; a single model value is used in each case. This follows what is used in OPS. Alternatives could be considered in the future.

A comparison with OPS is be performed if the option <compare with OPS> is set to true. This checks values of the locations and pressure values associated with the slant path. All other comparisons are performed with the standard 'vector ref' option in the yaml file.

This operator also accepts an optional variables parameter, which controls which ObsSpace variables will be simulated. This option should only be set if this operator is used as a component of the Composite operator. If variables is not set, the operator will simulate all ObsSpace variables. Please see the documentation of the Composite operator for further details.

Definition at line 85 of file ObsProfileAverage.h.

Constructor & Destructor Documentation

◆ ObsProfileAverage()

ufo::ObsProfileAverage::ObsProfileAverage ( const ioda::ObsSpace &  odb,
const eckit::Configuration &  config 
)

Definition at line 30 of file ObsProfileAverage.cc.

◆ ~ObsProfileAverage()

ufo::ObsProfileAverage::~ObsProfileAverage ( )
override

Definition at line 39 of file ObsProfileAverage.cc.

Member Function Documentation

◆ classname()

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

Definition at line 88 of file ObsProfileAverage.h.

◆ print()

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

Implements ufo::ObsOperatorBase.

Definition at line 99 of file ObsProfileAverage.cc.

Here is the call graph for this function:

◆ requiredVars()

const oops::Variables& ufo::ObsProfileAverage::requiredVars ( ) const
inlineoverridevirtual

Operator input required from Model.

Implements ufo::ObsOperatorBase.

Definition at line 95 of file ObsProfileAverage.h.

Here is the call graph for this function:

◆ simulatedVars()

oops::Variables ufo::ObsProfileAverage::simulatedVars ( ) const
inlineoverridevirtual

List of variables simulated by this operator.

The default implementation returns the list of all simulated variables in the ObsSpace.

Reimplemented from ufo::ObsOperatorBase.

Definition at line 97 of file ObsProfileAverage.h.

Here is the call graph for this function:

◆ simulateObs()

void ufo::ObsProfileAverage::simulateObs ( const GeoVaLs ,
ioda::ObsVector &  ,
ObsDiagnostics  
) const
overridevirtual

Obs Operator.

Implements ufo::ObsOperatorBase.

Definition at line 45 of file ObsProfileAverage.cc.

Here is the call graph for this function:

Member Data Documentation

◆ data_

ObsProfileAverageData ufo::ObsProfileAverage::data_
private

Data handler for the ProfileAverage operator and TL/AD code.

Definition at line 107 of file ObsProfileAverage.h.

◆ odb_

const ioda::ObsSpace& ufo::ObsProfileAverage::odb_
private

ObsSpace.

Definition at line 104 of file ObsProfileAverage.h.


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