CloudCostFunction

This ObsFunction calculates a Bayesian cost function for detecting cloud-affected radiances. Its heritage is the Met Office OPS.

A cloud cost, \(J_{c}\), is calculated from observation-H(x) departures, \(\mathbf{y}\), via

\(J_{c} = (0.5/N_{chan}) * \mathbf{y} \mathbf{W} \mathbf{y}^{T}\)

where \(N_{chan}\) is the number of channels in the calculation and \(\mathbf{W}\) is the inverse of \((\mathbf{H}\mathbf{B}\mathbf{H}^{T}+\mathbf{R})\):

  • \(\mathbf{H}\) is the Jacobian matrix;

  • \(\mathbf{B}\) is a background error covariance matrix;

  • \(\mathbf{R}\) is an observation error covariance matrix.

Implementation here follows Met Office usage, with a static (latitude-varying) \(\mathbf{B}\)-matrix and a fixed, diagonal \(\mathbf{R}\)-matrix.

Required parameters:

cost channels list

List of channels used in the calculation of the cost function

RMatrix

Path to location of file describing the \(\mathbf{R}\)-matrix

BMatrix

Path to location of file describing the \(\mathbf{B}\)-matrix

background fields

List of geovals names describing fields required from the \(\mathbf{B}\)-matrix - to avoid ambiguity, this list must appear in the same order as in the \(\mathbf{B}\)-matrix file

Optional parameters:

qtotal

Boolean flag indicating that the \(\mathbf{B}\)-matrix file contains error covariances for \(ln(\) qtotal in units g/kg \()\). Setting this flag requires that the following are all present in the parameter list “background fields”:

  • specific_humidity

  • mass_content_of_cloud_liquid_water_in_atmosphere_layer

  • mass_content_of_cloud_ice_in_atmosphere_layer

Default: false

qtotal split rain

Include treatment of rain when splitting total humidity into constituent phases

Default: false

scattering radiative transfer

Include gradient due to ice in brightness temperature total humidity Jacobian

Default: false

minimum specific humidity

Limit specific humidity to minimum value (kg/kg)

Default: 3.0e-6f

reverse Jacobian order

Jacobian vertical ordering is reverse of geovals

Default: false

minimum ObsValue

Minimum bound for ObsValue brightness temperature (K)

Default: 70.0

maximum ObsValue

Maximum bound for ObsValue brightness temperature

Default: 340.0

maximum final cost

Maximum value for final cost returned by the ObsFunction

Default: 1600.0

HofX group

Name of the H(x) group used in the cost function calculation

Default: “HofX”

background emissivity channels

Vector of high transmittance channels for which surface emissivity error covariances are defined in the \(\mathbf{B}\)-matrix (if present) - these channels are explicitly not used in the ObsFunction calculation and so should be separate and distinct from humidity sounding channels defined by the required parameter cost channels list

Example:

background emissivity channels: 1, 2, 3, 16, 17
skin temperature error

Scale \(\mathbf{B}\)-matrix skin temperature error covariance according to this user-defined standard deviation

Example:

skin temperature error: 2.5

Reference:

S.J. English, J.R. Eyre and J.A. Smith. A cloud‐detection scheme for use with satellite sounding radiances in the context of data assimilation for numerical weather prediction support of nowcasting applications. Quart. J. Royal Meterol. Soc., Vol. 125, pp. 2359-2378 (1999). https://doi.org/10.1002/qj.49712555902

Example yaml:

Here is an example using this ObsFunction inside the Bounds Check filter. The brightnessTemperature filter variables are rejected if the output value of this ObsFunction is larger than the example maxvalue = 69.8.

- filter: Bounds Check
  filter variables:
  - name: brightnessTemperature
    channels: 18-20
  where:
  - variable:
      name: MetaData/surfaceQualifier
    is_in: 0  # land=0, sea=1, ice=2
  test variables:
  - name: ObsFunction/CloudCostFunction
    options:
      cost channels list: 18, 20, 22
      RMatrix: ../resources/rmatrix/rttov/atms_noaa_20_rmatrix_test.nc4
      BMatrix: ../resources/bmatrix/rttov/atms_bmatrix_70_test.dat
      background fields:
      - air_temperature
      - specific_humidity
      - mass_content_of_cloud_liquid_water_in_atmosphere_layer
      - mass_content_of_cloud_ice_in_atmosphere_layer
      - surface_temperature
      - specific_humidity_at_two_meters_above_surface
      - skin_temperature
      - air_pressure_at_two_meters_above_surface
      qtotal: true
      qtotal split rain: true
      reverse Jacobian order: true
      HofX group: HofX  # default
  maxvalue: 69.8        # example value
  action:
    name: reject