from blond.input_parameters.ring import Ring from blond.input_parameters.rf_parameters import RFStation from blond.trackers.tracker import RingAndRFTracker from blond.beam.beam import Beam, Proton from blond.beam.distributions import bigaussian from blond.beam.profile import CutOptions, Profile from blond.monitors.monitors import BunchMonitor from blond.plots.plot import Plot from blond.plots.plot_impedance import plot_impedance_vs_frequency, plot_induced_voltage_vs_bin_centers from blond.impedances.impedance_sources import InputTable from blond.impedances.impedance import InductiveImpedance, InducedVoltageFreq, TotalInducedVoltage from scipy.constants import m_p, e, c import os from blond.utils import input_parser args = input_parser.parse() this_directory = os.path.dirname(os.path.realpath(__file__)) + '/' try: os.mkdir(this_directory + '../output_files') except: pass try: os.mkdir(this_directory + '../output_files/EX_02_fig') except: pass # SIMULATION PARAMETERS ------------------------------------------------------- # Beam parameters
SPS_PHASELOOP = True PLrange = 5 * 12 PL_2ndLoop = 'F_Loop' FB_strength = 'present' # simulation parameters n_particles = int(4e6) # 4M macroparticles per bunch n_bins_rf = 256 # number of slices per RF-bucket nFrev = 2 # multiples of f_rev for frequency resolution n_iterations = n_turns n_turns_reduce = 1 seed = 0 args = parse() n_iterations = n_iterations if args['turns'] == None else args['turns'] n_particles = n_particles if args['particles'] == None else args['particles'] n_bunches = n_bunches if args['bunches'] == None else args['bunches'] n_turns_reduce = n_turns_reduce if args['reduce'] == None else args['reduce'] seed = seed if args['seed'] == None else args['seed'] approx = args['approx'] timing.mode = args['time'] os.environ['OMP_NUM_THREADS'] = str(args['omp']) withtp = bool(args['withtp']) precision = args['precision'] bm.use_precision(precision) bm.use_mpi() bm.use_fftw()