8#include "dg/algorithm.h"
44 cs_ = sqrt( c_[11]*c_[11]-c_[10]*c_[10]);
48 double Rn = R/R0_, Zn = Z/R0_;
49 double j1_c12 = std::cyl_bessel_j( 1, c_[11]*Rn);
50 double y1_c12 = std::cyl_neumann( 1, c_[11]*Rn);
51 double j1_cs = std::cyl_bessel_j( 1, cs_*Rn);
52 double y1_cs = std::cyl_neumann( 1, cs_*Rn);
56 + c_[1]*Rn*j1_cs*cos(c_[10]*Zn)
57 + c_[2]*Rn*y1_cs*cos(c_[10]*Zn)
58 + c_[3]*cos(c_[11]*sqrt(Rn*Rn+Zn*Zn))
59 + c_[4]*cos(c_[11]*Zn)
62 + c_[7]*Rn*j1_cs*sin(c_[10]*Zn)
63 + c_[8]*Rn*y1_cs*sin(c_[10]*Zn)
64 + c_[9]*sin(c_[11]*Zn));
69 std::vector<double> c_;
79 cs_=sqrt(c_[11]*c_[11]-c_[10]*c_[10]);
84 double Rn=R/R0_, Zn=Z/R0_;
85 double j1_c12R = std::cyl_bessel_j(1, c_[11]*Rn) + c_[11]/2.*Rn*(
86 std::cyl_bessel_j(0, c_[11]*Rn) - std::cyl_bessel_j(2,c_[11]*Rn));
87 double y1_c12R = std::cyl_neumann(1, c_[11]*Rn) + c_[11]/2.*Rn*(
88 std::cyl_neumann(0, c_[11]*Rn) - std::cyl_neumann(2,c_[11]*Rn));
89 double j1_csR = std::cyl_bessel_j(1, cs_*Rn) + cs_/2.*Rn*(
90 std::cyl_bessel_j(0, cs_*Rn) - std::cyl_bessel_j(2, cs_*Rn));
91 double y1_csR = std::cyl_neumann(1, cs_*Rn) + cs_/2.*Rn*(
92 std::cyl_neumann(0, cs_*Rn) - std::cyl_neumann(2, cs_*Rn));
93 double RZbar = sqrt( Rn*Rn+Zn*Zn);
94 double cosR = -c_[11]*Rn/RZbar*sin(c_[11]*RZbar);
98 + c_[1]*j1_csR*cos(c_[10]*Zn)
99 + c_[2]*y1_csR*cos(c_[10]*Zn)
103 + c_[7]*j1_csR*sin(c_[10]*Zn)
104 + c_[8]*y1_csR*sin(c_[10]*Zn) );
108 std::vector<double> c_;
117 cs_ = sqrt( c_[11]*c_[11]-c_[10]*c_[10]);
121 double Rn=R/R0_, Zn=Z/R0_;
122 double j1_c12R = c_[11]*(std::cyl_bessel_j(0, c_[11]*Rn) - Rn*c_[11]*std::cyl_bessel_j(1, c_[11]*Rn));
123 double y1_c12R = c_[11]*(std::cyl_neumann( 0, c_[11]*Rn) - Rn*c_[11]*std::cyl_neumann(1, c_[11]*Rn));
124 double j1_csR = cs_*(std::cyl_bessel_j(0, cs_*Rn) - Rn*cs_*std::cyl_bessel_j(1, cs_*Rn));
125 double y1_csR = cs_*(std::cyl_neumann( 0, cs_*Rn) - Rn*cs_*std::cyl_neumann( 1, cs_*Rn));
126 double RZbar = sqrt(Rn*Rn+Zn*Zn);
127 double cosR = -c_[11]/(RZbar*RZbar)*(c_[11]*Rn*Rn*cos(c_[11]*RZbar) +Zn*Zn*sin(c_[11]*RZbar)/RZbar);
131 + c_[1]*j1_csR*cos(c_[10]*Zn)
132 + c_[2]*y1_csR*cos(c_[10]*Zn)
136 + c_[7]*j1_csR*sin(c_[10]*Zn)
137 + c_[8]*y1_csR*sin(c_[10]*Zn) );
141 std::vector<double> c_;
150 cs_ = sqrt( c_[11]*c_[11]-c_[10]*c_[10]);
154 double Rn = R/R0_, Zn = Z/R0_;
155 double j1_c12 = std::cyl_bessel_j( 1, c_[11]*Rn);
156 double y1_c12 = std::cyl_neumann( 1, c_[11]*Rn);
157 double j1_cs = std::cyl_bessel_j( 1, cs_*Rn);
158 double y1_cs = std::cyl_neumann( 1, cs_*Rn);
160 - c_[1]*Rn*j1_cs*c_[10]*sin(c_[10]*Zn)
161 - c_[2]*Rn*y1_cs*c_[10]*sin(c_[10]*Zn)
162 - c_[3]*c_[11]*Zn/sqrt(Rn*Rn+Zn*Zn)*sin(c_[11]*sqrt(Rn*Rn+Zn*Zn))
163 - c_[4]*c_[11]*sin(c_[11]*Zn)
166 + c_[7]*Rn*j1_cs*c_[10]*cos(c_[10]*Zn)
167 + c_[8]*Rn*y1_cs*c_[10]*cos(c_[10]*Zn)
168 + c_[9]*c_[11]*cos(c_[11]*Zn));
172 std::vector<double> c_;
181 cs_ = sqrt( c_[11]*c_[11]-c_[10]*c_[10]);
185 double Rn = R/R0_, Zn = Z/R0_;
186 double j1_cs = std::cyl_bessel_j( 1, cs_*Rn);
187 double y1_cs = std::cyl_neumann( 1, cs_*Rn);
188 double RZbar = sqrt(Rn*Rn+Zn*Zn);
189 double cosZ = -c_[11]/(RZbar*RZbar)*(c_[11]*Zn*Zn*cos(c_[11]*RZbar) +Rn*Rn*sin(c_[11]*RZbar)/RZbar);
191 - c_[1]*Rn*j1_cs*c_[10]*c_[10]*cos(c_[10]*Zn)
192 - c_[2]*Rn*y1_cs*c_[10]*c_[10]*cos(c_[10]*Zn)
194 - c_[4]*c_[11]*c_[11]*cos(c_[11]*Zn)
195 - c_[7]*Rn*j1_cs*c_[10]*c_[10]*sin(c_[10]*Zn)
196 - c_[8]*Rn*y1_cs*c_[10]*c_[10]*sin(c_[10]*Zn)
197 - c_[9]*c_[11]*c_[11]*sin(c_[11]*Zn));
201 std::vector<double> c_;
210 cs_ = sqrt( c_[11]*c_[11]-c_[10]*c_[10]);
214 double Rn=R/R0_, Zn=Z/R0_;
215 double j1_c12R = std::cyl_bessel_j(1, c_[11]*Rn) + c_[11]/2.*Rn*(
216 std::cyl_bessel_j(0, c_[11]*Rn) - std::cyl_bessel_j(2,c_[11]*Rn));
217 double y1_c12R = std::cyl_neumann( 1, c_[11]*Rn) + c_[11]/2.*Rn*(
218 std::cyl_neumann( 0, c_[11]*Rn) - std::cyl_neumann( 2,c_[11]*Rn));
219 double j1_csR = std::cyl_bessel_j(1, cs_*Rn) + cs_/2.*Rn*(
220 std::cyl_bessel_j(0, cs_*Rn) - std::cyl_bessel_j(2, cs_*Rn));
221 double y1_csR = std::cyl_neumann( 1, cs_*Rn) + cs_/2.*Rn*(
222 std::cyl_neumann( 0, cs_*Rn) - std::cyl_neumann(2, cs_*Rn));
223 double RZbar = sqrt(Rn*Rn+Zn*Zn);
224 double cosRZ = -c_[11]*Rn*Zn/(RZbar*RZbar*RZbar)*( c_[11]*RZbar*cos(c_[11]*RZbar) -sin(c_[11]*RZbar) );
226 - c_[1]*j1_csR*c_[10]*sin(c_[10]*Zn)
227 - c_[2]*y1_csR*c_[10]*sin(c_[10]*Zn)
231 + c_[7]*j1_csR*c_[10]*cos(c_[10]*Zn)
232 + c_[8]*y1_csR*c_[10]*cos(c_[10]*Zn) );
236 std::vector<double> c_;
250 return c12_*psip_(R,Z);
266 return c12_*psipR_(R,Z);
281 return c12_*psipZ_(R,Z);
@ solovev
dg::geo::solovev::Psip
@ taylor
dg::geo::taylor::Psip
CylindricalFunctorsLvl2 createPsip(solovev::Parameters gp)
Definition taylor.h:288
CylindricalFunctorsLvl1 createIpol(solovev::Parameters gp)
Definition taylor.h:292
dg::geo::TokamakMagneticField createTaylorField(dg::geo::solovev::Parameters gp)
Create a Taylor Magnetic field.
Definition taylor.h:308
dg::geo::solovev::Parameters Parameters
bring Parameters into the taylor namespace
Definition taylor.h:30
This struct bundles a function and its first derivatives.
Definition fluxfunctions.h:185
This struct bundles a function and its first and second derivatives.
Definition fluxfunctions.h:222
Meta-data about the magnetic field in particular the flux function.
Definition magnetic_field.h:94
A tokamak field as given by R0, Psi and Ipol plus Meta-data like shape and equilibrium.
Definition magnetic_field.h:165
Represent functions written in cylindrical coordinates that are independent of the angle phi serving ...
Definition fluxfunctions.h:66
Constructs and display geometric parameters for the solovev and taylor fields.
Definition solovev_parameters.h:43
double R_0
major tokamak radius
Definition solovev_parameters.h:45
double a
little tokamak radius
Definition solovev_parameters.h:48
std::string description
Definition solovev_parameters.h:52
double elongation
elongation of the magnetic surfaces
Definition solovev_parameters.h:49
double triangularity
triangularity of the magnetic surfaces
Definition solovev_parameters.h:50
Ipol(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:247
double do_compute(double R, double Z) const
Definition taylor.h:248
double do_compute(double R, double Z) const
Definition taylor.h:264
IpolR(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:263
double do_compute(double R, double Z) const
Definition taylor.h:279
IpolZ(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:278
Psip(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:43
double do_compute(double R, double Z) const
Definition taylor.h:46
double do_compute(double R, double Z) const
Definition taylor.h:82
PsipR(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:78
PsipRR(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:116
double do_compute(double R, double Z) const
Definition taylor.h:119
double do_compute(double R, double Z) const
Definition taylor.h:212
PsipRZ(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:209
PsipZ(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:149
double do_compute(double R, double Z) const
Definition taylor.h:152
double do_compute(double R, double Z) const
Definition taylor.h:183
PsipZZ(solovev::Parameters gp)
Construct from given geometric parameters.
Definition taylor.h:180