Gelöste Aufgaben/UEBC: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
Der Euler-Bernoulli-Balken ''AB'' wird durch eine vertikale Einzelkraft ''F'' belastet. Er ist in ''A'' fest eingespannt, in ''B'' gelenkig gelagert. | Der Euler-Bernoulli-Balken ''AB'' wird durch eine vertikale Einzelkraft ''F'' belastet. Er ist in ''A'' fest eingespannt, in ''B'' gelenkig gelagert. | ||
[[Gelöste Aufgaben/UEBD|UEBD]] ist eine Variante dieser Aufgabe. | |||
<onlyinclude> | <onlyinclude> | ||
[[Datei:UEBC-01.png|250px|left|mini|Lageplan]] | [[Datei:UEBC-01.png|250px|left|mini|Lageplan]] | ||
Gesucht ist | Gesucht ist eine Lösung für die Biegelinie ''w(x)'' mit dem [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Verfahren von Rayleigh-Ritz (EBB)|Ansatz von Rayleigh-Ritz]] und einer Trial-Funktion. | ||
</onlyinclude> | </onlyinclude> | ||
== Lösung mit Maxima == | == Lösung mit Maxima == | ||
== | Beim Verfahren von Ritz arbeiten wir mit | ||
* dem [[Werkzeuge/Gleichgewichtsbedingungen/Arbeitsprinzipe der Analytischen Mechanik/Prinzip vom Minimum der Potentiellen Energie|Prinzip vom Minimum der Potentiellen Energie]] und | |||
* [[Sources/Lexikon/Ansatzfunktion|Ansatzfunktionen]] über die gesamte Länge des Balkens. | |||
Um die Lösung dimensionslos zu machen, nutzen wir die analytische Lösung des beidseits gelenkig gelagerten Balkens unter einer mittigen Einzellast (vgl. [[Gelöste Aufgaben/W8Zu|W8Zu]]). Hier ist die maximale Auslenkung | |||
<math>\displaystyle w^*(\frac{\ell}{2}) = \frac{F\;\ell^3}{48\; EI} =: \hat{w}</math>. | |||
Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken. | |||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Header | {{MyCodeBlock|title=Header | ||
|text= | |text=Wir lösen die Aufgabe mit Computer-Algebra - mit Maxima. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/*******************************************************/ | |||
/* MAXIMA script */ | |||
/* version: wxMaxima 15.08.2 */ | |||
/* author: Andreas Baumgart */ | |||
/* last updated: 2017-09-14 */ | |||
/* ref: TM-C, Labor 3 - aus Gross, Augf. TM 2,Biegestab*/ | |||
/* description: finds the approx. solution employing */ | |||
/* one polynomial trial-function */ | |||
/*******************************************************/ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Declarations | {{MyCodeBlock|title=Declarations | ||
|text= | |text= | ||
Zum Dimensionslos-Machen der Gleichungen wählen wir | |||
::<math>\begin{array}{ll}W &=\displaystyle \frac{F \ell^3}{48 EI}\cdot q,\\ x&=\xi\cdot \ell,\\ a&=\alpha\cdot \ell.\end{array}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* declare variables */ | ||
declare("Π", alphabetic); /* strain energy */ | |||
/* make equations of motion dim'less with load case #1 from Gross e.a. */ | |||
dimless: [W = F*l^3/(48*EI)*q, | |||
x=xi*l, | |||
a=alpha*l]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Formfunctions | {{MyCodeBlock|title=Formfunctions | ||
|text= | |text= | ||
Gesucht ist hier ein Ansatz mit einer einzigen Trial Function, also | |||
::<math>w(x) = W\cdot\phi(x)</math> | |||
und dem gesuchten Koeffizienten ''W''. ϕ muss dabei alle geometrischen Randbedingungen erfüllen: | |||
::<math>\begin{array}{ll}w(0) &= 0,\\w'(0) &= 0,\\w(l) &= 0.\end{array}</math> | |||
Die Funktionen müssen nicht die Randbedingungen für das Moment an den Rändern ''A'' und ''B'' erfüllen! | |||
Diese Funktion zu konstruieren ist nicht ganz trivial. Wir multiplizieren dafür einzelne Terme der Form ''(x-x<sub>0</sub>)'', die die gewünschte Nullstelle für ''x=x<sub>0</sub>'' erzeugen. An der Stelle ''x=0'' benötigen wir eine doppelte Nullstelle, damit auch die Ableitung an dieser Stelle Null ist, also | |||
::<math>w(\xi) = C \cdot \left( \xi-0 \right)^2 \cdot \left(\xi-1\right) \text {mit }\xi = \displaystyle\frac{x}{\ell}</math>. | |||
Den freien Koeffizienten ''C'' wählen wir so, dass wir ihn anschaulich "denken" können - wir wählen die gesuchte Auslenkung an der Kraft-Einleitungsstelle ''x=a'' aus [[Gelöste Aufgaben/W8Zu|W8Zu]], also | |||
::<math>\displaystyle w(a) = q\cdot \hat{w} \;\;\text{ mit der Referenz-Lösung }\;\; \hat{w} = \frac{F\;\ell^3}{48\; EI} </math>. | |||
Mit der neuen, dimensionslosen Koordinate ''q'' ist | |||
::<math>\displaystyle C = \frac{q\cdot \hat{w}}{\alpha^3-\alpha}</math>, | |||
und damit | |||
::<math>\displaystyle w(x) = \underbrace{\frac{F \ell^3}{48 EI }\cdot q}_{\displaystyle =W} \cdot \underbrace{\frac{{{\xi}^{3}}-{{\xi}^{2}}}{{{\alpha}^{3}}-{{\alpha}^{2}}}}_{\displaystyle =\phi(\xi)}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* derive trial-function(s) */ | ||
trial: w(x) = sum(c[i]*x^i,i,0,3); | |||
GBC: [subst([x=0],subst(trial,w(x)))=0, | |||
subst([x=0],diff(subst(trial,w(x)),x))=0, | |||
subst([x=l],subst(trial,w(x)))=0, | |||
subst([x=a],subst(trial,w(x)))=W]; | |||
C: makelist(c[i],i,0,3); | |||
sol[1] : solve(GBC,C)[1]; | |||
trial: ratsimp(subst(sol[1],trial)); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Potential Energy | {{MyCodeBlock|title=Potential Energy | ||
|text= | |text= | ||
Für die Gleichgewichtsbedingungen setzten wir ''Π'' und ''A'' in ''U'' ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir | |||
::<math>\displaystyle \frac{d\phi}{x} = \frac{d\phi}{\xi}\cdot\underbrace{\displaystyle\frac{d\xi}{x}}_{\displaystyle = \frac{1}{\ell}}</math> | |||
berücksichtigen und erhalten | |||
::<math>U = \displaystyle \frac{1}{2} \cdot \displaystyle \underline{Q}^T \cdot \underline{\underline{A}}\cdot \underline{Q} - \underline{Q}^T\cdot \underline{b} </math>. | |||
Weil wir in | |||
::<math>\underline{Q} = \left(q\right)</math> | |||
nur eine Unbekannte ''q'' haben, können wir es uns hier etwas einfacher machen, ''U'' lautet: | |||
::<math>\displaystyle U=\frac{\left( \left( -24\cdot {{\alpha}^{6}}+48\cdot {{\alpha}^{5}}-24\cdot {{\alpha}^{4}}\right) \cdot {{\ell}^{3}}\cdot q+{{\ell}^{3}}\cdot {{q}^{2}}\right) \cdot {{F}^{2}}}{\left( 1152\cdot {{\alpha}^{6}}-2304\cdot {{\alpha}^{5}}+1152\cdot {{\alpha}^{4}}\right) \cdot \mathit{EI}}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* define potential energy of system */ | ||
PMPE : [U = Π - A, | |||
Π = 1/2*EI*'integrate('diff(w(x),x,2)^2,x,0,l), | |||
A = F*w(a)]; | |||
PMPE: subst(w(a) = subst(a,x,subst(trial,w(x))), | |||
subst(trial, | |||
subst(PMPE[3],subst(PMPE[2], PMPE[1])))); | |||
PMPE : ev(PMPE,nouns); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Equilibrium Conditions | {{MyCodeBlock|title=Equilibrium Conditions | ||
|text= | |text= | ||
Diese Gleichung erfüllt die Gleichgewichtsbedingungen | |||
::<math>\displaystyle \frac{dU}{dW} \stackrel{!}{=} 0</math>, | |||
wenn | |||
::<math>\displaystyle \frac{\left( -12\cdot {{\alpha}^{4}}+24\cdot {{\alpha}^{5}}-12\cdot {{\alpha}^{6}}+q\right) \cdot F}{12\cdot {{\alpha}^{6}}-24\cdot {{\alpha}^{5}}+12\cdot {{\alpha}^{4}}}=0</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/* equilibrium condition */ | |||
equcon: 'diff(U,W) = 0; | |||
equcon: subst(PMPE,equcon); | |||
equcon: ev(equcon,nouns); | |||
equcon: subst(dimless,equcon); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Solving | {{MyCodeBlock|title=Solving | ||
|text= | |text= | ||
Diese Gleichgewichtsbedingung erfüllt | |||
::<math>q=12\cdot {{\alpha}^{6}}-24\cdot {{\alpha}^{5}}+12\cdot {{\alpha}^{4}}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/* solve for dim'less coordinate q */ | |||
sol[2] : solve(equcon,q); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Post-Processing | {{MyCodeBlock|title=Post-Processing | ||
|text= | |text= | ||
[[Datei:UEBC-11.png|mini|Auslenkung ''w(x)'']]Wir schauen uns zunächst die Absenkung des Kraftangriffspunktes ''w(a)'' für verschiedene Werte von ''a (α)'' an: | |||
Die maximale Auslenkung des Kraftangriffspunktes ist hier bei ''α''=2/3 erreicht. Das ist nicht identisch mit der größten Absenkung der Querschnitte im Gebiet![[Datei:UEBC-12.png|mini|Parameter-Studie für ''α''|alternativtext=|links]]Dafür schauen wir uns den Verlauf der approximierten Biegelinie an - und zwar für verschiedene Werte von ''α'': | |||
Sie sehen, dass für ''α=6/10'' die Auslenkung dieses Systems nur ein Viertel der maximalen Auslenkung eines beidseitig gelenkig gelagerten Balkens beträgt - jedenfalls in unserer Approximation mit einer Trial-Funktion. | |||
Aufgabe [[Gelöste Aufgaben/UEBD|UEBD]] zeigt, wie wir zu einer besseren Approximation kommen. | |||
{{MyTip|title=Schnittmomenten-Verlauf|text=Probieren Sie aus, wie gut der Ritz-Ansatz den Verlauf des Schnittmoments approximiert!}} | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* displacement at w(a) */ | ||
preamble: "set yrange [] reverse"; | |||
plot2d(subst(sol[2],q),[alpha,0,1], | |||
[legend, "w(a)"], | |||
[xlabel, "α →"], | |||
[ylabel, "W/(F l^3/(3 EI)) →"], | |||
[gnuplot_preamble, preamble], | |||
[style, [lines,3]]); | |||
/* displacement at w(x) for different alphas*/ | |||
toPlot : ratsimp(subst(sol[2],subst(dimless,subst(trial,w(x)/subst([q=1],subst(dimless,W)))))); | |||
toPlot : makelist(subst([alpha=i/10],toPlot), i,2,8,2); | |||
leg : append([legend], makelist(simplode (["α = ",i,"/10"]),i,2,8,2)); | |||
plot2d(toPlot,[xi,0,1], | |||
leg, | |||
[xlabel, "x/l →"], | |||
[ylabel, "w(x)/W →"], | |||
[gnuplot_preamble, preamble], | |||
[style, [lines,3]]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<hr /> | |||
<hr/> | |||
'''Links''' | '''Links''' | ||
* ... | * ... | ||
Zeile 110: | Zeile 217: | ||
'''Literature''' | '''Literature''' | ||
* ... | * ... | ||
Aktuelle Version vom 14. April 2021, 10:34 Uhr
Aufgabenstellung
Der Euler-Bernoulli-Balken AB wird durch eine vertikale Einzelkraft F belastet. Er ist in A fest eingespannt, in B gelenkig gelagert.
UEBD ist eine Variante dieser Aufgabe.
Gesucht ist eine Lösung für die Biegelinie w(x) mit dem Ansatz von Rayleigh-Ritz und einer Trial-Funktion.
Lösung mit Maxima
Beim Verfahren von Ritz arbeiten wir mit
- dem Prinzip vom Minimum der Potentiellen Energie und
- Ansatzfunktionen über die gesamte Länge des Balkens.
Um die Lösung dimensionslos zu machen, nutzen wir die analytische Lösung des beidseits gelenkig gelagerten Balkens unter einer mittigen Einzellast (vgl. W8Zu). Hier ist die maximale Auslenkung
.
Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken.
Header
Wir lösen die Aufgabe mit Computer-Algebra - mit Maxima.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2017-09-14 */
/* ref: TM-C, Labor 3 - aus Gross, Augf. TM 2,Biegestab*/
/* description: finds the approx. solution employing */
/* one polynomial trial-function */
/*******************************************************/
Declarations
Zum Dimensionslos-Machen der Gleichungen wählen wir
- .
/* declare variables */
declare("Π", alphabetic); /* strain energy */
/* make equations of motion dim'less with load case #1 from Gross e.a. */
dimless: [W = F*l^3/(48*EI)*q,
x=xi*l,
a=alpha*l];
Formfunctions
Gesucht ist hier ein Ansatz mit einer einzigen Trial Function, also
und dem gesuchten Koeffizienten W. ϕ muss dabei alle geometrischen Randbedingungen erfüllen:
Die Funktionen müssen nicht die Randbedingungen für das Moment an den Rändern A und B erfüllen!
Diese Funktion zu konstruieren ist nicht ganz trivial. Wir multiplizieren dafür einzelne Terme der Form (x-x0), die die gewünschte Nullstelle für x=x0 erzeugen. An der Stelle x=0 benötigen wir eine doppelte Nullstelle, damit auch die Ableitung an dieser Stelle Null ist, also
- .
Den freien Koeffizienten C wählen wir so, dass wir ihn anschaulich "denken" können - wir wählen die gesuchte Auslenkung an der Kraft-Einleitungsstelle x=a aus W8Zu, also
- .
Mit der neuen, dimensionslosen Koordinate q ist
- ,
und damit
- .
/* derive trial-function(s) */
trial: w(x) = sum(c[i]*x^i,i,0,3);
GBC: [subst([x=0],subst(trial,w(x)))=0,
subst([x=0],diff(subst(trial,w(x)),x))=0,
subst([x=l],subst(trial,w(x)))=0,
subst([x=a],subst(trial,w(x)))=W];
C: makelist(c[i],i,0,3);
sol[1] : solve(GBC,C)[1];
trial: ratsimp(subst(sol[1],trial));
Potential Energy
Für die Gleichgewichtsbedingungen setzten wir Π und A in U ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir
berücksichtigen und erhalten
- .
Weil wir in
nur eine Unbekannte q haben, können wir es uns hier etwas einfacher machen, U lautet:
- .
/* define potential energy of system */
PMPE : [U = Π - A,
Π = 1/2*EI*'integrate('diff(w(x),x,2)^2,x,0,l),
A = F*w(a)];
PMPE: subst(w(a) = subst(a,x,subst(trial,w(x))),
subst(trial,
subst(PMPE[3],subst(PMPE[2], PMPE[1]))));
PMPE : ev(PMPE,nouns);
Equilibrium Conditions
Diese Gleichung erfüllt die Gleichgewichtsbedingungen
- ,
wenn
- .
/* equilibrium condition */
equcon: 'diff(U,W) = 0;
equcon: subst(PMPE,equcon);
equcon: ev(equcon,nouns);
equcon: subst(dimless,equcon);
Solving
Diese Gleichgewichtsbedingung erfüllt
- .
/* solve for dim'less coordinate q */
sol[2] : solve(equcon,q);
Post-Processing
Wir schauen uns zunächst die Absenkung des Kraftangriffspunktes w(a) für verschiedene Werte von a (α) an: Die maximale Auslenkung des Kraftangriffspunktes ist hier bei α=2/3 erreicht. Das ist nicht identisch mit der größten Absenkung der Querschnitte im Gebiet!
Dafür schauen wir uns den Verlauf der approximierten Biegelinie an - und zwar für verschiedene Werte von α:
Sie sehen, dass für α=6/10 die Auslenkung dieses Systems nur ein Viertel der maximalen Auslenkung eines beidseitig gelenkig gelagerten Balkens beträgt - jedenfalls in unserer Approximation mit einer Trial-Funktion.
Aufgabe UEBD zeigt, wie wir zu einer besseren Approximation kommen.
✔ Schnittmomenten-Verlauf: |
Probieren Sie aus, wie gut der Ritz-Ansatz den Verlauf des Schnittmoments approximiert! |
/* displacement at w(a) */
preamble: "set yrange [] reverse";
plot2d(subst(sol[2],q),[alpha,0,1],
[legend, "w(a)"],
[xlabel, "α →"],
[ylabel, "W/(F l^3/(3 EI)) →"],
[gnuplot_preamble, preamble],
[style, [lines,3]]);
/* displacement at w(x) for different alphas*/
toPlot : ratsimp(subst(sol[2],subst(dimless,subst(trial,w(x)/subst([q=1],subst(dimless,W))))));
toPlot : makelist(subst([alpha=i/10],toPlot), i,2,8,2);
leg : append([legend], makelist(simplode (["α = ",i,"/10"]),i,2,8,2));
plot2d(toPlot,[xi,0,1],
leg,
[xlabel, "x/l →"],
[ylabel, "w(x)/W →"],
[gnuplot_preamble, preamble],
[style, [lines,3]]);
Links
- ...
Literature
- ...