XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
scatter.cpp File Reference
#include <iostream>
#include <Kokkos_Core.hpp>
#include <Kokkos_Atomic.hpp>
#include "timer_macro.hpp"
#include "my_subview.hpp"
#include "electric_field.hpp"
#include "update_ptl_weights.hpp"
#include "gyro_radius.hpp"
#include "grid_field_pack.hpp"
#include "charge_sum_and_gyroaverage.hpp"
#include "flux_surface_average.hpp"
#include "scatter.hpp"
Include dependency graph for scatter.cpp:

Functions

template<KinType KT>
void var_transpose_in_place (const View< double ***, CLayout, DeviceType > &dest_view, const GridField< DeviceType, VarType::Scalar, PIT_GLOBAL, TorType::OnePlane, KT, SCATTER_TYPE_GLOBAL > &src_field)
 
template<KinType KT>
void calculate_charge (const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charge< DeviceType, KT > &charge, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp)
 
template void calculate_charge< KinType::DriftKin > (const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charge< DeviceType, KinType::DriftKin > &charge, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp)
 
template void calculate_charge< KinType::GyroKin > (const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charge< DeviceType, KinType::GyroKin > &charge, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp)
 
void chargee_background_setup (NLReader::NamelistReader &nlr, const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, Charges &charges)
 
template<class Device >
KOKKOS_INLINE_FUNCTION void deltaf_particle_weight_adj (const Species< Device > &species, const MagneticField< Device > &magnetic_field, bool do_cv_adjustment, bool cv_full_weight, int i_simd, const Simd< double > &psi, const SimdVector2D &x, double upar, Simd< double > &Ah, const SimdParticles &part, double &particle_weight)
 
template<class Device , KinType KT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void particle_scatter_c (const Species< Device > &species, const Charge< Device, KT > &charge, const Grid< Device > &grid, const MagneticField< Device > &magnetic_field, const GridFieldPack< Device, PIT > &gfpack, bool exclude_private, bool do_cv_adjustment, bool cv_full_weight, int i_item)
 
template<KinType KT, PhiInterpType PIT>
void scatter (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const GridFieldPack< DeviceType, PIT > &gfpack, const Species< DeviceType > &species, bool exclude_private, bool do_cv_adjustment, bool cv_full_weight, const Charge< DeviceType, KT > &charge)
 
template void scatter< DriftKin, PIT_GLOBAL > (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const GridFieldPack< DeviceType, PIT_GLOBAL > &gfpack, const Species< DeviceType > &species, bool exclude_private, bool do_cv_adjustment, bool cv_full_weight, const Charge< DeviceType, DriftKin > &charge)
 
template void scatter< GyroKin, PIT_GLOBAL > (const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, const GridFieldPack< DeviceType, PIT_GLOBAL > &gfpack, const Species< DeviceType > &species, bool exclude_private, bool do_cv_adjustment, bool cv_full_weight, const Charge< DeviceType, GyroKin > &charge)
 

Function Documentation

template<KinType KT>
void calculate_charge ( const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charge< DeviceType, KT > &  charge,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp 
)

Here is the call graph for this function:

Here is the caller graph for this function:

template void calculate_charge< KinType::DriftKin > ( const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charge< DeviceType, KinType::DriftKin > &  charge,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp 
)
template void calculate_charge< KinType::GyroKin > ( const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charge< DeviceType, KinType::GyroKin > &  charge,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp 
)
void chargee_background_setup ( NLReader::NamelistReader nlr,
const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Charges charges 
)

< In case of adiabatic electrons, whether to use a uniform electron background density

Here is the call graph for this function:

Here is the caller graph for this function:

template<class Device >
KOKKOS_INLINE_FUNCTION void deltaf_particle_weight_adj ( const Species< Device > &  species,
const MagneticField< Device > &  magnetic_field,
bool  do_cv_adjustment,
bool  cv_full_weight,
int  i_simd,
const Simd< double > &  psi,
const SimdVector2D x,
double  upar,
Simd< double > &  Ah,
const SimdParticles part,
double &  particle_weight 
)

Here is the caller graph for this function:

template<class Device , KinType KT, PhiInterpType PIT>
KOKKOS_INLINE_FUNCTION void particle_scatter_c ( const Species< Device > &  species,
const Charge< Device, KT > &  charge,
const Grid< Device > &  grid,
const MagneticField< Device > &  magnetic_field,
const GridFieldPack< Device, PIT > &  gfpack,
bool  exclude_private,
bool  do_cv_adjustment,
bool  cv_full_weight,
int  i_item 
)

Scatter electron charge density information onto the grid

Parameters
[in]partParticle AoSoA
[in]i_itemParticle/vector index

Here is the call graph for this function:

template<KinType KT, PhiInterpType PIT>
void scatter ( const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const GridFieldPack< DeviceType, PIT > &  gfpack,
const Species< DeviceType > &  species,
bool  exclude_private,
bool  do_cv_adjustment,
bool  cv_full_weight,
const Charge< DeviceType, KT > &  charge 
)

Here is the call graph for this function:

Here is the caller graph for this function:

template void scatter< DriftKin, PIT_GLOBAL > ( const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const GridFieldPack< DeviceType, PIT_GLOBAL > &  gfpack,
const Species< DeviceType > &  species,
bool  exclude_private,
bool  do_cv_adjustment,
bool  cv_full_weight,
const Charge< DeviceType, DriftKin > &  charge 
)
template void scatter< GyroKin, PIT_GLOBAL > ( const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
const GridFieldPack< DeviceType, PIT_GLOBAL > &  gfpack,
const Species< DeviceType > &  species,
bool  exclude_private,
bool  do_cv_adjustment,
bool  cv_full_weight,
const Charge< DeviceType, GyroKin > &  charge 
)
template<KinType KT>
void var_transpose_in_place ( const View< double ***, CLayout, DeviceType > &  dest_view,
const GridField< DeviceType, VarType::Scalar, PIT_GLOBAL, TorType::OnePlane, KT, SCATTER_TYPE_GLOBAL > &  src_field 
)

Here is the call graph for this function: