1212#include < AMReX_MFIter.H>
1313#include < AMReX_ParticleContainer.H>
1414
15+ #include < algorithm>
16+ #include < string>
17+ #include < vector>
18+
1519namespace py = pybind11;
1620using namespace impactx ;
1721
1822
1923void init_impactxparticlecontainer (py::module & m)
2024{
25+ py::class_<RealAoS>(m, " RealAoS" )
26+ .def_property_readonly_static (" names_s" ,
27+ [](py::object) {
28+ std::vector<std::string> real_aos_names (RealAoS::names_s.size ());
29+ std::copy (RealAoS::names_s.begin (), RealAoS::names_s.end (), real_aos_names.begin ());
30+ return real_aos_names;
31+ },
32+ " named labels for fixed s" )
33+ .def_property_readonly_static (" names_t" ,
34+ [](py::object) {
35+ std::vector<std::string> real_aos_names (RealAoS::names_t .size ());
36+ std::copy (RealAoS::names_t .begin (), RealAoS::names_t .end (), real_aos_names.begin ());
37+ return real_aos_names;
38+ },
39+ " named labels for fixed t" )
40+ ;
41+
42+ py::class_<RealSoA>(m, " RealSoA" )
43+ .def_property_readonly_static (" names_s" ,
44+ [](py::object) {
45+ std::vector<std::string> real_soa_names (RealSoA::names_s.size ());
46+ std::copy (RealSoA::names_s.begin (), RealSoA::names_s.end (), real_soa_names.begin ());
47+ return real_soa_names;
48+ },
49+ " named labels for fixed s" )
50+ .def_property_readonly_static (" names_t" ,
51+ [](py::object) {
52+ std::vector<std::string> real_soa_names (RealSoA::names_t .size ());
53+ std::copy (RealSoA::names_t .begin (), RealSoA::names_t .end (), real_soa_names.begin ());
54+ return real_soa_names;
55+ },
56+ " named labels for fixed t" )
57+ ;
58+
2159 py::class_<
2260 ParIter,
2361 amrex::ParIter<0 , 0 , RealSoA::nattribs, IntSoA::nattribs>
@@ -43,6 +81,16 @@ void init_impactxparticlecontainer(py::module& m)
4381 amrex::ParticleContainer<0 , 0 , RealSoA::nattribs, IntSoA::nattribs>
4482 >(m, " ImpactXParticleContainer" )
4583 // .def(py::init<>())
84+
85+ .def_property_readonly_static (" RealAoS" ,
86+ [](py::object /* pc */ ){ return py::type::of<RealAoS>(); },
87+ " RealAoS attribute name labels"
88+ )
89+ .def_property_readonly_static (" RealSoA" ,
90+ [](py::object /* pc */ ){ return py::type::of<RealSoA>(); },
91+ " RealSoA attribute name labels"
92+ )
93+
4694 .def (" add_n_particles" ,
4795 &ImpactXParticleContainer::AddNParticles,
4896 py::arg (" lev" ),
0 commit comments