Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
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
13namespace Tempus {
14
15
16template<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),
29 tolRel_ (1.0e-02),
30 tolAbs_ (0.0),
31 xNormL2_ (0.0),
32 dxNormL2Rel_ (0.0),
33 dxNormL2Abs_ (0.0),
34 computeNorms_ (false),
36 output_ (false),
37 outputScreen_ (false),
38 isSynced_ (true),
39 isInterpolated_(false),
40 accuracy_ (0.0)
41{}
42
43template<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
93template<class Scalar>
118
119
120template<class Scalar>
121Teuchos::RCP<SolutionStateMetaData<Scalar> > SolutionStateMetaData<Scalar>::clone() const
122{
123 Teuchos::RCP<SolutionStateMetaData<Scalar> > md =
125 time_,
126 iStep_,
127 dt_,
128 errorAbs_,
129 errorRel_,
132 order_,
136 tolRel_,
137 tolAbs_,
138 xNormL2_,
143 output_,
145 isSynced_,
147 accuracy_));
148
149 return md;
150}
151
152
153template<class Scalar>
155copy(const Teuchos::RCP<const SolutionStateMetaData<Scalar> >& ssmd)
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
183template<class Scalar>
185{
186 std::string name = "Tempus::SolutionStateMetaData";
187 return(name);
188}
189
190
191template<class Scalar>
193 Teuchos::FancyOStream &out,
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.
Scalar errorRel_
Relative local truncation error (@ t_n).
Status solutionStatus_
The solutionStatus is used to indicate.
Scalar errorRelNm2_
Relative local truncation error (@ t_{n-2}).
Scalar dxNormL2Abs_
Absolute L2-Norm of the change in solution, ||x_i-x_{i-1}||.
void copy(const Teuchos::RCP< const SolutionStateMetaData< Scalar > > &ssmd)
This is a deep copy.
bool isInterpolated_
F - soln is time integrated; T - soln is interpolated.
Scalar accuracy_
Interpolation accuracy of solution.
int iStep_
Time step index for this solution.
bool isSynced_
True - all of soln (x, xDot, xDotDot) is at the same time level. False - solution is at different tim...
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
int nRunningFailures_
Total number of running stepper failures.
Scalar errorAbs_
Absolute local truncation error (@ t_n).
int nConsecutiveFailures_
Consecutive number of stepper failures.
Scalar dxNormL2Rel_
Relative L2-Norm of the change in solution, ||x_i-x_{i-1}||/||x_{i-1}||.
bool computeNorms_
flag to compute norms of solution
bool output_
SolutionState should be or has been outputted.
Scalar errorRelNm1_
Relative local truncation error (@ t_{n-1}).
int nFailures_
Total number of stepper failures.
Status
Status for the Integrator, the Stepper and the SolutionState.
const std::string toString(const Status status)
Convert Status to string.