26#include <boost/algorithm/string/case_conv.hpp>
118 "No field defined for VariableRFCavity");
123 "No field defined for VariableRFCavity");
140 if (R[2] >= 0. && R[2] <
length_m) {
146 const double phi =
phaseTD_m->getValue(t);
155 return apply(R, P, t, E, B);
178 std::shared_ptr<AbstractTimeDependence> phaseTD =
180 cavity->
setPhaseModel(std::shared_ptr<AbstractTimeDependence>(phaseTD->clone()));
181 std::shared_ptr<AbstractTimeDependence> frequencyTD =
183 cavity->
setFrequencyModel(std::shared_ptr<AbstractTimeDependence>(frequencyTD->clone()));
184 std::shared_ptr<AbstractTimeDependence> amplitudeTD =
186 cavity->
setAmplitudeModel(std::shared_ptr<AbstractTimeDependence>(amplitudeTD->clone()));
190 "Height or width was not set on VariableRFCavity");
constexpr double two_pi
The value of.
ParticleAttrib< Vector_t > P
virtual void visitVariableRFCavity(const VariableRFCavity &)=0
Apply the algorithm to a variable RF cavity.
Interface for a single beam element.
PartBunchBase< double, 3 > * RefPartBunch_m
virtual void setName(const std::string &name)
Set element name.
virtual const std::string & getName() const
Get element name.
std::shared_ptr< AbstractTimeDependence > frequencyTD_m
StraightGeometry geometry
The cavity's geometry.
virtual void finalise() override
std::string amplitudeName_m
std::string frequencyName_m
virtual std::shared_ptr< AbstractTimeDependence > getFrequencyModel() const
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
virtual void setPhaseModel(std::shared_ptr< AbstractTimeDependence > time_dep)
virtual ~VariableRFCavity()
virtual std::shared_ptr< AbstractTimeDependence > getAmplitudeModel() const
TimeDependenceCache frequencyCache_m
virtual void setFrequencyModel(std::shared_ptr< AbstractTimeDependence > time_dep)
virtual void setLength(double length)
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
std::shared_ptr< AbstractTimeDependence > amplitudeTD_m
virtual void accept(BeamlineVisitor &) const override
virtual std::shared_ptr< AbstractTimeDependence > getPhaseModel() const
virtual ElementBase * clone() const override
virtual EMField & getField() override
Not implemented.
std::shared_ptr< AbstractTimeDependence > phaseTD_m
virtual StraightGeometry & getGeometry() override
VariableRFCavity & operator=(const VariableRFCavity &)
virtual void setAmplitudeModel(std::shared_ptr< AbstractTimeDependence > time_dep)
static std::shared_ptr< AbstractTimeDependence > getTimeDependence(std::string name)
double getIntegral(double time)
void setTimeDependence(AbstractTimeDependence *timeDependence)
A geometry representing a straight line.
virtual void setElementLength(double length)
Set design length.
Abstract base class for electromagnetic fields.
Vektor< double, 3 > Vector_t