XGC1
|
#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"
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) |
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 | ||
) |
< In case of adiabatic electrons, whether to use a uniform electron background density
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 | ||
) |
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
[in] | part | Particle AoSoA |
[in] | i_item | Particle/vector index |
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 | ||
) |
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 | ||
) |