2 Copyright (C) 2008-2023 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 algorithm is naturally written for a single estimate, without any dynamic
44 or iterative notion (there is no need in this case for an incremental evolution
45 operator, nor for an evolution error covariance). In ADAO, it can also be used
46 on a succession of observations, placing the estimate in a recursive framework
47 partly similar to a :ref:`section_ref_algorithm_KalmanFilter`. A standard
48 estimate is made at each observation step on the state predicted by the
49 incremental evolution model, knowing that the state error covariance remains
50 the background covariance initially provided by the user. To be explicit,
51 unlike Kalman-type filters, the state error covariance is not updated.
53 In case of non-linearity, even slightly marked, it will be easily preferred a
54 :ref:`section_ref_algorithm_ExtendedBlue` or a
55 :ref:`section_ref_algorithm_3DVAR`.
57 .. index:: single: Optimal Interpolation
60 Additional remark: an algebraic simplification of the BLUE leads to the
61 so-called optimal interpolation method, named "*Optimal Interpolation*" or
62 "*OI*". It is a very simple and inexpensive method, especially adapted to very
63 (very) large problems, but whose disadvantage is to provide a globally
64 sub-optimal and noisy analysis result, even inconsistent. The way to avoid
65 these disadvantages is to adapt very precisely the elements of the method to
66 each physical model. For these reasons, this method is not proposed nor
69 .. ------------------------------------ ..
70 .. include:: snippets/Header2Algo02.rst
72 .. include:: snippets/Background.rst
74 .. include:: snippets/BackgroundError.rst
76 .. include:: snippets/Observation.rst
78 .. include:: snippets/ObservationError.rst
80 .. include:: snippets/ObservationOperator.rst
82 .. ------------------------------------ ..
83 .. include:: snippets/Header2Algo03AdOp.rst
85 .. include:: snippets/EstimationOf_Parameters.rst
87 .. include:: snippets/NumberOfSamplesForQuantiles.rst
89 .. include:: snippets/Quantiles.rst
91 .. include:: snippets/SetSeed.rst
93 .. include:: snippets/SimulationForQuantiles.rst
95 .. include:: snippets/StateBoundsForQuantilesWithNone.rst
97 StoreSupplementaryCalculations
98 .. index:: single: StoreSupplementaryCalculations
100 *List of names*. This list indicates the names of the supplementary
101 variables, that can be available during or at the end of the algorithm, if
102 they are initially required by the user. Their avalability involves,
103 potentially, costly calculations or memory consumptions. The default is then
104 a void list, none of these variables being calculated and stored by default
105 (excepted the unconditionnal variables). The possible names are in the
106 following list (the detailed description of each named variable is given in
107 the following part of this specific algorithmic documentation, in the
108 sub-section "*Information and variables available at the end of the
111 "APosterioriCorrelations",
112 "APosterioriCovariance",
113 "APosterioriStandardDeviations",
114 "APosterioriVariances",
117 "CostFunctionJAtCurrentOptimum",
119 "CostFunctionJbAtCurrentOptimum",
121 "CostFunctionJoAtCurrentOptimum",
127 "InnovationAtCurrentAnalysis",
128 "MahalanobisConsistency",
131 "SampledStateForQuantiles",
134 "SimulatedObservationAtBackground",
135 "SimulatedObservationAtCurrentOptimum",
136 "SimulatedObservationAtCurrentState",
137 "SimulatedObservationAtOptimum",
138 "SimulationQuantiles",
142 ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}``
144 .. ------------------------------------ ..
145 .. include:: snippets/Header2Algo04.rst
147 .. include:: snippets/Analysis.rst
149 .. ------------------------------------ ..
150 .. include:: snippets/Header2Algo05.rst
152 .. include:: snippets/Analysis.rst
154 .. include:: snippets/APosterioriCorrelations.rst
156 .. include:: snippets/APosterioriCovariance.rst
158 .. include:: snippets/APosterioriStandardDeviations.rst
160 .. include:: snippets/APosterioriVariances.rst
162 .. include:: snippets/BMA.rst
164 .. include:: snippets/CostFunctionJ.rst
166 .. include:: snippets/CostFunctionJAtCurrentOptimum.rst
168 .. include:: snippets/CostFunctionJb.rst
170 .. include:: snippets/CostFunctionJbAtCurrentOptimum.rst
172 .. include:: snippets/CostFunctionJo.rst
174 .. include:: snippets/CostFunctionJoAtCurrentOptimum.rst
176 .. include:: snippets/CurrentOptimum.rst
178 .. include:: snippets/CurrentState.rst
180 .. include:: snippets/CurrentStepNumber.rst
182 .. include:: snippets/ForecastState.rst
184 .. include:: snippets/Innovation.rst
186 .. include:: snippets/InnovationAtCurrentAnalysis.rst
188 .. include:: snippets/MahalanobisConsistency.rst
190 .. include:: snippets/OMA.rst
192 .. include:: snippets/OMB.rst
194 .. include:: snippets/SampledStateForQuantiles.rst
196 .. include:: snippets/SigmaBck2.rst
198 .. include:: snippets/SigmaObs2.rst
200 .. include:: snippets/SimulatedObservationAtBackground.rst
202 .. include:: snippets/SimulatedObservationAtCurrentOptimum.rst
204 .. include:: snippets/SimulatedObservationAtCurrentState.rst
206 .. include:: snippets/SimulatedObservationAtOptimum.rst
208 .. include:: snippets/SimulationQuantiles.rst
210 .. ------------------------------------ ..
211 .. _section_ref_algorithm_Blue_examples:
213 .. include:: snippets/Header2Algo09.rst
215 .. include:: scripts/simple_Blue.rst
217 .. literalinclude:: scripts/simple_Blue.py
219 .. include:: snippets/Header2Algo10.rst
221 .. literalinclude:: scripts/simple_Blue.res
223 .. ------------------------------------ ..
224 .. include:: snippets/Header2Algo06.rst
226 - :ref:`section_ref_algorithm_ExtendedBlue`
227 - :ref:`section_ref_algorithm_3DVAR`
228 - :ref:`section_ref_algorithm_LinearityTest`
230 .. ------------------------------------ ..
231 .. include:: snippets/Header2Algo07.rst