Spenning er, i enkleste form, definert som kraft per areal, altså:
\begin{equation} \text{spenning}=\frac{F}{A} \tag{1} \end{equation}Vi skiller mellom normalspenninger der kraften $F_s$ står normalt på planet
\begin{equation} \sigma=\frac{F_N}{A_0} \tag{2} \end{equation}og skjærspenninger der kraften $F_S$ er parallell med planet
\begin{equation} \tau=\frac{F_S}{A_0} \tag{3} \end{equation}Spenning evaluert som kraft per. udeformert areal ($A_0$), kalles nominell spenning eller ingeniørspenning.
Spenning evaluert som kraft per. deformert areal ($A$) kalles sann spenning.
Sann spenning blir først relevant for store deformasjoner når vi enten har plastisk deformasjon eller betrakter materialer som tillater store elastiske tøyninger (i praksis: gummi).
I et koordinatsystem x-y-z kan et kontinuum være utsatt for 6 spenningskomponenter bestående av 3 normalspenninger 3 skjærspenninger:
$$\sigma_x \\ \sigma_y \\ \sigma_z \\ \tau_{xy} \\ \tau_{xz} \\ \tau_{yz}$$Rotasjon av spenninger er særlig relevant for å forklare plastisk oppførsel, krystallplastisitet og utløst skjærspenning senere i emnet.
Vi skal begrense temaet til plan spenningstilstand der $\sigma_z = \tau_{xz} = \tau_{yz} = 0$ og rotasjon av spenninger om $z$-aksen som illustrert i følgende figur:
Koordinatsystemet $1$-$2$-$3$ er rotert med en vinkel $\theta$ om $z$-aksen. Spenninger i det roterte koordinatsystemet finner vi ved:
$$\sigma_1 = c^2 \sigma_x + s^2 \sigma_y +2cs \tau_{xy}$$$$\sigma_2 = s^2 \sigma_x + c^2 \sigma_y -2cs \tau_{xy}$$$$\tau_{12} =-cs \sigma_x + cs \sigma_y +( c^2 -s^2 )\tau_{xy}$$hvor
$$c = \text{cos}(\theta), \quad s = \text{sin}(\theta)$$Alternativt, ordne settet av ligninger ved hjelp av matriser:
$$\begin{bmatrix} \sigma_1 \\ \sigma_2 \\ \tau_{12} \end{bmatrix} = \begin{bmatrix} c^2 & s^2 & 2cs \\ s^2 & c^2 & -2cs \\ -cs & cs & c^2-s^2 \end{bmatrix} \begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix}$$Lager så en nyttig funksjon for denne rotasjonen:
import numpy as np
def roterSpenning(spenning, vinkel):
a=np.radians(vinkel)
c=np.cos(a)
s=np.sin(a)
T=np.array([[c**2, s**2, 2*c*s],
[s**2, c**2, -2*c*s],
[-c*s, c*s, c**2-s**2]])
return T @ spenning
Eksempel-1
Roter følgende spenningstilstand 45 grader om z-aksen:
$$\begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix} = \begin{bmatrix} 100 \\ 0 \\ 0 \end{bmatrix}$$rotert_spenning = roterSpenning([100,0,0],45)
print(rotert_spenning)
Eksempel-2
Roter følgende spenningstilstand 45 grader om z-aksen:
$$\begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 100 \end{bmatrix}$$rotert_spenning = roterSpenning([0,0,100],45)
print(rotert_spenning)
Eksempel-3
Roter følgende spenningstilstand fra 0 til 90 grader om z-aksen og plot $\sigma_1$, $\sigma_2$ og $\tau_{12}$ som funksjon av $\theta$:
$$\begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix} = \begin{bmatrix} 100 \\ 0 \\ 0 \end{bmatrix}$$import matplotlib.pyplot as plt
%matplotlib inline
sigma_1=[]
sigma_2=[]
tau_12=[]
for a in range(0,91):
spenninger = roterSpenning([100,0,0],a)
sigma_1.append(spenninger[0])
sigma_2.append(spenninger[1])
tau_12.append(spenninger[2])
plt.subplots(figsize=(8,3))
plt.plot(range(0,91),sigma_1, label = 'sigma_1')
plt.plot(range(0,91),sigma_2, label = 'sigma_2')
plt.plot(range(0,91),tau_12, label='tau_12')
plt.xlim(0,90)
plt.legend()
plt.grid()
Eksempel-4
Roter følgende spenningstilstand fra 0 til 90 grader om z-aksen og plot $\sigma_1$, $\sigma_2$ og $\tau_{12}$ som funksjon av $\theta$:
$$\begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix} = \begin{bmatrix} 99 \\ 101 \\ 0 \end{bmatrix}$$sigma_1=[]
sigma_2=[]
tau_12=[]
for a in range(0,91):
spenninger = roterSpenning([99,101,0],a)
sigma_1.append(spenninger[0])
sigma_2.append(spenninger[1])
tau_12.append(spenninger[2])
plt.subplots(figsize=(8,3))
plt.plot(range(0,91),sigma_1, label = 'sigma_1')
plt.plot(range(0,91),sigma_2, label = 'sigma_2')
plt.plot(range(0,91),tau_12, label='tau_12')
plt.xlim(0,90)
plt.legend()
plt.grid()
Eksempel-5
Roter følgende spenningstilstand fra 0 til 90 grader om z-aksen og plot $\sigma_1$, $\sigma_2$ og $\tau_{12}$ som funksjon av $\theta$ og bestem hvilken rotasjon som fører til null skjærspenning, og dermed hva de prinsipielle spenningene (maks og min normalspenninger) er:
$$\begin{bmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{bmatrix} = \begin{bmatrix} 84 \\ -22 \\ 41 \end{bmatrix}$$sigma_1=[]
sigma_2=[]
tau_12=[]
for a in range(0,91):
spenninger = roterSpenning([84,-22,41],a)
sigma_1.append(spenninger[0])
sigma_2.append(spenninger[1])
tau_12.append(spenninger[2])
plt.subplots(figsize=(8,8))
plt.plot(range(0,91),sigma_1, label = 'sigma_1')
plt.plot(range(0,91),sigma_2, label = 'sigma_2')
plt.plot(range(0,91),tau_12, label='tau_12')
plt.xlim(0,90)
plt.legend()
plt.minorticks_on()
plt.grid(which='both')
plt.ylim(-70,100)