def setup_pic(fname, magnify=2., N_nodes_discard=10, symmetric_slice_2D=True):

    ob = mfm.myloadmat_to_obj(fname)
    Dh_magnify = (ob.xg[1] - ob.xg[0]) / magnify
    x_magnify = -ob.xg[N_nodes_discard]
    y_magnify = -ob.yg[N_nodes_discard]

    if symmetric_slice_2D:
        pic_rho = symmetrize(ob.rho[0, :, :])
        pic_phi = symmetrize(ob.phi[0, :, :])
    else:
        pic_rho = ob.rho[0, :, :].copy()
        pic_phi = ob.phi[0, :, :].copy()
    xg_out = ob.xg.copy()
    yg_out = ob.yg.copy()
    zg_out = ob.zg.copy()
    del ob

    chamb = poly.polyg_cham_geom_object({
        'Vx':
        np.array([xg_out[-1], xg_out[0], xg_out[0], xg_out[-1]]),
        'Vy':
        np.array([yg_out[-1], yg_out[-1], yg_out[0], yg_out[0]]),
        'x_sem_ellip_insc':
        1e-3,
        'y_sem_ellip_insc':
        1e-3
    })

    pic = PyPICSC.PyPIC_Scatter_Gather(xg=xg_out, yg=yg_out)
    pic.phi = pic_phi
    #pic.efx = ob.Ex[0, :, :]
    #pic.efy = ob.Ey[0, :, :]
    pic.rho = pic_rho
    pic.chamb = chamb

    #Ex_picint, _ = pic.gather(x_tint, y_tint)

    # Internal pic
    picdg = AddInternalGrid(pic,
                            x_min_internal=-x_magnify,
                            x_max_internal=x_magnify,
                            y_min_internal=-y_magnify,
                            y_max_internal=y_magnify,
                            Dh_internal=Dh_magnify,
                            N_nodes_discard=N_nodes_discard)
    picinside = picdg.pic_internal

    picinside.rho = np.reshape(pic.gather_rho(picinside.xn, picinside.yn),
                               (picinside.Nxg, picinside.Nyg))
    picinside.solve(flag_verbose=True, pic_external=pic)

    #rho_insideint = picinside.gather_rho(x_tint, y_tint)
    #Ex_inside, _ = picinside.gather(x_tint, y_tint)
    #phi_inside = picinside.gather_phi(x_tint, y_tint)

    return pic, picinside, zg_out
def get_simulation_ob(device_name, sey, coast_str='0.5'):

    sim_ident = '%s_%s_%s_%s_sey%.2f_coast%s' % (beam_snapshot.split('.mat')[0], machine_name, device_name, beam_name, sey, coast_str)
    ob = mlo.myloadmat_to_obj(main_folder + '/' + sim_ident+'/Pyecltest.mat')
    t_bun = np.arange(0.,np.max(ob.t),  ob.b_spac)
    L_imp_t = np.cumsum(ob.En_imp_eV_time-ob.En_emit_eV_time); #in eV
    L_imp = np.interp(t_bun, ob.t, L_imp_t) #in eV
    Ek = np.interp(t_bun, ob.t, ob.En_kin_eV_time);
    sim_loss_per_meter = (np.diff(L_imp) + np.diff(Ek))*qe/T_rev; #watt/m

    return sim_loss_per_meter, ob, t_bun
def get_slice(picoutside, picinside, fname, islice):

    ob = mfm.myloadmat_to_obj(fname)
    rho = ob.rho[islice, :, :].copy()
    phi = ob.phi[islice, :, :].copy()
    del ob

    picoutside.phi = phi
    picoutside.rho = rho

    picinside.rho = np.reshape(
        picoutside.gather_rho(picinside.xn, picinside.yn),
        (picinside.Nxg, picinside.Nyg))
    picinside.solve(flag_verbose=True, pic_external=picoutside)

    phi_refined = picinside.gather_phi(picinside.xn, picinside.yn)

    return phi_refined.reshape(picinside.Nxg, picinside.Nyg)
    def __init__(self,
                 fname_sim_db,
                 sey,
                 varname_hl='hl',
                 rescaling_factor=1.):
        self.varname_hl = varname_hl
        self.rescaling_factor = rescaling_factor

        ob_all = mfm.myloadmat_to_obj(fname_sim_db, squeeze=False)
        ob_all = mds.downsel_scan(ob_all, {}, varname_list=[varname_hl])
        self.database = mds.downsel_scan(ob_all, {'sey': sey},
                                         varname_list=[varname_hl])
        self.matrix = getattr(self.database, self.varname_hl + '_sqz')

        # Build heat load functions (and change units)
        self.interpolating_function = interpolate.RectBivariateSpline(
            self.database.int * 1e11,
            self.database.bl * 1e-9 / 4,
            self.matrix * rescaling_factor,
            kx=2,
            ky=2).ev
Esempio n. 5
0
N_rings = 100

# sim_folder = '../HL-LHC_coupled_bunch_450GeV_2.3e11_144b_sey1.5_both_planes'
# tag = 'HL_sey1.5_xy'
# b_spac = 25e-9
# N_slots_bsp = 5
# flag_movie = True
# movie_range = (0, 1000)
# vmax_movie = 2e11
# corr_turn = 1
# N_turns_part = 500
# N_rings = 100

i_turn = 300

obbea = mfm.myloadmat_to_obj(tag+'_matrices.mat')

x_mat = obbea.mean_x
y_mat = obbea.mean_y
n_mat = obbea.macroparticlenumber

n_turns = x_mat.shape[0]

mask_bunch = n_mat[1, :]>0
n_bunches = np.sum(mask_bunch)
bslots = np.where(mask_bunch)[0]/N_slots_bsp

plt.close('all')
ms.mystyle_arial(fontsz=16, dist_tick_lab=5)

figrt = plt.figure(2000)
coast_strs = ['1.0', '0.5', '0.0']
coast_linestyle_dict = {\
        '1.0': '-',
        '0.5': '-.',
        '0.0': ':'
        }

l_hc = magnet_length['AVG_ARC'][0]
l_dip = 3 * magnet_length['special_HC_D2'][0]
l_quad = magnet_length['special_HC_Q1'][0]
l_drift = l_hc - l_dip - l_quad

#beam_snapshot = 'Fill5219_cut0.920h_450GeV_for_triplets_B1.mat'
beam_snapshot = 'Fill5219_cut1.800h_6500GeV_for_triplets_%s.mat' % args.beam

ob_snapshot = mlo.myloadmat_to_obj(beam_snapshot_folder+'/'+beam_snapshot)
meas_loss_per_meter = ob_snapshot.bunch_power_loss/23./2./8./l_hc
meas_loss_per_hc = meas_loss_per_meter * l_hc

sey_vect = np.arange(1.10,1.501,.05)

if 'B1' in beam_snapshot:
    colorbeam = 'b'
elif 'B2' in beam_snapshot:
    colorbeam = 'r'
else:
    raise ValueError('Beam type (B1 or B2) could not be infered from the name of the snapshot')

N_sims = len(sey_vect)

def get_simulation_ob(device_name, sey, coast_str='0.5'):
# fname = 'intensity_2.3e11ppb_Qp_Koct_comparison_feedback'
# ylim = 6.
# ylim_zoom = .3

# tag = 'HL_2.3e11_144b_Koct-4.5'
# tag = 'HL_2.3e11_144b_Koct-4.5_fb'

# tag = 'HL_2.3e11_144b_Qp15_Koct-4.5'
# tag = 'HL_2.3e11_144b_Qp15_Koct-4.5_fb'

# tag = 'HL_2.3e11_144b_sey1.5'
# tag = 'HL_2.3e11_144b_sey1.5_xy'

colorlist = ['#004488', '#BB5566', '#DDAA33', '#44AA99', '#AA4499', '#999933']

obs = [mfm.myloadmat_to_obj(tag + '_matrices.mat') for tag in tags]

plt.close('all')

from matplotlib import rc
rc('font', **{'family': 'sans-serif', 'sans-serif': ['arial'], 'size': 14})
# ms.mystyle_arial(fontsz=16)

fig = plt.figure(1)
ax1 = fig.add_subplot(111)

fig2 = plt.figure(2)
ax2 = fig2.add_subplot(111)

fig3 = plt.figure(3)
fig3.set_facecolor('w')
yg_e = pic_out.yg[Nd:-Nd]
zg_e = zg[2:-2]
n_slices = len(zg)

print('Number of slices: {}'.format(n_slices))

nx = pic_out.Nxg - 2 * Nd
ny = pic_out.Nyg - 2 * Nd
#x0 = pic.out.xg[Nd]
#y0 = pic.out.yg[Nd]
#z0 = pic.out.zg[1:-2]
del pic_out
del pic_in
del slices

phi_e = np.zeros([n_slices, nx, ny, 8])
for i in range(1, n_slices - 3):
    print('Reading Slice: %d' % i)
    ob = mfm.myloadmat_to_obj('temp/slice%d.mat' % i)
    phi_e[i - 1, :, :, :] = ob.phi_slice_exact[:, :, :]
    del ob

dd = {'xg': xg_e, 'yg': yg_e, 'zg': zg_e, 'phi': phi_e}

print('Begin saving..')
compression_opts = 0
mfm_stl.dict_to_h5(dd,
                   'refined_exact_pinch.h5',
                   compression_opts=compression_opts)
#sio.savemat('refined_exact_pinch.mat',dd, oned_as = 'row')
Esempio n. 9
0
import numpy as np
from scipy.interpolate import interp2d

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  #Needed to allow projection='3d'
from matplotlib import cm

import myfilemanager as mfm

from cpymad.madx import Madx

ob = mfm.myloadmat_to_obj('twiss_res.mat')
ob1 = mfm.myloadmat_to_obj('gradient_discent.mat')

cost_func = ob1.cost_func

XX, YY = np.meshgrid(ob.str_factor, ob.str_factor)

make_avi = True

i_cut = 14

plt.close('all')

import mystyle as ms
ms.mystyle(fontsz=14, dist_tick_lab=None, mpl_v1_style=False)

fig1 = plt.figure(1, figsize=(1. * 8, 1. * 6))
ax = plt.subplot2grid(shape=(5, 1),
                      loc=(0, 0),
                      rowspan=5,
Esempio n. 10
0
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio

import myfilemanager as mfm
import mystyle as ms
from TricubicInterpolation import tricubic_interpolation as ti

import PyPIC.PyPIC_Scatter_Gather as PyPICSC
import PyPIC.geom_impact_poly as poly
from PyPIC.MultiGrid import AddInternalGrid

ob = mfm.myloadmat_to_obj('pinch_cut.mat')

interp2d = True 


i_slice = 250
z_obs = ob.zg[i_slice]

x_magnify = 5e-4
y_magnify = 4.5e-4
Dh_magnify = 5e-6


if interp2d:
    for kk, zz in enumerate(ob.zg):
        ob.rho[kk, :, :] = ob.rho[i_slice, :, :]
        ob.phi[kk, :, :] = ob.phi[i_slice, :, :]
        ob.Ex[kk, :, :] = ob.Ex[i_slice, :, :]
        ob.Ey[kk, :, :] = ob.Ey[i_slice, :, :]
Esempio n. 11
0
slices = bunch.get_slices(ecloud_singlegrid.slicer)

pl.close('all')

pic_singlegrid = ecloud_singlegrid.spacech_ele.PyPICobj
pic_multigrid = ecloud_multigrid.spacech_ele.PyPICobj

# Plot field at probes
import matplotlib.gridspec as gridspec
fig = pl.figure(1, figsize=(7, 8))
fig.patch.set_facecolor('w')
gs1 = gridspec.GridSpec(1, 1)
gs2 = gridspec.GridSpec(2, 1)

sp1 = fig.add_subplot(gs1[0])
obcham = mlm.myloadmat_to_obj('LHC_chm_ver.mat')
sp1.plot(obcham.Vx * 1e3, obcham.Vy * 1e3, 'b')
sp1.plot(ecloud_singlegrid.x_probes * 1e3,
         ecloud_singlegrid.y_probes * 1e3,
         'or',
         markersize=3)
sp1.plot(x_beam_offset, y_beam_offset, '*k', markersize=4)
for ii in xrange(pic_multigrid.n_grids):
    sp1.plot(pic_multigrid.pic_list[ii].pic_internal.chamb.Vx * 1e3,
             pic_multigrid.pic_list[ii].pic_internal.chamb.Vy * 1e3, '.-k')
sp1.set_ylabel('y [mm]')
sp1.set_xlabel('x [mm]')
sp1.axis('equal')
ms.sciy()
ms.scix()
sp1.grid('on')
Esempio n. 12
0
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio

import myfilemanager as mfm

ob = mfm.myloadmat_to_obj('pinch_pic_data_mean2.mat')

i_zero = np.argmin(np.abs(ob.xg))
j_zero = np.argmin(np.abs(ob.yg))

N_keep_h = 100
N_keep_v = 90

dict_new_file = {}
dict_new_file['Ex'] = ob.Ex[:, i_zero - N_keep_h:i_zero + N_keep_h + 1,
                            j_zero - N_keep_v:j_zero + N_keep_v + 1]
dict_new_file['Ey'] = ob.Ey[:, i_zero - N_keep_h:i_zero + N_keep_h + 1,
                            j_zero - N_keep_v:j_zero + N_keep_v + 1]
dict_new_file['phi'] = ob.phi[:, i_zero - N_keep_h:i_zero + N_keep_h + 1,
                              j_zero - N_keep_v:j_zero + N_keep_v + 1]
dict_new_file['rho'] = ob.rho[:, i_zero - N_keep_h:i_zero + N_keep_h + 1,
                              j_zero - N_keep_v:j_zero + N_keep_v + 1]
dict_new_file['xg'] = ob.xg[i_zero - N_keep_h:i_zero + N_keep_h + 1]
dict_new_file['yg'] = ob.yg[j_zero - N_keep_v:j_zero + N_keep_v + 1]
dict_new_file['zg'] = ob.zg

sio.savemat('pinch_cut.mat', dict_new_file, oned_as='row')
import numpy as np
from scipy.interpolate import interp2d

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #Needed to allow projection='3d'
from matplotlib import cm

import myfilemanager as mfm

ob = mfm.myloadmat_to_obj('twiss_res.mat')

target_betax_max = 200.
target_betax_min = 45.
cost_func = np.sqrt((ob.betax_max-target_betax_max)**2/target_betax_max**2 \
                  + (ob.betax_min-target_betax_min)**2/target_betax_min**2)

i_max, j_max = np.unravel_index(np.argmin(cost_func), cost_func.shape)

start_point = (1.5, 1.2)
start_point = (1.8, 1.6)
start_point = (1.8, 1.0)
#start_point = (1.1, 1.7)

Gx_map, Gy_map = np.gradient(cost_func)

Gx_map_norm = Gx_map / np.sqrt(Gx_map**2 + Gy_map**2) 
Gy_map_norm = Gy_map / np.sqrt(Gx_map**2 + Gy_map**2) 

XX, YY = np.meshgrid(ob.str_factor, ob.str_factor)
cost_interp = interp2d(XX, YY, cost_func.T, kind='linear')
from __future__ import print_function
import sys
sys.path.append('../NAFFlib')

import matplotlib.pyplot as plt
import numpy as np

import NAFFlib as NAFF
import myfilemanager as mfm

tag = 'HL_1.1e11_144b'

ob = mfm.myloadmat_to_obj(tag + '_matrices.mat')

x_mat = ob.mean_x
y_mat = ob.mean_y
n_mat = ob.macroparticlenumber

mask_bunch = n_mat[1, :] > 0
N_bunches = np.sum(mask_bunch)

x_mat_m = x_mat[:, mask_bunch]
y_mat_m = y_mat[:, mask_bunch]
n_mat_m = n_mat[:, mask_bunch]

plt.close('all')

fig1 = plt.figure(1)
axx = plt.subplot(3, 1, 1)
axx.plot(x_mat_m)
axy = plt.subplot(3, 1, 2, sharex=axx)