From 75249022083f0140c90042b9bc57de31a697d0f6 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Mon, 3 May 2010 13:12:46 +0000 Subject: [PATCH] Added some more features to multi mesh method. --- AMDiS/src/Assembler.cc | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc index 28da4775..09b65c9b 100644 --- a/AMDiS/src/Assembler.cc +++ b/AMDiS/src/Assembler.cc @@ -204,6 +204,7 @@ namespace AMDiS { } ElementVector& vec = rememberElVec ? elementVector : userVec; + if (operat->uhOld && remember) { matVecAssemble(elInfo, vec); if (rememberElVec) @@ -264,16 +265,25 @@ namespace AMDiS { return; } - ERROR_EXIT("Not yet implemented!\n"); + if (firstOrderAssemblerGrdPsi) { + ERROR_EXIT("Not yet implemented!\n"); + } + + if (zeroOrderAssembler) { + zeroOrderAssembler->calculateElementVector(smallElInfo, vec); + + if (smallElInfo != mainElInfo) { + ElementVector tmpVec(vec); + ElementMatrix &m = + smallElInfo->getSubElemCoordsMat(rowFESpace->getBasisFcts()->getDegree()); + + tmpVec = m * vec; + vec = tmpVec; + } + } -#if 0 - if (firstOrderAssemblerGrdPsi) - firstOrderAssemblerGrdPsi->calculateElementVector(elInfo, vec); - if (zeroOrderAssembler) - zeroOrderAssembler->calculateElementVector(elInfo, vec); if (rememberElVec) - axpy(factor, *elementVector, *userVec); -#endif + userVec += factor * elementVector; } -- GitLab