diff --git a/AMDiS/src/AdaptInfo.h b/AMDiS/src/AdaptInfo.h index feb90de9dbd6d283a1e363c7e5521a7e70649997..5c137b6c5b01800296aea149f597947ca8b7876d 100644 --- a/AMDiS/src/AdaptInfo.h +++ b/AMDiS/src/AdaptInfo.h @@ -169,7 +169,8 @@ namespace AMDiS { maxSolverIterations(0), solverTolerance(1e-8), solverResidual(0.0), - scalContents(size) + scalContents(size), + isDeserialized_(false) { GET_PARAMETER(0, name_ + "->start time", "%f", &startTime); time = startTime; @@ -675,6 +676,17 @@ namespace AMDiS { return solverResidual; }; + /** \brief + * Returns true, if the adaptive procedure was deserialized from a file. + */ + const bool isDeserialized() const { + return isDeserialized_; + } + + inline void setIsDeserialized(bool b) { + isDeserialized_ = b; + } + /** \brief * Creates new scalContents with the given size. */ @@ -782,6 +794,11 @@ namespace AMDiS { * Scalar adapt infos. */ Vector<ScalContent*> scalContents; + + /** \brief + * Is true, if the adaptive procedure was deserialized from a file. + */ + bool isDeserialized_; }; } diff --git a/AMDiS/src/AdaptInstationary.cc b/AMDiS/src/AdaptInstationary.cc index 0f19af914cd8559fdef1d4cb36db5bf6f74fdc0b..ff6fcae77d491652fa04034a3fd0f54e6d2f6c96 100644 --- a/AMDiS/src/AdaptInstationary.cc +++ b/AMDiS/src/AdaptInstationary.cc @@ -15,8 +15,7 @@ namespace AMDiS { AdaptInfo *initialInfo, time_t initialTimestamp) : AdaptBase(name, problemStat, info, problemInstat, initialInfo), - breakWhenStable(0), - isDeserialized_(false) + breakWhenStable(0) { FUNCNAME("AdaptInstationary::AdaptInstationary()"); @@ -43,7 +42,8 @@ namespace AMDiS { deserialize(in); in.close(); - isDeserialized_ = true; + info->setIsDeserialized(true); + initialInfo->setIsDeserialized(true); } else { int readSerialization = 0; int readSerializationWithAdaptInfo = 0; diff --git a/AMDiS/src/SystemVector.h b/AMDiS/src/SystemVector.h index 4b0ab3e158fb7d4706255aabab961e4629e86c31..5269f51114b1e54d9bc152f765b7a85e20ed6b44 100644 --- a/AMDiS/src/SystemVector.h +++ b/AMDiS/src/SystemVector.h @@ -70,11 +70,10 @@ namespace AMDiS { * Implementation of CreatorInterface::create(). */ SystemVector *create() { - int i; char number[10]; ::std::string numberedName; SystemVector *result = NEW SystemVector(name, feSpace, size); - for(i=0; i < size; i++) { + for (int i = 0; i < size; i++) { sprintf(number, "[%d]", i); numberedName = name + ::std::string(number); result->setDOFVector(i, NEW DOFVector<double>(feSpace[i], numberedName)); @@ -323,8 +322,8 @@ namespace AMDiS { * multiplication with scalar */ inline const SystemVector& operator*=(SystemVector& x, double d) { - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { *(x.getDOFVector(i)) *= d; } return x; @@ -337,8 +336,8 @@ namespace AMDiS { TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) ("invalid size\n"); double result = 0.0; - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { result += (*x.getDOFVector(i)) * (*y.getDOFVector(i)); }; return result; @@ -352,8 +351,8 @@ namespace AMDiS { { TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) ("invalid size\n"); - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { (*(x.getDOFVector(i))) += (*(y.getDOFVector(i))); } return x; @@ -367,8 +366,8 @@ namespace AMDiS { { TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) ("invalid size\n"); - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { (*(x.getDOFVector(i))) -= (*(y.getDOFVector(i))); } return x; @@ -379,8 +378,8 @@ namespace AMDiS { */ inline SystemVector operator*(SystemVector& x, double d) { SystemVector result = x; - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { (*(result.getDOFVector(i))) *= d; } return result; @@ -391,8 +390,8 @@ namespace AMDiS { */ inline SystemVector operator*(double d, SystemVector& x) { SystemVector result = x; - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { (*(result.getDOFVector(i))) *= d; } return result; @@ -407,8 +406,8 @@ namespace AMDiS { TEST_EXIT_DBG(x.getNumVectors() == y.getNumVectors()) ("invalid size\n"); SystemVector result = x; - int i, size = x.getNumVectors(); - for(i = 0; i < size; i++) { + int size = x.getNumVectors(); + for (int i = 0; i < size; i++) { (*(result.getDOFVector(i))) += (*(y.getDOFVector(i))); } return result; @@ -433,8 +432,8 @@ namespace AMDiS { */ inline double norm(SystemVector* x) { double result = 0.0; - int i, size = x->getNumVectors(); - for(i = 0; i < size; i++) { + int size = x->getNumVectors(); + for (int i = 0; i < size; i++) { result += x->getDOFVector(i)->squareNrm2(); } return sqrt(result); @@ -445,8 +444,8 @@ namespace AMDiS { */ inline double L2Norm(SystemVector* x) { double result = 0.0; - int i, size = x->getNumVectors(); - for(i = 0; i < size; i++) { + int size = x->getNumVectors(); + for (int i = 0; i < size; i++) { result += x->getDOFVector(i)->L2NormSquare(); } return sqrt(result); @@ -457,8 +456,8 @@ namespace AMDiS { */ inline double H1Norm(SystemVector* x) { double result = 0.0; - int i, size = x->getNumVectors(); - for(i = 0; i < size; i++) { + int size = x->getNumVectors(); + for (int i = 0; i < size; i++) { result += x->getDOFVector(i)->H1NormSquare(); } return sqrt(result);