Tempus  Version of the Day
Time Integration
Tempus_SolutionState_decl.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_SolutionState_decl_hpp
10 #define Tempus_SolutionState_decl_hpp
11 
12 #include "Teuchos_VerboseObject.hpp"
13 #include "Teuchos_Describable.hpp"
14 
15 #include "Thyra_VectorBase.hpp"
16 #include "Thyra_ModelEvaluator.hpp"
17 
18 #include "Tempus_config.hpp"
19 #include "Tempus_SolutionStateMetaData.hpp"
20 #include "Tempus_StepperState.hpp"
21 #include "Tempus_PhysicsState.hpp"
22 
23 
24 namespace Tempus {
25 
55 template<class Scalar>
57  public Teuchos::Describable,
58  public Teuchos::VerboseObject<Tempus::SolutionState<Scalar> >
59 {
60 public:
61 
67  SolutionState();
68 
69 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
71  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& x,
72  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xdot = Teuchos::null,
73  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xddot = Teuchos::null,
74  const Teuchos::RCP<StepperState<Scalar> >& stepperState = Teuchos::null,
75  const Teuchos::RCP<PhysicsState<Scalar> >& physicsState = Teuchos::null);
76 
78  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& x,
79  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xdot = Teuchos::null,
80  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xddot= Teuchos::null,
81  const Teuchos::RCP<const StepperState<Scalar> >& stepperSt = Teuchos::null,
82  const Teuchos::RCP<const PhysicsState<Scalar> >& physicsSt = Teuchos::null);
83 #endif
84 
86  const Teuchos::RCP<SolutionStateMetaData<Scalar> > ssmd,
87  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& x,
88  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xdot,
89  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xdotdot,
90  const Teuchos::RCP<StepperState<Scalar> >& stepperState,
91  const Teuchos::RCP<PhysicsState<Scalar> >& physicsState);
92 
94  const Teuchos::RCP<const SolutionStateMetaData<Scalar> > ssmd,
95  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& x,
96  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xdot,
97  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xdotdot,
98  const Teuchos::RCP<const StepperState<Scalar> >& stepperState,
99  const Teuchos::RCP<const PhysicsState<Scalar> >& physicsState);
100 
101 #ifndef TEMPUS_HIDE_DEPRECATED_CODE
103  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& model,
104  const Teuchos::RCP<StepperState<Scalar> >& stepperState = Teuchos::null,
105  const Teuchos::RCP<PhysicsState<Scalar> >& physicsState = Teuchos::null);
106 #endif
107 
110 
112  virtual Teuchos::RCP<SolutionState<Scalar> > clone() const;
113 
115  virtual void copy(const Teuchos::RCP<const SolutionState<Scalar> >& ss);
116 
118  virtual void copySolutionData(
119  const Teuchos::RCP<const SolutionState<Scalar> >& s);
120 
122  virtual ~SolutionState() {}
123 
125 
126  virtual Teuchos::RCP<const SolutionStateMetaData<Scalar> >
127  getMetaData() const { return metaData_; }
128  virtual Teuchos::RCP<SolutionStateMetaData<Scalar> > getMetaData()
129  { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
130  return metaData_nc_; }
131 
132  virtual Scalar getTime() const {return metaData_->getTime();}
133  virtual int getIndex() const {return metaData_->getIStep();}
134  virtual Scalar getTimeStep() const {return metaData_->getDt();}
135  virtual Scalar getErrorAbs() const {return metaData_->getErrorAbs();}
136  virtual Scalar getErrorRel() const {return metaData_->getErrorRel();}
137  virtual Scalar getErrorRelNm1() const {return metaData_->getErrorRelNm1();}
138  virtual Scalar getErrorRelNm2() const {return metaData_->getErrorRelNm2();}
139  virtual int getOrder() const {return metaData_->getOrder();}
140  virtual int getNFailures() const {return metaData_->getNFailures();}
141  virtual int getNRunningFailures() const {return metaData_->getNRunningFailures();}
142  virtual int getNConsecutiveFailures() const {return metaData_->getNConsecutiveFailures();}
143  virtual Scalar getTolAbs() const {return metaData_->getTolAbs();}
144  virtual Scalar getTolRel() const {return metaData_->getTolRel();}
145  virtual Scalar getXNormL2() const {return metaData_->getXNormL2();}
146  virtual Scalar getDxNormL2Abs() const {return metaData_->getDxNormL2Abs();}
147  virtual Scalar getDxNormL2Rel() const {return metaData_->getDxNormL2Rel();}
148  virtual bool getComputeNorms() const {return metaData_->getComputeNorms();}
149  virtual Status getSolutionStatus() const {return metaData_->getSolutionStatus();}
150  virtual bool getOutput() const {return metaData_->getOutput();}
151  virtual bool getOutputScreen() const {return metaData_->getOutputScreen();}
152  virtual bool getIsSynced() const {return metaData_->getIsSynced();}
153  virtual bool getIsInterpolated() const {return metaData_->getIsInterpolated();}
154  virtual bool getAccuracy() const {return metaData_->getAccuracy();}
156 
158 
159  virtual void setMetaData(
160  Teuchos::RCP<const SolutionStateMetaData<Scalar> > md)
161  { metaData_ = md; metaData_nc_ = Teuchos::null; }
162  virtual void setMetaData(Teuchos::RCP<SolutionStateMetaData<Scalar> > md)
163  { metaData_nc_ = md; metaData_ = metaData_nc_; }
164 
165  virtual void setTime(Scalar time) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
166  metaData_nc_->setTime(time);}
167  virtual void setIndex(Scalar index) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
168  metaData_nc_->setIStep(index);}
169  virtual void setTimeStep(Scalar dt) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
170  metaData_nc_->setDt(dt);}
171  virtual void setErrorAbs(Scalar errorAbs){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
172  metaData_nc_->setErrorAbs(errorAbs);}
173  virtual void setErrorRel(Scalar errorRel){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
174  metaData_nc_->setErrorRel(errorRel);}
175  virtual void setOrder(int order) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
176  metaData_nc_->setOrder(order); }
177 
178  virtual void setNFailures(int nFailures) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
179  metaData_nc_->setNFailures(nFailures); }
180  virtual void setNRunningFailures(int nFailures) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
181  metaData_nc_->setNRunningFailures(nFailures); }
182  virtual void setNConsecutiveFailures(int nConsecutiveFailures)
183  { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
184  metaData_nc_->setNConsecutiveFailures(nConsecutiveFailures); }
185  virtual void setTolRel (Scalar tolRel){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
186  metaData_nc_->setTolRel(tolRel); }
187  virtual void setTolAbs (Scalar tolAbs){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
188  metaData_nc_->setTolAbs(tolAbs); }
189 
190  virtual void setXNormL2 (Scalar xNormL2){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
191  metaData_nc_->setXNormL2(xNormL2); }
192  virtual void setDxNormL2Rel (Scalar dxNormL2Rel){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
193  metaData_nc_->setDxNormL2Rel(dxNormL2Rel); }
194  virtual void setDxNormL2Abs (Scalar dxNormL2Abs){ TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
195  metaData_nc_->setDxNormL2Abs(dxNormL2Abs); }
196  virtual void setComputeNorms(bool computeNorms) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
197  metaData_nc_->setComputeNorms(computeNorms); }
198 
199  virtual void setSolutionStatus(Status s) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
200  metaData_nc_->setSolutionStatus(s); }
201  virtual void setSolutionStatus(const Thyra::SolveStatus<Scalar> sStatus)
202  {
203  if (sStatus.solveStatus == Thyra::SOLVE_STATUS_CONVERGED )
204  metaData_nc_->setSolutionStatus(Status::PASSED);
205  else
206  metaData_nc_->setSolutionStatus(Status::FAILED);
207  }
208 
209  virtual void setOutput(bool output) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
210  metaData_nc_->setOutput(output); }
211  virtual void setOutputScreen(bool output) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
212  metaData_nc_->setOutputScreen(output); }
213  virtual void setIsSynced(bool isSynced) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
214  metaData_nc_->setIsSynced(isSynced); }
215  virtual void setIsInterpolated(bool isInterpolated) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
216  metaData_nc_->setIsInterpolated(isInterpolated); }
217  virtual void setAccuracy(bool accuracy) { TEUCHOS_ASSERT(metaData_nc_ != Teuchos::null);
218  metaData_nc_->setAccuracy(accuracy); }
220 
222 
223  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getX()
224  { TEUCHOS_ASSERT(x_nc_ != Teuchos::null);
225  return x_nc_; }
226  virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> > getX() const
227  { return x_; }
228  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getXDot()
229  { return xdot_nc_; }
230  virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> > getXDot() const
231  { return xdot_; }
232  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getXDotDot()
233  { return xdotdot_nc_; }
234  virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> > getXDotDot() const
235  { return xdotdot_; }
236 
237  virtual Teuchos::RCP<StepperState<Scalar> > getStepperState()
238  { TEUCHOS_ASSERT(stepperState_nc_ != Teuchos::null);
239  return stepperState_nc_; }
240  virtual Teuchos::RCP<const StepperState<Scalar> > getStepperState() const
241  { return stepperState_; }
242 
243  virtual Teuchos::RCP<PhysicsState<Scalar> > getPhysicsState()
244  { return physicsState_nc_; }
245  virtual Teuchos::RCP<const PhysicsState<Scalar> > getPhysicsState() const
246  { return physicsState_; }
248 
250 
251  virtual void setX(Teuchos::RCP<Thyra::VectorBase<Scalar> > x)
252  { x_nc_ = x; x_ = x; }
253  virtual void setX(Teuchos::RCP<const Thyra::VectorBase<Scalar> > x)
254  { x_nc_ = Teuchos::null; x_ = x; }
255  virtual void setXDot(Teuchos::RCP<Thyra::VectorBase<Scalar> > xdot)
256  { xdot_nc_ = xdot; xdot_ = xdot; }
257  virtual void setXDot(Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot)
258  { xdot_nc_ = Teuchos::null; xdot_ = xdot; }
259  virtual void setXDotDot(Teuchos::RCP<Thyra::VectorBase<Scalar> > xdotdot)
260  { xdotdot_nc_ = xdotdot; xdotdot_ = xdotdot; }
261  virtual void setXDotDot(Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdotdot)
262  { xdotdot_nc_ = Teuchos::null; xdotdot_ = xdotdot; }
263 
264  virtual void setStepperState(Teuchos::RCP<StepperState<Scalar> >& ss)
265  { stepperState_nc_ = ss; stepperState_ = ss; }
266  virtual void setStepperState(const Teuchos::RCP<StepperState<Scalar> >& ss)
267  { stepperState_nc_ = Teuchos::null; stepperState_ = ss; }
268 
269  virtual void setPhysicsState(Teuchos::RCP<PhysicsState<Scalar> >& ps)
270  { physicsState_nc_ = ps; physicsState_ = ps; }
271  virtual void setPhysicsState(const Teuchos::RCP<PhysicsState<Scalar> >& ps)
272  { physicsState_nc_ = Teuchos::null; physicsState_ = ps; }
274 
275 
277 
278  bool operator< (const SolutionState<Scalar>& ss) const;
280 
282  bool operator<= (const SolutionState<Scalar>& ss) const;
283 
285  bool operator< (const Scalar& t) const;
286 
288  bool operator<= (const Scalar& t) const;
289 
291  bool operator> (const SolutionState<Scalar>& ss) const;
292 
294  bool operator>= (const SolutionState<Scalar>& ss) const;
295 
297  bool operator> (const Scalar& t) const;
298 
300  bool operator>= (const Scalar& t) const;
301 
303  bool operator== (const SolutionState<Scalar>& ss) const;
304 
306  bool operator== (const Scalar& t) const;
308 
310 
311  virtual std::string description() const;
312  virtual void describe(Teuchos::FancyOStream &out,
313  const Teuchos::EVerbosityLevel verbLevel) const;
315 
317  virtual void computeNorms(
318  const Teuchos::RCP<const SolutionState<Scalar> >& ssIn = Teuchos::null);
319 
320 private:
321  // Member Data
322 
324  Teuchos::RCP<const SolutionStateMetaData<Scalar> > metaData_;
325  Teuchos::RCP<SolutionStateMetaData<Scalar> > metaData_nc_;
326 
328  Teuchos::RCP<const Thyra::VectorBase<Scalar> > x_;
329  Teuchos::RCP<Thyra::VectorBase<Scalar> > x_nc_;
330 
332  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot_;
333  Teuchos::RCP<Thyra::VectorBase<Scalar> > xdot_nc_;
334 
336  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdotdot_;
337  Teuchos::RCP<Thyra::VectorBase<Scalar> > xdotdot_nc_;
338 
340  Teuchos::RCP<const StepperState<Scalar> > stepperState_;
341  Teuchos::RCP<StepperState<Scalar> > stepperState_nc_;
342 
344  Teuchos::RCP<const PhysicsState<Scalar> > physicsState_;
345  Teuchos::RCP<PhysicsState<Scalar> > physicsState_nc_;
346 
347 };
348 
349 
351 template<class Scalar>
352 Teuchos::RCP<SolutionState<Scalar> >
354  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& x,
355  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xdot = Teuchos::null,
356  const Teuchos::RCP<Thyra::VectorBase<Scalar> >& xdotdot = Teuchos::null);
357 
359 template<class Scalar>
360 Teuchos::RCP<SolutionState<Scalar> >
362  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& x,
363  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xdot =Teuchos::null,
364  const Teuchos::RCP<const Thyra::VectorBase<Scalar> >& xdotdot =Teuchos::null);
365 
367 template<class Scalar>
368 Teuchos::RCP<SolutionState<Scalar> >
370  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& model,
371  const Teuchos::RCP<StepperState<Scalar> >& stepperState = Teuchos::null,
372  const Teuchos::RCP<PhysicsState<Scalar> >& physicsState = Teuchos::null);
373 
374 
375 
376 } // namespace Tempus
377 
378 #endif // Tempus_SolutionState_decl_hpp
virtual Status getSolutionStatus() const
Teuchos::RCP< SolutionState< Scalar > > createSolutionStateX(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xdot=Teuchos::null, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xdotdot=Teuchos::null)
Nonmember constructor from non-const solution vectors, x.
PhysicsState is a simple class to hold information about the physics.
virtual void setXNormL2(Scalar xNormL2)
virtual Teuchos::RCP< StepperState< Scalar > > getStepperState()
virtual Scalar getTime() const
virtual void setNFailures(int nFailures)
virtual void setStepperState(const Teuchos::RCP< StepperState< Scalar > > &ss)
Teuchos::RCP< Thyra::VectorBase< Scalar > > xdot_nc_
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getXDot()
virtual void setDxNormL2Rel(Scalar dxNormL2Rel)
virtual void setXDot(Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdot)
virtual Scalar getErrorRelNm2() const
bool operator==(const SolutionState< Scalar > &ss) const
Equality comparison for matching.
bool operator<(const SolutionState< Scalar > &ss) const
Less than comparison for sorting based on time.
virtual void setErrorAbs(Scalar errorAbs)
Teuchos::RCP< const SolutionStateMetaData< Scalar > > metaData_
Meta Data for the solution state.
virtual void setTolAbs(Scalar tolAbs)
virtual void setStepperState(Teuchos::RCP< StepperState< Scalar > > &ss)
virtual Teuchos::RCP< SolutionState< Scalar > > clone() const
This is a deep copy constructor.
virtual bool getOutputScreen() const
virtual Scalar getDxNormL2Abs() const
virtual Teuchos::RCP< const PhysicsState< Scalar > > getPhysicsState() const
virtual void setIsSynced(bool isSynced)
virtual void setIsInterpolated(bool isInterpolated)
virtual void setXDot(Teuchos::RCP< Thyra::VectorBase< Scalar > > xdot)
Teuchos::RCP< PhysicsState< Scalar > > physicsState_nc_
Teuchos::RCP< const PhysicsState< Scalar > > physicsState_
PhysicsState for this SolutionState.
virtual void setDxNormL2Abs(Scalar dxNormL2Abs)
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdotdot_
Second time derivative of the solution.
bool operator<=(const SolutionState< Scalar > &ss) const
Less than comparison for sorting based on time.
virtual Teuchos::RCP< PhysicsState< Scalar > > getPhysicsState()
virtual Scalar getTolRel() const
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
virtual Scalar getDxNormL2Rel() const
Teuchos::RCP< Thyra::VectorBase< Scalar > > xdotdot_nc_
StepperState is a simple class to hold state information about the stepper.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDotDot() const
virtual void setIndex(Scalar index)
Status
Status for the Integrator, the Stepper and the SolutionState.
Teuchos::RCP< const StepperState< Scalar > > stepperState_
StepperState for this SolutionState.
virtual void setSolutionStatus(const Thyra::SolveStatus< Scalar > sStatus)
virtual bool getComputeNorms() const
virtual void setTimeStep(Scalar dt)
virtual Scalar getTimeStep() const
virtual void setErrorRel(Scalar errorRel)
virtual void setNRunningFailures(int nFailures)
virtual Scalar getTolAbs() const
virtual Scalar getXNormL2() const
virtual void copySolutionData(const Teuchos::RCP< const SolutionState< Scalar > > &s)
Deep copy solution data, but keep metaData untouched.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getXDotDot()
virtual void setSolutionStatus(Status s)
SolutionState()
Default Constructor – Not meant for immediate adding to SolutionHistory. This constructor does not ...
virtual void setX(Teuchos::RCP< const Thyra::VectorBase< Scalar > > x)
virtual void setNConsecutiveFailures(int nConsecutiveFailures)
bool operator>=(const SolutionState< Scalar > &ss) const
Less than comparison for sorting based on time.
virtual std::string description() const
Teuchos::RCP< SolutionState< Scalar > > createSolutionStateME(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model, const Teuchos::RCP< StepperState< Scalar > > &stepperState=Teuchos::null, const Teuchos::RCP< PhysicsState< Scalar > > &physicsState=Teuchos::null)
Nonmember constructor from Thyra ModelEvaluator.
virtual void setXDotDot(Teuchos::RCP< Thyra::VectorBase< Scalar > > xdotdot)
Teuchos::RCP< const Thyra::VectorBase< Scalar > > x_
Solution.
virtual Teuchos::RCP< const StepperState< Scalar > > getStepperState() const
Teuchos::RCP< Thyra::VectorBase< Scalar > > x_nc_
Teuchos::RCP< StepperState< Scalar > > stepperState_nc_
virtual Teuchos::RCP< SolutionStateMetaData< Scalar > > getMetaData()
virtual bool getIsInterpolated() const
virtual Scalar getErrorRel() const
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDot() const
virtual Scalar getErrorAbs() const
virtual void setAccuracy(bool accuracy)
virtual ~SolutionState()
Destructor.
virtual void setOutputScreen(bool output)
virtual void computeNorms(const Teuchos::RCP< const SolutionState< Scalar > > &ssIn=Teuchos::null)
Compute the solution norms, and solution change from ssIn, if provided.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getX() const
virtual Teuchos::RCP< const SolutionStateMetaData< Scalar > > getMetaData() const
virtual int getNConsecutiveFailures() const
virtual void setOrder(int order)
virtual void setX(Teuchos::RCP< Thyra::VectorBase< Scalar > > x)
virtual void setPhysicsState(const Teuchos::RCP< PhysicsState< Scalar > > &ps)
virtual void setXDotDot(Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdotdot)
virtual void setMetaData(Teuchos::RCP< SolutionStateMetaData< Scalar > > md)
virtual void setMetaData(Teuchos::RCP< const SolutionStateMetaData< Scalar > > md)
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getX()
virtual void setTime(Scalar time)
virtual Scalar getErrorRelNm1() const
virtual void setPhysicsState(Teuchos::RCP< PhysicsState< Scalar > > &ps)
virtual void setComputeNorms(bool computeNorms)
Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdot_
Time derivative of the solution.
virtual void setOutput(bool output)
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
bool operator>(const SolutionState< Scalar > &ss) const
Less than comparison for sorting based on time.
virtual void setTolRel(Scalar tolRel)
virtual int getNRunningFailures() const
Teuchos::RCP< SolutionStateMetaData< Scalar > > metaData_nc_
virtual void copy(const Teuchos::RCP< const SolutionState< Scalar > > &ss)
This is a deep copy.