From 310027299151408fe233d577e6ad1332488c3fac Mon Sep 17 00:00:00 2001
From: Henry <henry.korb@geo.uu.se>
Date: Tue, 25 Jan 2022 20:32:49 +0100
Subject: [PATCH] adds bindings for geometries from grid_generator

---
 pythonbindings/src/gpu/gpu.cpp                |  2 +
 .../src/gpu/submodules/grid_generator.cpp     | 38 +++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 pythonbindings/src/gpu/submodules/grid_generator.cpp

diff --git a/pythonbindings/src/gpu/gpu.cpp b/pythonbindings/src/gpu/gpu.cpp
index ff07dce0f..1dd960dbb 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 000000000..b9babe1d6
--- /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;
+    }
+}
-- 
GitLab