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),
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
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>
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
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_,
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
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.
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
Status
Status for the Integrator, the Stepper and the SolutionState.
const std::string toString(const Status status)
Convert Status to string.