// // Software License for AMDiS // // Copyright (c) 2010 Dresden University of Technology // All rights reserved. // Authors: Simon Vey, Thomas Witkowski et al. // // This file is part of AMDiS // // See also license.opensource.txt in the distribution. #include "boost/lexical_cast.hpp" #include "AdaptInfo.h" #include "Serializer.h" namespace AMDiS { using boost::lexical_cast; void AdaptInfo::setScalContents(int newSize) { int oldSize = static_cast<int>(scalContents.size()); if (newSize > oldSize) { scalContents.resize(newSize); for (int i = oldSize; i < newSize; i++) scalContents[i] = new ScalContent(name + "[" + lexical_cast<std::string>(i) + "]"); } } void AdaptInfo::serialize(std::ostream& out) { out << name << "\n"; SerUtil::serialize(out, maxSpaceIteration); SerUtil::serialize(out, spaceIteration); SerUtil::serialize(out, timestepIteration); SerUtil::serialize(out, maxTimestepIteration); SerUtil::serialize(out, timeIteration); SerUtil::serialize(out, maxTimeIteration); SerUtil::serialize(out, time); SerUtil::serialize(out, startTime); SerUtil::serialize(out, endTime); SerUtil::serialize(out, timestep); SerUtil::serialize(out, minTimestep); SerUtil::serialize(out, maxTimestep); SerUtil::serialize(out, timestepNumber); SerUtil::serialize(out, nTimesteps); SerUtil::serialize(out, solverIterations); SerUtil::serialize(out, maxSolverIterations); SerUtil::serialize(out, solverTolerance); SerUtil::serialize(out, solverResidual); unsigned int size = scalContents.size(); SerUtil::serialize(out, size); for (unsigned int i = 0; i < size; i++) { SerUtil::serialize(out, scalContents[i]->est_sum); SerUtil::serialize(out, scalContents[i]->est_t_sum); SerUtil::serialize(out, scalContents[i]->est_max); SerUtil::serialize(out, scalContents[i]->est_t_max); SerUtil::serialize(out, scalContents[i]->fac_max); SerUtil::serialize(out, scalContents[i]->fac_sum); SerUtil::serialize(out, scalContents[i]->spaceTolerance); SerUtil::serialize(out, scalContents[i]->timeTolerance); SerUtil::serialize(out, scalContents[i]->timeErrLow); SerUtil::serialize(out, scalContents[i]->coarsenAllowed); SerUtil::serialize(out, scalContents[i]->refinementAllowed); SerUtil::serialize(out, scalContents[i]->refineBisections); SerUtil::serialize(out, scalContents[i]->coarseBisections); } } void AdaptInfo::deserialize(std::istream& in) { in >> name; in.get(); SerUtil::deserialize(in, maxSpaceIteration); SerUtil::deserialize(in, spaceIteration); SerUtil::deserialize(in, timestepIteration); SerUtil::deserialize(in, maxTimestepIteration); SerUtil::deserialize(in, timeIteration); SerUtil::deserialize(in, maxTimeIteration); SerUtil::deserialize(in, time); SerUtil::deserialize(in, startTime); SerUtil::deserialize(in, endTime); SerUtil::deserialize(in, timestep); SerUtil::deserialize(in, minTimestep); SerUtil::deserialize(in, maxTimestep); SerUtil::deserialize(in, timestepNumber); SerUtil::deserialize(in, nTimesteps); SerUtil::deserialize(in, solverIterations); SerUtil::deserialize(in, maxSolverIterations); SerUtil::deserialize(in, solverTolerance); SerUtil::deserialize(in, solverResidual); int size = 0; SerUtil::deserialize(in, size); scalContents.resize(size); for (int i = 0; i < size; i++) { scalContents[i] = new ScalContent(name + "[" + lexical_cast<std::string>(i) + "]"); SerUtil::deserialize(in, scalContents[i]->est_sum); SerUtil::deserialize(in, scalContents[i]->est_t_sum); SerUtil::deserialize(in, scalContents[i]->est_max); SerUtil::deserialize(in, scalContents[i]->est_t_max); SerUtil::deserialize(in, scalContents[i]->fac_max); SerUtil::deserialize(in, scalContents[i]->fac_sum); SerUtil::deserialize(in, scalContents[i]->spaceTolerance); SerUtil::deserialize(in, scalContents[i]->timeTolerance); SerUtil::deserialize(in, scalContents[i]->timeErrLow); SerUtil::deserialize(in, scalContents[i]->coarsenAllowed); SerUtil::deserialize(in, scalContents[i]->refinementAllowed); SerUtil::deserialize(in, scalContents[i]->refineBisections); SerUtil::deserialize(in, scalContents[i]->coarseBisections); } } }