From b3de56bbf8c42d5f8460a60d4553fdf7590e197f Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Fri, 26 Nov 2010 07:51:00 +0000 Subject: [PATCH] Code refactoring and work on parallelization. --- AMDiS/src/ArhWriter.cc | 2 +- AMDiS/src/BasisFunction.cc | 2 +- AMDiS/src/BasisFunction.h | 4 +- AMDiS/src/CoarseningManager1d.cc | 10 ++-- AMDiS/src/CoarseningManager2d.cc | 14 ++--- AMDiS/src/CoarseningManager3d.cc | 20 +++---- AMDiS/src/DOFAdmin.h | 6 +- AMDiS/src/DOFVector.cc | 4 +- AMDiS/src/DataCollector.cc | 3 + AMDiS/src/Element.cc | 22 +++---- AMDiS/src/ElementDofIterator.cc | 4 +- AMDiS/src/FiniteElemSpace.cc | 10 ++-- AMDiS/src/Lagrange.cc | 8 +-- AMDiS/src/Lagrange.h | 2 +- AMDiS/src/MacroReader.cc | 56 +++++++++--------- AMDiS/src/Mesh.cc | 82 +++++++++++++-------------- AMDiS/src/Mesh.h | 32 +++++------ AMDiS/src/ProblemScal.cc | 4 +- AMDiS/src/ProblemVec.cc | 4 +- AMDiS/src/RCNeighbourList.cc | 20 +++---- AMDiS/src/Recovery.cc | 2 +- AMDiS/src/RefinementManager1d.cc | 6 +- AMDiS/src/RefinementManager2d.cc | 12 ++-- AMDiS/src/RefinementManager3d.cc | 28 ++++----- AMDiS/src/SolutionDataStorage.h | 2 +- AMDiS/src/parallel/MeshDistributor.cc | 78 +++++++++++++++---------- 26 files changed, 229 insertions(+), 208 deletions(-) diff --git a/AMDiS/src/ArhWriter.cc b/AMDiS/src/ArhWriter.cc index 8420771d..c8eacac4 100644 --- a/AMDiS/src/ArhWriter.cc +++ b/AMDiS/src/ArhWriter.cc @@ -53,7 +53,7 @@ namespace AMDiS { file.write(reinterpret_cast<char*>(&nValueVectors), 4); uint32_t nAllValues = - (vecs.size() > 0 ? vecs[0]->getFeSpace()->getAdmin()->getUsedDOFs() : 0); + (vecs.size() > 0 ? vecs[0]->getFeSpace()->getAdmin()->getUsedDofs() : 0); file.write(reinterpret_cast<char*>(&nAllValues), 4); MeshStructure elementStructure; diff --git a/AMDiS/src/BasisFunction.cc b/AMDiS/src/BasisFunction.cc index 8308005b..70fa2a02 100644 --- a/AMDiS/src/BasisFunction.cc +++ b/AMDiS/src/BasisFunction.cc @@ -143,7 +143,7 @@ namespace AMDiS { } - int BasisFunction::getNumberOfDOFs(int i) const + int BasisFunction::getNumberOfDofs(int i) const { return (*nDOF)[i]; } diff --git a/AMDiS/src/BasisFunction.h b/AMDiS/src/BasisFunction.h index ddee6895..b4fe87bf 100644 --- a/AMDiS/src/BasisFunction.h +++ b/AMDiS/src/BasisFunction.h @@ -161,10 +161,10 @@ namespace AMDiS { } /// Returns \ref nDOF[i] - int getNumberOfDOFs(int i) const; + int getNumberOfDofs(int i) const; /// Returns \ref nDOF - inline DimVec<int>* getNumberOfDOFs() const + inline DimVec<int>* getNumberOfDofs() const { return nDOF; } diff --git a/AMDiS/src/CoarseningManager1d.cc b/AMDiS/src/CoarseningManager1d.cc index f425cb68..07714f53 100644 --- a/AMDiS/src/CoarseningManager1d.cc +++ b/AMDiS/src/CoarseningManager1d.cc @@ -68,13 +68,13 @@ namespace AMDiS { /*--- hand DOFs from children to parent, and add DOF at center ---*/ /*--------------------------------------------------------------------------*/ - if (mesh->getNumberOfDOFs(VERTEX) && !mesh->queryCoarseDOFs()) { + if (mesh->getNumberOfDofs(VERTEX) && !mesh->queryCoarseDOFs()) { int node = mesh->getNode(VERTEX); parent->setDof(node+0, const_cast<int*>( child[0]->getDof(node+0))); parent->setDof(node+1, const_cast<int*>( child[1]->getDof(node+1))); } - if (mesh->getNumberOfDOFs(CENTER) && !mesh->queryCoarseDOFs()) { + if (mesh->getNumberOfDofs(CENTER) && !mesh->queryCoarseDOFs()) { parent->setDof(mesh->getNode(CENTER), mesh->getDof(CENTER)); } @@ -89,7 +89,7 @@ namespace AMDiS { int nrAdmin = mesh->getNumberOfDOFAdmin(); for(iadmin = 0; iadmin < nrAdmin; iadmin++) { std::list<DOFIndexedBase*>::iterator it; - DOFAdmin* admin = const_cast<DOFAdmin*>(&(mesh->getDOFAdmin(iadmin))); + DOFAdmin* admin = const_cast<DOFAdmin*>(&(mesh->getDofAdmin(iadmin))); std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed(); for(it = admin->beginDOFIndexed(); it != end; ++it) (*it)->coarseRestrict(coarsenList, 1); @@ -100,12 +100,12 @@ namespace AMDiS { /*--- remove all DOFs of children that are not used anymore ---*/ /*--------------------------------------------------------------------------*/ - if (mesh->getNumberOfDOFs(VERTEX)) /*--- midpoint of parent ---*/ + if (mesh->getNumberOfDofs(VERTEX)) /*--- midpoint of parent ---*/ { mesh->freeDof(const_cast<int*>( child[1]->getDof(mesh->getNode(VERTEX))), VERTEX); } - if (mesh->getNumberOfDOFs(CENTER)) /*--- center of the children ---*/ + if (mesh->getNumberOfDofs(CENTER)) /*--- center of the children ---*/ { mesh->freeDof(const_cast<int*>( child[0]->getDof(mesh->getNode(CENTER))), CENTER); mesh->freeDof(const_cast<int*>( child[1]->getDof(mesh->getNode(CENTER))), CENTER); diff --git a/AMDiS/src/CoarseningManager2d.cc b/AMDiS/src/CoarseningManager2d.cc index d29ea119..e3d321cb 100644 --- a/AMDiS/src/CoarseningManager2d.cc +++ b/AMDiS/src/CoarseningManager2d.cc @@ -30,11 +30,11 @@ namespace AMDiS { el->getIndex(), child[0]->getIndex(), child[1]->getIndex()); // remove dof from common edge of child[0] and child[1] - if (mesh->getNumberOfDOFs(EDGE)) + if (mesh->getNumberOfDofs(EDGE)) mesh->freeDof(const_cast<int*>(child[0]->getDof(4)), EDGE); // remove dof from the barycenters of child[0] and child[1] - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { int node = mesh->getNode(CENTER); mesh->freeDof(const_cast<int*>(child[0]->getDof(node)), CENTER); @@ -72,14 +72,14 @@ namespace AMDiS { DegreeOfFreedom *dof[3]; dof[0] = const_cast<int*>(el->getChild(0)->getDof(2)); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { dof[1] = const_cast<int*>(el->getChild(0)->getDof(3)); dof[2] = const_cast<int*>(el->getChild(1)->getDof(4)); } else { dof[1] = dof[2] = 0; } - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { int node = mesh->getNode(EDGE); // get new dof on el at the midpoint of the coarsening edge @@ -90,14 +90,14 @@ namespace AMDiS { } } - if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(CENTER)) + if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(CENTER)) coarsenList->addDOFParents(n_neigh); // restrict dof vectors to the parents on the patch int nrAdmin = mesh->getNumberOfDOFAdmin(); for (int iadmin = 0; iadmin < nrAdmin; iadmin++) { - DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin)); + DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin)); for (std::list<DOFIndexedBase*>::iterator it = admin->beginDOFIndexed(); it != admin->endDOFIndexed(); ++it) (*it)->coarseRestrict(*coarsenList, n_neigh); @@ -111,7 +111,7 @@ namespace AMDiS { // now, remove those dofs in the coarcening edge mesh->freeDof(dof[0], VERTEX); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { mesh->freeDof(dof[1], EDGE); mesh->freeDof(dof[2], EDGE); } diff --git a/AMDiS/src/CoarseningManager3d.cc b/AMDiS/src/CoarseningManager3d.cc index 33ea7db2..051fccb2 100644 --- a/AMDiS/src/CoarseningManager3d.cc +++ b/AMDiS/src/CoarseningManager3d.cc @@ -133,11 +133,11 @@ namespace AMDiS { /* boundary face or neigh has been coarsend: free the dof's in the face */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { node = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[el_type][0][dir]; mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), EDGE); } - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { node = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][0][dir]; mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), FACE); node = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][1][dir]; @@ -151,13 +151,13 @@ namespace AMDiS { /* child[1] and at the two barycenter */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { node = mesh->getNode(FACE); mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), FACE); } - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { node = mesh->getNode(CENTER); for (i = 0; i < 2; i++) mesh->freeDof(const_cast<int*>( child[i]->getDof(node)), CENTER); @@ -318,7 +318,7 @@ namespace AMDiS { int i, node; DegreeOfFreedom *dof; - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { /****************************************************************************/ /* get dof for coarsening edge */ /****************************************************************************/ @@ -329,9 +329,9 @@ namespace AMDiS { dof = NULL; } - if (mesh->getNumberOfDOFs(EDGE) || - mesh->getNumberOfDOFs(FACE) || - mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(EDGE) || + mesh->getNumberOfDofs(FACE) || + mesh->getNumberOfDofs(CENTER)) { for (i = 0; i < n_neigh; i++) coarsenList->addDOFParent(i, dof); } @@ -344,7 +344,7 @@ namespace AMDiS { int nrAdmin = mesh->getNumberOfDOFAdmin(); for (int iadmin = 0; iadmin < nrAdmin; iadmin++) { std::list<DOFIndexedBase*>::iterator it; - DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin)); + DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin)); std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed(); for (it = admin->beginDOFIndexed(); it != end; ++it) (*it)->coarseRestrict(*coarsenList, n_neigh); @@ -359,7 +359,7 @@ namespace AMDiS { mesh->freeDof(const_cast<int*>( el->getChild(0)->getDof(3)), VERTEX); mesh->incrementNumberOfVertices(-1); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { node = mesh->getNode(EDGE) + 2; mesh->freeDof(const_cast<int*>( el->getChild(0)->getDof(node)), EDGE); mesh->freeDof(const_cast<int*>( el->getChild(1)->getDof(node)), EDGE); diff --git a/AMDiS/src/DOFAdmin.h b/AMDiS/src/DOFAdmin.h index ca146fe2..07f9b8e0 100644 --- a/AMDiS/src/DOFAdmin.h +++ b/AMDiS/src/DOFAdmin.h @@ -133,7 +133,7 @@ namespace AMDiS { } /// Returns \ref usedCount - inline const int getUsedDOFs() const + inline const int getUsedDofs() const { return usedCount; } @@ -151,13 +151,13 @@ namespace AMDiS { } /// Returns \ref nrDOF[i], i.e., the number of dofs for the position i. - inline const int getNumberOfDOFs(int i) const + inline const int getNumberOfDofs(int i) const { return nrDOF[i]; } /// Returns \ref nrDOF - inline const DimVec<int>& getNumberOfDOFs() const + inline const DimVec<int>& getNumberOfDofs() const { return nrDOF; } diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc index 415e9374..6e178b47 100644 --- a/AMDiS/src/DOFVector.cc +++ b/AMDiS/src/DOFVector.cc @@ -91,7 +91,7 @@ namespace AMDiS { int nPositions = mesh->getGeo(geoIndex); int numPreDOFs = admin->getNumberOfPreDOFs(i); for (int j = 0; j < nPositions; j++) { - int dofs = basFcts->getNumberOfDOFs(geoIndex); + int dofs = basFcts->getNumberOfDofs(geoIndex); numNodeDOFs.push_back(dofs); nDofs += dofs; numNodePreDOFs.push_back(numPreDOFs); @@ -651,7 +651,7 @@ namespace AMDiS { int numPositionNodes = mesh->getGeo(geoIndex); int numPreDOFs = admin->getNumberOfPreDOFs(i); for (int j = 0; j < numPositionNodes; j++) { - int dofs = basFcts->getNumberOfDOFs(geoIndex); + int dofs = basFcts->getNumberOfDofs(geoIndex); numNodeDOFs.push_back(dofs); nDofs += dofs; numNodePreDOFs.push_back(numPreDOFs); diff --git a/AMDiS/src/DataCollector.cc b/AMDiS/src/DataCollector.cc index 99d04294..325be21f 100644 --- a/AMDiS/src/DataCollector.cc +++ b/AMDiS/src/DataCollector.cc @@ -208,6 +208,9 @@ namespace AMDiS { DegreeOfFreedom vertexDOF; WorldVector<double> vertexCoords; + MSG("ELEMENT: %d\n", elInfo->getElement()->getIndex()); + MSG("DOFs: %d %d %d\n", dof[0][0], dof[1][0], dof[2][0]); + // create ElementInfo ElementInfo elementInfo(dim); diff --git a/AMDiS/src/Element.cc b/AMDiS/src/Element.cc index 652479aa..73307c61 100644 --- a/AMDiS/src/Element.cc +++ b/AMDiS/src/Element.cc @@ -102,7 +102,7 @@ namespace AMDiS { int ndof = 0; for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) - ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position); + ndof += mesh->getDofAdmin(i).getNumberOfDofs(position); if (ndof > 0) { for (int i = 0; i < mesh->getGeo(position); i++) { @@ -158,7 +158,7 @@ namespace AMDiS { int ndof = 0; for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) - ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position); + ndof += mesh->getDofAdmin(i).getNumberOfDofs(position); if (ndof > 0) { for (int i = 0; i < mesh->getGeo(position); i++) { @@ -226,7 +226,7 @@ namespace AMDiS { int edges = mesh->getGeo(EDGE); int faces = mesh->getGeo(FACE); - if ((nd = admin->getNumberOfDOFs(VERTEX))) { + if ((nd = admin->getNumberOfDofs(VERTEX))) { nd0 = admin->getNumberOfPreDOFs(VERTEX); n0 = admin->getMesh()->getNode(VERTEX); for (int i = 0; i < vertices; i++) { @@ -235,7 +235,7 @@ namespace AMDiS { } if (mesh->getDim() > 1) { - if ((nd = admin->getNumberOfDOFs(EDGE))) { + if ((nd = admin->getNumberOfDofs(EDGE))) { nd0 = admin->getNumberOfPreDOFs(EDGE); n0 = admin->getMesh()->getNode(EDGE); for (int i = 0; i < edges; i++) { @@ -245,7 +245,7 @@ namespace AMDiS { } if (mesh->getDim() == 3) { - if ((nd = admin->getNumberOfDOFs(FACE))) { + if ((nd = admin->getNumberOfDofs(FACE))) { nd0 = admin->getNumberOfPreDOFs(FACE); n0 = admin->getMesh()->getNode(FACE); for (int i = 0; i < faces; i++) { @@ -254,7 +254,7 @@ namespace AMDiS { } } - if ((nd = admin->getNumberOfDOFs(CENTER))) { + if ((nd = admin->getNumberOfDofs(CENTER))) { nd0 = admin->getNumberOfPreDOFs(CENTER); n0 = admin->getMesh()->getNode(CENTER); int i = 0; /* only one center */ @@ -271,7 +271,7 @@ namespace AMDiS { int edges = mesh->getGeo(EDGE); int faces = mesh->getGeo(FACE); - int nd = admin->getNumberOfDOFs(VERTEX); + int nd = admin->getNumberOfDofs(VERTEX); if (nd) { nd0 = admin->getNumberOfPreDOFs(VERTEX); n0 = admin->getMesh()->getNode(VERTEX); @@ -281,7 +281,7 @@ namespace AMDiS { } if (mesh->getDim() > 1) { - nd = admin->getNumberOfDOFs(EDGE); + nd = admin->getNumberOfDofs(EDGE); if (nd) { nd0 = admin->getNumberOfPreDOFs(EDGE); n0 = admin->getMesh()->getNode(EDGE); @@ -292,7 +292,7 @@ namespace AMDiS { } if (mesh->getDim() == 3) { - nd = admin->getNumberOfDOFs(FACE); + nd = admin->getNumberOfDofs(FACE); if (nd) { nd0 = admin->getNumberOfPreDOFs(FACE); n0 = admin->getMesh()->getNode(FACE); @@ -302,7 +302,7 @@ namespace AMDiS { } } - nd = admin->getNumberOfDOFs(CENTER); + nd = admin->getNumberOfDofs(CENTER); if (nd) { nd0 = admin->getNumberOfPreDOFs(CENTER); n0 = admin->getMesh()->getNode(CENTER); @@ -400,7 +400,7 @@ namespace AMDiS { int ndof = 0; for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) - ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position); + ndof += mesh->getDofAdmin(i).getNumberOfDofs(position); if (ndof > 0) { for (int i = 0; i < mesh->getGeo(position); i++) { diff --git a/AMDiS/src/ElementDofIterator.cc b/AMDiS/src/ElementDofIterator.cc index 005e4600..bf397f38 100644 --- a/AMDiS/src/ElementDofIterator.cc +++ b/AMDiS/src/ElementDofIterator.cc @@ -25,7 +25,7 @@ namespace AMDiS { // Get geo index of vertices in the given dimension. posIndex = INDEX_OF_DIM(pos, dim); // Get number of dofs per vertex (should be one in all cases). - nDofs = admin->getNumberOfDOFs(posIndex); + nDofs = admin->getNumberOfDofs(posIndex); TEST_EXIT_DBG(nDofs != 0)("Mh, I've to think about this situation!\n"); @@ -65,7 +65,7 @@ namespace AMDiS { // Get geo index posistion. posIndex = INDEX_OF_DIM(pos, dim); // Get number of dofs in this position. - nDofs = admin->getNumberOfDOFs(posIndex); + nDofs = admin->getNumberOfDofs(posIndex); } while (nDofs == 0 && pos < dim); if (nDofs > 0 && pos <= dim) { diff --git a/AMDiS/src/FiniteElemSpace.cc b/AMDiS/src/FiniteElemSpace.cc index cc75ccf0..249df623 100644 --- a/AMDiS/src/FiniteElemSpace.cc +++ b/AMDiS/src/FiniteElemSpace.cc @@ -26,13 +26,13 @@ namespace AMDiS { if (!admin) { const DOFAdmin *admin_local = NULL; const DimVec<int> *ndof = NULL; - ndof = basFcts->getNumberOfDOFs(); + ndof = basFcts->getNumberOfDofs(); TEST_EXIT(ndof)("no n_dof or basFcts->n_dof\n"); for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) { - admin_local = &(mesh->getDOFAdmin(i)); + admin_local = &(mesh->getDofAdmin(i)); int j = 0; for (; j <= mesh->getDim(); j++) - if (admin_local->getNumberOfDOFs(j) != (*ndof)[j]) + if (admin_local->getNumberOfDofs(j) != (*ndof)[j]) break; if (j > mesh->getDim()) break; @@ -60,10 +60,10 @@ namespace AMDiS { mesh = new Mesh(feSpace.mesh->getName(), feSpace.mesh->getDim()); *mesh = *(feSpace.mesh); - admin = &(const_cast<DOFAdmin&>(mesh->getDOFAdmin(0))); + admin = &(const_cast<DOFAdmin&>(mesh->getDofAdmin(0))); basFcts = feSpace.basFcts; - TEST_EXIT(feSpace.admin == &(feSpace.mesh->getDOFAdmin(0))) + TEST_EXIT(feSpace.admin == &(feSpace.mesh->getDofAdmin(0))) ("Gut, dass muss ich mir noch mal ueberlegen!\n"); return *this; diff --git a/AMDiS/src/Lagrange.cc b/AMDiS/src/Lagrange.cc index 9e981ddb..25135dc2 100644 --- a/AMDiS/src/Lagrange.cc +++ b/AMDiS/src/Lagrange.cc @@ -192,7 +192,7 @@ namespace AMDiS { (*ndofDimDegree[dim][degree])[VERTEX] = 0; for (int i = 1; i < dim + 1; i++) { - nBasFcts = getNumberOfDOFs(i, degree); + nBasFcts = getNumberOfDofs(i, degree); (*ndofDimDegree[dim][degree])[INDEX_OF_DIM(i, dim)] = nBasFcts; for (int j = 0; j < i; j++) { (*ndofDimDegree[dim][degree])[INDEX_OF_DIM(i, dim)] -= @@ -674,7 +674,7 @@ namespace AMDiS { } } - int Lagrange::getNumberOfDOFs(int dim, int degree) + int Lagrange::getNumberOfDofs(int dim, int degree) { int result = 0; for (int i = 0; i <= degree; i++) @@ -936,7 +936,7 @@ namespace AMDiS { for (int pos = 0, j = 0; pos <= dim; pos++) { posIndex = INDEX_OF_DIM(pos, dim); - nrDOFs = admin->getNumberOfDOFs(posIndex); + nrDOFs = admin->getNumberOfDofs(posIndex); if (nrDOFs) { n0 = admin->getNumberOfPreDOFs(posIndex); @@ -968,7 +968,7 @@ namespace AMDiS { for (int pos = 0, j = 0; pos <= dim; pos++) { posIndex = INDEX_OF_DIM(pos, dim); - nrDOFs = admin->getNumberOfDOFs(posIndex); + nrDOFs = admin->getNumberOfDofs(posIndex); if (nrDOFs) { n0 = admin->getNumberOfPreDOFs(posIndex); diff --git a/AMDiS/src/Lagrange.h b/AMDiS/src/Lagrange.h index f4a7bddb..4eb3b1ad 100644 --- a/AMDiS/src/Lagrange.h +++ b/AMDiS/src/Lagrange.h @@ -165,7 +165,7 @@ namespace AMDiS { int positionIndex) const; /// Calculates the number of DOFs needed for Lagrange of the given dim and degree. - static int getNumberOfDOFs(int dim, int degree); + static int getNumberOfDofs(int dim, int degree); private: /// barycentric coordinates of the locations of all basis functions diff --git a/AMDiS/src/MacroReader.cc b/AMDiS/src/MacroReader.cc index 535b9e5b..c693f748 100644 --- a/AMDiS/src/MacroReader.cc +++ b/AMDiS/src/MacroReader.cc @@ -284,7 +284,7 @@ namespace AMDiS { macroInfo->fillBoundaryInfo(mesh); - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { for (int i = 0; i < mesh->getNumberOfMacros(); i++) const_cast<Element*>(mel[i]->getElement())-> setDof(mesh->getNode(CENTER), mesh->getDof(CENTER)); @@ -444,7 +444,7 @@ namespace AMDiS { mesh->incrementNumberOfEdges(1); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { dof = mesh->getDof(EDGE); el->setDof(lnode + i, dof); @@ -505,7 +505,7 @@ namespace AMDiS { mesh->incrementNumberOfFaces(1); - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { TEST_EXIT(!(*(mel + i))->getElement()->getDof(lnode + k)) ("dof %d on element %d already set\n", lnode + k, (*(mel + i))->getIndex()); @@ -696,7 +696,7 @@ namespace AMDiS { list_bound[0] = &(mel->boundary[mesh->getGeo(FACE)+edge_no]); list_project[0] = &(mel->projection[mesh->getGeo(FACE)+edge_no]); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { node = mesh->getNode(EDGE); if (el->getDof(node+edge_no)) { /****************************************************************************/ @@ -742,12 +742,12 @@ namespace AMDiS { break; } - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { TEST_EXIT(nei->index > mel_index) ("neighbour index %d < element index %d\n", nei->getIndex(), mel_index); } - if (!mesh->getNumberOfDOFs(EDGE) && nei->getIndex() < mel_index) + if (!mesh->getNumberOfDofs(EDGE) && nei->getIndex() < mel_index) return false; edge_no = Tetrahedron::edgeOfDofs[j][k]; @@ -761,7 +761,7 @@ namespace AMDiS { list_project[(*n_neigh)++] = &(nei->projection[mesh->getGeo(FACE)+edge_no]); - if (mesh->getNumberOfDOFs(EDGE)) + if (mesh->getNumberOfDofs(EDGE)) nei->element->setDof(node+edge_no,edge_dof); if (next_el[edge_no][0] != opp_v) { @@ -823,7 +823,7 @@ namespace AMDiS { if (j == 4 || k == 4) return false; - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { TEST_EXIT(nei->getIndex() > mel_index) ("neighbour index %d < element index %d\n", nei->getIndex(), mel_index); @@ -839,7 +839,7 @@ namespace AMDiS { list_bound[(*n_neigh)] = &(nei->boundary[mesh->getGeo(FACE) + edge_no]); list_project[(*n_neigh)++] = &(nei->projection[mesh->getGeo(FACE) + edge_no]); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { TEST_EXIT(!nei->getElement()->getDof(node+edge_no)) ("dof %d on element %d is already set, but not on element %d\n", node + edge_no, nei->getIndex(), mel_index); @@ -964,7 +964,7 @@ namespace AMDiS { me->setOppVertex(2,macr->getOppVertex(1)); - if (mesh->getNumberOfDOFs(VERTEX)) { /* Ecken */ + if (mesh->getNumberOfDofs(VERTEX)) { /* Ecken */ n0 = mesh->getNode(VERTEX); const_cast<Element*>(me->getElement())->setDof(n0,d[n0+2]); @@ -972,7 +972,7 @@ namespace AMDiS { const_cast<Element*>(me->getElement())->setDof(n0+2,d[n0+1]); } - if (mesh->getNumberOfDOFs(EDGE)) { /* Kanten */ + if (mesh->getNumberOfDofs(EDGE)) { /* Kanten */ n0 = mesh->getNode(EDGE); const_cast<Element*>(me->getElement())->setDof(n0,d[n0+2]); @@ -1000,7 +1000,7 @@ namespace AMDiS { me->setOppVertex(1,macr->getOppVertex(2)); me->setOppVertex(2,macr->getOppVertex(0)); - if (mesh->getNumberOfDOFs(VERTEX)) { /* Ecken */ + if (mesh->getNumberOfDofs(VERTEX)) { /* Ecken */ n0 = mesh->getNode(VERTEX); const_cast<Element*>(me->getElement())->setDof(n0,d[n0+1]); @@ -1008,7 +1008,7 @@ namespace AMDiS { const_cast<Element*>(me->getElement())->setDof(n0+2,d[n0]); } - if (mesh->getNumberOfDOFs(EDGE)) { /* Kanten */ + if (mesh->getNumberOfDofs(EDGE)) { /* Kanten */ n0 = mesh->getNode(EDGE); const_cast<Element*>(me->getElement())->setDof(n0,d[n0+1]); @@ -1240,9 +1240,9 @@ namespace AMDiS { TEST(nused + nfree == localAdmin->getSize()) ("nused = %d, nfree = %d, admin.size = %d ????\n", nused, nfree, localAdmin->getSize()); - TEST(nused == localAdmin->getUsedDOFs()) + TEST(nused == localAdmin->getUsedDofs()) ("nused = %d, admin.used_count = %d ?????\n", - nused, localAdmin->getUsedDOFs()); + nused, localAdmin->getUsedDofs()); } } @@ -1337,19 +1337,19 @@ namespace AMDiS { FUNCNAME("MacroReader::basicDOFCheckFct()"); Element* el = elinfo->getElement(); - const DOFAdmin& admin = mesh->getDOFAdmin(iadmin); + const DOFAdmin& admin = mesh->getDofAdmin(iadmin); const Element *neig; const DegreeOfFreedom *dof; if (0 == mesh->dof_used.size()) return; - int ndof = admin.getNumberOfDOFs(VERTEX); + int ndof = admin.getNumberOfDofs(VERTEX); if (ndof) { int j0 = admin.getNumberOfPreDOFs(VERTEX); - TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(VERTEX)) + TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(VERTEX)) ("admin.getNumberOfPreDOFs(VERTEX) %d + nDOF %d > mesh->nDOF %d\n", - j0, ndof, mesh->getNumberOfDOFs(VERTEX)); + j0, ndof, mesh->getNumberOfDofs(VERTEX)); int i0 = mesh->getNode(VERTEX); for (int i = 0; i < mesh->getGeo(VERTEX); i++) { if ((dof = el->getDof(i0+i)) == NULL) { @@ -1368,13 +1368,13 @@ namespace AMDiS { if (mesh->getDim() > 1) { - ndof = admin.getNumberOfDOFs(EDGE); + ndof = admin.getNumberOfDofs(EDGE); if (ndof) { int j0 = admin.getNumberOfPreDOFs(EDGE); - TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(EDGE)) + TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(EDGE)) ("admin.getNumberOfPreDOFs(EDGE) %d + nDOF %d > mesh->nDOF %d\n", - j0, ndof, mesh->getNumberOfDOFs(EDGE)); + j0, ndof, mesh->getNumberOfDofs(EDGE)); int i0 = mesh->getNode(EDGE); @@ -1423,12 +1423,12 @@ namespace AMDiS { } if (mesh->getDim() == 3) { - ndof = admin.getNumberOfDOFs(FACE); + ndof = admin.getNumberOfDofs(FACE); if (ndof) { int j0 = admin.getNumberOfPreDOFs(FACE); - TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(FACE)) + TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(FACE)) ("admin->n0_dof[FACE] %d + nDOF %d > mesh->nDOF %d\n", - j0, ndof, mesh->getNumberOfDOFs(FACE)); + j0, ndof, mesh->getNumberOfDofs(FACE)); int i0 = mesh->getNode(FACE); for (int i = 0; i < mesh->getGeo(FACE); i++) { TEST(dof = el->getDof(i0 + i))("no face dof %d ???\n", i); @@ -1453,14 +1453,14 @@ namespace AMDiS { } } - ndof = admin.getNumberOfDOFs(CENTER); + ndof = admin.getNumberOfDofs(CENTER); if (ndof) { int i0 = mesh->getNode(CENTER); TEST(dof = el->getDof(i0))("no center dof???\n"); int j0 = admin.getNumberOfPreDOFs(CENTER); - TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(CENTER)) + TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(CENTER)) ("admin.getNumberOfPreDOFs(CENTER) %d + nDOF %d > mesh->nDOF %d\n", - j0, ndof, mesh->getNumberOfDOFs(CENTER)); + j0, ndof, mesh->getNumberOfDofs(CENTER)); for (int j = 0; j < ndof; j++) { int jdof = dof[j0 + j]; TEST(jdof >= 0 && jdof < static_cast<int>(mesh->dof_used.size())) diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc index 285a1993..170237c6 100644 --- a/AMDiS/src/Mesh.cc +++ b/AMDiS/src/Mesh.cc @@ -83,8 +83,8 @@ namespace AMDiS { nElements(0), parametric(NULL), preserveCoarseDOFs(false), - nDOFEl(0), - nDOF(dimension, DEFAULT_VALUE, 0), + nDofEl(0), + nDof(dimension, DEFAULT_VALUE, 0), nNodeEl(0), node(dimension, DEFAULT_VALUE, 0), elementPrototype(NULL), @@ -155,8 +155,8 @@ namespace AMDiS { parametric = NULL; preserveCoarseDOFs = m.preserveCoarseDOFs; - nDOFEl = m.nDOFEl; - nDOF = m.nDOF; + nDofEl = m.nDofEl; + nDof = m.nDof; nNodeEl = m.nNodeEl; node = m.node; newDOF = m.newDOF; @@ -405,44 +405,44 @@ namespace AMDiS { admin.push_back(localAdmin); - nDOFEl = 0; + nDofEl = 0; - localAdmin->setNumberOfPreDOFs(VERTEX,nDOF[VERTEX]); - nDOF[VERTEX] += localAdmin->getNumberOfDOFs(VERTEX); - nDOFEl += getGeo(VERTEX) * nDOF[VERTEX]; + localAdmin->setNumberOfPreDOFs(VERTEX,nDof[VERTEX]); + nDof[VERTEX] += localAdmin->getNumberOfDofs(VERTEX); + nDofEl += getGeo(VERTEX) * nDof[VERTEX]; if (dim > 1) { - localAdmin->setNumberOfPreDOFs(EDGE,nDOF[EDGE]); - nDOF[EDGE] += localAdmin->getNumberOfDOFs(EDGE); - nDOFEl += getGeo(EDGE) * nDOF[EDGE]; + localAdmin->setNumberOfPreDOFs(EDGE,nDof[EDGE]); + nDof[EDGE] += localAdmin->getNumberOfDofs(EDGE); + nDofEl += getGeo(EDGE) * nDof[EDGE]; } - localAdmin->setNumberOfPreDOFs(CENTER,nDOF[CENTER]); - nDOF[CENTER] += localAdmin->getNumberOfDOFs(CENTER); - nDOFEl += nDOF[CENTER]; + localAdmin->setNumberOfPreDOFs(CENTER,nDof[CENTER]); + nDof[CENTER] += localAdmin->getNumberOfDofs(CENTER); + nDofEl += nDof[CENTER]; - TEST_EXIT_DBG(nDOF[VERTEX] > 0)("no vertex dofs\n"); + TEST_EXIT_DBG(nDof[VERTEX] > 0)("no vertex dofs\n"); node[VERTEX] = 0; nNodeEl = getGeo(VERTEX); if (dim > 1) { node[EDGE] = nNodeEl; - if (nDOF[EDGE] > 0) + if (nDof[EDGE] > 0) nNodeEl += getGeo(EDGE); } if (dim == 3) { - localAdmin->setNumberOfPreDOFs(FACE,nDOF[FACE]); - nDOF[FACE] += localAdmin->getNumberOfDOFs(FACE); - nDOFEl += getGeo(FACE) * nDOF[FACE]; + localAdmin->setNumberOfPreDOFs(FACE,nDof[FACE]); + nDof[FACE] += localAdmin->getNumberOfDofs(FACE); + nDofEl += getGeo(FACE) * nDof[FACE]; node[FACE] = nNodeEl; - if (nDOF[FACE] > 0) + if (nDof[FACE] > 0) nNodeEl += getGeo(FACE); } node[CENTER] = nNodeEl; - if (nDOF[CENTER] > 0) + if (nDof[CENTER] > 0) nNodeEl += 1; } @@ -458,7 +458,7 @@ namespace AMDiS { int size = compressAdmin->getSize(); if (size < 1 || - compressAdmin->getUsedDOFs() < 1 || + compressAdmin->getUsedDofs() < 1 || compressAdmin->getHoleCount() < 1) continue; @@ -494,17 +494,17 @@ namespace AMDiS { TEST_EXIT_DBG(position >= CENTER && position <= FACE) ("unknown position %d\n", position); - int ndof = getNumberOfDOFs(position); + int ndof = getNumberOfDofs(position); if (ndof <= 0) return NULL; DegreeOfFreedom *dof = new DegreeOfFreedom[ndof]; for (int i = 0; i < getNumberOfDOFAdmin(); i++) { - const DOFAdmin *localAdmin = &getDOFAdmin(i); + const DOFAdmin *localAdmin = &getDofAdmin(i); TEST_EXIT_DBG(localAdmin)("no admin[%d]\n", i); - int n = localAdmin->getNumberOfDOFs(position); + int n = localAdmin->getNumberOfDofs(position); int n0 = localAdmin->getNumberOfPreDOFs(position); TEST_EXIT_DBG(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof); @@ -532,9 +532,9 @@ namespace AMDiS { } - void Mesh::freeDOFPtrs(DegreeOfFreedom **ptrs) + void Mesh::freeDofPtrs(DegreeOfFreedom **ptrs) { - FUNCNAME("Mesh::freeDOFPtrs()"); + FUNCNAME("Mesh::freeDofPtrs()"); TEST_EXIT_DBG(ptrs)("ptrs is NULL!\n"); @@ -545,14 +545,14 @@ namespace AMDiS { } - const DOFAdmin *Mesh::createDOFAdmin(std::string lname, DimVec<int> lnDOF) + const DOFAdmin *Mesh::createDOFAdmin(std::string lname, DimVec<int> lnDof) { FUNCNAME("Mesh::createDOFAdmin()"); DOFAdmin *localAdmin = new DOFAdmin(this, lname); for (int i = 0; i < dim + 1; i++) - localAdmin->setNumberOfDOFs(i, lnDOF[i]); + localAdmin->setNumberOfDOFs(i, lnDof[i]); addDOFAdmin(localAdmin); @@ -565,7 +565,7 @@ namespace AMDiS { const DOFAdmin *localAdmin = NULL; for (int i = 0; i < static_cast<int>(admin.size()); i++) { - if (admin[i]->getNumberOfDOFs(VERTEX)) { + if (admin[i]->getNumberOfDofs(VERTEX)) { if (!localAdmin) localAdmin = admin[i]; else if (admin[i]->getSize() < localAdmin->getSize()) @@ -584,7 +584,7 @@ namespace AMDiS { TEST_EXIT_DBG(position >= CENTER && position <= FACE) ("unknown position %d\n", position); - int ndof = nDOF[position]; + int ndof = nDof[position]; if (ndof) { if (!dof) { MSG("dof = NULL, but ndof = %d\n", ndof); @@ -602,7 +602,7 @@ namespace AMDiS { for (unsigned int i = 0; i < admin.size(); i++) { DOFAdmin *localAdmin = admin[i]; - int n = localAdmin->getNumberOfDOFs(position); + int n = localAdmin->getNumberOfDofs(position); int n0 = localAdmin->getNumberOfPreDOFs(position); TEST_EXIT_DBG(n + n0 <= ndof) @@ -618,7 +618,7 @@ namespace AMDiS { void Mesh::freeElement(Element* el) { - freeDOFPtrs(const_cast<DegreeOfFreedom**>(el->getDof())); + freeDofPtrs(const_cast<DegreeOfFreedom**>(el->getDof())); delete el; } @@ -970,9 +970,9 @@ namespace AMDiS { diam.serialize(out); SerUtil::serialize(out, preserveCoarseDOFs); - SerUtil::serialize(out, nDOFEl); + SerUtil::serialize(out, nDofEl); - nDOF.serialize(out); + nDof.serialize(out); SerUtil::serialize(out, nNodeEl); @@ -1049,11 +1049,11 @@ namespace AMDiS { SerUtil::deserialize(in, preserveCoarseDOFs); - oldVal = nDOFEl; - SerUtil::deserialize(in, nDOFEl); - TEST_EXIT_DBG(oldVal == 0 || nDOFEl == oldVal)("Invalid nDOFEl!\n"); + oldVal = nDofEl; + SerUtil::deserialize(in, nDofEl); + TEST_EXIT_DBG(oldVal == 0 || nDofEl == oldVal)("Invalid nDofEl!\n"); - nDOF.deserialize(in); + nDof.deserialize(in); oldVal = nNodeEl; SerUtil::deserialize(in, nNodeEl); @@ -1212,7 +1212,7 @@ namespace AMDiS { Mesh testMesh(name, dim); testMesh.setElementDataPrototype(new LeafDataEstimatableVec(new LeafDataCoarsenableVec)); DOFAdmin *localAdmin = new DOFAdmin(&testMesh, admin[0]->getName()); - localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDOFs()); + localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDofs()); testMesh.addDOFAdmin(localAdmin); MacroInfo *testMacroInfo = @@ -1420,7 +1420,7 @@ namespace AMDiS { { int result = sizeof(Mesh); - result += nDOFEl; + result += nDofEl; for (int i = 0; i < static_cast<int>(admin.size()); i++) { result += admin[i]->calcMemoryUsage(); result += admin[i]->getUsedSize() * sizeof(DegreeOfFreedom); diff --git a/AMDiS/src/Mesh.h b/AMDiS/src/Mesh.h index 9a307e2e..d7071db7 100644 --- a/AMDiS/src/Mesh.h +++ b/AMDiS/src/Mesh.h @@ -93,10 +93,10 @@ namespace AMDiS { return dim; } - /// Returns \ref nDOFEl of the mesh - inline const int getNumberOfAllDOFs() const + /// Returns \ref nDofEl of the mesh + inline const int getNumberOfAllDofs() const { - return nDOFEl; + return nDofEl; } /// Returns \ref nNodeEl of the mesh @@ -153,10 +153,10 @@ namespace AMDiS { return diam; } - /// Returns nDOF[i] of the mesh - inline const int getNumberOfDOFs(int i) const + /// Returns nDof[i] of the mesh + inline const int getNumberOfDofs(int i) const { - return nDOF[i]; + return nDof[i]; } /// Returns \ref elementPrototype of the mesh @@ -186,17 +186,17 @@ namespace AMDiS { DegreeOfFreedom *getDof(GeoIndex position); /// Returns *(\ref admin[i]) of the mesh - inline const DOFAdmin& getDOFAdmin(int i) const + inline const DOFAdmin& getDofAdmin(int i) const { return *(admin[i]); } /** \brief - * Creates a DOFAdmin with name lname. nDOF specifies how many DOFs + * Creates a DOFAdmin with name lname. nDof specifies how many DOFs * are needed at the different positions (see \ref DOFAdmin::nrDOF). * A pointer to the created DOFAdmin is returned. */ - const DOFAdmin* createDOFAdmin(std::string lname, DimVec<int> nDOF); + const DOFAdmin* createDOFAdmin(std::string lname, DimVec<int> nDof); /** \brief * Returns the size of \ref admin which is the number of the DOFAdmins @@ -413,7 +413,7 @@ namespace AMDiS { const FiniteElemSpace* feSpace); /// Frees the array of DOF pointers (see \ref createDofPtrs) - void freeDOFPtrs(DegreeOfFreedom **ptrs); + void freeDofPtrs(DegreeOfFreedom **ptrs); /// Used by \ref findElementAtPoint. bool findElInfoAtPoint(const WorldVector<double>& xy, @@ -759,24 +759,24 @@ namespace AMDiS { bool preserveCoarseDOFs; /// Number of all DOFs on a single element - int nDOFEl; + int nDofEl; /** \brief * Number of DOFs at the different positions VERTEX, EDGE, (FACE,) CENTER on * an element: * - * - nDOF[VERTEX]: number of DOFs at a vertex (>= 1) + * - nDof[VERTEX]: number of DOFs at a vertex (>= 1) * - * - nDOF[EDGE]: number of DOFs at an edge; if no DOFs are associated to + * - nDof[EDGE]: number of DOFs at an edge; if no DOFs are associated to * edges, then this value is 0 * - * - nDOF[FACE]: number of DOFs at a face; if no DOFs are associated to + * - nDof[FACE]: number of DOFs at a face; if no DOFs are associated to * faces, then this value is 0 (only 3d) * - * - nDOF[CENTER]: number of DOFs at the barycenter; if no DOFs are + * - nDof[CENTER]: number of DOFs at the barycenter; if no DOFs are * associated to the barycenter, then this value is 0 */ - DimVec<int> nDOF; + DimVec<int> nDof; /** \brief * Number of nodes on a single element where DOFs are located; needed for diff --git a/AMDiS/src/ProblemScal.cc b/AMDiS/src/ProblemScal.cc index e8fa317e..9e9f90ac 100644 --- a/AMDiS/src/ProblemScal.cc +++ b/AMDiS/src/ProblemScal.cc @@ -438,7 +438,7 @@ namespace AMDiS { name + "->feSpace"); // create dof admin for vertex dofs if neccessary - if (mesh->getNumberOfDOFs(VERTEX) == 0) { + if (mesh->getNumberOfDofs(VERTEX) == 0) { DimVec<int> ln_dof(mesh->getDim(), DEFAULT_VALUE, 0); ln_dof[VERTEX]= 1; mesh->createDOFAdmin("vertex dofs", ln_dof); @@ -542,7 +542,7 @@ namespace AMDiS { #endif MSG("%d DOFs for %s\n", - feSpace->getAdmin()->getUsedDOFs(), feSpace->getName().c_str()); + feSpace->getAdmin()->getUsedDofs(), feSpace->getName().c_str()); rhs->set(0.0); diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc index 03124f81..e917dddd 100644 --- a/AMDiS/src/ProblemVec.cc +++ b/AMDiS/src/ProblemVec.cc @@ -316,7 +316,7 @@ namespace AMDiS { // create dof admin for vertex dofs if neccessary for (int i = 0; i < static_cast<int>(meshes.size()); i++) { - if (meshes[i]->getNumberOfDOFs(VERTEX) == 0) { + if (meshes[i]->getNumberOfDofs(VERTEX) == 0) { DimVec<int> ln_dof(meshes[i]->getDim(), DEFAULT_VALUE, 0); ln_dof[VERTEX] = 1; meshes[i]->createDOFAdmin("vertex dofs", ln_dof); @@ -665,7 +665,7 @@ namespace AMDiS { for (int i = 0; i < nComponents; i++) { MSG("%d DOFs for %s\n", - componentSpaces[i]->getAdmin()->getUsedSize(), + componentSpaces[i]->getAdmin()->getUsedDofs(), componentSpaces[i]->getName().c_str()); rhs->getDOFVector(i)->set(0.0); diff --git a/AMDiS/src/RCNeighbourList.cc b/AMDiS/src/RCNeighbourList.cc index dce07e57..4cc0ce8a 100644 --- a/AMDiS/src/RCNeighbourList.cc +++ b/AMDiS/src/RCNeighbourList.cc @@ -139,7 +139,7 @@ namespace AMDiS { Mesh *coarse_mesh = coarseningManager->getMesh(); RCListElement *coarse_list = rclist[elIndex]; - if (coarse_mesh->getNumberOfDOFs(EDGE)) { + if (coarse_mesh->getNumberOfDofs(EDGE)) { int node = coarse_mesh->getNode(EDGE); /****************************************************************************/ @@ -165,7 +165,7 @@ namespace AMDiS { } } - if (coarse_mesh->getNumberOfDOFs(FACE)) { + if (coarse_mesh->getNumberOfDofs(FACE)) { int node = coarse_mesh->getNode(FACE); /****************************************************************************/ /* dof's at the faces within the patch: add new dof's if it is a boundary */ @@ -201,7 +201,7 @@ namespace AMDiS { el->setDof(node + 1, const_cast<int*>(el->getFirstChild()->getDof(node + 3))); } - if (coarse_mesh->getNumberOfDOFs(CENTER)) { + if (coarse_mesh->getNumberOfDofs(CENTER)) { int node = coarse_mesh->getNode(CENTER); if (!el->getDof(node)) el->setDof(node, const_cast<int*>(coarse_mesh->getDof(CENTER))); @@ -212,7 +212,7 @@ namespace AMDiS { { Mesh *coarse_mesh = coarseningManager->getMesh(); - if (coarse_mesh->getNumberOfDOFs(EDGE)) { + if (coarse_mesh->getNumberOfDofs(EDGE)) { int node = coarse_mesh->getNode(EDGE); /****************************************************************************/ @@ -224,7 +224,7 @@ namespace AMDiS { } } - if (coarse_mesh->getNumberOfDOFs(CENTER)) { + if (coarse_mesh->getNumberOfDofs(CENTER)) { int node = coarse_mesh->getNode(CENTER); /****************************************************************************/ @@ -242,7 +242,7 @@ namespace AMDiS { Mesh *mesh = rclist[0]->el->getMesh(); int edges = mesh->getGeo(EDGE); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { int node = mesh->getNode(EDGE); for (int i = 0; i < n_neigh; i++) @@ -250,7 +250,7 @@ namespace AMDiS { rclist[i]->el->setDof(node + j, NULL); } - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { int node = mesh->getNode(CENTER); for (int i = 0; i < n_neigh; i++) { mesh->freeDof(const_cast<int*>(rclist[i]->el->getDof(node)), CENTER); @@ -268,13 +268,13 @@ namespace AMDiS { int faces = mesh->getGeo(FACE); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { int node = mesh->getNode(EDGE); for (int j = 0; j < edges; j++) el->setDof(node + j, NULL); } - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { int node = mesh->getNode(FACE); RCListElement *neigh = rclist[index]->neigh[0]; @@ -291,7 +291,7 @@ namespace AMDiS { el->setDof(node + j, NULL); } - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { int node = mesh->getNode(CENTER); mesh->freeDof(const_cast<int*>(el->getDof(node)), CENTER); el->setDof(node, NULL); diff --git a/AMDiS/src/Recovery.cc b/AMDiS/src/Recovery.cc index 659b93ba..27425a34 100644 --- a/AMDiS/src/Recovery.cc +++ b/AMDiS/src/Recovery.cc @@ -475,7 +475,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh, // Information concerning the finite element space. const BasisFunction *basis_fcts = feSpace->getBasisFcts(); - DimVec<int> *nDOFs = basis_fcts->getNumberOfDOFs(); + DimVec<int> *nDOFs = basis_fcts->getNumberOfDofs(); // Information from DOFAdmin. const DOFAdmin *admin = feSpace->getAdmin(); diff --git a/AMDiS/src/RefinementManager1d.cc b/AMDiS/src/RefinementManager1d.cc index 5761302f..9197fe71 100644 --- a/AMDiS/src/RefinementManager1d.cc +++ b/AMDiS/src/RefinementManager1d.cc @@ -65,7 +65,7 @@ namespace AMDiS { mesh->incrementNumberOfVertices(1); mesh->incrementNumberOfElements(2); - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { /*--------------------------------------------------------------------------*/ /* there are dofs at the barycenter of the triangles */ /*--------------------------------------------------------------------------*/ @@ -83,13 +83,13 @@ namespace AMDiS { int nrAdmin = mesh->getNumberOfDOFAdmin(); for (int iadmin = 0; iadmin < nrAdmin; iadmin++) { std::list<DOFIndexedBase*>::iterator it; - DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin)); + DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin)); std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed(); for (it = admin->beginDOFIndexed(); it != end; it++) (*it)->refineInterpol(ref_list, 1); } - if (!mesh->queryCoarseDOFs() && mesh->getNumberOfDOFs(CENTER)) { + if (!mesh->queryCoarseDOFs() && mesh->getNumberOfDofs(CENTER)) { mesh->freeDof(const_cast<int*>( el->getDof(mesh->getNode(CENTER))), CENTER); el->setDof(mesh->getNode(CENTER), NULL); } diff --git a/AMDiS/src/RefinementManager2d.cc b/AMDiS/src/RefinementManager2d.cc index cf57ed17..5f81b686 100644 --- a/AMDiS/src/RefinementManager2d.cc +++ b/AMDiS/src/RefinementManager2d.cc @@ -171,7 +171,7 @@ namespace AMDiS { mesh->incrementNumberOfVertices(1); mesh->incrementNumberOfEdges(1); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { // There are two additional dofs in the refinement edge. dof[1] = mesh->getDof(EDGE); dof[2] = mesh->getDof(EDGE); @@ -198,7 +198,7 @@ namespace AMDiS { int nrAdmin = mesh->getNumberOfDOFAdmin(); for(int iadmin = 0; iadmin < nrAdmin; iadmin++) { - DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin)); + DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin)); std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed(); for (std::list<DOFIndexedBase*>::iterator it = admin->beginDOFIndexed(); it != end; it++) @@ -209,7 +209,7 @@ namespace AMDiS { if (!mesh->queryCoarseDOFs()) { // === If there should be no dof information on interior leaf elements === // === remove dofs from edges and the centers of parents. === - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { int node = mesh->getNode(EDGE); // === The only DOF that can be freed is that in the refinement edge; all === @@ -217,7 +217,7 @@ namespace AMDiS { mesh->freeDof(const_cast<int*>(el->getDof(node+2)), EDGE); } - if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(CENTER)) + if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(CENTER)) refineList->removeDOFParents(n_neigh); } @@ -269,7 +269,7 @@ namespace AMDiS { mesh->incrementNumberOfLeaves(1); mesh->incrementNumberOfElements(2); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { DegreeOfFreedom* newEdgeDOFs = mesh->getDof(EDGE); // There are dofs in the midpoint of the edges. @@ -285,7 +285,7 @@ namespace AMDiS { child[1]->setDof(4, newDOFs[2]); } - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { int node = mesh->getNode(CENTER); // There are dofs at the barycenter of the triangles. diff --git a/AMDiS/src/RefinementManager3d.cc b/AMDiS/src/RefinementManager3d.cc index 1cb9c76b..efece1b1 100644 --- a/AMDiS/src/RefinementManager3d.cc +++ b/AMDiS/src/RefinementManager3d.cc @@ -68,7 +68,7 @@ namespace AMDiS { /* information */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { int node = mesh->getNode(EDGE); /****************************************************************************/ @@ -107,7 +107,7 @@ namespace AMDiS { } } - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { int node = mesh->getNode(FACE); /****************************************************************************/ @@ -126,13 +126,13 @@ namespace AMDiS { child[1]->setDof(node, static_cast<int*>(newDOF)); } - if (mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(CENTER)) { int node = mesh->getNode(CENTER); child[0]->setDof(node, const_cast<int*>(mesh->getDof(CENTER))); child[1]->setDof(node, const_cast<int*>(mesh->getDof(CENTER))); } - if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(FACE)) + if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(FACE)) fillPatchConnectivity(ref_list, index); } @@ -163,7 +163,7 @@ namespace AMDiS { /* adjusted by the neighbour element also (see below) */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { node0 = node1 = mesh->getNode(EDGE); node0 += Tetrahedron::nChildEdge[el_type][0][dir]; node1 += Tetrahedron::nChildEdge[el_type][1][dir]; @@ -171,7 +171,7 @@ namespace AMDiS { (const_cast<Element*>(el->getFirstChild()))->setDof(node0, newDOF); (const_cast<Element*>(el->getSecondChild()))->setDof(node1, newDOF); } - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { node0 = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][0][dir]; (const_cast<Element*>(el->getFirstChild()))->setDof(node0, mesh->getDof(FACE)); node1 = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][1][dir]; @@ -206,7 +206,7 @@ namespace AMDiS { /* the dof pointer in the sub-face child_i-child_j (allocated by neigh!) */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { node0 = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[el_type][i][dir]; node1 = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[n_type][j][oppVertex - 2]; @@ -217,7 +217,7 @@ namespace AMDiS { (const_cast<Element*>(el->getChild(i)))-> setDof(node0, const_cast<int*>(neigh->getChild(j)->getDof(node1))); } - if (mesh->getNumberOfDOFs(FACE)) { + if (mesh->getNumberOfDofs(FACE)) { node0 = mesh->getNode(FACE) + i_neigh; node1 = mesh->getNode(FACE) + j_neigh; @@ -319,7 +319,7 @@ namespace AMDiS { dof[0] = mesh->getDof(VERTEX); mesh->incrementNumberOfVertices(1); - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { dof[1] = mesh->getDof(EDGE); dof[2] = mesh->getDof(EDGE); } @@ -334,7 +334,7 @@ namespace AMDiS { int nrAdmin = mesh->getNumberOfDOFAdmin(); for (iadmin = 0; iadmin < nrAdmin; iadmin++) { std::list<DOFIndexedBase*>::iterator it; - DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin)); + DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin)); std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed(); for (it = admin->beginDOFIndexed(); it != end; it++) (*it)->refineInterpol(*refineList, n_neigh); @@ -345,7 +345,7 @@ namespace AMDiS { /* if there should be no dof information on interior leaf elements remove */ /* dofs from edges, faces and the centers of parents */ /****************************************************************************/ - if (mesh->getNumberOfDOFs(EDGE)) { + if (mesh->getNumberOfDofs(EDGE)) { /****************************************************************************/ /* remove dof of the midpoint of the common refinement edge */ /****************************************************************************/ @@ -354,9 +354,9 @@ namespace AMDiS { mesh->freeDof(const_cast<int*>(el->getDof(mesh->getNode(EDGE))), EDGE); } - if (mesh->getNumberOfDOFs(EDGE) || - mesh->getNumberOfDOFs(FACE) || - mesh->getNumberOfDOFs(CENTER)) { + if (mesh->getNumberOfDofs(EDGE) || + mesh->getNumberOfDofs(FACE) || + mesh->getNumberOfDofs(CENTER)) { for (int i = 0; i < n_neigh; i++) refineList->removeDOFParent(i); } diff --git a/AMDiS/src/SolutionDataStorage.h b/AMDiS/src/SolutionDataStorage.h index 3f89b823..054b2034 100644 --- a/AMDiS/src/SolutionDataStorage.h +++ b/AMDiS/src/SolutionDataStorage.h @@ -188,7 +188,7 @@ namespace AMDiS { Lagrange::getLagrange(dim, degree), mesh, name); - (*fe)->setAdmin(const_cast<DOFAdmin*>(&(mesh->getDOFAdmin(0)))); + (*fe)->setAdmin(const_cast<DOFAdmin*>(&(mesh->getDofAdmin(0)))); } void deserializeFeSpace(std::ifstream &in, std::vector<FiniteElemSpace*>& fe) diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc index 7ac831b6..8e8c8efc 100644 --- a/AMDiS/src/parallel/MeshDistributor.cc +++ b/AMDiS/src/parallel/MeshDistributor.cc @@ -218,7 +218,7 @@ namespace AMDiS { TEST_EXIT(mesh->getNumberOfDOFAdmin() == 1) ("Only meshes with one DOFAdmin are supported!\n"); - TEST_EXIT(mesh->getDOFAdmin(0).getNumberOfPreDOFs(0) == 0) + TEST_EXIT(mesh->getDofAdmin(0).getNumberOfPreDOFs(0) == 0) ("Wrong pre dof number for DOFAdmin!\n"); switch (mesh->getDim()) { @@ -302,7 +302,7 @@ namespace AMDiS { FUNCNAME("MeshDistributor::updateDofAdmins()"); for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) { - DOFAdmin& admin = const_cast<DOFAdmin&>(mesh->getDOFAdmin(i)); + DOFAdmin& admin = const_cast<DOFAdmin&>(mesh->getDofAdmin(i)); // There must be always more allocated DOFs than used DOFs in DOFAdmin. Otherwise, // it is not possible to define a first DOF hole. @@ -469,7 +469,7 @@ namespace AMDiS { // Remove periodic vertex associations for (std::map<BoundaryType, VertexVector*>::iterator it = mesh->getPeriodicAssociations().begin(); it != mesh->getPeriodicAssociations().end(); ++it) - const_cast<DOFAdmin&>(mesh->getDOFAdmin(0)).removeDOFContainer(dynamic_cast<DOFContainer*>(it->second)); + const_cast<DOFAdmin&>(mesh->getDofAdmin(0)).removeDOFContainer(dynamic_cast<DOFContainer*>(it->second)); mesh->getPeriodicAssociations().clear(); } @@ -950,7 +950,7 @@ namespace AMDiS { TEST_EXIT(mesh->getNumberOfDOFAdmin() == 1) ("Only meshes with one DOFAdmin are supported!\n"); - int nDofs = mesh->getDOFAdmin(0).getUsedDOFs(); + int nDofs = mesh->getDofAdmin(0).getUsedDofs(); int repartitioning = 0; std::vector<int> nDofsInRank(mpiSize); @@ -983,6 +983,12 @@ namespace AMDiS { return; + DOFVector<double> tmpa(feSpace, "tmp"); + tmpa.set(mpiRank); + VtkWriter::writeFile(tmpa, "before-repartition.vtu"); + + MSG("USED-SIZE A: %d\n", mesh->getDofAdmin(0).getUsedDofs()); + elemWeights.clear(); TraverseStack stack; @@ -1031,9 +1037,10 @@ namespace AMDiS { // === Add new macro elements to mesh. === - while (!newMacroEl.empty()) { - MacroElement *mel = *(newMacroEl.begin()); - MSG("NEW MACRO EL: %d\n", mel->getIndex()); + for (std::set<MacroElement*>::iterator it = newMacroEl.begin(); + it != newMacroEl.end(); ++it) { + MacroElement *mel = *it; + // MSG("NEW MACRO EL: %d\n", mel->getIndex()); for (int i = 0; i < mesh->getGeo(NEIGH); i++) mel->setNeighbour(i, NULL); @@ -1042,7 +1049,6 @@ namespace AMDiS { mel->getElement()->setDof(i, mesh->getDof(VERTEX)); mesh->getMacroElements().push_back(mel); - newMacroEl.erase(newMacroEl.begin()); } @@ -1053,7 +1059,7 @@ namespace AMDiS { it != partitioner->getSendElements().end(); ++it) { for (std::vector<int>::iterator elIt = it->second.begin(); elIt != it->second.end(); ++elIt) { - MSG("MAKE EL-STRUC FOR EL %d TO RANK %d\n", *elIt, it->first); + // MSG("MAKE EL-STRUC FOR EL %d TO RANK %d\n", *elIt, it->first); MeshStructure elCode; elCode.init(mesh, *elIt); sendCodes[it->first].push_back(elCode); @@ -1078,7 +1084,7 @@ namespace AMDiS { for (std::vector<int>::iterator elIt = it->second.begin(); elIt != it->second.end(); ++elIt) { - MSG("RECV EL-STRUC FOR EL %d FROM RANK %d\n", *elIt, it->first); + // MSG("RECV EL-STRUC FOR EL %d FROM RANK %d\n", *elIt, it->first); recvCodes[i++].fitMeshToStructure(mesh, refineManager, false, *elIt); } @@ -1114,24 +1120,23 @@ namespace AMDiS { elIt != it->second.end(); ++elIt) { TEST_EXIT_DBG(elIndexMap.count(*elIt) == 1) ("Could not find macro element %d\n", *elIt); - MSG("DELETE MACRO %d\n", (*elIt)); + // MSG("DELETE MACRO %d\n", (*elIt)); deleteMacroElements.insert(elIndexMap[*elIt]); } } - MSG("REMOVE MACRO ELEMENT!\n"); + // MSG("REMOVE MACRO ELEMENT!\n"); mesh->removeMacroElements(deleteMacroElements, feSpace); // === Remove double DOFs. === - std::map<int, int> leafInMacroEl; - + std::map<int, MacroElement*> leafInMacroEl; + elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_LEAF_EL); while (elInfo) { - leafInMacroEl[elInfo->getElement()->getIndex()] = - elInfo->getMacroElement()->getIndex(); + leafInMacroEl[elInfo->getElement()->getIndex()] = elInfo->getMacroElement(); elInfo = stack.traverseNext(elInfo); } @@ -1142,12 +1147,18 @@ namespace AMDiS { Element *el = elInfo->getElement(); for (int i = 0; i < mesh->getGeo(NEIGH); i++) { - if (!elInfo->getNeighbour(i)) - continue; + Element *neigh = elInfo->getNeighbour(i); + + if (!neigh) + continue; if (leafInMacroEl[el->getIndex()] != - leafInMacroEl[elInfo->getNeighbour(i)->getIndex()]) { - Element *neigh = elInfo->getNeighbour(i); + leafInMacroEl[neigh->getIndex()] && + newMacroEl.count(leafInMacroEl[el->getIndex()]) == 0 && + newMacroEl.count(leafInMacroEl[neigh->getIndex()]) == 1) { + + // MSG("EL: %d NEIGH: %d\n", el->getIndex(), neigh->getIndex()); + int elEdgeIndex = i; int neighEdgeIndex = elInfo->getOppVertex(i); @@ -1173,11 +1184,15 @@ namespace AMDiS { std::swap(neighEdgeDof0, neighEdgeDof1); } - if (neighEdgeDof0 != elEdgeDof0) + if (neighEdgeDof0 != elEdgeDof0) { mapDelDofs[neigh->getDof(neighEdgeIndex0)] = el->getDof(elEdgeIndex0); + // MSG("REPLACE DOF %d by %d\n", neigh->getDof(neighEdgeIndex0, 0), el->getDof(elEdgeIndex0, 0)); + } - if (neighEdgeDof1 != elEdgeDof1) + if (neighEdgeDof1 != elEdgeDof1) { mapDelDofs[neigh->getDof(neighEdgeIndex1)] = el->getDof(elEdgeIndex1); + // MSG("REPLACE DOF %d by %d\n", neigh->getDof(neighEdgeIndex1, 0), el->getDof(elEdgeIndex1, 0)); + } } } } @@ -1190,10 +1205,10 @@ namespace AMDiS { while (elInfo) { for (int i = 0; i < mesh->getGeo(VERTEX); i++) if (mapDelDofs.count(elInfo->getElement()->getDof(i)) == 1) { - MSG("SET DOF %d TO DOF %d in EL %d\n", - elInfo->getElement()->getDof(i, 0), - *(mapDelDofs[elInfo->getElement()->getDof(i)]), - elInfo->getElement()->getIndex()); + // MSG("SET DOF %d TO DOF %d in EL %d\n", + // elInfo->getElement()->getDof(i, 0), + // *(mapDelDofs[elInfo->getElement()->getDof(i)]), + // elInfo->getElement()->getIndex()); elInfo->getElement()->setDof(i, const_cast<DegreeOfFreedom*>(mapDelDofs[elInfo->getElement()->getDof(i)])); } @@ -1203,22 +1218,23 @@ namespace AMDiS { for (std::map<const DegreeOfFreedom*, const DegreeOfFreedom*>::iterator it = mapDelDofs.begin(); it != mapDelDofs.end(); ++it) { - MSG("DOF TO DEL: %d\n", (*(it->first))); + // MSG("DOF TO DEL: %d\n", (*(it->first))); mesh->freeDof(const_cast<DegreeOfFreedom*>(it->first), VERTEX); } + mesh->dofCompress(); + MSG("WRITE OUTPUT\n"); DOFVector<double> tmp(feSpace, "tmp"); tmp.set(mpiRank); - // stringstream oss; - // oss << "repartion-" << mpiRank << ".vtu"; - VtkWriter::writeFile(tmp, "repartition-.vtu"); + VtkWriter::writeFile(tmp, "after-repartition.vtu"); MSG("DONE!\n"); + MSG("USED-SIZE B: %d\n", mesh->getDofAdmin(0).getUsedDofs()); exit(0); #if (DEBUG != 0) @@ -1360,6 +1376,8 @@ namespace AMDiS { stack.traverseFirst(mesh, -1, Mesh::CALL_LEAF_EL | Mesh::FILL_NEIGH | Mesh::FILL_BOUND); while (elInfo) { + TEST_EXIT_DBG(elInfo->getLevel() == 0)("Should not happen!\n"); + Element *el = elInfo->getElement(); elIndexMap[el->getIndex()] = el; elIndexTypeMap[el->getIndex()] = elInfo->getType(); -- GitLab