# Kapitel 7_g: Torsionskritische Drehzahlen
# © 2015  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> interface(displayprecision =3): restart: with(LinearAlgebra):
# Beispiel 7-6:
> 
;
> Proc_Calc_29:=proc(G::realcons,rho::realcons,dat::listlist,flag)
> #--------------------------------------------------------------------------
> # Eingabe:
> #         G: Schubmodul                 in [kg/mm^2]
> #       rho: Dichte des Wellenmaterials in [kg/mm^3]
> #       dat: Liste von Listen
> #            dat[i,1]: Massenträgheitsmoment der i-ten Schwungmasse in [kg mm^2]
> #            dat[i,2]: Länge des i-ten Wellenabschnitts             in [     mm]
> #            dat[i,3]: Durchmesser des i-ten Wellenabschnitts       in [     mm]
> #      flag:
> #            flag <> 1: Wellenmasse wird nicht berücksichtigt
> #            flag =  1: Wellenmasse wird       berücksichtigt
> # Ausgabe:
> #         K: Steifigkeitsmatrix
> #        TH: Massenmatrix
> #       EWL: Eigenfrequenzen lambda      in [1/s^2]
> #       EWO: Eigenkreisfrequenzen omega  in [  1/s]
> #        EV: Eigenvektoren
> #            Torsionskritische Drehzahlen in [U/s] und [U/min]
> #            Grafische Darstellung der Torsions-Eigenschwingungsformen
> #---------------------------------------------------------------------------
> local data,n,f1,f2,ki,ti,i,K,TH,THq,PL,pl,li;
> global EWL,EWO,EV,ntk;
> description "Berechnung torsionskritischer Drehzahlen";
> data:=Matrix(dat);
> n:=LinearAlgebra[RowDimension](data);
> f1:=evalf(G*Pi/32);
> K:=Matrix(n,shape=symmetric);
> for i to n-1 do
> ki:=f1*data[i,3]^4/data[i,2];  #Steifigkeit ki
> K[i  ,i+1]:=      -ki;
> K[i  ,  i]:=K[i,i]+ki;
> K[i+1,i+1]:=       ki;
> end do;
> TH:=Matrix(n,shape=diagonal); #Massenmatrix TH
> for i to n do 
>   TH[i,i]:=data[i,1];
> end do;
> if flag = 1 then
>   THq:=Matrix(n,shape=diagonal);
>     f2:=evalf(rho*Pi/64);
>       for i to n-1 do
>         ti:=f2*data[i,3]^4*data[i,2];
>         THq[i  ,  i]:=THq[i,i] + ti;
>         THq[i+1,i+1]:=ti;
>       end do;
>   TH:=LinearAlgebra[MatrixAdd](TH,THq);
> end if;
> EWL, EV:=LinearAlgebra[Eigenvectors](K,TH);
> EWL:=Re(EWL); EV :=Re(EV);
> EWO:=Re(map(sqrt,EWL));
> ntk:=evalf(EWL/2/Pi); #Kritische Drehzahlen pro Sekunde
> PL:={};
> for i to n do
>   pl:=plot([seq([m,EV[m,i]],m=1..n)],color=ColorTools:-Color([rand()/10^12, rand()/10^12, rand()/10^12])):
>   PL:=PL union {pl};
>   li:=li+data[i,3];
> end do:
> #Ausgabe der Ergebnisse
> print(`Steifigkeitsmatrix K  = `,   K);
> print(`Massenmatrix Theta    = `,  TH);
> print(`Eigenwerte lambda     = `, EWL);
> print(`Eigenfrequenzen omega = `, EWO);
> print(`Torsionskritische Drehzahlen in [1/s]   = `,   ntk);
> print(`Torsionskritische Drehzahlen in [1/Min] = `,60*ntk);
> print(`Eigenvektoren Phi `,EV);
> plots[display](PL,axes=boxed,gridlines,title = "\n Torsions-Eigenschwingungsformen\n", titlefont = ["ARIAL", 16],labels =["Nummer der Schwungmasse", "Amplitude"], labeldirections = ["horizontal", "vertical"]);
> end proc:
# Wir wenden die Prozedur auf ein System bestehend aus vier Scheiben (Schwungmassen)  an. Die Welle bestehe aus Stahl mit dem Schubmodul G = 79300 kg/mm2 und der Dichte ñ = 7,85 10-6 kg/mm3. Die Massenträgheitsmomente der einzelnen Scheiben sind: 
# ˜1 = 20 kg mm2, ˜2 = 30 kg mm2, ˜3 = 20 kg mm2, ˜4 = 30 kg mm2. 
# Die Längen und die Durchmesser der drei Wellenabschnitte sind:
# 1 = 120 mm, d1 = 8 mm, 2 = 100 mm, d2 = 5 mm, 3 = 120 mm, d3 = 8 mm.
> eingabe:=79300.,7.85*10^(-6),[[20,120,8],[30,100,5],[20,120,8],[30,0,0]],1;
# Die Werte für 4 und d4 werden zu null gesetzt. Wir starten die Prozedur, und Maple liefert uns bei Berücksichtigung der Massenträgheitsmomente der Wellenabschnitte folgende Eigenwerte », Eigenkreisfrequenzen É und Eigenvektoren ¦
> Proc_Calc_29(eingabe);
> 
;
