OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
Solenoid.h
Go to the documentation of this file.
1#ifndef CLASSIC_Solenoid_HH
2#define CLASSIC_Solenoid_HH
3
4// ------------------------------------------------------------------------
5// $RCSfile: Solenoid.h,v $
6// ------------------------------------------------------------------------
7// $Revision: 1.1.1.1 $
8// ------------------------------------------------------------------------
9// Copyright: see Copyright.readme
10// ------------------------------------------------------------------------
11//
12// Class: Solenoid
13// Defines the abstract interface for a solenoid magnet.
14//
15// ------------------------------------------------------------------------
16// Class category: AbsBeamline
17// ------------------------------------------------------------------------
18//
19// $Date: 2000/03/27 09:32:32 $
20// $Author: fci $
21//
22// ------------------------------------------------------------------------
23
26
27class Fieldmap;
28
29// Class Solenoid
30// ------------------------------------------------------------------------
32// Class Solenoid defines the abstract interface for solenoid magnets.
33
34class Solenoid : public Component {
35public:
37 explicit Solenoid(const std::string& name);
38
39 Solenoid();
40 Solenoid(const Solenoid&);
41 virtual ~Solenoid();
42
44 virtual void accept(BeamlineVisitor&) const override;
45
47 virtual double getBz() const = 0;
48
49 void setKS(double ks);
50 void setDKS(double ks);
51
52 virtual bool apply(
53 const size_t& i, const double& t, Vector_t<double, 3>& E, Vector_t<double, 3>& B) override;
54
55 virtual bool apply(
56 const Vector_t<double, 3>& R, const Vector_t<double, 3>& P, const double& t,
58
59 virtual bool applyToReferenceParticle(
60 const Vector_t<double, 3>& R, const Vector_t<double, 3>& P, const double& t,
62
63 virtual void initialise(PartBunch_t* bunch, double& startField, double& endField) override;
64
65 virtual void finalise() override;
66
67 virtual bool bends() const override;
68
69 virtual void goOnline(const double& kineticEnergy) override;
70
71 virtual void goOffline() override;
72
73 // Assign the field filename.
74 void setFieldMapFN(std::string fn);
75
76 void setFast(bool fast);
77
78 bool getFast() const;
79
80 virtual ElementType getType() const override;
81
82 virtual void getDimensions(double& zBegin, double& zEnd) const override;
83
84 virtual bool isInside(const Vector_t<double, 3>& r) const override;
85
86 virtual void getElementDimensions(double& zBegin, double& zEnd) const override;
87
88 virtual CoordinateSystemTrafo getEdgeToBegin() const override;
89 virtual CoordinateSystemTrafo getEdgeToEnd() const override;
90
91private:
92 // std::string name; /**< The name of the object*/
93 std::string filename_m;
94
96
97 double scale_m;
98 double scaleError_m;
99
101
102 bool fast_m;
103 // Not implemented.
104 void operator=(const Solenoid&);
105};
106
109
110 return ret;
111}
112
116 return ret;
117}
118#endif // CLASSIC_Solenoid_HH
ElementType
Definition ElementBase.h:88
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
ippl::Vector< T, Dim > Vector_t
Component(const std::string &name)
Constructor with given name.
Definition Component.cpp:44
virtual double getElementLength() const
Get design length.
virtual double getBz() const =0
Get solenoid field Bz in Teslas.
virtual void getDimensions(double &zBegin, double &zEnd) const override
Definition Solenoid.cpp:169
virtual CoordinateSystemTrafo getEdgeToBegin() const override
Definition Solenoid.h:107
double scaleError_m
Definition Solenoid.h:98
void setFast(bool fast)
Definition Solenoid.cpp:70
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
Definition Solenoid.cpp:122
virtual void getElementDimensions(double &zBegin, double &zEnd) const override
Definition Solenoid.cpp:182
double startField_m
Definition Solenoid.h:100
virtual void goOffline() override
Definition Solenoid.cpp:156
virtual ~Solenoid()
Definition Solenoid.cpp:58
virtual void goOnline(const double &kineticEnergy) override
Definition Solenoid.cpp:151
virtual void finalise() override
Definition Solenoid.cpp:144
virtual bool apply(const size_t &i, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
Definition Solenoid.cpp:78
bool fast_m
Definition Solenoid.h:102
virtual CoordinateSystemTrafo getEdgeToEnd() const override
Definition Solenoid.h:113
bool getFast() const
Definition Solenoid.cpp:74
virtual bool bends() const override
Definition Solenoid.cpp:147
void setDKS(double ks)
Definition Solenoid.cpp:165
Fieldmap * fieldmap_m
Definition Solenoid.h:95
virtual ElementType getType() const override
Get element type std::string.
Definition Solenoid.cpp:174
std::string filename_m
Definition Solenoid.h:93
virtual bool isInside(const Vector_t< double, 3 > &r) const override
Definition Solenoid.cpp:178
virtual 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
Definition Solenoid.cpp:106
void setKS(double ks)
Definition Solenoid.cpp:161
Solenoid(const std::string &name)
Constructor with given name.
Definition Solenoid.cpp:48
void setFieldMapFN(std::string fn)
Definition Solenoid.cpp:66
void operator=(const Solenoid &)
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Solenoid.
Definition Solenoid.cpp:62
double scale_m
Definition Solenoid.h:97