14.8. Checking algorithm “LocalSensitivityTest”¶
14.8.1. Description¶
This algorithm allows to calculate the value of the Jacobian of the observation
operator
with respect to the input variables
. This operator appears in the relation:

(see [DocT] A brief introduction to Data Assimilation and Optimization for further explanations). This Jacobian is the
linearized operator (or the tangent one)
of the
near the chosen checking point.
14.8.2. Some noteworthy properties of the implemented methods¶
To complete the description, we summarize here a few notable properties of the algorithm methods or of their implementations. These properties may have an influence on how it is used or on its computational performance. For further information, please refer to the more comprehensive references given at the end of this algorithm description.
The methods proposed by this algorithm require the derivation of the objective function or of one of the operators. It requires that at least one or both of the observation or evolution operators are differentiable, and this implies an additional calculation time in the case where the derivatives are calculated numerically by multiple evaluations.
The methods proposed by this algorithm have no internal parallelism, but use the numerical derivation of operator(s), which can be parallelized. The potential interaction, between the parallelism of the numerical derivation, and the parallelism that may be present in the observation or evolution operators embedding user codes, must therefore be carefully tuned.
14.8.3. Optional and required commands¶
The general required commands, available in the editing user graphical or textual interface, are the following:
- CheckingPoint
Vector. The variable indicates the vector used as the state around which to perform the required check, noted
and similar to the
background
. It is defined as a “Vector” or
“VectorSerie” type object. Its availability in output is conditioned by the
boolean “Stored” associated with input.
- Observation
List of vectors. The variable indicates the observation vector used for data assimilation or optimization, and usually noted
.
Its value is defined as an object of type “Vector” if it is a single
observation (temporal or not) or “VectorSeries” if it is a succession of
observations. Its availability in output is conditioned by the boolean
“Stored” associated in input.
Remark : the observation in only used to enforce dimension checking, so one
can give unrealistic vector of the right size.
Example : numpy.ones(<number of observations>)
- ObservationOperator
Operator. The variable indicates the observation operator, usually noted as
, which transforms the input parameters
to
results
to be compared to observations
. Its value is defined as a “Function” type object or a
“Matrix” type one. In the case of “Function” type, different functional
forms can be used, as described in the section
Requirements for functions describing an operator. If there is some control
included in the observation, the operator has to be applied to a pair
.
The general optional commands, available in the editing user graphical or textual interface, are indicated in List of commands and keywords for an ADAO checking case. Moreover, the parameters of the command “AlgorithmParameters” allow to choose the specific options, described hereafter, of the algorithm. See Description of options of an algorithm by “AlgorithmParameters” for the good use of this command.
The options are the following:
- SetDebug
Boolean value. This variable leads to the activation, or not, of the debug mode during the function or operator evaluation. The default is “False”, the choices are “True” or “False”.
Example:
{"SetDebug":False}- StoreSupplementaryCalculations
List of names. This list indicates the names of the supplementary variables, that can be available during or at the end of the algorithm, if they are initially required by the user. Their availability involves, potentially, costly calculations or memory consumptions. The default is then a void list, none of these variables being calculated and stored by default (excepted the unconditional variables). The possible names are in the following list (the detailed description of each named variable is given in the following part of this specific algorithmic documentation, in the sub-section “Information and variables available at the end of the algorithm”): [ “CurrentState”, “JacobianMatrixAtCurrentState”, “SimulatedObservationAtCurrentState”, ].
Example :
{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}
14.8.4. Information and variables available at the end of the algorithm¶
At the output, after executing the algorithm, there are information and
variables originating from the calculation. The description of
Variables and information available at the output show the way to obtain them by the method
named get, of the variable “ADD” of the post-processing in graphical
interface, or of the case in textual interface. The input variables, available
to the user at the output in order to facilitate the writing of post-processing
procedures, are described in an Inventory of potentially available information at the output.
Permanent outputs (non conditional)
The unconditional outputs of the algorithm are the following:
- JacobianMatrixAtCurrentState
List of matrices. Each element is the jacobian matrix of partial derivatives of the output of the observation operator with respect to the input parameters, one column of derivatives per parameter. It is calculated at the current state.
Example:
gradh = ADD.get("JacobianMatrixAtCurrentState")[-1]
Set of on-demand outputs (conditional or not)
The whole set of algorithm outputs (conditional or not), sorted by alphabetical order, is the following:
- CurrentState
List of vectors. Each element is a usual state vector used during the iterative algorithm procedure.
Example:
xs = ADD.get("CurrentState")[:]
- JacobianMatrixAtCurrentState
List of matrices. Each element is the jacobian matrix of partial derivatives of the output of the observation operator with respect to the input parameters, one column of derivatives per parameter. It is calculated at the current state.
Example:
gradh = ADD.get("JacobianMatrixAtCurrentState")[-1]
- SimulatedObservationAtCurrentState
List of vectors. Each element is an observed vector simulated by the observation operator from the current state, that is, in the observation space.
Example:
hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]
14.8.5. See also¶
References to other sections: