Gelöste Aufgaben/UEBJ: 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 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''. | 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''. | ||
Für diese Aufgabe gibt es in UEBI eine analytische Lösung - hier schauen wir uns an, wie sich die Qualität der Näherungslösungen mit der Steigerung der Anzahl der Trial-Functions ändert. | Für diese Aufgabe gibt es in [[Gelöste Aufgaben/UEBI|UEBI]] eine analytische Lösung - hier schauen wir uns an, wie sich die Qualität der Näherungslösungen mit der Steigerung der Anzahl der Trial-Functions ändert. | ||
<onlyinclude> | <onlyinclude> | ||
[[Datei:UEBF-01.png| | [[Datei:UEBF-01.png|200x200px|left|mini|Lageplan|alternativtext=]] | ||
Gesucht ist die Biegeline und Schnittkraftverläufe mit dem Ansatz von Ritz und mehreren Trial-Funktionen. | Gesucht ist die Biegeline und Schnittkraftverläufe mit dem Ansatz von Ritz und mehreren Trial-Funktionen. | ||
</onlyinclude> | </onlyinclude> | ||
Zeile 31: | Zeile 31: | ||
Um die Lösung dimensionslos zu machen, nutzen wir die [[Sources/Lexikon/Euler-Bernoulli-Balken/Standard-Lösungen#Kragbalken|analytische Lösung des einseitig fest eingespannten Balkens]] mit konstanten ''I'' unter einer konstanten Streckenlast ''q<sub>0</sub>''. Hier ist die maximale Auslenkung | Um die Lösung dimensionslos zu machen, nutzen wir die [[Sources/Lexikon/Euler-Bernoulli-Balken/Standard-Lösungen#Kragbalken|analytische Lösung des einseitig fest eingespannten Balkens]] mit konstanten ''I'' unter einer konstanten Streckenlast ''q<sub>0</sub>''. Hier ist die maximale Auslenkung | ||
<math>\begin{array}{lcl} | ::<math>\begin{array}{lcl} | ||
\displaystyle \hat{w} := \frac{q_{ref}\, \ell^4}{8 EI_{ref}} & | \displaystyle \hat{w} := \frac{q_{ref}\, \ell^4}{8 EI_{ref}} & | ||
\text{ mit }& | \text{ mit }& | ||
Zeile 43: | Zeile 43: | ||
Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken. | Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken. | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Header | |||
|text= | |||
In diesem Problem werden wir Lösungen zu verschiedenen Ansatzfunktionen miteinander vergleichen. | In diesem Problem werden wir Lösungen zu verschiedenen Ansatzfunktionen miteinander vergleichen. | ||
Es geht also nicht nur um die Berechnung einer Lösung - sondern vieler. | Es geht also nicht nur um die Berechnung einer Lösung - sondern vieler. | ||
Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken. | |||
|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-08-30 */ | |||
/* ref: TMC */ | |||
/* description: Rayley-Ritz-Solution for EBB */ | |||
/* with I(x) */ | |||
/*******************************************************/ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Declarations | |||
|text= | |||
Wir arbeiten mit den System-Parametern | Wir arbeiten mit den System-Parametern | ||
<math>\begin{array}{lcl} | ::<math>\begin{array}{lcl} | ||
\xi &=& \displaystyle \frac{x}{\ell},\\ | \xi &=& \displaystyle \frac{x}{\ell},\\ | ||
q(\xi) &=& A(\xi)\,\rho\,g,\\ | q(\xi) &=& A(\xi)\,\rho\,g,\\ | ||
Zeile 72: | Zeile 80: | ||
Für die numerische Lösung verwenden wir - wie in [[Gelöste Aufgaben/UEBI|UEBI]] - | Für die numerische Lösung verwenden wir - wie in [[Gelöste Aufgaben/UEBI|UEBI]] - | ||
<math>\alpha = \displaystyle \frac{1}{2}</math>. | ::<math>\alpha = \displaystyle \frac{1}{2}</math>. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1+1 | /************************************************************/ | ||
/* declare variational variables - see 6.3 Identifiers */ | |||
declare( "ℓ", alphabetic); | |||
/* system parameters */ | |||
params: [q(xi) = 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]; | |||
/* load analytic solutions as discrete tables from UEBI */ | |||
file_search_maxima: append(file_search_maxima, ["C:/Users/abs384/OneDrive/Confluence Sources/UEBJ/"]); | |||
batch("analyticSolFromUEBI.data")$ | |||
/* make equations of motion dim'less with load case #1 from Gross e.a., same as UEBI */ | |||
reference : [W[ref] = q[ref]*ℓ^4/8/EI[ref], Phi[ref] = q[ref]*ℓ^3/6/EI[ref], M[ref] = m*g*ℓ/2, Q[ref] = m*g, q[ref] = m*g/ℓ, EI[ref]=E*b*((H[0]+H[1])/2)^3/12]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== | {{MyCodeBlock|title=Rayleigh-Ritz Approach | ||
|text= | |||
Gesucht ist hier ein Ansatz mit polynomialen Trial Functions. Wir probieren verschiedene Ansätze aus, die wir mit "''i''" kennzeichnen, also | Gesucht ist hier ein Ansatz mit polynomialen Trial Functions. Wir probieren verschiedene Ansätze aus, die wir mit "''i''" kennzeichnen, also | ||
<math>w_i(\xi) = \hat{w} \cdot \displaystyle \sum_{j_{min}}^J W_{i,j} \cdot \phi_j(\xi)</math> | ::<math>w_i(\xi) = \hat{w} \cdot \displaystyle \sum_{j_{min}}^J W_{i,j} \cdot \phi_j(\xi)</math> | ||
und den gesuchten Koeffizienten ''W<sub>ij</sub>''. Die ''ϕ<sub>j</sub>'' müssen dabei alle geometrischen Randbedingungen erfüllen, also: | und den gesuchten Koeffizienten ''W<sub>ij</sub>''. Die ''ϕ<sub>j</sub>'' müssen dabei alle geometrischen Randbedingungen erfüllen, also: | ||
<math>\begin{array}{ll}w_i(0) &= 0,\\w_i'(0) &= 0.\end{array}</math>. | ::<math>\begin{array}{ll}w_i(0) &= 0,\\w_i'(0) &= 0.\end{array}</math>. | ||
Die Funktionen müssen nicht die Randbedingungen für Schnittlasten in ''B'' erfüllen - schließlich suchen wir nach einer Näherungslösung! | Die Funktionen müssen nicht die Randbedingungen für Schnittlasten in ''B'' erfüllen - schließlich suchen wir nach einer Näherungslösung! | ||
Zeile 96: | Zeile 122: | ||
Diese Funktionen ''ϕ<sub>j</sub>'' zu konstruieren ist einfach: wir brauchen lediglich eine doppelte Nullstelle in <math>\xi=0</math>. Das erreichen wir, indem wir nur Polynome ab einem Grad ≥ 2 (also ''j<sub>min</sub>''=2) zulassen: | Diese Funktionen ''ϕ<sub>j</sub>'' zu konstruieren ist einfach: wir brauchen lediglich eine doppelte Nullstelle in <math>\xi=0</math>. Das erreichen wir, indem wir nur Polynome ab einem Grad ≥ 2 (also ''j<sub>min</sub>''=2) zulassen: | ||
<math>\phi_j(\xi) = \xi^j \text{ mit } j \ge 2</math>. | ::<math>\phi_j(\xi) = \xi^j \text{ mit } j \ge 2</math>. | ||
Damit ist | Damit ist | ||
<math>w_i(\xi) = \hat{w} \cdot \displaystyle \sum_2^J W_{i,j} \cdot \xi^j</math>. | ::<math>w_i(\xi) = \hat{w} \cdot \displaystyle \sum_2^J W_{i,j} \cdot \xi^j</math>. | ||
Die freien Koeffizienten ''W<sub>ij</sub>'' sind nun die anteiligen Auslenkungen in ''B''. | Die freien Koeffizienten ''W<sub>ij</sub>'' sind nun die anteiligen Auslenkungen in ''B''. | ||
----Für die Gleichgewichtsbedingungen setzten wir die Formänderungsenergie '''''Π''''' (aus dem Abschnitt [[Sources/Lexikon/Euler-Bernoulli-Balken|Euler-Bernoulli-Balken]]) | ----Für die Gleichgewichtsbedingungen setzten wir die Formänderungsenergie '''''Π''''' (aus dem Abschnitt [[Sources/Lexikon/Euler-Bernoulli-Balken|Euler-Bernoulli-Balken]]) | ||
<math>\displaystyle \Pi = \frac{1}{2} \int_0^\ell M(x)\,w''(x) dx</math> | ::<math>\displaystyle \Pi = \frac{1}{2} \int_0^\ell M(x)\,w''(x) dx</math> | ||
und die Arbeitsfunktion der Gewichtskraft '''''A''''' | und die Arbeitsfunktion der Gewichtskraft '''''A''''' | ||
<math>\displaystyle {\bf A} = \int_0^\ell q(x)\,w(x) dx </math> | ::<math>\displaystyle {\bf A} = \int_0^\ell q(x)\,w(x) dx </math> | ||
in '''''U''''' ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir | 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> | ::<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 | berücksichtigen und erhalten | ||
<math>{\bf U} = \displaystyle \frac{1}{2} \cdot \displaystyle \underline{Q}^T \cdot \underline{\underline{A}}\cdot \underline{Q} - \underline{Q}^T\cdot \underline{b} </math>. | ::<math>{\bf U} = \displaystyle \frac{1}{2} \cdot \displaystyle \underline{Q}^T \cdot \underline{\underline{A}}\cdot \underline{Q} - \underline{Q}^T\cdot \underline{b} </math>. | ||
In der Spaltenmatrix | In der Spaltenmatrix | ||
<math>\underline{Q} = \left( \begin{array}{l} | ::<math>\underline{Q} = \left( \begin{array}{l} | ||
W_{i,2}\\ | W_{i,2}\\ | ||
\vdots\\ | \vdots\\ | ||
Zeile 128: | Zeile 154: | ||
stehen nun zwischen einer und ''I-1'' Gewichtungsfaktoren ''W<sub>ij</sub> :'' die gesuchten Unbekannten. | stehen nun zwischen einer und ''I-1'' Gewichtungsfaktoren ''W<sub>ij</sub> :'' die gesuchten Unbekannten. | ||
<math>\displaystyle \frac{d{\bf U}}{dW_{ij}} \stackrel{!}{=} 0</math>, | Die Gleichgewichtsbedingungen | ||
::<math>\displaystyle \frac{d{\bf U}}{dW_{ij}} \stackrel{!}{=} 0</math>, | |||
liefern uns die benötigte Anzahl von Gleichungen, z.B. für ''i=3'': | liefern uns die benötigte Anzahl von Gleichungen, z.B. für ''i=3'': | ||
<math>\begin{array}{cl} | ::<math>\begin{array}{cl} | ||
0=&{{W}_{3,3}}\cdot \left( 36+72\cdot \alpha+108\cdot {{\alpha}^{2}}+144\cdot {{\alpha}^{3}}\right) +{{W}_{3,2}}\cdot \left( 60+60\cdot \alpha+60\cdot {{\alpha}^{2}}+60\cdot {{\alpha}^{3}}\right) -30\cdot {{\alpha}^{3}}-70\cdot {{\alpha}^{2}}-50\cdot \alpha-10\\ | 0=&{{W}_{3,3}}\cdot \left( 36+72\cdot \alpha+108\cdot {{\alpha}^{2}}+144\cdot {{\alpha}^{3}}\right) +{{W}_{3,2}}\cdot \left( 60+60\cdot \alpha+60\cdot {{\alpha}^{2}}+60\cdot {{\alpha}^{3}}\right) -30\cdot {{\alpha}^{3}}-70\cdot {{\alpha}^{2}}-50\cdot \alpha-10\\ | ||
0=&{{W}_{3,3}}\cdot \left( 36+108\cdot \alpha+216\cdot {{\alpha}^{2}}+360\cdot {{\alpha}^{3}}\right) +{{W}_{3,2}}\cdot \left( 36+72\cdot \alpha+108\cdot {{\alpha}^{2}}+144\cdot {{\alpha}^{3}}\right) -24\cdot {{\alpha}^{3}}-54\cdot {{\alpha}^{2}}-36\cdot \alpha-6 | 0=&{{W}_{3,3}}\cdot \left( 36+108\cdot \alpha+216\cdot {{\alpha}^{2}}+360\cdot {{\alpha}^{3}}\right) +{{W}_{3,2}}\cdot \left( 36+72\cdot \alpha+108\cdot {{\alpha}^{2}}+144\cdot {{\alpha}^{3}}\right) -24\cdot {{\alpha}^{3}}-54\cdot {{\alpha}^{2}}-36\cdot \alpha-6 | ||
\end{array}</math>. | \end{array}</math>. | ||
<math>\begin{array}{ll} | Hier - für ''i=3'' - ist | ||
::<math>\begin{array}{ll} | |||
{{W}_{3,2}}&=\displaystyle\frac{1+8\cdot \alpha+34\cdot {{\alpha}^{2}}+94\cdot {{\alpha}^{3}}+164\cdot {{\alpha}^{4}}+148\cdot {{\alpha}^{5}}+51\cdot {{\alpha}^{6}}}{6\cdot {{\alpha}^{6}}+24\cdot {{\alpha}^{5}}+60\cdot {{\alpha}^{4}}+120\cdot {{\alpha}^{3}}+60\cdot {{\alpha}^{2}}+24\cdot \alpha+6}\\ | {{W}_{3,2}}&=\displaystyle\frac{1+8\cdot \alpha+34\cdot {{\alpha}^{2}}+94\cdot {{\alpha}^{3}}+164\cdot {{\alpha}^{4}}+148\cdot {{\alpha}^{5}}+51\cdot {{\alpha}^{6}}}{6\cdot {{\alpha}^{6}}+24\cdot {{\alpha}^{5}}+60\cdot {{\alpha}^{4}}+120\cdot {{\alpha}^{3}}+60\cdot {{\alpha}^{2}}+24\cdot \alpha+6}\\ | ||
{{W}_{3,3}}&=\displaystyle-\frac{5\cdot {{\alpha}^{2}}+20\cdot {{\alpha}^{3}}+35\cdot {{\alpha}^{4}}+30\cdot {{\alpha}^{5}}+10\cdot {{\alpha}^{6}}}{3\cdot {{\alpha}^{6}}+12\cdot {{\alpha}^{5}}+30\cdot {{\alpha}^{4}}+60\cdot {{\alpha}^{3}}+30\cdot {{\alpha}^{2}}+12\cdot \alpha+3} | {{W}_{3,3}}&=\displaystyle-\frac{5\cdot {{\alpha}^{2}}+20\cdot {{\alpha}^{3}}+35\cdot {{\alpha}^{4}}+30\cdot {{\alpha}^{5}}+10\cdot {{\alpha}^{6}}}{3\cdot {{\alpha}^{6}}+12\cdot {{\alpha}^{5}}+30\cdot {{\alpha}^{4}}+60\cdot {{\alpha}^{3}}+30\cdot {{\alpha}^{2}}+12\cdot \alpha+3} | ||
\end{array}</math>. | \end{array}</math>. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /************************************************************/ | ||
/* Rayleigh-Ritz */ | |||
/* try different degrees of polyomials */ | |||
fcts: []; | |||
sols: []; | |||
polyMax : 4; | |||
for poly:2 thru polyMax do ( | |||
/* trial function */ | |||
trial: w[poly](xi) = sum(W[ref]*W[poly,j]*xi^(j),j,2,poly), | |||
/* potential energies */ | |||
/* define potential energy of system */ | |||
PMPE : [U = Pi - A, | |||
Pi = 1/2*ℓ*'integrate(E*I(xi)*'diff(w[i](xi),xi,2)^2/ℓ^4,xi,0,1), | |||
A = ℓ*'integrate(q(xi)*w[i](xi),xi,0,1)], | |||
PMPE: subst(dimless,subst(params,subst(trial,subst([i=poly],PMPE)))), | |||
PMPE: subst(PMPE[3],subst(PMPE[2], PMPE[1])), | |||
PMPE : ev(PMPE,nouns), | |||
/* equilibreium condition */ | |||
X : makelist(W[poly,j],j,2,poly), | |||
equilibrium : ratsimp(subst(dimless,subst(reference, | |||
makelist(diff(subst(PMPE, U),W[poly,j]) = 0,j,2,poly)))), | |||
/* solve */ | |||
sol: ratsimp(solve(equilibrium,X)), | |||
sols: append(sols, sol), | |||
/* post-processing */ | |||
fcts: append(fcts, [ratsimp(subst(geometry,subst(sol,subst(trial,w[poly](xi)/W[ref]))))]), | |||
print("done: #",poly))$ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Post-Processing | |||
|text= | |||
Für die verschiedenen Ansätze (Polynimial-Grade der Trial-Functions) erhaltem wir Lösungen, die die analytische Lösung aus UEBI unterschiedlich gut approximieren. Hier wählen wir als Ansätze die Polynome bis zum Grad 2, 3 und 4. | Für die verschiedenen Ansätze (Polynimial-Grade der Trial-Functions) erhaltem wir Lösungen, die die analytische Lösung aus UEBI unterschiedlich gut approximieren. Hier wählen wir als Ansätze die Polynome bis zum Grad 2, 3 und 4. | ||
[[Datei:UEBJ-21.png|mini|Parameterstudie: Biegelinie ''w(x)'']]Und so berechnen wir die normierten Absenkungen des Balkens für die verschiedenen Ansätze: | [[Datei:UEBJ-21.png|mini|Parameterstudie: Biegelinie ''w(x)'']]Und so berechnen wir die normierten Absenkungen des Balkens für die verschiedenen Ansätze: | ||
Für Moment- und Querkraftverläufe erhalten wir[[Datei:UEBJ-22.png|mini|Parameterstudie Biegemomentenverlauf ''M(x)''|alternativtext=|ohne]] | Für Moment- und Querkraftverläufe erhalten wir[[Datei:UEBJ-22.png|mini|Parameterstudie Biegemomentenverlauf ''M(x)''|alternativtext=|ohne]] | ||
[[Datei:UEBJ-23.png|mini|Parameterstudie Querkraftverlauf ''Q(x)''|alternativtext=|ohne]] | [[Datei:UEBJ-23.png|mini|Parameterstudie Querkraftverlauf ''Q(x)''|alternativtext=|ohne]] | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /************************************************************/ | ||
/* post - processing */ | |||
/* cross-sectional bending moment */ | |||
M : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,2)/ℓ^2/(m*g*ℓ/2))))))$ | |||
/* cross-sectional shear force */ | |||
Q : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,3)/ℓ^3/(m*g))))))$ | |||
fcts :append([[discrete, WA]], fcts)$ | |||
plot2d(fcts,[xi,0,1], | |||
[gnuplot_preamble, "set yrange [] reverse"], | |||
[legend, "analytic", "2nd Ord", "3rd Ord", "4th Ord", "5th Ord", "6th Ord"], | |||
[xlabel, "x/ℓ->"], [ylabel, "<-w/w_ref"], | |||
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]); | |||
M :append([[discrete, MA]], M)$ | |||
plot2d(M,[xi,0,1], | |||
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"], | |||
[xlabel, "x/ℓ->"], [ylabel, "M/(mg ℓ->"], | |||
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]); | |||
Q :append([[discrete, QA]], Q)$ | |||
plot2d(Q,[xi,0,1], | |||
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"], | |||
[xlabel, "x/ℓ->"], [ylabel, "Q/mg->"], | |||
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
Zeile 168: | Zeile 246: | ||
<hr /> | <hr /> | ||
'''Links''' | '''Links''' | ||
* | * [[Gelöste Aufgaben/UEBI|UEBI]] | ||
'''Literature''' | '''Literature''' | ||
*... | *... | ||
Aktuelle Version vom 17. April 2021, 06:31 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.
Für diese Aufgabe gibt es in UEBI eine analytische Lösung - hier schauen wir uns an, wie sich die Qualität der Näherungslösungen mit der Steigerung der Anzahl der Trial-Functions ändert.
Gesucht ist die Biegeline und Schnittkraftverläufe mit dem Ansatz von Ritz und mehreren Trial-Funktionen.
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
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 einseitig fest eingespannten Balkens mit konstanten I unter einer konstanten Streckenlast q0. 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
In diesem Problem werden wir Lösungen zu verschiedenen Ansatzfunktionen miteinander vergleichen.
Es geht also nicht nur um die Berechnung einer Lösung - sondern vieler. Damit können wir uns die Lösungen dieses Problems als Vielfaches der analytischen Lösung eines ähnlichen Problems denken.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 15.08.2 */
/* author: Andreas Baumgart */
/* last updated: 2019-08-30 */
/* ref: TMC */
/* description: Rayley-Ritz-Solution for EBB */
/* with I(x) */
/*******************************************************/
Declarations
Wir arbeiten mit den System-Parametern
Für die numerische Lösung verwenden wir - wie in UEBI -
- .
/************************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare( "ℓ", alphabetic);
/* system parameters */
params: [q(xi) = 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];
/* load analytic solutions as discrete tables from UEBI */
file_search_maxima: append(file_search_maxima, ["C:/Users/abs384/OneDrive/Confluence Sources/UEBJ/"]);
batch("analyticSolFromUEBI.data")$
/* make equations of motion dim'less with load case #1 from Gross e.a., same as UEBI */
reference : [W[ref] = q[ref]*ℓ^4/8/EI[ref], Phi[ref] = q[ref]*ℓ^3/6/EI[ref], M[ref] = m*g*ℓ/2, Q[ref] = m*g, q[ref] = m*g/ℓ, EI[ref]=E*b*((H[0]+H[1])/2)^3/12];
Rayleigh-Ritz Approach
Gesucht ist hier ein Ansatz mit polynomialen Trial Functions. Wir probieren verschiedene Ansätze aus, die wir mit "i" kennzeichnen, also
und den gesuchten Koeffizienten Wij. Die ϕj müssen dabei alle geometrischen Randbedingungen erfüllen, also:
- .
Die Funktionen müssen nicht die Randbedingungen für Schnittlasten in B erfüllen - schließlich suchen wir nach einer Näherungslösung!
Diese Funktionen ϕj zu konstruieren ist einfach: wir brauchen lediglich eine doppelte Nullstelle in . Das erreichen wir, indem wir nur Polynome ab einem Grad ≥ 2 (also jmin=2) zulassen:
- .
Damit ist
- .
Die freien Koeffizienten Wij sind nun die anteiligen Auslenkungen in B.
Für die Gleichgewichtsbedingungen setzten wir die Formänderungsenergie Π (aus dem Abschnitt Euler-Bernoulli-Balken)
und die Arbeitsfunktion der Gewichtskraft A
in U ein und schreiben die skalare Gleichung allgemein in Matrizenform an. Dabei müssen wir
berücksichtigen und erhalten
- .
In der Spaltenmatrix
stehen nun zwischen einer und I-1 Gewichtungsfaktoren Wij : die gesuchten Unbekannten.
Die Gleichgewichtsbedingungen
- ,
liefern uns die benötigte Anzahl von Gleichungen, z.B. für i=3:
- .
Hier - für i=3 - ist
- .
/************************************************************/
/* Rayleigh-Ritz */
/* try different degrees of polyomials */
fcts: [];
sols: [];
polyMax : 4;
for poly:2 thru polyMax do (
/* trial function */
trial: w[poly](xi) = sum(W[ref]*W[poly,j]*xi^(j),j,2,poly),
/* potential energies */
/* define potential energy of system */
PMPE : [U = Pi - A,
Pi = 1/2*ℓ*'integrate(E*I(xi)*'diff(w[i](xi),xi,2)^2/ℓ^4,xi,0,1),
A = ℓ*'integrate(q(xi)*w[i](xi),xi,0,1)],
PMPE: subst(dimless,subst(params,subst(trial,subst([i=poly],PMPE)))),
PMPE: subst(PMPE[3],subst(PMPE[2], PMPE[1])),
PMPE : ev(PMPE,nouns),
/* equilibreium condition */
X : makelist(W[poly,j],j,2,poly),
equilibrium : ratsimp(subst(dimless,subst(reference,
makelist(diff(subst(PMPE, U),W[poly,j]) = 0,j,2,poly)))),
/* solve */
sol: ratsimp(solve(equilibrium,X)),
sols: append(sols, sol),
/* post-processing */
fcts: append(fcts, [ratsimp(subst(geometry,subst(sol,subst(trial,w[poly](xi)/W[ref]))))]),
print("done: #",poly))$
Post-Processing
Für die verschiedenen Ansätze (Polynimial-Grade der Trial-Functions) erhaltem wir Lösungen, die die analytische Lösung aus UEBI unterschiedlich gut approximieren. Hier wählen wir als Ansätze die Polynome bis zum Grad 2, 3 und 4.
Und so berechnen wir die normierten Absenkungen des Balkens für die verschiedenen Ansätze: Für Moment- und Querkraftverläufe erhalten wir
/************************************************************/
/* post - processing */
/* cross-sectional bending moment */
M : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,2)/ℓ^2/(m*g*ℓ/2))))))$
/* cross-sectional shear force */
Q : subst(geometry,ratsimp(subst(dimless,subst(reference,subst(params,-E*I(xi)*W[ref]*diff(fcts,xi,3)/ℓ^3/(m*g))))))$
fcts :append([[discrete, WA]], fcts)$
plot2d(fcts,[xi,0,1],
[gnuplot_preamble, "set yrange [] reverse"],
[legend, "analytic", "2nd Ord", "3rd Ord", "4th Ord", "5th Ord", "6th Ord"],
[xlabel, "x/ℓ->"], [ylabel, "<-w/w_ref"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
M :append([[discrete, MA]], M)$
plot2d(M,[xi,0,1],
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"],
[xlabel, "x/ℓ->"], [ylabel, "M/(mg ℓ->"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
Q :append([[discrete, QA]], Q)$
plot2d(Q,[xi,0,1],
[legend, "analytic", "p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12"],
[xlabel, "x/ℓ->"], [ylabel, "Q/mg->"],
[style, [lines,2], [lines,1], [lines,1], [lines,1], [lines,1], [lines,1]]);
Links
Literature
- ...