3 #define M_PI 3.1415926535897932385 14 double w_0, w_1, B_mod = fabs(B);
15 if (B_mod <=
B_nom[0]) {
17 for (jj = 0; jj < 360; ++
jj) {
20 }
else if (B_mod >=
B_nom[3]) {
22 for (jj = 0; jj < 360; ++
jj) {
33 for (jj = 0; jj < 360; ++
jj) {
42 int jc,
k0 = 0, k1 = 1;
43 double dB2, dB = fabs(B);
46 for (jc = 0; jc < 360; ++jc)
C[jc] =
C0[jc][3] +
C1[jc][4]*dB;
49 dB2 = dB*dB / (3.*
B_nom[0]);
50 for (jc = 0; jc < 360; ++jc)
C[jc] = (
C2[jc][0]*dB2 +
C1[jc][0])*dB;
52 while (
B_nom[k1] < dB) ++k1;
56 for (jc = 0; jc < 360; ++jc)
57 C[jc] = (((
C2[jc][k1] -
C2[jc][k0])*dB2+
C2[jc][
k0])*dB +
C1[jc][k1])*dB +
C0[jc][
k0];
60 for (jc = 0; jc < 360; ++jc)
61 C[jc] = (
C2[jc][k0]*dB2 +
C1[jc][k1])*dB +
C0[jc][
k0];
65 if (B < 0)
for (jc = 0; jc < 360; ++jc)
C[jc] = -
C[jc];
70 double &Br,
double &Bz,
double &Bphi)
double GetBphi(double *coeff)
double GetBr(double *coeff)
static const double B_nom[4]
void GetField(const double r, const double z, const double phi, double &Br, double &Bz, double &Bphi)
static const double C0[360][4]
void SetCoeff_Linear(const double B)
static const std::string B
static const double C1[360][5]
void SetPoint(const double r, const double z, const double phi)
void SetCoeff_Spline(const double B)
static const double C2[360][3]
double GetBz(double *coeff)