ocelot.cpbd.wake3D
¶
Created on 17.05.2016 @author: Igor Zagorodnov Added wake table WakeTableDechirperOffAxis on 11.2019 @authors: S. Tomin and I. Zagorodnov
Module Contents¶
Classes¶
WakeTable(wake_file)  load and prepare wake table 

WakeTableDechirperOffAxis()  creates two wake tables for horizontal and vertical corrugated plates. 

The wake field impact on the beam is included as series of kicks. 

The wake field impact on the beam is included as series of kicks. 
Functions¶









Simple function to project particles charge on grid 

I = s2current(P0,q,Ns,NF) 

ocelot.cpbd.wake3D.
_logger
¶

ocelot.cpbd.wake3D.
nb_flag
= True¶

ocelot.cpbd.wake3D.
triang_filter
(x, filter_order)¶

ocelot.cpbd.wake3D.
Der
(x, y)¶

ocelot.cpbd.wake3D.
Int1
(x, y)¶

ocelot.cpbd.wake3D.
Int1h
(h, y)¶

ocelot.cpbd.wake3D.
project_on_grid_py
(Ro, I0, dI0, q_array)¶ Simple function to project particles charge on grid
 Parameters
Ro – grid
I0 – grid index for each particle
dI0 – coefficient how particle close to Ro[i+1]. Example: particle i, dI0=0.7 > Ro[i]———dI0[i]–Ro[i+1]
q_array – charge array in [C]
 Returns
Ro

ocelot.cpbd.wake3D.
project_on_grid
¶

ocelot.cpbd.wake3D.
s2current
(s_array, q_array, n_points, filter_order, mean_vel)¶ I = s2current(P0,q,Ns,NF) :param s_array: svector, coordinates in longitudinal direction :param q_array: chargevector :param n_points: number of sampling points :param filter_order: filter order :param mean_vel: mean velocity :return:

class
ocelot.cpbd.wake3D.
WakeTable
(wake_file=None)¶ WakeTable(wake_file)  load and prepare wake table wake_file  path to the wake table

load_table
(self, wake_file)¶

read_file
(self, wake_file)¶

process_wake_table
(self, wake_table)¶  Parameters
wake_file – file name
 Returns
(T, H): T table of wakes coefs, H  matrix of the coefs place in T


class
ocelot.cpbd.wake3D.
WakeTableDechirperOffAxis
(b=500 * 1e06, a=0.01, width=0.02, t=0.25 * 0.001, p=0.5 * 0.001, length=1, sigma=3e05, orient='horz')¶ Bases:
ocelot.cpbd.wake3D.WakeTable
WakeTableDechirperOffAxis()  creates two wake tables for horizontal and vertical corrugated plates. Based on https://doi.org/10.1016/j.nima.2016.09.001 and SLACPUB16881
 Parameters
b – distance from the plate in [m]
a – half gap between plates in [m]
width – width of the corrugated structure in [m]
t – longitudinal gap in [m]
p – period of corrugation in [m]
length – length of the corrugated structure in [m]
sigma – characteristic (rms) longitudinal beam size in [m]
orient – “horz” or “vert” plate orientation
 Returns
hor_wake_table, vert_wake_table

calculate_wake_tables
(self, b, a, width, t, p, length, sigma)¶ Function creates two wake tables for horizontal and vertical corrugated plates
 Parameters
b – distance from the plate in [m]
a – half gap between plates in [m]
width – width of the corrugated structure in [m]
t – longitudinal gap in [m]
p – period of corrugation in [m]
length – length of the corrugated structure in [m]
sigma – characteristic longitudinal beam size in [m]]
filename – save to files if filename is not None
 Returns
hor_wake_table, vert_wake_table

class
ocelot.cpbd.wake3D.
Wake
(step=1)¶ Bases:
ocelot.cpbd.physics_proc.PhysProc
The wake field impact on the beam is included as series of kicks. In order to take into account the impact of the wake field on the beam the longitudinal wake function of point charge through the second order Taylor expansion is used. In general case it uses 13 onedimensional functions to represent the longitudinal component of the wake function for arbitrary sets of the source and the wittness particles near to the reference axis.
 w_sampling = 500  defines the number of the equidistant sampling points for the onedimensional
wake coefficients in the Taylor expansion of the 3D wake function.
filter_order = 20  smoothing filter order wake_table = None  wake table [WakeTable()] factor = 1.  scaling coefficient TH  list from WakeTable, (T, H): T table of wakes coefs, H  matrix of the coefs place in T

convolution
(self, xu, u, xw, w)¶

wake_convolution
(self, xb, bunch, xw, wake)¶

add_wake
(self, I, T)¶ [x, W] = AddWake(I, T) :param I: wake table in V/C, W in V (R, L, Cinv, nm, W0, N0, W1, N1) :param T: wake table in V/C, W in V :return:

add_total_wake
(self, X, Y, Z, q, TH, Ns, NF)¶

prepare
(self, lat)¶ method is called at the moment of Physics Process addition to Navigator class.
 Parameters
lat –
 Returns

get_long_wake
(self, current_profile)¶ method to extract a longitudinal wake from the Table for specific current profile
 Parameters
current_profile – 2D array with shape (n, 2) where first column is position and second is a beam current
 Returns
wake

apply
(self, p_array, dz)¶ the method is called on every step.
 Parameters
p_array –
dz –
 Returns

class
ocelot.cpbd.wake3D.
WakeKick
(factor=1)¶ Bases:
ocelot.cpbd.wake3D.Wake
The wake field impact on the beam is included as series of kicks. In order to take into account the impact of the wake field on the beam the longitudinal wake function of point charge through the second order Taylor expansion is used. In general case it uses 13 onedimensional functions to represent the longitudinal component of the wake function for arbitrary sets of the source and the wittness particles near to the reference axis.
 w_sampling = 500  defines the number of the equidistant sampling points for the onedimensional
wake coefficients in the Taylor expansion of the 3D wake function.
filter_order = 20  smoothing filter order wake_table = None  wake table [WakeTable()] factor = 1.  scaling coefficient TH  list from WakeTable, (T, H): T table of wakes coefs, H  matrix of the coefs place in T

apply
(self, p_array, dz)¶ the method is called on every step.
 Parameters
p_array –
dz –
 Returns