Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:12_09

Commit 2017-12-10

Ce commit est pour ajouter les DualGraphTree et le BottomUpBVHBuilder dans le but de rapatrier mes derniers développements.

Dual Graph Tree

Cette structure représente les différentes connectivités dans un wire et une skin. Dans le cas d'un wire, les noeuds sont les courbes et les bords sont les points. Dans le cas d'une skin, les noeuds sont les sides et les bords sont les courbes. Ainsi, on peut facilement connaitre les voisins directs d'une side ou d'une courbe en parcourant l'arbre. Pour la construction des bords, j'ai implémenté un petit bucket sort afin d'accélérer la recherche des voisins.

Bottom Up BVH Builder

Sur base du graphe dual d'une skin ou d'un wire, il est possible de créer une hiérarchie de volume frontière en partant des feuilles de l'arbre vers le sommet de l'arbre, en groupant au fur et à mesure les différentes courbes et sides. Cette procédure est indispensable pour le cas de l'auto-contact pour pouvoir tenir compte du critère de courbure locale et d'adjacence.

Si le wire ou la skin sont discontinue, une erreur est signalée ! En effet, on suppose que le wire ou la skin sont simplement connectées. Il est possible d'adapter la procédure de construction des arbres de volume frontière sur des cas disconnectés, en modifiant la procédure de regroupement des supercoubes et supersurfaces disjointes !

Tests

J'ai ajouté des tests pour la recherche globale du contact en auto-contact et en contact avec une hiérarchie de volume frontière.

Pour pouvoir utiliser cette fonctionnalité, il suffit de générer un BVHOptions et le transmettre à l'interaction de contact :

ci = Rd|Sc|Dd|FdRd|ContactInteraction(1)
option = BVHOptions()
option.setBottomUp(True|False)
option.setVerbose(True|False)
option.setVerboseTimer(True|False)
option.setDebug(True|False)
option.setLeafSize(N) et N est un entier positif.
option.setUseSelfBVH(True|False)
ci.setBVHOptions(option) 

Références

[1] A large deformation mortar formulation of self contact with finite sliding, Bin Yang and Tod A. Laursen

[2] A contact searching algorithm including bounding volume trees applied to finite sliding mortar formulations, Bin Yang and Tod A. Laursen

[3] Hierarchical Face Clustering on Polygonal Surfaces, Michael Garland, Andrew Willmott and Paul S. Heckbert

[4] Quadric-Based Simplification in Any Dimension, MICHAEL GARLAND and YUAN ZHOU

Fichiers ajoutés/supprimés

[a]:oo_meta\mtGeo\mtGeoAAOBBoundaryVolume.cpp
[a]:oo_meta\mtGeo\mtGeoAAOBBoundaryVolume.h
[a]:oo_meta\mtGeo\mtGeoBottomUpBVHBuilder.cpp
[a]:oo_meta\mtGeo\mtGeoBottomUpBVHBuilder.h
[a]:oo_meta\mtGeo\mtGeoBucketSort.cpp
[a]:oo_meta\mtGeo\mtGeoBucketSort.h
[a]:oo_meta\mtGeo\mtGeoBVHOptions.cpp
[a]:oo_meta\mtGeo\mtGeoBVHOptions.h
[a]:oo_meta\mtGeo\mtGeoCurveWithDualGraph.cpp
[a]:oo_meta\mtGeo\mtGeoCurveWithDualGraph.h
[a]:oo_meta\mtGeo\mtGeoDualGraphEdge.cpp
[a]:oo_meta\mtGeo\mtGeoDualGraphEdge.h
[a]:oo_meta\mtGeo\mtGeoDualGraphNode.cpp
[a]:oo_meta\mtGeo\mtGeoDualGraphNode.h
[a]:oo_meta\mtGeo\mtGeoDualGraphTree.cpp
[a]:oo_meta\mtGeo\mtGeoDualGraphTree.h
[a]:oo_meta\mtGeo\mtGeoSelfBottomUpBVHBuilder.cpp
[a]:oo_meta\mtGeo\mtGeoSelfBottomUpBVHBuilder.h
[a]:oo_meta\mtGeo\mtGeoSelfBoundaryVolumeHierarchy.cpp
[a]:oo_meta\mtGeo\mtGeoSelfBoundaryVolumeHierarchy.h
[a]:oo_meta\mtGeo\mtGeoSideWithDualGraph.cpp
[a]:oo_meta\mtGeo\mtGeoSideWithDualGraph.h
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphEdge.cpp
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphEdge.h
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphNode.cpp
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphNode.h
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphTree.cpp
[a]:oo_meta\mtGeo\mtGeoSkinDualGraphTree.h
[a]:oo_meta\mtGeo\mtGeoSkinSelfBoundaryVolumeHierarchy.cpp
[a]:oo_meta\mtGeo\mtGeoSkinSelfBoundaryVolumeHierarchy.h
[a]:oo_meta\mtGeo\mtGeoWireDualGraphEdge.cpp
[a]:oo_meta\mtGeo\mtGeoWireDualGraphEdge.h
[a]:oo_meta\mtGeo\mtGeoWireDualGraphNode.cpp
[a]:oo_meta\mtGeo\mtGeoWireDualGraphNode.h
[a]:oo_meta\mtGeo\mtGeoWireDualGraphTree.cpp
[a]:oo_meta\mtGeo\mtGeoWireDualGraphTree.h
[a]:oo_meta\mtGeo\mtGeoWireSelfBoundaryVolumeHierarchy.cpp
[a]:oo_meta\mtGeo\mtGeoWireSelfBoundaryVolumeHierarchy.h
[a]:oo_meta\mtGeo\mtGeoWithDualGraph.cpp
[a]:oo_meta\mtGeo\mtGeoWithDualGraph.h
[r]:

Cas tests ajoutés/supprimés

[a]:oo_nda\meca0464/tests/threeRingsContactTestBVHBottomUp.py
[a]:oo_nda\meca0464/tests/threeRingsContactTestSelfBVHBottomUp.py
[a]:oo_nda\meca0464/tests/twoRingsContactTestBVHBottomUp.py
[a]:oo_nda\meca0464\tests\threeRingsContactTestBVHBottomUp.tsc
[a]:oo_nda\meca0464\tests\threeRingsContactTestSelfBVHBottomUp.tsc
[a]:oo_nda\meca0464\tests\twoRingsContactTestBVHBottomUp.tsc
[a]:oo_meta\apps\imp\ddrawingBVHBottomUp.py
[a]:oo_meta\apps\imp\ddrawingBVHBottomUp.tsc
[a]:oo_meta\mtContact\tests\threeBeamsRingContactTestBVHBottomUp.py
[a]:oo_meta\mtContact\tests\threePlatesCylinderContactTestBVHBottomUp.py
[a]:oo_meta\mtContact\tests\torusCylinderContactTestBVHBottomUp.py
[a]:oo_meta\mtContact\tests\twoToriContactTestBVHBottomUp.py
[a]:oo_meta\mtContact\tests\threeBeamsRingContactTestBVHBottomUp.tsc
[a]:oo_meta\mtContact\tests\threePlatesCylinderContactTestBVHBottomUp.tsc
[a]:oo_meta\mtContact\tests\torusCylinderContactTestBVHBottomUp.tsc
[a]:oo_meta\mtContact\tests\twoToriContactTestBVHBottomUp.tsc
[r]:

gaëtan 2017/12/09 18:00

commit/2017/12_09.txt · Last modified: 2017/12/10 23:16 by wautelet