Exemplo n.º 1
0
 def test15(self):
     instance=MercuryInterface(redirection='none')
     instance.initialize_code()  
     i,err=instance.get_integrator()
     self.assertEqual(i,10)
     err=instance.set_integrator(2)
     self.assertEqual(err,0)
     i,err=instance.get_integrator()
     self.assertEqual(i,2)
     err=instance.set_integrator(22)
     self.assertEqual(err,-1)
     instance.stop()
Exemplo n.º 2
0
 def test9(self):
     instance=MercuryInterface()
     instance.initialize_code()
     pid,err=instance.new_orbiter(0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.)  
     n,err=instance.get_number_of_orbiters()  
     self.assertEqual(n,1)
     instance.stop()
Exemplo n.º 3
0
 def test15(self):
     instance=MercuryInterface(redirection='none')
     instance.initialize_code()  
     i,err=instance.get_integrator()
     self.assertEqual(i,10)
     err=instance.set_integrator(2)
     self.assertEqual(err,0)
     i,err=instance.get_integrator()
     self.assertEqual(i,2)
     err=instance.set_integrator(22)
     self.assertEqual(err,-1)
     instance.stop()
Exemplo n.º 4
0
 def test4(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     mass,err=instance.get_central_mass(DUMMYID)
     self.assertEqual(mass,1.0)
     radius,err=instance.get_central_radius(DUMMYID)
     self.assertEqual(radius,.005)
     j2,j4,j6,err=instance.get_central_oblateness(DUMMYID)
     self.assertEqual(j2,0.0)
     self.assertEqual(j4,0.0)
     self.assertEqual(j6,0.0)
     lx,ly,lz,err=instance.get_central_spin(DUMMYID)
     self.assertEqual(lx,0.0)
     self.assertEqual(ly,0.0)
     self.assertEqual(lz,0.0)
     instance.stop()
Exemplo n.º 5
0
 def test9(self):
     instance=MercuryInterface()
     instance.initialize_code()
     pid,err=instance.new_orbiter(0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.)  
     n,err=instance.get_number_of_orbiters()  
     self.assertEqual(n,1)
     instance.stop()
Exemplo n.º 6
0
 def test14(self):
     instance=MercuryInterface(redirection='none')
     instance.initialize_code()  
     instance.set_central_particle_state(DUMMYID, 1.,2.,3.,4.,5.,6.,7.,8.)
     mass,radius,j2,j4,j6,lx,ly,lz,err=instance.get_central_particle_state(DUMMYID)
     self.assertEqual(mass, 1.0)
     self.assertEqual(radius, 2.0)
     self.assertEqual(j2, 3.0)
     self.assertEqual(j4, 4.0)
     self.assertEqual(j6, 5.0)
     self.assertEqual(lx, 6.0)
     self.assertEqual(ly, 7.0)
     self.assertEqual(lz, 8.0)
     instance.stop()
Exemplo n.º 7
0
 def test4(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     mass,err=instance.get_central_mass(DUMMYID)
     self.assertEqual(mass,1.0)
     radius,err=instance.get_central_radius(DUMMYID)
     self.assertEqual(radius,.005)
     j2,j4,j6,err=instance.get_central_oblateness(DUMMYID)
     self.assertEqual(j2,0.0)
     self.assertEqual(j4,0.0)
     self.assertEqual(j6,0.0)
     lx,ly,lz,err=instance.get_central_spin(DUMMYID)
     self.assertEqual(lx,0.0)
     self.assertEqual(ly,0.0)
     self.assertEqual(lz,0.0)
     instance.stop()
Exemplo n.º 8
0
def planetplot():
    instance = MercuryInterface()
    instance.initialize_code()
    ids = dict()
    xpos = dict()
    ypos = dict()
    for x in solarsystem:
        pid, err = instance.new_orbiter(
                x[1], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11],
                x[12], x[2]
                )
        ids[x[0]] = pid
        xpos[x[0]] = []
        ypos[x[0]] = []
        xpos[x[0]].append(x[4])
        ypos[x[0]].append(x[5])

    instance.commit_particles()

    t_end = 365.25*20
    time = 0

    while time < t_end:
        time = time+8
        err = instance.evolve_model(time)
        for p in solarsystem:
            mass, dens, x, y, z, vx, vy, vz, sx, sy, sz, celimit, err =  \
                instance.get_orbiter_state(ids[p[0]])
            xpos[p[0]].append(x)
            ypos[p[0]].append(y)

    instance.stop()

    pyplot.plot(xpos['MERCURY'], ypos['MERCURY'])
    pyplot.plot(xpos['VENUS'], ypos['VENUS'])
    pyplot.plot(xpos['EARTHMOO'], ypos['EARTHMOO'])
    pyplot.plot(xpos['MARS'], ypos['MARS'])
    pyplot.plot(xpos['JUPITER'], ypos['JUPITER'])
    pyplot.xlim(-6.0, 6.0)
    pyplot.ylim(-6.0, 6.0)
    pyplot.savefig('solarsytem.png')
Exemplo n.º 9
0
 def test14(self):
     instance=MercuryInterface(redirection='none')
     instance.initialize_code()  
     instance.set_central_particle_state(DUMMYID, 1.,2.,3.,4.,5.,6.,7.,8.)
     mass,radius,j2,j4,j6,lx,ly,lz,err=instance.get_central_particle_state(DUMMYID)
     self.assertEqual(mass, 1.0)
     self.assertEqual(radius, 2.0)
     self.assertEqual(j2, 3.0)
     self.assertEqual(j4, 4.0)
     self.assertEqual(j6, 5.0)
     self.assertEqual(lx, 6.0)
     self.assertEqual(ly, 7.0)
     self.assertEqual(lz, 8.0)
     instance.stop()
Exemplo n.º 10
0
 def test10(self):
     instance=MercuryInterface()
     instance.initialize_code()
     pid,err=instance.new_orbiter(0.5,1.,2.,3.,4.,5.,6.,7.,1.,2.,3.,8.)  
     mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit,err=instance.get_orbiter_state(pid)
     self.assertEqual(mass,0.5)       
     self.assertEqual(dens,1.)       
     self.assertEqual(x,2.)       
     self.assertEqual(y,3.)       
     self.assertEqual(z,4.)
     self.assertEqual(vx,5.)
     self.assertEqual(vy,6.)
     self.assertEqual(vz,7.)
     self.assertEqual(sx,1.)
     self.assertEqual(sy,2.)
     self.assertEqual(sz,3.)
     self.assertEqual(celimit,8.)       
     instance.stop()
Exemplo n.º 11
0
 def test10(self):
     instance=MercuryInterface()
     instance.initialize_code()
     pid,err=instance.new_orbiter(0.5,1.,2.,3.,4.,5.,6.,7.,1.,2.,3.,8.)  
     mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit,err=instance.get_orbiter_state(pid)
     self.assertEqual(mass,0.5)       
     self.assertEqual(dens,1.)       
     self.assertEqual(x,2.)       
     self.assertEqual(y,3.)       
     self.assertEqual(z,4.)
     self.assertEqual(vx,5.)
     self.assertEqual(vy,6.)
     self.assertEqual(vz,7.)
     self.assertEqual(sx,1.)
     self.assertEqual(sy,2.)
     self.assertEqual(sz,3.)
     self.assertEqual(celimit,8.)       
     instance.stop()
Exemplo n.º 12
0
 def test6(self):
     instance=MercuryInterface()
     instance.initialize_code()
     instance.commit_particles()
     instance.cleanup_code()  
     instance.stop()
Exemplo n.º 13
0
 def test12(self):
     instance=MercuryInterface()
     instance.initialize_code()
     mass=3.04043264264672381E-06
     dens=5.52
     x=2.42093942183383037E-01
     y=-9.87467766698604366E-01
     z=-4.54276292555233496E-06
     vx=1.64294055023289365E-02
     vy=4.03200725816140870E-03
     vz=1.13609607260006795E-08
     sx=sy=sz=0.
     celimit=20.
     pid,err=instance.new_orbiter(mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit)  
     instance.commit_particles()
     etot1,err=instance.get_total_energy()
     err=instance.evolve_model(8*100000.)
     etot2,err=instance.get_total_energy()
     self.assertAlmostEqual(etot1,etot2,7)
     instance.stop()
Exemplo n.º 14
0
def planetplot():
    instance = MercuryInterface()
    instance.initialize_code()
    ids = dict()
    xpos = dict()
    ypos = dict()
    for x in solarsystem:
        pid, err = instance.new_orbiter(x[1], x[3], x[4], x[5], x[6], x[7],
                                        x[8], x[9], x[10], x[11], x[12], x[2])
        ids[x[0]] = pid
        xpos[x[0]] = []
        ypos[x[0]] = []
        xpos[x[0]].append(x[4])
        ypos[x[0]].append(x[5])

    instance.commit_particles()

    t_end = 365.25 * 20
    time = 0

    while time < t_end:
        time = time + 8
        err = instance.evolve_model(time)
        for p in solarsystem:
            mass, dens, x, y, z, vx, vy, vz, sx, sy, sz, celimit, err =  \
                instance.get_orbiter_state(ids[p[0]])
            xpos[p[0]].append(x)
            ypos[p[0]].append(y)

    instance.stop()

    pyplot.plot(xpos['MERCURY'], ypos['MERCURY'])
    pyplot.plot(xpos['VENUS'], ypos['VENUS'])
    pyplot.plot(xpos['EARTHMOO'], ypos['EARTHMOO'])
    pyplot.plot(xpos['MARS'], ypos['MARS'])
    pyplot.plot(xpos['JUPITER'], ypos['JUPITER'])
    pyplot.xlim(-6.0, 6.0)
    pyplot.ylim(-6.0, 6.0)
    pyplot.savefig('solarsytem.png')
Exemplo n.º 15
0
 def test12(self):
     instance=MercuryInterface()
     instance.initialize_code()
     mass=3.04043264264672381E-06
     dens=5.52
     x=2.42093942183383037E-01
     y=-9.87467766698604366E-01
     z=-4.54276292555233496E-06
     vx=1.64294055023289365E-02
     vy=4.03200725816140870E-03
     vz=1.13609607260006795E-08
     sx=sy=sz=0.
     celimit=20.
     pid,err=instance.new_orbiter(mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit)  
     instance.commit_particles()
     etot1,err=instance.get_total_energy()
     err=instance.evolve_model(8*100000.)
     etot2,err=instance.get_total_energy()
     self.assertAlmostEqual(etot1,etot2,7)
     instance.stop()
Exemplo n.º 16
0
 def test8(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     n,err=instance.get_number_of_orbiters()  
     self.assertEqual(n,0)
     instance.stop()
Exemplo n.º 17
0
 def test6(self):
     instance=MercuryInterface()
     instance.initialize_code()
     instance.commit_particles()
     instance.cleanup_code()  
     instance.stop()
Exemplo n.º 18
0
 def test1(self):
     instance=MercuryInterface()  
     instance.stop()
Exemplo n.º 19
0
 def test16(self):
     instance=MercuryInterface()
     instance.initialize_code()
     err=instance.set_integrator(2)
     mass=3.04043264264672381E-06
     dens=5.52
     x=2.42093942183383037E-01
     y=-9.87467766698604366E-01
     z=-4.54276292555233496E-06
     vx=1.64294055023289365E-02
     vy=4.03200725816140870E-03
     vz=1.13609607260006795E-08
     sx=sy=sz=0.
     celimit=20.
     pid,err=instance.new_orbiter(mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit)  
     instance.commit_particles()
     instance.enable_stopping_condition(3)
     instance.set_stopping_condition_timeout_parameter(0.01)
     etot1,err=instance.get_total_energy()
     err=instance.evolve_model(8*1e100)
     self.assertTrue(instance.is_stopping_condition_set(3)['result']==1)
     etot2,err=instance.get_total_energy()
     self.assertAlmostEqual(etot1,etot2,7)
     instance.stop()
Exemplo n.º 20
0
    def test5(self):
        instance=MercuryInterface()
        instance.initialize_code()  
        instance.set_central_mass(DUMMYID, 2.0)
        instance.set_central_radius(DUMMYID,0.0625)
        instance.set_central_oblateness(DUMMYID,0.001,0.002,0.003)
        instance.set_central_spin(DUMMYID,-0.1,-0.2,-0.3)


        mass,err=instance.get_central_mass(DUMMYID)
        self.assertEqual(mass,2.0)
        radius,err=instance.get_central_radius(DUMMYID)
        self.assertEqual(radius,.0625)
        j2,j4,j6,err=instance.get_central_oblateness(DUMMYID)
        self.assertEqual(j2,0.001)
        self.assertEqual(j4,0.002)
        self.assertEqual(j6,0.003)
        lx,ly,lz,err=instance.get_central_spin(DUMMYID)
        self.assertEqual(lx,-0.1)
        self.assertEqual(ly,-0.2)
        self.assertEqual(lz,-0.3)
        instance.stop()
Exemplo n.º 21
0
 def test1(self):
     instance=MercuryInterface()  
     instance.stop()
Exemplo n.º 22
0
 def test3(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     instance.cleanup_code()  
     instance.stop()
Exemplo n.º 23
0
 def test16(self):
     instance=MercuryInterface()
     instance.initialize_code()
     err=instance.set_integrator(2)
     mass=3.04043264264672381E-06
     dens=5.52
     x=2.42093942183383037E-01
     y=-9.87467766698604366E-01
     z=-4.54276292555233496E-06
     vx=1.64294055023289365E-02
     vy=4.03200725816140870E-03
     vz=1.13609607260006795E-08
     sx=sy=sz=0.
     celimit=20.
     pid,err=instance.new_orbiter(mass,dens,x,y,z,vx,vy,vz,sx,sy,sz,celimit)  
     instance.commit_particles()
     instance.enable_stopping_condition(3)
     instance.set_stopping_condition_timeout_parameter(0.01)
     etot1,err=instance.get_total_energy()
     err=instance.evolve_model(8*1e100)
     self.assertTrue(instance.is_stopping_condition_set(3)['result']==1)
     etot2,err=instance.get_total_energy()
     self.assertAlmostEqual(etot1,etot2,7)
     instance.stop()
Exemplo n.º 24
0
 def test7(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     time,err=instance.get_time()  
     self.assertEqual(time,0.0)
     instance.stop()
Exemplo n.º 25
0
 def test3(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     instance.cleanup_code()  
     instance.stop()
Exemplo n.º 26
0
 def test8(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     n,err=instance.get_number_of_orbiters()  
     self.assertEqual(n,0)
     instance.stop()
Exemplo n.º 27
0
    def test5(self):
        instance=MercuryInterface()
        instance.initialize_code()  
        instance.set_central_mass(DUMMYID, 2.0)
        instance.set_central_radius(DUMMYID,0.0625)
        instance.set_central_oblateness(DUMMYID,0.001,0.002,0.003)
        instance.set_central_spin(DUMMYID,-0.1,-0.2,-0.3)


        mass,err=instance.get_central_mass(DUMMYID)
        self.assertEqual(mass,2.0)
        radius,err=instance.get_central_radius(DUMMYID)
        self.assertEqual(radius,.0625)
        j2,j4,j6,err=instance.get_central_oblateness(DUMMYID)
        self.assertEqual(j2,0.001)
        self.assertEqual(j4,0.002)
        self.assertEqual(j6,0.003)
        lx,ly,lz,err=instance.get_central_spin(DUMMYID)
        self.assertEqual(lx,-0.1)
        self.assertEqual(ly,-0.2)
        self.assertEqual(lz,-0.3)
        instance.stop()
Exemplo n.º 28
0
def energyplot():
    instance=MercuryInterface()
    instance.initialize_code()
    for x in solarsystem:
        pid,err=instance.new_orbiter(x[1],x[3],  
         x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[2])
    instance.commit_particles()

    t_end=365.25*1000000
    time=0

    e0,err=instance.get_total_energy()
    energy=[0.]
    times=[0.]
    while time<t_end:
        time=time+8*10000.
        err=instance.evolve_model(time)
        if(err!=0):
            print "err:", err
        e,err=instance.get_total_energy()
        t,err=instance.get_time()
        energy.append((e0-e)/e0)
        times.append(t/365.25)
    
    instance.stop()

    pyplot.plot(times,energy)
    pyplot.xlim(0,t_end/365.25)
    pyplot.ylim(-1.e-6,1.e-6)
    pyplot.savefig('solarsytem_energy.png')
Exemplo n.º 29
0
 def test7(self):
     instance=MercuryInterface()
     instance.initialize_code()  
     time,err=instance.get_time()  
     self.assertEqual(time,0.0)
     instance.stop()
Exemplo n.º 30
0
        return

    grids = model.get_solution_at_time(1.0 | time)

    rho = grids[0].rho[..., ..., 0].value_in(density)
    figure = pyplot.figure(figsize=(20, 20))
    plot = figure.add_subplot(1, 1, 1)
    plot.imshow(rho, origin='lower')
    figure.savefig('kelvin_helmholtz_{0}_{1}.png'.format(
        name_of_the_code, number_of_grid_points))
    pyplot.show()


if __name__ == "__main__":

    instance = MercuryInterface()
    instance.initialize_code()
    mass = 3.04043264264672381E-06
    dens = 5.52
    x = 2.42093942183383037E-01
    y = -9.87467766698604366E-01
    z = -4.54276292555233496E-06
    vx = 1.64294055023289365E-02
    vy = 4.03200725816140870E-03
    vz = 1.13609607260006795E-08
    sx = sy = sz = 0.
    celimit = 20.
    pid, err = instance.new_orbiter(
        mass, dens, x, y, z, vx, vy, vz, sx, sy, sz, celimit)
    instance.commit_particles()
Exemplo n.º 31
0
        return

    grids = model.get_solution_at_time(1.0 | time)

    rho = grids[0].rho[..., ..., 0].value_in(density)
    figure = pyplot.figure(figsize=(20, 20))
    plot = figure.add_subplot(1, 1, 1)
    plot.imshow(rho, origin='lower')
    figure.savefig('kelvin_helmholtz_{0}_{1}.png'.format(
        name_of_the_code, number_of_grid_points))
    pyplot.show()


if __name__ == "__main__":

    instance = MercuryInterface()
    instance.initialize_code()
    mass = 3.04043264264672381E-06
    dens = 5.52
    x = 2.42093942183383037E-01
    y = -9.87467766698604366E-01
    z = -4.54276292555233496E-06
    vx = 1.64294055023289365E-02
    vy = 4.03200725816140870E-03
    vz = 1.13609607260006795E-08
    sx = sy = sz = 0.
    celimit = 20.
    pid, err = instance.new_orbiter(
        mass, dens, x, y, z, vx, vy, vz, sx, sy, sz, celimit)
    instance.commit_particles()
Exemplo n.º 32
0
def energyplot():
    instance = MercuryInterface()
    instance.initialize_code()
    for x in solarsystem:
        pid, err = instance.new_orbiter(x[1], x[3], x[4], x[5], x[6], x[7],
                                        x[8], x[9], x[10], x[11], x[12], x[2])
    instance.commit_particles()

    t_end = 365.25 * 1000000
    time = 0

    e0, err = instance.get_total_energy()
    energy = [0.]
    times = [0.]
    while time < t_end:
        time = time + 8 * 10000.
        err = instance.evolve_model(time)
        if (err != 0):
            print "err:", err
        e, err = instance.get_total_energy()
        t, err = instance.get_time()
        energy.append((e0 - e) / e0)
        times.append(t / 365.25)

    instance.stop()

    pyplot.plot(times, energy)
    pyplot.xlim(0, t_end / 365.25)
    pyplot.ylim(-1.e-6, 1.e-6)
    pyplot.savefig('solarsytem_energy.png')