X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=doc%2Ffr%2Fref_output_variables.rst;h=6e149057416ef5c536d4bfc6d53974650a0b8e9f;hb=11cbdca9c0689e96409009e5db5a2956e304e233;hp=d31383fa0c9df2998c6e06940e8ebc6e0640b594;hpb=2fecd26f25728d31f058af117534c17ab94d46d0;p=modules%2Fadao.git diff --git a/doc/fr/ref_output_variables.rst b/doc/fr/ref_output_variables.rst index d31383f..6e14905 100644 --- a/doc/fr/ref_output_variables.rst +++ b/doc/fr/ref_output_variables.rst @@ -1,5 +1,5 @@ .. - Copyright (C) 2008-2015 EDF R&D + Copyright (C) 2008-2023 EDF R&D This file is part of SALOME ADAO module. @@ -35,36 +35,36 @@ Comment obtenir les informations disponibles en sortie .. index:: single: get .. index:: single: ADD -En sortie, après exécution d'une assimilation de données, d'une optimisation -ou d'une vérification, on dispose de variables et d'informations issues du -calcul. L'obtention de ces informations se fait ensuite de manière standardisée -à l'aide de l'étape de post-processing du calcul. +En sortie, après exécution d'une assimilation de données, d'une optimisation +ou d'une vérification, on dispose de variables et d'informations issues du +calcul. L'obtention de ces informations se fait ensuite de manière standardisée +à l'aide de l'étape de post-processing du calcul. -L'étape est aisément identifiée par l'utilisateur dans son cas ADAO de -définition (par la mot-clé "*UserPostAnalysis*") ou dans son schéma YACS -d'exécution (par des noeuds ou blocs situés après le bloc de calcul, et reliés +L'étape est aisément identifiée par l'utilisateur dans son cas ADAO de +définition (par le mot-clé "*UserPostAnalysis*") ou dans son schéma YACS +d'exécution (par des noeuds ou blocs situés après le bloc de calcul, et reliés graphiquement au port de sortie "*algoResults*" du bloc de calcul): -#. Dans le cas où l'utilisateur définit le post-processing dans son cas ADAO, il utilise un fichier script externe ou des commandes dans le champ de type "*String*" ou "*Template*". Le script qu'il fournit dispose d'une variable fixe "*ADD*" dans l'espace de noms. -#. Dans le cas où l'utilisateur définit le post-processing dans son schéma YACS par un noeud Python situé après le bloc de calcul, il doit ajouter un port d'entrée de type "*pyobj*" nommé par exemple "*Study*", relié graphiquement au port de sortie "*algoResults*" du bloc de calcul. Le noeud Python de post-processing doit ensuite débuter par ``ADD = Study.getResults()``. +#. Dans le cas où l'utilisateur définit le post-processing dans son cas ADAO, il utilise un fichier script externe ou des commandes dans le champ de type "*String*" ou "*Template*". Le script qu'il fournit dispose d'une variable fixe "*ADD*" dans l'espace de noms. +#. Dans le cas où l'utilisateur définit le post-processing dans son schéma YACS par un noeud Python situé après le bloc de calcul, il doit ajouter un port d'entrée de type "*pyobj*" nommé par exemple "*Study*", relié graphiquement au port de sortie "*algoResults*" du bloc de calcul. Le noeud Python de post-processing doit ensuite débuter par ``ADD = Study.getResults()``. -Des patrons (ou "templates") sont donnés ci-après en +Des patrons (ou "templates") sont donnés ci-après en :ref:`subsection_r_o_v_Template`. Dans tous les cas, le post-processing de l'utilisateur dispose dans l'espace de noms d'une variable dont le nom est -"*ADD*", et dont l'unique méthode utilisable est nommée ``get``. Les arguments -de cette méthode sont un nom d'information de sortie, comme décrit dans +"*ADD*", et dont l'unique méthode utilisable est nommée ``get``. Les arguments +de cette méthode sont un nom d'information de sortie, comme décrit dans l':ref:`subsection_r_o_v_Inventaire`. -Par exemple, pour avoir l'état optimal après un calcul d'assimilation de données +Par exemple, pour avoir l'état optimal après un calcul d'assimilation de données ou d'optimisation, on utilise l'appel suivant:: ADD.get("Analysis") -Cet appel renvoie une liste de valeurs de la notion demandée (ou, dans le cas -de variables d'entrées qui ne sont par nature qu'en un unique exemplaire, la -valeur elle-même). On peut alors demander un élément particulier de la liste par +Cet appel renvoie une liste de valeurs de la notion demandée (ou, dans le cas +de variables d'entrées qui ne sont par nature qu'en un unique exemplaire, la +valeur elle-même). On peut alors demander un élément particulier de la liste par les commandes standards de liste (en particulier ``[-1]`` pour le dernier, et -``[:]`` pour tous les éléments). +``[:]`` pour tous les éléments). .. _subsection_r_o_v_Template: @@ -72,253 +72,180 @@ Exemples de scripts Python pour obtenir ou traiter les sorties ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. index:: single: Template -.. index:: single: AnalysisPrinter -.. index:: single: AnalysisSaver -.. index:: single: AnalysisPrinterAndSaver - -Ces exemples présentent des commandes ou scripts Python qui permettent d'obtenir -ou de traiter les sorties d'une exécution d'algorithme. Pour aider l'utilisateur, -ils sont directement disponibles dans l'interface, à la construction du cas ADAO -dans EFICAS, dans les champs de type "*Template*". De manière équivalente, ces -commandes peuvent être contenues dans un script utilisateur externe (et insérées -dans le cas ADAO par l'entrée de type "*Script*") ou contenues dans une chaîne -de caractères, y compris les retour à la ligne (et insérées dans le cas ADAO par -l'entrée de type "*String*"). De nombreuses variantes peuvent être imaginées à -partir de ces exemples simples, l'objectif étant surtout d'aider l'utilisateur à -effectuer le traitement exact dont il a besoin en sortie. - -Le premier exemple (appelé "*AnalysisPrinter*" dans les entrées de type -"*Template*") consiste à afficher, dans la sortie standard d'exécution, la -valeur de l'analyse ou de l'état optimal, noté :math:`\mathbf{x}^a` dans la -partie :ref:`section_theory`. Cela se réalise par les commandes:: +.. index:: single: AnalysisPrinter (UserPostAnalysis) +.. index:: single: AnalysisSaver (UserPostAnalysis) +.. index:: single: AnalysisPrinterAndSaver (UserPostAnalysis) + +Ces exemples présentent des commandes ou scripts Python qui permettent d'obtenir +ou de traiter les sorties d'une exécution d'algorithme. Pour aider +l'utilisateur, ils sont directement disponibles dans l'interface, à la +construction du cas ADAO dans l'éditeur intégré de cas, dans les champs de type +"*Template*". De manière équivalente, ces commandes peuvent être contenues dans +un script utilisateur externe (et insérées dans le cas ADAO par l'entrée de type +"*Script*") ou contenues dans une chaîne de caractères, y compris les retour à +la ligne (et insérées dans le cas ADAO par l'entrée de type "*String*"). De +nombreuses variantes peuvent être imaginées à partir de ces exemples simples, +l'objectif étant surtout d'aider l'utilisateur à effectuer le traitement exact +dont il a besoin en sortie. + +Le premier exemple (appelé "*AnalysisPrinter*" dans les entrées de type +"*Template*" pour la section "*UserPostAnalysis*") consiste à afficher, dans la +sortie standard d'exécution, la valeur de l'analyse ou de l'état optimal, noté +:math:`\mathbf{x}^a` dans la partie :ref:`section_theory`. Cela se réalise par +les commandes:: import numpy xa=numpy.ravel(ADD.get('Analysis')[-1]) - print 'Analysis:',xa" + print('Analysis:',xa) La fonction ``numpy.ravel`` assure simplement que la variable ``xa`` contienne un vrai vecteur unidimensionnel, quels que soient les choix informatiques -précédents. +précédents. -Un second exemple (appelé "*AnalysisSaver*" dans les entrées de type -"*Template*") consiste à enregistrer sur fichier la valeur de l'analyse ou de -l'état optimal :math:`\mathbf{x}^a`. Cela se réalise par les commandes:: +Un second exemple (appelé "*AnalysisSaver*" dans les entrées de type +"*Template*" pour la section "*UserPostAnalysis*") consiste à enregistrer sur +fichier la valeur de l'analyse ou de l'état optimal :math:`\mathbf{x}^a`. Cela +se réalise par les commandes:: import numpy xa=numpy.ravel(ADD.get('Analysis')[-1]) f='/tmp/analysis.txt' - print 'Analysis saved in "%s"'%f + print('Analysis saved in "%s"'%f) numpy.savetxt(f,xa)" Le fichier d'enregistrement choisi est un fichier texte ``/tmp/analysis.txt``. -Il est aisé de combiner ces deux exemples pour en construire un troisième -(appelé "*AnalysisPrinterAndSaver*" dans les entrées de type "*Template*"). Il -consiste à simultanément afficher dans la sortie standard d'exécution et à -enregistrer sur fichier la valeur de :math:`\mathbf{x}^a`. Cela se réalise par -les commandes:: +Il est aisé de combiner ces deux exemples pour en construire un troisième +(appelé "*AnalysisPrinterAndSaver*" dans les entrées de type "*Template*" pour +la section "*UserPostAnalysis*"). Il consiste à simultanément afficher dans la +sortie standard d'exécution et à enregistrer sur fichier la valeur de +:math:`\mathbf{x}^a`. Cela se réalise par les commandes:: import numpy xa=numpy.ravel(ADD.get('Analysis')[-1]) - print 'Analysis:',xa + print('Analysis:',xa) f='/tmp/analysis.txt' - print 'Analysis saved in "%s"'%f + print('Analysis saved in "%s"'%f) numpy.savetxt(f,xa) Pour faciliter l'extension de ces exemples selon les besoins utilisateurs, on -rappelle que l'ensemble des fonctions de SALOME sont disponibles au même niveau -que ces commandes. L'utilisateur peut en particulier requérir des actions de -représentation graphique avec le module PARAVIS [#]_ ou d'autres modules, des -actions de calcul pilotés par YACS [#]_ ou un autre module, etc. +rappelle que l'ensemble des fonctions de SALOME sont disponibles au même niveau +que ces commandes. L'utilisateur peut en particulier requérir des actions de +représentation graphique avec le module PARAVIS [#]_ ou d'autres modules, des +actions de calcul pilotés par YACS [#]_ ou un autre module, etc. -D'autres exemples d'utilisation sont aussi donnés en :ref:`section_u_step4` de -la partie :ref:`section_using`, ou en partie :ref:`section_examples`. +D'autres exemples d'utilisation sont aussi donnés en :ref:`section_u_step4` de +la partie :ref:`section_gui_in_salome`, ou en partie :ref:`section_tutorials_in_salome`. -Conditionnalité des informations disponibles en sortie +Conditionnalité des informations disponibles en sortie ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.. index:: single: StoreInternalVariables .. index:: single: AlgorithmParameters .. index:: single: Stored -La disponibilité des informations après le calcul est conditionnée par le fait -qu'elles aient été calculées ou demandées. - -Chaque algorithme ne fournit pas obligatoirement les mêmes informations, et -n'utilise par exemple pas nécessairement les mêmes quantités intermédiaires. Il -y a donc des informations toujours présentes comme l'état optimal résultant du -calcul. Les autres informations ne sont présentes que pour certains algorithmes -et/ou que si elles ont été réclamées avant l'exécution du calcul. - -On rappelle que l'utilisateur peut réclamer des informations supplémentaires -lors de l'établissement de son cas ADAO, en utilisant l'option -"*StoreInternalVariables*" de chaque algorithme à travers la commande -optionnelle "*AlgorithmParameters*" du cas ADAO. On se reportera à la -:ref:`section_ref_options_AlgorithmParameters` pour le bon usage de cette -commande, et à la description de chaque algorithme pour les informations -disponibles par algorithme. On peut aussi demander à conserver certaines -informations en entrée en changeant le booléen "*Stored*" qui lui est associé -dans l'édition du cas ADAO. +La disponibilité des informations après le calcul est conditionnée par le fait +qu'elles aient été calculées ou demandées. + +Chaque algorithme ne fournit pas obligatoirement les mêmes informations, et +n'utilise par exemple pas nécessairement les mêmes quantités intermédiaires. Il +y a donc des informations toujours présentes comme l'état optimal résultant du +calcul. Les autres informations ne sont présentes que pour certains algorithmes +et/ou que si elles ont été réclamées avant l'exécution du calcul. + +On rappelle que l'utilisateur peut réclamer des informations supplémentaires +lors de l'établissement de son cas ADAO, en utilisant la commande optionnelle +"*AlgorithmParameters*" du cas ADAO. On se reportera à la +:ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette +commande, et à la description de chaque algorithme pour les informations +disponibles par algorithme. On peut aussi demander à conserver certaines +informations en entrée en changeant le booléen "*Stored*" qui lui est associé +dans l'édition du cas ADAO. .. _subsection_r_o_v_Inventaire: Inventaire des informations potentiellement disponibles en sortie +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -L'ensemble des informations potentiellement disponibles en sortie est indiqué -ici indépendamment des algorithmes, pour inventaire. - -L'état optimal est une information qui est toujours naturellement disponible -après un calcul d'assimilation de données ou d'optimisation. Il désigné par le -mot-clé suivant: - - Analysis - *Liste de vecteurs*. Chaque élément est un état optimal :math:`\mathbf{x}*` - en optimisation ou une analyse :math:`\mathbf{x}^a` en assimilation de - données. - - Exemple : ``Xa = ADD.get("Analysis")[-1]`` - -Les variables suivantes sont des variables d'entrée. Elles sont mises à -disposition de l'utilisateur en sortie pour faciliter l'écriture des procédures -de post-processing, et sont conditionnées par une demande utilisateur à l'aide -d'un booléen "*Stored*" en entrée. - - Background - *Vecteur*, dont la disponibilité est conditionnée par "*Stored*" en entrée. - C'est le vecteur d'ébauche :math:`\mathbf{x}^b`. - - Exemple : ``Xb = ADD.get("Background")`` - - BackgroundError - *Matrice*, dont la disponibilité est conditionnée par "*Stored*" en entrée. - C'est la matrice :math:`\mathbf{B}` de covariances des erreurs *a priori* - de l'ébauche. - - Exemple : ``B = ADD.get("BackgroundError")`` - - EvolutionError - *Matrice*, dont la disponibilité est conditionnée par "*Stored*" en entrée. - C'est la matrice :math:`\mathbf{M}` de covariances des erreurs *a priori* - de l'évolution. - - Exemple : ``M = ADD.get("EvolutionError")`` - - Observation - *Vecteur*, dont la disponibilité est conditionnée par "*Stored*" en entrée. - C'est le vecteur d'observation :math:`\mathbf{y}^o`. - - Exemple : ``Yo = ADD.get("Observation")`` - - ObservationError - *Matrice*, dont la disponibilité est conditionnée par "*Stored*" en entrée. - C'est la matrice :math:`\mathbf{R}` de covariances des erreurs *a priori* - de l'observation. - - Exemple : ``R = ADD.get("ObservationError")`` +Les principales informations potentiellement disponibles en sortie sont +indiquées ici indépendamment des algorithmes, pour inventaire. On se reportera +directement aux détails des algorithmes pour avoir l'inventaire exhaustif. -Toutes les autres informations sont conditionnées par l'algorithme et/ou par la -demande utilisateur de disponibilité. Ce sont les suivantes, par ordre -alphabétique: +L'état optimal est une information qui est toujours naturellement disponible +après un calcul d'assimilation de données ou d'optimisation. Il désigné par le +mot-clé suivant: - APosterioriCovariance - *Liste de matrices*. Chaque élément est une matrice :math:`\mathbf{A}*` de - covariances des erreurs *a posteriori* de l'état optimal. + .. include:: snippets/Analysis.rst - Exemple : ``A = ADD.get("APosterioriCovariance")[-1]`` +Les variables suivantes sont des variables d'entrée que l'on peut aussi obtenir +en sortie. Elles sont mises à disposition de l'utilisateur en sortie pour +faciliter l'écriture des procédures de post-processing, et sont conditionnées +par une demande utilisateur explicite à l'aide d'un booléen "*Stored*" en +entrée. Toutes ces variables d'entrée restituées sont obtenables par la +commande standard ".get(...)", qui s'applique à refournir l'unique objet donné +en entrée. - BMA - *Liste de vecteurs*. Chaque élément est un vecteur d'écart entre - l'ébauche et l'état optimal. + .. include:: snippets/Background.rst - Exemple : ``bma = ADD.get("BMA")[-1]`` + .. include:: snippets/BackgroundError.rst - CostFunctionJ - *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart - :math:`J`. + .. include:: snippets/EvolutionError.rst - Exemple : ``J = ADD.get("CostFunctionJ")[:]`` + .. include:: snippets/Observation.rst - CostFunctionJb - *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart - :math:`J^b`, c'est-à-dire de la partie écart à l'ébauche. + .. include:: snippets/ObservationError.rst - Exemple : ``Jb = ADD.get("CostFunctionJb")[:]`` +Toutes les autres informations sont conditionnées par l'algorithme et/ou par la +demande utilisateur de disponibilité. Les principales sont les suivantes, par +ordre alphabétique: - CostFunctionJo - *Liste de valeurs*. Chaque élément est une valeur de fonctionnelle d'écart - :math:`J^o`, c'est-à-dire de la partie écart à l'observation. + .. include:: snippets/APosterioriCorrelations.rst - Exemple : ``Jo = ADD.get("CostFunctionJo")[:]`` + .. include:: snippets/APosterioriCovariance.rst - CurrentState - *Liste de vecteurs*. Chaque élément est un vecteur d'état courant utilisé - au cours du déroulement de l'algorithme d'optimisation. + .. include:: snippets/APosterioriStandardDeviations.rst - Exemple : ``Xs = ADD.get("CurrentState")[:]`` + .. include:: snippets/APosterioriVariances.rst - Innovation - *Liste de vecteurs*. Chaque élément est un vecteur d'innovation, qui est - en statique l'écart de l'optimum à l'ébauche, et en dynamique l'incrément - d'évolution. + .. include:: snippets/BMA.rst - Exemple : ``d = ADD.get("Innovation")[-1]`` + .. include:: snippets/CostFunctionJ.rst - MahalanobisConsistency - *Liste de valeurs*. Chaque élément est une valeur de l'indicateur de - qualité de Mahalanobis. + .. include:: snippets/CostFunctionJb.rst - Exemple : ``m = ADD.get("MahalanobisConsistency")[-1]`` + .. include:: snippets/CostFunctionJo.rst - ObservedState - *Liste de vecteurs*. Chaque élément est un vecteur d'état observé, - c'est-à-dire dans l'espace des observations. + .. include:: snippets/CostFunctionJAtCurrentOptimum.rst - Exemple : ``Ys = ADD.get("ObservedState")[-1]`` + .. include:: snippets/CostFunctionJbAtCurrentOptimum.rst - OMA - *Liste de vecteurs*. Chaque élément est un vecteur d'écart entre - l'observation et l'état optimal dans l'espace des observations. + .. include:: snippets/CostFunctionJoAtCurrentOptimum.rst - Exemple : ``oma = ADD.get("OMA")[-1]`` + .. include:: snippets/CurrentOptimum.rst - OMB - *Liste de vecteurs*. Chaque élément est un vecteur d'écart entre - l'observation et l'état d'ébauche dans l'espace des observations. + .. include:: snippets/CurrentState.rst - Exemple : ``omb = ADD.get("OMB")[-1]`` + .. include:: snippets/IndexOfOptimum.rst - SigmaBck2 - *Liste de valeurs*. Chaque élément est une valeur de l'indicateur de - qualité :math:`(\sigma^b)^2` de la partie ébauche. + .. include:: snippets/Innovation.rst - Exemple : ``sb2 = ADD.get("SigmaBck")[-1]`` + .. include:: snippets/InnovationAtCurrentState.rst - SigmaObs2 - *Liste de valeurs*. Chaque élément est une valeur de l'indicateur de - qualité :math:`(\sigma^o)^2` de la partie observation. + .. include:: snippets/OMA.rst - Exemple : ``so2 = ADD.get("SigmaObs")[-1]`` + .. include:: snippets/OMB.rst - SimulatedObservationAtBackground - *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à - partir de l'ébauche :math:`\mathbf{x}^b`. + .. include:: snippets/Residu.rst - Exemple : ``hxb = ADD.get("SimulatedObservationAtBackground")[-1]`` + .. include:: snippets/SimulatedObservationAtBackground.rst - SimulatedObservationAtOptimum - *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à - partir de l'analyse ou de l'état optimal :math:`\mathbf{x}^a`. + .. include:: snippets/SimulatedObservationAtCurrentOptimum.rst - Exemple : ``hxa = ADD.get("SimulatedObservationAtOptimum")[-1]`` + .. include:: snippets/SimulatedObservationAtCurrentState.rst - SimulationQuantiles - *Liste de vecteurs*. Chaque élément est un vecteur correspondant à l'état - observé qui réalise le quantile demandé, dans le même ordre que les - quantiles requis par l'utilisateur. + .. include:: snippets/SimulatedObservationAtOptimum.rst - Exemple : ``sQuantiles = ADD.get("SimulationQuantiles")[:]`` + .. include:: snippets/SimulationQuantiles.rst -.. [#] Pour de plus amples informations sur PARAVIS, voir le *module PARAVIS* et son aide intégrée disponible dans le menu principal *Aide* de l'environnement SALOME. +.. [#] Pour de plus amples informations sur PARAVIS, voir le *module PARAVIS* et son aide intégrée disponible dans le menu principal *Aide* de l'environnement SALOME. -.. [#] Pour de plus amples informations sur YACS, voir le *module YACS* et son aide intégrée disponible dans le menu principal *Aide* de l'environnement SALOME. +.. [#] Pour de plus amples informations sur YACS, voir le *module YACS* et son aide intégrée disponible dans le menu principal *Aide* de l'environnement SALOME.