Ce commit est pour améliorer quelques routines liées au contact et pour mettre progressivement mes développements sur la version courante.
J'ai ajouté la possibilité de faire des patch de Coons avec une continuité du type C1 (c'est-à-dire la continuité des tangentes d'un patch de Coons à un autre). Si nous avons une discontinuité des tangentes au niveau de la frontière du patch de Coons, nous avons aussi une discontinuité dans la définition de la normale. Du point de vue du contact, cette discontinuité peut freiner voir même empêcher la convergence du Newton Raphson lors de la résolution de l'équilibre mécanique. La forme implémentée des patch de Coons bi-cubique (Polynôme d'Hermitte) est la version Ferguson (Ferguson Patch).
Si nous avons une surface plane constituée de patch de Coons, nous avons d'office une continuité des tangentes au niveau des frontières d'un patch à un autre. Lors que la surface n'est plus plane, il faut certaines conditions pour que les tangentes soient continues, ce qui n'est toujours aisé à remplir !
Voici les commandes pour instancier un patch bicubique de Coons :
surfaceset = geometry.getSurfaceSet() surfaceset.add(BicubicCoons(1, wireset(1)))
Dans le cas de la boite carré, voici les différences que nous observons pour une pénalité de 1E5 N/mm³ :
Version avec patch de Coons bicubique : User CPU : 1h6m52.28s Real CPU : 19m52.39s [TSC-STP] Number of steps : 1696 [TSC-ITE] Number of mech. iterations : 5607 [TSC-INW] Internal energy : 4856.52 [TSC-EXW] Work of external forces : 467297 [TSC-CPU] User CPU Time : 4012.28 [TSC-REA] Real CPU Time : 1192.39 [TSC-KER] Kernel CPU Time : 82.8281 [TSC-MEM] Peak Memory [Kb] : 368400 [TSC-EXT] AbsMax of gTmax_-_ciPunch : 0.000662198 [TSC-EXT] AbsMax of gTmax_-_ciDie : 0.00147749 [TSC-EXT] AbsMax of gTmax_-_ciHolder : 0.000255104 [TSC-EXT] AbsMax of gNMax_-_ciPunch : 0.00075458 [TSC-EXT] AbsMax of gNMax_-_ciDie : -0.00156713 [TSC-EXT] AbsMax of gNMax_-_ciHolder : 0.00110586
Version avec patch de Coons : User CPU : 1h10m25.63s Real CPU : 21m6.52s [TSC-STP] Number of steps : 1766 [TSC-ITE] Number of mech. iterations : 5867 [TSC-INW] Internal energy : 4880.2 [TSC-EXW] Work of external forces : 467820 [TSC-CPU] User CPU Time : 4225.63 [TSC-REA] Real CPU Time : 1266.52 [TSC-KER] Kernel CPU Time : 68.7188 [TSC-MEM] Peak Memory [Kb] : 308420 [TSC-EXT] AbsMax of gTmax_-_ciPunch : 0.000666918 [TSC-EXT] AbsMax of gTmax_-_ciDie : 0.00138641 [TSC-EXT] AbsMax of gTmax_-_ciHolder : 0.000279426 [TSC-EXT] AbsMax of gNMax_-_ciPunch : 0.000757402 [TSC-EXT] AbsMax of gNMax_-_ciDie : -0.00156178 [TSC-EXT] AbsMax of gNMax_-_ciHolder : 0.00114145
Pour montrer la discontinuité de la normale aux interfaces entre les patchs de Coons, il suffit d'afficher les territoires de contact de type “Corner Edges”.
Version avec patch de Coons
Version avec patch de Coons bicubique
Par la même occasion, j'ai corrigé une erreur dans les dérivées des tangentes pour les patchs de Coons. Elles sont utilisées pour la matrice de raideur analytique de contact avec les termes géométriques !
[a]:mtGeo\mtGeoBicubicCoons.cpp [a]:mtGeo\mtGeoBicubicCoons.h [r]:
[a]:apps\qs\contactBicubicCoons.py [r]:
— gaëtan 2017/06/07 21:59