Exemple #1
0
 def TimeEvolve(self,nsteps,comments,write=True):
     self.cleanup = []
     self.nsteps = nsteps
     print("new eom")
     t=0
     
     ##Get init_state
     if self.use_state == None:
         self.cleanup = []
         self.state = np.copy(farts.make_initial_conditions2(self.start_particles,
                                                             self.M,
                                                             self.a(0)))
         self.init_state = np.copy(self.state)
         self.Nparticles = len(self.state)
     else:
         self.state = np.copy(self.init_state)
     print("Got initial conditions for {} particles".format(self.start_particles))
     
     primary = self.get_header(nsteps,comments)
     frame0 = self.get_hdu()
     
     filenum = farts.get_filenum(self.save_dir,self.start_particles)
     self.dirname = "{}/nbody_{}_{}".format(self.save_dir,self.start_particles,filenum)
     os.mkdir(self.dirname)
     os.mkdir("{}/data".format(self.dirname))
     hdulist = fits.HDUList([primary,frame0])
     total_time = 0
     savenums = nsteps/1000
         
     for step in xrange(1, nsteps):
         stepstart = time.time()
         self.state = self.UpdateStateVectorRK4(t)
         framen = self.get_hdu()
         hdulist.append(framen)
         t += self.dt
         end = time.time()
         steptime = end-stepstart
         total_time += steptime
         avg = total_time/step
         perc = 100*((step+1)/nsteps)
         sys.stdout.write('\rFrame {} of {} completed ({}%).  Step: {}s, Total: {}s, Estimated time remaining: {}s. Nparticles: {}'.format(step+1,
             	                	                	           nsteps,
             	                	                	           '%0.1f'%perc,
             	                	                	           '%0.4f'%steptime,
             	                	                	           '%0.4f'%total_time,
             	                	                	           '%i'%(((avg * nsteps)+1)-total_time),
             	                	                	           '%i'%self.Nparticles))
         sys.stdout.flush()
         if step%1000 == 0:
         
             if write == True:
             	print("\nWriting to disk...")
             	fname = "{}/data/{}.fits".format(self.dirname,step)
             	hdulist.writeto(fname,clobber=True)
             	print("Frames {} - {} written at {}".format(step-1000,step,fname))
             	hdulist = fits.HDUList([primary])
             	self.fname_list.append(fname)
         
     if len(hdulist)!=1:
         print("\nWriting to disk...")
         fname = "{}/data/{}.fits".format(self.dirname,step)
         hdulist.writeto(fname,clobber=True)
         print("Frames {} written at {}".format(step+1,fname))
         self.fname_list.append(fname)
     print(self.state)