XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
push_physics.tpp File Reference
#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"
Include dependency graph for push_physics.tpp:
This graph shows which files directly or indirectly include this file:

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])
 

Function Documentation

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 
)

Here is the caller graph for this function:

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 
)
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 
)

Compute field quantities needed for the push, then output the phase derivatives of a vector of particles

Parameters
[in]gridSpatial grid object
[in]push_controlsSet of options/parameters used in the particle push
[in]speciesContains species parameters
[in]magnetic_fieldMagnetic field object
[in]gfpackGridFieldPack object
[in]perturbed_B_field
[in,out]partVector of particles
[out]dyVector of derivatives of the particle phases
[in]grid_wtsVector of previous triangle index (guess it hasnt moved, to reduce search time)
[in]E_mag
[in]timeGlobal simulation time, not used at the moment
[out]vf_diagOptional vector of quantities for diagnostic

Here is the call graph for this function:

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

Here is the caller graph for this function:

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 
)

Here is the caller graph for this function:

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

Parameters
[in]D
[in]drift_on
[in]bfieldVector of magnetic fields
[in]E
[in]i_simdvector index
[in]over_B21/|B|^2
[in]inv_r1/r
[out]yp_exb

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Parameters
[in]over_B21/|B|^2
[in]bfieldVector of magnetic fields
[in]jacbVector of jacobians
[in]inv_r1/r
[in]i_simdvector index
Returns
double normalized b dot curl of normalized b

Here is the caller graph for this function:

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 
)

Here is the call graph for this function:

Here is the caller graph for this function: