tot_beam_energy = np.sqrt(sync_momentum**2 + E_0**2) # [eV] momentum_compaction = 1 / gamma_transition**2 # [1] # Cavities parameters n_rf_systems = 1 harmonic_numbers = [35640.0] voltage_program = [16e6] phi_offset = [0] bucket_length = C / c / harmonic_numbers[0] # DEFINE RING------------------------------------------------------------------ n_turns = 1 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----------------------------------------------------------------
h = 35640 # Harmonic number V = 6e6 # RF voltage [V] dphi = 0 # Phase modulation/offset gamma_t = 55.759505 # Transition gamma alpha = 1. / gamma_t / gamma_t # First order mom. comp. factor # Tracking details N_t = 2000 # Number of turns to track 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)
sync_momentum = np.sqrt(tot_beam_energy**2 - E_0**2) # [eV / c] gamma = tot_beam_energy / E_0 beta = np.sqrt(1.0 - 1.0 / gamma**2.0) momentum_compaction = 1 / gamma_transition**2 # 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)
# Cavities parameters n_rf_systems = 1 harmonic_numbers = [133650] voltage_program = [10e9] phi_offset = [np.pi] bucket_length = C / c / harmonic_numbers[0] print(bucket_length) # DEFINE RING------------------------------------------------------------------ n_sections = 2 general_params = GeneralParameters(n_turns, np.ones(n_sections) * C / n_sections, np.tile(momentum_compaction, (1, n_sections)).T, np.tile(sync_momentum, (n_sections, n_turns + 1)), particle_type, number_of_sections=n_sections) RF_sct_par = [] for i in np.arange(n_sections) + 1: 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------------------------------------------------------------------