Sources/Lexikon/Kontaktkennlinie

Aus numpedia
Zur Navigation springen Zur Suche springen

Beim Billard prallen zwei Körper aufeinander und trennen sich dann wieder. Der Löser der Bewegungsgleichungen braucht also eine Kraft, die "da" ist, wenn der Abstand der Kugelmittelpunkte kleiner als der Kugeldurchmesser ist - und Null sonst.

Für die Bewegungsgleichung eines solchen Systems müssen wir die Kraft erfassen, die im Kontakt zwischen zwei Körpern wirkt. Ein Finite Elemente Modell könnte diese Kraft als Resultierende der Kontakt-Drücke für verschiedene Eindringtiefen ermitteln.

Das ist ist aufwändig und teuer.

Einfacher kommen wir mit einer Kontaktkennlinie zum Ziel, die ein heuristisches Modell der Kontaktkraft ist.

Stückweise linearer Ansatz

Kennlinie ... hier für ε=0.5.

Wir suchen also eine Funktion, die für h<0 einen positive Wert (Druck) zurückliefert und Null sonst. Als Kontaktkraft schreiben wir

mit der Federkonstante k und der nichtlinearen Funktion κ(h).

κ(h) wählen wir zu:

Maxima-Code

Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie.


/* contact characteristic */
kappa(h) := if h>0 then 0 else -h;
plot2d(kappa(h),[h,-1,1], [y,-0.1,1], [xlabel, "h/ε->"], [ylabel, "κ ->"])$




Ausrunden der Kennlinie

Stetig differenzierbarere Kennlinie

Damit die Kennlinie stetig differenzierbar ist, brauchen wir ein "Ausrundungspolynom" um h=0 herum.

Für -ε < h < ε wählen wir ein Polynom 2.ten Graden und passen es stetig an die beiden Geradenstücke an.

Dann ist die nichtlineare Funktion κ(h,ε):

Maxima-Code

Zum Einbauen in Ihr Programm: der Quellcode zur Kennlinie.


/* contact characteristic with smooth transition */
p(h) := sum(a[i]*h^i,i,0,2);
bc : [p(+epsilon)=0, subst([h=-epsilon],diff(p(h),h))=-1,subst([h=+epsilon],diff(p(h),h))=0];
coeff: solve(bc,[a[0],a[1],a[2]])[1];

kappa(h,epsilon) := if h>epsilon then 0 else if h<-epsilon then -h else epsilon/4-1/2*h+1/(4*epsilon)*h^2;
plot2d(kappa(h,0.25),[h,-1,1], [y,-0.1,1], [xlabel, "h/ε->"], [ylabel, "κ ->"])$





Links: