# 
# Kapitel 2: 
# Erzwungene Stabschwingungen, Erregung durch eine Linienkraft
# © 2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(LinearAlgebra): with(plots): 
# Beispiel 2-8:
# 
# 
# Der in der obigen Abbildung dargestellte Stab wird durch die Linienkraft n(x,t) = n0 sin ©t belastet. Das System startet aus der Ruhelage. Gesucht werden sämtliche Zustandsgrößen.
> Proc_Calc_03:=proc(rho,E,A,l,a,c,n0,Omega,nE,tE)
> #------------------------------------------------------------------------
> #Eingabe: 
> #      rho: Dichte in [kg/m^3]
> #        E: Elastizitätsmodul in [N/m^2]
> #        A: Elastizitätsmodul in [N/m^2]
> #        l: Länge der Saite in [m]
> #       n0: Linienkraft in [N]
> #    Omega: Erregerkraftfrequenz in [s-1]
> #       nE: Anzahl der zu berücksichtigenden Reihenglieder
> #       tE: Simulationszeit in [s]
> #Ausgabe:
> #        u: Auslenkung der Stabelemente
> #        v: Geschwindigkeit der Stabelemente
> #        N: Normalkraft
> #-----------------------------------------------------------------------------
> local lam,mu,cL,omn,etan,alpha,gam,SU,eps,n,f,u0,para,p1,p2,p3;
> global u,v,N,Flag;
> description "Der Stab konstanten Querschnitts unter Linienkraftbelastung";
> Flag:=1;
> if a-c < 0 or a+c > l then
>   Flag:=0;
>   print(`Laststellung überprüfen, !!!Abbruch der Berechnung!!!`);
> return; end;
> mu:=rho*A; lam:=(2*n-1)*Pi/2; cL:=sqrt(E/rho); omn:=lam/l*cL; etan:=Omega/omn;
> alpha:=a/l; gam:=c/l; 
> SU:=0.; eps:=1.*10^(-6);
> for n to nE do
>   if abs(eval(etan)-1.) < eps then
>     f:=0.5*(sin(omn*t)-omn*t*cos(omn*t));
>   else;
>     f:=(etan*sin(omn*t)-sin(etan*omn*t))/(etan^2-1);
>   end if;
>   SU:= SU + map(eval,sin(lam*alpha)*sin(lam*gam)*sin(lam*xi)*f/lam^3);
> end do;
> u0:=4.*n0*l^2/mu/cL^2;
> u :=u0*SU;
> v :=diff(u,t);
> N :=E*A/l*diff(u,xi);
> #Ausgabe der Ergebnisse
> para:=xi=0..1,frames=150,thickness=2,gridlines=true,titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10],axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed:
> p1:=plots[animate](plot,[u ,para,title = "\nAuslenkung\n",     labels = ["¾ = x/","u(¾,t)"]],t=0..tE):
> p2:=plots[animate](plot,[v ,para,title = "\nGeschwindigkeit\n",labels = ["¾ = x/","v(¾,t)"]],t=0..tE):
> p3:=plots[animate](plot,[N ,para,title = "\nNormalkraft\n",    labels = ["¾ = x/","N(¾,t)"]],t=0..tE):
> plots[display](Matrix(1,3,[p1,p2,p3])):
> end proc:
# Mit den Werten des Beispiels
> rho:=2100.; A:=0.01; E:=3.*10^(10); l:=8.; a:=6.; c:=1.; n0:=50000.; Omega:=600.; nE:=50;  tE:=0.1; 
# rufen wir die Prozedur auf:
> Proc_Calc_03(rho,E,A,l,a,c,n0,Omega,nE,tE)
;
# Von Interesse sind noch die Normalkräfte an den beiden Stabenden, die Auslenkung und die Geschwindigkeit am rechten Stabende :
> if Flag = 1 then
> p4:=plot([subs(xi=0,N),subs(xi=1,N)],t=0..tE,thickness=2,gridlines=true,title = "\nNormalkräfte an den Stabenden\n",labels = ["t", "N(t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],legend = ["N(x=0,t)", "N(x=l,t)"],legendstyle = [font = ["HELVETICA", 10], location = bottom],color=[black,blue],axes=boxed,gridlines=true):
> p5:=plot(subs(xi=1,u),t=0..tE,thickness=2,gridlines=true,title = "\nAuslenkung des rechten Stabendes\n",labels = ["t", "u(1,t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],axes=boxed,gridlines=true):
> p6:=plot(subs(xi=1,v),t=0..tE,thickness=2,gridlines=true,title = "\nGeschwindigkeit des rechten Stabendes\n",labels = ["t", "v(1,t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],axes=boxed,gridlines=true):
> end if;
> 
;
