Exemplo n.º 1
0
 def slowtest7(self):
     print("Test handle_collision")
     position_offset = [100.0, 200.0, 300.0] | units.RSun
     velocity_offset = [10000.0, 20000.0, 30000.0] | units.km / units.s
     colliders = self.new_colliders()
     colliders.position += position_offset
     colliders.velocity += velocity_offset
     
     class GravityCodeStub(object):
         def __init__(self, particles):
             self.particles = particles
     gravity = GravityCodeStub(colliders)
     
     stellar = EVtwin()
     stellar.particles.add_particles(colliders)
     
     collision = StellarEncounterInHydrodynamics(
         #28000, # Bit too slow, even for a slowtest... 
         2800, 
         new_plotting_hydrodynamics_code(Gadget2, 0.2|units.hour, 
             plot_function = pynbody_column_density_plot if HAS_PYNBODY else None,
             plot_function_arguments = dict(width=20|units.RSun, vmin=29, vmax=35) if HAS_PYNBODY else dict(width=20|units.RSun)), 
         hydrodynamics_arguments = dict(redirection="file", redirect_file="hydro_collision_slowtest7_gadget_out.log"),
         hydrodynamics_parameters = dict(time_limit_cpu=1|units.day, gas_epsilon=0.01|units.RSun),
         verbose=True,
         debug=False
     )
     result = collision.handle_collision(colliders[0], colliders[1], gravity_code=gravity, stellar_evolution_code=stellar)
     stellar.stop()
     print(result)
     self.assertTrue(isinstance(result, Particles))
     self.assertEqual(len(result), 2)
     self.assertTrue((result.mass < [5.0, 2.0] | units.MSun).all())
     self.assertAlmostRelativeEqual(result.center_of_mass(), position_offset, 2)
     self.assertAlmostRelativeEqual(result.center_of_mass_velocity(), velocity_offset, 2)
Exemplo n.º 2
0
 def slowtest7(self):
     print "Test handle_collision"
     position_offset = [100.0, 200.0, 300.0] | units.RSun
     velocity_offset = [10000.0, 20000.0, 30000.0] | units.km / units.s
     colliders = self.new_colliders()
     colliders.position += position_offset
     colliders.velocity += velocity_offset
     
     class GravityCodeStub(object):
         def __init__(self, particles):
             self.particles = particles
     gravity = GravityCodeStub(colliders)
     
     stellar = EVtwin()
     stellar.particles.add_particles(colliders)
     
     collision = StellarEncounterInHydrodynamics(
         #28000, # Bit too slow, even for a slowtest... 
         2800, 
         new_plotting_hydrodynamics_code(Gadget2, 0.2|units.hour, 
             plot_function = pynbody_column_density_plot if HAS_PYNBODY else None,
             plot_function_arguments = dict(width=20|units.RSun, vmin=29, vmax=35) if HAS_PYNBODY else dict(width=20|units.RSun)), 
         hydrodynamics_arguments = dict(redirection="file", redirect_file="hydro_collision_slowtest7_gadget_out.log"),
         hydrodynamics_parameters = dict(time_limit_cpu=1|units.day, gas_epsilon=0.01|units.RSun),
         verbose=True,
         debug=False
     )
     result = collision.handle_collision(colliders[0], colliders[1], gravity_code=gravity, stellar_evolution_code=stellar)
     stellar.stop()
     print result
     self.assertTrue(isinstance(result, Particles))
     self.assertEqual(len(result), 2)
     self.assertTrue((result.mass < [5.0, 2.0] | units.MSun).all())
     self.assertAlmostRelativeEqual(result.center_of_mass(), position_offset, 2)
     self.assertAlmostRelativeEqual(result.center_of_mass_velocity(), velocity_offset, 2)
Exemplo n.º 3
0
 def test6(self):
     print("Test handle_collision")
     position_offset = [100.0, 200.0, 300.0] | units.RSun
     velocity_offset = [10000.0, 20000.0, 30000.0] | units.km / units.s
     colliders = self.new_colliders()
     colliders.position *= 1.5 # Grazing collision
     colliders.position += position_offset
     colliders.velocity += velocity_offset
     
     class GravityCodeStub(object):
         def __init__(self, particles):
             self.particles = particles
     gravity = GravityCodeStub(colliders)
     
     stellar = EVtwin()
     stellar.particles.add_particles(colliders)
     
     collision = StellarEncounterInHydrodynamics(280,  # For speed
         Gadget2,
         relax_sph_models=False,  # For speed
         verbose=True)
     collision.extra_steps_when_encounter_is_over = 0 # For speed, no extra steps...
     collision.dynamical_timescales_per_step = 1.3 # ... but then we need to evolve a bit longer in the first step
     result = collision.handle_collision(colliders[0], colliders[1], gravity_code=gravity, stellar_evolution_code=stellar)
     stellar.stop()
     print(result)
     self.assertTrue(isinstance(result, Particles))
     self.assertEqual(len(result), 2)
     self.assertAlmostEqual(result.mass, [5.0, 2.0] | units.MSun, 1)
     self.assertAlmostRelativeEqual(result.center_of_mass(), position_offset, 2)
     self.assertAlmostRelativeEqual(result.center_of_mass_velocity(), velocity_offset, 2)
Exemplo n.º 4
0
 def test6(self):
     print "Test handle_collision"
     position_offset = [100.0, 200.0, 300.0] | units.RSun
     velocity_offset = [10000.0, 20000.0, 30000.0] | units.km / units.s
     colliders = self.new_colliders()
     colliders.position *= 1.5 # Grazing collision
     colliders.position += position_offset
     colliders.velocity += velocity_offset
     
     class GravityCodeStub(object):
         def __init__(self, particles):
             self.particles = particles
     gravity = GravityCodeStub(colliders)
     
     stellar = EVtwin()
     stellar.particles.add_particles(colliders)
     
     collision = StellarEncounterInHydrodynamics(280,  # For speed
         Gadget2,
         relax_sph_models=False,  # For speed
         verbose=True)
     collision.extra_steps_when_encounter_is_over = 0 # For speed, no extra steps...
     collision.dynamical_timescales_per_step = 1.3 # ... but then we need to evolve a bit longer in the first step
     result = collision.handle_collision(colliders[0], colliders[1], gravity_code=gravity, stellar_evolution_code=stellar)
     stellar.stop()
     print result
     self.assertTrue(isinstance(result, Particles))
     self.assertEqual(len(result), 2)
     self.assertAlmostEqual(result.mass, [5.0, 2.0] | units.MSun, 1)
     self.assertAlmostRelativeEqual(result.center_of_mass(), position_offset, 2)
     self.assertAlmostRelativeEqual(result.center_of_mass_velocity(), velocity_offset, 2)