19#ifndef ABSBEAMLINE_VARIABLERFCAVITY_HH
20#define ABSBEAMLINE_VARIABLERFCAVITY_HH
66 bool apply(
const std::shared_ptr<ParticleContainer_t>& pc)
override;
121 bool bends()
const override {
return false; }
174 virtual std::shared_ptr<AbstractTimeDependence>
getPhaseModel()
const;
179 virtual void setAmplitudeModel(std::shared_ptr<AbstractTimeDependence> amplitude_td);
181 virtual void setPhaseModel(std::shared_ptr<AbstractTimeDependence> phase_td);
183 virtual void setFrequencyModel(std::shared_ptr<AbstractTimeDependence> frequency_td);
222 mutable std::shared_ptr<AbstractTimeDependence>
phaseTD_m;
238 double phi,
double halfWidth,
double halfHeight,
double length);
243 const double integralF,
const double phi,
const double halfWidth,
const double halfHeight,
244 const double length) {
245 if (R[2] < 0.0 || R[2] >= length) {
249 const bool outsideAperture = Kokkos::abs(R[0]) > halfWidth || Kokkos::abs(R[1]) > halfHeight;
250 return outsideAperture;
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
Abstract base class for electromagnetic fields.
virtual double getElementLength() const
Get design length.
A geometry representing a straight line.
virtual void setFrequencyModel(std::shared_ptr< AbstractTimeDependence > frequency_td)
bool apply(const std::shared_ptr< ParticleContainer_t > &pc) override
std::shared_ptr< AbstractTimeDependence > frequencyTD_m
StraightGeometry geometry
The cavity's geometry.
void initialiseTimeDependencies() const
virtual double getFrequency(const double time) const
virtual double getAmplitude(const double time) const
~VariableRFCavity() override=default
virtual double getHeight() const
std::string amplitudeName_m
virtual void setPhaseName(const std::string &phase)
bool applyToReferenceParticle(const Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
std::string frequencyName_m
void getFieldExtend(double &zBegin, double &zEnd) const override
virtual void setWidth(const double fullWidth)
bool bends() const override
virtual std::shared_ptr< AbstractTimeDependence > getFrequencyModel() const
virtual void setAmplitudeName(const std::string &litude)
virtual double getLength() const
static KOKKOS_INLINE_FUNCTION bool computeField(const Vector_t< double, 3 > &R, Vector_t< double, 3 > &E, double E0, double integralF, double phi, double halfWidth, double halfHeight, double length)
virtual std::shared_ptr< AbstractTimeDependence > getAmplitudeModel() const
virtual void setLength(double length)
std::shared_ptr< AbstractTimeDependence > amplitudeTD_m
void accept(BeamlineVisitor &) const override
virtual double getPhase(const double time) const
virtual void setFrequencyName(const std::string &frequency)
virtual std::shared_ptr< AbstractTimeDependence > getPhaseModel() const
void initialise(PartBunch_t *bunch, double &startField, double &endField) override
ElementBase * clone() const override
EMField & getField() override
Not implemented.
std::shared_ptr< AbstractTimeDependence > phaseTD_m
virtual void setAmplitudeModel(std::shared_ptr< AbstractTimeDependence > amplitude_td)
virtual void setHeight(const double fullHeight)
StraightGeometry & getGeometry() override
virtual void setPhaseModel(std::shared_ptr< AbstractTimeDependence > phase_td)
virtual double getWidth() const
VariableRFCavity & operator=(const VariableRFCavity &)
constexpr double two_pi
The value of.