[[Datei:FEC0-1.png|230px|left|mini|Rotor in fliegender Lagerung]]
[[Datei:FEC0-1.png|230px|right|mini|Rotor in fliegender Lagerung]]
Gesucht sind die Bewegungsgleichungen für einen starren Rotor auf einer masselosen, elastischen Welle. Die Welle dreht sich mit der Drehzahl Ω. Dabei sollen zunächst die linearisierten Bewegungsgleichungen des Systems angeschrieben werden und dessen Eigenwerte für den Idealfall des ausgewuchteten Rotors berechnet werden.
Gesucht sind die Bewegungsgleichungen für einen starren Rotor auf einer masselosen, elastischen Welle. Die Welle dreht sich mit der Drehzahl Ω. Dabei sollen zunächst die linearisierten Bewegungsgleichungen des Systems angeschrieben werden und dessen Eigenwerte für den Idealfall des ausgewuchteten Rotors berechnet werden.
Die schnelle Rotation von Körpern auf Wellen wie z.B. bei Turboladern oder Turbinen führt auf Bewegungsgleichungen, die auch im linearisierten Fall Komponenten der Kreiseldynamik (vgl. GYRO) besitzen.
Rotor in fliegender Lagerung
Gesucht sind die Bewegungsgleichungen für einen starren Rotor auf einer masselosen, elastischen Welle. Die Welle dreht sich mit der Drehzahl Ω. Dabei sollen zunächst die linearisierten Bewegungsgleichungen des Systems angeschrieben werden und dessen Eigenwerte für den Idealfall des ausgewuchteten Rotors berechnet werden.
Einige wichtige Systemparameter sind
ℓ
freie Länge des Welle
m
Masse des Rotors
R
max. Rotor-Radius
EI
Biegesteifigkeit der Welle
Lösung mit Maxima
Beim Aufstellen der Bewegungsgleichung von drehenden Körpern geht man oft vom Drall (Moment of Momentum), beschreiben als das Skalarprodukt aus Trägheitstensor mal Winkelgeschwindigkeit aus:
.
Dass es - aus meiner Sicht - auch schlanker und intuitiver mit dem Prinzip von d'Alembert geht, zeigen wir hier.
Wir arbeiten mit Maxima.
Maxima brauchen wir dabei zunächst zum Aufstellen der Bewegungsgleichungen, deren Elemente wir dann auf die Komponenten des Drallsatzes zurückführen können. Für den Fall des gewuchteten Rotors (sein Schwerpunkt liegt auf der Rotationsachse und die Deviationsmoments des Trägheitstensors verschwinden) führen wir eine Eigenwertanalyse des Systems für verschiedene Drehzahlen durch - dafür machen wir die Bewegungsgleichungen dimensionslos.
Header
Wir leiten die Bewegungsgleichungen des Systems mit dem
Prinzip der virtuellen Verrückungen her. Für die masselose Welle (shaft) ist das einfach, für die Trägheitskräfte des Rotors nutzen wir das
Prinzip von d'Alembert, um dessen Tägheitskräfte zu erfassen.
Für die Modalanalyse der linearisierten Bewegungsgleichungen benötigen wir dann etwas mehr, als die Fähigkeiten eines Computer-Algebra-Systems wie Maxima. Hierfür nutzen wir eine bewährte Bibliotheken wie die LaPack - auf die aus Maxima heraus zugreifen können.
Wir brauchen zunächst einen Ortsvektor zu einem Massepunkt des Rotors. Dafür nutzen wir die Transformationsmatrizen der Euler-Rotation, also die Drehmatrizen, die unser inertiales Koordinatensystem
in das Wellen-feste Koordinatensystem durch eine Drehung um Ω t bzgl. der "x"- oder "1"-Achse überführt:
.
Koordinaten des Welle-Rotor-Koppelpunktes V(t) und W(t).
Der Ortsvektor des Koppelpunktes von Rotor und Welle ist dann in unserem inertialen Koordinatensystem
mit den Koordinaten des Durchstoßpunktes V(t) und W(t) und der freien Länge der Welle ℓ.
Von kommen wir zu einem beliebigen Punkt auf dem Rotor mit dem Rotor-festen Koordinatensystems
,
in das die Kippwinkel Ψ(t) bzgl. der "z"-Achse und Φ(t) bzgl. der y-Achse eingehen. Damit ist
.
Koordinaten des Rotor-Auslenkung und Kippung W(t), Φ(t)
Wir drehen hier bzgl. der y-Achse um -Φ(t), damit wir die Beziehen der klassischen Euler-Bernoulli-Biegetheorie (hier: ) nutzen können. Die Koordinaten des Rotors sind damit
.
Da wir uns nur für die linearisierte Form der Bewegungsgleichungen des starren Rotors interessieren, können wir gleich die linearisierten Drehmatrizen in Maxima nutzen.
die virtuelle Arbeit der d'Alembertschen Trägeheitskräfte und die virtuelle Formänderungsenergie .
Dabei kommt
aus dem Integral über alle Massepunkte des Rotors. Wir finden durch Vereinfachen und Umsortieren
.
So steht jetzt z.B. in der Massenmatrix
,
über deren Elemente wir die Integration über die Masse m ausführen müssen.
Hier greifen jetzt die Definitionen für den Schwerpunkt eines Körper (z.B. ) und für die Massemeomente 2-ten Grades, so dass wir mit folgenden Abkürzungen arbeiten können
Für die virtuelle Formänderungsenergie setzen wir mit den tabellierten Lösungen für den Kragballken und dem Blaken unter Endmoment bei einer Biegung um die y-Achse
an. Die gleichen Anteile finden wir natürlich dann bzgl. der Biegung um die z-Achse.
Einsetzen in die Gleichgewichtsbeziehungen liefert den Ausdruck
mit
Die Koeffizienten Θ nehmen hier eine Sonderstellung ein - und ich verstehe nicht, was sie dort "machen". Eine Idee? →[[1]]!
Für die Modalanalyse können wir die Anzahl der Systemparameter reduzieren, indem wir die Bewegungsgleichungen auf eine dimensionslose Schreibweise umstellen.
Dafür ersetzen wir Koordinaten und Größen in den Bewegungsgleichung nach dieser Vorlage:
Mit diesen neuen Größen und Abkürzungen können wir unsere Bewegungsgleichungen durch "" teilen und erhalten mit
.
die Bewegungsgleichungen
mit
sowie den neuen Systemmatrizen
/*******************************************************//*******************PARTII**************************//*******************************************************//*transfertodimensionlessrepresentation*/dimless:[[EI=k*ℓ^3/12,X[S]=ξ[S]*R,Y[S]=η[S]*R,Z[S]=ζ[S]*R,Ω=λ*ω[0],k=m*ω[0]^2,ℓ=κ*R,Θ=m*(R*ρ[xx])^2,/*Warschau!deviatesfromotherabbreviations*/J[zz]=m*(R*ρ[zz])^2,J[yy]=m*(R*ρ[yy])^2,J[xy]=m*(R*ρ[xy])^2,J[yz]=m*(R*ρ[yz])^2,J[xz]=m*(R*ρ[xz])^2],[t=τ*ω[0],ω[0]^2=(12*EI)/ℓ^3/m,W(t)=w(τ)*R,V(t)=v(τ)*R,Ψ(t)=ψ(τ),Φ(t)=φ(τ)]];applyTo:[M,G,E,K];fora:1thru4do(fori:1thru4step2do(applyTo[a][i]:applyTo[a][i]*R,/*forδWandδV*/forj:1thru4step1doapplyTo[a][j][i]:applyTo[a][j][i]*R)); /* for W and V*/fori:1thru4step2doB[i]:B[i]*R;M:M*ω[0]^2;G:2*Ω*G*ω[0];E:Ω^2*E;print(M,"*","Q''","+",G,"*","Q'","+",E,"Q","+",K,"*","Q"," = ",B)$/*devidethroughcommonfactots....*/M:subst(dimless[1],M/(ω[0]^2*R^2*m));G:subst(dimless[1],G/(ω[0]^2*R^2*m));E:subst(dimless[1],E/(ω[0]^2*R^2*m));K:subst(dimless[1],K/(ω[0]^2*R^2*m));B:subst(dimless[1],B/(ω[0]^2*R^2*m));/*dimlessmodel*/print(M,"*","Q''","+",G,"*","Q'","+",E,"Q","+",K,"*","Q"," = ",B)$paramList:[λ,κ,ξ[S],η[S],ζ[S],ρ[xx],ρ[yy],ρ[zz],ρ[xy],ρ[yz],ρ[xz]];
Solving
Wir interessieren uns bei einer Modalanalyse nur für Lösungen ohne Zwangserregung , also für , , und .
Mit dem Ansatz
suchen wir also nach Lösungen von
Für numerische Löser muss das Problem allerdings fast immer als
formuliert sein. Wir schaffen das mit dem Trick
Dann ist
und
Für die restlichen dimensionslosen Parameter in den Matrizen wählen wir nun geschätzte Werte - eine Berechnung der wirklichen Werte würde man wohl eher einem CAD oder FEM-Programm überlassen ....
1+1
Postprocessing
Die Auftragung der Eigenwerte über der Drehzahl λ zeigt nun für λ > 4.5 auch instabile Lösungen - also Bewegungen mit exponentiellem
Wachstum der Amplituden der Lösungen.
Dimensionslose Eigenwerte (Real- und Imaginärteil) aufgetragen über die dimensionslose Drehzahl λ.
Und jetzt?
... wäre es natürlich spannend, sich die Eigenformen zu den Eigenwerten anzuschauen - insbesondere für die Eigenwerte, bei denen
ist.
/*******************************************************//*******************PARTIII**************************//*******************************************************//*rewriteasfirst-orderdifferentialequations*//*X'=H(τ)*X+R,X=(P,Q)^T,R=(0,P)^T*//*andsolveusinglapack*/params:[/*λ=2,*/κ=2,ξ[S]=0.1,η[S]=0,ζ[S]=0,ρ[xx]=0.15,ρ[yy]=ρ[zz],ρ[zz]=0.2,ρ[xy]=0,ρ[yz]=0,ρ[xz]=0];A:zeromatrix(8,8);B:zeromatrix(8,8);fori:1thru4do(B[4+i,4+i]:+1,A[4+i,i]:-1,forj:1thru4do(A[i,j]:G[i,j],A[i,4+j]:E[i,j]+K[i,j],B[i,j]:M[i,j]))$collect:[[],[]];forlambda:0thru12step0.03do(C:invert(subst([λ=lambda],subst(params,B))).subst([λ=lambda],subst(params,A)),evs:[args(dgeev(C)[1])],collect[1]:append(collect[1],[lambda]),collect[2]:append(collect[2],evs));xyr:[];xyi:[];fore:1thrulength(collect[1])do(xyr:append(xyr,makelist([collect[1][e],realpart(collect[2][e][i])],i,1,8)),xyi:append(xyi,makelist([collect[1][e],imagpart(collect[2][e][i])],i,1,8)));/*ploteigenvalues*/plot2d([[discrete,xyr],[discrete,xyi]],[legend,"real","imag"],[style,[points,0.1,1,1],[points,0.1,2,1]],[y,-10,10],[xlabel,"λ->"],[ylabel,"eig. val. ->"])$
Cookies helfen uns bei der Bereitstellung von numpedia. Durch die Nutzung von numpedia erklärst du dich damit einverstanden, dass wir Cookies speichern.