Utmatting

I TMM4100 går vi ikke spessielt dypt i dette temaet. Grunnleggende konsept og overfladisk ingeniørmessig rammeverk for utmatting er egentlig ganske trivielt og enkelt, mens det å faktisk være i stand til å forstå mekanismene for utmatting kreve et helt eget semester. Det har vi ikke tid til...

Utmatting, eller mer presist, dynamisk utmatting, er svikt i materialet på grunn av varierende last. Det kan være nyttig å kategorisere utmatting i to typer:

  • Stokastisk utmatting pÃ¥ grunn av tilfeldige lastvariasjoner fra f.eks. vær og vind eller andre former for belastning uten et klart repeterende mønster.
  • Syklisk utmattig der det er et tydelig mønster i hvordan lasten varierer over tid. Et godt eksempel pÃ¥ dette er roterende maskineri som gÃ¥r med en gitt hastighet/frekvens og jevn belastning.

I mange tilfeller vil det være en blanding av syklisk og stokastisk variasjon: til og med vær og vind kan ha identifiserbar og predikerbar periodisk gjentagelse (eksempelvis flo og fjære) som kombineres med mer stokastisk belastning fra f.eks. vind.

Gå til Blackboard/forelesning for flere praktiske eksempler på konstruksjoner utsatt for ulike dynamiske laster

Syklisk utmatting

Syklisk utmatting er grunnprinsippet for testing av materialer med hensyn på utmatting, og dette prinsippet er enkelt:

Materialet utsettes for en et stort antall lastsykler, vanligvis i form av en sinusfunksjon for spenningen med gitt middelverdi $\sigma_m$, amplitude $\sigma_a$ og frekvens $f$. Antall sykler $N$ til brudd kalles levetid for det gitte lastnivået. R-verdi er forholdet mellom minimumsspenning $\sigma_{min}$ og maksimumspenning $\sigma_{max}$:

\begin{equation} \sigma_m = \frac{\sigma_{max} + \sigma_{min}}{2} \tag{1} \end{equation}\begin{equation} \sigma_a = \frac{\sigma_{max} - \sigma_{min}}{2} \tag{2} \end{equation}\begin{equation} R = \frac{\sigma_{min}}{\sigma_{max}} \tag{3} \end{equation}

Sammenhenger mellom periode $T$, frekvens $f$ og vinkelfrekvens $\omega$ er jo godt kjent for alle på gløs...

\begin{equation} \omega = 2 \pi f = \frac{2 \pi}{T} \tag{4} \end{equation}

En syklisk spenning kan da uttrykkes ved:

\begin{equation} \sigma(t) = \sigma_m + \sigma_a \sin \omega t \tag{5} \end{equation}

Eksempler: (bruk funksjonen for å lage dine egne eksempler..)

In [1]:
import numpy as np
import matplotlib.pyplot as plt

def plotSykliskUtmatting(tid_max, f, sig_m, sig_a, tid_min=0, nt=10000, grid=True):
    t = np.linspace(tid_min, tid_max, nt)  # nt er antal datapunkt
    w = 2*np.pi*f                          # vinkelfrekvens
    sig_min = sig_m - sig_a          
    sig_max = sig_m + sig_a
    R_verdi = sig_min/sig_max
    sig = sig_m + sig_a*np.sin(w*t)
    plt.subplots(figsize=(4,3))
    plt.plot(t,sig, color='red', linewidth = 1)
    plt.title('$\sigma_m$={:.1f},  $\sigma_a$={:.1f},  $R$={:.2f}'.format(sig_m, sig_a, R_verdi), fontsize = 10)
    plt.xlabel('Tid')
    plt.ylabel('Spenning')
    plt.grid()
    plt.show()
In [2]:
plotSykliskUtmatting(tid_max=60, f=0.1, sig_m=0, sig_a=150)
In [3]:
plotSykliskUtmatting(tid_max=10, f=1, sig_m=50, sig_a=100)
In [4]:
plotSykliskUtmatting(tid_max=5, f=1, sig_m=100, sig_a=50)

S-N kurver

Hva, hvordan og hvorfor om S-N kurver finner du på Blackboard

Eksperimentelle data for en aluminiumslegering er gitt under:

In [5]:
import numpy as np
import matplotlib.pyplot as plt

# Test-resultat for en aluminiumslegering (2017A)

S_eksp =   [400,   300,   250,   200,   175,   150,   125,   120]
N_eksp = [2.5E4, 6.1E4, 1.0E5, 2.8E5, 5.5E5, 1.1E6, 3.0E6, 8.1E6]

plt.semilogx(N_eksp,S_eksp, 'o')
plt.ylim(0,)
plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()

Vi ser rimelig tydelig at det ikke er en lineær sammenheng mellom spenningen (S) og log(N) for dette materialet.

Mange materialer viser imidlertid følgende sammenheng mellom spenningen og antall sykler:

\begin{equation} S = A \cdot N^{-B} \tag{6} \end{equation}

hvor $A$ og $B$ er empiriske konstanter (altså verdier som vi forsøker å tilpasse de eksperimentelle verdiene). Merk at du vil finne alle mulige andre symbol for $A$ og $B$ i ulike kilder.

Fra ligning (6):

\begin{equation} \log S = \log A -B \log N \tag{7} \end{equation}

Nå får vi altså en lineær sammenheng mellom $\log N$ og $\log S$.

Ligningen har to ukjent, så vi trenger 2 datapunkt ($S_1, N_1$) og ($S_2, N_2$) for å finne disse:

$$ S_1 = A \cdot N_1^{-B} \quad \text{og} \quad S_2 = A \cdot N_2^{-B} $$

Løser for $B$:

$$ \frac{S_1}{S_2} = \frac{A \cdot N_1^{-B}}{A \cdot N_2^{-B}} = \frac{N_1^{-B}}{N_2^{-B}} = \bigg(\frac{N_1}{N_2}\bigg)^{-B} \Rightarrow \log \bigg( \frac{S_1}{S_2} \bigg) = -B \log \bigg( \frac{N_1}{N_2} \bigg) \Rightarrow$$\begin{equation} B = - \frac{\log S_1 - \log S_2}{\log N_1 - \log N_2} \tag{8} \end{equation}

Dermed finner vi $A$ ved:

$$ S_1 = A \cdot N_1^{-B} \Rightarrow $$\begin{equation} A = S_1 N_1^{B} \tag{9} \end{equation}
In [6]:
# Prøver med første [0] og siste [-1] datapunkt:

S1, S2 = S_eksp[0], S_eksp[-1]
N1, N2 = N_eksp[0], N_eksp[-1]

B =  -( np.log10(S1) - np.log10(S2) )/( np.log10(N1) - np.log10(N2) )
A = S1*N1**B

print('A = {:.1f}, B = {:.3f}'.format(A,B))
A = 3296.3, B = 0.208
In [7]:
# Sjekker om dette ser ut til å passe:

N=np.logspace(4,7)
S=A*N**(-B)

plt.semilogx(N_eksp,S_eksp, 'o')
plt.semilogx(N,S)
plt.ylim(0,)
plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()
In [8]:
# Prøver heller med andre [1] og nærsiste [-2] datapunkt:

S1, S2 = S_eksp[1], S_eksp[-2]
N1, N2 = N_eksp[1], N_eksp[-2]

B =  -( np.log10(S1) - np.log10(S2) )/( np.log10(N1) - np.log10(N2) )
A = S1*N1**B

N=np.logspace(4,7)
S=A*N**(-B)

plt.semilogx(N_eksp,S_eksp, 'o')
plt.semilogx(N,S)
plt.ylim(0,)
plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()
In [9]:
# Samme som over, men i et log S - log N plot:

plt.loglog(N_eksp,S_eksp, 'o')
plt.loglog(N,S)

plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()

En enkel metode for automatisk kurvetilpassing, er numpy.polyfit(x,y,deg), som antar et polynom av grad deg.

Fra ligning (7) har vi

$$ \log S = \log A -B \log N$$

som vi kan skrive som

$$ y = p_1 x + p_0 $$

hvor $\quad y = \log S, \quad x = \log N, \quad p_0 = \log A, \quad p_1 = -B$

In [10]:
y = np.log10(S_eksp)
x = np.log10(N_eksp)
k = np.polyfit(x, y, 1)
p1=k[0]
p0=k[1]
print(p1,p0)
-0.21127193690443838 3.4797359473501426
In [11]:
A = 10**p0
B = -p1
print('A = {:.1f}, B = {:.3f}'.format(A,B))
A = 3018.1, B = 0.211
In [12]:
N=np.logspace(4,7)
S=A*N**(-B)

plt.loglog(N_eksp,S_eksp, 'o')
plt.loglog(N,S)
plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()

plt.semilogx(N_eksp,S_eksp, 'o')
plt.semilogx(N,S)
plt.ylim(0,)
plt.xlabel('N')
plt.ylabel('S')
plt.grid()
plt.show()

Disclaimer:This site is designed for educational purposes only. There are most likely errors, mistakes, typos, and poorly crafted statements that are not detected yet... www.ntnu.edu/employees/nils.p.vedvik

Copyright 2023, All rights reserved