..
- Copyright (C) 2008-2020 EDF R&D
+ Copyright (C) 2008-2021 EDF R&D
This file is part of SALOME ADAO module.
Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
.. index:: single: 3DVAR
+.. index:: single: 3D-Var
.. _section_ref_algorithm_3DVAR:
Algorithme de calcul "*3DVAR*"
.. 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}))
-qui est usuellement désignée comme la fonctionnelle "*3D-VAR*" (voir par exemple
-[Talagrand97]_).
+qui est usuellement désignée comme la fonctionnelle "*3D-Var*" (voir par
+exemple [Talagrand97]_). Les dénominations "*3D-Var*", "*3D-VAR*" et "*3DVAR*"
+sont équivalentes.
+
+Il existe diverses variantes de cet algorithme. On propose ici les formulations
+stables et robustes suivantes :
+
+.. index::
+ pair: Variant ; 3DVAR
+ pair: Variant ; 3DVAR-VAN
+ pair: Variant ; 3DVAR-Incr
+ pair: Variant ; 3DVAR-PSAS
+
+- "3DVAR" (3D Variational analysis, voir [Lorenc86]_, [LeDimet86]_, [Talagrand97]_), algorithme classique d'origine, très robuste, opérant dans l'espace du modèle,
+- "3DVAR-VAN" (3D Variational Analysis with No inversion of B, voir [Lorenc88]_), algorithme similaire, opérant dans l'espace du modèle, mais permettant d'éviter l'inversion de la matrice de covariance B,
+- "3DVAR-Incr" (Incremental 3DVAR, voir [Courtier94]_), algorithme plus économique que les précédents, mais impliquant une approximation des opérateurs non-linéaires,
+- "3DVAR-PSAS" (Physical-space Statistical Analysis Scheme for 3DVAR, voir [Courtier97]_, [Cohn98]_), algorithme parfois plus économique car opérant dans l'espace des observations, mais impliquant une approximation des opérateurs non-linéaires.
+
+On recommande fortement d'utiliser le "3DVAR" d'origine. Les algorithmes
+"3DVAR" et "3DVAR-Incr" (et pas les autres) permettent la modification du point
+initial de leur minimisation, mais ce n'est pas recommandé.
.. ------------------------------------ ..
.. include:: snippets/Header2Algo02.rst
.. include:: snippets/GradientNormTolerance.rst
-.. include:: snippets/MaximumNumberOfSteps.rst
-
-Minimizer
- .. index:: single: Minimizer
+.. include:: snippets/InitializationPoint.rst
- Cette clé permet de changer le minimiseur pour l'optimiseur. Le choix par
- défaut est "LBFGSB", et les choix possibles sont "LBFGSB" (minimisation non
- linéaire sous contraintes, voir [Byrd95]_, [Morales11]_ et [Zhu97]_), "TNC"
- (minimisation non linéaire sous contraintes), "CG" (minimisation non
- linéaire sans contraintes), "BFGS" (minimisation non linéaire sans
- contraintes), "NCG" (minimisation de type gradient conjugué de Newton). Il
- est fortement conseillé de conserver la valeur par défaut.
+.. include:: snippets/MaximumNumberOfSteps.rst
- Exemple :
- ``{"Minimizer":"LBFGSB"}``
+.. include:: snippets/Minimizer_xDVAR.rst
.. include:: snippets/NumberOfSamplesForQuantiles.rst
.. include:: snippets/SimulationForQuantiles.rst
+.. include:: snippets/StateBoundsForQuantilesWithNone.rst
+
StoreSupplementaryCalculations
.. index:: single: StoreSupplementaryCalculations
- Cette liste indique les noms des variables supplémentaires qui peuvent être
- disponibles à la fin de l'algorithme, si elles sont initialement demandées par
- l'utilisateur. Cela implique potentiellement des calculs ou du stockage
- coûteux. La valeur par défaut est une liste vide, aucune de ces variables
- n'étant calculée et stockée par défaut sauf les variables inconditionnelles.
- Les noms possibles sont dans la liste suivante : [
+ *Liste de noms*. Cette liste indique les noms des variables supplémentaires
+ qui peuvent être disponibles au cours du déroulement ou à la fin de
+ l'algorithme, si elles sont initialement demandées par l'utilisateur. Cela
+ implique potentiellement des calculs ou du stockage coûteux. La valeur par
+ défaut est une liste vide, aucune de ces variables n'étant calculée et
+ stockée par défaut sauf les variables inconditionnelles. Les noms possibles
+ sont dans la liste suivante : [
"Analysis",
"APosterioriCorrelations",
"APosterioriCovariance",
"CostFunctionJbAtCurrentOptimum",
"CostFunctionJo",
"CostFunctionJoAtCurrentOptimum",
+ "CurrentIterationNumber",
"CurrentOptimum",
"CurrentState",
+ "ForecastState",
"IndexOfOptimum",
"Innovation",
"InnovationAtCurrentState",
"MahalanobisConsistency",
"OMA",
"OMB",
+ "SampledStateForQuantiles",
"SigmaObs2",
"SimulatedObservationAtBackground",
"SimulatedObservationAtCurrentOptimum",
Exemple :
``{"StoreSupplementaryCalculations":["BMA", "CurrentState"]}``
+.. include:: snippets/Variant_3DVAR.rst
+
.. ------------------------------------ ..
.. include:: snippets/Header2Algo04.rst
.. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
+.. include:: snippets/CurrentIterationNumber.rst
+
.. include:: snippets/CurrentOptimum.rst
.. include:: snippets/CurrentState.rst
+.. include:: snippets/ForecastState.rst
+
.. include:: snippets/IndexOfOptimum.rst
.. include:: snippets/Innovation.rst
.. include:: snippets/OMB.rst
+.. include:: snippets/SampledStateForQuantiles.rst
+
.. include:: snippets/SigmaObs2.rst
.. include:: snippets/SimulatedObservationAtBackground.rst
.. include:: snippets/SimulationQuantiles.rst
+.. ------------------------------------ ..
+.. include:: snippets/Header2Algo09.rst
+
+.. include:: scripts/simple_3DVAR.rst
+
+.. literalinclude:: scripts/simple_3DVAR.py
+
+.. include:: snippets/Header2Algo10.rst
+
+.. literalinclude:: scripts/simple_3DVAR.res
+
.. ------------------------------------ ..
.. include:: snippets/Header2Algo06.rst
.. include:: snippets/Header2Algo07.rst
- [Byrd95]_
+- [Cohn98]_
+- [Courtier94]_
+- [LeDimet86]_
+- [Lorenc86]_
+- [Lorenc88]_
- [Morales11]_
- [Talagrand97]_
- [Zhu97]_