La gestion du contact avec Abaqus



Ah, le contact ... Vous pouvez être à peu près certain, dès qu'une étude demande de prendre en compte les phénomènes de contact, et les non-linéarités qui vont avec, d'entendre prononcer dans les plus brefs délais la phrase magique : "Tu veux prendre en compte le contact ? Ah, il faudrait passer le calcul sous Abaqus, alors". Pourquoi ce code a-t-il une telle aura dans ce domaine bien particulier ? Mystère ! Enfin non, je suis sûrement injuste, ca ne relève pas du mystère, des dizaines de benchs ont prouvé la validité des résultats fournis par le bébé de messieurs Hibbitt, Karlsson et Sorensen (HKS, je parle d'un temps que les moins de trente ans ...), aujourd'hui propriété de Dassault Systèmes sous la marque Simulia.
En tout cas, rares sont les mécaniciens capables de répondre à la question "pourquoi Abaqus plutôt qu'un autre code ?", autrement que par "parce que !" ...  :-)
 
 

contact sphere plan






Maintenant que vous voilà persuadés d'avoir l'outil absolu entre les mains, l'idée serait de parvenir à s'en servir, et autant que faire se peut à s'en servir correctement. Comme souvent, il faut commencer par analyser le problème, et par savoir dans quelle "case" le ranger.
Veut-on représenter un contact entre deux pièces modélisées en volumique, ou entre une pièce en volumique et une en surfacique, ou bien entre deux pièces en surfacique, ou encore entre une pièce et elle-même ? Peut-on assumer que les déplacements et glissements relatifs entre les pièces sont infinitésimaux, ou bien sont-ils d'un ordre de grandeur comparable aux pièces elles-même ? Y a-t-il du frottement, et faut-il en tenir compte ? Peut-on supposer que l'une des pièces est rigide, ou bien les déformations des deux pièces doivent-elles être prises en compte ?
Procédons avec désordre et sans méthode, en répondant aux questions un peu comme elles viennent à l'esprit du calculus vulgum à qui on vient de confier une étude.

1) Corps déformables ou non ? Comment définir mes zones de contact ?

L'essentiel à ce propos est de savoir, et le message risque d'etre assez récurrent, que quelle que soit la réponse Abaqus permet de modéliser la plupart des situations.

Si dans le joli dessin 3D ci-dessus la sphère se révèle être une balle de tennis, et le plan un bout de la dalle du central de Roland-Garros (appréciez la fidélité du rendu des couleurs), vous serez sans doute d'accord avec moi pour dire que le court est bien plus rigide que la balle, et peut donc être assimilé à une surface indéformable.
On peut définir des surfaces rigides soit par l'intermédiaire d'un maillage déjà existant, auquel on attribuera un statut de "corps rigide", soit par l'intermédiaire d'une formule analytique.
Dans le premier cas, la syntaxe à utiliser est la suivante :
*RIGID BODY,REF NODE=n,ELSET=nom_elset
Dans le second cas :
*RIGID BODY,REF NODE=n,ANALYTICAL SURFACE=nom_surface
*SURFACE,TYPE=SEGMENTS/CYLINDER/REVOLUTION,NAME=nom_surface
...
On notera dans les deux cas la présence du paramètre (obligatoire) REF NODE,  qui associe à chaque corps rigide un noeud de référence, auquel seront par exemple imposées les conditions aux limites.
Concernant la manière de définir les surfaces analytiques (type segments en 2d, cylinder ou revolution en 3d), je vous laisse éplucher le Keywords Manual :-)

Dans le cas de figure le plus général tous les corps en présence sont considérés comme déformables. La carte RIGID BODY n'est donc pas nécessaire, et on peut se contenter de la syntaxe suivante :
*SURFACE,TYPE=ELEMENT,NAME=nom_surface
nom_elset,identifiant_face
La ligne de données doit contenir le nom du set d'éléments à inclure dans la surface, ainsi qu'un moyen d'identifier quelle "face" devra etre prise en compte. Si la pièce est modélisée par des éléments 2d, le code doit savoir si le contact a lieu du coté de la normale sortante  (SPOS) ou entrante (SNEG). Si le modèle est volumique, il faut soit spécifier manuellement un numéro de face, soit, ce qui reste et de loin le plus simple, laisser le code identifier automatiquement les faces externes du solide en question. L'identifiant est alors superflu, et la ligne de commande doit s'arreter après la virgule suivant le nom de l'elset. Un logiciel de prétraitement digne de ce nom, tel qu'Ansa, vous permettra évidemment de rendre assez transparente cette phase, qui serait excessivement pénible à la main sur un modèle complexe ...
 

2) Définition et nature des interactions

Maintenant que ces surfaces sont définies "par pièce", il est nécessaire de préciser quelles sont les interactions susceptibles d'avoir lieu. Pour revenir à notre exemple tennistique, il nous faut préciser que l'on fait interagir la balle avec le sol, et non avec la tempe du juge de filet ou avec la raquette de Tatiana Golovin. C'est le role des cartes *CONTACT PAIR et *SURFACE INTERACTION.
 Exemple :
*CONTACT PAIR, INTERACTION=type_interaction
surface_1, surface_2
*SURFACE INTERACTION, NAME=type_interaction
*FRICTION
0.4
Cette séquence d'instructions permet de spécifier un coefficient de frottement de 0.4 entre les surfaces 1 et 2. La carte FRICTION doit suivre la carte SURFACE INTERACTION qu'elle complète. On peut évidemment définir plusieurs types d'interaction, et plusieurs coefficients de frottement sur un même modèle (par exemple un coefficient de frottement sous tête dans le cas d'un assemblage vissé et un autre pour le frottement entre les deux pièces maintenues par la vis).
 

3) Maitre ? Esclave ?

Les développeurs d'Abaqus n'ayant pas spécifiquement versé dans la mouvance SM, il ne faut pas chercher d'histoire de donjeon derrière cette terminologie. Lorsque deux pièces sont en contact, l'une doit être déclarée maitre, et l'autre esclave. C'est l'ordre d'apparition des surfaces dans la carte CONTACT PAIR qui définit la nature de cette relation : la première est l'esclave, la deuxième la maitre.
La surface maitre est utilisée, via sa normale, pour la définition de la direction de contact. Les noeuds de la surface esclave n'ont pas le droit de pénetrer la surface maitre, alors que l'inverse est (en principe) possible. Le choix de cette hiérarchie dépend des critères suivants :
- si l'un des corps est infiniment rigide, c'est lui qui sera choisi comme maitre
- si les deux sont déformables, la pièce la plus rigide et/ou maillée le plus grossièrement sera choisie comme maitre (nb : il s'agit ici de la rigidité -locale- de la structure et non simplement du matériau qui la constitue)
 
 

4) Petit ou grand glissement ?

La formulation la plus générale du contact entre deux pièces fait appel à une hypothèse dite de "grand glissement" (finite sliding). Elle autorise tout déplacement relatif (translation comme rotation) entre surfaces en contact. Elle est cependant coûteuse en temps de calcul. Sous certaines conditions bien spécifiques, on peut alléger le problème en faisant une hypothèse de "petit glissement" (small sliding). Les rotations relatives peuvent toujours être arbitrairement grandes, mais les déplacements sont contraints : chaque noeud d'une surface esclave ne doit au cours de l'analyse interagir qu'avec un même élément de la surface maitre.


*CONTACT PAIR, SMALL SLIDING=NO
...
*STEP,NLGEOM


*CONTACT PAIR, SMALL SLIDING=YES
...
*STEP,NLGEOM


*CONTACT PAIR, SMALL SLIDING=YES
...
*STEP

En finite sliding, Abaqus lisse automatiquement la surface maitre, afin d'obtenir une normale unique en chaque point. Si l'on veut modéliser des "arêtes", il faut diviser la surface en deux.

Le paramètre UNSYMM=YES de la carte STEP peut être utile pour régler les problèmes de convergence en cas de variation importante de la direction de la normale à la surface maître entre deux éléments consécutifs, ce qui est le cas si le maillage est trop grossier.

Il est fréquent que dans les simulations faisant intervenir du contact certaines pièces ne soient pas contraintes avant que le contact ne soit établi. Il peut alors être utile d'introduire un amortissement visqueux artificiel, via les cartes
*CONTACT CONTROLS,APPROACH
pour l'affecter à une contact pair en particulier, ou
*CONTACT CONTROLS,STABILIZE
pour un amortissement "global".

5) Quelques astuces

- utiliser STEP,UNSYMM=YES si frottement "fort" (f>0.2)
-