]> SALOME platform Git repositories - modules/adao.git/blob - doc/fr/ref_algorithm_3DVAR.rst
Salome HOME
Minor source update for OM compatibility
[modules/adao.git] / doc / fr / ref_algorithm_3DVAR.rst
1 ..
2    Copyright (C) 2008-2024 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 .. index:: single: 3D-Var
26 .. _section_ref_algorithm_3DVAR:
27
28 Algorithme de calcul "*3DVAR*"
29 ------------------------------
30
31 .. ------------------------------------ ..
32 .. include:: snippets/Header2Algo01.rst
33
34 Cet algorithme réalise une estimation d'état par minimisation variationnelle de
35 la fonctionnelle :math:`J` d'écart classique en assimilation de données
36 statique:
37
38 .. math:: J(\mathbf{x})=(\mathbf{x}-\mathbf{x}^b)^T.\mathbf{B}^{-1}.(\mathbf{x}-\mathbf{x}^b)+(\mathbf{y}^o-H(\mathbf{x}))^T.\mathbf{R}^{-1}.(\mathbf{y}^o-H(\mathbf{x}))
39
40 qui est usuellement désignée comme la fonctionnelle "*3D-Var*" (voir par
41 exemple [Talagrand97]_). Les dénominations "*3D-Var*", "*3D-VAR*" et "*3DVAR*"
42 sont équivalentes.
43
44 Il existe diverses variantes de cet algorithme. On propose ici les formulations
45 stables et robustes suivantes :
46
47 .. index::
48     pair: Variant ; 3DVAR
49     pair: Variant ; 3DVAR-VAN
50     pair: Variant ; 3DVAR-Incr
51     pair: Variant ; 3DVAR-PSAS
52     pair: Variant ; OI
53     pair: Variant ; Optimal Interpolation
54
55 - "3DVAR" (3D Variational analysis, voir [Lorenc86]_, [LeDimet86]_, [Talagrand97]_), algorithme classique d'origine, extrêmement robuste, opérant dans l'espace du modèle,
56 - "3DVAR-VAN" (3D Variational Analysis with No inversion of B, voir [Lorenc88]_), algorithme similaire, opérant dans l'espace du modèle, permettant d'éviter l'inversion de la matrice de covariance B (sauf dans le cas où il y des bornes),
57 - "3DVAR-Incr" (Incremental 3DVAR, voir [Courtier94]_), algorithme plus économique que les précédents, impliquant une approximation des opérateurs non-linéaires,
58 - "3DVAR-PSAS" (Physical-space Statistical Analysis Scheme for 3DVAR, voir [Courtier97]_, [Cohn98]_), algorithme parfois plus économique car opérant dans l'espace des observations, impliquant une approximation des opérateurs non-linéaires, ne permettant pas la prise en compte de bornes.
59
60 On recommande fortement d'utiliser le "3DVAR" d'origine. Les algorithmes
61 "3DVAR" et "3DVAR-Incr" (et pas les autres) permettent explicitement la
62 modification du point initial de leur minimisation, même si ce n'est pas
63 recommandé.
64
65 Cet algorithme d'optimisation mono-objectif est naturellement écrit pour une
66 estimation unique, sans notion dynamique ou itérative (il n'y a donc pas besoin
67 dans ce cas d'opérateur d'évolution incrémentale, ni de covariance d'erreurs
68 d'évolution). Dans le cadre traditionnel de l'assimilation de données
69 temporelle ou itérative que traite ADAO, il peut aussi être utilisé sur une
70 succession d'observations, plaçant alors l'estimation dans un cadre récursif
71 similaire à un :ref:`section_ref_algorithm_KalmanFilter`. Une estimation
72 standard "*3D-VAR*" est effectuée à chaque pas d'observation sur l'état prévu
73 par le modèle d'évolution incrémentale, sachant que la covariance d'erreur
74 d'état reste la covariance d'ébauche initialement fournie par l'utilisateur.
75 Pour être explicite, contrairement aux filtres de type Kalman, la covariance
76 d'erreurs sur les états n'est pas remise à jour.
77
78 Une extension du 3DVAR, couplant en parallèle une méthode 3DVAR, pour
79 l'estimation d'un unique meilleur état, avec un filtre de Kalman d'ensemble
80 pour l'estimation des covariances d'erreurs, permet d'améliorer l'estimation de
81 ces covariances d'erreurs *a posteriori*. On atteint cette extension en
82 utilisant le variant "E3DVAR" de l'algorithme de filtrage
83 :ref:`section_ref_algorithm_EnsembleKalmanFilter`.
84
85 On remarque que les statistiques d'erreurs d'observation et d'évolution sont
86 par hypothèse représentées ici sous forme gaussienne. Alors, dans le cas
87 particulier où l'opérateur d'observation :math:`H` est linéaire, cet algorithme
88 est strictement équivalent à l'interpolation optimale (OI ou "*Optimal
89 Interpolation*"). De plus, il réalise à la fois l'estimation de variance
90 minimale (MV ou "*Minimum Variance* estimator") et l'estimation de maximum a
91 posteriori (MAP ou "*Maximum A Posteriori* estimator"), qui coïncident dans ce
92 cas précis.
93
94 .. ------------------------------------ ..
95 .. include:: snippets/Header2Algo12.rst
96
97 .. include:: snippets/FeaturePropNonLocalOptimization.rst
98
99 .. include:: snippets/FeaturePropDerivativeNeeded.rst
100
101 .. include:: snippets/FeaturePropParallelDerivativesOnly.rst
102
103 .. include:: snippets/FeaturePropConvergenceOnBoth.rst
104
105 .. ------------------------------------ ..
106 .. include:: snippets/Header2Algo02.rst
107
108 .. include:: snippets/Background.rst
109
110 .. include:: snippets/BackgroundError.rst
111
112 .. include:: snippets/Observation.rst
113
114 .. include:: snippets/ObservationError.rst
115
116 .. include:: snippets/ObservationOperator.rst
117
118 .. ------------------------------------ ..
119 .. include:: snippets/Header2Algo03AdOp.rst
120
121 .. include:: snippets/BoundsWithNone.rst
122
123 .. include:: snippets/CostDecrementTolerance.rst
124
125 .. include:: snippets/EstimationOf_Parameters.rst
126
127 .. include:: snippets/GradientNormTolerance.rst
128
129 .. include:: snippets/InitializationPoint.rst
130
131 .. include:: snippets/MaximumNumberOfIterations.rst
132
133 .. include:: snippets/Minimizer_xDVAR.rst
134
135 .. include:: snippets/NumberOfSamplesForQuantiles.rst
136
137 .. include:: snippets/ProjectedGradientTolerance.rst
138
139 .. include:: snippets/Quantiles.rst
140
141 .. include:: snippets/SetSeed.rst
142
143 .. include:: snippets/SimulationForQuantiles.rst
144
145 .. include:: snippets/StateBoundsForQuantilesWithNone.rst
146
147 StoreSupplementaryCalculations
148   .. index:: single: StoreSupplementaryCalculations
149
150   *Liste de noms*. Cette liste indique les noms des variables supplémentaires,
151   qui peuvent être disponibles au cours du déroulement ou à la fin de
152   l'algorithme, si elles sont initialement demandées par l'utilisateur. Leur
153   disponibilité implique, potentiellement, des calculs ou du stockage coûteux.
154   La valeur par défaut est donc une liste vide, aucune de ces variables n'étant
155   calculée et stockée par défaut (sauf les variables inconditionnelles). Les
156   noms possibles pour les variables supplémentaires sont dans la liste suivante
157   (la description détaillée de chaque variable nommée est donnée dans la suite
158   de cette documentation par algorithme spécifique, dans la sous-partie
159   "*Informations et variables disponibles à la fin de l'algorithme*") : [
160   "Analysis",
161   "APosterioriCorrelations",
162   "APosterioriCovariance",
163   "APosterioriStandardDeviations",
164   "APosterioriVariances",
165   "BMA",
166   "CostFunctionJ",
167   "CostFunctionJAtCurrentOptimum",
168   "CostFunctionJb",
169   "CostFunctionJbAtCurrentOptimum",
170   "CostFunctionJo",
171   "CostFunctionJoAtCurrentOptimum",
172   "CurrentIterationNumber",
173   "CurrentOptimum",
174   "CurrentState",
175   "CurrentStepNumber",
176   "ForecastState",
177   "IndexOfOptimum",
178   "Innovation",
179   "InnovationAtCurrentAnalysis",
180   "InnovationAtCurrentState",
181   "JacobianMatrixAtBackground",
182   "JacobianMatrixAtOptimum",
183   "KalmanGainAtOptimum",
184   "MahalanobisConsistency",
185   "OMA",
186   "OMB",
187   "SampledStateForQuantiles",
188   "SigmaObs2",
189   "SimulatedObservationAtBackground",
190   "SimulatedObservationAtCurrentOptimum",
191   "SimulatedObservationAtCurrentState",
192   "SimulatedObservationAtOptimum",
193   "SimulationQuantiles",
194   ].
195
196   Exemple :
197   ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}``
198
199 .. include:: snippets/Variant_3DVAR.rst
200
201 .. ------------------------------------ ..
202 .. include:: snippets/Header2Algo04.rst
203
204 .. include:: snippets/Analysis.rst
205
206 .. include:: snippets/CostFunctionJ.rst
207
208 .. include:: snippets/CostFunctionJb.rst
209
210 .. include:: snippets/CostFunctionJo.rst
211
212 .. ------------------------------------ ..
213 .. include:: snippets/Header2Algo05.rst
214
215 .. include:: snippets/Analysis.rst
216
217 .. include:: snippets/APosterioriCorrelations.rst
218
219 .. include:: snippets/APosterioriCovariance.rst
220
221 .. include:: snippets/APosterioriStandardDeviations.rst
222
223 .. include:: snippets/APosterioriVariances.rst
224
225 .. include:: snippets/BMA.rst
226
227 .. include:: snippets/CostFunctionJ.rst
228
229 .. include:: snippets/CostFunctionJAtCurrentOptimum.rst
230
231 .. include:: snippets/CostFunctionJb.rst
232
233 .. include:: snippets/CostFunctionJbAtCurrentOptimum.rst
234
235 .. include:: snippets/CostFunctionJo.rst
236
237 .. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
238
239 .. include:: snippets/CurrentIterationNumber.rst
240
241 .. include:: snippets/CurrentOptimum.rst
242
243 .. include:: snippets/CurrentState.rst
244
245 .. include:: snippets/CurrentStepNumber.rst
246
247 .. include:: snippets/ForecastState.rst
248
249 .. include:: snippets/IndexOfOptimum.rst
250
251 .. include:: snippets/Innovation.rst
252
253 .. include:: snippets/InnovationAtCurrentAnalysis.rst
254
255 .. include:: snippets/InnovationAtCurrentState.rst
256
257 .. include:: snippets/JacobianMatrixAtBackground.rst
258
259 .. include:: snippets/JacobianMatrixAtOptimum.rst
260
261 .. include:: snippets/KalmanGainAtOptimum.rst
262
263 .. include:: snippets/MahalanobisConsistency.rst
264
265 .. include:: snippets/OMA.rst
266
267 .. include:: snippets/OMB.rst
268
269 .. include:: snippets/SampledStateForQuantiles.rst
270
271 .. include:: snippets/SigmaObs2.rst
272
273 .. include:: snippets/SimulatedObservationAtBackground.rst
274
275 .. include:: snippets/SimulatedObservationAtCurrentOptimum.rst
276
277 .. include:: snippets/SimulatedObservationAtCurrentState.rst
278
279 .. include:: snippets/SimulatedObservationAtOptimum.rst
280
281 .. include:: snippets/SimulationQuantiles.rst
282
283 .. ------------------------------------ ..
284 .. _section_ref_algorithm_3DVAR_examples:
285
286 .. include:: snippets/Header2Algo09.rst
287
288 .. --------- ..
289 .. include:: scripts/simple_3DVAR1.rst
290
291 .. literalinclude:: scripts/simple_3DVAR1.py
292
293 .. include:: snippets/Header2Algo10.rst
294
295 .. literalinclude:: scripts/simple_3DVAR1.res
296     :language: none
297
298 .. include:: snippets/Header2Algo11.rst
299
300 .. _simple_3DVAR1:
301 .. image:: scripts/simple_3DVAR1.png
302   :align: center
303   :width: 90%
304
305 .. include:: scripts/simple_3DVAR1Plus.rst
306
307 .. _simple_3DVAR1Plus:
308 .. image:: scripts/simple_3DVAR1Plus.png
309   :align: center
310   :width: 90%
311
312 .. --------- ..
313 .. include:: scripts/simple_3DVAR2.rst
314
315 .. literalinclude:: scripts/simple_3DVAR2.py
316
317 .. include:: snippets/Header2Algo10.rst
318
319 .. literalinclude:: scripts/simple_3DVAR2.res
320     :language: none
321
322 .. include:: snippets/Header2Algo11.rst
323
324 .. _simple_3DVAR2_state:
325 .. image:: scripts/simple_3DVAR2_state.png
326   :align: center
327   :width: 90%
328
329 .. simple_3DVAR2_variance:
330 .. image:: scripts/simple_3DVAR2_variance.png
331   :align: center
332   :width: 90%
333
334 .. --------- ..
335 .. include:: scripts/simple_3DVAR3.rst
336
337 .. literalinclude:: scripts/simple_3DVAR3.py
338
339 .. include:: snippets/Header2Algo10.rst
340
341 .. literalinclude:: scripts/simple_3DVAR3.res
342     :language: none
343
344 .. include:: snippets/Header2Algo11.rst
345
346 .. _simple_3DVAR3_state:
347 .. image:: scripts/simple_3DVAR3_state.png
348   :align: center
349   :width: 90%
350
351 .. _simple_3DVAR3_variance:
352 .. image:: scripts/simple_3DVAR3_variance.png
353   :align: center
354   :width: 90%
355
356 .. ------------------------------------ ..
357 .. include:: snippets/Header2Algo06.rst
358
359 - :ref:`section_ref_algorithm_Blue`
360 - :ref:`section_ref_algorithm_ExtendedBlue`
361 - :ref:`section_ref_algorithm_KalmanFilter`
362 - :ref:`section_ref_algorithm_LinearityTest`
363
364 .. ------------------------------------ ..
365 .. include:: snippets/Header2Algo07.rst
366
367 - [Byrd95]_
368 - [Cohn98]_
369 - [Courtier94]_
370 - [LeDimet86]_
371 - [Lorenc86]_
372 - [Lorenc88]_
373 - [Morales11]_
374 - [Talagrand97]_
375 - [Zhu97]_