diff --git a/AMDiS/src/Tetrahedron.cc b/AMDiS/src/Tetrahedron.cc index be3b836660f09d5c7ea120612dac7b0ed6ef390f..25ce025beab5b0ce1e12bcb3c9b53ea163d5d3b6 100644 --- a/AMDiS/src/Tetrahedron.cc +++ b/AMDiS/src/Tetrahedron.cc @@ -351,35 +351,48 @@ namespace AMDiS { { FUNCNAME("Tetrahedron::getNonVertexDofs()"); - BoundaryObject nextBound = bound; - nextBound.elType = (bound.elType + 1) % 3; - - if (child[0]) { - int childFace0 = sideOfChild[bound.elType][0][bound.ithObj]; - int childFace1 = sideOfChild[bound.elType][1][bound.ithObj]; - - TEST_EXIT(childFace0 != -1 || childFace1 != -1) - ("No new face for child elements!\n"); - - if (childFace0 != -1) { - nextBound.ithObj = childFace0; - child[0]->getNonVertexDofs(feSpace, nextBound, dofs); - } + switch (bound.subObj) { + case VERTEX: + return; + break; + case EDGE: + break; + case FACE: + { + BoundaryObject nextBound = bound; + nextBound.elType = (bound.elType + 1) % 3; - if (childFace1 != -1) { - nextBound.ithObj = childFace1; - child[1]->getNonVertexDofs(feSpace, nextBound, dofs); + if (child[0]) { + int childFace0 = sideOfChild[bound.elType][0][bound.ithObj]; + int childFace1 = sideOfChild[bound.elType][1][bound.ithObj]; + + TEST_EXIT(childFace0 != -1 || childFace1 != -1) + ("No new face for child elements!\n"); + + if (childFace0 != -1) { + nextBound.ithObj = childFace0; + child[0]->getNonVertexDofs(feSpace, nextBound, dofs); + } + + if (childFace1 != -1) { + nextBound.ithObj = childFace1; + child[1]->getNonVertexDofs(feSpace, nextBound, dofs); + } + } else { + ElementDofIterator elDofIter(feSpace, true); + elDofIter.reset(this); + do { + if (elDofIter.getCurrentPos() == 2 && + elDofIter.getCurrentElementPos() == bound.ithObj) { + ERROR_EXIT("Check this, if it will really work!\n"); + dofs.push_back(elDofIter.getDofPtr()); + } + } while(elDofIter.next()); + } } - } else { - ElementDofIterator elDofIter(feSpace, true); - elDofIter.reset(this); - do { - if (elDofIter.getCurrentPos() == 2 && - elDofIter.getCurrentElementPos() == bound.ithObj) { - ERROR_EXIT("Check this, if it will really work!\n"); - dofs.push_back(elDofIter.getDofPtr()); - } - } while(elDofIter.next()); + break; + case default: + ERROR_EXIT("Should not happen!\n"); } }