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