From 818d8667501d8d9d2bd84da621e9378bf8553ac9 Mon Sep 17 00:00:00 2001 From: Paul RASCLE Date: Sun, 13 Dec 2015 13:22:25 +0100 Subject: [PATCH] controles du maillage, orientation --- .../examples/h010_normalCaseManualMesh.py | 1 + .../h011_normalCaseManualInterpolZ.py | 1 + .../examples/h013_caseDigueManualMesh.py | 1 + .../examples/h014_caseDigueManualInterpolZ.py | 1 + doc/salome/tutorial/maillage.rst | 30 +++++++++++++++++++ doc/salome/tutorial/piegesAEviter.rst | 3 ++ doc/salome/tutorial/polylignes.rst | 5 +++- 7 files changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/salome/examples/h010_normalCaseManualMesh.py b/doc/salome/examples/h010_normalCaseManualMesh.py index d37593ff..5f63d530 100644 --- a/doc/salome/examples/h010_normalCaseManualMesh.py +++ b/doc/salome/examples/h010_normalCaseManualMesh.py @@ -383,6 +383,7 @@ isDone = garonne_1.SetMeshOrder( [ [ subMesh_SectionsGaronne, subMesh_litMineur # --- compute mesh isDone = garonne_1.Compute() isDone = garonne_1.SplitQuadObject( garonne_1, 1 ) +isDone = garonne_1.ReorientObject( garonne_1 ) # --- geometrical groups of edges garonne_1_litMineur_Outer_1 = garonne_1.GroupOnGeom(garonne_1_litMineur_Outer,'garonne_1_litMineur_Outer',SMESH.EDGE) diff --git a/doc/salome/examples/h011_normalCaseManualInterpolZ.py b/doc/salome/examples/h011_normalCaseManualInterpolZ.py index cf956007..b995db47 100644 --- a/doc/salome/examples/h011_normalCaseManualInterpolZ.py +++ b/doc/salome/examples/h011_normalCaseManualInterpolZ.py @@ -383,6 +383,7 @@ isDone = garonne_1.SetMeshOrder( [ [ subMesh_SectionsGaronne, subMesh_litMineur # --- compute mesh isDone = garonne_1.Compute() isDone = garonne_1.SplitQuadObject( garonne_1, 1 ) +isDone = garonne_1.ReorientObject( garonne_1 ) # --- geometrical groups of edges garonne_1_litMineur_Outer_1 = garonne_1.GroupOnGeom(garonne_1_litMineur_Outer,'garonne_1_litMineur_Outer',SMESH.EDGE) diff --git a/doc/salome/examples/h013_caseDigueManualMesh.py b/doc/salome/examples/h013_caseDigueManualMesh.py index c59918d1..73d07f75 100644 --- a/doc/salome/examples/h013_caseDigueManualMesh.py +++ b/doc/salome/examples/h013_caseDigueManualMesh.py @@ -471,6 +471,7 @@ isDone = garonne_2.SetMeshOrder( [ [ subMesh_SectionsGaronne, subMesh_litMineur # --- compute mesh isDone = garonne_2.Compute() isDone = garonne_2.SplitQuadObject( garonne_2, 1 ) +isDone = garonne_2.ReorientObject( garonne_2 ) # --- geometrical groups of edges #garonne_2_litMineur_Outer_1 = garonne_2.GroupOnGeom(garonne_2_litMineur_Outer,'garonne_2_litMineur_Outer',SMESH.EDGE) diff --git a/doc/salome/examples/h014_caseDigueManualInterpolZ.py b/doc/salome/examples/h014_caseDigueManualInterpolZ.py index bab32b46..fd95340e 100644 --- a/doc/salome/examples/h014_caseDigueManualInterpolZ.py +++ b/doc/salome/examples/h014_caseDigueManualInterpolZ.py @@ -471,6 +471,7 @@ isDone = garonne_2.SetMeshOrder( [ [ subMesh_SectionsGaronne, subMesh_litMineur # --- compute mesh isDone = garonne_2.Compute() isDone = garonne_2.SplitQuadObject( garonne_2, 1 ) +isDone = garonne_2.ReorientObject( garonne_2 ) # --- geometrical groups of edges #garonne_2_litMineur_Outer_1 = garonne_2.GroupOnGeom(garonne_2_litMineur_Outer,'garonne_2_litMineur_Outer',SMESH.EDGE) diff --git a/doc/salome/tutorial/maillage.rst b/doc/salome/tutorial/maillage.rst index d3ab8130..e81382ef 100644 --- a/doc/salome/tutorial/maillage.rst +++ b/doc/salome/tutorial/maillage.rst @@ -199,6 +199,36 @@ la modification proposée apparaît, il est possible de zoomer avec la molette de la souris pour verifier. Nous validons par *Apply and Close*. +Contrôle du maillage +==================== + +Il faut vérifier que le maillage est conforme aux besoins de TELEMAC. + +Orientation des mailles +----------------------- + +Pour les maillages surfaciques XY, **SALOME oriente par défaut les triangles dans le sens contraire à ce qu'attend TELEMAC**. +SALOME oriente les triangles avec la normale sortante vers le bas. On peut le vérifier avec la couleur des mailles +(bleu plus foncé sur l'envers que sur l'endroit) ou en utilisant la commande *Orientation of Faces* du menu contextuel +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. +Pour voir les flèches, il faut changer l'angle de vue. + +Pour réorienter les faces, nous utilisons le menu *Modification / Orientation* et cochons l'option *Apply to All*. +Après validation, les faces changent de couleur (bleu plus clair). + +Triangles surcontraints +----------------------- + +Il faut éviter deux types de conditions limites différentes sur deux arêtes d'un triangle, et, plus généralement, +éviter que deux arêtes aient des conditions limites imposées (aucun degré de liberté sur le triangle). + +Parfois, les mailleurs créent de tels triangles dans les coins du maillage. C'est le cas de Netgen dans les angles aigus. +Quand on peut, il faut éviter de créer des angles aigus aux limites du domaine. + +Les triangles surcontraints se détectent avec la commande de menu *Controls / Face Controls / Over-constrained faces*. +Pour corriger cela, il faut utiliser la commande de menu *Modification / Diagonal Inversion* et sélectionner +l'edge interne du triangle en cause. + Création des groupes, Enregistrement du maillage ================================================ diff --git a/doc/salome/tutorial/piegesAEviter.rst b/doc/salome/tutorial/piegesAEviter.rst index c191d1a7..8eaa9d86 100644 --- a/doc/salome/tutorial/piegesAEviter.rst +++ b/doc/salome/tutorial/piegesAEviter.rst @@ -37,6 +37,9 @@ Conseils, pièges a eviter - cohérence des systèmes de coordonnées des données importées : par exemple tout mettre en Lambert 93 avant import +- angles aigus aux limites du domaines : risque de création de triangles surcontaints, ce qui implique de les détecter + et d'inverser des diagonales. + - utilisation du type spline ou du type polyline ? * *spline* : une seule ligne continue, a dérivée continue, passant par tous les points. diff --git a/doc/salome/tutorial/polylignes.rst b/doc/salome/tutorial/polylignes.rst index 26fd824f..73aa4647 100644 --- a/doc/salome/tutorial/polylignes.rst +++ b/doc/salome/tutorial/polylignes.rst @@ -163,7 +163,10 @@ Dessin du contour du lit majeur et du domaine de calcul Une fois le fleuve dessiné, nous poursuivons avec le dessin du contour de la bathymétrie du lit majeur, garonne_point_L93, puis la définition du contour du domaine de calcul, qui doit couper les deux autres lignes en amont et en aval. + Il est préférable que le domaine de calcul coupe le fleuve perpendiculairement à son axe, de façon à -définir correctement les conditions limites amont et aval. +définir correctement les conditions limites amont et aval. Il faut aussi éviter de créer des angles aigus en limite +du domaine, ce qui risquerait de favoriser l'apparition de triangles surcontraints lors du maillage (ce qui peut se +corriger par une détection et une inversion de diagonale).   :ref:`ref_exempleInondation` -- 2.39.2