From: Gerald Nicolas Date: Mon, 9 Feb 2015 08:46:20 +0000 (+0100) Subject: Passage de la documentation en utf-8 X-Git-Tag: V7_6_0a1~5^2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=5677a638e9e0217276cb49e21eb9ce719c5c75a5;p=modules%2Fhomard.git Passage de la documentation en utf-8 Mise a jour du copyright --- diff --git a/doc/en/conf.py.in b/doc/en/conf.py.in index 2dc8525f..9de56297 100644 --- a/doc/en/conf.py.in +++ b/doc/en/conf.py.in @@ -1,4 +1,4 @@ -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # # HOMARD documentation build configuration file, created by # sphinx-quickstart on Tue Jan 5 08:51:14 2010. @@ -31,14 +31,14 @@ templates_path = ['_templates'] source_suffix = '.rst' # The encoding of source files. -source_encoding = 'iso-8859-1' +source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'HOMARD' -copyright = u'1996, 2011, 2013-2014, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' +copyright = u'1996, 2011, 2015, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/doc/en/divers.rst b/doc/en/divers.rst index 5a74e67b..265c747c 100644 --- a/doc/en/divers.rst +++ b/doc/en/divers.rst @@ -65,4 +65,8 @@ SALOME VERSION 7.4 : - If an error occurs, the name of the message file is displayed. - Release 11.1 for the HOMARD binary. The conformal refinement of the meshes with hexaedra is improved: less meshes are produced. +SALOME VERSION 7.5 : + - Additional extra output: diameters and qualities; the function ``SetExtraOutput(option)`` is now used (see :ref:`tui_create_hypothese`). + - Release 11.2 for the HOMARD binary ; improvement for the 1D curve boundaries. + diff --git a/doc/en/gui_create_boundary.rst b/doc/en/gui_create_boundary.rst index 5b84c664..e257241b 100644 --- a/doc/en/gui_create_boundary.rst +++ b/doc/en/gui_create_boundary.rst @@ -3,7 +3,7 @@ The boundary ############ .. index:: single: boundary -.. index:: single: frontière +.. index:: single: frontière The object boundary contains all the geometrical definitions allowing to describe a curved boundary to be followed. diff --git a/doc/en/intro.rst b/doc/en/intro.rst index c1ae7229..618b1037 100644 --- a/doc/en/intro.rst +++ b/doc/en/intro.rst @@ -78,7 +78,7 @@ To split a triangle, the three edges are split into two sections each, thus prod .. image:: ../images/dec_tria_1.gif :align: center - :alt: Découpage standard d'un triangle + :alt: Découpage standard d'un triangle :width: 399 :height: 88 @@ -86,14 +86,14 @@ To split a quadrangle, the four edges are split into two sections each, thus pro .. image:: ../images/dec_quad_1.png :align: center - :alt: Découpage standard d'un quadrangle + :alt: Découpage standard d'un quadrangle :width: 399 Tetrahedrons are split in eight. First, each of the triangular faces is split into 4 similar triangular faces. .. image:: ../images/dec_tetr_1.gif :align: center - :alt: Découpage standard d'un tétraèdre - 1 + :alt: Découpage standard d'un tétraèdre - 1 :width: 328 :height: 115 @@ -101,7 +101,7 @@ Face splitting produces four tetrahedrons at the angles of the initial tetrahedr .. image:: ../images/dec_tetr_2.gif :align: center - :alt: Découpage standard d'un tétraèdre - 2 + :alt: Découpage standard d'un tétraèdre - 2 :width: 201 :height: 159 @@ -109,7 +109,7 @@ At the core of the tetrahedron, there remains a block shaped like two pyramids j .. image:: ../images/dec_tetr_3.gif :align: center - :alt: Découpage standard d'un tétraèdre - 3 + :alt: Découpage standard d'un tétraèdre - 3 :width: 244 :height: 74 @@ -117,7 +117,7 @@ This, in turn, creates 4 new tetrahedrons. It should be noted that they are simi .. image:: ../images/dec_tetr_4.gif :align: center - :alt: Découpage standard d'un tétraèdre - 4 + :alt: Découpage standard d'un tétraèdre - 4 :width: 229 :height: 116 @@ -125,14 +125,14 @@ Hexaedrons are split in eight. Each of the quadrangular faces is split into 4 qu .. image:: ../images/dec_hex.png :align: center - :alt: Découpage standard d'un hexaèdre + :alt: Découpage standard d'un hexaèdre :width: 600 Pentaedrons are split in eight. Each of the quadrangular faces is split into 4 quadrangular faces and the two triangles are split into 4. Edges are created connecting each centre of quadrangular faces. Those 3 edges create 4 triangles at the centre of the pentaedron. Six quandrangular faces are created to complete the construction of the height pentaedrons. .. image:: ../images/dec.pent.png :align: center - :alt: Découpage standard d'un pentaèdre + :alt: Découpage standard d'un pentaèdre :width: 600 Splitting for the conformity @@ -144,35 +144,35 @@ For triangles, one of the three edges is split in two. Its middle is joined to t .. image:: ../images/dec_tria_2.png :align: center - :alt: Découpage de conformité d'un triangle + :alt: Découpage de conformité d'un triangle :width: 424 For quadrangles, three configurations exist. First, one of the four edges is split in two. Its middle is joined to the opposite vertex to form three triangles. The mesh obtained is then mixed. .. image:: ../images/dec_quad_2.png :align: center - :alt: Découpage de conformité d'un quadrangle + :alt: Découpage de conformité d'un quadrangle :width: 399 For a quadrangle where two opposite edges are cut, the two middle points are connected. Two quadrangles are created. .. image:: ../images/dec_quad_3.png :align: center - :alt: Découpage de conformité d'un quadrangle - 2 + :alt: Découpage de conformité d'un quadrangle - 2 :width: 424 For a quadrangle where two opposite edges are cut, a new vertex is created at the centre of the quadrangle. This center point is then connected to the two middle points are connected and to the opposite vertex. Three quadrangles are created. .. image:: ../images/dec_quad_4.png :align: center - :alt: Découpage de conformité d'un quadrangle - 3 + :alt: Découpage de conformité d'un quadrangle - 3 :width: 424 For a tetrahedron with three split edges, this is possible only if the edges are concurrent. Therefore, one of the four faces is split in four. The middles of the split edges are joined to the opposite vertexes. The three other faces are thus split in two, and four tetrahedrons are created. .. image:: ../images/dec_tetr_5.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 1 + :alt: Découpage de conformité d'un tétraèdre - 1 :width: 116 :height: 116 @@ -180,7 +180,7 @@ For a tetrahedron with two split edges, this is possible only if the edges are o .. image:: ../images/dec_tetr_6.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 2 + :alt: Découpage de conformité d'un tétraèdre - 2 :width: 116 :height: 116 @@ -188,7 +188,7 @@ For a tetrahedron with one split edge, the middle of the split edge is joined to .. image:: ../images/dec_tetr_7.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 3 + :alt: Découpage de conformité d'un tétraèdre - 3 :width: 116 :height: 116 @@ -198,7 +198,7 @@ For an hexaedron with one face cut, we create 4 edges, 4 tetraedrons and 5 pyram .. image:: ../images/hexaface.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 1 face + :alt: Découpage de conformité d'un hexaèdre - 1 face :width: 384 :height: 101 @@ -206,7 +206,7 @@ For an hexaedron with only one edge cut, we create deux internal edges and four .. image:: ../images/hexa1arete.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 1 arête + :alt: Découpage de conformité d'un hexaèdre - 1 arête :width: 384 :height: 101 @@ -214,7 +214,7 @@ For an hexaedron with two edges cut, we create one central point 10 edges, 12 te .. image:: ../images/hexa2aretes.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 2 arêtes + :alt: Découpage de conformité d'un hexaèdre - 2 arêtes :width: 384 :height: 101 @@ -222,7 +222,7 @@ For an hexaedron with three edges cut, we create one central point, 11 edges and .. image:: ../images/hexa3aretes.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 3 arêtes + :alt: Découpage de conformité d'un hexaèdre - 3 arêtes :width: 384 :height: 101 @@ -247,7 +247,7 @@ Some illustrations of adapted meshes ************************************ .. index:: single: illustration -Some examples of use cases can be found in the web page of `HOMARD `_. +Some examples of use cases can be found on the site of `HOMARD `_. +---------------------------------------------------------------+ +---------------------------------------------------------------+ diff --git a/doc/en/tui_create_yacs.rst b/doc/en/tui_create_yacs.rst index b42b0325..12c730b1 100644 --- a/doc/en/tui_create_yacs.rst +++ b/doc/en/tui_create_yacs.rst @@ -7,7 +7,7 @@ The schema YACS The variables are described in :ref:`gui_create_yacs`. -Méthodes de la classe cas +Méthodes de la classe cas ************************* See also in :ref:`tui_create_case`. diff --git a/doc/en/tui_create_zone.rst b/doc/en/tui_create_zone.rst index 59e604cb..0746ab72 100644 --- a/doc/en/tui_create_zone.rst +++ b/doc/en/tui_create_zone.rst @@ -28,9 +28,9 @@ These methods returns an instance of the class zone. | after its creation | | | | - ``zone_name``: the name of the zone based on a box | -| - ``Xmin``, ``Xmax``: min/max coordinates extrêmes along X | -| - ``Ymin``, ``Ymax``: min/max coordinates extrêmes along Y | -| - ``Zmin``, ``Zmax``: min/max coordinates extrêmes along Z | +| - ``Xmin``, ``Xmax``: min/max coordinates extrêmes along X | +| - ``Ymin``, ``Ymax``: min/max coordinates extrêmes along Y | +| - ``Zmin``, ``Zmax``: min/max coordinates extrêmes along Z | +----------------------------------------------------------------------------------+ | .. module:: CreateZoneCylinder | | | diff --git a/doc/en/yacs.rst b/doc/en/yacs.rst index afec03cf..7d4db2ba 100644 --- a/doc/en/yacs.rst +++ b/doc/en/yacs.rst @@ -18,7 +18,7 @@ Here is the description of a scheme for a computation in which a value is to be .. image:: ../images/yacs_01.png :align: center - :alt: yacs - allure générale + :alt: yacs - allure générale :width: 512 :height: 306 diff --git a/doc/files/licence.en.txt b/doc/files/licence.en.txt index 93528261..db1c7800 100644 --- a/doc/files/licence.en.txt +++ b/doc/files/licence.en.txt @@ -1,6 +1,6 @@ - Copyright (C) 1996-2014 EDF R&D + Copyright (C) 1996, 2015 EDF This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/doc/files/licence.fr.txt b/doc/files/licence.fr.txt index 93528261..db1c7800 100644 --- a/doc/files/licence.fr.txt +++ b/doc/files/licence.fr.txt @@ -1,6 +1,6 @@ - Copyright (C) 1996-2014 EDF R&D + Copyright (C) 1996, 2015 EDF This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/doc/files/tutorial_1.py b/doc/files/tutorial_1.py index bfb44fae..0519d54a 100755 --- a/doc/files/tutorial_1.py +++ b/doc/files/tutorial_1.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # diff --git a/doc/files/tutorial_2.py b/doc/files/tutorial_2.py index 51b9323b..30528ea5 100755 --- a/doc/files/tutorial_2.py +++ b/doc/files/tutorial_2.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # diff --git a/doc/files/tutorial_3.py b/doc/files/tutorial_3.py index 728c7919..56dee464 100755 --- a/doc/files/tutorial_3.py +++ b/doc/files/tutorial_3.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # diff --git a/doc/files/tutorial_4.py b/doc/files/tutorial_4.py index 8c7a0b20..33cf3939 100755 --- a/doc/files/tutorial_4.py +++ b/doc/files/tutorial_4.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # diff --git a/doc/files/tutorial_5.py b/doc/files/tutorial_5.py index b049f561..c270c13f 100755 --- a/doc/files/tutorial_5.py +++ b/doc/files/tutorial_5.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # diff --git a/doc/files/tutorial_util.py b/doc/files/tutorial_util.py index b409c7a3..4c960a7b 100755 --- a/doc/files/tutorial_util.py +++ b/doc/files/tutorial_util.py @@ -1,4 +1,4 @@ -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2011-2014 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or diff --git a/doc/fr/conf.py.in b/doc/fr/conf.py.in index c34b5b22..02608f2a 100644 --- a/doc/fr/conf.py.in +++ b/doc/fr/conf.py.in @@ -1,4 +1,4 @@ -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- # # HOMARD documentation build configuration file, created by # sphinx-quickstart on Tue Jan 5 08:51:14 2010. @@ -31,14 +31,14 @@ templates_path = ['_templates'] source_suffix = '.rst' # The encoding of source files. -source_encoding = 'iso-8859-1' +source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'HOMARD' -copyright = u'1996, 2011, 2013-2014, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' +copyright = u'1996, 2011, 2015, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/doc/fr/demarrage_rapide.rst b/doc/fr/demarrage_rapide.rst index a2f19749..daf6a7d0 100644 --- a/doc/fr/demarrage_rapide.rst +++ b/doc/fr/demarrage_rapide.rst @@ -1,15 +1,15 @@ .. _demarrage_rapide: -Démarrage rapide +Démarrage rapide ################ -.. index:: single: démarrage +.. index:: single: démarrage .. index:: single: exemple -L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. +L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. -Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. +Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. -La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. +La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. .. image:: images/homard_1.png :align: center @@ -17,7 +17,7 @@ La premi :width: 565 :height: 154 -Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. +Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. .. image:: images/homard_2.png :align: center @@ -25,7 +25,7 @@ Une fois le module HOMARD activ :width: 378 :height: 120 -La fenêtre suivante apparaît : +La fenêtre suivante apparaît : .. image:: images/intro_31.png :align: center @@ -33,7 +33,7 @@ La fen :width: 554 :height: 298 -Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier MED issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". +Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier MED issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". .. image:: images/intro_32.png :align: center @@ -41,23 +41,23 @@ Il faut fournir deux informations : le r :width: 554 :height: 298 -L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. +L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. .. image:: images/intro_331.png :align: center - :alt: Nouvelle itération + :alt: Nouvelle itération :width: 324 :height: 282 -La fenêtre suivante apparaît : +La fenêtre suivante apparaît : .. image:: images/intro_33.png :align: center - :alt: Nouvelle itération - 2 + :alt: Nouvelle itération - 2 :width: 649 :height: 372 -On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. +On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. .. image:: images/intro_34.png :align: center @@ -65,7 +65,7 @@ On d :width: 624 :height: 103 -On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : +On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : .. image:: images/intro_35.png :align: center @@ -73,39 +73,39 @@ On clique sur "Nouveau" dans la rubrique hypoth :width: 769 :height: 775 -On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les sauts entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. +On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les sauts entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. .. image:: images/intro_36.png :align: center :alt: Fenetre -On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". +On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". -Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. +Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. .. image:: images/intro_37.png :align: center :alt: Fenetre -A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : +A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : .. image:: images/intro_38.png :align: center :alt: Fenetre -Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. +Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. .. image:: images/intro_39.png :align: center :alt: Fenetre -Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. +Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. .. image:: ../images/intro_40.png :align: center :alt: Fenetre -On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. +On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. diff --git a/doc/fr/divers.rst b/doc/fr/divers.rst index 851ac753..203be26e 100644 --- a/doc/fr/divers.rst +++ b/doc/fr/divers.rst @@ -3,67 +3,71 @@ Divers ###### -Références +Références ********** -.. index:: single: référence +.. index:: single: référence -Pour une référence à HOMARD, utiliser : +Pour une référence à HOMARD, utiliser : G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 `Accessible en cliquant ici `_ -D'autres références sont disponibles sur le site de `HOMARD `_ +D'autres références sont disponibles sur le site de `HOMARD `_ Evolutions du module ******************** -.. index:: single: évolution +.. index:: single: évolution -On trouvera ici les principales évolutions de HOMARD à partir de la première version livrée dans SALOME 6.5. +On trouvera ici les principales évolutions de HOMARD à partir de la première version livrée dans SALOME 6.5. SALOME VERSION 6.6 : - - Interfaçage avec med 3.0.6 - - Valeurs par défaut des instants + - Interfaçage avec med 3.0.6 + - Valeurs par défaut des instants - Acceptation des mailles de type TRIA7 et QUAD9 - Option de sortie dans le fichier MED du niveau de raffinement atteint dans chaque maille SALOME VERSION 7.1 : - Correction d'une anomalie sur le filtrage du raffinement par les groupes - - Pilotage de l'adaptation par un seuil basé sur la moyenne et l'écart-type (voir :ref:`tui_create_hypothese`) + - Pilotage de l'adaptation par un seuil basé sur la moyenne et l'écart-type (voir :ref:`tui_create_hypothese`) - En TUI, choix du dernier instant comme instant de pilotage par SetTimeStepRankLast (voir :ref:`tui_create_iteration`) - - Possibilité de détruire les objets (GUI et TUI) + - Possibilité de détruire les objets (GUI et TUI) - Modification des fonctions TUI pour qu'elles agissent sur les objets et non plus sur les noms : ``homard.AssociateIterHypo(iter_name,hypo_name)`` devient ``iter.AssociateHypo(hypo_name)``, ``homard.AssociateHypoZone(hypo_name,zone_name,type_use)`` devient ``hypo.AddZone(zone_name,type_use)``, ``homard.CreateIteration(iter_name,iter_parent_name)`` devient ``case.NextIteration(iter_name)`` ou ``iter.NextIteration(iter_name)`` - Ajout de fonctions : - ``cas.LastIteration()`` : retourne la dernière itération de la descendance du cas (voir :ref:`tui_create_iteration`) + ``cas.LastIteration()`` : retourne la dernière itération de la descendance du cas (voir :ref:`tui_create_iteration`) - Analyse de maillages (voir :ref:`gui_mesh_info`) SALOME VERSION 7.2 : - - Possibilité d'utiliser un cone comme support de frontiere 2D (voir :ref:`tui_create_boundary`) - - Choix de publier ou non le résultat dans SMESH (voir :ref:`tui_create_iteration`) + - Possibilité d'utiliser un cone comme support de frontiere 2D (voir :ref:`tui_create_boundary`) + - Choix de publier ou non le résultat dans SMESH (voir :ref:`tui_create_iteration`) ``iter.Compute(option)`` devient ``iter.Compute(option1, option2)`` - - Possibilité de poursuivre une suite d'itérations archivées dans un répertoire (voir :ref:`gui_create_case`) + - Possibilité de poursuivre une suite d'itérations archivées dans un répertoire (voir :ref:`gui_create_case`) SALOME VERSION 7.3 : - Documentation en anglais - - Options pour suivre le calcul de l'itération (voir :ref:`tui_create_iteration`) : ``iter.SetInfoCompute(MessInfo)`` - - Creation automatique de schéma YACS : - ``case.WriteYACSSchema(ScriptFile, DirName, MeshFile)`` : écrit un schéma YACS correspondant au cas (voir :ref:`tui_create_case`) - - Le maillage initial n'est pas publié dans SMESH. - - Le raffinement de maillages 2D avec des quadrangles est amélioré pour prendre en compte des zones 'en escalier'. - - Les champs constants par mailles peuvent être interpolés selon les deux modes : intensif ou extensif. - - Possibilité de choix des pas de temps pour l'interpolation des champs : + - Options pour suivre le calcul de l'itération (voir :ref:`tui_create_iteration`) : ``iter.SetInfoCompute(MessInfo)`` + - Creation automatique de schéma YACS : + ``case.WriteYACSSchema(ScriptFile, DirName, MeshFile)`` : écrit un schéma YACS correspondant au cas (voir :ref:`tui_create_case`) + - Le maillage initial n'est pas publié dans SMESH. + - Le raffinement de maillages 2D avec des quadrangles est amélioré pour prendre en compte des zones 'en escalier'. + - Les champs constants par mailles peuvent être interpolés selon les deux modes : intensif ou extensif. + - Possibilité de choix des pas de temps pour l'interpolation des champs : ``SetFieldInterpTimeStep(FieldInterp, TimeStep)`` : interpole le champ au pas de temps TimeStep (voir :ref:`tui_create_iteration`) - ``SetFieldInterpTimeStepRank(FieldInterp, TimeStep, Rank)`` : interpole le champ au pas de temps TimeStep et au numéro d'ordre Rank (voir :ref:`tui_create_iteration`) - - Arrêt en cas d'erreur dans les données des instructions python + ``SetFieldInterpTimeStepRank(FieldInterp, TimeStep, Rank)`` : interpole le champ au pas de temps TimeStep et au numéro d'ordre Rank (voir :ref:`tui_create_iteration`) + - Arrêt en cas d'erreur dans les données des instructions python SALOME VERSION 7.4 : - - Grandes fenêtres avec ascenseur. - - Publication des maillages à la demande. - - Suivi de frontière analytique torique. - - La fonction ``SetAdapRefinUnRef(TypeAdap, TypeRaff, TypeDera)`` est supprimée. Pour une adaptation selon un champ ou des zones, le mode raffinement/déraffinement est automatiquement déduit des autres paramètres de l'hypothèse. Pour un raffinement uniforme, on utilisera ``SetUnifRefinUnRef(TypeRaffDera)`` (voir :ref:`tui_create_hypothese`). - - En cas d'erreur dans l'adaptation, le nom du fichier de messages est affiché. - - Passage à la version 11.1 de l'exécutable HOMARD ; le raffinement conforme des maillages en hexaèdres est amélioré pour diminuer le nombre de mailles produites. + - Grandes fenêtres avec ascenseur. + - Publication des maillages à la demande. + - Suivi de frontière analytique torique. + - La fonction ``SetAdapRefinUnRef(TypeAdap, TypeRaff, TypeDera)`` est supprimée. Pour une adaptation selon un champ ou des zones, le mode raffinement/déraffinement est automatiquement déduit des autres paramètres de l'hypothèse. Pour un raffinement uniforme, on utilisera ``SetUnifRefinUnRef(TypeRaffDera)`` (voir :ref:`tui_create_hypothese`). + - En cas d'erreur dans l'adaptation, le nom du fichier de messages est affiché. + - Passage à la version 11.1 de l'exécutable HOMARD ; le raffinement conforme des maillages en hexaèdres est amélioré pour diminuer le nombre de mailles produites. + +SALOME VERSION 7.5 : + - Sorties supplémentaires optionnelles : diamètre et qualité ; on utilisera ``SetExtraOutput(option)`` (voir :ref:`tui_create_hypothese`). + - Passage à la version 11.2 de l'exécutable HOMARD ; amélioration du suivi des frontières courbes 1D. diff --git a/doc/fr/glossaire.rst b/doc/fr/glossaire.rst index 8994bef4..7afec02d 100644 --- a/doc/fr/glossaire.rst +++ b/doc/fr/glossaire.rst @@ -7,31 +7,32 @@ Glossaire :sorted: raffinement - Le raffinement est une opération consistant à découper les mailles sélectionnées. + Le raffinement est une opération consistant à découper les mailles sélectionnées. niveau - Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention. + Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention. - déraffinement - Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial. + déraffinement + Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial. zone - Une zone est une région qui définit un mode de pilotage de l'adaptation : toutes les mailles dont au moins une arête est dans une zone seront raffinées ou déraffinées selon le choix retenu. + Une zone est une région qui définit un mode de pilotage de l'adaptation : toutes les mailles dont au moins une arête est dans une zone seront raffinées ou déraffinées selon le choix retenu. cas - Un cas est défini par un maillage initial et une succession d'adaptations. + Un cas est défini par un maillage initial et une succession d'adaptations. indicateur d'erreur - L'indicateur d'erreur est un champ exprimé sur les mailles du calcul. Il représente l'écart entre la solution réelle et la solution calculée. + L'indicateur d'erreur est un champ exprimé sur les mailles du calcul. Il représente l'écart entre la solution réelle et la solution calculée. - itération - Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée. + itération + Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée. - hypothèse - Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations. + hypothèse + Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations. champ - Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation. + Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation. + MED - C'est le format d'échange des maillages et des champs pour SALOME. \ No newline at end of file + C'est le format d'échange des maillages et des champs pour SALOME. \ No newline at end of file diff --git a/doc/fr/gui_create_boundary.rst b/doc/fr/gui_create_boundary.rst index 5710384a..c1848767 100644 --- a/doc/fr/gui_create_boundary.rst +++ b/doc/fr/gui_create_boundary.rst @@ -1,29 +1,29 @@ .. _gui_create_boundary: -La frontière +La frontière ############ .. index:: single: boundary -.. index:: single: frontière +.. index:: single: frontière -L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. +L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. -Il existe deux modes de description d'une frontière : +Il existe deux modes de description d'une frontière : - - Discrète : ce mode est utilisé pour décrire une courbe 1D - - Analytique : ce mode est utilisé pour décrire une surface + - Discrète : ce mode est utilisé pour décrire une courbe 1D + - Analytique : ce mode est utilisé pour décrire une surface -Frontière discrète +Frontière discrète ****************** -Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. +Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. -Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : +Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : .. image:: images/create_boundary_di_1.png :align: center -La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. +La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. .. image:: images/create_boundary_di_2.png :align: center @@ -31,87 +31,87 @@ La fen .. note:: Le fichier ne doit contenir qu'un seul maillage. -Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. +Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. .. image:: images/create_boundary_di_3.png :align: center -Frontière analytique +Frontière analytique ******************** -Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. +Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. .. image:: images/create_boundary_an_1.png :align: center -Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre, sphère, cône ou tore. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. +Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre, sphère, cône ou tore. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. .. image:: images/create_boundary_an_2.png :align: center -Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. +Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. .. image:: images/create_boundary_an_3.png :align: center -Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : +Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : .. image:: images/create_boundary_an_4.png :align: center .. note:: - Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. + Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. - Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. + Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. - Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. + Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. - Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. + Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. -Il existe trois types de frontière analytique : +Il existe trois types de frontière analytique : - Cylindre - - Sphère - - Cône, décrit par un axe et un angle ou par deux rayons + - Sphère + - Cône, décrit par un axe et un angle ou par deux rayons - Tore .. note:: - Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. + Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. Un cylindre =========== .. index:: single: cylindre -Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. +Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. .. image:: images/create_boundary_an_cy.png :align: center -Une sphère +Une sphère ========== .. index:: single: sphere -La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. +La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. .. image:: images/create_boundary_an_sp.png :align: center -Un cône +Un cône ======= .. index:: single: cone -Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. +Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. -Création par une origine, un axe et un angle d'ouverture : +Création par une origine, un axe et un angle d'ouverture : .. image:: images/create_boundary_an_co_1.png :align: center -Création par deux points centrés sur l'axe et le rayon associé : +Création par deux points centrés sur l'axe et le rayon associé : .. image:: images/create_boundary_an_co_2.png :align: center @@ -120,22 +120,22 @@ Un tore ======= .. index:: single: tore -Le tore est défini par son centre, son axe, le rayon de révolution et le rayon primaire. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. +Le tore est défini par son centre, son axe, le rayon de révolution et le rayon primaire. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. .. image:: images/create_boundary_an_to.png :align: center -L'arbre d'étude +L'arbre d'étude *************** -.. index:: single: 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. +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 :align: center -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter : :ref:`tui_create_boundary` diff --git a/doc/fr/gui_create_case.rst b/doc/fr/gui_create_case.rst index 1f4956c9..9a4e600f 100644 --- a/doc/fr/gui_create_case.rst +++ b/doc/fr/gui_create_case.rst @@ -1,16 +1,16 @@ .. _gui_create_case: -La création d'un cas +La création d'un cas #################### .. index:: single: cas -La définition du cas se fait par la donnée des informations suivantes : +La définition du cas se fait par la donnée des informations suivantes : - Un nom - - Un répertoire + - Un répertoire - Le fichier du maillage initial - - Le type de conformité pour la série d'adaptations envisagées - - Les éventuelles frontières courbes à respecter + - Le type de conformité pour la série d'adaptations envisagées + - Les éventuelles frontières courbes à respecter .. image:: images/intro_32.png :align: center @@ -18,11 +18,11 @@ La d Le nom du cas ************* -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. -Le répertoire +Le répertoire ************* -Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. +Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. .. image:: images/create_case_2.png :align: center @@ -32,7 +32,7 @@ Le r Le maillage initial ******************* -Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. +Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. .. image:: images/create_case_3.png :align: center @@ -41,66 +41,66 @@ Le maillage initial doit se trouver dans un fichier au format MED. Classiquement Le fichier ne doit contenir qu'un seul maillage. .. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement -.. index:: single: type de conformité +.. index:: single: type de conformité -Le type de conformité +Le type de conformité ********************* -Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. +Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. -L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. +L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. -Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : +Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : .. image:: images/create_case_4.png :align: center -* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. -* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. -* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. +* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. +* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. +* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. -.. index:: single: frontière +.. index:: single: frontière -Les frontières courbes +Les frontières courbes ********************** -Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. +Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. -Deux cas de figure sont présents : +Deux cas de figure sont présents : -* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. -* surface : une surface à suivre est décrite de manière analytique. +* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. +* surface : une surface à suivre est décrite de manière analytique. On cochera le ou les boutons voulus : .. image:: images/create_case_5.png :align: center -La définition des frontières est décrite dans :ref:`gui_create_boundary`. +La définition des frontières est décrite dans :ref:`gui_create_boundary`. .. index:: single: pyramide .. _options_avancees: -Les options avancées +Les options avancées ******************** -Par défaut, aucune option avancée n'est active. +Par défaut, aucune option avancée n'est active. -Néanmoins, on peut définir une option avancée : +Néanmoins, on peut définir une option avancée : .. image:: images/create_case_7.png :align: center -Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : +Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - mailles-points - segments - triangles - quadrangles - - tétraèdres - - hexaèdres + - tétraèdres + - hexaèdres - prismes -Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. +Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. La poursuite d'un cas @@ -108,48 +108,48 @@ La poursuite d'un cas .. index:: single: poursuite .. index:: single: YACS -La poursuite d'un cas correspond à la situation suivante : -Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. +La poursuite d'un cas correspond à la situation suivante : +Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. -La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : - - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` - - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` +La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : + - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` + - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` -On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. +On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. -Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : +Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : - Un nom - - Un répertoire - - Le répertoire qui contient les archives + - Un répertoire + - Le répertoire qui contient les archives .. image:: images/pursue_case_1.png :align: center -On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. +On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. .. image:: images/pursue_case_2.png :align: center -Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : +Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : .. image:: images/pursue_case_3.png :align: center .. note:: - Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. + Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. -L'arbre d'étude +L'arbre d'étude *************** -A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. +A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. .. image:: images/create_case_6.png :align: center -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_case` diff --git a/doc/fr/gui_create_hypothese.rst b/doc/fr/gui_create_hypothese.rst index 9f594b99..6af2910f 100644 --- a/doc/fr/gui_create_hypothese.rst +++ b/doc/fr/gui_create_hypothese.rst @@ -1,58 +1,58 @@ .. _gui_create_hypothese: -L'hypothèse +L'hypothèse ########### -.. index:: single: hypothèse +.. index:: single: hypothèse -L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. +L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. -Il existe trois classes d'hypothèses : +Il existe trois classes d'hypothèses : - Uniforme sur tout le maillage, - Selon un champ, - - En fonction de zone géométrique. + - En fonction de zone géométrique. .. image:: images/create_hypothese_1.png :align: center -Nom de l'hypothèse +Nom de l'hypothèse ****************** -Un nom d'hypothèse est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente. +Un nom d'hypothèse est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente. Adaptation uniforme ******************* -Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. +Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. Adaptation selon un champ ************************* .. note:: - Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : + Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : .. image:: images/create_hypothese_ch_1.png :align: center -Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. -Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. +Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. +Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. -Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). +Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). -On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". +On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". .. image:: images/create_hypothese_ch_2.png :align: center -Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. -Pour le choix du critère, quatre variantes sont possible : +Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. +Pour le choix du critère, quatre variantes sont possible : - - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. - - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. - - au delà d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. - - au delà d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. + - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. + - au delà d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + - au delà d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. -La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. +La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. .. image:: images/create_hypothese_ch_3.png :align: center @@ -62,12 +62,12 @@ Adaptation selon une zone ************************* .. index:: single: zone -Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (voir :ref:`gui_create_zone`) : +Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (voir :ref:`gui_create_zone`) : .. image:: images/create_hypothese_zo_1.png :align: center -Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothèse. +Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothèse. .. image:: images/create_hypothese_zo_2.png :align: center @@ -77,13 +77,13 @@ Filtrage par les groupes ************************ .. index:: single: groupe -On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modifiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. -On coche le bouton associé : +On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modifiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. +On coche le bouton associé : .. image:: images/create_hypothese_gr_1.png :align: center -La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation. +La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation. .. image:: images/create_hypothese_gr_2.png :align: center @@ -94,44 +94,44 @@ Interpolation de champs .. index:: single: interpolation .. note:: - Pour pouvoir interpoler un champ de l'ancien vers le nouveau maillage, il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). + Pour pouvoir interpoler un champ de l'ancien vers le nouveau maillage, il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). -Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : +Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : .. image:: images/create_hypothese_ch_4.png :align: center -Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : +Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : .. image:: images/create_hypothese_ch_5.png :align: center -Les options avancées +Les options avancées ******************** -Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. -Si la case est cochée, on définira les options avancées. +Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. +Si la case est cochée, on définira les options avancées. -Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. +Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. -La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. +La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. -Le dernier choix porte sur des sorties supplémentaires de l'adaptation. Par défaut, aucune case n'est cochée et aucun champ n'est produit. Si l'une des cases est cochée, le fichier MED en sortie contiendra des champs supplémentaires. Le premier choix représente le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Le deuxième choix porte sur la qualité des mailles. Le troisième choix produira le diamètre des mailles. +Le dernier choix porte sur des sorties supplémentaires de l'adaptation. Par défaut, aucune case n'est cochée et aucun champ n'est produit. Si l'une des cases est cochée, le fichier MED en sortie contiendra des champs supplémentaires. Le premier choix représente le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Le deuxième choix porte sur la qualité des mailles. Le troisième choix produira le diamètre des mailles. .. image:: images/create_hypothese_av_1.png :align: center -L'arbre d'étude +L'arbre d'étude *************** -.. index:: single: arbre d'étude +.. index:: single: arbre d'étude -L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. +L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. .. image:: images/create_hypothese_2.png :align: center -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_hypothese` diff --git a/doc/fr/gui_create_iteration.rst b/doc/fr/gui_create_iteration.rst index 6434ece4..83c62856 100644 --- a/doc/fr/gui_create_iteration.rst +++ b/doc/fr/gui_create_iteration.rst @@ -1,82 +1,82 @@ .. _gui_create_iteration: -L'itération +L'itération ########### -.. index:: single: itération +.. index:: single: itération -La définition d'une itération se fait par la donnée des informations suivantes : +La définition d'une itération se fait par la donnée des informations suivantes : - - L'itération précédente - - Le nom du maillage résultat - - L'hypothèse utilisée + - L'itération précédente + - Le nom du maillage résultat + - L'hypothèse utilisée - Eventuellement, le fichier du champ d'indicateurs d'erreur .. image:: images/create_iteration_1.png :align: center -Le nom de l'itération +Le nom de l'itération ********************* -Un nom d'iteration est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente. +Un nom d'iteration est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente. -L'itération précédente +L'itération précédente ********************** -L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. +L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. -.. index:: single: maillage;résultat +.. index:: single: maillage;résultat -Le nom du maillage résultat +Le nom du maillage résultat *************************** -L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente. +L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente. .. index:: single: champ .. index:: single: MED Le champ ******** -Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. +Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. .. image:: images/create_iteration_2.png :align: center -Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. +Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. .. image:: images/create_iteration_3.png :align: center -.. index:: single: hypothèse +.. index:: single: hypothèse -L'hypothèse utilisée +L'hypothèse utilisée ******************** -L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisie dans la liste des hypothèses existantes. +L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisie dans la liste des hypothèses existantes. -Au démarrage, il faut créer une première hypothèse par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : +Au démarrage, il faut créer une première hypothèse par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : .. image:: images/create_iteration_4.png :align: center -Ensuite, si une hypothèse précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothèse par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : +Ensuite, si une hypothèse précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothèse par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : .. image:: images/create_iteration_5.png :align: center .. 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. + 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. -L'arbre d'étude +L'arbre d'étude *************** -.. index:: single: 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. +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 :align: center -Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse. +Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse. .. image:: images/create_iteration_7.png :align: center -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_iteration` diff --git a/doc/fr/gui_create_yacs.rst b/doc/fr/gui_create_yacs.rst index baa82d01..67e1a796 100644 --- a/doc/fr/gui_create_yacs.rst +++ b/doc/fr/gui_create_yacs.rst @@ -1,55 +1,55 @@ .. _gui_create_yacs: -Le schéma YACS +Le schéma YACS ############## .. index:: single: YACS .. index:: single: cas -L'objet YACS contient toutes les définitions permettant de créer un schéma. Ce schéma va piloter l'alternance d'un calcul représentant une modélisation physique sur un maillage et l'adaptation de ce maillage de calcul. Cette alternance est piloté par des critères de convergence. +L'objet YACS contient toutes les définitions permettant de créer un schéma. Ce schéma va piloter l'alternance d'un calcul représentant une modélisation physique sur un maillage et l'adaptation de ce maillage de calcul. Cette alternance est piloté par des critères de convergence. .. note:: - Pour avoir une description détaillée de chacune des rubriques formant le schéma, consulter :ref:`yacs` + Pour avoir une description détaillée de chacune des rubriques formant le schéma, consulter :ref:`yacs` -Procédure à employer +Procédure à employer ******************** -La création automatique du schéma va se faire en trois phases : +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. +- 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 + :alt: yacs - création :width: 551 :height: 295 -Nom du schéma +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. +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 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. +- 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 : +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. +- ``--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. +- ``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 : @@ -61,68 +61,68 @@ Exemple d'usage du script : Script_A = Script(argu) erreur, message, dico_resu = Script_A.compute () -Le répertoire +Le répertoire ************* -Le répertoire est celui qui contiend les fichiers produits par le calcul. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. +Le répertoire est celui qui contiend les fichiers produits par le calcul. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. Le maillage initial ******************* -Le maillage initial doit se trouver dans un fichier au format MED. C'est celui qui est le point de départ du tout premier calcul. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. +Le maillage initial doit se trouver dans un fichier au format MED. C'est celui qui est le point de départ du tout premier calcul. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. -Le type de schéma +Le type de schéma ***************** -Plusieurs types de schéma sont proposés : constant ou variable. +Plusieurs types de schéma sont proposés : constant ou variable. -L'option par défaut, 'constant', alterne le lancement d'un calcul qui est toujours le même et une adaptation de maillage : d'un calcul à l'autre, la seule chose qui change est le maillage. Tout le reste est identique. Par exemple, dans le cas où le calcul modéliserait un transitoire, c'est toujours l'intégralité du transitoire qui est prise en compte. +L'option par défaut, 'constant', alterne le lancement d'un calcul qui est toujours le même et une adaptation de maillage : d'un calcul à l'autre, la seule chose qui change est le maillage. Tout le reste est identique. Par exemple, dans le cas où le calcul modéliserait un transitoire, c'est toujours l'intégralité du transitoire qui est prise en compte. L'option 'variable' est inactive aujourd'hui. -Enregistrement du schéma +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 la fonction **Ecrire le fichier** à la souris. +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 la fonction **Ecrire le fichier** à la souris. -L'arbre d'étude +L'arbre d'étude *************** -.. index:: single: 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. +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 +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_yacs` -Utilisation du schéma +Utilisation du schéma ##################### -Le schéma produit par cette saisie est directement importable dans le module YACS. Il peut se lancer sans modification. Dans ce cas, l'arrêt dans la boucle a lieu ainsi : +Le schéma produit par cette saisie est directement importable dans le module YACS. 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 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. +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`. +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` : +Le nombre maximal d'itérations est modifiable par la variable `NbCalcMax` : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 112-112 -La valeur de test est stockée dans une liste au fur et à mesure des passages : +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 : +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 : +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 @@ -131,7 +131,7 @@ 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`. +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 index ca936316..3a005b94 100644 --- a/doc/fr/gui_create_yacs_aster.rst +++ b/doc/fr/gui_create_yacs_aster.rst @@ -1,42 +1,42 @@ .. _gui_create_yacs_aster: -Un schéma YACS pour Code_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. Les seules contraintes sont des conventions pour que le script de pilotage de *Code_Aster* fonctionne correctement au sein du schéma. +Dans le cas où le schéma implique un couplage entre *Code_Aster* et HOMARD, une façon de faire est décrite ici. Les seules contraintes sont des conventions pour que le script de pilotage de *Code_Aster* fonctionne correctement au sein du schéma. -Préparations +Préparations ************ -Le répertoire de calcul +Le répertoire de calcul ======================= -La première phase consiste à créer un répertoire qui abritera les fichiers du calcul et les fichiers des maillages successifs. +La première phase consiste à créer un répertoire qui abritera les fichiers du calcul et les fichiers des maillages successifs. Les commandes ============= -Les commandes du calcul sont à définir comme pour n'importe quel calcul. On particularisera uniquement la récupération de la valeur de test pour la convergence. +Les commandes du calcul sont à définir comme pour n'importe quel calcul. On particularisera uniquement la récupération de la valeur de test pour la convergence. La valeur de test ----------------- -Pour récupérer la valeur de test ``V_TEST``, le script va chercher dans le fichier ``resu``, la ligne de type : +Pour récupérer la valeur de test ``V_TEST``, le script va chercher dans le fichier ``resu``, la ligne de type : :: V_TEST 0.02071983 -Pour cela, la meilleure façon consiste à placer la valeur à tester dans une table intitulée ``V_TEST``, par exemple après une extraction depuis un résultat : +Pour cela, la meilleure façon consiste à placer la valeur à tester dans une table intitulée ``V_TEST``, par exemple après une extraction depuis un résultat : .. literalinclude:: ../files/yacs_aster_01.comm :lines: 53-59 -puis à imprimer cette table en se limitant aux deux paramètres ``INTITULE`` et composante retenue : +puis à imprimer cette table en se limitant aux deux paramètres ``INTITULE`` et composante retenue : .. literalinclude:: ../files/yacs_aster_01.comm :lines: 63-64 Le pilotage de l'adaptation --------------------------- -Si on souhaite piloter l'adaptation par un champ, il faudra écrire ce champ dans le fichier MED de sortie. Ce peut être un indicateur d'erreur (commande CALC_ERREUR) ou un autre champ. +Si on souhaite piloter l'adaptation par un champ, il faudra écrire ce champ dans le fichier MED de sortie. Ce peut être un indicateur d'erreur (commande CALC_ERREUR) ou un autre champ. Par exemple : @@ -45,30 +45,30 @@ Par exemple : Le script ========= -Le script de pilotage de *Code_Aster* à fournir au schéma YACS est à télécharger ici : :download:`ScriptAster<../files/yacs_script.py>`. Ce fichier peut être placé n'importe où. +Le script de pilotage de *Code_Aster* à fournir au schéma YACS est à télécharger ici : :download:`ScriptAster<../files/yacs_script.py>`. Ce fichier peut être placé n'importe où. -Comment procéder ? +Comment procéder ? ****************** Un premier calcul ================= -Une fois les commandes au point, il faut lancer un premier calcul. Cela permet de choisir le paramétrage du calcul : version de *Code_Aster*, serveur de calcul, interactif/batch, etc. Ce sont ces paramètres qui seront utilisés pour les calculs successifs dans le schéma. Le lancement de *Code_Aster* rassemble ces informations dans un fichier de type ``export``. Il faut copier ce fichier sous le nom ``calcul.ref.export`` dans le répertoire de calcul. +Une fois les commandes au point, il faut lancer un premier calcul. Cela permet de choisir le paramétrage du calcul : version de *Code_Aster*, serveur de calcul, interactif/batch, etc. Ce sont ces paramètres qui seront utilisés pour les calculs successifs dans le schéma. Le lancement de *Code_Aster* rassemble ces informations dans un fichier de type ``export``. Il faut copier ce fichier sous le nom ``calcul.ref.export`` dans le répertoire de calcul. -Création du schéma +Création du schéma ================== -Quand le calcul est terminé, il faut enchaîner les étapes suivante : +Quand le calcul est terminé, il faut enchaîner les étapes suivante : -- vérifier que le fichier de résultats au format MED a été créé et que le fichier de résultats de type ``resu`` contient la ligne donnant la valeur à tester ; +- vérifier que le fichier de résultats au format MED a été créé et que le fichier de résultats de type ``resu`` contient la ligne donnant la valeur à tester ; - activer le module HOMARD de SALOME ; -- créer un cas à partir du maillage initial ; -- créer une itération en se basant sur le champ que l'on a retenu ; -- éventuellement calculer cette itération pour contrôler les choix, mais ce n'est pas obligatoire ; -- créer le schéma basé sur ce cas. +- créer un cas à partir du maillage initial ; +- créer une itération en se basant sur le champ que l'on a retenu ; +- éventuellement calculer cette itération pour contrôler les choix, mais ce n'est pas obligatoire ; +- créer le schéma basé sur ce cas. -Lancer le schéma +Lancer le schéma ================ -Le schéma est écrit dans le fichier ``schema.xml`` dans le répertoire lié au cas qui en est le support. Ce fichier peut être déplacé sans problème. On peut modifier les paramètres de contrôle par défaut de la boucle de l'alternance (calcul/adaptation). +Le schéma est écrit dans le fichier ``schema.xml`` dans le répertoire lié au cas qui en est le support. Ce fichier peut être déplacé sans problème. On peut modifier les paramètres de contrôle par défaut de la boucle de l'alternance (calcul/adaptation). -On active alors le module YACS, on importe le schéma et on l'exécute. +On active alors le module YACS, on importe le schéma et on l'exécute. diff --git a/doc/fr/gui_create_zone.rst b/doc/fr/gui_create_zone.rst index 0084ec96..cc2381fa 100644 --- a/doc/fr/gui_create_zone.rst +++ b/doc/fr/gui_create_zone.rst @@ -5,37 +5,37 @@ La zone .. index:: single: zone .. index:: single: 2D -L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. +L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. En 3D, il existe quatre types de zone : - - Parallélépipède + - Parallélépipède - Cylindre - Tuyau - - Sphère + - Sphère Leurs analogues en 2D sont : - Rectangle - Disque - - Disque percé + - Disque percé -Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités -sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la -conformité pour produire un maillage correct. +Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités +sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la +conformité pour produire un maillage correct. .. note:: - Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. + Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. Nom de la zone ************** -Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. +Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. -Un parallélépipède +Un parallélépipède ****************** .. index:: single: boite -Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. +Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. .. image:: images/create_zone_1.png :align: center @@ -44,7 +44,7 @@ Un cylindre *********** .. index:: single: cylindre -Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. +Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. .. image:: images/create_zone_2.png :align: center @@ -53,16 +53,16 @@ Un tuyau ******** .. index:: single: tuyau -Le tuyau est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. +Le tuyau est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. .. image:: images/create_zone_3.png :align: center -Une sphère +Une sphère ********** .. index:: single: sphere -La sphère est définie par son centre et son rayon. +La sphère est définie par son centre et son rayon. .. image:: images/create_zone_4.png :align: center @@ -71,7 +71,7 @@ Un rectangle ************ .. index:: single: rectangle -Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. +Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. .. image:: images/create_zone_21.png :align: center @@ -80,7 +80,7 @@ Un disque ********* .. index:: single: disque -Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. +Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. .. image:: images/create_zone_22.png :align: center @@ -89,23 +89,23 @@ Un disque avec trou ******************* .. index:: single: disque avec trou -Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. +Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. .. image:: images/create_zone_23.png :align: center -L'arbre d'étude +L'arbre d'étude *************** -.. index:: single: 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. +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 + :alt: zone - arbre d'études -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_zone` diff --git a/doc/fr/gui_homard.rst b/doc/fr/gui_homard.rst index ef3fcce4..b7afb223 100644 --- a/doc/fr/gui_homard.rst +++ b/doc/fr/gui_homard.rst @@ -2,50 +2,50 @@ Le calcul ######### -.. index:: single: itération +.. index:: single: itération .. index:: single: calcul .. index:: single: SMESH Lancer une adaptation ********************* -Lancer une adaptation s'obtient en sélectionnant l'itération à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" ou "*Calculer et publier*" dans le menu HOMARD ou à la souris. Dans le premier cas, l'adaptation sera réalisée et les fichiers MED seront écrits. Dans le second cas, le nouveau maillage sera publié dans SMESH. On notera que si on a seulement utilisé "*Calculer*", il est toujours possible de publier a posteriori le maillage produit en sélectionnant le choix "*Publier*". +Lancer une adaptation s'obtient en sélectionnant l'itération à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" ou "*Calculer et publier*" dans le menu HOMARD ou à la souris. Dans le premier cas, l'adaptation sera réalisée et les fichiers MED seront écrits. Dans le second cas, le nouveau maillage sera publié dans SMESH. On notera que si on a seulement utilisé "*Calculer*", il est toujours possible de publier a posteriori le maillage produit en sélectionnant le choix "*Publier*". .. image:: images/lancement_1.png :align: center -.. index:: single: arbre d'étude +.. index:: single: arbre d'étude -L'arbre d'étude +L'arbre d'étude *************** -A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'itération est validée. Sous l'itération, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : +A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'itération est validée. Sous l'itération, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : - *rep*/I(n+1)/Liste.n.vers.(n+1).log - *rep*/I(n+1)/apad.n.vers.(n+1).bilan - *rep*/maill.(n+1).med -Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. +Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. -Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. Si on a demandé la publication, on retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. +Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. Si on a demandé la publication, on retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. .. image:: images/lancement_2.png :align: center -Consulter le résultat d'une adaptation +Consulter le résultat d'une adaptation ************************************** -Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. +Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. .. image:: images/lancement_3.png :align: center .. note:: - Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. - "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. - "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". + Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. + "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. + "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_iteration` diff --git a/doc/fr/gui_mesh_info.rst b/doc/fr/gui_mesh_info.rst index 3905fc8f..020e7438 100644 --- a/doc/fr/gui_mesh_info.rst +++ b/doc/fr/gui_mesh_info.rst @@ -5,33 +5,33 @@ Analyse de maillage .. index:: single: analyse .. index:: single: information -La demande d'analyse d'un maillage se fait par la donnée des informations suivantes : +La demande d'analyse d'un maillage se fait par la donnée des informations suivantes : - - Un répertoire + - Un répertoire - Le fichier du maillage -Si le maillage fait partie d'un cas enregistré, son analyse est faite à partir de son itération dans l'arbre d'études. Voir plus loin. +Si le maillage fait partie d'un cas enregistré, son analyse est faite à partir de son itération dans l'arbre d'études. Voir plus loin. -Maillage à importer +Maillage à importer ******************* -La sélection de la fonction d'analyse est faite par le menu de la barre supérieure de la fenêtre : +La sélection de la fonction d'analyse est faite par le menu de la barre supérieure de la fenêtre : .. image:: images/mesh_info_1.png :align: center -La fenêtre de choix s'affiche. +La fenêtre de choix s'affiche. .. image:: images/mesh_info_2.png :align: center Le nom du cas ============= -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. -Le répertoire +Le répertoire ============= -Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. +Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. .. image:: images/create_case_2.png :align: center @@ -39,9 +39,9 @@ Le r .. index:: single: maillage;initial .. index:: single: MED -Le maillage à analyser +Le maillage à analyser ====================== -Le maillage à analyser doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. +Le maillage à analyser doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. .. image:: images/create_case_3.png :align: center @@ -50,43 +50,43 @@ Le maillage Le fichier ne doit contenir qu'un seul maillage. .. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analyse des différents niveaux de raffinement/déraffinement. + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analyse des différents niveaux de raffinement/déraffinement. Options d'analyse ================= -L'analyse est faite selon les options cochées. - - qualité des mailles - - diamètre des mailles - - connexité du domaine ; en un seul morceau, combien de trous, etc. +L'analyse est faite selon les options cochées. + - qualité des mailles + - diamètre des mailles + - connexité du domaine ; en un seul morceau, combien de trous, etc. - tailles des constituants du domaine, groupe par groupe - - interpénétration des mailles, par dimension + - interpénétration des mailles, par dimension -Le résultat de l'analyse est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. +Le résultat de l'analyse est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. -L'arbre d'étude +L'arbre d'étude =============== -A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. +A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. .. image:: images/mesh_info_3.png :align: center -Itération calculée +Itération calculée ****************** -Pour analyser le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analyse. On retrouve le menu similaire au cas initial : +Pour analyser le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analyse. On retrouve le menu similaire au cas initial : .. image:: images/mesh_info_4.png :align: center -Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. +Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. .. image:: ../images/mesh_info_5.png :align: center -Méthodes python correspondantes +Méthodes python correspondantes ******************************* Consulter :ref:`tui_create_case` et :ref:`tui_create_iteration` diff --git a/doc/fr/gui_usage.rst b/doc/fr/gui_usage.rst index 0f53da57..6820f39f 100644 --- a/doc/fr/gui_usage.rst +++ b/doc/fr/gui_usage.rst @@ -3,27 +3,27 @@ Mode d'emploi pour l'interface graphique ######################################## .. index:: single: cas -.. index:: single: itération +.. index:: single: itération Activer le module HOMARD ************************ -Pour utiliser le module HOMARD, deux façons existent : +Pour utiliser le module HOMARD, deux façons existent : #. en activant l'onglet HOMARD dans la liste des modules, #. en cliquant sur le bouton HOMARD dans la barre d'outils. -L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. +L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. .. image:: images/homard_1.png :align: center -Définir une adaptation +Définir une adaptation ********************** -Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard`. +Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard`. -Mode d'emploi de la saisie des données +Mode d'emploi de la saisie des données ************************************** .. toctree:: @@ -38,10 +38,10 @@ Mode d'emploi de la saisie des donn gui_mesh_info -Création d'un schéma YACS +Création d'un schéma YACS ************************* -Le module HOMARD propose la création automatique de schémas YACS alternant un calcul et une adaptation de maillage. +Le module HOMARD propose la création automatique de schémas YACS alternant un calcul et une adaptation de maillage. .. toctree:: :maxdepth: 2 @@ -50,10 +50,10 @@ Le module HOMARD propose la cr gui_create_yacs_aster -Préférences +Préférences *********** -Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. +Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. .. toctree:: :maxdepth: 2 diff --git a/doc/fr/index.rst b/doc/fr/index.rst index f670d358..4326b8b4 100644 --- a/doc/fr/index.rst +++ b/doc/fr/index.rst @@ -21,7 +21,7 @@ Mode d'emploi yacs tutorials -Présentation générale +Présentation générale ********************* .. toctree:: @@ -35,11 +35,11 @@ Licence ******* .. index:: single: Licence -La licence pour ce module est la GNU Lesser General Public License (Lesser GPL), tel qu'il est déclaré ici et dans les fichiers source. +La licence pour ce module est la GNU Lesser General Public License (Lesser GPL), tel qu'il est déclaré ici et dans les fichiers source. .. literalinclude:: ../files/licence.fr.txt -En complément, nous souhaitons que toute publication décrivant un travail utilisant ce module, ou tout produit commercial l'utilisant, cite au moins l'une des références ci-dessous : +En complément, nous souhaitons que toute publication décrivant un travail utilisant ce module, ou tout produit commercial l'utilisant, cite au moins l'une des références ci-dessous : * G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, *Finite Elements in Analysis and Design*, Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 @@ -60,4 +60,4 @@ Index et tables * :ref:`search` * :ref:`glossaire` -*HOMARD est une marque déposée d'EDF.* +*HOMARD est une marque déposée d'EDF.* diff --git a/doc/fr/intro.rst b/doc/fr/intro.rst index 94929c48..745dd554 100644 --- a/doc/fr/intro.rst +++ b/doc/fr/intro.rst @@ -3,51 +3,51 @@ Introduction ############ -Présentation générale +Présentation générale ********************* -Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des simulations numériques par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du logiciel auquel il est couplé. +Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des simulations numériques par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du logiciel auquel il est couplé. -Raffiner le maillage signifie découper des mailles désignées selon des indications fournies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul : on ne tiendra plus compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. +Raffiner le maillage signifie découper des mailles désignées selon des indications fournies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul : on ne tiendra plus compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - mailles-points - segments - triangles - quadrangles - - tétraèdres - - hexaèdres + - tétraèdres + - hexaèdres - prismes -Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. -Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y avoir cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. +Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. +Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y avoir cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. -Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique :ref:`options_avancees` de la création du cas. +Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique :ref:`options_avancees` de la création du cas. Plusieurs motivations apparaissent pour adapter un maillage : - - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. - - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. - - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. + - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. + - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. + - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. -Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. +Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. -Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. +Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. .. image:: images/intro_1.png :align: center -Au final, la chaîne complète part du maillage initial, puis comprend des maillons successifs (calcul d'indicateur / adaptation). Pour des problèmes stationnaires en temps, cela équivaut à une succession de calculs indépendants sur différents maillages. Pour des problèmes transitoires, le calcul est suspendu à un instant donné ; après adaptation du maillage, le calcul est repris au même instant ou à un instant antérieur. +Au final, la chaîne complète part du maillage initial, puis comprend des maillons successifs (calcul d'indicateur / adaptation). Pour des problèmes stationnaires en temps, cela équivaut à une succession de calculs indépendants sur différents maillages. Pour des problèmes transitoires, le calcul est suspendu à un instant donné ; après adaptation du maillage, le calcul est repris au même instant ou à un instant antérieur. .. image:: ../images/intro_2.png :align: center -Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. +Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. .. note:: - Pour une description plus complète, voir :download:`Description générale de HOMARD <../files/HOMARD_0.pdf>`. + Pour une description plus complète, voir :download:`Description générale de HOMARD <../files/HOMARD_0.pdf>`. .. note:: - Pour une référence à HOMARD, utiliser : + Pour une référence à HOMARD, utiliser : G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 @@ -56,183 +56,183 @@ Des variantes de ce sch .. index:: single: YACS .. note:: - Cet alternance de calculs et d'adaptions est très appropriée à la mise place de schémas :ref:`yacs`. + Cet alternance de calculs et d'adaptions est très appropriée à la mise place de schémas :ref:`yacs`. -Mode de découpage des mailles +Mode de découpage des mailles ***************************** -.. index:: single: découpage -.. index:: single: conformité +.. index:: single: découpage +.. index:: single: conformité -Globalement le processus de maillage adaptatif par découpage des mailles se résume en deux phases. Dans la première phase, on découpe toutes les mailles qui ont été désignées par les indications de pilotage. Cela produit un maillage qui n'est pas conforme : des noeuds sont pendants à la jonction entre une zone à raffiner et une zone à garder. -La seconde phase vise à régler tous ces problèmes de conformité. +Globalement le processus de maillage adaptatif par découpage des mailles se résume en deux phases. Dans la première phase, on découpe toutes les mailles qui ont été désignées par les indications de pilotage. Cela produit un maillage qui n'est pas conforme : des noeuds sont pendants à la jonction entre une zone à raffiner et une zone à garder. +La seconde phase vise à régler tous ces problèmes de conformité. -A ces deux phases correspondent des modes de découpages différents. -Dans la première phase, toutes les mailles sont découpées de la même manière ; c'est ce que nous appelons le découpage standard. Dans la seconde phase, une partie des conflits de conformité de maillage dans les zones de jonction se règle -par les mêmes découpages standard de mailles et une autre partie se règle par des découpages spéciaux. +A ces deux phases correspondent des modes de découpages différents. +Dans la première phase, toutes les mailles sont découpées de la même manière ; c'est ce que nous appelons le découpage standard. Dans la seconde phase, une partie des conflits de conformité de maillage dans les zones de jonction se règle +par les mêmes découpages standard de mailles et une autre partie se règle par des découpages spéciaux. -Les modes de découpage décrits ci-dessous ont été choisis pour ne pas détériorer la qualité du maillage au cours des itérations d'adaptation. +Les modes de découpage décrits ci-dessous ont été choisis pour ne pas détériorer la qualité du maillage au cours des itérations d'adaptation. -Le découpage standard +Le découpage standard ===================== -Le découpage standard des mailles se fait en ayant pour objectif de limiter les cas de figure. -Ainsi, les arêtes sont-elles scindées en deux moitiés égales. +Le découpage standard des mailles se fait en ayant pour objectif de limiter les cas de figure. +Ainsi, les arêtes sont-elles scindées en deux moitiés égales. -Pour découper un triangle, on découpe ses trois arêtes en deux et on se trouve avec 4 triangles semblables. Ils conservent donc la même qualité. +Pour découper un triangle, on découpe ses trois arêtes en deux et on se trouve avec 4 triangles semblables. Ils conservent donc la même qualité. .. image:: ../images/dec_tria_1.gif :align: center - :alt: Découpage standard d'un triangle + :alt: Découpage standard d'un triangle :width: 399 :height: 88 -Pour découper un quadrangle, on découpe ses quatre arêtes en deux et on se trouve avec 4 quadrangles non semblables au quadrangle père et donc de qualité différente. +Pour découper un quadrangle, on découpe ses quatre arêtes en deux et on se trouve avec 4 quadrangles non semblables au quadrangle père et donc de qualité différente. .. image:: ../images/dec_quad_1.png :align: center - :alt: Découpage standard d'un quadrangle + :alt: Découpage standard d'un quadrangle :width: 399 -Le découpage des tétraèdres se fait en huit. Pour commencer, chacune des faces triangulaires est découpée en 4 faces triangulaires semblables. +Le découpage des tétraèdres se fait en huit. Pour commencer, chacune des faces triangulaires est découpée en 4 faces triangulaires semblables. .. image:: ../images/dec_tetr_1.gif :align: center - :alt: Découpage standard d'un tétraèdre - 1 + :alt: Découpage standard d'un tétraèdre - 1 :width: 328 :height: 115 -Ce découpage des faces produit 4 tétraèdres dans les angles du tétraèdre initial. On remarque que ces 4 nouveaux tétraèdres sont homothétiques de l'initial. Ils conservent donc la même qualité. +Ce découpage des faces produit 4 tétraèdres dans les angles du tétraèdre initial. On remarque que ces 4 nouveaux tétraèdres sont homothétiques de l'initial. Ils conservent donc la même qualité. .. image:: ../images/dec_tetr_2.gif :align: center - :alt: Découpage standard d'un tétraèdre - 2 + :alt: Découpage standard d'un tétraèdre - 2 :width: 201 :height: 159 -Il reste au coeur du tétraèdre, un bloc qui a la forme de deux pyramides accolées par leur base. On crée une arête avec l'une des 3 diagonales possibles, puis les 4 faces qui contiennent cette arête et deux arêtes extérieures. +Il reste au coeur du tétraèdre, un bloc qui a la forme de deux pyramides accolées par leur base. On crée une arête avec l'une des 3 diagonales possibles, puis les 4 faces qui contiennent cette arête et deux arêtes extérieures. .. image:: ../images/dec_tetr_3.gif :align: center - :alt: Découpage standard d'un tétraèdre - 3 + :alt: Découpage standard d'un tétraèdre - 3 :width: 244 :height: 74 -Cela produit 4 nouveaux tétraèdres. On notera qu'ils sont semblables deux à deux, mais qu'ils ne peuvent jamais être semblables au tétraèdre initial. Ils ne pourront donc jamais avoir la même qualité que lui. Toutefois, selon le choix -de la diagonale qui a servi à la découpe du bloc pyramidal interne, le résultat -n'est pas le même. On montre que le meilleur choix, en terme de qualité, est celui +Cela produit 4 nouveaux tétraèdres. On notera qu'ils sont semblables deux à deux, mais qu'ils ne peuvent jamais être semblables au tétraèdre initial. Ils ne pourront donc jamais avoir la même qualité que lui. Toutefois, selon le choix +de la diagonale qui a servi à la découpe du bloc pyramidal interne, le résultat +n'est pas le même. On montre que le meilleur choix, en terme de qualité, est celui de la plus petite des trois diagonales possibles. .. image:: ../images/dec_tetr_4.gif :align: center - :alt: Découpage standard d'un tétraèdre - 4 + :alt: Découpage standard d'un tétraèdre - 4 :width: 229 :height: 116 -Le découpage des hexaèdres se fait en huit. Chacune des faces quadrangulaires est découpée en 4 faces quadrangulaires. 3 faces internes à l'hexaèdre sont créées, puis chacune est découpée en 4. Cette construction crée 6 points supplémentaires au centre de chaque face externe et un point supplémentaire à l'intérieur de l'hexaèdre. +Le découpage des hexaèdres se fait en huit. Chacune des faces quadrangulaires est découpée en 4 faces quadrangulaires. 3 faces internes à l'hexaèdre sont créées, puis chacune est découpée en 4. Cette construction crée 6 points supplémentaires au centre de chaque face externe et un point supplémentaire à l'intérieur de l'hexaèdre. .. image:: ../images/dec_hex.png :align: center - :alt: Découpage standard d'un hexaèdre + :alt: Découpage standard d'un hexaèdre :width: 600 -Le découpage des pentaèdres se fait en huit. Chacune des faces quadrangulaires est découpée en 4 faces quadrangulaires de manière standard, de même pour les faces triangulaires. On construit trois arêtes internes chacune parallèle à une des faces quadrangulaires au milieu du penatèdre. On construit ensuite 4 faces triangulaires s'appuyant sur ces arêtes et correspondant au découpage standard d'une face triangulaire à l'intérieur du pentaèdre. Six faces quadrangulaires internes sont créées deux à deux parallèles à chaque face quadrangulaire du pentaèdre. +Le découpage des pentaèdres se fait en huit. Chacune des faces quadrangulaires est découpée en 4 faces quadrangulaires de manière standard, de même pour les faces triangulaires. On construit trois arêtes internes chacune parallèle à une des faces quadrangulaires au milieu du penatèdre. On construit ensuite 4 faces triangulaires s'appuyant sur ces arêtes et correspondant au découpage standard d'une face triangulaire à l'intérieur du pentaèdre. Six faces quadrangulaires internes sont créées deux à deux parallèles à chaque face quadrangulaire du pentaèdre. .. image:: ../images/dec.pent.png :align: center - :alt: Découpage standard d'un pentaèdre + :alt: Découpage standard d'un pentaèdre :width: 600 -Le découpage de mise en conformité +Le découpage de mise en conformité ================================== -Le découpage de mise en conformité s'appliquent aux mailles à l'interface entre deux niveaux de raffinement différent. -Ces découpages produisent des mailles de qualité moindre par rapport aux mailles et on voit dans l'algorithme général comment cet inconvénient est pris en compte pour en minimiser les conséquences. +Le découpage de mise en conformité s'appliquent aux mailles à l'interface entre deux niveaux de raffinement différent. +Ces découpages produisent des mailles de qualité moindre par rapport aux mailles et on voit dans l'algorithme général comment cet inconvénient est pris en compte pour en minimiser les conséquences. -Etant donné notre algorithme de maillage adaptatif, seules les quatre situations suivantes peuvent être rencontrées : +Etant donné notre algorithme de maillage adaptatif, seules les quatre situations suivantes peuvent être rencontrées : -Dans le cas d'un triangle, l'une de ses trois arêtes est coupée en deux. On joint son milieu au sommet opposé pour former deux nouveaux triangles. +Dans le cas d'un triangle, l'une de ses trois arêtes est coupée en deux. On joint son milieu au sommet opposé pour former deux nouveaux triangles. .. image:: ../images/dec_tria_2.png :align: center - :alt: Découpage de conformité d'un triangle + :alt: Découpage de conformité d'un triangle :width: 424 -Dans le cas d'un quadrangle, trois cas de figure sont possibles. Dans le premier cas, l'une de ses quatre arêtes est coupée en deux. On joint son milieu aux deux sommets opposés pour former trois triangles. Le maillage adapté obtenu est donc mixte : il comportera des triangles en plus des quadrangles de départ. +Dans le cas d'un quadrangle, trois cas de figure sont possibles. Dans le premier cas, l'une de ses quatre arêtes est coupée en deux. On joint son milieu aux deux sommets opposés pour former trois triangles. Le maillage adapté obtenu est donc mixte : il comportera des triangles en plus des quadrangles de départ. .. image:: ../images/dec_quad_2.png :align: center - :alt: Découpage de conformité d'un quadrangle - 1 + :alt: Découpage de conformité d'un quadrangle - 1 :width: 424 -Pour un quadrangle où deux arêtes opposées sont coupées en deux, les deux milieux d'arêtes opposées sont reliés. Il y a création de deux quadrangles. +Pour un quadrangle où deux arêtes opposées sont coupées en deux, les deux milieux d'arêtes opposées sont reliés. Il y a création de deux quadrangles. .. image:: ../images/dec_quad_3.png :align: center - :alt: Découpage de conformité d'un quadrangle - 2 + :alt: Découpage de conformité d'un quadrangle - 2 :width: 424 -Pour un quadrangle où deux arêtes adjacentes sont coupées en deux, on crée un nouveau noeud au milieu du quadrangle. Ce noeud milieu est relié aux deux milieux des arêtes coupées et au sommet opposé. Il y a création de trois quadrangles. +Pour un quadrangle où deux arêtes adjacentes sont coupées en deux, on crée un nouveau noeud au milieu du quadrangle. Ce noeud milieu est relié aux deux milieux des arêtes coupées et au sommet opposé. Il y a création de trois quadrangles. .. image:: ../images/dec_quad_4.png :align: center - :alt: Découpage de conformité d'un quadrangle - 3 + :alt: Découpage de conformité d'un quadrangle - 3 :width: 424 -Pour un tétraèdre dont trois des arêtes sont coupées : cela n'est possible que si ces arêtes sont sur la même face. Cette face est donc coupée en quatre. On joint les milieux des arêtes découpées au sommet opposé. Cela coupe en deux les trois autres faces et il y a création de 4 tétraèdres. +Pour un tétraèdre dont trois des arêtes sont coupées : cela n'est possible que si ces arêtes sont sur la même face. Cette face est donc coupée en quatre. On joint les milieux des arêtes découpées au sommet opposé. Cela coupe en deux les trois autres faces et il y a création de 4 tétraèdres. .. image:: ../images/dec_tetr_5.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 1 + :alt: Découpage de conformité d'un tétraèdre - 1 :width: 116 :height: 116 -Pour un tétraèdre dont deux des arêtes sont coupées : cela n'est possible que si ces arêtes sont opposées. On fait toutes les jonctions entre les milieux de ces arêtes et les autres sommets, ainsi que entre les deux milieux d'arêtes. Les quatre faces sont coupées en deux et il y a création de 4 tétraèdres. +Pour un tétraèdre dont deux des arêtes sont coupées : cela n'est possible que si ces arêtes sont opposées. On fait toutes les jonctions entre les milieux de ces arêtes et les autres sommets, ainsi que entre les deux milieux d'arêtes. Les quatre faces sont coupées en deux et il y a création de 4 tétraèdres. .. image:: ../images/dec_tetr_6.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 2 + :alt: Découpage de conformité d'un tétraèdre - 2 :width: 116 :height: 116 -Pour un tétraèdre dont une des arêtes est coupée : on joint le milieu de cette arête découpée au sommet opposé et il y a création de 2 tétraèdres. +Pour un tétraèdre dont une des arêtes est coupée : on joint le milieu de cette arête découpée au sommet opposé et il y a création de 2 tétraèdres. .. image:: ../images/dec_tetr_7.gif :align: center - :alt: Découpage de conformité d'un tétraèdre - 3 + :alt: Découpage de conformité d'un tétraèdre - 3 :width: 116 :height: 116 -La conformité des hexaèdres est assurée par des combinaisons de tétraèdres et de pyramides. Les situations dépendent du nombre de non-conformités, en respectant les règles de découpage des quadrangles. Voici quelques exemples pris parmi les 66 configurations possibles. +La conformité des hexaèdres est assurée par des combinaisons de tétraèdres et de pyramides. Les situations dépendent du nombre de non-conformités, en respectant les règles de découpage des quadrangles. Voici quelques exemples pris parmi les 66 configurations possibles. -Pour un hexaèdre dont une face est coupée il y a création de 4 arêtes, de 4 tétraèdres et de 5 pyramides. +Pour un hexaèdre dont une face est coupée il y a création de 4 arêtes, de 4 tétraèdres et de 5 pyramides. .. image:: ../images/hexaface.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 1 face + :alt: Découpage de conformité d'un hexaèdre - 1 face :width: 384 :height: 101 -Pour un hexaèdre dont une seule arête est coupée il y a création de deux arêtes et de 4 pyramides. +Pour un hexaèdre dont une seule arête est coupée il y a création de deux arêtes et de 4 pyramides. .. image:: ../images/hexa1arete.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 1 arête + :alt: Découpage de conformité d'un hexaèdre - 1 arête :width: 384 :height: 101 -Pour un hexaèdre dont deux arêtes sont coupées il y a création d'un point central, de 10 arêtes, de 12 tétraèdres et de 2 pyramides. +Pour un hexaèdre dont deux arêtes sont coupées il y a création d'un point central, de 10 arêtes, de 12 tétraèdres et de 2 pyramides. .. image:: ../images/hexa2aretes.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 2 arêtes + :alt: Découpage de conformité d'un hexaèdre - 2 arêtes :width: 384 :height: 101 -Pour un hexaèdre dont trois arêtes sont coupées il y a création d'un point central, de 11 arêtes et de 18 tétraèdres. +Pour un hexaèdre dont trois arêtes sont coupées il y a création d'un point central, de 11 arêtes et de 18 tétraèdres. .. image:: ../images/hexa3aretes.png :align: center - :alt: Découpage de conformité d'un hexaèdre - 3 arêtes + :alt: Découpage de conformité d'un hexaèdre - 3 arêtes :width: 384 :height: 101 @@ -242,24 +242,24 @@ L'algorithme ************ .. index:: single: algorithme -La stratégie retenue dans les algorithmes d'HOMARD consiste à forcer le découpage en quatre pour toutes les faces triangulaires ou quadrangulaires présentant deux points de non conformité. A la fin, les seuls triangles ou quadrangles présentant des points de non conformité sont des faces où une arête et une seule est découpée. La mise en conformité est -alors assurée par la solution la plus simple possible comme vu ci-avant. -Cette dernière étape de mise en conformité introduit des mailles dont la qualité peut être plus faible que celle -des mailles dont elles sont issues. Cet inconvénient est contrôlé car nous avons choisi de donner un statut temporaire -à ces mailles de mise en conformité : elles sont présentes pour produire un maillage acceptable par les logiciels -de calcul, mais disparaissent s'il y a besoin de les découper ultérieurement. -Ainsi, la modification de qualité ne se propage pas au fil des itérations d'adaptation de maillage et reste limitée autant en valeur qu'en nombre de mailles concernées. +La stratégie retenue dans les algorithmes d'HOMARD consiste à forcer le découpage en quatre pour toutes les faces triangulaires ou quadrangulaires présentant deux points de non conformité. A la fin, les seuls triangles ou quadrangles présentant des points de non conformité sont des faces où une arête et une seule est découpée. La mise en conformité est +alors assurée par la solution la plus simple possible comme vu ci-avant. +Cette dernière étape de mise en conformité introduit des mailles dont la qualité peut être plus faible que celle +des mailles dont elles sont issues. Cet inconvénient est contrôlé car nous avons choisi de donner un statut temporaire +à ces mailles de mise en conformité : elles sont présentes pour produire un maillage acceptable par les logiciels +de calcul, mais disparaissent s'il y a besoin de les découper ultérieurement. +Ainsi, la modification de qualité ne se propage pas au fil des itérations d'adaptation de maillage et reste limitée autant en valeur qu'en nombre de mailles concernées. -L'algorithme général est donc le suivant : +L'algorithme général est donc le suivant : - * Transfert des indications de raffinement ou de déraffinement des mailles en décisions de découpage ou de regroupement d'arêtes, de triangles et de quadrangles. - * Suppression des mailles temporaires de mise en conformité. - * Par examen de tous les triangles et quadrangles du niveau de découpage le plus bas vers le niveau le plus haut, règlement des conflits sur le déraffinement au moyen des règles de base. - * Par examen de tous les triangles et quadrangles du niveau de découpage le plus haut vers le niveau le plus bas, règlement des conflits sur le raffinement au moyen des règles de base. - * Création effective du nouveau maillage : découpage standard, suivi de mise en conformité. + * Transfert des indications de raffinement ou de déraffinement des mailles en décisions de découpage ou de regroupement d'arêtes, de triangles et de quadrangles. + * Suppression des mailles temporaires de mise en conformité. + * Par examen de tous les triangles et quadrangles du niveau de découpage le plus bas vers le niveau le plus haut, règlement des conflits sur le déraffinement au moyen des règles de base. + * Par examen de tous les triangles et quadrangles du niveau de découpage le plus haut vers le niveau le plus bas, règlement des conflits sur le raffinement au moyen des règles de base. + * Création effective du nouveau maillage : découpage standard, suivi de mise en conformité. -Quelques illustrations de maillage adaptés +Quelques illustrations de maillage adaptés ****************************************** .. index:: single: illustration diff --git a/doc/fr/preferences.rst b/doc/fr/preferences.rst index 78d49e2a..e4a72bf2 100644 --- a/doc/fr/preferences.rst +++ b/doc/fr/preferences.rst @@ -1,17 +1,17 @@ .. _preferences: -Les préférences +Les préférences ############### -.. index:: single: préférences +.. index:: single: préférences -Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. +Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. La langue ********* -La langue choisie dans les préférences générales de SALOME est celle qui est utilisée dans les menus de l'interface graphique. +La langue choisie dans les préférences générales de SALOME est celle qui est utilisée dans les menus de l'interface graphique. -Si le français est retenu, les messages émis par HOMARD le sont en français. Dans tous les autres cas, ils sont en anglais. +Si le français est retenu, les messages émis par HOMARD le sont en français. Dans tous les autres cas, ils sont en anglais. Publication des maillages ************************* @@ -20,7 +20,7 @@ Publication des maillages .. image:: images/preferences_1.png :align: center -Par défaut, les maillages lus à la création d'un cas ou produits après une adaptation ne sont pas publiés dans SMESH. Ce choix est modifiable en cochant cette préférence. +Par défaut, les maillages lus à la création d'un cas ou produits après une adaptation ne sont pas publiés dans SMESH. Ce choix est modifiable en cochant cette préférence. diff --git a/doc/fr/regles.rst b/doc/fr/regles.rst index 3212e017..a0ac4e66 100644 --- a/doc/fr/regles.rst +++ b/doc/fr/regles.rst @@ -1,42 +1,42 @@ .. _regles: -Règles +Règles ###### -Quel que soit le mode d'utilisation retenu, des règles générales sont à suivre dans la constitution des données. Elles sont détaillées ici. +Quel que soit le mode d'utilisation retenu, des règles générales sont à suivre dans la constitution des données. Elles sont détaillées ici. Le maillage initial ******************* .. index:: single: maillage;initial -Le maillage comporte des noeuds, des mailles-points, des segments, des triangles, des quadrangles, des tétraèdres, des hexaèdres et/ou des pentaèdres. Il peut être de degré 1 ou 2. Il peut être en plusieurs morceaux, non connexe. -On peut tout à fait traiter des maillages qui mêlent des zones maillées en volume, et des zones maillées en surfaces. Ces zones peuvent être adjacentes ou non. -Au cours du processus de raffinement, il n'y a pas de régularisation du maillage. Il faut donc veiller à ce que le maillage initial soit le plus régulier possible. Un mauvais maillage initial produira de mauvais maillages découpés. En revanche, ce maillage initial peut être grossier. Il suffit qu'il respecte a minima les conditions initiales. -Enfin, il est souhaitable de posséder dès le départ une bonne représentation des frontières courbes. Le découpage des mailles de bord se faisant sur l'approximation de la frontière par le maillage initial, il n'y aura pas toujours un suivi très fin de courbes accentuées. Néanmoins, pour remédier à cela, un module spécifique de suivi de frontières 1D ou 2D est disponible. +Le maillage comporte des noeuds, des mailles-points, des segments, des triangles, des quadrangles, des tétraèdres, des hexaèdres et/ou des pentaèdres. Il peut être de degré 1 ou 2. Il peut être en plusieurs morceaux, non connexe. +On peut tout à fait traiter des maillages qui mêlent des zones maillées en volume, et des zones maillées en surfaces. Ces zones peuvent être adjacentes ou non. +Au cours du processus de raffinement, il n'y a pas de régularisation du maillage. Il faut donc veiller à ce que le maillage initial soit le plus régulier possible. Un mauvais maillage initial produira de mauvais maillages découpés. En revanche, ce maillage initial peut être grossier. Il suffit qu'il respecte a minima les conditions initiales. +Enfin, il est souhaitable de posséder dès le départ une bonne représentation des frontières courbes. Le découpage des mailles de bord se faisant sur l'approximation de la frontière par le maillage initial, il n'y aura pas toujours un suivi très fin de courbes accentuées. Néanmoins, pour remédier à cela, un module spécifique de suivi de frontières 1D ou 2D est disponible. Les conditions aux limites et les sources ***************************************** .. index:: single: conditions aux limites -La définition des endroits où s'appliquent des conditions aux limites ou des termes source doit être faite sur des entités de même dimension que le phénomène représenté. En clair, cela signifie qu'un chargement ponctuel sera défini sur un noeud. Dans un calcul 2D, la définition des comportements sur les bords se fera par des caractérisations des segments de bord et non pas par les noeuds de bords. De même en 3D, les comportements sur les parois externes du domaine à modéliser sont établis sur les triangles ou les quadrangles qui constituent ce bord. En procédant ainsi, on est sûr de propager correctement ces définitions au fil des raffinements de maillage. +La définition des endroits où s'appliquent des conditions aux limites ou des termes source doit être faite sur des entités de même dimension que le phénomène représenté. En clair, cela signifie qu'un chargement ponctuel sera défini sur un noeud. Dans un calcul 2D, la définition des comportements sur les bords se fera par des caractérisations des segments de bord et non pas par les noeuds de bords. De même en 3D, les comportements sur les parois externes du domaine à modéliser sont établis sur les triangles ou les quadrangles qui constituent ce bord. En procédant ainsi, on est sûr de propager correctement ces définitions au fil des raffinements de maillage. -Il ne faut surtout pas définir les conditions aux limites par les noeuds, sinon il est impossible de représenter correctement les frontières après adaptation. Cela va être démontré sur l'exemple suivant. +Il ne faut surtout pas définir les conditions aux limites par les noeuds, sinon il est impossible de représenter correctement les frontières après adaptation. Cela va être démontré sur l'exemple suivant. .. image:: ../images/cl_0.gif :align: center :width: 201 :height: 110 -On veut modéliser ici un cas de mécanique des fluides pour lequel un écoulement entre puis sort d'une cavité. Le modèle est bidimensionnel et, classiquement, on définit les conditions aux limites par des caractérisation des noeuds. Sur le zoom dessiné ci-dessous, on a les noeuds rouges pour la paroi et les noeuds bleus pour l'entrée, les noeuds noirs étant des noeuds libres. +On veut modéliser ici un cas de mécanique des fluides pour lequel un écoulement entre puis sort d'une cavité. Le modèle est bidimensionnel et, classiquement, on définit les conditions aux limites par des caractérisation des noeuds. Sur le zoom dessiné ci-dessous, on a les noeuds rouges pour la paroi et les noeuds bleus pour l'entrée, les noeuds noirs étant des noeuds libres. .. image:: ../images/cl_1.gif :align: center :width: 372 :height: 119 -S'il s'avère que le maillage a besoin de découpage autour de la zone d'entrée, il va y avoir création de nouveaux noeuds. Tout le problème va consister à savoir à quelle catégorie appartient un nouveau noeud situé entre un noeud de paroi ou un noeud d'entrée. Si, comme sur le schéma de gauche, on privilégie la paroi, tout va bien. En revanche si, comme sur le schéma de droite, on privilégie l'entrée, il y a un problème : cela revient à agrandir artificiellement l'entrée ... et donc à fausser le calcul ! +S'il s'avère que le maillage a besoin de découpage autour de la zone d'entrée, il va y avoir création de nouveaux noeuds. Tout le problème va consister à savoir à quelle catégorie appartient un nouveau noeud situé entre un noeud de paroi ou un noeud d'entrée. Si, comme sur le schéma de gauche, on privilégie la paroi, tout va bien. En revanche si, comme sur le schéma de droite, on privilégie l'entrée, il y a un problème : cela revient à agrandir artificiellement l'entrée ... et donc à fausser le calcul ! -|cl_2| Paroi ------------------------------ Entrée |cl_3| +|cl_2| Paroi ------------------------------ Entrée |cl_3| .. |cl_2| image:: ../images/cl_2.gif :align: middle @@ -49,58 +49,58 @@ S'il s'av :width: 244 :height: 128 -Gérer les priorités entre les informations devient très rapidement impossible : il faudrait établir des conventions uniques pour tous les logiciels de calcul associés à HOMARD et traiter une combinaison importante de possibilités. Qui plus est, en 3D, cette technique de gestion de priorités aboutit à des impasses. Essayez d'imaginer la mise à jour des caractérisations des noeuds issus du découpage des tétraèdres dans l'angle de ce domaine. Très rapidement, il devient impossible de trancher entre le bleu, le rouge ou le vert. +Gérer les priorités entre les informations devient très rapidement impossible : il faudrait établir des conventions uniques pour tous les logiciels de calcul associés à HOMARD et traiter une combinaison importante de possibilités. Qui plus est, en 3D, cette technique de gestion de priorités aboutit à des impasses. Essayez d'imaginer la mise à jour des caractérisations des noeuds issus du découpage des tétraèdres dans l'angle de ce domaine. Très rapidement, il devient impossible de trancher entre le bleu, le rouge ou le vert. .. image:: ../images/cl_4.gif :align: center :width: 470 :height: 201 -La seule solution viable consiste à définir les conditions aux limites sur les mailles de bord. Pour reprendre notre exemple 2D en mécanique des fluides, on donne les caractéristiques paroi ou entrée aux arêtes de bord. Dans le logiciel de calcul, le programme saura transférer très facilement des arêtes vers les sommets frontaliers. +La seule solution viable consiste à définir les conditions aux limites sur les mailles de bord. Pour reprendre notre exemple 2D en mécanique des fluides, on donne les caractéristiques paroi ou entrée aux arêtes de bord. Dans le logiciel de calcul, le programme saura transférer très facilement des arêtes vers les sommets frontaliers. .. image:: ../images/cl_5.gif :align: center :width: 372 :height: 119 -Si le raffinement du maillage a lieu comme précédemment, les nouvelles arêtes prennent la même caractérisation que celles dont elles sont issues : une arête de paroi découpée donne naissance à deux arêtes de paroi et une arête d'entrée découpée donne naissance à deux arêtes d'entrée. De ce fait, le logiciel de calcul n'a aucune difficulté à établir les bonnes informations sur les noeuds frontaliers. +Si le raffinement du maillage a lieu comme précédemment, les nouvelles arêtes prennent la même caractérisation que celles dont elles sont issues : une arête de paroi découpée donne naissance à deux arêtes de paroi et une arête d'entrée découpée donne naissance à deux arêtes d'entrée. De ce fait, le logiciel de calcul n'a aucune difficulté à établir les bonnes informations sur les noeuds frontaliers. .. image:: ../images/cl_6.gif :align: center :width: 244 :height: 129 -La stratégie d'adaptation +La stratégie d'adaptation ************************* -On a le choix entre plusieurs types de raffinement et de déraffinement : +On a le choix entre plusieurs types de raffinement et de déraffinement : - * en filtrant les indications d'erreur par des seuils prédéfinis : toutes les mailles qui portent une erreur supérieure à un seuil haut sont découpées et toutes celles pour lesquelles l'erreur est inférieure à un seuil bas sont déraffinées. Ensuite, d'autres découpages interviennent jusqu'à ce que le maillage soit conforme. - * en filtrant les indications d'erreur par des seuils dépendant de la répartition de l'erreur : toutes les mailles qui portent une erreur supérieure à un décalage par rapport à la moyenne sont raffinées. Ensuite, d'autres découpages interviennent jusqu'à ce que le maillage soit conforme. - * en filtrant avec des pourcentages de mailles : on découpe les x% de mailles à la plus forte erreur et on déraffine les y% à la plus faible erreur. - * en n'utilisant que la fonction de raffinement, avec filtrage par rapport à un seuil haut. - * inversement, en n'utilisant que la fonction de déraffinement, avec filtrage par rapport à un seuil bas. - * raffinement uniforme ; on ne tient compte d'aucun indicateur d'erreur et le maillage est découpé intégralement : chaque triangle est découpé en 4, chaque quadrangle est découpé en 4, chaque tétraèdre est découpé en 8, chaque pentaèdre est découpé en 8 et chaque hexaèdre est découpé en 8. Attention, le volume du maillage résultat peut être énorme ... + * en filtrant les indications d'erreur par des seuils prédéfinis : toutes les mailles qui portent une erreur supérieure à un seuil haut sont découpées et toutes celles pour lesquelles l'erreur est inférieure à un seuil bas sont déraffinées. Ensuite, d'autres découpages interviennent jusqu'à ce que le maillage soit conforme. + * en filtrant les indications d'erreur par des seuils dépendant de la répartition de l'erreur : toutes les mailles qui portent une erreur supérieure à un décalage par rapport à la moyenne sont raffinées. Ensuite, d'autres découpages interviennent jusqu'à ce que le maillage soit conforme. + * en filtrant avec des pourcentages de mailles : on découpe les x% de mailles à la plus forte erreur et on déraffine les y% à la plus faible erreur. + * en n'utilisant que la fonction de raffinement, avec filtrage par rapport à un seuil haut. + * inversement, en n'utilisant que la fonction de déraffinement, avec filtrage par rapport à un seuil bas. + * raffinement uniforme ; on ne tient compte d'aucun indicateur d'erreur et le maillage est découpé intégralement : chaque triangle est découpé en 4, chaque quadrangle est découpé en 4, chaque tétraèdre est découpé en 8, chaque pentaèdre est découpé en 8 et chaque hexaèdre est découpé en 8. Attention, le volume du maillage résultat peut être énorme ... L'indicateur d'erreur ********************* .. index:: single: indicateur d'erreur -La plupart du temps, l'indicateur d'erreur est un champ de valeurs réelles définis par maille. C'est un des résultats du logiciel de calcul. La sélection des mailles à découper se fait par comparaison de la valeur de l'indicateur et d'un seuil donné. -Par rapport à ce standard, HOMARD accepte deux extensions : un indicateur d'erreur exprimé par noeud et/ou un indicateur d'erreur sous forme entière. Quand l'indicateur est fourni par noeud, HOMARD attribue à chaque maille la plus grande valeur d'erreur trouvée sur les noeuds de la maille. Quand l'indicateur est sous forme entière, la convention retenue est que 1 correspond à une demande de raffinement, -1 correspond à une demande de déraffinement et 0 correspond à ne rien faire. -On n'est pas obligé de fournir une valeur sur chaque maille : si des mailles ne sont associées à aucune valeur, HOMARD leur attribuera une décision par défaut selon les préférences retenues. +La plupart du temps, l'indicateur d'erreur est un champ de valeurs réelles définis par maille. C'est un des résultats du logiciel de calcul. La sélection des mailles à découper se fait par comparaison de la valeur de l'indicateur et d'un seuil donné. +Par rapport à ce standard, HOMARD accepte deux extensions : un indicateur d'erreur exprimé par noeud et/ou un indicateur d'erreur sous forme entière. Quand l'indicateur est fourni par noeud, HOMARD attribue à chaque maille la plus grande valeur d'erreur trouvée sur les noeuds de la maille. Quand l'indicateur est sous forme entière, la convention retenue est que 1 correspond à une demande de raffinement, -1 correspond à une demande de déraffinement et 0 correspond à ne rien faire. +On n'est pas obligé de fournir une valeur sur chaque maille : si des mailles ne sont associées à aucune valeur, HOMARD leur attribuera une décision par défaut selon les préférences retenues. L'interpolation des champs ************************** .. index:: single: interpolation .. index:: single: champ -HOMARD sait mettre à jour des champs exprimés sur le maillage. Deux cas de figure sont possibles : +HOMARD sait mettre à jour des champs exprimés sur le maillage. Deux cas de figure sont possibles : - * Si le champ se présente sous la forme d'un champ aux noeuds, HOMARD produira un nouveau champ aux noeuds avec la méthode suivante. Pour un noeud présent dans les deux maillages, avant et après adaptation, la valeur du champ est gardée telle quelle. Pour un nouveau noeud, la valeur du champ est obtenue en fonction des valeurs sur les noeuds les plus proches par interpolation P1, P2 ou iso-P2 selon le degré du maillage et le choix retenu. - * Si le champ se présente sous la forme d'un champ constant par maille, HOMARD produira un nouveau champ constant par maille. La méthode dépend du caractère du champ : intensif, comme une masse volumique, ou extensif, comme une masse. Pour une maille présente dans les deux maillages, avant et après adaptation, la valeur du champ est gardée telle quelle. Pour une maille issue d'un découpage, la valeur du champ est celle du champ sur la maille mère pour le cas intensif ; c'est la valeur du champ proportionnelle aux volumes des mailles mère et fille pour le cas extensif. Pour une maille issue d'un regroupement après déraffinement, la valeur du champ est la moyenne des valeurs du champ sur les anciennes mailles filles pour le cas intensif ; c'est la somme des valeurs du champ sur les anciennes mailles filles pour le cas extensif. + * Si le champ se présente sous la forme d'un champ aux noeuds, HOMARD produira un nouveau champ aux noeuds avec la méthode suivante. Pour un noeud présent dans les deux maillages, avant et après adaptation, la valeur du champ est gardée telle quelle. Pour un nouveau noeud, la valeur du champ est obtenue en fonction des valeurs sur les noeuds les plus proches par interpolation P1, P2 ou iso-P2 selon le degré du maillage et le choix retenu. + * Si le champ se présente sous la forme d'un champ constant par maille, HOMARD produira un nouveau champ constant par maille. La méthode dépend du caractère du champ : intensif, comme une masse volumique, ou extensif, comme une masse. Pour une maille présente dans les deux maillages, avant et après adaptation, la valeur du champ est gardée telle quelle. Pour une maille issue d'un découpage, la valeur du champ est celle du champ sur la maille mère pour le cas intensif ; c'est la valeur du champ proportionnelle aux volumes des mailles mère et fille pour le cas extensif. Pour une maille issue d'un regroupement après déraffinement, la valeur du champ est la moyenne des valeurs du champ sur les anciennes mailles filles pour le cas intensif ; c'est la somme des valeurs du champ sur les anciennes mailles filles pour le cas extensif. -Ces techniques de mise à jour sont basées sur des champs scalaires. Si un champ vectoriel est transmis à HOMARD par les fichiers MED, chaque composante sera traitée comme un scalaire indépendant. Ensuite, le nouveau vecteur est reconstruit en rassemblant toutes ses composantes. +Ces techniques de mise à jour sont basées sur des champs scalaires. Si un champ vectoriel est transmis à HOMARD par les fichiers MED, chaque composante sera traitée comme un scalaire indépendant. Ensuite, le nouveau vecteur est reconstruit en rassemblant toutes ses composantes. diff --git a/doc/fr/tui_create_boundary.rst b/doc/fr/tui_create_boundary.rst index de94f042..fcdb8241 100644 --- a/doc/fr/tui_create_boundary.rst +++ b/doc/fr/tui_create_boundary.rst @@ -1,84 +1,84 @@ .. _tui_create_boundary: -La frontière +La frontière ############ .. index:: single: boundary -.. index:: single: frontière +.. index:: single: frontière .. index:: single: cylindre .. index:: single: sphere -Les variables sont décrites dans :ref:`gui_create_boundary`. +Les variables sont décrites dans :ref:`gui_create_boundary`. -Méthodes de la classe homard +Méthodes de la classe homard **************************** -Ces méthodes retournent une instance de la classe boundary. +Ces méthodes retournent une instance de la classe boundary. +----------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundaryDi | | | | **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** | -| Retourne une instance de la classe ``boundary`` de type discret après sa création | +| Retourne une instance de la classe ``boundary`` de type discret après sa création | | | -| - ``boundary_name`` : le nom de la frontière discrète | -| - ``mesh_name`` : le nom du maillage de la frontière | +| - ``boundary_name`` : le nom de la frontière discrète | +| - ``mesh_name`` : le nom du maillage de la frontière | | - ``mesh_file`` : le nom du fichier contenant ce maillage | +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundaryCylinder | | | | **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** | | Retourne une instance de la classe ``boundary`` analytique de type cylindrique | -| après sa création | +| après sa création | | | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cylindre | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées d'un point sur l'axe du cylindre | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cylindre | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées d'un point sur l'axe du cylindre | | - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | | - ``R`` : rayon du cylindre | +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundarySphere | | | | **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** | -| Retourne une instance de la classe ``boundary`` analytique de type sphérique | -| après sa création | +| Retourne une instance de la classe ``boundary`` analytique de type sphérique | +| après sa création | | | -| - ``boundary_name`` : le nom de la frontière analytique basée sur une sphere | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | -| - ``R`` : rayon de la sphère | +| - ``boundary_name`` : le nom de la frontière analytique basée sur une sphere | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | +| - ``R`` : rayon de la sphère | +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundaryConeA | | | | **CreateBoundaryConeA(boundary_name, Xaxe, Yaxe, Zaxe, Angle, Xcen, Ycen, Zcen)** | | Retourne une instance de la classe ``boundary`` analytique de type conique | -| après sa création | +| après sa création | | | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | -| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe (non nécessairement normé) | -| - ``Angle`` : angle d'ouverture du cône en degre (entre 0 et 90) | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du cône | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | +| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe (non nécessairement normé) | +| - ``Angle`` : angle d'ouverture du cône en degre (entre 0 et 90) | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du cône | +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundaryConeR | | | | **CreateBoundaryConeR(boundary_name, Xc1, Yc1, Zc1, R1, Xc2, Yc2, Zc2, R2)** | | Retourne une instance de la classe ``boundary`` analytique de type conique | -| après sa création | +| après sa création | | | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | -| - ``Xc1``, ``Yc1``, ``Zc1`` : coordonnées du premier centre du cône | -| - ``R1`` : rayon du cône à la hauteur du premier centre | -| - ``Xc2``, ``Yc2``, ``Zc2`` : coordonnées du second centre du cône | -| - ``R2`` : rayon du cône à la hauteur du second centre | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | +| - ``Xc1``, ``Yc1``, ``Zc1`` : coordonnées du premier centre du cône | +| - ``R1`` : rayon du cône à la hauteur du premier centre | +| - ``Xc2``, ``Yc2``, ``Zc2`` : coordonnées du second centre du cône | +| - ``R2`` : rayon du cône à la hauteur du second centre | +----------------------------------------------------------------------------------------+ | .. module:: CreateBoundaryTorus | | | | **CreateBoundaryTorus(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, RRev, RPri)** | | Retourne une instance de la classe ``boundary`` analytique de type torique | -| après sa création | +| après sa création | | | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un tore | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du tore | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un tore | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du tore | | - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | -| - ``RRev`` : rayon de révolution du tore | +| - ``RRev`` : rayon de révolution du tore | | - ``RPri`` : rayon primaire du tore | +----------------------------------------------------------------------------------------+ @@ -90,44 +90,44 @@ Ces m | Retourne l'instance de la classe ``boundary`` connue par | | son nom | | | -| - ``boundary_name`` : le nom de la frontière | +| - ``boundary_name`` : le nom de la frontière | +---------------------------------------------------------------+ | .. module:: GetAllBoundarysName | | | | **GetAllBoundarysName()** | -| Retourne la liste des noms de toutes les frontières | +| Retourne la liste des noms de toutes les frontières | | existantes | | | +---------------------------------------------------------------+ -Méthodes de la classe cas +Méthodes de la classe cas ************************* -Voir également dans :ref:`tui_create_case`. +Voir également dans :ref:`tui_create_case`. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: AddBoundaryGroup | | | | **AddBoundaryGroup(boundary, group)** | -| Ajoute une frontière à la définition du cas | +| Ajoute une frontière à la définition du cas | | | -| - ``boundary`` : nom d'une frontière courbe à suivre | +| - ``boundary`` : nom d'une frontière courbe à suivre | | | -| Pour une frontière discrète : | +| Pour une frontière discrète : | | | | . si toutes les lignes courbes sont suivies, le second | -| argument est une chaîne vide. | +| argument est une chaîne vide. | | | | . si seulement certaines lignes courbes sont suivies, | -| ``group`` est le nom d'un groupe de segments à suivre. | +| ``group`` est le nom d'un groupe de segments à suivre. | | | -| Pour une frontière analytique : | +| Pour une frontière analytique : | | | -| - ``group`` : nom d'un groupe de faces placées sur la | -| frontière | +| - ``group`` : nom d'un groupe de faces placées sur la | +| frontière | +---------------------------------------------------------------+ -Méthodes de la classe boundary +Méthodes de la classe boundary ****************************** +---------------------------------------------------------------+ @@ -135,43 +135,43 @@ M | .. module:: GetName | | | | **GetName()** | -| Retourne le nom de la frontière | +| Retourne le nom de la frontière | +---------------------------------------------------------------+ | .. module:: GetType | | | | **GetType()** | -| Retourne le type de la frontière : | +| Retourne le type de la frontière : | | | -| * 0 : discrète | +| * 0 : discrète | | * 1 : cylindre | -| * 2 : sphère | -| * 3 : cône défini par un axe et un angle | -| * 4 : cône défini par deux rayons | +| * 2 : sphère | +| * 3 : cône défini par un axe et un angle | +| * 4 : cône défini par deux rayons | | * 5 : tore | +---------------------------------------------------------------+ | .. module:: GetCoords | | | | **GetCoords()** | -| Retourne un tableau contenant les coordonnées de la | -| frontière dans l'ordre d'entrée dans le CreateBoundaryXXXX| -| associé | +| Retourne un tableau contenant les coordonnées de la | +| frontière dans l'ordre d'entrée dans le CreateBoundaryXXXX| +| associé | +---------------------------------------------------------------+ | .. module:: Delete | | | | **Delete()** | -| Detruit la frontière. | -| Pour une frontière discrète, le fichier du maillage | -| associé est conservé. | +| Detruit la frontière. | +| Pour une frontière discrète, le fichier du maillage | +| associé est conservé. | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ Exemple ******* -Création d'une frontière discrète, d'une frontière sphèrique, puis d'une frontière cylindrique : :: +Création d'une frontière discrète, d'une frontière sphèrique, puis d'une frontière cylindrique : :: inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med') fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5) diff --git a/doc/fr/tui_create_case.rst b/doc/fr/tui_create_case.rst index bc7efc36..734646c9 100644 --- a/doc/fr/tui_create_case.rst +++ b/doc/fr/tui_create_case.rst @@ -3,15 +3,15 @@ Le cas ###### .. index:: single: cas -.. index:: single: type de conformité +.. index:: single: type de conformité .. index:: single: maillage;initial -Les variables sont décrites dans :ref:`gui_create_case`. +Les variables sont décrites dans :ref:`gui_create_case`. -Méthodes de la classe homard +Méthodes de la classe homard **************************** -Création d'un cas +Création d'un cas ================= +---------------------------------------------------------------+ @@ -19,17 +19,17 @@ Cr | .. module:: CreateCase | | | | **CreateCase(case_name, mesh_name, mesh_file)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | +| Retourne une instance de la classe ``cas`` après sa | +| création | | | | - ``case_name`` : le nom du cas | | - ``mesh_name`` : le nom du maillage initial | | - ``mesh_file`` : le nom du fichier MED contenant ce | | ce maillage | | | -| Par défaut : | +| Par défaut : | | | -| * le répertoire des résultats est ``/tmp`` | +| * le répertoire des résultats est ``/tmp`` | | * l'adaptation est conforme | +---------------------------------------------------------------+ | .. module:: GetCase | @@ -47,7 +47,7 @@ Cr | | +---------------------------------------------------------------+ -Création d'un cas par poursuite d'une itération calculée +Création d'un cas par poursuite d'une itération calculée ======================================================== +---------------------------------------------------------------+ @@ -55,41 +55,41 @@ Cr | .. module:: CreateCaseFromIteration | | | | **CreateCaseFromIteration(case_name, dir_name)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | +| Retourne une instance de la classe ``cas`` après sa | +| création | | | | - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| l'itération à poursuivre | +| - ``dir_name`` : le nom du répertoire contenant | +| l'itération à poursuivre | | | +---------------------------------------------------------------+ | .. module:: CreateCaseFromCaseLastIteration | | | | **CreateCaseFromCaseLastIteration(case_name, dir_name)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | +| Retourne une instance de la classe ``cas`` après sa | +| création | | | | - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| le cas à poursuivre | +| - ``dir_name`` : le nom du répertoire contenant | +| le cas à poursuivre | | | +---------------------------------------------------------------+ | .. module:: CreateCaseFromCaseIteration | | | | **CreateCaseFromCaseIteration(case_name, dir_name, number)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | +| Retourne une instance de la classe ``cas`` après sa | +| création | | | | - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| le cas à poursuivre | -| - ``number`` : le numéro de l'itération du cas | +| - ``dir_name`` : le nom du répertoire contenant | +| le cas à poursuivre | +| - ``number`` : le numéro de l'itération du cas | | | +---------------------------------------------------------------+ -Méthodes de la classe cas +Méthodes de la classe cas ************************* .. index:: single: YACS @@ -103,23 +103,23 @@ M | .. module:: SetDirName | | | | **SetDirName(dirname)** | -| Affecte le répertoire des résutats associé au cas. Cela ne| -| peut se faire qu'après la création du cas et avant le | +| Affecte le répertoire des résutats associé au cas. Cela ne| +| peut se faire qu'après la création du cas et avant le | | premier calcul. | | | -| - ``dirname`` : le nom du répertoire des résutats | +| - ``dirname`` : le nom du répertoire des résutats | +---------------------------------------------------------------+ | .. module:: GetDirName | | | | **GetDirName()** | -| Retourne le nom du répertoire des résutats associé au cas | +| Retourne le nom du répertoire des résutats associé au cas | +---------------------------------------------------------------+ | .. module:: SetConfType | | | | **SetConfType(conf_type)** | -| Définit le mode de conformité associé au cas | +| Définit le mode de conformité associé au cas | | | -| - ``conf_type`` : entier précisant le mode de conformité | +| - ``conf_type`` : entier précisant le mode de conformité | | | | * 1 : conforme | | * 2 : non conforme avec 1 noeud par maille | @@ -129,75 +129,75 @@ M | .. module:: GetConfType | | | | **GetConfType()** | -| Retourne le type de conformité | +| Retourne le type de conformité | +---------------------------------------------------------------+ | .. module:: GetIter0 | | | | **GetIter0()** | -| Retourne l'itération associée au maillage initial. | -| Cette itération est créée automatiquement par le module | -| HOMARD et est utilisée pour enchaîner les adaptations. | -| Elle correspond à un maillage initial ou à une itération | -| de poursuite d'un cas précédent. | +| Retourne l'itération associée au maillage initial. | +| Cette itération est créée automatiquement par le module | +| HOMARD et est utilisée pour enchaîner les adaptations. | +| Elle correspond à un maillage initial ou à une itération | +| de poursuite d'un cas précédent. | +---------------------------------------------------------------+ | .. module:: AddBoundaryGroup | | | | **AddBoundaryGroup(boundary, group)** | -| Ajoute une frontière à la définition du cas | +| Ajoute une frontière à la définition du cas | | | -| - ``boundary`` : nom d'une frontière courbe à suivre | +| - ``boundary`` : nom d'une frontière courbe à suivre | | | -| Pour une frontière discrète : | +| Pour une frontière discrète : | | | | . si toutes les lignes courbes sont suivies, le second | -| argument est une chaîne vide. | +| argument est une chaîne vide. | | . si seulement certaines lignes courbes sont suivies, | -| ``group`` est le nom d'un groupe de segments à suivre. | +| ``group`` est le nom d'un groupe de segments à suivre. | | | -| Pour une frontière analytique : | +| Pour une frontière analytique : | | | -| - ``group`` : nom d'un groupe de faces placées sur la | -| frontière | +| - ``group`` : nom d'un groupe de faces placées sur la | +| frontière | +---------------------------------------------------------------+ | .. module:: Delete | | | | **Delete(option)** | -| Detruit le cas et toutes les itérations associées. Le | -| fichier du maillage initial associé est conservé. | +| Detruit le cas et toutes les itérations associées. Le | +| fichier du maillage initial associé est conservé. | | | -| - ``option`` : un entier précisant ce qui est fait des | -| fichiers de maillage associés | +| - ``option`` : un entier précisant ce qui est fait des | +| fichiers de maillage associés | | | -| * 0 : les fichiers sont conservés | -| * 1 : les fichiers sont supprimés | +| * 0 : les fichiers sont conservés | +| * 1 : les fichiers sont supprimés | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ | .. module:: GetState | | | | **GetState()** | -| Retourne l'état du cas : | -| * 0 : correspond à un maillage initial | -| * autre valeur : poursuite d'une itération de numéro n| +| Retourne l'état du cas : | +| * 0 : correspond à un maillage initial | +| * autre valeur : poursuite d'une itération de numéro n| +---------------------------------------------------------------+ | .. module:: CreateYACSSchema | | | | **CreateYACSSchema(yacs_name, ScriptFile, DirName, MeshFile)**| -| Retourne une instance de la classe ``yacs`` après sa | -| création | +| Retourne une instance de la classe ``yacs`` après sa | +| création | | | -| - ``yacs_name`` : le nom du schéma | +| - ``yacs_name`` : le nom du schéma | | - ``ScriptFile`` : le fichier du script python qui permet | -| de lancer le calcul à coupler avec l'adaptation de | +| de lancer le calcul à coupler avec l'adaptation de | | maillage | -| - ``DirName`` : le répertoire où a lieu le calcul | +| - ``DirName`` : le répertoire où a lieu le calcul | | - ``MeshFile`` : le fichier MED contenant le tout premier | | maillage de calcul | +---------------------------------------------------------------+ -Les options avancées +Les options avancées ==================== +---------------------------------------------------------------+ @@ -205,19 +205,19 @@ Les options avanc | .. module:: SetPyram | | | | **SetPyram(option)** | -| Définit le statut des pyramides pour le cas | +| Définit le statut des pyramides pour le cas | | | -| - ``option`` : entier précisant le statut des pyramides | -| éventuellement présentes dans le maillage initial | +| - ``option`` : entier précisant le statut des pyramides | +| éventuellement présentes dans le maillage initial | | | -| * 0 : pyramides refusées (défaut) | -| * 1 : pyramides autorisées | +| * 0 : pyramides refusées (défaut) | +| * 1 : pyramides autorisées | +---------------------------------------------------------------+ | .. module:: GetPyram | | | | **GetPyram()** | -| Retourne le statut accordé aux pyramides éventuellement | -| présentes dans le maillage initial | +| Retourne le statut accordé aux pyramides éventuellement | +| présentes dans le maillage initial | +---------------------------------------------------------------+ Informations sur le maillage initial @@ -229,22 +229,22 @@ Informations sur le maillage initial | | | **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | | Donne des informations sur le maillage. Pour chaque | -| option, le choix 0 correspond à ne rien faire, alors que | +| option, le choix 0 correspond à ne rien faire, alors que | | le choix 1 active l'option. | | | -| - ``Qual`` : qualité des mailles | -| - ``Diam`` : diamètre des mailles | -| - ``Conn`` : connexité du domaine ; en un seul morceau, | +| - ``Qual`` : qualité des mailles | +| - ``Diam`` : diamètre des mailles | +| - ``Conn`` : connexité du domaine ; en un seul morceau, | | combien de trous, etc. | | - ``Tail`` : tailles des constituants du domaine, groupe | | par groupe | -| - ``Inte`` : interpénétration des mailles, par dimension | +| - ``Inte`` : interpénétration des mailles, par dimension | +---------------------------------------------------------------+ Exemple ******* -La création de l'objet case_1 se fait ainsi : :: +La création de l'objet case_1 se fait ainsi : :: case_name = "CAS_1" mesh_name = "MAILL" diff --git a/doc/fr/tui_create_hypothese.rst b/doc/fr/tui_create_hypothese.rst index 6a33a38b..2b32dce3 100644 --- a/doc/fr/tui_create_hypothese.rst +++ b/doc/fr/tui_create_hypothese.rst @@ -1,15 +1,15 @@ .. _tui_create_hypothese: -L'hypothèse +L'hypothèse ########### -.. index:: single: itération -.. index:: single: hypothèse +.. index:: single: itération +.. index:: single: hypothèse .. index:: single: zone -Les variables sont décrites dans :ref:`gui_create_hypothese`. +Les variables sont décrites dans :ref:`gui_create_hypothese`. -Méthodes de la classe homard +Méthodes de la classe homard **************************** +---------------------------------------------------------------+ @@ -19,7 +19,7 @@ M | **CreateHypothesis(hypo_name)** | | Retourne une instance de la classe ``hypothese`` | | | -| - ``hypo_name`` : le nom de l'hypothèse | +| - ``hypo_name`` : le nom de l'hypothèse | +---------------------------------------------------------------+ | .. module:: GetHypothesis | | | @@ -27,12 +27,12 @@ M | Retourne l'instance de la classe ``hypothese`` connue par | | son nom | | | -| - ``hypo_name`` : le nom de l'hypothèse | +| - ``hypo_name`` : le nom de l'hypothèse | +---------------------------------------------------------------+ | .. module:: GetAllHypothesesName | | | | **GetAllHypothesesName()** | -| Retourne la liste des noms de toutes les hypothèses créées| +| Retourne la liste des noms de toutes les hypothèses créées| +---------------------------------------------------------------+ | .. module:: GetZone | | | @@ -43,10 +43,10 @@ M | - ``zone_name`` : le nom de la zone | +---------------------------------------------------------------+ -Méthodes de la classe hypothese +Méthodes de la classe hypothese ******************************* -Généralités +Généralités =========== +---------------------------------------------------------------+ @@ -54,7 +54,7 @@ G | .. module:: GetName | | | | **GetName()** | -| Retourne le nom de l'hypothèse | +| Retourne le nom de l'hypothèse | +---------------------------------------------------------------+ | .. module:: GetAdapType | | | @@ -76,7 +76,7 @@ G | .. module:: GetUnRefType | | | | **GetUnRefType()** | -| Retourne le type de déraffinement | +| Retourne le type de déraffinement | | | | * 0 : inactif | | * 1 : actif | @@ -84,11 +84,11 @@ G | .. module:: Delete | | | | **Delete()** | -| Detruit l'hypothèse | +| Detruit l'hypothèse | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ Adaptation uniforme @@ -99,12 +99,12 @@ Adaptation uniforme | .. module:: SetUnifRefinUnRef | | | | **SetUnifRefinUnRef(RefinUnRef)** | -| Définit un mode d'adaptation uniforme à tout le maillage | +| Définit un mode d'adaptation uniforme à tout le maillage | | | -| - ``RefinUnRef`` : entier précisant le type d'adaptation | +| - ``RefinUnRef`` : entier précisant le type d'adaptation | | | | * 1 : raffinement | -| * -1 : déraffinement | +| * -1 : déraffinement | +---------------------------------------------------------------+ Adaptation selon un champ @@ -118,7 +118,7 @@ Le champ de pilotage de l'adaptation et les seuils | .. module:: SetField | | | | **SetField(FieldName)** | -| Attribue un nom de champ de pilotage à l'hypothèse | +| Attribue un nom de champ de pilotage à l'hypothèse | | | | - ``FieldName`` : le nom du champ de pilotage | +---------------------------------------------------------------+ @@ -132,26 +132,26 @@ Le champ de pilotage de l'adaptation et les seuils | **SetUseField(use_field)** | | Attribue un mode d'usage du champ de pilotage | | | -| - ``use_field`` : entier précisant l'usage du champ | +| - ``use_field`` : entier précisant l'usage du champ | | | -| * 0 : valeur par élément (défaut) | -| * 1 : saut entre un élément et ses voisins | +| * 0 : valeur par élément (défaut) | +| * 1 : saut entre un élément et ses voisins | +---------------------------------------------------------------+ | .. module:: SetRefinThr | | | | **SetRefinThr(type_thres, threshold)** | -| Définit les seuils en raffinement | +| Définit les seuils en raffinement | | | -| - ``type_thres`` : entier précisant le type de seuil en | +| - ``type_thres`` : entier précisant le type de seuil en | | raffinement | | | | * 1 : valeur absolue | | * 2 : valeur relative en % | | * 3 : fraction des mailles en % | -| * 4 : moyenne + n fois l'écart-type | +| * 4 : moyenne + n fois l'écart-type | | | -| - ``threshold`` : valeur numérique entrant dans la | -| définition du seuil | +| - ``threshold`` : valeur numérique entrant dans la | +| définition du seuil | +---------------------------------------------------------------+ | .. module:: GetRefinThrType | | | @@ -161,22 +161,22 @@ Le champ de pilotage de l'adaptation et les seuils | .. module:: SetUnRefThr | | | | **SetUnRefThr(type_thres, threshold)** | -| Définit les seuils en déraffinement | +| Définit les seuils en déraffinement | | | -| - ``type_thres`` : entier précisant le type de seuil en | -| déraffinement | +| - ``type_thres`` : entier précisant le type de seuil en | +| déraffinement | | | | * 1 : valeur absolue | | * 2 : valeur relative en % | | * 3 : fraction des mailles en % | -| * 4 : moyenne - n fois l'écart-type | +| * 4 : moyenne - n fois l'écart-type | | | | - ``threshold`` : valeur du seuil | +---------------------------------------------------------------+ | .. module:: GetUnRefThrType | | | | **GetUnRefThrType()** | -| Retourne le type de seuil de déraffinement | +| Retourne le type de seuil de déraffinement | +---------------------------------------------------------------+ @@ -188,41 +188,41 @@ Les composantes du champ de pilotage | .. module:: AddComp | | | | **AddComp(comp_name)** | -| Ajoute une composante du champ de pilotage à considérer | +| Ajoute une composante du champ de pilotage à considérer | | | -| - ``comp_name`` : nom d'une composante à prendre en | +| - ``comp_name`` : nom d'une composante à prendre en | | compte | | | -| Remarque : si cette méthode n'est pas appelée, par défaut | +| Remarque : si cette méthode n'est pas appelée, par défaut | | toutes les composantes seront retenues. | +---------------------------------------------------------------+ | .. module:: SetUseComp | | | | **SetUseComp(use_comp)** | -| Définit l'usage des composantes | +| Définit l'usage des composantes | | | -| - ``use_comp`` : entier précisant l'usage des composantes | +| - ``use_comp`` : entier précisant l'usage des composantes | | | -| * 0 : norme L2 (défaut) | +| * 0 : norme L2 (défaut) | | * 1 : norme infinie | | * 2 : valeur relative, si une seule composante | +---------------------------------------------------------------+ | .. module:: GetComps | | | | **GetComps()** | -| Retourne la liste des composantes utilisées | +| Retourne la liste des composantes utilisées | +---------------------------------------------------------------+ | .. module:: SupprComp | | | | **SupprComp(comp_name)** | -| Supprime une composante du champ à considérer | +| Supprime une composante du champ à considérer | | | -| - ``comp_name`` : nom de la composante à supprimer | +| - ``comp_name`` : nom de la composante à supprimer | +---------------------------------------------------------------+ | .. module:: SupprComps | | | | **SupprComps()** | -| Supprime toutes les composantes du champ à considérer | +| Supprime toutes les composantes du champ à considérer | +---------------------------------------------------------------+ @@ -235,33 +235,33 @@ Adaptation selon des zones | | | **AddZone(zone_name, type_use)** | | | -| - ``zone_name`` : le nom de la zone à ajouter | -| - ``type_use`` : entier précisant l'usage de la zone | +| - ``zone_name`` : le nom de la zone à ajouter | +| - ``type_use`` : entier précisant l'usage de la zone | | | | * 1 : raffinement | -| * -1 : déraffinement | +| * -1 : déraffinement | +---------------------------------------------------------------+ | .. module:: GetZones | | | | **GetZones()** | -| Retourne la liste des zones utilisées avec leur usage. | +| Retourne la liste des zones utilisées avec leur usage. | | | -| Attention : l'usage est stocké sous forme de chaîne de | -| caractères et non pas d'entier dans la liste. | +| Attention : l'usage est stocké sous forme de chaîne de | +| caractères et non pas d'entier dans la liste. | | | | Exemple : ['Zone_A', '1', 'Zone_B', '1', 'Zone_C', '1'] | +---------------------------------------------------------------+ | .. module:: SupprZone | | | | **SupprZone(zone_name)** | -| Supprime une zone de l'hypothèse | +| Supprime une zone de l'hypothèse | | | -| - ``zone_name`` : nom de la zone à supprimer | +| - ``zone_name`` : nom de la zone à supprimer | +---------------------------------------------------------------+ | .. module:: SupprZones | | | | **SupprZones()** | -| Supprime toutes les zones de l'hypothèse | +| Supprime toutes les zones de l'hypothèse | +---------------------------------------------------------------+ @@ -275,16 +275,16 @@ Le filtrage par les groupes | **AddGroup(group_name)** | | Ajoute un groupe au filtrage | | | -| - ``group_name`` : nom du groupe à prendre en compte | +| - ``group_name`` : nom du groupe à prendre en compte | +---------------------------------------------------------------+ | .. module:: GetGroups | | | | **GetGroups()** | -| Retourne la liste des groupes utilisés pour le filtrage | +| Retourne la liste des groupes utilisés pour le filtrage | +---------------------------------------------------------------+ -Les champs à interpoler +Les champs à interpoler ======================= +---------------------------------------------------------------+ @@ -293,26 +293,26 @@ Les champs | | | **SetTypeFieldInterp(typefieldinterp)** | | | -| - ``typefieldinterp`` : entier précisant si des champs | +| - ``typefieldinterp`` : entier précisant si des champs | | sont a interpoler | | | -| * 0 : aucun champ n'est à interpoler (défaut) | -| * 1 : tous les champs sont interpolés | -| * 2 : certains champs sont interpolés ; implicitement | -| affecté après usage de AddFieldInterp ou | +| * 0 : aucun champ n'est à interpoler (défaut) | +| * 1 : tous les champs sont interpolés | +| * 2 : certains champs sont interpolés ; implicitement | +| affecté après usage de AddFieldInterp ou | | AddFieldInterpType | +---------------------------------------------------------------+ | .. module:: GetTypeFieldInterp | | | | **GetTypeFieldInterp()** | -| Retourne l'entier précisant si des champs sont à | +| Retourne l'entier précisant si des champs sont à | | interpoler | +---------------------------------------------------------------+ | .. module:: AddFieldInterp | | | | **AddFieldInterp(FieldName)** | | | -| - ``FieldName`` : le nom du champ à interpoler | +| - ``FieldName`` : le nom du champ à interpoler | | | | Le mode d'interpolation sera choisi automatiquement par | | HOMARD ; cela correspond au mode 0 de AddFieldInterpType | @@ -321,52 +321,52 @@ Les champs | | | **AddFieldInterpType(FieldName, type_interp)** | | | -| - ``FieldName`` : le nom du champ à interpoler | -| - ``type_interp`` : entier précisant le type | +| - ``FieldName`` : le nom du champ à interpoler | +| - ``type_interp`` : entier précisant le type | | d'interpolation du champ | | | | Pour un champ aux noeuds : | | | -| * 0 : le champ sera interpolé en degré 1 ou 2 selon | +| * 0 : le champ sera interpolé en degré 1 ou 2 selon | | son support. | -| * 1 : interpolation en degré 1 | -| * 2 : interpolation en degré 2 | +| * 1 : interpolation en degré 1 | +| * 2 : interpolation en degré 2 | | * 3 : interpolation iso-P2 | | | -| Pour un champ aux éléments : | +| Pour un champ aux éléments : | | | -| * 0 : le champ sera interpolé en le considérant comme | +| * 0 : le champ sera interpolé en le considérant comme | | une variable intensive. | -| * 1 : le champ sera interpolé en le considérant comme | +| * 1 : le champ sera interpolé en le considérant comme | | une variable extensive. | +---------------------------------------------------------------+ | .. module:: GetFieldInterps | | | | **GetFieldInterps()** | -| Retourne la liste des champs à interoler avec leur usage. | +| Retourne la liste des champs à interoler avec leur usage. | | | -| Attention : l'usage est stocké sous forme de chaîne de | -| caractères et non pas d'entier dans la liste. | +| Attention : l'usage est stocké sous forme de chaîne de | +| caractères et non pas d'entier dans la liste. | | | | Exemple : ['DEPL', '0', 'Masse', '1', 'Densite', '0'] | +---------------------------------------------------------------+ | .. module:: SupprFieldInterp | | | | **SupprFieldInterp(FieldName)** | -| Supprime un champ à interpoler de l'hypothèse | +| Supprime un champ à interpoler de l'hypothèse | | | -| - ``FieldName`` : nom du champ à supprimer | +| - ``FieldName`` : nom du champ à supprimer | +---------------------------------------------------------------+ | .. module:: SupprFieldInterps | | | | **SupprFieldInterps()** | -| Supprime tous les champs à interpoler de l'hypothèse | +| Supprime tous les champs à interpoler de l'hypothèse | +---------------------------------------------------------------+ .. note:: - Le fichier et les instants où sont pris les champs sont définis dans l'itération ; voir :ref:`tui_create_iteration`. + Le fichier et les instants où sont pris les champs sont définis dans l'itération ; voir :ref:`tui_create_iteration`. -Les options avancées +Les options avancées ==================== +---------------------------------------------------------------+ @@ -374,9 +374,9 @@ Les options avanc | .. module:: SetNivMax | | | | **SetNivMax(nivmax)** | -| Définit le niveau maximal de raffinement | +| Définit le niveau maximal de raffinement | | | -| - ``nivmax`` : niveau de raffinement à ne pas dépasser | +| - ``nivmax`` : niveau de raffinement à ne pas dépasser | +---------------------------------------------------------------+ | .. module:: GetNivMax | | | @@ -386,58 +386,58 @@ Les options avanc | .. module:: SetDiamMin | | | | **SetDiamMin(diammin)** | -| Définit le diamètre minimal des futures mailles | +| Définit le diamètre minimal des futures mailles | | | -| - ``diammin`` : diamètre minimal voulu pour une maille | +| - ``diammin`` : diamètre minimal voulu pour une maille | +---------------------------------------------------------------+ | .. module:: GetDiamMin | | | | **GetDiamMin()** | -| Retourne le diamètre minimal voulu | +| Retourne le diamètre minimal voulu | +---------------------------------------------------------------+ | .. module:: SetAdapInit | | | | **SetAdapInit(option)** | -| Définit le traitement à appliquer aux mailles où | -| le champ de pilotage de l'adaptation n'est pas défini | +| Définit le traitement à appliquer aux mailles où | +| le champ de pilotage de l'adaptation n'est pas défini | | | -| - ``option`` : entier précisant le choix retenu | +| - ``option`` : entier précisant le choix retenu | | | -| * 0 : aucun effet (défaut) | -| * 1 : les mailles sans indicateurs sont raffinées | -| * -1 : les mailles sans indicateurs sont déraffinées | +| * 0 : aucun effet (défaut) | +| * 1 : les mailles sans indicateurs sont raffinées | +| * -1 : les mailles sans indicateurs sont déraffinées | +---------------------------------------------------------------+ | .. module:: GetAdapInit | | | | **GetAdapInit()** | -| Retourne le type de traitement à appliquer aux mailles où | -| le champ de pilotage de l'adaptation n'est pas défini | +| Retourne le type de traitement à appliquer aux mailles où | +| le champ de pilotage de l'adaptation n'est pas défini | +---------------------------------------------------------------+ | .. module:: SetExtraOutput | | | | **SetExtraOutput(option)** | -| Précise quelles sorties supplémentaires sur les mailles on| -| veut récupérer dans le fichier MED de sortie. C'est un | +| Précise quelles sorties supplémentaires sur les mailles on| +| veut récupérer dans le fichier MED de sortie. C'est un | | entier multiple ou non de 2, 3, 5. | | | -| - ``option`` : entier précisant le choix retenu | +| - ``option`` : entier précisant le choix retenu | | | -| * 1 : aucun effet (défaut) | +| * 1 : aucun effet (défaut) | | * 2x : le niveau de raffinement de chaque maille | -| * 3x : la qualité de chaque maille | -| * 5x : le diamètre de chaque maille | +| * 3x : la qualité de chaque maille | +| * 5x : le diamètre de chaque maille | +---------------------------------------------------------------+ | .. module:: GetExtraOutput | | | | **GetExtraOutput()** | -| Retourne le choix retenu pour la récupération des sorties | -| supplémentaires | +| Retourne le choix retenu pour la récupération des sorties | +| supplémentaires | +---------------------------------------------------------------+ Exemple ******* -La création de l'objet hypo_1 se fait ainsi : :: +La création de l'objet hypo_1 se fait ainsi : :: hypo_1 = homard.CreateHypothesis("HypoField") hypo_1.SetField("INDICATEUR") @@ -453,4 +453,4 @@ Saisie graphique correspondante Consulter :ref:`gui_create_hypothese` .. warning:: - En mode graphique, si on édite une hypothèse et que l'on modifie une de ses caractéristiques, par exemple le seuil de raffinement, toutes les itérations qui ont été calculées précédemment avec cette hypothèse sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. + En mode graphique, si on édite une hypothèse et que l'on modifie une de ses caractéristiques, par exemple le seuil de raffinement, toutes les itérations qui ont été calculées précédemment avec cette hypothèse sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. diff --git a/doc/fr/tui_create_iteration.rst b/doc/fr/tui_create_iteration.rst index fce47b00..dd59db8d 100644 --- a/doc/fr/tui_create_iteration.rst +++ b/doc/fr/tui_create_iteration.rst @@ -1,15 +1,15 @@ .. _tui_create_iteration: -L'itération +L'itération ########### -.. index:: single: itération -.. index:: single: hypothèse +.. index:: single: itération +.. index:: single: hypothèse .. index:: single: zone -Les variables sont décrites dans :ref:`gui_create_iteration`. +Les variables sont décrites dans :ref:`gui_create_iteration`. -Méthodes de la classe homard +Méthodes de la classe homard **************************** +---------------------------------------------------------------+ @@ -20,53 +20,53 @@ M | Retourne l'instance de la classe ``iteration`` connue par | | son nom | | | -| - ``iter_name`` : le nom de l'itération | +| - ``iter_name`` : le nom de l'itération | +---------------------------------------------------------------+ | .. module:: GetAllIterationsName | | | | **GetAllIterationsName()** | -| Retourne la liste des noms de toutes les itérations créées| +| Retourne la liste des noms de toutes les itérations créées| | | +---------------------------------------------------------------+ -Méthodes communes aux classes cas et iteration +Méthodes communes aux classes cas et iteration ********************************************** -Voir également dans :ref:`tui_create_case`. +Voir également dans :ref:`tui_create_case`. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: NextIteration | | | | **NextIteration(iter_name)** | -| Retourne une instance de la classe ``iteration`` après | -| sa création. Elle suit immédiatement : | +| Retourne une instance de la classe ``iteration`` après | +| sa création. Elle suit immédiatement : | | | -| - pour un cas : l'itération initiale, correspondant au | -| maillage définissant le cas | -| - pour une itération : l'itération courante | +| - pour un cas : l'itération initiale, correspondant au | +| maillage définissant le cas | +| - pour une itération : l'itération courante | | | -| Par défaut, le maillage produit a le même nom que l'itération | +| Par défaut, le maillage produit a le même nom que l'itération | | | -| - ``iter_name`` : le nom à donner à la nouvelle itération | +| - ``iter_name`` : le nom à donner à la nouvelle itération | +---------------------------------------------------------------+ | .. module:: LastIteration | | | | **LastIteration()** | | Retourne une instance de la classe ``iteration``. C'est | -| la dernière créée dans la descendance de : | +| la dernière créée dans la descendance de : | | | -| - pour un cas : l'itération initiale du cas | -| - pour une itération : l'itération courante | +| - pour un cas : l'itération initiale du cas | +| - pour une itération : l'itération courante | | | | C'est celle qui est sans fille. Il y a erreur s'il existe | | plus d'une branche dans la descendance. | | | +---------------------------------------------------------------+ -Méthodes de la classe iteration +Méthodes de la classe iteration ******************************* -Généralités +Généralités =========== +---------------------------------------------------------------+ @@ -74,75 +74,75 @@ G | .. module:: Compute | | | | **Compute(option1, option2)** | -| Calcule le maillage correspondant à l'itération | +| Calcule le maillage correspondant à l'itération | | | -| - ``option1`` : un entier précisant ce qui se passe quand | -| des fichiers de résultats existent déjà | +| - ``option1`` : un entier précisant ce qui se passe quand | +| des fichiers de résultats existent déjà | | | -| * 0 : arrêt en erreur | -| * 1 : écrasement des anciens fichiers | +| * 0 : arrêt en erreur | +| * 1 : écrasement des anciens fichiers | | | -| - ``option2`` : un entier précisant ce qui est fait des | -| résultats | +| - ``option2`` : un entier précisant ce qui est fait des | +| résultats | | | -| * 1 : aucune action particulière | +| * 1 : aucune action particulière | | * 2 : publication dans le module SMESH | | | | Retourne un entier : | -| * 0 : adaptation réussie | -| * autre valeur : problème | +| * 0 : adaptation réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ | .. module:: GetName | | | | **GetName()** | -| Retourne le nom de l'itération | +| Retourne le nom de l'itération | +---------------------------------------------------------------+ | .. module:: GetNumber | | | | **GetNumber()** | -| Retourne le numéro de l'itération. | +| Retourne le numéro de l'itération. | | | -| L'itération 0 est celle associée au maillage initial. | -| Ensuite, une itération de numéro N est issue de | -| l'adaptation d'une itération de numéro N-1. | +| L'itération 0 est celle associée au maillage initial. | +| Ensuite, une itération de numéro N est issue de | +| l'adaptation d'une itération de numéro N-1. | +---------------------------------------------------------------+ | .. module:: GetIterParent | | | | **GetIterParent()** | -| Retourne l'itération mère | +| Retourne l'itération mère | +---------------------------------------------------------------+ | .. module:: AssociateHypo | | | | **AssociateHypo(hypo_name)** | -| Associe une hypothèse à l'itération | +| Associe une hypothèse à l'itération | | | -| - ``hypo_name`` : le nom de l'hypothèse à associer | +| - ``hypo_name`` : le nom de l'hypothèse à associer | +---------------------------------------------------------------+ | .. module:: GetHypoName | | | | **GetHypoName()** | -| Retourne le nom de l'hypothèse associée | +| Retourne le nom de l'hypothèse associée | +---------------------------------------------------------------+ | .. module:: GetCaseName | | | | **GetCaseName()** | -| Retourne le nom du cas associé | +| Retourne le nom du cas associé | +---------------------------------------------------------------+ | .. module:: GetState | | | | **GetState()** | -| Retourne l'état de l'itération | +| Retourne l'état de l'itération | | | -| - ``2`` : itération calculée correctement | -| - ``1`` : itération non calculée | -| - ``<=0`` : itération initiale à ne pas calculer, de | -| numéro valant la valeur absolue de l'état | +| - ``2`` : itération calculée correctement | +| - ``1`` : itération non calculée | +| - ``<=0`` : itération initiale à ne pas calculer, de | +| numéro valant la valeur absolue de l'état | +---------------------------------------------------------------+ | .. module:: GetLogFile | | | | **GetLogFile()** | -| Retourne le nom du fichier retraçant le déroulement de | -| l'exécution de HOMARD | +| Retourne le nom du fichier retraçant le déroulement de | +| l'exécution de HOMARD | +---------------------------------------------------------------+ | .. module:: GetFileInfo | | | @@ -152,23 +152,23 @@ G | .. module:: GetDirName | | | | **GetDirName()** | -| Retourne le nom du répertoire des résutats associé à | -| l'itération | +| Retourne le nom du répertoire des résutats associé à | +| l'itération | +---------------------------------------------------------------+ | .. module:: Delete | | | | **Delete(option)** | -| Detruit l'itération et toutes ses filles éventuelles. | +| Detruit l'itération et toutes ses filles éventuelles. | | | -| - ``option`` : un entier précisant ce qui est fait des | -| fichiers de maillage associés | +| - ``option`` : un entier précisant ce qui est fait des | +| fichiers de maillage associés | | | -| * 0 : les fichiers sont conservés | -| * 1 : les fichiers sont détruits | +| * 0 : les fichiers sont conservés | +| * 1 : les fichiers sont détruits | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ Informations sur les maillages @@ -179,7 +179,7 @@ Informations sur les maillages | .. module:: SetMeshName | | | | **SetMeshName(mesh_name)** | -| Définit le nom du maillage produit | +| Définit le nom du maillage produit | | | | - ``mesh_name`` : le nom du maillage produit | +---------------------------------------------------------------+ @@ -191,7 +191,7 @@ Informations sur les maillages | .. module:: SetMeshFile | | | | **SetMeshFile(mesh_file)** | -| Définit le fichier MED du maillage produit | +| Définit le fichier MED du maillage produit | | | | - ``mesh_file`` : le nom du fichier MED qui contiendra | | le maillage produit | @@ -205,16 +205,16 @@ Informations sur les maillages | | | **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | | Donne des informations sur le maillage. Pour chaque | -| option, le choix 0 correspond à ne rien faire, alors que | +| option, le choix 0 correspond à ne rien faire, alors que | | le choix 1 active l'option. | | | -| - ``Qual`` : qualité des mailles | -| - ``Diam`` : diamètre des mailles | -| - ``Conn`` : connexité du domaine ; en un seul morceau, | +| - ``Qual`` : qualité des mailles | +| - ``Diam`` : diamètre des mailles | +| - ``Conn`` : connexité du domaine ; en un seul morceau, | | combien de trous, etc. | | - ``Tail`` : tailles des constituants du domaine, groupe | | par groupe | -| - ``Inte`` : interpénétration des mailles, par dimension | +| - ``Inte`` : interpénétration des mailles, par dimension | +---------------------------------------------------------------+ Informations sur les champs @@ -228,11 +228,11 @@ Le fichier des champs | .. module:: SetFieldFile | | | | **SetFieldFile(field_file)** | -| Définit le fichier MED des champs utiles | +| Définit le fichier MED des champs utiles | | | | - ``field_file`` : le nom du fichier MED contenant les | | champs : champ de pilotage de l'adaptation ou champs | -| à interpoler | +| à interpoler | +---------------------------------------------------------------+ | .. module:: GetFieldFileName | | | @@ -242,81 +242,81 @@ Le fichier des champs Les instants pour le champ de pilotage -------------------------------------- -Si une seule occurence du champ de pilotage de l'adaptation est présente dans le fichier des champs, il est inutile de préciser le pas de temps. Sinon, il faut préciser quel pas de temps est retenu. +Si une seule occurence du champ de pilotage de l'adaptation est présente dans le fichier des champs, il est inutile de préciser le pas de temps. Sinon, il faut préciser quel pas de temps est retenu. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: SetTimeStep | | | | **SetTimeStep(TimeStep)** | -| Définit l'instant pour le champ de pilotage. Le numéro | -| d'ordre sera ignoré. | +| Définit l'instant pour le champ de pilotage. Le numéro | +| d'ordre sera ignoré. | | | -| - ``TimeStep`` : l'instant où est pris le champ | +| - ``TimeStep`` : l'instant où est pris le champ | +---------------------------------------------------------------+ | .. module:: SetTimeStepRank | | | | **SetTimeStepRank(TimeStep, Rank)** | -| Définit l'instant et le numéro d'ordre pour le champ de | +| Définit l'instant et le numéro d'ordre pour le champ de | | pilotage | | | -| - ``TimeStep`` : l'instant où est pris le champ | -| - ``Rank`` : le numéro d'ordre où est pris le champ | +| - ``TimeStep`` : l'instant où est pris le champ | +| - ``Rank`` : le numéro d'ordre où est pris le champ | +---------------------------------------------------------------+ | .. module:: SetTimeStepRankLast | | | | **SetTimeStepRankLast()** | -| Précise que le dernier instant enregistré pour le champ | -| de pilotage est utilisé | +| Précise que le dernier instant enregistré pour le champ | +| de pilotage est utilisé | +---------------------------------------------------------------+ | .. module:: GetTimeStep | | | | **GetTimeStep()** | -| Retourne l'instant où est pris le champ de pilotage | +| Retourne l'instant où est pris le champ de pilotage | +---------------------------------------------------------------+ | .. module:: GetRank | | | | **GetRank()** | -| Retourne le numéro d'ordre où est pris le champ de | +| Retourne le numéro d'ordre où est pris le champ de | | pilotage | +---------------------------------------------------------------+ -Les instants pour les champs à interpoler +Les instants pour les champs à interpoler ----------------------------------------- -Les champs à interpoler sont définis dans l'hypothèse (voir :ref:`tui_create_hypothese`). -Pour un champ donné, si aucune mention de pas de temps n'est précisé, tous les pas de temps seront pris en compte. -Si on souhaite limiter l'interpolation à un ou plusieurs pas de temps, il faut le préciser ici. +Les champs à interpoler sont définis dans l'hypothèse (voir :ref:`tui_create_hypothese`). +Pour un champ donné, si aucune mention de pas de temps n'est précisé, tous les pas de temps seront pris en compte. +Si on souhaite limiter l'interpolation à un ou plusieurs pas de temps, il faut le préciser ici. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: SetFieldInterpTimeStep | | | | **SetFieldInterpTimeStep(FieldName, TimeStep)** | -| Définit un instant pour le champ à interpoler. Le numéro | -| d'ordre sera ignoré. | +| Définit un instant pour le champ à interpoler. Le numéro | +| d'ordre sera ignoré. | | | -| - ``FieldName`` : le nom du champ à interpoler | -| - ``TimeStep`` : l'instant où est pris le champ | +| - ``FieldName`` : le nom du champ à interpoler | +| - ``TimeStep`` : l'instant où est pris le champ | +---------------------------------------------------------------+ | .. module:: SetFieldInterpTimeStepRank | | | | **SetFieldInterpTimeStepRank(FieldName, TimeStep)** | -| Définit l'instant et le numéro d'ordre pour le champ à | +| Définit l'instant et le numéro d'ordre pour le champ à | | interpoler. | | | -| - ``FieldName`` : le nom du champ à interpoler | -| - ``TimeStep`` : l'instant où est pris le champ | -| - ``Rank`` : le numéro d'ordre où est pris le champ | +| - ``FieldName`` : le nom du champ à interpoler | +| - ``TimeStep`` : l'instant où est pris le champ | +| - ``Rank`` : le numéro d'ordre où est pris le champ | +---------------------------------------------------------------+ | .. module:: GetFieldInterpsTimeStepRank | | | | **GetFieldInterpsTimeStepRank()** | | Retourne l'ensemble des triplets (nom du champ, pas de | -| temps, numéro d'ordre) | +| temps, numéro d'ordre) | | | -| Attention : l'usage est stocké sous forme de chaîne de | -| caractères et non pas d'entier dans la liste. | +| Attention : l'usage est stocké sous forme de chaîne de | +| caractères et non pas d'entier dans la liste. | | | | Exemple : ['DEPL', '1', '1', 'DEPL', '2', '1', 'Masse', | | '2', '0', 'Masse', '3', '0'] | @@ -330,22 +330,22 @@ Divers | .. module:: SetInfoCompute | | | | **SetInfoCompute(MessInfo)** | -| Précise des options d'informations sur le déroulement du | -| calcul de l'itération | +| Précise des options d'informations sur le déroulement du | +| calcul de l'itération | | | -| - ``MessInfo`` : entier pilotant des écritures, sous la | +| - ``MessInfo`` : entier pilotant des écritures, sous la | | forme d'un entier multiple de 2, 3 et 5 | | | -| * 1 : aucune écriture (défaut) | +| * 1 : aucune écriture (défaut) | | * 2x : temps de calcul | | * 3x : fichiers MED | -| * 5x : mémoire | +| * 5x : mémoire | +---------------------------------------------------------------+ | .. module:: GetInfoCompute | | | | **GetInfoCompute()** | -| Retourne les options d'informations sur le déroulement du | -| calcul de l'itération | +| Retourne les options d'informations sur le déroulement du | +| calcul de l'itération | +---------------------------------------------------------------+ @@ -353,7 +353,7 @@ Exemple ******* .. index:: single: maillage;initial -Pour la création de la première itération, on part de celle qui correspond au maillage initial. C'est celle contenue dans le cas. +Pour la création de la première itération, on part de celle qui correspond au maillage initial. C'est celle contenue dans le cas. :: iter_name = "Iteration_1" @@ -365,7 +365,7 @@ Pour la cr iter_1.AssociateHypo("HypoField") codret = iter_1.Compute(1, 2) -Ensuite, on crée une itération suivante à l'itération parent de laquelle on part. +Ensuite, on crée une itération suivante à l'itération parent de laquelle on part. :: iter_name = "Iteration_2" diff --git a/doc/fr/tui_create_yacs.rst b/doc/fr/tui_create_yacs.rst index d7d25ef8..68f1b05e 100644 --- a/doc/fr/tui_create_yacs.rst +++ b/doc/fr/tui_create_yacs.rst @@ -1,34 +1,34 @@ .. _tui_create_yacs: -Le schéma YACS +Le schéma YACS ############## .. index:: single: YACS -Les variables sont décrites dans :ref:`gui_create_yacs`. +Les variables sont décrites dans :ref:`gui_create_yacs`. -Méthodes de la classe cas +Méthodes de la classe cas ************************* -Voir également dans :ref:`tui_create_case`. +Voir également dans :ref:`tui_create_case`. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: CreateYACSSchema | | | | **CreateYACSSchema(yacs_name, ScriptFile, DirName, MeshFile)**| -| Retourne une instance de la classe ``yacs`` après sa | -| création | +| Retourne une instance de la classe ``yacs`` après sa | +| création | | | -| - ``yacs_name`` : le nom du schéma | +| - ``yacs_name`` : le nom du schéma | | - ``ScriptFile`` : le fichier du script python qui permet | -| de lancer le calcul à coupler avec l'adaptation de | +| de lancer le calcul à coupler avec l'adaptation de | | maillage | -| - ``DirName`` : le répertoire où a lieu le calcul | +| - ``DirName`` : le répertoire où a lieu le calcul | | - ``MeshFile`` : le fichier MED contenant le tout premier | | maillage de calcul | +---------------------------------------------------------------+ -Méthodes de la classe homard +Méthodes de la classe homard **************************** +---------------------------------------------------------------+ @@ -39,20 +39,20 @@ M | Retourne l'instance de la classe ``yacs`` connue par | | son nom | | | -| - ``yacs_name`` : le nom du schéma | +| - ``yacs_name`` : le nom du schéma | +---------------------------------------------------------------+ | .. module:: GetAllYACSsName | | | | **GetAllYACSsName()** | -| Retourne la liste des noms de tous les schémas existant | +| Retourne la liste des noms de tous les schémas existant | +---------------------------------------------------------------+ -Méthodes de la classe YACS +Méthodes de la classe YACS ************************** -Généralités +Généralités =========== +---------------------------------------------------------------+ @@ -60,44 +60,44 @@ G | .. module:: Write | | | | **Write()** | -| Ecrit le schéma dans le fichier lié au schéma | -| Par défaut, c'est le fichier ``schema.xml``, dans le | -| répertoire du cas. Si ``WriteOnFile`` a été utilisé | -| auparavant, l'écriture a lieu dans le nouveau fichier. | +| Ecrit le schéma dans le fichier lié au schéma | +| Par défaut, c'est le fichier ``schema.xml``, dans le | +| répertoire du cas. Si ``WriteOnFile`` a été utilisé | +| auparavant, l'écriture a lieu dans le nouveau fichier. | | | | Retourne un entier : | -| * 0 : écriture réussie | -| * autre valeur : problème | +| * 0 : écriture réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ | .. module:: WriteOnFile | | | | **WriteOnFile(file_xml)** | -| Ecrit le schéma dans un fichier désigné. | +| Ecrit le schéma dans un fichier désigné. | | | -| - ``file_xml`` : nom du fichier xml du schéma | +| - ``file_xml`` : nom du fichier xml du schéma | | | | Retourne un entier : | -| * 0 : écriture réussie | -| * autre valeur : problème | +| * 0 : écriture réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ | .. module:: Delete | | | | **Delete(option)** | -| Detruit le schéma. | +| Detruit le schéma. | | | -| - ``option`` : un entier précisant ce qui est fait du | -| fichier xml du schéma | +| - ``option`` : un entier précisant ce qui est fait du | +| fichier xml du schéma | | | -| * 0 : le fichier est conservé | -| * 1 : le fichier est détruit | +| * 0 : le fichier est conservé | +| * 1 : le fichier est détruit | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ -Informations sur le schéma +Informations sur le schéma ========================== +---------------------------------------------------------------+ @@ -105,14 +105,14 @@ Informations sur le sch | .. module:: GetName | | | | **GetName()** | -| Retourne le nom du schéma. | +| Retourne le nom du schéma. | +---------------------------------------------------------------+ | .. module:: SetType | | | | **SetType(Type)** | -| Définit le type de schéma. | +| Définit le type de schéma. | | | -| - ``Type`` : le type de schéma | +| - ``Type`` : le type de schéma | | | | * 1 : constant | | * 2 : variable | @@ -120,12 +120,12 @@ Informations sur le sch | .. module:: GetType | | | | **GetType()** | -| Retourne le type du schéma. | +| Retourne le type du schéma. | +---------------------------------------------------------------+ | .. module:: SetScriptFile | | | | **SetScriptFile(script_file)** | -| Définit le fichier du script python de lancement du | +| Définit le fichier du script python de lancement du | | calcul. | | | | - ``script_file`` : le nom du fichier qui contient le | @@ -140,19 +140,19 @@ Informations sur le sch | .. module:: SetDirName | | | | **SetDirName(dir_name)** | -| Définit le nom du répertoire de calcul. | +| Définit le nom du répertoire de calcul. | | | -| - ``dir_name`` : le nom du répertoire de calcul | +| - ``dir_name`` : le nom du répertoire de calcul | +---------------------------------------------------------------+ | .. module:: GetDirName | | | | **GetDirName()** | -| Retourne le nom du répertoire de calcul. | +| Retourne le nom du répertoire de calcul. | +---------------------------------------------------------------+ | .. module:: SetMeshFile | | | | **SetMeshFile(mesh_file)** | -| Définit le fichier MED du tout premier maillage. | +| Définit le fichier MED du tout premier maillage. | | | | - ``mesh_file`` : le nom du fichier MED contenant le tout | | premier maillage de calcul | @@ -166,7 +166,7 @@ Informations sur le sch | .. module:: SetXMLFile | | | | **SetXMLFile(xml_file)** | -| Définit le fichier xml pour l'écriture. | +| Définit le fichier xml pour l'écriture. | | | | - ``xml_file`` : le nom du fichier xml | +---------------------------------------------------------------+ @@ -177,32 +177,32 @@ Informations sur le sch +---------------------------------------------------------------+ -Les options du schéma +Les options du schéma ===================== -Les valeurs par défaut sont définies dans les préférences du module HOMARD. +Les valeurs par défaut sont définies dans les préférences du module HOMARD. +---------------------------------------------------------------+ +---------------------------------------------------------------+ | .. module:: SetMaxIter | | | | **SetMaxIter(MaxIter)** | -| Définit le nombre maximal d'itérations pour le schéma. | +| Définit le nombre maximal d'itérations pour le schéma. | | | -| - ``MaxIter`` : le nombre maximal d'itérations du schéma | +| - ``MaxIter`` : le nombre maximal d'itérations du schéma | +---------------------------------------------------------------+ | .. module:: GetMaxIter | | | | **GetMaxIter()** | -| Retourne le nombre maximal d'itérations du schéma. | +| Retourne le nombre maximal d'itérations du schéma. | +---------------------------------------------------------------+ | .. module:: SetMaxNode | | | | **SetMaxNode(MaxNode)** | -| Définit le nombre maximal de noeuds pour l'adaptation. | +| Définit le nombre maximal de noeuds pour l'adaptation. | | | | - ``MaxNode`` : le nombre maximal de noeuds pour | | l'adaptation. Si MaxNode est nul, aucune limite n'est | -| imposée. | +| imposée. | +---------------------------------------------------------------+ | .. module:: GetMaxNode | | | @@ -212,11 +212,11 @@ Les valeurs par d | .. module:: SetMaxElem | | | | **SetMaxElem(MaxElem)** | -| Définit le nombre maximal de mailles pour l'adaptation. | +| Définit le nombre maximal de mailles pour l'adaptation. | | | | - ``MaxElem`` : le nombre maximal de mailles pour | | l'adaptation. Si MaxElem est nul, aucune limite n'est | -| imposée. | +| imposée. | +---------------------------------------------------------------+ | .. module:: GetMaxElem | | | @@ -226,32 +226,32 @@ Les valeurs par d | .. module:: SetTestConvergence | | | | **SetTestConvergence(Type, VRef)** | -| Précise un test de convergence pour le schéma. | +| Précise un test de convergence pour le schéma. | | | -| - ``Type`` : le type de convergence du schéma. | +| - ``Type`` : le type de convergence du schéma. | | | | * 0 : aucun test | -| * 1 : quand la valeur de test est supérieure à VRef | -| * 2 : quand la valeur de test est inférieure à VRef | +| * 1 : quand la valeur de test est supérieure à VRef | +| * 2 : quand la valeur de test est inférieure à VRef | | | -| - ``VRef`` : la valeur de référence du test | +| - ``VRef`` : la valeur de référence du test | +---------------------------------------------------------------+ | .. module:: GetTestConvergenceType | | | | **GetTestConvergenceType()** | -| Retourne le type de convergence du schéma. | +| Retourne le type de convergence du schéma. | +---------------------------------------------------------------+ | .. module:: GetTestConvergenceVRef | | | | **GetTestConvergenceVRef()** | -| Retourne la valeur de référence utilisée pour le test de | -| convergence du schéma. | +| Retourne la valeur de référence utilisée pour le test de | +| convergence du schéma. | +---------------------------------------------------------------+ Exemple ******* -La création d'un schéma se fait ainsi : +La création d'un schéma se fait ainsi : :: ScriptFile = "/scratch/D68518/Salome/HOMARD_SALOME/HOMARD_SRC/doc/files/ScriptAster.py" @@ -260,7 +260,7 @@ La cr YACS_0 = Case.CreateYACSSchema("YACS_0", ScriptFile, DirName, MeshFile) YACS_0.SetMaxIter(4) -On peut ensuite l'écrire dans un fichier : +On peut ensuite l'écrire dans un fichier : :: YACSFile = "/scratch/D68518/calcul/yacs.xml" diff --git a/doc/fr/tui_create_zone.rst b/doc/fr/tui_create_zone.rst index d622cbe3..651e25de 100644 --- a/doc/fr/tui_create_zone.rst +++ b/doc/fr/tui_create_zone.rst @@ -12,35 +12,35 @@ La zone .. index:: single: disque avec trou .. index:: single: 2D -Les variables sont décrites dans :ref:`gui_create_zone`. +Les variables sont décrites dans :ref:`gui_create_zone`. -Méthodes de la classe homard +Méthodes de la classe homard **************************** -Ces méthodes retournent une instance de la classe zone. +Ces méthodes retournent une instance de la classe zone. +----------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------+ | .. module:: CreateZoneBox | | | | **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** | -| Retourne une instance de la classe ``zone`` de type parallélépipèdique | -| après sa création | +| Retourne une instance de la classe ``zone`` de type parallélépipèdique | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un parallélépipède | -| - ``Xmin``, ``Xmax`` : coordonnées extrêmes selon X | -| - ``Ymin``, ``Ymax`` : coordonnées extrêmes selon Y | -| - ``Zmin``, ``Zmax`` : coordonnées extrêmes selon Z | +| - ``zone_name`` : le nom de la zone basée sur un parallélépipède | +| - ``Xmin``, ``Xmax`` : coordonnées extrêmes selon X | +| - ``Ymin``, ``Ymax`` : coordonnées extrêmes selon Y | +| - ``Zmin``, ``Zmax`` : coordonnées extrêmes selon Z | +----------------------------------------------------------------------------------+ | .. module:: CreateZoneCylinder | | | | **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** | | Retourne une instance de la classe ``zone`` de type cylindrique | -| après sa création | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un cylindre | -| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | -| positionné sur l'axe | +| - ``zone_name`` : le nom de la zone basée sur un cylindre | +| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | +| positionné sur l'axe | | - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | | - ``R`` : rayon du cylindre | | - ``H`` : hauteur du cylindre | @@ -49,11 +49,11 @@ Ces m | | | **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** | | Retourne une instance de la classe ``zone`` de type tuyau | -| après sa création | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un tuyau | -| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | -| positionné sur l'axe | +| - ``zone_name`` : le nom de la zone basée sur un tuyau | +| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | +| positionné sur l'axe | | - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | | - ``R`` : rayon externe du tuyau | | - ``H`` : hauteur du tuyau | @@ -62,54 +62,54 @@ Ces m | .. module:: CreateZoneSphere | | | | **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** | -| Retourne une instance de la classe ``zone`` de type sphérique | -| après sa création | +| Retourne une instance de la classe ``zone`` de type sphérique | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur une sphère | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | -| - ``R`` : rayon de la sphère | +| - ``zone_name`` : le nom de la zone basée sur une sphère | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | +| - ``R`` : rayon de la sphère | +----------------------------------------------------------------------------------+ | .. module:: CreateZoneBox2D | | | | **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** | | Retourne une instance de la classe ``zone`` de type rectangulaire | -| après sa création | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un rectangle | -| - ``Umin``, ``Umax`` : coordonnées extrêmes pour la 1ère dimension | -| - ``Vmin``, ``Vmax`` : coordonnées extrêmes pour la 2nde dimension | -| - ``Orient`` : entier précisant la convention d'orientation du plan | +| - ``zone_name`` : le nom de la zone basée sur un rectangle | +| - ``Umin``, ``Umax`` : coordonnées extrêmes pour la 1ère dimension | +| - ``Vmin``, ``Vmax`` : coordonnées extrêmes pour la 2nde dimension | +| - ``Orient`` : entier précisant la convention d'orientation du plan | +----------------------------------------------------------------------------------+ | .. module:: CreateZoneDisk | | | | **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** | | Retourne une instance de la classe ``zone`` de type disque | -| après sa création | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un disque plein | -| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | +| - ``zone_name`` : le nom de la zone basée sur un disque plein | +| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | | - ``R`` : rayon du disque | -| - ``Orient`` : entier précisant la convention d'orientation du plan | +| - ``Orient`` : entier précisant la convention d'orientation du plan | +----------------------------------------------------------------------------------+ | .. module:: CreateZoneDiskWithHole | | | | **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** | -| Retourne une instance de la classe ``zone`` de type disque troué | -| après sa création | +| Retourne une instance de la classe ``zone`` de type disque troué | +| après sa création | | | -| - ``zone_name`` : le nom de la zone basée sur un disque troué | -| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | +| - ``zone_name`` : le nom de la zone basée sur un disque troué | +| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | | - ``R`` : rayon externe du disque | | - ``Rint`` : rayon interne du disque | -| - ``Orient`` : entier précisant la convention d'orientation du plan | +| - ``Orient`` : entier précisant la convention d'orientation du plan | +----------------------------------------------------------------------------------+ +---------------------------------------------------------------+ +---------------------------------------------------------------+ -| La convention d'orientation du plan est la même que celle | -| appliquée dans les autres modules de SALOME, en particulier | +| La convention d'orientation du plan est la même que celle | +| appliquée dans les autres modules de SALOME, en particulier | | GEOM : | | | | 1. plan XY ; U <==> X et V <==> Y | @@ -119,8 +119,8 @@ Ces m .. note:: - Les fonctions définissant des zones 2D ne doivent être utilisées que si l'intégralité du - maillage est 2D, dans un des plans de coordonnées. + Les fonctions définissant des zones 2D ne doivent être utilisées que si l'intégralité du + maillage est 2D, dans un des plans de coordonnées. +---------------------------------------------------------------+ @@ -136,12 +136,12 @@ Ces m | .. module:: GetAllZonesName | | | | **GetAllZonesName()** | -| Retourne la liste des noms de toutes les zones créées | +| Retourne la liste des noms de toutes les zones créées | | | +---------------------------------------------------------------+ -Méthodes de la classe zone +Méthodes de la classe zone ************************** +---------------------------------------------------------------+ @@ -156,19 +156,19 @@ M | **GetType()** | | Retourne le type de la zone | | | -| * 2 : parallélépipède | -| * 3 : sphère | +| * 2 : parallélépipède | +| * 3 : sphère | | * 5 : cylindre | | * 7 : tuyau | | * 11, 12, 13 : rectangle et orientation 1, 2 ou 3 | | * 31, 32, 33 : disque et orientation 1, 2 ou 3 | -| * 61, 62, 63 : disque percé et orientation 1, 2 ou 3 | +| * 61, 62, 63 : disque percé et orientation 1, 2 ou 3 | +---------------------------------------------------------------+ | .. module:: GetCoords | | | | **GetCoords()** | -| Retourne un tableau contenant les coordonnées de la zone | -| dans l'ordre d'entrée dans le CreateZoneXXXX associé | +| Retourne un tableau contenant les coordonnées de la zone | +| dans l'ordre d'entrée dans le CreateZoneXXXX associé | +---------------------------------------------------------------+ | .. module:: Delete | | | @@ -176,20 +176,20 @@ M | Detruit la zone | | | | Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | +| * 0 : destruction réussie | +| * autre valeur : problème | +---------------------------------------------------------------+ Exemple ******* -La création d'une boîte 3D se fait ainsi : +La création d'une boîte 3D se fait ainsi : :: zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8) -La création d'un disque dans le plan XY se fait ainsi : +La création d'un disque dans le plan XY se fait ainsi : :: zone_2 = homard.CreateZoneDisk ("disque", 1., 3., 43.25, 1) @@ -200,7 +200,7 @@ Saisie graphique correspondante Consulter :ref:`gui_create_zone` .. warning:: - En mode graphique, si on édite une zone et que l'on modifie une des dimensions, toutes les itérations qui ont été calculées précédemment avec cette zone sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. + En mode graphique, si on édite une zone et que l'on modifie une des dimensions, toutes les itérations qui ont été calculées précédemment avec cette zone sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. diff --git a/doc/fr/tui_homard.rst b/doc/fr/tui_homard.rst index ef3ef557..07ea221a 100644 --- a/doc/fr/tui_homard.rst +++ b/doc/fr/tui_homard.rst @@ -3,7 +3,7 @@ Le calcul ######### -Méthodes de la classe homard +Méthodes de la classe homard **************************** +---------------------------------------------------------------+ @@ -12,7 +12,7 @@ M | | | **SetLanguageShort(lang)** | | Affecte la langue des messages. Si le choix transmis est | -| incorrect, l'anglais est utilisé. | +| incorrect, l'anglais est utilisé. | | | | - ``lang`` : la langue des messages sous forme courte. | | | diff --git a/doc/fr/tui_usage.rst b/doc/fr/tui_usage.rst index befdd63b..bd8a3ee2 100644 --- a/doc/fr/tui_usage.rst +++ b/doc/fr/tui_usage.rst @@ -1,10 +1,10 @@ Mode d'emploi pour TUI ###################### -Mode d'emploi de la saisie des données +Mode d'emploi de la saisie des données ************************************** -Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur. +Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur. .. toctree:: :maxdepth: 2 @@ -17,10 +17,10 @@ Le module HOMARD peut se lancer tui_homard tui_create_yacs -Préférences +Préférences *********** -Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. +Un certain nombre de choix par défaut pour le module HOMARD sont définis dans les préférences. .. toctree:: :maxdepth: 2 diff --git a/doc/fr/tutorials.rst b/doc/fr/tutorials.rst index 92ce134d..25cb739a 100644 --- a/doc/fr/tutorials.rst +++ b/doc/fr/tutorials.rst @@ -3,14 +3,14 @@ Exemples .. index:: single: exemple .. index:: single: python -On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. -C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. +On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. +C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. Chargement du module HOMARD *************************** .. index:: single: YACS -Le chargement du module HOMARD se fait de manière analogue aux autres modules. +Le chargement du module HOMARD se fait de manière analogue aux autres modules. :: @@ -18,7 +18,7 @@ Le chargement du module HOMARD se fait de mani homard = salome.lcc.FindOrLoadComponent('FactoryServer','HOMARD') homard.SetCurrentStudy(salome.myStudy) -Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : +Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : :: @@ -32,14 +32,14 @@ Raffinement uniforme .. index:: single: raffinement;uniforme On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques : - * la même hypothèse est utilisée à chaque itération - * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. + * la même hypothèse est utilisée à chaque itération + * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. .. literalinclude:: ../files/tutorial_1.py :lines: 52-85 .. note:: - Téléchargement des fichiers + Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_1.00.med.gz>` * :download:`commandes python<../files/tutorial_1.py>` @@ -50,13 +50,13 @@ Raffinement par des zones ************************* .. index:: single: zone -On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine et on déraffine les mailles contenues dans la toute première zone. +On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine et on déraffine les mailles contenues dans la toute première zone. .. literalinclude:: ../files/tutorial_2.py :lines: 52-95 .. note:: - Téléchargement des fichiers + Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_2.00.med.gz>` * :download:`commandes python<../files/tutorial_2.py>` @@ -67,57 +67,57 @@ Raffinement selon un champ ************************** .. index:: single: champ -On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. -Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. +On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. +Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. .. literalinclude:: ../files/tutorial_3.py :lines: 52-124 .. note:: - Téléchargement des fichiers + Téléchargement des fichiers - * :download:`maillage et champ étape 0<../files/tutorial_3.00.med.gz>` - * :download:`maillage et champ étape 1<../files/tutorial_3.01.med.gz>` + * :download:`maillage et champ étape 0<../files/tutorial_3.00.med.gz>` + * :download:`maillage et champ étape 1<../files/tutorial_3.01.med.gz>` * :download:`commandes python<../files/tutorial_3.py>` * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` -Suivi de frontières courbes +Suivi de frontières courbes *************************** .. index:: single: champ .. index:: single: YACS -On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. -Le schéma YACS réalisant cette adaptation est téléchargeable. +On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. +Le schéma YACS réalisant cette adaptation est téléchargeable. .. literalinclude:: ../files/tutorial_4.py :lines: 52-111 .. note:: - Téléchargement des fichiers + Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_4.00.med.gz>` - * :download:`maillage de la frontière discrète<../files/tutorial_4.fr.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_4.fr.med.gz>` * :download:`commandes python<../files/tutorial_4.py>` * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` - * :download:`schéma YACS<../files/tutorial_4.xml>` + * :download:`schéma YACS<../files/tutorial_4.xml>` -Instructions spécifiques au 2D +Instructions spécifiques au 2D ****************************** .. index:: single: 2D -Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. -Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. +Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. +Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. .. literalinclude:: ../files/tutorial_5.py :lines: 52-95 .. note:: - Téléchargement des fichiers + Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_5.00.med.gz>` - * :download:`maillage de la frontière discrète<../files/tutorial_5.fr.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_5.fr.med.gz>` * :download:`commandes python<../files/tutorial_5.py>` * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` diff --git a/doc/fr/yacs.rst b/doc/fr/yacs.rst index 8a3bbf79..91e10cb9 100644 --- a/doc/fr/yacs.rst +++ b/doc/fr/yacs.rst @@ -4,31 +4,31 @@ YACS #### .. index:: single: 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 ! +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. +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` + 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` -Présentation générale +Présentation générale ********************* -On va décrire ici un schéma s'appliquant à un calcul pour lequel on cherche à stabiliser une valeur. Le calcul démarre sur un maillage initial puis HOMARD enchaîne avec une adaptation. On refait un calcul sur ce nouveau maillage et son résultat est analysé. En fonction de cette analyse, le couplage continue ou non. L'allure générale du schéma est la suivante : +On va décrire ici un schéma s'appliquant à un calcul pour lequel on cherche à stabiliser une valeur. Le calcul démarre sur un maillage initial puis HOMARD enchaîne avec une adaptation. On refait un calcul sur ce nouveau maillage et son résultat est analysé. En fonction de cette analyse, le couplage continue ou non. L'allure générale du schéma est la suivante : .. image:: ../images/yacs_01.png :align: center - :alt: yacs - allure générale + :alt: yacs - allure générale :width: 512 :height: 306 .. note:: - Parmi l'ensemble des données manipulées, certaines sont immuables : le nom du répertoire de calcul, le nom du cas, le nom de l'hypothèse d'adaptation, etc. Il a été choisi de les imposer 'en dur' dans les différents paramètres de service ou au sein des scripts python. On pourrait également les définir a priori dans un noeud PresetNode et ensuite les transmettre par des liens. Nous n'avons pas retenu cette solution car elle augmente fortement le nombre de paramètres et de liens attachés à chaque noeud. Cela est très pénalisant pour la lisibilité du schéma. Les seules données qui vont circuler sont celles imposées par la description du service et celles qui évoluent au cours de l'exécution du schéma. + Parmi l'ensemble des données manipulées, certaines sont immuables : le nom du répertoire de calcul, le nom du cas, le nom de l'hypothèse d'adaptation, etc. Il a été choisi de les imposer 'en dur' dans les différents paramètres de service ou au sein des scripts python. On pourrait également les définir a priori dans un noeud PresetNode et ensuite les transmettre par des liens. Nous n'avons pas retenu cette solution car elle augmente fortement le nombre de paramètres et de liens attachés à chaque noeud. Cela est très pénalisant pour la lisibilité du schéma. Les seules données qui vont circuler sont celles imposées par la description du service et celles qui évoluent au cours de l'exécution du schéma. -Les boîtes +Les boîtes ********** -Les boîtes principales sont : +Les boîtes principales sont : - DataInit : initialisation du maillage initial - Etude_Initialisation : lancement du module HOMARD dans SALOME @@ -43,14 +43,14 @@ DataInit :width: 158 :height: 61 -Cette boîte est un noeud élémentaire de type PresetNode. Sa seule fonction est d'initialiser la variable MeshFile qui contient le nom du fichier du maillage initial. +Cette boîte est un noeud élémentaire de type PresetNode. Sa seule fonction est d'initialiser la variable MeshFile qui contient le nom du fichier du maillage initial. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 38-42 Etude_Initialisation ==================== -La boîte Etude_Initialisation lance le composant HOMARD dans SALOME. C'est un bloc composé de deux parties, qui sont invariables quelle que soit l'application envisagée : +La boîte Etude_Initialisation lance le composant HOMARD dans SALOME. C'est un bloc composé de deux parties, qui sont invariables quelle que soit l'application envisagée : - StudyCreation : noeud python - SetCurrentStudy : service du composant HOMARD @@ -61,12 +61,12 @@ La bo :width: 323 :height: 97 -Le noeud python StudyCreation sert à initialiser l'étude SALOME qui est fournie en sortie : +Le noeud python StudyCreation sert à initialiser l'étude SALOME qui est fournie en sortie : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 44-62 -Le service SetCurrentStudy affecte cette étude à une instance de HOMARD. +Le service SetCurrentStudy affecte cette étude à une instance de HOMARD. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 63-68 @@ -74,7 +74,7 @@ Le service SetCurrentStudy affecte cette Boucle_de_convergence ===================== -La boîte Boucle_de_convergence est une boucle de type WhileLoop. La condition est initialisée à 1 : le bloc interne Alternance_Calcul_HOMARD est exécuté. Au sein de ce bloc, on calcule et on adapte le maillage ; quand le processus doit s'arrêter soit par suite d'erreur, soit par convergence, la condition passe à 0. La boucle s'achève et on passe à la boîte suivante, Bilan. +La boîte Boucle_de_convergence est une boucle de type WhileLoop. La condition est initialisée à 1 : le bloc interne Alternance_Calcul_HOMARD est exécuté. Au sein de ce bloc, on calcule et on adapte le maillage ; quand le processus doit s'arrêter soit par suite d'erreur, soit par convergence, la condition passe à 0. La boucle s'achève et on passe à la boîte suivante, Bilan. .. image:: ../images/yacs_c_01.png :align: center @@ -90,7 +90,7 @@ Bilan :width: 158 :height: 63 -Cette boîte est un noeud python qui prend en entrée une chaîne de caractères, MessInfo. Si tout s'est bien passé, ce message est vide. Une fenêtre QT apparaît pour confirmer la convergence. S'il y a eu un problème, le message contient les messages émis au cours des calculs. La fenêtre QT affiche ce message. +Cette boîte est un noeud python qui prend en entrée une chaîne de caractères, MessInfo. Si tout s'est bien passé, ce message est vide. Une fenêtre QT apparaît pour confirmer la convergence. S'il y a eu un problème, le message contient les messages émis au cours des calculs. La fenêtre QT affiche ce message. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 406-419 @@ -104,7 +104,7 @@ La boucle de calculs :width: 338 :height: 152 -Cette boîte est un bloc qui gère le calcul, l'adaptation et l'analyse. +Cette boîte est un bloc qui gère le calcul, l'adaptation et l'analyse. Calcul ====== @@ -114,22 +114,22 @@ Calcul :width: 155 :height: 87 -Cette boîte est un noeud python qui va piloter le calcul. En entrée, on trouve le numéro du calcul (0 au départ) et le nom du fichier qui contient le maillage sur lequel calculer. En sortie, on trouve un entier qui représente l'erreur sur ce calcul (0 si tout va bien) et un dictionnaire python rassemblant les résultats du calcul. Le corps du noeud est constitué par le lancement d'un script python qui active le calcul. +Cette boîte est un noeud python qui va piloter le calcul. En entrée, on trouve le numéro du calcul (0 au départ) et le nom du fichier qui contient le maillage sur lequel calculer. En sortie, on trouve un entier qui représente l'erreur sur ce calcul (0 si tout va bien) et un dictionnaire python rassemblant les résultats du calcul. Le corps du noeud est constitué par le lancement d'un script python qui active le calcul. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 77-103 -Dans cet exemple, il faut définir : +Dans cet exemple, il faut définir : -- rep_calc : le répertoire dans lequel sera exécuté le calcul. -- rep_script : le répertoire dans lequel se trouve le python qui lancera le calcul. Ce répertoire est à ajouter au PATH. Depuis ce répertoire, on importera 'Script' depuis le fichier ScriptAster.py +- rep_calc : le répertoire dans lequel sera exécuté le calcul. +- rep_script : le répertoire dans lequel se trouve le python qui lancera le calcul. Ce répertoire est à ajouter au PATH. Depuis ce répertoire, on importera 'Script' depuis le fichier ScriptAster.py -Le python Script est programmé comme l'utilisateur le souhaite pour que le calcul puisse être effectué sur le maillage courant. Selon le mode de lancement du code de calcul, on peut avoir besoin d'autres informations, comme le numéro du calcul ou le répertoire du calcul par exemple. La liberté est totale. Dans notre cas, les arguments d'entrée sont le nom du fichier de maillage, le numéro du calcul et le répertoire de calcul sous la forme de la liste python ["--rep_calc=rep_calc", "--num=numCalc", "--mesh_file=MeshFile"] +Le python Script est programmé comme l'utilisateur le souhaite pour que le calcul puisse être effectué sur le maillage courant. Selon le mode de lancement du code de calcul, on peut avoir besoin d'autres informations, comme le numéro du calcul ou le répertoire du calcul par exemple. La liberté est totale. Dans notre cas, les arguments d'entrée sont le nom du fichier de maillage, le numéro du calcul et le répertoire de calcul sous la forme de la liste python ["--rep_calc=rep_calc", "--num=numCalc", "--mesh_file=MeshFile"] ]. -En revanche la sortie du script doit obéir à la règle suivante. On récupère un code d'erreur, un message d'erreur et un dictionnaire. Ce dictionnaire contient obligatoirement les clés suivantes : +En revanche la sortie du script doit obéir à la règle suivante. On récupère un code d'erreur, un message d'erreur et un dictionnaire. Ce dictionnaire contient obligatoirement les clés suivantes : -- "FileName" : le nom du fichier qui contient les résultats du calcul +- "FileName" : le nom du fichier qui contient les résultats du calcul - "V_TEST" : la valeur dont on veut tester la convergence Adaptation @@ -140,11 +140,11 @@ Adaptation :width: 661 :height: 566 -La boîte Adaptation est un noeud Switch piloté par le code d'erreur du calcul précédent. Si ce code est nul, YACS activera la boîte Adaptation_HOMARD qui lancera l'adaptation. Si le code n'est pas nul, on passe directement dans la boîte Arret_boucle. +La boîte Adaptation est un noeud Switch piloté par le code d'erreur du calcul précédent. Si ce code est nul, YACS activera la boîte Adaptation_HOMARD qui lancera l'adaptation. Si le code n'est pas nul, on passe directement dans la boîte Arret_boucle. Adaptation_HOMARD ----------------- -La première tâche à exécuter concerne l'initialisation des données nécessaires à HOMARD dans la boîte HOMARD_Initialisation. Cette boîte est un noeud switch piloté par le numéro du calcul. Au démarrage, le numéro est nul et YACS active la boîte Iter_1. +La première tâche à exécuter concerne l'initialisation des données nécessaires à HOMARD dans la boîte HOMARD_Initialisation. Cette boîte est un noeud switch piloté par le numéro du calcul. Au démarrage, le numéro est nul et YACS active la boîte Iter_1. Iter_1 ^^^^^^ @@ -154,12 +154,12 @@ Iter_1 :width: 481 :height: 151 -Cette boîte commence par créer le cas HOMARD en appelant le service CreateCase. +Cette boîte commence par créer le cas HOMARD en appelant le service CreateCase. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 208-215 -Le nom du cas CaseName est imposé à "Calcul". Le paramètre d'entrée MeshName est imposé à "BOX". Le paramètre d'entrée FileName est issu de la sortie du calcul précédent. Le paramètre de sortie est une instance de cas. +Le nom du cas CaseName est imposé à "Calcul". Le paramètre d'entrée MeshName est imposé à "BOX". Le paramètre d'entrée FileName est issu de la sortie du calcul précédent. Le paramètre de sortie est une instance de cas. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 443-446 @@ -167,16 +167,16 @@ Le nom du cas CaseName est impos .. literalinclude:: ../files/yacs_01.fr.xml :lines: 483-486 -Les options de ce cas doivent maintenant être renseignées. C'est fait par le noeud python CaseOptions. Il est impératif de renseigner le répertoire de calcul. On regardera la description des fonctions dans :ref:`tui_create_case`. En sortie, on récupère l'instance de l'itération correspondant à l'état initial du cas. +Les options de ce cas doivent maintenant être renseignées. C'est fait par le noeud python CaseOptions. Il est impératif de renseigner le répertoire de calcul. On regardera la description des fonctions dans :ref:`tui_create_case`. En sortie, on récupère l'instance de l'itération correspondant à l'état initial du cas. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 216-228 -Enfin, une hypothèse est créée en appelant le service CreateHypothese. Le paramètre de sortie est une instance d'hypothèse. +Enfin, une hypothèse est créée en appelant le service CreateHypothese. Le paramètre de sortie est une instance d'hypothèse. Homard_Exec ^^^^^^^^^^^ -Une fois initialisée, l'adaptation peut être calculée. C'est le but de la boîte Homard_Exec, sous forme d'un script python. +Une fois initialisée, l'adaptation peut être calculée. C'est le but de la boîte Homard_Exec, sous forme d'un script python. .. image:: ../images/yacs_c_09.png :align: center @@ -184,7 +184,7 @@ Une fois initialis :width: 153 :height: 141 -Le répertoire de calcul est récupéré. Le nom du maillage est rappelé. +Le répertoire de calcul est récupéré. Le nom du maillage est rappelé. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 245-250 @@ -194,27 +194,27 @@ Le r .. literalinclude:: ../files/yacs_01.fr.xml :lines: 325-333 -L'hypothèse transmise en paramètre d'entrée est caractérisée (voir :ref:`tui_create_hypothese`) : +L'hypothèse transmise en paramètre d'entrée est caractérisée (voir :ref:`tui_create_hypothese`) : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 254-278 -Il faut établir un nom pour la future itération. Pour s'assurer que le nom n'a jamais été utilisé, on met en place un mécanisme de nommage incrémental à partir du nom de l'itération initiale. Comme ce nom initial est le nom du maillage initial, on obtient une succession de noms sous la forme : M_001, M_002, M_003, etc. +Il faut établir un nom pour la future itération. Pour s'assurer que le nom n'a jamais été utilisé, on met en place un mécanisme de nommage incrémental à partir du nom de l'itération initiale. Comme ce nom initial est le nom du maillage initial, on obtient une succession de noms sous la forme : M_001, M_002, M_003, etc. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 280-290 -L'itération est complétée : hypothèse, futur maillage, champ (voir :ref:`tui_create_iteration`) : +L'itération est complétée : hypothèse, futur maillage, champ (voir :ref:`tui_create_iteration`) : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 292-311 -L'itération est calculée. Si tout s'est bien passé, la variable OK vaut 1 : on pourra continuer l'exécution du schéma. S'il y a eu un problème, la variable OK vaut 0 pour signifier que le calcul doit s'arrêter ; on donne alors un message d'erreur. +L'itération est calculée. Si tout s'est bien passé, la variable OK vaut 1 : on pourra continuer l'exécution du schéma. S'il y a eu un problème, la variable OK vaut 0 pour signifier que le calcul doit s'arrêter ; on donne alors un message d'erreur. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 313-324 -Après cette exécution, le processus sort du noeud Adaptation_HOMARD, puis du noeud Adaptation. On arrive alors au noeud d'analyse. +Après cette exécution, le processus sort du noeud Adaptation_HOMARD, puis du noeud Adaptation. On arrive alors au noeud d'analyse. Iter_n ^^^^^^ @@ -224,10 +224,10 @@ Iter_n :width: 323 :height: 92 -Aux passages suivants dans le bloc d'adaptation, il faut récupérer : +Aux passages suivants dans le bloc d'adaptation, il faut récupérer : -- la dernière itération créée pour la poursuivre : service LastIteration (voir :ref:`tui_create_iteration`) -- l'hypothèse créée : service GetHypothesis (voir :ref:`tui_create_hypothese`) +- la dernière itération créée pour la poursuivre : service LastIteration (voir :ref:`tui_create_iteration`) +- l'hypothèse créée : service GetHypothesis (voir :ref:`tui_create_hypothese`) On passe ensuite dans le noeud Homard_Exec pour calculer le nouveau maillage. @@ -239,7 +239,7 @@ Arret_boucle :width: 163 :height: 152 -Le bloc Arret_boucle n'est présent que pour faire transiter des variables car les paramètres d'entrée des noeuds doivent toujours être remplis. C'est un python très simple : +Le bloc Arret_boucle n'est présent que pour faire transiter des variables car les paramètres d'entrée des noeuds doivent toujours être remplis. C'est un python très simple : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 173-184 @@ -252,7 +252,7 @@ Analyse :width: 156 :height: 139 -Le bloc Analyse est un script python qui assure le contrôle complet du processus en examinant successivement les causes d'erreur possible. +Le bloc Analyse est un script python qui assure le contrôle complet du processus en examinant successivement les causes d'erreur possible. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 104-116 @@ -267,35 +267,35 @@ On commence par analyser le retour du code de calcul : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 118-123 -Vérification de la présence du nom du fichier de résultats dans le dictionnaire des résultats : +Vérification de la présence du nom du fichier de résultats dans le dictionnaire des résultats : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 125-132 -Vérification de la convergence. Cela suppose que la valeur à tester est présente dans le dictionnaire sous la clé 'V_TEST'. Ici, on a mis en place un test sur la variation de la valeur d'un calcul à l'autre. Au premier passage, on ne teste rien. Aux passages suivants, on teste si la variation relative est inférieure à 1 millième. On aurait pu mettre en place un test absolu si on avait récupéré un niveau global d'erreur par exemple. +Vérification de la convergence. Cela suppose que la valeur à tester est présente dans le dictionnaire sous la clé 'V_TEST'. Ici, on a mis en place un test sur la variation de la valeur d'un calcul à l'autre. Au premier passage, on ne teste rien. Aux passages suivants, on teste si la variation relative est inférieure à 1 millième. On aurait pu mettre en place un test absolu si on avait récupéré un niveau global d'erreur par exemple. .. literalinclude:: ../files/yacs_01.fr.xml :lines: 134-152 -Enfin, on vérifie que l'on ne dépasse pas un nombre maximal d'adaptations : +Enfin, on vérifie que l'on ne dépasse pas un nombre maximal d'adaptations : .. literalinclude:: ../files/yacs_01.fr.xml :lines: 154-159 -Utiliser ce schéma +Utiliser ce schéma ****************** -Pour reproduire cet exemple, on pourra télécharger : - * :download:`le schéma <../files/yacs_01.fr.xml>` +Pour reproduire cet exemple, on pourra télécharger : + * :download:`le schéma <../files/yacs_01.fr.xml>` * :download:`un exemple de script python <../files/yacs_script.py>` * :download:`un exemple de script python qui ne fait rien <../files/yacs_script_test.py>` -Il faut l'adapter à la simulation envisagée. En particulier, il faut : +Il faut l'adapter à la simulation envisagée. En particulier, il faut : -- ajuster les noms des fichiers et des répertoires -- fournir un script de lancement du calcul respectant les consignes évoquées ci-avant -- choisir les hypothèses de pilotage de l'adaptation -- mettre en place le test d'arrêt +- ajuster les noms des fichiers et des répertoires +- fournir un script de lancement du calcul respectant les consignes évoquées ci-avant +- choisir les hypothèses de pilotage de l'adaptation +- mettre en place le test d'arrêt diff --git a/resources/yacs_01.en.xml b/resources/yacs_01.en.xml index da766f03..0f21bf76 100644 --- a/resources/yacs_01.en.xml +++ b/resources/yacs_01.en.xml @@ -54,9 +54,9 @@ import HOMARD_Hypothesis_idl import HOMARD_Zone_idl import HOMARD_Boundary_idl -clt = orbmodule.client() -StudyManager = clt.Resolve("/myStudyManager") -CurrentStudy = StudyManager.GetStudyByID(1) +import salome +salome.salome_init() +CurrentStudy = salome.myStudy ]]> diff --git a/resources/yacs_01.fr.xml b/resources/yacs_01.fr.xml index a05d1645..5ec67d64 100644 --- a/resources/yacs_01.fr.xml +++ b/resources/yacs_01.fr.xml @@ -54,9 +54,9 @@ import HOMARD_Hypothesis_idl import HOMARD_Zone_idl import HOMARD_Boundary_idl -clt = orbmodule.client() -StudyManager = clt.Resolve("/myStudyManager") -CurrentStudy = StudyManager.GetStudyByID(1) +import salome +salome.salome_init() +CurrentStudy = salome.myStudy ]]>