1 #ifndef GYRO_RADIUS_HPP
2 #define GYRO_RADIUS_HPP
10 template<
class Device>
17 double B = sqrt( br*br + bz*bz + bphi*bphi );
26 #if defined(XGC1) && defined(NEWGYROMATRIX)
36 KOKKOS_INLINE_FUNCTION
Simd<double> operator [](
int i)
const {
return rho[i];}
37 KOKKOS_INLINE_FUNCTION
Simd<double>& operator [](
int i) {
return rho[i];}
40 template<
class Device>
46 for (
int i_simd = 0; i_simd<SIMD_SIZE; i_simd++){
48 phimax[i_simd] = phimin[i_simd] + grid.
delta_phi;
54 magnetic_field.
get_psi(xp[0],psip[0]);
55 magnetic_field.
get_psi(xp[1],psip[1]);
57 for (
int i_simd = 0; i_simd<SIMD_SIZE; i_simd++){
58 for (
int iphi=0; iphi<=1; iphi++){
59 double r = xp[iphi].
r[i_simd];
60 double z = xp[iphi].
z[i_simd];
61 double ti=species.
eq_temp.value(magnetic_field, psip[iphi][i_simd],r,z);
64 double B = sqrt( br*br + bz*bz + bphi*bphi );
65 rho[iphi][i_simd]=sqrt(2.0*B*mu[i_simd]/(ti*
EV_2_J));
82 KOKKOS_INLINE_FUNCTION
double operator [](
int i)
const {
return rho[i];}
83 KOKKOS_INLINE_FUNCTION
double& operator [](
int i) {
return rho[i];}
86 template<
class Device>
88 for (
int i_simd = 0; i_simd<SIMD_SIZE; i_simd++){
89 rho[i_simd]=
gyro_radius(magnetic_field,x.
r[i_simd],x.
z[i_simd],mu[i_simd],species.
c2_2m);
103 template<
class Device>
constexpr double EV_2_J
Conversion rate ev to J.
Definition: globals.hpp:172
KOKKOS_INLINE_FUNCTION void bvec_interpol(double r, double z, double phi, double &br, double &bz, double &bphi) const
Definition: magnetic_field.tpp:222
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:288
Definition: gyro_radius.hpp:24
double c2_2m
c2/2m
Definition: species.hpp:84
Definition: globals.hpp:82
Definition: magnetic_field.hpp:12
KOKKOS_INLINE_FUNCTION void get_psi(const SimdVector2D &x, Simd< double > &psi_out) const
Definition: magnetic_field.tpp:82
KOKKOS_INLINE_FUNCTION SimdGyroRadius()
Definition: gyro_radius.hpp:100
Simd< double > z
Definition: simd.hpp:141
Definition: globals.hpp:83
KOKKOS_INLINE_FUNCTION int get_plane_index(double phi) const
Definition: grid.tpp:764
Simd< double > r
Definition: simd.hpp:140
Definition: magnetic_field.F90:1
KOKKOS_INLINE_FUNCTION SimdGyroRadius(const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const Species< DeviceType > &species, const SimdVector2D &x, Simd< double > &phi, Simd< double > &mu, Simd< int > &itr)
Definition: gyro_radius.hpp:87
Definition: species.hpp:72
Simd< double > rho
Definition: gyro_radius.hpp:77
Eq::Profile< Device > eq_temp
Definition: species.hpp:121
KOKKOS_INLINE_FUNCTION SimdGyroRadius(const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const Species< DeviceType > &species, const SimdVector2D &x, Simd< double > &phi, Simd< double > &mu, Simd< int > &itr)
Definition: gyro_radius.hpp:104
double delta_phi
Distance between planes.
Definition: grid.hpp:219