# Kapitel 1: 
# Freie Schwingungen einer dehnbaren Saite
# © 2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(LinearAlgebra): with(DEtools): with(plots):
# Die theoretischen Grundlagen können dem Buch Kontinuumsschwingungen  (Kapitel 1.9) entnommen werden. 
> Proc_Calc_03:=proc(Daten::list)
> #-------------------------------------------------------------------
> #Eingabe:
> #   Daten[1]: rho: Dichte in [kg/m]
> #   Daten[2]:  DU: Durchmesser der Saite in [m]
> #   Daten[3]    l: Länge der Saite in [m]
> #   Daten[4]:   E: Elastizitätsmodul in [N/m**2]
> #   Daten[5]:  S0: Vorspannkraft der Saite in [N]
> #   Daten[6]:   C: Amplitude
> #   Daten[7]:   n: n = 1: Grundschwingung, n > 1: Oberschwingungen
> #   Daten[8]:Flag: Flag  = 0: keine Animation der Zustandsgrößen
> #                  Flag <> 0:       Animation der Zustandsgrößen
> #Ausgabe:
> #         v0: Geschwindigkeit beim Nulldurchgang
> #          T: Schwingungsdauer
> #       Tlin: Schwingungsdauer im linearen Fall (kleine Amplitude C)
> #         nu: Frequenz
> #      nulin: Frequenz im linearen Fall
> #          f: Zeitabhängiger Lösungsanteil der Schwingung 
> #          w: Auslenkung
> #          v: Geschwindigkeit 
> #         DS: Zuwachs der Spannkraft
> #--------------------------------------------------------------------
> local A,mu,EA,kappa,beta,eta,BCQ,k,t1,z,para,p1,p2,p3;
> global v0,T,nu,Tlin,nulin,f,w,v,DS,maxDS;
> description "Freie Schwingungen der dehnbaren Saite";
> A:=Daten[2]^2*Pi/4; mu:=Daten[1]*A; EA:=E*A;
> if Daten[5] > 0 then
>   kappa:=sqrt((Daten[7]*Pi/Daten[3])^2*Daten[5]/mu);
>   beta :=(Pi*Daten[7]/2/Daten[3])^2*EA/Daten[5];
>   BCQ  :=beta*Daten[6]^2;
>   k :=sqrt(BCQ/(2+BCQ));
>   v0:=kappa/2*sqrt(2.)*Daten[6]*sqrt(2+BCQ);
>   t1:=Daten[6]/v0/sqrt(1+k^2)*EllipticK(k/sqrt(1+k^2));
>   print(`º = `,kappa,`² = `, beta,`k = `,k);
>   print(`Geschwindigkeit beim Nulldurchgang v0 = `,v0);
>   z:=sqrt(2.)/2*sqrt(2+BCQ)*kappa*t; 
>   f:=Daten[6]*JacobiSN(z,I*k);
> #Lösung im linearen Fall
>   Tlin:=2*Pi/kappa;
>   nulin:=1/Tlin;
>   print(`Schwingungsdauer Tlin =`,Tlin);
>   print(`Frequenz ½lin =`,nulin);
> elif Daten[5] = 0 then
>   eta:=sqrt((Daten[7]*Pi/Daten[3])^4*EA/(4*mu));
>    v0:=eta/2*sqrt(2.)*Daten[6]^2;
>    print(`Geschwindigkeit beim Nulldurchgang v0 = `,v0);
>    t1:=1/(Daten[6]*eta)*EllipticK(sqrt(2.)/2.);
>     z:=sqrt(2.)/2*C*eta*t; 
>     f:=Daten[6]*JacobiSN(z,I);
> end if:
>  T:=4*t1;
> nu:=1/T;
> print(`Schwingungsdauer T =`,T);
> print(`Frequenz ½ =`,nu);
> w:=f*sin(Daten[7]*Pi/Daten[3]*x);
> v:=diff(w,t);
> DS:=EA/2/l*int(diff(w,x)^2,x=0..l);
> maxDS:=subs(t=t1,DS);
> print(`Zuwachs der Spannkraft ”S =`,DS);
> print(`Größter Zuwachs der Spannkraft max”S =`,maxDS);
> if Daten[8] <> 0 then
> #Animation des Bewegungsvorgangs
> para:=x=0..Daten[3],t=0..T,frames=150,thickness=2,gridlines=true,titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10],axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed:
> p1:=plots[animate](w,para,title = "\nAuslenkung\n",labels = ["Saitenlänge l", "w(x,t)"]):
> p2:=plots[animate](v,para,title = "\nGeschwindigkeit\n",labels = ["Saitenlänge l", "v(x,t)"]):
> p3:=plots[animate](DS,para,title = "\nGemittelter Zuwachs der Spannkraft\n",labels = ["Saitenlänge l", "”S(x,t)"]):
> plots[display](Matrix(1,3,[p1,p2,p3]));
> end if;
> end proc:
# Beispiel 1-12: 
> rho:=7.85*10^3: DU:=0.0008: l:=0.8: E:=2.1*10^11: S0:=150.: C:=0.01:
> n:= 1: Flag:=1:
> daten:=[rho,DU,l,E,S0,C,n,Flag];
> Proc_Calc_03(daten);
# noch Beispiel 1-12: (Saite ohne Vorspannung):
> rho:=7.85*10^3: DU:=0.0008: l:=0.8: E:=2.1*10^11: S0:=0.: C:=0.01:
> n:= 1: Flag:=1:
> daten:=[rho,DU,l,E,S0,C,n,Flag];
> Proc_Calc_03(daten);
> 
;
> 
;
> 
;
