OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
OrbitThreader Class Reference

#include <OrbitThreader.h>

Collaboration diagram for OrbitThreader:

Classes

struct  elementPosition
struct  elementPositionComp

Public Member Functions

 OrbitThreader (const PartData &ref, const Vector_t &r, const Vector_t &p, double s, double maxDiffZBunch, double t, double dT, StepSizeConfig stepSizes, OpalBeamline &bl)
void execute ()
IndexMap::value_t query (IndexMap::key_t::first_type step, IndexMap::key_t::second_type length)
IndexMap::key_t getRange (const IndexMap::value_t::value_type &element, double position) const
IndexMap::value_t getTouchingElements (const IndexMap::key_t &range) const
BoundingBox getBoundingBox () const

Private Member Functions

void trackBack ()
void integrate (const IndexMap::value_t &activeSet, double maxDrift=10.0)
bool containsCavity (const IndexMap::value_t &activeSet)
void autophaseCavities (const IndexMap::value_t &activeSet, const std::set< std::string > &visitedElements)
double getMaxDesignEnergy (const IndexMap::value_t &elementSet) const
void registerElement (const IndexMap::value_t &elementSet, double, const Vector_t &r, const Vector_t &p)
void processElementRegister ()
void setDesignEnergy (FieldList &allElements, const std::set< std::string > &visitedElements)
void computeBoundingBox ()
void updateBoundingBoxWithCurrentPosition ()
double computeDriftLengthToBoundingBox (const std::set< std::shared_ptr< Component > > &elements, const Vector_t &position, const Vector_t &direction) const
void checkElementLengths (const std::set< std::shared_ptr< Component > > &elements)

Private Attributes

Vector_t r_m
 position of reference particle in lab coordinates
Vector_t p_m
 momentum of reference particle
double pathLength_m
 position of reference particle in path length
double distTrackBack_m
double time_m
 the simulated time
double dt_m
 the time step
ValueRange< long > stepRange_m
long currentStep_m {0}
StepSizeConfig stepSizes_m
 final position in path length
const double zstop_m
ValueRange< double > pathLengthRange_m
OpalBeamlineitsOpalBeamline_m
IndexMap imap_m
unsigned int errorFlag_m
BorisPusher integrator_m
const PartDatareference_m
std::ofstream logger_m
size_t loggingFrequency_m
BoundingBox globalBoundingBox_m
std::multimap< std::string, elementPositionelementRegistry_m

Detailed Description

Definition at line 36 of file OrbitThreader.h.


Class Documentation

◆ OrbitThreader::elementPosition

struct OrbitThreader::elementPosition

Definition at line 96 of file OrbitThreader.h.

Collaboration diagram for OrbitThreader::elementPosition:
Class Members
double elementEdge_m
double endField_m
double startField_m

Constructor & Destructor Documentation

◆ OrbitThreader()

OrbitThreader::OrbitThreader ( const PartData & ref,
const Vector_t & r,
const Vector_t & p,
double s,
double maxDiffZBunch,
double t,
double dT,
StepSizeConfig stepSizes,
OpalBeamline & bl )

Definition at line 47 of file OrbitThreader.cpp.

References Util::combineFilePath(), computeBoundingBox(), copysign(), distTrackBack_m, dt_m, errorFlag_m, OpalData::getInstance(), integrator_m, itsOpalBeamline_m, logger_m, loggingFrequency_m, IpplInfo::myNode(), p_m, pathLength_m, pathLengthRange_m, r_m, reference_m, stepRange_m, stepSizes_m, time_m, OpalData::WRITE, and zstop_m.

Here is the call graph for this function:

Member Function Documentation

◆ autophaseCavities()

void OrbitThreader::autophaseCavities ( const IndexMap::value_t & activeSet,
const std::set< std::string > & visitedElements )
private

Definition at line 300 of file OrbitThreader.cpp.

References Options::autoPhase, dt_m, end(), CavityAutophaser::getPhaseAtMaxEnergy(), itsOpalBeamline_m, p_m, r_m, reference_m, RFCAVITY, time_m, and TRAVELINGWAVE.

Referenced by execute().

Here is the call graph for this function:

◆ checkElementLengths()

void OrbitThreader::checkElementLengths ( const std::set< std::shared_ptr< Component > > & elements)
private

Definition at line 111 of file OrbitThreader.cpp.

References Physics::c, euclidean_norm(), Util::getGamma(), p_m, pathLength_m, and stepSizes_m.

Referenced by execute().

Here is the call graph for this function:

◆ computeBoundingBox()

void OrbitThreader::computeBoundingBox ( )
private

Definition at line 455 of file OrbitThreader.cpp.

References ANY, end(), globalBoundingBox_m, itsOpalBeamline_m, MARKER, and updateBoundingBoxWithCurrentPosition().

Referenced by OrbitThreader().

Here is the call graph for this function:

◆ computeDriftLengthToBoundingBox()

double OrbitThreader::computeDriftLengthToBoundingBox ( const std::set< std::shared_ptr< Component > > & elements,
const Vector_t & position,
const Vector_t & direction ) const
private

Definition at line 479 of file OrbitThreader.cpp.

References DRIFT, euclidean_norm(), and globalBoundingBox_m.

Referenced by execute(), and trackBack().

Here is the call graph for this function:

◆ containsCavity()

bool OrbitThreader::containsCavity ( const IndexMap::value_t & activeSet)
private

Definition at line 286 of file OrbitThreader.cpp.

References end(), RFCAVITY, and TRAVELINGWAVE.

Referenced by execute().

Here is the call graph for this function:

◆ execute()

void OrbitThreader::execute ( )

◆ getBoundingBox()

BoundingBox OrbitThreader::getBoundingBox ( ) const
inline

Definition at line 146 of file OrbitThreader.h.

References globalBoundingBox_m.

Referenced by ParallelTTracker::execute().

◆ getMaxDesignEnergy()

double OrbitThreader::getMaxDesignEnergy ( const IndexMap::value_t & elementSet) const
private

Definition at line 325 of file OrbitThreader.cpp.

References end(), RFCavity::getDesignEnergy(), RFCAVITY, and TRAVELINGWAVE.

Here is the call graph for this function:

◆ getRange()

IndexMap::key_t OrbitThreader::getRange ( const IndexMap::value_t::value_type & element,
double position ) const
inline

Definition at line 135 of file OrbitThreader.h.

References imap_m.

Referenced by ParallelTTracker::computeParticleMatterInteraction().

◆ getTouchingElements()

IndexMap::value_t OrbitThreader::getTouchingElements ( const IndexMap::key_t & range) const
inline

Definition at line 141 of file OrbitThreader.h.

References imap_m.

Referenced by ParallelTTracker::computeParticleMatterInteraction().

◆ integrate()

void OrbitThreader::integrate ( const IndexMap::value_t & activeSet,
double maxDrift = 10.0 )
private

Definition at line 208 of file OrbitThreader.cpp.

References Physics::c, currentStep_m, dot(), dt_m, end(), EOL, errorFlag_m, euclidean_norm(), Units::eV2MeV, EVERYTHINGFINE, OpalData::getInstance(), globalBoundingBox_m, HITMATERIAL, integrator_m, itsOpalBeamline_m, logger_m, loggingFrequency_m, IpplInfo::myNode(), p_m, pathLength_m, pathLengthRange_m, r_m, reference_m, Units::s2ns, sqrt(), stepRange_m, time_m, and zstop_m.

Referenced by execute(), and trackBack().

Here is the call graph for this function:

◆ processElementRegister()

void OrbitThreader::processElementRegister ( )
private

Definition at line 402 of file OrbitThreader.cpp.

References ANY, elementRegistry_m, end(), itsOpalBeamline_m, and name.

Referenced by execute().

Here is the call graph for this function:

◆ query()

IndexMap::value_t OrbitThreader::query ( IndexMap::key_t::first_type step,
IndexMap::key_t::second_type length )
inline

Definition at line 129 of file OrbitThreader.h.

References imap_m.

Referenced by ParallelTTracker::computeExternalFields().

◆ registerElement()

void OrbitThreader::registerElement ( const IndexMap::value_t & elementSet,
double start,
const Vector_t & r,
const Vector_t & p )
private

Definition at line 370 of file OrbitThreader.cpp.

References elementRegistry_m, end(), euclidean_norm(), itsOpalBeamline_m, name, and pathLength_m.

Referenced by execute().

Here is the call graph for this function:

◆ setDesignEnergy()

void OrbitThreader::setDesignEnergy ( FieldList & allElements,
const std::set< std::string > & visitedElements )
private

Definition at line 439 of file OrbitThreader.cpp.

References dot(), end(), p_m, reference_m, RFCAVITY, sqrt(), and TRAVELINGWAVE.

Referenced by execute().

Here is the call graph for this function:

◆ trackBack()

void OrbitThreader::trackBack ( )
private

Definition at line 342 of file OrbitThreader.cpp.

References Physics::c, computeDriftLengthToBoundingBox(), currentStep_m, distTrackBack_m, dt_m, integrate(), integrator_m, itsOpalBeamline_m, p_m, pathLength_m, pathLengthRange_m, r_m, and stepRange_m.

Referenced by execute().

Here is the call graph for this function:

◆ updateBoundingBoxWithCurrentPosition()

void OrbitThreader::updateBoundingBoxWithCurrentPosition ( )
private

Definition at line 472 of file OrbitThreader.cpp.

References Physics::c, dt_m, Util::getGamma(), globalBoundingBox_m, p_m, and r_m.

Referenced by computeBoundingBox(), and execute().

Here is the call graph for this function:

Member Data Documentation

◆ currentStep_m

long OrbitThreader::currentStep_m {0}
private

Definition at line 76 of file OrbitThreader.h.

Referenced by execute(), integrate(), and trackBack().

◆ distTrackBack_m

double OrbitThreader::distTrackBack_m
private

distance to track back before tracking forward (length of bunch but not beyond cathode)

Definition at line 70 of file OrbitThreader.h.

Referenced by OrbitThreader(), and trackBack().

◆ dt_m

double OrbitThreader::dt_m
private

◆ elementRegistry_m

std::multimap<std::string, elementPosition> OrbitThreader::elementRegistry_m
private

Definition at line 108 of file OrbitThreader.h.

Referenced by processElementRegister(), and registerElement().

◆ errorFlag_m

unsigned int OrbitThreader::errorFlag_m
private

Definition at line 86 of file OrbitThreader.h.

Referenced by execute(), integrate(), and OrbitThreader().

◆ globalBoundingBox_m

BoundingBox OrbitThreader::globalBoundingBox_m
private

◆ imap_m

IndexMap OrbitThreader::imap_m
private

Definition at line 84 of file OrbitThreader.h.

Referenced by execute(), getRange(), getTouchingElements(), and query().

◆ integrator_m

BorisPusher OrbitThreader::integrator_m
private

Definition at line 88 of file OrbitThreader.h.

Referenced by execute(), integrate(), OrbitThreader(), and trackBack().

◆ itsOpalBeamline_m

OpalBeamline& OrbitThreader::itsOpalBeamline_m
private

◆ logger_m

std::ofstream OrbitThreader::logger_m
private

Definition at line 91 of file OrbitThreader.h.

Referenced by integrate(), and OrbitThreader().

◆ loggingFrequency_m

size_t OrbitThreader::loggingFrequency_m
private

Definition at line 92 of file OrbitThreader.h.

Referenced by integrate(), and OrbitThreader().

◆ p_m

Vector_t OrbitThreader::p_m
private

◆ pathLength_m

double OrbitThreader::pathLength_m
private

position of reference particle in path length

Definition at line 67 of file OrbitThreader.h.

Referenced by checkElementLengths(), execute(), integrate(), OrbitThreader(), registerElement(), and trackBack().

◆ pathLengthRange_m

ValueRange<double> OrbitThreader::pathLengthRange_m
private

Definition at line 81 of file OrbitThreader.h.

Referenced by execute(), integrate(), OrbitThreader(), and trackBack().

◆ r_m

Vector_t OrbitThreader::r_m
private

position of reference particle in lab coordinates

Definition at line 63 of file OrbitThreader.h.

Referenced by autophaseCavities(), execute(), integrate(), OrbitThreader(), trackBack(), and updateBoundingBoxWithCurrentPosition().

◆ reference_m

const PartData& OrbitThreader::reference_m
private

Definition at line 89 of file OrbitThreader.h.

Referenced by autophaseCavities(), integrate(), OrbitThreader(), and setDesignEnergy().

◆ stepRange_m

ValueRange<long> OrbitThreader::stepRange_m
private

Definition at line 75 of file OrbitThreader.h.

Referenced by execute(), integrate(), OrbitThreader(), and trackBack().

◆ stepSizes_m

StepSizeConfig OrbitThreader::stepSizes_m
private

final position in path length

Definition at line 79 of file OrbitThreader.h.

Referenced by checkElementLengths(), and OrbitThreader().

◆ time_m

double OrbitThreader::time_m
private

the simulated time

Definition at line 72 of file OrbitThreader.h.

Referenced by autophaseCavities(), integrate(), and OrbitThreader().

◆ zstop_m

const double OrbitThreader::zstop_m
private

Definition at line 80 of file OrbitThreader.h.

Referenced by execute(), integrate(), and OrbitThreader().


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