===== Commit 2017-05-21 =====
AreaInContact : Changement du défaut : AIC_ONCE nouveau défaut
===== Changement du défaut de Methode AreaInContact =====
Dans la série je modifie les défauts de Metafor, j'ai décidé de changer le défaut du paramètre AreaInContact.
Pour rappel, dans l'état originel de Metafor, le poids d'un noeud de contact est identique quel que soit la quantité de matière associée. Cela induit qu'un même test où un outil de contact passe d'une zone grossièrement maillée à une zone raffinée, l'effort total de contact n est affecté. De la même manière, une étude de convergence de la pénalité sera à refaire si on modifie le maillage. Raison pour laquelle j'avais introduit la possibilité de prendre en compte l'aire de contact associée à chaque noeud esclave et ainsi pondérer l'effort de contact par la matière associée. Gaetan ayant affiné la méthode de calcul de l'aire, un peu simpliste que j'avais implémenté en première approche & Yanick ayant ajouté des méthode de calcul "linéiques".
En terme des systèmes d'équations à résoudre, cette méthode permet d'ailleurs de se rapprocher des théories du contact pénalisé : le produit (Peno*Gap) définissant une pression, non une force qu'il reste à intégrer. Le calcul à priori de l'aire de contact (AIC_ONCE) est justifié lorsque l'on considère que les variations de l'aire de contact associée à chaque noeud ne sont pas impactantes au niveau de la prise en compte du contact. Si la variation de surface est importantes, Romain avait ajouté la possibilité de recalculer l'aire de contact à chaque pas de temps (AIC_ONCEPERSTEP). Ces deux solutions, par le calcul de l'aire sur une configuration initial (total ou du pas de temps) conservent le caractère "nodal" du contact (pas d'interaction entre noeuds de la face) et n'induit pas de termes complémentaires à la matrice de raideur tangente (au delà de la multiplication par l'aire nodal). Gaetan a poussé le formalise à son extrémité en intégrant l'aire de contact à chaque itération (AIC), rendant l'élément de contact totalement implicite, mais aussi avec la perte du caractère nodal de l'élément et la nécessité d'adapter la matrice de raideur tangente... La solution initial est évidemment toujours accessible via AIC_NO (en fait, c'est comme si l'aire de contact = 1 pour tous les noeuds). Récemment, j'avais aussi ajouté la possibilité à l'utilisateur de fixer l'aire de contact (cas de contacts frotteurs pour lesquels, il est difficile de la calculer : tambours SAB).
Le nouveau défaut choisis est AIC_ONCE pour le rapport "qualité/prix" de la méthode...
Comme pour le commit précédent, le plus dur ici est de vérifier tous les tests de la batterie. Je crois avoir testé et adapté (soit en forcant AIC_NO, soit en adaptant les penalité) tous les tests pour lesquels la différence de convergence montrait un changement de comportement significatif. Certains tests montrent toujours des diffs en plus ou en moins (mais que j'ai visuellement jugées acceptable). D'autres m'ont certainement échappés (surtout des tests pour lesquels il faut augmenter la pénalité). N'hésitez pas à les corriger ou a venir me trouver pour voir comment les adapter...
Au final, les variations du temps de calcul total des batteries sont de l'ordre des variations usuellement observées (sur les quelques derniers commits):
^Revision ^ 2929 ^ 2932 ^ 2934 ^ 2940 ^ 2943 ^ 2950 ^
|Author | papeleux | boman | wautelet | wautelet | papeleux | papeleux |
|Date | 2017-05-17 | 2017-05-19 | 2017-05-28 | 2017-06-07 | 2017-06-16 | 2017-06-21 |
|CPU-Linux64-gcc.txt | 149276.9 | 103752.9 | 84805.7 | 102454.4 | 99818.0 | 112645.2 |
|CPU-Linux64-clang.txt | 64591.2 | 65007.6 | 64466.3 | 94025.0 | 68993.1 | 68234.2 |
|CPU-Linux64-icc.txt | 142815.4 | 102337.4 | 146745.5 | 151232.3 | 111865.3 | 114047.0 |
|CPU-Windows-msvc.txt | 94457.5 | 80004.0 | 81810.9 | 123648.1 | 84797.6 | 78296.2 |
===== Fichiers ajoutés/supprimés =====
A
===== Tests ajoutés/supprimés =====
A
A
--- //[[L.Papeleux@ulg.ac.be|Luc Papeleux]] 2017/06/21 //