Class myphysicslab.sims.engine2D.PileApp

Provided By
All Implemented Interfaces

Creates a pile of randomly shaped blocks that fall onto a V shaped wall. The user can add 6 blocks at a time to the pile by clicking a button. This is a stress test to find how many blocks it takes before the simulation engine bogs down and cannot keep up with real time.

Wiggling Blocks

Note that the blocks in the pile will wiggle unrealistically in the end resting state when there is not enough accuracy in the simulation. It is most noticeable when highly zoomed in on the blocks, so that the gaps between them are obvious. The three main factors are: gravity, time step, and diff eq solver. Stronger gravity means that objects move more between time steps and so will wiggle more. Longer time step gives objects more time to wiggle between adjustments from the collision handler. Using the Runge Kutta solver is like halving the time step, compared to using the Modified Euler solver (because RK is average of 4 sub-steps, two of which are mid-step).

Specifically here are some settings and their effects:

  • Wiggles: Gravity=10, TimeStep=0.025, Modified Euler
  • No Wiggle: Gravity=10, TimeStep=0.01, Modified Euler
  • No Wiggle: Gravity=10, TimeStep=0.025, Runge Kutta
  • No Wiggle: Gravity=3, TimeStep=0.025, Modified Euler

Update Nov 2011: The fix to ContactSim.calculate_b_vector which "adjusts acceleration to eliminate velocity at contacts" has eliminated the wiggling in the above cases. One case that is still problematic is when using inverse square gravity: with gravity=10 you need to reduce the timeStep to 0.01 to stop endless collisions.

new PileApp( elem_ids )

elem_ids{container: string, div_graph: string, div_terminal: string, div_time_graph: string, graph_controls: string, images_dir: string, label_terminal: string, show_sim: string, show_terminal: string, sim_applet: string, sim_controls: string, tab_list: string, term_input: string, term_output: string, time_graph_controls: string}

specifies the names of the HTML elementId's to look for in the HTML document; these elements are where the user interface of the simulation is created.

Instance Methods

Instance Properties