Liebe Gitlab-Nutzer, lieber Gitlab-Nutzer, es ist nun möglich sich mittels des ZIH-Logins/LDAP an unserem Dienst anzumelden. Ein Anmelden über dieses erzeugt ein neues Konto. Das alte Konto ist über den Reiter "Standard" erreichbar. Die Administratoren

Dear Gitlab user, it is now possible to log in to our service using the ZIH login/LDAP. Logging in via this will create a new account. The old account can be accessed via the "Standard" tab. The administrators

Commit 2c7c8595 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Solved edge interior boundary problem in domain parallelization, part 2.

parent 32706a6b
......@@ -765,8 +765,6 @@ namespace AMDiS {
// === Because the mesh has been changed, update the DOF numbering and mappings. ===
updateLocalGlobalNumbering();
// exit(0);
}
......
......@@ -193,7 +193,7 @@ namespace AMDiS {
switch (bound.subObj) {
case EDGE:
// ERROR_EXIT("Not yet implemented: %d\n", bound.elIndex);
getVertexDofsAtEdge(feSpace, bound, dofs, parentVertices);
break;
case FACE:
getVertexDofsAtFace(feSpace, bound, dofs, parentVertices);
......@@ -293,17 +293,54 @@ namespace AMDiS {
DofContainer& dofs,
bool parentVertices) const
{
FUNCNAME("Tetrahedron::getVertexDofsAtEdge()");
if (parentVertices) {
ERROR_EXIT("Einbau notIncludedSubStructures!\n");
}
if (!child[0])
return;
BoundaryObject nextBound0 = bound, nextBound1 = bound;
prepareNextBound(nextBound0, 0);
prepareNextBound(nextBound1, 1);
if (bound.ithObj == 0) {
child[0]->getVertexDofs(feSpace, nextBound0, dofs);
dofs.push_back(child[0]->getDOF(3));
child[1]->getVertexDofs(feSpace, nextBound1, dofs);
} else {
if (nextBound0.ithObj != -1)
child[0]->getVertexDofs(feSpace, nextBound0, dofs);
if (nextBound0.ithObj != -1)
child[1]->getVertexDofs(feSpace, nextBound1, dofs);
}
}
void Tetrahedron::prepareNextBound(BoundaryObject &bound, int ithChild) const
{
for (std::vector<int>::iterator it = bound.notIncludedSubStructures.begin();
it != bound.notIncludedSubStructures.end(); ++it)
*it = edgeOfChild[bound.elType][ithChild][*it];
FUNCNAME("Tetrahedron::prepareNextBound()");
bound.ithObj = sideOfChild[bound.elType][ithChild][bound.ithObj];
bound.elType = (bound.elType + 1) % 3;
switch (bound.subObj) {
case FACE:
for (std::vector<int>::iterator it = bound.notIncludedSubStructures.begin();
it != bound.notIncludedSubStructures.end(); ++it)
*it = edgeOfChild[bound.elType][ithChild][*it];
bound.ithObj = sideOfChild[bound.elType][ithChild][bound.ithObj];
bound.elType = (bound.elType + 1) % 3;
break;
case EDGE:
bound.ithObj = edgeOfChild[bound.elType][ithChild][bound.ithObj];
bound.elType = (bound.elType + 1) % 3;
break;
default:
ERROR_EXIT("Should not happen!\n");
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment