Gelöste Aufgaben/Kw56: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 18: | Zeile 18: | ||
== Lösung mit Maxima == | == Lösung mit Maxima == | ||
<math>w_B = \displaystyle \frac{1}{2} w_C</math>, | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Header | |||
|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 | mit den Abkürzungen | ||
Zeile 36: | Zeile 39: | ||
Der zweite Weg ist bei Computer-Anwendungen meist viel einfacher - den gehen wir hier. | 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=Declarations | |||
|text= | |||
Wir brauchen | Wir brauchen | ||
Zeile 57: | Zeile 65: | ||
\hat{w} &=& \displaystyle \frac{q_0\,(2\ell)^4}{8 EI}\\ | \hat{w} &=& \displaystyle \frac{q_0\,(2\ell)^4}{8 EI}\\ | ||
\hat{\phi}&=& \displaystyle \frac{q_0\,(2\ell)^3}{6 EI} | \hat{\phi}&=& \displaystyle \frac{q_0\,(2\ell)^3}{6 EI} | ||
\end{array}</math>. | \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=Formfunctions | |||
|text= | |||
Um zwei freie Trial-Functions zu bekommen, müssen wir drei ansetzen: ein Freiheitsgrad wird von der kinematischen Zwangsbedingung aufgehoben. | Um zwei freie Trial-Functions zu bekommen, müssen wir drei ansetzen: ein Freiheitsgrad wird von der kinematischen Zwangsbedingung aufgehoben. | ||
Also wählen wir | Also wählen wir | ||
<math>\displaystyle w(\xi) = \hat{w} \cdot \sum_{i=2}^4 W_i \cdot \xi^i</math> | ::<math>\displaystyle w(\xi) = \hat{w} \cdot \sum_{i=2}^4 W_i \cdot \xi^i</math> | ||
mit | mit | ||
<math>x = \xi \cdot \ell</math> | ::<math>x = \xi \cdot \ell</math> | ||
und ergänzen dies um die Zwangsbedingung | und ergänzen dies um die Zwangsbedingung | ||
<math>2\cdot w(1) = \,w(2)</math>. | ::<math>2\cdot w(1) = \,w(2)</math>. | ||
Achtung: Der Balken ist "2"-lang. | 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=Equilibrium Conditions | |||
|text= | |||
Für die Gleichgewichtsbedingungen brauchen wir die potentielle Energie (hier die Lagrange-Funktion) | Für die Gleichgewichtsbedingungen brauchen wir die potentielle Energie (hier die Lagrange-Funktion) | ||
<math>\begin{array}{lcl} | ::<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\\ | \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)\\ | &-&\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)\\ | ||
Zeile 107: | Zeile 129: | ||
Die gesuchten Größen sind nun | Die gesuchten Größen sind nun | ||
<math>\underline{Q} = \left( \begin{array}{c} | ::<math>\underline{Q} = \left( \begin{array}{c} | ||
W_2\\ | W_2\\ | ||
W_3\\ | W_3\\ | ||
Zeile 116: | Zeile 138: | ||
und die Gleichgewichtsbedingungen kommen aus | und die Gleichgewichtsbedingungen kommen aus | ||
<math>\displaystyle \frac{d\Lambda}{dQ_i} \stackrel{!}{=}0</math> | ::<math>\displaystyle \frac{d\Lambda}{dQ_i} \stackrel{!}{=}0</math> | ||
zu | zu | ||
<math>\begin{array}{cc} | ::<math>\begin{array}{cc} | ||
-2 \lambda +256 {W_4}+96 {W_3}+32 {W_2}-1&=0,\\ | -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,\\ | -2 \lambda +384 {W_4}+128 {W_3}+32 {W_2}+1&=0,\\ | ||
Zeile 126: | Zeile 148: | ||
-7 {W_4}-3 {W_3}-{W_2}&=0 | -7 {W_4}-3 {W_3}-{W_2}&=0 | ||
\end{array}</math>. | \end{array}</math>. | ||
|code= | |||
<syntaxhighlight lang="lisp" line start=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=Solving | {{MyCodeBlock|title=Solving | ||
|text= | |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=Post-Processing | |||
|text= | |||
[[Datei:Kw56-21.png|mini|Verläufe der gesuchten Größen|alternativtext=|ohne]] | [[Datei:Kw56-21.png|mini|Verläufe der gesuchten Größen|alternativtext=|ohne]] | ||
Einsetzen in die Trial-Functions liefert die (dimensionslosen) Funktionsverläufe für ''w, ϕ, M'' und ''Q'': | Einsetzen in die Trial-Functions liefert die (dimensionslosen) Funktionsverläufe für ''w, ϕ, M'' und ''Q'': | ||
< | |code= | ||
<syntaxhighlight lang="lisp" line start=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> | ||
}} | }} |
Version vom 31. März 2021, 08:14 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
- ...