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