Class ThickDipole

All Implemented Interfaces:
IElectromagnet, IComponent, IElement

public class ThickDipole extends ThickElectromagnet
Represents a thick magnetic dipole magnet for a beam transport/accelerator system. NOTE: - !!! Bending is assumed to be horizontal for now !!!! It has provisions for a general wedge magnet, with arbitrary entrance / exit angles. The MAD convention for sector magnets is followed for coordinates, signs, and lengths. The formulation from D. Carey's Optics book + Transport manual are used. TODO - Add "tilt" angle of the dipole, and add charge of the probe to get the right bend radius.
Author:
jdg
  • Field Details

  • Constructor Details

    • ThickDipole

      public ThickDipole(String strId, double fld, double len, double entAng, double exitAng, double gap, double fInt)
      Creates a new instance of ThickDipole
      Parameters:
      strId - identifier for this ThickDipole object
      fld - field gradient strength (in Tesla)
      len - pathLength of the dipole (in m)
      entAng - entrance angle of the dipole (in rad)
      exitAng - exit angle of the dipole (in rad)
      gap - full pole gap of the dipole (in m)
      fInt - The dimensionless integral term for the extended fringe field focsing, Should be = 1/6 for linear drop off, ~ 0.4 for clamped Rogowski coil, or 0.7 for an unclamped Rogowski coil. (dimensionless)
    • ThickDipole

      public ThickDipole()
      JavaBean constructor - creates a new uninitialized instance of ThickDipole * This is the constructor called in automatic lattice generation. Thus, all element properties are set following construction. BE CAREFUL
  • Method Details

    • setAlignX

      public void setAlignX(double x)
      Description copied from class: Element
      Set the horizontal misalignment
      Overrides:
      setAlignX in class Element
      Parameters:
      x - misalignment (in m)
    • setAlignY

      public void setAlignY(double y)
      Description copied from class: Element
      Set the vertical misalignment
      Overrides:
      setAlignY in class Element
      Parameters:
      y - misalignment (in m)
    • setAlignZ

      public void setAlignZ(double z)
      Description copied from class: Element
      Set the longitudinal misalignment
      Overrides:
      setAlignZ in class Element
      Parameters:
      z - misalignment (in m)
    • getAlignX

      public double getAlignX()
      Description copied from class: Element
      Get the horizontal misalignment
      Overrides:
      getAlignX in class Element
      Returns:
      the misalignment (in meters)
    • getAlignY

      public double getAlignY()
      Description copied from class: Element
      Get the vertical misalignment
      Overrides:
      getAlignY in class Element
      Returns:
      the misalignment (in meters)
    • getAlignZ

      public double getAlignZ()
      Description copied from class: Element
      Get the longitudinal misalignment
      Overrides:
      getAlignZ in class Element
      Returns:
      the misalignment (in meters)
    • setPathLength

      public void setPathLength(double pl)
    • setBendAngle

      public void setBendAngle(double ba)
    • setFieldPathFlag

      public void setFieldPathFlag(double ba)
    • getPathLength

      public double getPathLength()
    • getBendAngle

      public double getBendAngle()
    • getFieldPathFlag

      public double getFieldPathFlag()
    • setEntranceAngle

      public void setEntranceAngle(double dblAng)
      Sets the entrance angle of the beam into the dipole.
      Parameters:
      dblAng - entrance angle in radians
    • getEntranceAngle

      public double getEntranceAngle()
      Gets the entrance angle of the beam into the dipole.
    • setExitAngle

      public void setExitAngle(double dblAng)
      Sets the entrance angle of the beam into the dipole.
      Parameters:
      dblAng - exit angle in radians
    • getExitAngle

      public double getExitAngle()
      Gets the exit angle of the beam into the dipole.
    • setKQuad

      public void setKQuad(double k)
      Sets the quad. field index term
      Parameters:
      k - = 1/B-rho) * d B_y/dx
    • getKQuad

      public double getKQuad()
      Gets the quad. field index term = 1/B-rho * d B_y/dx
    • 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
    • setFieldIntegral

      public void setFieldIntegral(double fint)
      set the fringe field integral factor
      Parameters:
      fint - the field integral a la MAD = 1/6 for linear drop off = 0.4 for clamped Rogowski coil = 0.7 for unclamped Rogowski coil = 0.45 for square edge - non saturating magnet
    • setGapHeight

      public void setGapHeight(double gap)
      set the gap height
      Parameters:
      gap - = full gap height (m)
    • getFieldIndex

      public double getFieldIndex(IProbe probe)
      get field index nQ
    • transferMap

      public PhaseMap transferMap(IProbe probe, double dL) throws ModelException
      Compute the partial transfer map of an ideal quadrupole for the particular probe. Computes transfer map for a section of quadrupole dblLen meters in length.
      Specified by:
      transferMap in interface IElement
      Specified by:
      transferMap in class ThickElement
      Parameters:
      dL - compute transfer matrix for section of this path length
      probe - uses the rest and kinetic energy parameters from the probe
      Returns:
      transfer map of ideal quadrupole 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