Commit 2c7c8595 by Thomas Witkowski

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

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