/* Copyright 2021-2022 The WarpX Community * * Authors: Axel Huebl, Remi Lehe * License: BSD-3-Clause-LBNL */ #include "Python/pyWarpX.H" #include void init_WarpXParIter (py::module& m) { py::class_< WarpXParIter, amrex::ParIter<0,0,PIdx::nattribs> >(m, "WarpXParIter") .def(py::init::ContainerType&, int>(), py::arg("particle_container"), py::arg("level")) .def(py::init::ContainerType&, int, amrex::MFItInfo&>(), py::arg("particle_container"), py::arg("level"), py::arg("info")) ; } void init_WarpXParticleContainer (py::module& m) { py::class_< WarpXParticleContainer, amrex::ParticleContainer<0, 0, PIdx::nattribs, 0> > wpc (m, "WarpXParticleContainer"); wpc .def("add_real_comp", [](WarpXParticleContainer& pc, const std::string& name, bool const comm) { pc.AddRealComp(name, comm); }, py::arg("name"), py::arg("comm") ) .def("add_n_particles", [](WarpXParticleContainer& pc, int lev, int n, py::array_t &x, py::array_t &y, py::array_t &z, py::array_t &ux, py::array_t &uy, py::array_t &uz, const int nattr_real, py::array_t &attr_real, const int nattr_int, py::array_t &attr_int, int uniqueparticles, int id ) { amrex::Vector xp(x.data(), x.data() + n); amrex::Vector yp(y.data(), y.data() + n); amrex::Vector zp(z.data(), z.data() + n); amrex::Vector uxp(ux.data(), ux.data() + n); amrex::Vector uyp(uy.data(), uy.data() + n); amrex::Vector uzp(uz.data(), uz.data() + n); // create 2d arrays of real and in attributes amrex::Vector> attr; const double *attr_data = attr_real.data(); for (int ii=0; ii attr_ii(n); for (int jj=0; jj> iattr; const int *iattr_data = attr_int.data(); for (int ii=0; ii attr_ii(n); for (int jj=0; jj