-
Thomas Witkowski authoredThomas Witkowski authored
AdaptInfo.cc 4.36 KiB
//
// 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);
}
}
}