XGC1
|
#include "globals.hpp"
#include "magnetic_field.hpp"
#include "grid.hpp"
#include "particles.hpp"
#include "species.hpp"
#include "perturbed_B_field.hpp"
#include "grid_field_pack.hpp"
#include "field_aligned_local_fields.hpp"
#include "loop_voltage.hpp"
Functions | |
template<class Device , KinType KT, PhiInterpType PIT, PushDiagToggle PDT> | |
KOKKOS_INLINE_FUNCTION void | derivs_single_with_e_elec_w_diag (const Grid< Device > &grid, const PushControls &push_controls, const Species< Device > &species, const MagneticField< Device > &magnetic_field, const GridFieldPack< Device, PIT > &gfpack, const PerturbedBField< Device > &perturbed_B_field, SimdParticles &part, SimdPhase &dy, SimdGridWeights< Order::One, PIT > &grid_wts, const FieldAlignedLocalFields< KT, PIT > &E_mag, double time, VFDiag< PDT > &vf_diag) |
template<class Device , KinType KT, PhiInterpType PIT> | |
KOKKOS_INLINE_FUNCTION void | derivs_single_with_e_elec (const Grid< Device > &grid, const PushControls &push_controls, const Species< Device > &species, const MagneticField< Device > &magnetic_field, const GridFieldPack< Device, PIT > &gfpack, const PerturbedBField< Device > &perturbed_B_field, SimdParticles &part, SimdPhase &dy, SimdGridWeights< Order::One, PIT > &grid_wts, const FieldAlignedLocalFields< KT, PIT > &E_mag, double time) |
template<class Device , PushDiagToggle PDT> | |
KOKKOS_INLINE_FUNCTION void | derivs_elec (const PushControls &push_controls, const Species< Device > &species, const SimdParticles &part, const Simd< double > &inv_r_vec, const SimdVector &bfield, const Simd< double > &B_mag, const SimdVector(&jacb)[3], const Simd< double > &psi, const SimdVector2D &gradpsi, const SimdVector &tdb, const LocalFields &fld, const LocalEquilProfiles< MT_GLOBAL > &local_eq_profiles, SimdPhase &yprime, VFDiag< PDT > &vf_diag) |
KOKKOS_INLINE_FUNCTION void derivs_elec | ( | const PushControls & | push_controls, |
const Species< Device > & | species, | ||
const SimdParticles & | part, | ||
const Simd< double > & | inv_r_vec, | ||
const SimdVector & | bfield, | ||
const Simd< double > & | B_mag, | ||
const SimdVector(&) | jacb[3], | ||
const Simd< double > & | psi, | ||
const SimdVector2D & | gradpsi, | ||
const SimdVector & | tdb, | ||
const LocalFields & | fld, | ||
const LocalEquilProfiles< MT_GLOBAL > & | local_eq_profiles, | ||
SimdPhase & | yprime, | ||
VFDiag< PDT > & | vf_diag | ||
) |
Get the phase derivatives of a vector of particles
[in] | push_controls | |
[in] | species | |
[in] | part | Vector of particles |
[in] | bfield | Vector of magnetic fields |
[in] | B_mag | Vector of bfield magnitudes |
[in] | jacb | Vector of jacobians |
[in] | psi | Vector of psi coordinates |
[in] | gradpsi | Vector of psi gradients (r,z) |
[in] | tdb | Vector of perturbed magnetic field |
[in] | efield | Vector of electric fields |
[in] | dEr_B2 | Vector of dEr_B2 |
[in] | dEz_B2 | Vector of dEr_B2 |
[in] | du2_E | Vector of du2_E |
[out] | yprime | Vector of derivatives of the particle phases |
[out] | vf_diag | Optional vector of quantities for diagnostic |
KOKKOS_INLINE_FUNCTION void derivs_single_with_e_elec | ( | const Grid< Device > & | grid, |
const PushControls & | push_controls, | ||
const Species< Device > & | species, | ||
const MagneticField< Device > & | magnetic_field, | ||
const GridFieldPack< Device, PIT > & | gfpack, | ||
const PerturbedBField< Device > & | perturbed_B_field, | ||
SimdParticles & | part, | ||
SimdPhase & | dy, | ||
SimdGridWeights< Order::One, PIT > & | grid_wts, | ||
const FieldAlignedLocalFields< KT, PIT > & | E_mag, | ||
double | time | ||
) |
KOKKOS_INLINE_FUNCTION void derivs_single_with_e_elec_w_diag | ( | const Grid< Device > & | grid, |
const PushControls & | push_controls, | ||
const Species< Device > & | species, | ||
const MagneticField< Device > & | magnetic_field, | ||
const GridFieldPack< Device, PIT > & | gfpack, | ||
const PerturbedBField< Device > & | perturbed_B_field, | ||
SimdParticles & | part, | ||
SimdPhase & | dy, | ||
SimdGridWeights< Order::One, PIT > & | grid_wts, | ||
const FieldAlignedLocalFields< KT, PIT > & | E_mag, | ||
double | time, | ||
VFDiag< PDT > & | vf_diag | ||
) |
Compute field quantities needed for the push, then output the phase derivatives of a vector of particles
[in,out] | part | Vector of particles |
[in] | dy | Vector of derivatives of the particle phases |
[in] | grid_wts | Vector of previous triangle index (guess it hasnt moved, to reduce search time) |
[in] | time | Global simulation time, not used at the moment |
[out] | vf_diag | Optional vector of quantities for diagnostic |