9 #ifndef Tempus_IntegratorObserverBasic_impl_hpp
10 #define Tempus_IntegratorObserverBasic_impl_hpp
12 #include "Tempus_Stepper.hpp"
16 template<
class Scalar>
19 template<
class Scalar>
22 template<
class Scalar>
26 std::time_t begin = std::time(
nullptr);
30 *out <<
"\nTempus - IntegratorBasic\n"
31 << std::asctime(std::localtime(&begin)) <<
"\n"
32 <<
" Stepper = " << integrator.
getStepper()->description() <<
"\n"
37 <<
"============================================================================\n"
38 <<
" Step Time dt Abs Error Rel Error Order nFail dCompTime"
42 template<
class Scalar>
46 template<
class Scalar>
50 template<
class Scalar>
54 template<
class Scalar>
58 template<
class Scalar>
62 template<
class Scalar>
69 if ((cs->getOutputScreen() ==
true) ||
70 (cs->getOutput() ==
true) ||
81 <<std::setw( 6)<<std::setprecision(3)<<cs->getIndex()
82 <<std::setw(11)<<std::setprecision(3)<<cs->getTime()
83 <<std::setw(11)<<std::setprecision(3)<<cs->getTimeStep()
84 <<std::setw(11)<<std::setprecision(3)<<cs->getErrorAbs()
85 <<std::setw(11)<<std::setprecision(3)<<cs->getErrorRel()
86 <<std::fixed <<std::setw( 7)<<std::setprecision(1)<<cs->getOrder()
87 <<std::scientific<<std::setw( 7)<<std::setprecision(3)<<cs->getNFailures()
88 <<std::setw(11)<<std::setprecision(3)<<steppertime
94 template<
class Scalar>
98 std::string exitStatus;
102 exitStatus =
"Time integration FAILURE!";
104 exitStatus =
"Time integration complete.";
106 std::time_t end = std::time(
nullptr);
111 *out <<
"============================================================================\n"
112 <<
" Total runtime = " << runtime <<
" sec = "
113 << runtime/60.0 <<
" min\n"
114 << std::asctime(std::localtime(&end))
115 <<
"\nNumber of Accepted Steps = " << integrator.
getSolutionHistory()->getCurrentState()->getIndex()
116 <<
"\nNumber of Failures = " << integrator.
getSolutionHistory()->getCurrentState()->getMetaData()->getNRunningFailures()
118 << exitStatus <<
"\n"
123 #endif // Tempus_IntegratorObserverBasic_impl_hpp
virtual Teuchos::RCP< Teuchos::Time > getStepperTimer() const =0
virtual Teuchos::RCP< Teuchos::Time > getIntegratorTimer() const =0
Returns the IntegratorTimer_ for this Integrator.
virtual void observeEndIntegrator(const Integrator< Scalar > &integrator) override
Observe the end of the time integrator.
virtual void observeNextTimeStep(const Integrator< Scalar > &integrator) override
Observe after the next time step size is selected.
virtual Teuchos::RCP< const TimeStepControl< Scalar > > getTimeStepControl() const =0
Returns the TimeStepControl for this Integrator.
IntegratorObserverBasic()
Constructor.
virtual void observeStartIntegrator(const Integrator< Scalar > &integrator) override
Observe the beginning of the time integrator.
virtual Tempus::Status getStatus() const =0
Get the Status.
virtual void observeAfterCheckTimeStep(const Integrator< Scalar > &integrator) override
Observe after checking time step. Observer can still fail the time step here.
basic_FancyOStream & setOutputToRootOnly(const int rootRank)
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
virtual void observeStartTimeStep(const Integrator< Scalar > &integrator) override
Observe the beginning of the time step loop.
virtual void observeAfterTakeStep(const Integrator< Scalar > &integrator) override
Observe after Stepper takes step.
virtual void observeEndTimeStep(const Integrator< Scalar > &integrator) override
Observe the end of the time step loop.
double totalElapsedTime(bool readCurrentTime=false) const
virtual void observeBeforeTakeStep(const Integrator< Scalar > &integrator) override
Observe before Stepper takes step.
virtual RCP< FancyOStream > getOStream() const
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const =0
Get the stepper.
virtual ~IntegratorObserverBasic()
Destructor.
virtual Teuchos::RCP< const SolutionHistory< Scalar > > getSolutionHistory() const =0
Returns the SolutionHistory for this Integrator.