OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
VarRadiusGeometry Class Reference

#include <VarRadiusGeometry.h>

Inheritance diagram for VarRadiusGeometry:
Inheritance graph
Collaboration diagram for VarRadiusGeometry:
Collaboration graph

Public Member Functions

 VarRadiusGeometry (double length, double rho, double s_0, double lambda_left, double lambda_right)
 Build VarRadiusGeometry with given length, centre radius of curvature and fringe field. More...
 
 VarRadiusGeometry (const VarRadiusGeometry &right)
 Copy constructor. More...
 
virtual ~VarRadiusGeometry ()
 Destructor. More...
 
const VarRadiusGeometryoperator= (const VarRadiusGeometry &right)
 Assigment operator. More...
 
virtual double getArcLength () const
 Arc length along the design arc. More...
 
virtual double getElementLength () const
 Get element length measured along hte design arc. More...
 
virtual void setElementLength (double length)
 Set arc length. More...
 
double getRadius () const
 Get centre radius of curvature. More...
 
void setRadius (const double &rho)
 Set centre radius of curvature. More...
 
double getS0 () const
 Get central fringe field length. More...
 
void setS0 (const double &s_0)
 Set central fringe field length. More...
 
double getLambdaLeft () const
 Get left end fringe field length. More...
 
void setLambdaLeft (const double &lambda_left)
 Set left end fringe field length. More...
 
double getLambdaRight () const
 Get right end fringe field length. More...
 
void setLambdaRight (const double &lambda_right)
 Set right end fringe field length. More...
 
virtual Euclid3D getTransform (double fromS, double toS) const
 Transform of the local coordinate system. More...
 
virtual Euclid3D getTransform (double fromS) const
 Transform of the local coordinate system from the origin to the entrance of the element Equivalent to getTransform(0.0, getEntrance()) More...
 
virtual Euclid3D getEntranceFrame () const
 Transform of the local coordinate system from the origin to the entrance of the element Equivalent to getTransform(0.0, getEntrance()) More...
 
virtual Euclid3D getExitFrame () const
 Transform of the local coordinate system from the origin to the exit of the element Equivalent to getTransform(0.0, getExit()) More...
 
virtual double getOrigin () const
 Get origin position. More...
 
virtual double getEntrance () const
 Get entrance position. More...
 
virtual double getExit () const
 Get exit position. More...
 
virtual Euclid3D getTotalTransform () const
 Get transform. More...
 
virtual Euclid3D getEntrancePatch () const
 Get patch. More...
 
virtual Euclid3D getExitPatch () const
 Get patch. More...
 

Private Attributes

double length_m
 
double rho_m
 
double s_0_m
 
double lambda_left_m
 
double lambda_right_m
 

Detailed Description


VarRadiusGeometry represents a Geometry with variable radius. Assuming
a Tanh model for fringe fields, the radius of curvature varies inversely
proportional with the fringe field. Such a magnet will follow the
trajectory of the reference particle. The origin is defined at the centre and extends from -length / 2 to
+length / 2. Transformations are calculated using a CoordinateTransformation object,
which integrates to find the reference trajectory.


Class category: AbsBeamline
$Author: Martin Duy Tat, Chris Rogers



Definition at line 57 of file VarRadiusGeometry.h.

Constructor & Destructor Documentation

◆ VarRadiusGeometry() [1/2]

VarRadiusGeometry::VarRadiusGeometry ( double  length,
double  rho,
double  s_0,
double  lambda_left,
double  lambda_right 
)
inline

Build VarRadiusGeometry with given length, centre radius of curvature and fringe field.

Parameters
length-> Length of geometry
rho-> Centre radius of curvature of geometry
s_0-> Length of central fringe field
lambda_left-> Length of left end fringe field
lambda_right-> Length of right end fringe field

Definition at line 143 of file VarRadiusGeometry.h.

◆ VarRadiusGeometry() [2/2]

VarRadiusGeometry::VarRadiusGeometry ( const VarRadiusGeometry right)
inline

Copy constructor.

Definition at line 153 of file VarRadiusGeometry.h.

◆ ~VarRadiusGeometry()

VarRadiusGeometry::~VarRadiusGeometry ( )
inlinevirtual

Destructor.

Definition at line 171 of file VarRadiusGeometry.h.

Member Function Documentation

◆ getArcLength()

double VarRadiusGeometry::getArcLength ( ) const
inlinevirtual

Arc length along the design arc.

Implements BGeometryBase.

Definition at line 174 of file VarRadiusGeometry.h.

References length_m.

◆ getElementLength()

double VarRadiusGeometry::getElementLength ( ) const
inlinevirtual

Get element length measured along hte design arc.

Implements BGeometryBase.

Definition at line 178 of file VarRadiusGeometry.h.

References length_m.

◆ getEntrance()

double BGeometryBase::getEntrance ( ) const
virtualinherited

Get entrance position.

Reimplemented in PlanarArcGeometry, StraightGeometry, and BeamlineGeometry.

Definition at line 41 of file Geometry.cpp.

References BGeometryBase::getOrigin().

Referenced by ElementBase::getEntrance(), BGeometryBase::getEntranceFrame(), getEntranceFrame(), and BGeometryBase::getTotalTransform().

Here is the call graph for this function:

◆ getEntranceFrame()

Euclid3D VarRadiusGeometry::getEntranceFrame ( ) const
inlinevirtual

Transform of the local coordinate system from the origin to the entrance of the element Equivalent to getTransform(0.0, getEntrance())

Reimplemented from BGeometryBase.

Definition at line 222 of file VarRadiusGeometry.h.

References BGeometryBase::getEntrance(), BGeometryBase::getOrigin(), and getTransform().

Here is the call graph for this function:

◆ getEntrancePatch()

Euclid3D BGeometryBase::getEntrancePatch ( ) const
virtualinherited

Get patch.

Reimplemented in RBendGeometry.

Definition at line 71 of file Geometry.cpp.

References Euclid3D::identity().

Referenced by ElementBase::getEntrancePatch().

Here is the call graph for this function:

◆ getExit()

double BGeometryBase::getExit ( ) const
virtualinherited

Get exit position.

Reimplemented in PlanarArcGeometry, StraightGeometry, and BeamlineGeometry.

Definition at line 46 of file Geometry.cpp.

References BGeometryBase::getArcLength(), and BGeometryBase::getOrigin().

Referenced by ElementBase::getExit(), BGeometryBase::getExitFrame(), getExitFrame(), and BGeometryBase::getTotalTransform().

Here is the call graph for this function:

◆ getExitFrame()

Euclid3D VarRadiusGeometry::getExitFrame ( ) const
inlinevirtual

Transform of the local coordinate system from the origin to the exit of the element Equivalent to getTransform(0.0, getExit())

Reimplemented from BGeometryBase.

Definition at line 226 of file VarRadiusGeometry.h.

References BGeometryBase::getExit(), BGeometryBase::getOrigin(), and getTransform().

Here is the call graph for this function:

◆ getExitPatch()

Euclid3D BGeometryBase::getExitPatch ( ) const
virtualinherited

Get patch.

Reimplemented in RBendGeometry.

Definition at line 76 of file Geometry.cpp.

References Euclid3D::identity().

Referenced by ElementBase::getExitPatch().

Here is the call graph for this function:

◆ getLambdaLeft()

double VarRadiusGeometry::getLambdaLeft ( ) const
inline

Get left end fringe field length.

Definition at line 206 of file VarRadiusGeometry.h.

References lambda_left_m.

◆ getLambdaRight()

double VarRadiusGeometry::getLambdaRight ( ) const
inline

Get right end fringe field length.

Definition at line 214 of file VarRadiusGeometry.h.

References lambda_right_m.

◆ getOrigin()

double BGeometryBase::getOrigin ( ) const
virtualinherited

Get origin position.

Reimplemented in NullGeometry, PlanarArcGeometry, StraightGeometry, and BeamlineGeometry.

Definition at line 36 of file Geometry.cpp.

References BGeometryBase::getArcLength().

Referenced by BGeometryBase::getEntrance(), getEntranceFrame(), BGeometryBase::getExit(), getExitFrame(), and ElementBase::getOrigin().

Here is the call graph for this function:

◆ getRadius()

double VarRadiusGeometry::getRadius ( ) const
inline

Get centre radius of curvature.

Definition at line 190 of file VarRadiusGeometry.h.

References rho_m.

◆ getS0()

double VarRadiusGeometry::getS0 ( ) const
inline

Get central fringe field length.

Definition at line 198 of file VarRadiusGeometry.h.

References s_0_m.

◆ getTotalTransform()

Euclid3D BGeometryBase::getTotalTransform ( ) const
virtualinherited

Get transform.

Reimplemented in Euclid3DGeometry, PlanarArcGeometry, RBendGeometry, StraightGeometry, and BeamlineGeometry.

Definition at line 51 of file Geometry.cpp.

References BGeometryBase::getEntrance(), BGeometryBase::getExit(), and BGeometryBase::getTransform().

Referenced by Ring::appendElement(), and ElementBase::getTotalTransform().

Here is the call graph for this function:

◆ getTransform() [1/2]

Euclid3D VarRadiusGeometry::getTransform ( double  fromS) const
virtual

Transform of the local coordinate system from the origin to the entrance of the element Equivalent to getTransform(0.0, getEntrance())

Reimplemented from BGeometryBase.

Definition at line 49 of file VarRadiusGeometry.cpp.

◆ getTransform() [2/2]

Euclid3D VarRadiusGeometry::getTransform ( double  fromS,
double  toS 
) const
virtual

Transform of the local coordinate system.

Parameters
fromS-> Transform from this position
toS-> Transform to this position

Implements BGeometryBase.

Definition at line 34 of file VarRadiusGeometry.cpp.

References coordinatetransform::CoordinateTransform::calcReferenceTrajectory(), coordinatetransform::CoordinateTransform::getUnitTangentVector(), lambda_left_m, lambda_right_m, rho_m, s_0_m, Euclid3D::setX(), Euclid3D::setZ(), and Euclid3D::YRotation().

Referenced by getEntranceFrame(), and getExitFrame().

Here is the call graph for this function:

◆ operator=()

const VarRadiusGeometry & VarRadiusGeometry::operator= ( const VarRadiusGeometry right)
inline

Assigment operator.

Definition at line 161 of file VarRadiusGeometry.h.

References lambda_left_m, lambda_right_m, length_m, rho_m, and s_0_m.

◆ setElementLength()

void VarRadiusGeometry::setElementLength ( double  length)
inlinevirtual

Set arc length.

Parameters
length-> Length of element

Reimplemented from BGeometryBase.

Definition at line 182 of file VarRadiusGeometry.h.

References length_m, and ippl::max().

Referenced by MultipoleTCurvedVarRadius::initialise().

Here is the call graph for this function:

◆ setLambdaLeft()

void VarRadiusGeometry::setLambdaLeft ( const double &  lambda_left)
inline

Set left end fringe field length.

Parameters
lambda_left-> Left end fringe field length

Definition at line 210 of file VarRadiusGeometry.h.

References lambda_left_m.

Referenced by MultipoleTCurvedVarRadius::initialise().

◆ setLambdaRight()

void VarRadiusGeometry::setLambdaRight ( const double &  lambda_right)
inline

Set right end fringe field length.

Parameters
lambda_right-> Right end fringe field length

Definition at line 218 of file VarRadiusGeometry.h.

References lambda_right_m.

Referenced by MultipoleTCurvedVarRadius::initialise().

◆ setRadius()

void VarRadiusGeometry::setRadius ( const double &  rho)
inline

Set centre radius of curvature.

Parameters
rho-> Central radius of curvature

Definition at line 194 of file VarRadiusGeometry.h.

References rho_m.

Referenced by MultipoleTCurvedVarRadius::initialise().

◆ setS0()

void VarRadiusGeometry::setS0 ( const double &  s_0)
inline

Set central fringe field length.

Parameters
s_0-> Central fringe field length

Definition at line 202 of file VarRadiusGeometry.h.

References s_0_m.

Referenced by MultipoleTCurvedVarRadius::initialise().

Member Data Documentation

◆ lambda_left_m

double VarRadiusGeometry::lambda_left_m
private

Definition at line 136 of file VarRadiusGeometry.h.

Referenced by getLambdaLeft(), getTransform(), operator=(), and setLambdaLeft().

◆ lambda_right_m

double VarRadiusGeometry::lambda_right_m
private

Definition at line 137 of file VarRadiusGeometry.h.

Referenced by getLambdaRight(), getTransform(), operator=(), and setLambdaRight().

◆ length_m

double VarRadiusGeometry::length_m
private

Definition at line 133 of file VarRadiusGeometry.h.

Referenced by getArcLength(), getElementLength(), operator=(), and setElementLength().

◆ rho_m

double VarRadiusGeometry::rho_m
private

Definition at line 134 of file VarRadiusGeometry.h.

Referenced by getRadius(), getTransform(), operator=(), and setRadius().

◆ s_0_m

double VarRadiusGeometry::s_0_m
private

Definition at line 135 of file VarRadiusGeometry.h.

Referenced by getS0(), getTransform(), operator=(), and setS0().


The documentation for this class was generated from the following files: