I en tynnvegget sylinderisk trykktank, er spenninger i veggen til den sylindriske delen av trykktanken gitt ved
\begin{equation} \sigma_x = \frac{Pr}{2t} \tag{1} \end{equation}\begin{equation} \sigma_y = \frac{Pr}{t} \tag{2} \end{equation}hvor $P$ er trykket, $r$ er radius og $t$ er veggtykkelse. Spenningen $\sigma_x$ er i lengderetningen av tanken mens $\sigma_y$ virker i tangentiell retning.
Vi skal nå dimensjonere en trykktank med radius lik 500 mm som skal motstå et trykk på 10 bar. Materialet er et rustfritt stål med flytestyrke lik 400 MPa.
Første iterasjon:
r = 500 # mm
P = 10 # MPa (=100 bar)
E = 190000 # MPa
s_yield = 400 # MPa
t = 5 # mm, bare gjetter
sigx = (P*r)/(2*t)
sigy = (P*r)/(1*t)
print('sigx = {:.1f} MPa, sigy = {:.1f} MPa når t = {:.2f} mm.'.format(sigx,sigy,t))
Den største spenningen, $\sigma_y$, er nå 2.5 ganger høyere enn flytestyrken. Om spennigen skal være lik flytestyrken, må tykkelsen økes tilsvarende.
Vi kan selvsagt løse (2) for $t$ med $\sigma_y = \sigma_{yield}$ slik at
$$\sigma_{yield} = \frac{Pr}{t} \Rightarrow t = \frac{Pr}{\sigma_{yield}}$$r = 500 # mm
P = 10 # MPa (=100 bar)
E = 190000 # MPa
s_yield = 400 # MPa
t = P*r/s_yield
sigx = (P*r)/(2*t)
sigy = (P*r)/(1*t)
print('sigx = {:.1f} MPa, sigy = {:.1f} MPa når t = {:.2f} mm.'.format(sigx,sigy,t))
Nå er der imidlertid to spenningskomponenter ulik null, og dette har betydning for når det oppstår plastisk deformasjon.
Von Mises spenningen for en generell spenningstilstand er
$$\sigma _{v}=\sqrt{\frac {1}{2}\big((\sigma_{x}-\sigma_{y})^{2}+(\sigma_{y}-\sigma_{z})^{2}+(\sigma_{z}-\sigma_{x})^{2}+6(\tau_{xy}^{2}+\tau_{yz}^{2}+\tau_{xz}^{2})\big)}$$Når kun $\sigma_x \ne 0$ og $\sigma_y \ne 0 $ kan dette forenkles til:
\begin{equation} \sigma _{v}=\sqrt{\frac {1}{2}\big((\sigma_{x}-\sigma_{y})^{2}+\sigma_{y}^{2}+\sigma_{x}^{2}\big)} \tag{3} \end{equation}s_mises = ( 0.5*( (sigx-sigy)**2 + sigy**2 + sigx**2 ))**0.5
print('Mises spenning = {:.1f} MPa'.format(s_mises))
Mises spennigen er altså under flytestyrken, så tykkelsen kan reduseres til noe mindre enn 12.5 mm.
Nå blir det ikke like greit å løse for $t$ (bare prøv med (1) og (2) substituert inn i (3)...).
Derimot kan vi definere en eksponeringsfaktor som
$$f_e = \frac{\sigma_v}{\sigma_{yield}}$$Denne vil ha følgende tolking:
$$f_e \ge 1 \rightarrow \text{ flyt}$$$$f_e \lt 1 \rightarrow \text{ ikke flyt}$$Dessuten angir den proporsjonalitet: Dersom f.eks. $f_e = 0.5$, er 50% av flytstyrken utnyttet, og lasten (trykket) kan økes til det dobbelte, eller tykkelsen kan halveres.
fe = s_mises/s_yield
print('Eksponeringsfaktor fe = {:.2f} når t = {:.2f}'.format(fe,t))
Dette betyr at tykkelsen kan reduseres med en faktor tilsvarende eksponeringsfaktoren:
t = t*fe # mm
sigx = (P*r)/(2*t)
sigy = (P*r)/(1*t)
s_mises = ( 0.5*( (sigx-sigy)**2 + sigy**2 + sigx**2 ))**0.5
fe = s_mises/s_yield
print('Tykkelse er nå {:.2f} mm'.format(t))
print('sigx = {:.1f} MPa, sigy = {:.1f} MPa'.format(sigx,sigy))
print('Mises spenning = {:.1f} MPa og eksponeringsfaktor fe = {:.2f}'.format(s_mises,fe))
La oss så anta at vi vil ha en sikkerhetsfaktor lik 2. Dette er ekvivalent med at eksponeringsfaktoren skal være 0.5. Tykkelsen må dermed økes med denne sikkerhetsfaktoren:
sf = 2 # 'sikkerhetsfaktor' (invers utnyttelsesgrad av flytestyrke)
t = t*sf # oppdaterer til ny dimensjonert tykkelse
sigx = (P*r)/(2*t)
sigy = (P*r)/(1*t)
s_mises = ( 0.5*( (sigx-sigy)**2 + sigy**2 + sigx**2 ))**0.5
fe = s_mises/s_yield
print('Tykkelse er nå {:.2f} mm'.format(t))
print('sigx = {:.1f} MPa, sigy = {:.1f} MPa'.format(sigx,sigy))
print('Mises spenning = {:.1f} MPa og eksponeringsfaktor fe = {:.2f}'.format(s_mises,fe))
Tanken skal dessuten konstrueres for betingelsen lekasje før brudd, som betyr at en sprekk skal kunne vokse stabilt gjennom hele tykkelsen.
Altså: en overflatesprekk med lengde $a=t$ skal ikke føre til katastrofalt brudd.
Fra Bruddmekanikk:
$$K_{I} = Y \sigma \sqrt{\pi a}$$a = t*0.001 # konverterer til meter
Y = 1.5 # antagelse, forhåpentligvis konservativ...
from math import pi
KI = Y*sigy*((pi*a)**0.5)
print('KI = {:.1f} MPa m^0.5 når Y = {}' .format(KI,Y))
Vilkåret for at det ikke skal oppstå et katastrofalt brudd før lekasje, er dermed at bruddseigheten $K_{Ic}$ må være større en den beregnede spenningsintensitetsfaktoren $K_I$
Setter det hele sammen til en funksjon:
def trykktankdesign(r, P, s_yield, sf, KIC, Y):
t = 1
sigx, sigy = (P*r)/(2*t) , (P*r)/(1*t)
s_mises = ( 0.5*( (sigx-sigy)**2 + sigy**2 + sigx**2 ))**0.5
fe = s_mises/s_yield
t=t*sf*fe
sigx, sigy = (P*r)/(2*t) , (P*r)/(1*t)
s_mises = ( 0.5*( (sigx-sigy)**2 + sigy**2 + sigx**2 ))**0.5
a = t*0.001
from math import pi
KI = Y*sigy*((pi*a)**0.5)
print('sigx = {:.1f} MPa, sigy = {:.1f} MPa'.format(sigx,sigy))
print('Mises spenning = {:.1f} MPa, flytestyrken er {:.1f}'.format(s_mises,s_yield))
print('Tykkelsen er nå {:.2f} mm'.format(t))
print('KI = {:.1f} MPa m^0.5 når Y = {}' .format(KI,Y))
if KI > KIC:
print('Det blir IKKE lekasje før poff siden KI = {:.1f} > KIC = {:.1f}'.format(KI,KIC))
else:
print('Det BLIR lekasje før poff siden KI = {:.1f} < KIC = {:.1f}'.format(KI,KIC))
Noen alternative eksempler:
trykktankdesign(r=500, P=10, s_yield = 400, sf=2, KIC = 100, Y=1.5)
trykktankdesign(r=500, P=10, s_yield = 200, sf=2, KIC = 100, Y=1.5)
trykktankdesign(r=500, P=10, s_yield = 600, sf=1.5, KIC = 100, Y=1.5)