2 Copyright (C) 2008-2018 EDF R&D
4 This file is part of SALOME ADAO module.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
24 .. index:: single: 4DVAR
25 .. _section_ref_algorithm_4DVAR:
27 Calculation algorithm "*4DVAR*"
28 -------------------------------
32 in its present version, this algorithm is experimental, and so changes can be
33 required in forthcoming versions.
38 This algorithm realizes an estimation of the state of a dynamic system, by a
39 variational minimization method of the classical :math:`J` function in data
42 .. math:: J(\mathbf{x})=(\mathbf{x}-\mathbf{x}^b)^T.\mathbf{B}^{-1}.(\mathbf{x}-\mathbf{x}^b)+\sum_{t\in T}(\mathbf{y^o}(t)-H(\mathbf{x},t))^T.\mathbf{R}^{-1}.(\mathbf{y^o}(t)-H(\mathbf{x},t))
44 which is usually designed as the "*4D-VAR*" function (see for example
45 [Talagrand97]_). It is well suited in cases of non-linear observation and
46 evolution operators, its application domain is similar to the one of Kalman
47 filters, specially the :ref:`section_ref_algorithm_ExtendedKalmanFilter` or the
48 :ref:`section_ref_algorithm_UnscentedKalmanFilter`.
50 Optional and required commands
51 ++++++++++++++++++++++++++++++
54 The general required commands, available in the editing user interface, are the
57 .. include:: snippets/Background.rst
59 .. include:: snippets/BackgroundError.rst
61 .. include:: snippets/EvolutionError.rst
63 .. include:: snippets/EvolutionModel.rst
65 .. include:: snippets/Observation.rst
67 .. include:: snippets/ObservationError.rst
69 .. include:: snippets/ObservationOperator.rst
71 The general optional commands, available in the editing user interface, are
72 indicated in :ref:`section_ref_assimilation_keywords`. Moreover, the parameters
73 of the command "*AlgorithmParameters*" allows to choose the specific options,
74 described hereafter, of the algorithm. See
75 :ref:`section_ref_options_Algorithm_Parameters` for the good use of this
78 The options of the algorithm are the following:
81 .. index:: single: Minimizer
83 This key allows to choose the optimization minimizer. The default choice is
84 "LBFGSB", and the possible ones are "LBFGSB" (nonlinear constrained
85 minimizer, see [Byrd95]_, [Morales11]_ and [Zhu97]_), "TNC" (nonlinear
86 constrained minimizer), "CG" (nonlinear unconstrained minimizer), "BFGS"
87 (nonlinear unconstrained minimizer), "NCG" (Newton CG minimizer). It is
88 strongly recommended to stay with the default.
91 ``{"Minimizer":"LBFGSB"}``
93 .. include:: snippets/BoundsWithNone.rst
95 .. include:: snippets/ConstrainedBy.rst
97 .. include:: snippets/MaximumNumberOfSteps.rst
99 .. include:: snippets/CostDecrementTolerance.rst
101 .. include:: snippets/EstimationOf.rst
103 .. include:: snippets/ProjectedGradientTolerance.rst
105 .. include:: snippets/GradientNormTolerance.rst
107 StoreSupplementaryCalculations
108 .. index:: single: StoreSupplementaryCalculations
110 This list indicates the names of the supplementary variables that can be
111 available at the end of the algorithm. It involves potentially costly
112 calculations or memory consumptions. The default is a void list, none of
113 these variables being calculated and stored by default. The possible names
114 are in the following list: ["BMA", "CostFunctionJ",
115 "CostFunctionJb", "CostFunctionJo", "CostFunctionJAtCurrentOptimum",
116 "CostFunctionJbAtCurrentOptimum", "CostFunctionJoAtCurrentOptimum",
117 "CurrentOptimum", "CurrentState", "IndexOfOptimum"].
119 Example : ``{"StoreSupplementaryCalculations":["BMA", "CurrentState"]}``
121 Information and variables available at the end of the algorithm
122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
124 At the output, after executing the algorithm, there are variables and
125 information originating from the calculation. The description of
126 :ref:`section_ref_output_variables` show the way to obtain them by the method
127 named ``get`` of the variable "*ADD*" of the post-processing. The input
128 variables, available to the user at the output in order to facilitate the
129 writing of post-processing procedures, are described in the
130 :ref:`subsection_r_o_v_Inventaire`.
132 The unconditional outputs of the algorithm are the following:
134 .. include:: snippets/Analysis.rst
136 .. include:: snippets/CostFunctionJ.rst
138 .. include:: snippets/CostFunctionJb.rst
140 .. include:: snippets/CostFunctionJo.rst
142 The conditional outputs of the algorithm are the following:
144 .. include:: snippets/BMA.rst
146 .. include:: snippets/CostFunctionJAtCurrentOptimum.rst
148 .. include:: snippets/CostFunctionJbAtCurrentOptimum.rst
150 .. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
152 .. include:: snippets/CurrentOptimum.rst
154 .. include:: snippets/CurrentState.rst
156 .. include:: snippets/IndexOfOptimum.rst
161 References to other sections:
162 - :ref:`section_ref_algorithm_3DVAR`
163 - :ref:`section_ref_algorithm_KalmanFilter`
164 - :ref:`section_ref_algorithm_ExtendedKalmanFilter`
166 Bibliographical references: