XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Functions
push.cpp File Reference
#include "timer_macro.hpp"
#include "globals.hpp"
#include "particles.hpp"
#include "sort.hpp"
#include "push_algorithm.hpp"
#include "send_particles.hpp"
#include "push.hpp"
Include dependency graph for push.cpp:

Functions

void set_spall_num (FortranPtr spall_fptr, int isp, int n_electrons)
 
void get_diag_heat_pv (double **heat_pv, double **heat_pv_psi)
 
void get_diag_heat_pv_psi2 (double **heat_pv_psi2)
 
void get_sheath_pot (double **pot_in)
 
void get_sheath_en_max (double **sheath_en_max_in, int *grid_nwall_in, int *sheath_nphi_in, int *n_threads)
 
void get_ptb_3db_arrays (PertVec **ptb_3db_bfield_re, PertVec **ptb_3db_bfield_im, PertVec **ptb_3db_bfield_re_vac, PertVec **ptb_3db_bfield_im_vac)
 
void get_diag_1d_f_pv1 (double **diag_1d_f_pv1_in)
 
void get_diag_1d_df_pv1 (double **diag_1d_df_pv1_in)
 
void copy_sheath_from_device (double *lost_out, double *ilost_out)
 
void copy_neutrals_from_device (double *weight_sum_lost_out, double *weight_wall_lost_out)
 
void copy_heat_diagnostics1_from_device (double *heat_pv_out, double *heat_pv_psi_out)
 
void copy_heat_diagnostics2_from_device (double *heat_pv_psi2_out)
 
void copy_sheath_mode2_from_device (SheathVec *ptl_ph_back, SheathVec *ptl_ph_out, int n_electrons)
 
void get_sheath_mode2 (int **sheath_ptl_widx_in, int **sheath_ptl_iphi_in, double **sheath_ptl_en_para_in, double **sheath_ptl_en_perp_in, double **sheath_en_max_in)
 
void copy_diag_1d_f_pv1_from_device (double *d1d_f_pv1_out)
 
void copy_diag_1d_df_pv1_from_device (double *d1d_df_pv1_out)
 
void copy_adj_eden_rad_flux_from_device (int *psn_fptr, double *adj_eden_rad_flux_out, int kernel_nthreads, int npsi)
 
void copy_adj_eden_wall_loss_from_device (int *psn_fptr, double *adj_eden_wall_loss_out, int kernel_nthreads, int npsi)
 
FieldXGCaget_E_rho_loc (FortranPtr psn_fptr)
 
void copy_phase_to_phase0 (int isp)
 
void fortran_sort_particles (int isp, int istep)
 
template<KinType KT>
void templated_push (const int ipc, const bool diag_on, const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const Species< DeviceType > &species, const TmpSpecies< DeviceType > &tmp_species, const ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field, const Sheath< DeviceType > &sheath, const SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const GeneratePermutation< DeviceType > &gen_perm, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag)
 
template void templated_push< DriftKin > (const int ipc, const bool diag_on, const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const Species< DeviceType > &species, const TmpSpecies< DeviceType > &tmp_species, const ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field, const Sheath< DeviceType > &sheath, const SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const GeneratePermutation< DeviceType > &gen_perm, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag)
 
template void templated_push< GyroKin > (const int ipc, const bool diag_on, const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const Species< DeviceType > &species, const TmpSpecies< DeviceType > &tmp_species, const ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field, const Sheath< DeviceType > &sheath, const SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const GeneratePermutation< DeviceType > &gen_perm, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag)
 
void push (int ipc, int istep, int isp, bool diag_on, FortranPtr psn_fptr, FortranPtr spall_fptr, const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, Species< DeviceType > &species, TmpSpecies< DeviceType > &tmp_species, ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field, const Sheath< DeviceType > &sheath, SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const GeneratePermutation< DeviceType > &gen_perm, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag, const GeneratePermutation< DeviceType > &pid_gen_perm, const DomainDecomposition< DeviceType > &pol_decomp)
 
void setup_sheath_mode_2 (SheathParticles< DeviceType > &sheath_particles, int n_tmp)
 
void copy_push_requisites_to_device (const Simulation< DeviceType > &sml, const PerturbedBField< DeviceType > &perturbed_B_field, const Sheath< DeviceType > &sheath, SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag)
 
void copy_phi_grid_fields_to_device (FortranPtr psn_fptr, ElectricField< DeviceType > &electric_field)
 
void copy_rho_grid_fields_to_device (FortranPtr psn_fptr, ElectricField< DeviceType > &electric_field)
 
void copy_grid_fields_to_device (FortranPtr psn_fptr, ElectricField< DeviceType > &electric_field, int isp, bool electron_on)
 
void copy_push_updates_from_device (FortranPtr psn_fptr, const Simulation< DeviceType > &sml, const Sheath< DeviceType > &sheath, const SheathParticles< DeviceType > &sheath_particles, const Neutrals< DeviceType > &neutrals, const Diagnostics< DeviceType > &diag, const Charge< DeviceType > &charge, const HeatDiagnostics< DeviceType > &heat_diag)
 

Function Documentation

void copy_adj_eden_rad_flux_from_device ( int *  psn_fptr,
double *  adj_eden_rad_flux_out,
int  kernel_nthreads,
int  npsi 
)

Here is the caller graph for this function:

void copy_adj_eden_wall_loss_from_device ( int *  psn_fptr,
double *  adj_eden_wall_loss_out,
int  kernel_nthreads,
int  npsi 
)

Here is the caller graph for this function:

void copy_diag_1d_df_pv1_from_device ( double *  d1d_df_pv1_out)

Here is the caller graph for this function:

void copy_diag_1d_f_pv1_from_device ( double *  d1d_f_pv1_out)

Here is the caller graph for this function:

void copy_grid_fields_to_device ( FortranPtr  psn_fptr,
ElectricField< DeviceType > &  electric_field,
int  isp,
bool  electron_on 
)

Allocates the electric field on device (if XGC1; the XGCa arrays are smaller so never deallocated), then copies the field data from fortran arrays to the device views. Acts on the phi grids or the rho grids for electrons and ions respectively

Parameters
[in]psn_fptris the pointer to the Fortran psn object
[in,out]electric_fieldis the object containing the device fields
[in]ispis the species index
[in]electron_onis whether the electrons are kinetic; if not, then XGCa version copies the field when they are first needed (i.e. when the first ion is being pushed)
Returns
void

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_heat_diagnostics1_from_device ( double *  heat_pv_out,
double *  heat_pv_psi_out 
)

Here is the caller graph for this function:

void copy_heat_diagnostics2_from_device ( double *  heat_pv_psi2_out)

Here is the caller graph for this function:

void copy_neutrals_from_device ( double *  weight_sum_lost_out,
double *  weight_wall_lost_out 
)

Here is the caller graph for this function:

void copy_phase_to_phase0 ( int  isp)

Here is the caller graph for this function:

void copy_phi_grid_fields_to_device ( FortranPtr  psn_fptr,
ElectricField< DeviceType > &  electric_field 
)

Allocates the electric field etc. needed for electrons (i.e. with phi index) on device, then copies the field data from fortran arrays to the device views

Parameters
[in]psn_fptris the pointer to the Fortran psn object
[in,out]electric_fieldis the object containing the device fields
Returns
void

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_push_requisites_to_device ( const Simulation< DeviceType > &  sml,
const PerturbedBField< DeviceType > &  perturbed_B_field,
const Sheath< DeviceType > &  sheath,
SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_push_updates_from_device ( FortranPtr  psn_fptr,
const Simulation< DeviceType > &  sml,
const Sheath< DeviceType > &  sheath,
const SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_rho_grid_fields_to_device ( FortranPtr  psn_fptr,
ElectricField< DeviceType > &  electric_field 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_sheath_from_device ( double *  lost_out,
double *  ilost_out 
)

Here is the caller graph for this function:

void copy_sheath_mode2_from_device ( SheathVec ptl_ph_back,
SheathVec ptl_ph_out,
int  n_electrons 
)

Here is the caller graph for this function:

void fortran_sort_particles ( int  isp,
int  istep 
)

Here is the caller graph for this function:

void get_diag_1d_df_pv1 ( double **  diag_1d_df_pv1_in)
void get_diag_1d_f_pv1 ( double **  diag_1d_f_pv1_in)
void get_diag_heat_pv ( double **  heat_pv,
double **  heat_pv_psi 
)

Here is the caller graph for this function:

void get_diag_heat_pv_psi2 ( double **  heat_pv_psi2)

Here is the caller graph for this function:

FieldXGCa* get_E_rho_loc ( FortranPtr  psn_fptr)

Here is the caller graph for this function:

void get_ptb_3db_arrays ( PertVec **  ptb_3db_bfield_re,
PertVec **  ptb_3db_bfield_im,
PertVec **  ptb_3db_bfield_re_vac,
PertVec **  ptb_3db_bfield_im_vac 
)

Here is the caller graph for this function:

void get_sheath_en_max ( double **  sheath_en_max_in,
int *  grid_nwall_in,
int *  sheath_nphi_in,
int *  n_threads 
)

Here is the caller graph for this function:

void get_sheath_mode2 ( int **  sheath_ptl_widx_in,
int **  sheath_ptl_iphi_in,
double **  sheath_ptl_en_para_in,
double **  sheath_ptl_en_perp_in,
double **  sheath_en_max_in 
)

Here is the caller graph for this function:

void get_sheath_pot ( double **  pot_in)
void push ( int  ipc,
int  istep,
int  isp,
bool  diag_on,
FortranPtr  psn_fptr,
FortranPtr  spall_fptr,
const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
Species< DeviceType > &  species,
TmpSpecies< DeviceType > &  tmp_species,
ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field,
const Sheath< DeviceType > &  sheath,
SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const GeneratePermutation< DeviceType > &  gen_perm,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag,
const GeneratePermutation< DeviceType > &  pid_gen_perm,
const DomainDecomposition< DeviceType > &  pol_decomp 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void set_spall_num ( FortranPtr  spall_fptr,
int  isp,
int  n_electrons 
)
void setup_sheath_mode_2 ( SheathParticles< DeviceType > &  sheath_particles,
int  n_tmp 
)

Here is the call graph for this function:

Here is the caller graph for this function:

template<KinType KT>
void templated_push ( const int  ipc,
const bool  diag_on,
const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const Species< DeviceType > &  species,
const TmpSpecies< DeviceType > &  tmp_species,
const ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field,
const Sheath< DeviceType > &  sheath,
const SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const GeneratePermutation< DeviceType > &  gen_perm,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag 
)

Here is the call graph for this function:

template void templated_push< DriftKin > ( const int  ipc,
const bool  diag_on,
const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const Species< DeviceType > &  species,
const TmpSpecies< DeviceType > &  tmp_species,
const ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field,
const Sheath< DeviceType > &  sheath,
const SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const GeneratePermutation< DeviceType > &  gen_perm,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag 
)

Here is the caller graph for this function:

template void templated_push< GyroKin > ( const int  ipc,
const bool  diag_on,
const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const Species< DeviceType > &  species,
const TmpSpecies< DeviceType > &  tmp_species,
const ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field,
const Sheath< DeviceType > &  sheath,
const SheathParticles< DeviceType > &  sheath_particles,
const Neutrals< DeviceType > &  neutrals,
const GeneratePermutation< DeviceType > &  gen_perm,
const Diagnostics< DeviceType > &  diag,
const Charge< DeviceType > &  charge,
const HeatDiagnostics< DeviceType > &  heat_diag 
)

Here is the caller graph for this function: