示例#1
0
general_params = GeneralParameters(n_turns,
                                   C,
                                   momentum_compaction,
                                   sync_momentum,
                                   particle_type,
                                   number_of_sections=1)

RF_sct_par = RFSectionParameters(general_params, n_rf_systems,
                                 harmonic_numbers, voltage_program, phi_offset)

# DEFINE BEAM------------------------------------------------------------------

beam = Beam(general_params, n_macroparticles, n_particles)

# DEFINE TRACKER---------------------------------------------------------------
longitudinal_tracker = RingAndRFSection(RF_sct_par, beam)
full_tracker = FullRingAndRF([longitudinal_tracker])

# DEFINE SLICES----------------------------------------------------------------

number_slices = 500
slice_beam = Slices(RF_sct_par,
                    beam,
                    number_slices,
                    cut_left=0.,
                    cut_right=bucket_length)

# Single RF -------------------------------------------------------------------
matched_from_distribution_density(beam,
                                  full_tracker,
                                  distribution_options,
示例#2
0
dt_plt = 200  # Time steps between plots

# Simulation setup ------------------------------------------------------------
print("Setting up the simulation...")
print("")

# Define general parameters
general_params = GeneralParameters(N_t, C, alpha, np.linspace(p_i, p_f, 2001),
                                   'proton')

# Define beam and distribution
beam = Beam(general_params, N_p, N_b)

# Define RF station parameters and corresponding tracker
rf_params = RFSectionParameters(general_params, 1, h, V, dphi)
long_tracker = RingAndRFSection(rf_params, beam)

longitudinal_bigaussian(general_params,
                        rf_params,
                        beam,
                        tau_0 / 4,
                        reinsertion='on',
                        seed=1)

# Need slices for the Gaussian fit
slice_beam = Slices(rf_params, beam, 100, fit_option='gaussian')

# Define what to save in file
bunchmonitor = BunchMonitor(general_params,
                            rf_params,
                            beam,
示例#3
0
# Cavities parameters
n_rf_systems = 1
harmonic_numbers = 1
voltage_program = 8e3  #[V]
phi_offset = -np.pi

# DEFINE RING------------------------------------------------------------------

general_params = GeneralParameters(n_turns, C, momentum_compaction,
                                   sync_momentum, particle_type)

RF_sct_par = RFSectionParameters(general_params, n_rf_systems,
                                 harmonic_numbers, voltage_program, phi_offset)

beam = Beam(general_params, n_macroparticles, n_particles)
ring_RF_section = RingAndRFSection(RF_sct_par, beam)

bucket_length = 2.0 * np.pi / RF_sct_par.omega_RF[0, 0]

# DEFINE BEAM------------------------------------------------------------------
longitudinal_bigaussian(general_params, RF_sct_par, beam, sigma_dt, seed=1)

# DEFINE SLICES----------------------------------------------------------------

number_slices = int(100 * 2.5)
slice_beam = Slices(RF_sct_par,
                    beam,
                    number_slices,
                    cut_left=0,
                    cut_right=bucket_length)
示例#4
0
    RF_sct_par.append(
        RFSectionParameters(general_params,
                            n_rf_systems,
                            harmonic_numbers,
                            [v / n_sections for v in voltage_program],
                            phi_offset,
                            section_index=i))

# DEFINE BEAM------------------------------------------------------------------

beam = Beam(general_params, n_macroparticles, n_particles)

# DEFINE TRACKER---------------------------------------------------------------
longitudinal_tracker = []
for i in range(n_sections):
    longitudinal_tracker.append(RingAndRFSection(RF_sct_par[i], beam))

full_tracker = FullRingAndRF(longitudinal_tracker)

# DEFINE SLICES----------------------------------------------------------------

number_slices = 500
slice_beam = Slices(RF_sct_par[0],
                    beam,
                    number_slices,
                    cut_left=0.,
                    cut_right=bucket_length)

# BEAM GENERATION--------------------------------------------------------------

matched_from_distribution_function(beam,