Example #1
0
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()
    
Example #3
0
    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)
Example #4
0
    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)