dt = 1e-2 sim_name = ['symmetry', 'line', 'problem_1', 'problem_3'][0] extra_params = { 'symmetry_number': 'eight', 'Lx': 10, # only for line 'random_velocity': 0, 'random_particle_ix': None, 'lattice': ['triangle', 'square'][1]} init_container, special_particles = get_container_for(sim_name, **extra_params) print 'special_particles:', special_particles containers = [init_container] integrator = VerletIntegrator() for i in xrange(num_forward_frames): next_container = integrator.step(containers[-1], dt) containers.append(next_container) end_container = containers[-1] # Now run... backwards! if also_run_backwards: for i in xrange(num_forward_frames): next_container = integrator.step(containers[-1], -dt) containers.append(next_container) # Animate orbit # Code courtesy of George Lesica fig = pl.figure(figsize=(4, 4)) xlim, ylim = init_container.bounds ax = pl.axes(xlim=(0, xlim), ylim=(0, ylim)) # necessary because initial plot is too zoomed in ax.set_aspect('equal')