8 #ifndef PAIRWISE_COULOMB_COLLISION_FUNC_H_ 9 #define PAIRWISE_COULOMB_COLLISION_FUNC_H_ 16 #include <AMReX_DenseBins.H> 17 #include <AMReX_ParmParse.H> 18 #include <AMReX_Random.H> 19 #include <AMReX_REAL.H> 31 using SoaData_type = WarpXParticleContainer::ParticleTileType::ParticleTileDataType;
47 amrex::ParmParse pp_collision_name(collision_name);
69 AMREX_GPU_HOST_DEVICE AMREX_INLINE
76 amrex::Real
const q1, amrex::Real
const q2,
77 amrex::Real
const m1, amrex::Real
const m2,
78 amrex::Real
const dt, amrex::Real
const dV,
81 amrex::ParticleReal* ,
82 amrex::RandomEngine
const& engine)
const 85 I1s, I1e, I2s, I2e, I1, I2,
87 q1, q2, m1, m2, amrex::Real(-1.0), amrex::Real(-1.0),
95 #endif // PAIRWISE_COULOMB_COLLISION_FUNC_H_ PairWiseCoulombCollisionFunc(const std::string collision_name)
Constructor of the PairWiseCoulombCollisionFunc class.
Definition: PairWiseCoulombCollisionFunc.H:44
This functor performs pairwise Coulomb collision on a single cell by calling the function ElasticColl...
Definition: PairWiseCoulombCollisionFunc.H:26
ParticleBins::index_type index_type
Definition: PairWiseCoulombCollisionFunc.H:30
WarpXParticleContainer::ParticleTileType::ParticleTileDataType SoaData_type
Definition: PairWiseCoulombCollisionFunc.H:31
amrex::DenseBins< ParticleType > ParticleBins
Definition: PairWiseCoulombCollisionFunc.H:29
amrex::Real m_CoulombLog
Definition: PairWiseCoulombCollisionFunc.H:92
ParticleBins::index_type index_type
Definition: ParticleUtils.cpp:32
WarpXParticleContainer::ParticleType ParticleType
Definition: ParticleUtils.cpp:29
AMREX_GPU_HOST_DEVICE AMREX_INLINE void ElasticCollisionPerez(T_index const I1s, T_index const I1e, T_index const I2s, T_index const I2e, T_index *I1, T_index *I2, SoaData_type soa_1, SoaData_type soa_2, T_R const q1, T_R const q2, T_R const m1, T_R const m2, T_R const T1, T_R const T2, T_R const dt, T_R const L, T_R const dV, amrex::RandomEngine const &engine)
Prepare information for and call UpdateMomentumPerezElastic().
Definition: ElasticCollisionPerez.H:39
Functor that can be used to extract the positions of the macroparticles inside a ParallelFor kernel...
Definition: GetAndSetPosition.H:48
AMREX_GPU_HOST_DEVICE AMREX_INLINE void operator()(index_type const I1s, index_type const I1e, index_type const I2s, index_type const I2e, index_type *I1, index_type *I2, SoaData_type soa_1, SoaData_type soa_2, GetParticlePosition, GetParticlePosition, amrex::Real const q1, amrex::Real const q2, amrex::Real const m1, amrex::Real const m2, amrex::Real const dt, amrex::Real const dV, index_type const, index_type *, index_type *, index_type *, amrex::ParticleReal *, amrex::RandomEngine const &engine) const
operator() of the PairWiseCoulombCollisionFunc class. Performs Coulomb collisions at the cell level b...
Definition: PairWiseCoulombCollisionFunc.H:70
int queryWithParser(const amrex::ParmParse &a_pp, char const *const str, amrex::Real &val)
Similar to amrex::ParmParse::query, but also supports math expressions for the value.
Definition: WarpXUtil.cpp:380
WarpXParticleContainer::ParticleType ParticleType
Definition: PairWiseCoulombCollisionFunc.H:28
PairWiseCoulombCollisionFunc()=default
Default constructor of the PairWiseCoulombCollisionFunc class.