OPAL (Object Oriented Parallel Accelerator Library) 2024.2
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
14class _FM1DProfile1: public _Fieldmap {
15
16public:
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
50private:
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
91using FM1DProfile1 = std::shared_ptr<_FM1DProfile1>;
92
93#endif
std::shared_ptr< _FM1DProfile1 > FM1DProfile1
std::shared_ptr< _FM1DProfile1 > FM1DProfile1
Definition Definitions.h:45
DiffDirection
Definition Fieldmap.h:55
#define X(arg)
Definition fftpack.cpp:106
double computeExitFringe(double z) const
_FM1DProfile1(const std::string &filename)
Constructor with field map file name.
double computeEntranceFringe(double z) const
friend class _Fieldmap
End of field map in s coordinates (m).
virtual void freeMap()
double exitParameter2_m
virtual void getInfo(Inform *)
virtual bool getFieldDerivative(const Vector_t &X, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
double exitParameter3_m
virtual void readMap()
static FM1DProfile1 create(const std::string &filename)
double computeFringe(const std::vector< double > &coefs, double z) const
virtual void getFieldDimensions(double &zBegin, double &zEnd) const
std::vector< double > engeCoeffsEntry_m
Enge coefficients for map entry and exit regions.
virtual ~_FM1DProfile1()
double entranceParameter1_m
double entranceParameter2_m
virtual void get1DProfile1ExitParam(double &exitParameter1, double &exitParameter2, double &exitParameter3)
double sBegin_m
Full gap height of field map.
virtual void get1DProfile1EntranceParam(double &entranceParameter1, double &entranceParameter2, double &entranceParameter3)
double exitParameter1_m
std::vector< double > engeCoeffsExit_m
virtual bool getFieldstrength(const Vector_t &X, Vector_t &strength, Vector_t &info) const
virtual double getFrequency() const
virtual void get1DProfile1EngeCoeffs(std::vector< double > &engeCoeffsEntry, std::vector< double > &engeCoeffsExit)
virtual double getFieldGap()
virtual void setFrequency(double freq)
int polyOrderExit_m
Enge function order for entry region.
double gapHeight_m
Enge function order for entry region.
virtual void swap()
double sEnd_m
Start of field map in s coordinates (m).
virtual void setFieldGap(double gap)
double entranceParameter3_m
Vektor< double, 3 > Vector_t