def test3(self): hermite = HermiteInterface() self.assertEquals(0, hermite.set_eps2(0.101)) self.assertEquals([0.101, 0], hermite.get_eps2().values()) self.assertEquals(0, hermite.set_eps2(0.2)) self.assertEquals([0.2, 0], hermite.get_eps2().values()) hermite.cleanup_code() hermite.stop()
def test4(self): hermite = HermiteInterface() self.assertEquals([0, 0], hermite.get_is_time_reversed_allowed().values()) self.assertEquals(0, hermite.set_is_time_reversed_allowed(1)) self.assertEquals([1, 0], hermite.get_is_time_reversed_allowed().values()) hermite.cleanup_code() hermite.stop()
def test3(self): hermite = HermiteInterface() self.assertEquals(0, hermite.set_eps2(0.101)) self.assertEquals([0.101, 0], hermite.get_eps2().values()) self.assertEquals(0, hermite.set_eps2(0.2)) self.assertEquals([0.2, 0], hermite.get_eps2().values()) hermite.stop()
def test1(self): instance = HermiteInterface() instance.initialize_code() res1 = instance.new_particle(mass = 11.0, radius = 2.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0) res2 = instance.new_particle(mass = 21.0, radius = 5.0, x = 10.0, y = 0.0, z = 0.0, vx = 10.0, vy = 0.0, vz = 0.0) self.assertEquals(0, res1['index_of_the_particle']) self.assertEquals(1, res2['index_of_the_particle']) retrieved_state1 = instance.get_state(0) retrieved_state2 = instance.get_state(1) self.assertEquals(11.0, retrieved_state1['mass']) self.assertEquals(21.0, retrieved_state2['mass']) self.assertEquals(0.0, retrieved_state1['x']) self.assertEquals(10.0, retrieved_state2['x']) self.assertEquals(2.0, retrieved_state1['radius']) self.assertEquals(5.0, retrieved_state2['radius']) instance.cleanup_code() instance.stop()
def test0(self): instance = HermiteInterface() self.assertTrue("Hut" in instance.all_literature_references_string()) instance.stop()
def test9(self): print "Test HermiteInterface evolve_model" instance = HermiteInterface() self.assertEquals(0, instance.initialize_code()) self.assertEquals(0, instance.set_dt_param(0.001)) self.assertEquals(0, instance.set_end_time_accuracy_factor(0.0)) self.assertEquals(0, instance.commit_parameters()) # Set up an equal-mass binary on a circular orbit: self.assertEquals([0, 0], instance.new_particle(0.5, 0.5, 0, 0, 0, 0.5, 0, 0.01).values()) self.assertEquals([1, 0], instance.new_particle(0.5, -0.5, 0, 0, 0,-0.5, 0, 0.01).values()) self.assertEquals(0, instance.commit_particles()) self.assertEquals(0, instance.evolve_model(math.pi)) for result, expected in zip(instance.get_position(0).values(), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) for result, expected in zip(instance.get_position(1).values(), [0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) self.assertEquals(0, instance.evolve_model(2 * math.pi)) for result, expected in zip(instance.get_position(0).values(), [0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) for result, expected in zip(instance.get_position(1).values(), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) self.assertEquals(0, instance.cleanup_code()) instance.stop()
def test8(self): instance = HermiteInterface() instance.initialize_code() instance.set_eps2(0) instance.commit_parameters() id1,errorcode = instance.new_particle(mass = 10.0, radius = 1.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0) id2,errorcode = instance.new_particle(mass = 1.0, radius = 1.0, x = 2.0, y = 0.0, z = 0.0, vx = 10.0, vy = 0.0, vz = 0.0) instance.commit_particles() potential, errorcode = instance.get_potential(id1) self.assertEquals(errorcode, 0) self.assertAlmostRelativeEquals(potential, -1.0 / numpy.sqrt(2.0**2), 8) total_potential, errorcode = instance.get_potential_energy() potentials, errorcode = instance.get_potential([id1, id2]) instance.stop() self.assertAlmostRelativeEquals(total_potential, numpy.sum(potentials * [10.0, 1.0]) / 2.0)
def test6(self): hermite = HermiteInterface() hermite.initialize_code() hermite.new_particle([10,10],[-1,1],[0,0], [0,0], [0,0], [0,0], [0,0], [1,1]) retrieved_state = hermite.get_state(0) retr = hermite.get_potential_at_point(0.01, 0,0,0) self.assertEqual(retr['phi'], -20.0) hermite.cleanup_code() hermite.stop()
def example_M67(): #in this example we take M67 from mmc and evolve it in both #mmc and hermite. We compare coreradii mmc = mmcInterface(redirection="null") mmc.set_mmc_data_directory(mmc.data_directory) mmc.set_irun(10) mmc.set_iseed(10) mmc.set_nt(2000) mmc.set_nt0(2000) mmc.set_nt00(2000) mmc.set_istart(1) mmc.set_ncor(20) mmc.set_nmin(5) mmc.set_nz0(100) mmc.set_nzonc(1) mmc.set_nminzo(30) mmc.set_ntwo(10) mmc.set_imodel(4) mmc.set_iprint(3) mmc.set_ib3f(3) mmc.set_iexch(2) mmc.set_tcrit(600000.0) mmc.set_tcomp(18000.0) mmc.set_qe(1.e-0) mmc.set_alphal(1.3) mmc.set_alphah(2.3) mmc.set_brakem(0.5) mmc.set_body1(100.0) mmc.set_bodyn(0.1) mmc.set_fracb(0.00) mmc.set_amin(0.0) mmc.set_amax(10747.0) mmc.set_qvir(0.5) mmc.set_rbar(100.0) mmc.set_zmbar(426000.0) mmc.set_w0(5.0) mmc.set_bmin(0.01) mmc.set_bmin0(0.01) mmc.set_bmax(2.0 * 0.01) mmc.set_tau0(0.002) mmc.set_gamma(0.02) mmc.set_xtid(1.36) mmc.set_rplum(60.0) mmc.set_dttp(500.0) mmc.set_dtte(500.0) mmc.set_dtte0(100.0) mmc.set_tcrevo(1000.0) mmc.set_xtau(1.0) mmc.set_ytau(2.0) mmc.set_ybmin(2.0) mmc.set_zini(0.0200) mmc.set_ikroupa(0) mmc.set_iflagns(2) mmc.set_iflagbh(2) mmc.set_nitesc(0) mmc.set_flagr([0.005,0.01,0.02,0.03, 0.04,0.05,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.99]) nlagra = mmc.get_nlagra().nlagrange print mmc.get_flagr(range(1,nlagra+1)) """ mmc.amuse_input() """ mmc.nonstandard_init() n_total = mmc.get_number_of_particles().n_ mass,radius,x,y,z,vx,vy,vz = plummer(n_total) r_, vr_, vt_ = mmc.phase_to_polar(x, y, z, vx, vy, vz) mmcstate = mmc.get_state(range(1,n_total+1)) x, y, z, vx, vy, vz,ex,ey,ez = mmc.phase_to_cartesian(mmcstate.r, mmcstate.vr, mmcstate.vt) mass, r_, vr_, vt_ = sort_by_radii(mass, r_, vr_, vt_) mmc.commit_particles() n_total = mmc.get_number_of_particles().n_ mmc.set_tcrit(0) control = HermiteInterface(number_of_workers=3) control.initialize_code() control.commit_parameters() res = control.new_particle(mass, 1/n_total * np.ones(len(mass)), x, y, z, vx, vy, vz) control_parts = res['index_of_the_particle'] control.commit_particles() mmc.set_istart(1) for time_end in np.arange(0.001,1,0.001): n_total = mmc.get_number_of_particles().n_ x, y, z = mmc.get_positions_3d(range(1, n_total+1)) M = mmc.get_state(range(1, n_total+1)) tcross = crossing_time(M.r, M.vr, M.vt) x_core,y_core,z_core,rc = coreradius.coreradius(M.mass,x,y,z) tic = systime.clock() mmc.evolve_model(time_end) toc = systime.clock() time = mmc.get_time().time tcrit_control = mmc.get_tcrit().termination_time_units_crossing_time timet = mmc.get_timet().time tcr = mmc.get_crossing_time().tcr control.evolve_model(time_end) H = control.get_state(control_parts) control_xcore,control_ycore,control_zcore,control_rc = \ coreradius.coreradius(H.mass,H.x,H.y,H.z) print time, time_end, rc, control_rc, toc-tic mmc.stop() control.stop()
def test5(self): hermite = HermiteInterface() hermite.initialize_code() hermite.new_particle([10,20],[0,0],[0,0], [0,0], [0,0], [0,0], [0,0],[1,1]) retrieved_state = hermite.get_state(0) self.assertEquals(10.0, retrieved_state['mass']) self.assertEquals(1, retrieved_state['radius']) retrieved_state = hermite.get_state([0,1]) self.assertEquals(20.0, retrieved_state['mass'][1]) self.assertEquals(hermite.get_number_of_particles()['number_of_particles'], 2) hermite.cleanup_code() hermite.stop()
def test8(self): instance = HermiteInterface() instance.initialize_code() instance.set_eps2(0) instance.commit_parameters() id1, errorcode = instance.new_particle(mass=10.0, radius=1.0, x=0.0, y=0.0, z=0.0, vx=0.0, vy=0.0, vz=0.0) id2, errorcode = instance.new_particle(mass=1.0, radius=1.0, x=2.0, y=0.0, z=0.0, vx=10.0, vy=0.0, vz=0.0) instance.commit_particles() potential, errorcode = instance.get_potential(id1) self.assertEquals(errorcode, 0) self.assertAlmostRelativeEquals(potential, -1.0 / numpy.sqrt(2.0**2), 8) total_potential, errorcode = instance.get_potential_energy() potentials, errorcode = instance.get_potential([id1, id2]) instance.stop() self.assertAlmostRelativeEquals( total_potential, numpy.sum(potentials * [10.0, 1.0]) / 2.0)
def test6(self): hermite = HermiteInterface() hermite.initialize_code() hermite.new_particle([10, 10], [-1, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 1]) retrieved_state = hermite.get_state(0) retr = hermite.get_potential_at_point(0.01, 0, 0, 0) self.assertEqual(retr['phi'], -20.0) hermite.cleanup_code() hermite.stop()
def test5(self): hermite = HermiteInterface() hermite.initialize_code() hermite.new_particle([10, 20], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [1, 1]) retrieved_state = hermite.get_state(0) self.assertEquals(10.0, retrieved_state['mass']) self.assertEquals(1, retrieved_state['radius']) retrieved_state = hermite.get_state([0, 1]) self.assertEquals(20.0, retrieved_state['mass'][1]) self.assertEquals( hermite.get_number_of_particles()['number_of_particles'], 2) hermite.cleanup_code() hermite.stop()
def test9(self): print "Test HermiteInterface evolve_model" instance = HermiteInterface() self.assertEquals(0, instance.initialize_code()) self.assertEquals(0, instance.set_dt_param(0.001)) self.assertEquals(0, instance.set_end_time_accuracy_factor(0.0)) self.assertEquals(0, instance.commit_parameters()) # Set up an equal-mass binary on a circular orbit: self.assertEquals([0, 0], instance.new_particle(0.5, 0.5, 0, 0, 0, 0.5, 0, 0.01).values()) self.assertEquals([1, 0], instance.new_particle(0.5, -0.5, 0, 0, 0, -0.5, 0, 0.01).values()) self.assertEquals(0, instance.commit_particles()) self.assertEquals(0, instance.evolve_model(math.pi)) for result, expected in zip( instance.get_position(0).values(), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) for result, expected in zip( instance.get_position(1).values(), [0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) self.assertEquals(0, instance.evolve_model(2 * math.pi)) for result, expected in zip( instance.get_position(0).values(), [0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) for result, expected in zip( instance.get_position(1).values(), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEquals(result, expected, 3) self.assertEquals(0, instance.cleanup_code()) instance.stop()
def test2(self): instance = HermiteInterface() instance.initialize_code() for i in [0, 1, 2]: temp_particle = instance.new_particle(mass = i, radius = 1.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0) self.assertEquals(i, temp_particle['index_of_the_particle']) instance.delete_particle(1) self.assertEquals(2, instance.get_number_of_particles()['number_of_particles']) self.assertEquals(0, instance.get_index_of_first_particle()['index_of_the_particle']) self.assertEquals(2, instance.get_index_of_next_particle(0)['index_of_the_next_particle']) self.assertEquals(0, instance.get_index_of_next_particle(0)['__result']) self.assertEquals(-1, instance.get_index_of_next_particle(1)['__result']) self.assertEquals(1, instance.get_index_of_next_particle(2)['__result']) instance.stop()
def test1(self): instance = HermiteInterface() instance.initialize_code() res1 = instance.new_particle(mass=11.0, radius=2.0, x=0.0, y=0.0, z=0.0, vx=0.0, vy=0.0, vz=0.0) res2 = instance.new_particle(mass=21.0, radius=5.0, x=10.0, y=0.0, z=0.0, vx=10.0, vy=0.0, vz=0.0) self.assertEquals(0, res1['index_of_the_particle']) self.assertEquals(1, res2['index_of_the_particle']) retrieved_state1 = instance.get_state(0) retrieved_state2 = instance.get_state(1) self.assertEquals(11.0, retrieved_state1['mass']) self.assertEquals(21.0, retrieved_state2['mass']) self.assertEquals(0.0, retrieved_state1['x']) self.assertEquals(10.0, retrieved_state2['x']) self.assertEquals(2.0, retrieved_state1['radius']) self.assertEquals(5.0, retrieved_state2['radius']) instance.cleanup_code() instance.stop()
def test4(self): hermite = HermiteInterface() self.assertEquals([0, 0], hermite.get_is_time_reversed_allowed().values()) self.assertEquals(0, hermite.set_is_time_reversed_allowed(1)) self.assertEquals([1, 0], hermite.get_is_time_reversed_allowed().values()) hermite.stop()
def test2(self): instance = HermiteInterface() instance.initialize_code() for i in [0, 1, 2]: temp_particle = instance.new_particle(mass=i, radius=1.0, x=0.0, y=0.0, z=0.0, vx=0.0, vy=0.0, vz=0.0) self.assertEquals(i, temp_particle['index_of_the_particle']) instance.delete_particle(1) self.assertEquals( 2, instance.get_number_of_particles()['number_of_particles']) self.assertEquals( 0, instance.get_index_of_first_particle()['index_of_the_particle']) self.assertEquals( 2, instance.get_index_of_next_particle(0) ['index_of_the_next_particle']) self.assertEquals(0, instance.get_index_of_next_particle(0)['__result']) self.assertEquals(-1, instance.get_index_of_next_particle(1)['__result']) self.assertEquals(1, instance.get_index_of_next_particle(2)['__result']) instance.stop()
def calculate_speed(range_of_number_of_particles): result = [] for n in range_of_number_of_particles: #range(8000,20000, 1000): hermite1 = HermiteInterface() hermite1.initialize_code() hermite2 = HermiteInterface() hermite2.initialize_code() ids = [i for i in range(1, n)] values = [1.0 * i for i in range(1, n)] t0 = time.time() hermite1.new_particle(values, values, values, values, values, values, values, values) t1 = time.time() d1 = t1 - t0 #print d1, t1, t0 t0 = time.time() for i in range(n - 1): hermite2.new_particle(values[i], values[i], values[i], values[i], values[i], values[i], values[i], values[i]) t1 = time.time() d2 = t1 - t0 result.append((n, d1, d2, d2 / d1)) hermite1.cleanup_code() hermite2.cleanup_code() del hermite1 del hermite2 return result
def calculate_speed(range_of_number_of_particles): result = [] for n in range_of_number_of_particles: #range(8000,20000, 1000): hermite1 = HermiteInterface() hermite1.initialize_code() hermite2 = HermiteInterface() hermite2.initialize_code() ids = [i for i in range(1,n)] values = [1.0 * i for i in range(1,n)] t0 = time.time() hermite1.new_particle(values , values , values , values , values , values , values , values) t1 = time.time() d1 = t1 - t0 #print d1, t1, t0 t0 = time.time() for i in range(n-1): hermite2.new_particle(values[i] , values[i] , values[i] , values[i] , values[i] , values[i] , values[i] , values[i]) t1 = time.time() d2 = t1 - t0 result.append((n, d1, d2, d2/d1)) hermite1.cleanup_code() hermite2.cleanup_code() del hermite1 del hermite2 return result