Skip to content
Snippets Groups Projects
Commit 2a14cdf6 authored by Santiago Ospina De Los Ríos's avatar Santiago Ospina De Los Ríos
Browse files

Merge branch 'bugfix/pass-wright-max-number-of-subdomains-to-grid-factory' into 'master'

Pass right number of subdomains to grid factory

See merge request !45
parents 0e847f8e 6a070fb2
No related branches found
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ public: ...@@ -51,7 +51,7 @@ public:
return std::exchange(_grid_ptr, nullptr); return std::exchange(_grid_ptr, nullptr);
} }
void makeGrid(int max_subdomains = 1) { void makeGrid(std::size_t max_subdomains = 1) {
assert(not _grid_ptr); assert(not _grid_ptr);
std::unique_ptr<MDGTraits> traits; std::unique_ptr<MDGTraits> traits;
......
...@@ -29,15 +29,18 @@ public: ...@@ -29,15 +29,18 @@ public:
void read (const std::string& f) void read (const std::string& f)
{ {
Dune::GmshReaderParser<HostGrid>::read(f); Dune::GmshReaderParser<HostGrid>::read(f);
const auto& index_map = this->elementIndexMap(); // list of gmsh domain indices for each entity (gmsh index starts at 1!)
int max_subdomains = *std::max_element(begin(index_map), end(index_map)); const auto& sub_domain_ids = this->elementIndexMap();
_factory.makeGrid(max_subdomains); if (begin(sub_domain_ids) == end(sub_domain_ids)) return;
int max_subdomain_id = *std::max_element(begin(sub_domain_ids), end(sub_domain_ids));
assert(max_subdomain_id > 0);
_factory.makeGrid(max_subdomain_id - 1);
auto& grid = _factory.grid(); auto& grid = _factory.grid();
grid.startSubDomainMarking(); grid.startSubDomainMarking();
unsigned int i = 0; unsigned int i = 0;
for (const auto& cell : elements(grid.leafGridView())) { for (const auto& cell : elements(grid.leafGridView())) {
auto subdomain = index_map[i] - 1; // gmsh index starts at 1! auto subdomain = sub_domain_ids[i] - 1;
grid.addToSubDomain(subdomain, cell), i++; grid.addToSubDomain(subdomain, cell), i++;
} }
......
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