1.7.H
a) Lagerreaktionen und Gelenkkräfte
Die Freikörperbilder sind gegeben. Zeigen Sie, dass folgende Lagerreaktionen und Gelenkkräfte die sechs Gleichgewichtsbedingungen erfüllen:
Gehen Sie dazu wie folgt vor:
Notieren Sie die Gleichgewichtsbedingungen (sechs Gleichungen).
Setzen Sie die sechs angegebenen Größen \(A_h, A_v, \ldots\) in diese Gleichungen ein.
Zeigen Sie, dass Sie sechs wahre Aussagen erhalten.
b) Schnittgrößen berechnen
Berechnen Sie die Querkraft- und Biegemoment-Funktionen:
\(Q_1(x_1), M_1(x_1)\) zwischen A und G
\(Q_2(x_2), M_2(x_2)\) zwischen G und B
\(Q_3(x_3), M_3(x_3)\) zwischen B und dem rechten Ende des Balkens.
Und zwar abhängig von den gegebenen Symbolen \(a\) und \(q\) und für den Fall, dass \(F = aq.\)
Zeigen Sie, dass:
c) Schnittgrößen zeichnen
Gehen Sie weiterhin davon aus, dass \(F = aq\). Zeichnen Sie die dimensionslosen Schnittgrößen:
\(\tfrac{Q_1}{qa}\) und \(\tfrac{M_1}{qa^2}\)
\(\tfrac{Q_2}{qa}\) und \(\tfrac{M_2}{qa^2}\)
\(\tfrac{Q_3}{qa}\) und \(\tfrac{M_3}{qa^2}\)
Lösung
Source Code eines Programms dazu: Programm ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf SymPy
from sympy.physics.units import kg, m, s
from sympy import pi, S, pprint, symbols, cos, sin, Matrix, Eq, solve, sqrt, lambdify
import matplotlib.pyplot as plt
plt.rcParams['axes.formatter.use_locale'] = True
from numpy import linspace, full_like, array
# Units:
N = kg*m/s**2
k, M, G = 10**3, 10**6, 10**9
kN = k*N
Pa = N/m**2
MPa, GPa = M*Pa, G*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
x = x.evalf()
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Printing:
def print_dict(sol, unit=1, unit_str=None, prec="nil", sub_list=[]):
tmp = {str(k): v for k, v in sol.items()}
tmp = sorted(tmp.items())
for k, v in tmp:
if unit_str:
print("\n"+str(k) + " / " + unit_str + ":")
else:
print("\n"+str(k) + ":")
v = v.subs(sub_list)
v /= unit
try:
v = v.applyfunc(simplify)
except:
v = v.simplify()
if prec != "nil":
v = iso_round(v, prec)
pprint(v)
def fill_array(f,x,xia):
if f.is_constant(x):
res = full_like(xia,f)
else:
res = lambdify(x,f,"numpy")
res = array(res(xia))
return res
# ---
a, q, F = symbols("a, q, F")
sub_list = [
( a, 1 *m ),
( q, 1 *N/m ),
( F, 1 *N ),
]
Ah, Av, MA, Bv, Gh, Gv \
= symbols("Ah, Av, MA, Bv, Gh, Gv")
R = 2*a*q
# equilibrium conditions:
eq1 = Eq(0, Ah + Gh)
eq2 = Eq(0, Av + Gv)
eq3 = Eq(0, -MA + a*Gv )
eq4 = Eq(0, Gh )
eq5 = Eq(0, Gv + R + F - Bv )
eq6 = Eq(0, a*(R-Bv) + 2*a*F )
unks = [Ah, Av, MA, Bv, Gh, Gv]
eqs = [eq1, eq2, eq3, eq4, eq5, eq6]
sol = solve(eqs, unks)
pprint("\nSupport Reactions:")
print_dict(sol, unit=1, unit_str=None, prec="nil", sub_list=[])
[Ah, Av, MA, Bv, Gh, Gv] = [sol[X] for X in [Ah, Av, MA, Bv, Gh, Gv]]
x = symbols('x')
R2 = (2*a - x)*q
R3 = (a - x)*q
pprint("\nSection Forces:")
Q1 = Av
M1 = MA + Av*x
Q2 = F + R2 - Bv
M2 = (a-x)*Bv - (2*a-x)*R2/2 - (2*a-x)*F
Q3 = F + R3
M3 = -(a-x)*R3/2 - (a-x)*F
# Make unitless:
xi = symbols("xi")
[Q1,Q2,Q3,M1,M2,M3] = [X.expand().subs(F,q*a) for X in [Q1,Q2,Q3,M1,M2,M3]]
[Q1,Q2,Q3,M1,M2,M3] = [X.expand().subs(x,xi*a) for X in [Q1,Q2,Q3,M1,M2,M3]]
[Q1,Q2,Q3] = [X / (q*a) for X in [Q1,Q2,Q3]]
[M1,M2,M3] = [X / (q*a*a) for X in [M1,M2,M3]]
for x in [Q1,Q2,Q3,M1,M2,M3]:
x = x.simplify()
pprint(x)
xia = linspace(float(0),float(1))
[Q1,Q2,Q3,M1,M2,M3] = [fill_array(X,xi,xia) for X in [Q1,Q2,Q3,M1,M2,M3]]
# prepare plotting:
# figure with three subplots:
f, (ax1, ax2, ax3) = plt.subplots(1, 3, sharey=True)
tmp = [ax.axhline(ls="-", lw=1, color="black") for ax in [ax1,ax2,ax3]]
# axes-decoration:
tmp = ax1.set_xlabel("$x_1 / a$")
tmp = ax2.set_xlabel("$x_2 / a$")
tmp = ax3.set_xlabel("$x_3 / a$")
tmp = [ax.grid() for ax in [ax1, ax2, ax3]]
tmp = [ax.set_xlim(0,1) for ax in [ax1, ax2, ax3]]
# xticks:
tmp = [ax.set_xticks([float(0.25),float(0.5),float(0.75)]) for ax in [ax1,ax2,ax3]]
# plot functions:
tmp = ax1.plot(xia, Q1, "b-" )
tmp = ax1.plot(xia, M1, "r--")
tmp = ax2.plot(xia, Q2, "b-" )
tmp = ax2.plot(xia, M2, "r--")
tmp = ax3.plot(xia, Q3, "b-", label="$Q \, / \, (qa)$")
tmp = ax3.plot(xia, M3, "r--", label="$M \, / \, (qa^2)$")
tmp = ax3.legend(loc="best")
f.subplots_adjust(wspace=0)
plt.show()
[ ]: einfügen.▶ drücken.