def test5(self): print("Test group_bound_particles") colliders = self.new_colliders() colliders.position = [[0.0, 0.0, 0.0], [1.1, 0.0, 0.0]] | units.RSun colliders.velocity = [[0.0, 0.0, 0.0], [10000, 0.0, 0.0]] | units.km / units.s stellar = EVtwin() stellar.particles.add_particles(colliders) collision = StellarEncounterInHydrodynamics(7000, None, relax_sph_models=False, verbose=True, star_to_sph_arguments=dict(base_grid_options=dict(type="sobol"))) collision.dynamical_timescale = zero gas_particles = collision.convert_stars(colliders, stellar) stellar.stop() collision.hop = collision.new_hop(gas_particles) collision.start_kepler(7 | units.MSun, 10 | units.RSun) self.assertTrue(collision.encounter_is_over(gas_particles)) collision.hop.stop() collision.kepler.stop() groups = collision.groups_after_encounter self.assertEqual(len(groups), 2) self.assertTrue(4500 < len(groups[0]) < 5000) self.assertTrue(1800 < len(groups[1]) < 2000) self.assertEqual(len(gas_particles - groups[0] - groups[1]), 346) self.assertAlmostEqual(groups[0].center_of_mass()[0], 0 | units.RSun, 1) self.assertAlmostEqual(groups[1].center_of_mass()[0], 1.1 | units.RSun, 0) self.assertIsOfOrder(groups[1].center_of_mass_velocity()[0], 10000 | units.km / units.s)
def test5(self): print "Test group_bound_particles" colliders = self.new_colliders() colliders.position = [[0.0, 0.0, 0.0], [1.1, 0.0, 0.0]] | units.RSun colliders.velocity = [[0.0, 0.0, 0.0], [10000, 0.0, 0.0]] | units.km / units.s stellar = EVtwin() stellar.particles.add_particles(colliders) collision = StellarEncounterInHydrodynamics(7000, None, relax_sph_models=False, verbose=True, star_to_sph_arguments=dict(base_grid_options=dict(type="sobol"))) collision.dynamical_timescale = zero gas_particles = collision.convert_stars(colliders, stellar) stellar.stop() collision.hop = collision.new_hop(gas_particles) collision.start_kepler(7 | units.MSun, 10 | units.RSun) self.assertTrue(collision.encounter_is_over(gas_particles)) collision.hop.stop() collision.kepler.stop() groups = collision.groups_after_encounter self.assertEqual(len(groups), 2) self.assertTrue(4500 < len(groups[0]) < 5000) self.assertTrue(1800 < len(groups[1]) < 2000) self.assertEqual(len(gas_particles - groups[0] - groups[1]), 346) self.assertAlmostEqual(groups[0].center_of_mass()[0], 0 | units.RSun, 1) self.assertAlmostEqual(groups[1].center_of_mass()[0], 1.1 | units.RSun, 0) self.assertIsOfOrder(groups[1].center_of_mass_velocity()[0], 10000 | units.km / units.s)
def test3(self): print "Test convert_stars" colliders = self.new_colliders() colliders.position = [[-100.0, 0.0, 0.0], [100.0, 0.0, 0.0] ] | units.RSun stellar = EVtwin() stellar.particles.add_particles(colliders) collision = StellarEncounterInHydrodynamics(700, None, relax_sph_models=False, verbose=True) gas_particles = collision.convert_stars(colliders, stellar) stellar.stop() self.assertEqual(gas_particles.mass, 0.01 | units.MSun) self.assertTrue(numpy.all(gas_particles[:500].x < zero)) self.assertTrue(numpy.all(gas_particles[500:].x > zero)) self.assertIsOfOrder(( gas_particles[:500].position - ([-100.0, 0.0, 0.0] | units.RSun)).lengths_squared().amax().sqrt(), 1 | units.RSun) self.assertIsOfOrder( (gas_particles[500:].position - ([100.0, 0.0, 0.0] | units.RSun)).lengths_squared().amax().sqrt(), 1 | units.RSun) self.assertAlmostEqual( gas_particles[500:].center_of_mass_velocity().y - gas_particles[:500].center_of_mass_velocity().y, 2000.0 | units.km / units.s)
def test3(self): print "Test convert_stars" colliders = self.new_colliders() colliders.position = [[-100.0, 0.0, 0.0], [100.0, 0.0, 0.0]] | units.RSun stellar = EVtwin() stellar.particles.add_particles(colliders) collision = StellarEncounterInHydrodynamics(700, None, relax_sph_models=False, verbose=True) gas_particles = collision.convert_stars(colliders, stellar) stellar.stop() self.assertEqual(gas_particles.mass, 0.01 | units.MSun) self.assertTrue(numpy.all(gas_particles[:500].x < zero)) self.assertTrue(numpy.all(gas_particles[500:].x > zero)) self.assertIsOfOrder(( gas_particles[:500].position - ([-100.0, 0.0, 0.0] | units.RSun) ).lengths_squared().amax().sqrt(), 1 | units.RSun) self.assertIsOfOrder(( gas_particles[500:].position - ([100.0, 0.0, 0.0] | units.RSun) ).lengths_squared().amax().sqrt(), 1 | units.RSun) self.assertAlmostEqual(gas_particles[500:].center_of_mass_velocity().y - gas_particles[:500].center_of_mass_velocity().y, 2000.0 | units.km / units.s)