Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:user:selections

This is an old revision of the document!


Sélections de noeuds - Groups

Les sélections permettent d'appliquer des conditions aux limites (Prescribed Displacements) ou tirer des courbes (Saving history curves to disk) sur une série de noeuds qui ne sont pas initialement supportés par une entité géométrique. Dans Metafor, une sélection est représentée par un Group. Cet objet est une entité géométrique virtuelle qui peut posséder des noeuds tout comme les autres entités qui en reçoivent lors de leur maillage.

Création du ''Group''

Un Group se crée comme n'importe qu'elle autre entité géométrique.

groupset.add( Group(number) )

Info sur les noeuds d'un ''Group''

On peut avoir des infos sur les noeuds d'un Group :

grp = groupset(number)

grp.getNo()                 # Renvoie le numéro du groupe grp 
grp.getNumberOfMeshPoints() # Renvoie le nombre de meshedPoints dans le groupe grp 
grp.getMeshPoint(idx)       # Renvoie une référence vers le idx ème MeshedPoint du groupe grp 

Ajout de noeuds (simple)

groupset(number).add(GObject)
groupset(number).addMeshPoint(no)
groupset(number).addMeshPointsInBox(xmin, xmax, ymin, ymax, zmin, zmax)
groupset(number).addMeshPointsFromObject(target, selector)

number numéro du groupe
no numéro du noeud1) à ajouter au groupe
xmin, ymin, zmin point inférieur de la boite de selection
xmax, ymax, zmax point supérieur de la boite de selection
target entité géométrique support
selector operateur de sélection réduisant le nombre de MeshPoints dans le group

Tri des noeuds sélectionnés (sorter)

Il n'est pas toujours aisé de construire la sélection des noeuds sur les seuls noeuds dont on veut disposer (sur des tests paramétriques par exemples). Il est possible après sélection des noeuds de les trier et de n'en sélectionner qu'un nombre plus réduit que à l'origine. Le tri se fait à l'aide des operateurs de tri : ''SortingOperator''.

groupset(number).selectMeshPoints(sorter,nbMeshPoints)

number numéro du groupe
sorter opérateur de tri
nbMeshPoints nombre de MeshPoints conservés dans le groupe

Exemple:

group.addMeshPointsFromObject(sideset(1))
group.selectMeshPoints(SortByNo(),3) 

Tri des noeuds par leur numero et conservation de 3 valeurs.

Utilisation avancée (Selectors)

Ajout de noeuds depuis l'objet géométrique target:

groupset(number).addMeshPointsFromObject(target, selector)

selector est un objet de type Selector dont voici quelques classes dérivées:

  • BoxSelector (sélection dans une boîte),
  • RangeSelector (sélection dans une zone de l'espace),
  • DistSelector (sélection sphérique),
  • SectorSphericalSelector (sélection dans un secteur sphérique),
  • AnnealedSelector (sélection en anneau selon la direction x, y ou z),
  • SectorAnnealedSelector (sélection d'un quartier d'anneau défini par deux angles selon la direction x, y ou z),
  • InverseSelector (inverse le critère de sélection donné en argument).

Exemples:

group.addMeshPointsFromObject(sideset(1), RangeSelector(TX, xmin, xmax))  

récupère tous les noeuds de la face numéro 1 dont la coordonnée x est comprise entre xmin et xmax.

group.addMeshPointsFromObject(sideset(1), BoxSelector(xmin, xmax, ymin, ymax, zmin, zmax))

récupère tous les noeuds de la face numéro 1 de la boite rectangulaire définie par xmin, xmax, ymin, ymax, zmin, zmax.

 group.addMeshPoints(DistSelector(x, y, z, R))

récupère tous les noeuds situés dans la sphère de centre (x,y,z) et de rayon R.

 group.addMeshPoints(SectorSphericalSelector(Cx, Cy, Cz, rMin, rMax, thetaMin, thetaMax, phiMin, phiMax)) 

récupère tous les nœuds dans le secteur sphérique de centre (Cx,Cy,Cz), de rayon minimum rMin et maximum rMax, d'angle azimutale minimum thetaMin et maximum thetaMax, et d'angle d'élévation minimum phiMin et maximum phiMax :

Remarque : les angles sont calculés par rapport au système d'axes structuraux translatés au centre de la sphère. L'angle d'élévation varie de $-\frac{\pi}{2}$ à $\frac{\pi}{2}$ et l'angle azimutale varie de $0.0$ à $2 \pi$.

group.addMeshPoints(AnnealedSelector(TX, x, y, z, rMin, rMax, zMin, zMax))

récupère tous les noeuds situés entre les deux cylindres d'axe TX, de rayons rMin et rMax et compris entre de hauteur comprises entre zMin et zMax.

group.addMeshPoints(SectorAnnealedSelector(TX, x, y, z, rMin, rMax, thetaMin, thetaMax, zMin, zMax))

récupère tous les noeuds situés entre les deux quartier de cylindres d'axe TX, d'ouverture comprise entre thetaMin et thetaMax, de rayons rMin et rMax et compris entre de hauteur comprises entre zMin et zMax.

Selectors

1)
il s'agit plutôt d'un MeshPoint, c'est-à-dire un point du maillage que l'on trouve dans domain.getTopology().getPointSet()
doc/user/geometry/user/selections.1373648591.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki