This is an old revision of the document!
−Table of Contents
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.
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 ) |
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)
où 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:
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)
où 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
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()