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: MeasurementsOptimalPositioningTask
25 .. index:: single: Positionnement optimal de mesures
26 .. index:: single: Positions de mesures
27 .. index:: single: Mesures (Positionnement optimal)
28 .. index:: single: Ensemble de simulations
29 .. index:: single: Ensemble de snapshots
30 .. index:: single: Simulations (Ensemble)
31 .. index:: single: Snapshots (Ensemble)
32 .. index:: single: Reduced Order Model
33 .. index:: single: ROM
34 .. _section_ref_algorithm_MeasurementsOptimalPositioningTask:
36 Algorithme de tâche "*MeasurementsOptimalPositioningTask*"
37 ----------------------------------------------------------
39 .. ------------------------------------ ..
40 .. include:: snippets/Header2Algo00.rst
42 .. ------------------------------------ ..
43 .. include:: snippets/Header2Algo01.rst
45 Cet algorithme permet d'établir la position optimale de mesures d'un champ
46 physique :math:`\mathbf{y}`, pour en assurer l'interpolation la meilleure
47 possible. Ces positions optimales de mesure sont déterminées de manière
48 itérative, à partir d'un ensemble de vecteurs d'état :math:`\mathbf{y}`
49 pré-existants (usuellement appelés "*snapshots*" en méthodologie de bases
50 réduites) ou obtenus par une simulation de ce(s) champ(s) physiqu(e) d'intérêt
51 au cours de l'algorithme. Chacun de ces vecteurs d'état est habituellement
52 (mais pas obligatoirement) le résultat :math:`\mathbf{y}` d'une simulation à
53 l'aide de l'opérateur :math:`H` restituant le (ou les) champ(s) complet(s) pour
54 un jeu de paramètres donné :math:`\mathbf{x}`, ou d'une observation explicite
55 du (ou des) champ(s) complet(s) :math:`\mathbf{y}`.
57 Pour établir la position optimale de mesures, on utilise une méthode de type
58 Empirical Interpolation Method (EIM [Barrault04]_) ou Discrete Empirical
59 Interpolation Method (DEIM [Chaturantabut10]_), qui établit un modèle réduit de
60 type Reduced Order Model (ROM), avec contraintes (variante "*lcEIM*" ou
61 "*lcDEIM*") ou sans contraintes (variante "*EIM*" ou "*DEIM*") de
62 positionnement. Pour la performance, il est recommandé d'utiliser la variante
63 "*lcEIM*" ou "*EIM*" lorsque la dimension de l'espace des champs complets est
66 Il y a deux manières d'utiliser cet algorithme:
68 #. Dans son usage le plus simple, si l'ensemble des vecteurs d'état physique
69 :math:`\mathbf{y}` est pré-existant, il suffit de le fournir sous la forme
70 d'une collection ordonnée par l'option "*EnsembleOfSnapshots*" de
71 l'algorithme. C'est par exemple ce que l'on obtient par défaut si l'ensemble
72 des états a été généré par un
73 :ref:`section_ref_algorithm_EnsembleOfSimulationGenerationTask`.
74 #. Si l'ensemble des vecteurs d'état physique :math:`\mathbf{y}` doit être
75 obtenu par des simulations explicites au cours de l'algorithme, alors on
76 doit fournir à la fois l'opérateur de simulation du champ complet, ici
77 identifié à l'opérateur d'observation :math:`H` du champ complet, et le plan
78 d'expérience de l'espace des états :math:`\mathbf{x}` paramétriques.
80 Dans le cas où l'on fournit le plan d'expérience, l'échantillonnage des états
81 :math:`\mathbf{x}` peut être fourni comme pour un
82 :ref:`section_ref_algorithm_EnsembleOfSimulationGenerationTask`, explicitement
83 ou sous la forme d'hypercubes, explicites ou échantillonnés selon des
84 distributions courantes, ou à l'aide d'un échantillonnage par hypercube latin
85 (LHS) ou par séquence de Sobol. Les calculs sont optimisés selon les ressources
86 informatiques disponibles et les options demandées par l'utilisateur. On pourra
87 se reporter aux :ref:`section_ref_sampling_requirements` pour une illustration
88 de l'échantillonnage. Attention à la taille de l'hypercube (et donc au nombre
89 de calculs) qu'il est possible d'atteindre, elle peut rapidement devenir
90 importante. La mémoire requise est ensuite le produit de la taille d'un état
91 individuel :math:`\mathbf{y}` par la taille de l'hypercube.
93 .. _mop_determination:
94 .. image:: images/mop_determination.png
98 **Schéma général d'utilisation de l'algorithme**
100 Il est possible d'exclure a priori des positions potentielles pour le
101 positionnement des mesures, en utilisant le variant "*lcEIM*" ou "*lcDEIM*"
102 d'analyse pour une recherche de positionnement contraint.
104 .. ------------------------------------ ..
105 .. include:: snippets/Header2Algo12.rst
107 .. include:: snippets/FeaturePropDerivativeFree.rst
109 .. include:: snippets/FeaturePropParallelAlgorithm.rst
111 .. ------------------------------------ ..
112 .. include:: snippets/Header2Algo02.rst
116 .. ------------------------------------ ..
117 .. include:: snippets/Header2Algo03Task.rst
119 .. include:: snippets/EnsembleOfSnapshots.rst
121 .. include:: snippets/ExcludeLocations.rst
123 .. include:: snippets/ErrorNorm.rst
125 .. include:: snippets/ErrorNormTolerance.rst
127 .. include:: snippets/MaximumNumberOfLocations.rst
129 .. include:: snippets/NameOfLocations.rst
131 .. include:: snippets/ReduceMemoryUse.rst
133 .. include:: snippets/SampleAsExplicitHyperCube.rst
135 .. include:: snippets/SampleAsIndependantRandomVariables.rst
137 .. include:: snippets/SampleAsMinMaxLatinHyperCube.rst
139 .. include:: snippets/SampleAsMinMaxSobolSequence.rst
141 .. include:: snippets/SampleAsMinMaxStepHyperCube.rst
143 .. include:: snippets/SampleAsnUplet.rst
145 .. include:: snippets/SetDebug.rst
147 .. include:: snippets/SetSeed.rst
149 StoreSupplementaryCalculations
150 .. index:: single: StoreSupplementaryCalculations
152 *Liste de noms*. Cette liste indique les noms des variables supplémentaires,
153 qui peuvent être disponibles au cours du déroulement ou à la fin de
154 l'algorithme, si elles sont initialement demandées par l'utilisateur. Leur
155 disponibilité implique, potentiellement, des calculs ou du stockage coûteux.
156 La valeur par défaut est donc une liste vide, aucune de ces variables n'étant
157 calculée et stockée par défaut (sauf les variables inconditionnelles). Les
158 noms possibles pour les variables supplémentaires sont dans la liste suivante
159 (la description détaillée de chaque variable nommée est donnée dans la suite
160 de cette documentation par algorithme spécifique, dans la sous-partie
161 "*Informations et variables disponibles à la fin de l'algorithme*") : [
162 "EnsembleOfSimulations",
173 ``{"StoreSupplementaryCalculations":["CurrentState", "Residu"]}``
175 .. include:: snippets/Variant_MOP.rst
177 .. ------------------------------------ ..
178 .. include:: snippets/Header2Algo04.rst
180 .. include:: snippets/OptimalPoints.rst
182 .. ------------------------------------ ..
183 .. include:: snippets/Header2Algo05.rst
185 .. include:: snippets/EnsembleOfSimulations.rst
187 .. include:: snippets/EnsembleOfStates.rst
189 .. include:: snippets/ExcludedPoints.rst
191 .. include:: snippets/OptimalPoints.rst
193 .. include:: snippets/ReducedBasis.rst
195 .. include:: snippets/ReducedBasisMus.rst
197 .. include:: snippets/Residus.rst
199 .. include:: snippets/SingularValues.rst
201 .. ------------------------------------ ..
202 .. _section_ref_algorithm_MeasurementsOptimalPositioningTask_examples:
204 .. include:: snippets/Header2Algo09.rst
207 .. include:: scripts/simple_MeasurementsOptimalPositioningTask1.rst
209 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask1.py
211 .. include:: snippets/Header2Algo10.rst
213 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask1.res
217 .. include:: scripts/simple_MeasurementsOptimalPositioningTask2.rst
219 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask2.py
221 .. include:: snippets/Header2Algo10.rst
223 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask2.res
227 .. include:: scripts/simple_MeasurementsOptimalPositioningTask3.rst
229 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask3.py
231 .. include:: snippets/Header2Algo10.rst
233 .. literalinclude:: scripts/simple_MeasurementsOptimalPositioningTask3.res
236 .. include:: snippets/Header2Algo11.rst
238 .. _simple_MeasurementsOptimalPositioningTask3:
239 .. image:: scripts/simple_MeasurementsOptimalPositioningTask3.png
243 .. ------------------------------------ ..
244 .. include:: snippets/Header2Algo06.rst
246 - :ref:`section_ref_algorithm_FunctionTest`
247 - :ref:`section_ref_algorithm_ParallelFunctionTest`
248 - :ref:`section_ref_algorithm_EnsembleOfSimulationGenerationTask`
250 .. ------------------------------------ ..
251 .. include:: snippets/Header2Algo07.rst