StdDev¶
The StdDev SABER block is a diagonal matrix and therefore its own adjoint (it is equal to its transpose). Since the block is auto-adjoint, there is no difference between its application in the adjoint and forward directions, and so it will apply its standard deviation values twice, reflecting how variance is the square of the standard deviation.
The block can be setup several ways. Primarily, it is used to read-in the diagonal coefficients (standard deviations) from a model file. It also can (optionally) apply a scaling factor to all fields either in combination with a model file-read, or as a standalone scaling factor without a file-read. An example with both a file-read and a global scaling is below:
saber outer blocks:
- saber block name: StdDev
stddev scale factor: 2.0 # (optional) if given, must be greater than 0
read:
atlas file:
filepath: <path to coefficients data>
Remember, the stddev scale factor
and coefficients from file will be applied twice.
An alternative mode – which is mostly used for testing, demonstration, or tutorials – for
the block is to apply distinct standard deviations to each control variable in your background
error model. This standard deviations:
key WILL NOT work with the read:
key.
If both keys are present, the coefficients from the file will be read, but the stddev
values will NOT be applied.
saber outer blocks:
- saber block name: StdDev
standard deviations: # DO NOT include `read:` key with this
- variable: <control_var_1>
stddev: 2.0
- variable: <control_var_2>
stddev: 5.0
As in the other mode, each stddev
value will be applied twice within a block-chain.
For the unusual case in which a user would want to apply both coefficients from a model file
and variable-specific standard deviations, two separate StdDev
blocks can be used in
a single block-chain.