OPAL (Object Oriented Parallel Accelerator Library)
2.2.0
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 (const double &, ElementBase::ElementType eltype=ElementBase::ANY) |
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 | 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 AlignWrapper &wrap, BeamlineVisitor &visitor, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const BeamBeam &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const Diagnostic &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const Lambertson &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const Marker &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const RFQuadrupole &element, BeamlineVisitor &, PartBunchBase< double, 3 > *) |
template<> | |
void | visit (const Separator &element, 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 32 of file OpalBeamline.h.
OpalBeamline::OpalBeamline | ( | ) |
Definition at line 13 of file OpalBeamline.cpp.
OpalBeamline::OpalBeamline | ( | const Vector_t & | origin, |
const Quaternion & | rotation | ||
) |
Definition at line 20 of file OpalBeamline.cpp.
OpalBeamline::~OpalBeamline | ( | ) |
Definition at line 29 of file OpalBeamline.cpp.
References elements_m.
void OpalBeamline::activateElements | ( | ) |
Definition at line 580 of file OpalBeamline.cpp.
References Physics::e, elements_m, BendBase::getDesignEnergy(), ElementBase::RBEND, and ElementBase::SBEND.
Referenced by ParallelSliceTracker::execute(), and ParallelTTracker::execute().
void OpalBeamline::compute3DLattice | ( | ) |
Definition at line 191 of file OpalBeamline.cpp.
References abs(), Quaternion::conjugate(), coordTransformationTo_m, cos(), elements_m, euclidean_norm(), BendBase::getBendAngle(), BendBase::getChordLength(), BendBase::getDesignPath(), ClassicField::getElement(), BendBase::getEntranceAngle(), ElementBase::getRotationAboutZ(), Options::idealized, ElementBase::MONITOR, ElementBase::RBEND, ElementBase::RBEND3D, Quaternion::rotate(), ElementBase::SBEND, sin(), ClassicField::SortAsc(), and ElementBase::SOURCE.
Referenced by ParallelSliceTracker::prepareSections(), ParallelTTracker::prepareSections(), ParallelSliceTracker::visitBeamline(), ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
|
inline |
Definition at line 224 of file OpalBeamline.h.
References containsSource_m.
Referenced by ParallelSliceTracker::execute(), ParallelTTracker::execute(), and ParallelTTracker::findStartPosition().
BoundaryGeometry* OpalBeamline::getBoundaryGeometry | ( | const unsigned int & | ) |
|
inline |
Definition at line 209 of file OpalBeamline.h.
Referenced by ParallelSliceTracker::computeExternalFields(), ParallelTTracker::computeExternalFields(), ParallelTTracker::emitParticles(), ParallelTTracker::execute(), OrbitThreader::integrate(), ParallelSliceTracker::updateReferenceParticle(), and ParallelTTracker::updateReferenceParticle().
|
inline |
Definition at line 214 of file OpalBeamline.h.
References coordTransformationTo_m.
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::computeMaximalImplicitDrift(), OrbitThreader::execute(), ThickTracker::fillGaps_m(), ParallelSliceTracker::ParallelSliceTracker(), OrbitThreader::processElementRegister(), ParallelTTracker::updateRFElement(), and ParallelTTracker::writePhaseSpace().
Definition at line 33 of file OpalBeamline.cpp.
References elements_m.
Referenced by ParallelSliceTracker::autophaseCavities(), ParallelTTracker::autophaseCavities(), OrbitThreader::execute(), getFieldAt(), OrbitThreader::integrate(), OrbitThreader::trackBack(), ParallelSliceTracker::updateReferenceParticle(), and ParallelTTracker::updateReferenceParticle().
double OpalBeamline::getEnd | ( | const Vector_t & | ) | const |
unsigned long OpalBeamline::getFieldAt | ( | const unsigned int & | index, |
const Vector_t & | pos, | ||
const long & | sindex, | ||
const double & | t, | ||
Vector_t & | E, | ||
Vector_t & | B | ||
) |
Definition at line 49 of file OpalBeamline.cpp.
Referenced by BoundaryGeometry::createParticlesOnSurface(), BoundaryGeometry::createPriPart(), ThickTracker::dump_m(), ParallelTTracker::emitParticles(), ParallelSliceTracker::writePhaseSpace(), 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 56 of file OpalBeamline.cpp.
References ElementBase::CCOLLIMATOR, ElementBase::DIAGNOSTIC, getElements(), ElementBase::MARKER, ElementBase::MONITOR, rotateFromLocalCS(), rotateToLocalCS(), and transformToLocalCS().
|
inline |
Definition at line 219 of file OpalBeamline.h.
Referenced by ParallelSliceTracker::computeExternalFields(), and 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.
void OpalBeamline::prepareSections | ( | ) |
Definition at line 151 of file OpalBeamline.cpp.
References elements_m, and prepared_m.
Referenced by ParallelSliceTracker::prepareSections(), ThickTracker::prepareSections(), ParallelTTracker::prepareSections(), ParallelSliceTracker::visitBeamline(), ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
void OpalBeamline::print | ( | Inform & | msg | ) | const |
Definition at line 159 of file OpalBeamline.cpp.
Definition at line 180 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::rotateFrom().
|
inline |
Definition at line 203 of file OpalBeamline.h.
Referenced by getFieldAt(), and OrbitThreader::integrate().
Definition at line 175 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::rotateTo().
|
inline |
Definition at line 197 of file OpalBeamline.h.
Referenced by OrbitThreader::autophaseCavities(), ParallelSliceTracker::autophaseCavities(), ParallelTTracker::autophaseCavities(), getFieldAt(), OrbitThreader::integrate(), and OrbitThreader::registerElement().
void OpalBeamline::save3DInput | ( | ) |
Definition at line 512 of file OpalBeamline.cpp.
References abs(), Quaternion::conjugate(), Physics::e, elements_m, endl(), BendBase::getBendAngle(), BendBase::getEntranceAngle(), Bend2D::getExitAngle(), OpalData::getInstance(), CoordinateSystemTrafo::getOrigin(), CoordinateSystemTrafo::getRotation(), Util::getTaitBryantAngles(), IpplInfo::myNode(), Physics::pi, Physics::rad2deg, ElementBase::RBEND, and ElementBase::SBEND.
Referenced by ParallelSliceTracker::prepareSections(), and ParallelTTracker::prepareSections().
void OpalBeamline::save3DLattice | ( | ) |
Definition at line 353 of file OpalBeamline.cpp.
References abs(), MeshGenerator::add(), OpalData::APPEND, elements_m, endl(), floor(), Bend2D::getBeginToEnd_local(), BendBase::getBendAngle(), BendBase::getDesignPath(), OpalData::getInputBasename(), OpalData::getInstance(), CoordinateSystemTrafo::getOrigin(), max(), IpplInfo::myNode(), ClassicField::order_m, Physics::pi, ElementBase::RBEND, ElementBase::SBEND, ClassicField::SortAsc(), and MeshGenerator::write().
Referenced by ParallelSliceTracker::prepareSections(), and 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 ParallelSliceTracker::visitBeamline(), ParallelTTracker::visitBeamline(), and ThickTracker::visitBeamline().
void OpalBeamline::switchElements | ( | const double & | min, |
const double & | max, | ||
const double & | kineticEnergy, | ||
const bool & | nomonitors = false |
||
) |
Definition at line 95 of file OpalBeamline.cpp.
References ElementBase::DEGRADER, elements_m, min(), and ElementBase::MONITOR.
Referenced by ParallelSliceTracker::switchElements().
void OpalBeamline::switchElementsOff | ( | const double & | min, |
ElementBase::ElementType | eltype = ElementBase::ANY |
||
) |
Definition at line 129 of file OpalBeamline.cpp.
References ElementBase::ANY, and elements_m.
Referenced by ParallelSliceTracker::execute(), and ParallelTTracker::execute().
void OpalBeamline::switchElementsOff | ( | ) |
Definition at line 146 of file OpalBeamline.cpp.
References elements_m.
Definition at line 170 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::transformFrom().
|
inline |
Definition at line 191 of file OpalBeamline.h.
Definition at line 165 of file OpalBeamline.h.
References coordTransformationTo_m, and CoordinateSystemTrafo::transformTo().
|
inline |
Definition at line 185 of file OpalBeamline.h.
Referenced by OrbitThreader::autophaseCavities(), ParallelSliceTracker::autophaseCavities(), ParallelTTracker::autophaseCavities(), getFieldAt(), OrbitThreader::integrate(), and OrbitThreader::registerElement().
|
inline |
Definition at line 98 of file OpalBeamline.h.
References elements_m.
Referenced by ParallelSliceTracker::visitAlignWrapper(), ParallelTTracker::visitAlignWrapper(), ParallelSliceTracker::visitBeamBeam(), ParallelTTracker::visitBeamBeam(), ParallelTTracker::visitBeamStripping(), ThickTracker::visitBeamStripping(), ParallelTTracker::visitCCollimator(), ParallelSliceTracker::visitCorrector(), ParallelTTracker::visitCorrector(), ParallelTTracker::visitCyclotronValley(), ParallelSliceTracker::visitDegrader(), ParallelTTracker::visitDegrader(), ParallelSliceTracker::visitDiagnostic(), ParallelTTracker::visitDiagnostic(), ParallelSliceTracker::visitDrift(), ParallelTTracker::visitDrift(), ThickTracker::visitDrift(), ParallelTTracker::visitFlexibleCollimator(), ParallelSliceTracker::visitLambertson(), ParallelTTracker::visitLambertson(), ParallelSliceTracker::visitMarker(), ParallelTTracker::visitMarker(), ParallelSliceTracker::visitMonitor(), ParallelTTracker::visitMonitor(), ParallelSliceTracker::visitMultipole(), ParallelTTracker::visitMultipole(), ThickTracker::visitMultipole(), ParallelTTracker::visitMultipoleT(), ParallelTTracker::visitParallelPlate(), ParallelSliceTracker::visitProbe(), ParallelTTracker::visitProbe(), ParallelTTracker::visitRBend(), ParallelTTracker::visitRBend3D(), ParallelSliceTracker::visitRFCavity(), ParallelTTracker::visitRFCavity(), ParallelSliceTracker::visitRFQuadrupole(), ParallelTTracker::visitRFQuadrupole(), ParallelTTracker::visitSBend(), ThickTracker::visitSBend(), ParallelSliceTracker::visitSeparator(), ParallelTTracker::visitSeparator(), ParallelSliceTracker::visitSeptum(), ParallelTTracker::visitSeptum(), ParallelSliceTracker::visitSolenoid(), ParallelTTracker::visitSolenoid(), ParallelSliceTracker::visitSource(), ParallelTTracker::visitSource(), ParallelSliceTracker::visitTravelingWave(), and ParallelTTracker::visitTravelingWave().
|
inline |
Definition at line 112 of file OpalBeamline.h.
|
inline |
Definition at line 126 of file OpalBeamline.h.
|
inline |
Definition at line 131 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
inline |
Definition at line 136 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
inline |
Definition at line 141 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
inline |
Definition at line 146 of file OpalBeamline.h.
|
inline |
Definition at line 150 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
inline |
Definition at line 155 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
inline |
Definition at line 160 of file OpalBeamline.h.
References endl(), and WARNMSG.
|
private |
Definition at line 92 of file OpalBeamline.h.
Referenced by containsSource(), and merge().
|
private |
Definition at line 94 of file OpalBeamline.h.
Referenced by compute3DLattice(), getCSTrafoLab2Local(), rotateFrom(), rotateTo(), swap(), transformFrom(), and transformTo().
|
private |
Definition at line 90 of file OpalBeamline.h.
Referenced by activateElements(), compute3DLattice(), getElementByType(), getElements(), merge(), prepareSections(), save3DInput(), save3DLattice(), swap(), switchElements(), switchElementsOff(), visit(), and ~OpalBeamline().
|
private |
Definition at line 91 of file OpalBeamline.h.
Referenced by merge(), prepareSections(), and swap().