2 Copyright (C) 2008-2024 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: Blue
25 .. _section_ref_algorithm_Blue:
27 Calculation algorithm "*Blue*"
28 ------------------------------
30 .. ------------------------------------ ..
31 .. include:: snippets/Header2Algo01.rst
33 This algorithm realizes a BLUE (Best Linear Unbiased Estimator) type estimation
34 of the state of a system. It is a linear, unbiased and optimal estimation.
35 Technically, it is here an Aitken estimator. It performs the best linear
36 estimate of the state using the initial background state and the observations.
37 It is theoretically reserved for observation operator cases which are linear,
38 even if it sometimes works in "slightly" non-linear cases. One can verify the
39 linearity of the observation operator with the help of the
40 :ref:`section_ref_algorithm_LinearityTest`. This algorithm is always the
41 fastest of all the assimilation algorithms of ADAO.
43 This mono-objective optimization algorithm is naturally written for a single
44 estimate, without any dynamic or iterative notion (there is no need in this
45 case for an incremental evolution operator, nor for an evolution error
46 covariance). In ADAO, it can also be used on a succession of observations,
47 placing the estimate in a recursive framework partly similar to a
48 :ref:`section_ref_algorithm_KalmanFilter`. A standard estimate is made at each
49 observation step on the state predicted by the incremental evolution model,
50 knowing that the state error covariance remains the background covariance
51 initially provided by the user. To be explicit, unlike Kalman-type filters, the
52 state error covariance is not updated.
54 In case of non-linearity, even slightly marked, it will be easily preferred a
55 :ref:`section_ref_algorithm_ExtendedBlue` or a
56 :ref:`section_ref_algorithm_3DVAR`.
58 .. index:: single: Optimal Interpolation
61 Additional remark: an algebraic simplification of the BLUE leads to the
62 so-called optimal interpolation method, named "*Optimal Interpolation*" or
63 "*OI*". It is a very simple and inexpensive method, especially adapted to very
64 (very) large problems, but whose disadvantage is to provide a globally
65 sub-optimal and noisy analysis result, even inconsistent. The way to avoid
66 these disadvantages is to adapt very precisely the elements of the method to
67 each physical model, making the method not robust. For these reasons, this
68 method is not proposed nor recommended.
70 .. ------------------------------------ ..
71 .. include:: snippets/Header2Algo12.rst
73 .. include:: snippets/FeaturePropLocalOptimization.rst
75 .. include:: snippets/FeaturePropDerivativeNeeded.rst
77 .. include:: snippets/FeaturePropParallelDerivativesOnly.rst
79 .. ------------------------------------ ..
80 .. include:: snippets/Header2Algo02.rst
82 .. include:: snippets/Background.rst
84 .. include:: snippets/BackgroundError.rst
86 .. include:: snippets/Observation.rst
88 .. include:: snippets/ObservationError.rst
90 .. include:: snippets/ObservationOperator.rst
92 .. ------------------------------------ ..
93 .. include:: snippets/Header2Algo03AdOp.rst
95 .. include:: snippets/EstimationOf_Parameters.rst
97 .. include:: snippets/NumberOfSamplesForQuantiles.rst
99 .. include:: snippets/Quantiles.rst
101 .. include:: snippets/SetSeed.rst
103 .. include:: snippets/SimulationForQuantiles.rst
105 .. include:: snippets/StateBoundsForQuantilesWithNone.rst
107 StoreSupplementaryCalculations
108 .. index:: single: StoreSupplementaryCalculations
110 *List of names*. This list indicates the names of the supplementary
111 variables, that can be available during or at the end of the algorithm, if
112 they are initially required by the user. Their availability involves,
113 potentially, costly calculations or memory consumptions. The default is then
114 a void list, none of these variables being calculated and stored by default
115 (excepted the unconditional variables). The possible names are in the
116 following list (the detailed description of each named variable is given in
117 the following part of this specific algorithmic documentation, in the
118 sub-section "*Information and variables available at the end of the
121 "APosterioriCorrelations",
122 "APosterioriCovariance",
123 "APosterioriStandardDeviations",
124 "APosterioriVariances",
127 "CostFunctionJAtCurrentOptimum",
129 "CostFunctionJbAtCurrentOptimum",
131 "CostFunctionJoAtCurrentOptimum",
137 "InnovationAtCurrentAnalysis",
138 "MahalanobisConsistency",
141 "SampledStateForQuantiles",
144 "SimulatedObservationAtBackground",
145 "SimulatedObservationAtCurrentOptimum",
146 "SimulatedObservationAtCurrentState",
147 "SimulatedObservationAtOptimum",
148 "SimulationQuantiles",
152 ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}``
154 .. ------------------------------------ ..
155 .. include:: snippets/Header2Algo04.rst
157 .. include:: snippets/Analysis.rst
159 .. ------------------------------------ ..
160 .. include:: snippets/Header2Algo05.rst
162 .. include:: snippets/Analysis.rst
164 .. include:: snippets/APosterioriCorrelations.rst
166 .. include:: snippets/APosterioriCovariance.rst
168 .. include:: snippets/APosterioriStandardDeviations.rst
170 .. include:: snippets/APosterioriVariances.rst
172 .. include:: snippets/BMA.rst
174 .. include:: snippets/CostFunctionJ.rst
176 .. include:: snippets/CostFunctionJAtCurrentOptimum.rst
178 .. include:: snippets/CostFunctionJb.rst
180 .. include:: snippets/CostFunctionJbAtCurrentOptimum.rst
182 .. include:: snippets/CostFunctionJo.rst
184 .. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
186 .. include:: snippets/CurrentOptimum.rst
188 .. include:: snippets/CurrentState.rst
190 .. include:: snippets/CurrentStepNumber.rst
192 .. include:: snippets/ForecastState.rst
194 .. include:: snippets/Innovation.rst
196 .. include:: snippets/InnovationAtCurrentAnalysis.rst
198 .. include:: snippets/MahalanobisConsistency.rst
200 .. include:: snippets/OMA.rst
202 .. include:: snippets/OMB.rst
204 .. include:: snippets/SampledStateForQuantiles.rst
206 .. include:: snippets/SigmaBck2.rst
208 .. include:: snippets/SigmaObs2.rst
210 .. include:: snippets/SimulatedObservationAtBackground.rst
212 .. include:: snippets/SimulatedObservationAtCurrentOptimum.rst
214 .. include:: snippets/SimulatedObservationAtCurrentState.rst
216 .. include:: snippets/SimulatedObservationAtOptimum.rst
218 .. include:: snippets/SimulationQuantiles.rst
220 .. ------------------------------------ ..
221 .. _section_ref_algorithm_Blue_examples:
223 .. include:: snippets/Header2Algo09.rst
225 .. include:: scripts/simple_Blue.rst
227 .. literalinclude:: scripts/simple_Blue.py
229 .. include:: snippets/Header2Algo10.rst
231 .. literalinclude:: scripts/simple_Blue.res
233 .. ------------------------------------ ..
234 .. include:: snippets/Header2Algo06.rst
236 - :ref:`section_ref_algorithm_ExtendedBlue`
237 - :ref:`section_ref_algorithm_3DVAR`
238 - :ref:`section_ref_algorithm_LinearityTest`
240 .. ------------------------------------ ..
241 .. include:: snippets/Header2Algo07.rst