diff --git a/pythonbindings/src/gpu/gpu.cpp b/pythonbindings/src/gpu/gpu.cpp index ff07dce0f3d4e3684c07a8cd6d226de5e71b7b18..1dd960dbb3ff9c9ef21cecb36e5df90e74360726 100644 --- a/pythonbindings/src/gpu/gpu.cpp +++ b/pythonbindings/src/gpu/gpu.cpp @@ -12,6 +12,7 @@ #include "submodules/kernel_factory.cpp" #include "submodules/pre_processor_factory.cpp" #include "submodules/file_writer.cpp" +#include "submodules/grid_generator.cpp" namespace gpu { @@ -33,6 +34,7 @@ namespace gpu kernel_factory::makeModule(gpuModule); pre_processor_factory::makeModule(gpuModule); file_writer::makeModule(gpuModule); + grid_generator::makeModule(gpuModule); return gpuModule; } } \ No newline at end of file diff --git a/pythonbindings/src/gpu/submodules/grid_generator.cpp b/pythonbindings/src/gpu/submodules/grid_generator.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b9babe1d6b45f69d516a4cd57377eaa6c1b37149 --- /dev/null +++ b/pythonbindings/src/gpu/submodules/grid_generator.cpp @@ -0,0 +1,38 @@ +#include <pybind11/pybind11.h> +#include "gpu/GridGenerator/geometries/Object.h" +#include "gpu/GridGenerator/geometries/BoundingBox/BoundingBox.h" +#include "gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h" +#include "gpu/GridGenerator/geometries/Cuboid/Cuboid.h" +#include "gpu/GridGenerator/geometries/Sphere/Sphere.h" +#include "gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h" + +namespace grid_generator +{ + namespace py = pybind11; + py::module makeModule(py::module_ &parentModule) + { + py::module gridGeneratorModule = parentModule.def_submodule("grid_generator"); + + py::class_<BoundingBox>(gridGeneratorModule, "BoundingBox") + .def(py::init<real, real, real, real, real, real>(),"min_x","max_x","min_y","max_y","min_z","max_z"); + + py::class_<Object, std::shared_ptr<Object>>(gridGeneratorModule, "Object"); + + py::class_<Conglomerate, Object, std::shared_ptr<Conglomerate>>(gridGeneratorModule, "Conglomerate") + .def("make_shared", &Conglomerate::makeShared, py::return_value_policy::reference) + .def("add", &Conglomerate::add) + .def("subtract", &Conglomerate::subtract); + + py::class_<Cuboid, Object, std::shared_ptr<Cuboid>>(gridGeneratorModule, "Cuboid") + .def(py::init<const double&, const double&, const double&, const double&, const double&, const double&>(), + "min_x1", "min_x2", "min_x3", "max_x1", "max_x2", "max_x3"); + + py::class_<Sphere, Object, std::shared_ptr<Sphere>>(gridGeneratorModule, "Sphere") + .def("make_shared", &Sphere::makeShared, py::return_value_policy::reference); + + py::class_<TriangularMesh, Object, std::shared_ptr<TriangularMesh>>(gridGeneratorModule, "TriangularMesh") + .def("make", &TriangularMesh::make, py::return_value_policy::reference); + + return gridGeneratorModule; + } +}