Commit 3f9bb6b2 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

On the way to an efficient FETI-DP implementation for mixed finite elements, part II.

parent 0498e5fc
...@@ -511,10 +511,9 @@ namespace AMDiS { ...@@ -511,10 +511,9 @@ namespace AMDiS {
MatCreateMPIAIJ(PETSC_COMM_WORLD, MatCreateMPIAIJ(PETSC_COMM_WORLD,
lagrangeMap.getRankDofs(feSpaces), lagrangeMap.getRankDofs(feSpaces),
// lagrangeMap[feSpace].nRankDofs * nComponents, localDofMap.getRankDofs(feSpaces),
localDofMap[feSpace].nRankDofs * nComponents, lagrangeMap.getOverallDofs(feSpaces),
lagrangeMap[feSpace].nOverallDofs * nComponents, localDofMap.getOverallDofs(feSpaces),
localDofMap[feSpace].nOverallDofs * nComponents,
2, PETSC_NULL, 2, PETSC_NULL, 2, PETSC_NULL, 2, PETSC_NULL,
&mat_lagrange); &mat_lagrange);
...@@ -964,12 +963,13 @@ namespace AMDiS { ...@@ -964,12 +963,13 @@ namespace AMDiS {
// === Create matrices for the FETI-DP method. === // === Create matrices for the FETI-DP method. ===
int nRowsRankB = localDofMap[feSpace].nRankDofs * nComponents; int nRowsRankB = localDofMap.getRankDofs(feSpaces);
int nRowsOverallB = localDofMap[feSpace].nOverallDofs * nComponents; int nRowsOverallB = localDofMap.getOverallDofs(feSpaces);
int nRowsRankPrimal = primalDofMap[feSpace].nRankDofs * nComponents; int nRowsRankPrimal = primalDofMap.getRankDofs(feSpaces);
int nRowsOverallPrimal = primalDofMap[feSpace].nOverallDofs * nComponents; int nRowsOverallPrimal = primalDofMap.getOverallDofs(feSpaces);
int nRowsInterior = nLocalInterior * nComponents; int nRowsDual = dualDofMap.getRankDofs(feSpaces);
int nRowsDual = dualDofMap[feSpace].size() * nComponents; int nRowsInterior = nRowsRankB - nRowsDual;
MatCreateSeqAIJ(PETSC_COMM_SELF, nRowsRankB, nRowsRankB, 30, PETSC_NULL, MatCreateSeqAIJ(PETSC_COMM_SELF, nRowsRankB, nRowsRankB, 30, PETSC_NULL,
&mat_b_b); &mat_b_b);
...@@ -1087,7 +1087,8 @@ namespace AMDiS { ...@@ -1087,7 +1087,8 @@ namespace AMDiS {
// Column is not a primal variable. // Column is not a primal variable.
int colIndex = int colIndex =
(localDofMap[feSpace][col(*icursor)] + localDofMap[feSpace].rStartDofs) * nComponents + j; (localDofMap[feSpace][col(*icursor)] +
localDofMap[feSpace].rStartDofs) * nComponents + j;
if (rowPrimal) { if (rowPrimal) {
colsOther.push_back(colIndex); colsOther.push_back(colIndex);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment