Gelöste Aufgaben/Kw99: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 239: | Zeile 239: | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Post-Processing | {{MyCodeBlock|title=Post-Processing | ||
|text= | |text= | ||
Zeile 248: | Zeile 245: | ||
==== ... für w(x): ==== | ==== ... für w(x): ==== | ||
[[Datei: | [[Datei:Kw99-21.png|mini|Biegelinie ''w(x)''|alternativtext=|ohne]] | ||
==== ... für ''Φ(x)'': ==== | ==== ... für ''Φ(x)'': ==== | ||
[[Datei: | [[Datei:Kw99-22.png|mini|Kippung ''w'(x)''|alternativtext=|ohne]] | ||
==== ... für M(x): ==== | ==== ... für M(x): ==== | ||
[[Datei: | [[Datei:Kw99-23.png|mini|Biegemoment M(x)|alternativtext=|ohne]] | ||
==== ... für Q(x): ==== | ==== ... für Q(x): ==== | ||
[[Datei: | [[Datei:Kw99-24.png|mini|Querkraft ''Q(x)''|alternativtext=|ohne]] | ||
====... für die Lager-Reaktionskräfte:==== | ====... für die Lager-Reaktionskräfte:==== | ||
::<math>\begin{array}{ | ::<math>\begin{array}{ll} {{A}_{z}}&=\frac{257\cdot {{\ell}_{1}}\cdot {{q}_{A}}}{1365},\\{{M}_{A}}&=\frac{1331\cdot {{\ell}_{1}^{2}}\cdot {{q}_{A}}}{1170},\\{{B}_{z}}&=0,\\{{C}_{z}}&=\frac{6311\cdot {{\ell}_{1}}\cdot {{q}_{A}}}{2730},\\{{M}_{C}}&=\frac{31037\cdot {{\ell}_{1}^{2}}\cdot {{q}_{A}}}{16380} \end{array}</math> | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/* bearing forces and moments */ | /* bearing forces and moments */ | ||
reactForces: [A[z]=Q[1](0), | reactForces: [A[z] = Q[1](0), | ||
M[A] = K[A]*Phi[1](0), | M[A] = K[A]*Phi[1](0), | ||
B[z] = k[B]*w[2](0), | B[z] = k[B]*w[2](0), | ||
C[z] = k[C]*w[2]( | C[z] = k[C]*w[2](1), | ||
M[C] = M[2]( | M[C] = M[2](1)]; | ||
expand(subst(params,subst(sol, reactForces))); | expand(subst(dimless,subst(params,subst(sol, reactForces)))); | ||
/* plot displacements */ | /* plot displacements */ | ||
fcts: [[ w [1]( | fcts: [[ w [1](xi), w [2](xi)], | ||
[Phi[1]( | [Phi[1](xi),Phi[2](xi)], | ||
[ M [1]( | [ M [1](xi), M [2](xi)], | ||
[ Q [1]( | [ Q [1](xi), Q [2](xi)]]; | ||
facts: | facts: [1/l[Bez], l[1]/l[Bez], 1/(q[A]*l[1]^2), 1/(q[A]*l[1])]; | ||
textlabels : ["w(x)/(M[B]*l^2/EI[1])→", "w'(x)/(M[B]*l/EI[1])→", "M(x)/M[B]→", "Q(x)/(M[B]/l[1]→"]; | textlabels : ["w(x)/(M[B]*l^2/EI[1])→", "w'(x)/(M[B]*l/EI[1])→", "M(x)/M[B]→", "Q(x)/(M[B]/l[1]→"]; | ||
for i: 1 thru 4 do( | for i: 1 thru 4 do( | ||
f : expand(subst( | f : expand(subst(dimless,subst(params,facts[i]*[subst(sol, fcts[i][1]), | ||
subst(sol, fcts[i][2])]))), | |||
r : subst(params,l[2]/l[1]), | |||
preamble: if i<=2 then "set yrange [] reverse" else "set yrange []", | |||
plot2d([[parametric, t, subst(t,xi,f[1]), [t,0,1]], | |||
plot2d( | [parametric, 1+r*t, subst(t,xi,f[2]), [t,0,1]]], | ||
[gnuplot_preamble, | [legend, "sec. I", "sec. II"], | ||
[gnuplot_preamble, preamble], | |||
[xlabel, "x/l[1] ->"], | [xlabel, "x/l[1] ->"], | ||
[ylabel, textlabels[i]]))$ | [ylabel, textlabels[i]]))$ |
Version vom 31. März 2021, 12:20 Uhr
Aufgabenstellung
Ein Stab ABC ist durch eine lineare veränderliche Streckenlast q mit den Eckwerten qA in A und qB in B sowie dem Moment MB in B belastet. Der Stab (E-Modul: E) besteht aus zwei Sektionen mit den Längen l1 bzw. l2 sowie den Flächenmomenten I1 bzw. I2. Der Stab ist in A durch ein gelenkiges Festlager, in C durch eine Schiebehülse gelagert, in B sind die beiden Sektionen fest miteinander verbunden. Die Feder in A ist eine Drehfester mit Steifigkeit KA, die Federn in B und C sind Translationsfedern mit den Steifigkeiten kB, kC.

Gesucht ist die analytische Lösung für den Euler-Bernoulli-Balken.

Ermitteln Sie für ein Euler-Bernoulli-Modell die analytischen Verläufe der Schnittgrößen und Verschiebungen im Balken für diese Parameter:
Lösung mit Maxima
Die Aufgabe ist ein klassisches Randwertproblem:
- zwei Gebiete, in denen ein Euler-Bernoulli-Balken in AB und BC durch eine Streckenlast q belastet ist (in Bereich II ist die Streckenlast allerdings Null) und somit durch die Differentialbeziehungberschrieben wird.
- Rand- und Übergangsbedingungen in den Punkten A, B, C
Wir verwenden xi und ξi als Koordinaten je Bereich, in der Übersicht sieht das Randwertproblem so aus:
Rand A | Bereich I | Übergang B | Bereich II | Rand C |
---|---|---|---|---|
![]() | ![]() | |||
![]() | ![]() | ![]() |
Header
Diese Aufgabe mit der Methode der Finiten Elemente in KW96 gelöst.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2017-09-06 */
/* ref: TM-C, Labor 1 */
/* description */
/* */
/*******************************************************/
Declarations
Wir definieren die Parameter
- .
und die Formfunktionen für die Streckenlast
- .
/* system parameter */
units : [mm = m/1000, cm = m/100];
params : [q[A]=3*N/mm, l[1]=700*mm, EI[1] = 2.1*10^11*N/m^2 * 3*cm*(4*cm)^3/12];
simple : [l[2] = 3/4*l[1], EI[2] = EI[1]/2,
K[A]=2*EI[1]/l[1], k[C] = 512/229*EI[1]/l[1]^3, k[B] = EI[1]/l[1]^3,
q[B] = 4*q[A], M[B] = q[A]*l[1]^2];
params : append(params,makelist(lhs(simple[i])=subst(params,rhs(simple[i])),i,1,length(simple)));
params : subst(units,params);
/* form - functions */
phi[0](xi) := 1 - xi;
phi[1](xi) := xi;
Formfunctions
In Bereich I und II gilt dieselbe Bewegungs-Differentialgleichung
- ,
die wir durch Integration lösen und dann bereichsweise anpassen.
So gilt für Bereich II: q0 = 0 und q1 = 0.
Die allgemeine Lösung ist mit
... für Bereich I:
... für Bereich II:
- .
/* solve ....*/
dgl : EI[i]*diff(w(x),x,4) = q[0]*phi[0](x/l[i]) + q[1]*phi[1](x/l[i]);
/* generic solution */
displ : solve(integrate(integrate(integrate(integrate(dgl,x),x),x),x),w(x));
sections: [[i=1, %c4=C[1,0], %c3=C[1,1], %c2=C[1,2], %c1=C[1,3], q[0]=q[A], q[1]=q[B]],
[i=2, %c4=C[2,0], %c3=C[2,1], %c2=C[2,2], %c1=C[2,3], q[0]= 0 , q[1]= 0 ]];
/* section I */
define( w[1](x), subst(sections[1],subst(displ,w(x))));
define(Phi[1](x), diff(w[1](x),x ));
define( M[1](x), -EI[1]*diff(w[1](x),x,2));
define( Q[1](x), -EI[1]*diff(w[1](x),x,3));
/* section II */
define( w[2](x), subst(sections[2],subst(displ,w(x))));
define(Phi[2](x), diff(w[2](x),x ));
define( M[2](x), -EI[2]*diff(w[2](x),x,2));
define( Q[2](x), -EI[2]*diff(w[2](x),x,3));
Boundary Conditions
Für die 2*4 = 8 Integrationskonstanten
suchen wir jetzt die passenden Gleichungen aus Rand- und Übergangsbedingungen.
Zur besseren Übersicht nennen wir die Schnitt-Momente und -Kräfte nach den jeweiligen Knotenpunkten A, B, C und fügen als Index ein + / - hinzu, um die Seite (+: rechts vom Knoten, -: links vom Knoten) zu kennzeichnen.
Aus Rand "A"
![]() | Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Aus Übergang "B"
![]() | Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Aus Rand "C"
![]() | Geometrische Randbedingungen
Kraft- und Momenten-Randbedingungen |
Und das liefert das Gleichungssystem aus 8 Gleichungen
für die Integrationskonstanten.
1+1
Prepare for Solver
Das Gleichungssystem wollen wir als
schreiben, also
- Fehler beim Parsen (Unbekannte Funktion „\begin{pmatrix}“): {\displaystyle \begin{pmatrix}\frac{1}{{{\mathit{EI}}_{1}}} & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & \frac{{{K}_{A}}}{{{\mathit{EI}}_{1}}} & -1 & 0 & 0 & 0 & 0 & 0\\ \frac{1}{{{\mathit{EI}}_{1}}} & \frac{{{\ell}_{{MyCodeBlock|title=Prepare for Solver |text= Das Gleichungssystem wollen wir als ::<math>\underline{\underline{A}}\cdot\underline{x}= \underline{b}}
schreiben, also
Die Matrix-Elemente sind für die Koeffizientenmatrix
und für die rechte Seite
- .
/* augmented coeff matrix */
ACM: augcoefmatrix(BCs,ICs);
AA : submatrix(ACM,9);
bb : - col(ACM,9);
for i: 1 thru 8 do
print(simplode(["b[",i,"] = ", string(bb[i][1])]))$
for i: 1 thru 8 do
for j: 1 thru 8 do
if not AA[i][j] = 0 then
print(simplode(["A[",i,",",j,"] = ", string(AA[i][j])]))$
Solving
Das Lösen des Gleichungssystems liefert
- .
1+1
Post-Processing
Und die Ergebnisse können wir uns anschauen ...
... für w(x):

... für Φ(x):

... für M(x):

... für Q(x):

... für die Lager-Reaktionskräfte:
/* bearing forces and moments */
reactForces: [A[z] = Q[1](0),
M[A] = K[A]*Phi[1](0),
B[z] = k[B]*w[2](0),
C[z] = k[C]*w[2](1),
M[C] = M[2](1)];
expand(subst(dimless,subst(params,subst(sol, reactForces))));
/* plot displacements */
fcts: [[ w [1](xi), w [2](xi)],
[Phi[1](xi),Phi[2](xi)],
[ M [1](xi), M [2](xi)],
[ Q [1](xi), Q [2](xi)]];
facts: [1/l[Bez], l[1]/l[Bez], 1/(q[A]*l[1]^2), 1/(q[A]*l[1])];
textlabels : ["w(x)/(M[B]*l^2/EI[1])→", "w'(x)/(M[B]*l/EI[1])→", "M(x)/M[B]→", "Q(x)/(M[B]/l[1]→"];
for i: 1 thru 4 do(
f : expand(subst(dimless,subst(params,facts[i]*[subst(sol, fcts[i][1]),
subst(sol, fcts[i][2])]))),
r : subst(params,l[2]/l[1]),
preamble: if i<=2 then "set yrange [] reverse" else "set yrange []",
plot2d([[parametric, t, subst(t,xi,f[1]), [t,0,1]],
[parametric, 1+r*t, subst(t,xi,f[2]), [t,0,1]]],
[legend, "sec. I", "sec. II"],
[gnuplot_preamble, preamble],
[xlabel, "x/l[1] ->"],
[ylabel, textlabels[i]]))$
Links
- ...
Literature
- ...