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)
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)