Salome HOME
Adding examples for each optional command
[modules/adao.git] / doc / fr / ref_algorithm_3DVAR.rst
1 ..
2    Copyright (C) 2008-2014 EDF R&D
3
4    This file is part of SALOME ADAO module.
5
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.
10
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.
15
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
19
20    See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
22    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
23
24 .. index:: single: 3DVAR
25 .. _section_ref_algorithm_3DVAR:
26
27 Algorithme de calcul "*3DVAR*"
28 ------------------------------
29
30 Description
31 +++++++++++
32
33 Cet algorithme réalise une estimation d'état par minimisation variationnelle de
34 la fonctionnelle :math:`J` d'écart classique en assimilation de données
35 statique:
36
37 .. math:: J(\mathbf{x})=(\mathbf{x}-\mathbf{x}^b)^T.\mathbf{B}^{-1}.(\mathbf{x}-\mathbf{x}^b)+(\mathbf{y}^o-\mathbf{H}.\mathbf{x})^T.\mathbf{R}^{-1}.(\mathbf{y}^o-\mathbf{H}.\mathbf{x})
38
39 qui est usuellement désignée comme la fonctionnelle "*3D-VAR*" (voir par exemple
40 [Talagrand97]_).
41
42 Commandes requises et optionnelles
43 ++++++++++++++++++++++++++++++++++
44
45 .. index:: single: Background
46 .. index:: single: BackgroundError
47 .. index:: single: Observation
48 .. index:: single: ObservationError
49 .. index:: single: ObservationOperator
50 .. index:: single: Minimizer
51 .. index:: single: Bounds
52 .. index:: single: MaximumNumberOfSteps
53 .. index:: single: CostDecrementTolerance
54 .. index:: single: ProjectedGradientTolerance
55 .. index:: single: GradientNormTolerance
56 .. index:: single: StoreInternalVariables
57 .. index:: single: StoreSupplementaryCalculations
58
59 Les commandes requises générales, disponibles dans l'interface en édition, sont
60 les suivantes:
61
62   Background
63     *Commande obligatoire*. Elle définit le vecteur d'ébauche ou
64     d'initialisation, noté précédemment :math:`\mathbf{x}^b`. Sa valeur est
65     définie comme un objet de type "*Vector*" ou de type "*VectorSerie*".
66
67   BackgroundError
68     *Commande obligatoire*. Elle définit la matrice de covariance des erreurs
69     d'ébauche, notée précédemment :math:`\mathbf{B}`. Sa valeur est définie
70     comme un objet de type "*Matrix*", de type "*ScalarSparseMatrix*", ou de
71     type "*DiagonalSparseMatrix*".
72
73   Observation
74     *Commande obligatoire*. Elle définit le vecteur d'observation utilisé en
75     assimilation de données ou en optimisation, et noté précédemment
76     :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de type "*Vector*"
77     ou de type "*VectorSerie*".
78
79   ObservationError
80     *Commande obligatoire*. Elle définit la matrice de covariance des erreurs
81     d'ébauche, notée précédemment :math:`\mathbf{R}`. Sa valeur est définie
82     comme un objet de type "*Matrix*", de type "*ScalarSparseMatrix*", ou de
83     type "*DiagonalSparseMatrix*".
84
85   ObservationOperator
86     *Commande obligatoire*. Elle indique l'opérateur d'observation, noté
87     précédemment :math:`H`, qui transforme les paramètres d'entrée
88     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
89     observations :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de
90     type "*Function*" ou de type "*Matrix*". Dans le cas du type "*Function*",
91     différentes formes fonctionnelles peuvent être utilisées, comme décrit dans
92     la section :ref:`section_ref_operator_requirements`. Si un contrôle
93     :math:`U` est inclus dans le modèle d'observation, l'opérateur doit être
94     appliqué à une paire :math:`(X,U)`.
95
96 Les commandes optionnelles générales, disponibles dans l'interface en édition,
97 sont indiquées dans la :ref:`section_ref_assimilation_keywords`. En particulier,
98 la commande optionnelle "*AlgorithmParameters*" permet d'indiquer les options
99 particulières, décrites ci-après, de l'algorithme. On se reportera à la
100 :ref:`section_ref_options_AlgorithmParameters` pour le bon usage de cette
101 commande.
102
103 Les options de l'algorithme sont les suivantes:
104
105   Minimizer
106     Cette clé permet de changer le minimiseur pour l'optimiseur. Le choix par
107     défaut est "LBFGSB", et les choix possibles sont "LBFGSB" (minimisation non
108     linéaire sous contraintes, voir [Byrd95]_, [Morales11]_ et [Zhu97]_), "TNC"
109     (minimisation non linéaire sous contraintes), "CG" (minimisation non
110     linéaire sans contraintes), "BFGS" (minimisation non linéaire sans
111     contraintes), "NCG" (minimisation de type gradient conjugué de Newton). Il
112     est fortement conseillé de conserver la valeur par défaut.
113
114     Exemple : ``{"Minimizer":"LBFGSB"}``
115
116   Bounds
117     Cette clé permet de définir des bornes supérieure et inférieure pour chaque
118     variable d'état optimisée. Les bornes doivent être données par une liste de
119     liste de paires de bornes inférieure/supérieure pour chaque variable, avec
120     une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les bornes peuvent
121     toujours être spécifiées, mais seuls les optimiseurs sous contraintes les
122     prennent en compte.
123
124     Exemple : ``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,None],[None,None]]}``
125
126   MaximumNumberOfSteps
127     Cette clé indique le nombre maximum d'itérations possibles en optimisation
128     itérative. Le défaut est 15000, qui est très similaire à une absence de
129     limite sur les itérations. Il est ainsi recommandé d'adapter ce paramètre
130     aux besoins pour des problèmes réels. Pour certains optimiseurs, le nombre
131     de pas effectif d'arrêt peut être légèrement différent de la limite à cause
132     d'exigences de contrôle interne de l'algorithme.
133
134     Exemple : ``{"MaximumNumberOfSteps":100}``
135
136   CostDecrementTolerance
137     Cette clé indique une valeur limite, conduisant à arrêter le processus
138     itératif d'optimisation lorsque la fonction coût décroît moins que cette
139     tolérance au dernier pas. Le défaut est de 1.e-7, et il est recommandé
140     de l'adapter aux besoins pour des problèmes réels.
141
142     Exemple : ``{"CostDecrementTolerance":1.e-7}``
143
144   ProjectedGradientTolerance
145     Cette clé indique une valeur limite, conduisant à arrêter le processus
146     itératif d'optimisation lorsque toutes les composantes du gradient projeté
147     sont en-dessous de cette limite. C'est utilisé uniquement par les
148     optimiseurs sous contraintes. Le défaut est -1, qui désigne le défaut
149     interne de chaque optimiseur (usuellement 1.e-5), et il n'est pas recommandé
150     de le changer.
151
152     Exemple : ``{"ProjectedGradientTolerance":-1}``
153
154   GradientNormTolerance
155     Cette clé indique une valeur limite, conduisant à arrêter le processus
156     itératif d'optimisation lorsque la norme du gradient est en dessous de cette
157     limite. C'est utilisé uniquement par les optimiseurs sans contraintes. Le
158     défaut est 1.e-5 et il n'est pas recommandé de le changer.
159
160     Exemple : ``{"GradientNormTolerance":1.e-5}``
161
162   StoreInternalVariables
163     Cette clé booléenne permet de stocker les variables internes par défaut,
164     principalement l'état courant lors d'un processus itératif. Attention, cela
165     peut être un choix numériquement coûteux dans certains cas de calculs. La
166     valeur par défaut est "False".
167
168     Exemple : ``{"StoreInternalVariables":True}``
169
170   StoreSupplementaryCalculations
171     Cette liste indique les noms des variables supplémentaires qui peuvent être
172     disponibles à la fin de l'algorithme. Cela implique potentiellement des
173     calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
174     aucune de ces variables n'étant calculée et stockée par défaut. Les noms
175     possibles sont dans la liste suivante : ["APosterioriCovariance", "BMA",
176     "OMA", "OMB", "Innovation", "SigmaObs2", "MahalanobisConsistency"].
177
178     Exemple : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}``
179
180 Voir aussi
181 ++++++++++
182
183 Références vers d'autres sections :
184   - :ref:`section_ref_algorithm_Blue`
185   - :ref:`section_ref_algorithm_ExtendedBlue`
186   - :ref:`section_ref_algorithm_LinearityTest`
187
188 Références bibliographiques :
189   - [Byrd95]_
190   - [Morales11]_
191   - [Talagrand97]_