aboutsummaryrefslogtreecommitdiff
path: root/Source/WarpXParticleContainer.cpp
diff options
context:
space:
mode:
authorGravatar Andrew Myers <atmyers2@gmail.com> 2018-10-18 17:07:17 -0700
committerGravatar Andrew Myers <atmyers2@gmail.com> 2018-10-18 17:07:17 -0700
commita8a3eeb794a1b9ca1be04d56a43ecfcac827df7e (patch)
tree4a0d1eebdc789a4fb6908cd221e13327e03845e0 /Source/WarpXParticleContainer.cpp
parentbb968cbf24b7804eee989f00c3f863378e3b0f97 (diff)
downloadWarpX-a8a3eeb794a1b9ca1be04d56a43ecfcac827df7e.tar.gz
WarpX-a8a3eeb794a1b9ca1be04d56a43ecfcac827df7e.tar.zst
WarpX-a8a3eeb794a1b9ca1be04d56a43ecfcac827df7e.zip
use thrust::device_vector to store temporary particle quantities
Diffstat (limited to 'Source/WarpXParticleContainer.cpp')
-rw-r--r--Source/WarpXParticleContainer.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/Source/WarpXParticleContainer.cpp b/Source/WarpXParticleContainer.cpp
index 3526ba9c8..252f10691 100644
--- a/Source/WarpXParticleContainer.cpp
+++ b/Source/WarpXParticleContainer.cpp
@@ -250,7 +250,7 @@ WarpXParticleContainer::GetChargeDensity (int lev, bool local)
#pragma omp parallel
#endif
{
- RealVector xp, yp, zp;
+ thrust::device_vector<Real> xp, yp, zp;
FArrayBox local_rho;
for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti)
@@ -300,7 +300,10 @@ WarpXParticleContainer::GetChargeDensity (int lev, bool local)
long lvect = 8;
warpx_charge_deposition(data_ptr,
- &np, xp.data(), yp.data(), zp.data(), wp.data(),
+ &np,
+ thrust::raw_pointer_cast(xp.data()),
+ thrust::raw_pointer_cast(yp.data()),
+ thrust::raw_pointer_cast(zp.data()), wp.data(),
&this->charge, &xyzmin[0], &xyzmin[1], &xyzmin[2],
&dx[0], &dx[1], &dx[2], &nx, &ny, &nz,
&nxg, &nyg, &nzg, &WarpX::nox,&WarpX::noy,&WarpX::noz,
@@ -471,7 +474,7 @@ WarpXParticleContainer::PushX (int lev, Real dt)
#pragma omp parallel
#endif
{
- RealVector xp, yp, zp, giv;
+ thrust::device_vector<Real> xp, yp, zp, giv;
for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti)
{
@@ -498,8 +501,12 @@ WarpXParticleContainer::PushX (int lev, Real dt)
// Particle Push
//
BL_PROFILE_VAR_START(blp_pxr_pp);
- warpx_particle_pusher_positions(&np, xp.data(), yp.data(), zp.data(),
- uxp.data(), uyp.data(), uzp.data(), giv.data(), &dt);
+ warpx_particle_pusher_positions(&np,
+ thrust::raw_pointer_cast(xp.data()),
+ thrust::raw_pointer_cast(yp.data()),
+ thrust::raw_pointer_cast(zp.data()),
+ uxp.data(), uyp.data(), uzp.data(),
+ thrust::raw_pointer_cast(giv.data()), &dt);
BL_PROFILE_VAR_STOP(blp_pxr_pp);
//