added subdomain indexing for outer edges, for use in robin BC

This commit is contained in:
jakob.schratter 2026-01-24 14:26:22 +01:00
commit 99b46ad7ec
5 changed files with 143 additions and 33 deletions

View file

@ -761,24 +761,25 @@ const std::vector<int> Mesh::BoundaryEdges() const
// Only the outer edges for Robin BC
const std::vector<int> Mesh::OuterEdges() const
void Mesh::InitializeOuterEdges()
{
vector<int> outerEdges;
for (int k = 0; k < _ebedges.size()/2; ++k)
assert(EdgeSubdomains.size() == 2*_ebedges.size());
for (size_t k = 0; k < _ebedges.size(); ++k) // loop over all boundary edges
{
if (EdgeSubdomains[k] == 0 || EdgeSubdomains[k + 1] == 0)
outerEdges.push_back(_ebedges[k]);
if (EdgeSubdomains[2*k] == 0)
{
OuterEdges.push_back(_ebedges[k]);
OuterEdgesSubdomains.push_back(EdgeSubdomains[2*k + 1]);
}
if (EdgeSubdomains[2*k + 1] == 0)
{
OuterEdges.push_back(_ebedges[k]);
OuterEdgesSubdomains.push_back(EdgeSubdomains[2*k]);
}
}
cout << "All boundary edges: " << _ebedges.size() << endl;
cout << "Outer boundary edges: " << outerEdges.size() << endl;
// cout << _ebedges;
// cout << endl;
// cout << outerEdges << endl;
return outerEdges;
cout << "Outer boundary edges: " << OuterEdges.size() << endl;
}
@ -1017,6 +1018,7 @@ Mesh::Mesh(std::string const &fname)
Mesh::Mesh(std::string const &filename, std::string const &subdomain_filename) : Mesh(filename)
{
ElementSubdomains = ReadElementSubdomains(subdomain_filename);
InitializeOuterEdges();
}