Table of Contents
Commit 2013-11-29
Modifications
Méthode de contact conservative
J'ai adapté le nom des méthodes de contact conservatives :
- CONSERVINGCONTACTMETHOD_ARMEROPETOCZ ⇒ CCM_ARMEROPETOCZ
- CONSERVINGCONTACTMETHOD_LAURSEN ⇒ CCM_LAURSEN
- CONSERVINGCONTACTMETHOD_LOVE ⇒ CCM_LOVE
Pour toute personne intéressée, les articles de référence sont les suivants :
- Improved implicit integrators for transient impact problems-dynamic frictional dissipation within an admissible conserving framework, G.R. Love, T.A. Laursen.
- Design of energy conserving algorithms for frictionless dynamic contact problems, T.A. Laursen, V. Chawla
Pour être sur et certain que les algorithmes de contact conservatif fonctionnent correctement, il faudrait d'une part corriger les méthodes de contact (Modifications du contenu des méthodes de contact et les calculs des composantes des forces dans les matériaux de contact) et d'autre part s'assurer que le schéma d'intégration conservatif correspond bel et bien à celui utilisé dans ces articles de référence.
Le cas de test de référence de l'impact d'une barre contre un plan rigide est repris dans l'article Formulation and analysis of conserving algorithms for frictionless dynamic contact/impact problems, F. Armero, E. Petöcz pour pouvoir valider les méthodes.
Méthode du Lagrangian Augmenté
J'ai nettoyé la classe Augmented Lagrangian Manager. Notamment, cet objet n'apparait plus par défaut dans l'objet Metafor.
alm=AugmentatedLagrangianManager(metafor) alm.setMaxNbOfIterations(itma) alm.setAugLagMethodCriterion(criterion)
Inputs:
metafor | Référence vers une analyse metafor |
itma | Nombre d'augmentations max (10 par défaut) |
criterion | Critère d'arrêt |
ALM_CRITERION_NO = default |
|
ALM_CRITERION_GEO |
Le critère d'arrêt ALM_CRITERION_NO correspond à un nombre d'augmentation imposé par pas de temps. Le critère d'arrêt ALM_CRITERION_GEO correspond à une tolérance géométrique satisfaite en chaque nœud en contact par pas de temps. Si on ne parvient pas à atteindre la tolérance géométrique donnée en un nombre d'augmentation max, on recommence la calcul avec un pas de temps plus petit.
J'ai ajouté les matériaux suivants AugLagFrictionLessMaterial, AugLagStickingContactMaterial et AugLagCoulombContactMaterial. Les tolérances géométriques sur le gap normal et le gap tangentiel sont insérées au niveau du matériau !
J'ai déplacé la variable indiquant le nombre d'itération avant la première augmentation dans la classe Augmented Lagrangian Manager et ajouté la fonction getNumberOfIterationsForTimeStepEvaluation() dans la classe TimeIntegration. Il reste à mettre au point une règle heuristique de manière à adapter le pas de temps sur base du nombre d'augmentations par pas de temps et du nombre d'itérations mécaniques et/ou thermique.
A l'heure actuelle, j'ai désactivé en dur dans le code source les deux fonctionnalités suivantes :
- diminution des lagrangians augmentés selon une règle heuristique, si on a une perte de contact au cours des itérations mécaniques,
- extrapolation du lagrangian augmenté normal lors de la phase d'augmentation.
Perspectives
Méthode du lagrangien augmenté :
- Débugger la méthode
- Ajout de nouveaux critères d'arrêt
- Ajoutez des cas-tests simples pour vérifier la méthode du Lagrangian augmenté
- Ajoutez la contribution géométrique de la matrice de raideur tangente dans le cas rigid-défo (2D et 3D)
- Ajout des cas test de référence de l'article de J. C. Simo and T. A. Laursen, 1990
- Mettre à jour l'aire de contact nodale au cours des augmentations
Fichiers ajoutés/supprimés
[r]: [a]:mtMaterials/boundaries/AugLagStickingContactGpState.h [a]:mtMaterials/boundaries/AugLagStickingContactGpState.cpp [a]:mtMaterials/boundaries/AugLagStickingContactMaterial.h [a]:mtMaterials/boundaries/AugLagStickingContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagCoulombContactGpState.h [a]:mtMaterials/boundaries/AugLagCoulombContactGpState.cpp [a]:mtMaterials/boundaries/AugLagCoulombContactMaterial.h [a]:mtMaterials/boundaries/AugLagCoulombContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagFrictionLessContactGpState.h [a]:mtMaterials/boundaries/AugLagFrictionLessContactGpState.cpp [a]:mtMaterials/boundaries/AugLagFrictionLessContactMaterial.h [a]:mtMaterials/boundaries/AugLagFrictionLessContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagMechanicalContactGpState.h [a]:mtMaterials/boundaries/AugLagMechanicalContactGpState.cpp [a]:mtMaterials/boundaries/AugLagMechanicalContactMaterial.h [a]:mtMaterials/boundaries/AugLagMechanicalContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagNormalMechanicalContactGpState.h [a]:mtMaterials/boundaries/AugLagNormalMechanicalContactGpState.cpp [a]:mtMaterials/boundaries/AugLagNormalMechanicalContactMaterial.h [a]:mtMaterials/boundaries/AugLagNormalMechanicalContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagFrictionalMechanicalContactGpState.h [a]:mtMaterials/boundaries/AugLagFrictionalMechanicalContactGpState.cpp [a]:mtMaterials/boundaries/AugLagFrictionalMechanicalContactMaterial.h [a]:mtMaterials/boundaries/AugLagFrictionalMechanicalContactMaterial.cpp [a]:mtMaterials/boundaries/AugLagTangentialMechanicalContactGpState.h [a]:mtMaterials/boundaries/AugLagTangentialMechanicalContactGpState.cpp [a]:mtMaterials/boundaries/AugLagTangentialMechanicalContactMaterial.h [a]:mtMaterials/boundaries/AugLagTangentialMechanicalContactMaterial.cpp [a]:mtMaterials/boundaries/PenaltyMechanicalContactGpState.h [a]:mtMaterials/boundaries/PenaltyMechanicalContactGpState.cpp [a]:mtMaterials/boundaries/PenaltyMechanicalContactMaterial.h [a]:mtMaterials/boundaries/PenaltyMechanicalContactMaterial.cpp
Tests ajoutés/supprimés
[r]:apps/bImp/contactLaursen.py [r]:apps/bImp/contactLaursenAugLag.py [r]:apps/bImp/contactLove.py [r]:apps/bImp/contactLoveAugLag.py [r]:apps/bImp/cylElastFrotLaursen.py [r]:apps/bImp/cylElastFrotLaursenAugLag.py [r]:apps/bImp/cylPlastLaursen.py [r]:apps/bImp/cylPlastLaursenAugLag.py [r]:apps/imp/contact3dDefoDefoAugLag1.py [r]:apps/imp/contact3dDefoDefoAugLag2.py [r]:apps/imp/contactAugLag1.py [r]:apps/imp/contactAugLag2.py [r]:apps/imp/contactAugLag3.py [a]:
— Gaëtan WAUTELET 2013/11/29