2 Copyright (C) 2008-2014 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: 3DVAR
25 .. _section_ref_algorithm_3DVAR:
27 Algorithme de calcul "*3DVAR*"
28 ------------------------------
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
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})
39 qui est usuellement désignée comme la fonctionnelle "*3D-VAR*" (voir par exemple
42 Commandes requises et optionnelles
43 ++++++++++++++++++++++++++++++++++
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
59 Les commandes requises générales, disponibles dans l'interface en édition, sont
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*".
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*".
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*".
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*".
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)`.
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
103 Les options de l'algorithme sont les suivantes:
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.
115 Cette clé permet de définir des bornes supérieure et inférieure pour
116 chaque variable d'état optimisée. Les bornes doivent être données par une
117 liste de liste de paires de bornes inférieure/supérieure pour chaque
118 variable, avec une valeur ``None`` chaque fois qu'il n'y a pas de borne. Les
119 bornes peuvent toujours être spécifiées, mais seuls les optimiseurs sous
120 contraintes les prennent en compte.
123 Cette clé indique le nombre maximum d'itérations possibles en optimisation
124 itérative. Le défaut est 15000, qui est très similaire à une absence de
125 limite sur les itérations. Il est ainsi recommandé d'adapter ce paramètre
126 aux besoins pour des problèmes réels. Pour certains optimiseurs, le nombre
127 de pas effectif d'arrêt peut être légèrement différent de la limite à cause
128 d'exigences de contrôle interne de l'algorithme.
130 CostDecrementTolerance
131 Cette clé indique une valeur limite, conduisant à arrêter le processus
132 itératif d'optimisation lorsque la fonction coût décroît moins que cette
133 tolérance au dernier pas. Le défaut est de 1.e-7, et il est recommandé
134 de l'adapter aux besoins pour des problèmes réels.
136 ProjectedGradientTolerance
137 Cette clé indique une valeur limite, conduisant à arrêter le processus
138 itératif d'optimisation lorsque toutes les composantes du gradient projeté
139 sont en-dessous de cette limite. C'est utilisé uniquement par les
140 optimiseurs sous contraintes. Le défaut est -1, qui désigne le défaut
141 interne de chaque optimiseur (usuellement 1.e-5), et il n'est pas recommandé
144 GradientNormTolerance
145 Cette clé indique une valeur limite, conduisant à arrêter le processus
146 itératif d'optimisation lorsque la norme du gradient est en dessous de cette
147 limite. C'est utilisé uniquement par les optimiseurs sans contraintes. Le
148 défaut est 1.e-5 et il n'est pas recommandé de le changer.
150 StoreInternalVariables
151 Cette clé booléenne permet de stocker les variables internes par défaut,
152 principalement l'état courant lors d'un processus itératif. Attention, cela
153 peut être un choix numériquement coûteux dans certains cas de calculs. La
154 valeur par défaut est "False".
156 StoreSupplementaryCalculations
157 Cette liste indique les noms des variables supplémentaires qui peuvent être
158 disponibles à la fin de l'algorithme. Cela implique potentiellement des
159 calculs coûteux. La valeur par défaut est une liste vide, aucune de ces
160 variables n'étant calculée et stockée par défaut. Les noms possibles sont
161 dans la liste suivante : ["APosterioriCovariance", "BMA", "OMA", "OMB",
162 "Innovation", "SigmaObs2", "MahalanobisConsistency"].
167 Références vers d'autres sections :
168 - :ref:`section_ref_algorithm_Blue`
169 - :ref:`section_ref_algorithm_ExtendedBlue`
170 - :ref:`section_ref_algorithm_LinearityTest`
172 Références bibliographiques :