After that point, all the modifications, executions and post-processing of the
data assimilation scheme will be done in the YACS module. In order to check the
-result in a simple way, we create here a new YACS node by using the "*in-line
-script node*" sub-menu of the YACS graphical view, and we name it
-"*PostProcessing*".
+result in a simple way, we use the "*UserPostAnalysis*" node (or we create here
+a new YACS node by using the "*in-line script node*" sub-menu of the YACS
+graphical view).
This script node will retrieve the data assimilation analysis from the
"*algoResults*" output port of the computation bloc (which gives access to a
SALOME Python Object), and will print it on the standard output.
To obtain this, the in-line script node need to have an input port of type
-"*pyobj*", named "*results*" for example, that have to be linked graphically to
+"*pyobj*", named "*Study*" for example, that have to be linked graphically to
the "*algoResults*" output port of the computation bloc. Then, the code to fill
in the script node is::
- Xa = results.ADD.get("Analysis")[-1]
+ Xa = Study.getResults().get("Analysis")[-1]
print
print "Analysis =",Xa
print
-The augmented YACS scheme can be saved (overwriting the generated scheme if the
-"*Save*" command or button are used, or with a new name through the "*Save as*"
-command). Ideally, the implementation of such post-processing procedure can be
-done in YACS to test, and then entirely saved in one Python script that can be
-integrated in the ADAO case by using the keyword "*UserPostAnalysis*".
+The (initial or augmented) YACS scheme can be saved (overwriting the generated
+scheme if the "*Save*" command or button are used, or with a new name through
+the "*Save as*" command). Ideally, the implementation of such post-processing
+procedure can be done in YACS to test, and then entirely saved in one Python
+script that can be integrated in the ADAO case by using the keyword
+"*UserPostAnalysis*".
Then, classically in YACS, the scheme have to be compiled for run, and then
executed. After completion, the printing on standard output is available in the
One can add some optional parameters to control the data assimilation algorithm
calculation. This is done by using optional parameters in the
-"*AlgorithmParameters*" command of the ADAO case definition, which is a keyword of
-the "*ASSIMILATION_STUDY*" general command. This keyword requires an explicit
-definition of the values or a Python dictionary, containing some key/value
-pairs. The list of possible optional parameters are given in the section
-:ref:`section_reference` and its subsections.
+"*AlgorithmParameters*" command of the ADAO case definition, which is a keyword
+of the "*ASSIMILATION_STUDY*" general command. This keyword requires an explicit
+definition of the values from default ones, or from a Python dictionary,
+containing some key/value pairs. The list of possible optional parameters are
+given in the section :ref:`section_reference` and its subsections. The
+recommandation is to use the explicit definition of values from the default list
+of optionnal parameters, as here with the "*MaximumNumberOfSteps*":
-This dictionary has to be defined, for example, in an external Python script
+ .. _adao_scriptentry02:
+ .. image:: images/adao_scriptentry02.png
+ :align: center
+ :width: 100%
+ .. centered::
+ **Adding parameters to control the algorithm and the outputs**
+
+This dictionary can be defined, for example, in an external Python script
file, using the mandatory variable name "*AlgorithmParameters*" for the
dictionary. All the keys inside the dictionary are optional, they all have
default values, and can exist without being used. For example::
assimilation or optimization algorithms. For constrained optimization, the
minimizer "*LBFGSB*" is often more robust, but the "*TNC*" is sometimes more
effective. In a general way, the "*LBFGSB*" algorithm choice is recommended.
-
Then the script can be added to the ADAO case, in a file entry describing the
-"*AlgorithmParameters*" keyword, as follows:
-
- .. _adao_scriptentry02:
- .. image:: images/adao_scriptentry02.png
- :align: center
- :width: 100%
- .. centered::
- **Adding parameters to control the algorithm and the outputs**
+"*Parameters*" keyword.
Other steps and results are exactly the same as in the `Building an estimation
case with explicit data definition`_ previous example. The dictionary can also
as a script in an external file (entry of type "*Script*"), or by using a
template or pattern (entry of type"*Template*") available by default in ADAO
when using the graphical editor. These templates are simple scripts that can be
-tuned by the user, either in the integrated edition stage of the case, or in
+tuned by the user, either in the integrated edtition stage of the case, or in
the edition stage of the schema before execution, to improve the ADAO case
performance in the SALOME execution supervisor.
Après ce point, toutes les modifications, exécutions et post-processing du
schéma d'assimilation de données seront effectués dans le module YACS. De
-manière à vérifier les résultats d'une manière simple, on crée ici un nouveau
-noeud YACS en utilisant le sous-menu "*Noeud de script in-line*" dans la vue
-graphique de YACS, et on le nomme "*PostProcessing*".
+manière à vérifier les résultats d'une manière simple, on utilise le noeud
+"*UserPostAnalysis*" (ou on crée ici un nouveau noeud YACS par le sous-menu
+"*Noeud de script in-line*" dans la vue graphique de YACS).
Ce noeud de script va récupérer l'analyse issue de l'assimilation de données
depuis le port de sortie "*algoResults*" du bloc de calcul (qui donne accés à un
objet Python SALOME), et va l'afficher à la sortie standard.
Pour obtenir ceci, ce noeud de script doit comporter un port d'entrée de type
-"*pyobj*", nommé "*results*" par exemple, qui doit être relié graphiquement au
+"*pyobj*", nommé "*Study*" par exemple, qui doit être relié graphiquement au
port de sortie "*algoResults*" du bloc de calcul. Ensuite, le code pour remplir
le noeud de script est::
- Xa = results.ADD.get("Analysis")[-1]
+ Xa = Study.getResults().get("Analysis")[-1]
print
print "Analysis =",Xa
print
-Le schéma YACS complété peut être enregistré (en écrasant le schéma généré si la
-commande ou le bouton "*Enregistrer*" sont utilisés, ou sinon avec un nom
-nouveau par la commande "*Enregistrer sous*"). De manière pratique, la mise au
-point d'une telle procédure de post-processing peut être réalisée dans YACS pour
-la tester, et ensuite entièrement enregistrée dans un script Python qui peut
-être intégré au cas ADAO en utilisant le mot-clé "*UserPostAnalysis*".
+Le schéma YACS (initial ou complété) peut être enregistré (en écrasant le schéma
+généré si la commande ou le bouton "*Enregistrer*" sont utilisés, ou sinon avec
+un nom nouveau par la commande "*Enregistrer sous*"). De manière pratique, la
+mise au point d'une telle procédure de post-processing peut être réalisée dans
+YACS pour la tester, et ensuite entièrement enregistrée dans un script Python
+qui peut être intégré au cas ADAO en utilisant le mot-clé "*UserPostAnalysis*".
Ensuite, de manière classique dans YACS, le schéma doit être compilé, et ensuite
être exécuté. Après la fin de l'exécution, les affichages sur la sortie standard
On peut ajouter des paramètres optionnels pour contrôler le calcul de
l'algorithme d'assimilation de données. Ceci se fait en utilisant les paramètres
-optionnels dans la commande "*AlgorithmParameters*" de la définition du cas ADAO,
-qui est un mot-clé de la commande générale "*ASSIMILATION_STUDY*". Ce mot-clé
-nécessite une définition explicite des valeurs ou un dictionnaire Python,
-contenant des paires clé/valeur. La liste des paramètres optionnels possibles
-sont donnés dans la section :ref:`section_reference` et ses sous-sections.
+optionnels dans la commande "*AlgorithmParameters*" de la définition du cas
+ADAO, qui est un mot-clé de la commande générale "*ASSIMILATION_STUDY*". Ce
+mot-clé nécessite une définition explicite des valeurs à partir de valeurs par
+défaut, ou à partir d'un dictionnaire Python, contenant des paires clé/valeur.
+La liste des paramètres optionnels possibles sont donnés dans la section
+:ref:`section_reference` et ses sous-sections. On recommande d'utiliser la
+définition explicite de valeurs à partir de la liste par défaut de paramètres
+optionnels, comme ici avec le "*MaximumNumberOfSteps*":
-Le dictionnaire doit être défini, par exemple, dans un fichiers externe de
+ .. _adao_scriptentry02:
+ .. image:: images/adao_scriptentry02.png
+ :align: center
+ :width: 100%
+ .. centered::
+ **Ajouter des paramètres pour contrôler l'algorithme et les sorties**
+
+Le dictionnaire peut être défini, par exemple, dans un fichiers externe de
script Python, en utilisant le nom obligatoire de variable
"*AlgorithmParameters*" pour le dictionnaire. Toutes les clés dans le
dictionnaire sont optionnelles, elles disposent toutes d'une valeur par défaut,
choisir les algorithmes de minimisation "*BFGS*" ou "*CG*" pour tous les
algorithmes variationnels d'assimilation de données ou d'optimisation. Pour
l'optimisation sous contraintes, l'algorithme "*LBFGSB*" est bien souvent plus
-robuste, mais le "*TNC*" est parfois plus performant. De manière générale,
-le choix de l'algorithme "*LBFGSB*" est recommandé.
-
-Ensuite le script peut être ajouté au cas ADAO, dans une entrée de type fichier
-pour le mot-clé "*AlgorithmParameters*", de la manière suivante:
-
- .. _adao_scriptentry02:
- .. image:: images/adao_scriptentry02.png
- :align: center
- :width: 100%
- .. centered::
- **Ajouter des paramètres pour contrôler l'algorithme et les sorties**
+robuste, mais le "*TNC*" est parfois plus performant. De manière générale, le
+choix de l'algorithme "*LBFGSB*" est recommandé. Ensuite le script peut être
+ajouté au cas ADAO, dans une entrée de type fichier associé au format "*Dict*"
+dans le mot-clé "*Parameters*".
Les autres étapes et résultats sont exactement les mêmes que dans l'exemple
précédent `Construire un cas d'estimation avec une définition explicite des
En choisissant le bouton "*Nouveau*", un éditeur intégré de cas [#]_ sera
ouvert, en même temps que le "*navigateur d'objets*" standard. On peut alors
-cliquer sur le bouton "*Nouveau*"(ou choisir l'entrée "*Nouveau*" dans le dans
+cliquer sur le bouton "*Nouveau*" (ou choisir l'entrée "*Nouveau*" dans le dans
le menu principal "*ADAO*") pour créer un nouveau cas ADAO, et on obtient :
.. _adao_viewer:
"""import numpy
xa=numpy.ravel(ADD.get('Analysis')[-1])
print 'Analysis:',xa""",),);
-#VERSION_CATALOGUE:V7_6_0:FIN VERSION_CATALOGUE
-
+#VERSION_CATALOGUE:V8_3_0:FIN VERSION_CATALOGUE
+#CHECKSUM:d0ae74c3d19e5dc06266e154bab77956 -:FIN CHECKSUM
\ No newline at end of file