From: nicolas Date: Mon, 23 Sep 2013 14:25:42 +0000 (+0000) Subject: Documentation sur les schémas YACS X-Git-Tag: V7_3_0a1~38 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=e592d44627a2e2d67bcc939ee3411db567eb5824;p=modules%2Fhomard.git Documentation sur les schémas YACS --- diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am index feb204a6..45ff7dfe 100644 --- a/doc/en/Makefile.am +++ b/doc/en/Makefile.am @@ -73,6 +73,7 @@ tui_homard.rst \ tui_usage.rst \ tutorials.rst \ gui_create_yacs.rst \ +gui_create_yacs_aster.rst \ tui_create_yacs.rst EXTRA_DIST += $(RSTFILES) images ../images ../files diff --git a/doc/en/gui_create_yacs.rst b/doc/en/gui_create_yacs.rst index 5d3b67d3..cfbfd6ee 100644 --- a/doc/en/gui_create_yacs.rst +++ b/doc/en/gui_create_yacs.rst @@ -82,7 +82,61 @@ The default choice, 'constant', alternate a computation that is always the same The option 'variable' is inactive today. +Saving the schema +***************** +By default, the schema is saved into the file `schema.xml` in the directory of the case that is under the schema. If the file is deleted, it can be rewritten by the mouse option "Write". + +Object browser +************** +.. index:: single: object browser + +The object browser contains the created schemas, identified by their names. They can be edited. Under every schema, there is a link to the case and the reference to the `xml` file that is written. This file can be read. + +.. image:: images/create_yacs_1.png + :align: center + Corresponding python functions ****************************** Look :ref:`tui_create_yacs` +How to use the schema +##################### + +The schema that is produced by this procedure can be imported into the module YACS. It can be executed without any modification. It this case, the stop into the loop is done: + +- either the maximal number of iterations for the loop (calcul,adaptation) is reached; +- or the test for the convergence over the variable ``V_TEST`` is satisfied. + +By default, the maximal number of iterations is equal to 5 and the test for the convergence is satisfied if the variable varies less than one per a thousand in a relative value, between two successive iterations. These tests can be modified. + +These tests ares done into the node "Analyse" of the schema, as described in :ref:`yacs`. + +The maximal number of iterations is given by the variable `NbCalcMax`: + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 111-113 + +The value for the test is saved in a list all along the calculations: + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 137-141 + +and the test is calculated after the second iteration: + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 143-148 + +If this test is modified, it must be done here. But the instructions when it is converged must be kept to guarantee a good execution: + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 146-148 + +Examples +######## +.. index:: single: Code_Aster + +A user's guide for schemas with Code_Aster is available here: :ref:`gui_create_yacs_aster`. + + + + diff --git a/doc/en/gui_create_yacs_aster.rst b/doc/en/gui_create_yacs_aster.rst new file mode 100644 index 00000000..e947b8ad --- /dev/null +++ b/doc/en/gui_create_yacs_aster.rst @@ -0,0 +1,61 @@ +.. _gui_create_yacs_aster: + +A schema YACS for Code_Aster +############################ +.. index:: single: YACS +.. index:: single: Code_Aster + +If the schema implies a coupling between Code_Aster and HOMARD, somme comments are included here. + +Préalable +********* +La création automatique du schema va se faire en trois phases : + +- Au départ, il faut avoir fait un calcul sur un tout premier maillage. Ce calcul aura produit des résultats dans un fichier MED. +- Ensuite, on crée un cas dans le module HOMARD, tel qu'il est décrit dans :ref:`gui_create_case`. Dans ce cas, on crée une itération suivante du maillage en définissant une hypothèse d'adaptation ; voir :ref:`gui_create_iteration`. +- Enfin, de ce cas, on va créer le schema qui se basera sur l'hypothèse d'adapation définie. + + +.. image:: images/create_yacs_01.png + :align: center + :alt: yacs - création + :width: 551 + :height: 295 + +Le script +********* + +Le fichier contenant le script qui permet de lancer le calcul lié à la modélisation physique est fourni ici. C'est un script python qui doit respecter les règles suivantes : + +- le nom de la classe qui gère le calcul est ``Script`` +- le lancement du calcul se fait par la méthode ``Compute()`` +- le résultat du calcul est sous la forme de trois variables : le code d'erreur, un message, un dictionnaire python. + +S'ils sont nécessaires à la création de la classe, on peut passer des arguments sous la forme : + +- ``--rep_calc=rep_calc``, où ``rep_calc`` est le répertoire de calcul +- ``--num=num``, où ``num`` est le numéro du calcul : 0 pour le tout premier, puis 1, 2 etc. +- ``--mesh_file=meshfile``, où ``meshfile`` est le fichier contenant le maillage sur lequel calculer. +- ``-v``, pour des messages + +Les arguments de retour : + +- ``erreur`` : le code d'erreur, entier : 0 si le calcul est correct, non nul sinon +- ``message`` : un éventuel message d'information sur le calcul +- ``dico_resu`` : un dictionnaire python qui comprend a minima les deux clés suivantes : ``FileName`` est la clé pour le nom du fichier MED qui contient les résultats du calcul, ``V_TEST`` est la clé pour la valeur réelle à tester. + + + +Exemple d'usage du script : +:: + + argu = ["--rep_calc=" + rep_calc)] + argu.append("--num=%d" % numCalc) + argu.append("--mesh_file=" + MeshFile) + Script_A = Script(argu) + erreur, message, dico_resu = Script_A.compute () + +.. note:: + + * Pour piloter Code_Aster : :download:`ScriptAster<../files/yacs_script.py>` + diff --git a/doc/en/images/create_yacs_01.png b/doc/en/images/create_yacs_01.png new file mode 100644 index 00000000..4f8cebfc Binary files /dev/null and b/doc/en/images/create_yacs_01.png differ diff --git a/doc/en/images/create_yacs_1.png b/doc/en/images/create_yacs_1.png new file mode 100644 index 00000000..7450f9b0 Binary files /dev/null and b/doc/en/images/create_yacs_1.png differ diff --git a/doc/en/images/create_zone_01.png b/doc/en/images/create_zone_01.png new file mode 100644 index 00000000..ce012adf Binary files /dev/null and b/doc/en/images/create_zone_01.png differ diff --git a/doc/en/tui_create_yacs.rst b/doc/en/tui_create_yacs.rst index 5bab00a7..dd581745 100644 --- a/doc/en/tui_create_yacs.rst +++ b/doc/en/tui_create_yacs.rst @@ -105,13 +105,20 @@ Informations about the schema | **GetName()** | | Returns the name of the schema | +---------------------------------------------------------------+ +| .. module:: SetType | +| | +| **SetType(Type)** | +| Defines the type of the schema. | +| | +| - ``Type`` : the type of the schema | +| | +| * 1 : constant | +| * 2 : variable | ++---------------------------------------------------------------+ | .. module:: GetType | | | | **GetType()** | | Returns the type of the schema | -| | -| * 1 : static | -| * 2 : transitory | +---------------------------------------------------------------+ | .. module:: SetScriptFile | | | diff --git a/doc/fr/Makefile.am b/doc/fr/Makefile.am index 53a863e8..4b143a5c 100644 --- a/doc/fr/Makefile.am +++ b/doc/fr/Makefile.am @@ -73,6 +73,7 @@ tui_homard.rst \ tui_usage.rst \ tutorials.rst \ gui_create_yacs.rst \ +gui_create_yacs_aster.rst \ tui_create_yacs.rst EXTRA_DIST += $(RSTFILES) images ../images ../files diff --git a/doc/fr/gui_create_boundary.rst b/doc/fr/gui_create_boundary.rst index c16a7b3a..914d87cc 100644 --- a/doc/fr/gui_create_boundary.rst +++ b/doc/fr/gui_create_boundary.rst @@ -99,8 +99,6 @@ La sph .. image:: images/create_boundary_an_sp.png :align: center -.. index:: single: arbre d'étude - Un cône ======= .. index:: single: cone @@ -117,10 +115,10 @@ Cr .. image:: images/create_boundary_an_co_2.png :align: center -.. index:: single: arbre d'étude - L'arbre d'étude *************** +.. index:: single: arbre d'étude + A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer. .. image:: images/create_boundary_1.png diff --git a/doc/fr/gui_create_hypothese.rst b/doc/fr/gui_create_hypothese.rst index 0da927c6..da6fe33a 100644 --- a/doc/fr/gui_create_hypothese.rst +++ b/doc/fr/gui_create_hypothese.rst @@ -121,8 +121,6 @@ Le dernier choix porte sur une sortie suppl .. image:: images/create_hypothese_av_1.png :align: center -.. index:: single: arbre d'étude - L'arbre d'étude *************** .. index:: single: arbre d'étude diff --git a/doc/fr/gui_create_iteration.rst b/doc/fr/gui_create_iteration.rst index 0a166313..6434ece4 100644 --- a/doc/fr/gui_create_iteration.rst +++ b/doc/fr/gui_create_iteration.rst @@ -63,10 +63,10 @@ Ensuite, si une hypoth .. note:: Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse. -.. index:: single: arbre d'étude - L'arbre d'étude *************** +.. index:: single: arbre d'étude + A l'issue de cette création d'itération, l'arbre d'études a été enrichi. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'itération courante, identifiée par son nom. On trouve aussi l'hypothèse qui lui est attachée. L'icône en regard de l'itération permet de différencier les itérations calculées ou non. .. image:: images/create_iteration_6.png diff --git a/doc/fr/gui_create_yacs.rst b/doc/fr/gui_create_yacs.rst index 2272377f..8f230c17 100644 --- a/doc/fr/gui_create_yacs.rst +++ b/doc/fr/gui_create_yacs.rst @@ -83,6 +83,61 @@ L'option par d L'option 'variable' est inactive aujourd'hui. +Enregistrement du schéma +************************ +Par défaut, le schéma produit est écrit dans le fichier `schema.xml` dans le répertoire lié au cas qui en est le support. Si on a détruit le fichier, on peut le recréer en activant le fonction "Ecrire le fichier" à la souris. + +L'arbre d'étude +*************** +.. index:: single: arbre d'étude + +A l'issue de cette création de schéma, l'arbre d'études a été enrichi. On y trouve tous les schémas créés, identifiés par leur nom, avec la possibilité de les éditer. Sous chaque référence de schéma, on trouve le lien avec le cas qui en est le support ainsi que le fichier `xml` qui a été créé. On peut lire ce fichier. + +.. image:: images/create_yacs_1.png + :align: center + Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_yacs` + +Utilisation du schéma +##################### + +Le schéma produit par cette saisie est directement importable dans le module YCAS. Il peut se lancer sans modification. Dans ce cas, l'arrêt dans la boucle a lieu ainsi : + +- soit on a atteint le nombre maximal d'itérations dans la boucle d'alternance (calcul,adaptation) ; +- soit le test de convergence sur la variable ``V_TEST`` est satisfait. + +Par défaut le nombre maximal d'itérations est fixé à 5 et le test de convergence est satisfait si la variable bouge de moins de 1 pour mille en valeur relative entre deux itérations successives. On peut évidemment modifier ces tests. + +Ces tests sont réalisés dans le noeud python "Analyse" du schéma, comme décrit dans :ref:`yacs`. + +Le nombre maximal d'itérations est modifiable par la variable `NbCalcMax` : + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 111-113 + +La valeur de test est stockée dans une liste au fur et à mesure des passages : + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 137-141 + +et le test a lieu à partir du deuxième passage : + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 143-148 + +Si on veut remplacer ce test par un autre, c'est ici qu'il faut le faire. Il faut simplement conserver le contenu produit à la convergence pour assurer la bonne marche de la suite du schéma : + +.. literalinclude:: ../files/yacs_01.fr.xml + :lines: 146-148 + +Exemples +######## +.. index:: single: Code_Aster + +Un mode d'emploi associé à la création de schéma avec Code_Aster est disponible en consultant : :ref:`gui_create_yacs_aster`. + + + + diff --git a/doc/fr/gui_create_yacs_aster.rst b/doc/fr/gui_create_yacs_aster.rst new file mode 100644 index 00000000..15904418 --- /dev/null +++ b/doc/fr/gui_create_yacs_aster.rst @@ -0,0 +1,65 @@ +.. _gui_create_yacs_aster: + +Un schéma YACS pour Code_Aster +############################## +.. index:: single: YACS +.. index:: single: Code_Aster + +Dans le cas où le schéma implique un couplage entre Code_Aster et HOMARD, une façon de faire est décrite ici. + +Préalable +********* +La création automatique du schéma va se faire en trois phases : + +- Au départ, il faut avoir fait un calcul sur un tout premier maillage. Ce calcul aura produit des résultats dans un fichier MED. +- Ensuite, on crée un cas dans le module HOMARD, tel qu'il est décrit dans :ref:`gui_create_case`. Dans ce cas, on crée une itération suivante du maillage en définissant une hypothèse d'adaptation ; voir :ref:`gui_create_iteration`. +- Enfin, de ce cas, on va créer le schéma qui se basera sur l'hypothèse d'adapation définie. + + +.. image:: images/create_yacs_01.png + :align: center + :alt: yacs - création + :width: 551 + :height: 295 + +Nom du schéma +************* +Un nom de schéma est proposé automatiquement : YACS_1, YACS_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour un autre schéma. + +Le script +********* + +Le fichier contenant le script qui permet de lancer le calcul lié à la modélisation physique est fourni ici. C'est un script python qui doit respecter les règles suivantes : + +- le nom de la classe qui gère le calcul est ``Script`` +- le lancement du calcul se fait par la méthode ``Compute()`` +- le résultat du calcul est sous la forme de trois variables : le code d'erreur, un message, un dictionnaire python. + +S'ils sont nécessaires à la création de la classe, on peut passer des arguments sous la forme : + +- ``--rep_calc=rep_calc``, où ``rep_calc`` est le répertoire de calcul +- ``--num=num``, où ``num`` est le numéro du calcul : 0 pour le tout premier, puis 1, 2 etc. +- ``--mesh_file=meshfile``, où ``meshfile`` est le fichier contenant le maillage sur lequel calculer. +- ``-v``, pour des messages + +Les arguments de retour : + +- ``erreur`` : le code d'erreur, entier : 0 si le calcul est correct, non nul sinon +- ``message`` : un éventuel message d'information sur le calcul +- ``dico_resu`` : un dictionnaire python qui comprend a minima les deux clés suivantes : ``FileName`` est la clé pour le nom du fichier MED qui contient les résultats du calcul, ``V_TEST`` est la clé pour la valeur réelle à tester. + + + +Exemple d'usage du script : +:: + + argu = ["--rep_calc=" + rep_calc)] + argu.append("--num=%d" % numCalc) + argu.append("--mesh_file=" + MeshFile) + Script_A = Script(argu) + erreur, message, dico_resu = Script_A.compute () + +.. note:: + + * Pour piloter Code_Aster : :download:`ScriptAster<../files/yacs_script.py>` + diff --git a/doc/fr/gui_create_zone.rst b/doc/fr/gui_create_zone.rst index 0aefd666..0084ec96 100644 --- a/doc/fr/gui_create_zone.rst +++ b/doc/fr/gui_create_zone.rst @@ -95,6 +95,16 @@ Le disque avec trou est obligatoirement dans le plan des axes de coordonn :align: center +L'arbre d'étude +*************** +.. index:: single: arbre d'étude + +A l'issue de cette création de zone, l'arbre d'études a été enrichi. On y trouve toutes les zones créées, identifiées par leur nom, avec la possibilité de les éditer. + +.. image:: images/create_zone_01.png + :align: center + :alt: zone - arbre d'études + Méthodes python correspondantes ******************************* diff --git a/doc/fr/gui_usage.rst b/doc/fr/gui_usage.rst index a860429f..66001c43 100644 --- a/doc/fr/gui_usage.rst +++ b/doc/fr/gui_usage.rst @@ -47,3 +47,5 @@ Le module HOMARD propose la cr :maxdepth: 2 gui_create_yacs + gui_create_yacs_aster + diff --git a/doc/fr/images/create_yacs_1.png b/doc/fr/images/create_yacs_1.png new file mode 100644 index 00000000..7450f9b0 Binary files /dev/null and b/doc/fr/images/create_yacs_1.png differ diff --git a/doc/fr/images/create_zone_01.png b/doc/fr/images/create_zone_01.png new file mode 100644 index 00000000..ce012adf Binary files /dev/null and b/doc/fr/images/create_zone_01.png differ diff --git a/doc/fr/tui_create_yacs.rst b/doc/fr/tui_create_yacs.rst index 22545102..81b2c425 100644 --- a/doc/fr/tui_create_yacs.rst +++ b/doc/fr/tui_create_yacs.rst @@ -105,13 +105,20 @@ Informations sur le sch | **GetName()** | | Retourne le nom du schéma | +---------------------------------------------------------------+ +| .. module:: SetType | +| | +| **SetType(Type)** | +| Définit le type de schéma. | +| | +| - ``Type`` : le type de schéma | +| | +| * 1 : constant | +| * 2 : variable | ++---------------------------------------------------------------+ | .. module:: GetType | | | | **GetType()** | | Retourne le type du schéma | -| | -| * 1 : statique | -| * 2 : transitoire | +---------------------------------------------------------------+ | .. module:: SetScriptFile | | | diff --git a/doc/fr/yacs.rst b/doc/fr/yacs.rst index e91f8ba9..2f51983b 100644 --- a/doc/fr/yacs.rst +++ b/doc/fr/yacs.rst @@ -6,7 +6,7 @@ YACS L'utilisation de schémas YACS va permettre de coupler un calcul et une adaptation comme il est décrit dans :ref:`intro`. Ce couplage peut être répété au sein d'une boucle jusqu'à l'obtention d'un critère de convergence par exemple. Il existe de nombreuses façons de programmer un schéma YACS. La solution proposée ici fonctionne mais on peut très bien faire autrement ! -On trouvera ici la description exhaustive d'un schéma YACS pour un calcul statique. +On trouvera ici la description exhaustive d'un schéma YACS. .. note:: Le module HOMARD propose une création automatique de schéma YASC à partir d'un cas précédemment créé. Pour la mettre en oeuvre, consulter :ref:`gui_create_yacs`