I mange tilfeller er materialets evne til å lagre og/eller absorbere energi et mer kritisk aspekt enn materialets 'stryke', forstått som å 'tåle' en gitt kraft. Eller som den store filosofen Petter Solberg så nydelig har formulerte det: It's not the fart that kills you, it's the smell. Derfor en helt egen side om materialer og mekanisk energi.
Tøyningsenergi med enhet J vil bli brukt om komponenter (kloss, bjelk, ... eller hva som helst) og uttrykker den mekaniske energien som er lagret i komponenten når denne er utsatt for last og deformasjon. Et klassisk eksempel er en spiralfjær:
$$F=kx \Rightarrow U = \int^x_0 Fdx = \int^x_0 kx dx = \frac{1}{2}kx^2$$En bladfjær er i prinisppet en fritt opplagret bjelke med senterlast der sammenhengen mellom kraft $F$ og forkyving (eller nedbøying) $\delta$ er
$$\delta = \frac{FL^3}{4 E b h^3} \Rightarrow F = \frac{4 E b h^3 \delta}{L^3}$$og tøyningsenergien blir
$$ U = \int^{\delta}_0 F d\delta = \frac{4 E b h^3}{L^3} \int^{\delta}_0 \delta d\delta = \frac{2 E b h^3}{L^3}\delta^2$$Eksempel: En fritt opplagret stålbjelke med lengde L = 2 m, bredde = 100 mm og høyde = 20 mm. Senterlasten er 10 kN (1 tonn):
L, b, h = 2, 0.1, 0.02 # [m]
F = 10000 # [N]
E = 200E9 # [Pa]
d = (F*L**3)/(4*E*b*h**3)
U = ((2*E*b*h**3)/(L**3))*d**2
print('Senterlast F= {} kN, nedbøying d= {:.1f} mm, tøyningsenergi U= {:.1f} J'.format(F/1000, d*1000, U))
Et gummistrikk viser IKKE lineær sammenheng mellom kraft og forlengelse, men prinsippet er det samme som for de lineærelastiske komponentene over:
$$U = \int^x_0 Fdx$$For gummi som har oppførsel som en idell elastomer, er sammenhengen mellom kraft og deformert lengde $L$ gitt av
$$F = A_0 G\big[\frac{L}{L_0} - \frac{L_0^2}{L^2}\big]$$En typisk gummistrikk har $G$ = 0.5 MPa og tverrsnittsareal $A_0$ = 4 mm2.
Plotter $F$ som funksjon av forlengelse $dL$ der $L_0$ = 100 mm og $L = L_0 + dL$:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
L0=0.1 # [m]
dL=np.linspace(0,0.2) # [m]
L = L0+dL # [m]
A0 = 4E-6 # [m2]
G = 0.5E6 # [Pa]
F = A0*G*(L/L0 - (L0/L)**2) # [N]
plt.subplots(figsize=(5,3))
plt.plot(dL,F)
plt.grid()
plt.xlim(0,)
plt.ylim(0,)
plt.show()
Dette er jo tydelig en ikke-lineær funksjon, men vi kan alltids integrere numerisk for å finne arealet under kurven (som altså er tøyningsenergien $U$):
U=np.trapz(y=F,x=dL)
print('Tøyningsenergi er {:.2f} J'.format(U))
Her kunne vi gjort et helt greit estimat ved å ta arealet av en trekant:
areal_trekant = 0.2*6/2
print('Estimat på øyemål og utregning på en serviett: {:.1f} J'.format(areal_trekant))
Tøyningsenergitetthet er tøyningsenergi per. volum med enhet J/m3 og vi skal bruke symbolet $U_s$.
For en generell spenningstilstand er tøyningsenergitettheten for et lineært elastisk materiale gitt ved:
\begin{equation} U_s = \frac{1}{2}\sigma_x \varepsilon_x + \frac{1}{2}\sigma_y \varepsilon_y + \frac{1}{2}\sigma_z \varepsilon_z + \frac{1}{2}\tau_{xy} \gamma_{xy} + \frac{1}{2}\tau_{xz} \gamma_{xz} + \frac{1}{2}\tau_{yz} \gamma_{yz} \tag{1} \end{equation}Eksempel: En plate av stål utsettes for to lasttilfeller:
1) $\sigma_x$ = 400 MPa, alle andre spenninger er null 2) $\sigma_x$ = 400 MPa og $\sigma_y$ = 400 MPa mens alle andre spenninger er null
Vis at dersom du tror at tilfelle 2) gir dobbelt så mye tøyningsenergitetthet som tilfelle 1), så tar du grundig feil og er offer for lazy thinking..
E,v = 200E9, 0.3
# Tilfelle 1):
sig_x = 400E6
eps_x = (1/E)*sig_x
Us_1 = 0.5*sig_x*eps_x
# Tilfelle 2):
sig_y = sig_x
eps_x = (1/E)*sig_x - (v/E)*sig_y # See Hookes lov..
eps_y =-(v/E)*sig_x + (1/E)*sig_y # See Hookes lov..
Us_2 = 0.5*sig_x*eps_x + 0.5*sig_y*eps_y
print('1. lasttilfelle: Us = {:.2E} J/m3, 2. lasttilfelle: Us = {:.2E} J/m3'.format(Us_1, Us_2))
Sjekk også for tilfellet $\sigma_x$ = 400 MPa og $\sigma_y$ = - 400 MPa
# Tilfelle 3):
sig_y = - sig_x
eps_x = (1/E)*sig_x - (v/E)*sig_y # See Hookes lov..
eps_y =-(v/E)*sig_x + (1/E)*sig_y # See Hookes lov..
Us_3 = 0.5*sig_x*eps_x + 0.5*sig_y*eps_y
print('1. lasttilfelle: Us = {:.2E} J/m3, 3. lasttilfelle: Us = {:.2E} J/m3'.format(Us_1, Us_3))
For de fleste eksempler (i TMM4100) vil det bare være en spenning, og (1) reduseres da selvsagt til:
\begin{equation} U_s = \frac{1}{2}\sigma \varepsilon \tag{2} \end{equation}Ved lineærelastisk oppførsel, kan (2) manipuleres til ymse nyttige former:
\begin{equation} U_s = \frac{1}{2}\sigma \varepsilon = \frac{1}{2} E \varepsilon^2 = \frac{1}{2}\frac{\sigma^2}{E} \tag{3} \end{equation}Mens tøyningsenergitetthet er et mål på mengden elastisk tøyningsenergi per. volum som eksisterer i materialet, er resiliens en materialparameter som angir hvor mye tøyningsenergi per. volum materialet kan absorbere. Resiliens er dermed en materialegenskap, med samme enhet som tøyningsenergitetthet.
Konseptet her blir ganske enkelt for lineærelastiske materialer der vi har en tydelig elastisk grense for spenningen (vanligvis flytestyrken $\sigma_{yield}$ eller forenklet til $\sigma_y$ (ikke å forveksle med normalspenning i y-retning....).
Fra (3) med maks spenning lik flytestyrken, finner vi resiliensen $U_r$ som:
\begin{equation} U_r = \frac{1}{2}\frac{\sigma^2_y}{E} \tag{4} \end{equation}Eksempel:
materialer = ['konstruksjonsstål', 'fjærstål', 'tilfeldig aluminium', 'Karbonfiberkompositt', 'Glassfiberkompositt']
flytestyrker= [ 300, 1200, 500, 1200, 800 ]
Emoduler = [ 200000, 200000, 70000, 140000, 40000 ]
for m, sy, E in zip(materialer, flytestyrker, Emoduler):
Ur = 0.5*(sy**2)/E
print('Ur = {:.2f}, ({})'.format(Ur, m))
Høy resiliens finner vi altså først og fremst hos materialer med høy styrke, samtidig som lav E-modul bidrar til høy resiliens.
Seighet er et mål på et materials kapasitet til å absorbere energi per. volum ved deformasjon, og tilsvarer arealet under en spenning-tøyningskurve.
Eksempel
toyning = [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.010, 0.011,
0.012, 0.013, 0.014, 0.015, 0.016, 0.017, 0.018, 0.019, 0.020, 0.025, 0.030, 0.035,
0.040, 0.045, 0.050, 0.055, 0.060, 0.065, 0.070, 0.075, 0.080, 0.085, 0.090, 0.095,
0.100, 0.105, 0.110, 0.115, 0.120, 0.125, 0.130, 0.135, 0.140, 0.145, 0.150, ]
spenning = [ 0.0, 70.0, 139.7, 199.7, 232.7, 250.6, 262.5, 271.2, 278.2, 283.9, 288.9, 293.2,
297.0, 300.5, 303.6, 306.5, 309.2, 311.7, 314.0, 316.2, 318.2, 327.1, 334.2, 340.2,
345.4, 350.0, 354.1, 357.8, 361.2, 364.3, 367.2, 370.0, 372.5, 374.9, 377.2, 379.3,
381.4, 383.4, 385.2, 387.0, 388.8, 390.4, 392.0, 393.6, 395.0, 396.5, 397.9, ]
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(toyning, spenning, color = 'red')
plt.grid()
plt.xlim(0,)
plt.ylim(0,)
plt.show()
# Numerisk integrasjon:
seighet=np.trapz(y=spenning,x=toyning)
print('Seighet: {:.2f} N/mm2 = {:.2f} MJ/m3'.format(seighet,seighet))
Merk at seighet kan være definert noe ulikt, eller uklart:
For de fleste konstruksjonsmaterialer har dette imidlertid liten betydning ettersom den plastiske delen av energien er mye større enn den elastiske delen.
Eksempel: Et typisk konstruksjonsstål har flytstyrke lik 300 MPa og bruddtøyning lik 0.1 eller mer. Dersom vi antar ideal-plastisk oppførsel (ingen fastning, ser dette ut som følger:
toyning = [0, 300/200000, 0.1]
spenning = [0, 300, 300]
plt.plot(toyning, spenning, color='red')
plt.grid()
plt.xlim(0,)
plt.ylim(0,)
plt.show()
seighet=np.trapz(y=spenning,x=toyning)
print('Seighet som arealet under hele kurven: {:.2f} MJ/m3'.format(seighet))
Når vi ikke tar med den elastiske delen:
seighet=np.trapz(y=spenning[1:],x=toyning[1:]) # tar ikke med første linje (elastisk del)
print('Seighet som arealet under plastisk del av kurven: {:.2f} MJ/m3'.format(seighet))