Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:08_16

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
commit:2017:08_16 [2017/08/16 14:01] – [Boundary Volume Hierarchy] wauteletcommit:2017:08_16 [2017/08/16 18:20] (current) – [Fichiers ajoutés/supprimés] wautelet
Line 15: Line 15:
 Je vous fournis aussi les références utilisées pour l'implémentation : Je vous fournis aussi les références utilisées pour l'implémentation :
  
 +  * Bin Yang, Tod A. Laursen : A contact searching algorithm including bounding volume trees applied to finite sliding mortar formulations [2006]
 +  * T. L. Kay & J. T. Kajiya, Ray tracing complex scenes [1986] (Spatial median splits)
 +  * Efficient Collision Detection Using Bounding Volume Hierarchies of k-DOPs, J. T. Klosowski et al. [1998] (k-DOPs)
 +
 +Par exemple, le cas de l'impact entre deux anneaux. 
 +
 +{{:commit:2017:cpudetectionannuli.png?600|}} 
 +{{:commit:2017:cputotalannuli.png?600|}}
  
-  
 === Détails d'implémentation === === Détails d'implémentation ===
  
-Les routines de parcours sur l'arbre se fait au moyen d'un appel à fonction récursif au lieu de l'utilisation d'une queue. +Les routines de manipulation sur les nœuds de l'arbre se fait au moyen d'un appel à fonction récursif au lieu de l'utilisation d'une queue. 
  
 L'arbre se trouve sous forme d'un std::vector organisé d'un manière telle que les nœuds gauche et droite sont directement contigus. L'arbre se trouve sous forme d'un std::vector organisé d'un manière telle que les nœuds gauche et droite sont directement contigus.
Line 32: Line 39:
  
 Le système de recherche sous forme d'arbre s'active par la commande suivante :  Le système de recherche sous forme d'arbre s'active par la commande suivante : 
 +
 +<code>
 +ci1 = RdContactInteraction(1)
 +ci1.push(wireset(1))
 +ci1.setTool(wireset(2))
 +ci1.setUseBVH(parameters['useBVH']) parameters['useBVH'] = True | False
 +interactionset.add(ci1)
 +</code>
  
  
 Je vous indique ici les différentes performances observées avec quelques cas-tests de la batterie :  Je vous indique ici les différentes performances observées avec quelques cas-tests de la batterie : 
  
 +|Cas test | CPU sans BVH (sec) | CPU avec BVH (sec) | Différence (sec) |
 +|apps.imp.ddrawingBVH| 169.672 | 168.859 | 0.813 (0.5 %) |
 +|meca0464.tests.threeRingsContactTest| 36.6406 | 28.2344 | 8.4062 (23 %) |
 +|meca0464.tests.twoRingsContactTest| 12.6406 | 11.9375 | 0.703 (5.5 %) |
 +|mtContact.tests.threePlatesCylinderContactTest| 922.141 | 558.453 | 363.688 (39 %) |
 +|mtContact.tests.threeBeamsRingContactTest| 332.547 | 182.609 | 149.938 (45 %) |
 +|mtContact.tests.torusCylinderContactTest| 622.391 | 329.219 | 293.172 (47 %) |
 +|mtContact.tests.twoToriContactTest| 251.141 | 173.453 | 77.688 (31 %) |
  
 Finalement, il est très recommandé d'utiliser cet algorithme d'arbre lors d'un cas test de contact en défo-défo.  Finalement, il est très recommandé d'utiliser cet algorithme d'arbre lors d'un cas test de contact en défo-défo. 
  
-<note important>Etant donné la procédure de sélection d'une projection valide en trois dimensions ou deux dimensions, on peut observer une différence entre une execution avec arbre et sans arbre. La raison de cette différence réside dans la présence de tolérance pour effectuer ce choix.</note>+<note important>Etant donné la procédure de sélection d'une projection valide en trois dimensions ou deux dimensions, on peut observer une différence entre une exécution avec arbre et sans arbre. La raison de cette différence réside dans la présence de tolérance pour effectuer ce choix.</note>
  
 === Visualisation Graphique === === Visualisation Graphique ===
Line 45: Line 68:
 J'ai ajouté la possibilité de voir les arbres dans Metafor. Je vous fournis ici quelques captures d'écran : J'ai ajouté la possibilité de voir les arbres dans Metafor. Je vous fournis ici quelques captures d'écran :
  
 +{{:commit:2017:toribvh0000.png?800|}}
  
 === Extensions possibles ===  === Extensions possibles === 
Line 62: Line 86:
 Références :  Références : 
  
-  * Unordered List ItemComputational Integration de Arnold R. Krommer et Christoph W. Ueberhuber, p 427 +  * Computational Integration de Arnold R. Krommer et Christoph W. Ueberhuber, p 427 
-  * Unordered List ItemA self-adaptive Clenshaw-Curtis quadrature scheme for efficient integration over parametric CAD surfaces, R.N. Simpson, Z. Liu, University of Glasgow+  * self-adaptive Clenshaw-Curtis quadrature scheme for efficient integration over parametric CAD surfaces, R.N. Simpson, Z. Liu, University of Glasgow
   * Is Gauss quadrature better than Clenshaw-Curtis ?, Lloyd N. Trefethen, 2008   * Is Gauss quadrature better than Clenshaw-Curtis ?, Lloyd N. Trefethen, 2008
  
Line 69: Line 93:
  
 <code> <code>
-[a]:+[a]:oo_meta\mtDrawables\BVHTreeDrawer.cpp 
 +[a]:oo_meta\mtDrawables\BVHTreeDrawer.h 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolume.cpp 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolume.h 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolumeHierarchy.cpp 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolumeHierarchy.h 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolumeHierarchyTemplate.cpp 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolumeHierarchyTemplate.h 
 +[a]:oo_meta\mtGeo\mtGeoBoundaryVolumeHierarchyTemplate.hpp 
 +[a]:oo_meta\mtGeo\mtGeoBVHBuilder.cpp 
 +[a]:oo_meta\mtGeo\mtGeoBVHBuilder.h 
 +[a]:oo_meta\mtGeo\mtGeoBVHTreeNode.cpp 
 +[a]:oo_meta\mtGeo\mtGeoBVHTreeNode.h 
 +[a]:oo_meta\mtGeo\mtGeoBVHType.h 
 +[a]:oo_meta\mtGeo\mtGeoCurveIntegrands.cpp 
 +[a]:oo_meta\mtGeo\mtGeoCurveIntegrands.h 
 +[a]:oo_meta\mtGeo\mtGeoGObjectIntegrandTemplate.h 
 +[a]:oo_meta\mtGeo\mtGeoGObjectIntegrandTemplate.inl 
 +[a]:oo_meta\mtGeo\mtGeoSelfBVHTreeNode.cpp 
 +[a]:oo_meta\mtGeo\mtGeoSelfBVHTreeNode.h 
 +[a]:oo_meta\mtGeo\mtGeoSelfTopDownBVHBuilder.cpp 
 +[a]:oo_meta\mtGeo\mtGeoSelfTopDownBVHBuilder.h 
 +[a]:oo_meta\mtGeo\mtGeoSurfaceIntegrands.cpp 
 +[a]:oo_meta\mtGeo\mtGeoSurfaceIntegrands.h 
 +[a]:oo_meta\mtGeo\mtGeoTopDownBVHBuilderTemplate.h 
 +[a]:oo_meta\mtGeo\mtGeoTopDownBVHBuilderTemplate.hpp 
 +[a]:oo_meta\mtGeo\mtGeoWithBoundaryVolume.cpp 
 +[a]:oo_meta\mtGeo\mtGeoWithBoundaryVolume.h 
 +[a]:oo_meta\mtGeo\mtGeoWithBoundaryVolumeTemplate.cpp 
 +[a]:oo_meta\mtGeo\mtGeoWithBoundaryVolumeTemplate.h 
 +[a]:oo_meta\mtGeo\mtGeoWithBoundaryVolumeTemplate.hpp 
 +[a]:oo_meta\mtMath\AdaptiveClenshawCurtisIntegrators.cpp 
 +[a]:oo_meta\mtMath\AdaptiveClenshawCurtisIntegrators.h 
 +[a]:oo_meta\mtMath\AdaptiveClenshawCurtisIntegratorTemplate.h 
 +[a]:oo_meta\mtMath\AdaptiveClenshawCurtisIntegratorTemplate.inl 
 +[a]:oo_meta\mtMath\ClenshawCurtisQuadratureRule.cpp 
 +[a]:oo_meta\mtMath\ClenshawCurtisQuadratureRule.h 
 +[a]:oo_meta\mtMath\ClenshawCurtisQuadratureRule.inl 
 +[a]:oo_meta\mtMath\ClenshawCurtisTestSuiteChecker.cpp 
 +[a]:oo_meta\mtMath\ClenshawCurtisTestSuiteChecker.h 
 +[a]:oo_meta\mtMath\Integrands.cpp 
 +[a]:oo_meta\mtMath\Integrands.h 
 +[a]:oo_meta\mtMath\IntegrandTemplate.h 
 +[a]:oo_meta\mtMath\IntegrandTemplate.inl 
 +[a]:oo_meta\mtMath\IntegrationDomains.cpp 
 +[a]:oo_meta\mtMath\IntegrationDomains.h 
 +[a]:oo_meta\mtMath\IntegrationDomainTemplate.h 
 +[a]:oo_meta\mtMath\IntegrationDomainTemplate.inl
 [r]: [r]:
 </code> </code>
Line 76: Line 147:
  
 <code> <code>
-[a]:+[a]:oo_nda/meca0464/tests/threeRingsContactTestBVH.py 
 +[a]:oo_nda/meca0464/tests/twoRingsContactTestBVH.py 
 +[a]:oo_meta\apps\imp\ddrawingBVH.py 
 +[a]:oo_meta\mtContact\tests\cylindricalIndentation.py 
 +[a]:oo_meta\mtContact\tests\cylindricalIndentationBarzilaiBorwein.py 
 +[a]:oo_meta\mtContact\tests\cylindricalIndentationExtrapolation.py 
 +[a]:oo_meta\mtContact\tests\cylindricalIndentationNesterov.py 
 +[a]:oo_meta\mtContact\tests\cylindricalIndentationUzawa.py 
 +[a]:oo_meta\mtContact\tests\deepDrawing.py 
 +[a]:oo_meta\mtContact\tests\deepDrawingBarzilaiBorwein.py 
 +[a]:oo_meta\mtContact\tests\deepDrawingExtrapolation.py 
 +[a]:oo_meta\mtContact\tests\deepDrawingNesterov.py 
 +[a]:oo_meta\mtContact\tests\deepDrawingUzawa.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlock.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorwein.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorweinLimit20.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorweinLimit5.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorweinNoLimit.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorweinNoStability.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockBarzilaiBorweinNoStabilityNoLimit.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockExtrapolationNoStability.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockExtrapolationNoStabilityNoLimit.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockNesterov.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticBlockUzawa.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticExtrapolation.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticExtrapolationLimit075.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticExtrapolationLimit3.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticExtrapolationNoLimit.py 
 +[a]:oo_meta\mtContact\tests\slidingElasticNesterovNoStability.py 
 +[a]:oo_meta\mtContact\tests\threeBeamsRingContactTestBVH.py 
 +[a]:oo_meta\mtContact\tests\threePlatesCylinderContactTestBVH.py 
 +[a]:oo_meta\mtContact\tests\torusCylinderContactTestBVH.py 
 +[a]:oo_meta\mtContact\tests\twoToriContactTestBVH.py 
 +[a]:oo_meta\mtMath\tests\adaptiveClenshawCurtisIntegrators.py
 [r]: [r]:
 </code> </code>
commit/2017/08_16.1502884914.txt.gz · Last modified: 2017/08/16 14:01 by wautelet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki