OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
TrimCoilPhaseFit.cpp
Go to the documentation of this file.
2 
4  double rmin,
5  double rmax,
6  const std::vector<double>& coefnum,
7  const std::vector<double>& coefdenom,
8  const std::vector<double>& coefnumphi,
9  const std::vector<double>& coefdenomphi):
10  TrimCoilFit(bmax, rmin, rmax, coefnum, coefdenom, coefnumphi, coefdenomphi)
11 {}
12 
13 void TrimCoilPhaseFit::doApplyField(const double r, const double z, const double phi_rad, double *br, double *bz)
14 {
15  // check range
16  if (r < rmin_m || r > rmax_m) return;
17 
18  double phase=0.0, d_phase=0.0, d2_phase=0.0;
19  calculateRationalFunction(RADIUS, r, phase, d_phase, d2_phase);
20  double phi = 0.0, d_phi = 0.0, d2_phi=0.0;
21  calculateRationalFunction(PHI, phi_rad, phi, d_phi, d2_phi);
22 
23  //std::cout << "r " << r << " dr " << dr << std::endl;
24  double derivative = d_phase * phi + phase * d_phi;
25  double der2 = d2_phase * phi + phase * d2_phi + 2*d_phi*d_phase;
26 
27  *bz += - bmax_m * derivative;
28  *br += - bmax_m * der2 * z;
29 }
virtual void doApplyField(const double r, const double z, const double phi_rad, double *br, double *bz)
virtual implementation of applyField
double bmax_m
Maximum B field (kG)
Definition: TrimCoil.h:18
double rmax_m
Maximum radius (m)
Definition: TrimCoil.h:27
TrimCoilPhaseFit()=delete
void calculateRationalFunction(FunctionType, double value, double &quot, double &der_quot) const
calculate rational function and its first derivative
Definition: TrimCoilFit.cpp:33