Contact unilateral avec frottement¶
Perimetre experimental¶
Cette extension conserve le contact normal noeud esclave - triangle maitre de QF_solver et ajoute un frottement de Coulomb regularise. Le domaine est intentionnellement borne : statique lineaire, petites transformations, normale et projection initiales figees, methode directe et DDL de translation stabilises par le modele. Ce n'est ni un algorithme surface-surface ni un contact a grand glissement.
Le JSON declare un coefficient friction_coefficient = mu >= 0 et, des que
mu > 0, une raideur de regularisation tangential_stiffness = kt > 0.
L'absence de ces deux champs garde exactement le chemin sans frottement.
{
"contacts": [{
"name": "rough_plane",
"slave_node": 3,
"master_nodes": [0, 1, 2],
"friction_coefficient": 0.5,
"tangential_stiffness": 10000.0
}]
}
Base locale et cinematique tangentielle¶
La normale unitaire $n$ est celle du triangle maitre ordonne. Le premier vecteur tangent $t_1$ est l'arete maitre $x_2-x_1$, projetee dans le plan puis normalisee; le second est $t_2=n\times t_1$. Cette construction donne une base orthonormee directe $(t_1,t_2,n)$, tracable dans chaque resultat de contact.
Avec les memes poids barycentriques $b_i$ que pour le gap normal, le glissement relatif est :
$$ s = \begin{bmatrix} t_1^T\t_2^T \end{bmatrix} \left(u_s-\sum_i b_i u_i\right). $$
Les forces publiees dans l'audit sont les efforts internes qui s'opposent a ce glissement. Leur travail $f_t^T s$ est donc non negatif dans cette convention.
Loi de Coulomb regularisee¶
Le contact normal satisfait toujours :
$$ g\geq0,\qquad p=-\lambda\geq0,\qquad gp=0. $$
L'effort tangent d'essai est $q_{\mathrm{trial}}=k_t s$, et la borne de Coulomb vaut $q_{\max}=\mu p$. Deux etats sont exposes :
$$ \begin{cases} |q_{\mathrm{trial}}|\leq q_{\max} &\Rightarrow\quad \texttt{stick},\quad q=q_{\mathrm{trial}},\ |q_{\mathrm{trial}}|>q_{\max} &\Rightarrow\quad \texttt{slip},\quad q=q_{\max} \dfrac{q_{\mathrm{trial}}}{|q_{\mathrm{trial}}|}. \end{cases} $$
En adhesion, la tangente ajoutee est
$K_t=k_t(B_{t1}^T B_{t1}+B_{t2}^T B_{t2})$. En glissement, QF_solver tente
d'abord une iteration externe directe : la force tangentielle bornee de
l'iteration precedente est appliquee, puis la pression, l'etat et la force
sont recalcules. Si ce point fixe alterne sur une structure deformable, un
repli resout les deux composantes de l'effort tangent actif avec la contrainte
normale exacte. Si la racine hybride est mal conditionnee, une minimisation
des moindres carres a region de confiance applique une globalisation au meme
residu actif. Avant ce dernier repli, active_slip_consistent_newton calcule
la reponse lineaire exacte du systeme selle a chaque effort tangent unitaire,
puis la combine avec la derivee analytique de la projection de Coulomb. Cette
tangente est donc consistante sur l'ensemble actif et la branche de glissement
figes; une recherche lineaire d'Armijo refuse un pas qui augmente le residu.
La reference de glissement du pas precedent reste gelee pendant cet equilibre
et n'est mise a jour qu'apres convergence. Le diagnostic publie la strategie
direct, active_slip_root, active_slip_consistent_newton ou
active_slip_least_squares. La derivee ne traverse pas encore une ouverture,
une fermeture ou un changement de normale : ce n'est pas une formulation
surface-surface a grands glissements.
Resolution et diagnostics¶
La fermeture normale est imposee par le meme systeme selle a multiplicateurs
de Lagrange que le contact sans frottement. L'iteration termine lorsque
l'ensemble actif, les etats open/stick/slip et la force tangentielle ne
changent plus dans contact_friction_tolerance.
Chaque ligne d'audit contient : gap, pression, complementarite, base locale, glissement local, force tangentielle, norme, borne $\mu p$, et etat. Le bilan de moments publie egalement sa valeur brute et la correction de transport du point de contact; celle-ci retire le couple artificiel cree lorsqu'une force tangentielle est sommee au noeud esclave encore separe dans la configuration de reference.
Chemin de charge avec memoire¶
Par defaut, contact_load_steps repartit proportionnellement toutes les
charges nodales sur le nombre d'increments demande. Pour un cycle, le champ
contact_load_history contient une ligne de facteurs par charge nodale, dans
l'ordre du tableau JSON loads. Les charges reparties ne sont pas admises
avec ce chemin V1.
"contact_load_history": [
[0.0, 1.0],
[0.2, 1.0],
[1.0, 1.0],
[-1.0, 1.0],
[0.0, 1.0]
]
Pour chaque paire, QF_solver conserve une reference de glissement $s_p$.
L'essai elastique devient $q_{trial}=k_t(s-s_p)$. Lors du glissement,
$s_p$ est corrige pour ramener l'effort sur le cone de Coulomb. L'audit
publie les references, les forces locales et le travail dissipatif par pas.
La non-regression couvre une rampe a pression constante avec 1 a 16 pas;
elle ne doit pas etre interpretee comme une invariance pour un chemin dont la
pression normale varie.
Verification interne et limites¶
tests/unit/test_frictional_contact.py verifie :
- separation sans force tangentielle ;
- adhesion en dessous de la borne de Coulomb ;
- glissement a $|q|=\mu p$, dissipation positive et equilibre global ;
- cycle adhesion-glissement avec memoire de glissement et changement de sens ;
- rejet d'un coefficient positif sans regularisation tangentielle.
Le cas examples/frictional_contact_plane.json est executable avec :
python .\qf_solver.py solve --input .\examples\frictional_contact_plane.json --output .\results\friction.json
VNV-CONTACT-FRICTION-TET4-STRUCTURAL-002 ajoute quatre maillages de barre
TET4 deformable. Il verifie fermeture normale, cone de Coulomb et les branches
stick/slip; une transition vers l'adherence sous raffinement est possible
si la reaction normale augmente. La campagne externe
VNV-CONTACT-FRICTION-CODEASTER-CONTINUE-003 couvre le glissement sature
sur une surface triangulaire a trois niveaux de charge avec des ecarts UX
de 0,6070 %, 0,4559 % et 0,3651 %; l'adherence et
les faces structurelles deformables restent a comparer. Restent obligatoires
avant une hausse de maturite : une tangente consistante pour les cas fortement
non lineaires et une correlation externe structurelle complete. Sont hors scope : grand
glissement, changement de normale, usure,
cohesion, thermique, vitesse, dynamique, MPC/RBE et contact multiple
complexe.
Cette page est reliee a REQ-CONTACT-001, FORM-CONTACT-002 et aux tests
unitaires du contact.
Contrat documentaire et demonstration¶
| Rubrique exigee | Contenu et preuve |
|---|---|
| Geometrie et DDL | Noeud esclave, facette maitre, normale et base tangentielle. |
| Formulation mathematique | Contact unilateral et Coulomb regularise, adhesion/glissement. |
| Integration et algorithme | Active-set normal et retour tangentiel incremental. |
| Exemple executable | python .\qf_solver.py solve --input .\examples\frictional_contact_plane.json --output .\results\friction.json |
| Maillage | Facette plane puis assemblages TET4 structurels. |
| Chargement et conditions limites | Compression normale, effort tangentiel et supports du JSON. |
| Tableau de resultats | Rapport V&V. |
| Figure de deformee | Comparaison des cas de frottement ci-dessous. |
| Invariants | Kuhn-Tucker, $\lVert t_t\rVert\le\mu p_n$, equilibre et statut stick/slip. |
| Convergence | Sensibilite maillage/pas et correlation Code_Aster. |
| Limites | Regularisation, petites transformations et pas de grand glissement. |
| References | FORM-CONTACT-002, REQ-CONTACT-001 et preuves externes. |

Owner review requise avant tout changement de maturite; demonstration et qualification restent distinctes.