Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_SolutionStateMetaData_impl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Tempus_SolutionStateMetaData_impl_hpp
10 #define Tempus_SolutionStateMetaData_impl_hpp
11 
12 
13 namespace Tempus {
14 
15 
16 template<class Scalar>
18  :time_ (0.0),
19  iStep_ (0),
20  dt_ (0.0),
21  errorAbs_ (0.0),
22  errorRel_ (0.0),
23  errorRelNm1_ (0.0),
24  errorRelNm2_ (0.0),
25  order_ (1),
26  nFailures_ (0),
27  nRunningFailures_(0),
28  nConsecutiveFailures_(0),
29  tolRel_ (1.0e-02),
30  tolAbs_ (0.0),
31  xNormL2_ (0.0),
32  dxNormL2Rel_ (0.0),
33  dxNormL2Abs_ (0.0),
34  computeNorms_ (false),
35  solutionStatus_(WORKING),
36  output_ (false),
37  outputScreen_ (false),
38  isSynced_ (true),
39  isInterpolated_(false),
40  accuracy_ (0.0)
41 {}
42 
43 template<class Scalar>
45  const Scalar time,
46  const int iStep,
47  const Scalar dt,
48  const Scalar errorAbs,
49  const Scalar errorRel,
50  const Scalar errorRelNm1,
51  const Scalar errorRelNm2,
52  const int order,
53  const int nFailures,
54  const int nRunningFailures,
55  const int nConsecutiveFailures,
56  const Scalar tolRel,
57  const Scalar tolAbs,
58  const Scalar xNormL2,
59  const Scalar dxNormL2Rel,
60  const Scalar dxNormL2Abs,
61  const bool computeNorms,
62  const Status solutionStatus,
63  const bool output,
64  const bool outputScreen,
65  const bool isSynced,
66  const bool isInterpolated,
67  const Scalar accuracy)
68  :time_ (time),
69  iStep_ (iStep),
70  dt_ (dt),
71  errorAbs_ (errorAbs),
72  errorRel_ (errorRel),
73  errorRelNm1_ (errorRelNm1),
74  errorRelNm2_ (errorRelNm2),
75  order_ (order),
76  nFailures_ (nFailures),
77  nRunningFailures_(nRunningFailures),
78  nConsecutiveFailures_(nConsecutiveFailures),
79  tolRel_ (tolRel),
80  tolAbs_ (tolAbs),
81  xNormL2_ (xNormL2),
82  dxNormL2Rel_ (dxNormL2Rel),
83  dxNormL2Abs_ (dxNormL2Abs),
84  computeNorms_ (computeNorms),
85  solutionStatus_(solutionStatus),
86  output_ (output),
87  outputScreen_ (outputScreen),
88  isSynced_ (isSynced),
89  isInterpolated_(isInterpolated),
90  accuracy_ (accuracy)
91 {}
92 
93 template<class Scalar>
95  :time_ (ssmd.time_),
96  iStep_ (ssmd.iStep_),
97  dt_ (ssmd.dt_),
98  errorAbs_ (ssmd.errorAbs_),
99  errorRel_ (ssmd.errorRel_),
100  errorRelNm1_ (ssmd.errorRelNm1_),
101  errorRelNm2_ (ssmd.errorRelNm2_),
102  order_ (ssmd.order_),
103  nFailures_ (ssmd.nFailures_),
104  nRunningFailures_(ssmd.nRunningFailures_),
105  nConsecutiveFailures_(ssmd.nConsecutiveFailures_),
106  tolRel_ (ssmd.tolRel_),
107  tolAbs_ (ssmd.tolAbs_),
108  dxNormL2Rel_ (ssmd.dxNormL2Rel_),
109  dxNormL2Abs_ (ssmd.dxNormL2Abs_),
110  computeNorms_ (ssmd.computeNorms_),
111  solutionStatus_(ssmd.solutionStatus_),
112  output_ (ssmd.output_),
113  outputScreen_ (ssmd.outputScreen_),
114  isSynced_ (ssmd.isSynced_),
115  isInterpolated_(ssmd.isInterpolated_),
116  accuracy_ (ssmd.accuracy_)
117 {}
118 
119 
120 template<class Scalar>
122 {
125  time_,
126  iStep_,
127  dt_,
128  errorAbs_,
129  errorRel_,
130  errorRelNm1_,
131  errorRelNm2_,
132  order_,
133  nFailures_,
134  nRunningFailures_,
135  nConsecutiveFailures_,
136  tolRel_,
137  tolAbs_,
138  xNormL2_,
139  dxNormL2Rel_,
140  dxNormL2Abs_,
141  computeNorms_,
142  solutionStatus_,
143  output_,
144  outputScreen_,
145  isSynced_,
146  isInterpolated_,
147  accuracy_));
148 
149  return md;
150 }
151 
152 
153 template<class Scalar>
156 {
157  time_ = ssmd->time_;
158  iStep_ = ssmd->iStep_;
159  dt_ = ssmd->dt_;
160  errorAbs_ = ssmd->errorAbs_;
161  errorRel_ = ssmd->errorRel_;
162  errorRelNm1_ = ssmd->errorRelNm1_;
163  errorRelNm2_ = ssmd->errorRelNm2_;
164  order_ = ssmd->order_;
165  nFailures_ = ssmd->nFailures_;
166  nRunningFailures_= ssmd->nRunningFailures_;
167  nConsecutiveFailures_ = ssmd->nConsecutiveFailures_;
168  tolRel_ = ssmd->tolRel_,
169  tolAbs_ = ssmd->tolAbs_,
170  xNormL2_ = ssmd->xNormL2_,
171  dxNormL2Rel_ = ssmd->dxNormL2Rel_,
172  dxNormL2Abs_ = ssmd->dxNormL2Abs_,
173  computeNorms_ = ssmd->computeNorms_,
174  solutionStatus_ = ssmd->solutionStatus_;
175  output_ = ssmd->output_;
176  outputScreen_ = ssmd->outputScreen_;
177  isSynced_ = ssmd->isSynced_;
178  isInterpolated_ = ssmd->isInterpolated_;
179  accuracy_ = ssmd->accuracy_;
180 }
181 
182 
183 template<class Scalar>
185 {
186  std::string name = "Tempus::SolutionStateMetaData";
187  return(name);
188 }
189 
190 
191 template<class Scalar>
194  const Teuchos::EVerbosityLevel verbLevel) const
195 {
196  auto l_out = Teuchos::fancyOStream( out.getOStream() );
197  Teuchos::OSTab ostab(*l_out, 2, this->description());
198  l_out->setOutputToRootOnly(0);
199 
200  *l_out << "\n--- " << this->description() << " ---" <<std::endl;
201 
202  if (verbLevel >= Teuchos::VERB_MEDIUM) {
203  *l_out << " time = " << time_ << std::endl
204  << " iStep = " << iStep_ << std::endl
205  << " dt = " << dt_ << std::endl
206  << " errorAbs = " << errorAbs_ << std::endl
207  << " errorRel = " << errorRel_ << std::endl
208  << " errorRelNm1 = " << errorRelNm1_ << std::endl
209  << " errorRelNm2 = " << errorRelNm2_ << std::endl
210  << " order = " << order_ << std::endl
211  << " nFailures = " << nFailures_ << std::endl
212  << " nRunningFailures = " << nRunningFailures_<< std::endl
213  << " nConsecutiveFailures = " << nConsecutiveFailures_ << std::endl
214  << " tolRel = " << tolRel_ << std::endl
215  << " tolAbs = " << tolAbs_ << std::endl
216  << " xNormL2 = " << xNormL2_ << std::endl
217  << " dxNormL2Rel = " << dxNormL2Rel_ << std::endl
218  << " dxNormL2Abs = " << dxNormL2Abs_ << std::endl
219  << " computeNorms = " << computeNorms_ << std::endl
220  << " solutionStatus = " << toString(solutionStatus_) << std::endl
221  << " output = " << output_ << std::endl
222  << " outputScreen = " << outputScreen_ << std::endl
223  << " isSynced = " << isSynced_ << std::endl
224  << " isInterpolated = " << isInterpolated_ << std::endl
225  << " accuracy = " << accuracy_ << std::endl;
226  }
227  *l_out << std::string(this->description().length()+8, '-') <<std::endl;
228 }
229 
230 } // namespace Tempus
231 #endif // Tempus_SolutionStateMetaData_impl_hpp
Teuchos::RCP< SolutionStateMetaData< Scalar > > clone() const
Clone constructor.
const std::string toString(const Status status)
Convert Status to string.
void copy(const Teuchos::RCP< const SolutionStateMetaData< Scalar > > &ssmd)
This is a deep copy.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Status
Status for the Integrator, the Stepper and the SolutionState.
RCP< std::basic_ostream< char_type, traits_type > > getOStream()