From 09225e311894781e9823f1ef225f6bb64c2391ac Mon Sep 17 00:00:00 2001 From: Felix Schindler <felix.schindler@wwu.de> Date: Sat, 18 Jul 2020 16:59:17 +0200 Subject: [PATCH] [P|gridprovider] add make_gmsh_grid --- python/dune/xt/grid/CMakeLists.txt | 1 + python/dune/xt/grid/__init__.py | 1 + python/dune/xt/grid/gridprovider/gmsh.cc | 60 ++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 python/dune/xt/grid/gridprovider/gmsh.cc diff --git a/python/dune/xt/grid/CMakeLists.txt b/python/dune/xt/grid/CMakeLists.txt index cc03a6faa..492f48a01 100644 --- a/python/dune/xt/grid/CMakeLists.txt +++ b/python/dune/xt/grid/CMakeLists.txt @@ -26,6 +26,7 @@ dune_pybindxi_add_module(_grid_functors_boundary_detector EXCLUDE_FROM_ALL funct dune_pybindxi_add_module(_grid_functors_interfaces EXCLUDE_FROM_ALL functors/interfaces.cc) # dune_pybindxi_add_module(_grid_functors_refinement EXCLUDE_FROM_ALL functors/refinement.cc) dune_pybindxi_add_module(_grid_gridprovider_cube EXCLUDE_FROM_ALL gridprovider/cube.cc) +dune_pybindxi_add_module(_grid_gridprovider_gmsh EXCLUDE_FROM_ALL gridprovider/gmsh.cc) dune_pybindxi_add_module(_grid_intersection EXCLUDE_FROM_ALL intersection.cc) dune_pybindxi_add_module(_grid_gridprovider_provider EXCLUDE_FROM_ALL gridprovider/provider.cc) dune_pybindxi_add_module(_grid_traits EXCLUDE_FROM_ALL traits.cc) diff --git a/python/dune/xt/grid/__init__.py b/python/dune/xt/grid/__init__.py index 9a8a4d93e..0cd63f062 100644 --- a/python/dune/xt/grid/__init__.py +++ b/python/dune/xt/grid/__init__.py @@ -30,6 +30,7 @@ for mod_name in ( '_grid_functors_interfaces', # '_grid_functors_refinement', '_grid_gridprovider_cube', + '_grid_gridprovider_gmsh', '_grid_gridprovider_provider', '_grid_intersection', '_grid_traits', diff --git a/python/dune/xt/grid/gridprovider/gmsh.cc b/python/dune/xt/grid/gridprovider/gmsh.cc new file mode 100644 index 000000000..40165e9de --- /dev/null +++ b/python/dune/xt/grid/gridprovider/gmsh.cc @@ -0,0 +1,60 @@ +// This file is part of the dune-xt project: +// https://github.com/dune-community/dune-xt +// Copyright 2009-2018 dune-xt developers and contributors. All rights reserved. +// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) +// or GPL-2.0+ (http://opensource.org/licenses/gpl-license) +// with "runtime exception" (http://www.dune-project.org/license.html) +// Authors: +// Felix Schindler (2020) + +#include "config.h" + +#include <dune/pybindxi/pybind11.h> +#include <dune/pybindxi/stl.h> + +#include <dune/xt/grid/gridprovider/gmsh.hh> + +#include <python/dune/xt/common/bindings.hh> +#include <python/dune/xt/common/fvector.hh> +#include <python/dune/xt/grid/traits.hh> + +using namespace Dune; +using namespace Dune::XT::Grid::bindings; + + +template <class G, class element_type> +struct make_gmsh_grid +{ + static const constexpr size_t d = G::dimension; + + static void bind(pybind11::module& m) + { + namespace py = pybind11; + using namespace pybind11::literals; + + m.def("make_gmsh_grid", + [](const std::string& filename, const Dimension<d>&, const element_type&) { + return XT::Grid::make_gmsh_grid<G>(filename); + }, + "filename"_a, + "dim"_a, + "element_type"_a); + } // ... bind(...) +}; // struct make_gmsh_grid + + +PYBIND11_MODULE(_grid_gridprovider_gmsh, m) +{ + namespace py = pybind11; + + py::module::import("dune.xt.common"); + py::module::import("dune.xt.grid._grid_gridprovider_provider"); + py::module::import("dune.xt.grid._grid_traits"); + +#if HAVE_DUNE_ALUGRID + make_gmsh_grid<ALU_2D_SIMPLEX_CONFORMING, Simplex>::bind(m); + make_gmsh_grid<ALU_2D_CUBE, Cube>::bind(m); + make_gmsh_grid<ALU_3D_SIMPLEX_CONFORMING, Simplex>::bind(m); + make_gmsh_grid<ALU_3D_CUBE, Cube>::bind(m); +#endif +} -- GitLab