]> SALOME platform Git repositories - modules/homard.git/commitdiff
Salome HOME
Modif Gerald 09-2011
authorpnoyret <pnoyret>
Fri, 16 Sep 2011 08:34:54 +0000 (08:34 +0000)
committerpnoyret <pnoyret>
Fri, 16 Sep 2011 08:34:54 +0000 (08:34 +0000)
55 files changed:
doc/Makefile.am
doc/files/tutorial_2.py
doc/files/tutorial_3.py
doc/files/tutorial_4.py
doc/gui_create_boundary.rst
doc/gui_create_case.rst
doc/gui_create_hypothese.rst
doc/gui_create_iteration.rst
doc/gui_create_zone.rst
doc/gui_homard.rst [new file with mode: 0644]
doc/gui_usage.rst
doc/images/create_boundary_1.png
doc/images/create_boundary_an_1.png
doc/images/create_boundary_an_2.png
doc/images/create_boundary_an_3.png
doc/images/create_boundary_an_4.png
doc/images/create_boundary_an_cy.png
doc/images/create_boundary_an_sp.png
doc/images/create_boundary_di_1.png
doc/images/create_boundary_di_2.png
doc/images/create_boundary_di_3.png
doc/images/create_case_1.png
doc/images/create_case_2.png
doc/images/create_case_3.png
doc/images/create_case_4.png
doc/images/create_case_5.png
doc/images/create_case_6.png
doc/images/create_hypothese_1.png
doc/images/create_hypothese_2.png
doc/images/create_hypothese_ch_1.png
doc/images/create_hypothese_ch_2.png
doc/images/create_hypothese_ch_3.png
doc/images/create_hypothese_ch_4.png
doc/images/create_hypothese_ch_5.png
doc/images/create_hypothese_gr_1.png
doc/images/create_hypothese_gr_2.png
doc/images/create_hypothese_zo_1.png
doc/images/create_hypothese_zo_2.png
doc/images/create_iteration_1.png
doc/images/create_iteration_2.png
doc/images/create_iteration_3.png
doc/images/create_iteration_4.png
doc/images/create_iteration_5.png
doc/images/create_iteration_6.png
doc/images/create_iteration_7.png
doc/images/create_zone_1.png
doc/images/create_zone_2.png
doc/images/lancement_1.png
doc/tui_create_boundary.rst
doc/tui_create_case.rst
doc/tui_create_hypothese.rst
doc/tui_create_iteration.rst
doc/tui_create_zone.rst
doc/tui_homard.rst
doc/tutorials.rst

index 88089e5c32b45106a4186134c2c60f6a2b4e9606..53bc4a345413bdd06738fe8da296210a1ae230df 100644 (file)
@@ -52,6 +52,7 @@ gui_create_case.rst \
 gui_create_hypothese.rst \
 gui_create_iteration.rst \
 gui_create_zone.rst \
+gui_homard.rst \
 gui_usage.rst \
 index.rst \
 intro.rst \
index 36842aea294c48603c048b3c98535ae25d7d7735..ed0f62c7e8ea460327194a40d9a5465ba83302a3 100644 (file)
@@ -24,7 +24,7 @@
 Exemple de couplage HOMARD-Salome
 Copyright EDF-R&D 1996, 2010
 """
-__revision__ = "V1.1"
+__revision__ = "V1.2"
 #
 # ==================================
 # Repertoire a personnaliser
@@ -44,16 +44,13 @@ homard.SetCurrentStudy(salome.myStudy)
 # Creation of the zones
 # =====================
 # Box "Zone_0"
-Zone_0 = homard.CreateZone('Zone_0', 2)
-Zone_0.SetBox(-0.1, 1.1, -0.1, 1.1, 0.9, 1.1)
+Zone_0 = homard.CreateZoneBox ('Zone_0', -0.1, 1.1, -0.1, 1.1, 0.9, 1.1)
 #
 # Sphere "Zone_1"
-Zone_1 = homard.CreateZone('Zone_1', 4)
-Zone_1.SetSphere(0., 0., 0., 1.05)
+Zone_1 = homard.CreateZoneSphere ('Zone_1', 0., 0., 0., 1.05)
 #
 # Box "Zone_2"
-Zone_2 = homard.CreateZone('Zone_2', 2)
-Zone_2.SetBox(-0.1, 0.51, -0.1, 0.51, -0.1, 0.51)
+Zone_2 = homard.CreateZoneBox ('Zone_2', -0.1, 0.51, -0.1, 0.51, -0.1, 0.51)
 #
 # Hypothesis "Hypo_0"
 # ===================
index 9d90be744924755cc279c9ffa2e7c3c99fff1df6..7b010bc34d9bacce069f82be16d5a2b553d57e91 100644 (file)
@@ -24,7 +24,7 @@
 Exemple de couplage HOMARD-Salome
 Copyright EDF-R&D 1996, 2010
 """
-__revision__ = "V1.1"
+__revision__ = "V1.2"
 #
 # ==================================
 # Repertoire a personnaliser
@@ -41,57 +41,81 @@ homard = salome.lcc.FindOrLoadComponent("FactoryServer", "HOMARD")
 study_main = salome.myStudyManager.NewStudy("HOMARD")
 homard.SetCurrentStudy(salome.myStudy)
 #
-# Hypothesis "Hypo_0"
-# ===================
-Hypo_0 = homard.CreateHypothesis('Hypo_0')
-Hypo_0.SetAdapRefinUnRef(1, 1, 0)
+# Hypothesis "Hypo_0vers1"
+# ========================
+Hypo_0vers1 = homard.CreateHypothesis('Hypo_0vers1')
+Hypo_0vers1.SetAdapRefinUnRef(1, 1, 0)
 # Characterization of the field
-Hypo_0.SetField('SOLU_0__QIRE_ELEM_SIGM__________')
-Hypo_0.SetUseComp(0)
-Hypo_0.AddComp('ERREST          ')
-Hypo_0.SetRefinThr(3, 1.0)
-Hypo_0.SetTypeFieldInterp(2)
-Hypo_0.AddFieldInterp('SOLU_0__DEPL____________________')
-Hypo_0.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
-#
-# Hypothesis "Hypo_1"
-# ===================
-Hypo_1 = homard.CreateHypothesis('Hypo_1')
-Hypo_1.SetAdapRefinUnRef(1, 1, 1)
+Hypo_0vers1.SetField('SOLU_0__QIRE_ELEM_SIGM__________')
+Hypo_0vers1.SetUseComp(0)
+Hypo_0vers1.AddComp('ERREST          ')
+Hypo_0vers1.SetRefinThr(3, 1.0)
+Hypo_0vers1.SetTypeFieldInterp(2)
+Hypo_0vers1.AddFieldInterp('SOLU_0__DEPL____________________')
+Hypo_0vers1.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
+#
+# Hypothesis "Hypo_1vers2"
+# ========================
+Hypo_1vers2 = homard.CreateHypothesis('Hypo_1vers2')
+Hypo_1vers2.SetAdapRefinUnRef(1, 1, 1)
 # Characterization of the field
-Hypo_1.SetField('SOLU_1__QIRE_ELEM_SIGM__________')
-Hypo_1.SetUseComp(0)
-Hypo_1.AddComp('ERREST          ')
-Hypo_1.SetRefinThr(3, 1.5)
-Hypo_1.SetUnRefThr(3, 6.)
-Hypo_1.SetTypeFieldInterp(2)
-Hypo_1.AddFieldInterp('SOLU_1__DEPL____________________')
-Hypo_1.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
-#
-# Case "Case_0"
-# =============
-Case_0 = homard.CreateCase('Case_0', 'G_0', dircase+'/tutorial_3.00.med')
-Case_0.SetDirName(dircase)
+Hypo_1vers2.SetField('SOLU_1__QIRE_ELEM_SIGM__________')
+Hypo_1vers2.SetUseComp(0)
+Hypo_1vers2.AddComp('ERREST          ')
+Hypo_1vers2.SetRefinThr(3, 1.5)
+Hypo_1vers2.SetUnRefThr(3, 6.)
+Hypo_1vers2.SetTypeFieldInterp(2)
+Hypo_1vers2.AddFieldInterp('SOLU_1__DEPL____________________')
+Hypo_1vers2.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
 #
-# Iteration "Iter_0"
-# ==================
-Iter_0 = homard.CreateIteration('Iter_0', Case_0.GetIter0Name())
-Iter_0.SetMeshName('H_1')
-Iter_0.SetMeshFile(dircase+'/maill.01.med')
-Iter_0.SetFieldFile(dircase+'/tutorial_3.00.med')
-Iter_0.SetTimeStepRank( 1, 1)
-homard.AssociateIterHypo('Iter_0', 'Hypo_0')
-codret = homard.Compute('Iter_0', 1)
+# Hypothesis "Hypo_1vers2_bis"
+# ============================
+Hypo_1vers2_bis = homard.CreateHypothesis('Hypo_1vers2_bis')
+Hypo_1vers2_bis.SetAdapRefinUnRef(1, 1, 1)
+# Characterization of the field
+Hypo_1vers2_bis.SetField('SOLU_1__DEPL____________________')
+Hypo_1vers2_bis.SetUseComp(1)
+Hypo_1vers2_bis.AddComp('DX')
+Hypo_1vers2_bis.AddComp('DY')
+Hypo_1vers2_bis.AddComp('DZ')
+Hypo_1vers2_bis.SetRefinThr(1, 0.0001)
+Hypo_1vers2_bis.SetUnRefThr(1, 0.000001)
+Hypo_1vers2_bis.SetTypeFieldInterp(0)
+#
+# Case "Case_1"
+# =============
+Case_1 = homard.CreateCase('Case_1', 'G_0', dircase+'/tutorial_3.00.med')
+Case_1.SetDirName(dircase)
 #
 # Iteration "Iter_1"
 # ==================
-Iter_1 = homard.CreateIteration('Iter_1', 'Iter_0')
-Iter_1.SetMeshName('H_2')
-Iter_1.SetMeshFile(dircase+'/maill.02.med')
-Iter_1.SetFieldFile(dircase+'/tutorial_3.01.med')
-Iter_1.SetTimeStepRank(1, 1)
-homard.AssociateIterHypo('Iter_1', 'Hypo_1')
+Iter_1 = homard.CreateIteration('Iter_1', Case_1.GetIter0Name())
+Iter_1.SetMeshName('H_1')
+Iter_1.SetMeshFile(dircase+'/maill.01.med')
+Iter_1.SetFieldFile(dircase+'/tutorial_3.00.med')
+Iter_1.SetTimeStepRank( 1, 1)
+homard.AssociateIterHypo('Iter_1', 'Hypo_0vers1')
 codret = homard.Compute('Iter_1', 1)
-
+#
+# Iteration "Iter_2"
+# ==================
+Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1')
+Iter_2.SetMeshName('H_2')
+Iter_2.SetMeshFile(dircase+'/maill.02.med')
+Iter_2.SetFieldFile(dircase+'/tutorial_3.01.med')
+Iter_2.SetTimeStepRank(1, 1)
+homard.AssociateIterHypo('Iter_2', 'Hypo_1vers2')
+codret = homard.Compute('Iter_2', 1)
+#
+# Iteration "Iter_2_bis"
+# ======================
+Iter_2_bis = homard.CreateIteration('Iter_2_bis', 'Iter_1')
+Iter_2_bis.SetMeshName('H_2_bis')
+Iter_2_bis.SetMeshFile(dircase+'/maill.02.bis.med')
+Iter_2_bis.SetFieldFile(dircase+'/tutorial_3.01.med')
+Iter_2_bis.SetTimeStepRank(1, 1)
+homard.AssociateIterHypo('Iter_2_bis', 'Hypo_1vers2_bis')
+codret = homard.Compute('Iter_2_bis', 1)
+#
 if salome.sg.hasDesktop():
   salome.sg.updateObjBrowser(1)
index 523df291ce4b71b58e79cf0346bf9f093b122f98..9ca58731483b8e25acd9fa8ae19bea10453c4775 100644 (file)
@@ -24,7 +24,7 @@
 Exemple de couplage HOMARD-Salome
 Copyright EDF-R&D 1996, 2011
 """
-__revision__ = "V1.1"
+__revision__ = "V1.2"
 #
 # ==================================
 # Repertoire a personnaliser
@@ -43,33 +43,29 @@ homard.SetCurrentStudy(salome.myStudy)
 #
 # Creation of the boundaries
 # ==========================
-Boundary_1 = homard.CreateBoundary('intersection', 0)
-Boundary_1.SetMeshFile(dircase+'/tutorial_4.fr.med')
-Boundary_1.SetMeshName('PIQUAGE')
+Boundary_1 = homard.CreateBoundaryDi('intersection', 'PIQUAGE', dircase+'/tutorial_4.fr.med')
 #
-Boundary_2 = homard.CreateBoundary('cyl_1_ext', 1)
-Boundary_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+Boundary_2 = homard.CreateBoundaryCylinder('cyl_1_ext', 0.0, 25., -25., 25., 50., 75., 100.)
 #
-Boundary_3 = homard.CreateBoundary('cyl_2_ext', 1)
-Boundary_3.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 50.)
+Boundary_3 = homard.CreateBoundaryCylinder('cyl_2_ext', 17.5, -2.5, -12.5, -100., -75., -25., 50.)
 #
-Boundary_4 = homard.CreateBoundary('cyl_1_int', 1)
-Boundary_4.SetCylinder(0.0, 25., -25., 25., 50., 75., 75.)
+Boundary_4 = homard.CreateBoundaryCylinder('cyl_1_int', 0.0, 25., -25., 25., 50., 75., 75.)
 #
-Boundary_5 = homard.CreateBoundary('cyl_2_int', 1)
-Boundary_5.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 25.)
+Boundary_5 = homard.CreateBoundaryCylinder('cyl_2_int', 17.5, -2.5, -12.5, -100., -75., -25., 25.)
 #
-# Hypothesis "Hypo"
-# ===================
+# Hypothesis
+# ==========
 # Creation of the hypothesis Hypo_1
 Hypo_1 = homard.CreateHypothesis('Hypo_1')
 Hypo_1.SetAdapRefinUnRef(-1, 1, 0)
-Hypo_1.AddGroup('T1_INT')
+Hypo_1.AddGroup('T1_INT_I')
+Hypo_1.AddGroup('T1_INT_O')
 Hypo_1.AddGroup('T2_INT')
 # Creation of the hypothesis Hypo_2
 Hypo_2 = homard.CreateHypothesis('Hypo_2')
 Hypo_2.SetAdapRefinUnRef(-1, 1, 0)
-Hypo_2.AddGroup('T1_EXT')
+Hypo_2.AddGroup('T1_EXT_I')
+Hypo_2.AddGroup('T1_EXT_O')
 Hypo_2.AddGroup('T2_EXT')
 #
 # Case "Case"
index 3268897d411f7d2a3d9c42413f4126fd299eaa78..9fb18473cd8f1fa780e2635b765bab9e516d9196 100644 (file)
@@ -18,7 +18,7 @@ Fronti
 
 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 'New' :
+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
@@ -31,7 +31,7 @@ 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 'New', 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
@@ -45,7 +45,7 @@ Au d
 .. image:: images/create_boundary_an_1.png
    :align: center
 
-Il faut créer une première frontière analytique par activation du bouton 'New'. On aura le choix entre cylindre ou sphère. 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 ou sphère. 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
@@ -99,6 +99,7 @@ La sph
    :align: center
 
 .. index:: single: arbre d'étude
+
 L'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.
@@ -107,4 +108,9 @@ A l'issue de cette cr
    :align: center
 
 
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter : :ref:`tui_create_boundary`
+
+
 
index 7ebf7c87e6a2601f8ea2eb3c53f2f7588467b342..5e0f019574c6e3fa5755d7d3fa1945705d43ff66 100644 (file)
@@ -79,13 +79,31 @@ On cochera le ou les boutons voulus :
 La définition des frontières est décrite dans :ref:`gui_create_boundary`.
 
 
+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 qui 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.
+
+.. image:: images/create_case_6.png
+   :align: center
+
 .. index:: single: 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.
 
-.. image:: images/create_case_6.png
+.. image:: images/create_case_7.png
    :align: center
 
 
+
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter :ref:`tui_create_case`
+
index dfd894f927c4cb9af208ecd66839df5e3aa8a094..b4d2eeca23a423d0fccadf6b9750ad7d11a93194 100644 (file)
@@ -18,7 +18,7 @@ Il existe trois classes d'hypoth
 
 Nom de l'hypothèse
 """"""""""""""""""
-Un nom de l'hypothèse est proposé automatiquement : Hypo_0, Hypo_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente.
+Un nom de l'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
 """""""""""""""""""
@@ -34,13 +34,17 @@ Adaptation selon un champ
    :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. Si l'on choisi 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).
+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).
+
+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 lesqules l'indicateur est supérieur à ce critère seront raffinées.
+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, trois 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.
@@ -57,12 +61,12 @@ Adaptation selon une zone
 """""""""""""""""""""""""
 .. index:: single: zone
 
-Au démarrage, il faut créer une première zone par activation du bouton 'New' (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.
+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.
 
 .. image:: images/create_hypothese_zo_2.png
    :align: center
@@ -72,7 +76,8 @@ Filtrage par les groupes
 """"""""""""""""""""""""
 .. index:: single: groupe
 
-On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. 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 modidié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
@@ -111,3 +116,7 @@ L'arbre d'
    :align: center
 
 
+
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter :ref:`tui_create_hypothese`
index 5f4c83d1226fb7ebcee3d7f09c5c832a2bd6949d..c1eb39fc945734875ca90d17a3d6cd4786b0bbcd 100644 (file)
@@ -3,6 +3,7 @@
 L'itération
 ===========
 .. index:: single: itération
+
 La définition d'une itération se fait par la donnée des informations suivantes :
 
   - L'itération précédente
@@ -13,22 +14,23 @@ La d
 .. image:: images/create_iteration_1.png
    :align: center
 
-
 Le nom de l'itération
 """""""""""""""""""""
-Un nom de cas est proposé automatiquement : Iter_0, Iter_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente.
+Un nom de cas 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 est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché.
 
 .. index:: single: 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.
 
 .. 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.
@@ -37,22 +39,23 @@ Pour cr
 .. image:: images/create_iteration_2.png
    :align: center
 
-Dasn 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 "Choosen time step" ; les valeurs de 'Time Step' et de 'Rank' sont celles correspondant à la convention MED.
+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).
 
 .. image:: images/create_iteration_3.png
    :align: center
 
 .. index:: single: hypothèse
+
 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 choisi 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 'New' (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, il faut éventuellement créer une nouvelle hypothèse par activation du bouton 'New', puis sélectionner celle voulue 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
@@ -62,9 +65,10 @@ Ensuite, il faut 
   Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse.
 
 .. index:: single: arbre d'étude
+
 L'arbre d'étude
 """""""""""""""
-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.
+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
@@ -74,5 +78,6 @@ Quand plusieurs it
 .. image:: images/create_iteration_7.png
    :align: center
 
-
-
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter :ref:`tui_create_iteration`
index e178002f36469fbe9680f965305e522caa71faf8..b57e47250062bce21a96f533723449d11d43e746 100644 (file)
@@ -3,14 +3,30 @@
 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.
 
-Il existe deux types de zone :
+En 3D, il existe quatre types de zone :
 
   - Parallélépipède
+  - Cylindre
+  - Tuyau
   - Sphère
 
+Leurs analogues en 2D sont :
+
+  - Rectangle
+  - Disque
+  - 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.
+
+.. note::
+  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.
@@ -19,22 +35,67 @@ Un parall
 """"""""""""""""""
 .. index:: single: boite
 
-Le parallélépipède est forcément 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
 
+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.
+
+.. image:: images/create_zone_2.png
+   :align: center
+
+Un tuyau
+""""""""
+.. index:: single: tuyau
+
+Le cylindre 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
 """"""""""
 .. index:: single: sphere
 
 La sphère est définie par son centre et son rayon.
 
-.. image:: images/create_zone_2.png
+.. image:: images/create_zone_4.png
    :align: center
 
-.. note::
-  Les valeurs proposées par défaut tiennent compte de la géométrie du maillage.
+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.
+
+.. image:: images/create_zone_21.png
+   :align: center
+
+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.
+
+.. image:: images/create_zone_22.png
+   :align: center
+
+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.
+
+.. image:: images/create_zone_23.png
+   :align: center
 
 
 
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter :ref:`tui_create_zone`
diff --git a/doc/gui_homard.rst b/doc/gui_homard.rst
new file mode 100644 (file)
index 0000000..406b173
--- /dev/null
@@ -0,0 +1,44 @@
+.. _gui_homard:
+
+Le calcul
+=========
+.. index:: single: itération
+.. index:: single: calcul
+
+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*" dans le menu HOMARD ou à la souris.
+
+.. image:: images/lancement_1.png
+   :align: center
+
+
+.. index:: single: 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 :
+
+  - *rep*/I(n+1)/Liste.n.vers.(n+1)
+  - *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) 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 obtenus.
+Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. 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
+""""""""""""""""""""""""""""""""""""""
+Les deux fichiers de texte, Liste.n.vers.(n+1) 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
+
+Méthodes python correspondantes
+"""""""""""""""""""""""""""""""
+Consulter :ref:`tui_homard`
+
index cf162a2a1c0781d6a8a82c9651c6caaa5fd46136..b75a22df64b5a6370320b0044d03acbabeaf9167 100644 (file)
@@ -10,21 +10,16 @@ Pour utiliser le module HOMARD, deux fa
 #. 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.
+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
 """"""""""""""""""""""
 
-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`).
-
-Récupérer le résultat d'une adaptation
-""""""""""""""""""""""""""""""""""""""
-Le résultat d'une adaptation s'obtient en sélectionnant l'itération à calculer. On sélectionne ensuite *Lancement* dans le menu HOMARD.
-
-.. image:: images/lancement_1.png
-   :align: center
+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`.
 
-Le fichier contenant le maillage produit est visible dans l'arbre d'études.
 
 Mode d'emploi de la saisie des données
 """"""""""""""""""""""""""""""""""""""
@@ -36,4 +31,6 @@ Mode d'emploi de la saisie des donn
    gui_create_iteration
    gui_create_hypothese
    gui_create_zone
+   gui_create_boundary
+   gui_homard
 
index 4416bbacde26708d7cf5f8e74889e45ae9ddcdb0..0460d48594962c3081f8f2aef2c5836eaec2cace 100644 (file)
Binary files a/doc/images/create_boundary_1.png and b/doc/images/create_boundary_1.png differ
index a148efb1eaa4c0cc1c30ed4cb96dd72508dcee03..09630eb80cc79814445d61b35b52d09c9c844167 100644 (file)
Binary files a/doc/images/create_boundary_an_1.png and b/doc/images/create_boundary_an_1.png differ
index 27d70efd094c54cb2a7453c4471fd0c80f7dbc28..25c6e9b1d0fcfe386fd6917335ed9e6714e7c52b 100644 (file)
Binary files a/doc/images/create_boundary_an_2.png and b/doc/images/create_boundary_an_2.png differ
index 129868e4d376cbee00b5456472dd5ee3e0d0a4fc..6f38d9f8ff54f0dcc42658d378f59c704f0917e1 100644 (file)
Binary files a/doc/images/create_boundary_an_3.png and b/doc/images/create_boundary_an_3.png differ
index 7229a76eb23b3dfa05eeb2aa3437d6c984ef3901..abf10421375e1733b99a22f424b27c41576fd117 100644 (file)
Binary files a/doc/images/create_boundary_an_4.png and b/doc/images/create_boundary_an_4.png differ
index 4b8e6481bd6e3faddde48056fd35789bf22a1f3f..e3fef853917ab09a15a2f786f98dcfe3fa1a4135 100644 (file)
Binary files a/doc/images/create_boundary_an_cy.png and b/doc/images/create_boundary_an_cy.png differ
index 5e78c78cd91ad316a0f1a25e3e5f5881d6745e9b..27b944307b6e21a77e8ed6b57e80fc77aa648930 100644 (file)
Binary files a/doc/images/create_boundary_an_sp.png and b/doc/images/create_boundary_an_sp.png differ
index 5ad7b254f928d664d8bb330be48657a86b07ccb2..8f80605d8f067606655906f2bccf10a61b842c70 100644 (file)
Binary files a/doc/images/create_boundary_di_1.png and b/doc/images/create_boundary_di_1.png differ
index 9501528db0e53cc5ec5eb18cba16c0f7075145c6..d952edabbbf7af799ceca14405f461cae2d6e401 100644 (file)
Binary files a/doc/images/create_boundary_di_2.png and b/doc/images/create_boundary_di_2.png differ
index 5b548dde3b132c04d9f12f41601741a4fb590617..01195a123471898703eb230acfed14b28bf660cd 100644 (file)
Binary files a/doc/images/create_boundary_di_3.png and b/doc/images/create_boundary_di_3.png differ
index 9c4207509dbe4e49cae077264466f5984e4ca28c..e326f1fc352121c4e0be10b219b2762e932e266e 100644 (file)
Binary files a/doc/images/create_case_1.png and b/doc/images/create_case_1.png differ
index 206407890ebe8dc91ebc9fa137642d9c88e4372d..435a518638f31129b060c3136bfa2151282cdad0 100644 (file)
Binary files a/doc/images/create_case_2.png and b/doc/images/create_case_2.png differ
index 8f9e05121af99e2b593ce0f9642c32e8e7e64326..eba3197175eb469f5d2ba4475461cc73ae4af7bd 100644 (file)
Binary files a/doc/images/create_case_3.png and b/doc/images/create_case_3.png differ
index d4e1089e873885bdd69cf78d120dd2c4680755c2..3429fd65584c7c5261f010b020675b56767c3471 100644 (file)
Binary files a/doc/images/create_case_4.png and b/doc/images/create_case_4.png differ
index 239e4b95ff9be64528c75dfc4d3cf95f646f43b8..418535b5505f38946e1ab77cc1c1bb4497a356ba 100644 (file)
Binary files a/doc/images/create_case_5.png and b/doc/images/create_case_5.png differ
index e607d9b41e8049b21a81777aad88cfefcb73fd9e..1c48bd45cacd559f748bd2b200bb4abca060ccca 100644 (file)
Binary files a/doc/images/create_case_6.png and b/doc/images/create_case_6.png differ
index 4239c3350359c403fcdecd5b81552fec789916a6..eb040157ec213fcce24401d05e8cd04b4a8fc7ba 100644 (file)
Binary files a/doc/images/create_hypothese_1.png and b/doc/images/create_hypothese_1.png differ
index cdcb199e5637ef05266968c57a92e6efe61ffea9..fbb434b268e8ce36f5989b728859484c8c326fe2 100644 (file)
Binary files a/doc/images/create_hypothese_2.png and b/doc/images/create_hypothese_2.png differ
index 6478cb0cf659c1a1e46cc74bb26930d6a7678dd6..392ef7b75d7a663ed2e715e6341457ec2a8efd39 100644 (file)
Binary files a/doc/images/create_hypothese_ch_1.png and b/doc/images/create_hypothese_ch_1.png differ
index 96a94cf23b24b6ef594e8c11e5cd67e72f6772b2..ce3d9441c5ac5399be07a5da5c82d0eaf5dd68e4 100644 (file)
Binary files a/doc/images/create_hypothese_ch_2.png and b/doc/images/create_hypothese_ch_2.png differ
index bed6fce798a740ec320a434f3cc41d4a6202435e..d1f146c6b61cc447a7f7a946893601de39f67c82 100644 (file)
Binary files a/doc/images/create_hypothese_ch_3.png and b/doc/images/create_hypothese_ch_3.png differ
index 18fbc5850c2d1f9a6ea2445da227a4c865093336..b48f6511b5180d3a83f5a751ba17cd3713804889 100644 (file)
Binary files a/doc/images/create_hypothese_ch_4.png and b/doc/images/create_hypothese_ch_4.png differ
index 290bb99802c17cfccc813b53dccbc8002cc8db8a..4151dd83ddd29863e2006c92610b39a358138ff4 100644 (file)
Binary files a/doc/images/create_hypothese_ch_5.png and b/doc/images/create_hypothese_ch_5.png differ
index 1bfd0b60366d948315656fc440b0d67f61892821..34f937f142bbb279f7b1024da9d157a1769ea793 100644 (file)
Binary files a/doc/images/create_hypothese_gr_1.png and b/doc/images/create_hypothese_gr_1.png differ
index 615dba21d3b32543fe849c7d8aba183396c51cfb..3153ad4364b8163e54fc4da28103601c208cb219 100644 (file)
Binary files a/doc/images/create_hypothese_gr_2.png and b/doc/images/create_hypothese_gr_2.png differ
index d5a7ee220a3cb9990eb61cf146ec98e7f4bc1133..e84980304bfa00846a54312b00fdc89923051f73 100644 (file)
Binary files a/doc/images/create_hypothese_zo_1.png and b/doc/images/create_hypothese_zo_1.png differ
index d8b6ecd672b9f3233158fbd266027509d27dbd71..fea54a5aafb5bb270ca2079177dbfd513d2722c1 100644 (file)
Binary files a/doc/images/create_hypothese_zo_2.png and b/doc/images/create_hypothese_zo_2.png differ
index 4d37f73fc72fb5107b5ab1754293d9015afc8dc9..affb0286ebc3d9ee91d6d42c744a33192168862e 100644 (file)
Binary files a/doc/images/create_iteration_1.png and b/doc/images/create_iteration_1.png differ
index b0cb75363e78a138893fdf8daddde7971ae94c36..3c02793fa3681863a3d985fe93880b965bc1821b 100644 (file)
Binary files a/doc/images/create_iteration_2.png and b/doc/images/create_iteration_2.png differ
index c6971c9a7adec788fa65cef1831858a54434c18b..a00ede7f2f6b3c6cff8ae50d50d1bb0def4a2eb5 100644 (file)
Binary files a/doc/images/create_iteration_3.png and b/doc/images/create_iteration_3.png differ
index f0b4d5aeee4049b0531358d8ac71ab7c023cc448..43665308ebc852aeea3c1df060f528be8b53952c 100644 (file)
Binary files a/doc/images/create_iteration_4.png and b/doc/images/create_iteration_4.png differ
index 414c6db65d1ba04a510321d52c6327e1590d5f7e..92a9ab00a498cb51699a138ee5a7c2edc70eb742 100644 (file)
Binary files a/doc/images/create_iteration_5.png and b/doc/images/create_iteration_5.png differ
index 51db52b5f1257b077282aba8512699c499d7f879..339e1e10a97a696f33394797de6db4292c720286 100644 (file)
Binary files a/doc/images/create_iteration_6.png and b/doc/images/create_iteration_6.png differ
index cdcb199e5637ef05266968c57a92e6efe61ffea9..8816eeffb9c41c48868f4b208bac1b7ba83f4435 100644 (file)
Binary files a/doc/images/create_iteration_7.png and b/doc/images/create_iteration_7.png differ
index e58f862f34707947451ec5df7390a58760df9059..aa32ef17b2c07e0b02e5c01453b90e84d8726cb0 100644 (file)
Binary files a/doc/images/create_zone_1.png and b/doc/images/create_zone_1.png differ
index d856c0b368805301ecd02a49ed771dafc91edc57..1664d52f4076a1b8074f991e9a2312d04909488a 100644 (file)
Binary files a/doc/images/create_zone_2.png and b/doc/images/create_zone_2.png differ
index 39fe8c1d46f20333d9bff7d3695a3e83a602c945..03b76a9d39464c61350b59636ca436de3bbb17a1 100644 (file)
Binary files a/doc/images/lancement_1.png and b/doc/images/lancement_1.png differ
index e116b9477f1046a0a2e1f661d0fb2a72fa732dac..73c65404c6d6f6305c8ccc2ed3f2b88993329c49 100644 (file)
@@ -12,62 +12,72 @@ Les variables sont d
 
 Méthodes de la classe homard
 """"""""""""""""""""""""""""
+Ces méthodes retournent une instance de la classe boundary.
 
-+----------------------------------------------------------------+
-+================================================================+
-| .. module:: CreateBoundary                                     |
-|                                                                |
-| **CreateBoundary(boundary_name, boundary_type)**               |
-|                                                                |
-|     - ``boundary_name`` : le nom de la zone                    |
-|     - ``boundary_type`` : entier précisant le type de frontière|
-|                                                                |
-|         * 1 : cylindre                                         |
-|         * 2 : sphère                                           |
-+----------------------------------------------------------------+
++----------------------------------------------------------------------------------------+
++----------------------------------------------------------------------------------------+
+| .. module:: CreateBoundaryDi                                                           |
+|                                                                                        |
+| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)**                              |
+|                                                                                        |
+|     - ``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)**       |
+|                                                                                        |
+|     - ``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)**                           |
+|                                                                                        |
+|     - ``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                                                       |
++----------------------------------------------------------------------------------------+
 
 Méthodes de la classe boundary
 """"""""""""""""""""""""""""""
 
-+---------------------------------------------------------------+
-+===============================================================+
-| .. module:: GetName                                           |
-|                                                               |
-| **GetName()**                                                 |
-|     Retourne le nom de la frontière                           |
-+---------------------------------------------------------------+
-| .. module:: GetBoundaryType                                   |
-|                                                               |
-| **GetBoundaryType()**                                         |
-|     Retourne le type de la frontière                          |
-+---------------------------------------------------------------+
-| .. module:: SetCylinder                                       |
-|                                                               |
-| **SetCylinder(Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)**        |
-|                                                               |
-|     - ``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:: SetSphere                                         |
-|                                                               |
-| **SetSphere(Xcen, Ycen, Zcen, R)**                            |
-|                                                               |
-|     - ``Xcen`` : X du centre                                  |
-|     - ``Ycen`` : Y du centre                                  |
-|     - ``Zcen`` : Z du centre                                  |
-|     - ``R`` : rayon de la sphère                              |
-+---------------------------------------------------------------+
++-------------------------------------------------------------------+
++-------------------------------------------------------------------+
+| .. module:: GetName                                               |
+|                                                                   |
+| **GetName()**                                                     |
+|     Retourne le nom de la frontière                               |
++-------------------------------------------------------------------+
+| .. module:: GetBoundaryType                                       |
+|                                                                   |
+| **GetBoundaryType()**                                             |
+|     Retourne le type de la frontière :                            |
+|                                                                   |
+|         * 0 : discrète                                            |
+|         * 1 : cylindre                                            |
+|         * 2 : sphère                                              |
++-------------------------------------------------------------------+
+| .. module:: GetCoords                                             |
+|                                                                   |
+| **GetCoords()**                                                   |
+|     Retourne un tableau contenant les coordonnées de la frontière |
+|     dans l'ordre d'entrée dans le CreateBoundaryXXXX associé      |
++-------------------------------------------------------------------+
 
 
 Exemple
 """""""
-Création 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 : ::
 
-    fron_1 = homard.CreateBoundary("FRON_1", 2)
-    fron_1.SetSphere(12.3, 3.4, .56, 6.5)
-    fron_2 = homard.CreateBoundary('CYL_1', 1)
-    fron_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+    inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med')
+    fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5)
+    fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.)
 
 
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_create_boundary`
index 8750be31978a672beb85723b896cae984910231c..025521cdce9020560d7cbc091bf8ea037123f40b 100644 (file)
@@ -78,17 +78,41 @@ M
 | **AddBoundaryGroup(boundary, group)**                         |
 |                                                               |
 |     - ``boundary`` : nom d'une frontière courbe à suivre      |
+|                                                               |
 |     Pour une frontière discrète :                             |
 |                                                               |
 |     . si toutes les lignes courbes sont suivies, le second    |
 |       argument est une chaîne vide.                           |
 |     . si seulement certaines lignes courbes sont suivies,     |
 |       ``group`` est le nom d'un groupe de segments à suivre.  |
+|                                                               |
 |     Pour une frontière analytique :                           |
 |                                                               |
 |     - ``group`` : nom d'un groupe de faces placées sur la     |
 |       frontière                                               |
 +---------------------------------------------------------------+
+| .. module:: SetNivMax                                         |
+|                                                               |
+| **SetNivMax(nivmax)**                                         |
+|                                                               |
+|     - ``nivmax`` : niveau de raffinement à ne pas dépasser    |
++---------------------------------------------------------------+
+| .. module:: GetNivMax                                         |
+|                                                               |
+| **GetNivMax()**                                               |
+|     Retourne le niveau maximal de raffinement                 |
++---------------------------------------------------------------+
+| .. module:: SetDiamMin                                        |
+|                                                               |
+| **SetDiamMin(diammin)**                                       |
+|                                                               |
+|     - ``diammin`` : diamètre minimal voulu pour une maille    |
++---------------------------------------------------------------+
+| .. module:: GetDiamMin                                        |
+|                                                               |
+| **GetDiamMin()**                                              |
+|     Retourne le diamètre minimal voulu                        |
++---------------------------------------------------------------+
 
 
 Exemple
@@ -109,4 +133,8 @@ La cr
 
 
 
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_create_case`
+
 
index 4f44a4ae5d10cc4067b301cd99f83dbfc723b339..0ddd6e45df905bece565df3b3412db2989ff3aca 100644 (file)
@@ -13,7 +13,7 @@ M
 """"""""""""""""""""""""""""
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: CreateHypothesis                                  |
 |                                                               |
 | **CreateHypothesis(hypo_name)**                               |
@@ -36,7 +36,7 @@ G
 ^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: GetName                                           |
 |                                                               |
 | **GetName()**                                                 |
@@ -83,7 +83,7 @@ Le champ et les seuils
 ^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: SetField                                          |
 |                                                               |
 | **SetField(field_name)**                                      |
@@ -101,8 +101,8 @@ Le champ et les seuils
 |                                                               |
 |     - ``use_field`` : entier précisant l'usage du champ       |
 |                                                               |
-|         0. valeur par maille (défaut)                         |
-|         1. saut entre une maille et ses voisines              |
+|         0. valeur par élément (défaut)                        |
+|         1. saut entre un élément et ses voisins               |
 +---------------------------------------------------------------+
 | .. module:: SetRefinThr                                       |
 |                                                               |
@@ -146,7 +146,7 @@ Les composantes du champ
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: AddComp                                           |
 |                                                               |
 | **AddComp(comp_name)**                                        |
@@ -174,7 +174,7 @@ Le filtrage par les groupes
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: AddGroup                                          |
 |                                                               |
 | **AddGroup(group_name)**                                      |
@@ -199,3 +199,7 @@ La cr
     hypo_1.SetRefinThr(1, 80.)
 
 
+
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_create_hypothese`
index f09fc5c427c493ba1f03c1a15ea9415ce19b2413..35e19caec7434d884e6a225bf7b70dff514d5ef6 100644 (file)
@@ -13,7 +13,7 @@ M
 """"""""""""""""""""""""""""
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: CreateIteration                                   |
 |                                                               |
 | **CreateIteration(iter_name, iter_parent_name)**              |
@@ -41,7 +41,7 @@ G
 ^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: GetName                                           |
 |                                                               |
 | **GetName()**                                                 |
@@ -80,7 +80,7 @@ Informations sur les maillages
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: GetMeshName                                       |
 |                                                               |
 | **GetMeshName()**                                             |
@@ -103,7 +103,7 @@ Informations sur le champ
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: SetFieldFile                                      |
 |                                                               |
 | **SetFieldFile(field_file)**                                  |
@@ -155,3 +155,7 @@ Pour la cr
     iter_1.SetMeshFile("/local00/M.02.med")
     homard.AssociateIterHypo(iter_name, "HypoField")
 
+
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_create_iteration`
index 98c985a178ffa8f6eed8bb68f448597de4b4a8dd..8a5957d2d381da2fb64b3ffba6fe51fb79fbb093 100644 (file)
@@ -6,30 +6,114 @@ La zone
 .. index:: single: zone
 .. index:: single: boite
 .. index:: single: sphere
+.. index:: single: cylindre
+.. index:: single: tuyau
+.. index:: single: disque
+.. index:: single: disque avec trou
+.. index:: single: 2D
 
 Les variables sont décrites dans :ref:`gui_create_zone`.
 
 Méthodes de la classe homard
 """"""""""""""""""""""""""""
 
+Ces méthodes retournent une instance de la classe zone.
+
++----------------------------------------------------------------------------------+
++----------------------------------------------------------------------------------+
+| .. module:: CreateZoneBox                                                        |
+|                                                                                  |
+| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)**                 |
+|                                                                                  |
+|     - ``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)**   |
+|                                                                                  |
+|     - ``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                                                |
++----------------------------------------------------------------------------------+
+| .. module:: CreateZonePipe                                                       |
+|                                                                                  |
+| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** |
+|                                                                                  |
+|     - ``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                                                   |
+|     - ``R`` : rayon interne du tuyau                                             |
++----------------------------------------------------------------------------------+
+| .. module:: CreateZoneSphere                                                     |
+|                                                                                  |
+| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)**                             |
+|                                                                                  |
+|     - ``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)**                   |
+|                                                                                  |
+|     - ``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)**                             |
+|                                                                                  |
+|     - ``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          |
++----------------------------------------------------------------------------------+
+| .. module:: CreateZoneDiskWithHole                                               |
+|                                                                                  |
+| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)**               |
+|                                                                                  |
+|     - ``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          |
++----------------------------------------------------------------------------------+
+
+
+
 +---------------------------------------------------------------+
-+===============================================================+
-| .. module:: CreateZone                                        |
-|                                                               |
-| **CreateZone(zone_name, zone_type)**                          |
-|                                                               |
-|     - ``zone_name`` : le nom de la zone                       |
-|     - ``zone_type`` : entier précisant le type de zone        |
++---------------------------------------------------------------+
+|   La convention d'orientation du plan est la même que celle   |
+|   utilisée dans les autres modules de Salome, en particulier  |
+|   GEOM :                                                      |
 |                                                               |
-|         * 2 : parallélépipède                                 |
-|         * 4 : sphère                                          |
+|     1. plan XY ; U <==> X et V <==> Y                         |
+|     2. plan YZ ; U <==> Y et V <==> Z                         |
+|     3. plan ZX ; U <==> Z et V <==> X                         |
 +---------------------------------------------------------------+
 
+
+.. 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.
+
+
 Méthodes de la classe zone
 """"""""""""""""""""""""""
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. module:: GetName                                           |
 |                                                               |
 | **GetName()**                                                 |
@@ -39,30 +123,34 @@ M
 |                                                               |
 | **GetZoneType()**                                             |
 |     Retourne le type de la zone                               |
-+---------------------------------------------------------------+
-| .. module:: SetBox                                            |
 |                                                               |
-| **SetBox(Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)**                |
-|                                                               |
-|     - ``Xmin``, ``Xmax`` : X mini, X maxi                     |
-|     - etc.                                                    |
+|         * 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  |
 +---------------------------------------------------------------+
-| .. module:: SetSphere                                         |
+| .. module:: GetCoords                                         |
 |                                                               |
-| **SetSphere(Xcen, Ycen, Zcen, R)**                            |
-|                                                               |
-|     - ``Xcen`` : X du centre                                  |
-|     - ``Ycen`` : Y du centre                                  |
-|     - ``Zcen`` : Z du centre                                  |
-|     - ``R`` : rayon de la sphère                              |
+| **GetCoords()**                                               |
+|     Retourne un tableau contenant les coordonnées de la zone  |
+|     dans l'ordre d'entrée dans le CreateZoneXXXX associé      |
 +---------------------------------------------------------------+
 
 
 Exemple
 """""""
-La création de l'objet zone_1 se fait ainsi : ::
+La création d'une boîte 3D ou d'un disque dans le plan XY se fait ainsi : ::
+
+    zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8)
+    zone_2 = homard.CreateZoneDisk ("disque", 1., 3., 43.25, 1)
+
+
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_create_zone`
 
-    zone_1 = homard.CreateZone("Zone_2", 4)
-    zone_1.SetSphere(12.3, 3.4, .56, 6.5)
 
 
index 29eec9d79799d35f7c0fe4206fe1bce26777089d..9fbe16c6dc0fbf6ac72a419ba85cfc0bc24209e5 100644 (file)
@@ -1,8 +1,7 @@
 .. _tui_homard:
 
-L'adaptation
-============
-
+Le calcul
+=========
 .. index:: single: itération
 .. index:: single: calcul
 
@@ -10,7 +9,7 @@ M
 """"""""""""""""""""""""""""
 
 +---------------------------------------------------------------+
-+===============================================================+
++---------------------------------------------------------------+
 | .. index:: single: Compute                                    |
 |                                                               |
 | **Compute(iter_name, option)**                                |
@@ -19,7 +18,8 @@ M
 |                                                               |
 |     - ``iter_name`` : le nom de l'itération                   |
 |     - ``option`` : un entier précisant ce qui se passe quand  |
-|     des fichiers de résultats existent déjà                   |
+|       des fichiers de résultats existent déjà                 |
+|                                                               |
 |         * 0 : arrêt en erreur                                 |
 |         * 1 : écrasement des anciens fichiers                 |
 |                                                               |
@@ -35,3 +35,7 @@ Le calcul de l'it
 
     iter_name = "Iteration_1"
     codret = homard.Compute(iter_name, 1)
+
+Saisie graphique correspondante
+"""""""""""""""""""""""""""""""
+Consulter :ref:`gui_homard`
index 94645f5c8efa14d6c57b9ed22e2ceef1a6117788..8dbd7bdb181be95b970856ad1222273874a36b15 100644 (file)
@@ -2,6 +2,7 @@ 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 à modifier le contenu de la variable ``dircase`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. C'est dans ce répertoire que seront écrits les fichiers résultant des adaptations successives.
 
 Raffinement uniforme
@@ -69,16 +70,13 @@ On proc
   # Creation of the zones
   # =====================
   # Box "Zone_0"
-  Zone_0 = homard.CreateZone('Zone_0', 2)
-  Zone_0.SetBox(-0.1, 1.1, -0.1, 1.1, 0.9, 1.1)
+  Zone_0 = homard.CreateZoneBox('Zone_0', -0.1, 1.1, -0.1, 1.1, 0.9, 1.1)
   #
   # Sphere "Zone_1"
-  Zone_1 = homard.CreateZone('Zone_1', 4)
-  Zone_1.SetSphere(0., 0., 0., 1.05)
+  Zone_1 = homard.CreateZoneSphere('Zone_1', 0., 0., 0., 1.05)
   #
   # Box "Zone_2"
-  Zone_2 = homard.CreateZone('Zone_2', 2)
-  Zone_2.SetBox(-0.1, 0.51, -0.1, 0.51, -0.1, 0.51)
+  Zone_2 = homard.CreateZoneBox('Zone_2', -0.1, 0.51, -0.1, 0.51, -0.1, 0.51)
   #
   # Hypothesis "Hypo_0"
   # ===================
@@ -127,61 +125,86 @@ 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.
 ::
 
   dircase = "/tmp"
   #
-  # Hypothesis "Hypo_0"
-  # ===================
-  Hypo_0 = homard.CreateHypothesis('Hypo_0')
-  Hypo_0.SetAdapRefinUnRef(1, 1, 0)
+  # Hypothesis "Hypo_0vers1"
+  # ========================
+  Hypo_0vers1 = homard.CreateHypothesis('Hypo_0vers1')
+  Hypo_0vers1.SetAdapRefinUnRef(1, 1, 0)
   # Characterization of the field
-  Hypo_0.SetField('SOLU_0__QIRE_ELEM_SIGM__________')
-  Hypo_0.SetUseComp(0)
-  Hypo_0.AddComp('ERREST          ')
-  Hypo_0.SetRefinThr(3, 1.0)
-  Hypo_0.SetTypeFieldInterp(2)
-  Hypo_0.AddFieldInterp('SOLU_0__DEPL____________________')
-  Hypo_0.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
+  Hypo_0vers1.SetField('SOLU_0__QIRE_ELEM_SIGM__________')
+  Hypo_0vers1.SetUseComp(0)
+  Hypo_0vers1.AddComp('ERREST          ')
+  Hypo_0vers1.SetRefinThr(3, 1.0)
+  Hypo_0vers1.SetTypeFieldInterp(2)
+  Hypo_0vers1.AddFieldInterp('SOLU_0__DEPL____________________')
+  Hypo_0vers1.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
   #
-  # Hypothesis "Hypo_1"
-  # ===================
-  Hypo_1 = homard.CreateHypothesis('Hypo_1')
-  Hypo_1.SetAdapRefinUnRef(1, 1, 1)
+  # Hypothesis "Hypo_1vers2"
+  # ========================
+  Hypo_1vers2 = homard.CreateHypothesis('Hypo_1vers2')
+  Hypo_1vers2.SetAdapRefinUnRef(1, 1, 1)
   # Characterization of the field
-  Hypo_1.SetField('SOLU_1__QIRE_ELEM_SIGM__________')
-  Hypo_1.SetUseComp(0)
-  Hypo_1.AddComp('ERREST          ')
-  Hypo_1.SetRefinThr(3, 1.5)
-  Hypo_1.SetUnRefThr(3, 6.)
-  Hypo_1.SetTypeFieldInterp(2)
-  Hypo_1.AddFieldInterp('SOLU_1__DEPL____________________')
-  Hypo_1.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
+  Hypo_1vers2.SetField('SOLU_1__QIRE_ELEM_SIGM__________')
+  Hypo_1vers2.SetUseComp(0)
+  Hypo_1vers2.AddComp('ERREST          ')
+  Hypo_1vers2.SetRefinThr(3, 1.5)
+  Hypo_1vers2.SetUnRefThr(3, 6.)
+  Hypo_1vers2.SetTypeFieldInterp(2)
+  Hypo_1vers2.AddFieldInterp('SOLU_1__DEPL____________________')
+  Hypo_1vers2.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
   #
-  # Case "Case_0"
-  # =============
-  Case_0 = homard.CreateCase('Case_0', 'G_0', dircase+'/tutorial_3.00.med')
-  Case_0.SetDirName(dircase)
+  # Hypothesis "Hypo_1vers2_bis"
+  # ============================
+  Hypo_1vers2_bis = homard.CreateHypothesis('Hypo_1vers2_bis')
+  Hypo_1vers2_bis.SetAdapRefinUnRef(1, 1, 1)
+  # Characterization of the field
+  Hypo_1vers2_bis.SetField('SOLU_1__DEPL____________________')
+  Hypo_1vers2_bis.SetUseComp(1)
+  Hypo_1vers2_bis.AddComp('DX')
+  Hypo_1vers2_bis.AddComp('DY')
+  Hypo_1vers2_bis.AddComp('DZ')
+  Hypo_1vers2_bis.SetRefinThr(1, 0.0001)
+  Hypo_1vers2_bis.SetUnRefThr(1, 0.000001)
+  Hypo_1vers2_bis.SetTypeFieldInterp(0)
   #
-  # Iteration "Iter_0"
-  # ==================
-  Iter_0 = homard.CreateIteration('Iter_0', Case_0.GetIter0Name())
-  Iter_0.SetMeshName('H_1')
-  Iter_0.SetMeshFile(dircase+'/maill.01.med')
-  Iter_0.SetFieldFile(dircase+'/tutorial_3.00.med')
-  Iter_0.SetTimeStepRank( 1, 1)
-  homard.AssociateIterHypo('Iter_0', 'Hypo_0')
-  codret = homard.Compute('Iter_0', 1)
+  # Case "Case_1"
+  # =============
+  Case_1 = homard.CreateCase('Case_1', 'G_0', dircase+'/tutorial_3.00.med')
+  Case_1.SetDirName(dircase)
   #
   # Iteration "Iter_1"
   # ==================
-  Iter_1 = homard.CreateIteration('Iter_1', 'Iter_0')
-  Iter_1.SetMeshName('H_2')
-  Iter_1.SetMeshFile(dircase+'/maill.02.med')
-  Iter_1.SetFieldFile(dircase+'/tutorial_3.01.med')
-  Iter_1.SetTimeStepRank(1, 1)
-  homard.AssociateIterHypo('Iter_1', 'Hypo_1')
+  Iter_1 = homard.CreateIteration('Iter_1', Case_1.GetIter0Name())
+  Iter_1.SetMeshName('H_1')
+  Iter_1.SetMeshFile(dircase+'/maill.01.med')
+  Iter_1.SetFieldFile(dircase+'/tutorial_3.00.med')
+  Iter_1.SetTimeStepRank( 1, 1)
+  homard.AssociateIterHypo('Iter_1', 'Hypo_0vers1')
   codret = homard.Compute('Iter_1', 1)
+  #
+  # Iteration "Iter_2"
+  # ==================
+  Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1')
+  Iter_2.SetMeshName('H_2')
+  Iter_2.SetMeshFile(dircase+'/maill.02.med')
+  Iter_2.SetFieldFile(dircase+'/tutorial_3.01.med')
+  Iter_2.SetTimeStepRank(1, 1)
+  homard.AssociateIterHypo('Iter_2', 'Hypo_1vers2')
+  codret = homard.Compute('Iter_2', 1)
+  #
+  # Iteration "Iter_2_bis"
+  # ======================
+  Iter_2_bis = homard.CreateIteration('Iter_2_bis', 'Iter_1')
+  Iter_2_bis.SetMeshName('H_2_bis')
+  Iter_2_bis.SetMeshFile(dircase+'/maill.02.bis.med')
+  Iter_2_bis.SetFieldFile(dircase+'/tutorial_3.01.med')
+  Iter_2_bis.SetTimeStepRank(1, 1)
+  homard.AssociateIterHypo('Iter_2_bis', 'Hypo_1vers2_bis')
+  codret = homard.Compute('Iter_2_bis', 1)
 
 .. note::
   Téléchargement des fichiers
@@ -197,37 +220,34 @@ Suivi de fronti
 
 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.
 ::
   dircase = "/tmp"
   #
   # Creation of the boundaries
   # ==========================
-  Boundary_1 = homard.CreateBoundary('intersection', 0)
-  Boundary_1.SetMeshFile(dircase+'/tutorial_4.fr.med')
-  Boundary_1.SetMeshName('PIQUAGE')
+  Boundary_1 = homard.CreateBoundaryDi('intersection', 'PIQUAGE', dircase+'/tutorial_4.fr.med')
   #
-  Boundary_2 = homard.CreateBoundary('cyl_1_ext', 1)
-  Boundary_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+  Boundary_2 = homard.CreateBoundaryCylinder('cyl_1_ext', 0.0, 25., -25., 25., 50., 75., 100.)
   #
-  Boundary_3 = homard.CreateBoundary('cyl_2_ext', 1)
-  Boundary_3.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 50.)
+  Boundary_3 = homard.CreateBoundaryCylinder('cyl_2_ext', 17.5, -2.5, -12.5, -100., -75., -25., 50.)
   #
-  Boundary_4 = homard.CreateBoundary('cyl_1_int', 1)
-  Boundary_4.SetCylinder(0.0, 25., -25., 25., 50., 75., 75.)
+  Boundary_4 = homard.CreateBoundaryCylinder('cyl_1_int', 0.0, 25., -25., 25., 50., 75., 75.)
   #
-  Boundary_5 = homard.CreateBoundary('cyl_2_int', 1)
-  Boundary_5.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 25.)
+  Boundary_5 = homard.CreateBoundaryCylinder('cyl_2_int', 17.5, -2.5, -12.5, -100., -75., -25., 25.)
   #
   # Hypothesis "Hypo"
   # ===================
   # Creation of the hypothesis Hypo_1
   Hypo_1 = homard.CreateHypothesis('Hypo_1')
   Hypo_1.SetAdapRefinUnRef(-1, 1, 0)
-  Hypo_1.AddGroup('T1_INT')
+  Hypo_1.AddGroup('T1_INT_I')
+  Hypo_1.AddGroup('T1_INT_O')
   Hypo_1.AddGroup('T2_INT')
   # Creation of the hypothesis Hypo_2
   Hypo_2 = homard.CreateHypothesis('Hypo_2')
   Hypo_2.SetAdapRefinUnRef(-1, 1, 0)
-  Hypo_2.AddGroup('T1_EXT')
+  Hypo_2.AddGroup('T1_EXT_I')
+  Hypo_2.AddGroup('T1_EXT_O')
   Hypo_2.AddGroup('T2_EXT')
   #
   # Case "Case"
@@ -235,9 +255,11 @@ On teste ici le suivi des fronti
   Case = homard.CreateCase('Case', 'PIQUAGE', dircase+'/tutorial_4.00.med')
   Case.SetDirName(dircase)
   Case.AddBoundaryGroup( 'intersection', '' )
-  Case.AddBoundaryGroup( 'cyl_1_ext', 'T1_EXT' )
+  Case.AddBoundaryGroup( 'cyl_1_ext', 'T1_EXT_I' )
+  Case.AddBoundaryGroup( 'cyl_1_ext', 'T1_EXT_O' )
   Case.AddBoundaryGroup( 'cyl_2_ext', 'T2_EXT' )
-  Case.AddBoundaryGroup( 'cyl_1_int', 'T1_INT' )
+  Case.AddBoundaryGroup( 'cyl_1_int', 'T1_INT_I' )
+  Case.AddBoundaryGroup( 'cyl_1_int', 'T1_INT_O' )
   Case.AddBoundaryGroup( 'cyl_2_int', 'T2_INT' )
   #
   # Creation of the iterations
@@ -263,5 +285,69 @@ On teste ici le suivi des fronti
   * :download:`commandes python<files/tutorial_4.py>`
 
 
+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.
+::
+
+  dircase = "/tmp"
+  #
+  # Creation of the boundaries
+  # ==========================
+  # Creation of the discrete boundary Boun_1
+  Boun_1 = homard.CreateBoundaryDi('Boun_1', 'MAIL_EXT', dircase+'/tutorial_5.fr.med')
+  #
+  # Creation of the zones
+  # =====================
+  # Creation of the disk with hole enveloppe
+  enveloppe = homard.CreateZoneDiskWithHole( 'enveloppe', 0., 0., 250., 193., 1 )
+  # Creation of the rectangle quart_sup
+  quart_sup = homard.CreateZoneBox2D( 'quart_sup', 0., 250., 0., 250., 1 )
+  #
+  # Hypothesis
+  # ==========
+  # Creation of the hypothesis Hypo_1
+  Hypo_1 = homard.CreateHypothesis('Hypo_1')
+  Hypo_1.SetAdapRefinUnRef(0, 1, 0)
+  homard.AssociateHypoZone('enveloppe', 'Hypo_1')
+  # Creation of the hypothesis Hypo_2
+  Hypo_2 = homard.CreateHypothesis('Hypo_2')
+  Hypo_2.SetAdapRefinUnRef(0, 1, 0)
+  homard.AssociateHypoZone('quart_sup', 'Hypo_2')
+  #
+  # Case "Case_1"
+  # =============
+  Case_1 = homard.CreateCase('Case_1', 'COEUR_2D', dircase+'/tutorial_5.00.med')
+  Case_1.SetDirName(dircase)
+  Case_1.SetConfType(3)
+  Case_1.AddBoundaryGroup('Boun_1', '')
+  #
+  # Iteration "Iter_1"
+  # ==================
+  Iter_1 = homard.CreateIteration('Iter_1', Case_1.GetIter0Name())
+  Iter_1.SetMeshName('COEUR_2D_01')
+  Iter_1.SetMeshFile(dircase+'/maill.01.med')
+  homard.AssociateIterHypo('Iter_1', 'Hypo_1')
+  codret = homard.Compute('Iter_1', 1)
+  #
+  # Iteration "Iter_2"
+  # ==================
+  Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1')
+  Iter_2.SetMeshName('COEUR_2D_02')
+  Iter_2.SetMeshFile(dircase+'/maill.02.med')
+  homard.AssociateIterHypo('Iter_2', 'Hypo_2')
+  result = homard.Compute('Iter_2', 1)
+
+.. note::
+  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:`commandes python<files/tutorial_5.py>`
+
+
 .. toctree::
    :maxdepth: 2