def test8(self): instance = HermiteInterface() instance.initialize_code() instance.set_eps2(0) instance.commit_parameters() id1, errorcode = instance.new_particle(mass=10.0, radius=1.0, x=0.0, y=0.0, z=0.0, vx=0.0, vy=0.0, vz=0.0) id2, errorcode = instance.new_particle(mass=1.0, radius=1.0, x=2.0, y=0.0, z=0.0, vx=10.0, vy=0.0, vz=0.0) instance.commit_particles() potential, errorcode = instance.get_potential(id1) self.assertEqual(errorcode, 0) self.assertAlmostRelativeEquals(potential, -1.0 / numpy.sqrt(2.0**2), 8) total_potential, errorcode = instance.get_potential_energy() potentials, errorcode = instance.get_potential([id1, id2]) instance.cleanup_code() instance.stop() self.assertAlmostRelativeEquals( total_potential, numpy.sum(potentials * [10.0, 1.0]) / 2.0)
def test9(self): print("Test HermiteInterface evolve_model") instance = HermiteInterface() self.assertEqual(0, instance.initialize_code()) self.assertEqual(0, instance.set_dt_param(0.001)) self.assertEqual(0, instance.set_end_time_accuracy_factor(0.0)) self.assertEqual(0, instance.commit_parameters()) # Set up an equal-mass binary on a circular orbit: self.assertEqual([0, 0], list(instance.new_particle(0.5, 0.5, 0, 0, 0, 0.5, 0, 0.01).values())) self.assertEqual([1, 0], list(instance.new_particle(0.5, -0.5, 0, 0, 0,-0.5, 0, 0.01).values())) self.assertEqual(0, instance.commit_particles()) self.assertEqual(0, instance.evolve_model(math.pi)) for result, expected in zip(list(instance.get_position(0).values()), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEqual(result, expected, 3) for result, expected in zip(list(instance.get_position(1).values()), [0.5, 0.0, 0.0, 0]): self.assertAlmostEqual(result, expected, 3) self.assertEqual(0, instance.evolve_model(2 * math.pi)) for result, expected in zip(list(instance.get_position(0).values()), [0.5, 0.0, 0.0, 0]): self.assertAlmostEqual(result, expected, 3) for result, expected in zip(list(instance.get_position(1).values()), [-0.5, 0.0, 0.0, 0]): self.assertAlmostEqual(result, expected, 3) self.assertEqual(0, instance.cleanup_code()) instance.cleanup_code() instance.stop()