diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc index 4cb5767e188ba4c998bc7a0f2a2071fc28783c7c..d9b282016b83f5ee31999502cc8c0192396dfbc3 100644 --- a/AMDiS/src/parallel/MeshDistributor.cc +++ b/AMDiS/src/parallel/MeshDistributor.cc @@ -550,7 +550,7 @@ namespace AMDiS { DOFVector<double> &dofVec = *(vec.getDOFVector(i)); for (it.beginDofIter(vec.getFeSpace(i)); !it.endDofIter(); it.nextDof()) - dofVec[it.getDofIndex()] = 0.0;//stdMpi.getRecvData(rank)[counter++]; + dofVec[it.getDofIndex()] = stdMpi.getRecvData(rank)[counter++]; } } } diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc index 9109e2e77668131d51b0ea1afac33a9514d148c8..1fee204c87b92394c8856adae3b0b976b543c61c 100644 --- a/AMDiS/src/parallel/PetscSolverFeti.cc +++ b/AMDiS/src/parallel/PetscSolverFeti.cc @@ -1413,19 +1413,14 @@ namespace AMDiS { int a = 0; levelData.getMpiComm(meshLevel).Allreduce(&tmp, &a, 1, MPI_INT, MPI_SUM); - MSG("RSTART %d\n", a); - for (DofMap::iterator it = m.begin(); it != m.end(); it++) it->second.global += a; } else { int groupRowsInterior = localDofMap[vec.getDOFVector(0)->getFeSpace()].nRankDofs; - MSG("DA TEST: %d\n", groupRowsInterior); int rStart, nGlobal; mpi::getDofNumbering(mpiComm, groupRowsInterior, rStart, nGlobal); DofMap &m = localDofMap[vec.getDOFVector(0)->getFeSpace()].getMap(); - MSG("RSTART %d\n", rStart); - for (DofMap::iterator it = m.begin(); it != m.end(); it++) it->second.global = it->second.local + rStart; } @@ -1434,8 +1429,8 @@ namespace AMDiS { localDofMap, "interior", "dat"); - MPI::Finalize(); - exit(0); +// MPI::Finalize(); +// exit(0); #endif // tmp_primal0 = M_PiB * inv(K_BB) * f_B diff --git a/AMDiS/src/parallel/SubDomainSolver.cc b/AMDiS/src/parallel/SubDomainSolver.cc index aff5e5fa170be175c569b7f13f8536a12c4ed376..268423b11159ccae63051ead2979b0036db66b57 100644 --- a/AMDiS/src/parallel/SubDomainSolver.cc +++ b/AMDiS/src/parallel/SubDomainSolver.cc @@ -200,7 +200,7 @@ namespace AMDiS { if (colsOther.size()) { int globalRowIndex = interiorMap->getMatIndex(i, *cursor); - if (multilevel == false) + if (multilevel) globalRowIndex += rStartInterior; for (unsigned int k = 0; k < colsOther.size(); k++) @@ -245,6 +245,33 @@ namespace AMDiS { KSPSetFromOptions(kspInterior); + if (multilevel == false) { + PetscViewer matview; + PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_coarse_int.dat", + FILE_MODE_WRITE, &matview); + MatView(matCoarseInt, matview); + PetscViewerDestroy(&matview); + + PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_int_coarse.dat", + FILE_MODE_WRITE, &matview); + MatView(matIntCoarse, matview); + PetscViewerDestroy(&matview); + } else { + PetscViewer matview; + PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_coarse_int.dat", + FILE_MODE_WRITE, &matview); + MatView(matCoarseInt, matview); + PetscViewerDestroy(&matview); + + PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_int_coarse.dat", + FILE_MODE_WRITE, &matview); + MatView(matIntCoarse, matview); + PetscViewerDestroy(&matview); + } + +// MPI::Finalize(); +// exit(0); + #if 0 PetscViewer matview; PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_primal.dat", @@ -316,9 +343,7 @@ namespace AMDiS { } } else { if ((*interiorMap)[feSpace].isRankDof(index)) { - int d = index; index = interiorMap->getMatIndex(i, index) + rStartInterior; - int t = interiorMap->getLocalMatIndex(i, d); VecSetValue(rhsInterior, index, *dofIt, INSERT_VALUES); } }