Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:mesh:2d

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:user:geometry:mesh:2d [2013/07/12 15:42] – external edit 127.0.0.1doc:user:geometry:mesh:2d [2021/12/17 14:02] (current) boman
Line 1: Line 1:
- +====== 2D Meshers (Surfaces) ======
-====== Mailleurs 2D ======+
  
-Metafor possède des mailleurs intégrés très simples mais généralement suffisants pour mailler une pièce pas trop compliquéeLes mailleurs surfaciques 2D nécessitent que le contour du domaine considéré soit orienté correctement. Il faut donc impérativement que le ''[[doc:user:geometry:user:contours|Wire]]'' soit orienté "aire à gauche". C'est-à-dire que si on parcourt le contour selon son sens (défini par la succession de ses ''[[doc:user:geometry::user:courbes|Curves]]''), la matière se trouve à gauche.+Metafor has a few integrated meshers, quite simple but usually capable of meshing parts that are not too complicatedHowever, 2D meshers require that the ''[[doc:user:geometry:user:contours|wire]]'' delimiting the domain has the right orientation. The wire must be defined with its "area to the left", which means that when the wire is followed along its orientation (defined by the succession of its [[doc:user:geometry::user:courbes|curves]]), the matter of the part is on the left-hand 
  
 {{ doc:user:mesh-2d-1.gif |Contour "aire à gauche"}} {{ doc:user:mesh-2d-1.gif |Contour "aire à gauche"}}
  
-===== Mailleur transfini =====+===== Transfinite mesher =====
  
-==== Avec autodétection ====+==== With auto-detection ====
  
-L'autodétection fonctionne si on a une ''[[doc:user:geometry:user:faces|Side]]'' avec côtés possédant chacun une seule ''Curve''.+The auto-detection is working if the ''[[doc:user:geometry:user:faces]]'' is made of edges, each of which is only made of one ''Curve''.
  
   TransfiniteMesher2D(sideset(number)).execute(type, tri)   TransfiniteMesher2D(sideset(number)).execute(type, tri)
  
-| ''number'' |= numéro de la ''Side''                      +| ''number'' |= number of the ''Side'' to mesh                     
-| ''type''   |= ''True'' si génération des mailles \\ = ''False'' si génération de points uniquement (utile en 3D!) | +| ''type''   |= ''True'' if mesh elements must be generated \\ = ''False'' if only nodes must be generated (useful in 3D!) | 
-| ''tri''    |= ''0'' si génération de quads (''CELL_QUAD'') [par défaut] \\ = ''1'' si génération des triangles à partir du premier noeud (''CELL_TRIANGLE'') \\ = ''2'' si génération des triangles à partir du deuxième noeud (''CELL_TRIANGLE'')|+| ''tri''    |= ''0'' to generate quads (''CELL_QUAD'') [default] \\ = ''1'' to generate triangles from the first node (''CELL_TRIANGLE'') \\ = ''2'' to generate triangles from the second node (''CELL_TRIANGLE'')|
    
- 
 {{ doc:user:mesh-2d-2.gif |Maillage possible avec autodétection}} {{ doc:user:mesh-2d-2.gif |Maillage possible avec autodétection}}
  
-Dans l'exemple ci-dessusl'autodétection est possible.+In the example abovethe auto-detection is doable.
  
-L'analogue au second degré est :+A similar function for higher degrees is:
  
   HighDegreeTransfiniteMesher2D(sideset(number), degree).execute(type, sideNode, tri)   HighDegreeTransfiniteMesher2D(sideset(number), degree).execute(type, sideNode, tri)
  
-| ''number''   |= numéro de la ''[[doc:user:geometry:user:faces|Side]]''         +| ''number''   |= number of the side ''[[doc:user:geometry:user:faces|Side]]''  
-| ''degree''   |= 2 ou degré du maillage +| ''degree''   |= mesh degree (or 3
-| ''type''     |= ''True'' si génération des mailles\\ = ''False'' si génération de points uniquement (utile en 3D!) | +| ''type''     |= ''True'' if mesh elements must be generated \\ = ''False'' if only nodes must be generated (useful in 3D!) | 
-| ''sideNode'' |= ''True''  si génération de mailles à noeuds(''CELL_NINE_QUADRATIC_QUAD'') \\ = ''False'' si génération de mailles à noeuds(''CELL_QUADRATIC_QUAD'') | +| ''sideNode'' |= ''True'' to generate 9-nodes mesh elements (''CELL_NINE_QUADRATIC_QUAD'') \\ = ''False'' to generate 8-nodes mesh elements (''CELL_QUADRATIC_QUAD'') | 
-| ''tri''    |= ''0'' si génération de quads (''CELL_QUAD'') [par défaut]\\ = ''1'' si génération des triangles à partir du premier noeud (''CELL_TRIANGLE'')\\ = ''2'' si génération des triangles à partir du deuxième noeud (''CELL_TRIANGLE'')|+| ''tri''    |= ''0'' to generate quads (''CELL_QUAD'') [default] \\ = ''1'' to generate triangles from the first node (''CELL_TRIANGLE'') \\ = ''2'' to generate triangles from the second node (''CELL_TRIANGLE'')|
  
-Dans le cas de mailles à noeudsle noeud central est lié à la ''[[doc:user:geometry:user:faces|Side]]''. \\ +For 9-nodes mesh elementsthe central node is linked to the ''[[doc:user:geometry:user:faces|Side]]''. \\ 
-Dans le cas de mailles à 16 noeudsles noeuds centraux sont liés à la ''Side''.+For 16-nodes mesh elementscentral nodes are linked to the ''Side''.
  
-==== Sans autodétection ====+==== Without auto-detection ====
  
     mat = ((mat11, mat12, ..., mat1nbmax),      mat = ((mat11, mat12, ..., mat1nbmax), 
Line 42: Line 40:
            (mat31, mat32, ..., mat3nbmax),             (mat31, mat32, ..., mat3nbmax), 
            (mat41, mat42, ..., mat4nbmax)   )            (mat41, mat42, ..., mat4nbmax)   )
-    TransfiniteMesher2D(sideset(number)).execute2(mat, type)+    TransfiniteMesher2D(sideset(number)).execute2(mat, type, tri)
  
-où ''mat'' est un [[doc:user:general:glossaire#tuple]] python à composantsChaque composant est un tuple qui comprend les numéros des courbes qui compose le côté du maillageChaque composant correspondant à une arête du domaine transfini peut donc avoir un nombre de composants différents.+where ''mat'' is a python [[doc:user:general:glossaire#tuple]] with componentsEach component is a tuple which contains the number of the curves which constitute each edgeEach of these four edges can be made of a different number of curves.
  
-__Exemple:__+__Example:__
  
 {{ doc:user:mesh-2d-3.gif |Maillage sans autodétection}} {{ doc:user:mesh-2d-3.gif |Maillage sans autodétection}}
  
-Cette face peut être maillée par la commande+This face can be meshed by the command:
  
    TransfiniteMesher2D(sideset(1)).execute2( (1,2,(3,4),5) )    TransfiniteMesher2D(sideset(1)).execute2( (1,2,(3,4),5) )
  
-L'ordre des lignes mentionnées n'a pas d'importance (contrairement au [[3d|3D]]). On peut donc écrire aussientre autres:+The order of the lines does not matter in 2D (in opposition to the [[doc:user:geometry:mesh:3d|3D]] case). Thereforethe following command also works:
  
    TransfiniteMesher2D(sideset(1)).execute2( ((4,3),1,2,5) )    TransfiniteMesher2D(sideset(1)).execute2( ((4,3),1,2,5) )
  
  
-==== Maillage transfini sur une surface ====+==== Transfinite mesher on a side ====
  
-Le maillage peut être projété sur la surface ''surfNo'' (cas avec ou sans autodectectionsi cette dernière est associée à la ''[[doc:user:geometry:user:faces|Side]]'' avant l'opération de maillage:+ 
 +The mesh can be projected on the surface ''surfNo'' (whether with or without auto-detectionif this surface is associated to the ''[[doc:user:geometry:user:faces|Side]]'' before the meshing operation:
  
    sideset(1).setSurfaceNo(surfNo)    sideset(1).setSurfaceNo(surfNo)
-==== Maillage transfini 2D avec une distribution non uniforme des mailles ====+    
 +==== 2D transfinite mesher with a non-uniform mesh elements distribution ====
  
-Il suffit de procéder de la manière suivante pour mailler une ''Side'',+This is done with the commands:
  
   MesherTFI2D =TransfiniteMesher2D(sideset(number))   MesherTFI2D =TransfiniteMesher2D(sideset(number))
   MesherTFI2D.setEnableDistribution()   MesherTFI2D.setEnableDistribution()
-  MesherTFI2D.execute(type, tri) ou MesherTFI2D.execute2(mat, type)        +  MesherTFI2D.execute(type, tri) or MesherTFI2D.execute2(mat, type)        
  
-lorsqu'un de ses bords est discrétisé par une distribution de maille+when one if the edges is already discretized using a mesh elements distribution.
  
-Remarque Par défautle paramètre de la fonction ''setEnableDistribution'' est ''True''+Note By defaultthe parameter of the function ''setEnableDistribution'' is set to ''True''. 
-===== Mailleur frontal =====+ 
 +===== Frontal mesher =====
  
 ==== Description ==== ==== Description ====
  
-Ce mailleur est une réimplémentation du travail de LStainierIl intègre un mailleur offset et frontal. Le résultat est, en général, assez décevant.+{{:doc:user:ico-expert.png?40 |Expert!}}{{:doc:user:ico-danger.png?40 |Danger!}} This mesher is a new implementation of L. Stainer's work, which contains an offset and frontal mesherIt is usually rather disappointing.
  
-==== Utilisation ====+==== Use ====
  
-Version triangles (frontal):+Triangles (frontal):
  
   sidset(no).frontalTriangle(d)   sidset(no).frontalTriangle(d)
  
-Version quadrangles (offset + frontal):+Quadrangles (offset + frontal):
  
   sidset(no).frontalQuad(d)   sidset(no).frontalQuad(d)
  
-où ''d'' est la taille moyenne des arêtes des mailles à générer.+where ''d'' is the average length of the mesh elements edges to generate.
  
-===== Mailleur Gen4 =====+===== Gen4 mesher =====
  
 ==== Description ==== ==== Description ====
  
-Ce mailleur quadrangulaire est basé sur l'algorithme de [[http://www-lacan.upc.es/sarrate/|Sarrate]]. La méthode consiste à diviser de manière récursive le domaine à mailler jusqu'à ce qu'il ne reste qu'un quadrangle. +This quadrangular mesher is based on [[http://www-lacan.upc.es/sarrate/|Sarrate]] algorithmThis method consists in diving the domain in a recursive way until only one quadrangle remainsIt is very robustand enables efficient meshing of complex domains.
-Très robusteil permet de mailler des domaines complexes avec un minimum d'effort.+
  
 +<note important> By design, running twice Gen4 with the exact same parameters does not necessary lead to the same mesh. This can lead to some issues when running a simulation on a computer and trying to load results on another. To avoid this, the mesh generated is saved in a ".gen4" file, which will be read when loading a fac instead of creating the mesh anew. This ".gen4" file is not automatically deleted when cleaning the worskpace, so if you modify your mesh parameters, you must manually delete this file. </note>
 +==== Possibilities ====
  
-==== Possibilités ====+Gen4 can be used to mesh:
  
-  * Maillage d'une face plane quelconque (convexe ou nonavec trous ou non+  * any planar face (convex or notwith or without holes
-  * Maillage de type "densité" (interpolation linéaire entre des valeurs spécifiées aux sommets de la face). +  * including density (linear interpolation between two values specified on the vertices of the face). 
-  * Maillage de type "background mesh" (densité spécifiée sur un maillage secondaire). +  * including the "background mesh" type (density specified on a secondary mesh). 
-  * Lissage intégré +  * with integrated smoothing 
-  * Correction de topologie+  * with topological correction
  
-==== Utilisation ====+==== Use ====
  
- +These lines are used to mesh the face #1 of the domain, whose vertices (points #1, #2, #3 and #4) densities are 0.1, 0.1, 0.2 and 0.05.
-Maillage de la face #1 du domaine ''domain'' dont les densités des 4 sommets (points #1, #2, #3#4) sont respectivement 0.1, 0.1, 0.2 et 0.05.+
  
   from toolbox.meshers import Gen4Mesher   from toolbox.meshers import Gen4Mesher
Line 121: Line 122:
   mesher.execute()    mesher.execute() 
  
-Une densité par défaut (valable pour tous les points sauf ceux explicitement modifiés) peut être définieCelle-ci permet de ne définir une densité différente que sur les points particuliers du maillageUne valeur de 0.1 est assignée à la densité par défaut en l'absence de définition dans le jeu de données.+A default density, used unless explicitly stated differently, can be definedThis way, a density is only defined on specific mesh points. If no value is assigned in the data set, $0.1$ is taken as default density value.
  
-__ATTENTION__ la face #1 doit être défini dans le plan XY+__CAREFUL__ The face #1 must be defined in the XY plane.
  
 {{ doc:user:gen4-09.jpg | Exemple de maillage avec Gen4}} {{ doc:user:gen4-09.jpg | Exemple de maillage avec Gen4}}
  
-===== Mailleur triangulaire =====+===== Triangular mesher ===== 
 + 
 +==== Description ====
  
-==== Déscription ====+Create triangles on a planar face, as a function of
  
-Crée des triangles sur une face plane en fonction de  +  the maximal area of the triangle 
-  l'aire maximale de triangle +  * the maximal angle of the triangle
-  * l'angle maximal de triangle+
  
-==== Utilisation ====+==== Use ====
  
-Voirpar exemplele cas ''apps.qs.triangleMesher''Après avoir créé une face ''Side(1)'' du domaine ''domain'', on l'maillé avec comme critère l'aire maximale de 0.05+Seefor examplethe case ''apps.qs.triangleMesher''After creating a face ''Side(1)'', it was meshed with maximal area of 0.05 as criterion.
  
 <code> <code>
doc/user/geometry/mesh/2d.1373636557.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki