Désormais, un pointeur vers une méthode de contact est attribuée à chaque interaction de contact. Cette méthode de contact dépend du schéma d'intégration utilisée et peut varier d'un pas de temps à l'autre dans le cas du schéma d'intégration implicite conservatif/explicite combiné.
Lors de la phase d'initialisation du schéma d'intégration, une méthode de contact est attribuée à chaque interaction de contact via setContactMethod() avant l'étape “elementsInitialisation()”. Par défaut, c'est la méthode de contact classique. Dans le cas du schéma d'intégration implicite énergétiquement consistent, nous avons le choix entre trois méthodes de contact :
Les paramètres de gestion de l'algorithme conservatif sont imposés par des fonctions relatives à metafor.getConsistentAlgorithmFunctions()
.
caf = metafor.getConsistentAlgorithmFunctions() caf.setDissipationParameter(diss) caf.setConservingContactMethod(consContactMeth)
où
consContactMeth | = CONSERVINGCONTACTMETHOD_ARMEROPETOCZ : la méthode du contact est par défaut celle de Armero et Petöcz. |
= CONSERVINGCONTACTMETHOD_LAURSEN : la méthode du contact est celle de Laursen. (Non validée) | |
= CONSERVINGCONTACTMETHOD_LOVE : la méthode du contact est celle de Love (Discontinuité des vitesses) . (Non validée) | |
diss | dissipation numérique (valeur par défaut 0.) |
Certains cas tests ont été adaptés pour pouvoir tester ces méthodes là.
Méthode du lagrangien augmenté :
[a]:mtFEMBase/ConservingContactMethod.h [a]:mtFEMBase/ConservingContactMethod.cpp
[r]:apps/bImp/contactLaursenLove.py [r]:apps/bImp/contactLaursenLoveAugLag.py [r]:apps/bImp/cylElastFrotAugLag.py [r]:apps/bImp/cylPlastAugLag.py [a]:apps/bImp/cylElastFrotLaursenAugLag.py [a]:apps/bImp/cylElastFrotLaursen.py [a]:apps/bImp/cylPlastLaursenAugLag.py [a]:apps/bImp/cylPlastLaursen.py [a]:apps/bImp/contactLove.py [a]:apps/bImp/contactLoveAugLag.py [a]:apps/bImp/contactLaursen.py [a]:apps/bImp/contactLaursenAugLag.py