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