def test_same_from_afar(self): gen_data.singular('5.0') print "Test 2: Conserves Energy" acceptable_error = 0.01 user_pos = np.array([0, 10]) user_mass = 1.0 user_charge = 1.0 ring_radius = 0 user_vel = np.array([0, 0]) my_ring = electron.Ring(ring_radius) my_ring.ReadChargeDist('singulardist.csv') Estimator.my_ring = my_ring user_vel = np.array([0, 0]) user_accel = electron.CalculateForce(user_charge, user_pos, my_ring) my_particle = electron.Particle(user_mass, user_charge, user_pos, user_vel, user_accel) my_state = electron.State(my_particle, 0) my_system = electron.System(my_state) final_pos, final_vel = electron.run_simulation(my_system, 100, "test2.csv") print Coulomb_k*(my_ring.charge_density[0])*user_charge*(1.0/np.linalg.norm(user_pos) - 1.0/np.linalg.norm(final_pos)) - 0.5*user_mass*np.linalg.norm(final_vel)**2 #final_pos, final_vel = run_simution(user_mass, user_charge, user_pos, user_vel, ring_radius, angle, value, 10) self.assertTrue(math.fabs(Coulomb_k*(my_ring.charge_density[0])*user_charge*(1.0/np.linalg.norm(user_pos) - 1.0/np.linalg.norm(final_pos)) - 0.5*user_mass*np.linalg.norm(final_vel)**2) < 0.1)
def test_completes_the_circle(self): gen_data.singular('5.0') print "Test 1: complete the circle" acceptable_rmse = 0.01 user_pos = np.array([0, 1.5]) user_mass = 1 user_charge = 1 ring_radius = 0 my_ring = electron.Ring(ring_radius) my_ring.ReadChargeDist('singulardist.csv') Estimator.dt = 0.001 Estimator.my_ring = my_ring user_vel = np.array([math.sqrt(Coulomb_k*user_charge*my_ring.charge_density[0]/np.linalg.norm(user_pos)/user_mass), 0]) time_limit = 2.0*math.pi*np.linalg.norm(user_pos)/np.linalg.norm(user_vel)/Estimator.dt user_accel = electron.CalculateForce(user_charge, user_pos, my_ring) my_particle = electron.Particle(user_mass, user_charge, user_pos, user_vel, user_accel) my_state = electron.State(my_particle, 0) my_system = electron.System(my_state) final_pos, final_vel = electron.run_simulation(my_system, int(time_limit), "test1.csv") # Expect final position to equal first position. print np.linalg.norm(final_pos - user_pos) self.assertTrue(np.linalg.norm(final_pos - user_pos) < acceptable_rmse)