Gelöste Aufgaben/UEBI: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 351: | Zeile 351: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Clean" line start=1> | ||
0.92 ; 0.4517025229634247 | 0.92 ; 0.4517025229634247 | ||
0.93 ; 0.4591915289818366 | 0.93 ; 0.4591915289818366 |
Version vom 17. April 2021, 05:47 Uhr
Aufgabenstellung
Der Euler-Bernoulli-Balken AB wird durch seine Gewichtskraft belastet. Er ist in A fest eingespannt und hat eine konstante Breite b sowie eine zwischen A und B linear veränderliche Höhe h.
In UEBF haben wir eine Näherungslösung für dieses Problem berechnet.
Gesucht ist die analytische Lösung des Problems.
Gegeben sind für den Balken:
- Länge ℓ, Breite b,
- E-Modul E, Dichte ρ und
- die Höhe h0=b und h1 jeweils in A und B; dazwischen ist die Höhe linear veränderlich.
Lösung mit Maxima
Um zur analytischen Lösung zukommen, müssen wir berücksichtigen, dass
- .
Wir müssen also hier die Abhängigkeit der Querschnittseigenschaften von "x" in der Differentialbeziehung berücksichtigen. Das macht die Sache deutlich komplizierter als vorher.
Header
Wir haben die Differential-Beziehungen
für die Querkraft Q, das Moment M, die Verkippung der Querschnitte ϕ und die Auslenkung w. Dabei ist die ortsabhängige Streckenlast
Die Höhe des Balkens ist linear veränderlich, nämlich
- .
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 18.10.1 */
/* author: Andreas Baumgart */
/* last updated: 2019-09-30 */
/* ref: TM-C, Balken mit linear-veränderlicher Höhe */
/* description: finds the analytic solution for */
/* problem */
/*******************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare( "ℓ", alphabetic);
declare( "ϕ", alphabetic);
Declarations
Diese Abkürzungen führen wir ein:
- ,
- .
Für die Ergebnisse setzten wir dann exemplarisch
an - sonst werden die Ausdrücke zu umfangreich.
/* make equations of motion dim'less with load case #6 */
reference : [Phi[ref] = W[ref]/ℓ, W[ref] = q[ref]*ℓ^4/(8*E I[ref]),
M[ref] = m*g*ℓ, Q[ref] = m*g,
q[ref] = m*g/ℓ, EI[ref]=E*b*((H[0]+H[1])/2)^3/12];
/* system parameters */
params: [q[0] = A(xi)*rho*g,
A(xi) = b*h(xi),
I(xi) = b*h(xi)^3/12,
h(xi) = H[0]*(1-xi)+ H[1]*xi];
params: append(params,
solve((H[0]+H[1])/2*b*ℓ*rho=m, rho));
geometry : [alpha=1/2];
dimless: [x = xi*ℓ, H[0]=b, H[1]=alpha*b];
sections: [%c4=C[0], %c3=C[1], %c2=C[2], %c1=C[3]];
Dimensionless Form of Differential Equations
Beim Aufintegrieren der Differentialgleichungen stören die vielen dimensionsbehafteten Parameter. Viel einfacher werden die Gleichungen, wenn wir sie in dimensionsloser Form - mit dimensionsloser Auslenkung, Kippwinkel, Biegemoment und Querkraft anschreiben, also
- .
Wir wählen dazu als Referenzlösung den Kragbalken mit konstantem Querschnitt unter konstanter Streckenlast, mit der maximalen Auslenkung
- .
Als Referenz-Werte für die Streckenlast wählen wir hier die Werte unseres Balkens in x=ℓ/2, demnach
- .
Die Differentialgleichungen werden dadurch und mit der dimensionslosen Ortskoordinate
viel einfacher, nämlich
- .
Damit es übersichtlicher wird, lassen wir die Tilden über den gesuchten dimensionslosen Funktionen gleich wieder weg.
/******************************************************/
/* Boundary Value Problem Formulation */
/* field */
dgl : [ Q[ref]*diff(Q(xi),xi)/ℓ = - q(xi),
M[ref]*diff(M(xi),xi)/ℓ = + Q[ref]*Q(xi),
E*I(xi)*diff(Phi[ref]*ϕ(xi),xi)/ℓ = - M[ref]*M(xi),
diff(W[ref]*w(xi),xi)/ℓ = + Phi[ref]*ϕ(xi)];
dgl: subst(reference,dgl);
Integration Of Differential Equation
Die Differentialbeziehungen lösen wir nun sukzessive zu
- ,
- .
Bis hier ist alles wie gehabt - aber jetzt steht das ortsveränderliche Flächenmoment I(ξ) im Nenner. Maxima liefert
und im nächsten Schritt schließlich
- .
Darin enthalten sind die unbekannten - also gesuchten - Integrationskonstanten
- .
/******************************************************/
/* integrate differential equations */
displ : ratsimp(integrate(subst(dimless,ratsimp(subst(params,solve(dgl[1],Q(xi))))),xi));
displ : append(displ, ratsimp(integrate(subst(displ,solve(dgl[2],M(xi))),xi)));
displ : append(displ, ratsimp(
integrate(
ratsimp(subst(dimless,subst(geometry,subst(displ, subst(params,solve(dgl[3],'diff(ϕ(xi),xi))))))),xi
)));
displ : append(displ, ratsimp(
integrate(
subst(displ,
solve(dgl[4],w(xi))
),
xi)));
displ : ratsimp(subst(sections, subst(geometry,displ)));
Boundary Conditions
Diese Unbekannten bestimmen wir aus den Randbedingungen, nämlich
und damit
- .
/******************************************************/
/* part II: boundary conditions */
node[A]: [ w(0) = 0,
ϕ(0) = 0];
node[B]: [ Q(1) = 0,
M(1) = 0];
BCs : [subst(node[B],subst([xi=1],displ[1])),
subst(node[B],subst([xi=1],displ[2])),
subst(node[A],subst([xi=0],displ[3])),
subst(node[A],subst([xi=0],displ[4]))];
scale: [3, 9, 8, 4];
BCs : expand(ratsimp(scale*BCs));
Solving
Zum Lösen bringen wir die Gleichungen in die Form
- ,
die wir lösen zu
- .
/* integration constants = unknowns */
X : [C[0],C[1],C[2],C[3]];
ACM: augcoefmatrix(BCs,X);
/* system matrix and rhs */
AA : submatrix(ACM,5);
bb : - col(ACM,5);
/* print OLE */
print(subst(params,AA),"*",transpose(X),"=",subst(params,bb))$
/******************************************************/
/* solving */
D : ratsimp(determinant(AA))$
[ P, L, U] : ratsimp(get_lu_factors(lu_factor(AA)))$
cc : ratsimp(linsolve_by_lu(AA,bb)[1])$
sol : makelist(X[i] = cc[i][1],i,1,4)$
Post-Processing
Die Ergebnisse schauen wir uns in dimensionsloser Form an, wobei wir die Standard-Lösungen für den Balken unter konstanter Streckenlast ansetzen.
Für
finden wir
- ... für w(ξ):
- ... für ϕ(ξ):
- ... für M(ξ):
- ... für Q(ξ):
/******************************************************/
/* post-processing */
/* bearing forces and moments */
reactForces: [M[A] = M[ref]*M(0),
Q[z] = Q[ref]*Q(0)];
reactForces: ratsimp(subst(sol, subst(subst([xi=0],displ),subst(reference,reactForces))));
/* plot displacements */
fcts: [ w (xi),
ϕ (xi),
M (xi),
Q (xi)];
textlabels : ["← w(x)/w[rez]", "← w'(x)/ϕ[ref]", "M(x)/(m*g*ℓ) →", "Q(x)/(m g) →"];
for i: 1 thru 4 do(
f : ratsimp(subst(geometry,subst(sol, subst(geometry,subst(dimless,subst(displ,subst(params,fcts[i]))))))),
preamble: if i<=2 then "set yrange [] reverse" else "set yrange []",
plot2d(f, [xi,0,1], [legend, false],
[gnuplot_preamble, preamble],
[xlabel, "x/ℓ →"],
[ylabel, textlabels[i]]) )$
/******************************************************/
/* print tabular values */
for i: 1 thru 4 do(
f : ratsimp(subst(geometry,subst(sol, subst(geometry,subst(dimless,subst(displ,subst(params,fcts[i])))))*facts[i])),
N :100,
print("table for",textlabels[i]),
for j: 0 thru N do (
t : j/N,
print(float(t),";",expand(float(subst([xi=t],f))))
))$
Plot Data
0.92 ; 0.4517025229634247
0.93 ; 0.4591915289818366
0.94 ; 0.4666842273215563
0.95 ; 0.4741797096282359
0.96 ; 0.4816771779554077
0.97 ; 0.4891759543576916
0.98 ; 0.4966754912143446
0.99 ; 0.5041753823419752
1.0 ; 0.5116753749604923
Links
Literature
- ...