WarpX
PairWiseCoulombCollisionFunc.H
Go to the documentation of this file.
1 /* Copyright 2021 Neil Zaim
2  *
3  * This file is part of WarpX.
4  *
5  * License: BSD-3-Clause-LBNL
6  */
7 
8 #ifndef PAIRWISE_COULOMB_COLLISION_FUNC_H_
9 #define PAIRWISE_COULOMB_COLLISION_FUNC_H_
10 
11 #include "ElasticCollisionPerez.H"
15 
16 #include <AMReX_DenseBins.H>
17 #include <AMReX_ParmParse.H>
18 #include <AMReX_Random.H>
19 #include <AMReX_REAL.H>
20 
21 
27  // Define shortcuts for frequently-used type names
32 
33 public:
37  PairWiseCoulombCollisionFunc () = default;
38 
44  PairWiseCoulombCollisionFunc (const std::string collision_name,
45  MultiParticleContainer const * const /*mypc*/,
46  const bool /*isSameSpecies*/)
47  {
48  using namespace amrex::literals;
49  amrex::ParmParse pp_collision_name(collision_name);
50  // default Coulomb log, if < 0, will be computed automatically
51  m_CoulombLog = -1.0_prt;
53  pp_collision_name, "CoulombLog", m_CoulombLog);
54  }
55 
72  index_type const I1s, index_type const I1e,
73  index_type const I2s, index_type const I2e,
74  index_type const* AMREX_RESTRICT I1,
75  index_type const* AMREX_RESTRICT I2,
76  SoaData_type soa_1, SoaData_type soa_2,
77  GetParticlePosition /*get_position_1*/, GetParticlePosition /*get_position_2*/,
78  amrex::ParticleReal const q1, amrex::ParticleReal const q2,
79  amrex::ParticleReal const m1, amrex::ParticleReal const m2,
80  amrex::Real const dt, amrex::Real const dV,
81  index_type const /*cell_start_pair*/, index_type* /*p_mask*/,
82  index_type* /*p_pair_indices_1*/, index_type* /*p_pair_indices_2*/,
83  amrex::ParticleReal* /*p_pair_reaction_weight*/,
84  amrex::RandomEngine const& engine) const
85  {
87  I1s, I1e, I2s, I2e, I1, I2,
88  soa_1, soa_2,
89  q1, q2, m1, m2, -1.0_prt, -1.0_prt,
90  dt, m_CoulombLog, dV, engine );
91  }
92 
93 private:
94  amrex::ParticleReal m_CoulombLog;
95 };
96 
97 #endif // PAIRWISE_COULOMB_COLLISION_FUNC_H_
This functor performs pairwise Coulomb collision on a single cell by calling the function ElasticColl...
Definition: PairWiseCoulombCollisionFunc.H:26
Definition: MultiParticleContainer.H:64
ParticleBins::index_type index_type
Definition: PairWiseCoulombCollisionFunc.H:30
int dt
Definition: Stencil.py:468
int queryWithParser(const amrex::ParmParse &a_pp, char const *const str, T &val)
Definition: ParserUtils.H:118
PairWiseCoulombCollisionFunc(const std::string collision_name, MultiParticleContainer const *const, const bool)
Constructor of the PairWiseCoulombCollisionFunc class.
Definition: PairWiseCoulombCollisionFunc.H:44
#define AMREX_GPU_HOST_DEVICE
#define AMREX_INLINE
amrex::ParticleReal m_CoulombLog
Definition: PairWiseCoulombCollisionFunc.H:94
ParticleTileData< NStructReal, NStructInt, NArrayReal, NArrayInt > ParticleTileDataType
Functor that can be used to extract the positions of the macroparticles inside a ParallelFor kernel...
Definition: GetAndSetPosition.H:52
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 const *AMREX_RESTRICT I1, index_type const *AMREX_RESTRICT I2, SoaData_type soa_1, SoaData_type soa_2, GetParticlePosition, GetParticlePosition, amrex::ParticleReal const q1, amrex::ParticleReal const q2, amrex::ParticleReal const m1, amrex::ParticleReal 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:71
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 const *AMREX_RESTRICT I1, T_index const *AMREX_RESTRICT I2, SoaData_type soa_1, SoaData_type soa_2, T_PR const q1, T_PR const q2, T_PR const m1, T_PR const m2, T_PR const T1, T_PR const T2, T_R const dt, T_PR const L, T_R const dV, amrex::RandomEngine const &engine)
Definition: ElasticCollisionPerez.H:43
PairWiseCoulombCollisionFunc()=default
Default constructor of the PairWiseCoulombCollisionFunc class.