Gelöste Aufgaben/W8Zt: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:


<onlyinclude>
<onlyinclude>
[[Datei:Screenshot 20210111-063733~2.png|100px|left|mini|Caption]]
[[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.
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>
</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]].
 
Ü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 ==
== Lösung mit Maxima ==
Mit dem [[Sources/Lexikon/Föppl-Symbol|Föppl-Symbol "<>"]],  
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>
::<math>\alpha = a/\ell</math>, <math>\beta = 1-\alpha</math> und <math>\xi = x/\ell</math>


ist die analytische Lösung:
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>.
::<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!
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!
Zeile 29: Zeile 30:
Mit den passenden Ansatzfunktionen nach Ritz berechnen Sie eine Näherungslösung des Problems.  
Mit den passenden Ansatzfunktionen nach Ritz berechnen Sie eine Näherungslösung des Problems.  


==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Header
{{MyCodeBlock|title=Header
|text=Text
|text=
Hier arbeiten wir mit [[Werkzeuge/Software/Maxima|Maxima]].
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}


==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Declarations
{{MyCodeBlock|title=Declarations
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
<!-------------------------------------------------------------------------------->


==tmp==


<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Formfunctions
{{MyCodeBlock|title=Formfunctions
|text=Text
|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]]
und wählen ''V'' und ''ψ''  als die Verschiebung und Verdrehung (=Neigung) des Querschnitts im Punkt ''x''=0 des Balkens.
 
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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Equilibrium Conditions
{{MyCodeBlock|title=Equilibrium Conditions
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
{{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=Solve
{{MyCodeBlock|title=Post-Process
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}


==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Post-Process
{{MyCodeBlock|title=Post-Process - Vergleich mit analytischer Lösung
|text=Text
|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=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+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>
</syntaxhighlight>
}}
}}
Zeile 102: Zeile 253:
'''Literature'''
'''Literature'''
* ...
* ...
[[Datei:W8Zt-31.png|mini|Parameterstudie: Auslenkung ''w(a)'' des Kraft-Einleitungspunktes]]
[[Datei:W8Zt-11.png|mini|Koordinaten]]
[[Datei:W8Zt-12.png|mini|Trial-Functions]]
[[Datei:W8Zt-01.png|mini|Lageplan]]
[[Datei:W8Zt-32.png|mini|Vergleich der Biegelinie für analytische / numerische Lösung]]

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

  • ...