Gelöste Aufgaben/W8Zt: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
h
[[Category:Gelöste Aufgaben]]
[[Datei:W8Zt-31.png|mini|Parameterstudie: Auslenkung ''w(a)'' des Kraft-Einleitungspunktes]]
[[Category:Numerische Lösung]]
[[Category:Randwertproblem]]
[[Category:Prinzip der virtuellen Verrückungen]]
[[Category:Biege-Belastung]][[Category:Euler-Bernoulli-Balken]]
[[Category:Rayleigh-Ritz-Prinzip]]
[[Category:Maxima‎]]
 
==Aufgabenstellung==
Zu den tabellierten [[Sources/Lexikon/Euler-Bernoulli-Balken/Standard-Lösungen#Einzellast, doppeltgelenkige Lagerung|Standardlösungen für den Euler-Bernoulli-Blaken]] berechnen wir eine Näherungslösung für einen beidseitig gelenkig gelagerten Euler-Bernoulli-Balken:
 
<onlyinclude>
[[Datei:W8Zt-01.png|250px|left|mini|Caption]]
Gesucht ist eine Lösung in Anlehnung an das Verfahren von Ritz - bei dem wir mit Formfunktionen arbeiten, die sich über die gesamte Balkenlänge erstrecken, wir aber im dann mit dem Prinzip der virtuellen Verrückungen arbeiten.
</onlyinclude>
 
Üblich ist bei [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Im Vergleich: das Verfahren von Ritz und die Methode der Finite Elemente|Verfahren von Rayleigh-Ritz]] nämlich sonst das [[Werkzeuge/Gleichgewichtsbedingungen/Arbeitsprinzipe der Analytischen Mechanik/Prinzip vom Minimum der Potentiellen Energie|Prinzip vom Minimum der Potentiellen Energie]]. Die Lösung nach dem Standardverfahren finden Sie hier in [[Gelöste Aufgaben/W8Zu|W8Zu]].
 
== Lösung mit Maxima ==
Mit dem [[Sources/Lexikon/Föppl-Symbol|Föppl-Symbol "<>"]], sowie
 
::<math>\alpha = a/\ell</math>, <math>\beta = 1-\alpha</math> und <math>\xi = x/\ell</math>
 
ist die analytische Lösung:
 
::<math>EI w(x) = \frac{\displaystyle F \ell^3}{\displaystyle 6}\left[ \beta \xi ( 1-\beta^2-\xi^2)+<\xi-\alpha>^3 \right]</math>.
 
Bei dieser Lösung hat die [[Sources/Lexikon/unabhängige Koordinaten|unabhängige Koordinate]] ''x'' ihren Ursprung in ''A'' - wir verwenden unten einen anderen Ursprung!
 
Mit den passenden Ansatzfunktionen nach Ritz berechnen Sie eine Näherungslösung des Problems.
 
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Header
|text=
Hier arbeiten wir mit [[Werkzeuge/Software/Maxima|Maxima]].
|code=
<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  */
/*              two polynomial trialfunctions          */
/*******************************************************/
</syntaxhighlight>
}}
 
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Declarations
|text=
Wir definieren zunächst die Symbole für die virtuellen Arbeiten und die virtuellen Verrückungen - die in Maxima nicht standardmäßig verfügbar sind.
 
Die Annahme ''ℓ>0'' brauchen wir, damit Maxima Wurzel-Ausdrücke mit diesem Parameter richtig vereinfachen kann.
|code=
<syntaxhighlight lang="lisp" line start=1>
/* declare variational variables - see 6.3 Identifiers */
declare("δW", alphabetic);
declare("δA", alphabetic);
declare("δΠ", alphabetic);
declare("δV", alphabetic);
declare("δΨ", alphabetic);
declare("δw", alphabetic);
 
/* declarations */
assume(l>0);
</syntaxhighlight>
}}
<!-------------------------------------------------------------------------------->
 
 
{{MyCodeBlock|title=Formfunctions
|text=
Als [[Sources/Lexikon/unabhängige Koordinaten|unabhängige Koordinaten]] des Balkens wählen wir "''x''" entlang der [[Sources/Lexikon/Euler-Bernoulli-Balken/Neutrale Faser|Neutralen Faser]] mit Ursprung in der Mitte zwischen A und B.
 
Wir entscheiden uns zunächst für zwei abhängige Koordinaten des Systems und deren Variationen (''δ'')
 
::<math>
\underline{Q} = \left(\begin{array}{c}V\\\Psi\end{array}\right), \delta\underline{Q} = \left(\begin{array}{c}\delta V\\\delta \Psi\end{array}\right), </math>
 
[[Datei:W8Zt-11.png|mini|Koordinaten]]
[[Datei:W8Zt-11.png|mini|Koordinaten]]
[[Datei:W8Zt-12.png|mini|Trial-Functions]]
und wählen ''V'' und ''ψ''  als die Verschiebung und Verdrehung (=Neigung) des Querschnitts im Punkt ''x''=0 des Balkens.
[[Datei:W8Zt-01.png|mini|Lageplan]]
 
[[Datei:W8Zt-32.png|mini|Vergleich der Biegelinie für analytische / numerische Lösung]]
Jetzt brauchen wir zwei [[Sources/Lexikon/Ansatzfunktion|Ansatzfunktionen]], die unseren Koordinaten ''V'' und ''ψ'' entsprechen. Wir wollen diese beiden anschaulich denken können - wir wählen einfache Polynome: eine achsensymmetrische und eine punktsymmetrische Funktion mit den noch unbestimmten Konstanten ''c<sub>ij</sub>'':
 
* <math>{{v}_{1}}\left( x\right) :={{c}_{1,2}}\cdot {{x}^{2}}+{{c}_{1,0}}</math>
* <math>v_{2} (x) := c_{2,3} \cdot x^3+c_{2,1} \cdot x</math>
 
Diese beiden Funktionen müssen
 
# [[Sources/Lexikon/Geometrische Randbedingungen|Geometrische Randbedingungen]] erfüllen und
# jeweils mit den Koordinaten ''V'' und ''ψ''  verknüpft werden.
 
Die zugehörigen Gleichungen (= die Randbedingungen) sind
 
* <math>{{c}_{1,0}}=V,\frac{\displaystyle {{c}_{1,2}}\cdot {{\ell}^{2}}}{\displaystyle 4}+{{c}_{1,0}}=0</math> und
* <math>{{c}_{2,1}}=\Psi,\frac{\displaystyle {{c}_{2,3}}\cdot {{\ell}^{3}}}{\displaystyle 8}+\frac{\displaystyle {{c}_{2,1}}\cdot \ell}{\displaystyle 2}=0</math>
 
mit der Lösung
 
::<math>{{c}_{1,0}}=V,{{c}_{1,2}}=-\frac{\displaystyle 4\cdot V}{{{\displaystyle \ell}^{2}}},{{c}_{2,1}}=\Psi,{{c}_{2,3}}=-\frac{\displaystyle 4\cdot \Psi}{\displaystyle {{\ell}^{2}}}</math>
 
Anstatt der exakten, bekannten Lösung, verwenden wir in diesem Näherungsansatz also nun die Funktion
 
::<math>\mathrm{w}\left( x\right) =-\frac{\displaystyle 4\cdot {{x}^{2}}\cdot V}{{\displaystyle {\ell}^{2}}}+V-\frac{\displaystyle 4\cdot \Psi\cdot {{x}^{3}}}{{\displaystyle {\ell}^{2}}}+\Psi\cdot x</math>,
 
[[Datei:W8Zt-12.png|mini|Trial-Functions]]die beiden Koordinaten ''V'' und ''ψ'' müssen wir noch bestimmen. Die Funktionen, die zu  ''V'' und ''ψ'' gehören, sind rechts aufgetragen:
 
Klar ist: die exakte Lösung dieses Lastfalls ist eine Funktion, die im [[Sources/Lexikon/Querkraftverlauf|Querkraftverlauf]] am Kraftangriffspunkt (''x=a - ℓ/2'') einen Sprung hat. Dagegen ist der Querkraftverlauf unserer Näherungslösung stetig differenzierbar und obendrauf noch konstant!
|code=
<syntaxhighlight lang="lisp" line start=1>
/**** define form functions ***/
/* coordinates */
coords : [[V,Psi], [δV,δΨ]];
 
/* generic polynomials */
define(v[1](x),sum(c[1,2*i]*x^(2*i),i,0,1));
define(v[2](x),sum(c[2,(2*i+1)]*x^(2*i+1),i,0,1));
 
/* solve for c's to comply with geometric boundary conditions      */
coeffs : append(solve([v[1](0)=V,v[1](+l/2)=0],[c[1,0],c[1,2]])[1],
                solve([subst([x=0],diff(v[2](x),x))=Psi,v[2](+l/2)=0],[c[2,1],c[2,3]])[1]);
 
/* employ in polynomials */
forms : [w(x)  = expand(subst(coeffs, sum(v[i](x),i,1,2)))];
forms : append(forms,
                [δw(x) = subst(makelist(coords[1][i]=coords[2][i],i,1,2),subst(forms,w(x)))]);
trials: subst([x=l*xi],makelist(coeff(subst(forms,w(x)), coords[1][i]),i,1,2));
 
plot2d( [trials[1],trials[2]/l],[xi,-1/2,+1/2], [legend, "φ[1]","φ[2]"]);
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Equilibrium Conditions
|text=
Mit dem [[Werkzeuge/Gleichgewichtsbedingungen/Arbeitsprinzipe der Analytischen Mechanik/Prinzip der virtuellen Verrückungen|Prinzip der virtuellen Verrückungen]] ist die Gleichgewichtsbedingung immer
 
::<math>\delta W=\delta A-\delta \Pi</math>
 
Mit den Beiträgen
 
::<math>\delta A=F\cdot \delta w\left( {{x}_{F}}\right) ,\delta\Pi=\int_{-\frac{\ell}{2}}^{\frac{\ell}{2}}\left( \frac{{{d}^{2}}}{d\,{{x}^{2}}}\cdot w\left( x\right) \right) \cdot \left( \frac{{{d}^{2}}}{d\,{{x}^{2}}}\cdot \delta w \left( x\right) \right) dx\cdot EI</math>
 
und dem Einsetzen der Ansatzfunktionen und deren Variation finden wir
 
::<math>\begin{array}{ll}\delta W = & -\frac{\displaystyle \left( 64\cdot EI \cdot V+ ({{\alpha}^{2}}-1) \cdot {{\ell}^{3}}\cdot F\right)}{\displaystyle {\ell}^{3}} \cdot \delta V  \\ &+ \frac{\displaystyle {{\ell}^{2}}\cdot \left( \alpha \cdot ({{\alpha}^{2}}-1) \cdot {{\ell}^{2}}\cdot F+96\cdot \Psi\cdot EI \right)}{\displaystyle 2\cdot {{\ell}^{3}}} \cdot \delta\Psi \end{array}</math>
 
Achtung: hier bezeichnet nun ''α=-1'' den Punkt A, ''α=+1'' den Punkt B.
 
Diese virtuelle Arbeit des Gesamtsystems spalten wir jetzt nach den [[Sources/Lexikon/virtuelle Verrückung|virtuellen Verrückungen]] auf und erhalten zwei unabhängige Gleichungen in ''V'' und ''ψ'':
 
::<math>\begin{array}{cc}-\frac{\displaystyle \left( {{\alpha}^{2}}-1\right) \cdot {{\ell}^{3}}\cdot F+64\cdot EI \cdot V}{\displaystyle {{\ell}^{3}}}&=0\\-\frac{\displaystyle 96\cdot \Psi\cdot EI+\left( {{\alpha}^{3}}-\alpha\right) \cdot {{\ell}^{2}}\cdot F}{\displaystyle  2\cdot \ell}&=0\end{array}</math>
 
Und die können wir leicht lösen:
|code=
<syntaxhighlight lang="lisp" line start=1>
/* Virtual Work of system (equilibrium condition) */
parts : [/* virtual work of implied external force F*/
        δA = F*δw(x[F]),
        /*virt. strain energy*/
        δΠ = integrate(EI*diff(w(x),x,2)*diff(δw(x),x,2),x,-l/2,+l/2)];
parts : subst([δw(x[F]) = subst([x=\alpha*l/2], subst(forms,δw(x)))],parts);
parts : subst(forms,parts);
 
PvV : δW = δA-δΠ;
PvV : subst(forms,subst(parts,PvV));
/* execute differntiation and integration of δW */
PvV : expand(ev(PvV,nouns));
 
/* pick individual equations */
equs : makelist(coeff(subst(PvV,δW),coords[2][i]),i,1,2);
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Solve
|text=
In Matrix-Schreibweise stellen wir diesen Ausdruck [[Werkzeuge/Lösungsbausteine der Mathematik/Gewöhnliche lineare Gleichungssysteme|gewöhnliches lineares Gleichungssystem]] dar:
 
::<math>\underline{\underline{A}}\cdot\underline{x}=\underline{b}</math>
 
mit
 
::<math>\underline{\underline{A}}=EI \cdot \begin{pmatrix}-\frac{\displaystyle 64}{\displaystyle {{\ell}^{3}}} & 0\\ 0 & -\frac{\displaystyle 48}{\displaystyle \ell}\end{pmatrix},\underline{b}=F\cdot (\alpha^2-1)\cdot \begin{pmatrix}{1}\\ \frac{\displaystyle \alpha\cdot \ell}{\displaystyle 2}\end{pmatrix}</math>
 
sieht das Gleichungssystem wieder handlich aus, die Lösung ist:
 
::<math>V=-\frac{\displaystyle \left( {{\alpha}^{2}}-1\right) \cdot {{\ell}^{3}}}{\displaystyle 64\cdot EI}\cdot F,\;\;\;\Psi=-\frac{\displaystyle \left( {{\alpha}^{3}}-\alpha\right) \cdot {{\ell}^{2}}}{\displaystyle 96\cdot EI}\cdot F</math>
 
{{MyAttention|title=Und wissen Sie auch ....|text=... warum A hier eine Diagonalmatrix ist? Schauen Sie sich die Koeffizienten bzgl. von ''α'' an - was erkennen Sie?}}
|code=
<syntaxhighlight lang="lisp" line start=1>
/* Mathematical Model */
ACM : augcoefmatrix(equs,coords[1]);
/* ordinary lineary system of equations*/
ole : [A = submatrix(ACM,3), b = -col(ACM,3)];
/* -> here we employ the shortcut via "solve" */
sol: solve(equs,coords[1])[1];
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Post-Process
|text=
Die Lösung normieren wir noch für das Post-Processing mit dem Fakto ''s'' - der analytischen maximalen Auslenkung im symmetrischen Belastungsfall (wenn ''F'' in der Mitte zwischen A und B angreift):
 
::<math>s = \frac{\displaystyle \ell^3}{\displaystyle 48 EI}\cdot F</math>
 
Wir tragen sie für verschiedene Kraft-Angriffspunkte (''α=-1,...α=+1'') auf:[[Datei:W8Zt-31.png|mini|Parameterstudie: Auslenkung ''w(a)'' des Kraft-Einleitungspunktes|alternativtext=|ohne]]
|code=
<syntaxhighlight lang="lisp" line start=1>
/* plot results */
m : 2; scale : F*l^3/(EI*48);
leg : append([legend],makelist(simplode(["α=",(-m+i)/m]),i,0,2*m));
plotfct : expand(subst([x=xi*l],subst(sol,subst(forms,w(x)/scale))));
toplot : makelist(subst([alpha=(-m+i)/m],plotfct),i,0,2*m);
plot2d(subst([alpha=0],toplot),[xi,-1/2,+1/2], [y,-0.05,1.0], leg,
[title, "displacement w for different positions of F"]);
</syntaxhighlight>
}}
 
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Post-Process - Vergleich mit analytischer Lösung
|text=
Und wir schauen uns für ''α=1/2'' die Verschiebung der Ritz- und analytischen-Lösung im Vergleich an:
[[Datei:W8Zt-32.png|mini|none|Vergleich der Biegelinie für analytische / numerische Lösung]]
 
{{MyTip|title=Und wissen Sie auch ...|text=... wie der Verlauf der Querkraft im Vergleich Ritz / analytisch aussieht?}}
|code=
<syntaxhighlight lang="lisp" line start=1>
/* Vergleich mit analytischer Lösung */
foppl(xi,alpha) := if (xi < alpha) then 0 else xi-alpha;
anplot : F*l^3/(6*EI)*(beta*xi*(1-beta^2-xi^2)+foppl(xi,alpha)^3)/scale;
anplot : subst([beta=1-alpha],anplot);
ritz: subst([xi=xi-1/2],subst(alpha=1/2,expand(subst(sol,makelist(trials[i]*coords[1][i]/scale,i,1,2)))));
 
plot2d([subst([alpha=3/4],anplot),ritz[1]+ritz[2], ritz[1],ritz[2]],[xi,0,1],
        [legend, "analytic", "Ritz", "V-part", "Ψ-part"],
        [title, "Vergleich analytische / Ritz - Lösung"])
</syntaxhighlight>
}}
 
 
<hr/>
<'''Links'''
* ...
 
'''Literature'''
* ...

Aktuelle Version vom 19. April 2021, 10:07 Uhr


Aufgabenstellung

Zu den tabellierten Standardlösungen für den Euler-Bernoulli-Blaken berechnen wir eine Näherungslösung für einen beidseitig gelenkig gelagerten Euler-Bernoulli-Balken:


Caption

Gesucht ist eine Lösung in Anlehnung an das Verfahren von Ritz - bei dem wir mit Formfunktionen arbeiten, die sich über die gesamte Balkenlänge erstrecken, wir aber im dann mit dem Prinzip der virtuellen Verrückungen arbeiten.


Üblich ist bei Verfahren von Rayleigh-Ritz nämlich sonst das Prinzip vom Minimum der Potentiellen Energie. Die Lösung nach dem Standardverfahren finden Sie hier in W8Zu.

Lösung mit Maxima

Mit dem Föppl-Symbol "<>", sowie

,  und

ist die analytische Lösung:

.

Bei dieser Lösung hat die unabhängige Koordinate x ihren Ursprung in A - wir verwenden unten einen anderen Ursprung!

Mit den passenden Ansatzfunktionen nach Ritz berechnen Sie eine Näherungslösung des Problems.


Header

Hier arbeiten wir 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   */
/*              two polynomial trialfunctions          */
/*******************************************************/




Declarations

Wir definieren zunächst die Symbole für die virtuellen Arbeiten und die virtuellen Verrückungen - die in Maxima nicht standardmäßig verfügbar sind.

Die Annahme ℓ>0 brauchen wir, damit Maxima Wurzel-Ausdrücke mit diesem Parameter richtig vereinfachen kann.


/* declare variational variables - see 6.3 Identifiers */
declare("δW", alphabetic);
declare("δA", alphabetic);
declare("δΠ", alphabetic);
declare("δV", alphabetic);
declare("δΨ", alphabetic);
declare("δw", alphabetic);

/* declarations */
assume(l>0);




Formfunctions

Als unabhängige Koordinaten des Balkens wählen wir "x" entlang der Neutralen Faser mit Ursprung in der Mitte zwischen A und B.

Wir entscheiden uns zunächst für zwei abhängige Koordinaten des Systems und deren Variationen (δ)

Koordinaten

und wählen V und ψ  als die Verschiebung und Verdrehung (=Neigung) des Querschnitts im Punkt x=0 des Balkens.

Jetzt brauchen wir zwei Ansatzfunktionen, die unseren Koordinaten V und ψ entsprechen. Wir wollen diese beiden anschaulich denken können - wir wählen einfache Polynome: eine achsensymmetrische und eine punktsymmetrische Funktion mit den noch unbestimmten Konstanten cij:

Diese beiden Funktionen müssen

  1. Geometrische Randbedingungen erfüllen und
  2. jeweils mit den Koordinaten V und ψ  verknüpft werden.

Die zugehörigen Gleichungen (= die Randbedingungen) sind

  • und

mit der Lösung

Anstatt der exakten, bekannten Lösung, verwenden wir in diesem Näherungsansatz also nun die Funktion

,
Trial-Functions

die beiden Koordinaten V und ψ müssen wir noch bestimmen. Die Funktionen, die zu V und ψ gehören, sind rechts aufgetragen:

Klar ist: die exakte Lösung dieses Lastfalls ist eine Funktion, die im Querkraftverlauf am Kraftangriffspunkt (x=a - ℓ/2) einen Sprung hat. Dagegen ist der Querkraftverlauf unserer Näherungslösung stetig differenzierbar und obendrauf noch konstant!


/**** define form functions ***/
/* coordinates */
coords : [[V,Psi], [δV,δΨ]];	

/* generic polynomials */
define(v[1](x),sum(c[1,2*i]*x^(2*i),i,0,1));
define(v[2](x),sum(c[2,(2*i+1)]*x^(2*i+1),i,0,1));

/* solve for c's to comply with geometric boundary conditions      */
coeffs : append(solve([v[1](0)=V,v[1](+l/2)=0],[c[1,0],c[1,2]])[1],
                solve([subst([x=0],diff(v[2](x),x))=Psi,v[2](+l/2)=0],[c[2,1],c[2,3]])[1]);

/* employ in polynomials */
forms : [w(x)  = expand(subst(coeffs, sum(v[i](x),i,1,2)))];
forms : append(forms,
                 [δw(x) = subst(makelist(coords[1][i]=coords[2][i],i,1,2),subst(forms,w(x)))]);
trials: subst([x=l*xi],makelist(coeff(subst(forms,w(x)), coords[1][i]),i,1,2));

plot2d( [trials[1],trials[2]/l],[xi,-1/2,+1/2], [legend, "φ[1]","φ[2]"]);




Equilibrium Conditions

Mit dem Prinzip der virtuellen Verrückungen ist die Gleichgewichtsbedingung immer

Mit den Beiträgen

und dem Einsetzen der Ansatzfunktionen und deren Variation finden wir

Achtung: hier bezeichnet nun α=-1 den Punkt A, α=+1 den Punkt B.

Diese virtuelle Arbeit des Gesamtsystems spalten wir jetzt nach den virtuellen Verrückungen auf und erhalten zwei unabhängige Gleichungen in V und ψ:

Und die können wir leicht lösen:


/* Virtual Work of system (equilibrium condition) */
parts : [/* virtual work of implied external force F*/
         δA = F*δw(x[F]),
         /*virt. strain energy*/
         δΠ = integrate(EI*diff(w(x),x,2)*diff(δw(x),x,2),x,-l/2,+l/2)];
parts : subst([δw(x[F]) = subst([x=\alpha*l/2], subst(forms,δw(x)))],parts);
parts : subst(forms,parts);

PvV : δW = δA-δΠ;
PvV : subst(forms,subst(parts,PvV));
/* execute differntiation and integration of δW */
PvV : expand(ev(PvV,nouns));

/* pick individual equations */
equs : makelist(coeff(subst(PvV,δW),coords[2][i]),i,1,2);




Solve

In Matrix-Schreibweise stellen wir diesen Ausdruck gewöhnliches lineares Gleichungssystem dar:

mit

sieht das Gleichungssystem wieder handlich aus, die Lösung ist:

Und wissen Sie auch ....:
... warum A hier eine Diagonalmatrix ist? Schauen Sie sich die Koeffizienten bzgl. von α an - was erkennen Sie?

/* Mathematical Model */
ACM : augcoefmatrix(equs,coords[1]);
/* ordinary lineary system of equations*/
ole : [A = submatrix(ACM,3), b = -col(ACM,3)];
/* -> here we employ the shortcut via "solve" */
sol: solve(equs,coords[1])[1];




Post-Process

Die Lösung normieren wir noch für das Post-Processing mit dem Fakto s - der analytischen maximalen Auslenkung im symmetrischen Belastungsfall (wenn F in der Mitte zwischen A und B angreift):

Wir tragen sie für verschiedene Kraft-Angriffspunkte (α=-1,...α=+1) auf:

Parameterstudie: Auslenkung w(a) des Kraft-Einleitungspunktes

/* plot results */
m : 2; scale : F*l^3/(EI*48);
leg : append([legend],makelist(simplode(["α=",(-m+i)/m]),i,0,2*m));
plotfct : expand(subst([x=xi*l],subst(sol,subst(forms,w(x)/scale))));
toplot : makelist(subst([alpha=(-m+i)/m],plotfct),i,0,2*m);
plot2d(subst([alpha=0],toplot),[xi,-1/2,+1/2], [y,-0.05,1.0], leg,
		[title, "displacement w for different positions of F"]);




Post-Process - Vergleich mit analytischer Lösung

Und wir schauen uns für α=1/2 die Verschiebung der Ritz- und analytischen-Lösung im Vergleich an:

Vergleich der Biegelinie für analytische / numerische Lösung
Und wissen Sie auch ...:
... wie der Verlauf der Querkraft im Vergleich Ritz / analytisch aussieht?

/* Vergleich mit analytischer Lösung */
foppl(xi,alpha) := if (xi < alpha) then 0 else xi-alpha;
anplot : F*l^3/(6*EI)*(beta*xi*(1-beta^2-xi^2)+foppl(xi,alpha)^3)/scale;
anplot : subst([beta=1-alpha],anplot);
ritz: subst([xi=xi-1/2],subst(alpha=1/2,expand(subst(sol,makelist(trials[i]*coords[1][i]/scale,i,1,2)))));

plot2d([subst([alpha=3/4],anplot),ritz[1]+ritz[2], ritz[1],ritz[2]],[xi,0,1],
        [legend, "analytic", "Ritz", "V-part", "Ψ-part"],
        [title, "Vergleich analytische / Ritz - Lösung"])





<Links

  • ...

Literature

  • ...