From 3f9bb6b20228bb9a16628e9e85edef86ff3a65c2 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Tue, 14 Feb 2012 13:32:12 +0000 Subject: [PATCH] On the way to an efficient FETI-DP implementation for mixed finite elements, part II. --- AMDiS/src/parallel/PetscSolverFeti.cc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc index 3110e994..3dea37ef 100644 --- a/AMDiS/src/parallel/PetscSolverFeti.cc +++ b/AMDiS/src/parallel/PetscSolverFeti.cc @@ -511,10 +511,9 @@ namespace AMDiS { MatCreateMPIAIJ(PETSC_COMM_WORLD, lagrangeMap.getRankDofs(feSpaces), - // lagrangeMap[feSpace].nRankDofs * nComponents, - localDofMap[feSpace].nRankDofs * nComponents, - lagrangeMap[feSpace].nOverallDofs * nComponents, - localDofMap[feSpace].nOverallDofs * nComponents, + localDofMap.getRankDofs(feSpaces), + lagrangeMap.getOverallDofs(feSpaces), + localDofMap.getOverallDofs(feSpaces), 2, PETSC_NULL, 2, PETSC_NULL, &mat_lagrange); @@ -964,12 +963,13 @@ namespace AMDiS { // === Create matrices for the FETI-DP method. === - int nRowsRankB = localDofMap[feSpace].nRankDofs * nComponents; - int nRowsOverallB = localDofMap[feSpace].nOverallDofs * nComponents; - int nRowsRankPrimal = primalDofMap[feSpace].nRankDofs * nComponents; - int nRowsOverallPrimal = primalDofMap[feSpace].nOverallDofs * nComponents; - int nRowsInterior = nLocalInterior * nComponents; - int nRowsDual = dualDofMap[feSpace].size() * nComponents; + int nRowsRankB = localDofMap.getRankDofs(feSpaces); + int nRowsOverallB = localDofMap.getOverallDofs(feSpaces); + int nRowsRankPrimal = primalDofMap.getRankDofs(feSpaces); + int nRowsOverallPrimal = primalDofMap.getOverallDofs(feSpaces); + int nRowsDual = dualDofMap.getRankDofs(feSpaces); + int nRowsInterior = nRowsRankB - nRowsDual; + MatCreateSeqAIJ(PETSC_COMM_SELF, nRowsRankB, nRowsRankB, 30, PETSC_NULL, &mat_b_b); @@ -1087,7 +1087,8 @@ namespace AMDiS { // Column is not a primal variable. int colIndex = - (localDofMap[feSpace][col(*icursor)] + localDofMap[feSpace].rStartDofs) * nComponents + j; + (localDofMap[feSpace][col(*icursor)] + + localDofMap[feSpace].rStartDofs) * nComponents + j; if (rowPrimal) { colsOther.push_back(colIndex); -- GitLab