MeshPoint
, c'est-à-dire un point du maillage que l'on trouve dans domain.getTopology().getPointSet()
This is an old revision of the document!
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.
Un Group
se crée comme n'importe qu'elle autre entité géométrique.
groupset.add( Group(number) )
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
groupset(number).add(GObject) groupset(number).addMeshPoint(no) groupset(number).addMeshPointsInBox(xmin, xmax, ymin, ymax, zmin, zmax) groupset(number).addMeshPointsFromObject(target, selector)
où
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 |
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)
où
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.
Ajout de noeuds depuis l'objet géométrique target
:
groupset(number).addMeshPointsFromObject(target, selector)
où 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
.
MeshPoint
, c'est-à-dire un point du maillage que l'on trouve dans domain.getTopology().getPointSet()