Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
mbtrack2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
PA
Collective Effects
mbtrack2
Commits
797693e5
Commit
797693e5
authored
4 years ago
by
Gamelin Alexis
Browse files
Options
Downloads
Patches
Plain Diff
Add longitudinal coupled bunch instability growth time functions
parent
5676b988
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
collective_effects/__init__.py
+1
-1
1 addition, 1 deletion
collective_effects/__init__.py
collective_effects/instabilities.py
+114
-1
114 additions, 1 deletion
collective_effects/instabilities.py
with
115 additions
and
2 deletions
collective_effects/__init__.py
+
1
−
1
View file @
797693e5
...
...
@@ -5,7 +5,7 @@ Created on Tue Jan 14 12:25:30 2020
@author: gamelina
"""
from
mbtrack2.collective_effects.instabilities
import
mbi_threshold
,
cbi_threshold
from
mbtrack2.collective_effects.instabilities
import
mbi_threshold
,
cbi_threshold
,
lcbi_growth_rate_mode
,
lcbi_growth_rate
,
plot_critical_mass
from
mbtrack2.collective_effects.resistive_wall
import
(
skin_depth
,
CircularResistiveWall
,
Coating
)
from
mbtrack2.collective_effects.resonator
import
Resonator
,
PureInductive
,
PureResistive
from
mbtrack2.collective_effects.tapers
import
StupakovRectangularTaper
,
StupakovCircularTaper
...
...
This diff is collapsed.
Click to expand it.
collective_effects/instabilities.py
+
114
−
1
View file @
797693e5
...
...
@@ -3,7 +3,6 @@
General calculations about instabilities
@author: Alexis Gamelin
@date: 15/01/2020
"""
import
numpy
as
np
...
...
@@ -88,6 +87,120 @@ def cbi_threshold(ring, I, Vrf, f, beta, Ncav=1):
return
(
Zlong
,
Zxdip
,
Zydip
)
def
lcbi_growth_rate_mode
(
ring
,
I
,
Vrf
,
M
,
mu
,
fr
=
None
,
Rs
=
None
,
QL
=
None
,
Z
=
None
):
"""
Compute the longitudinal coupled bunch instability growth rate driven by
HOMs for a given coupled bunch mode mu [1].
Use either the resonator model (fr,Rs,QL) or an Impedance object (Z).
Parameters
----------
ring : Synchrotron object
I : float
Total beam current in [A].
Vrf : float
Total RF voltage in [V].
M : int
Nomber of bunches in the beam.
mu : int
Coupled bunch mode number (= 0, ..., M-1).
fr : float, optional
Frequency of the HOM in [Hz].
Rs : float, optional
Shunt impedance of the HOM in [Ohm].
QL : float, optional
Loaded quality factor of the HOM.
Z : Impedance, optional
Longitunial impedance to consider.
Returns
-------
float
Coupled bunch instability growth rate for the mode mu.
References
----------
[1] : Eq. 51 p139 of Akai, Kazunori.
"
RF System for Electron Storage
Rings.
"
Physics And Engineering Of High Performance Electron Storage Rings
And Application Of Superconducting Technology. 2002. 118-149.
"""
nu_s
=
ring
.
synchrotron_tune
(
Vrf
)
factor
=
ring
.
eta
*
I
/
(
4
*
np
.
pi
*
ring
.
E0
*
nu_s
)
if
Z
is
None
:
omega_r
=
2
*
np
.
pi
*
fr
n_max
=
int
(
10
*
omega_r
/
(
ring
.
omega0
*
M
))
def
Zr
(
omega
):
return
np
.
real
(
Rs
/
(
1
+
1j
*
QL
*
(
omega_r
/
omega
-
omega
/
omega_r
)))
else
:
fmax
=
Z
.
data
.
index
.
max
()
n_max
=
int
(
2
*
np
.
pi
*
fmax
/
(
ring
.
omega0
*
M
))
def
Zr
(
omega
):
return
np
.
real
(
Z
(
omega
/
(
2
*
np
.
pi
)
)
)
n0
=
np
.
arange
(
n_max
)
n1
=
np
.
arange
(
1
,
n_max
)
omega_p
=
ring
.
omega0
*
(
n0
*
M
+
mu
+
nu_s
)
omega_m
=
ring
.
omega0
*
(
n1
*
M
-
mu
-
nu_s
)
sum_val
=
np
.
sum
(
omega_p
*
Zr
(
omega_p
))
-
np
.
sum
(
omega_m
*
Zr
(
omega_m
))
return
factor
*
sum_val
def
lcbi_growth_rate
(
ring
,
I
,
Vrf
,
M
,
fr
=
None
,
Rs
=
None
,
QL
=
None
,
Z
=
None
):
"""
Compute the maximum growth rate for longitudinal coupled bunch instability
driven by HOMs [1].
Use either the resonator model (fr,Rs,QL) or an Impedance object (Z).
Parameters
----------
ring : Synchrotron object
I : float
Total beam current in [A].
Vrf : float
Total RF voltage in [V].
M : int
Nomber of bunches in the beam.
fr : float, optional
Frequency of the HOM in [Hz].
Rs : float, optional
Shunt impedance of the HOM in [Ohm].
QL : float, optional
Loaded quality factor of the HOM.
Z : Impedance, optional
Longitunial impedance to consider.
Returns
-------
growth_rate : float
Maximum coupled bunch instability growth rate.
mu : int
Coupled bunch mode number corresponding to the maximum coupled bunch
instability growth rate.
growth_rates : array
Coupled bunch instability growth rates for the different mode numbers.
References
----------
[1] : Eq. 51 p139 of Akai, Kazunori.
"
RF System for Electron Storage
Rings.
"
Physics And Engineering Of High Performance Electron Storage Rings
And Application Of Superconducting Technology. 2002. 118-149.
"""
growth_rates
=
np
.
zeros
(
M
)
for
i
in
range
(
M
):
growth_rates
[
i
]
=
lcbi_growth_rate_mode
(
ring
,
I
,
Vrf
,
M
,
i
,
fr
=
fr
,
Rs
=
Rs
,
QL
=
QL
,
Z
=
Z
)
growth_rate
=
np
.
max
(
growth_rates
)
mu
=
np
.
argmax
(
growth_rates
)
return
growth_rate
,
mu
,
growth_rates
def
plot_critical_mass
(
ring
,
bunch_charge
,
bunch_spacing
,
n_points
=
1e4
):
"""
Plot ion critical mass, using Eq. (7.70) p147 of [1]
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment