test_string += '{:+10.10e}\t{:+10.10e}\t{:+10.10e}\t{:+10.10e}\n'.format( np.mean(my_beam.dE), np.std(my_beam.dE), np.mean(my_beam.dt), np.std(my_beam.dt)) # ACCELERATION MAP------------------------------------------------------------- # import argparse # parser = argparse.ArgumentParser() # parser.add_argument('-g', default = False, action='store_true') # parser.add_argument('-d', default = False, action='store_true') # args = parser.parse_args() # print(args) if (args['gpu'] == 1): import blond.utils.bmath as bm bm.use_gpu() total_induced_voltage.use_gpu() ring_RF_section.use_gpu() slice_beam.use_gpu() #map_ = [total_induced_voltage] + [ring_RF_section] + [slice_beam] #+ [bunchmonitor] + [plots] map_ = [ring_RF_section] + [slice_beam] # TRACKING + PLOTS------------------------------------------------------------- for i in range(1, n_turns + 1): # print(i) for m in map_: m.track() # # Plots # if (i% n_turns_between_two_plots) == 0:
# Accelerator map map_ = [long_tracker_1] + [long_tracker_2] + [slice_beam] #+ [bunchmonitor] + \ #[plots] print("Map set") print("") # import argparse # parser = argparse.ArgumentParser() # parser.add_argument('-g', default = False, action='store_true') # parser.add_argument('-d', default = False, action='store_true') # args = parser.parse_args() # print(args) if (args['gpu'] == 1): import blond.utils.bmath as bm bm.use_gpu() long_tracker_1.use_gpu() long_tracker_2.use_gpu() slice_beam.use_gpu() long_tracker_tot.use_gpu() # Tracking -------------------------------------------------------------------- for i in np.arange(1,N_t+1): #print(i) long_tracker_tot.track() # Track for m in map_: m.track()
np.mean(beam.dE), np.std(beam.dE), np.mean(beam.dt), np.std(beam.dt)) # Accelerator map map_ = [long_tracker] + [slice_beam] #+ [bunchmonitor] + [plots] print("Map set") print("") # import argparse # parser = argparse.ArgumentParser() # parser.add_argument('-g', default = False, action='store_true') # parser.add_argument('-d', default = False, action='store_true') # args = parser.parse_args() # print(args) if (args['gpu'] == 1): import blond.utils.bmath as bm bm.use_gpu() long_tracker.use_gpu() slice_beam.use_gpu() # Tracking --------------------------------------------------------------------- for i in range(1, N_t + 1): # Plot has to be done before tracking (at least for cases with separatrix) # if (i % dt_plt) == 0: # print("Outputting at time step %d..." %i) # print(" Beam momentum %.6e eV" %beam.momentum) # print(" Beam gamma %3.3f" %beam.gamma) # print(" Beam beta %3.3f" %beam.beta) # print(" Beam energy %.6e eV" %beam.energy) # print(" Four-times r.m.s. bunch length %.4e [s]" %(4.*beam.sigma_dt)) # print(" Gaussian bunch length %.4e [s]" %slice_beam.bunchLength)
else: filename = 'monitorfiles/sps-t{}-p{}-b{}-sl{}-approx{}-prec{}-r{}-m{}-se{}-w{}'.format( n_iterations, n_particles, n_bunches, n_slices, approx, args['precision'], n_turns_reduce, args['monitor'], seed, worker.workers) slicesMonitor = MultiBunchMonitor(filename=filename, n_turns=np.ceil(n_iterations / args['monitor']), profile=profile, rf=rf_station, Nbunches=n_bunches) if args['gpu'] > 0: bm.use_gpu(gpu_id=worker.gpu_id) profile.use_gpu() tracker.use_gpu() phaseLoop.use_gpu() bm.enable_gpucache() print( f'Glob rank: [{worker.rank}], Node rank: [{worker.noderank}], Intra rank: [{worker.intrarank}], GPU rank: [{worker.gpucommrank}], hasGPU: {worker.hasGPU}' ) worker.initDLB(args['loadbalance'], n_iterations) delta = 0 worker.sync() timing.reset() start_t = time.time() # for turn in range(ring.n_turns):
map_ = [tot_vol] + [ring_RF_section] + [slice_beam ] #+ [bunchmonitor] + [plots] map_freq = [tot_vol_freq] + [ring_RF_section_freq] + [slice_beam_freq] \ #+ [bunchmonitor_freq] + [plots_freq] map_res = [tot_vol_res] + [ring_RF_section_res] + [slice_beam_res] \ #+ [bunchmonitor_res] + [plots_res] if (args['gpu'] == 1): import blond.utils.bmath as bm bm.use_gpu() tot_vol.use_gpu() tot_vol_freq.use_gpu() tot_vol_res.use_gpu() ring_RF_section.use_gpu() ring_RF_section_freq.use_gpu() ring_RF_section_res.use_gpu() slice_beam.use_gpu() slice_beam_freq.use_gpu() slice_beam_res.use_gpu() # long_tracker_1.use_gpu() # long_tracker_2.use_gpu() # slice_beam.use_gpu() # long_tracker_tot.use_gpu() # TRACKING + PLOTS------------------------------------------------------------- for i in np.arange(1, n_turns + 1): #print(i)