# Kapitel 5_c:
# Der schiefe exzentrische Zusammenstoß zweier fester Körper
# (ideal glatte Oberflächen)
# © 2015  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart:with(LinearAlgebra):
# Die folgende Prozedur ermöglicht die Berechnung der Geschwindigkeiten und der Winkelgeschwindigkeiten nach dem Stoß zweier fester Körper mit glatter Oberfläche in der (1,2)-Ebene.  Die Beispiele orientieren sich an meinem  Buchtitel:
# F. U. Mathiak: Technische Mechanik 3, Kinematik und Kinetik  mit Maple- und MapleSim-Anwendungen, Verlag Walter de Gruyter, 2015
# Als Sonderfall kann der Stoß gegen eine starre Wand (Körper2)  untersucht werden.  Die Eingabe der Formalparameter erfolgt über Listen bzw. Listen von Listen (listlist). 
> 
;
> Proc_Calc_24:=proc(r::listlist,M::list,T::list,v::listlist,o::list,epsilon,flag::integer)
> #----------------------------------------------------------------------------------------------------------
> # Eingabe: 
> #     r[1,1]: 1-Koordinate des Schwerpunktes des Körpers 1 vor dem Stoß
> #     r[1,2]: 2-Koordinate des Schwerpunktes des Körpers 1 vor dem Stoß
> #     r[2,1]: 1-Koordinate des Schwerpunktes des Körpers 2 vor dem Stoß
> #     r[2,2]: 2-Koordinate des Schwerpunktes des Körpers 2 vor dem Stoß
> #       M[1]: Masse des Körpers 1
> #       M[2]: Masse des Körpers 2
> #       T[1]: Theta1: Axiales Massenträgheitsmoment des Körpers 1 
> #       T[2]: Theta2: Axiales Massenträgheitsmoment des Körpers 2 
> #     v[1,1]: v11: 1-Koordinate der Geschwindigkeit des Körpers 1 vor dem Stoß
> #     v[1,2]: v12: 2-Koordinate der Geschwindigkeit des Körpers 1 vor dem Stoß
> #     v[2,1]: v21: 1-Koordinate der Geschwindigkeit des Körpers 2 vor dem Stoß
> #     v[2,2]: v22: 2-Koordinate der Geschwindigkeit des Körpers 2 vor dem Stoß
> #       o[1]: omega1: Winkelgeschwindigkeit des Körpers 1 vor dem Stoß
> #       o[2]: omega2: Winkelgeschwindigkeit des Körpers 2 vor dem Stoß
> #    epsilon: Stoßzahl (0 <= epsilon <= 1)
> #       flag: 0: Der Stoß zweier frei beweglicher Körper
> #             1: Stoß gegen eine starre Wand (Grenzfall m2 gegen unendlich)
> # Ausgabe:
> #         JK: Stoß der Kompressionsphase
> #         JR: Stoß der Restitutionsphase
> #          J: Gesamtstoß J = JK + JR
> #        c11: Geschwindigkeit des Körpers 1 in x1-Richtung nach dem Stoß
> #        c12: Geschwindigkeit des Körpers 1 in x2-Richtung nach dem Stoß
> #        c21: Geschwindigkeit des Körpers 2 in x1-Richtung nach dem Stoß
> #        c22: Geschwindigkeit des Körpers 2 in x2-Richtung nach dem Stoß
> #         c1: Betrag der Geschwindigkeit des Körpers 1 nach dem Stoß
> #         c2: Betrag der Geschwindigkeit des Körpers 2 nach dem Stoß
> #     Omega1: Winkelgeschwindigkeit des Körpers 1 nach dem Stoß
> #     Omega1: Winkelgeschwindigkeit des Körpers 2 nach dem Stoß
> #         EV: Kinetische Energie beider Körper vor  dem Stoß
> #         EN: Kinetische Energie beider Körper nach dem Stoß
> #         DE: Energieverlust
> #---------------------------------------------------------------------
> local gl1,gl2,gl3,gl4,gl5,gl6;
> global u1,JK,JR,J,c11,c12,c1,c21,c22,c2,EV,EN,DE,Omega1,Omega2;
> description "Der schiefe exzentrische Zusammenstoß zweier fester Körper mit glatter Oberfläche";
> c11:='c11';c12:='c12';c21:='c21';c22:='c22';JK:='JK';JR:='JR';Omega1:='Omega1';Omega2:='Omega2';
> if flag < 0 or flag > 1  then
>   print(`Überprüfen Sie den Parameter flag,\n !!!! Berechnung wurde abgebrochen!!!!`);
>   return;
> end if;
>   c12:=v[1,2]; c22:=v[2,2];
>   gl1:=M[1]*(c11-v[1,1])+M[2]*(c21-v[2,1]);
>   gl2:=T[1]*(Omega1-o[1])+ M[1]*(r[1,1]*(c12-v[1,2])-r[1,2]*(c11-v[1,1]));
>   gl3:=T[2]*(Omega2-o[2])+ M[2]*(r[2,1]*(c22-v[2,2])-r[2,2]*(c21-v[2,1]));
>   gl4:=epsilon*(v[1,1]-v[2,1]+o[1]*r[1,2]-o[2]*r[2,2])+c11-c21+Omega1*r[1,2]-Omega2*r[2,2];
>   solve({gl1,gl2,gl3,gl4},{c11,c21,Omega1,Omega2});assign(%);
>   EV:=1/2*(M[1]*(v[1,1]^2+v[1,2]^2)+M[2]*(v[2,1]^2+v[2,2]^2)+T[1]*o[1]^2+T[2]*o[2]^2); #Energie  vor dem Stoß
>   EN:=1/2*(M[1]*(c11^2+c12^2)+M[2]*(c21^2+c22^2)+T[1]*Omega1^2+T[2]*Omega2^2);         #Energie nach dem Stoß
>    if flag = 1 then    #Der schiefe exzentrische Stoß gegen eine glatte starre Wand (m2 gegen unendlich)
>     Omega2:=0; c21:=0: c22:=0:
>     c11   :=limit(c11   ,M[2]=infinity); c11   :=limit(%,T[2]=infinity); 
>     Omega1:=limit(Omega1,M[2]=infinity); Omega1:=limit(%,T[2]=infinity);
>     EV    :=limit(EV    ,M[2]=infinity); EV    :=limit(%,T[2]=infinity);
>     EN    :=limit(EN    ,M[2]=infinity); EN    :=limit(%,T[2]=infinity);
>   end if;
>   c1:=sqrt(c11^2+c12^2); c2:=sqrt(c21^2+c22^2);
>   DE:=simplify(EV - EN); # Energieverlust
>   # Ausgabe der Ergebnisse
>   print(`Geschwindigkeit c11 = `,c11);
>   print(`Geschwindigkeit c12 = `,c12);
>   print(`Geschwindigkeit c1  = `, c1);
>   print(`Geschwindigkeit c21 = `,c21);
>   print(`Geschwindigkeit c22 = `,c22);
>   print(`Geschwindigkeit c2  = `, c2);
>   print(`Winkelgeschwindigkeit Omega1 = `,Omega1);
>   print(`Winkelgeschwindigkeit Omega2 = `,Omega2);
>   print(`Energie vor  dem Stoß = `,EV);
>   print(`Energie nach dem Stoß = `,EN);
>   print(`Energieverlust = `,DE);
> end proc:
# 
# Der schiefe exzentrische Stoß in der Ebene 
# Wir behandeln zunächst wieder den allgemeinen Fall
> rs:=[[x11,x12],[x21,x22]]: M:=[m1,m2]: Theta:=[Theta1,Theta2]: v:=[[v11,v12],[v21,v22]]: omega:=[omega1,omega2]:
> Proc_Calc_24(rs,M,Theta,v,omega,epsilon,0);
# Beispiel 5-4: Situation 1: Versetzter Frontalaufprall zweier Fahrzeuge
# 
# 
> x12:= -a1: v12 = 0: omega1:=0:
> x22:=  a2: v22 = 0: omega2:=0:
> Proc_Calc_24(rs,M,Theta,v,omega,epsilon,0);
# Beispiel 5-4: Situation 2: Versetzter Frontalaufprall eines Fahrzeugs gegen eine starre glatte Wand
> rs:=[[x11,-a1],[x21,x22]]: M:= [m1,m2]: v:=[[v11,0],[0,0]]:
> Proc_Calc_24(rs,M,Theta,v,omega,epsilon,1);
# Beispiel 5-4: Situation 2: Versetzter Frontalaufprall eines Fahrzeugs gegen eine starre glatte Wand, Zahlenrechnung
> rs:=[[x11,-0.4],[x21,x22]]: M:= [2000.,m2]: v:=[[120/3.6,0],[0,0]]:Theta:=[1500.,Theta2]:
> Proc_Calc_24(rs,M,Theta,v,omega,0.4,1);
# Beispiel 5-4: Situation 1: Versetzter Frontalaufprall. Die Geschwindigkeiten werden für die Zahlenrechnung von [km/h] in [m/s] umgerechnet.
> x12:=-0.4: m1:=2000.: Theta1:=1500.: v11:=120./3.6: v12:= 0.: omega1:=0.:
> x22:= 0.3: m2:=1500.: Theta2:=1200.: v21:=-80./3.6: v22:= 0.: omega2:=0.:
> rs:=[[x11,x12],[x21,x22]]: Theta:=[Theta1,Theta2]: v:=[[v11,v12],[v21,v22]]: omega:=[omega1,omega2]:
> Proc_Calc_24(rs,M,Theta,v,omega,0.4,0);
> 
;
