L'équation de Ramberg-Osgood
L'équation de Ramberg-Osgood décrit la relation non linéaire entre la contrainte et la déformation d'un matériau autour de sa limite élastique. Lors d'une analyse par éléments finis non linéaire, le solveur a besoin d'une courbe contrainte-déformation complète en entrée. Si seuls les paramètres de Ramberg-Osgood ($K$ et $n$) sont connus — ce qui est courant dans les bases de données matériaux et les codes de conception — cette équation permet de reconstruire la courbe complète.
La relation de Ramberg-Osgood
La loi de Hooke stipule qu'en dessous de la limite élastique, la contrainte est linéairement proportionnelle à la déformation :
$${\sigma = {E} \; {\varepsilon}_{e}}$$
Ramberg et Osgood ont défini une loi de puissance pour décrire la déformation plastique :
$${{\varepsilon}_{p} = \left(\frac{\sigma}{K} \right)^n}$$
Les paramètres $K$ et $n$, dépendants du matériau, décrivent le comportement d'écrouissage du matériau.
La déformation totale ${\varepsilon}_{t}$ est la somme de la déformation élastique ${\varepsilon}_{e}$ et de la déformation plastique ${\varepsilon}_{p}$, ce qui donne :
$${{\varepsilon}_{t} = {\varepsilon}_{e} + {\varepsilon}_{p} = \frac{\sigma}{E} + \left(\frac{\sigma}{K} \right)^n}$$
Avec :
- ${\varepsilon}$ la déformation
- ${\sigma}$ la contrainte
- $K$ module non linéaire du matériau
- $n$ exposant d'écrouissage du matériau
Précision de l'équation
L'équation n'est pas une représentation parfaite du comportement contrainte-déformation réel du matériau, car l'équation de Ramberg-Osgood implique qu'une déformation plastique est présente à tout niveau de contrainte, y compris bien en dessous de la limite élastique. Cependant, la part plastique de la déformation totale est très faible aux faibles niveaux de contrainte.
Certains matériaux présentent un changement brusque de rigidité à la plastification. Dans ce cas, la relation de Ramberg-Osgood ne s'ajuste pas bien autour de la limite élastique (voir Figure 1 ci-dessous).
Exemple
La Figure 1 présente les données contrainte-déformation d'un acier au carbone avec une limite élastique σy = 500 MPa et un module d'Young E = 210 000 MPa. La courbe de Ramberg-Osgood (K = 1480, n = 6,71) est tracée en comparaison des données contrainte-déformation mesurées. L'erreur aux contraintes entre zéro et environ 350 MPa est très faible, mais augmente aux contraintes entre 400 et 550 MPa.
La courbe de Ramberg-Osgood fournit les données matériau nécessaires pour les calculs FEA élasto-plastiques, et est tout aussi importante pour l'analyse de fatigue et durée de vie, où la courbe contrainte-déformation cyclique régit l'étendue de déformation locale aux entailles et concentrations de contraintes.
Comment ajuster des données contrainte-déformation à l'équation de Ramberg-Osgood ?
L'ajustement des données contrainte-déformation à une courbe de Ramberg-Osgood peut se faire avec Excel, mais aussi avec, par exemple, Python. Le code Python 3.x est fourni ci-dessous :
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# MATERIAL DATA
strain = np.array([0, 500/210000, 0.003749347, 0.005234888, 0.007631515,
0.011446096, 0.017384888, 0.026405375, 0.039775799])
stress = np.array([0, 500, 550, 600, 660, 720, 780, 840, 900])
E = stress[1] / strain[1] # CALCULATE YOUNG'S MODULUS
# FITTING RAMBERG-OSGOOD EQUATION
def test_func(x, K, n):
return x / E + np.power(x / K, n)
p0 = [500, 5] # Initial estimate for [K, n]
c, cov = curve_fit(test_func, stress, strain, p0)
# PRINT CURVE FIT PARAMETERS
print()
print('-' * 28)
print(' Ramberg-Osgood parameters')
print('-' * 28)
print(f' K = {c[0]} \n n = {c[1]}')
print('-' * 28)
# CREATE DATA ARRAY FOR THE FITTED CURVE
e = test_func(np.linspace(0, stress[-1]), c[0], c[1]) # STRAIN
s = np.linspace(0, stress[-1]) # STRESS
# PLOT DATA AND FITTED CURVE
plt.figure(1, figsize=(12, 8))
# PLOT FITTED CURVE:
plt.plot(e, s, lw=3, c='C1')
# PLOT MEASURED DATA:
plt.plot(strain, stress, '--o', lw=2.5, ms=9, mew=2, mfc='white', c='C0')
plt.grid()
plt.xlabel(r'Strain $\epsilon$ [mm/mm]')
plt.ylabel(r'Stress $\sigma$ [MPa]')
plt.title(f'Ramberg-Osgood curve fit (K = {np.round(c[0], 2)} '
f'| n = {np.round(c[1], 3)})\n')
plt.legend(['Ramberg-Osgood fit', 'Stress-Strain measured data'])
plt.show()
Questions fréquentes
Questions courantes sur l'équation de Ramberg-Osgood en pratique d'ingénierie.