OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
FM1DProfile1.h
Go to the documentation of this file.
1 #ifndef CLASSIC_FIELDMAP1DPROFILE1_HH
2 #define CLASSIC_FIELDMAP1DPROFILE1_HH
3 
4 #include "Fields/Fieldmap.h"
5 
6 /*
7  * Class FM1DProfile.
8  * --------------------------------------------------------------------------
9  * Field definition for 1D representation of bending magnet.
10  *
11  * Class FM1DProfile1 defines a 1D field map for us in bending magnets.
12  */
13 
14 class _FM1DProfile1: public _Fieldmap {
15 
16 public:
17  virtual ~_FM1DProfile1();
18 
19  virtual bool getFieldDerivative(const Vector_t &X,
20  Vector_t &E,
21  Vector_t &B,
22  const DiffDirection &dir) const;
23  virtual void get1DProfile1EntranceParam(double &entranceParameter1,
24  double &entranceParameter2,
25  double &entranceParameter3);
26  virtual void get1DProfile1ExitParam(double &exitParameter1,
27  double &exitParameter2,
28  double &exitParameter3);
29  virtual double getFieldGap();
30  virtual void getFieldDimensions(double &zBegin,
31  double &zEnd) const;
32  virtual void getFieldDimensions(double &xIni,
33  double &xFinal,
34  double &yIni,
35  double &yFinal,
36  double &zIni,
37  double &zFinal) const;
38  virtual bool getFieldstrength(const Vector_t &X,
39  Vector_t &strength,
40  Vector_t &info) const;
41  virtual double getFrequency() const;
42  virtual void getInfo(Inform *);
43  virtual void setFrequency(double freq);
44  virtual void get1DProfile1EngeCoeffs(std::vector<double> &engeCoeffsEntry,
45  std::vector<double> &engeCoeffsExit);
46  virtual void swap();
47 
48  virtual void setFieldGap(double gap);
49 
50 private:
51 
53  _FM1DProfile1(const std::string& filename);
54 
55  static FM1DProfile1 create(const std::string& filename);
56 
57  virtual void freeMap();
58  virtual void readMap();
59 
60  double computeEntranceFringe(double z) const;
61  double computeExitFringe(double z) const;
62  double computeFringe(const std::vector<double> &coefs, double z) const;
63  /*
64  * Entrance and exit position parameters. These are read in from the input
65  * input file. Ultimately they are used to determine the origin of the
66  * field Enge function and the extent of the field map. However, how they
67  * are used to do this depends on how the bend using the map is setup in the
68  * OPAL input file. So, we use generic terms to start.
69  */
76 
78  std::vector<double> engeCoeffsEntry_m;
79  std::vector<double> engeCoeffsExit_m;
80 
83  double gapHeight_m;
84 
85  double sBegin_m;
86  double sEnd_m;
87 
88  friend class _Fieldmap;
89 };
90 
91 using FM1DProfile1 = std::shared_ptr<_FM1DProfile1>;
92 
93 #endif
double entranceParameter2_m
Definition: FM1DProfile1.h:71
std::vector< double > engeCoeffsEntry_m
Enge coefficients for map entry and exit regions.
Definition: FM1DProfile1.h:78
double sEnd_m
Start of field map in s coordinates (m).
Definition: FM1DProfile1.h:86
DiffDirection
Definition: Fieldmap.h:55
double entranceParameter3_m
Definition: FM1DProfile1.h:72
virtual void get1DProfile1ExitParam(double &exitParameter1, double &exitParameter2, double &exitParameter3)
double entranceParameter1_m
Definition: FM1DProfile1.h:70
virtual ~_FM1DProfile1()
virtual void setFieldGap(double gap)
int polyOrderEntry_m
Definition: FM1DProfile1.h:81
virtual void getInfo(Inform *)
virtual void freeMap()
bool info
Info flag.
Definition: Options.cpp:28
virtual void readMap()
virtual void setFrequency(double freq)
int polyOrderExit_m
Enge function order for entry region.
Definition: FM1DProfile1.h:82
virtual void get1DProfile1EntranceParam(double &entranceParameter1, double &entranceParameter2, double &entranceParameter3)
double exitParameter2_m
Definition: FM1DProfile1.h:74
virtual bool getFieldDerivative(const Vector_t &X, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
Definition: Inform.h:42
_FM1DProfile1(const std::string &filename)
Constructor with field map file name.
virtual double getFrequency() const
#define X(arg)
Definition: fftpack.cpp:112
double gapHeight_m
Enge function order for entry region.
Definition: FM1DProfile1.h:83
double exitParameter1_m
Definition: FM1DProfile1.h:73
double computeExitFringe(double z) const
virtual void get1DProfile1EngeCoeffs(std::vector< double > &engeCoeffsEntry, std::vector< double > &engeCoeffsExit)
virtual bool getFieldstrength(const Vector_t &X, Vector_t &strength, Vector_t &info) const
double exitParameter3_m
Definition: FM1DProfile1.h:75
double sBegin_m
Full gap height of field map.
Definition: FM1DProfile1.h:85
std::vector< double > engeCoeffsExit_m
Definition: FM1DProfile1.h:79
std::shared_ptr< _FM1DProfile1 > FM1DProfile1
Definition: Definitions.h:45
virtual void swap()
static FM1DProfile1 create(const std::string &filename)
virtual void getFieldDimensions(double &zBegin, double &zEnd) const
virtual double getFieldGap()
double computeFringe(const std::vector< double > &coefs, double z) const
double computeEntranceFringe(double z) const