Ejemplo n.º 1
0
    def test1(self):
        convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun,
                                                 1.0 | units.yr / (2.0 * pi))
        instance = Mikkola(convert_nbody)
        instance.parameters.timestep = 0.5 | units.day
        stars = self.new_system_of_sun_and_earth()
        instance.particles.add_particles(stars)
        Sun = stars[0]
        earth = stars[1]

        postion_at_start = earth.position.value_in(units.AU)[0]

        #        instance.evolve_model(365.0 | units.day)

        instance.evolve_model(1.0 | units.yr)
        channel = instance.particles.new_channel_to(stars)
        channel.copy()
        self.assertAlmostRelativeEquals(instance.potential_energy * -0.5,
                                        instance.kinetic_energy, 3)
        self.assertAlmostRelativeEquals(
            instance.radiated_gravitational_energy,
            -6222456075.98 | units.m**2 * units.kg * units.s**-2, 4)

        postion_after_full_rotation = earth.position.value_in(units.AU)[0]

        self.assertAlmostEqual(
            postion_at_start,
            instance.particles[1].position.value_in(units.AU)[0], 3)
        self.assertAlmostEqual(postion_at_start, postion_after_full_rotation,
                               3)

        instance.evolve_model(1.5 | units.yr)

        channel.copy()

        postion_after_half_a_rotation = earth.position.value_in(units.AU)[0]
        self.assertAlmostEqual(-postion_at_start,
                               postion_after_half_a_rotation, 3)

        instance.evolve_model(1.75 | units.yr)

        channel.copy()

        postion_after_half_a_rotation = earth.position.value_in(units.AU)[1]

        self.assertAlmostEqual(-postion_at_start,
                               postion_after_half_a_rotation, 3)
        instance.cleanup_code()
        del instance
Ejemplo n.º 2
0
    def test4(self):
        convert_nbody=nbody_system.nbody_to_si(1.0|units.MSun, 1.0|units.yr/(2.0*pi))
        instance = Mikkola(convert_nbody)

        stars = self.new_system_of_Hulse_Taylor_pulsar()
        instance.particles.add_particles(stars)
        
        instance.commit_particles()
        self.assertEquals(len(instance.particles), 2)
        instance.cleanup_code()
        self.assertEquals(len(instance.particles), 0)
        
        instance.initialize_code()
        instance.particles.add_particles(stars)
        self.assertEquals(len(instance.particles), 2)
        
        instance.commit_particles()
        self.assertEquals(len(instance.particles), 2)
        instance.cleanup_code()
        self.assertEquals(len(instance.particles), 0)
Ejemplo n.º 3
0
    def test4(self):
        convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun,
                                                 1.0 | units.yr / (2.0 * pi))
        instance = Mikkola(convert_nbody)

        stars = self.new_system_of_Hulse_Taylor_pulsar()
        instance.particles.add_particles(stars)

        instance.commit_particles()
        self.assertEqual(len(instance.particles), 2)
        instance.cleanup_code()
        self.assertEqual(len(instance.particles), 0)

        instance.initialize_code()
        instance.particles.add_particles(stars)
        self.assertEqual(len(instance.particles), 2)

        instance.commit_particles()
        self.assertEqual(len(instance.particles), 2)
        instance.cleanup_code()
        self.assertEqual(len(instance.particles), 0)
Ejemplo n.º 4
0
    def test2(self):
        convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun,
                                                 1.0 | units.yr / (2.0 * pi))
        instance = Mikkola(convert_nbody)
        instance.parameters.timestep = 1 | units.day
        stars = self.new_system_of_sun_and_mercury()
        instance.particles.add_particles(stars)
        Sun = stars[0]
        mercury = stars[1]

        postion_at_start = mercury.position.value_in(units.AU)[0]

        period_mercury = 87.9691 | units.day
        instance.evolve_model(period_mercury)
        channel = instance.particles.new_channel_to(stars)
        channel.copy()

        postion_after_full_rotation = mercury.position.value_in(units.AU)[0]

        self.assertAlmostEqual(postion_at_start, postion_after_full_rotation,
                               4)

        instance.evolve_model(1.5 * period_mercury)

        channel.copy()

        postion_after_half_a_rotation = mercury.position.value_in(units.AU)[0]
        self.assertAlmostEqual(-postion_at_start,
                               postion_after_half_a_rotation, 3)

        instance.evolve_model(1.75 * period_mercury)

        channel.copy()

        postion_after_half_a_rotation = mercury.position.value_in(units.AU)[1]

        self.assertAlmostEqual(-postion_at_start,
                               postion_after_half_a_rotation, 3)
        instance.cleanup_code()
        del instance
Ejemplo n.º 5
0
    def test1(self):
        convert_nbody=nbody_system.nbody_to_si(1.0|units.MSun, 1.0|units.yr/(2.0*pi))
        instance = Mikkola(convert_nbody)
        instance.parameters.timestep = 0.5 | units.day
        stars = self.new_system_of_sun_and_earth()
        instance.particles.add_particles(stars)
        Sun = stars[0]
        earth = stars[1]
        
        postion_at_start = earth.position.value_in(units.AU)[0]
        
#        instance.evolve_model(365.0 | units.day)

        instance.evolve_model(1.0 | units.yr)
        channel = instance.particles.new_channel_to(stars)
        channel.copy()
        self.assertAlmostRelativeEquals(instance.potential_energy * -0.5, instance.kinetic_energy, 3)
        self.assertAlmostRelativeEquals(instance.radiated_gravitational_energy, -6222456075.98| units.m**2 * units.kg * units.s**-2, 4)
        
        postion_after_full_rotation = earth.position.value_in(units.AU)[0]
       
        self.assertAlmostEqual(postion_at_start, instance.particles[1].position.value_in(units.AU)[0], 3)
        self.assertAlmostEqual(postion_at_start, postion_after_full_rotation, 3)
        
        instance.evolve_model(1.5 | units.yr)
        
        channel.copy()
        
        postion_after_half_a_rotation = earth.position.value_in(units.AU)[0]
        self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
        
        instance.evolve_model(1.75  | units.yr)
         
        channel.copy()
        
        postion_after_half_a_rotation = earth.position.value_in(units.AU)[1]
        
        self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
        instance.cleanup_code()
        del instance
Ejemplo n.º 6
0
def HulseTaylor3():
    instance = Mikkola()
    stars = self.new_system_of_Hulse_Taylor_pulsar()
    instance.particles.add_particles(stars)
    Hulse = stars[0]
    Taylor = stars[1]
    
    postion_at_start = Taylor.position.value_in(units.AU)[0]
    
    #orbital period
    #period_HTpulsar = 7.751939106 | units.hour
    #period_HTpulsar = 77.51939106 | units.hour
    # period for abseidal motion
#        period_HTpulsar = 85.0 | units.yr #4.2degrees/year
    period_HTpulsar = 1.0 | units.yr 
    instance.evolve_model(period_HTpulsar)
    instance.particles.copy_values_of_state_attributes_to(stars)

    postion_after_full_rotation = Taylor.position.value_in(units.AU)[0]
   
    self.assertAlmostEqual(postion_at_start, postion_after_full_rotation, 4)
    
    instance.evolve_model(1.5 * period_HTpulsar)
    
    instance.particles.copy_values_of_state_attributes_to(stars)
    
    postion_after_half_a_rotation = Taylor.position.value_in(units.AU)[0]
    self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
    
    instance.evolve_model(1.75 * period_HTpulsar)
     
    instance.particles.copy_values_of_state_attributes_to(stars)
    
    postion_after_half_a_rotation = Taylor.position.value_in(units.AU)[1]
    
    self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
    instance.cleanup_code()
    del instance
Ejemplo n.º 7
0
def HulseTaylor3():
    instance = Mikkola()
    stars = self.new_system_of_Hulse_Taylor_pulsar()
    instance.particles.add_particles(stars)
    Hulse = stars[0]
    Taylor = stars[1]
    
    postion_at_start = Taylor.position.value_in(units.AU)[0]
    
    #orbital period
    #period_HTpulsar = 7.751939106 | units.hour
    #period_HTpulsar = 77.51939106 | units.hour
    # period for abseidal motion
#        period_HTpulsar = 85.0 | units.yr #4.2degrees/year
    period_HTpulsar = 1.0 | units.yr 
    instance.evolve_model(period_HTpulsar)
    instance.particles.copy_values_of_state_attributes_to(stars)

    postion_after_full_rotation = Taylor.position.value_in(units.AU)[0]
   
    self.assertAlmostEqual(postion_at_start, postion_after_full_rotation, 4)
    
    instance.evolve_model(1.5 * period_HTpulsar)
    
    instance.particles.copy_values_of_state_attributes_to(stars)
    
    postion_after_half_a_rotation = Taylor.position.value_in(units.AU)[0]
    self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
    
    instance.evolve_model(1.75 * period_HTpulsar)
     
    instance.particles.copy_values_of_state_attributes_to(stars)
    
    postion_after_half_a_rotation = Taylor.position.value_in(units.AU)[1]
    
    self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
    instance.cleanup_code()
    del instance
Ejemplo n.º 8
0
 def test2(self):
     convert_nbody=nbody_system.nbody_to_si(1.0|units.MSun, 1.0|units.yr/(2.0*pi))
     instance = Mikkola(convert_nbody)
     instance.parameters.timestep = 1 | units.day
     stars = self.new_system_of_sun_and_mercury()
     instance.particles.add_particles(stars)
     Sun = stars[0]
     mercury = stars[1]
     
     postion_at_start = mercury.position.value_in(units.AU)[0]
     
     period_mercury = 87.9691 | units.day
     instance.evolve_model(period_mercury)
     channel = instance.particles.new_channel_to(stars)
     channel.copy()
     
     postion_after_full_rotation = mercury.position.value_in(units.AU)[0]
    
     self.assertAlmostEqual(postion_at_start, postion_after_full_rotation, 4)
     
     instance.evolve_model(1.5 * period_mercury)
     
     channel.copy()
     
     postion_after_half_a_rotation = mercury.position.value_in(units.AU)[0]
     self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
     
     instance.evolve_model(1.75 *period_mercury)
      
     channel.copy()
     
     postion_after_half_a_rotation = mercury.position.value_in(units.AU)[1]
     
     self.assertAlmostEqual(-postion_at_start, postion_after_half_a_rotation, 3)
     instance.cleanup_code()
     del instance