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