from sympy.physics.units import *
from sympy import *
from sympy import N as Num
import matplotlib.pyplot as plt
from numpy import linspace, full_like, array, arange
from mpmath import degrees
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
two = S(2)
f12 = S(1)/2
f32 = S(3)/2
C1, C2, C3, C4, C5, C6, C7, C8 = var('C1, C2, C3, C4, C5, C6, C7, C8')
unknowns = [C1, C2, C3, C4, C5, C6, C7, C8]
a, q, EI = var('a, q, EI')
facM = q*a*a
facw = q*a*a*a*a/EI
facwp = q*a*a*a/EI
print("\n--- a: --------------------------------")
x = var("x")
w1pppp = 1/EI * q
w1ppp = integrate(w1pppp,x) + C1
w1pp = integrate(w1ppp,x) + C2
w1p = integrate(w1pp,x) + C3
w1 = integrate(w1p,x) + C4
w2pppp = 1/EI * 0
w2ppp = integrate(w2pppp,x) + C5
w2pp = integrate(w2ppp,x) + C6
w2p = integrate(w2pp,x) + C7
w2 = integrate(w2p,x) + C8
w1 = expand(w1)
w1 = collect(w1, EI)
pprint(latex(w1))
w2 = expand(w2)
w2 = collect(w2, EI)
pprint(latex(w2))
print("\n--- b: --------------------------------")
bc1 = Eq(w1.subs(x,0), 0)
bc2 = Eq(EI * w1pp.subs(x,0), 0)
bc3 = Eq(w1.subs(x,a), w2.subs(x,0))
bc4 = Eq(w1p.subs(x,a), w2p.subs(x,0))
bc5 = Eq(EI * w1pp.subs(x,a), EI * w2pp.subs(x,0))
bc6 = Eq(EI * w1ppp.subs(x,a), EI * w2ppp.subs(x,0))
bc7 = Eq(w2.subs(x,a), 0)
bc8 = Eq(w2p.subs(x,a), 0)
eqns = [bc1, bc2, bc3, bc4, bc5, bc6, bc7, bc8]
sol = solve(eqns, unknowns)
sC1 = sol[C1]
sC2 = sol[C2]
sC3 = sol[C3]
sC4 = sol[C4]
sC5 = sol[C5]
sC6 = sol[C6]
sC7 = sol[C7]
sC8 = sol[C8]
for s in [sC1, sC2, sC3, sC4, sC5, sC6, sC7, sC8]:
pprint(latex(s))
print("\n--- c: --------------------------------")
w1 = w1.subs({C1: sC1, C2: sC2, C3: sC3, C4: sC4})
w2 = w2.subs({C5: sC5, C6: sC6, C7: sC7, C8: sC8})
for w in [w1, w2]:
w = expand(w)
w = collect(w, q/EI)
pprint(latex(w))
print("\n--- d: --------------------------------")
w1n = w1/facw
w2n = w2/facw
pprint("\nDimensionslose Absenkungen:")
pprint("\nw / qaaa/EI")
pprint("\nw1:")
pprint(expand(w1n))
pprint("\nw2:")
pprint(expand(w2n))
w1p = diff(w1,x)
w2p = diff(w2,x)
w1pn = w1p/facwp
w2pn = w2p/facwp
print("\n--- e: --------------------------------")
if plot:
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
f.subplots_adjust(wspace=0)
tmp = [ax.axhline(ls="-", lw=1, color="black") for ax in [ax1,ax2]]
tmp = ax1.set_title("Bereich 1")
tmp = ax2.set_title("Bereich 2")
tmp = ax1.set_xlabel("$x_1 / a$")
tmp = ax2.set_xlabel("$x_2 / a$")
tmp = [ax.set_xticks([float(0.25),float(0.5),float(0.75)]) for ax in [ax1,ax2]]
xi = var("xi")
[f1,f2] = [X.expand().subs(x/a,xi) for X in [w1n,w2n]]
[g1,g2] = [X.expand().subs(x/a,xi) for X in [w1pn,w2pn]]
xia = linspace(float(0),float(1))
[f1,f2] = [fill_array(X,xi,xia) for X in [f1,f2]]
[g1,g2] = [fill_array(X,xi,xia) for X in [g1,g2]]
tmp = ax1.plot(xia, f1, "b-")
tmp = ax2.plot(xia, f2, "b-", label="$w \\, / \\, \\frac{qa^4}{EI}$")
tmp = ax1.plot(xia, g1, "r--")
tmp = ax2.plot(xia, g2, "r--", label="$w' \\, / \\, \\frac{qa^3}{EI}$")
tmp = [ax.grid() for ax in [ax1, ax2]]
tmp = ax2.legend(loc="best")
f.subplots_adjust(wspace=0)
plt.gca().invert_yaxis()
f.savefig('2.4.2.D_w.svg', transparent=True)
plt.show()
print("\n--- f: --------------------------------")
w = w1.subs(x,a)
pprint(latex(w))
E = 210 *giga*pascal
I = 4000 *cm**4
qq = 10**4 *newton/m
aa = 4 *m
w=w.subs({EI: E*I, q:qq, a:aa})
pprint(Num(w/cm,3))
print("\n--- g: --------------------------------")
w1pp=diff(w1p,x)
w1ppp=diff(w1pp,x)
Q = - EI*w1ppp.subs(x,0)
pprint("Q bei A:")
pprint(Q)
pprint(latex(Q))
w2pp=diff(w2p,x)
w2ppp=diff(w2pp,x)
Q = - EI*w2ppp.subs(x,a)
pprint("Q bei B:")
pprint(Q)
pprint(latex(Q))