|
XGCa
|
#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, MarkerType MT, MagneticFieldMode MFM, BFieldSymmetry BFS, typename GFPT , 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, GFPT > &gfpack, const PerturbedBField< Device > &perturbed_B_field, SimdParticles &part, SimdPhase &dy, SimdGridWeights< Order::One, PIT > &grid_wts, const FieldAlignedLocalFields< KT, PIT, GFPT > &E_mag, double time, VFDiag< PDT > &vf_diag) |
| template<class Device , KinType KT, PhiInterpType PIT, MarkerType MT, MagneticFieldMode MFM, BFieldSymmetry BFS, typename GFPT > | |
| 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, GFPT > &gfpack, const PerturbedBField< Device > &perturbed_B_field, SimdParticles &part, SimdPhase &dy, SimdGridWeights< Order::One, PIT > &grid_wts, const FieldAlignedLocalFields< KT, PIT, GFPT > &E_mag, double time) |
| KOKKOS_INLINE_FUNCTION void | get_curl_B (const SimdVector &bfield, const SimdVector(&jacb)[3], double inv_r, double(&curl_B)[3], int i_simd) |
| KOKKOS_INLINE_FUNCTION double | get_nb_curl_nb (double over_B2, const SimdVector &bfield, const SimdVector(&jacb)[3], double inv_r, int i_simd) |
| KOKKOS_INLINE_FUNCTION double | get_vspace_jacb_factor (double rho_mod, double over_B2, const SimdVector &bfield, const SimdVector(&jacb)[3], double inv_r, int i_simd) |
| KOKKOS_INLINE_FUNCTION void | get_curl_nb (const SimdVector &bfield, const double(&grad_B)[3], double over_B, double over_B2, const double(&curl_B)[3], double inv_r, double(&curl_nb)[3], int i_simd) |
| KOKKOS_INLINE_FUNCTION void | get_grad_B (const SimdVector &bfield, const SimdVector(&jacb)[3], double over_B, double(&grad_B)[3], int i_simd) |
| template<typename GFPT > | |
| KOKKOS_INLINE_FUNCTION void | calculate_Bstar (double drift_on, double rho, const SimdVector &bfield, double B, double over_B, const LocalFields< GFPT > &fld, const double(&curl_nb)[3], double(&Bs)[3], double(&Bsa)[3], int i_simd) |
| KOKKOS_INLINE_FUNCTION void | get_ExB_drift (double D, double drift_on, const SimdVector &bfield, const SimdVector &E, int i_simd, double over_B2, double(&yp_exb)[3]) |
| KOKKOS_INLINE_FUNCTION void calculate_Bstar | ( | double | drift_on, |
| double | rho, | ||
| const SimdVector & | bfield, | ||
| double | B, | ||
| double | over_B, | ||
| const LocalFields< GFPT > & | fld, | ||
| const double(&) | curl_nb[3], | ||
| double(&) | Bs[3], | ||
| double(&) | Bsa[3], | ||
| int | i_simd | ||
| ) |

| 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, GFPT > & | gfpack, | ||
| const PerturbedBField< Device > & | perturbed_B_field, | ||
| SimdParticles & | part, | ||
| SimdPhase & | dy, | ||
| SimdGridWeights< Order::One, PIT > & | grid_wts, | ||
| const FieldAlignedLocalFields< KT, PIT, GFPT > & | 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, GFPT > & | gfpack, | ||
| const PerturbedBField< Device > & | perturbed_B_field, | ||
| SimdParticles & | part, | ||
| SimdPhase & | dy, | ||
| SimdGridWeights< Order::One, PIT > & | grid_wts, | ||
| const FieldAlignedLocalFields< KT, PIT, GFPT > & | 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] | grid | Spatial grid object |
| [in] | push_controls | Set of options/parameters used in the particle push |
| [in] | species | Contains species parameters |
| [in] | magnetic_field | Magnetic field object |
| [in] | gfpack | GridFieldPack object |
| [in] | perturbed_B_field | |
| [in,out] | part | Vector of particles |
| [out] | 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] | E_mag | |
| [in] | time | Global simulation time, not used at the moment |
| [out] | vf_diag | Optional vector of quantities for diagnostic |

| KOKKOS_INLINE_FUNCTION void get_curl_B | ( | const SimdVector & | bfield, |
| const SimdVector(&) | jacb[3], | ||
| double | inv_r, | ||
| double(&) | curl_B[3], | ||
| int | i_simd | ||
| ) |

| KOKKOS_INLINE_FUNCTION void get_curl_nb | ( | const SimdVector & | bfield, |
| const double(&) | grad_B[3], | ||
| double | over_B, | ||
| double | over_B2, | ||
| const double(&) | curl_B[3], | ||
| double | inv_r, | ||
| double(&) | curl_nb[3], | ||
| int | i_simd | ||
| ) |

| KOKKOS_INLINE_FUNCTION void get_ExB_drift | ( | double | D, |
| double | drift_on, | ||
| const SimdVector & | bfield, | ||
| const SimdVector & | E, | ||
| int | i_simd, | ||
| double | over_B2, | ||
| double(&) | yp_exb[3] | ||
| ) |
Get the phase derivatives of a vector of particles
| [in] | D | |
| [in] | drift_on | |
| [in] | bfield | Vector of magnetic fields |
| [in] | E | |
| [in] | i_simd | vector index |
| [in] | over_B2 | 1/|B|^2 |
| [in] | inv_r | 1/r |
| [out] | yp_exb |

| KOKKOS_INLINE_FUNCTION void get_grad_B | ( | const SimdVector & | bfield, |
| const SimdVector(&) | jacb[3], | ||
| double | over_B, | ||
| double(&) | grad_B[3], | ||
| int | i_simd | ||
| ) |

| KOKKOS_INLINE_FUNCTION double get_nb_curl_nb | ( | double | over_B2, |
| const SimdVector & | bfield, | ||
| const SimdVector(&) | jacb[3], | ||
| double | inv_r, | ||
| int | i_simd | ||
| ) |
Get normalized b dot curl of normalized b
| [in] | over_B2 | 1/|B|^2 |
| [in] | bfield | Vector of magnetic fields |
| [in] | jacb | Vector of jacobians |
| [in] | inv_r | 1/r |
| [in] | i_simd | vector index |

| KOKKOS_INLINE_FUNCTION double get_vspace_jacb_factor | ( | double | rho_mod, |
| double | over_B2, | ||
| const SimdVector & | bfield, | ||
| const SimdVector(&) | jacb[3], | ||
| double | inv_r, | ||
| int | i_simd | ||
| ) |

