Gelöste Aufgaben/StaB: Unterschied zwischen den Versionen

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


<onlyinclude>
<onlyinclude>
[[Datei:StaB-01.PNG|120px|left|mini|Stabwerk mit fest verbundenen Stäben.]]
[[Datei:StaB-01.PNG|150px|left|mini|Stabwerk mit fest verbundenen Stäben.]]
Gesucht ist ein Vergleich zwischen der klassischen Stabwerkstheorie und einer Herangehensweise, bei der wir eine feste Verbindung der Stäbe in den Knoten ansetzten. Grundlage des Modells ist die analytische Lösung der Felddifferentialgleichung.
Gesucht ist ein Vergleich zwischen der klassischen Stabwerkstheorie und einer Herangehensweise, bei der wir eine feste Verbindung der Stäbe in den Knoten ansetzten. Grundlage des Modells ist die analytische Lösung der Felddifferentialgleichungen.
</onlyinclude>
</onlyinclude>


[[Datei:StaB-02.PNG|150px|right|mini|Modellierung in der klassischen Stabwerkstheorie - nur mit Stab-Längskraften]]
[[Datei:StaB-02.PNG|150px|right|mini|Modellierung in der klassischen Stabwerkstheorie - nur mit Stab-Längskraften]]
In der klassischen Stabwerkstheorie (rechts) werden nur die Stab-Längskräfte berücksichtigt – das Ersatzmodell bildet die Verbindungen der Stäbe durch Gelenke ab. Trotzdem wurden die Stäbe in der Ausführung mit Knotenblechen vernietet oder verschweißt – von Gelenk also keine Spur.
In der klassischen Stabwerkstheorie (rechts) werden nur die Stab-Längskräfte berücksichtigt – das Ersatzmodell bildet die Verbindungen der Stäbe durch Gelenke ab. Trotzdem wurden und werden die Stäbe in der praktischen Ausführung mit Knotenblechen vernietet oder verschweißt – von Gelenk also keine Spur.


Wir untersuchen, welchen Einfluss diese Vereinfachung auf die berechneten Belastungen der Struktur hat. Hier sollen die beiden Modell-Varianten – also die Modellierung mit Gelenken einerseits und Knotenblechen andererseits – miteinander verglichen werden. Gesucht ist die analytische Lösung der beiden Randwertprobleme und ein Vergleich.  
Wir untersuchen, welchen Einfluss diese Vereinfachung auf die berechneten Belastungen der Struktur hat. Hier sollen die beiden Modell-Varianten – also die Modellierung mit Gelenken einerseits und Knotenblechen andererseits – miteinander verglichen werden. Gesucht ist die analytische Lösung der beiden Randwertprobleme und ein Vergleich.  
Zeile 31: Zeile 31:
{{MyCodeBlock|title=Declarations
{{MyCodeBlock|title=Declarations
|text=
|text=
[[Datei:StaB-05.PNG|120px|right|mini|Knoten- und Stab-Nummern]]
[[Datei:StaB-05.PNG|150px|right|mini|Knoten- und Stab-Nummern]]
Wir beginnen mit der Einführung von passenden Bezeichnungen für unser System:    
Wir beginnen mit der Einführung von passenden Bezeichnungen für unser System:    


In Knoten ''I'' und ''II'' sind gelenkige Lager. Stäbe 1,2 und 3 sind im Knoten ''III'' verbunden, Stäbe 2 und 4 im Knoten ''II'' und Stäbe 3 und 4 im Knoten ''IV''.
In Knoten ''I'' und ''II'' sind gelenkige Lager. Stäbe 1,2 und 3 sind im Knoten ''III'' verbunden, Stäbe 2 und 4 im Knoten ''II'' und Stäbe 3 und 4 im Knoten ''IV''.


[[Datei:StaB-03.png|150px|left|mini|Lokales Koordinatensystem - hier für Stab "''k''"]]
[[Datei:StaB-03.png|200px|left|mini|Lokales Koordinatensystem - hier für Stab "''k''"]]
Jeder Stab – hier Stab ''k'' mit den Knoten ''I'' und ''J'' – trägt sein eigenes ''x<sub>k</sub>, z<sub>k</sub>'' – Koordinatensystem und ist im Winkel ''α<sub>k</sub>'' zur Horizontalen eingebaut. Hier sind α<sub>2</sub> = 60° und α<sub>3</sub> = -60° sowie α<sub>1</sub> = 0 und α<sub>4</sub> = 0.
Jeder Stab – hier Stab ''k'' mit den Knoten ''I'' und ''J'' – trägt sein eigenes ''x<sub>k</sub>, z<sub>k</sub>'' – Koordinatensystem und ist im Winkel ''α<sub>k</sub>'' zur Horizontalen eingebaut. Hier sind α<sub>2</sub> = 60° und α<sub>3</sub> = -60° sowie α<sub>1</sub> = 0 und α<sub>4</sub> = 0.


Als Systemparameter je Stab definieren wir vier Stablängen und die jeweils identischen Steifigkeiten für Dehnung und Biegung. Der Querschnitt der Stäbe sei ein doppeltsymmetrisches Profil mit der Querschnittsfläche <math>A = a^2</math> und dem Flächenmoment <math>I=\eta \frac{A^2}{12}</math>.  
Als Systemparameter je Stab definieren wir vier Stablängen und die jeweils identischen Steifigkeiten für Dehnung und Biegung. Der Querschnitt der Stäbe sei ein doppeltsymmetrisches Profil (s.u.) mit der Querschnittsfläche <math>A = a^2</math> und dem Flächenmoment <math>I=\eta \frac{A^2}{12}</math>.  


Für das Referenzmodell, das unser System als Stabwerk mit gelenkigen Verbindungen erfasst, wählen wir die Stabkräfte ''S<sub>i</sub>'' als Zugkräfte und schreiben folgende Gleichgewichtsbedingungen an:
Für das Referenzmodell, das unser System als Stabwerk mit gelenkigen Verbindungen erfasst, wählen wir die Stabkräfte ''S<sub>i</sub>'' als Zugkräfte und schreiben folgende Gleichgewichtsbedingungen an:
Zeile 48: Zeile 48:
Die Stabkräfte dazu sind
Die Stabkräfte dazu sind
::<math>{S_1}\operatorname{=}\frac{2 F}{\sqrt{3}}\operatorname{,}{S_2}\operatorname{=}\operatorname{-}\left( \frac{2 F}{\sqrt{3}}\right) \operatorname{,}{S_3}\operatorname{=}\frac{2 F}{\sqrt{3}}\operatorname{,}{S_4}\operatorname{=}\operatorname{-}\left( \frac{F}{\sqrt{3}}\right)</math>.
::<math>{S_1}\operatorname{=}\frac{2 F}{\sqrt{3}}\operatorname{,}{S_2}\operatorname{=}\operatorname{-}\left( \frac{2 F}{\sqrt{3}}\right) \operatorname{,}{S_3}\operatorname{=}\frac{2 F}{\sqrt{3}}\operatorname{,}{S_4}\operatorname{=}\operatorname{-}\left( \frac{F}{\sqrt{3}}\right)</math>.
Im Vergleich zur Berechnung der Stabkräfte mit dem Referenzmodell ist unser Randwertproblem mit fest verbundenen Stäben deutlich komplizierter. Es besteht aus den Gleichgewichtsbedingung im  Feld - den Felddifferentialgleichungen - und den Randbedingungen.
Diese schreiben wir im Folgenden auf:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*******************************************************/
/* MAXIMA script                                      */
/* version: wxMaxima 21.05.2                          */
/* author: Andreas Baumgart                            */
/* last updated: 2024-09-20                            */
/* ref: NMM, Labor 1, dimensionsbehaftete              */
/*                          Vorgehensweise            */
/* description: finds the analytic solution for        */
/*              lab problem #1                        */
/*******************************************************/
 
assume(A>0,H>h,h>0, a>0);
 
/*-----------------------------------------------------*/
/* Euler-Matrix                                        */
DR(α) := matrix([cos(α),sin(α),0],[-sin(α),cos(α),0],[0, 0, 1]);
/* ... and return                                      */
/* Note: the inverse of the matrix is its transposed  */
DI(α):= trigsimp(invert(DR(α)));
 
/* for each rod, define
            * angle α, and
    * node-IDs
  at its start and end                                */
index : [[ 0  ,[1,3]],  /* rod #1*/
        [α[2],[2,3]],  /* rod #2*/
[α[3],[3,4]],  /* rod #3*/
[ 0  ,[2,4]]  /* rod #4*/];
 
/*-----------------------------------------------------*/
/* system parameters                                  */
params: [ℓ[1]=ℓ[0]/2, ℓ[2]=ℓ[0], ℓ[3]=ℓ[0], ℓ[4]=ℓ[0],
        α[2]=%pi/3,α[3]= -%pi/3,
EA = E*A, EI = E*I, I=η*A^2/12];
 
moreParams: [A = a^2, ℓ[0]= 100*a];
 
/*****************************************************/
/* Stabwerk-Lösung                                  */
nodalequ : [-S[1]-S[2]*cos(α[2])+S[3]*cos(α[2])        = 0, /* node I  */
                -S[2]*sin(α[2])-S[3]*sin(α[2])        = 0, /* node II */
                        -S[3]*cos(α[2]) - S[4] = 0, /* node III*/
                              -S[3]*sin(α[2])    +F = 0  /* node IV */];
rodForces: solve(nodalequ,[S[1],S[2],S[3],S[4]])[1];
rodForces: subst(params,rodForces);
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Ein Randwertproblem besteht aus den Gleichgewichtsbedingung im  Feld - der Felddifferentialgleichung - und den Randbedingungen.
Diese schreiben wir im Folgenden auf:


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
Zeile 65: Zeile 110:


Für Stab 3 sieht dies folgendermaßen aus:
Für Stab 3 sieht dies folgendermaßen aus:
[[Datei:StaB-13.PNG|250px|none|mini|Lokale Koordinaten der Verformung ''u(x)''und ''w(x)''.]]
[[Datei:StaB-13.PNG|300px|none|mini|Lokale Koordinaten der Verformung ''u(x)''und ''w(x)''.]]


Die Differentialbeziehungen des Gleichgewichts in ''u'' und ''w'' sowie deren Lösungen für unsere Stäbe sind
Die Differentialbeziehungen des Gleichgewichts in ''u'' und ''w'' sowie deren Lösungen für unsere Stäbe sind
Zeile 95: Zeile 140:
</math></td></tr>
</math></td></tr>
</table>
</table>
Wenn die allgemeinen Lösungen hier etwas ungewohnt aussehen: wir haben die Faktoren a sowie die dimensionslosen Koordinaten <math>x_k/\ell_k</math> eingeführt - damit alle Integrationskonstanten dimensionslos sind.
Für den Kippwinkel des Balkens nutzen wir zusätzlich
Für den Kippwinkel des Balkens nutzen wir zusätzlich
::<math>\varphi_k(x_k) = w'_k(x_k)</math>.
::<math>\varphi_k(x_k) = w'_k(x_k)</math>.
Zeile 110: Zeile 157:


Diese Schnittgrößen jeweils am positiven und negativen Schnittufer sind hier dargestellt:
Diese Schnittgrößen jeweils am positiven und negativen Schnittufer sind hier dargestellt:
[[Datei:StaB-17.PNG|250px|none|mini|Schnittlasten am Stab.]]
[[Datei:StaB-17.PNG|300px|none|mini|Schnittlasten am Stab.]]
 
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*----------------------------------------------------*/
/* analytic solution for EBB "i"                      */
/* C[i,j] chosen so that dim(C[i,j]) = 1             */
ebb: [diff(w[i](x),x,4)=q[i,0]/EI,
          w[i](x) = sum(a/j!*C[i,j]*(x/ℓ[i])^j,j,0,3),
  u[i](x) = sum(a/j!*D[i,j]*(x/ℓ[i])^j,j,0,1)];
/* funnctions for w, φ, M, Q and N                    */
fcts: [w[i](x) =    diff(subst(ebb,w[i](x)),x,0),
      φ[i](x) =    diff(subst(ebb,w[i](x)),x,1),
      M[i](x) =-EI*diff(subst(ebb,w[i](x)),x,2),
      Q[i](x) =-EI*diff(subst(ebb,w[i](x)),x,3),
      u[i](x) =    diff(subst(ebb,u[i](x)),x,0),
      N[i](x) = EA*diff(subst(ebb,u[i](x)),x,1)];
     
/*-----------------------------------------------------*/
/* replace forces and moments at rod-ends with        */
/* expressions from the generic solution              */
internalForces : expand(flatten(makelist([/* beam "i" */
            N[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,N[i](x))),
            N[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,N[i](x))),
            Q[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,Q[i](x))),
            Q[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,Q[i](x))),
            M[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,M[i](x))),
            M[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,M[i](x)))],j,1,4)));
nodalForces: flatten(makelist([N[j]( 0  ),N[j](ℓ[j]),Q[j]( 0  ),Q[j](ℓ[j]),M[j]( 0  ),M[j](ℓ[j])],j,1,4));
</syntaxhighlight>
</syntaxhighlight>
}}
}}


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
Zeile 130: Zeile 197:
Die Verdrehungen der Knoten an den Enden sind in unserem 2D-System natürlich für jeden Stab gleich - wir führen den Index ''k'' hier nur ein, damit wir eine gleiche Nomenklatur für alle Koordinaten haben.
Die Verdrehungen der Knoten an den Enden sind in unserem 2D-System natürlich für jeden Stab gleich - wir führen den Index ''k'' hier nur ein, damit wir eine gleiche Nomenklatur für alle Koordinaten haben.


[[Datei:StaB-06.PNG|120px|right|mini|Referenz- oder "0"-Koordinatensystem.]]
[[Datei:StaB-06.PNG|200px|right|mini|Referenz- oder "0"-Koordinatensystem.]]
Damit diese Koordinaten miteinander verträglich sind, führen wir ein Referenzsystem „0“ mit den entsprechenden Koordinaten der Auslenkung in horizontale und vertikale Richtung ein:
Damit diese Verschiebungen (und Verdrehungen) miteinander verträglich sind, führen wir ein Referenzsystem „0“ mit den entsprechenden Koordinaten der Auslenkung in horizontale und vertikale Richtung ein:


[[Datei:StaB-15.PNG|150px|left|mini|Umrechnen zwischen den lokalen (Stab-) Koordinaten und dem globalen ("0"-)  Koordinantensystem.]]
[[Datei:StaB-15.PNG|150px|left|mini|Umrechnen zwischen den lokalen (Stab-) Koordinaten und dem globalen ("0"-)  Koordinantensystem.]]
Zeile 198: Zeile 265:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*-----------------------------------------------------*/
/* abbreviations for displacements at beams' ends      */
 
nodalDisp: [];
for rod:1 thru length(index) do
  (nodes: index[rod][2],
    nodalDisp: append(nodalDisp,makelist(
                      [U[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,u[i](x))),
        W[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,w[i](x))),
        Φ[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,φ[i](x)))], j,0,1)))$
nodalDisp: flatten(nodalDisp);
 
localCoords: makelist(lhs(nodalDisp[i]),i,1,length(nodalDisp));
 
/*-----------------------------------------------------*/
/* define kinematic relations between local and globale displacements */
 
kinematics:[];
for rod:1 thru length(index) do
  (nodes: index[rod][2],
    α[k]: index[rod][1],
    kinematics: append(kinematics,makelist(
                      matrix([U[nodes[i],rod]],[W[nodes[i],rod]],[Φ[nodes[i],rod]])=DI(α[k]).matrix([U[nodes[i],0]],[W[nodes[i],0]],[Φ[nodes[i],0]]),
                i,1,2)))$
kinematics: flatten(makelist(makelist(lhs(kinematics[i])[j][1]=rhs(kinematics[i])[j][1],i,1,length(kinematics)),j,1,3));
 
globalCoords: flatten(makelist([U[i,0],W[i,0],Φ[i,0]],i,1,4));
</syntaxhighlight>
</syntaxhighlight>
}}
}}                
 
                  
<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Randbedingungen: die kinematischen Zwangsbedingungen an den Lagern
{{MyCodeBlock|title=Randbedingungen: die kinematischen Zwangsbedingungen an den Lagern
Zeile 217: Zeile 308:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*-----------------------------------------------------*/
/* define boundary conditions at nodes I and II        */
boundaryConds:[U[1,0] = 0,
      W[1,0] = 0,
      U[2,0] = 0,
      W[2,0] = 0];
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Zeile 226: Zeile 322:
Es fehlen noch die Gleichgewichtsbedingungen für die Knotenpunkte. Wir erhalten für jeden Knoten – außer denen der Lager – zwei Kraft- und ein Momentengleichgewicht. Für die Lager-Knoten können wir nur die Momentengleichgewichte anschreiben – ohne neue Unbekannte für die Lager-Reaktionskräfte einzufügen.
Es fehlen noch die Gleichgewichtsbedingungen für die Knotenpunkte. Wir erhalten für jeden Knoten – außer denen der Lager – zwei Kraft- und ein Momentengleichgewicht. Für die Lager-Knoten können wir nur die Momentengleichgewichte anschreiben – ohne neue Unbekannte für die Lager-Reaktionskräfte einzufügen.


[[Datei:StaB-18-2.PNG|150px|none|mini|Kräftegleichgewicht am Knoten.]]
[[Datei:StaB-18-2.PNG|200px|none|mini|Kräftegleichgewicht am Knoten.]]


Die Schnittbilder je Knoten erhalten wir, indem wir die Schnittgrößen an den entsprechenden Schnittufern anzeichnen und dann die Gleichgewichtsbedingungen je Knoten ansetzen.
Die Schnittbilder je Knoten erhalten wir, indem wir die Schnittgrößen an den entsprechenden Schnittufern anzeichnen und dann die Gleichgewichtsbedingungen je Knoten ansetzen.
Zeile 268: Zeile 364:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*-----------------------------------------------------*/
/* define equlibrium conditions at all nodes          */
/* (except foces in I and II where the bearings are  ) */
/* ((employ Euler-Matrix for transformations))        */
equilib:  [/* node 1 */
            [[M[1](0)]] = [[0]],
    /* node 2 */
            [[ M[2](0)
      +M[4](0)]] = [[0]],
    /* node 3 */
            -          matrix([N[1](ℓ[1])],[Q[1](ℓ[1])],[M[1](ℓ[1])])
    - DR(α[2]).matrix([N[2](ℓ[2])],[Q[2](ℓ[2])],[M[2](ℓ[2])])
    + DR(α[3]).matrix([N[3]( 0  )],[Q[3]( 0  )],[M[3]( 0  )]) = matrix([0],[0],[0]),
    /* node 4 */
            - DR(α[3]).matrix([N[3](ℓ[3])],[Q[3](ℓ[3])],[M[3](ℓ[3])])
              - matrix([N[4](ℓ[4])],[Q[4](ℓ[4])],[M[4](ℓ[4])]) = matrix([0],[-F],[0])
    ];
equilib: flatten(makelist(makelist(lhs( equilib [k])[l][1]=rhs( equilib [k])[l][1],l,1,length(lhs( equilib [k]))),k,1,length( equilib )));
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Zeile 286: Zeile 399:
Und aus der Momentenbilanz für Knoten IV erhalten wir entsprechend
Und aus der Momentenbilanz für Knoten IV erhalten wir entsprechend
::<math>- a C_{4,2} \frac{EI}{\ell_4^2}- a C_{2,2} \frac{EI}{\ell_2^2}=0</math>
::<math>- a C_{4,2} \frac{EI}{\ell_4^2}- a C_{2,2} \frac{EI}{\ell_2^2}=0</math>
                  
              
Durch das Einsetzen der Lösungen für ''u<sub>k</sub>(x<sub>k</sub>)'' und ''w<sub>k</sub>(x<sub>k</sub>)'' haben wir als Unbekannte nur noch je Stab die 6 Integrationskonstanten ''C<sub>ij</sub>,'' ''D<sub>ij</sub>'' sowie je Knoten die Knotenverschiebungen Koordinaten ''U<sub>k0</sub>'', ''W<sub>k0</sub>'' und ''Φ<sub>k0</sub>'', also die 36 Unbekannten
Durch das Einsetzen der Lösungen für ''u<sub>k</sub>(x<sub>k</sub>)'' und ''w<sub>k</sub>(x<sub>k</sub>)'' haben wir als Unbekannte nur noch je Stab die 6 Integrationskonstanten ''C<sub>ij</sub>,'' ''D<sub>ij</sub>'' sowie je Knoten die Knotenverschiebungen Koordinaten ''U<sub>k0</sub>'', ''W<sub>k0</sub>'' und ''Φ<sub>k0</sub>'', also 36 Unbekannte.


Für das lineare Gleichungssystem
Für das lineare Gleichungssystem
::<math>\underline{\underline{A}} \cdot \underline{X} = \underline{b}</math>
::<math>\underline{\underline{A}} \cdot \underline{X} = \underline{b}</math>
ist also
ist dann
::<math>\underline{X}^T = \left(
::<math>\underline{X}^T = \left(
{U_{1,0}},{W_{1,0}},{{\Phi }_{1,0}},{U_{2,0}},{W_{2,0}},{{\Phi }_{2,0}},{U_{3,0}},{W_{3,0}},{{\Phi }_{3,0}},{U_{4,0}},{W_{4,0}},{{\Phi }_{4,0}},{C_{1,0}},{C_{1,1}},{C_{1,2}},{C_{1,3}},{C_{2,0}},{C_{2,1}},{C_{2,2}},{C_{2,3}},{C_{3,0}},{C_{3,1}},{C_{3,2}},{C_{3,3}},{C_{4,0}},{C_{4,1}}\operatorname{,
{U_{1,0}},{W_{1,0}},{{\Phi }_{1,0}},{U_{2,0}},{W_{2,0}},{{\Phi }_{2,0}},{U_{3,0}},{W_{3,0}},{{\Phi }_{3,0}},{U_{4,0}},{W_{4,0}},{{\Phi }_{4,0}},{C_{1,0}},{C_{1,1}},{C_{1,2}},{C_{1,3}},{C_{2,0}},{C_{2,1}},{C_{2,2}},{C_{2,3}},{C_{3,0}},{C_{3,1}},{C_{3,2}},{C_{3,3}},{C_{4,0}},{C_{4,1}}\operatorname{,
Zeile 309: Zeile 422:
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*-----------------------------------------------------*/
/* solving ......                                      */
sol: append(internalForces,subst(params,kinematics));
 
equs: append(boundaryConds,
            subst(internalForces,equilib),
    subst(subst(params,kinematics),nodalDisp));
 
X: flatten([globalCoords,
            makelist(makelist(C[i,j],j,0,3),i,1,4),
            makelist(makelist(D[i,j],j,0,1),i,1,4)]);
 
/* ... in matrix-notation ......                      */
ACM: augcoefmatrix(equs,X)$
print(submatrix(ACM,37),"*",transpose(X),"=",-col(ACM,37))$
 
sol: ratsimp(solve(expand(subst(params,equs)),X)[1]);
 
/**********************************/
beamForces: ratsimp(makelist(nodalForces[i]=ratsimp(subst(params,subst(sol,subst(internalForces,nodalForces[i])))),i,1,length(nodalForces)));
</syntaxhighlight>
</syntaxhighlight>
}}
}}
Zeile 318: Zeile 450:
Wir tragen für alle Stäbe das Verhältnis ''N<sub>i</sub>/S<sub>i</sub>'' auf:
Wir tragen für alle Stäbe das Verhältnis ''N<sub>i</sub>/S<sub>i</sub>'' auf:


[[Datei:StaB-21.png|250px|none|mini|Verhältnis der Stab-Längekräfte zwischen "verschweißten" Stäben und gelenkig verbundenen Stäben.]]
[[Datei:StaB-21.png|350px|none|mini|Verhältnis der Stab-Längekräfte zwischen "verschweißten" Stäben und gelenkig verbundenen Stäben.]]


Wenn die Biegesteifigkeit der Stäbe klein wird, konvergiert unsere Lösung der Normalkräfte also gegen die einfache Stabwerkslösung.  
Wenn die Biegesteifigkeit der Stäbe klein wird, konvergiert unsere Lösung der Normalkräfte also gegen die einfache Stabwerkslösung.


Bleibt noch zu klären, ob die Spannungen durch die Biegung im Querschnitt ebenfalls vernachlässigbar klein bleiben.
Bleibt noch zu klären, ob die Spannungen durch die Biegung im Querschnitt ebenfalls vernachlässigbar klein bleiben.
[[Datei:StaB-04.png|200px|right|mini|Doppeltsymmetrische Querschnitte der Stäbe mit ''H > h'' und ''A=H<sup>2</sup>-h<sup>2</sup>''.]]
Dazu benötigen wir die Ausdrücke für
Dazu benötigen wir die Ausdrücke für
::<math>\eta=\frac{\displaystyle (H^4-h^4)}{(H^2-h^2)^2},  
::<math>\eta=\frac{\displaystyle (H^4-h^4)}{(H^2-h^2)^2},  
Zeile 349: Zeile 482:
W = \frac{\displaystyle I}{\left(\frac{\displaystyle H}{\displaystyle 2}\right)}
W = \frac{\displaystyle I}{\left(\frac{\displaystyle H}{\displaystyle 2}\right)}
</math>.
</math>.
Das angefügte Maxima-Skript analysiert diese Biegespannungen - im Vergleich zu den Normalspannungen. Auch hier gibt es keine spektakulären Änderungen zur Kernaussage: solange wir ein klassisches Stabwerk mit schlanken Stäben untersuchen, ist die Approximation durch Gelenke sicher zulässig.


Die Auslenkungen der Knoten für η=1 sind
Die Auslenkungen der Knoten für η=1 sind
Zeile 367: Zeile 501:
\end{array}
\end{array}
</math>.
</math>.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*-----------------------------------------------------*/
/* post-processing                                    */
 
collect: flatten(subst(rodForces,subst(beamForces,makelist([N[i](0)/S[i]],i,1,4))));
collect: ratsimp(subst(moreParams, collect));
 
plot2d(collect,[η,0,5], [xlabel, "ηeta = EI/EA^2 ->"], [ylabel, "N[i]/S[i] ->"],[legend, "#1","#2","#3","#4"]);
/*******************************************************/
 
collect: flatten(subst(rodForces,subst(beamForces,makelist([M[i](0),M[i](ℓ[i])]/(F*a),i,1,4))));
collect: ratsimp(subst(moreParams, collect));
 
plot2d(collect,[η,0,5], [xlabel, "eta = EI/EA^2 ->"], [ylabel, "M[i]/(h*F) ->"],[legend, "#1, x=0", "#1, x=l","#2, x=0", "#2, x=l","#3, x=0", "#3, x=l","#4, x=0", "#4, x=l"]);
 
/* critical stresses for both models                  */
critStress: makelist([S[i]/A, [N[i](0)/A, M[i](0)/W, M[i](ℓ[i])/W]],i,1,4);
 
crossSection: [A= H^2-h^2, A=a^2, I= 1/12*(H^4-h^4), W=I/(H/2)];
tmp: η = subst(crossSection,I/(A^2/12));
tmp: append([tmp], solve([crossSection[1],crossSection[2], tmp],[A,H,h])[1]);
critStress: ratsimp(subst(tmp,subst(moreParams,subst(params,subst(crossSection[4],subst(sol,subst(internalForces,subst(rodForces,critStress))))))));
critStress: flatten(ratsimp(makelist(critStress[i][2]/critStress[i][1],i,1,4)));
 
plot2d(critStress,[η,0,5], [xlabel, "eta = I/A^2 ->"], [ylabel, "s[i]/s_ref ->"],[legend, "#1, N", "#1, M@x=0", "#1, M@x=l/2","#2, N", "#2, M@x=0", "#2, M@x=l","#3, N","#3, M@x=0", "#3, M@x=l","#4, N","#4, x=0", "#4, x=l"]);$
</syntaxhighlight>
</syntaxhighlight>
}}
}}


<hr/>
<hr/>
'''Links'''
'''Links'''
* ...
* [[Gelöste_Aufgaben/StaB|Gelöste_Aufgaben / StaB]]


'''Literature'''
'''Literature'''
* ...
* ...

Aktuelle Version vom 12. November 2024, 07:27 Uhr


Aufgabenstellung

Wir untersuchen die Belastung eines ebenen Stabwerks. Die Stäbe haben wie skizziert die Länge bzw. ℓ/2. Die Struktur wird mit der Kraft F belastet.


Stabwerk mit fest verbundenen Stäben.

Gesucht ist ein Vergleich zwischen der klassischen Stabwerkstheorie und einer Herangehensweise, bei der wir eine feste Verbindung der Stäbe in den Knoten ansetzten. Grundlage des Modells ist die analytische Lösung der Felddifferentialgleichungen.


Modellierung in der klassischen Stabwerkstheorie - nur mit Stab-Längskraften

In der klassischen Stabwerkstheorie (rechts) werden nur die Stab-Längskräfte berücksichtigt – das Ersatzmodell bildet die Verbindungen der Stäbe durch Gelenke ab. Trotzdem wurden und werden die Stäbe in der praktischen Ausführung mit Knotenblechen vernietet oder verschweißt – von Gelenk also keine Spur.

Wir untersuchen, welchen Einfluss diese Vereinfachung auf die berechneten Belastungen der Struktur hat. Hier sollen die beiden Modell-Varianten – also die Modellierung mit Gelenken einerseits und Knotenblechen andererseits – miteinander verglichen werden. Gesucht ist die analytische Lösung der beiden Randwertprobleme und ein Vergleich.

Lösung mit Maxima

Wir nutzen das Computer-Algebra-System Maxima zur Lösung. Das macht Sinn, weil wir eine große Anzahl von Gleichungen verwalten müssen.

Declarations

Knoten- und Stab-Nummern

Wir beginnen mit der Einführung von passenden Bezeichnungen für unser System:  

In Knoten I und II sind gelenkige Lager. Stäbe 1,2 und 3 sind im Knoten III verbunden, Stäbe 2 und 4 im Knoten II und Stäbe 3 und 4 im Knoten IV.

Lokales Koordinatensystem - hier für Stab "k"

Jeder Stab – hier Stab k mit den Knoten I und J – trägt sein eigenes xk, zk – Koordinatensystem und ist im Winkel αk zur Horizontalen eingebaut. Hier sind α2 = 60° und α3 = -60° sowie α1 = 0 und α4 = 0.

Als Systemparameter je Stab definieren wir vier Stablängen und die jeweils identischen Steifigkeiten für Dehnung und Biegung. Der Querschnitt der Stäbe sei ein doppeltsymmetrisches Profil (s.u.) mit der Querschnittsfläche und dem Flächenmoment .

Für das Referenzmodell, das unser System als Stabwerk mit gelenkigen Verbindungen erfasst, wählen wir die Stabkräfte Si als Zugkräfte und schreiben folgende Gleichgewichtsbedingungen an:

Die Stabkräfte dazu sind

.

Im Vergleich zur Berechnung der Stabkräfte mit dem Referenzmodell ist unser Randwertproblem mit fest verbundenen Stäben deutlich komplizierter. Es besteht aus den Gleichgewichtsbedingung im Feld - den Felddifferentialgleichungen - und den Randbedingungen. Diese schreiben wir im Folgenden auf:


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 21.05.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2024-09-20                            */
/* ref: NMM, Labor 1, dimensionsbehaftete              */
/*                           Vorgehensweise            */
/* description: finds the analytic solution for        */
/*              lab problem #1                         */
/*******************************************************/

assume(A>0,H>h,h>0, a>0);

/*-----------------------------------------------------*/
/* Euler-Matrix                                        */
DR(α) := matrix([cos(α),sin(α),0],[-sin(α),cos(α),0],[0, 0, 1]);
/* ... and return                                      */
/* Note: the inverse of the matrix is its transposed   */
DI(α):= trigsimp(invert(DR(α)));

/* for each rod, define
            * angle α, and
	    * node-IDs
   at its start and end                                */
index : [[ 0  ,[1,3]],  /* rod #1*/
         [α[2],[2,3]],  /* rod #2*/
	 [α[3],[3,4]],  /* rod #3*/
	 [ 0  ,[2,4]]   /* rod #4*/];

/*-----------------------------------------------------*/
/* system parameters                                   */
params: [ℓ[1]=ℓ[0]/2, ℓ[2]=ℓ[0], ℓ[3]=ℓ[0], ℓ[4]=ℓ[0],
         α[2]=%pi/3,α[3]= -%pi/3,
	 EA = E*A, EI = E*I, I=η*A^2/12];

moreParams: [A = a^2, ℓ[0]= 100*a];

/*****************************************************/
/* Stabwerk-Lösung                                   */
nodalequ : [-S[1]-S[2]*cos(α[2])+S[3]*cos(α[2])        = 0, /* node I  */
                 -S[2]*sin(α[2])-S[3]*sin(α[2])        = 0, /* node II */
	                        -S[3]*cos(α[2]) - S[4] = 0, /* node III*/
                      	        -S[3]*sin(α[2])     +F = 0  /* node IV */];
rodForces: solve(nodalequ,[S[1],S[2],S[3],S[4]])[1];
rodForces: subst(params,rodForces);




Die Lösung der Felddifferentialgleichung

Wenn wir die Stäbe in den Knotenpunkten fest verbinden, wird das System statisch überbestimmt – wir müssen die Verformungen des Systems berücksichtigen. Durch die geometrische Anordnung der Stäbe sind die Längs- und Querverformung der vier Stäbe miteinander gekoppelt. Wir müssen also zwei Differentialbeziehungen berücksichtigen:

  • in Stab-Längsrichtung mit und
  • in Stab-Querrichtung mit .

Für Stab 3 sieht dies folgendermaßen aus:

Lokale Koordinaten der Verformung u(x)und w(x).

Die Differentialbeziehungen des Gleichgewichts in u und w sowie deren Lösungen für unsere Stäbe sind

Wenn die allgemeinen Lösungen hier etwas ungewohnt aussehen: wir haben die Faktoren a sowie die dimensionslosen Koordinaten eingeführt - damit alle Integrationskonstanten dimensionslos sind.

Für den Kippwinkel des Balkens nutzen wir zusätzlich

.

Die Schnittkräfte im Stab ergeben sich dann aus


Diese Schnittgrößen jeweils am positiven und negativen Schnittufer sind hier dargestellt:

Schnittlasten am Stab.

/*----------------------------------------------------*/
/* analytic solution for EBB "i"                      */
/* C[i,j] chosen so that dim(C[i,j]) = 1              */
ebb: [diff(w[i](x),x,4)=q[i,0]/EI,
           w[i](x) = sum(a/j!*C[i,j]*(x/ℓ[i])^j,j,0,3),
	   u[i](x) = sum(a/j!*D[i,j]*(x/ℓ[i])^j,j,0,1)];
/* funnctions for w, φ, M, Q and N                    */
fcts: [w[i](x) =    diff(subst(ebb,w[i](x)),x,0),
       φ[i](x) =    diff(subst(ebb,w[i](x)),x,1),
       M[i](x) =-EI*diff(subst(ebb,w[i](x)),x,2),
       Q[i](x) =-EI*diff(subst(ebb,w[i](x)),x,3),
       u[i](x) =    diff(subst(ebb,u[i](x)),x,0),
       N[i](x) = EA*diff(subst(ebb,u[i](x)),x,1)];
       
/*-----------------------------------------------------*/
/* replace forces and moments at rod-ends with         */
/* expressions from the generic solution               */
internalForces : expand(flatten(makelist([/* beam "i" */
            N[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,N[i](x))),
            N[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,N[i](x))),
            Q[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,Q[i](x))),
            Q[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,Q[i](x))),
            M[j]( 0  ) = subst([i=j,x= 0  ], subst(fcts,M[i](x))),
            M[j](ℓ[j]) = subst([i=j,x=ℓ[j]], subst(fcts,M[i](x)))],j,1,4)));
nodalForces: flatten(makelist([N[j]( 0  ),N[j](ℓ[j]),Q[j]( 0  ),Q[j](ℓ[j]),M[j]( 0  ),M[j](ℓ[j])],j,1,4));




Randbedingungen: Kinematische Verträglichkeit der Knotenverschiebungen

In den Knoten hat jetzt jeder Stab seine eigenen, lokalen Koordinaten der Verschiebung

,

wobei i den Knoten und k den Stab indexiert. Die Verdrehung des Knotens nennen wir

.

Die Verdrehungen der Knoten an den Enden sind in unserem 2D-System natürlich für jeden Stab gleich - wir führen den Index k hier nur ein, damit wir eine gleiche Nomenklatur für alle Koordinaten haben.

Referenz- oder "0"-Koordinatensystem.

Damit diese Verschiebungen (und Verdrehungen) miteinander verträglich sind, führen wir ein Referenzsystem „0“ mit den entsprechenden Koordinaten der Auslenkung in horizontale und vertikale Richtung ein:

Umrechnen zwischen den lokalen (Stab-) Koordinaten und dem globalen ("0"-) Koordinantensystem.

Diese verschiedenen Koordinatensysteme müssen wir ineinander umrechnen. Das können wir anschaulich tun – wie hier im Beispiel für Knoten III und Stab 3 und finden

Oder wir wählen einen formalen Ansatz mit der Euer-Transformationsmatrix

,

mit der wir die obige kinematische Beziehung aus

gewinnen. Die gesuchten kinematischen Beziehungen erhalten wir für 4 Stäbe an ihren jeweiligen Enden zu

Alle Gleichungen zu den Drehwinkeln sind - im besten Sinne des Wortes - trivial. Wir nehmen sie hier trotzdem mit, um die Systematik nicht zu brechen.


/*-----------------------------------------------------*/
/* abbreviations for displacements at beams' ends      */

nodalDisp: [];
for rod:1 thru length(index) do
   (nodes: index[rod][2],
    nodalDisp: append(nodalDisp,makelist(
                       [U[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,u[i](x))),
 		        W[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,w[i](x))),
		        Φ[nodes[j+1],rod] = subst([i=rod,x=j*ℓ[rod]], subst(fcts,φ[i](x)))], j,0,1)))$
nodalDisp: flatten(nodalDisp);

localCoords: makelist(lhs(nodalDisp[i]),i,1,length(nodalDisp));

/*-----------------------------------------------------*/
/* define kinematic relations between local and globale displacements */

kinematics:[];
for rod:1 thru length(index) do
   (nodes: index[rod][2],
    α[k]: index[rod][1],
    kinematics: append(kinematics,makelist(
                       matrix([U[nodes[i],rod]],[W[nodes[i],rod]],[Φ[nodes[i],rod]])=DI(α[k]).matrix([U[nodes[i],0]],[W[nodes[i],0]],[Φ[nodes[i],0]]),
		                 i,1,2)))$
kinematics: flatten(makelist(makelist(lhs(kinematics[i])[j][1]=rhs(kinematics[i])[j][1],i,1,length(kinematics)),j,1,3));

globalCoords: flatten(makelist([U[i,0],W[i,0],Φ[i,0]],i,1,4));



              

Randbedingungen: die kinematischen Zwangsbedingungen an den Lagern

Zusätzlich zur kinematischen Verträglichkeit müssen wir auch noch die Randbedingungen in Knoten I und II anschrieben:


/*-----------------------------------------------------*/
/* define boundary conditions at nodes I and II        */
boundaryConds:[U[1,0] = 0,
	       W[1,0] = 0,
	       U[2,0] = 0,
	       W[2,0] = 0];




Randbedingungen: Kräfte und Momente in den Knoten

Es fehlen noch die Gleichgewichtsbedingungen für die Knotenpunkte. Wir erhalten für jeden Knoten – außer denen der Lager – zwei Kraft- und ein Momentengleichgewicht. Für die Lager-Knoten können wir nur die Momentengleichgewichte anschreiben – ohne neue Unbekannte für die Lager-Reaktionskräfte einzufügen.

Kräftegleichgewicht am Knoten.

Die Schnittbilder je Knoten erhalten wir, indem wir die Schnittgrößen an den entsprechenden Schnittufern anzeichnen und dann die Gleichgewichtsbedingungen je Knoten ansetzen.

Auch hier arbeiten wir der Eulerschen Drehmatrix, um diese Arbeit zu formalisieren.

Für Knoten III:

Für Knoten IV:

Für Knoten I und II gewinnen wir jeweils nur die Momentenbilanzen, da wir die Lagerreaktionskräfte nicht als Unbekannte einführen wollen:

Der gesuchte Satz an Gleichgewichtsbedingungen für die vier Knoten lautet dann


/*-----------------------------------------------------*/
/* define equlibrium conditions at all nodes           */
/* (except foces in I and II where the bearings are  ) */
/* ((employ Euler-Matrix for transformations))         */
equilib:   [/* node 1 */
            [[M[1](0)]] = [[0]],
	    /* node 2 */
            [[ M[2](0)
	      +M[4](0)]] = [[0]],
	    /* node 3 */
             -           matrix([N[1](ℓ[1])],[Q[1](ℓ[1])],[M[1](ℓ[1])])
	     - DR(α[2]).matrix([N[2](ℓ[2])],[Q[2](ℓ[2])],[M[2](ℓ[2])])
	     + DR(α[3]).matrix([N[3]( 0  )],[Q[3]( 0  )],[M[3]( 0  )]) = matrix([0],[0],[0]),
	    /* node 4 */
             - DR(α[3]).matrix([N[3](ℓ[3])],[Q[3](ℓ[3])],[M[3](ℓ[3])])
	               - matrix([N[4](ℓ[4])],[Q[4](ℓ[4])],[M[4](ℓ[4])]) = matrix([0],[-F],[0])
	    ];
equilib: flatten(makelist(makelist(lhs( equilib [k])[l][1]=rhs( equilib [k])[l][1],l,1,length(lhs( equilib [k]))),k,1,length( equilib )));




Solving

Wir wählen hier zur Lösung der linearen Gleichungen einen Ansatz, bei dem wir die lokalen Ansatzfunktionen für die Schnittkräfte und die Verschiebungen schon in die Gleichungen der kinematischen Verträglichkeit und des Gleichgewichts einsetzten.

So erhalten wir z.B. aus

die Gleichung

.

Und aus der Momentenbilanz für Knoten IV erhalten wir entsprechend

             

Durch das Einsetzen der Lösungen für uk(xk) und wk(xk) haben wir als Unbekannte nur noch je Stab die 6 Integrationskonstanten Cij, Dij sowie je Knoten die Knotenverschiebungen Koordinaten Uk0, Wk0 und Φk0, also 36 Unbekannte.

Für das lineare Gleichungssystem

ist dann

Für deren Lösung stehen 4 Randbedingungen, 8 Gleichgewichtsbedingungen und 24 kinematische Verträglichkeitsbeziehungen – also 36 Gleichungen - zur Verfügung. Diese Gleichungen müssen sukzessive in die Matrix A und die rechte Seite des Gleichungssystems eingearbeitet werden.

Maxima liefert dann die Lösungen für unsere 36 Unbekannten.

Wir erhalten z.B. für die Normalkraft in Stab 3 den Ausdruck

der für η=0 (die Biegesteifigkeit ist Null)

.

liefert – also die Lösung für das vereinfachte Stabwerk.


/*-----------------------------------------------------*/
/* solving ......                                      */
sol: append(internalForces,subst(params,kinematics));

equs: append(boundaryConds,
             subst(internalForces,equilib),
	     subst(subst(params,kinematics),nodalDisp));

X: flatten([globalCoords,
            makelist(makelist(C[i,j],j,0,3),i,1,4),
            makelist(makelist(D[i,j],j,0,1),i,1,4)]);

/* ... in matrix-notation ......                       */
ACM: augcoefmatrix(equs,X)$
print(submatrix(ACM,37),"*",transpose(X),"=",-col(ACM,37))$

sol: ratsimp(solve(expand(subst(params,equs)),X)[1]);

/**********************************/
beamForces: ratsimp(makelist(nodalForces[i]=ratsimp(subst(params,subst(sol,subst(internalForces,nodalForces[i])))),i,1,length(nodalForces)));




Postprocessing

Wir tragen für alle Stäbe das Verhältnis Ni/Si auf:

Verhältnis der Stab-Längekräfte zwischen "verschweißten" Stäben und gelenkig verbundenen Stäben.

Wenn die Biegesteifigkeit der Stäbe klein wird, konvergiert unsere Lösung der Normalkräfte also gegen die einfache Stabwerkslösung.

Bleibt noch zu klären, ob die Spannungen durch die Biegung im Querschnitt ebenfalls vernachlässigbar klein bleiben.

Doppeltsymmetrische Querschnitte der Stäbe mit H > h und A=H2-h2.

Dazu benötigen wir die Ausdrücke für

,

die wir in die Gleichungen für die Normalspannungen im Querschnitt durch Normalkraft und Biegemoment einsetzten. Für die grafische Darstellung nutzen wir die Referenzspannung

und berechnen damit die Spannungsverhältnisse

mit

mit dem Widerstandsmoment

.

Das angefügte Maxima-Skript analysiert diese Biegespannungen - im Vergleich zu den Normalspannungen. Auch hier gibt es keine spektakulären Änderungen zur Kernaussage: solange wir ein klassisches Stabwerk mit schlanken Stäben untersuchen, ist die Approximation durch Gelenke sicher zulässig.

Die Auslenkungen der Knoten für η=1 sind

.

/*-----------------------------------------------------*/
/* post-processing                                     */

collect: flatten(subst(rodForces,subst(beamForces,makelist([N[i](0)/S[i]],i,1,4))));
collect: ratsimp(subst(moreParams, collect));

plot2d(collect,[η,0,5], [xlabel, "ηeta = EI/EA^2 ->"], [ylabel, "N[i]/S[i] ->"],[legend, "#1","#2","#3","#4"]);
/*******************************************************/

collect: flatten(subst(rodForces,subst(beamForces,makelist([M[i](0),M[i](ℓ[i])]/(F*a),i,1,4))));
collect: ratsimp(subst(moreParams, collect));

plot2d(collect,[η,0,5], [xlabel, "eta = EI/EA^2 ->"], [ylabel, "M[i]/(h*F) ->"],[legend, "#1, x=0", "#1, x=l","#2, x=0", "#2, x=l","#3, x=0", "#3, x=l","#4, x=0", "#4, x=l"]);

/* critical stresses for both models                   */
critStress: makelist([S[i]/A, [N[i](0)/A, M[i](0)/W, M[i](ℓ[i])/W]],i,1,4);

crossSection: [A= H^2-h^2, A=a^2, I= 1/12*(H^4-h^4), W=I/(H/2)];
tmp: η = subst(crossSection,I/(A^2/12));
tmp: append([tmp], solve([crossSection[1],crossSection[2], tmp],[A,H,h])[1]);
critStress: ratsimp(subst(tmp,subst(moreParams,subst(params,subst(crossSection[4],subst(sol,subst(internalForces,subst(rodForces,critStress))))))));
critStress: flatten(ratsimp(makelist(critStress[i][2]/critStress[i][1],i,1,4)));

plot2d(critStress,[η,0,5], [xlabel, "eta = I/A^2 ->"], [ylabel, "s[i]/s_ref ->"],[legend, "#1, N", "#1, M@x=0", "#1, M@x=l/2","#2, N", "#2, M@x=0", "#2, M@x=l","#3, N","#3, M@x=0", "#3, M@x=l","#4, N","#4, x=0", "#4, x=l"]);$





Links

Literature

  • ...