Skip to content

Commit 3f4eefd

Browse files
Merge pull request #89 from bmad-sim/zero_phase
Add zero_phase parameters to RFParams.
2 parents 5ead89d + b3236e0 commit 3f4eefd

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

src/Beamlines.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export AbstractParams,
1616
MetaParams,
1717
ApertureAt,
1818
ApertureShape,
19+
PhaseReference,
1920
RFParams,
2021
BMultipole,
2122
DefExpr,

src/keymaps.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ const PROPERTIES_MAP = Dict{Symbol,Type{<:AbstractParams}}(
7878
:voltage => RFParams,
7979
:phi0 => RFParams,
8080
:harmon_master => RFParams,
81+
:zero_phase => RFParams,
8182
:traveling_wave => RFParams,
8283
:is_crabcavity => RFParams,
8384

src/rf.jl

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1+
"""
2+
@enumx PhaseReference::UInt8 Accelerating BelowTransition AboveTransition
3+
4+
Sets what zero `phi0` RF phase means
5+
- `Accelerating` Zero phase is the maximum accelerating phase.
6+
- `BelowTransition` Zero phase is at the stable zero crossing for particles below transition.
7+
- `AboveTransition` Zero phase is at the stable zero crossing for particles above transition.
8+
"""
9+
@enumx PhaseReference::UInt8 Accelerating BelowTransition AboveTransition
10+
111
@kwdef mutable struct RFParams{T} <: AbstractParams
212
rate::T = Float32(0.0) # RF frequency in Hz or Harmonic number
313
voltage::T = Float32(0.0) # Voltage in V
414
phi0::T = Float32(0.0) # Phase at reference energy
515
const harmon_master::Bool = false # false = frequency in Hz, true = harmonic number
16+
zero_phase::PhaseReference.T = PhaseReference.Accelerating # Determines the RF phase at phi0 = 0
617
traveling_wave::Bool = false # Traveling wave or standing wave cavity?
718
is_crabcavity::Bool = false # Is this a crab cavity?
819
function RFParams(args...)
@@ -19,6 +30,7 @@ function Base.isapprox(a::RFParams, b::RFParams)
1930
a.voltage b.voltage &&
2031
a.phi0 b.phi0 &&
2132
a.harmon_master == b.harmon_master &&
33+
a.zero_phase == b.zero_phase &&
2234
a.traveling_wave == b.traveling_wave &&
2335
a.is_crabcavity == b.is_crabcavity
2436
end
@@ -39,8 +51,9 @@ function deval(a::RFParams{<:DefExpr})
3951
deval(a.voltage),
4052
deval(a.phi0),
4153
deval(a.harmon_master),
54+
deval(a.zero_phase),
4255
deval(a.traveling_wave),
43-
deval(a.is_crabcavity)
56+
deval(a.is_crabcavity),
4457
)
4558
end
4659

@@ -60,7 +73,7 @@ end
6073
function Base.setproperty!(c::RFParams{T}, key::Symbol, value) where {T}
6174
if key in (:rate, :voltage, :phi0)
6275
return setfield!(c, key, T(value))
63-
elseif key in (:harmon_master, :traveling_wave, :is_crabcavity)
76+
elseif key in (:harmon_master, :zero_phase, :traveling_wave, :is_crabcavity)
6477
return setfield!(c, key, value)
6578
elseif key in (:rf_frequency, :harmon)
6679
if (key == :harmon) == c.harmon_master

test/runtests.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,6 +876,7 @@ using Test
876876
@test cav.harmon_master == false && cav.rf_frequency == 352e6
877877
@test_throws ErrorException cav.harmon
878878
cav.rf_frequency = 500e6 + 1e3im
879+
@test cav.zero_phase == PhaseReference.Accelerating
879880
@test cav.traveling_wave == false
880881
@test cav.is_crabcavity == false
881882
@test eltype(cav.RFParams) == ComplexF64
@@ -895,6 +896,7 @@ using Test
895896
@test cav.harmon_master == false && cav.rf_frequency == 352e6
896897
@test_throws ErrorException cav.harmon
897898
cav.rf_frequency = 500e6 + 1e3im
899+
@test cav.zero_phase == PhaseReference.Accelerating
898900
@test cav.traveling_wave == false
899901
@test cav.is_crabcavity == false
900902
@test eltype(cav.RFParams) == ComplexF64
@@ -973,7 +975,7 @@ using Test
973975
integrated = Beamlines.SA[false, true, true]
974976
@test Beamlines.deval(ele.BMultipoleParams) BMultipoleParams(n, s, tilt, order, normalized, integrated)
975977
@test Beamlines.deval(ele.PatchParams) PatchParams(bo + 20, bo + 21, bo + 22, bo + 23, bo + 24, bo + 25, bo + 26)
976-
@test Beamlines.deval(ele.RFParams) RFParams(bo + 27, bo + 28, bo + 29, false, false, false)
978+
@test Beamlines.deval(ele.RFParams) RFParams(bo + 27, bo + 28, bo + 29, false, PhaseReference.Accelerating, false, false)
977979

978980
# Species addition
979981
bl = Beamline([LineElement(), LineElement()]; R_ref=-59.52872449027632, species_ref=Species("electron"))

0 commit comments

Comments
 (0)