From cb2326f07262d4739f1c3fb9fa323dc0f47a1b7a Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Thu, 8 Apr 2010 14:07:08 +0000 Subject: [PATCH] Merge between two AMDiS version, no real changes. --- AMDiS/src/Assembler.cc | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc index dfc72f4b..03e16e3e 100644 --- a/AMDiS/src/Assembler.cc +++ b/AMDiS/src/Assembler.cc @@ -120,23 +120,39 @@ namespace AMDiS { } if (firstOrderAssemblerGrdPsi) { + firstOrderAssemblerGrdPsi->calculateElementMatrix(smallElInfo, mat); + if (largeElInfo == colElInfo) { - ERROR_EXIT("123 Not yet implemented for first order assembler!\n"); - } else { - firstOrderAssemblerGrdPsi->calculateElementMatrix(smallElInfo, mat); + ElementMatrix &m = + smallElInfo->getSubElemGradCoordsMat(rowFESpace->getBasisFcts()->getDegree()); + tmpMat = m * mat; + } else { ElementMatrix &m = smallElInfo->getSubElemCoordsMat(rowFESpace->getBasisFcts()->getDegree()); tmpMat = mat * trans(m); - - mat = tmpMat; } + + mat = tmpMat; } if (firstOrderAssemblerGrdPhi) { - ERROR_EXIT("Not yet implemented for first order assembler!\n"); firstOrderAssemblerGrdPhi->calculateElementMatrix(smallElInfo, mat); + + if (largeElInfo == rowElInfo) { + ElementMatrix &m = + smallElInfo->getSubElemGradCoordsMat(rowFESpace->getBasisFcts()->getDegree()); + + tmpMat = mat * trans(m); + } else { + ElementMatrix &m = + smallElInfo->getSubElemCoordsMat(rowFESpace->getBasisFcts()->getDegree()); + + tmpMat = m * mat; + } + + mat = tmpMat; } if (zeroOrderAssembler) { -- GitLab