# setup transverse losses (to "protect" the ecloud) import PyHEADTAIL.aperture.aperture as aperture apt_xy = aperture.EllipticalApertureXY(x_aper=ecloud.impact_man.chamb.x_aper, y_aper=ecloud.impact_man.chamb.y_aper) machine.one_turn_map.append(apt_xy) # generate a bunch bunch = machine.generate_6D_Gaussian_bunch_matched(n_macroparticles=300000, intensity=intensity, epsn_x=epsn_x, epsn_y=epsn_y, sigma_z=1.35e-9 / 4 * c) # apply initial displacement bunch.x += x_kick bunch.y += y_kick # define a bunch monitor from PyHEADTAIL.monitors.monitors import BunchMonitor bunch_monitor = BunchMonitor('bunch_evolution.h5', N_turns, {'Comment': 'PyHDTL simulation'}, write_buffer_every=8) # simulate import time for i_turn in xrange(N_turns): print '%s Turn %d' % (time.strftime("%d/%m/%Y %H:%M:%S", time.localtime()), i_turn) machine.track(bunch, verbose=False) bunch_monitor.dump(bunch)
write_buffer_every = 8) if not SimSt.first_run: # If not first part, load saved bunch and ecloud bunch = SLS.beam_from_h5status('bunch_status_part%02d.h5'%(SimSt.present_simulation_part-1)) SLS.reinit_ecloud_from_h5status('ecloud_init_status.h5', ecloud) else: #save ecloud particles status SLS.dump_ecloud_status(ecloud, 'ecloud_init_status.h5') # simulate import time for i_turn in xrange(N_turns_per_run): print '%s Turn %d'%(time.strftime("%d/%m/%Y %H:%M:%S", time.localtime()), i_turn) machine.track(bunch, verbose = False) bunch_monitor.dump(bunch) # save data for multijob operation and launch new job SLS.dump_beam_status(bunch, 'bunch_status_part%02d.h5'%(SimSt.present_simulation_part)) if not SimSt.first_run: os.system('rm bunch_status_part%02d.h5'%(SimSt.present_simulation_part-1)) SimSt.after_simulation()