Gelöste Aufgaben/FEAB: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 54: | Zeile 54: | ||
}} | }} | ||
<!-------------------------------------------------------------------------------->Für die Formfunktionen wählen wir | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Formfuctions | ||
|text= | |||
Für die Formfunktionen wählen wir | |||
<math>\displaystyle u(x) = \sum_{i=1}^{I} U_i\cdot \left(\frac{x}{\ell}\right)^i</math>> , | :: <math>\displaystyle u(x) = \sum_{i=1}^{I} U_i\cdot \left(\frac{x}{\ell}\right)^i</math>> , | ||
also für I=2 | also für I=2 | ||
<math>\displaystyle u(x) = U_1 \frac{x}{l} + U_2 \left(\frac{x}{l}\right)^2</math> | :: <math>\displaystyle u(x) = U_1 \frac{x}{l} + U_2 \left(\frac{x}{l}\right)^2</math> | ||
und entsprechend | und entsprechend | ||
<math>\displaystyle \delta u(x) = \delta U_1 \frac{x}{l} + \delta U_2 \left(\frac{x}{l}\right)^2</math> . | :: <math>\displaystyle \delta u(x) = \delta U_1 \frac{x}{l} + \delta U_2 \left(\frac{x}{l}\right)^2</math> . | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* coordinates and their variations */ | ||
Q : makelist( U[i],i,1,I); | |||
δQ : makelist(δU[i],i,1,I); | |||
/* trial functions */ | |||
Phi : [(x/l)^1,(x/l)^2,(x/l)^3]; | |||
/* Ansatz */ | |||
u : sum( Q[i]*Phi[i],i,1,I); | |||
δu : sum(δQ[i]*Phi[i],i,1,I); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!-------------------------------------------------------------------------------->Die Gleichgewichtsbedingung | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Equilibrium Conditions | ||
|text= | |||
Die Gleichgewichtsbedingung | |||
<math>\begin{array}{ll}\delta W &= \delta W^a - \delta \Pi\\ &\stackrel{!}{=}0\end{array}</math> | ::<math>\begin{array}{ll}\delta W &= \delta W^a - \delta \Pi\\ &\stackrel{!}{=}0\end{array}</math> | ||
liefert | liefert | ||
<math>\displaystyle \delta W = \frac{\delta U_{2} A g \ell \rho}{3}+\frac{\delta U_{1} A g \ell \rho}{2} - \frac{4{{U}_{2}}\,{{\mathit{{\delta}U}}_{2}}AE}{3\ell}-\frac{{{U}_{1}}\,{{\mathit{{\delta}U}}_{2}}AE}{\ell}-\frac{{{\mathit{{\delta}U}}_{1}}\,{{U}_{2}}AE}{\ell}-\frac{{{U}_{1}}\,{{\mathit{{\delta}U}}_{1}}A E}{\ell}</math>. | ::<math>\displaystyle \delta W = \frac{\delta U_{2} A g \ell \rho}{3}+\frac{\delta U_{1} A g \ell \rho}{2} - \frac{4{{U}_{2}}\,{{\mathit{{\delta}U}}_{2}}AE}{3\ell}-\frac{{{U}_{1}}\,{{\mathit{{\delta}U}}_{2}}AE}{\ell}-\frac{{{\mathit{{\delta}U}}_{1}}\,{{U}_{2}}AE}{\ell}-\frac{{{U}_{1}}\,{{\mathit{{\delta}U}}_{1}}A E}{\ell}</math>. | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
/* Equilibrium */ | |||
δΠ : E*A*integrate(diff(u,x)*diff(δu,x),x,0,l); | |||
δA : integrate(rho*g*A*δu, x,0,l); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!-------------------------------------------------------------------------------->Die | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Solving | ||
|text= | |||
Die Gleichgewichtsbedingungen folgen daraus zu | |||
<math>\begin{array}{l}\displaystyle-\frac{A g \ell\rho}{2}+\frac{{{U}_{2}}AE}{\ell}+\frac{{{U}_{1}} A E}{\ell}=0, \\ \displaystyle -\frac{A g \ell \rho}{3}+\frac{4{{U}_{2}}AE}{3l}+\frac{{{U}_{1}}AE}{\ell}=0\end{array}</math> | ::<math>\begin{array}{l}\displaystyle-\frac{A g \ell\rho}{2}+\frac{{{U}_{2}}AE}{\ell}+\frac{{{U}_{1}} A E}{\ell}=0, \\ \displaystyle -\frac{A g \ell \rho}{3}+\frac{4{{U}_{2}}AE}{3l}+\frac{{{U}_{1}}AE}{\ell}=0\end{array}</math> | ||
und somit | und somit | ||
<math>\displaystyle {{U}_{1}}=\frac{g\,{{\ell}^{2}}\rho}{E},\;\;\;{{U}_{2}}=-\frac{g\,{{\ell}^{2}}\rho}{2E}</math> | ::<math>\displaystyle {{U}_{1}}=\frac{g\,{{\ell}^{2}}\rho}{E},\;\;\;{{U}_{2}}=-\frac{g\,{{\ell}^{2}}\rho}{2E}</math> | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | eom : makelist(-coeff(expand(δA-δΠ),c)=0,c,δQ); | ||
sol: solve(eom, Q)[1]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!--------------------------------------------------------------------------------> | <!--------------------------------------------------------------------------------> | ||
{{MyCodeBlock|title=Post-Processing | |||
|text= | |||
Und wir tragen die Ergebnisse auf für die numerische Näherungslösung | Und wir tragen die Ergebnisse auf für die numerische Näherungslösung | ||
<math>\displaystyle u(x) = \frac{g \rho \ell^2}{E} \cdot \frac{x}{\ell} - \frac{g \rho \ell^{2}}{2E} \cdot \left(\frac{x}{\ell}\right)^2</math> | ::<math>\displaystyle u(x) = \frac{g \rho \ell^2}{E} \cdot \frac{x}{\ell} - \frac{g \rho \ell^{2}}{2E} \cdot \left(\frac{x}{\ell}\right)^2</math> | ||
gegen die exakte Lösung auf:[[Datei:FEAB-Ergebnisplot.png|mini|Verschiebung der Stab-Querschnitte.]] | gegen die exakte Lösung auf:[[Datei:FEAB-Ergebnisplot.png|mini|Verschiebung der Stab-Querschnitte.]] | ||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=1> | ||
1 | /* plot results*/ | ||
toPlot: append([xi*(1-xi/2)], | |||
[ expand(subst(xi*l,x,subst(sol,sum(Q[i]*Phi[i],i,1,I)/(rho*g*l^2/E))))], | |||
makelist( subst(xi*l,x,subst(sol, Q[i]*Phi[i] /(rho*g*l^2/E))), i,1,I)); | |||
plot2d(toPlot, [xi,0,1], [xlabel, "xi→"], [ylabel, "u/((g*l^2*rho)/E)→"], | |||
[legend, "exact", "approximated", "first order", "second order", "third order"], | |||
[title, sconcat("I = ",I)]); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} |
Version vom 23. Februar 2021, 14:36 Uhr
Aufgabenstellung
Statt zwei Freiheitsgraden wie in FEAA haben wir jetzt - bei einem Kontinuum - unendlich viele.
Gesucht ist die Näherungslösung für die Auslenkung der Stab-Querschnitte mit dem Prinzip der Virtuellen Verrückungen. Wir verwenden polynomialen Ansatzfunktionen über die Gesamtlänge - also eine Mischung aus Finiten-Elemente-Methode und dem Rayleigh-Ritz-Verfahren.
Lösung mit Maxima
Header
In den Lageplan haben wir bereits den funktionalen Fireheitsgrad u(x) eingetragen, der Stab ist am oberen Ende befestigt und wird am unteren Ende mit der Zugkraft F belastet.
/*******************************************************/
/* MAXIMA script */
/* version: wxMaxima 16.04.2 */
/* author: Andreas Baumgart */
/* last updated: 2017-10-10 */
/* ref: FENV step 4 im Prozess: Ganzfeldansätze */
/* description: mit dem PvV werden die Bewegungsgl. */
/* für einen Stab unter Gewichtskraft erstellt*/
/*******************************************************/
Declarations
Für Maxima brauchen wir einige Deklarationen.
Der maximale Exponent des Ansatz-Polynoms ist drei - dann fällt die Näherungslösung mit der analytischen Lösung zusammen.
Hier wählen wir
- (im Maximaskipt I=3)
/*******************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare("δW", alphabetic);
declare("δA", alphabetic);
declare("δΠ", alphabetic);
declare("δQ", alphabetic);
declare("δu", alphabetic);
/*******************************************************/
/* parameter */
I : 3; /* max: 3*/
Formfuctions
Für die Formfunktionen wählen wir
- > ,
also für I=2
und entsprechend
- .
/* coordinates and their variations */
Q : makelist( U[i],i,1,I);
δQ : makelist(δU[i],i,1,I);
/* trial functions */
Phi : [(x/l)^1,(x/l)^2,(x/l)^3];
/* Ansatz */
u : sum( Q[i]*Phi[i],i,1,I);
δu : sum(δQ[i]*Phi[i],i,1,I);
Equilibrium Conditions
Die Gleichgewichtsbedingung
liefert
- .
/* Equilibrium */
δΠ : E*A*integrate(diff(u,x)*diff(δu,x),x,0,l);
δA : integrate(rho*g*A*δu, x,0,l);
Solving
Die Gleichgewichtsbedingungen folgen daraus zu
und somit
eom : makelist(-coeff(expand(δA-δΠ),c)=0,c,δQ);
sol: solve(eom, Q)[1];
Post-Processing
Und wir tragen die Ergebnisse auf für die numerische Näherungslösung
gegen die exakte Lösung auf:
/* plot results*/
toPlot: append([xi*(1-xi/2)],
[ expand(subst(xi*l,x,subst(sol,sum(Q[i]*Phi[i],i,1,I)/(rho*g*l^2/E))))],
makelist( subst(xi*l,x,subst(sol, Q[i]*Phi[i] /(rho*g*l^2/E))), i,1,I));
plot2d(toPlot, [xi,0,1], [xlabel, "xi→"], [ylabel, "u/((g*l^2*rho)/E)→"],
[legend, "exact", "approximated", "first order", "second order", "third order"],
[title, sconcat("I = ",I)]);
Links
- ...
Literature
- ...