Gelöste Aufgaben/Kw28

Aus numpedia
Zur Navigation springen Zur Suche springen


Aufgabenstellung

Das System besteht aus einer Kugel (Radius r, Masse m2) und einer Plattform (Masse m1). Wie skizziert ist die Plattform mit einer Parallelführung aus zwei Euler-Bernoulli-Balken (Biegesteifigkeit EI) elastisch gelagert. Aus der statischen Referenzkonfiguration wird die Kugel aus der Höhe H über der Plattform losgelassen. Kugel und Plattform stoßen also aufeinander und führen dann Ihre eigene vertikale Bewegung durch - bis zur nächsten Kollision. Der Stoß zwischen Kugel und Oberfläche sei ideal-elastisch.


Lageplan

Für das skizzierte System modellieren Sie die Kugel als elastisch, die elastisch gelagerte Plattform als starr. Gesucht ist eine numerische Lösung als Anfangswertproblem und die nichtlinearen Schwingungen der beiden Systemteile.


Lösung mit Maxima

Header

Die Kugel können Sie sich im unteren Teil durch eine Feder der Steifigkeit k2 ersetzt denken - das geht analog zu Beispiel Kw23.

Die Federkraft K ist also Null, solange die Kugel die Oberfläche nicht berührt und sie ist proportional zur Federkompression w, wenn sich Kugel und Oberfläche berühren.

Kugel-Modell:

elast. Kontakt mit Einfederung w.




Die beiden Körper haben jeweils einen Freiheitsgrad in vertikale Richtung. Die Bewegungsgleichungen für die beiden Körper sind stückweise linear (Kontakt: K = k w / kein Kontakt K = 0). Den Kontakt erfassen wir durch eine Kennlinie, die wir zwischen den beiden linearen Bereichen ausrunden. Das Ausrunden macht die numerische Integration schneller.


Wir lösen das Anfangswertproblem zu der zugeordneten nichtlinearen Bewegungsgleichung. Die Nichtlinearität kommt hier aus der Kontaktbedingung zwischen der Kugel und der Plattform.


/*********************************************************/
/* MAXIMA script                                         */
/* version: wxMaxima 15.08.2                             */
/* author: Andreas Baumgart                              */
/* last updated: 2018-09-30                              */
/* ref: Kw28 (TM-C, Labor 5)                             */
/* description: finds the solution for                   */
/*              the nonlinear IVP                        */
/*********************************************************/




Declarations

Die Koordinaten der Verschiebung der beiden Massen nennen wir

.

Für die beiden elastischen Balken verwenden die Ersatzfeder-Steifigkeit

.

Und als Abkürzungen verwenden wir

.

/*********************************************************/
/* declarations */
assume(g>0, r>0);

/* declare variational variables - see 6.3 Identifiers */
declare("δΠ", alphabetic);
declare("δW", alphabetic);
declare("δu", alphabetic);
declare("δQ", alphabetic);

/* coordinates */
 Q[t]: [ u[1](t), u[2](t)];
δQ[t]: [δu[1]   ,δu[2]   ];

/* abbreviations */
abbrev : [f(u[1](t)-u[2](t)) = f(w),
          gamma              = m[2]/m[1],
          k[2]               = kappa*k[1],
          m[2]               = alpha*m[1]];




Contact Characteristic

Die Kennlinie für den Kontakt definieren wir stückweise zu

Kontakt-Kennlinie

Und so sieht die Kennlinie dann aus:

Die Parabel zwischen den beiden linearen Kennlinien-Stücken macht die Kraft K stetig differentierbar in w. Das macht die numerische Integration schneller - und genauer.


/**** define nonlinear spring characteristic ***/
C(w) := if w < -1 then
             0
        elseif w < 1 then
             1/4*(w+1)^2
        else
             w;        
plot2d(C(w),[w,-2,2],
          [ylabel,"C/1->"], [xlabel,"w/ε->"],
          [legend, "restoring force"]);




Equilibrium Conditions

Koordinaten

Die Gleichgewichtsbedingung konstruieren wir mit dem Prinzip der virtuellen Verrückungen - wir brauchen also kein Freikörperbild.

Dazu verwenden wir die Verschiebungs-Koordinaten u1, u2 der beiden Körper wie skizziert.

Für die allgemeine Gleichgewichtsbedingung

setzen wir für die virtuelle Arbeit von äußeren, eingeprägte Kräften (inklusive der D'Alembert'sche Trägheitskraft) an:

sowie für die virtuelle Formänderungsenergie der beiden Ersatz-Federn:

.

Sortieren nach den virtuellen Verrückungen und anschrieben der Gleichgewichtsbedingungen in Matrix-Form liefert

.

/********************************/
/* derive ODE in dim'less coordinates U using the PvV */

/* virtual work of system (equilibrium condition) */
PvV : [δW   = δW^a - δΠ,
       δW^a = - sum(m[i]* diff(u[i](t),t,2)*δu[i],i,1,2) - sum(m[i]*g*δu[i],i,1,2),
       δΠ   =   k[1]*u[1](t)*δu[1] + f(u[1](t)-u[2](t))*(δu[1]-δu[2])];
 
/* equlilbrium condition */
 
eom: subst(PvV[3],subst(PvV[2],subst(PvV[1],δW=0)));

/* linear parts first */
M : -funmake('matrix,makelist(makelist(coeff(coeff(lhs(eom),δQ[t][i]),diff(Q[t][j],t,2)),i,1,2),j,1,2));
K : -funmake('matrix,makelist(makelist(coeff(coeff(lhs(eom),δQ[t][i]),     Q[t][j]     ),i,1,2),j,1,2));
G :  funmake('matrix,makelist(coeff(
            subst(makelist(diff(Q[t][i],t,2)=0,i,1,2),
            subst(makelist(     Q[t][i]=0     ,i,1,2),[lhs(eom)])),δQ[t][j]), j,1,2));
/* what's left ?*/
F :  funmake('matrix,makelist(coeff(expand([lhs(eom)] +
                    (M.diff(Q[t],t,2)+K.Q[t]-G).transpose(δQ[t])),δQ[t][j]), j,1,2));

/* control print-out */
print(M,"∙",transpose(diff(Q[t],t,2)),"+",K,"∙",transpose(Q[t]),"=",G,"+",F)$




Dimensionless Equations of Motion

Mit einer passenden Bezugszeit und -länge machen wir die Bewegungsgleichungen dimensionslos.

Hier liefert die Periodendauer der Plattform - allein, ohne Kugel - die Bezugszeit T. Die statische Absenkung der Plattform - ohne Einfluss der Kugel - liefert die Bezugslänge L.

Aus der Bewegungsgleichung oben lesen wir für K(u1-u2) = 0 ab:

und

.

Nun ist also

und

Die Kennlinie überführen wir entsprechend in

.

Einsetzen liefert die zwei Differentialgleichungen

.

/* dimensionless equations of motion */
dimless : ['diff(u[1](t),t,2) = L*'diff(U[1](tau),tau,2)/T^2,
           'diff(u[2](t),t,2) = L*'diff(U[2](tau),tau,2)/T^2,
                 u[1](t)      = L*U[1](tau),
                 u[2](t)      = L*U[2](tau),
                 L            = m[1]*g/k[1],
                 T^2          = (2*%pi/omega[1])^2,
                 omega[1]^2   = k[1]/m[1]];

eom : makelist((M.diff(Q[t],t,2)+K.Q[t]-(G+F))[i][1]=0,i,1,2);
eom : expand(subst(dimless,subst(abbrev,eom)));
eom : subst([f(w) = subst(dimless,subst(abbrev,L*k[2]*C(W/epsilon)))],eom);
eom : expand(solve(eom, ['diff(U[1](tau),tau,2),'diff(U[2](tau),tau,2)])[1]);

params: [kappa = 5, alpha = 1/2, W=(U[1](tau)-U[2](tau)), epsilon=1/100];
eom : expand(subst(params,eom));




Solving

Für die numerische Lösung schreiben wir die zwei Bewegungsgleichung zweiter Ordnung um als vier Bewegungsgleichungen erster Ordnung zu

.

Die rechte Seite der gewöhnlichen Differentialgleichung ("Right-hand-side of ODE") lautet damit

Die dimensionslosen Parameter wählen wir zu

und lösen die Bewegungsgleichungen numerisch - hier mit dem Runge-Kutta-Verfahren 4.ter Ordnung.


/********************************/
/* numerical solution of IVP */
times : subst([t0 = 0, tmax = 20, dt = 0.001],
                    [t, t0, tmax, dt]);
dgl1stOrder : subst(params,[v1,v2,rhs(eom[1]),rhs(eom[2])]);
dgl1stOrder : subst([U[1](tau) = h1,U[2](tau)=h2],dgl1stOrder);
stateVabs : [h1,h2,v1,v2];
initiVals : [-1,20,0,0];
 
ivs : rk(dgl1stOrder, stateVabs, initiVals, times)$




Post-Processing

Als Lösung tragen wir die Zeitverläufe der Höhen U1, U2 über der Zeit τ

Zeitverlauf der Lösung

und U1, U2  jeweils über V1, V2  im Phasendiagramm auf:

Phasendiagramm

/********************************/
/* solution samples */
Ti :  makelist(ivs[j][1],j,1,length(ivs))$
Hi : [makelist(ivs[j][2],j,1,length(ivs)),
     makelist(ivs[j][3],j,1,length(ivs))]$
Vi : [makelist(ivs[j][4],j,1,length(ivs)),
     makelist(ivs[j][5],j,1,length(ivs))]$

/* time-domaine plot */
plot2d([[discrete, Ti, Hi[1]],[discrete, Ti, Hi[2]]],
     [legend, "Plattform", "Kugel"], 
     [title, sconcat("start @: ",string(initiVals))],
                  [xlabel,"τ/1->"], [ylabel,"U/1->"]);
 
/* phase plot */
plot2d([[discrete,Hi[1],Vi[1]],[discrete,Hi[2],Vi[2]]],
       [legend, "Plattform", "Kugel"], 
                   [ylabel,"V/1->"], [xlabel,"H/1->"]);




Wie genau ist die Lösung?:
Überlegen Sie, wie Sie bei diesem Ergebnis die Genauigkeit prüfen können. Das ist hier besonders einfach, weil es um ein konservatives System geht - also eins, bei dem keine Energie hinzugefügt oder dissipiert wird.



Links

  • ...

Literature

  • ...