diff --git a/.github/update_stub.sh b/.github/update_stub.sh index a06f3505..5e6875ff 100755 --- a/.github/update_stub.sh +++ b/.github/update_stub.sh @@ -13,6 +13,6 @@ set -eu -o pipefail # we are in the source directory, .github/ this_dir=$(cd $(dirname $0) && pwd) -pybind11-stubgen --exit-code -o ${this_dir}/../src/ amrex.space1d -pybind11-stubgen --exit-code -o ${this_dir}/../src/ amrex.space2d -pybind11-stubgen --exit-code -o ${this_dir}/../src/ amrex.space3d +pybind11-stubgen --exit-code --enum-class-locations="GrowthStrategy:amrex.space1d" -o ${this_dir}/../src/ amrex.space1d +pybind11-stubgen --exit-code --enum-class-locations="GrowthStrategy:amrex.space2d" -o ${this_dir}/../src/ amrex.space2d +pybind11-stubgen --exit-code --enum-class-locations="GrowthStrategy:amrex.space3d" -o ${this_dir}/../src/ amrex.space3d diff --git a/dependencies.json b/dependencies.json index 0dadbcab..516099de 100644 --- a/dependencies.json +++ b/dependencies.json @@ -2,6 +2,6 @@ "version_pyamrex": "25.11", "version_amrex": "25.11", "version_pybind11": "v3.0.1", - "commit_amrex": "25.11", + "commit_amrex": "4dad1664d7467ae00c133c1425c1a300003fa885", "commit_pybind11": "v3.0.1" } diff --git a/src/Base/PODVector.cpp b/src/Base/PODVector.cpp index 2e11d121..5c6a4fa0 100644 --- a/src/Base/PODVector.cpp +++ b/src/Base/PODVector.cpp @@ -72,9 +72,22 @@ void make_PODVector(py::module &m, std::string typestr, std::string allocstr) // .def("max_size", &PODVector_type::max_size) .def("capacity", &PODVector_type::capacity) .def("empty", &PODVector_type::empty) - .def("resize", py::overload_cast(&PODVector_type::resize)) - .def("resize", py::overload_cast(&PODVector_type::resize)) - .def("reserve", &PODVector_type::reserve) + .def("resize", + py::overload_cast(&PODVector_type::resize), + py::arg("new_size"), + py::arg("strategy") = GrowthStrategy::Poisson + ) + .def("resize", + py::overload_cast(&PODVector_type::resize), + py::arg("new_size"), + py::arg("value"), + py::arg("strategy") = GrowthStrategy::Poisson + ) + .def("reserve", + &PODVector_type::reserve, + py::arg("capacity"), + py::arg("strategy") = GrowthStrategy::Poisson + ) .def("shrink_to_fit", &PODVector_type::shrink_to_fit) .def("to_host", [](PODVector_type const & pv) { PODVector> h_data(pv.size()); @@ -137,7 +150,16 @@ void make_PODVector(py::module &m, std::string typestr) #endif } -void init_PODVector(py::module& m) { +void init_PODVector(py::module& m) +{ + py::native_enum(m, "GrowthStrategy", "enum.Enum") + .value("Poisson", GrowthStrategy::Poisson) + .value("Exact", GrowthStrategy::Exact) + .value("Geometric", GrowthStrategy::Geometric) + .export_values() + .finalize() + ; + make_PODVector (m, "real"); make_PODVector (m, "int"); make_PODVector (m, "uint64"); diff --git a/src/Base/ParmParse.cpp b/src/Base/ParmParse.cpp index 97002785..6ffa7d19 100644 --- a/src/Base/ParmParse.cpp +++ b/src/Base/ParmParse.cpp @@ -35,16 +35,15 @@ void init_ParmParse(py::module &m) .def_static("addfile", &ParmParse::addfile) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - .def("add", py::overload_cast(&ParmParse::add)) - + .def("add", [](ParmParse &pp, std::string_view name, bool val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, int val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, long val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, long long val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, float val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, double val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, std::string const &val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, amrex::IntVect const &val) { pp.add(name, val); }) + .def("add", [](ParmParse &pp, std::string_view name, amrex::Box const &val) { pp.add(name, val); }) .def("addarr", py::overload_cast const &>(&ParmParse::addarr)) .def("addarr", py::overload_cast const &>(&ParmParse::addarr)) .def("addarr", py::overload_cast const &>(&ParmParse::addarr)) diff --git a/src/Particle/ParticleTile.H b/src/Particle/ParticleTile.H index 2b95193c..880ae5cf 100644 --- a/src/Particle/ParticleTile.H +++ b/src/Particle/ParticleTile.H @@ -101,7 +101,11 @@ void make_ParticleTile(py::module &m, std::string allocstr) .def("set_num_neighbors", &ParticleTileType::setNumNeighbors) .def("get_num_neighbors", &ParticleTileType::getNumNeighbors) - .def("resize", &ParticleTileType::resize) + .def("resize", + &ParticleTileType::resize, + py::arg("count"), + py::arg("strategy") = GrowthStrategy::Poisson + ) ; if constexpr (!T_ParticleType::is_soa_particle) { diff --git a/src/Particle/StructOfArrays.H b/src/Particle/StructOfArrays.H index 36d05877..4d08681e 100644 --- a/src/Particle/StructOfArrays.H +++ b/src/Particle/StructOfArrays.H @@ -84,7 +84,11 @@ void make_StructOfArrays(py::module &m, std::string allocstr) .def("set_num_neighbors", &SOAType::setNumNeighbors) .def("get_num_neighbors", &SOAType::getNumNeighbors) - .def("resize", &SOAType::resize) + .def("resize", + &SOAType::resize, + py::arg("new_size"), + py::arg("strategy") = GrowthStrategy::Poisson + ) ; if (use64BitIdCpu) py_SoA.def("get_idcpu_data", py::overload_cast<>(&SOAType::GetIdCPUData),