$$D.T.$$
%matplotlib inline
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.display import Image
sp.init_printing()
Pri ráme zaťaženom podľa obrázku určite bezpečnosť vzhľadom k medznému stavu pružnosti, ak dané parametre sú: rozmery prútov $a$ a $b$, líniové zaťaženie $q$, rozmery obdĺžnikového priečneho prierezu $H$ a $B$, Youngov modul pružnosti $E$ a medza klzu $\sigma_K$.
Image(filename='Ohyb1a.PNG', width=700, height=300)
Daný prút je symetrický podľa osí $o_1$ a $o_2$. Zaťaženie je rozložené symetricky vzhľadom k osi $o_1$, avšak vzhľadom k osi $o_2$ nie je rozložené ani symetricky ani antimetricky. Z toho vyplýva, že môžme zaviesť symetriu a riešiť iba $\frac{1}{2}$ prútu a nie $\frac{1}{4}$. Podmienky symetrie sa môžu zapísať nasledovne
\begin{align*} u_{F_B} = & \frac{\partial{W}}{\partial{F_B}} = 0\\ \varphi_{M_B} = & \frac{\partial{W}}{\partial{M_B}} = 0\\ \end{align*}
a čiastočné uvoľnenie bude vyzerať týmto spôsobom:
Image(filename='Ohyb1b.PNG', width=800, height=400)
Zavedenie potrebných symbolov
a, b, q = sp.symbols('a b q')
H, B = sp.symbols('H B')
x1, x2, x3, x4 = sp.symbols('x_1 x_2 x_3 x_4')
FB, MB = sp.symbols('F_B M_B')
E, J, S = sp.symbols('E J S')
Výsledné vnútorné účinky sa vyjadria nasledovne, keďže v prípade zalomeného prútu uvoľňujeme od voľného konca:
VVÚ:
Úsek I:
pre $x_1\in(0;a)$
\begin{align*} N_1 = & - F_B\\ T_1 = & \,\,0 \\ M_1 = & - M_B\\ \end{align*}
Úsek II:
pre $x_2\in(0;b)$
\begin{align*} N_2 = & \,\,0\\ T_2 = & -F_B\\ M_2 = &\,\, F_Bx_2 - M_B\\ \end{align*}
Úsek III:
pre $x_3\in(0;b)$
\begin{align*} N_3 = & \,\,0\\ T_3 = & \,\, qx_3 - F_B\\ M_3 = &\,\, F_B(x_3 + b) - M_B - \frac{qx_3^{2}}{2}\\ \end{align*}
Úsek IV:
pre $x_4\in(0;a)$
\begin{align*} N_4 = &\, F_B - qb\\ T_4 = & \, 0\\ M_4 = & \,F_B(2b) - M_B - \frac{qb^{2}}{2}\\ \end{align*}
Zapísané do Pythonu:
N1 = -FB
M1 = -MB
N1, M1
T2 = - FB
M2 = FB * x2 - MB
T2, M2
T3 = q*x3 - FB
M3 = FB*(x3 + b) - MB - q*x3**2/2
T3, M3
N4 = FB - q*b
M4 = FB*2*b - MB - q*b**2/2
N4, M4
Derivácie vnútorných účinkov podľa $M_B$ a $F_B$:
dM1dMB = M1.diff(MB)
dM2dMB = M2.diff(MB)
dM3dMB = M3.diff(MB)
dM4dMB = M4.diff(MB)
dM1dFB = M1.diff(FB)
dM2dFB = M2.diff(FB)
dM3dFB = M3.diff(FB)
dM4dFB = M4.diff(FB)
dM1dMB, dM2dMB, dM3dMB, dM4dMB
dM1dFB, dM2dFB, dM3dFB, dM4dFB
Podmienky symetrie môžu byť zapísané nasledovne,
\begin{align*} \frac{1}{EJ_p}\left[\int\limits_{0}^{a}M_1 \frac{\partial{M_1}}{\partial{M_B}}dx_1 + \int\limits_{0}^{b}M_2 \frac{\partial{M_2}}{\partial{M_B}}dx_2 +\ \int\limits_{0}^{b}M_3 \frac{\partial{M_3}}{\partial{M_B}}dx_3 + \int\limits_{0}^{a}M_4 \frac{\partial{M_4}}{\partial{M_B}}dx_4 \right] = 0 \\ \frac{1}{EJ} \left[\int\limits_{0}^{a}M_1 \frac{\partial{M_1}}{\partial{F_B}}dx_1 +\ \int\limits_{0}^{b}M_2 \frac{\partial{M_2}}{\partial{F_B}}dx_2 + \int\limits_{0}^{b}M_3 \frac{\partial{M_3}}{\partial{F_B}}dx_3 +\ \int\limits_{0}^{a}M_4 \frac{\partial{M_4}}{\partial{F_B}}dx_4\right] = 0\\ \end{align*}
Keďže obe rovnice sú homogénne, môžeme ich zjednodušiť prenásobením a zapísať do tvaru:
rov1 = sp.Integral(M1*dM1dMB,[x1,0,a]) + sp.Integral(M2*dM2dMB,[x2,0,b]) + \
sp.Integral(M3*dM3dMB,[x3,0,b]) + sp.Integral(M4*dM4dMB,[x4,0,a])
rov2 = sp.Integral(M1*dM1dFB,[x1,0,a]) + sp.Integral(M2*dM2dFB,[x2,0,b]) + \
sp.Integral(M3*dM3dFB,[x3,0,b]) + sp.Integral(M4*dM4dFB,[x4,0,a])
rov1, rov2
Integráciou dostaneme sústavu rovníc o dvoch neznámych $M_B$ a $F_B$ a ich riešenie vyzerá nasledovne:
rov1_, rov2_ = rov1.doit(), rov2.doit()
rov1_ = sp.expand(rov1_)
rov2_ = sp.expand(rov2_)
vysl1 = sp.linsolve([rov1_,rov2_],[MB, FB])
MB_vysl, FB_vysl = next(iter(vysl1))
MB_vysl, FB_vysl
Dosadenie čísel pre numerický výpočet
\begin{align*} a = & \,500 \, mm\\ b = & \,750 \, mm\\ q = & \,15 \, Nmm^{-1}\\ B = & \,20\, mm\\ H = & \,50\, mm\\ \end{align*}
a_, b_ = 500., 750.
q_= 15.
B_, H_ = 20., 50.
Dosadenie numerických hodnôt do vyjadrených neznámych $M_B$ a $F_B$:
MB_ = MB_vysl.subs({a:a_,b:b_,q:q_})
FB_ = FB_vysl.subs({a:a_,b:b_,q:q_})
MB_, FB_
Dosadenie číselných hodnôt a hodnôt $M_B$ a $F_B$ do výsledných vnútorných účinkov:
N1_ = N1.subs(FB,FB_)
M1_ = M1.subs(MB,MB_)
N1_, M1_
T2_ = T2.subs(FB,FB_)
M2_ = M2.subs({FB:FB_,MB:MB_})
T2_, M2_
T3_ = T3.subs({FB:FB_,q:q_})
M3_ = M3.subs({FB:FB_,MB:MB_,q:q_,b:b_})
T3_, M3_
N4_ = N4.subs({FB:FB_,q:q_,b:b_})
M4_ = M4.subs({FB:FB_,MB:MB_,q:q_,b:b_})
N4_, M4_
Vykreslenie výsledných vnútorných účinkov
Vyjadrenie VVÚ rovnomerne pozdĺž strednice:
x1_ = np.linspace(0,a_,20)
N1_plot = [float(N1_) for ii in x1_]
M1_plot = [float(M1_) for ii in x1_]
x2_ = np.linspace(0,b_,20)
T2_plot = [float(T2_) for ii in x2_]
M2_plot = [float(M2_.subs(x2,ii)) for ii in x2_]
x3_ = np.linspace(0,b_,20)
T3_plot = [float(T3_.subs(x3,ii)) for ii in x3_]
M3_plot = [float(M3_.subs(x3,ii)) for ii in x3_]
x4_ = np.linspace(0,a_,20)
N4_plot = [float(N4_) for ii in x4_]
M4_plot = [float(M4_) for ii in x4_]
Vykreslenie vnútorných normálových účinkov $N(x)$:
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,6))
fig.subplots_adjust(wspace=0.5)
ax1.fill_betweenx(x1_,0,N1_plot,facecolor='blue')
ax2.fill_betweenx(x4_,0,N4_plot,facecolor='blue')
ax2.invert_xaxis()
ax2.invert_yaxis()
ax1.grid(True)
ax2.grid(True)
ax1.set_ylim(0,500)
ax1.set_xlim(-2800,0)
ax2.set_ylim(500,0)
ax2.set_xlim(0,-9500)
ax1.set_xlabel(r'$N_1\,[N]$').set_fontsize(14)
ax1.set_ylabel(r'$x_1\,[mm]$').set_fontsize(14)
ax2.set_ylabel(r'$x_4\,[mm]$').set_fontsize(14)
ax2.set_xlabel(r'$N_4\,[N]$').set_fontsize(14)
ax1.set_title('Výsledný vnútorný účinok '+r'$N_1$'+'\n').set_fontsize(16)
ax2.set_title('Výsledný vnútorný účinok '+r'$N_4$'+'\n').set_fontsize(16)
Vykreslenie šmykových vnútorných účinkov $T(x)$:
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,6))
fig.subplots_adjust(wspace=0.5)
ax1.fill_between(x2_,0,T2_plot,facecolor='green')
ax2.fill_between(x3_,0,T3_plot,facecolor='green')
ax1.set_xlim(750,0)
ax1.set_ylim(-2700,0)
ax2.set_xlim(750,0)
ax2.set_ylim(-3000,9000)
ax1.grid(True)
ax2.grid(True)
ax1.set_xlabel(r'$x_2\,[mm]$').set_fontsize(14)
ax1.set_ylabel(r'$T_2\,[N]$').set_fontsize(14)
ax2.set_ylabel(r'$T_3\,[N]$').set_fontsize(14)
ax2.set_xlabel(r'$x_3\,[mm]$').set_fontsize(14)
ax1.set_title('Výsledný vnútorný účinok '+r'$T_2$'+'\n').set_fontsize(16)
ax2.set_title('Výsledný vnútorný účinok '+r'$T_3$'+'\n').set_fontsize(16)
Vykreslenie momentových vnútorných účinkov $M(x)$
fig,((ax1,ax2,ax3,ax4),(ax5,ax6,ax7,ax8))=plt.subplots(2,4,figsize=(15,13))
fig.subplots_adjust(wspace=0.2 , hspace=0.5)
ax1.axis('off')
ax3.axis('off')
ax5.axis('off')
ax7.axis('off')
ax2.fill_betweenx(x1_,0,M1_plot,facecolor='red')
ax4.fill_between(x2_,0,M2_plot,facecolor='red')
ax6.fill_between(x3_,0,M3_plot,facecolor='red')
ax8.fill_betweenx(x4_,0,M4_plot,facecolor='red')
ax2.invert_xaxis()
ax4.invert_xaxis()
ax4.invert_yaxis()
ax6.invert_xaxis()
ax8.invert_yaxis()
ax2.set_xlim(-8e5,0)
ax2.set_ylim(0,500)
ax4.set_xlim(750,0)
ax4.set_ylim(-0.8e6,1.5e6)
ax6.set_xlim(750,0)
ax8.set_xlim(0,-1.25e6)
ax8.set_ylim(500,0)
ax2.grid(True)
ax4.grid(True)
ax6.grid(True)
ax8.grid(True)
ax2.set_xlabel(r'$M_1\,[Nmm]$').set_fontsize(14)
ax2.set_ylabel(r'$x_1\,[mm]$').set_fontsize(14)
ax4.set_ylabel(r'$M_2\,[Nmm]$').set_fontsize(14)
ax4.set_xlabel(r'$x_2\,[mm]$').set_fontsize(14)
ax6.set_xlabel(r'$x_3\,[mm]$').set_fontsize(14)
ax6.set_ylabel(r'$M_3\,[Nmm]$').set_fontsize(14)
ax8.set_xlabel(r'$M_4\,[Nmm]$').set_fontsize(14)
ax8.set_ylabel(r'$x_4\,[mm]$').set_fontsize(14)
ax2.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
ax4.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
ax6.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
ax8.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
ax2.set_title('Výsledný vnútorný účinok '+r'$M_1$'+'\n').set_fontsize(16)
ax4.set_title('Výsledný vnútorný účinok '+r'$M_2$'+'\n').set_fontsize(16)
ax6.set_title('Výsledný vnútorný účinok '+r'$M_3$'+'\n').set_fontsize(16)
ax8.set_title('Výsledný vnútorný účinok '+r'$M_4$'+'\n').set_fontsize(16)
Extrémne napätie vyjadríme iba z momentových vnútorných účinkov $M(x)$. Z uvedených grafov je zrejmé, že globálnu extrémnu hodnotu nadobúda moment $M_3(x_{3})$ v bode $x_{3max}$, ktorý nájdeme riešením rovnice $$\frac{d}{dx}M_3(x) = T_3(x) = 0$$
vysl2 = sp.solve(T3_,x3)
x3_max = float(vysl2[0])
x3_max
Hodnota vntorného momentu $M_3$ v tomto bode má hodnotu $(Nmm)$:
M3_max = abs(float(M3_.subs(x3,x3_max)))
M3_max
Príslušné ohybové napätie pre zaťaženie momentom $M_{3max}$ sa spočíta podľa vzťahu $$\sigma_o = \frac{M_3(x_{3max})}{W_o}$$
$$W_o = \frac{1}{6}BH^{2}$$
Wo = B_*H_**2/6
sigma_max = M3_max/Wo
o = 'Maximálny ohybový moment je ' +repr(round(M3_max,3))+ ' Nmm a maximálne ohybové napätie je ' +repr(round(sigma_max,3))+ ' MPa.'
print(o)
Pokiaľ je daná $\sigma_K =\,350\, MPa$ bezpečnosť vzhľadom k medznému stavu pružnosti je:
sigma_K = 350.
kk=sigma_K/sigma_max
kk