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