OPAL (Object Oriented Parallel Accelerator Library)
2021.1.99
OPAL
|
#include <OpalBeamline.h>
Public Member Functions | |
OpalBeamline () | |
OpalBeamline (const Vector_t &origin, const Quaternion &rotation) | |
~OpalBeamline () | |
void | activateElements () |
std::set< std::shared_ptr< Component > > | getElements (const Vector_t &x) |
Vector_t | transformTo (const Vector_t &r) const |
Vector_t | transformFrom (const Vector_t &r) const |
Vector_t | rotateTo (const Vector_t &r) const |
Vector_t | rotateFrom (const Vector_t &r) const |
Vector_t | transformToLocalCS (const std::shared_ptr< Component > &comp, const Vector_t &r) const |
Vector_t | transformFromLocalCS (const std::shared_ptr< Component > &comp, const Vector_t &r) const |
Vector_t | rotateToLocalCS (const std::shared_ptr< Component > &comp, const Vector_t &r) const |
Vector_t | rotateFromLocalCS (const std::shared_ptr< Component > &comp, const Vector_t &r) const |
CoordinateSystemTrafo | getCSTrafoLab2Local (const std::shared_ptr< Component > &comp) const |
CoordinateSystemTrafo | getCSTrafoLab2Local () const |
CoordinateSystemTrafo | getMisalignment (const std::shared_ptr< Component > &comp) const |
double | getStart (const Vector_t &) const |
double | getEnd (const Vector_t &) const |
void | switchElements (const double &, const double &, const double &kineticEnergy, const bool &nomonitors=false) |
void | switchElementsOff () |
ParticleMatterInteractionHandler * | getParticleMatterInteractionHandler (const unsigned int &) |
BoundaryGeometry * | getBoundaryGeometry (const unsigned int &) |
unsigned long | getFieldAt (const unsigned int &, const Vector_t &, const long &, const double &, Vector_t &, Vector_t &) |
unsigned long | getFieldAt (const Vector_t &, const Vector_t &, const double &, Vector_t &, Vector_t &) |
template<class T > | |
void | visit (const T &, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
void | prepareSections () |
void | positionElementRelative (std::shared_ptr< ElementBase >) |
void | compute3DLattice () |
void | save3DLattice () |
void | save3DInput () |
void | print (Inform &) const |
FieldList | getElementByType (ElementBase::ElementType) |
void | swap (OpalBeamline &rhs) |
void | merge (OpalBeamline &rhs) |
bool | containsSource () |
template<> | |
void | visit (const Source &element, BeamlineVisitor &, PartBunchBase< double, 3 > *bunch) |
template<> | |
void | visit (const Marker &, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const Septum &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
Private Attributes | |
FieldList | elements_m |
bool | prepared_m |
bool | containsSource_m |
CoordinateSystemTrafo | coordTransformationTo_m |
Definition at line 40 of file OpalBeamline.h.
OpalBeamline::OpalBeamline | ( | ) |
Definition at line 30 of file OpalBeamline.cpp.
OpalBeamline::OpalBeamline | ( | const Vector_t & | origin, |
const Quaternion & | rotation | ||
) |
Definition at line 37 of file OpalBeamline.cpp.
OpalBeamline::~OpalBeamline | ( | ) |
Definition at line 46 of file OpalBeamline.cpp.
References elements_m.
void OpalBeamline::activateElements | ( | ) |
Definition at line 593 of file OpalBeamline.cpp.
References Physics::e, elements_m, end(), BendBase::getDesignEnergy(), ElementBase::RBEND, and ElementBase::SBEND.
Referenced by ParallelTTracker::execute().
void OpalBeamline::compute3DLattice | ( | ) |
Definition at line 204 of file OpalBeamline.cpp.
References abs(), Quaternion::conjugate(), coordTransformationTo_m, cos(), elements_m, end(), euclidean_norm(), BendBase::getBendAngle(), BendBase::getChordLength(), BendBase::getDesignPath(), BendBase::getEntranceAngle(), ElementBase::getRotationAboutZ(), Options::idealized, ElementBase::RBEND, ElementBase::RBEND3D, Quaternion::rotate(), ElementBase::SBEND, sin(), and ElementBase::SOURCE.
Referenced by ParallelTTracker::prepareSections(), ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
|
inline |
Definition at line 205 of file OpalBeamline.h.
References containsSource_m.
Referenced by ParallelTTracker::execute(), and ParallelTTracker::findStartPosition().
BoundaryGeometry* OpalBeamline::getBoundaryGeometry | ( | const unsigned int & | ) |
|
inline |
Definition at line 195 of file OpalBeamline.h.
References coordTransformationTo_m.
|
inline |
Definition at line 190 of file OpalBeamline.h.
Referenced by ParallelTTracker::computeExternalFields(), ParallelTTracker::emitParticles(), ParallelTTracker::execute(), OrbitThreader::integrate(), and ParallelTTracker::updateReferenceParticle().
FieldList OpalBeamline::getElementByType | ( | ElementBase::ElementType | type | ) |
Definition at line 177 of file OpalBeamline.cpp.
References ElementBase::ANY, and elements_m.
Referenced by ThickTracker::checkElementOrder_m(), OrbitThreader::computeBoundingBox(), OrbitThreader::execute(), ThickTracker::fillGaps_m(), OrbitThreader::processElementRegister(), ParallelTTracker::updateRFElement(), and ParallelTTracker::writePhaseSpace().
Definition at line 50 of file OpalBeamline.cpp.
References elements_m, and end().
Referenced by ParallelTTracker::autophaseCavities(), OrbitThreader::execute(), getFieldAt(), OrbitThreader::integrate(), OrbitThreader::trackBack(), and ParallelTTracker::updateReferenceParticle().
double OpalBeamline::getEnd | ( | const Vector_t & | ) | const |
unsigned long OpalBeamline::getFieldAt | ( | const unsigned int & | , |
const Vector_t & | , | ||
const long & | , | ||
const double & | , | ||
Vector_t & | , | ||
Vector_t & | |||
) |
Definition at line 66 of file OpalBeamline.cpp.
Referenced by ThickTracker::dump_m(), ParallelTTracker::emitParticles(), and ParallelTTracker::writePhaseSpace().
unsigned long OpalBeamline::getFieldAt | ( | const Vector_t & | position, |
const Vector_t & | momentum, | ||
const double & | t, | ||
Vector_t & | Ef, | ||
Vector_t & | Bf | ||
) |
Definition at line 73 of file OpalBeamline.cpp.
References ElementBase::CCOLLIMATOR, end(), getElements(), ElementBase::MARKER, ElementBase::MONITOR, rotateFromLocalCS(), rotateToLocalCS(), and transformToLocalCS().
|
inline |
Definition at line 200 of file OpalBeamline.h.
Referenced by ParallelTTracker::computeExternalFields().
ParticleMatterInteractionHandler* OpalBeamline::getParticleMatterInteractionHandler | ( | const unsigned int & | ) |
double OpalBeamline::getStart | ( | const Vector_t & | ) | const |
void OpalBeamline::merge | ( | OpalBeamline & | rhs | ) |
Definition at line 168 of file OpalBeamline.cpp.
References containsSource_m, elements_m, and prepared_m.
Referenced by ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
void OpalBeamline::positionElementRelative | ( | std::shared_ptr< ElementBase > | element | ) |
Definition at line 191 of file OpalBeamline.cpp.
References coordTransformationTo_m.
Referenced by visit().
void OpalBeamline::prepareSections | ( | ) |
Definition at line 150 of file OpalBeamline.cpp.
References elements_m, prepared_m, and ClassicField::SortAsc().
Referenced by ParallelTTracker::prepareSections(), ThickTracker::prepareSections(), ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
void OpalBeamline::print | ( | Inform & | ) | const |
Definition at line 159 of file OpalBeamline.cpp.
Definition at line 161 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::rotateFrom().
|
inline |
Definition at line 184 of file OpalBeamline.h.
Referenced by getFieldAt(), and OrbitThreader::integrate().
Definition at line 156 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::rotateTo().
|
inline |
Definition at line 178 of file OpalBeamline.h.
Referenced by ParallelTTracker::autophaseCavities(), OrbitThreader::autophaseCavities(), getFieldAt(), OrbitThreader::integrate(), and OrbitThreader::registerElement().
void OpalBeamline::save3DInput | ( | ) |
Definition at line 520 of file OpalBeamline.cpp.
References abs(), Util::combineFilePath(), Quaternion::conjugate(), Physics::e, elements_m, end(), endl(), OpalData::getAuxiliaryOutputDirectory(), BendBase::getBendAngle(), BendBase::getEntranceAngle(), Bend2D::getExitAngle(), OpalData::getInputBasename(), OpalData::getInstance(), CoordinateSystemTrafo::getOrigin(), CoordinateSystemTrafo::getRotation(), Util::getTaitBryantAngles(), IpplInfo::myNode(), Physics::pi, Physics::rad2deg, ElementBase::RBEND, and ElementBase::SBEND.
Referenced by ParallelTTracker::prepareSections().
void OpalBeamline::save3DLattice | ( | ) |
Definition at line 351 of file OpalBeamline.cpp.
References a, abs(), MeshGenerator::add(), OpalData::APPEND, Util::combineFilePath(), elements_m, end(), endl(), floor(), OpalData::getAuxiliaryOutputDirectory(), Bend2D::getBeginToEnd_local(), BendBase::getBendAngle(), BendBase::getDesignPath(), OpalData::getInputBasename(), OpalData::getInstance(), OpalData::getOpenMode(), CoordinateSystemTrafo::getOrigin(), max(), IpplInfo::myNode(), ClassicField::order_m, Physics::pi, ElementBase::RBEND, ElementBase::SBEND, ClassicField::SortAsc(), and MeshGenerator::write().
Referenced by ParallelTTracker::prepareSections().
void OpalBeamline::swap | ( | OpalBeamline & | rhs | ) |
Definition at line 162 of file OpalBeamline.cpp.
References coordTransformationTo_m, elements_m, and prepared_m.
Referenced by ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
void OpalBeamline::switchElements | ( | const double & | min, |
const double & | max, | ||
const double & | kineticEnergy, | ||
const bool & | nomonitors = false |
||
) |
Definition at line 111 of file OpalBeamline.cpp.
References ElementBase::DEGRADER, elements_m, max(), min(), and ElementBase::MONITOR.
void OpalBeamline::switchElementsOff | ( | ) |
Definition at line 145 of file OpalBeamline.cpp.
References elements_m.
Referenced by ParallelTTracker::execute().
Definition at line 151 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::transformFrom().
|
inline |
Definition at line 172 of file OpalBeamline.h.
Definition at line 146 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::transformTo().
|
inline |
Definition at line 166 of file OpalBeamline.h.
Referenced by ParallelTTracker::autophaseCavities(), OrbitThreader::autophaseCavities(), getFieldAt(), OrbitThreader::integrate(), and OrbitThreader::registerElement().
|
inline |
Definition at line 137 of file OpalBeamline.h.
|
inline |
Definition at line 141 of file OpalBeamline.h.
References endl(), ElementBase::getTypeString(), and WARNMSG.
|
inline |
Definition at line 121 of file OpalBeamline.h.
References ElementBase::clone(), containsSource_m, elements_m, and positionElementRelative().
|
inline |
Definition at line 105 of file OpalBeamline.h.
References elements_m, positionElementRelative(), and Attrib::Legacy::Distribution::T.
Referenced by ParallelTTracker::visitCCollimator(), ParallelTTracker::visitCorrector(), ParallelTTracker::visitDegrader(), ParallelTTracker::visitDrift(), ThickTracker::visitDrift(), ParallelTTracker::visitFlexibleCollimator(), ParallelTTracker::visitMarker(), ParallelTTracker::visitMonitor(), ParallelTTracker::visitMultipole(), ThickTracker::visitMultipole(), ParallelTTracker::visitMultipoleT(), ParallelTTracker::visitProbe(), ParallelTTracker::visitRBend(), ParallelTTracker::visitRBend3D(), ParallelTTracker::visitRFCavity(), ParallelTTracker::visitSBend(), ThickTracker::visitSBend(), ParallelTTracker::visitSeptum(), ParallelTTracker::visitSolenoid(), ParallelTTracker::visitSource(), ParallelTTracker::visitTravelingWave(), ParallelTTracker::visitVacuum(), and ThickTracker::visitVacuum().
|
private |
Definition at line 99 of file OpalBeamline.h.
Referenced by containsSource(), merge(), and visit().
|
private |
Definition at line 101 of file OpalBeamline.h.
Referenced by compute3DLattice(), getCSTrafoLab2Local(), positionElementRelative(), rotateFrom(), rotateTo(), swap(), transformFrom(), and transformTo().
|
private |
Definition at line 97 of file OpalBeamline.h.
Referenced by activateElements(), compute3DLattice(), getElementByType(), getElements(), merge(), prepareSections(), save3DInput(), save3DLattice(), swap(), switchElements(), switchElementsOff(), visit(), and ~OpalBeamline().
|
private |
Definition at line 98 of file OpalBeamline.h.
Referenced by merge(), prepareSections(), and swap().