Salome HOME
Merge branch 'BR_H2018_DRAFT' into BR_2018_V8_5
[modules/hydro.git] / doc / salome / tutorial / maillage.rst
1 ..
2    Copyright (C) 2015-2016 EDF
3
4    This file is part of SALOME HYDRO module.
5
6    SALOME HYDRO module is free software: you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation, either version 3 of the License, or
9    (at your option) any later version.
10
11    SALOME HYDRO module is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with SALOME HYDRO module.  If not, see <http://www.gnu.org/licenses/>.
18
19 #########################################
20 Création du maillage
21 #########################################
22
23 .. |mesh_init| image:: /_static/mesh_init.png
24    :align: middle
25    :width: 16pt
26    :height: 16pt
27
28 .. |mesh_edit| image:: /_static/mesh_edit.png
29    :align: middle
30    :width: 16pt
31    :height: 16pt
32
33 .. |mesh_hypo_edit| image:: /_static/mesh_hypo_edit.png
34    :align: middle
35    :width: 16pt
36    :height: 16pt
37
38 .. |vtk_view_fitall| image:: /_static/vtk_view_fitall.png
39    :align: middle
40    :width: 16pt
41    :height: 16pt
42
43 .. |vtk_view_top| image:: /_static/vtk_view_top.png
44    :align: middle
45    :width: 16pt
46    :height: 16pt
47
48
49 .. |Capture_CreateMesh| image:: /_static/Capture_CreateMesh.png
50    :align: middle
51
52 .. |Capture_HypothesisConstruction| image:: /_static/Capture_HypothesisConstruction.png
53    :align: middle
54
55 .. |Capture_CreateSubMesh| image:: /_static/Capture_CreateSubMesh.png
56    :align: middle
57
58 .. |Capture_HypothesisLocalLength| image:: /_static/Capture_HypothesisLocalLength.png
59    :align: middle
60
61 .. |Capture_HypothesisNbSegments| image:: /_static/Capture_HypothesisNbSegments.png
62    :align: middle
63
64 .. |Capture_WarningOrder| image:: /_static/Capture_WarningOrder.png
65    :align: middle
66
67 .. |Capture_OrderingSubMeshes| image:: /_static/Capture_OrderingSubMeshes.png
68    :align: middle
69
70 .. |Capture_MeshComputationSucceed| image:: /_static/Capture_MeshComputationSucceed.png
71    :align: middle
72
73 .. |Capture_CreateGroupsFromGeometry| image:: /_static/Capture_CreateGroupsFromGeometry.png
74    :align: middle
75
76
77 Lorsque la géométrie est prête, nous activons le module de maillage, *SMESH*.
78
79 Introduction au fonctionnement de SMESH
80 =======================================
81
82 Pour spécifier le maillage, on définit en général un algorithme par défaut avec son paramétrage :
83 dans SMESH, on parle des *hypothèses* de l'algorithme.
84
85 Cet algorithme et ces hypothèses s'appliquent partout sauf modification portant sur une partie de
86 la géométrie (*sub shape*).
87
88 On peut donc créer des sous maillages sur une face ou un groupe de faces,
89 une edge ou un groupe d'edges, pour définir des algorithmes et/ou des hypothèses spécifiques.
90
91 Lors du maillage, la géométrie de la pièce à mailler est explorée en partant de la dimension 1 (edges),
92 puis la dimension 2 (faces), et enfin la dimension 3 (volumes). Ici nous n'avons pas de volumes.
93
94 Les maillages de dimension 1 sont donc prioritaires sur ceux de dimension 2 et s'imposent à eux.
95
96 Certains algorithmes gèrent simultanément plusieurs dimensions (dans notre cas, edges et faces).
97 Quand ces algorithmes tolèrent que l'on impose le maillage de certaines edges,
98 la définition de sous maillages de la ou des faces concernées sera prise en compte, sinon non.
99 De même, suivant l'algorithme choisi pour une face, l'onglet 1D du dialogue de maillage est actif on non.
100
101 Il en résulte que, dans certains cas, pour certaines *sub shapes*, plusieurs algorithmes et/ou hypothèses
102 sont définis, et il faut alors établir des priorités. Ces situations sont détectées automatiquement
103 et l'utilisateur se voit proposer des choix.
104
105 Algorithmes et Hypothèses de base pour la géométrie
106 ====================================================
107
108 Ici, nous allons spécifier un maillage triangle par défaut sur l'ensemble du domaine, et particulariser
109 le maillage du lit mineur, pour obtenir des triangles allongés dans le sens de l'écoulement.
110
111 Nous sélectionnons la géométrie *HYDRO_garonne_1* dans l'arbre d'étude, et lançons la définition du maillage :
112 menu *Mesh/Create Mesh* ou icône |mesh_init|.
113
114 Dans le dialogue *Create Mesh*, nous choisissons l'algorithme de maillage *Netgen 1D-2D* qui va s'appliquer
115 par défaut sur l'ensemble de la géométrie.
116
117   |Capture_CreateMesh|
118
119 Il faut préciser les hypothèses de maillage :
120
121 Nous cliquons sur le bouton actif dans la ligne *Hypothesis* pour choisir un type d'hypothèses,
122 et choisissons *Netgen 2D Parameters*.
123
124 Nous prenons une taille maximum d'arète de 200 (mètres), et minimale de 50. Pour le taux de progression
125 de la taille des triangles, *Fineness*, nous prenons *Very Fine*, pour préserver la qualité des triangles.
126
127   |Capture_HypothesisConstruction|
128
129 Après avoir validé le dialogue d'hypothèses, nous validons la définition du maillage avec le bouton *Apply and Close*.
130
131 Le maillage apparaît sous le nom *Mesh_1* dans l'arbre avec une icône indiquant son statut : *non généré, ou incomplet*.
132
133 Il est possible de renommer le maillage, soit directement, soit via le dialogue d'édition, à partir du menu contextuel.
134
135 Toujours à partir du dialogue d'édition |mesh_edit|, il est possible changer l'algorithme,
136 ou de modifier les hypothèses : |mesh_hypo_edit|.
137
138 Sous maillages
139 ==============
140
141 Nous sélectionnons le maillage dans l'arbre d'étude et créons un sous maillage (menu contextuel *Create Sub Mesh*).
142
143 Dans le dialogue qui s'affiche, il faut renseigner la géométrie, en cliquant dans l'arbre d'étude sur la face *litMineur*
144 contenue dans *HYDRO_garonne_1*. Pour cette sélection, il faut que la flèche du dialogue sur la ligne *Geometry* soit active.
145 Elle l'est par défaut.
146
147 Il est utile de renommer tout de suite le sous-maillage (première ligne du dialogue).
148
149 Nous choisissons l'algorithme *Quadrangle (Medial Axis projection)*. Cet algorithme reconstruit un axe hydraulique fictif,
150 découpe la rivière en quadrangles, normalement à l'axe hydraulique.
151
152   |Capture_CreateSubMesh|
153
154 Il reste à définir la longueur des quadrangles, leur nombre dans la section de la rivière.
155 Dans l'onglet *1D* du dialogue du sous maillage *litMineur*, nous choisissons l'algorithme *Wire Discretisation*
156 l'hypothèse *Local Length*, et prenons une longueur de 100 (mètres). Il est utile de renommer l'hypothèse à ce stade.
157
158 **remarque** : Les hypothèses et algorithmes peuvent être partagés entre plusieurs maillages et sous maillages,
159 ce qui permet de modifier en un seul endroit tout ce qui doit rester cohérent. du coup, **il est utile d'avoir des noms
160 significatifs pour les identifier**.
161
162   |Capture_HypothesisLocalLength|
163
164 Nous validons la définition du sous maillage avec le bouton *Apply and Close*.
165
166 La longueur que nous avons définie s'applique à la fois longitudinalement et transversalement. Pour contrôler le
167 nombre de mailles transversales, il faut un nouveau sous maillage, appliqué au groupe d'edges *SectionsGaronne*.
168
169 Nous créons donc un sous maillage sur *SectionsGaronne*, en prenant cette fois comme algorithme *Wire Discretisation*
170 et comme hypothèse *Nb. Segments*, avec 8 segments distribués régulièrement.
171
172   |Capture_HypothesisNbSegments|
173
174 Nous validons la définition du sous maillage avec le bouton *Apply and Close*.
175 Il faut établir une priorité entre deux définitions :
176
177   |Capture_WarningOrder|  |Capture_OrderingSubMeshes|
178
179 Nous sélectionnons *SectionsGaronne* pour le faire remonter en tête de liste.
180
181 Génération du maillage
182 ======================
183
184 Après avoir validé, le maillage est prêt pour être généré.
185 Pour générer le maillage, il faut le sélectionner, et utiliser le menu contextuel *Compute*.
186 Une boite d'information s'affiche à la fin du calcul et donne des statistiques élémentaires.
187
188 |Capture_MeshComputationSucceed|
189
190 L'icône du maillage a changé dans l'arbre d'étude, et indique l'état *généré correctement*.
191
192 Le maillage n'est pas encore fini pour nos besoins, mais nous pouvons déjà le voir.
193 Pour l'afficher, *show* puis *FitAll* |vtk_view_fitall| et vue de dessus |vtk_view_top| (*-OZ*)
194 dans la barre d'icônes du viewer 3D.
195
196 Pour découper les quadrangles, nous utilisons le menu *Modification/Cutting of Quadrangles*.
197 Dans le dialogue, nous cochons *apply to all*, *use diagonal 1-3* puis *preview* :
198 la modification proposée apparaît,
199 il est possible de zoomer avec la molette de la souris pour vérifier.
200 Nous validons par *Apply and Close*.
201
202 Contrôle du maillage
203 ====================
204
205 Il faut vérifier que le maillage est conforme aux besoins de TELEMAC.
206
207 Orientation des mailles
208 -----------------------
209
210 Pour les maillages surfaciques XY, **SALOME peut orienter par défaut les triangles dans le sens contraire à ce qu'attend TELEMAC**,
211 selon le sens de saisie des différentes lignes. SALOME peut donc orienter les triangles d'une face
212 avec la normale sortante vers le bas. On peut le vérifier avec la couleur des mailles
213 (bleu plus foncé sur l'envers que sur l'endroit) ou en utilisant la commande *Orientation of Faces* du menu contextuel
214 de la vue 3D du maillage. Cette commande dessine une flèche par triangle. Sur l'envers de la face, on ne voit qu'un point.
215 Pour voir les flèches, il faut changer l'angle de vue.
216
217 Pour réorienter les faces, nous utilisons le menu *Modification / Orientation* et cochons l'option *Apply to All*.
218 Après validation, les faces changent de couleur (bleu  plus clair).
219
220 Triangles surcontraints
221 -----------------------
222
223 Il faut éviter deux types de conditions limites différentes sur deux arêtes d'un triangle, et, plus généralement,
224 éviter que deux arêtes aient des conditions limites imposées (aucun degré de liberté sur le triangle).
225
226 Parfois, les mailleurs créent de tels triangles dans les coins du maillage. C'est le cas de Netgen dans les angles aigus.
227 Quand on peut, il faut éviter de créer des angles aigus aux limites du domaine.
228
229 Les triangles surcontraints se détectent avec la commande de menu *Controls / Face Controls / Over-constrained faces*.
230 Pour corriger cela, il faut utiliser la commande de menu *Modification / Diagonal Inversion* et sélectionner
231 l'edge interne du triangle en cause.
232
233 Création des groupes, Enregistrement du maillage
234 ================================================
235
236 Les groupes de noeuds et d'éléments sont utiles pour 'étape d'interpolation de la bathymétrie,
237 et pour la définition des conditions limites.
238
239 Pour définir les groupes dans le maillage, nous utilisons la commande *Create Groups from Geometry*
240 du menu contextuel du maillage.
241 Nous sélectionnons tous les groupes et sub Shapes de la géometrie *HYDRO_garonne_2*
242 et constituons successivement des groupes d'**éléments** et de **noeuds**.
243
244   |Capture_CreateGroupsFromGeometry|
245
246 Ces groupes apparaissent dans l'arbre d'étude sous le maillage après validation du dialogue.
247 Il est possible de le voir avec *show only*. L'option *Auto Color* du menu contextuel du maillage
248 les met en évidence.
249
250 Pour enregistrer le maillage dans un fichier au format MED, après avoir sélectionné le maillage,
251 nous utilisons la commande du menu *File / Export / MED file*.
252
253 .. only:: html
254
255    :ref:`ref_exempleInondation`