Gelöste Aufgaben/FEC1/FEC1 - Teil II: Das Modell erstellen

Aus numpedia
Zur Navigation springen Zur Suche springen

⬅ Zurück zu Teil I

Mathematisches Modell formulieren

Die Bewegungsgleichungen leiten wir mit dem Prinzip der virtuellen Verrückungen her, die Gleichgewichtsbedingung lautet also

.

Die Anteile ergeben sich jeweils aus der Summe der Teilsysteme

mit

.

Auf keines der Teilsysteme wirkt eine äußere, eingeprägte Last (keine Kraft, kein Moment) - es treten also nur die Anteile der d'Alembert'schen Kräfte und der Formänderungsenergie auf.

Impeller- und Turbinen-Rad sowie die Unwuchten erfassen wir als Starrkörper - ihre virtuelle Formänderungsenergie ist Null:

.

Für die beiden Lager berücksichtigen wir keine Massen, hier ist also

.

Die verbleibenden virtuellen Arbeiten des Systems schreiben wir an, sortieren nach den Koordinaten und deren Variation und formen daraus das System von Bewegungsgleichungen.

tmp

Diskretisierung der Welle

Die Welle ist ein elastisches Kontinuum. Wir können sie als Stab (als eindimensionales Kontinuum) modellieren. Dabei passen

Der Einfachheit halber wählen wir den klassischen Euler-Bernoulli-Balken. Die Ansatzfunktionen und Element-Steifigkeits-Matrizen nehmen wir aus der FEM-Formulierung für den Euler-Bernoulli-Balken.

Für die Komplexität des Modells ist die Anzahl der Finiten Elemente entscheidend. Jeder Knoten eines Finite Elements für diesen 3D-Euler-Bernoulli-Ballken hat die vier Koordinaten

.

Die Anzahl der Koordinaten K ist also mit N als Anzahl der Elemente

Uns geht es hier primär um die Anschaulichkeit - wir approximieren die Bewegung der Welle mit einem Finiten Element.

Damit sind die Koordinaten der Welle - und damit des Gesamt-Systems

Hier steht der Index 0 für Punkt A und Index 1 für Punkt B.


/*******************************************************/
/******************* PART   I **************************/
/*******************************************************/

/* define trial functions */
trial: w(x,t) = sum(a[i]*xi^i,i,0,3);
nodal : [W[0](t)  = subst([xi=0],subst(trial,w(x,t))),
         Φ[0](t)  = subst([xi=0],diff(subst(trial,w(x,t)),xi)/ℓ),
         W[1](t)  = subst([xi=1],subst(trial,w(x,t))),
         Φ[1](t)  = subst([xi=1],diff(subst(trial,w(x,t)),xi)/ℓ)];
trial: ratsimp(subst(solve(nodal,makelist(a[i],i,0,3))[1],trial));
/* translate to y-direction */
trial: [trial, subst([w(x,t)=v(x,t),W[0](t)=V[0](t),W[1](t)=V[1](t), Φ[0](t)=Ψ[0](t), Φ[1](t)=Ψ[1](t)],trial)];

/* shaft nodal coordinates */
Q: [[ V[0](t),  Ψ[0](t),  W[0](t),  Φ[0](t),  V[1](t),  Ψ[1](t),  W[1](t),  Φ[1](t),  V[i](t),  Ψ[i](t),  W[i](t),  Φ[i](t)], 
    [δV[0]   , δΨ[0]   , δW[0]   , δΦ[0]   , δV[1]   , δΨ[1]   , δW[1]   , δΦ[1]   , δV[i]   , δΨ[i]   , δW[i]   , δΦ[i]   ]];
/* variation of coordinates            */
varia: makelist(Q[1][i]=Q[2][i],i,1,8);
/* null-reference for linearization   */
nuller : makelist(Q[1][i]=0,i,1,12);




Virtuelle Arbeit von D'Alembert'schen Trägheitkräften

Allgemein ist die Virtuelle Arbeit von D'Alembert'schen Trägheitkräften definiert als

.

Wir brauchen also nur einen Ortsvektor zu den materiellen Punkten der Körper als Funktion der Koordinaten der Bewegung - den wir dann in die Beziehung oben einsetzen und über das Volumen des Körpers integrieren.

tmp

Virtuelle Arbeit von D'Alembert'schen Trägheitkräften der Welle

Wir beschreiben den Ort "x1" der neutralen Faser der Welle durch die funktionalen Koordinaten v(x1,t) und w(x1,t) im rotierenden Koordinatensystem. In diesem ist

mit den Einheits-Vektoren des rotierenden Koordinatensystems

.

In Kurzform schrieben wir den Ortsvektor als

.

mit

und .

Um vom  

zu transformieren, arbeiten wir mit der Eulerschen Drehmatrix in der Form

Die Beschleunigung eines Schwerpunkts des Querschnitts "x" erhalten wir dann durch die zweite Ableitung des Ortsvektors nach der Zeit. Das ist nicht ganz trivial, weil wir nun die Ableitung der Einheitsvektoren im rotierenden Koordinatensystem berücksichtigen müssen. Wir starten deshalb mit der ersten Zeitableitung, der Geschwindigkeit. Hier ist - mit der Produktregel -

mit

.

Ausführlich geschrieben steht dort

.

Einsetzten liefert für die Einheitsvektoren im gedrehten "1"-System (s.o.)

Und damit ist z.B.

und
.

Die zweite Ableitung nach der Zeit liefert analog

Die Variation des Ortsvektors erhalten wir, indem wir im Ausdruck für

  • die Terme zu Null setzen, die wir nicht variieren dürfen und
  • die Koordinaten v(x,t), w(x,t) durch ihre Variation δv(x), δw(x) ersetzen, also
    .

Einsetzten in die Formel für die Virtuelle Arbeit von D'Alembert'schen Trägheitkräften liefert zunächst

Wir setzen nun die Trial-Functions für kubische Ansatz-Polynome für v(x,t), w(x,t) ein, führen die Integration über die Länge ℓ der Welle und den Querschnitt A aus - wobei wir die Trägheitsmomente aus dem Kippen der Querschnitte vernachlässigen - und erhalten

mit

,
,
,

und der Wellen-Masse

.

Im rotierenden Koordinatensystem kommen wir zusätzlich zur gewohnten Massenmatrix MS nun also die Gyroskopie-Matrix GS und die Zentrifugal-Matrix KS.

Hier steht bereits die Grundform der System-Matrizen von oben - es fehlen nur noch die Anteile der starren Teilsysteme Impeller,Turbine und Unwucht.


/*******************************************************/
/******************* PART  II **************************/
/*******************************************************/
/* virtuel work of d'Alembert forces                   */
/*******************************************************/

/***********************************/
/* matrices from d'Alembert forces
                           of shaft*/
 r : expand(subst(trial,matrix([0,v(x,t),w(x,t)]).D[1](Omega*t)));
δr : sum(subst(nuller,diff(r,Q[1][i]))*Q[2][i],i,1,8);
δW[S] :-expand(ℓ*integrate(expand(rho*A*   diff(r,t,2).   δr   ),xi,0,1))$
δW[S] : subst(solve(params[1][3],A),δW[S])$

MS : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[S],Q[2][j]),diff(Q[1][k],t,2)),j,1,8),k,1,8)))$
GS : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[S],Q[2][j]),diff(Q[1][k],t,1)),j,1,8),k,1,8)))$
KS : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[S],Q[2][j]),diff(Q[1][k],t,0)),j,1,8),k,1,8)))$




tmp

Virtuelle Arbeit von D'Alembert'schen von Impeller- und Turbinen-Rad

Impeller-und Turbinen-Rad modellieren wir als Starrkörper.

Eine Verschiebung in Wellen-Längsachse betrachten wir nicht, der Drehwinkel Ω t ist fest gegeben - es bleiben also  für jeden Knoten i = A, D noch die Freiheitsgrade

Die Virtuelle Arbeit von d'Alembert'schen Trägheitskräften des Impeller- oder Turbinen-Rades "i" erhalten wir nun wieder aus dem Integral der Beiträge über alle seine materiellen Punkte. Um zu einem beliebigen Punkt auf dem Rad - hier dem Impeller - zu kommen, brauchen wir zuerst den Ortsvektor zu Punkt A:

Koordinaten zu einem materiellen Punkt P auf dem Impeller.

Von Punkt A zu Punkt P kommen wir im Impeller-festen Koordinatensystem

mit .

Die Integration über den zylindrischen Impeller schaffen wir einfacher in Polarkoordinaten

Für die Ebene x2=0 ist das

.

Die beiden Kippungen um die y1- und z1-Achse sind klein, es gilt

.

Wir linearisieren deshalb bezüglich dieser Winkel.

Für x2=0 ist dieser Punkt P noch in der y-z-Ebene von Punkt A. Wir müssten nun die Integration über den komplexen Impeller mit seinen Schaufeln ausführen - mit analytischen Ansätzen hoffnungslos! Wir stellen uns vor, der Impeller sei eine Scheibe mit konstante Dicke "w". Und statt die Integration explizit in x2-Richtung auszuführen, multiplizieren wir einfach (vereinfachend) mit der Dicke der imaginären Scheibe w.

Wir führen also die Integration über

für

aus und erhalten - hier für den Impeller -

mit

,
,
.

Die Matrizen des Teilsystems Turbine sind die gleichen - nur mit dem Intex T statt I!

Komposition der Gesamtmatrix

Wir bauen die Matrizen der Teilsysteme wie im Bild links in das Gesamtsystem ein.

Jetzt fehlt noch die Unwucht.


/* displacement of mass point P 
   on either Impeller- or Turbine-Wheel*/
r : expand(matrix([0,V[i](t),W[i](t)]).D[1](Omega*t)
          +matrix([0,   y   ,  0    ]).D[1](zeta).DL[2](-Φ[i](t)).DL[3](Ψ[i](t)).D[1](Omega*t))$
/* linearize*/
r : subst(nuller,r) + sum(subst(nuller,diff(r,Q[1][j]))*Q[1][j],j,9,12)$
/* Variation of ...*/
δr : sum(subst(nuller,diff(r,Q[1][j]))*Q[2][j],j,9,12)$

δW[W] :-expand(integrate(integrate(expand(w*y*rho*  diff(r,t,2). δr  ), zeta,0,2*%pi),y,0,R))$
δW[W] : subst( append(solve(subst(params[1][2],params[1][1]),R^4), solve(params[1][2],R^2)),δW[W]);

/***********************************/
/* matrices from d'Alembert forces
                    of rigid wheels*/
MW : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[W],Q[2][j]),diff(Q[1][k],t,2)),j,9,12),k,9,12)))$
GW : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[W],Q[2][j]),diff(Q[1][k],t,1)),j,9,12),k,9,12)))$
KW : trigsimp(funmake('matrix,makelist(makelist(coeff(coeff(-δW[W],Q[2][j]),diff(Q[1][k],t,0)),j,9,12),k,9,12)))$




tmp

Virtuelle Arbeit von D'Alembert'schen der Unwucht

Eine Unwucht hat die Gesamtmasse mU. Wir setzen mUmi' und mUmT' an, dann brauchen wir unten die Anteile der Unwucht in den System-Matrizen M, G und K nicht berücksichtigen. Was bleibt dann?.

Der Ortsvektor zur "vorderen" (positive x-Koordinate) der Hantelmassen ist

Die Virtuelle Arbeit von D'Alembert'schen Trägheitskräften für diese Hälfte der Hantel-Masse erhalten wir aus

Den Term für die zweite Masse der Hantel (Index "U,2") erhalten wir, wenn wir die Länge "a" durch "-a" ersetzen. Dann ist

Wir erhalten in Matrix-Schreibweise - hier für die Unwucht am Impeller (bei A) -

mit

,
,

und

.

Damit es übersichtlich bleibt, vernachlässigen wir - wegen mUmi' - die Matrizen MU, GU und KU beim Zusammenbau der Gesamt-Gleichungssystems.

Es bleibt: PA als "rechte Seite" im Gleichungssystem.


/***********************************/
/* matrices from d'Alembert forces
                       of unbalance*/

r : expand(matrix([ 0,  V[i](t),W[i](t)]).D[1](Omega*t)
          +matrix([ 0,    0    ,    e  ]).DL[2](-Φ[i](t)).DL[3](Ψ[i](t)).D[1](Omega*t)
          +matrix([+a,    0    ,    0  ]).D[2](-phi).DL[2](-Φ[i](t)).DL[3](Ψ[i](t)).D[1](Omega*t))$
/* linearize*/
r : subst(nuller,r) + sum(subst(nuller,diff(r,Q[1][j]))*Q[1][j],j,9,12)$
/* Variation of ...*/
δr : sum(subst(nuller,diff(r,Q[1][j]))*Q[2][j],j,9,12)$

δW[U] :-m[U]/2*diff(r,t,2). δr$
δW[U] : expand(subst(nuller,δW[U]))$
/* add second Mass */
δW[U] : expand(trigsimp(δW[U] +subst([a=-a],δW[U])))$
δW[U] : subst([cos(phi)=sin(2*phi)/sin(phi)/2],δW[U]);

/***********************************/
/* right-hand-side from d'Alembert forces
                              of unbalance*/
PU : trigsimp(funmake('matrix,makelist([coeff(+δW[U],Q[2][j])],j,9,12)));




<sec style="font-size:200%">Virtuelle Formänderungsenergie</sec>

Zwei elastische Elemente hat unser Modell:

  • die Welle und
  • die elastischen Lager.

tmp

Virtuelle Formänderungsenergie der Welle

Text


1+1




tmp

Virtuelle Formänderungsenergie der elastischen Lager

Text


1+1




tmp

Komponieren der System-Matrizen

{{{text}}}


1+1




Mathematisches Modell anpassen

Hinschreiben in dimensionsloser Form

{{{text}}}


1+1




Links

  • ...

Literature

  • ...