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()
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()
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()
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()
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()
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()
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()
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')
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()
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()
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()
def test6(self): instance=MercuryInterface() instance.initialize_code() instance.commit_particles() instance.cleanup_code() instance.stop()
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()
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')
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()
def test8(self): instance=MercuryInterface() instance.initialize_code() n,err=instance.get_number_of_orbiters() self.assertEqual(n,0) instance.stop()
def test6(self): instance=MercuryInterface() instance.initialize_code() instance.commit_particles() instance.cleanup_code() instance.stop()
def test1(self): instance=MercuryInterface() instance.stop()
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()
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()
def test1(self): instance=MercuryInterface() instance.stop()
def test3(self): instance=MercuryInterface() instance.initialize_code() instance.cleanup_code() instance.stop()
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()
def test7(self): instance=MercuryInterface() instance.initialize_code() time,err=instance.get_time() self.assertEqual(time,0.0) instance.stop()
def test3(self): instance=MercuryInterface() instance.initialize_code() instance.cleanup_code() instance.stop()
def test8(self): instance=MercuryInterface() instance.initialize_code() n,err=instance.get_number_of_orbiters() self.assertEqual(n,0) instance.stop()
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()
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')
def test7(self): instance=MercuryInterface() instance.initialize_code() time,err=instance.get_time() self.assertEqual(time,0.0) instance.stop()
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()
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()
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')