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,
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,
# 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)
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,