AdaptInfo.cc 3.86 KB
Newer Older
1
2
3
#include "boost/lexical_cast.hpp"
#include "AdaptInfo.h"
#include "Serializer.h"
4
5
6

namespace AMDiS {

7
8
9
10
  using boost::lexical_cast;

  void AdaptInfo::setScalContents(int newSize) 
  {
11
12
13
14
15
    int oldSize = scalContents.getSize();

    if (newSize > oldSize) { 
      scalContents.resize(newSize);

16
17
18
      for (int i = oldSize; i < newSize; i++)
	scalContents[i] = 
	  new ScalContent(name + "[" + lexical_cast<std::string>(i) + "]"); 
19
20
21
    }
  }

22
23
  void AdaptInfo::serialize(std::ostream& out) 
  {
Thomas Witkowski's avatar
Thomas Witkowski committed
24
    out << name << "\n";
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    
    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);

45
    int size = scalContents.getSize();
46
    SerUtil::serialize(out, size);
47
    for (int i = 0; i < size; i++) {
48
49
50
51
52
53
54
55
56
57
58
      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]->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);
59
60
61
    }
  }

62
63
  void AdaptInfo::deserialize(std::istream& in) 
  {
64
    in >> name;
65
    in.get();
66

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    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);
87
88
    scalContents.resize(size);    
    for (int i = 0; i < size; i++) {
89
90
91
92
93
94
95
96
97
98
99
100
101
102
      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]->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);
103
104
105
106
    }    
  }

}