Skip to content
Snippets Groups Projects
Unverified Commit cea4ffb7 authored by René Fritze's avatar René Fritze
Browse files

[py] fix boundaryinfo available for multiple types

parent 1ac78ba8
No related branches found
No related tags found
No related merge requests found
......@@ -43,18 +43,20 @@ public:
static void bind(pybind11::module& m)
{
using namespace pybind11::literals;
const auto gridname = XT::Grid::bindings::grid_name<typename GP::GridType>::value();
try { // guard since we might not be the first to do so for this grid/intersection
m.def(std::string("available_boundary_infos_on_" + layer_names[layer] + "_layer").c_str(),
std::string postfix{layer_names[layer] + "_layer_" + gridname};
m.def((std::string("available_boundary_infos_on_") + postfix) .c_str(),
[](const GP& /*grid_provider*/) { return XT::Grid::BoundaryInfoFactory<I>::available(); },
"grid_provider"_a);
m.def(std::string("default_boundary_info_config_on_" + layer_names[layer] + "_layer").c_str(),
m.def((std::string("default_boundary_info_config_on_")+ postfix) .c_str(),
[](const GP& /*grid_provider*/, const std::string& type) {
return XT::Grid::BoundaryInfoFactory<I>::default_config(type);
},
"grid_provider"_a,
"type"_a);
m.def(std::string("make_boundary_info_on_" + layer_names[layer] + "_layer").c_str(),
m.def((std::string("make_boundary_info_on_")+ postfix) .c_str(),
[](const GP& /*grid_provider*/, const Common::Configuration& cfg) {
return XT::Grid::BoundaryInfoFactory<I>::create(cfg).release();
},
......
......@@ -17,3 +17,22 @@ except ImportError as e:
if os.environ.get('DXT_PYTHON_DEBUG', False):
raise e
logging.error('dune-xt-grid bindings not available')
def _meta_boundary(name, grid_provider, config):
for factory in [globals()[s] for s in globals().keys() if s.startswith(name)]:
try:
return factory(grid_provider, config)
except:
continue
raise TypeError('no matching {} for boundaryinfo {}'.format(name, grid_provider.__class__))
def make_boundary_info_on_dd_subdomain_boundary_layer(grid_provider, config):
return _meta_boundary('make_boundary_info_on_dd_subdomain_boundary_layer', grid_provider, config)
def make_boundary_info_on_dd_subdomain_layer(grid_provider, config):
return _meta_boundary('make_boundary_info_on_dd_subdomain_layer', grid_provider, config)
def make_boundary_info_on_leaf_layer(grid_provider, config):
return _meta_boundary('make_boundary_info_on_leaf_layer', grid_provider, config)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment