def reinit_ecloud_from_h5status(filename, ecloud): print 'Reinitialize ecloud object' import myfilemanager as mfm ecloud_read = mfm.object_with_arrays_and_scalar_from_h5(filename) ecloud.init_N_mp = ecloud_read.init_N_mp ecloud.init_x = ecloud_read.init_x ecloud.init_y = ecloud_read.init_y ecloud.init_z = ecloud_read.init_z ecloud.init_vx = ecloud_read.init_vx ecloud.init_vy = ecloud_read.init_vy ecloud.init_vz = ecloud_read.init_vz ecloud.init_nel = ecloud_read.init_nel
def beam_from_h5status(filename): import myfilemanager as mfm beam_read = mfm.object_with_arrays_and_scalar_from_h5(filename) coords_n_momenta_dict = {\ 'x':beam_read.x, 'xp':beam_read.xp, 'y':beam_read.y, 'yp':beam_read.yp, 'z':beam_read.z, 'dp':beam_read.dp} from PyHEADTAIL.particles.generators import ImportDistribution beam = ImportDistribution(beam_read.macroparticlenumber, beam_read.intensity, beam_read.charge, beam_read.mass, beam_read.circumference, beam_read.gamma, coords_n_momenta_dict).generate() return beam
import pylab as pl import myfilemanager as mfm import numpy as np ob = mfm.object_with_arrays_and_scalar_from_h5('beam_coord.h5') beam_x = ob.beam_x beam_y = ob.beam_y beam_z = ob.beam_z sx = ob.sx sy = ob.sy sz = ob.sz epsx = ob.epsx epsy = ob.epsy epsz = ob.epsz import pylab as plt plt.figure(2, figsize=(16, 8), tight_layout=True) plt.subplot(2,3,1) plt.plot(beam_x) plt.ylabel('x [m]');plt.xlabel('Turn') plt.gca().ticklabel_format(style='sci', scilimits=(0,0),axis='y') plt.subplot(2,3,2) plt.plot(beam_y) plt.ylabel('y [m]');plt.xlabel('Turn') plt.gca().ticklabel_format(style='sci', scilimits=(0,0),axis='y') plt.subplot(2,3,3) plt.plot(beam_z) plt.ylabel('z [m]');plt.xlabel('Turn') plt.gca().ticklabel_format(style='sci', scilimits=(0,0),axis='y')
beta_y=pars['beta_y'], accQ_x=pars['Q_x'], accQ_y=pars['Q_y'], Qp_x=pars['Qp_x'], Qp_y=pars['Qp_y'], octupole_knob=pars['octupole_knob'], optics_dict=None, V_RF=pars['V_RF']) Qs = machine.longitudinal_map.Q_s Qx = machine.transverse_map.accQ_x Qy = machine.transverse_map.accQ_y frac_qx, _ = math.modf(Qx) frac_qy, _ = math.modf(Qy) filename_footprint = 'footprint.h5' ob = mfm.object_with_arrays_and_scalar_from_h5(folder + '/' + filename_footprint) betax = machine.transverse_map.beta_x[0] betay = machine.transverse_map.beta_y[0] Jy = (ob.y_init**2 + (ob.yp_init * betay)**2) / (2 * betay) Jx = (ob.x_init**2 + (ob.xp_init * betax)**2) / (2 * betax) Qx_min = frac_qx - 0.03 Qy_min = frac_qy - 0.03 Qx_max_cut = frac_qx + 0.05 Qy_max_cut = frac_qy + 0.05 fig1 = plt.figure(1000 + ifol, figsize=(6.4 * 1.1, 4.8 * 1.4)) figfplist.append(fig1) ax1 = fig1.add_subplot(111)
DeltaQx_average = np.zeros((len(fraction_device_quad_vect), len(betax_vect))) DeltaQy_average = np.zeros((len(fraction_device_quad_vect), len(betax_vect))) DeltaQx_std = np.zeros((len(fraction_device_quad_vect), len(betax_vect))) DeltaQy_std = np.zeros((len(fraction_device_quad_vect), len(betax_vect))) for ii, fraction_device_quad in enumerate(fraction_device_quad_vect): for jj, betax in enumerate(betax_vect): sim_ident = '../simulations/%.1fe11ppb_ecdip%s_ecquad%s_%.3ffracQuad_%dbetaxy' % ( fact_beam / 1e11, onoff[enable_arc_dip], onoff[enable_arc_quad], fraction_device_quad, betax) filename_footprint = 'footprint.h5' ob = mfm.object_with_arrays_and_scalar_from_h5(sim_ident + '/' + filename_footprint) DeltaQx_vec = np.abs(ob.qx_i) - Q_x DeltaQy_vec = np.abs(ob.qy_i) - Q_y DeltaQx_average[ii, jj] = np.mean(DeltaQx_vec) DeltaQy_average[ii, jj] = np.mean(DeltaQy_vec) DeltaQx_std[ii, jj] = np.std(DeltaQx_vec) DeltaQy_std[ii, jj] = np.std(DeltaQy_vec) folder_plot_average = folder_plot + 'average/' if not os.path.exists(folder_plot_average): os.makedirs(folder_plot_average) #~ plot horizontal and vertical tune average versus beta, for fixed device length for ii, fraction_device_quad in enumerate(fraction_device_quad_vect):
filename = '../../PyECLOUD/testing/tests_PyEC4PyHT/headtail_for_test/test_protons/SPS_Q20_proton_check_dipole_3kicks_20150212_prb.dat' appo = np.loadtxt(filename) parid = np.reshape(appo[:,0], (-1, n_part_per_turn))[::n_segments,:] x = np.reshape(appo[:,1], (-1, n_part_per_turn))[::n_segments,:] xp = np.reshape(appo[:,2], (-1, n_part_per_turn))[::n_segments,:] y = np.reshape(appo[:,3], (-1, n_part_per_turn))[::n_segments,:] yp =np.reshape(appo[:,4], (-1, n_part_per_turn))[::n_segments,:] z = np.reshape(appo[:,5], (-1, n_part_per_turn))[::n_segments,:] zp = np.reshape(appo[:,6], (-1, n_part_per_turn))[::n_segments,:] rms_err_x_list = [] rms_err_y_list = [] for i_turn in xrange(N_turns-1): ob = mfm.object_with_arrays_and_scalar_from_h5('particles_at_turn_%d.h5'%i_turn) # sort id and momenta after track id_after = ob.id_after xp_after = ob.xp_after yp_after = ob.yp_after z_after = ob.z_after id_before = ob.id_before xp_before = ob.xp_before yp_before = ob.yp_before fig = pl.figure(100, figsize=(18,10)) pl.clf() sp1 = pl.subplot(2,3,1) pl.plot(z_after, (100*np.abs((xp_after-xp_before)-(xp[i_turn+1, :]-xp[0, :]))/np.std(xp[i_turn+1, :]-xp[0, :])), '.r', markersize = 2)