def test2(self): #not completed convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun, 149.5e6 | units.km) instance = BHTree(convert_nbody) #instance.dt_dia = 1 instance.parameters.epsilon_squared = 0.001 | units.AU**2 #instance.timestep = 0.0001 #instance.use_self_gravity = 0 instance.commit_parameters() stars = datamodel.Stars(2) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0, 0.0, 0.0))) sun.velocity = units.ms(numpy.array((0.0, 0.0, 0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6, 0.0, 0.0))) earth.velocity = units.ms(numpy.array((0.0, 29800, 0.0))) instance.particles.add_particles(stars) instance.commit_particles() self.assertAlmostRelativeEquals(sun.radius, instance.particles[0].radius) for x in range(1, 2000, 10): instance.evolve_model(x | units.day) instance.particles.copy_values_of_all_attributes_to(stars) stars.savepoint() if HAS_MATPLOTLIB: figure = pyplot.figure() plot = figure.add_subplot(1, 1, 1) x_points = earth.get_timeline_of_attribute("x") y_points = earth.get_timeline_of_attribute("y") x_points_in_AU = map(lambda (t, x): x.value_in(units.AU), x_points) y_points_in_AU = map(lambda (t, x): x.value_in(units.AU), y_points) plot.scatter(x_points_in_AU, y_points_in_AU, color="b", marker='o') plot.set_xlim(-1.5, 1.5) plot.set_ylim(-1.5, 1.5) test_results_path = self.get_path_to_results() output_file = os.path.join(test_results_path, "bhtree-earth-sun.svg") figure.savefig(output_file) instance.cleanup_code() instance.stop()
def test2(self): #not completed convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun, 149.5e6 | units.km) instance = FDPS(convert_nbody) #instance.dt_dia = 1 instance.parameters.epsilon_squared = 0.001 | units.AU**2 #instance.timestep = 0.0001 #instance.use_self_gravity = 0 instance.commit_parameters() stars = datamodel.Stars(2) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0,0.0,0.0))) sun.velocity = units.ms(numpy.array((0.0,0.0,0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6,0.0,0.0))) earth.velocity = units.ms(numpy.array((0.0,29800,0.0))) instance.particles.add_particles(stars) instance.commit_particles() self.assertAlmostRelativeEquals(sun.radius, instance.particles[0].radius) for x in range(1,2000,10): instance.evolve_model(x | units.day) instance.particles.copy_values_of_all_attributes_to(stars) stars.savepoint() if HAS_MATPLOTLIB: figure = pyplot.figure() plot = figure.add_subplot(1,1,1) x_points = earth.get_timeline_of_attribute("x") y_points = earth.get_timeline_of_attribute("y") x_points_in_AU = map(lambda (t,x) : x.value_in(units.AU), x_points) y_points_in_AU = map(lambda (t,x) : x.value_in(units.AU), y_points) plot.scatter(x_points_in_AU,y_points_in_AU, color = "b", marker = 'o') plot.set_xlim(-1.5, 1.5) plot.set_ylim(-1.5, 1.5) test_results_path = self.get_path_to_results() output_file = os.path.join(test_results_path, "fdps-earth-sun.svg") figure.savefig(output_file) instance.cleanup_code() instance.stop()
def new_system_sun_and_earth(self): result = Particles(2) sun = result[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0, 0.0, 0.0))) sun.velocity = units.ms(numpy.array((0.0, 0.0, 0.0))) sun.radius = units.RSun(1.0) earth = result[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6, 0.0, 0.0))) earth.velocity = units.ms(numpy.array((0.0, 29800, 0.0))) return result
def new_system_sun_and_earth(self): result = Particles(2) sun = result[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0,0.0,0.0))) sun.velocity = units.ms(numpy.array((0.0,0.0,0.0))) sun.radius = units.RSun(1.0) earth = result[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6,0.0,0.0))) earth.velocity = units.ms(numpy.array((0.0,29800,0.0))) return result
def new_system_of_sun_and_earth(self): stars = datamodel.Stars(2) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0,0.0,0.0))) sun.velocity = units.ms(numpy.array((0.0,0.0,0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6,0.0,0.0))) earth.velocity = units.ms(numpy.array((0.0,29800,0.0))) return stars
def new_system_of_sun_and_earth(self): stars = datamodel.Stars(2) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(np.array((0.0, 0.0, 0.0))) sun.velocity = units.ms(np.array((0.0, 0.0, 0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(np.array((149.5e6, 0.0, 0.0))) earth.velocity = units.ms(np.array((0.0, 29800, 0.0))) return stars
def setup_particle_system(n_dust): stars = datamodel.Stars(n_dust) generate_dust(stars) sun = stars[0] sun.mass = 1.0 | units.MSun sun.position = units.m(np.array((0.0, 0.0, 0.0))) sun.velocity = units.ms(np.array((0.0, 0.0, 0.0))) sun.radius = 0.1000 | units.RSun #earth = stars[1] #earth.mass = units.kg(5.9736e24) #earth.position = units.AU(np.array((8.418982185410142E-01, 5.355823303978186E-01, 2.327960005926782E-05))) #earth.velocity = units.AUd(np.array((-9.488931818313919E-03, 1.447515189957170E-02, 3.617712172296458E-07))) #earth.radius = 6000 | units.km jupiter = stars[1] jupiter.mass = 1.8986e27 | units.kg # jupiter.position = units.AU( np.array((-1.443168153922270E+00, -5.114454902835615E+00, 5.340409708180518E-02))) jupiter.velocity = units.AUd( np.array((7.173114487727194E-03, -1.699488558889569E-03, -1.537231526125508E-04))) jupiter.radius = 20000 | units.km return stars, sun, jupiter
def new_system_of_sun_and_earth_and_moon(self): stars = datamodel.Stars(3) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0, 0.0, 0.0))) sun.velocity = units.ms(numpy.array((0.0, 0.0, 0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6, 0.0, 0.0))) earth.velocity = units.ms(numpy.array((0.0, 29800, 0.0))) moon = stars[2] moon.mass = units.kg(7.3477e22) moon.radius = units.km(1737.10) moon.position = units.km(numpy.array((149.5e6 + 384399.0, 0.0, 0.0))) moon.velocity = ([0.0, 1.022, 0] | units.km / units.s) + earth.velocity return stars
def new_system_of_sun_and_earth_and_moon(self): stars = datamodel.Stars(3) sun = stars[0] sun.mass = units.MSun(1.0) sun.position = units.m(numpy.array((0.0,0.0,0.0))) sun.velocity = units.ms(numpy.array((0.0,0.0,0.0))) sun.radius = units.RSun(1.0) earth = stars[1] earth.mass = units.kg(5.9736e24) earth.radius = units.km(6371) earth.position = units.km(numpy.array((149.5e6,0.0,0.0))) earth.velocity = units.ms(numpy.array((0.0,29800,0.0))) moon = stars[2] moon.mass = units.kg(7.3477e22 ) moon.radius = units.km(1737.10) moon.position = units.km(numpy.array((149.5e6 + 384399.0 ,0.0,0.0))) moon.velocity = ([0.0,1.022,0] | units.km/units.s) + earth.velocity return stars
def test16(self): convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun, 149.5e6 | units.km) smalln = SmallN(convert_nbody) smalln.initialize_code() smalln.dt_dia = 5000 stars = self.new_system_of_sun_and_earth() moon = datamodel.Particle() moon.mass = units.kg(7.3477e22) moon.radius = units.km(1737.10) moon.position = units.km(numpy.array((149.5e6 + 384.399 ,0.0,0.0))) moon.velocity = units.ms(numpy.array((0.0,29800 + 1022,0.0))) stars.add_particle(moon) earth = stars[1] smalln.particles.add_particles(stars) smalln.evolve_model(365.0 | units.day) smalln.update_particle_tree() smalln.update_particle_set() self.assertEquals(len(smalln.particles), 5) self.assertEarthAndMoonWasDetectedAsBinary(smalln.particles, stars) inmemory = smalln.particles.copy() self.assertEarthAndMoonWasDetectedAsBinary(inmemory, stars) test_results_path = self.get_path_to_results() output_file = os.path.join(test_results_path, "newsmalln-test16.hdf5") if os.path.exists(output_file): os.remove(output_file) io.write_set_to_file(smalln.particles, output_file, "hdf5") fromfile = io.read_set_from_file(output_file, "hdf5") self.assertEarthAndMoonWasDetectedAsBinary(fromfile, stars)
def test16(self): convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun, 149.5e6 | units.km) smalln = SmallN(convert_nbody) smalln.initialize_code() smalln.dt_dia = 5000 stars = self.new_system_of_sun_and_earth() moon = datamodel.Particle() moon.mass = units.kg(7.3477e22) moon.radius = units.km(1737.10) moon.position = units.km(numpy.array((149.5e6 + 384.399, 0.0, 0.0))) moon.velocity = units.ms(numpy.array((0.0, 29800 + 1022, 0.0))) stars.add_particle(moon) earth = stars[1] smalln.particles.add_particles(stars) smalln.evolve_model(365.0 | units.day) smalln.update_particle_tree() smalln.update_particle_set() self.assertEqual(len(smalln.particles), 5) self.assertEarthAndMoonWasDetectedAsBinary(smalln.particles, stars) inmemory = smalln.particles.copy() self.assertEarthAndMoonWasDetectedAsBinary(inmemory, stars) test_results_path = self.get_path_to_results() output_file = os.path.join(test_results_path, "newsmalln-test16.hdf5") if os.path.exists(output_file): os.remove(output_file) io.write_set_to_file(smalln.particles, output_file, "hdf5") fromfile = io.read_set_from_file(output_file, "hdf5") self.assertEarthAndMoonWasDetectedAsBinary(fromfile, stars) smalln.stop()
self.render(R) if __name__ == "__main__": nstars = 1 #int(sys.argv[1]) workers = 1 #int(sys.argv[2]) method = 'hermite' # sys.argv[3] print nstars seed = None stars = datamodel.Stars(3) earth = stars[0] earth.mass = units.kg(5.9736e24) earth.position = units.m(np.array((0.0, 0.0, 0.0))) earth.velocity = units.ms(np.array((0.0, 0.0, 0.0))) earth.radius = units.km(6371) sat_one = stars[1] sat_one.mass = units.kg(1000) sat_one.radius = units.m(10) sat_one.position = units.km(np.array((6371 + 242, 0.0, 0.0))) sat_one.velocity = units.ms(np.array((0.0, 27359 / 3.6, 0.0))) sat_two = stars[2] sat_two.mass = units.kg(1000) sat_two.radius = units.m(10) sat_two.position = units.km(np.array((6371 + 242, 100.0, 0.0))) sat_two.velocity = units.ms(np.array((0.0, 27359 / 3.6, 0.0))) convert_nbody = nbody_system.nbody_to_si(5.9736e24 | units.kg,