From 187b792282f42f88e4fe052dc7e0defcefc3e007 Mon Sep 17 00:00:00 2001
From: Thomas Witkowski <thomas.witkowski@gmx.de>
Date: Tue, 15 Nov 2011 12:13:27 +0000
Subject: [PATCH] FETI-DP and Rosenbrock methods work now together.

---
 AMDiS/src/io/FileWriter.cc                    |  1 -
 AMDiS/src/io/VtkWriter.cc                     |  2 +-
 AMDiS/src/parallel/PetscProblemStat.cc        |  1 +
 AMDiS/src/parallel/PetscSolverFeti.cc         |  4 +++-
 AMDiS/src/time/RosenbrockAdaptInstationary.cc |  7 ++++++-
 AMDiS/src/time/RosenbrockStationary.cc        | 10 ++++++++--
 6 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/AMDiS/src/io/FileWriter.cc b/AMDiS/src/io/FileWriter.cc
index 2b1feedc..4af3c5a9 100644
--- a/AMDiS/src/io/FileWriter.cc
+++ b/AMDiS/src/io/FileWriter.cc
@@ -12,7 +12,6 @@
 
 #include "boost/lexical_cast.hpp"
 #include "FileWriter.h"
-#include "SystemVector.h"
 #include "Initfile.h"
 #include "ValueWriter.h"
 #include "MacroWriter.h"
diff --git a/AMDiS/src/io/VtkWriter.cc b/AMDiS/src/io/VtkWriter.cc
index 2b292a4d..d37d146c 100644
--- a/AMDiS/src/io/VtkWriter.cc
+++ b/AMDiS/src/io/VtkWriter.cc
@@ -160,7 +160,7 @@ namespace AMDiS {
     DataCollector dc(values->getFeSpace(), values);
     std::vector<DataCollector*> dcList(0);
     dcList.push_back(&dc);
-    writeFile(dcList,filename,writeParallel);
+    writeFile(dcList, filename, writeParallel);
   }
 
 
diff --git a/AMDiS/src/parallel/PetscProblemStat.cc b/AMDiS/src/parallel/PetscProblemStat.cc
index 89eb3f7d..0bde5bed 100644
--- a/AMDiS/src/parallel/PetscProblemStat.cc
+++ b/AMDiS/src/parallel/PetscProblemStat.cc
@@ -13,6 +13,7 @@
 #include <vector>
 #include <set>
 
+#include "io/VtkWriter.h"
 #include "parallel/PetscProblemStat.h"
 #include "parallel/PetscSolver.h"
 #include "parallel/MpiHelper.h"
diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc
index 222af4d6..7930f725 100644
--- a/AMDiS/src/parallel/PetscSolverFeti.cc
+++ b/AMDiS/src/parallel/PetscSolverFeti.cc
@@ -1500,7 +1500,9 @@ namespace AMDiS {
       solveFetiMatrix(vec);
     } else {
       solveReducedFetiMatrix(vec);
-    }      
+    } 
+
+    MeshDistributor::globalMeshDistributor->synchVector(vec);
   }
 
 
diff --git a/AMDiS/src/time/RosenbrockAdaptInstationary.cc b/AMDiS/src/time/RosenbrockAdaptInstationary.cc
index 262521ed..c0588680 100644
--- a/AMDiS/src/time/RosenbrockAdaptInstationary.cc
+++ b/AMDiS/src/time/RosenbrockAdaptInstationary.cc
@@ -35,6 +35,7 @@ namespace AMDiS {
     initConstructor(problemStat);
   }
 
+
   RosenbrockAdaptInstationary::RosenbrockAdaptInstationary(std::string name, 
 							   RosenbrockStationary &problemStat,
 							   AdaptInfo &info,
@@ -54,6 +55,7 @@ namespace AMDiS {
     initConstructor(&problemStat);
   }
 
+
   void RosenbrockAdaptInstationary::initConstructor(RosenbrockStationary *problemStat)
   {
     std::string str;
@@ -73,6 +75,7 @@ namespace AMDiS {
     problemStat->setTau(&tau);
   }
 
+
   void RosenbrockAdaptInstationary::oneTimestep()
   {
     FUNCNAME("RosenbrockAdaptInstationary::oneTimestep()");
@@ -162,7 +165,7 @@ namespace AMDiS {
 	  INFO(info, 6)("time estimate for component %d = %e\n", 
 			i, adaptInfo->getTimeEstSum(i));
 
-        if(errorEst > timeTol)
+        if (errorEst > timeTol)
 	  WARNING("Accepted timestep but tolerance not reached \n" );
 
       } else {
@@ -192,6 +195,8 @@ namespace AMDiS {
 
     adaptInfo->setLastProcessedTimestep(adaptInfo->getTimestep());
     adaptInfo->incTimestepNumber();
+
+    MSG("ONE TIMESTEP!\n");
   }
 
 }
diff --git a/AMDiS/src/time/RosenbrockStationary.cc b/AMDiS/src/time/RosenbrockStationary.cc
index 65241ea9..811b6618 100644
--- a/AMDiS/src/time/RosenbrockStationary.cc
+++ b/AMDiS/src/time/RosenbrockStationary.cc
@@ -17,6 +17,10 @@
 #include "OEMSolver.h"
 #include "Debug.h"
 
+#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
+#include "parallel/MeshDistributor.h"
+#endif
+
 namespace AMDiS {
 
   void RosenbrockStationary::acceptTimestep()
@@ -25,6 +29,7 @@ namespace AMDiS {
     *unVec = *newUn;
   }
 
+
   void RosenbrockStationary::init()
   {
     stageSolution = new SystemVector(*solution);
@@ -59,7 +64,7 @@ namespace AMDiS {
     
     *newUn = *unVec;    
     *lowSol = *unVec;
-    
+
     for (int i = 0; i < rm->getStages(); i++) {      
       *stageSolution = *unVec;
       for (int j = 0; j < i; j++) {
@@ -79,7 +84,7 @@ namespace AMDiS {
 	*tmp *= (rm->getC(i, j) / *tauPtr);
 	*timeRhsVec += *tmp;
       }
-      
+
       ProblemStat::buildAfterCoarsen(adaptInfo, flag, (i == 0), asmVector);
       ProblemStat::solve(adaptInfo, i == 0, i + 1 < rm->getStages());
 
@@ -87,6 +92,7 @@ namespace AMDiS {
       
       *tmp = *solution;
       *tmp *= rm->getM1(i);
+
       *newUn += *tmp;
 
       *tmp = *solution;
-- 
GitLab