WarpX
ParticleBoundaryProcess.H
Go to the documentation of this file.
1 /* Copyright 2021 Andrew Myers
2  *
3  * This file is part of WarpX.
4  *
5  * License: BSD-3-Clause-LBNL
6  */
7 #ifndef WARPX_PARTICLEBOUNDARYPROCESS_H_
8 #define WARPX_PARTICLEBOUNDARYPROCESS_H_
9 
10 #include <AMReX_Particle.H>
11 #include <AMReX_REAL.H>
12 #include <AMReX_RealVect.H>
13 #include <AMReX_Random.H>
14 
15 
17 
18 struct NoOp {
19  template <typename PData>
21  void operator() (const PData& /*ptd*/, int /*i*/,
22  const amrex::RealVect& /*pos*/, const amrex::RealVect& /*normal*/,
23  amrex::RandomEngine const& /*engine*/) const noexcept
24  {}
25 };
26 
27 struct Absorb {
28  template <typename PData>
30  void operator() (PData& ptd, int i,
31  const amrex::RealVect& /*pos*/, const amrex::RealVect& /*normal*/,
32  amrex::RandomEngine const& /*engine*/) const noexcept
33  {
34  amrex::ParticleIDWrapper{ptd.m_idcpu[i]}.make_invalid();
35  }
36 };
37 }
38 
39 #endif //WARPX_PARTICLEBOUNDARYPROCESS_H_
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
Definition: ParticleBoundaryProcess.H:16
i
Definition: check_interp_points_and_weights.py:174
Definition: ParticleBoundaryProcess.H:27
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(PData &ptd, int i, const amrex::RealVect &, const amrex::RealVect &, amrex::RandomEngine const &) const noexcept
Definition: ParticleBoundaryProcess.H:30
Definition: ParticleBoundaryProcess.H:18
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(const PData &, int, const amrex::RealVect &, const amrex::RealVect &, amrex::RandomEngine const &) const noexcept
Definition: ParticleBoundaryProcess.H:21
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void make_invalid() const noexcept