Skip to content

Commit 351b443

Browse files
committed
Fix: RF Translation & Thin Solenoid & More
1 parent 407b821 commit 351b443

2 files changed

Lines changed: 202 additions & 159 deletions

File tree

src/python/impactx/MADXParser.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ class Beam:
735735
pc: float = 0.0 # momentum
736736
mass: float = 0.0
737737
charge: float = 0.0
738-
freq0: float = 0.0 # revolution frequency [MHz]
738+
freq0: float = 0.0 # revolution frequency [Hz]
739739

740740

741741
class EvaluationContext:
@@ -2215,9 +2215,14 @@ def _parse_beam_command(self):
22152215
sequence_name = self._advance().value.lower()
22162216
else:
22172217
self._parse_expression() # consume
2218-
elif attr_name in ("energy", "pc", "mass", "charge", "freq0"):
2218+
elif attr_name in ("energy", "pc", "mass", "charge"):
22192219
expr = self._parse_expression()
22202220
beam_attrs[attr_name] = self.context.evaluate(expr)
2221+
elif attr_name == "freq0":
2222+
expr = self._parse_expression()
2223+
# MAD-X BEAM/FREQ0 is specified in MHz; normalize parser
2224+
# state to Hz so downstream consumers use SI units.
2225+
beam_attrs["freq0"] = self.context.evaluate(expr) * 1.0e6
22212226
else:
22222227
# Unknown attribute, skip the value
22232228
self._parse_expression()
@@ -2552,7 +2557,7 @@ def getEtot(self) -> float:
25522557
return self.context.beam.energy
25532558

25542559
def getFreq0(self) -> float:
2555-
"""Get revolution frequency in MHz."""
2560+
"""Get revolution frequency in Hz."""
25562561
return self.context.beam.freq0
25572562

25582563
def getOption(self, name: str, default: Any = 0.0) -> Any:

0 commit comments

Comments
 (0)