Esempio n. 1
0
 def test9(self):
     print "Test HermiteInterface evolve_model"
     instance = HermiteInterface()
     self.assertEquals(0, instance.initialize_code())
     self.assertEquals(0, instance.set_dt_param(0.001))
     self.assertEquals(0, instance.set_end_time_accuracy_factor(0.0))
     self.assertEquals(0, instance.commit_parameters())
     
     # Set up an equal-mass binary on a circular orbit:
     self.assertEquals([0, 0], instance.new_particle(0.5,  0.5, 0, 0,  0, 0.5, 0, 0.01).values())
     self.assertEquals([1, 0], instance.new_particle(0.5,  -0.5, 0, 0,  0,-0.5, 0, 0.01).values())
     self.assertEquals(0, instance.commit_particles())
     
     self.assertEquals(0, instance.evolve_model(math.pi))
     for result, expected in zip(instance.get_position(0).values(), [-0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     for result, expected in zip(instance.get_position(1).values(), [0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     
     self.assertEquals(0, instance.evolve_model(2 * math.pi))
     for result, expected in zip(instance.get_position(0).values(), [0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     for result, expected in zip(instance.get_position(1).values(), [-0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     
     self.assertEquals(0, instance.cleanup_code())
     instance.cleanup_code()
     instance.stop()
Esempio n. 2
0
def calculate_speed(range_of_number_of_particles):
    result = []
    for n in range_of_number_of_particles:  #range(8000,20000, 1000):
        hermite1 = HermiteInterface()
        hermite1.initialize_code()

        hermite2 = HermiteInterface()
        hermite2.initialize_code()

        ids = [i for i in range(1, n)]
        values = [1.0 * i for i in range(1, n)]

        t0 = time.time()
        hermite1.new_particle(values, values, values, values, values, values,
                              values, values)
        t1 = time.time()
        d1 = t1 - t0
        #print d1, t1, t0

        t0 = time.time()
        for i in range(n - 1):
            hermite2.new_particle(values[i], values[i], values[i], values[i],
                                  values[i], values[i], values[i], values[i])
        t1 = time.time()
        d2 = t1 - t0
        result.append((n, d1, d2, d2 / d1))

        hermite1.cleanup_code()
        hermite2.cleanup_code()

        del hermite1
        del hermite2
    return result
Esempio n. 3
0
 def test4(self):
     hermite = HermiteInterface()
     self.assertEquals([0, 0], hermite.get_is_time_reversed_allowed().values())
     self.assertEquals(0, hermite.set_is_time_reversed_allowed(1))
     self.assertEquals([1, 0], hermite.get_is_time_reversed_allowed().values())
     hermite.cleanup_code()
     hermite.stop()
Esempio n. 4
0
    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.assertEquals(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)
Esempio n. 5
0
 def test3(self):
     hermite = HermiteInterface()
     self.assertEquals(0, hermite.set_eps2(0.101))
     self.assertEquals([0.101, 0], hermite.get_eps2().values())
     self.assertEquals(0, hermite.set_eps2(0.2))
     self.assertEquals([0.2, 0], hermite.get_eps2().values())
     hermite.cleanup_code()
     hermite.stop()
Esempio n. 6
0
 def test6(self):
     hermite = HermiteInterface()
     hermite.initialize_code()
     
     hermite.new_particle([10,10],[-1,1],[0,0], [0,0], [0,0], [0,0], [0,0], [1,1])
     retrieved_state = hermite.get_state(0)
     
     retr = hermite.get_potential_at_point(0.01, 0,0,0)
     self.assertEqual(retr['phi'], -20.0)
     hermite.cleanup_code()
     hermite.stop()
Esempio n. 7
0
 def test6(self):
     hermite = HermiteInterface()
     hermite.initialize_code()
     
     hermite.new_particle([10,10],[-1,1],[0,0], [0,0], [0,0], [0,0], [0,0], [1,1])
     retrieved_state = hermite.get_state(0)
     
     retr = hermite.get_potential_at_point(0.01, 0,0,0)
     self.assertEqual(retr['phi'], -20.0)
     hermite.cleanup_code()
     hermite.stop()
Esempio n. 8
0
 def test5(self):
     hermite = HermiteInterface()
     hermite.initialize_code()
     
     hermite.new_particle([10,20],[0,0],[0,0], [0,0], [0,0], [0,0], [0,0],[1,1])
     retrieved_state = hermite.get_state(0)
     
     self.assertEquals(10.0,  retrieved_state['mass'])
     self.assertEquals(1, retrieved_state['radius'])
 
     retrieved_state = hermite.get_state([0,1])
     self.assertEquals(20.0,  retrieved_state['mass'][1])
     self.assertEquals(hermite.get_number_of_particles()['number_of_particles'], 2)
     hermite.cleanup_code() 
     hermite.stop()
Esempio n. 9
0
 def test5(self):
     hermite = HermiteInterface()
     hermite.initialize_code()
     
     hermite.new_particle([10,20],[0,0],[0,0], [0,0], [0,0], [0,0], [0,0],[1,1])
     retrieved_state = hermite.get_state(0)
     
     self.assertEquals(10.0,  retrieved_state['mass'])
     self.assertEquals(1, retrieved_state['radius'])
 
     retrieved_state = hermite.get_state([0,1])
     self.assertEquals(20.0,  retrieved_state['mass'][1])
     self.assertEquals(hermite.get_number_of_particles()['number_of_particles'], 2)
     hermite.cleanup_code() 
     hermite.stop()
Esempio n. 10
0
 def test9(self):
     print "Test HermiteInterface evolve_model"
     instance = HermiteInterface()
     self.assertEquals(0, instance.initialize_code())
     self.assertEquals(0, instance.set_dt_param(0.001))
     self.assertEquals(0, instance.set_end_time_accuracy_factor(0.0))
     self.assertEquals(0, instance.commit_parameters())
     
     # Set up an equal-mass binary on a circular orbit:
     self.assertEquals([0, 0], instance.new_particle(0.5,  0.5, 0, 0,  0, 0.5, 0, 0.01).values())
     self.assertEquals([1, 0], instance.new_particle(0.5,  -0.5, 0, 0,  0,-0.5, 0, 0.01).values())
     self.assertEquals(0, instance.commit_particles())
     
     self.assertEquals(0, instance.evolve_model(math.pi))
     for result, expected in zip(instance.get_position(0).values(), [-0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     for result, expected in zip(instance.get_position(1).values(), [0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     
     self.assertEquals(0, instance.evolve_model(2 * math.pi))
     for result, expected in zip(instance.get_position(0).values(), [0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     for result, expected in zip(instance.get_position(1).values(), [-0.5, 0.0, 0.0, 0]):
         self.assertAlmostEquals(result, expected, 3)
     
     self.assertEquals(0, instance.cleanup_code())
     instance.stop()
Esempio n. 11
0
def calculate_speed(range_of_number_of_particles):
    result = []
    for n in range_of_number_of_particles: #range(8000,20000, 1000):
        hermite1 = HermiteInterface()
        hermite1.initialize_code()
        
        hermite2 = HermiteInterface()
        hermite2.initialize_code()
        
        ids = [i for i in range(1,n)]
        values = [1.0 * i for i in range(1,n)]
    
        t0 = time.time()        
        hermite1.new_particle(values
                              , values
                              , values
                              , values
                              , values
                              , values
                              , values
                              , values)
        t1 = time.time()
        d1 = t1 - t0
        #print d1, t1, t0
        
        t0 = time.time() 
        for i in range(n-1):
            hermite2.new_particle(values[i]
                                  , values[i]
                                  , values[i]
                                  , values[i]
                                  , values[i]
                                  , values[i]
                                  , values[i]
                                  , values[i])
        t1 = time.time()
        d2 = t1 - t0
        result.append((n, d1, d2, d2/d1))
                    
        hermite1.cleanup_code()
        hermite2.cleanup_code()
        
        del hermite1
        del hermite2
    return result
Esempio n. 12
0
    def test2(self):
        instance = HermiteInterface()
        instance.initialize_code()

        for i in [0, 1, 2]:
            temp_particle = instance.new_particle(mass = i, radius = 1.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0)
            self.assertEquals(i, temp_particle['index_of_the_particle'])
            
        instance.delete_particle(1)
      
        self.assertEquals(2, instance.get_number_of_particles()['number_of_particles'])
        
        self.assertEquals(0, instance.get_index_of_first_particle()['index_of_the_particle'])
        
        self.assertEquals(2, instance.get_index_of_next_particle(0)['index_of_the_next_particle'])
        self.assertEquals(0, instance.get_index_of_next_particle(0)['__result'])
        self.assertEquals(-1, instance.get_index_of_next_particle(1)['__result'])
        self.assertEquals(1, instance.get_index_of_next_particle(2)['__result'])
        instance.cleanup_code()
        instance.stop()
Esempio n. 13
0
 def test1(self):
     instance = HermiteInterface()
     instance.initialize_code()
 
     res1 = instance.new_particle(mass = 11.0, radius = 2.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0)
     res2 = instance.new_particle(mass = 21.0, radius = 5.0, x = 10.0, y = 0.0, z = 0.0, vx = 10.0, vy = 0.0, vz = 0.0)
     
     self.assertEquals(0, res1['index_of_the_particle'])
     self.assertEquals(1, res2['index_of_the_particle'])
 
     retrieved_state1 = instance.get_state(0)
     retrieved_state2 = instance.get_state(1)
 
     self.assertEquals(11.0,  retrieved_state1['mass'])
     self.assertEquals(21.0,  retrieved_state2['mass'])
     self.assertEquals(0.0,  retrieved_state1['x'])
     self.assertEquals(10.0,  retrieved_state2['x'])
     self.assertEquals(2.0,  retrieved_state1['radius'])
     self.assertEquals(5.0,  retrieved_state2['radius'])
 
     instance.cleanup_code()
     instance.stop()
Esempio n. 14
0
 def test1(self):
     instance = HermiteInterface()
     instance.initialize_code()
 
     res1 = instance.new_particle(mass = 11.0, radius = 2.0, x = 0.0, y = 0.0, z = 0.0, vx = 0.0, vy = 0.0, vz = 0.0)
     res2 = instance.new_particle(mass = 21.0, radius = 5.0, x = 10.0, y = 0.0, z = 0.0, vx = 10.0, vy = 0.0, vz = 0.0)
     
     self.assertEquals(0, res1['index_of_the_particle'])
     self.assertEquals(1, res2['index_of_the_particle'])
 
     retrieved_state1 = instance.get_state(0)
     retrieved_state2 = instance.get_state(1)
 
     self.assertEquals(11.0,  retrieved_state1['mass'])
     self.assertEquals(21.0,  retrieved_state2['mass'])
     self.assertEquals(0.0,  retrieved_state1['x'])
     self.assertEquals(10.0,  retrieved_state2['x'])
     self.assertEquals(2.0,  retrieved_state1['radius'])
     self.assertEquals(5.0,  retrieved_state2['radius'])
 
     instance.cleanup_code()
     instance.stop()
Esempio n. 15
0
 def test0(self):
     instance = HermiteInterface()
     self.assertTrue("Hut" in instance.all_literature_references_string())
     instance.cleanup_code()
     instance.stop()