############
.. index:: single: boundary
.. index:: single: frontière
+.. index:: single: CAO
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 :
- - Discrète : ce mode est utilisé pour décrire une courbe 1D
- - Analytique : ce mode est utilisé pour décrire une surface
+ - CAO : la frontière est issue de la géométrie du domaine
+ - Non CAO : si on ne dispose pas de la géométrie, on peut approcher la frontière par des descriptions :
+ * Discrète : pour décrire l'ensemble des courbes 1D composant la frontière
+ * Analytique : pour décrire chaque surface composant la frontière
+
+Le choix est exclusif :
+
+.. image:: images/create_boundary_1.png
+ :align: center
+
+Frontière CAO
+*************
+
+Le suivi d'une frontière CAO se fera en sélectionnant une frontière choisie dans la liste des frontières CAO enregistrées.
+
+Au démarrage, la liste est vide. Il faut créer une première frontière CAO par activation du bouton "*Nouveau*" :
+
+.. image:: images/create_boundary_cao_1.png
+ :align: center
+
+La fenêtre proposée invite au choix d'un fichier contenant une CAO au format XAO. Cette est celle de la géométrie qui est le support du maillage. 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, quel que soit son type.
+
+.. image:: images/create_boundary_cao_2.png
+ :align: center
+
+.. note::
+ La cohérence entre cette CAO et le maillage initial n'est pas contrôlée.
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 enregistrées.
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, quel que soit son type.
.. image:: images/create_boundary_di_2.png
:align: center
===========
.. 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, quel que soit son type.
.. image:: images/create_boundary_an_cy.png
:align: center
==========
.. 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, quel que soit son type.
.. image:: images/create_boundary_an_sp.png
:align: center
=======
.. 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, quel que soit son type.
Création par une origine, un axe et un angle d'ouverture :
=======
.. 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, quel que soit son type.
.. image:: images/create_boundary_an_to.png
:align: center
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
+.. image:: images/create_boundary.png
:align: center
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.
+- CAO : la CAO du domaine associé au maillage est disponible. Le calcul s'appuiera sur elle pour réaliser les projections.
+- Pas de CAO : en l'absence de CAO, il est possible d'avoir une version approchée des frontières :
-On cochera le ou les boutons voulus :
+ * 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.
-.. image:: images/create_case_5.png
+On cochera le bouton voulu :
+
+.. image:: images/create_boundary_1.png
:align: center
La définition des frontières est décrite dans :doc:`gui_create_boundary`.
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
+| .. module:: CreateBoundaryCAO |
+| |
+| **CreateBoundaryCAO(boundary_name, xao_file)** |
+| Retourne une instance de la classe ``boundary`` de type CAO après sa création |
+| |
+| - ``boundary_name`` : le nom de la frontière CAO |
+| - ``xao_file`` : le nom du fichier contenant cette CAO, au format XAO |
++----------------------------------------------------------------------------------------+
| .. 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 |
+| - ``mesh_file`` : le nom du fichier contenant ce maillage, au format MED |
+----------------------------------------------------------------------------------------+
| .. module:: CreateBoundaryCylinder |
| |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
-| .. module:: AddBoundaryGroup |
+| .. module:: AddBoundary |
| |
-| **AddBoundaryGroup(boundary, group)** |
+| **AddBoundary(boundary)** |
| Ajoute une frontière à la définition du cas |
| |
| - ``boundary`` : nom d'une frontière courbe à suivre |
++---------------------------------------------------------------+
+| .. module:: AddBoundaryGroup |
+| |
+| **AddBoundaryGroup(boundary, group)** |
+| Ajoute une frontière à la définition du cas en précisant |
+| les groupes associés |
| |
-| Pour une frontière discrète : |
+| - ``boundary`` : nom d'une frontière courbe à suivre |
| |
-| . si toutes les lignes courbes sont suivies, le second |
-| argument est une chaîne vide. |
+| Pour une frontière discrète ou CAO : |
| |
-| . si seulement certaines lignes courbes sont suivies, |
-| ``group`` est le nom d'un groupe de segments à suivre. |
+| - ``group`` : nom d'un groupe de mailles à suivre |
| |
| Pour une frontière analytique : |
| |
| **GetType()** |
| Retourne le type de la frontière : |
| |
+| * -1 : CAO |
| * 0 : discrète |
| * 1 : cylindre |
| * 2 : sphère |
| .. module:: Delete |
| |
| **Delete()** |
-| Detruit la frontière. |
+| Détruit la frontière. |
| Pour une frontière discrète, le fichier du maillage |
| associé est conservé. |
+| Pour une frontière CAO, le fichier de la géométrie |
+| associée est conservé. |
| |
| Retourne un entier : |
| * 0 : destruction réussie |
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 CAO : ::
+
+ la_cao = homard.CreateBoundaryCAO("BLOC", dircase+'/tutorial_6.xao')
+
+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)
| .. 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ésultats 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ésultats |
+---------------------------------------------------------------+
| .. module:: GetDirName |
| |
| **GetDirName()** |
-| Retourne le nom du répertoire des résutats associé au cas |
+| Retourne le nom du répertoire des résultats associé au cas|
+---------------------------------------------------------------+
| .. module:: SetConfType |
| |
| * 4 : moyenne + n fois l'écart-type |
| |
| - ``threshold`` : valeur numérique entrant dans la |
-| définition du seuil |
+| définition du seuil |
+---------------------------------------------------------------+
| .. module:: GetRefinThrType |
| |
| .. module:: GetDirName |
| |
| **GetDirName()** |
-| Retourne le nom du répertoire des résutats associé à |
+| Retourne le nom du répertoire des résultats associé à |
| l'itération |
+---------------------------------------------------------------+
| .. module:: Delete |
* 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
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
.. note::
Téléchargement des fichiers
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
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
.. note::
Téléchargement des fichiers
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
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
.. note::
Téléchargement des fichiers
Suivi de frontières courbes
***************************
-.. index:: single: champ
+.. index:: single: frontière
+.. index:: single: CAO
.. 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.
+On teste ici le suivi des frontières courbes en fournissant la géométrie représentée par la CAO de la pièce. Cette CAO est fournie dans un fichier au format XAO.
+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
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
.. note::
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:`la frontière en CAO<../files/tutorial_4.xao.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>`
+Si la géométrie sous forme de CAO n'est pas disponible, on peut l'approcher ainsi :
+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. Il suffit de remplacer la définition des frontières.
+
+.. literalinclude:: ../files/tutorial_6.py
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
+
+.. note::
+ Téléchargement des fichiers
+
+ * :download:`maillage initial<../files/tutorial_4.00.med.gz>`
+ * :download:`maillage de la frontière discrète<../files/tutorial_6.fr.med.gz>`
+ * :download:`commandes python<../files/tutorial_6.py>`
+ * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>`
+ * :download:`schéma YACS<../files/tutorial_6.xml>`
+
Instructions spécifiques au 2D
******************************
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
+ :start-after: Début des commandes
+ :end-before: Fin des commandes
.. note::
Téléchargement des fichiers