From fc619e37a5661d42a7f7cdbb22e2607dab6df0eb Mon Sep 17 00:00:00 2001
From: Siqi Ling <lsq0473@gmail.com>
Date: Tue, 4 Nov 2014 14:13:54 +0000
Subject: [PATCH] change in function matvecassemble to get rid of: Da stimmt
 was nicht

---
 AMDiS/src/Assembler.cc | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc
index aa9e9d44..b72b39b8 100644
--- a/AMDiS/src/Assembler.cc
+++ b/AMDiS/src/Assembler.cc
@@ -341,19 +341,21 @@ namespace AMDiS {
     TEST_EXIT(rowFeSpace->getBasisFcts() == colFeSpace->getBasisFcts())
       ("Works only for equal basis functions for different components!\n");
 
-    TEST_EXIT(operat->uhOld->getFeSpace()->getMesh() == auxElInfo->getMesh())
-      ("Da stimmt was nicht!\n");
-
-    Element *mainEl = mainElInfo->getElement(); 
-    Element *auxEl = auxElInfo->getElement();
-
+    Element *usedEl = nullptr;
+    if (operat->uhOld->getFeSpace()->getMesh() == auxElInfo->getMesh())
+      usedEl = auxElInfo->getElement(); 
+    else if (operat->uhOld->getFeSpace()->getMesh() == mainElInfo->getMesh())
+      usedEl = mainElInfo->getElement();
+    else
+      ERROR("Mesh is incorrect.\n");
+    
     const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
     int nBasFcts = basFcts->getNumber();
     ElementVector uhOldLoc(nBasFcts);
 
-    operat->uhOld->getLocalVector(auxEl, uhOldLoc);
+    operat->uhOld->getLocalVector(usedEl, uhOldLoc);
 
-    if (mainEl != lastMatEl) {
+    if (mainElInfo->getElement() != lastMatEl) {
       set_to_zero(elementMatrix);
       calculateElementMatrix(mainElInfo, auxElInfo, smallElInfo, largeElInfo, 
 			     false, elementMatrix);    
-- 
GitLab