Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:mesh:2d

This is an old revision of the document!




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ée. Les mailleurs surfaciques 2D nécessitent que le contour du domaine considéré soit orienté correctement. Il faut donc impérativement que le Wire soit orienté “aire à gauche”. C'est-à-dire que si on parcourt le contour selon son sens (défini par la succession de ses Curves), la matière se trouve à gauche.

Contour "aire à gauche"

Mailleur transfini

Avec autodétection

L'autodétection fonctionne si on a une Side avec 4 côtés possédant chacun une seule Curve.

TransfiniteMesher2D(sideset(number)).execute(type, tri)
number = numéro de la Side
type = True si génération des mailles
= False si génération de points uniquement (utile en 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)

Maillage possible avec autodétection

Dans l'exemple ci-dessus, l'autodétection est possible.

L'analogue au second degré est :

HighDegreeTransfiniteMesher2D(sideset(number), degree).execute(type, sideNode, tri)
number = numéro de la Side
degree = 2 ou 3 degré du maillage
type = True si génération des mailles
= False si génération de points uniquement (utile en 3D!)
sideNode = True si génération de mailles à 9 noeuds(CELL_NINE_QUADRATIC_QUAD)
= False si génération de mailles à 8 noeuds(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)

Dans le cas de mailles à 9 noeuds, le noeud central est lié à la Side.
Dans le cas de mailles à 16 noeuds, les noeuds centraux sont liés à la Side.

Sans autodétection

  mat = ((mat11, mat12, ..., mat1nbmax), 
         (mat21, mat22, ..., mat2nbmax), 
         (mat31, mat32, ..., mat3nbmax), 
         (mat41, mat42, ..., mat4nbmax)   )
  TransfiniteMesher2D(sideset(number)).execute2(mat, type)

mat est un tuple python à 4 composants. Chaque composant est un tuple qui comprend les numéros des courbes qui compose le côté du maillage. Chaque composant correspondant à une arête du domaine transfini peut donc avoir un nombre de composants différents.

Exemple:

Maillage sans autodétection

Cette face peut être maillée par la commande

 TransfiniteMesher2D(sideset(1)).execute2( (1,2,(3,4),5) )

L'ordre des lignes mentionnées n'a pas d'importance (contrairement au 3D). On peut donc écrire aussi, entre autres:

 TransfiniteMesher2D(sideset(1)).execute2( ((4,3),1,2,5) )

Maillage transfini sur une surface

Le maillage peut être projété sur la surface surfNo (cas avec ou sans autodectection) si cette dernière est associée à la Side avant l'opération de maillage:

 sideset(1).setSurfaceNo(surfNo)

Maillage transfini 2D avec une distribution non uniforme des mailles

Il suffit de procéder de la manière suivante pour mailler une Side,

MesherTFI2D =TransfiniteMesher2D(sideset(number))
MesherTFI2D.setEnableDistribution()
MesherTFI2D.execute(type, tri) ou MesherTFI2D.execute2(mat, type)        

lorsqu'un de ses bords est discrétisé par une distribution de maille.

Remarque : Par défaut, le paramètre de la fonction setEnableDistribution est True.

Mailleur frontal

Description

Ce mailleur est une réimplémentation du travail de L. Stainier. Il intègre un mailleur offset et frontal. Le résultat est, en général, assez décevant.

Utilisation

Version triangles (frontal):

sidset(no).frontalTriangle(d)

Version quadrangles (offset + frontal):

sidset(no).frontalQuad(d)

d est la taille moyenne des arêtes des mailles à générer.

Mailleur Gen4

Description

Ce mailleur quadrangulaire est basé sur l'algorithme de Sarrate. La méthode consiste à diviser de manière récursive le domaine à mailler jusqu'à ce qu'il ne reste qu'un quadrangle. Très robuste, il permet de mailler des domaines complexes avec un minimum d'effort.

Possibilités

  • Maillage d'une face plane quelconque (convexe ou non, avec trous ou non)
  • Maillage de type “densité” (interpolation linéaire entre des valeurs spécifiées aux sommets de la face).
  • Maillage de type “background mesh” (densité spécifiée sur un maillage secondaire).
  • Lissage intégré
  • Correction de topologie

Utilisation

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
defaultDensity = 0.1
mesher = Gen4Mesher(sideset(1), domain, defaultDensity)
mesher.setPointD(3,0.2)
mesher.setPointD(4,0.05)
mesher.execute() 

Une densité par défaut (valable pour tous les points sauf ceux explicitement modifiés) peut être définie. Celle-ci permet de ne définir une densité différente que sur les points particuliers du maillage. Une valeur de 0.1 est assignée à la densité par défaut en l'absence de définition dans le jeu de données.

ATTENTION : la face #1 doit être défini dans le plan XY

 Exemple de maillage avec Gen4

Mailleur triangulaire

Déscription

Crée des triangles sur une face plane en fonction de

  • l'aire maximale de triangle
  • l'angle maximal de triangle

Utilisation

Voir, par exemple, le cas apps.qs.triangleMesher. Après avoir créé une face Side(1) du domaine domain, on l'a maillé avec comme critère l'aire maximale de 0.05

from toolbox.meshers import TriangleMesher
mesher = TriangleMesher(sideset(1), domain)
#mesher.setMaxAngle(20)
mesher.setMaxArea(0.05)
mesher.execute()

 Exemple de maillage triangulaire

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