From 26882a5f1913e91b53c9aacf59e32ebc5e57cc29 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Tue, 9 Sep 2008 15:18:06 +0000 Subject: [PATCH] * Bug fix in AdaptInstationary * Added some headers to AMDiS.h --- AMDiS/src/AMDiS.h | 1 + AMDiS/src/AdaptInstationary.cc | 62 ++++++++++++++++++++-------------- AMDiS/src/Traverse.cc | 7 ++-- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/AMDiS/src/AMDiS.h b/AMDiS/src/AMDiS.h index 8af56d6f..0b08c511 100644 --- a/AMDiS/src/AMDiS.h +++ b/AMDiS/src/AMDiS.h @@ -94,6 +94,7 @@ #include "Traverse.h" #include "Triangle.h" #include "ValueWriter.h" +#include "VtkWriter.h" #include "demangle.h" #include "parareal/ProblemBase.h" #include "parareal/AdaptParaReal.h" diff --git a/AMDiS/src/AdaptInstationary.cc b/AMDiS/src/AdaptInstationary.cc index b989a83f..eca9783c 100644 --- a/AMDiS/src/AdaptInstationary.cc +++ b/AMDiS/src/AdaptInstationary.cc @@ -113,37 +113,49 @@ namespace AMDiS { adaptInfo_->incTimestepIteration(); if (!fixedTimestep_ && - !adaptInfo_->timeToleranceReached() && - !adaptInfo_->getTimestep() <= adaptInfo_->getMinTimestep()) - { - adaptInfo_->setTime(adaptInfo_->getTime() - adaptInfo_->getTimestep()); - adaptInfo_->setTimestep(adaptInfo_->getTimestep() * time_delta_1); - continue; - } + !adaptInfo_->timeToleranceReached() && + !adaptInfo_->getTimestep() <= adaptInfo_->getMinTimestep()) { + + adaptInfo_->setTime(adaptInfo_->getTime() - adaptInfo_->getTimestep()); + adaptInfo_->setTimestep(adaptInfo_->getTimestep() * time_delta_1); + continue; + } adaptInfo_->setSpaceIteration(0); + + + /* === Do only space iterations only if the maximum is higher than 0. === */ + + if (adaptInfo_->getMaxSpaceIteration() > 0) { - do { - problemIteration_->beginIteration(adaptInfo_); - - if (problemIteration_->oneIteration(adaptInfo_, FULL_ITERATION)) { - if (!fixedTimestep_ && - !adaptInfo_->timeToleranceReached() && - !adaptInfo_->getTimestep() <= adaptInfo_->getMinTimestep()) - { - adaptInfo_->setTime(adaptInfo_->getTime() - adaptInfo_->getTimestep()); - adaptInfo_->setTimestep(adaptInfo_->getTimestep() * time_delta_1); - problemIteration_->endIteration(adaptInfo_); - adaptInfo_->incSpaceIteration(); - break; - } - } + /* === Space iterations === */ + do { + problemIteration_->beginIteration(adaptInfo_); + + if (problemIteration_->oneIteration(adaptInfo_, FULL_ITERATION)) { + if (!fixedTimestep_ && + !adaptInfo_->timeToleranceReached() && + !adaptInfo_->getTimestep() <= adaptInfo_->getMinTimestep()) + { + adaptInfo_->setTime(adaptInfo_->getTime() - adaptInfo_->getTimestep()); + adaptInfo_->setTimestep(adaptInfo_->getTimestep() * time_delta_1); + problemIteration_->endIteration(adaptInfo_); + adaptInfo_->incSpaceIteration(); + break; + } + } + + adaptInfo_->incSpaceIteration(); + problemIteration_->endIteration(adaptInfo_); + + } while(!adaptInfo_->spaceToleranceReached() && + adaptInfo_->getSpaceIteration() <= adaptInfo_->getMaxSpaceIteration()); - adaptInfo_->incSpaceIteration(); + } else { problemIteration_->endIteration(adaptInfo_); + } + - } while(!adaptInfo_->spaceToleranceReached() && - adaptInfo_->getSpaceIteration() <= adaptInfo_->getMaxSpaceIteration()); } while(!adaptInfo_->timeToleranceReached() && !adaptInfo_->getTimestep() <= adaptInfo_->getMinTimestep() && adaptInfo_->getTimestepIteration() <= adaptInfo_->getMaxTimestepIteration()); diff --git a/AMDiS/src/Traverse.cc b/AMDiS/src/Traverse.cc index b54d11d5..6d1c6170 100644 --- a/AMDiS/src/Traverse.cc +++ b/AMDiS/src/Traverse.cc @@ -869,10 +869,11 @@ namespace AMDiS { ElInfo* TraverseStack::traverseNeighbour2d(ElInfo* elinfo_old, int neighbour) { - FUNCNAME("TraverseStack::traverseNeighbour2d"); - Triangle *el, *el2, *sav_el; + FUNCNAME("TraverseStack::traverseNeighbour2d()"); + + Triangle *el, *el2, *sav_el; ElInfo *old_elinfo, *elinfo, *elinfo2; - int i, nb, opp_vertex, stack2_used; + int i, nb, opp_vertex, stack2_used; static int coarse_nb[3][3] = {{-2,-2,-2}, {2,-1,1}, {-1,2,0}}; /* father.neigh[coarse_nb[i][j]] == child[i-1].neigh[j] */ -- GitLab