Gelöste Aufgaben/TC13: Unterschied zwischen den Versionen

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


==Aufgabenstellung==
==Aufgabenstellung==
SOME TEXT
Das System ist eine Variante von Aufgabe [[Gelöste Aufgaben/TC12|TC12]]. Hier ist eine Näherungslösung mit der [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode|Methode der Finiten Elemente]] gefragt. Das Sytem besteht aus zwei Sektionen mit den Längen ''ℓ<sub>1</sub>'' bzw. ''ℓ<sub>2</sub>'' sowie den Flächenmomenten ''I<sub>1</sub>'' bzw. ''I<sub>2</sub>''. Sektion ''AB'' ist durch eine konstante Streckenlast ''q<sub>0</sub>'' belastet, in ''B'' wirkt das Moment ''M<sub>B0</sub>''. Der Stab ist in ''A'' durch ein gelenkiges Festlager gelagert. In ''C'' ist das Stabende fest mit dem Umfang einer Rolle vom Radius ''r'' verbunden, die in ''D'' frei drehbar gelagert ist. In ''B'' sind die beiden Sektionen fest miteinander verbunden. Die Feder in ''B'' ist eine Translationsfeder mit der Steifigkeit ''<sub> </sub>k<sub>B</sub>''.


<onlyinclude>
<onlyinclude>
[[Datei:TC12-01.png|300px|left|mini|Lageplan]]
[[Datei:TC12-01.png|300px|left|mini|Lageplan]]
Gesucht ist "SOME EXPLANATION"
Gesucht ist die FEM-Lösung mit zwei Elementen für den Euler-Bernoulli-Balken.
</onlyinclude>
</onlyinclude>
Die Systemparameter sind die gleichen wie in TC12, das dort gesuchte Flächenmoment ''I<sub>1</sub>'' übernehmen wir zu
<math>I_1 = 54\,000 \text{ mm}^4</math>.


== Lösung mit Maxima ==
== Lösung mit Maxima ==
Lorem Ipsum ....


==tmp==
<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Title
{{MyCodeBlock|title=Header
|text=Text
|text=
Wir suchen eine Lösung mit den [[Sources/Anleitungen/FEM-Formulierung für den Euler-Bernoulli-Balken|Standard-Trial-Functions (Hermitesche-Polynome) für einen Euler-Bernoulli-Balken]]. Aufpassen müssen wir am Rand "''C''". Hier sind Verschiebung und Verdrehung durch die Rolle gekoppelt. Die Element-Steifigkeitsmatrix müssen wir passend umschreiben.
|code=
<syntaxhighlight lang="lisp" line start=1>
/*******************************************************/
/* MAXIMA script                                      */
/* version: wxMaxima 15.08.2                          */
/* author: Andreas Baumgart                            */
/* last updated: 2018-04-15                            */
/* ref: TM-C, Labor 4                                  */
/* description: finds the FE solution for              */
/*              lab problem #4                        */
/*******************************************************/
 
/* declare variational variables - see 6.3 Identifiers */
declare("δA", alphabetic);
declare("δΠ", alphabetic);
declare("δW", alphabetic);
declare("δΦ", alphabetic);
declare("δw", alphabetic);
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Declarations
|text=
Wir übernehmen die Systemparameter aus [[Gelöste Aufgaben/TC12|TC12]] zu
 
::<math>\begin{array}{l} \displaystyle {\ell_{1}}=1000\cdot \mathit{mm},\\ \displaystyle {\ell_{2}}=\frac{{\ell_{1}}}{2},\\ \displaystyle r=\frac{{\ell_{1}}}{4},\\ \displaystyle E=\frac{210000.0\cdot N}{{{\mathit{mm}}^{2}}},\\ \displaystyle {{I}_{1}}=54000\cdot {{\mathit{mm}}^{4}},\\ \displaystyle {{I}_{2}}=2\cdot {{I}_{1}},\\ \displaystyle {{k}_{B}}=\frac{3\cdot {{I}_{1}}\cdot E}{{\ell_{1}^{3}}},\\ \displaystyle {{q}_{0}}=\frac{10\cdot N}{\mathit{mm}},\\ \displaystyle {{M}_{B}}={{q}_{0}}\cdot {\ell_{1}^{2}} \end{array}</math>,
 
und wählen als Referenzgröße ''w<sub>ref</sub>'' für die Auslenkung des Balkens die maximale Verschiebung eines [[Sources/Lexikon/Standard-Lösungen|Kragbalkens unter konstanter Streckenlast]]:
 
::<math>\displaystyle w_{ref}=\frac{q_o\;\ell_1^4}{8\;E\,I_1}</math>.
|code=
<syntaxhighlight lang="lisp" line start=1>
/*** declarations ***/
assume(l[i]>0);
 
/* system parameter */
units  : [mm = m/1000, cm = m/100];
params : [l[1]=1000*mm, l[2] = l[1]/2, r=l[1]/4,
          E    = 2.1*10^5*N/mm^2,
          I[1] = 54000*mm^4, I[2]=2*I[1],
          k[B] = 3*E*I[1]/l[1]^3,
          q[0]=10*N/mm, M[B]=q[0]*l[1]^2];
 
params : subst(units,makelist(lhs(params[i])=subst(params,rhs(params[i])),i,1,length(params)));
 
/* kinematics of boundary condition at "C" */
kinematics : [W[2]=-r*Φ[2], δW[2] = -r*δΦ[2]];
 
/* max. displacement of cantilevered beam under load q[0] */
dimless : [w[ref] = q[0]*l[1]^4/(8*E*I[1])];
print(subst(params,dimless))$
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Formfunctions
|text=
Die Trial-Functions je Element "''i''" zur Komposition der [[Randwertprobleme/Methoden zur Lösung von Randwertproblemen/Finite Elemente Methode/FEM: Trial-Functions für kubische Ansatz-Polynome|Form-Funktion]] kopieren wir aus Finite Elemente Methode zu
 
::<math>\begin{array}{l} \phi_1 = 2\cdot {{\xi}^{3}}-3\cdot {{\xi}^{2}}+1,\\ \phi_2 = {{\ell}_{i}}\cdot \left( {{\xi}^{3}}-2\cdot {{\xi}^{2}}+\xi\right) ,\\ \phi_3 = 3\cdot {{\xi}^{2}}-2\cdot {{\xi}^{3}},\\ \phi_4 = {{\ell}_{i}}\cdot \left( {{\xi}^{3}}-{{\xi}^{2}}\right) \end{array}</math>,
 
die Koordinaten der Verschiebung sind
 
::<math>Q_i = \left(\begin{array}{l}W_{i-1}\\\Phi_{i-1}\\W_i\\\Phi_i\end{array}\right)</math>.
 
Damit ist
 
::<math>\begin{array}{lcll} w_i(x_i) = & &W_{i-1} &\cdot \left( 2\cdot {{\xi}^{3}}-3\cdot {{\xi}^{2}}+1 \right)\\ & +& \Phi_{i-1} &\cdot {{\ell}_{i}}\cdot  \left( {{\xi}^{3}}-2\cdot {{\xi}^{2}}+\xi\right) \\ &+& W_i &\cdot \left( 3\cdot {{\xi}^{2}}-2\cdot {{\xi}^{3}}\right)\\&+& \Phi_i &\cdot {{\ell}_{i}}\cdot \left( {{\xi}^{3}}-{{\xi}^{2}}\right) \end{array}</math>.
|code=
<syntaxhighlight lang="lisp" line start=1>
/**** define form functions ***/
/* coordinates */
coords : [[ W[i-1], Φ[i-1], W[i], Φ[i]],
          [δW[i-1],δΦ[i-1],δW[i],δΦ[i]]];
 
/* tial-functions */
phi : [ 2*xi^3-3*xi^2+1,
      (xi^3-2*xi^2+xi)*l[i],
        3*xi^2-2*xi^3,
      (xi^3-xi^2)*l[i]];
 
/* form-function */
form : w(xi) = sum(coords[1][j]*phi[j],j,1,4);
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Equilibrium Conditions
|text=
Die Gleichgewichtsbedingungen kommen aus dem [[Werkzeuge/Gleichgewichtsbedingungen/Arbeitsprinzipe der Analytischen Mechanik/Prinzip der virtuellen Verrückungen|Prinzip der virtuellen Verrückungen]] zu
 
::<math>\begin{array}{ll}\delta W &\stackrel{!}{=}0\\&=\delta W_a - \delta \Pi \end{array}</math>.
 
Wir sortieren die Elemente der virtuellen Arbeit nach den virtuellen Koordinaten und den Koordinaten des System und konstruieren daraus das gewöhnliche Gleichungssystem
 
::<math>\underline{\underline{K}}\cdot\underline{Q} = \underline{P}</math>.
 
Die Anteile an der gesamten virtuellen Arbeit kommen aus der virtuellen Formänderungsenergie ''δΠ'' und der virtuellen Arbeit der äußeren Lasten ''δW<sup>a</sup>.''
 
Dabei ist für unsere zwei Elemente ''δΠ = ''δΠ<sub>1</sub> + ''δΠ<sub>2</sub>'''''' mit
 
::<math>\delta \Pi_i = \delta \underline{Q}^T_i \cdot \underline{\underline{k}}_0 \cdot \underline{Q_i}</math>
 
und der Element-Steifigkeitsmatrix
 
::<math>\underline{\underline{k}}_0= \displaystyle \frac{\mathit{EI}}{{{\ell}_{i}^{3}}} \cdot \begin{pmatrix}12 & 6\cdot {{\ell}_{i}} & -12 & 6\cdot {{\ell}_{i}}\\ 6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}}\\ -12 & -6\cdot {{\ell}_{i}} & 12 & -6\cdot {{\ell}_{i}}\\ 6\cdot {{\ell}_{i}} & 2\cdot {{\ell}_{i}^{2}} & -6\cdot {{\ell}_{i}} & 4\cdot {{\ell}_{i}^{2}}\end{pmatrix}
</math>.
 
Für Element 1 können wir diese Matrix direkt übernehmen, das heißt ''k<sub>1</sub> = k<sub>0</sub>'' für i=1.
 
Element 2 birgt eine Tücke: Hier sind Verschiebung ''W<sub>2</sub>'' und Verdrehung ''Φ<sub>2</sub>'' gekoppelt über die Kinematik der Rolle:
 
::<math>W_2 = -r\cdot \Phi_2</math>
 
Damit ist auch die Variation in diesen Koordinaten gekoppelt, also
 
::<math>\delta W_2 = -r\cdot \delta \Phi_2</math>.
 
Mit dieser Beziehung eliminieren wir demnach ''W<sub>2</sub>'' aus der Formulierung der Gleichgewichtsbedingungen. Das Einsetzen der kinematischen Beziehungen in ''δΠ'' liefert nun als Element-Steifigkeitsmatrix
 
::<math>\underline{\underline{k}}_2 = \displaystyle \frac{E\,I_2}{l_2^3} \cdot \begin{pmatrix}12 & 6\cdot {{\ell}_{2}} & 0 & 12\cdot r+6\cdot {{\ell}_{2}}\\ 6\cdot {{\ell}_{2}} & 4\cdot {{\ell}_{2}^{2}} & 0 & 6\cdot {{\ell}_{2}}\cdot r+2\cdot {{\ell}_{2}^{2}}\\ 0 & 0 & 0 & 0\\ 12\cdot r+6\cdot {{\ell}_{2}} & 6\cdot {{\ell}_{2}}\cdot r+2\cdot {{\ell}_{2}^{2}} & 0 & 12\cdot {{r}^{2}}+12\cdot {{\ell}_{2}}\cdot r+4\cdot {{\ell}_{2}^{2}}\end{pmatrix}
</math>,
 
bei der die Elemente der dritten Zeile (zu ''δW<sub>i</sub>'') und der dritten Spalte (zu ''W<sub>i</sub>'') verschwinden.[[Datei:TC13-11.png|mini|Struktur der Steifigkeitsmatrix.]]Wir setzen die Gesamt-Steifigkeitsmatrix ''K'' aus den beiden Element-Steifigkeitsmatrizen so zusammen:
 
Und das ist die anteilige Gesamt-Steifigkeitsmatrix der beiden Balken-Abschnitte:
 
::<math>\underline{\underline{K}}\,=\,\begin{pmatrix}\frac{12\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{3}}} & \frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & -\frac{12\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{3}}} & \frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & 0 & 0\\ \frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{4\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & -\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{2\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & 0 & 0\\ -\frac{12\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{3}}} & -\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{12\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{3}}}+\frac{12\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{3}}} & \frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}-\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & 0 & \frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{3}}}+\frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}\\ \frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{2\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & \frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}-\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{4\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}+\frac{4\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & 0 & \frac{6\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{2\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & \frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{3}}}+\frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}} & \frac{6\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{2\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}} & 0 & \frac{12\cdot {{I}_{2}}\cdot {{r}^{2}}\cdot E}{{{\ell}_{2}^{3}}}+\frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{4\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}\end{pmatrix}
</math>
 
Auch die Feder ist ein elastisches Element und trägt damit eine virtuelle Formänderungsenergie, zu ''δΠ'' hinzu, nämlich
 
::<math>\delta\Pi_3 = k_B\, W_1 \cdot \delta W_1</math>
 
Diesen Beitrag müssen wir in Zeile 3, Spalte 3 hinzuaddieren, also mit der Anweisung
 
::<math>K_{3,3} = K_{3,3} + k_B</math>.
 
Auf der rechten Seite des Gleichungssystem bleiben die Beiträge der virtuellen Arbeiten äußerer Lasten stehen. Dies sind
 
::<math>\delta W^a = \int_{\ell_1} q_0 \cdot \delta w(x) \, dx + M_B\cdot \delta\Phi_1</math>,
 
wir erhalten
 
::<math>\underline{P}\,=\,\begin{pmatrix} \displaystyle \frac{{{q}_{0}}\cdot {{\ell}_{1}}}{2}\\ \displaystyle \frac{{{q}_{0}}\cdot {{\ell}_{1}^{2}}}{12}\\ \displaystyle \frac{{{q}_{0}}\cdot {{\ell}_{1}}}{2}\\ \displaystyle {{M}_{B}}-\frac{{{q}_{0}}\cdot {{\ell}_{1}^{2}}}{12}\\ \displaystyle 0\\\displaystyle 0 \end{pmatrix}</math>.
 
Jetzt fehlen nur noch die Randbedingungen. Wir setzen
 
::<math>W_0 = 0</math>,
 
die kinematische Beziehung
 
::<math>W_2 = -r\cdot \Phi_2</math>
 
haben wir schon eingearbeit - bleibt also nur noch, die entsprechenden Spalten und Zeilen in den Matrizen ''K, Q'' und ''P'' zu eliminieren. Es bleibt das Gleichungssystem
 
::<math>\begin{pmatrix} \frac{4\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & -\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{2\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & 0\\ -\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{12\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{3}}}+\frac{12\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{3}}}+{{k}_{B}} & \frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}-\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{3}}}+\frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}\\  \frac{2\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & \frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}}-\frac{6\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}^{2}}} & \frac{4\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}+\frac{4\cdot {{I}_{1}}\cdot E}{{{\ell}_{1}}} & \frac{6\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{2\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}\\  0 & \frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{3}}}+\frac{6\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}^{2}}} & \frac{6\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{2\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}} & \frac{12\cdot {{I}_{2}}\cdot {{r}^{2}}\cdot E}{{{\ell}_{2}^{3}}}+\frac{12\cdot {{I}_{2}}\cdot r\cdot E}{{{\ell}_{2}^{2}}}+\frac{4\cdot {{I}_{2}}\cdot E}{{{\ell}_{2}}}\end{pmatrix}\,\cdot\,\begin{pmatrix}{{\Phi}_{0}}\\  {{W}_{1}}\\  {{\Phi}_{1}}\\  {{\Phi}_{2}}\end{pmatrix}\,=\,\begin{pmatrix}\frac{{{q}_{0}}\cdot {{\ell}_{1}^{2}}}{12}\\  \frac{{{q}_{0}}\cdot {{\ell}_{1}}}{2}\\  {{M}_{B}}-\frac{{{q}_{0}}\cdot {{\ell}_{1}^{2}}}{12}\\  0\end{pmatrix}
</math>.
|code=
<syntaxhighlight lang="lisp" line start=1>
/**** equilibrium conditions ***/
/* generic stiffness matrix */
k[0] : E*I[i]/l[i]^3*makelist(makelist(
              integrate(
                      diff(phi[i],xi,2)*diff(phi[j],xi,2),
                                              xi,0,1),
                                              j,1,4),i,1,4);
k[0] : funmake('matrix,k[0]);
 
/* element stiffness matrices */
/* element 1 */
k[1] : subst([i=1],k[0]);
/* element 2 */
δΠ[2] : subst([i=2],coords[2].k[0].transpose(coords[1]));
δΠ[2] : expand(subst(kinematics, δΠ[2]));
k[2]  : funmake('matrix,makelist(makelist(coeff(coeff(δΠ[2],subst([i=2],coords[2])[m]),subst([i=2],coords[1])[n]),m,1,4),n,1,4));
 
 
 
 
/* compose system matrix */
NoN : 3; /* Number of Nodes*/
K : zeromatrix(2*NoN,2*NoN);
 
for m:1 thru 4 do
  for n:1 thru 4 do
      (K[  m,  n] : K[  m,  n] + k[1][m,n],
      K[2+m,2+n] : K[2+m,2+n] + k[2][m,n])$
 
/* add spring */
K[3,3] : K[3,3] + k[B]; /* W[1] */
 
/* compose righ-hand-side */
P : zeromatrix(6,1);
for m:1 thru 4 do
    P[m,1] : l[1]*integrate(q[0]*subst([i=1],phi[m]), xi,0,1);
P[4,1] : P[4,1] + M[B];
 
 
/* coordinates of displacement */
Q : matrix([W[0]],[Φ[0]],[W[1]],[Φ[1]],[W[2]],[Φ[2]]);
 
 
/* incorporate geometric boundary conditions */
/* eliminate rows / columns for W[0], Φ[2] (positions 1, 6) */
K : submatrix(1,submatrix(5,K,5),1);
Q : submatrix(1,submatrix(5,Q));
P : submatrix(1,submatrix(5,P));
 
print("k[1] = ", k[1])$
print("k[2] = ", k[2])$
print("K = ", K)$
print("Q = ", Q)$
print("P = ", P)$
 
print(K," * ",Q," = ",P)$
</syntaxhighlight>
}}
 
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Solving
|text=
Auflösen nach ''Q'' liefert
 
::<math>\begin{array}{ll}  {\Phi_{0}}&=-0.0157,\\      W_{1} &=-4.86\cdot {{10}^{-18}}\; \text{m},\\  {\Phi_{1}}&=+0.0682,\\  {\Phi_{2}}&=-0.0262 \end{array}</math>,
 
zusammen mit den <span style="color:green">Randbedingungen</span> also
 
::<math>\begin{array}{ll} {\color{green}{W_0}}&={\color{green}{0}},\\ {\Phi_{0}}&=-0.0157,\\      W_{1} &=-4.86\cdot {{10}^{-18}}\; \text{m},\\  {\Phi_{1}}&=+0.0682,\\ {\color{green}{W_2}}&={\color{green}{+0.00656 \text{ m}}},\\ {\Phi_{2}}&=-0.0262 \end{array}</math>.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/**** solve K Q = P ***/
 
sol[1] : linsolve_by_lu(subst(params,K),subst(params,P))[1]$
sol[1] : makelist(Q[i][1] = sol[1][i][1],i,1,4);
sol[1] : append(subst(params,[W[0]=0, W[2]=-r*subst(sol[1], Φ[2])]), sol[1]);
</syntaxhighlight>
</syntaxhighlight>
}}
}}


<table class="wikitable" style="background-color:white; float: left; margin-right:14px;
<!-------------------------------------------------------------------------------->
">
{{MyCodeBlock|title=Post-Processing
<tr><th></th><th></th></tr>
|text=
<tr><td></td><td></td></tr>
[[Datei:TC13-21.png|mini|Biegelinie ''w(x)'']]Die Auslenkung ''w(x)'' der Querschnitte tragen wir jetzt auf. Für die dimensionslose Darstellung wählen wir aus der analytischen Lösung für den Kragbalken unter konstanter Streckenlast
</table>
 
::<math>\begin{array}{ll}{{w}_{\mathit{ref}}}&\displaystyle =\frac{{{q}_{0}}\cdot {{\ell}_{1}^{4}}}{8\cdot E\,{{I}_{1}}}\\&= 0.11 \text{ m}\end{array}</math>
 
und tragen ''w(x)/w<sub>ref</sub>'' auf:
 
Die maximale Auslenkung des Systems ist dann
 
::<math>\begin{array}{ll}w_{max} &\approx 0.1\cdot 0.11 \text{ m}\\&\approx 11\text{ mm}\end{array}</math>,
 
und das entspricht der Vorgabe aus Aufgabe [[Gelöste Aufgaben/TC12|TC12]].
|code=
<syntaxhighlight lang="lisp" line start=1>
/**** post-process  ***/
f1 : subst([xi=t],subst(params,subst(dimless,expand(subst(sol[1],subst([i=1],subst(form,w(xi)/w[ref])))))));
f2 : subst([xi=t],subst(params,subst(dimless,expand(subst(sol[1],subst([i=2],subst(form,w(xi)/w[ref])))))));
scale : subst(params,(l[2]/l[1]));


plot2d([[parametric,  t,      f1, [t, 0, 1]],
        [parametric, 1+t*scale, f2, [t, 0, 1]]],
      [gnuplot_preamble, "set yrange [] reverse"],
      [legend, "sec. I", "sec. II"],
      [xlabel, "x/l[1] →"], [ylabel, "w/w[ref] →"])$
</syntaxhighlight>
}}


<hr/>
<hr/>

Aktuelle Version vom 9. April 2021, 06:42 Uhr


Aufgabenstellung

Das System ist eine Variante von Aufgabe TC12. Hier ist eine Näherungslösung mit der Methode der Finiten Elemente gefragt. Das Sytem besteht aus zwei Sektionen mit den Längen 1 bzw. 2 sowie den Flächenmomenten I1 bzw. I2. Sektion AB ist durch eine konstante Streckenlast q0 belastet, in B wirkt das Moment MB0. Der Stab ist in A durch ein gelenkiges Festlager gelagert. In C ist das Stabende fest mit dem Umfang einer Rolle vom Radius r verbunden, die in D frei drehbar gelagert ist. In B sind die beiden Sektionen fest miteinander verbunden. Die Feder in B ist eine Translationsfeder mit der Steifigkeit  kB.


Lageplan

Gesucht ist die FEM-Lösung mit zwei Elementen für den Euler-Bernoulli-Balken.

Die Systemparameter sind die gleichen wie in TC12, das dort gesuchte Flächenmoment I1 übernehmen wir zu

.

Lösung mit Maxima

Header

Wir suchen eine Lösung mit den Standard-Trial-Functions (Hermitesche-Polynome) für einen Euler-Bernoulli-Balken. Aufpassen müssen wir am Rand "C". Hier sind Verschiebung und Verdrehung durch die Rolle gekoppelt. Die Element-Steifigkeitsmatrix müssen wir passend umschreiben.


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 15.08.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2018-04-15                            */
/* ref: TM-C, Labor 4                                  */
/* description: finds the FE solution for              */
/*              lab problem #4                         */
/*******************************************************/

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




Declarations

Wir übernehmen die Systemparameter aus TC12 zu

,

und wählen als Referenzgröße wref für die Auslenkung des Balkens die maximale Verschiebung eines Kragbalkens unter konstanter Streckenlast:

.

/*** declarations ***/
assume(l[i]>0);

/* system parameter */
units  : [mm = m/1000, cm = m/100];
params : [l[1]=1000*mm, l[2] = l[1]/2, r=l[1]/4,
          E    = 2.1*10^5*N/mm^2,
          I[1] = 54000*mm^4, I[2]=2*I[1],
          k[B] = 3*E*I[1]/l[1]^3,
          q[0]=10*N/mm, M[B]=q[0]*l[1]^2];

params : subst(units,makelist(lhs(params[i])=subst(params,rhs(params[i])),i,1,length(params)));

/* kinematics of boundary condition at "C" */
kinematics : [W[2]=-r*Φ[2], δW[2] = -r*δΦ[2]];

/* max. displacement of cantilevered beam under load q[0] */
dimless : [w[ref] = q[0]*l[1]^4/(8*E*I[1])];
print(subst(params,dimless))$




Formfunctions

Die Trial-Functions je Element "i" zur Komposition der Form-Funktion kopieren wir aus Finite Elemente Methode zu

,

die Koordinaten der Verschiebung sind

.

Damit ist

.

/**** define form functions ***/
/* coordinates */
coords : [[ W[i-1], Φ[i-1], W[i], Φ[i]],
          [δW[i-1],δΦ[i-1],δW[i],δΦ[i]]];

/* tial-functions */
phi : [ 2*xi^3-3*xi^2+1,
       (xi^3-2*xi^2+xi)*l[i],
        3*xi^2-2*xi^3,
       (xi^3-xi^2)*l[i]];

/* form-function */
form : w(xi) = sum(coords[1][j]*phi[j],j,1,4);




Equilibrium Conditions

Die Gleichgewichtsbedingungen kommen aus dem Prinzip der virtuellen Verrückungen zu

.

Wir sortieren die Elemente der virtuellen Arbeit nach den virtuellen Koordinaten und den Koordinaten des System und konstruieren daraus das gewöhnliche Gleichungssystem

.

Die Anteile an der gesamten virtuellen Arbeit kommen aus der virtuellen Formänderungsenergie δΠ und der virtuellen Arbeit der äußeren Lasten δWa.

Dabei ist für unsere zwei Elemente δΠ = δΠ1 + δΠ2' mit

und der Element-Steifigkeitsmatrix

.

Für Element 1 können wir diese Matrix direkt übernehmen, das heißt k1 = k0 für i=1.

Element 2 birgt eine Tücke: Hier sind Verschiebung W2 und Verdrehung Φ2 gekoppelt über die Kinematik der Rolle:

Damit ist auch die Variation in diesen Koordinaten gekoppelt, also

.

Mit dieser Beziehung eliminieren wir demnach W2 aus der Formulierung der Gleichgewichtsbedingungen. Das Einsetzen der kinematischen Beziehungen in δΠ liefert nun als Element-Steifigkeitsmatrix

,

bei der die Elemente der dritten Zeile (zu δWi) und der dritten Spalte (zu Wi) verschwinden.

Struktur der Steifigkeitsmatrix.

Wir setzen die Gesamt-Steifigkeitsmatrix K aus den beiden Element-Steifigkeitsmatrizen so zusammen:

Und das ist die anteilige Gesamt-Steifigkeitsmatrix der beiden Balken-Abschnitte:

Auch die Feder ist ein elastisches Element und trägt damit eine virtuelle Formänderungsenergie, zu δΠ hinzu, nämlich

Diesen Beitrag müssen wir in Zeile 3, Spalte 3 hinzuaddieren, also mit der Anweisung

.

Auf der rechten Seite des Gleichungssystem bleiben die Beiträge der virtuellen Arbeiten äußerer Lasten stehen. Dies sind

,

wir erhalten

.

Jetzt fehlen nur noch die Randbedingungen. Wir setzen

,

die kinematische Beziehung

haben wir schon eingearbeit - bleibt also nur noch, die entsprechenden Spalten und Zeilen in den Matrizen K, Q und P zu eliminieren. Es bleibt das Gleichungssystem

.

/**** equilibrium conditions ***/
/* generic stiffness matrix */
k[0] : E*I[i]/l[i]^3*makelist(makelist(
              integrate(
                      diff(phi[i],xi,2)*diff(phi[j],xi,2),
                                              xi,0,1),
                                               j,1,4),i,1,4);
k[0] : funmake('matrix,k[0]);

/* element stiffness matrices */
/* element 1 */
k[1] : subst([i=1],k[0]);
/* element 2 */
δΠ[2] : subst([i=2],coords[2].k[0].transpose(coords[1]));
δΠ[2] : expand(subst(kinematics, δΠ[2]));
k[2]  : funmake('matrix,makelist(makelist(coeff(coeff(δΠ[2],subst([i=2],coords[2])[m]),subst([i=2],coords[1])[n]),m,1,4),n,1,4));




/* compose system matrix */
NoN : 3; /* Number of Nodes*/
K : zeromatrix(2*NoN,2*NoN);

for m:1 thru 4 do
   for n:1 thru 4 do
      (K[  m,  n] : K[  m,  n] + k[1][m,n],
       K[2+m,2+n] : K[2+m,2+n] + k[2][m,n])$

/* add spring */
K[3,3] : K[3,3] + k[B]; /* W[1] */

/* compose righ-hand-side */
P : zeromatrix(6,1);
for m:1 thru 4 do
    P[m,1] : l[1]*integrate(q[0]*subst([i=1],phi[m]), xi,0,1);
P[4,1] : P[4,1] + M[B];


/* coordinates of displacement */
Q : matrix([W[0]],[Φ[0]],[W[1]],[Φ[1]],[W[2]],[Φ[2]]);


/* incorporate geometric boundary conditions */
/* eliminate rows / columns for W[0], Φ[2] (positions 1, 6) */
K : submatrix(1,submatrix(5,K,5),1);
Q : submatrix(1,submatrix(5,Q));
P : submatrix(1,submatrix(5,P));

print("k[1] = ", k[1])$
print("k[2] = ", k[2])$
print("K = ", K)$
print("Q = ", Q)$
print("P = ", P)$

print(K," * ",Q," = ",P)$




Solving

Auflösen nach Q liefert

,

zusammen mit den Randbedingungen also

.

/**** solve K Q = P ***/

sol[1] : linsolve_by_lu(subst(params,K),subst(params,P))[1]$
sol[1] : makelist(Q[i][1] = sol[1][i][1],i,1,4);
sol[1] : append(subst(params,[W[0]=0, W[2]=-r*subst(sol[1], Φ[2])]), sol[1]);




Post-Processing

Biegelinie w(x)

Die Auslenkung w(x) der Querschnitte tragen wir jetzt auf. Für die dimensionslose Darstellung wählen wir aus der analytischen Lösung für den Kragbalken unter konstanter Streckenlast

und tragen w(x)/wref auf:

Die maximale Auslenkung des Systems ist dann

,

und das entspricht der Vorgabe aus Aufgabe TC12.


/**** post-process  ***/
f1 : subst([xi=t],subst(params,subst(dimless,expand(subst(sol[1],subst([i=1],subst(form,w(xi)/w[ref])))))));
f2 : subst([xi=t],subst(params,subst(dimless,expand(subst(sol[1],subst([i=2],subst(form,w(xi)/w[ref])))))));
scale : subst(params,(l[2]/l[1]));

plot2d([[parametric,   t,       f1, [t, 0, 1]],
        [parametric, 1+t*scale, f2, [t, 0, 1]]],
       [gnuplot_preamble, "set yrange [] reverse"],
       [legend, "sec. I", "sec. II"],
       [xlabel, "x/l[1] →"], [ylabel, "w/w[ref] →"])$





Links

  • ...

Literature

  • ...