Gelöste Aufgaben/Kw28: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 29: | Zeile 29: | ||
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. | 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. | ||
<table class="wikitable" style="background-color:white; float: | <table class="wikitable" style="background-color:white; float: right; margin-right:14px;"> | ||
<tr><th colspan="2">''Kugel-Modell:'' | <tr><th colspan="2">''Kugel-Modell:'' | ||
''elast. Kontakt mit Einfederung w.'' | ''elast. Kontakt mit Einfederung w.'' |
Aktuelle Version vom 29. März 2021, 11:04 Uhr
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.
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
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
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 τ
und U1, U2 jeweils über V1, V2 im Phasendiagramm auf:
/********************************/
/* 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
- ...