# Kapitel 7_c:
# Freie Bewegungen des viskos gedämpften
# Einmassenschwingers
# © 2015  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(LinearAlgebra): with(plottools): with(plots):
# Beispiel 7-2:
# 
# 
# Der viskos gedämpfte Einmassenschwinger
> DGl:= diff(x(t),t,t) + 2*D0*omega*diff(x(t),t) + omega^2*x(t);
# Anfangsbedingungen
> AB:=D(x)(0) = v0, x(0) = x0;
> loe:= dsolve ({DGl,AB}, x(t)): assign(%);
> x1:=unapply(x(t),t,D0,omega,x0,v0);
> v1:=unapply(diff(x1(t,D0,omega,x0,v0),t),t,D0,omega,x0,v0);
# Wir überprüfen die Anfangsbedingungen
> simplify(x1(0,D0,omega,x0,v0));simplify(v1(0,D0,omega,x0,v0));
# 1. Fall: Starke Dämpfung (D0 > 1)
????# Es gelten unverändert die Lösungen  und . Die Auslenkungen nehmen mit wachsender Zeit t ab und für große Werter von t gehen x(t) und v(t)  gegen null. 
# Wir zeigen das an einem Beispiel und varireren bei festen Werten von D0 = 1.5, É = 1 und x0 = 1 die Anfangsgeschwindigkeit v0:
> p1:=plot([x1(t,1.5,1.,1.,1.),x1(t,1.5,1.,1.,0.),x1(t,1.5,1.,1.,-1.),x1(t,1.5,1.,1.,-3.)],t=0..10,title = "\nDer viskos gedämpfte Einmassenschwinger\n D0 > 1\n",legend = ["v0=1", "v0=0","v0=-1", "v0=-3"], titlefont = ["ARIAL", 15], labels = ["Zeit t", "Auslenkung x(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],legendstyle = [font = ["HELVETICA", 9], location = bottom],axes=boxed,gridlines=true):
> p2:=plot([v1(t,1.5,1.,1.,1.),v1(t,1.5,1.,1.,0.),v1(t,1.5,1.,1.,-1.),v1(t,1.5,1.,1.,-3.)],t=0..10,title = "\nDer viskos gedämpfte Einmassenschwinger\n D0 > 1\n",legend = ["v0=1", "v0=0","v0=-1", "v0=-3"], titlefont = ["ARIAL", 15], labels = ["Zeit t", "Geschwindigkeit v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],legendstyle = [font = ["HELVETICA", 9], location = bottom],axes=boxed,gridlines=true):
> A:=Array(1..2): A[1]:=p1: A[2]:=p2:
> plots[display](A);
# Die Auslenkung  x besitzt höchstens einen Nulldurchgang (s.h. TM3) für
> t1:=1/(2*lambda)*ln(((delta-lambda)*x0+v0)/((delta+lambda)*x0+v0));
# Auch der Ausschlag besitzt nur einen Extremwert, und zwar dort, wo die Geschwindigkeit verschwindet , und damit an der Stelle
> t2:=1/(2*lambda)*ln((omega^2*x0+(delta+lambda)*v0)/((omega^2*x0+(delta-lambda)*v0)));
# In der obigen Beziehung wurden folgende Abkürzungen verwendet
> lambda:=omega*sqrt(D0^2-1); delta:=D0/omega;
# Mit den Werten
> D0:=1.5; omega:=1.; x0:=1.;v0:=-3.;
# erhalten wir
> t1;t2;
# Wir lassen uns die Phasenkurve 
> plot([x1(t,1.5,1.,1.,1.), v1(t,1.5,1.,1.,-3.), t=0..10],title = "\nPhasenkurve des viskos gedämpften Einmassenschwingers (D0 >1)\n", titlefont = ["ARIAL", 15], labels = ["x(t)", "v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true);
# 2. Fall: Der Grenzfall (D0 = 1)
> D0:='D0'; omega:='omega'; x0:='x0'; v0:='v0':
> x2:=unapply(limit(x1(t,D0,omega,x0,v0),D0=1),t,omega,x0,v0);
> v2:=unapply(simplify(diff(x2(t,omega,x0,v0),t)),t,omega,x0,v0);
# Die Kurven  haben einen ähnlichen Verlauf wie diejenigen für den Fall der starken Dämpfung. 
# 3. Fall: Die schwache Dämpfung (D0 < 1)
# Wir wählen folgende Systemwerte (s.h. obige Abbildung)
> m:=1.25; k:=5.; c:=0.5; 
# Damit folgen
> omega:=sqrt(k/m); delta:=c/(2*m); D0:=c/(2*sqrt(k*m));
# Eigenkreisfrequenz des gedämpften Systems:
> omegad:=omega*sqrt(1-D0^2);
# Wir wählen die folgenden Anfangsbedingungen:
> x0:=2.; v0:=5.;
> x1(t,D0,omega,x0,v0);
> plot(x1(t,D0,omega,x0,v0),t=0..20,title = "\nDer schwach gedämpfte Einmassenschwinger\n(D0 < 1)\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Auslenkung x(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true);
# Wir blenden noch die obere und die untere Hüllkurve ein:
> A:=sqrt(x0^2+((v0+delta*x0)/omegad)^2);
> xH:=A*exp(-delta*t);
# Schwingungszeit:
> Td:=2*Pi/omegad;
# Das Dämpfungsverhältnis
> theta:=exp(delta*Td);
# Das logarithmische Dekrement
> Lambda:=ln(theta);
# Die Systemzeit beträgt:
> t0:=1/delta;
> p3:=plot([x1(t,D0,omega,x0,v0),xH,-xH],t=0..20,title = "\nDer schwach gedämpfte Einmassenschwinger\n(D0 < 1)\n",legend = ["x(t)", "xH","xH"], titlefont = ["ARIAL", 15], labels = ["Zeit t", "Auslenkung x(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],legendstyle = [font = ["HELVETICA", 9], location = bottom],color=[black,blue,blue],linestyle =[solid,dash,dash],axes=boxed,gridlines=true):
> p4:=plottools[line]([0,A],[t0,0],color = red, linestyle = dash):
> p5:=point([t0, 0], color = black, symbol = circle, symbolsize = 15):
> plots[display](p3,p4,p5);
# Die Geschwindigkeit
> plot(v1(t,D0,omega,x0,v0),t=0..20,title = "\nDer schwach gedämpfte Einmassenschwinger\n(D0 < 1)\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Geschwindigkeit v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],color=[black,blue,blue],axes=boxed,gridlines=true);
# Wir plotten noch das Phasendiagramm
> plot([x1(t,D0,omega,x0,v0),v1(t,D0,omega,x0,v0),t=0..20],title = "\nPhasenkurve des viskos gedämpften Einmassenschwingers (D0 < 1)\n", titlefont = ["ARIAL", 15], labels = ["Auslenkung x(t)", "Geschwindigkeit v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true);
# Zur Auswertung der  obigen Beziehungen wird folgt Prozedur bereitgestellt:
> Proc_Calc_27:=proc(Daten)
> #---------------------------------------------------------------------------
> # Eingabe: 
> #       m: Masse des Körpers
> #       k: Federsteifigkeit
> #       c: Dämpfungskonstante
> #      x0: Anfangsauslenkung
> #      v0: Anfangsgeschwindigkeit
> #      tE: Grafische Ausgabe im Zeitbereich 0<=t<=tE
> # Ausgabe:
> #    x(t): Auslenkung
> #    v(t): Geschwindigkeit
> #    a(t): Beschleunigung
> #       p: Grafische Ausgabe der Zustandsgrößen x(t),v(t) und Phasendiagramm
> #  omegad: Eigenkreisfrequenz des   gedämpften Systems
> #   omega: Eigenkreisfrequenz des ungedämpften Systems
> #      Td: Schwingungszeit des gedämpften Systems
> #  Lambda: Logarithmisches Dekrement
> #      t0: Systemzeit
> #-----------------------------------------------------------------------------
> local omega,delta,D0,omegad,Td,p1,p2,p3,p4,A,Lambda,t0;
> global x,v,a,p;
> description "Der viskos gedämpfte Einmassenschwinger";
> omega:=sqrt(k/m); delta:=c/(2*m); D0:=c/(2*sqrt(k*m)); 
> omegad:=sqrt(omega^2-delta^2); Td:=2*Pi/omegad; Lambda:=2*Pi*D0/sqrt(1-D0^2);
> t0:=2*m/c;
> if abs(D0-1.) < 10.^(-Digits+1) then 
> x := (omega*t*x0+t*v0+x0)/exp(omega*t);
> v := -exp(-omega*t)*(omega^2*t*x0+omega*t*v0-v0);
> else
> x :=evalc(Re((1/2)*(D0*omega*x0+omega*sqrt(D0^2-1)*x0+v0)*exp(-(D0-sqrt(D0^2-1))*omega*t)/(omega*sqrt(D0^2-1))-(1/2)*(D0*omega*x0-omega*sqrt(D0^2-1)*x0+v0)*exp(-(D0+sqrt(D0^2-1))*omega*t)/(omega*sqrt(D0^2-1))));
> v :=evalc(Re(-(1/2)*(D0*omega*x0+omega*sqrt(D0^2-1)*x0+v0)*(D0-sqrt(D0^2-1))*exp(-(D0-sqrt(D0^2-1))*omega*t)/sqrt(D0^2-1)+(1/2)*(D0*omega*x0-omega*sqrt(D0^2-1)*x0+v0)*(D0+sqrt(D0^2-1))*exp(-(D0+sqrt(D0^2-1))*omega*t)/sqrt(D0^2-1)));
> print(`Eigenkreisfrequenz des gedämpften Systems, omegad = `,omegad);
> print(`Schwingungszeit des gedämpften Systems Td = `,Td);
> print(`Logarithmisches Dekrement Lambda = `,Lambda);
> end if;
> a:=-(2*D0*omega*v + omega^2*x);
> print(`Eigenkreisfrequenz des ungedämpften Systems, omega = `,omega);
> print(`Lehrsches Dämpfungsmaß D0 = `,D0);
> print(`Systemzeit t0 = `,t0);
> p1:=plot(x,t=0..tE,title = "\nAusschlag-Zeit-Diagramm\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Auslenkung x(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true):
> p2:=plot(v,t=0..tE,title = "\nGeschwindigkeit-Zeit-Diagramm\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Geschwindigkeit v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true):
> p3:=plot([x,v,t=0..tE],title = "\nPhasenkurve\n", titlefont = ["ARIAL", 15], labels = ["Auslenkung x(t)", "Geschwindigkeit v(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true,numpoints=500);
> p4:=plot(a,t=0..tE,title = "\nBeschleunigung-Zeit-Diagramm\n", titlefont = ["ARIAL", 15], labels = ["Zeit t", "Beschleunigung a(t)"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed,gridlines=true):
> A:=Array(1..4); A[1]:=p1; A[2]:=p2; A[3]:=p4; A[4]:=p3;
> p:=plots[display](A);
> end proc:
> 
;
# Für die Parameter werden folgende Werte gewählt:
> m:=1.25; k:=5.; c:=0.5; x0:=2.; v0:=5.; tE:=20; #Schwache Dämpfung
;
> #m:=1.25; k:=5.; c:=6.; x0:=2.; v0:=5.; tE:=10;  #Starke Dämpfung
;
> #m:=0.25; k:=4.; c:=2.; x0:=2.; v0:=5.; tE:= 5;  #Der Grenzfall
;
> Proc_Calc_27(m,k,c,x0,v0,tE):
> x;
> v; 
> p;
> 
;
