Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import numpy as np
import pytest
from mbtrack2 import Electron, Synchrotron
from mbtrack2.tracking import (
Bunch,
IntrabeamScattering,
LongitudinalMap,
RFCavity,
SynchrotronRadiation,
TransverseMap,
)
from mbtrack2.utilities import Optics
def test_ibs_PS(model_ring):
modelname = "PS"
bunch = Bunch(model_ring,
mp_number=10000,
current=1.2e-3,
track_alive=True)
np.random.seed(42)
bunch.init_gaussian()
long_map = LongitudinalMap(model_ring)
trans_map = TransverseMap(model_ring)
rf = RFCavity(model_ring,
m=1,
Vc=1.8e6,
theta=np.arccos(model_ring.U0 / 1.8e6))
sr = SynchrotronRadiation(model_ring, switch=[1, 1, 1])
ibs = IntrabeamScattering(model_ring,
bunch,
model=modelname,
n_points=1000,
n_bin=1)
long_map.track(bunch)
trans_map.track(bunch)
rf.track(bunch)
sr.track(bunch)
ibs.initialize(bunch)
vabq, v1aq, v1bq = ibs.scatter()
T_x, T_y, T_p = ibs.get_scatter_T(vabq=vabq, v1aq=v1aq, v1bq=v1bq)
ibs.kick(bunch, T_x, T_y, T_p)
assert pytest.approx(T_x, rel=0.1) == 17.37129660972345
assert pytest.approx(T_y, rel=0.1) == 11.436684189250942
assert pytest.approx(T_p, rel=0.1) == 94.03135908935525
assert pytest.approx(vabq, rel=0.1) == 10320.6063359
assert pytest.approx(v1aq, rel=0.1) == -4.13639174
assert pytest.approx(v1bq, rel=0.1) == -7.9521672
def test_ibs_PM(model_ring):
modelname = "PM"
bunch = Bunch(model_ring,
mp_number=10000,
current=1.2e-3,
track_alive=True)
np.random.seed(42)
bunch.init_gaussian()
long_map = LongitudinalMap(model_ring)
trans_map = TransverseMap(model_ring)
rf = RFCavity(model_ring,
m=1,
Vc=1.8e6,
theta=np.arccos(model_ring.U0 / 1.8e6))
sr = SynchrotronRadiation(model_ring, switch=[1, 1, 1])
ibs = IntrabeamScattering(model_ring,
bunch,
model=modelname,
n_points=1000,
n_bin=1)
long_map.track(bunch)
trans_map.track(bunch)
rf.track(bunch)
sr.track(bunch)
ibs.initialize(bunch)
vabq, v1aq, v1bq = ibs.scatter()
T_x, T_y, T_p = ibs.get_scatter_T(vabq=vabq, v1aq=v1aq, v1bq=v1bq)
ibs.kick(bunch, T_x, T_y, T_p)
assert pytest.approx(T_x, rel=0.1) == 9.61398035949779
assert pytest.approx(T_y, rel=0.1) == 6.3217250733412085
assert pytest.approx(T_p, rel=0.1) == 52.035206316407645
assert pytest.approx(vabq, rel=0.1) == 20417.58389059
assert pytest.approx(v1aq, rel=0.1) == -2.88678694
assert pytest.approx(v1bq, rel=0.1) == -4.31433794
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
def test_ibs_Bane(model_ring):
modelname = "Bane"
bunch = Bunch(model_ring,
mp_number=10000,
current=1.2e-3,
track_alive=True)
np.random.seed(42)
bunch.init_gaussian()
long_map = LongitudinalMap(model_ring)
trans_map = TransverseMap(model_ring)
rf = RFCavity(model_ring,
m=1,
Vc=1.8e6,
theta=np.arccos(model_ring.U0 / 1.8e6))
sr = SynchrotronRadiation(model_ring, switch=[1, 1, 1])
ibs = IntrabeamScattering(model_ring,
bunch,
model=modelname,
n_points=1000,
n_bin=1)
long_map.track(bunch)
trans_map.track(bunch)
rf.track(bunch)
sr.track(bunch)
ibs.initialize(bunch)
gval = ibs.scatter()
T_x, T_y, T_p = ibs.get_scatter_T(gval=gval)
ibs.kick(bunch, T_x, T_y, T_p)
assert pytest.approx(T_x, rel=0.1) == 218.0367680074528
assert pytest.approx(T_y, rel=0.1) == 22.671331141800803
assert pytest.approx(T_p, rel=0.1) == 65.48600681585525
assert pytest.approx(gval, rel=0.1) == 0.94439633
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
def test_ibs_CIMP(model_ring):
modelname = "CIMP"
bunch = Bunch(model_ring,
mp_number=10000,
current=1.2e-3,
track_alive=True)
np.random.seed(42)
bunch.init_gaussian()
long_map = LongitudinalMap(model_ring)
trans_map = TransverseMap(model_ring)
rf = RFCavity(model_ring,
m=1,
Vc=1.8e6,
theta=np.arccos(model_ring.U0 / 1.8e6))
sr = SynchrotronRadiation(model_ring, switch=[1, 1, 1])
ibs = IntrabeamScattering(model_ring,
bunch,
model=modelname,
n_points=1000,
n_bin=1)
long_map.track(bunch)
trans_map.track(bunch)
rf.track(bunch)
sr.track(bunch)
ibs.initialize(bunch)
g_ab, g_ba = ibs.scatter()
T_x, T_y, T_p = ibs.get_scatter_T(g_ab=g_ab, g_ba=g_ba)
assert pytest.approx(T_x, rel=0.1) == 214.1723224950628
assert pytest.approx(T_y, rel=0.1) == 22.208894776125746
assert pytest.approx(T_p, rel=0.1) == 64.34338366871349
assert pytest.approx(g_ab, rel=0.1) == 0.83332409
assert pytest.approx(g_ba, rel=0.1) == 1.74674087