1 #ifndef MAGNETIC_FIELD_HPP
2 #define MAGNETIC_FIELD_HPP
11 KOKKOS_INLINE_FUNCTION
void derivs(
const double (&x)[2],
double phi,
double (&dx)[2])
const;
34 MagneticField(
double bt_sign_in,
double bp_sign_in,
int ff_step_in,
int ff_order_in,
double bd_min_r_in,
double bd_max_r_in,
double bd_min_z_in,
double bd_max_z_in,
double inpsi_in,
double outpsi_in,
36 double *rc_in,
double *zc_in,
BicubCoeff *acoeff_in,
int nr_in,
int nz_in,
double rmin_in,
double zmin_in,
double dr_inv_in,
double dz_inv_in,
38 OneDCoeff *one_d_cub_acoef_in,
int ncoeff_in,
double max_psi_in,
double min_psi_in,
double one_d_cub_dpsi_inv_in,
40 double eq_min_r,
double eq_max_r,
double eq_min_z,
double eq_max_z,
41 double eq_x_psi,
double epsil_psi,
double eq_x_r,
double eq_x_slope,
double eq_x_z,
42 double eq_x2_r,
double eq_x2_slope,
double eq_x2_z,
double eq_x2_psi,
double eq_axis_r,
43 double eq_axis_z,
int eq_mpsi);
65 KOKKOS_INLINE_FUNCTION
double I_value(
double psi_in,
int rgn3)
const;
67 KOKKOS_INLINE_FUNCTION
double I_deriv(
double psi_in,
int rgn3)
const;
72 KOKKOS_INLINE_FUNCTION
void bvec_interpol(
double r,
double z,
double phi,
double &br,
double &bz,
double &bphi)
const;
double inpsi
Boundary condition used in a few spots.
Definition: magnetic_field.hpp:25
MagneticField(PsiOption psi_opt)
Definition: magnetic_field.hpp:46
double bd_max_z
Maximum z (of what exactly?)
Definition: magnetic_field.hpp:23
CubInterp< Device > I_interp
The object for interpolating I (for deriving toroidal magnetic field)
Definition: magnetic_field.hpp:31
KOKKOS_INLINE_FUNCTION void bvec_interpol(double r, double z, double phi, double &br, double &bz, double &bphi) const
Definition: magnetic_field.tpp:150
PsiOption
Definition: equil.hpp:7
KOKKOS_INLINE_FUNCTION void follow_field(const SimdVector2D &x_org, const Simd< double > &phi_org, const Simd< double > &phi_dest, SimdVector2D &x_dest) const
Definition: magnetic_field.tpp:216
int ff_order
Order of RK scheme used for field following. Can be 1, 2, or 4.
Definition: magnetic_field.hpp:19
Definition: magnetic_field.hpp:9
KOKKOS_INLINE_FUNCTION double I_deriv(double psi_in, int rgn3) const
Definition: magnetic_field.tpp:63
KOKKOS_INLINE_FUNCTION void bmag_interpol(const SimdVector &v, Simd< double > &bmag) const
Definition: magnetic_field.tpp:185
Definition: cub_interp.hpp:11
MagneticField()
Definition: magnetic_field.hpp:61
KOKKOS_INLINE_FUNCTION double I_value(double psi_in, int rgn3) const
Definition: magnetic_field.tpp:52
KOKKOS_INLINE_FUNCTION void get_psi(const SimdVector2D &x, Simd< double > &psi_out) const
Definition: magnetic_field.tpp:37
double bd_min_r
Minimum r (of what exactly?)
Definition: magnetic_field.hpp:20
double outpsi
Boundary condition used in a few spots.
Definition: magnetic_field.hpp:26
double bd_min_z
Minimum z (of what exactly?)
Definition: magnetic_field.hpp:22
double bt_sign
Whether toroidal field is reversed?
Definition: magnetic_field.hpp:16
double bp_sign
Whether poloidal field is reversed?
Definition: magnetic_field.hpp:17
Definition: cub_interp.hpp:6
Equilibrium< Device > equil
The object containing information about the magnetic equilibrium.
Definition: magnetic_field.hpp:32
KOKKOS_INLINE_FUNCTION void field(const SimdVector2D &x, SimdVector &bvec, SimdVector(&jacb)[3], Simd< double > &psivec, SimdVector2D &gradpsi, SimdVector &tdb, Simd< bool > &rz_outside) const
Definition: magnetic_field.tpp:78
Bicub< Device > psi_bicub
The object for interpolating psi (magnetic flux surfaces)
Definition: magnetic_field.hpp:30
int ff_step
Number of steps taken when projecting the particle location onto the midplane.
Definition: magnetic_field.hpp:18
KOKKOS_INLINE_FUNCTION void derivs(const double(&x)[2], double phi, double(&dx)[2]) const
Definition: magnetic_field.tpp:330
double bd_max_r
Maximum r (of what exactly?)
Definition: magnetic_field.hpp:21