XGC1
Functions
unfused_push_algorithm.cpp File Reference
#include "globals.hpp"
#include "magnetic_field.hpp"
#include "grid.hpp"
#include "particles.hpp"
#include "species.hpp"
#include "boundaries.hpp"
#include "push_physics.hpp"
#include "sort.hpp"
#include "shift.hpp"
#include "unfused_push_algorithm.hpp"
#include "get_current_local_pid.hpp"
Include dependency graph for unfused_push_algorithm.cpp:

Functions

void set_phase0_kernel (Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &phase0, const Species< DeviceType > &species, int n_ptl)
 
template<class Device , KinType KT, typename GFPT >
KOKKOS_INLINE_FUNCTION void derivs_kernel_c (const Species< Device > &species, const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const GridFieldPack< Device, GFPT > &gfpack, const PushControls &push_controls, const PerturbedBField< Device > &perturbed_B_field, const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy, const View< int *, CLayout, DeviceType > &current_tr, const int i_item)
 
template<class Device , KinType KT, typename GFPT >
void derivs_kernel (Species< Device > &species, const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const GridFieldPack< Device, GFPT > &gfpack, const GridFieldPack< Device, GFPT > &gfpack_near, const PushControls &push_controls, const PerturbedBField< Device > &perturbed_B_field, Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy, View< int *, CLayout, DeviceType > &current_tr, int n_ptl_in_near_field)
 
void update_phases_kernel (const Species< DeviceType > &species, int n_ptl, const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &phase0, double local_dt, const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy)
 
void update_sum_kernel (Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy_sum, Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy)
 
void update_sum2x_kernel (Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy_sum, Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &dy)
 
void boundaries_kernel (Species< DeviceType > &species, const PushControls &push_controls, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const Sheath< DeviceType > &sheath, const WallLoss &wall_loss, const HeatDiagnostics< DeviceType > &heat_diag, Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &phase0, View< int *, CLayout, DeviceType > &current_tr)
 
void get_local_pid_sort_key (SortViews< DeviceType > &sort_views, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const DomainDecomposition< DeviceType > &pol_decomp, const Species< DeviceType > &species)
 
void bin_by_key (const SortViews< DeviceType > &sort_views, int n_ptl, int n_bins)
 
void unfused_electron_push_kernel (Species< DeviceType > &species, const PushControls &push_controls, const DomainDecomposition< DeviceType > &pol_decomp, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const GridFieldPackPtr &gfpack_ptr, const GridFieldPackPtr &gfpack_near_ptr, const PerturbedBField< DeviceType > &perturbed_B_field, SortViews< DeviceType > &sort_views, const Sheath< DeviceType > &sheath, const WallLoss &wall_loss, const HeatDiagnostics< DeviceType > &heat_diag, UnfusedPushTmpViews< DeviceType > &tmp, int ncycles_per_launch, double dt)
 

Function Documentation

◆ bin_by_key()

void bin_by_key ( const SortViews< DeviceType > &  sort_views,
int  n_ptl,
int  n_bins 
)

Generate the permutation array

Here is the call graph for this function:

◆ boundaries_kernel()

void boundaries_kernel ( Species< DeviceType > &  species,
const PushControls push_controls,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const Sheath< DeviceType > &  sheath,
const WallLoss wall_loss,
const HeatDiagnostics< DeviceType > &  heat_diag,
Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  phase0,
View< int *, CLayout, DeviceType > &  current_tr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ derivs_kernel()

template<class Device , KinType KT, typename GFPT >
void derivs_kernel ( Species< Device > &  species,
const Grid< Device > &  grid,
const MagneticField< Device > &  magnetic_field,
const GridFieldPack< Device, GFPT > &  gfpack,
const GridFieldPack< Device, GFPT > &  gfpack_near,
const PushControls push_controls,
const PerturbedBField< Device > &  perturbed_B_field,
Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy,
View< int *, CLayout, DeviceType > &  current_tr,
int  n_ptl_in_near_field 
)
Here is the call graph for this function:

◆ derivs_kernel_c()

template<class Device , KinType KT, typename GFPT >
KOKKOS_INLINE_FUNCTION void derivs_kernel_c ( const Species< Device > &  species,
const Grid< Device > &  grid,
const MagneticField< Device > &  magnetic_field,
const GridFieldPack< Device, GFPT > &  gfpack,
const PushControls push_controls,
const PerturbedBField< Device > &  perturbed_B_field,
const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy,
const View< int *, CLayout, DeviceType > &  current_tr,
const int  i_item 
)
Here is the call graph for this function:

◆ get_local_pid_sort_key()

void get_local_pid_sort_key ( SortViews< DeviceType > &  sort_views,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const DomainDecomposition< DeviceType > &  pol_decomp,
const Species< DeviceType > &  species 
)
Here is the call graph for this function:

◆ set_phase0_kernel()

void set_phase0_kernel ( Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  phase0,
const Species< DeviceType > &  species,
int  n_ptl 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ unfused_electron_push_kernel()

void unfused_electron_push_kernel ( Species< DeviceType > &  species,
const PushControls push_controls,
const DomainDecomposition< DeviceType > &  pol_decomp,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const GridFieldPackPtr gfpack_ptr,
const GridFieldPackPtr gfpack_near_ptr,
const PerturbedBField< DeviceType > &  perturbed_B_field,
SortViews< DeviceType > &  sort_views,
const Sheath< DeviceType > &  sheath,
const WallLoss wall_loss,
const HeatDiagnostics< DeviceType > &  heat_diag,
UnfusedPushTmpViews< DeviceType > &  tmp,
int  ncycles_per_launch,
double  dt 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_phases_kernel()

void update_phases_kernel ( const Species< DeviceType > &  species,
int  n_ptl,
const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  phase0,
double  local_dt,
const Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_sum2x_kernel()

void update_sum2x_kernel ( Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy_sum,
Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_sum_kernel()

void update_sum_kernel ( Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy_sum,
Cabana::AoSoA< PhaseDataTypes, DeviceType, VEC_LEN > &  dy 
)
Here is the call graph for this function:
Here is the caller graph for this function: