Friction

Below is a browsable image of the model.

  • For an executable version,
  • To view or save the MoML file for this model, click here.
Frictionmodel <h2>Continuous Director</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>startTime</td><td>&nbsp;</td><td>null</td></tr><tr><td>stopTime</td><td>4.0</td><td>4.0</td></tr><tr><td>synchronizeToRealTime</td><td>false</td><td>false</td></tr><tr><td>initStepSize</td><td>0.1</td><td>0.1</td></tr><tr><td>maxStepSize</td><td>1.0</td><td>1.0</td></tr><tr><td>maxIterations</td><td>20</td><td>20</td></tr><tr><td>errorTolerance</td><td>1e-4</td><td>1.0E-4</td></tr><tr><td>ODESolver</td><td>ExplicitRK23Solver</td><td>ExplicitRK23Solver</td></tr></table> <h2>DiscreteClock</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>stopTime</td><td>Infinity</td><td>Infinity</td></tr><tr><td>stopTimeIsLocal</td><td>false</td><td>false</td></tr><tr><td>period</td><td>Infinity</td><td>Infinity</td></tr><tr><td>offsets</td><td>{1.0, 2.0}</td><td>{1.0, 2.0}</td></tr><tr><td>values</td><td>{-2.0, 2.0}</td><td>{-2.0, 2.0}</td></tr></table> <h2>TimedPlotter2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>automaticRescale</td><td>false</td><td>false</td></tr><tr><td>legend</td><td>continuous, impulsive</td><td>continuous, impulsive</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>disconnectGraphOnAbsentValue</td><td>true</td><td>true</td></tr><tr><td>useLocalTime</td><td>false</td><td>false</td></tr></table> <h2>TimedPlotter</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>automaticRescale</td><td>false</td><td>false</td></tr><tr><td>legend</td><td>mass 1, mass 2</td><td>mass 1, mass 2</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>disconnectGraphOnAbsentValue</td><td>false</td><td>false</td></tr><tr><td>useLocalTime</td><td>false</td><td>false</td></tr></table> <h2>ContinuousSinewave</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>magnitude</td><td>8.0</td><td>8.0</td></tr><tr><td>frequency</td><td>1.0</td><td>1.0</td></tr><tr><td>phase</td><td>PI</td><td>3.1415926535898</td></tr></table> <h2>ModalModel</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>stateDependentCausality</td><td>false</td><td>false</td></tr><tr><td>directorClass</td><td>ptolemy.domains.continuous.kernel.HybridModalDirector</td><td>ptolemy.domains.continuous.kernel.HybridModalDirector</td></tr></table>
Click on the TimedPlotter to see a plot of the velocities as a function of time. With these parameter values:
  • Near time 0.2, mass 2 breaks away and begins sliding.
  • Near time 0.7, the velocities match, but the input force is too high for capture.
  • Near time 0.8, mass 1 reverses direction, starting to move right instead of left. At that time, the velocity of mass 2 stops decreasing and starts increasing.
  • Near time 1.0, mass 1 is jolted left with an impulsive force, reversing direction, causing the velocity of mass 2 to stop increasing and start decreasing. Although the velocity of mass 1 crosses that of mass 2, no capture occurs.
  • Near time 1.8, the volocities match and the input force is small enough so that mass 2 is captured.
  • At time 2.0, an impulsive force on mass 1 causes mass 2 to start sliding.
  • Etc.