From 6edcfa4191750125e3a1afef7d94ace4052ccd6d Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 27 Apr 2023 14:19:22 -0700 Subject: [PATCH] ParticleContainer: More Pure SoA Init Functions Depends on upstream. --- src/Particle/ParticleContainer.H | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/Particle/ParticleContainer.H b/src/Particle/ParticleContainer.H index 02f5c34f..69fee746 100644 --- a/src/Particle/ParticleContainer.H +++ b/src/Particle/ParticleContainer.H @@ -221,14 +221,16 @@ void make_ParticleContainer_and_Iterators (py::module &m, std::string allocstr) // const IntVect* Nrep = nullptr); // void InitFromBinaryFile (const std::string& file, int extradata); - // void InitFromBinaryMetaFile - // void InitRandom (Long icount, ULong iseed, - // const ParticleInitData& mass, - // bool serialize = false, RealBox bx = RealBox()); - .def("Increment", &ParticleContainerType::Increment) // TODO pure SoA - //.def("IncrementWithTotal", &ParticleContainerType::IncrementWithTotal, py::arg("mf"), py::arg("level"), py::arg("local")=false) // TODO pure SoA + // TODO for pure SoA + // depends on https://github.com/AMReX-Codes/amrex/pull/3280 + .def("InitRandom", py::overload_cast(&ParticleContainerType::InitRandom)) // TODO pure SoA + .def("InitRandomPerBox", py::overload_cast(&ParticleContainerType::InitRandomPerBox)) // TODO pure SoA + .def("InitOnePerCell", &ParticleContainerType::InitOnePerCell) // TODO pure SoA + + .def("Increment", &ParticleContainerType::Increment) + .def("IncrementWithTotal", &ParticleContainerType::IncrementWithTotal, py::arg("mf"), py::arg("level"), py::arg("local")=false) .def("Redistribute", &ParticleContainerType::Redistribute, py::arg("lev_min")=0, py::arg("lev_max")=-1, py::arg("nGrow")=0, py::arg("local")=0, py::arg("remove_negative")=true) .def("SortParticlesByCell", &ParticleContainerType::SortParticlesByCell) @@ -361,15 +363,6 @@ void make_ParticleContainer_and_Iterators (py::module &m, std::string allocstr) // } ; - // TODO for pure SoA - // depends on https://github.com/AMReX-Codes/amrex/pull/3280 - if constexpr (!T_ParticleType::is_soa_particle) { - py_pc - .def("InitRandom", py::overload_cast(&ParticleContainerType::InitRandom)) // TODO pure SoA - .def("InitRandomPerBox", py::overload_cast(&ParticleContainerType::InitRandomPerBox)) // TODO pure SoA - .def("InitOnePerCell", &ParticleContainerType::InitOnePerCell); - } - using iterator = amrex::ParIter_impl; make_Iterators< false, iterator, Allocator >(m, allocstr); using const_iterator = amrex::ParConstIter_impl; @@ -383,8 +376,7 @@ void make_ParticleContainer_and_Iterators (py::module &m) { // TODO for pure SoA // depends on https://github.com/AMReX-Codes/amrex/pull/3280 - if constexpr (!T_ParticleType::is_soa_particle) - make_ParticleInitData(m); + make_ParticleInitData(m); // see Src/Base/AMReX_GpuContainers.H // !AMREX_USE_GPU: DefaultAllocator = std::allocator