Example #1
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()
Example #2
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()
Example #3
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.stop()
Example #4
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()
Example #5
0
 def test0(self):
     instance = HermiteInterface()
     self.assertTrue("Hut" in instance.all_literature_references_string())
     instance.stop()
Example #6
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()
Example #7
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.stop()
     
     self.assertAlmostRelativeEquals(total_potential, numpy.sum(potentials * [10.0, 1.0]) / 2.0)
Example #8
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()
Example #9
0
def example_M67():

    #in this example we take M67 from mmc and evolve it in both
    #mmc and hermite. We compare coreradii

    mmc = mmcInterface(redirection="null")
    mmc.set_mmc_data_directory(mmc.data_directory)

    mmc.set_irun(10)
    mmc.set_iseed(10)
    mmc.set_nt(2000)
    mmc.set_nt0(2000)
    mmc.set_nt00(2000)
    mmc.set_istart(1)
    mmc.set_ncor(20)
    mmc.set_nmin(5)
    mmc.set_nz0(100)
    mmc.set_nzonc(1)
    mmc.set_nminzo(30)
    mmc.set_ntwo(10)
    mmc.set_imodel(4)
    mmc.set_iprint(3)
    mmc.set_ib3f(3)
    mmc.set_iexch(2)
    mmc.set_tcrit(600000.0)
    mmc.set_tcomp(18000.0)
    mmc.set_qe(1.e-0)
    mmc.set_alphal(1.3)
    mmc.set_alphah(2.3)
    mmc.set_brakem(0.5)
    mmc.set_body1(100.0)
    mmc.set_bodyn(0.1)
    mmc.set_fracb(0.00)        
    mmc.set_amin(0.0)              
    mmc.set_amax(10747.0)              
    mmc.set_qvir(0.5)              
    mmc.set_rbar(100.0)              
    mmc.set_zmbar(426000.0)             
    mmc.set_w0(5.0)          
    mmc.set_bmin(0.01)              
    mmc.set_bmin0(0.01)              
    mmc.set_bmax(2.0 * 0.01)              
    mmc.set_tau0(0.002)              
    mmc.set_gamma(0.02)             
    mmc.set_xtid(1.36)              
    mmc.set_rplum(60.0)             
    mmc.set_dttp(500.0)              
    mmc.set_dtte(500.0)              
    mmc.set_dtte0(100.0)       
    mmc.set_tcrevo(1000.0)            
    mmc.set_xtau(1.0)              
    mmc.set_ytau(2.0)              
    mmc.set_ybmin(2.0)             
    mmc.set_zini(0.0200)              
    mmc.set_ikroupa(0)           
    mmc.set_iflagns(2)           
    mmc.set_iflagbh(2)           
    mmc.set_nitesc(0)
    mmc.set_flagr([0.005,0.01,0.02,0.03, 0.04,0.05,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.99])

    nlagra =  mmc.get_nlagra().nlagrange
    print mmc.get_flagr(range(1,nlagra+1))
    """
    mmc.amuse_input()
    """
    mmc.nonstandard_init()
    n_total = mmc.get_number_of_particles().n_

    mass,radius,x,y,z,vx,vy,vz = plummer(n_total)
    r_, vr_, vt_ = mmc.phase_to_polar(x, y, z, vx, vy, vz)

    mmcstate = mmc.get_state(range(1,n_total+1))

    x, y, z, vx, vy, vz,ex,ey,ez = mmc.phase_to_cartesian(mmcstate.r, mmcstate.vr, mmcstate.vt)

    mass, r_, vr_, vt_ = sort_by_radii(mass, r_, vr_, vt_)

    mmc.commit_particles()

    n_total = mmc.get_number_of_particles().n_
    mmc.set_tcrit(0)

    control = HermiteInterface(number_of_workers=3)
    control.initialize_code()                                                                    
    control.commit_parameters()                
    res = control.new_particle(mass,                                                                 
                         1/n_total * np.ones(len(mass)),
                         x, y, z,
                         vx, vy, vz)

    control_parts = res['index_of_the_particle']
    control.commit_particles()                                                                   
    mmc.set_istart(1)    

    for time_end in np.arange(0.001,1,0.001):
        n_total = mmc.get_number_of_particles().n_
        x, y, z = mmc.get_positions_3d(range(1, n_total+1))                           
        M  = mmc.get_state(range(1, n_total+1))                                        
        tcross = crossing_time(M.r, M.vr, M.vt)
        x_core,y_core,z_core,rc = coreradius.coreradius(M.mass,x,y,z)                    
        tic = systime.clock()
        mmc.evolve_model(time_end)          
        toc = systime.clock()
        time =  mmc.get_time().time
        tcrit_control =  mmc.get_tcrit().termination_time_units_crossing_time
        timet =  mmc.get_timet().time
        tcr = mmc.get_crossing_time().tcr

        control.evolve_model(time_end) 

        H = control.get_state(control_parts)
        control_xcore,control_ycore,control_zcore,control_rc = \
            coreradius.coreradius(H.mass,H.x,H.y,H.z)                    
        
        print time, time_end, rc, control_rc, toc-tic

    mmc.stop()
    control.stop()
Example #10
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()
Example #11
0
 def test0(self):
     instance = HermiteInterface()
     self.assertTrue("Hut" in instance.all_literature_references_string())
     instance.stop()
Example #12
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.stop()

        self.assertAlmostRelativeEquals(
            total_potential,
            numpy.sum(potentials * [10.0, 1.0]) / 2.0)
Example #13
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()
Example #14
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()
Example #15
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()
Example #16
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.stop()
Example #17
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()
Example #18
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.stop()
Example #19
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.stop()
Example #20
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
Example #21
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