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: s-vector, coordinates in longitudinal direction :param q_array: charge-vector :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 * 1e-06, a=0.01, width=0.02, t=0.25 * 0.001, p=0.5 * 0.001, length=1, sigma=3e-05, 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 SLAC-PUB-16881
- 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 one-dimensional 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 one-dimensional
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 one-dimensional 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 one-dimensional
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