added functions to get outer edges
This commit is contained in:
parent
2c4e8ea79c
commit
facc8fc890
2 changed files with 66 additions and 2 deletions
|
|
@ -129,6 +129,8 @@ void Mesh::DebugEdgeBased() const
|
|||
}
|
||||
|
||||
cout << "\n ............... edges ...................\n";
|
||||
cout << "_edges.size(): " << _edges.size() << endl;
|
||||
cout << "_nedge: " << _nedge << endl;
|
||||
for (int k = 0; k < _nedge; ++k)
|
||||
{
|
||||
cout << k << " : ";
|
||||
|
|
@ -147,6 +149,7 @@ void Mesh::DebugEdgeBased() const
|
|||
cout << endl;
|
||||
}
|
||||
cout << "\n ............... Boundary (edges) .................\n";
|
||||
cout << "_ebedges.size(): " << _ebedges.size() << endl;
|
||||
cout << " _ebedges : " << _ebedges << endl;
|
||||
|
||||
return;
|
||||
|
|
@ -751,6 +754,33 @@ void Mesh::DeriveEdgeFromVertexBased_fast()
|
|||
}
|
||||
// HG
|
||||
|
||||
const std::vector<int> Mesh::BoundaryEdges() const
|
||||
{
|
||||
return _ebedges;
|
||||
}
|
||||
|
||||
|
||||
// Only the outer edges for Robin BC
|
||||
const std::vector<int> Mesh::OuterEdges() const
|
||||
{
|
||||
vector<int> outerEdges;
|
||||
|
||||
for (int k = 0; k < _ebedges.size()/2; ++k)
|
||||
{
|
||||
if (EdgeSubdomains[k] == 0 || EdgeSubdomains[k + 1] == 0)
|
||||
outerEdges.push_back(_ebedges[k]);
|
||||
}
|
||||
|
||||
cout << "All boundary edges: " << _ebedges.size() << endl;
|
||||
cout << "Outer boundary edges: " << outerEdges.size() << endl;
|
||||
|
||||
cout << _ebedges;
|
||||
cout << endl;
|
||||
cout << outerEdges << endl;
|
||||
|
||||
return outerEdges;
|
||||
}
|
||||
|
||||
|
||||
#include <utility> // pair
|
||||
|
||||
|
|
@ -982,16 +1012,33 @@ Mesh::Mesh(std::string const &fname)
|
|||
//cout << " P E R M U T E D !" << endl;
|
||||
}
|
||||
|
||||
|
||||
// Constructor with subdomain support
|
||||
Mesh::Mesh(std::string const &filename, std::string const &subdomain_filename) : Mesh(filename)
|
||||
{
|
||||
ElementSubdomains = ReadElementSubdomains(subdomain_filename);
|
||||
//EdgeSubdomains = ReadEdgeSubdomains(filename);
|
||||
}
|
||||
|
||||
// const vector<int> Mesh::ReadEdgeSubdomains(std::string const &filename) const
|
||||
// {
|
||||
// vector<int> edgeSubdomains(_nedge);
|
||||
|
||||
// ifstream ifs(filename);
|
||||
// if (!(ifs.is_open() && ifs.good())) {
|
||||
// cerr << "Mesh::ReadEdgeSubdomains: Error cannot open file " << filename << endl;
|
||||
// assert(ifs.is_open());
|
||||
// }
|
||||
|
||||
// return edgeSubdomains;
|
||||
// }
|
||||
|
||||
|
||||
const vector<int> Mesh::ReadElementSubdomains(string const &dname) const
|
||||
{
|
||||
ifstream ifs(dname);
|
||||
if (!(ifs.is_open() && ifs.good())) {
|
||||
cerr << "ParMesh::ReadElementSubdomain: Error cannot open file " << dname << endl;
|
||||
cerr << "Mesh::ReadElementSubdomain: Error cannot open file " << dname << endl;
|
||||
assert(ifs.is_open());
|
||||
}
|
||||
|
||||
|
|
@ -1073,12 +1120,20 @@ void Mesh::ReadVertexBasedMesh(std::string const &fname)
|
|||
ifs >> _bedges[k];
|
||||
_bedges[k] -= OFFSET; // Matlab to C indexing
|
||||
}
|
||||
|
||||
// Store edge adjacent subdomains
|
||||
EdgeSubdomains.resize(nbedges * 2);
|
||||
for (int k = 0; k < nbedges * 2; ++k)
|
||||
{
|
||||
ifs >> EdgeSubdomains[k];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// ToDo: add boundary information to 3D mesh
|
||||
cout << std::endl << "NO boundary information available for 3D mesh" << endl;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue