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)