Package xal.model

Interface IElement

All Superinterfaces:
IComponent
All Known Implementing Classes:
ChargeExchangeFoil, Collimator, Element, IdealDrift, IdealEDipole, IdealEQuad, IdealHorMagSteeringDipole, IdealMagDipoleFace, IdealMagDipoleFace, IdealMagDipoleFace2, IdealMagFringeQuadFace, IdealMagOctupole, IdealMagQuad, IdealMagSectorDipole, IdealMagSectorDipole, IdealMagSectorDipole2, IdealMagSextupole, IdealMagSkewQuad, IdealMagSkewQuad3, IdealMagSolenoid, IdealMagSteeringDipole, IdealPermMagQuad, IdealRfCavityDrift, IdealRfGap, IdealRfGap, IdealRfGapUpgraded, IdealVerMagSteeringDipole, Marker, RfqDummyModel, SpectrumMapRfGap, ThickDipole, ThickElectromagnet, ThickElectrostatic, ThickElement, ThickMagFieldMap, ThickMatrix, ThickRfFieldMap, ThinElectromagnet, ThinElement, ThinLens, ThinMagFieldMap, ThinMatrix, ThinRfFieldMap

public interface IElement extends IComponent

The defining interface for atomic accelerator modeling components. (for example, quadrupoles, foil, and others). According to the Element-Algorithm-Probe design pattern, the IElement exposed objects may interact with physical aspects of the particle beam which are expressed by the IProbe interface.

These interactions between IElement objects and IProbe objects are defined by dynamics objects exposing the IAlgorithm interface.

Version:
$Id: Element.java, ver 2.0
Author:
Christopher K. Allen
  • Field Details

    • LIGHT_SPEED

      static final double LIGHT_SPEED
      Speed of light in a vacuum (meters/second)
      See Also:
    • UNIT_CHARGE

      static final double UNIT_CHARGE
      The unit electric charge (Farads)
      See Also:
    • PERMITTIVITY

      static final double PERMITTIVITY
      Electric permittivity of free space (Farad/meter)
      See Also:
    • PERMEABILITY

      static final double PERMEABILITY
      Magnetic permeability of free space (Henries/meter)
      See Also:
  • Method Details

    • elapsedTime

      double elapsedTime(IProbe probe, double dblLen)
      Returns the time taken for the probe probe to propagate through a subsection of the element with length dblLen.
      Parameters:
      probe - propagating probe
      dblLen - length of subsection to propagate through meters
      Returns:
      the elapsed time through sectionUnits: seconds
    • longitudinalPhaseAdvance

      double longitudinalPhaseAdvance(IProbe probe, double dblLen)

      Returns the longitudinal phase advance of the given probe with respect to the RF phase while propagation through this element section. Typically used to account for phase delay/advance in cavities incurred due to finite time while propagating through the given distance. For example

          φ ≜ φ0 - Δφ

      where Δφ = 2πfΔL/βc is the phase delay due to elapsed time Δt = ΔLc, ΔL is the given axial distance through this element, βc is the probe axial velocity, f is the cavity resonant frequency, and φ0 is the operating phase of the cavity (w.r.t. the synchronous particle).

      Parameters:
      probe - the probe propagating through this element
      dblLen - distance the probe propagates through the element
      Returns:
      longitudinal phase advance of the probe through given distance
      Since:
      Nov 23, 2014
    • energyGain

      double energyGain(IProbe probe, double dblLen)
      Returns energy gain provided by a subsection of the element during the given length for the particular probe.
      Parameters:
      probe - determine energy gain for this probe
      dblLen - length of subsection to calculate energy gain
      Returns:
      the energy gain provided by this element Units: eV
    • transferMap

      PhaseMap transferMap(IProbe probe, double dblLen) throws ModelException
      Compute the transfer matrix for subsection of this element of length dblLen for the specified given probe. That is, this method should return the incremental transfer matrix.
      Parameters:
      dblLen - length of sub-element
      probe - probe containing parameters for the sub-sectional transfer matrix
      Returns:
      transfer map for an element of length dblLen
      Throws:
      ModelException - unable to compute transfer map
      See Also: