OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
ParallelTracker Class Reference

#include <ParallelTracker.h>

Inheritance diagram for ParallelTracker:
Collaboration diagram for ParallelTracker:

Public Types

typedef std::vector< double > dvector_t
typedef std::vector< int > ivector_t
typedef std::pair< double[8], Component * > element_pair
typedef std::pair< ElementType, element_pairtype_pair
typedef std::list< type_pair * > beamline_list
enum  {
  X , PX , Y , PY ,
  T , PT
}

Public Member Functions

 ParallelTracker (const Beamline &bl, const PartData &data, bool revBeam, bool revTrack)
 Constructor.
 ParallelTracker (const Beamline &bl, PartBunch_t *bunch, DataSink &ds, const PartData &data, bool revBeam, bool revTrack, const std::vector< unsigned long long > &maxSTEPS, double zstart, const std::vector< double > &zstop, const std::vector< double > &dt)
 Constructor.
virtual ~ParallelTracker ()
virtual void execute ()
 Apply the algorithm to the top-level beamline.
virtual void visitBeamline (const Beamline &)
 Apply the algorithm to a beam line.
virtual void visitDrift (const Drift &)
 Apply the algorithm to a drift space.
virtual void visitRing (const Ring &ring)
 Apply the algorithm to a ring.
virtual void visitMarker (const Marker &)
 Apply the algorithm to a marker.
virtual void visitMultipole (const Multipole &)
 Apply the algorithm to a multipole.
virtual void visitMultipoleT (const MultipoleT &)
 Apply the algorithm to an arbitrary multipole.
virtual void visitOffset (const Offset &)
 Apply the algorithm to a offset (placement).
virtual void visitRFCavity (const RFCavity &)
 Apply the algorithm to a RF cavity.
virtual void visitSolenoid (const Solenoid &)
 Apply the algorithm to a RF cavity.
virtual void visitTravelingWave (const TravelingWave &)
 Apply the algorithm to a traveling wave.
virtual void visitScalingFFAMagnet (const ScalingFFAMagnet &bend)
 Apply the algorithm to a scaling FFA.
virtual void visitVerticalFFAMagnet (const VerticalFFAMagnet &bend)
 Apply the algorithm to a vertical FFA magnet.
void kickParticles (const BorisPusher &pusher)
void pushParticles (const BorisPusher &pusher)
void timeIntegration2 (BorisPusher &pusher)
void changeDT (bool backTrack=false)
void computeSpaceChargeFields (unsigned long long step)
void setTime ()
const PartBunch_tgetBunch () const
 Return the current bunch.
void addToBunch (const OpalParticle &)
 Add particle to bunch.
virtual void visitComponent (const Component &)
 Store the bunch.
virtual void setNumBunch (short)
 set total number of tracked bunches
virtual short getNumBunch ()
 get total number of tracked bunches
virtual void visitFlaggedElmPtr (const FlaggedElmPtr &)
 Apply the algorithm to a FlaggedElmPtr.
virtual void visitMonitor (const Monitor &)
 Apply the algorithm to a beam position monitor.
virtual void visitMultipoleTStraight (const MultipoleTStraight &)
 Apply the algorithm to an arbitrary straight multipole.
virtual void visitMultipoleTCurvedConstRadius (const MultipoleTCurvedConstRadius &)
 Apply the algorithm to an arbitrary curved multipole of constant radius.
virtual void visitMultipoleTCurvedVarRadius (const MultipoleTCurvedVarRadius &)
 Apply the algorithm to an arbitrary curved multipole of variable radius.
virtual void visitProbe (const Probe &prob)
 Apply the algorithm to a Probe.

Public Attributes

FieldList cavities_m
const BeamlineitsBeamline_m

Protected Attributes

PartBunch_titsBunch_m
 The bunch of particles to be tracked.
const PartData itsReference
 The reference information.
const BeamlineitsLine
bool back_beam
bool back_track
bool back_path
double flip_B
double flip_s

Private Member Functions

 ParallelTracker ()
 ParallelTracker (const ParallelTracker &)
void operator= (const ParallelTracker &)
void buildupFieldList (double BcParameter[], ElementType elementType, Component *elptr)
void updateReferenceParticle (const BorisPusher &pusher)
void writePhaseSpace (const long long step, bool psDump, bool statDump)
void updateRFElement (std::string elName, double maxPhi)
void printRFPhases ()
void saveCavityPhases ()
void restoreCavityPhases ()
void prepareSections ()
void timeIntegration1 (BorisPusher &pusher)
void selectDT (bool backTrack=false)
void emitParticles (long long step)
void computeExternalFields (OrbitThreader &oth)
void computeWakefield (IndexMap::value_t &elements)
void computeParticleMatterInteraction (IndexMap::value_t elements, OrbitThreader &oth)
void dumpStats (long long step, bool psDump, bool statDump)
void setOptionalVariables ()
bool hasEndOfLineReached (const BoundingBox &globalBoundingBox)
void handleRestartRun ()
void doBinaryRepartition ()
void transformBunch (const CoordinateSystemTrafo &trafo)
void updateReference (const BorisPusher &pusher)
void updateRefToLabCSTrafo ()
void applyFractionalStep (const BorisPusher &pusher, double tau)
void findStartPosition (const BorisPusher &pusher)
void autophaseCavities (const BorisPusher &pusher)
bool applyPluginElements (const double dt)
virtual void applyDefault (const ElementBase &)

Private Attributes

DataSinkitsDataSink_m
OpalBeamline itsOpalBeamline_m
RingopalRing_m
bool globalEOL_m
bool wakeStatus_m
bool deletedParticles_m
WakeFunction * wakeFunction_m
double pathLength_m
double zstart_m
 where to start
StepSizeConfig stepSizes_m
double dtCurrentTrack_m
int minStepforReBin_m
unsigned long long repartFreq_m
unsigned int emissionSteps_m
size_t numParticlesInSimulation_m
IpplTimings::TimerRef timeIntegrationTimer1_m
IpplTimings::TimerRef timeIntegrationTimer2_m
IpplTimings::TimerRef fieldEvaluationTimer_m
IpplTimings::TimerRef WakeFieldTimer_m
IpplTimings::TimerRef PluginElemTimer_m
IpplTimings::TimerRef BinRepartTimer_m
IpplTimings::TimerRef OrbThreader_m
std::set< ParticleMatterInteractionHandler * > activeParticleMatterInteractionHandlers_m
bool particleMatterStatus_m
unsigned turnnumber_m
std::list< Component * > myElements
beamline_list FieldDimensions
double bega
 The reference variables.
double referenceR
double referenceTheta
double referenceZ = 0.0
double referencePr
double referencePt
double referencePz = 0.0
double referencePtot
double referencePsi
double referencePhi
double sinRefTheta_m
double cosRefTheta_m
std::vector< PluginElement * > pluginElements_m
bool local_flip

Detailed Description

Definition at line 59 of file ParallelTracker.h.

Member Typedef Documentation

◆ beamline_list

Definition at line 120 of file ParallelTracker.h.

◆ dvector_t

typedef std::vector<double> ParallelTracker::dvector_t

Definition at line 116 of file ParallelTracker.h.

◆ element_pair

typedef std::pair<double[8], Component*> ParallelTracker::element_pair

Definition at line 118 of file ParallelTracker.h.

◆ ivector_t

typedef std::vector<int> ParallelTracker::ivector_t

Definition at line 117 of file ParallelTracker.h.

◆ type_pair

Definition at line 119 of file ParallelTracker.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited
Enumerator
PX 
PY 
PT 

Definition at line 39 of file AbstractTracker.h.

Constructor & Destructor Documentation

◆ ParallelTracker() [1/4]

ParallelTracker::ParallelTracker ( const Beamline & bl,
const PartData & data,
bool revBeam,
bool revTrack )
explicit

Constructor.

Definition at line 61 of file ParallelTracker.cpp.

References BinRepartTimer_m, dtCurrentTrack_m, emissionSteps_m, fieldEvaluationTimer_m, globalEOL_m, itsDataSink_m, itsOpalBeamline_m, minStepforReBin_m, numParticlesInSimulation_m, opalRing_m, OrbThreader_m, pathLength_m, PluginElemTimer_m, repartFreq_m, timeIntegrationTimer1_m, timeIntegrationTimer2_m, Tracker::Tracker(), wakeFunction_m, wakeStatus_m, and zstart_m.

Referenced by operator=(), and ParallelTracker().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ParallelTracker() [2/4]

ParallelTracker::ParallelTracker ( const Beamline & bl,
PartBunch_t * bunch,
DataSink & ds,
const PartData & data,
bool revBeam,
bool revTrack,
const std::vector< unsigned long long > & maxSTEPS,
double zstart,
const std::vector< double > & zstop,
const std::vector< double > & dt )
explicit

Constructor.

Definition at line 85 of file ParallelTracker.cpp.

References BinRepartTimer_m, dtCurrentTrack_m, emissionSteps_m, fieldEvaluationTimer_m, globalEOL_m, itsDataSink_m, itsOpalBeamline_m, minStepforReBin_m, numParticlesInSimulation_m, opalRing_m, OrbThreader_m, pathLength_m, repartFreq_m, stepSizes_m, timeIntegrationTimer1_m, timeIntegrationTimer2_m, Tracker::Tracker(), wakeFunction_m, wakeStatus_m, and zstart_m.

Here is the call graph for this function:

◆ ~ParallelTracker()

ParallelTracker::~ParallelTracker ( )
virtual

Definition at line 117 of file ParallelTracker.cpp.

◆ ParallelTracker() [3/4]

ParallelTracker::ParallelTracker ( )
private

◆ ParallelTracker() [4/4]

ParallelTracker::ParallelTracker ( const ParallelTracker & )
private

References ParallelTracker().

Here is the call graph for this function:

Member Function Documentation

◆ addToBunch()

void Tracker::addToBunch ( const OpalParticle & part)
inherited

Add particle to bunch.

Definition at line 94 of file Tracker.cpp.

◆ applyDefault()

void DefaultVisitor::applyDefault ( const ElementBase & )
privatevirtualinherited

Definition at line 146 of file DefaultVisitor.cpp.

Referenced by visitComponent(), visitDrift(), visitMarker(), visitMonitor(), visitMultipole(), visitMultipoleT(), visitMultipoleTCurvedConstRadius(), visitMultipoleTCurvedVarRadius(), visitMultipoleTStraight(), visitOffset(), visitProbe(), visitRFCavity(), visitRing(), visitScalingFFAMagnet(), visitSolenoid(), visitTravelingWave(), and visitVerticalFFAMagnet().

Here is the caller graph for this function:

◆ applyFractionalStep()

void ParallelTracker::applyFractionalStep ( const BorisPusher & pusher,
double tau )
private

Definition at line 1030 of file ParallelTracker.cpp.

References Physics::c, getQuaternion(), CoordinateSystemTrafo::inverted(), Tracker::itsBunch_m, pathLength_m, BorisPusher::push(), and zstart_m.

Referenced by findStartPosition().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ applyPluginElements()

bool ParallelTracker::applyPluginElements ( const double dt)
private

◆ autophaseCavities()

void ParallelTracker::autophaseCavities ( const BorisPusher & pusher)
private

Definition at line 1105 of file ParallelTracker.cpp.

References Physics::c, RFCavity::getAutophaseVeto(), CavityAutophaser::getPhaseAtMaxEnergy(), Tracker::itsBunch_m, itsOpalBeamline_m, AbstractTracker::itsReference, BorisPusher::push(), RFCAVITY, and TRAVELINGWAVE.

Referenced by findStartPosition().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildupFieldList()

void ParallelTracker::buildupFieldList ( double BcParameter[],
ElementType elementType,
Component * elptr )
private

Definition at line 134 of file ParallelTracker.cpp.

References FieldDimensions, and RING.

Referenced by visitRing().

Here is the caller graph for this function:

◆ changeDT()

void ParallelTracker::changeDT ( bool backTrack = false)

Definition at line 542 of file ParallelTracker.cpp.

References Tracker::itsBunch_m, and selectDT().

Referenced by execute(), and findStartPosition().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeExternalFields()

void ParallelTracker::computeExternalFields ( OrbitThreader & oth)
private

Definition at line 667 of file ParallelTracker.cpp.

References deletedParticles_m, end(), fieldEvaluationTimer_m, globalEOL_m, gmsg, CoordinateSystemTrafo::inverted(), Tracker::itsBunch_m, itsOpalBeamline_m, numParticlesInSimulation_m, pathLength_m, and OrbitThreader::query().

Here is the call graph for this function:

◆ computeParticleMatterInteraction()

void ParallelTracker::computeParticleMatterInteraction ( IndexMap::value_t elements,
OrbitThreader & oth )
private

◆ computeSpaceChargeFields()

void ParallelTracker::computeSpaceChargeFields ( unsigned long long step)

referernce to beam coordinate system transformation old: referenceToBeamCSTrafo.transformTo

x = Rot * (x-o)

beam to referernce coordinate system transformation and field rotation
old: itsBunch_m->R[i] = beamToReferenceCSTrafo.transformTo(itsBunch_m->R[i]); itsBunch_m->Ef[i] = beamToReferenceCSTrafo.rotateTo(itsBunch_m->Ef[i]); itsBunch_m->Bf[i] = beamToReferenceCSTrafo.rotateTo(itsBunch_m->Bf[i]);

x = M^T(x+o) prod_boost_vector(boost::numeric::ublas::trans(rotationMatrix_m)

Definition at line 561 of file ParallelTracker.cpp.

References Quaternion::conjugate(), doBinaryRepartition(), CoordinateSystemTrafo::getOrigin(), getQuaternion(), CoordinateSystemTrafo::getRotationMatrix(), gmsg, CoordinateSystemTrafo::inverted(), Tracker::itsBunch_m, pathLength_m, and repartFreq_m.

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeWakefield()

void ParallelTracker::computeWakefield ( IndexMap::value_t & elements)
private

◆ doBinaryRepartition()

void ParallelTracker::doBinaryRepartition ( )
private

Definition at line 751 of file ParallelTracker.cpp.

References BinRepartTimer_m, and Tracker::itsBunch_m.

Referenced by computeSpaceChargeFields().

Here is the caller graph for this function:

◆ dumpStats()

void ParallelTracker::dumpStats ( long long step,
bool psDump,
bool statDump )
private

Definition at line 765 of file ParallelTracker.cpp.

References Util::getEnergyString(), Util::getLengthString(), Util::getTimeString(), gmsg, Tracker::itsBunch_m, numParticlesInSimulation_m, pathLength_m, OPALTimer::Timer::time(), and writePhaseSpace().

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emitParticles()

void ParallelTracker::emitParticles ( long long step)
private

Definition at line 557 of file ParallelTracker.cpp.

◆ execute()

◆ findStartPosition()

void ParallelTracker::findStartPosition ( const BorisPusher & pusher)
private

Definition at line 1050 of file ParallelTracker.cpp.

References applyFractionalStep(), autophaseCavities(), DefaultVisitor::back_track, Physics::c, changeDT(), dtCurrentTrack_m, euclidean_norm(), StepSizeConfig::getdT(), Util::getGamma(), StepSizeConfig::getZStop(), Tracker::itsBunch_m, pathLength_m, StepSizeConfig::reachedEnd(), selectDT(), StepSizeConfig::shiftZStopLeft(), stepSizes_m, updateReferenceParticle(), and zstart_m.

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBunch()

const PartBunch_t * Tracker::getBunch ( ) const
inherited

Return the current bunch.

Definition at line 90 of file Tracker.cpp.

References itsBunch_m.

◆ getNumBunch()

virtual short Tracker::getNumBunch ( )
inlinevirtualinherited

get total number of tracked bunches

Definition at line 112 of file Tracker.h.

◆ handleRestartRun()

void ParallelTracker::handleRestartRun ( )
private

◆ hasEndOfLineReached()

bool ParallelTracker::hasEndOfLineReached ( const BoundingBox & globalBoundingBox)
private

Definition at line 827 of file ParallelTracker.cpp.

References globalEOL_m, BoundingBox::isOutside(), and Tracker::itsBunch_m.

Here is the call graph for this function:

◆ kickParticles()

void ParallelTracker::kickParticles ( const BorisPusher & pusher)
inline

Definition at line 304 of file ParallelTracker.h.

References Physics::c, cross(), dot(), Tracker::itsBunch_m, and AbstractTracker::itsReference.

Referenced by timeIntegration2().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

void ParallelTracker::operator= ( const ParallelTracker & )
private

References ParallelTracker().

Here is the call graph for this function:

◆ prepareSections()

void ParallelTracker::prepareSections ( )
private

Definition at line 482 of file ParallelTracker.cpp.

References Tracker::itsBeamline_m, and itsOpalBeamline_m.

Referenced by execute().

Here is the caller graph for this function:

◆ printRFPhases()

void ParallelTracker::printRFPhases ( )
private

◆ pushParticles()

void ParallelTracker::pushParticles ( const BorisPusher & pusher)
inline

\[ \vec{x}_{n+1/2} = \vec{x}_{n} + \frac{1}{2}\vec{v}_{n-1/2}\quad (= \vec{x}_{n} + \frac{\Delta t}{2} \frac{\vec{\beta}_{n-1/2}\gamma_{n-1/2}}{\gamma_{n-1/2}}) \]

R[i] += 0.5 * P[i] * recpgamma;

Definition at line 375 of file ParallelTracker.h.

References dot(), and Tracker::itsBunch_m.

Referenced by timeIntegration1(), and timeIntegration2().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ restoreCavityPhases()

void ParallelTracker::restoreCavityPhases ( )
private

Definition at line 289 of file ParallelTracker.cpp.

References end(), OpalData::getFirstMaxPhases(), OpalData::getInstance(), OpalData::getLastMaxPhases(), and updateRFElement().

Here is the call graph for this function:

◆ saveCavityPhases()

void ParallelTracker::saveCavityPhases ( )
private

Definition at line 285 of file ParallelTracker.cpp.

References itsDataSink_m.

◆ selectDT()

void ParallelTracker::selectDT ( bool backTrack = false)
private

Definition at line 533 of file ParallelTracker.cpp.

References dtCurrentTrack_m, and Tracker::itsBunch_m.

Referenced by changeDT(), execute(), and findStartPosition().

Here is the caller graph for this function:

◆ setNumBunch()

virtual void Tracker::setNumBunch ( short )
inlinevirtualinherited

set total number of tracked bunches

Definition at line 109 of file Tracker.h.

◆ setOptionalVariables()

void ParallelTracker::setOptionalVariables ( )
private

Definition at line 803 of file ParallelTracker.cpp.

References OpalData::find(), OpalData::getInstance(), RealVariable::getReal(), gmsg, Options::repartFreq, and repartFreq_m.

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTime()

void ParallelTracker::setTime ( )

Definition at line 834 of file ParallelTracker.cpp.

References Tracker::itsBunch_m.

Referenced by execute().

Here is the caller graph for this function:

◆ timeIntegration1()

void ParallelTracker::timeIntegration1 ( BorisPusher & pusher)
private

Definition at line 490 of file ParallelTracker.cpp.

References pushParticles(), and timeIntegrationTimer1_m.

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ timeIntegration2()

void ParallelTracker::timeIntegration2 ( BorisPusher & pusher)

Definition at line 496 of file ParallelTracker.cpp.

References Tracker::itsBunch_m, kickParticles(), pushParticles(), and timeIntegrationTimer2_m.

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transformBunch()

void ParallelTracker::transformBunch ( const CoordinateSystemTrafo & trafo)
private

Definition at line 993 of file ParallelTracker.cpp.

References Tracker::itsBunch_m.

Referenced by updateRefToLabCSTrafo().

Here is the caller graph for this function:

◆ updateReference()

void ParallelTracker::updateReference ( const BorisPusher & pusher)
private

Definition at line 949 of file ParallelTracker.cpp.

References updateReferenceParticle(), and updateRefToLabCSTrafo().

Referenced by execute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateReferenceParticle()

void ParallelTracker::updateReferenceParticle ( const BorisPusher & pusher)
private

Definition at line 954 of file ParallelTracker.cpp.

References DefaultVisitor::back_track, Physics::c, end(), globalEOL_m, gmsg, Tracker::itsBunch_m, itsOpalBeamline_m, BorisPusher::kick(), BorisPusher::push(), CoordinateSystemTrafo::rotateFrom(), CoordinateSystemTrafo::rotateTo(), and CoordinateSystemTrafo::transformTo().

Referenced by findStartPosition(), and updateReference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateRefToLabCSTrafo()

void ParallelTracker::updateRefToLabCSTrafo ( )
private

Definition at line 1005 of file ParallelTracker.cpp.

References euclidean_norm(), getQuaternion(), CoordinateSystemTrafo::inverted(), Tracker::itsBunch_m, pathLength_m, and transformBunch().

Referenced by updateReference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateRFElement()

void ParallelTracker::updateRFElement ( std::string elName,
double maxPhi )
private

Definition at line 247 of file ParallelTracker.cpp.

References ElementBase::getName(), itsOpalBeamline_m, RFCAVITY, RFCavity::setAutophaseVeto(), RFCavity::setPhasem(), and TRAVELINGWAVE.

Referenced by restoreCavityPhases().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ visitBeamline()

void ParallelTracker::visitBeamline ( const Beamline & bl)
virtual

Apply the algorithm to a beam line.

Reimplemented from DefaultVisitor.

Definition at line 221 of file ParallelTracker.cpp.

References TBeamline< T >::getInitialDirection(), TBeamline< T >::getOrigin3D(), TBeamline< T >::getRelativeFlag(), TBeamline< T >::iterate(), itsOpalBeamline_m, OpalBeamline::merge(), and OpalBeamline::swap().

Here is the call graph for this function:

◆ visitComponent()

void Tracker::visitComponent ( const Component & comp)
virtualinherited

Store the bunch.

Apply the algorithm to an arbitrary component.

Reimplemented from DefaultVisitor.

Definition at line 101 of file Tracker.cpp.

References DefaultVisitor::back_beam, DefaultVisitor::back_track, itsBunch_m, AbstractTracker::itsReference, and Component::trackBunch().

Here is the call graph for this function:

◆ visitDrift()

void ParallelTracker::visitDrift ( const Drift & drift)
inlinevirtual

Apply the algorithm to a drift space.

Reimplemented from DefaultVisitor.

Definition at line 276 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitFlaggedElmPtr()

void DefaultVisitor::visitFlaggedElmPtr ( const FlaggedElmPtr & fep)
virtualinherited

Apply the algorithm to a FlaggedElmPtr.

Implements BeamlineVisitor.

Reimplemented in Flagger, RangeSelector, and Replacer.

Definition at line 136 of file DefaultVisitor.cpp.

References ElementBase::accept(), ElmPtr::getElement(), FlaggedElmPtr::getReflectionFlag(), and local_flip.

Referenced by RangeSelector::handleBeamline(), RangeSelector::handleElement(), Flagger::visitFlaggedElmPtr(), and Replacer::visitFlaggedElmPtr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ visitMarker()

void ParallelTracker::visitMarker ( const Marker & marker)
inlinevirtual

Apply the algorithm to a marker.

Reimplemented from DefaultVisitor.

Definition at line 280 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitMonitor()

void DefaultVisitor::visitMonitor ( const Monitor & mon)
virtualinherited

Apply the algorithm to a beam position monitor.

Implements BeamlineVisitor.

Definition at line 73 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitMultipole()

void ParallelTracker::visitMultipole ( const Multipole & mult)
inlinevirtual

Apply the algorithm to a multipole.

Reimplemented from DefaultVisitor.

Definition at line 284 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitMultipoleT()

void ParallelTracker::visitMultipoleT ( const MultipoleT & mult)
inlinevirtual

Apply the algorithm to an arbitrary multipole.

Reimplemented from DefaultVisitor.

Definition at line 288 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitMultipoleTCurvedConstRadius()

void DefaultVisitor::visitMultipoleTCurvedConstRadius ( const MultipoleTCurvedConstRadius & multTccurv)
virtualinherited

Apply the algorithm to an arbitrary curved multipole of constant radius.

Implements BeamlineVisitor.

Definition at line 89 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitMultipoleTCurvedVarRadius()

void DefaultVisitor::visitMultipoleTCurvedVarRadius ( const MultipoleTCurvedVarRadius & multTvcurv)
virtualinherited

Apply the algorithm to an arbitrary curved multipole of variable radius.

Implements BeamlineVisitor.

Definition at line 94 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitMultipoleTStraight()

void DefaultVisitor::visitMultipoleTStraight ( const MultipoleTStraight & multTstraight)
virtualinherited

Apply the algorithm to an arbitrary straight multipole.

Implements BeamlineVisitor.

Definition at line 85 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitOffset()

void ParallelTracker::visitOffset ( const Offset & off)
virtual

Apply the algorithm to a offset (placement).

  • * *

    Parameters
    off

Reimplemented from DefaultVisitor.

Definition at line 237 of file ParallelTracker.cpp.

References opalRing_m, and Offset::updateGeometry().

Here is the call graph for this function:

◆ visitProbe()

void DefaultVisitor::visitProbe ( const Probe & prob)
virtualinherited

Apply the algorithm to a Probe.

Implements BeamlineVisitor.

Definition at line 126 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitRFCavity()

void ParallelTracker::visitRFCavity ( const RFCavity & as)
inlinevirtual

Apply the algorithm to a RF cavity.

Reimplemented from DefaultVisitor.

Definition at line 292 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitRing()

void ParallelTracker::visitRing ( const Ring & ring)
virtual

Apply the algorithm to a ring.

Reimplemented from DefaultVisitor.

Definition at line 159 of file ParallelTracker.cpp.

References buildupFieldList(), Ring::clone(), cosRefTheta_m, Units::deg2rad, gmsg, Tracker::itsBunch_m, AbstractTracker::itsReference, myElements, opalRing_m, referencePr, referencePt, referencePtot, referencePz, referenceR, referenceTheta, referenceZ, RING, and sinRefTheta_m.

Here is the call graph for this function:

◆ visitScalingFFAMagnet()

void ParallelTracker::visitScalingFFAMagnet ( const ScalingFFAMagnet & bend)
virtual

Apply the algorithm to a scaling FFA.

Reimplemented from DefaultVisitor.

Definition at line 120 of file ParallelTracker.cpp.

References gmsg.

◆ visitSolenoid()

void ParallelTracker::visitSolenoid ( const Solenoid & so)
inlinevirtual

Apply the algorithm to a RF cavity.

Reimplemented from DefaultVisitor.

Definition at line 296 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitTravelingWave()

void ParallelTracker::visitTravelingWave ( const TravelingWave & as)
inlinevirtual

Apply the algorithm to a traveling wave.

Reimplemented from DefaultVisitor.

Definition at line 300 of file ParallelTracker.h.

References Tracker::itsBunch_m, and itsOpalBeamline_m.

◆ visitVerticalFFAMagnet()

void ParallelTracker::visitVerticalFFAMagnet ( const VerticalFFAMagnet & mag)
virtual

Apply the algorithm to a vertical FFA magnet.

Parameters
mag

Reimplemented from DefaultVisitor.

Definition at line 211 of file ParallelTracker.cpp.

References gmsg, and opalRing_m.

◆ writePhaseSpace()

void ParallelTracker::writePhaseSpace ( const long long step,
bool psDump,
bool statDump )
private

Definition at line 846 of file ParallelTracker.cpp.

References gmsg, Tracker::itsBunch_m, itsDataSink_m, itsOpalBeamline_m, and Units::Vpm2MVpm.

Referenced by dumpStats(), and execute().

Here is the caller graph for this function:

Member Data Documentation

◆ activeParticleMatterInteractionHandlers_m

std::set<ParticleMatterInteractionHandler*> ParallelTracker::activeParticleMatterInteractionHandlers_m
private

Definition at line 112 of file ParallelTracker.h.

◆ back_beam

bool DefaultVisitor::back_beam
protectedinherited

Definition at line 107 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), execute(), and Tracker::visitComponent().

◆ back_path

bool DefaultVisitor::back_path
protectedinherited

Definition at line 109 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ back_track

◆ bega

double ParallelTracker::bega
private

The reference variables.

Definition at line 211 of file ParallelTracker.h.

◆ BinRepartTimer_m

IpplTimings::TimerRef ParallelTracker::BinRepartTimer_m
private

Definition at line 109 of file ParallelTracker.h.

Referenced by doBinaryRepartition(), ParallelTracker(), and ParallelTracker().

◆ cavities_m

FieldList Tracker::cavities_m
inherited

Definition at line 117 of file Tracker.h.

◆ cosRefTheta_m

double ParallelTracker::cosRefTheta_m
private

Definition at line 225 of file ParallelTracker.h.

Referenced by visitRing().

◆ deletedParticles_m

bool ParallelTracker::deletedParticles_m
private

Definition at line 76 of file ParallelTracker.h.

Referenced by computeExternalFields(), and execute().

◆ dtCurrentTrack_m

double ParallelTracker::dtCurrentTrack_m
private

◆ emissionSteps_m

unsigned int ParallelTracker::emissionSteps_m
private

Definition at line 100 of file ParallelTracker.h.

Referenced by ParallelTracker(), and ParallelTracker().

◆ FieldDimensions

beamline_list ParallelTracker::FieldDimensions
private

Definition at line 209 of file ParallelTracker.h.

Referenced by buildupFieldList().

◆ fieldEvaluationTimer_m

IpplTimings::TimerRef ParallelTracker::fieldEvaluationTimer_m
private

Definition at line 106 of file ParallelTracker.h.

Referenced by computeExternalFields(), ParallelTracker(), and ParallelTracker().

◆ flip_B

double DefaultVisitor::flip_B
protectedinherited

Definition at line 112 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ flip_s

double DefaultVisitor::flip_s
protectedinherited

Definition at line 113 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ globalEOL_m

bool ParallelTracker::globalEOL_m
private

◆ itsBeamline_m

const Beamline& Tracker::itsBeamline_m
inherited

Definition at line 119 of file Tracker.h.

Referenced by ParallelTracker::prepareSections(), and Tracker().

◆ itsBunch_m

◆ itsDataSink_m

DataSink* ParallelTracker::itsDataSink_m
private

◆ itsLine

const Beamline& DefaultVisitor::itsLine
protectedinherited

Definition at line 104 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), and execute().

◆ itsOpalBeamline_m

◆ itsReference

const PartData AbstractTracker::itsReference
protectedinherited

◆ local_flip

bool DefaultVisitor::local_flip
privateinherited

Definition at line 127 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), execute(), visitBeamline(), and visitFlaggedElmPtr().

◆ minStepforReBin_m

int ParallelTracker::minStepforReBin_m
private

Definition at line 95 of file ParallelTracker.h.

Referenced by ParallelTracker(), and ParallelTracker().

◆ myElements

std::list<Component*> ParallelTracker::myElements
private

Definition at line 208 of file ParallelTracker.h.

Referenced by visitRing().

◆ numParticlesInSimulation_m

size_t ParallelTracker::numParticlesInSimulation_m
private

◆ opalRing_m

Ring* ParallelTracker::opalRing_m
private

◆ OrbThreader_m

IpplTimings::TimerRef ParallelTracker::OrbThreader_m
private

Definition at line 110 of file ParallelTracker.h.

Referenced by execute(), ParallelTracker(), and ParallelTracker().

◆ particleMatterStatus_m

bool ParallelTracker::particleMatterStatus_m
private

Definition at line 113 of file ParallelTracker.h.

◆ pathLength_m

◆ pluginElements_m

std::vector<PluginElement*> ParallelTracker::pluginElements_m
private

Definition at line 229 of file ParallelTracker.h.

Referenced by applyPluginElements().

◆ PluginElemTimer_m

IpplTimings::TimerRef ParallelTracker::PluginElemTimer_m
private

Definition at line 108 of file ParallelTracker.h.

Referenced by applyPluginElements(), and ParallelTracker().

◆ referencePhi

double ParallelTracker::referencePhi
private

Definition at line 222 of file ParallelTracker.h.

◆ referencePr

double ParallelTracker::referencePr
private

Definition at line 216 of file ParallelTracker.h.

Referenced by visitRing().

◆ referencePsi

double ParallelTracker::referencePsi
private

Definition at line 221 of file ParallelTracker.h.

◆ referencePt

double ParallelTracker::referencePt
private

Definition at line 217 of file ParallelTracker.h.

Referenced by visitRing().

◆ referencePtot

double ParallelTracker::referencePtot
private

Definition at line 219 of file ParallelTracker.h.

Referenced by visitRing().

◆ referencePz

double ParallelTracker::referencePz = 0.0
private

Definition at line 218 of file ParallelTracker.h.

Referenced by visitRing().

◆ referenceR

double ParallelTracker::referenceR
private

Definition at line 212 of file ParallelTracker.h.

Referenced by visitRing().

◆ referenceTheta

double ParallelTracker::referenceTheta
private

Definition at line 213 of file ParallelTracker.h.

Referenced by visitRing().

◆ referenceZ

double ParallelTracker::referenceZ = 0.0
private

Definition at line 214 of file ParallelTracker.h.

Referenced by visitRing().

◆ repartFreq_m

unsigned long long ParallelTracker::repartFreq_m
private

◆ sinRefTheta_m

double ParallelTracker::sinRefTheta_m
private

Definition at line 224 of file ParallelTracker.h.

Referenced by visitRing().

◆ stepSizes_m

StepSizeConfig ParallelTracker::stepSizes_m
private

stores informations where to change the time step and where to stop the simulation, the time step sizes and the number of time steps with each configuration

Definition at line 89 of file ParallelTracker.h.

Referenced by execute(), findStartPosition(), and ParallelTracker().

◆ timeIntegrationTimer1_m

IpplTimings::TimerRef ParallelTracker::timeIntegrationTimer1_m
private

Definition at line 104 of file ParallelTracker.h.

Referenced by ParallelTracker(), ParallelTracker(), and timeIntegration1().

◆ timeIntegrationTimer2_m

IpplTimings::TimerRef ParallelTracker::timeIntegrationTimer2_m
private

Definition at line 105 of file ParallelTracker.h.

Referenced by ParallelTracker(), ParallelTracker(), and timeIntegration2().

◆ turnnumber_m

unsigned ParallelTracker::turnnumber_m
private

Definition at line 206 of file ParallelTracker.h.

Referenced by applyPluginElements().

◆ WakeFieldTimer_m

IpplTimings::TimerRef ParallelTracker::WakeFieldTimer_m
private

Definition at line 107 of file ParallelTracker.h.

◆ wakeFunction_m

WakeFunction* ParallelTracker::wakeFunction_m
private

Definition at line 78 of file ParallelTracker.h.

Referenced by ParallelTracker(), and ParallelTracker().

◆ wakeStatus_m

bool ParallelTracker::wakeStatus_m
private

Definition at line 74 of file ParallelTracker.h.

Referenced by execute(), ParallelTracker(), and ParallelTracker().

◆ zstart_m

double ParallelTracker::zstart_m
private

where to start

Definition at line 83 of file ParallelTracker.h.

Referenced by applyFractionalStep(), execute(), findStartPosition(), ParallelTracker(), and ParallelTracker().


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