From a321b95b2f7fc48d295368e3d8772a3b8135328f Mon Sep 17 00:00:00 2001 From: MaxThevenet Date: Mon, 4 Feb 2019 18:30:26 -0800 Subject: added temporary PhysicalParticleContainer to the MultiParticleContainer. segfault at init --- Source/PhysicalParticleContainer.cpp | 79 +++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) (limited to 'Source/PhysicalParticleContainer.cpp') diff --git a/Source/PhysicalParticleContainer.cpp b/Source/PhysicalParticleContainer.cpp index 79f132f4d..3952e48a4 100644 --- a/Source/PhysicalParticleContainer.cpp +++ b/Source/PhysicalParticleContainer.cpp @@ -78,9 +78,14 @@ PhysicalParticleContainer::PhysicalParticleContainer (AmrCore* amr_core, int isp ParmParse pp(species_name); pp.query("boost_adjust_transverse_positions", boost_adjust_transverse_positions); - pp.query("do_backward_propagation", do_backward_propagation); + pp.query("do_backward_propagation", do_backward_propagation); + pp.query("do_splitting", do_splitting); } +PhysicalParticleContainer::PhysicalParticleContainer (AmrCore* amr_core) + : WarpXParticleContainer(amr_core, 0) +{} + void PhysicalParticleContainer::InitData() { AddParticles(0); // Note - add on level 0 @@ -1396,9 +1401,12 @@ PhysicalParticleContainer::Evolve (int lev, // BL_PROFILE_VAR_START(blp_pxr_pp); PushPX(pti, m_xp[thread_num], m_yp[thread_num], m_zp[thread_num], - m_giv[thread_num], dt); + m_giv[thread_num], dt); BL_PROFILE_VAR_STOP(blp_pxr_pp); + // Split particles + SplitParticles(pti, lev); + // // Current Deposition // @@ -1428,6 +1436,73 @@ PhysicalParticleContainer::Evolve (int lev, } } +void +PhysicalParticleContainer::SplitParticles(WarpXParIter& pti, int lev) +{ + auto& mypc = WarpX::GetInstance().GetPartContainer(); + auto& pctmp_split = mypc.GetPCtmp(); + // std::unique_ptr pc_tmp = mypc.pc_tmp; + // WarpXParticleContainer ppc_tmp(amr_core, ispecies); + Cuda::DeviceVector xp, yp, zp; + pti.GetPosition(xp, yp, zp); + auto& attribs = pti.GetAttribs(); + auto& wp = attribs[PIdx::w ]; + auto& uxp = attribs[PIdx::ux]; + auto& uyp = attribs[PIdx::uy]; + auto& uzp = attribs[PIdx::uz]; + const long np = pti.numParticles(); + const std::array& dx = WarpX::CellSize(lev); + Print()<< "dx "<& xp, -- cgit v1.2.3