Gelöste Aufgaben/Kitb

Aus numpedia
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:

φ_=(2ξ33ξ2+1i(ξ32ξ2+ξ)3ξ22ξ3i(ξ3ξ2)) mit ξ=xi/i

/*******************************************************/
/* 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 EA1R2=αEI.

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

WH,ΦH,VH,ΨH,WT,ΦT,VT,ΨT,

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

ΦO,ΨO.

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

C_w,i=(Wi1Φi1WiΦi)

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

wi(x)=C_w,iϕ_(x),

darstellen, wobei für die Elementlänge hier

i=hi

gilt. Alle Knotenvariablen des Systems fassen wir nun unter

Q_=(ΦOWHΦHWTΦTΨOVHΨHVTΨT)

zusammen, die Variation der Knotenvariablen entsprechend unter

δQ_=(δΦOδWHδΦHδWTδΦTδΨOδVHδΨHδVTδΨT)

/**********************************************************/
/* 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

δW=δWqδWmastδWrods=!0

Für die Implementierung in ein Rechnerprogramm formulieren wir dabei

δW=δQ_TK__Q_δQ_Tp_

und komponieren die Gesamtsteifigkeitsmatrix K__ aus den Anteilen der virtuellen Formänderungsarbeit und der virtuellen Arbeit der äußeren Last qT 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

δWMast=i=12δWEBB,i.

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

δWmast=δQ_TK__mastQ_

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

K__mast=EI(4h16h122h100000006h1212h23+12h136h226h1212h236h22000002h16h226h124h2+4h16h222h200000012h236h2212h236h220000006h222h26h224h200000000004h16h122h100000006h1212h23+12h136h226h1212h236h22000002h16h226h124h2+4h16h222h200000012h236h2212h236h220000006h222h26h224h2)

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

δWrod=i=13δWrod,i

mit

δWrod,i=S_i(0δVHδWH) und S_i=Sie_i.

Dabei ist

(0δVHδWH)

die virtuelle Verrückung des Kraftangriffspunktes.

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

δWrod=δQ_K__rodQ_

formulieren, ausgeschreiben ist dann

K__rod=R24(R2+h12)32(000000000004EA1+EA2+EA300003EA2+3EA3000000000000000000000000000000000000000000003EA2+3EA300003EA2+3EA3000000000000000000000000000000000)

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

Die Gesamtsteifigkeitsmatrix ist nun

K__=K__mast+K__rod

Virtuelle Arbeit der Windlast

Die rechte Seite des linearen Gleichungssystems

K__Q_=p_

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

δWq=x=0h1+h2q(x)δw(x)i=12xi=0hiqi(xi)δwi(xi).

Die stückweise definierte Funktion qi(xi) 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

p_=(8R2qT4517RqT52322R2qT159RqT523213R2qT9000000).

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 Q_:

ΦO=R3qT(2187232α)45252EIαWH=243R4qT52EIαΦH=R3qT(128α+21872)45252EIαWT=R4qT(352α+2187)15232EIαΦT=R3qT(238α+21872)45252EIαΨO=372R3qT20EIαVH=372R4qT52EIαΨH=372R3qT20EIαVT=392R4qT5232EIαΨT=372R3qT20EIα

Für Knotenvariablen wie z.B. WT,ΦT kann man zeigen, dass die Ergebnisse identisch sind - auch wenn man im Fall von WTein 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 w(x),v(x) 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

  • ...