Class IdealMagSectorDipole

All Implemented Interfaces:
IElectromagnet, IComponent, IElement

public class IdealMagSectorDipole extends ThickElectromagnet

Represents a bending magnetic dipole magnet for a beam in a sector configuration. Thus, there are no edge effects as the beam enters the magnet orthogonally.

The MAD convention for sector magnets is followed for coordinates, signs, and lengths. The formulation from D. Carey's Optics book, Transport manual, and H. Wiedemann's books are used.

NOTES:

Both the dipole effects and the quadrupole (focusing) effects vary off the design values with differing magnetic field strengths. This situation is in contrast with the previous version of this class where only the quadrupole effects varied, and in contract with the class ThickDipole where only the dipole effects varied.

References

[1] D.C. Carey, The Optics of Charged Particle Beams (Harwood, 1987)
[2] H. Wiedemann, Particle Accelerator Physics I, 2nd Ed. (Springer, 1999)

Author:
John D. Galambos, Jeff Holmes, Christopher K. Allen
See Also:
  • Field Details

  • Constructor Details

    • IdealMagSectorDipole

      public IdealMagSectorDipole()
      Default constructor - creates a new uninitialized instance of IdealMagSectorDipole. This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction.
    • IdealMagSectorDipole

      public IdealMagSectorDipole(String strId)
      Default constructor - creates a new uninitialized instance of IdealMagSectorDipole. This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction.
      Parameters:
      strId -
    • IdealMagSectorDipole

      public IdealMagSectorDipole(String strId, double dblLen, int enmOrient, double dblFld, double dblGap, double dblFldInd)
      Creates a new instance of IdealMagSectorDipole
      Parameters:
      strId - identifier for this IdealMagSectorDipole object
      dblFld - field gradient strength (in Tesla)
      enmOrient -
      dblLen - pathLength of the dipole (in m)
      dblGap - full pole gap of the dipole (in m)
      dblFldInd - The dimensionless integral term for the extended fringe field focusing, Should be = 1/6 for linear drop off, ~ 0.4 for clamped Rogowski coil, or 0.7 for an unclamped Rogowski coil. (dimensionless)
  • Method Details

    • getK0

      public double getK0()
      This is the design bending curvature h = 1/R0 where R0 is the design bending radius.
      Returns:
      the design curvature of the bending magnet
      Since:
      Apr 19, 2011
    • setK0

      public void setK0(double dbl)
      Set the design curvature h of the bending magnet.
      Parameters:
      dbl - design curvature h = 1/R0 where R0 is the design path radius.
      Since:
      Apr 19, 2011
    • setFieldIndex

      public void setFieldIndex(double dblFldInd)
      Set the magnetic field index of the magnet evaluated at the design orbit. The field index is defined as n := -(R0/B0)(dB/dR) where R0 is the radius of the design orbit, B0 is the field at the design orbit (@see IdealMagSectorDipole#getField), and dB/dR is the derivative of the field with respect to the path deflection - evaluated at the design radius R0.
      Parameters:
      dblFldInd - field index of the magnet (unitless)
    • setQuadComponent

      public void setQuadComponent(double dbl)
      quad K1 component defined in SAD (=normal k1 * L)
      Parameters:
      dbl -
    • setGapHeight

      public void setGapHeight(double dblGap)
      Set the gap size between the dipole magnet poles.
      Parameters:
      dblGap - gap size in meters
    • setDesignPathLength

      public void setDesignPathLength(double dblPathLen)
      Set the reference (design) orbit path-length through the magnet.
      Parameters:
      dblPathLen - path length of design trajectory (meters)
    • setDesignBendAngle

      public void setDesignBendAngle(double dblBendAng)
      Set the bending angle of the reference (design) orbit.
      Parameters:
      dblBendAng - design trajectory bending angle (radians)
    • setFieldPathFlag

      public void setFieldPathFlag(double ba)
      sako to set field path flag
      Parameters:
      ba -
    • getFieldIndex

      public double getFieldIndex()
      Return the magnetic field index of the magnet evaluated at the design orbit. The field index is defined as n := -(R0/B0)(dB/dR) where R0 is the radius of the design orbit, B0 is the field at the design orbit (@see IdealMagSectorDipole#getField), and dB/dR is the derivative of the field with respect to the path deflection - evaluated at the design radius R0.
      Returns:
      field index of the magnet at the design orbit (unitless)
    • getQuadComponent

      public double getQuadComponent()
      Returns the quadrupole field component of the bending magnet.
      Returns:
      quadrupole field component of this magnet
    • getGapHeight

      public double getGapHeight()
      Return the gap size between the dipole magnet poles.
      Returns:
      gap size in meters
    • getDesignPathLength

      public double getDesignPathLength()
      Return the path length of the design trajectory through the magnet.
      Returns:
      design trajectory path length (in meters)
    • getDesignBendingAngle

      public double getDesignBendingAngle()
      Return the bending angle of the magnet's design trajectory.
      Returns:
      design trajectory bending angle (in radians)
    • getFieldPathFlag

      public double getFieldPathFlag()
      Return the field path flag.
      Returns:
      field path flag = 1 (use design field) or 0 (use bField parameter)
    • compDesignBendingRadius

      public double compDesignBendingRadius()
      Compute and return the bending radius of the design orbit throught the magnet. Note that this value is the inverse of design curvature h0.
      Returns:
      the design bending radius R0 (in meters)
      See Also:
      • IdealMagSectorDipole#compDesignCurvature()
    • compProbeCurvature

      public double compProbeCurvature(IProbe probe)
      Compute the path curvature within the dipole for the given probe. The path curvature is 1/R where R is the bending radius of the dipole (radius of curvature). Note that for zero fields the radius of curvature is infinite while the path curvature is zero.
      Parameters:
      probe - probe object to be deflected
      Returns:
      dipole path curvature for given probe (in 1/meters)
    • elapsedTime

      public double elapsedTime(IProbe probe, double dblLen)
      Returns the time taken for the probe to drift through part of the element.
      Specified by:
      elapsedTime in interface IElement
      Specified by:
      elapsedTime in class ThickElement
      Parameters:
      probe - propagating probe
      dblLen - length of subsection to propagate through meters
      Returns:
      the elapsed time through sectionUnits: seconds
    • energyGain

      public double energyGain(IProbe probe, double dblLen)
      Return the energy gain imparted to a particular probe. For an ideal quadrupole magnet this value is always zero.
      Specified by:
      energyGain in interface IElement
      Specified by:
      energyGain in class ThickElement
      Parameters:
      dblLen - dummy argument
      probe - dummy argument
      Returns:
      returns a zero value
    • transferMap

      public PhaseMap transferMap(IProbe probe, double dblLen) throws ModelException

      Compute the partial transfer map of an ideal sector magnet for the particular probe. Computes transfer map for a section of magnet h meters in length.

      NOTE

      The arc length dL of the probe will probably be larger than the physical step length h. This is because the path length of the design trajectory is generally larger than the physical length (otherwise no bending would occur).

      Specified by:
      transferMap in interface IElement
      Specified by:
      transferMap in class ThickElement
      Parameters:
      dblLen - physical step length (meters)
      probe - uses the rest and kinetic energy parameters from the probe
      Returns:
      transfer map of ideal sector magnet for particular probe
      Throws:
      ModelException - unknown quadrupole orientation
      See Also:
    • print

      public void print(PrintWriter os)
      Dump current state and content to output stream.
      Overrides:
      print in class Element
      Parameters:
      os - output stream object