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