From 90c1f5621ce9d6609355b6fd4c7dc86c5841514b Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Thu, 28 Jun 2012 07:24:33 +0000 Subject: [PATCH] Fixed small bug related to NNZ computations in FETI-DP context. --- AMDiS/src/parallel/MatrixNnzStructure.cc | 2 ++ AMDiS/src/parallel/MeshDistributor.cc | 9 +++++++-- AMDiS/src/parallel/ParallelDofMapping.h | 5 ++++- AMDiS/src/parallel/PetscSolverFeti.cc | 4 +++- AMDiS/src/parallel/PetscSolverGlobalMatrix.cc | 2 ++ 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/AMDiS/src/parallel/MatrixNnzStructure.cc b/AMDiS/src/parallel/MatrixNnzStructure.cc index 382267c8..b47294c5 100644 --- a/AMDiS/src/parallel/MatrixNnzStructure.cc +++ b/AMDiS/src/parallel/MatrixNnzStructure.cc @@ -77,6 +77,8 @@ namespace AMDiS { if ((*mat)[i][j]) feSpace = (*mat)[i][j]->getRowFeSpace(); + TEST_EXIT_DBG(feSpace)("No FE space found!\n"); + for (DofComm::Iterator it(rowDofMap.getDofComm().getRecvDofs(), feSpace); !it.end(); it.nextRank()) { sendMatrixEntry[it.getRank()].resize(0); diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc index 8dfafe07..1c7727a4 100644 --- a/AMDiS/src/parallel/MeshDistributor.cc +++ b/AMDiS/src/parallel/MeshDistributor.cc @@ -1721,8 +1721,13 @@ namespace AMDiS { ParallelDebug::writeDebugFile(feSpaces[feSpaces.size() - 1], dofMap, debugOutputDir + "mpi-dbg", "dat"); debug::testSortedDofs(mesh, elMap); - ParallelDebug::testCommonDofs(*this, true); - ParallelDebug::testGlobalIndexByCoords(*this); + + int test = 0; + Parameters::get("parallel->remove periodic boundary", test); + if (test == 0) { + ParallelDebug::testCommonDofs(*this, true); + ParallelDebug::testGlobalIndexByCoords(*this); + } #else for (unsigned int i = 0; i < feSpaces.size(); i++) MSG("FE space %d: nRankDofs = %d nOverallDofs = %d\n", diff --git a/AMDiS/src/parallel/ParallelDofMapping.h b/AMDiS/src/parallel/ParallelDofMapping.h index 7da23a1a..c5b66814 100644 --- a/AMDiS/src/parallel/ParallelDofMapping.h +++ b/AMDiS/src/parallel/ParallelDofMapping.h @@ -300,6 +300,7 @@ namespace AMDiS { public: ParallelDofMapping() : levelData(NULL), + dofComm(NULL), hasNonLocalDofs(false), needMatIndex(false), needMatIndexFromGlobal(false), @@ -346,7 +347,9 @@ namespace AMDiS { /// Returns the DOF communicator. DofComm& getDofComm() { - TEST_EXIT_DBG(dofComm); + FUNCNAME("ParallelDofMapping::getDofComm()"); + + TEST_EXIT_DBG(dofComm)("No DOF communicator object defined!\n"); return *dofComm; } diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc index b1094666..c0a42f67 100644 --- a/AMDiS/src/parallel/PetscSolverFeti.cc +++ b/AMDiS/src/parallel/PetscSolverFeti.cc @@ -346,7 +346,9 @@ namespace AMDiS { if (fetiPreconditioner != FETI_NONE) interiorDofMap.setMpiComm(levelData.getMpiComm(meshLevel), meshLevel); - if (meshLevel > 0) + if (meshLevel == 0) + localDofMap.setDofComm(meshDistributor->getDofComm()); + else localDofMap.setDofComm(meshDistributor->getDofCommSd()); for (unsigned int i = 0; i < meshDistributor->getFeSpaces().size(); i++) { diff --git a/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc b/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc index aa4a7847..91681988 100644 --- a/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc +++ b/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc @@ -123,6 +123,8 @@ namespace AMDiS { void PetscSolverGlobalMatrix::fillPetscMatrixWithCoarseSpace(Matrix<DOFMatrix*> *mat) { FUNCNAME("PetscSolverGlobalMatrix::fillPetscMatrixWithCoarseSpace()"); + + TEST_EXIT_DBG(interiorMap)("Should not happen!\n"); vector<const FiniteElemSpace*> feSpaces = getFeSpaces(mat); -- GitLab