diff --git a/AMDiS/src/AMDiS.h b/AMDiS/src/AMDiS.h index 8af56d6fee94741ed057c67b6ea1c8d3a83cacac..0b08c5117213e8a742e0064848faf48ef9f2874d 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 b989a83f225781ec3f332f6cff5760a4bb89b986..eca9783c979d80b317e4e0ab3282c0362ddc537e 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 b54d11d512942fc39d243c1da8766e14be329ba2..6d1c61701049a79cf0929660846287e21add1bea 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] */