diff --git a/pyat/at/lattice/elements/magnet_elements.py b/pyat/at/lattice/elements/magnet_elements.py index ac767d2e2..0c2e78e63 100644 --- a/pyat/at/lattice/elements/magnet_elements.py +++ b/pyat/at/lattice/elements/magnet_elements.py @@ -505,7 +505,7 @@ def __init__( length: total length of the wiggler wiggle_period: length must be a multiple of this b_max: peak wiggler field [Tesla] - energy: beam energy [eV] + energy: kept for backwards compatibility but always ignored Nstep: number of integration steps. Nmeth: symplectic integration order: 2 or 4 Bx: harmonics for horizontal wiggler: (6, nHharm) @@ -522,6 +522,13 @@ def __init__( "Wiggler: length / wiggle_period is not an " f"integer. ({length}/{wiggle_period}={n_wiggles})" ) + if energy: + warnings.warn( + AtWarning( + f"Wiggler: positional argument energy={energy} has been ignored as " + "lattice.Energy is always used instead." + ) + ) super().__init__( family_name, length, @@ -531,7 +538,6 @@ def __init__( Nmeth=Nmeth, By=By, Bx=Bx, - Energy=energy, **kwargs, ) diff --git a/pyat/at/lattice/lattice_object.py b/pyat/at/lattice/lattice_object.py index 77ca383b2..82157c426 100644 --- a/pyat/at/lattice/lattice_object.py +++ b/pyat/at/lattice/lattice_object.py @@ -677,9 +677,7 @@ def energy(self) -> float: def energy(self, energy: float): # Set the Energy attribute of radiating elements for elem in self: - if isinstance( - elem, (elt.RFCavity, elt.Wiggler) - ) or elem.PassMethod.endswith("RadPass"): + if isinstance(elem, elt.RFCavity) or elem.PassMethod.endswith("RadPass"): elem.Energy = energy # Set the energy attribute of the Lattice # Use a numpy scalar to allow division by zero diff --git a/pyat/test/test_basic_elements.py b/pyat/test/test_basic_elements.py index 1f9ec13d1..5cab9dbbb 100644 --- a/pyat/test/test_basic_elements.py +++ b/pyat/test/test_basic_elements.py @@ -552,7 +552,7 @@ def test_wiggler(rin, func): periods = 23 bmax = 1 by = numpy.array([1, 1, 0, 1, 1, 0], dtype=numpy.float64) - c = elements.Wiggler('wiggler', period * periods, period, bmax, 3e9, By=by) + c = elements.Wiggler('wiggler', period * periods, period, bmax, By=by) assert abs(c.Length - 1.15) < 1e-10 # Expected value from Matlab AT. expected = numpy.array(rin, copy=True) diff --git a/pyat/test/test_integrators.py b/pyat/test/test_integrators.py index 5a94bc178..2a896cd99 100644 --- a/pyat/test/test_integrators.py +++ b/pyat/test/test_integrators.py @@ -43,7 +43,7 @@ def test_exact_hamiltonian_pass_with_dls_dipole(rin, func): ('GWigSymplecticPass', 'GWigSymplecticRadPass')) def test_gwig_symplectic_pass(rin, passmethod, func): # Parameters copied from one of the Diamond wigglers. - wiggler = elements.Wiggler('w', 1.15, 0.05, 0.8, 3e9) + wiggler = elements.Wiggler('w', 1.15, 0.05, 0.8) wiggler.PassMethod = passmethod func(wiggler, rin)