diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc index 28da4775bbf5d829ae32edb488e42ca56f1e7da8..09b65c9bc913c3b228e7f09b20ab104895ca6b37 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; }