22 #ifndef OPAL_ParallelTTracker_HH
23 #define OPAL_ParallelTTracker_HH
55 #ifdef ENABLE_OPAL_FEL
95 const std::vector<unsigned long long> &maxSTEPS,
97 const std::vector<double> &zstop,
98 const std::vector<double> &dt);
165 #ifdef ENABLE_OPAL_FEL
166 virtual void visitUndulator(
const Undulator &);
238 void writePhaseSpace(
const long long step,
bool psDump,
bool statDump);
251 void selectDT(
bool backTrack =
false);
252 void changeDT(
bool backTrack =
false);
257 #ifdef ENABLE_OPAL_FEL
262 void dumpStats(
long long step,
bool psDump,
bool statDump);
354 #ifdef ENABLE_OPAL_FEL
355 inline void ParallelTTracker::visitUndulator(
const Undulator &u) {
366 for (
int i = 0; i < localNum; ++i)
379 #endif // OPAL_ParallelTTracker_HH
std::set< ParticleMatterInteractionHandler * > activeParticleMatterInteractionHandlers_m
void timeIntegration2(BorisPusher &pusher)
unsigned int repartFreq_m
virtual void visitTravelingWave(const TravelingWave &)
Apply the algorithm to a traveling wave.
virtual void visitDegrader(const Degrader &)
Apply the algorithm to a degrader.
void writePhaseSpace(const long long step, bool psDump, bool statDump)
void findStartPosition(const BorisPusher &pusher)
IpplTimings::TimerRef WakeFieldTimer_m
virtual ~ParallelTTracker()
void computeWakefield(IndexMap::value_t &elements)
IpplTimings::TimerRef BinRepartTimer_m
WakeFunction * wakeFunction_m
ParticleAttrib< Vector_t > P
virtual void visitFlexibleCollimator(const FlexibleCollimator &)
Apply the algorithm to a flexible collimator.
void switchOffUnitlessPositions(bool use_dt_per_particle=false)
void restoreCavityPhases()
void selectDT(bool backTrack=false)
void computeExternalFields(OrbitThreader &oth)
IpplTimings::TimerRef timeIntegrationTimer2_m
std::set< std::shared_ptr< Component > > value_t
virtual void visitMarker(const Marker &)
Apply the algorithm to a marker.
ParticleAttrib< Vector_t > Ef
void operator=(const ParallelTTracker &)
double zstart_m
where to start
virtual void visitVacuum(const Vacuum &)
Apply the algorithm to a vacuum space.
void dumpStats(long long step, bool psDump, bool statDump)
void push(Vector_t &R, const Vector_t &P, const double &dt) const
An abstract sequence of beam line components.
Interface for general multipole.
Interface for drift space.
Interface for general corrector.
virtual void visitRBend3D(const RBend3D &)
Apply the algorithm to a rectangular bend.
void kickParticles(const BorisPusher &pusher)
Timing::TimerRef TimerRef
void changeDT(bool backTrack=false)
virtual void visitRFCavity(const RFCavity &)
Apply the algorithm to a RF cavity.
ParticleAttrib< Vector_t > Bf
virtual void visitCCollimator(const CCollimator &)
Apply the algorithm to a collimator.
bool particleMatterStatus_m
virtual void visitSolenoid(const Solenoid &)
Apply the algorithm to a solenoid.
void switchToUnitlessPositions(bool use_dt_per_particle=false)
void updateRefToLabCSTrafo()
virtual void visitCorrector(const Corrector &)
Apply the algorithm to a closed orbit corrector.
void doBinaryRepartition()
virtual void visitSource(const Source &)
Apply the algorithm to a source.
void updateReferenceParticle(const BorisPusher &pusher)
size_t getLocalNum() const
virtual void visitMultipoleT(const MultipoleT &)
Apply the algorithm to an arbitrary multipole.
virtual void visitMultipole(const Multipole &)
Apply the algorithm to a multipole.
virtual void visitDrift(const Drift &)
Apply the algorithm to a drift space.
virtual void visitSBend(const SBend &)
Apply the algorithm to a sector bend.
void emitParticles(long long step)
void pushParticles(const BorisPusher &pusher)
ParticleAttrib< double > dt
void computeParticleMatterInteraction(IndexMap::value_t elements, OrbitThreader &oth)
void applyFractionalStep(const BorisPusher &pusher, double tau)
bool hasEndOfLineReached(const BoundingBox &globalBoundingBox)
IpplTimings::TimerRef timeIntegrationTimer1_m
void autophaseCavities(const BorisPusher &pusher)
void updateRFElement(std::string elName, double maxPhi)
virtual void visitRBend(const RBend &)
Apply the algorithm to a rectangular bend.
void timeIntegration1(BorisPusher &pusher)
T deg(T x)
Convert radians to degrees.
virtual void execute()
Apply the algorithm to the top-level beamline.
PartBunchBase< double, 3 > * itsBunch_m
The bunch of particles to be tracked.
OpalBeamline itsOpalBeamline_m
void visit(const T &, BeamlineVisitor &, PartBunchBase< double, 3 > *)
void transformBunch(const CoordinateSystemTrafo &trafo)
virtual void visitMonitor(const Monitor &)
Apply the algorithm to a beam position monitor.
void evenlyDistributeParticles()
StepSizeConfig stepSizes_m
unsigned int emissionSteps_m
void updateReference(const BorisPusher &pusher)
void kick(const Vector_t &R, Vector_t &P, const Vector_t &Ef, const Vector_t &Bf, const double &dt) const
virtual void visitBeamline(const Beamline &)
Apply the algorithm to a beam line.
virtual void visitProbe(const Probe &)
Apply the algorithm to a probe.
virtual void visitSeptum(const Septum &)
Apply the algorithm to a septum.
size_t numParticlesInSimulation_m
IpplTimings::TimerRef fieldEvaluationTimer_m
void computeSpaceChargeFields(unsigned long long step)
void setOptionalVariables()