def init_all(self): n_slices = 100 z_cut = 2.5e-9 * c self.n_slices = n_slices self.z_cut = z_cut from LHC import LHC self.machine = LHC(machine_configuration='Injection', n_segments=43, D_x=0., RF_at='end_of_transverse') # We suppose that all the object that cannot be slice parallelized are at the end of the ring i_end_parallel = len( self.machine.one_turn_map) - 1 #only RF is not parallelizable # split the machine sharing = shs.ShareSegments(i_end_parallel, self.ring_of_CPUs.N_nodes) myid = self.ring_of_CPUs.myid i_start_part, i_end_part = sharing.my_part(myid) self.mypart = self.machine.one_turn_map[i_start_part:i_end_part] if self.ring_of_CPUs.I_am_a_worker: print 'I am id=%d (worker) and my part is %d long' % ( myid, len(self.mypart)) elif self.ring_of_CPUs.I_am_the_master: self.non_parallel_part = self.machine.one_turn_map[i_end_parallel:] print 'I am id=%d (master) and my part is %d long' % ( myid, len(self.mypart))
def init_all(self): self.n_slices = n_slices self.n_segments = n_segments # define the machine from LHC_custom import LHC self.machine = LHC(n_segments = n_segments, machine_configuration = machine_configuration) # define MP size nel_mp_ref_0 = init_unif_edens*4*x_aper*y_aper/N_MP_ele_init # prepare e-cloud import PyECLOUD.PyEC4PyHT as PyEC4PyHT ecloud = PyEC4PyHT.Ecloud(slice_by_slice_mode=True, L_ecloud=self.machine.circumference/n_segments, slicer=None , Dt_ref=Dt_ref, pyecl_input_folder=pyecl_input_folder, chamb_type = chamb_type, x_aper=x_aper, y_aper=y_aper, filename_chm=filename_chm, Dh_sc=Dh_sc, init_unif_edens_flag=init_unif_edens_flag, init_unif_edens=init_unif_edens, N_mp_max=N_mp_max, nel_mp_ref_0=nel_mp_ref_0, B_multip=B_multip_per_eV*self.machine.p0/e*c) # setup transverse losses (to "protect" the ecloud) import PyHEADTAIL.aperture.aperture as aperture apt_xy = aperture.EllipticalApertureXY(x_aper=ecloud.impact_man.chamb.x_aper, y_aper=ecloud.impact_man.chamb.y_aper) self.machine.one_turn_map.append(apt_xy) n_non_parallelizable = 2 #rf and aperture # We suppose that all the object that cannot be slice parallelized are at the end of the ring i_end_parallel = len(self.machine.one_turn_map)-n_non_parallelizable # split the machine sharing = shs.ShareSegments(i_end_parallel, self.ring_of_CPUs.N_nodes) myid = self.ring_of_CPUs.myid i_start_part, i_end_part = sharing.my_part(myid) self.mypart = self.machine.one_turn_map[i_start_part:i_end_part] if self.ring_of_CPUs.I_am_a_worker: print 'I am id=%d/%d (worker) and my part is %d long'%(myid, self.ring_of_CPUs.N_nodes, len(self.mypart)) elif self.ring_of_CPUs.I_am_the_master: self.non_parallel_part = self.machine.one_turn_map[i_end_parallel:] print 'I am id=%d/%d (master) and my part is %d long'%(myid, self.ring_of_CPUs.N_nodes, len(self.mypart)) #install eclouds in my part my_new_part = [] self.my_list_eclouds = [] for ele in self.mypart: my_new_part.append(ele) if ele in self.machine.transverse_map: #ecloud_new = ecloud.generate_twin_ecloud_with_shared_space_charge() ecloud_new = DummyEcloud() my_new_part.append(ecloud_new) self.my_list_eclouds.append(ecloud_new) self.mypart = my_new_part
def init_all(self): n_slices = 100 z_cut = 2.5e-9 * c self.n_slices = n_slices self.z_cut = z_cut n_segments = 70 from LHC import LHC self.machine = LHC(machine_configuration='Injection', n_segments=n_segments, D_x=0., RF_at='end_of_transverse') # We suppose that all the object that cannot be slice parallelized are at the end of the ring i_end_parallel = len( self.machine.one_turn_map) - 1 #only RF is not parallelizable # split the machine sharing = shs.ShareSegments(i_end_parallel, self.ring_of_CPUs.N_nodes) myid = self.ring_of_CPUs.myid i_start_part, i_end_part = sharing.my_part(myid) self.mypart = self.machine.one_turn_map[i_start_part:i_end_part] if self.ring_of_CPUs.I_am_a_worker: print 'I am id=%d (worker) and my part is %d long' % ( myid, len(self.mypart)) elif self.ring_of_CPUs.I_am_the_master: self.non_parallel_part = self.machine.one_turn_map[i_end_parallel:] print 'I am id=%d (master) and my part is %d long' % ( myid, len(self.mypart)) # config e-cloud chamb_type = 'polyg' x_aper = 2.300000e-02 y_aper = 1.800000e-02 filename_chm = '../pyecloud_config/LHC_chm_ver.mat' B_multip_per_eV = [1.190000e-12] B_multip_per_eV = np.array(B_multip_per_eV) fraction_device = 0.65 intensity = 1.150000e+11 epsn_x = 2.5e-6 epsn_y = 2.5e-6 init_unif_edens_flag = 1 init_unif_edens = 9.000000e+11 N_MP_ele_init = 100000 N_mp_max = N_MP_ele_init * 4. Dh_sc = .2e-3 nel_mp_ref_0 = init_unif_edens * 4 * x_aper * y_aper / N_MP_ele_init import PyECLOUD.PyEC4PyHT as PyEC4PyHT ecloud = PyEC4PyHT.Ecloud( L_ecloud=self.machine.circumference / n_segments, slicer=None, Dt_ref=10e-12, pyecl_input_folder='../pyecloud_config', chamb_type=chamb_type, x_aper=x_aper, y_aper=y_aper, filename_chm=filename_chm, Dh_sc=Dh_sc, init_unif_edens_flag=init_unif_edens_flag, init_unif_edens=init_unif_edens, N_mp_max=N_mp_max, nel_mp_ref_0=nel_mp_ref_0, B_multip=B_multip_per_eV * self.machine.p0 / e * c, slice_by_slice_mode=True) my_new_part = [] self.my_list_eclouds = [] for ele in self.mypart: my_new_part.append(ele) if ele in self.machine.transverse_map: ecloud_new = ecloud.generate_twin_ecloud_with_shared_space_charge( ) my_new_part.append(ecloud_new) self.my_list_eclouds.append(ecloud_new) self.mypart = my_new_part
def init_all(self): self.n_slices = n_slices self.n_segments = n_segments from machines_for_testing import SPS self.machine = SPS(n_segments = n_segments, machine_configuration = 'Q20-injection', accQ_x=20., accQ_y=20., RF_at='end_of_transverse') # We suppose that all the object that cannot be slice parallelized are at the end of the ring i_end_parallel = len(self.machine.one_turn_map)-1 #only RF is not parallelizable # split the machine sharing = shs.ShareSegments(i_end_parallel, self.ring_of_CPUs.N_nodes) myid = self.ring_of_CPUs.myid i_start_part, i_end_part = sharing.my_part(myid) self.mypart = self.machine.one_turn_map[i_start_part:i_end_part] if self.ring_of_CPUs.I_am_a_worker: print 'I am id=%d (worker) and my part is %d long'%(myid, len(self.mypart)) elif self.ring_of_CPUs.I_am_the_master: self.non_parallel_part = self.machine.one_turn_map[i_end_parallel:] print 'I am id=%d (master) and my part is %d long'%(myid, len(self.mypart)) # config e-cloud init_unif_edens_flag=1 init_unif_edens=2e11 N_MP_ele_init = 100000 N_mp_max = N_MP_ele_init*4. # define apertures and Dh_sc to simulate headtail inj_optics = self.machine.transverse_map.get_injection_optics() sigma_x = np.sqrt(inj_optics['beta_x']*epsn_x/self.machine.betagamma) sigma_y = np.sqrt(inj_optics['beta_y']*epsn_y/self.machine.betagamma) x_aper = 20*sigma_x y_aper = 20*sigma_y Dh_sc = 2*x_aper/128/2 # initial MP size nel_mp_ref_0 = init_unif_edens*4*x_aper*y_aper/N_MP_ele_init import PyECLOUD.PyEC4PyHT as PyEC4PyHT ecloud = PyEC4PyHT.Ecloud(slice_by_slice_mode=True, L_ecloud=self.machine.circumference/n_segments, slicer=None, Dt_ref=25e-12, pyecl_input_folder='../../PyECLOUD/testing/tests_PyEC4PyHT/drift_sim/', x_aper=x_aper, y_aper=y_aper, Dh_sc=Dh_sc, init_unif_edens_flag=init_unif_edens_flag, init_unif_edens=init_unif_edens, N_MP_ele_init=N_MP_ele_init, N_mp_max=N_mp_max, nel_mp_ref_0=nel_mp_ref_0, B_multip=B_multip) my_new_part = [] self.my_list_eclouds = [] for ele in self.mypart: my_new_part.append(ele) if ele in self.machine.transverse_map: ecloud_new = ecloud.generate_twin_ecloud_with_shared_space_charge() my_new_part.append(ecloud_new) self.my_list_eclouds.append(ecloud_new) self.mypart = my_new_part