Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Drucker-Prager et Ottosen

En bref

Deux lois plastiques pour les matériaux plus résistants en compression qu’en traction : sols, roches, poudres, béton. Leur surface voit la pression, que von Mises ignore.

opérateurspyrucast.model.drucker_prager(fespace, kinematics, strain_measure="linear"), pyrucast.model.ottosen(fespace, kinematics, strain_measure="linear")
tagmechanical
typedomaine avec comportement (label() : "Plasticity")
éléments2-D, en plan ou en axisymétrie : TRI3, QUA4, TRI6, QUA8, QUA9 ; 3-D : TET4, PYRA5, PENTA6, HEX8, TET10, PENTA15, HEX20, HEX27
cinématiquesplane_stress, plane_strain, axisymmetric, full_3d

Elles suivent le cadre de la plasticité de von Mises : partition de la déformation, critère \(f \le 0\), écoulement et conditions de Kuhn-Tucker. Elles en diffèrent par la surface \(f\), le potentiel \(g\) de l’écoulement (\(\dot\varepsilon^p = \dot\lambda\,\partial g/\partial\sigma\)), et la tangente.

Théorie

Les surfaces s’écrivent sur les invariants de la contrainte :

\[ I_1 = \operatorname{tr}\sigma, \qquad J_2 = \tfrac12\,s : s, \qquad J_3 = \det s, \qquad q = \sqrt{3J_2}, \qquad \cos 3\theta = \frac{3\sqrt3}{2}\,\frac{J_3}{J_2^{3/2}} , \]

\(\theta \in [0, \pi/3]\) étant l’angle de Lode, la direction de la contrainte dans le plan déviatorique. Von Mises ne voit que \(q\) ; Drucker-Prager ajoute \(I_1\), donc la pression ; Ottosen ajoute \(\theta\).

Drucker-Prager

Le cône

\[ f(\sigma) = \alpha\,I_1 + \beta\,q - k \]

a pour pente \(\alpha\) (friction), pour cohésion \(k\) et pour poids déviatorique \(\beta\) (beta, 1 par défaut). L’écoulement n’est pas associé : le potentiel a sa propre pente, la dilatance \(\psi\) (psi), et son propre poids déviatorique \(\delta\) (delta, 1 par défaut), \(g(\sigma) = \psi\,I_1 + \delta\,q\). \(\psi = \alpha\) redonne un écoulement associé, \(\psi = 0\) un écoulement sans variation de volume.

Sur le flanc du cône, \(q\) et \(I_1\) sont affines en le multiplicateur, et le retour se résout sans itérer. Un retour qui donnerait \(q_B < 0\) a dépassé l’axe hydrostatique : la contrainte se pose alors au sommet du cône, \(s_B = 0\), \(\sigma_{m,B} = k/(3\alpha)\), où la tangente est nulle : un corps entièrement à son sommet ne porte plus rien.

Écrouissage. La cohésion croît avec la déformation plastique cumulée, \(dk = H\,dp\) (H, 0 par défaut ; négatif, il adoucit), jusqu’à une surface ultime \(\alpha_u I_1 + \beta_u q = k_u\) (friction_ult, beta_ult, k_ult, par défaut égales aux valeurs initiales). La surface courante interpole les deux :

\[ \lambda = \operatorname{clamp}\!\Big(\frac{H\,p}{k_u - k}, 0, 1\Big), \qquad (\alpha, \beta, k)(p) = (1-\lambda)\,(\alpha, \beta, k) + \lambda\,(\alpha_u, \beta_u, k_u), \]

si bien que \(k(p) = k + H\,p\) tant que la surface ultime n’est pas atteinte. La consistance n’est alors plus linéaire : elle est résolue par un Newton encadré, dont la solution sans écrouissage est le premier itéré. Sans écrouissage, le retour reste fermé.

Ottosen

Une surface à quatre paramètres, faite pour le béton :

\[ f(\sigma) = a\,\frac{J_2}{\sigma_c^2} + \lambda(\theta)\,\frac{\sqrt{J_2}}{\sigma_c} + b\,\frac{I_1}{\sigma_c} - 1, \]

\[ \lambda(\theta) = \begin{cases} k_1 \cos\!\big[\tfrac13 \arccos(k_2 \cos 3\theta)\big] & \text{si } \cos 3\theta \ge 0,\\ k_1 \cos\!\big[\tfrac\pi3 - \tfrac13 \arccos(-k_2 \cos 3\theta)\big] & \text{si } \cos 3\theta < 0 . \end{cases} \]

\(\sigma_c\) est la résistance en compression simple. Le terme en \(J_2\) courbe les méridiens, le terme en \(I_1\) les incline, et \(\lambda(\theta)\) fait de la section déviatorique un triangle arrondi qui s’ouvre vers la compression.

Aucun retour fermé n’existe. Le retour passe par l’algorithme du plan sécant, qui n’a besoin que de \(f\) : partant du prédicteur, on linéarise le critère à l’itéré courant, on en tire un multiplicateur, on corrige, jusqu’à \(|f|\) sous une tolérance. La normale \(\partial f/\partial\sigma\) est obtenue par différences centrées sur \(f\), avec un pas de \(10^{-6}\,\sigma_c\).

La tangente par perturbation

Les deux lois obtiennent leur tangente par différences centrées sur le retour lui-même, une colonne par composante de déformation :

\[ D_{ij} \simeq \frac{\sigma_i(\varepsilon + h\,e_j) - \sigma_i(\varepsilon - h\,e_j)}{2h}, \qquad h = 10^{-6}\,\lVert\varepsilon\rVert_\infty , \]

soit douze retours par point de Gauss. Les colonnes de cisaillement sont divisées par deux, pour passer de \(\partial\sigma/\partial\varepsilon_{ij}\) à \(\partial\sigma/\partial\gamma_{ij}\).

La tangente est symétrisée : seul son triangle supérieur est gardé. Celle d’un écoulement non associé, comme Drucker-Prager, ne l’est pas ; la symétriser coûte à Newton sa convergence quadratique sur cette loi. Celle d’Ottosen est doublement numérique (la normale, puis la tangente) : moins précise, elle suffit à faire converger Newton.

Variables

Selon la cinématique :

plane_stress, plane_strainaxisymmetricfull_3d
primalesu_x, u_yu_x, u_yu_x, u_y, u_z
dualesf_x, f_yf_x, f_yf_x, f_y, f_z
entrée du comportementeps_xx, eps_yy, eps_xyeps_xx, eps_yy, eps_zz, eps_xyeps_xx, eps_yy, eps_zz, eps_yz, eps_xz, eps_xy
contraintesigma_xx, sigma_yy, sigma_xysigma_xx, sigma_yy, sigma_zz, sigma_xysigma_xx, sigma_yy, sigma_zz, sigma_yz, sigma_xz, sigma_xy

En axisymétrie, eps_zz et sigma_zz sont les composantes orthoradiales.

La sortie du comportement est la contrainte, suivie de l’état :

matériau requisDrucker-Prager : E, nu, friction, k, psi ; Ottosen : E, nu, a, b, k_1, k_2, sigma_c
matériau facultatifrho, alpha ; Drucker-Prager : beta, delta, H, friction_ult, beta_ult, k_ult
état, écrit après la contraintela déformation plastique eps_p_xx, eps_p_yy, eps_p_zz, eps_p_yz, eps_p_xz, eps_p_xy ; la déformation plastique cumulée p ; la déformation totale eps_xx, eps_yy, eps_zz, eps_yz, eps_xz, eps_xy ; et, en plane_stress et plane_strain, sigma_zz
état relu (prev)toute la sortie du pas précédent : la contrainte et l’état

Ce qu’elles produisent

raideurélastique
masseexige rho
géométriquesous la contrainte sigma_*
tangentepar perturbation, symétrisée
forces internes\(\int B^{\mathsf T}\sigma\)

Exemple

La tangente de Drucker-Prager, assemblée sur une maille plastifiée :

modele = pyrucast.model.drucker_prager(fes, "plane_strain")
materiaux = pyrucast.element_field.material_field(
    modele, [("E", 20e3), ("nu", 0.2), ("friction", 0.3), ("k", 10.0), ("psi", 0.1)]
)
eps = pyrucast.element_field.strain(modele, u, materiaux)
repos = pyrucast.element_field.initial_state(modele, materiaux)
etat = pyrucast.element_field.integrate_behavior(modele, eps, materiaux, repos)
Kt = pyrucast.matrix.tangent(
    modele, materiaux, eps, repos
)  # par perturbation, symétrisée
print(Kt.symmetric)  # True

Côté Rust

Les deux lois vivent dans src/models/plasticity/drucker_prager.rs et src/models/plasticity/ottosen.rs, et déclarent leur tangente par TangentSource::Numerical. tests/plastic_laws.rs vérifie que le retour atterrit sur la surface, l’effondrement au sommet du cône, l’écart entre traction et compression d’Ottosen, et confronte chaque tangente à une différence finie des forces internes.