Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)