Gelöste Aufgaben/StaB: Unterschied zwischen den Versionen
(Copy from Windows) |
Keine Bearbeitungszusammenfassung |
||
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[ | [[Category:Gelöste Aufgaben]] | ||
[[ | [[Category:A*x=b]] | ||
[[ | [[Category:Analytische Lösung]] | ||
[[ | [[Category:Randwertproblem]] | ||
[[ | [[Category:Stab]] | ||
[[ | [[Category:Dehnstab]] | ||
[[ | [[Category:Euler-Bernoulli-Balken]] | ||
[[ | [[Category:Geometrische Zwangsbedingung]] | ||
[[ | [[Category:Koordinaten]] | ||
[[ | [[Category:Maxima]] | ||
[[Category:Stabwerk]] | |||
==Aufgabenstellung== | ==Aufgabenstellung== | ||
Wir untersuchen die Belastung eines ebenen Stabwerks. Die Stäbe haben wie skizziert die Länge ''ℓ'' bzw. ''ℓ/2.'' | 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. | Die Struktur wird mit der Kraft ''F'' belastet. | ||
<onlyinclude> | <onlyinclude> | ||
[[Datei: | [[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. | 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>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. | </onlyinclude> | ||
[[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 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 25: | Zeile 28: | ||
Wir nutzen das Computer-Algebra-System Maxima zur Lösung. Das macht Sinn, weil wir eine große Anzahl von Gleichungen verwalten müssen. | Wir nutzen das Computer-Algebra-System Maxima zur Lösung. Das macht Sinn, weil wir eine große Anzahl von Gleichungen verwalten müssen. | ||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Declarations | |||
|text= | |||
[[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|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 | 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: | ||
::<math> | |||
\frac{{S_3}}{2}\operatorname{-}\frac{{S_2}}{2}\operatorname{-}{S_1}\operatorname{=}0\operatorname{,}\operatorname{-}\left( \frac{\sqrt{3} {S_3}}{2}\right) \operatorname{-}\frac{\sqrt{3} {S_2}}{2}\operatorname{=}0\operatorname{,}\operatorname{-}{S_4}\operatorname{-}\frac{{S_3}}{2}\operatorname{=}0\operatorname{,}F\operatorname{-}\frac{\sqrt{3} {S_3}}{2}\operatorname{=}0 | |||
</math> | |||
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>. | |||
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= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Die Lösung der Felddifferentialgleichung | |||
|text= | |||
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 <math>u_k(x_k)</math> und | |||
* in Stab-Querrichtung mit <math>w_k(x_k)</math>. | |||
Für Stab 3 sieht dies folgendermaßen aus: | Für Stab 3 sieht dies folgendermaßen aus: | ||
[[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 | ||
<table class="wikitable" style="background-color:white; float: none; margin-right:14px;"> | |||
<tr><th><math>EI w^{IV} = 0</math></th><th><math>EA u'' = 0</math></th></tr> | |||
<tr><td><math> | |||
\begin{array}{ccl} | |||
w_{k}(x_k)&=&\frac{\displaystyle a}{6}C_{k,3} \left(\frac{x_k}{\ell_k}\right)^3+ | |||
{ | \frac{\displaystyle a}{2}C_{k,2} \left(\frac{x_k}{\ell_k}\right)^2+ | ||
a C_{k,1} \left(\frac{x_k}{\ell_k}\right) + | |||
a C_{k,0} \\ | |||
w'_{k}(x_k)&=& | |||
\frac{\displaystyle a}{2}C_{k,3} \frac{x_k^2}{\ell_k^3}+ | |||
a C_{k,2} \frac{x_k }{\ell_k^2}+ | |||
a C_{k,1} \frac{ 1 }{\ell_k^1}\\ | |||
w''_{k}(x_k)&=& | |||
a C_{k,3} \frac{x_k }{\ell_k^3}+ | |||
a C_{k,2} \frac{ 1 }{\ell_k^2}\\ | |||
w'''_{k}(x_k)&=& | |||
a C_{k,3} \frac{ 1 }{\ell_k^3}\\ | |||
\end{array} | |||
</math></td> | |||
<td><math> | |||
\begin{array}{ccl} | |||
u_{k}(x_k)&=& a D_{k,1} \left(\frac{x_k}{\ell_k}\right)+ | |||
a D_{k,0}\\ | |||
u'_{k}(x_k)&=&a D_{k,1} \frac{1}{\ell_k} | |||
\end{array} | |||
</math></td></tr> | |||
</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 | |||
::<math>\varphi_k(x_k) = w'_k(x_k)</math>. | |||
Die Schnittkräfte im Stab ergeben sich dann aus | Die Schnittkräfte im Stab ergeben sich dann aus | ||
<table class="wikitable" style="background-color:white; float: none; margin-right:14px;"> | |||
<tr><td> | |||
<math>Q_k(x_k) = - EI w'''_k(x_k)</math><br/> | |||
<math>M_k(x_k) = - EI w''_k(x_k)</math> | |||
</td><td> | |||
<math>N_k(x_k) = + EA u'_k(x_k)</math> | |||
</td></tr> | |||
</table> | |||
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|300px|none|mini|Schnittlasten am Stab.]] | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
In den Knoten hat jetzt jeder Stab | {{MyCodeBlock|title=Randbedingungen: Kinematische Verträglichkeit der Knotenverschiebungen | ||
|text= | |||
In den Knoten hat jetzt jeder Stab seine eigenen, lokalen Koordinaten der Verschiebung | |||
::<math>U_{i,k}, W_{i,k}</math>, | |||
wobei ''i'' den Knoten und ''k'' den Stab indexiert. Die Verdrehung des Knotens nennen wir | |||
::<math>\Phi_{i,k}</math>. | |||
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. | |||
Damit diese | [[Datei:StaB-06.PNG|200px|right|mini|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: | |||
[[Datei:StaB-15.PNG|150px|left|mini|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 | 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 | ||
::<math>{U_{3,3}}=\frac{\sqrt{3} {W_{3,0}}}{2}+\frac{{U_{3,0}}}{2},{W_{3,3}}=\frac{{W_{3,0}}}{2}-\frac{\sqrt{3} {U_{3,0}}}{2}</math> | |||
Oder wir wählen einen formalen Ansatz mit der Euer-Transformationsmatrix | Oder wir wählen einen formalen Ansatz mit der Euer-Transformationsmatrix | ||
, | ::<math>\underline{\underline{D}}_R(\alpha_k) = | ||
\left( | |||
\begin{array}{ccc} | |||
\cos(\alpha_k)&\sin(\alpha_k)&0\\ | |||
-\sin(\alpha_k)&\cos(\alpha_k)&0\\ | |||
0 & 0 & 1 | |||
\end{array} | |||
\right) | |||
</math>, | |||
mit der wir die obige kinematische Beziehung aus | |||
::<math> | |||
\left( | |||
\begin{array}{c} | |||
U_{i0}\\ | |||
W_{i0}\\ | |||
\Phi_{i0}\\ | |||
\end{array} | |||
\right) | |||
= | |||
\underline{\underline{D}}_R(\alpha_k)\cdot | |||
\left( | |||
\begin{array}{c} | |||
U_{ik}\\ | |||
W_{ik}\\ | |||
\Phi_{ik}\\ | |||
\end{array} | |||
\right) | |||
</math> | |||
gewinnen. Die gesuchten kinematischen Beziehungen erhalten wir für 4 Stäbe an ihren jeweiligen Enden zu | |||
::<math> | |||
\begin{array}{l} | |||
{U_{1,1}} = {U_{1,0}} , | |||
{W_{1,1}} = {W_{1,0}} , | |||
{{\Phi }_{1,1}} = {{\Phi }_{1,0}} ,\\ | |||
{U_{3,1}} = {U_{3,0}} , | |||
{W_{3,1}} = {W_{3,0}} , | |||
{{\Phi }_{3,1}} = {{\Phi }_{3,0}} ,\\ | |||
{U_{2,2}} = \frac{{U_{2,0}}}{2}-\frac{\sqrt{3} {W_{2,0}}}{2} , | |||
{W_{2,2}} = \frac{{W_{2,0}}}{2} + \frac{\sqrt{3} {U_{2,0}}}{2} , | |||
{{\Phi }_{2,2}} = {{\Phi }_{2,0}} ,\\ | |||
{U_{3,2}} = \frac{{U_{3,0}}}{2}-\frac{\sqrt{3} {W_{3,0}}}{2} , | |||
{W_{3,2}} = \frac{{W_{3,0}}}{2} + \frac{\sqrt{3} {U_{3,0}}}{2} , | |||
{{\Phi }_{3,2}} = {{\Phi }_{3,0}} ,\\ | |||
{U_{3,3}} = \frac{\sqrt{3} {W_{3,0}}}{2} + \frac{{U_{3,0}}}{2} , | |||
{W_{3,3}} = \frac{{W_{3,0}}}{2}-\frac{\sqrt{3} {U_{3,0}}}{2} , | |||
{{\Phi }_{3,3}} = {{\Phi }_{3,0}} ,\\ | |||
{U_{4,3}} = \frac{\sqrt{3} {W_{4,0}}}{2} + \frac{{U_{4,0}}}{2} , | |||
{W_{4,3}} = \frac{{W_{4,0}}}{2}-\frac{\sqrt{3} {U_{4,0}}}{2} , | |||
{{\Phi }_{4,3}} = {{\Phi }_{4,0}} ,\\ | |||
{U_{2,4}} = {U_{2,0}} , | |||
{W_{2,4}} = {W_{2,0}} , | |||
{{\Phi }_{2,4}} = {{\Phi }_{2,0}} ,\\ | |||
{U_{4,4}} = {U_{4,0}}, | |||
{W_{4,4}} = {W_{4,0}}, | |||
{{\Phi }_{4,4}} = {{\Phi }_{4,0}} | |||
\end{array} | |||
</math> | |||
Alle Gleichungen zu den Drehwinkeln sind - im besten Sinne des Wortes - trivial. Wir nehmen sie hier trotzdem mit, um die Systematik nicht zu brechen. | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Randbedingungen: die kinematischen Zwangsbedingungen an den Lagern | |||
|text= | |||
Zusätzlich zur kinematischen Verträglichkeit müssen wir auch noch die Randbedingungen in Knoten ''I'' und ''II'' anschrieben: | Zusätzlich zur kinematischen Verträglichkeit müssen wir auch noch die Randbedingungen in Knoten ''I'' und ''II'' anschrieben: | ||
::<math> | |||
\begin{array}{l} | |||
U_{1,0} = 0\\ | |||
w_{1,0} = 0\\ | |||
U_{2,0} = 0\\ | |||
w_{2,0} = 0\\ | |||
\end{array} | |||
</math> | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Randbedingungen: Kräfte und Momente in den Knoten | |||
|text= | |||
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|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 104: | Zeile 329: | ||
Für Knoten ''III'': | Für Knoten ''III'': | ||
::<math> | |||
-\left(\begin{array}{c} N_1(\ell_1)\\ Q_1(\ell_1)\\ M_1(\ell_1)\end{array}\right) | |||
- \underline{\underline{D}}_R(\alpha_2) \cdot \left(\begin{array}{c} N_2(\ell_2)\\ Q_2(\ell_2)\\ M_2(\ell_2)\end{array}\right) | |||
+ \underline{\underline{D}}_R(\alpha_3) \cdot \left(\begin{array}{c} N_3(\ell_3)\\ Q_3(\ell_3)\\ M_3(\ell_3)\end{array}\right) | |||
= | |||
\left(\begin{array}{c} 0\\ 0\\ 0\end{array}\right) | |||
</math> | |||
Für Knoten ''IV'': | |||
::<math> | |||
- \underline{\underline{D}}_R(\alpha_3) \cdot \left(\begin{array}{c} N_3(\ell_3)\\ Q_3(\ell_3)\\ M_3(\ell_3)\end{array}\right) | |||
-\left(\begin{array}{c} N_4(\ell_4)\\ Q_4(\ell_4)\\ M_4(\ell_4)\end{array}\right) | |||
= | |||
\left(\begin{array}{c} 0\\ -F\\ 0\end{array}\right) | |||
</math> | |||
Für Knoten ''I'' und ''II'' gewinnen wir jeweils nur die Momentenbilanzen, da wir die Lagerreaktionskräfte nicht als Unbekannte einführen wollen: | |||
::<math>M_1(0) = 0,</math> | |||
::<math>M_2(0)+M_4(0) = 0,</math> | |||
Der gesuchte Satz an Gleichgewichtsbedingungen für die vier Knoten lautet dann | |||
::<math> | |||
\begin{array}{l} | |||
{M_1}(0) = 0\\ | |||
{M_4}(0)+{M_2}(0) = 0\\ | |||
-\left( \frac{\displaystyle \sqrt{3} {Q_2}\left( {\ell_0}\right) }{\displaystyle 2}\right) -\frac{{\displaystyle N_2}\left( {\ell_0}\right) }{\displaystyle 2}-{N_1}\left( \frac{{\displaystyle \ell_0}}{\displaystyle 2}\right) -\frac{\displaystyle \sqrt{3} {Q_3}(0)}{\displaystyle 2}+\frac{\displaystyle {N_3}(0)}{\displaystyle 2}=0\\ | |||
-\left( \frac{\displaystyle {Q_2}\left( {\ell_0}\right) }{\displaystyle 2}\right) +\frac{\displaystyle \sqrt{3} {N_2}\left( {\ell_0}\right) }{\displaystyle 2}-{Q_1}\left( \frac{{\displaystyle \ell_0}}{\displaystyle 2}\right) +\frac{\displaystyle {Q_3}(0)}{\displaystyle 2}+\frac{\displaystyle \sqrt{3} {N_3}(0)}{\displaystyle 2}=0\\ | |||
-{M_2}\left( {\ell_0}\right) -{M_1}\left( \frac{{\ell_0}}{2}\right) +{M_3}(0)=0\\ | |||
-{N_4}\left( {\ell_0}\right) +\frac{\displaystyle \sqrt{3} {Q_3}\left( {\ell_0}\right) }{\displaystyle 2}-\frac{\displaystyle {N_3}\left( {\ell_0}\right) }{\displaystyle 2}=0\\ | |||
-{Q_4}\left( {\ell_0}\right) -\frac{\displaystyle {Q_3}\left( {\ell_0}\right) }{\displaystyle 2}-\frac{\displaystyle \sqrt{3} {N_3}\left( {\ell_0}\right) }{\displaystyle 2}=-F\\ | |||
-{M_4}\left( {\ell_0}\right) -{M_3}\left( {\ell_0}\right) =0 | |||
\end{array} | |||
</math> | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Solving | |||
|text= | |||
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. | 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 | So erhalten wir z.B. aus | ||
::<math>{U_{3,3}}=\frac{\sqrt{3} {W_{3,0}}}{2}+\frac{{U_{3,0}}}{2}</math> | |||
die Gleichung | die Gleichung | ||
::<math>a D_{3,0} = \frac{\sqrt{3} {W_{3,0}}}{2}+\frac{{U_{3,0}}}{2}</math>. | |||
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> | |||
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 | |||
::<math>\underline{\underline{A}} \cdot \underline{X} = \underline{b}</math> | |||
ist dann | |||
::<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{, | |||
}{C_{4,2}},{C_{4,3}},{D_{1,0}},{D_{1,1}},{D_{2,0}},{D_{2,1}},{D_{3,0}},{D_{3,1}},{D_{4,0}},{D_{4,1}}\right)</math> | |||
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 | |||
::<math> | |||
{N_3}(0)={N_3}(\ell_3)=\frac{11 {{3}^{\frac{3}{2}}} {{\ell}_{0}^{2}} {{A}^{2}} {{\eta }^{2}}+518 \sqrt{3} {{\ell}_{0}^{4}} A \eta +88 {{3}^{\frac{3}{2}}} {{\ell}_{0}^{6}}}{27 {{A}^{3}} {{\eta }^{3}}+459 {{\ell}_{0}^{2}} {{A}^{2}} {{\eta }^{2}}+1008 {{\ell}_{0}^{4}} A \eta +396 {{\ell}_{0}^{6}}} \cdot F | |||
</math> | |||
der für η=0 (die Biegesteifigkeit ist Null) | |||
::<math>N_3 = \frac{2 F}{\sqrt{3}} = S_3</math>. | |||
liefert – also die Lösung für das vereinfachte Stabwerk. | |||
|code= | |||
<syntaxhighlight lang="lisp" line start=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> | |||
}} | |||
<!--------------------------------------------------------------------------------> | |||
{{MyCodeBlock|title=Postprocessing | |||
|text= | |||
Wir tragen für alle Stäbe das Verhältnis ''N<sub>i</sub>/S<sub>i</sub>'' auf: | |||
[[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. | |||
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 | |||
::<math>\eta=\frac{\displaystyle (H^4-h^4)}{(H^2-h^2)^2}, | |||
H = (a \sqrt{\eta+1})/\sqrt{2}, | |||
h = (a \sqrt{\eta-1})/\sqrt{2} | |||
</math>, | |||
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 | |||
::<math>\sigma_{ref,i} = \frac{\displaystyle S_i}{A}</math> | |||
und berechnen damit die Spannungsverhältnisse | |||
::<math> | |||
s_{i,N } = \frac{\displaystyle \sigma_{N,i }}{\sigma_{ref,i}}, | |||
s_{i,M, 0 } = \frac{\displaystyle \sigma_{M,i, 0 }}{\sigma_{ref,i}}, | |||
s_{i,M,\ell} = \frac{\displaystyle \sigma_{M,i,\ell}}{\sigma_{ref,i}} | |||
</math> | |||
mit | |||
::<math> | |||
\sigma_{N,i } = \frac{\displaystyle N_i }{A}, | |||
\sigma_{M,i, 0 } = \frac{\displaystyle M_i( 0 )}{W}, | |||
\sigma_{M,i,\ell} = \frac{\displaystyle M_i(\ell_i)}{W} | |||
</math> | |||
mit dem Widerstandsmoment | |||
::<math> | |||
W = \frac{\displaystyle I}{\left(\frac{\displaystyle H}{\displaystyle 2}\right)} | |||
</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 | ||
::<math> | |||
\begin{array}{l} | |||
{{ | {U_{1,0}}=0\\ | ||
{W_{1,0}}=0\\ | |||
{{\Phi }_{1,0}}=3.97 \frac{F}{E {{a}^{2}}}\\ | |||
{U_{2,0}}=0\\ | |||
{W_{2,0}}=0\\ | |||
{{\Phi }_{2,0}}=2.45 \frac{F}{E {{a}^{2}}}\\ | |||
{U_{3,0}}=57.74 \frac{F}{E a}\\ | |||
{W_{3,0}}=166.64 \frac{F}{E a}\\ | |||
{{\Phi }_{3,0}}=2.06 \frac{F}{E {{a}^{2}}}\\ | |||
{U_{4,0}}=- 57.74 \frac{F}{E a} \\ | |||
{W_{4,0}}=366.64 \frac{F}{E a}\\ | |||
{{\Phi }_{4,0}}=3.12 \frac{F}{E {{a}^{2}}} | |||
\end{array} | |||
</math>. | |||
|code= | |code= | ||
<syntaxhighlight lang="lisp" line start=1> | <syntaxhighlight lang="lisp" line start=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.
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.
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
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.
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:
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:
/*----------------------------------------------------*/
/* 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.
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:
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.
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:
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.
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
- ...