bonjour Victorien,
je pense avoir une explication, mais c'est un peu complexe.
avec le type de contact :
*CONTACT_TYPE 4 *
cf. doc, le fct est le suivant: par défaut à la première itération, le noeud esclave est projeté sur la facette maître ce qui entraîne une force de réaction fonction de la distance parcourue entre la position initiale et la position projetée. On en déduit un facteur de pénalisation (force / distance). Ensuite dès la seconde itération, le noeud esclave est relâché, et une force de contact est calculée en utilisant la pénalisation obtenue à la première itération.
1) la force est modulée en fct du gap (= pénétration avec gap < 0, ou sinon distance entre le projeté et la position du noeud).
paramètre: PENETRATION_BORNE_REGULARISATION
Pour être sûr d'avoir toujours une force nulle pour un gap positif je mets:
PENETRATION_BORNE_REGULARISATION_PLUS 0.
2) si j'utilise une loi linéaire au lieu de la loi complexe "graphite" j'obtiens pour l'évolution des résidus:
=============================================================================
....... re-analyse du contact ........
INCREMENT DE CHARGE : 1 intensite 0.00010000000000000 t= 0.00010000000000000 dt= 0.00010000000000000
============================================================================
...
contact: reaction ==> F_N => [0.00000000000000000 : 2536057.01206084620207548], F_T max = 0.00000000000000000, [-0.00000786655474627 <= gap_N <= 0.00000897716752846], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 1
(assemblage 1) reaction maxi : 2842600.92209215, du ddl X1, du noeud/maillage 8/2
- Norme Residu/Reaction --> 0.00036913
...
contact: reaction ==> F_N => [-457.16736514339186215 : 568.82653018851226534], F_T max = 0.00000000000000000, [-0.00000002151810108 <= gap_N <= 0.00000002242956398], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 2
(assemblage 1) reaction maxi : 996102.71405092, du ddl X2, du noeud/maillage 5/1
- Norme Residu/Reaction --> 2.54655047
...
contact: reaction ==> F_N => [0.00000000000000000 : 100000000.00000000000000000], F_T max = 0.00000000000000000, [0.00000000000000000 <= gap_N <= 0.10000002242956540], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 3
(assemblage 1) reaction maxi : 57724.41714836, du ddl X2, du noeud/maillage 7/1
- Norme Residu/Reaction --> 3.07244473
...
contact: reaction ==> F_N => [0.00000000000000000 : 100000000.00000000000000000], F_T max = 0.00000000000000000, [0.00000000000000000 <= gap_N <= 0.05973449062940617], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 4
(assemblage 1) reaction maxi : 1459.78248795, du ddl X2, du noeud/maillage 7/1
- Norme Residu/Reaction --> 1.74706120
contact: reaction ==> F_N => [0.00000000000000000 : 100000000.00000000000000000], F_T max = 0.00000000000000000, [0.00000000000000000 <= gap_N <= 0.05999999334678030], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 5
(assemblage 1) reaction maxi : 0.01693550, du ddl X2, du noeud/maillage 7/1
- Norme Residu/Reaction --> 0.76866875
contact: reaction ==> F_N => [0.00000000000000000 : 100000000.00000000000000000], F_T max = 0.00000000000000000, [0.00000000000000000 <= gap_N <= 0.06000000000000405], [0.00000000000000000 <= gap_T <= 0.00000000000000000]
ITERATION : 6
(assemblage 1) reaction maxi : 0.00000002, du ddl X2, du noeud/maillage 2/1
- Norme Residu/Reaction --> 8.69825937
etc..
max puissance exterieure = 0.00000000
max puissance interieurs = 0.00000020
max des reactions = 0.00000002
max du residu total = 0.00000020
a) On voit que l'on a du contact à l'itération 2 puis on n'a plus de contact et on converge vers la solution, mais cela prend qq itérations, car on part d'une situation très fortement en déséquilibre.
b) à l'itération 6 on a convergé, mais pourtant Norme Residu/Reaction reste grand, cela provient du fait qu’on divise des nombres très petits. En fait il faut utiliser une autre norme: par exemple:
NORME min(Res,Res/MaX(Reaction_et_PVExterne))_verification_ddouble
avec cette norme c'est OK
3) maintenant si j'utilise la loi complexe "graphite" le calcul suit la même logique par contre il n'arrive pas à converger. Je pense que c'est dû à la méthode : à la première itération projection du noeud, et ensuite la loi n'arrive pas à ramener le noeud dans une position d'équilibre décollée. Mais c'est un mixte loi x méthode.
4) J'ai testé une autre méthode que j'ai implanté récemment, ou le facteur de pénalisation est calculé à partir de la raideur globale.
para_contact ------------
CONTACT_TYPE 2
PROP_VALPROPRE_RAIDEUR 0.01
TYPE_PENALISATION_PENETRATION 12
PENETRATION_CONTACT_MAXI 0.0001
PENETRATION_BORNE_REGULARISATION_PLUS 0.
là tout se passe correctement avec:
- au début pas de contact latéral
- puis contact à l'extérieur
- puis contact intérieur, extérieur
Donc ça semble être une solution pour ton problème.
Ceci étant, le type 4 est performant dans d'autres cas ... tout dépend de la configuration géométrique et du type des lois !
Je te joins le .info que j'ai utilisé.