OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
FM2DDynamic.h
Go to the documentation of this file.
1 #ifndef CLASSIC_FIELDMAP2DDYNAMIC_HH
2 #define CLASSIC_FIELDMAP2DDYNAMIC_HH
3 
4 #include "gsl/gsl_interp.h"
5 #include "gsl/gsl_spline.h"
6 #include "Fields/Fieldmap.h"
7 
8 class _FM2DDynamic: public _Fieldmap {
9 
10 public:
11  virtual ~_FM2DDynamic();
12 
13  virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const;
14  virtual void getFieldDimensions(double &zBegin, double &zEnd) const;
15  virtual void getFieldDimensions(double &xIni, double &xFinal, double &yIni, double &yFinal, double &zIni, double &zFinal) const;
16  virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const;
17  virtual void swap();
18  virtual void getInfo(Inform *msg);
19  virtual double getFrequency() const;
20  virtual void setFrequency(double freq);
21  virtual void getOnaxisEz(std::vector<std::pair<double, double> > & F);
22 
23  virtual bool isInside(const Vector_t &r) const;
24 private:
25  _FM2DDynamic(const std::string& filename);
26 
27  static FM2DDynamic create(const std::string& filename);
28 
29  virtual void readMap();
30  virtual void freeMap();
31 
36  double frequency_m;
37 
38  double rbegin_m;
39  double rend_m;
40  double zbegin_m;
41  double zend_m;
42  double hz_m;
43  double hr_m;
47  bool swap_m;
48  friend class _Fieldmap;
49 };
50 
51 inline bool _FM2DDynamic::isInside(const Vector_t &r) const
52 {
53  return r(2) >= zbegin_m && r(2) < zend_m && std::sqrt(r(0)*r(0) + r(1)*r(1)) < rend_m;
54 }
55 
56 using FM2DDynamic = std::shared_ptr<_FM2DDynamic>;
57 
58 #endif
double zbegin_m
Definition: FM2DDynamic.h:40
Tps< T > sqrt(const Tps< T > &x)
Square root.
Definition: TpsMath.h:91
virtual void setFrequency(double freq)
DiffDirection
Definition: Fieldmap.h:55
virtual void swap()
virtual void freeMap()
virtual bool isInside(const Vector_t &r) const
Definition: FM2DDynamic.h:51
virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const
static FM2DDynamic create(const std::string &filename)
int num_gridpz_m
Definition: FM2DDynamic.h:45
Definition: Inform.h:42
double * FieldstrengthBt_m
Definition: FM2DDynamic.h:34
virtual void getFieldDimensions(double &zBegin, double &zEnd) const
std::shared_ptr< _FM2DDynamic > FM2DDynamic
Definition: Definitions.h:51
double frequency_m
Definition: FM2DDynamic.h:36
double hz_m
Definition: FM2DDynamic.h:42
virtual double getFrequency() const
_FM2DDynamic(const std::string &filename)
Definition: FM2DDynamic.cpp:13
virtual ~_FM2DDynamic()
double * FieldstrengthEz_m
Definition: FM2DDynamic.h:32
virtual void readMap()
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &F)
double rbegin_m
Definition: FM2DDynamic.h:38
virtual void getInfo(Inform *msg)
double * FieldstrengthEr_m
Definition: FM2DDynamic.h:33
virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
double hr_m
Definition: FM2DDynamic.h:43
double zend_m
Definition: FM2DDynamic.h:41
int num_gridpr_m
Definition: FM2DDynamic.h:44
double rend_m
Definition: FM2DDynamic.h:39