Gelöste Aufgaben/Kw56: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 9: | Zeile 9: | ||
==Aufgabenstellung== | ==Aufgabenstellung== | ||
Die Aufgabenstellung ist identisch mit Aufgabe Kw55, hier ist die Lösung mit dem Verfahren von [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Verfahren von Rayleigh-Ritz (EBB)|Rayleigh-Ritz]] gefragt. | |||
<onlyinclude> | <onlyinclude> | ||
[[Datei:Kw55-01.png|alternativtext=|links|mini|250x250px|Lageplan]] | [[Datei:Kw55-01.png|alternativtext=|links|mini|250x250px|Lageplan]] | ||
Gesucht ist | Gesucht ist eine Näherungslösung mit dem [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Verfahren von Rayleigh-Ritz (EBB)|Verfahren von Rayleigh-Ritz]] für ein [[Sources/Lexikon/Euler-Bernoulli-Balken|Euler-Bernoulli-Modell]] der Struktur. | ||
</onlyinclude> | </onlyinclude> | ||
Verwenden Sie zwei freie [[Sources/Lexikon/Trial-Function|Trial-Funtions]]. | |||
== Lösung mit Maxima == | == Lösung mit Maxima == | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title= | {{MyCodeBlock|title=Header | ||
|text= | |text= | ||
Die Herausforderung der Aufgabe liegt wieder in der kinematischen Zwangsbedingung, die der starre Stab ''abc'' dem [[Sources/Lexikon/Euler-Bernoulli-Balken|Euler-Bernoulli-Balken]] auferlegt. Diese Zwangsbedingung lautet | |||
::<math>w_B = \displaystyle \frac{1}{2} w_C</math>, | |||
mit den Abkürzungen | |||
* ''w<sub>B</sub> = w( ℓ),'' | |||
* ''w<sub>C</sub> = w(2ℓ).'' | |||
Die geometrischen Randbedingungen in A erfüllen wir, indem wir Polynome ab dem Grad 2 verwenden. | |||
Für die Lösung nach Rayleigh-Ritz können wir | |||
* zwei freie Trial-Functions wählen, die die Zwangsbedingung selbst schon erfüllen | |||
* mit [https://de.wikipedia.org/wiki/Lagrange-Multiplikator Lagrange-Multiplikator] die Zwangsbedingung einbauen. | |||
Der zweite Weg ist bei Computer-Anwendungen meist viel einfacher - den gehen wir hier. | |||
|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: 2019-09-01 */ | |||
/* ref: TMC */ | |||
/* description: Rayley-Ritz-Solution for EBB */ | |||
/* with kinemtic constraints */ | |||
/*******************************************************/ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title= | {{MyCodeBlock|title=Declarations | ||
|text= | |text= | ||
Wir brauchen | |||
<math>q_0 = \displaystyle \frac{m\,g}{\ell}</math> | |||
und nutzen eine Referenzlösung (wie in Kw55) | |||
<math>\begin{array}{ccc} | |||
\hat{w} &=& \displaystyle \frac{q_0\,(2\ell)^4}{8 EI}\\ | |||
\hat{\phi}&=& \displaystyle \frac{q_0\,(2\ell)^3}{6 EI} | |||
\end{array}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /************************************************************/ | ||
/* declare variational variables - see 6.3 Identifiers */ | |||
declare( "ℓ", alphabetic); | |||
declare( "ϕ", alphabetic); | |||
declare( "λ", alphabetic); | |||
/* system parameters */ | |||
params: [q[0] = m*g/ℓ]; | |||
dimless: [ x = xi*ℓ]; | |||
/* make equations of motion dim'less with load case #1 from Gross e.a., same as UEBI */ | |||
reference : [W[ref] = q[0]*(2*ℓ)^4/(8*EI), ϕ[ref] = q[0]*(2*ℓ)^3/(6*EI), M[ref] = m*g*ℓ, Q[ref] = 2*m*g]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title= | {{MyCodeBlock|title=Formfunctions | ||
|text= | |text= | ||
Um zwei freie Trial-Functions zu bekommen, müssen wir drei ansetzen: ein Freiheitsgrad wird von der kinematischen Zwangsbedingung aufgehoben. | |||
Also wählen wir | |||
::<math>\displaystyle w(\xi) = \hat{w} \cdot \sum_{i=2}^4 W_i \cdot \xi^i</math> | |||
mit | |||
::<math>x = \xi \cdot \ell</math> | |||
und ergänzen dies um die Zwangsbedingung | |||
::<math>2\cdot w(1) = \,w(2)</math>. | |||
Achtung: Der Balken ist "2"-lang. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /************************************************************/ | ||
/* Rayleigh-Ritz */ | |||
/* trial function */ | |||
trial: w(xi) = W[ref]*sum(W[j]*xi^(j),j,2,4); | |||
/* kinemtic constraints */ | |||
nodes : [W[B]=subst([xi=1], subst(trial,w(xi))), W[C]=subst([xi=2], subst(trial,w(xi)))]; | |||
BC: ratsimp(subst(nodes,[2*W[B]=W[C]])/W[ref])[1]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title= | {{MyCodeBlock|title=Equilibrium Conditions | ||
|text= | |text= | ||
Für die Gleichgewichtsbedingungen brauchen wir die potentielle Energie (hier die Lagrange-Funktion) | |||
::<math>\begin{array}{lcl} | |||
\Lambda = & &\displaystyle \frac{1}{2\cdot \ell^3}\displaystyle EI \int_{0}^{2}\left( \displaystyle \frac{d^2}{d\,\xi^2} \cdot w(\xi) \right)^{2} d\xi\\ | |||
&-&\left(2 m\,g+\displaystyle \frac{1}{2} m\,g\right) \cdot w(1)+\left(\displaystyle \frac{1}{2} m\,g\right)\cdot w(2)\\ | |||
&+&\lambda \cdot \displaystyle \frac{m^2\,g^2 \ell^3}{EI}\cdot (2\,w(1)- w(2)) | |||
\end{array}</math> | |||
wobei der konstante Faktor bei dem [https://de.wikipedia.org/wiki/Lagrange-Multiplikator Lagrange-Multiplikator] ''λ'' nur der Ästhetik dient .... | |||
Die gesuchten Größen sind nun | |||
::<math>\underline{Q} = \left( \begin{array}{c} | |||
W_2\\ | |||
W_3\\ | |||
W_4\\ | |||
\lambda | |||
\end{array}\right)</math>, | |||
und die Gleichgewichtsbedingungen kommen aus | |||
::<math>\displaystyle \frac{d\Lambda}{dQ_i} \stackrel{!}{=}0</math> | |||
zu | |||
::<math>\begin{array}{cc} | |||
-2 \lambda +256 {W_4}+96 {W_3}+32 {W_2}-1&=0,\\ | |||
-2 \lambda +384 {W_4}+128 {W_3}+32 {W_2}+1&=0,\\ | |||
70 \lambda -18432 {W_4}-5760 {W_3}-1280 {W_2}-55&=0,\\ | |||
-7 {W_4}-3 {W_3}-{W_2}&=0 | |||
\end{array}</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1+1 | /* Lagrange formulation */ | ||
Lambda : + 1/2*ℓ*'integrate(EI*diff(w(xi),xi,2)^2/ℓ^4,xi,0,2) | |||
- (2*m*g+m*g/2)*subst(nodes, W[B])+(m*g/2)*subst(nodes,W[C]) | |||
+ λ*m*g*(lhs(BC)-rhs(BC)); | |||
Lambda : subst(trial,Lambda); | |||
Lambda : ev(Lambda, nouns); | |||
X : append(makelist(W[j],j,2,4),[λ]); | |||
fact: g^2*m^2*ℓ^3/EI; | |||
eom : ratsimp(subst(params,subst(reference, | |||
makelist(diff(Lambda/fact,X[i])=0,i,1,length(X)) | |||
))); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title= | |||
|text= | {{MyCodeBlock|title=Solving | ||
|text= | |||
Dieses lineare Gleichungssystem hat die Lösung | |||
::<math>\displaystyle {{W}_{2}}=\frac{23}{56},{{W}_{3}}=-\frac{27}{112},{{W}_{4}}=\frac{5}{112},\lambda=\frac{3}{14}</math> | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* solve! */ | ||
sol: solve(eom,X)[1]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title= | {{MyCodeBlock|title=Post-Processing | ||
|text= | |text= | ||
Einsetzen in die Trial-Functions liefert die (dimensionslosen) Funktionsverläufe für ''w, ϕ, M'' und ''Q'': | |||
[[Datei:Kw56-21.png|mini|Verläufe der gesuchten Größen|alternativtext=|ohne]] | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /************************************************************/ | ||
/* post - processing */ | |||
/* cross-sectional bending moment */ | |||
toPlot : [ | |||
w[xi] = ratsimp(subst(trial,w(xi))/W[ref]), | |||
ϕ[xi] = ratsimp(subst(params,subst(reference, diff(subst(trial,w(xi)),xi,1)/ℓ^1/ϕ[ref]))), | |||
M[xi] = ratsimp(subst(params,subst(reference,-EI*diff(subst(trial,w(xi)),xi,2)/ℓ^2/M[ref]))), | |||
Q[xi] = ratsimp(subst(params,subst(reference,-EI*diff(subst(trial,w(xi)),xi,3)/ℓ^3/Q[ref]))) | |||
]; | |||
plot2d(subst(sol,subst(toPlot,[w[xi],ϕ[xi],M[xi],Q[xi]])),[xi,0,1], | |||
[gnuplot_preamble, "set yrange [] reverse"], | |||
[legend, "w", "ϕ", "M", "Q"], | |||
[xlabel, "x/ℓ->"], [ylabel, "<-w/w_ref, ϕ/ϕ_ref, M/M_ref, Q/Q_ref"], | |||
[style, [lines,2]]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
Aktuelle Version vom 31. März 2021, 08:16 Uhr
Aufgabenstellung
Die Aufgabenstellung ist identisch mit Aufgabe Kw55, hier ist die Lösung mit dem Verfahren von Rayleigh-Ritz gefragt.
Gesucht ist eine Näherungslösung mit dem Verfahren von Rayleigh-Ritz für ein Euler-Bernoulli-Modell der Struktur.
Verwenden Sie zwei freie Trial-Funtions.
Lösung mit Maxima
Header
Die Herausforderung der Aufgabe liegt wieder in der kinematischen Zwangsbedingung, die der starre Stab abc dem Euler-Bernoulli-Balken auferlegt. Diese Zwangsbedingung lautet
- ,
mit den Abkürzungen
- wB = w( ℓ),
- wC = w(2ℓ).
Die geometrischen Randbedingungen in A erfüllen wir, indem wir Polynome ab dem Grad 2 verwenden.
Für die Lösung nach Rayleigh-Ritz können wir
- zwei freie Trial-Functions wählen, die die Zwangsbedingung selbst schon erfüllen
- mit Lagrange-Multiplikator die Zwangsbedingung einbauen.
Der zweite Weg ist bei Computer-Anwendungen meist viel einfacher - den gehen wir hier.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2019-09-01 */
/* ref: TMC */
/* description: Rayley-Ritz-Solution for EBB */
/* with kinemtic constraints */
/*******************************************************/
Declarations
Wir brauchen
und nutzen eine Referenzlösung (wie in Kw55)
.
/************************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare( "ℓ", alphabetic);
declare( "ϕ", alphabetic);
declare( "λ", alphabetic);
/* system parameters */
params: [q[0] = m*g/ℓ];
dimless: [ x = xi*ℓ];
/* make equations of motion dim'less with load case #1 from Gross e.a., same as UEBI */
reference : [W[ref] = q[0]*(2*ℓ)^4/(8*EI), ϕ[ref] = q[0]*(2*ℓ)^3/(6*EI), M[ref] = m*g*ℓ, Q[ref] = 2*m*g];
Formfunctions
Um zwei freie Trial-Functions zu bekommen, müssen wir drei ansetzen: ein Freiheitsgrad wird von der kinematischen Zwangsbedingung aufgehoben.
Also wählen wir
mit
und ergänzen dies um die Zwangsbedingung
- .
Achtung: Der Balken ist "2"-lang.
/************************************************************/
/* Rayleigh-Ritz */
/* trial function */
trial: w(xi) = W[ref]*sum(W[j]*xi^(j),j,2,4);
/* kinemtic constraints */
nodes : [W[B]=subst([xi=1], subst(trial,w(xi))), W[C]=subst([xi=2], subst(trial,w(xi)))];
BC: ratsimp(subst(nodes,[2*W[B]=W[C]])/W[ref])[1];
Equilibrium Conditions
Für die Gleichgewichtsbedingungen brauchen wir die potentielle Energie (hier die Lagrange-Funktion)
wobei der konstante Faktor bei dem Lagrange-Multiplikator λ nur der Ästhetik dient ....
Die gesuchten Größen sind nun
- ,
und die Gleichgewichtsbedingungen kommen aus
zu
- .
/* Lagrange formulation */
Lambda : + 1/2*ℓ*'integrate(EI*diff(w(xi),xi,2)^2/ℓ^4,xi,0,2)
- (2*m*g+m*g/2)*subst(nodes, W[B])+(m*g/2)*subst(nodes,W[C])
+ λ*m*g*(lhs(BC)-rhs(BC));
Lambda : subst(trial,Lambda);
Lambda : ev(Lambda, nouns);
X : append(makelist(W[j],j,2,4),[λ]);
fact: g^2*m^2*ℓ^3/EI;
eom : ratsimp(subst(params,subst(reference,
makelist(diff(Lambda/fact,X[i])=0,i,1,length(X))
)));
Solving
Dieses lineare Gleichungssystem hat die Lösung
/* solve! */
sol: solve(eom,X)[1];
Post-Processing
Einsetzen in die Trial-Functions liefert die (dimensionslosen) Funktionsverläufe für w, ϕ, M und Q:
/************************************************************/
/* post - processing */
/* cross-sectional bending moment */
toPlot : [
w[xi] = ratsimp(subst(trial,w(xi))/W[ref]),
ϕ[xi] = ratsimp(subst(params,subst(reference, diff(subst(trial,w(xi)),xi,1)/ℓ^1/ϕ[ref]))),
M[xi] = ratsimp(subst(params,subst(reference,-EI*diff(subst(trial,w(xi)),xi,2)/ℓ^2/M[ref]))),
Q[xi] = ratsimp(subst(params,subst(reference,-EI*diff(subst(trial,w(xi)),xi,3)/ℓ^3/Q[ref])))
];
plot2d(subst(sol,subst(toPlot,[w[xi],ϕ[xi],M[xi],Q[xi]])),[xi,0,1],
[gnuplot_preamble, "set yrange [] reverse"],
[legend, "w", "ϕ", "M", "Q"],
[xlabel, "x/ℓ->"], [ylabel, "<-w/w_ref, ϕ/ϕ_ref, M/M_ref, Q/Q_ref"],
[style, [lines,2]]);
Links
- ...
Literature
- ...