[docs]class Geometry:
def __init__(self):
self.WG_mesh = None
self.WG_R = None
self.WG_L = None
self.left_beam_pipe, self.right_beam_pipe = None, None
self.mid_cell, self.right_end_cell, self.left_end_cell = None, None, None
self.A_M, self.B_M, self.a_M, self.b_M, self.ri_M, self.L_M, self.Req_M = \
None, None, None, None, None, None, None
self.A_R, self.B_R, self.a_R, self.b_R, self.ri_R, self.L_R, self.Req_R = \
None, None, None, None, None, None, None
self.A_L, self.B_L, self.a_L, self.b_L, self.ri_L, self.L_L, self.Req_L = \
None, None, None, None, None, None, None
self.Rbp_L, self.at_L, self.bt_L, self.c_L, self.x_L = None, None, None, None, None
self.Rbp_R, self.at_R, self.bt_R, self.c_R, self.x_R = None, None, None, None, None
self.Jxy, self.Jx1, self.Jx2 = None, None, None
self.Jx1_bp, self.Jx2_bp = None, None
self.Jy0, self.Jy1, self.Jy2, self.Jy3 = None, None, None, None
self.Jy0_bp, self.Jy1_bp, self.Jy2_bp, self.Jy3_bp = None, None, None, None
self.Jxy_al, self.Jxy_bp, self.Jxy_all, self.Jxy_bp_y = None, None, None, None
self.Jxy_all_bp = None
self.n = None
self.cell_structure = None
self.u = None
[docs] def set_geom_parameters(self, n_cells, mid_cells_par=None, l_end_cell_par=None, r_end_cell_par=None):
# print(n_cells, mid_cells_par, l_end_cell_par, r_end_cell_par)
if l_end_cell_par is None:
l_end_cell_par = []
# check self.u for slans and abci
self.u = 1e-3
self.cell_structure = 2
self.n = n_cells
# print("Sets value")
self.A_M, self.B_M, self.a_M, self.b_M, self.ri_M, self.L_M, self.Req_M = \
[i * self.u for i in mid_cells_par][0:7]
self.A_L, self.B_L, self.a_L, self.b_L, self.ri_L, self.L_L, self.Req_L = \
[i * self.u for i in l_end_cell_par][0:7]
self.A_R, self.B_R, self.a_R, self.b_R, self.ri_R, self.L_R, self.Req_R = \
[i * self.u for i in r_end_cell_par][0:7]
self.c_L = 0 * self.u
self.Rbp_L = self.Req_L
self.at_L, self.bt_L, self.x_L = 0, 0, 0
self.left_beam_pipe = [self.c_L, self.Rbp_L, self.at_L, self.bt_L, self.x_L]
self.right_beam_pipe = self.left_beam_pipe
# for some strange reasons, I reversed the order eesh!!!
self.mid_cell = [self.Req_M, self.ri_M, self.L_M, self.A_M, self.B_M, self.a_M, self.b_M]
self.left_end_cell = [self.Req_L, self.ri_L, self.L_L, self.A_L, self.B_L, self.a_L, self.b_L]
self.right_end_cell = [self.Req_R, self.ri_R, self.L_R, self.A_R, self.B_R, self.a_R, self.b_R]
# print(self.mid_cell)
# beam pipe
self.WG_L = 4 * self.L_M # self.ui.dsb_Lbp_L.value()*self.u # Length of the beam pipe connecting to the cavity
self.WG_R = self.WG_L # Right Waveguide
# self.L_all = self.WG_L + self.WG_R + self.L_L
# + self.L_R + 2*(self.n - 1)*self.L_M # Total length of each cavity
self.Rbp_L = self.ri_L * self.u
self.at_L = 0 * self.u
self.bt_L = 0 * self.u
self.c_L = 0 * self.u
self.x_L = 0 * (self.c_L + self.at_L)
# self.x_L = 230*self.u # x_L is the length of the transition from iris to beam pipe
self.Rbp_R = self.ri_R * self.u
self.at_R = 0 * self.u
self.bt_R = 0 * self.u
self.c_R = 0 * self.u
self.x_R = 0 * (self.c_L + self.at_L)
# self.x_R = 230*self.u
self.left_beam_pipe = [self.c_L, self.Rbp_L, self.at_L, self.bt_L, self.x_L]
self.right_beam_pipe = self.left_beam_pipe
# Slans mesh parameters
self.WG_mesh = round(self.WG_L / 5) * self.u # /5 for ende_type 1
# print(self.L_M, self.WG_L, self.WG_mesh)
self.Jxy = 44 # 60 for end type 1
self.Jx1 = round((19 / 50) * self.Jxy) # 19/50 for end_type 1
self.Jx2 = self.Jxy / 2 - self.Jx1
self.Jy0 = round((19 / 50) * self.Jxy) # 18, 12,14 for end type 1
self.Jy1 = round((12 / 50) * self.Jxy)
self.Jy2 = round((13 / 50) * self.Jxy)
self.Jy3 = self.Jxy - self.Jy2 - self.Jy1 - self.Jy0
self.Jxy_all = [0, self.Jxy, self.Jx1, self.Jx2, self.Jy0, self.Jy1, self.Jy2, self.Jy3]
self.Jxy_bp = 30
self.Jxy_bp_y = 35
self.Jx1_bp = round((19 / 50) * self.Jxy_bp)
self.Jx2_bp = self.Jxy_bp / 2 - self.Jx1_bp
self.Jy0_bp = round((18 / 50) * self.Jxy_bp_y)
self.Jy1_bp = round((12 / 50) * self.Jxy_bp_y)
self.Jy2_bp = round((14 / 50) * self.Jxy_bp_y)
self.Jy3_bp = self.Jxy_bp_y - self.Jy2_bp - self.Jy1_bp - self.Jy0_bp
self.Jxy_all_bp = [0, self.Jxy_bp, self.Jx1_bp, self.Jx2_bp, self.Jy0_bp, self.Jy1_bp, self.Jy2_bp, self.Jy3_bp]
# def write_cst_paramters(self, fid):
# print("Writing parameters to file")
# cwd = os.getcwd()
# if self.ui.cb_Code.currentText() == 'SLANS':
# path = os.path.join(cwd, "node_editor\SLANS\Cavity{}\cst_parameters.txt".format(fid))
# else:
# path = os.path.join(cwd, "node_editor\ABCI\Cavity{}\cst_parameters.txt".format(fid))
#
# print(path)
# with open(path, 'w') as f:
# name_list = ['c_L', 'Rbp_L', 'at_L', 'bt_L', 'x_L',
# 'Req_L', 'ri_L', 'L_L', 'Aeq_L', 'Beq_L', 'ai_L', 'bi_L',
# 'Req_M', 'ri_M', 'L_M', 'Aeq_M', 'Beq_M', 'ai_M', 'bi_M',
# 'Req_R', 'ri_R', 'L_R', 'Aeq_R', 'Beq_R', 'ai_R', 'bi_R',
# 'c_R', 'Rbp_R', 'at_R', 'bt_R', 'x_R']
#
# value_list = [self.c_L, self.Rbp_L, self.at_L, self.bt_L, self.x_L,
# self.Req_L, self.ri_L, self.L_L, self.A_L, self.B_L, self.a_L, self.b_L,
# self.Req_M, self.ri_M, self.L_M, self.A_M, self.B_M, self.a_M, self.b_M,
# self.Req_R, self.ri_R, self.L_R, self.A_R, self.B_R, self.a_R, self.b_R,
# self.c_R, self.Rbp_R, self.at_R, self.bt_R, self.x_R]
#
# for i in range(len(name_list)):
# f.write("{}={}\n".format(name_list[i], value_list[i]))
#
# print("Writing to file complete.")
#
# def write_cst_paramters_mid(self, fid):
# print("Writing parameters to file")
# cwd = os.getcwd()
# print(cwd)
# if self.ui.cb_Code.currentText() == 'SLANS':
# path = os.path.join(cwd, "node_editor\SLANS\Cavity{}\cst_parameters_mid.txt".format(fid))
# else:
# path = os.path.join(cwd, "node_editor\ABCI\Cavity{}\cst_parameters_mid.txt".format(fid))
#
# print(path)
# with open(path, 'w') as f:
# name_list = ['Req_M', 'ri_M', 'L_M', 'Aeq_M', 'Beq_M', 'ai_M', 'bi_M']
#
# value_list = [self.Req_M, self.ri_M, self.L_M, self.A_M, self.B_M, self.a_M, self.b_M]
#
# for i in range(len(name_list)):
# f.write("{}={}\n".format(name_list[i], value_list[i]))
#
# print("Writing to file complete.")