Gelöste Aufgaben/Kitb

Aus numpedia
Version vom 22. November 2022, 14:22 Uhr von Mechaniker (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


Aufgabenstellung

Diese Aufgabe ist eine Variante der Aufgabe „Kita“, bei der die analytische Lösung gesucht ist.

Lageplan

Das skizzierte System ist ein Mast unter einer linear veränderlichen Windlast, der durch drei gleichmäßig über den Umfang verteilten Stäbe abgestützt wird.

Gesucht ist die Näherungslösung für ein FE-Modell des Masts (Euler-Bernoulli-Balken) und der drei Dehnstäbe.

Sicht auf den Mast

Der Mast steht senkrecht dabei auf einer ebenen Unterlage mit dem festen Gelenklager „O“ und ist durch drei Stäbe abgestützt. Alle Stäbe sind in Punkt „H“ mit dem Mast verbunden und in den Punkten „A“, „B“ und „C“ gelenkig gelagert. Die Lager A, B und C sind gleichmäßig in einem Radius von R um O herum auf der Unterlage verteilt. Die Windlast hat den Maximalwert qT und wirkt in der Ebene, die durch die Punkte A, O und H aufgespannt werden. Für die Geometrie des Masts gilt h1 = 2 h2, h2 = √2 R, außerdem sei die Dehnsteifigkeiten der Stäbe E A2=2 E A1,E A3=E A1.

Der Mast hat ein zylindrisches Profil mit Innen- und Außendurchmesser di, da.

Mastprofil

Ein Knicken der drei Stäbe sei ausgeschlossen.

Lösung mit Maxima

Mit Maxima berechnen wir die Lösung des Problems mit der Methode der Finiten Elemente. Da wir in Aufgabe „Kita“ bereits die Knoten-Variablen als Hilfsgrößen eingeführt haben, können wir die Nomenklatur, Parameter und abgeleitete Größen direkt übernehmen - und die Ergebnisse auch vergleichen.

Header

Kern der Lösung ist die Komposition der Element-Steifigkeitsmatrix sowie der "rechten Seite" des Gleichungssystems.


/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 21.05.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2022-08-19                            */
/* ref: NMM, Labor 2                                   */
/* Mast unter linear-veränderlicher Windlast           */
/* - Lösung mit der Methode der FE                     */
/*******************************************************/




Declarations

Die Parameter können wir direkt aus Kita übernehmen. Hinzu kommt die Definition der Trial-Functions aus FEM-Formulierung für den Euler-Bernoulli-Balken – die wir anstelle der allgemeinen Lösung der Differentialbeziehung für w(x), v(x) ansetzen:


/*******************************************************/
/* declarations                                        */
/* *****************************************************/

/* parameter selection */
params: [[EA[2]=2*EA[1],EA[3]=EA[1], EA[1] = α*EI/R^2], [h[1] = 2*h[2], h[2]=sqrt(2)*R]];
assume(R>0);

/* trial-functions     */
φ : [ 2*ξ^3-3*ξ^2+1,
       (ξ^3-2*ξ^2+ξ)*ℓ[i],
        3*ξ^2-2*ξ^3,
       (ξ^3-ξ^2)*ℓ[i]];

/* non-sclar variables */
declare(r,nonscalar,
        e,nonscalar);

/* geometry           **********************************/
/* points */
geo: [r[H] = matrix([ h[1], 0, 0]),
      r[A] = matrix([   0 , R*sin(    0   ),-R*cos(    0   )]),
      r[B] = matrix([   0 , R*sin(-2*%pi/3),-R*cos(-2*%pi/3)]),
      r[C] = matrix([   0 , R*sin(+2*%pi/3),-R*cos(+2*%pi/3)])];
geo: append(geo, subst(geo, [r[1] = r[A]-r[H],
                             r[2] = r[B]-r[H],
                             r[3] = r[C]-r[H]]));
geo: append(geo, [L = sqrt(subst(geo,r[1]).subst(geo,r[1]))]);
/* unit-vecotor coefficients */
geo: append(geo, makelist(e[i]=subst(geo,r[i]/L),i,1,3));



Wir verwenden außerdem die Abkürzung .

Kinematics

Die Koordinaten der drei beweglichen Knoten O, H und T definieren die Kinematik des Systems. Wie in Kita sind dies die Verschiebungen und Verdrehungen der Knoten-Querschnitte in H und T in die zwei Raumrichtungen z und y, also

,

sowie die Verdrehung des Querschnitts in „O“ mit den Kippwinkeln, also

.

Diese System-Variablen fassen wir elementweise zusammen, z.B. für wi(x) als

Die Verschiebung der Querschnitte eines FE-Elements können wir dann – hier am Beispiel von wi(x) – über die Funktion

darstellen, wobei für die Elementlänge hier

gilt. Alle Knotenvariablen des Systems fassen wir nun unter

zusammen, die Variation der Knotenvariablen entsprechend unter


/**********************************************************/
/* kinematics                                             */
/* ********************************************************/
/* coordinates */
δQ : [δΦ[O],δW[H],δΦ[H],δW[T],δΦ[T],δΨ[O],δV[H],δΨ[H],δV[T],δΨ[T]];
 Q : [ Φ[O], W[H], Φ[H], W[T], Φ[T], Ψ[O], V[H], Ψ[H], V[T], Ψ[T]];




Equlibrium Condition

Die Gleichgewichtsbedingungen nach dem Prinzip_der_virtuellen_Verrückungen sind

Für die Implementierung in ein Rechnerprogramm formulieren wir dabei

und komponieren die Gesamtsteifigkeitsmatrix aus den Anteilen der virtuellen Formänderungsarbeit und der virtuellen Arbeit der äußeren Last zusammen.

Virtuelle Formänderungsenergie des Masts

Diese Anteile können wir direkt aus der Anleitungen „FEM-Formulierung für den Euler-Bernoulli-Balken“ übernehmen. Wir haben zwei Elemente (von O nach H und von H nach T) und schreiben entsprechend

.

Die liefern dann den Anteil des Masts an der virtuellen Arbeit, den wir in der Form

anschreiben können

Da der untere Knoten keine Verschiebungs-Freiheitsgrade hat, streichen wir die entsprechenden Zeilen und Spalten der Element-Steifigkeitsmatrix aus FEM:_Trial-Functions für kubische Ansatz-Polynome, der Beitrag des Masts zur Gesamtsteifigkeitsmatrix ist dann

Man sieht in der Matrix sehr schön, wie die Anteile in die beiden Raumrichtungen z und y in der Matrix getrennt sind. Die z-Richtung bevölkert den oberen, linken Teil, die y-Richtung den unteren, rechten Teil. Die Auslenkungen in diese beiden Richtungen sind durch die Steifigkeitsmatrix nicht gekoppelt. Das wird sich ändern, wenn wie die Stäbe mit einbauen.

Virtuelle Formänderungsenergie der Stäbe

Die virtuelle Formmänderungsarbeit des Stabes können wir direkt aus der Stabkraft Si anschreiben, die wir in Kita schon hergeleitet haben. So gilt für

mit

Dabei ist

die virtuelle Verrückung des Kraftangriffspunktes.

Einsetzen liefert dann die Anteile der Stäbe an der virtuellen Arbeit, den wir wieder in der Form

formulieren, ausgeschreiben ist dann

Hier habe wir die Elemente nach den Stäben eingefärbt. Man sieht gut, wie der Term zu einer Kopplung der Auslenkungen in die beiden Raumrichtungen führt, wenn .

Die Gesamtsteifigkeitsmatrix ist nun

Virtuelle Arbeit der Windlast

Die rechte Seite des linearen Gleichungssystems

kommt aus der virtuellen Arbeit der Streckenlast q(x), also

Die stückweise definierte Funktion kennen wir schon aus diesem Abschnitt der Lösung zu "Kita". Für die Integration können wir die auch die Lösung der Faltungsintegrale für die rechte Seite des Gleichungssystems aus äußeren, einprägten Lasten nutzen.

Aber Achtung: die Streckenlast mit unseren Koordinaten ist negativ! Wir erhalten

.

Die ersten 5 Elemente, die zur z-Richtung gehören - sind ungleich Null, die letzten 5 Element sind gleich Null - so wie erwartet.


/**********************************************************/
/* virtual Work of EBB: δW[t] : δW[q] -δW[Mast] - δW[Rod] */
/* ********************************************************/

declarations: δW[EBB] = EI/ℓ[i]^3*matrix([δW[i-1],δΦ[i-1],δW[i],δΦ[i]]).matrix([  12  ,  6*ℓ[i]  ,-  12  , 6*ℓ[i]  ],
                                                                               [6*ℓ[i],  4*ℓ[i]^2,-6*ℓ[i], 2*ℓ[i]^2],
                                                                               [- 12  ,- 6*ℓ[i]  ,   12  ,-6*ℓ[i]  ],
                                                                               [6*ℓ[i],  2*ℓ[i]^2,-6*ℓ[i], 4*ℓ[i]^2]).matrix([W[i-1]],[Φ[i-1]],[W[i]],[Φ[i]]);

sectionReplace: [[[ℓ[i]=h[ 1],δW[i-1]=  0  ,δΦ[i-1]=δΦ[O],δW[i]=δW[H],δΦ[i]=δΦ[H], W[i-1]=  0  , Φ[i-1]= Φ[O], W[i]= W[H], Φ[i]= Φ[H]],
                  [ℓ[i]=h[ 2],δW[i-1]=δW[H],δΦ[i-1]=δΦ[H],δW[i]=δW[T],δΦ[i]=δΦ[T], W[i-1]= W[H], Φ[i-1]= Φ[H], W[i]= W[T], Φ[i]= Φ[T]]],
                 [[ℓ[i]=h[ 1],δW[i-1]=  0  ,δΦ[i-1]=δΨ[O],δW[i]=δV[H],δΦ[i]=δΨ[H], W[i-1]=  0  , Φ[i-1]= Ψ[O], W[i]= V[H], Φ[i]= Ψ[H]],
                  [ℓ[i]=h[ 2],δW[i-1]=δV[H],δΦ[i-1]=δΨ[H],δW[i]=δV[T],δΦ[i]=δΨ[T], W[i-1]= V[H], Φ[i-1]= Ψ[H], W[i]= V[T], Φ[i]= Ψ[T]]]];

δW[Mast]: sum(sum(subst(sectionReplace[dir][sec],subst(declarations,δW[EBB])),sec,1,2),dir,1,2);

/* S[i] as a function of W[H] and V[H] *****************/
ΔL: subst(geo,[r[A] - (r[H]+matrix([0,V[H],W[H]])),
               r[B] - (r[H]+matrix([0,V[H],W[H]])),
               r[C] - (r[H]+matrix([0,V[H],W[H]]))]);
ΔL: makelist(sqrt(ΔL[i].ΔL[i])-subst(geo,L),i,1,3);
displ: [W[H],V[H]];
null : makelist(displ[i]=0,i,1,2);
/* linearize .... */
ΔL: sum(subst(null, diff(ΔL,displ[j]))*displ[j],j,1,2);
S : -makelist(EA[i]*ΔL[i]/subst(geo,L),i,1,3);

δW[Rod]: subst(geo,sum(S[i]*e[i].matrix([0,δV[H],δW[H]]),i,1,3));

/* virtual Work of q(x) *****************/
lineLoad: [q(x) = -(q[i-1]*(1-x/h[i])+q[i]*x/h[i]), [[q[i-1]=0,q[i]=q[H],h[i]=h[1]],[q[i-1]=q[H],q[i]=q[T],h[i]=h[2]]],q[H] = q[T]*h[1]/(h[1]+h[2])];
virtDisp: subst(ℓ[i]=h[i],(δw(x)=[δW[i-1],δΦ[i-1],δW[i],δΦ[i]].φ));

δW[q]: subst(lineLoad[3],sum(subst(sectionReplace[1][sec],subst(lineLoad[2][sec],integrate(subst(ξ=x/h[i],subst(virtDisp,subst(lineLoad[1],q(x)*δw(x)))),x,0,h[i]))),sec,1,2));

/* total virtual Work  *****************/

δW[t] : δW[q] -δW[Mast] - δW[Rod];
δW[t]: expand(δW[t])$
equs: makelist(0,i,1,length(Q));
K: zeromatrix(length(Q),length(Q));
p: zeromatrix(length(Q),1);
for row:1 thru length(Q) do
   (equs[row]:-coeff(δW[t],δQ[row]),
    for col:1 thru length(Q) do
        K[row,col]:-coeff(coeff(δW[t],δQ[row]),Q[col]))$

rightHandSide: expand(δW[t]+δQ.K.Q);
for row:1 thru length(Q) do
    p[row,1]:coeff(rightHandSide,δQ[row])$

print(ratsimp(subst(params[2],K)),"*",transpose(Q),"=",ratsimp(subst(params[2],p)))$




Solving

Die Lösung des linearen Gleichungssystems liefert das Ergebnis für die Knotenvariablen in :

Für Knotenvariablen wie z.B. kann man zeigen, dass die Ergebnisse identisch sind - auch wenn man im Fall von ein bisschen umformen muss \ldots.


/*******************************************************/
/* solving                                             */
/* *****************************************************/

C: solve(subst(params[1],subst(params[2],equs)), Q)[1];

sol: [[w(x)= [0, Φ[O], W[H], Φ[H]].φ,w(x)= [W[H], Φ[H], W[T], Φ[T]].φ],
      [v(x)= [0, Ψ[O], V[H], Ψ[H]].φ,v(x)= [V[H], Ψ[H], V[T], Ψ[T]].φ]];
for dir:1 thru 2 do
    for sec:1 thru 2 do
        sol[dir][sec]: subst([ℓ[i]=h[sec]],sol[dir][sec]);
sol: subst(α=500,subst(params[1],subst(params[2],subst(C,sol))));




Post-Processing

Einsetzten der Knotenvaraiblen in die Ansatzfunktionen liefert dern Verlauf der Auslenkung und Schnittkräfte - hier am Beispiel des Biegemoments: Auch wenn der Verlauf der Auslenkungen identisch zu sein scheint mit der Lösung aus Kita, so sieht man an der zweiten Ableitung - dem Momentenverlauf - doch deutlich, dass das nicht stimmt. Wir sehen also hier eine Näherungslösung für die analytische Rechnung.

Auslenkung der Querschnitte
Biegemomente

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

/* what size is α ?                                                */
/* geopar: [A[1]= π/ 4*d[r]^2, d[r]=1*cm,                          
             I  = π/64*(d[o]^4-d[i]^4), d[o]=10*cm, d[i]=9*cm,     
             R  = h[2]/sqrt(2), h[2]=500*cm,
             α  = A[1]*R^2/I              ]                        */

toPlot: ratsimp([subst(sol[1][1],w(x)/R),subst(sol[1][2],w(x)/R),subst(sol[2][1],v(x)/R),subst(sol[2][2],v(x)/R)]/(q[T]*R^3/6/EI));
plot2d([[parametric, ξ, toPlot[1], [ξ,0,1]],
        [parametric, 1+ξ*subst(params[2],h[2]/h[1]), toPlot[2], [ξ,0,1]],
        [parametric, ξ, toPlot[3], [ξ,0,1]],
        [parametric, 1+ξ*subst(params[2],h[2]/h[1]), toPlot[4], [ξ,0,1]]],
        [legend, "w(x), sec 1", "w(x), sec 2", "v(x), sec 1", "v(x), sec 2"],
        [xlabel, "x/h_1->"],[ylabel, "w(x)/W_0, v(x)/V_0 ->"])$

toPlot: ratsimp(subst(params[2],[diff(subst(sol[1][1],-EI*w(x)),ξ,2)/h[1]^2,diff(subst(sol[1][2],-EI*w(x)),ξ,2)/h[2]^2,diff(subst(sol[2][1],-EI*v(x)),ξ,2)/h[1]^2,diff(subst(sol[2][2],-EI*v(x)),ξ,2)/h[1]^2]/(q[T]*R^2)));
plot2d([[parametric, ξ, toPlot[1], [ξ,0,1]],
        [parametric, 1+ξ*subst(params[2],h[2]/h[1]), toPlot[2], [ξ,0,1]],
        [parametric, ξ, toPlot[3], [ξ,0,1]],
        [parametric, 1+ξ*subst(params[2],h[2]/h[1]), toPlot[4], [ξ,0,1]]],
        [legend, "M_y(x), sec 1", "M_y(x), sec 2", "M_z(x), sec 1", "M_z(x), sec 2"],
        [xlabel, "x/h_1->"],[ylabel, "M(x)/M_0 ->"])$






Links

  • ...

Literature

  • ...