Sensor description

The sensor modelling in ARTS is meant to simply describe how we take Stokes vectors from one or several spectral raditive transfer simulations and turn them into scalar measurements.

The main variable that describes the sensor setup is measurement_sensor. It is a list of sensor observation elements. Every sensor observation element (SensorObsel) has a shared frequency grid and shared geometry.

Sensor observation elements

The idea is that each sensor has a set of positions and line-of-sights for its measurements (its observation geometry), a set of frequencies that it samples (its backend sampling), and a sensitivity to some atmospheric state of polarization. A sensor consists of one or more sensor observation elements that share the same frequency grid. They might also share the same observation geometry, but they do not share the same weights.

A sensor observation element describes how the sensor samples a single scalar measurement. The equation for a single scalar measurement is:

\[y = \sum_g \sum_f \left(\vec{w}_{g, f} \cdot \vec{I}_{g, f}\right) + \epsilon = y_0 + \epsilon,\]

where \(y\) is the scalar measurement, \(\vec{w}_{g, f}\) is the polarized weight, \(\vec{I}_{g, f}\) is the weight-corresponding Stokes vector, and \(\epsilon\) is the systematic error that is beyond forward simulations. The \(y_0\)-term is introduced as a way to separate the forward model from the error estimate. The indices \(g\) and \(f\) are for the geometry and frequency, respectively.

Tip

You generally want to be able to sample the frequency and observation grid in a normalized manner. The normalization is effectively the sum of all elements of the weight matrix. Note that this normalization is not necessarily 1. For instance, if you want to sample a single polarization in brightness temperature, you would have to normalize the weights to 2 or 0. The normalization must in terms of Stokes vector elements be the same as how you would sample that polarization in your choice of unit.

Note

Sharing the frequency grid and observation geometry between sensor observation elements is a way to speed up calculations. It is also a requirement for the backwards model of systematic errors to work.

Examples of sensor descriptions and corresponding observation elements in graph form:

digraph g { bgcolor="#00000000"; rankdir = "TD"; ratio = auto; node [ color = "#0271BB" fontcolor = "white" style = "filled,rounded" shape = "rectangle" ]; "elem1" [ label = "Element 1" style = "filled" ]; "elem2" [ label = "Element 2" style = "filled" ]; "elemN" [ label = "Element ...N" style = "filled" ]; "f0" [ label = "Frequency grid" shape = "ellipse" ]; "o0" [ label = "Observation geometry" shape = "ellipse" ]; "w1" [ label = "Weights 1" ]; "w2" [ label = "Weights 2" ]; "wN" [ label = "Weights ...N" ]; f0 -> elem1 [ dir = "back" ]; f0 -> elem2 [ dir = "back" ]; f0 -> elemN [ dir = "back" ]; o0 -> elem1 [ dir = "back" ]; o0 -> elem2 [ dir = "back" ]; o0 -> elemN [ dir = "back" ]; elem1 -> w1; elem2 -> w2; elemN -> wN; }

Fig. 1 A single sensor with \(N\) sensor observation elements. This will generally result in one forward simulation for the pair of frequency grid and observation geometry. Examples of systems such as these are ground-based microwave radiometers with a single backend spectrometer.

digraph g { bgcolor="#00000000"; rankdir = "TD"; ratio = auto; node [ color = "#0271BB" fontcolor = "white" style = "filled,rounded" shape = "rectangle" ]; "elem1" [ label = "Element 1" style = "filled" ]; "elem2" [ label = "Element 2" style = "filled" ]; "elemN" [ label = "Element ...N" style = "filled" ]; "f1" [ label = "Frequency grid 1" shape = "ellipse" ]; "f2" [ label = "Frequency grid 2" shape = "ellipse" ]; "fN" [ label = "Frequency grid N" shape = "ellipse" ]; "o0" [ label = "Observation geometry" shape = "ellipse" ]; "w1" [ label = "Weights 1" ]; "w2" [ label = "Weights 2" ]; "wN" [ label = "Weights ...N" ]; o0 -> elem1 [ dir = "back" ]; o0 -> elem2 [ dir = "back" ]; o0 -> elemN [ dir = "back" ]; elem1 -> f1; elem2 -> f2; elemN -> fN; elem1 -> w1; elem2 -> w2; elemN -> wN; }

Fig. 2 \(N\) sensors that share observation geometry. This will generally result in \(N\) forward simulations for each pair of frequency grid and observation geometry. Examples of systems such as these are satellite-based microwave radiometers for meteorology.

digraph g { bgcolor="#00000000"; rankdir = "TD"; ratio = auto; node [ color = "#0271BB" fontcolor = "white" style = "filled,rounded" shape = "rectangle" ]; "elemA1" [ label = "Element A1" style = "filled" ]; "elemA2" [ label = "Element A2" style = "filled" ]; "elemAN" [ label = "Element ...AN" style = "filled" ]; "elemB1" [ label = "Element B1" style = "filled" ]; "elemB2" [ label = "Element B2" style = "filled" ]; "elemBN" [ label = "Element ...BN" style = "filled" ]; "fA" [ label = "Frequency grid A" shape = "ellipse" ]; "fB" [ label = "Frequency grid B" shape = "ellipse" ]; "o0" [ label = "Observation geometry" shape = "ellipse" ]; "wA1" [ label = "Weights A1" ]; "wA2" [ label = "Weights A2" ]; "wAN" [ label = "Weights ...AN" ]; "wB1" [ label = "Weights B1" ]; "wB2" [ label = "Weights B2" ]; "wBN" [ label = "Weights ...BN" ]; fA -> elemA1 [ dir = "back" ]; fA -> elemA2 [ dir = "back" ]; fA -> elemAN [ dir = "back" ]; fB -> elemB1 [ dir = "back" ]; fB -> elemB2 [ dir = "back" ]; fB -> elemBN [ dir = "back" ]; o0 -> elemA1 [ dir = "back" ]; o0 -> elemA2 [ dir = "back" ]; o0 -> elemAN [ dir = "back" ]; o0 -> elemB1 [ dir = "back" ]; o0 -> elemB2 [ dir = "back" ]; o0 -> elemBN [ dir = "back" ]; elemA1 -> wA1; elemA2 -> wA2; elemAN -> wAN; elemB1 -> wB1; elemB2 -> wB2; elemBN -> wBN; }

Fig. 3 Two sensors, each with \(N\) sensor observation elements but shared geometry. This will generally result in two forward simulation for each pair of frequency grid and observation geometry. Examples of systems such as these are combined ground-based microwave radiometers with two separate backend spectrometers.

digraph g { bgcolor="#00000000"; rankdir = "TD"; ratio = auto; node [ color = "#0271BB" fontcolor = "white" style = "filled,rounded" shape = "rectangle" ]; "elemV1" [ label = "Element A1" style = "filled" ]; "elemV2" [ label = "Element A2" style = "filled" ]; "elemVN" [ label = "Element ...AN" style = "filled" ]; "elemI1" [ label = "Element B1" style = "filled" ]; "elemI2" [ label = "Element B2" style = "filled" ]; "elemIN" [ label = "Element ...BN" style = "filled" ]; "f0" [ label = "Frequency grid" shape = "ellipse" ]; "o0" [ label = "Observation geometry" shape = "ellipse" ]; "wV1" [ label = "Weights A1, Stokes V-component" ]; "wV2" [ label = "Weights A2, Stokes V-component" ]; "wVN" [ label = "Weights ...AN, Stokes V-component" ]; "wI1" [ label = "Weights B1, Stokes I-component" ]; "wI2" [ label = "Weights B2, Stokes I-component" ]; "wIN" [ label = "Weights ...BN, Stokes I-component" ]; f0 -> elemV1 [ dir = "back" ]; f0 -> elemV2 [ dir = "back" ]; f0 -> elemVN [ dir = "back" ]; f0 -> elemI1 [ dir = "back" ]; f0 -> elemI2 [ dir = "back" ]; f0 -> elemIN [ dir = "back" ]; o0 -> elemV1 [ dir = "back" ]; o0 -> elemV2 [ dir = "back" ]; o0 -> elemVN [ dir = "back" ]; o0 -> elemI1 [ dir = "back" ]; o0 -> elemI2 [ dir = "back" ]; o0 -> elemIN [ dir = "back" ]; elemV1 -> wV1; elemV2 -> wV2; elemVN -> wVN; elemI1 -> wI1; elemI2 -> wI2; elemIN -> wIN; }

Fig. 4 A single sensor with \(N\) sensor observation elements sampling different polarization states. This will generally result in one forward simulation for the pair of frequency grid and observation geometry. Examples of systems such as these are those that sample not just a single polarization state.

Sensor systematic error

The systematic error \(\epsilon\) is for a single sensor. It is a free-form function. The intent is that it is used to compensate for systematic errors that cannot be captured by the forward model, e.g., standing waves inside the receiver system. The systematic error is added to the scalar measurement upon request, for instance as part of a retrieval setup. Note that it may be a function of frequency and/or observation geometry.