7 #ifndef WARPX_PARTICLES_PUSHER_COPYPARTICLEATTRIBS_H_ 8 #define WARPX_PARTICLES_PUSHER_COPYPARTICLEATTRIBS_H_ 12 #include <AMReX_REAL.H> 27 const amrex::ParticleReal* AMREX_RESTRICT
uxp =
nullptr;
28 const amrex::ParticleReal* AMREX_RESTRICT
uyp =
nullptr;
29 const amrex::ParticleReal* AMREX_RESTRICT
uzp =
nullptr;
31 amrex::ParticleReal* AMREX_RESTRICT
xpold =
nullptr;
32 amrex::ParticleReal* AMREX_RESTRICT
ypold =
nullptr;
33 amrex::ParticleReal* AMREX_RESTRICT
zpold =
nullptr;
35 amrex::ParticleReal* AMREX_RESTRICT
uxpold =
nullptr;
36 amrex::ParticleReal* AMREX_RESTRICT
uypold =
nullptr;
37 amrex::ParticleReal* AMREX_RESTRICT
uzpold =
nullptr;
48 int a_offset = 0) noexcept
50 if (tmp_particle_data.size() == 0)
return;
54 uxp = attribs[
PIdx::ux].dataPtr() + a_offset;
55 uyp = attribs[
PIdx::uy].dataPtr() + a_offset;
56 uzp = attribs[
PIdx::uz].dataPtr() + a_offset;
58 const auto lev = a_pti.GetLevel();
59 const auto index = a_pti.GetPairIndex();
73 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
76 AMREX_ASSERT(uxp !=
nullptr);
77 AMREX_ASSERT(uyp !=
nullptr);
78 AMREX_ASSERT(uzp !=
nullptr);
80 AMREX_ASSERT(xpold !=
nullptr);
81 AMREX_ASSERT(ypold !=
nullptr);
82 AMREX_ASSERT(zpold !=
nullptr);
84 AMREX_ASSERT(uxpold !=
nullptr);
85 AMREX_ASSERT(uypold !=
nullptr);
86 AMREX_ASSERT(uzpold !=
nullptr);
88 amrex::ParticleReal
x, y,
z;
101 #endif // WARPX_PARTICLES_PUSHER_COPYPARTICLEATTRIBS_H_ amrex::ParticleReal *AMREX_RESTRICT ypold
Definition: CopyParticleAttribs.H:32
Definition: WarpXParticleContainer.H:57
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(const int i) const noexcept
copy the position and momentum of particle i to the temporary data holder
Definition: CopyParticleAttribs.H:74
Definition: WarpXParticleContainer.H:58
amrex::ParticleReal *AMREX_RESTRICT uzpold
Definition: CopyParticleAttribs.H:37
def x
Definition: read_lab_particles.py:25
const std::array< RealVector, PIdx::nattribs > & GetAttribs() const
Definition: WarpXParticleContainer.H:86
index
Definition: run_automated.py:303
amrex::ParticleReal *AMREX_RESTRICT uxpold
Definition: CopyParticleAttribs.H:35
amrex::ParticleReal *AMREX_RESTRICT xpold
Definition: CopyParticleAttribs.H:31
def z
Definition: read_lab_particles.py:26
const amrex::ParticleReal *AMREX_RESTRICT uzp
Definition: CopyParticleAttribs.H:29
const amrex::ParticleReal *AMREX_RESTRICT uxp
Definition: CopyParticleAttribs.H:27
Functor that creates copies of the current particle positions and momenta for later use...
Definition: CopyParticleAttribs.H:21
WarpXParticleContainer::TmpParticles TmpParticles
Definition: CopyParticleAttribs.H:23
CopyParticleAttribs(const WarpXParIter &a_pti, TmpParticles &tmp_particle_data, int a_offset=0) noexcept
Construct a new functor.
Definition: CopyParticleAttribs.H:47
amrex::ParticleReal *AMREX_RESTRICT uypold
Definition: CopyParticleAttribs.H:36
i
Definition: check_interp_points_and_weights.py:171
const amrex::ParticleReal *AMREX_RESTRICT uyp
Definition: CopyParticleAttribs.H:28
GetParticlePosition m_get_position
Definition: CopyParticleAttribs.H:25
Definition: WarpXParticleContainer.H:37
Definition: WarpXParticleContainer.H:58
Definition: WarpXParticleContainer.H:37
amrex::Vector< std::map< PairIndex, TmpParticleTile > > TmpParticles
Definition: WarpXParticleContainer.H:419
Definition: WarpXParticleContainer.H:37
Definition: WarpXParticleContainer.H:58
Definition: WarpXParticleContainer.H:58
Functor that can be used to extract the positions of the macroparticles inside a ParallelFor kernel...
Definition: GetAndSetPosition.H:25
amrex::ParticleReal *AMREX_RESTRICT zpold
Definition: CopyParticleAttribs.H:33
Definition: WarpXParticleContainer.H:76
Definition: WarpXParticleContainer.H:58