Skip to content
Snippets Groups Projects
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);
    }    
  }

}