9 #ifndef Tempus_IntegratorObserverBasic_impl_hpp 10 #define Tempus_IntegratorObserverBasic_impl_hpp 16 template<
class Scalar>
19 template<
class Scalar>
22 template<
class Scalar>
26 std::time_t begin = std::time(
nullptr);
27 const Teuchos::RCP<Teuchos::FancyOStream> out = integrator.getOStream();
28 Teuchos::OSTab ostab(out,0,
"ScreenOutput");
29 *out <<
"\nTempus - IntegratorBasic\n" 30 << std::asctime(std::localtime(&begin)) <<
"\n" 31 <<
" Stepper = " << integrator.
getStepper()->description() <<
"\n" 36 <<
"============================================================================\n" 37 <<
" Step Time dt Abs Error Rel Error Order nFail dCompTime" 41 template<
class Scalar>
45 template<
class Scalar>
49 template<
class Scalar>
53 template<
class Scalar>
57 template<
class Scalar>
62 RCP<SolutionStateMetaData<Scalar> > csmd =
65 if ((csmd->getOutputScreen() ==
true) or
66 (csmd->getOutput() ==
true) or
69 const Scalar steppertime = integrator.
getStepperTimer()->totalElapsedTime();
73 const Teuchos::RCP<Teuchos::FancyOStream> out = integrator.getOStream();
74 Teuchos::OSTab ostab(out,0,
"ScreenOutput");
75 *out<<std::scientific<<std::setw( 6)<<std::setprecision(3)<<csmd->getIStep()
76 <<std::setw(11)<<std::setprecision(3)<<csmd->getTime()
77 <<std::setw(11)<<std::setprecision(3)<<csmd->getDt()
78 <<std::setw(11)<<std::setprecision(3)<<csmd->getErrorAbs()
79 <<std::setw(11)<<std::setprecision(3)<<csmd->getErrorRel()
80 <<std::fixed <<std::setw( 7)<<std::setprecision(1)<<csmd->getOrder()
81 <<std::scientific<<std::setw( 7)<<std::setprecision(3)<<csmd->getNFailures()
82 <<std::setw(11)<<std::setprecision(3)<<steppertime
88 template<
class Scalar>
92 std::string exitStatus;
96 exitStatus =
"Time integration FAILURE!";
98 exitStatus =
"Time integration complete.";
100 std::time_t end = std::time(
nullptr);
102 const Teuchos::RCP<Teuchos::FancyOStream> out = integrator.getOStream();
103 Teuchos::OSTab ostab(out,0,
"ScreenOutput");
104 *out <<
"============================================================================\n" 105 <<
" Total runtime = " << runtime <<
" sec = " 106 << runtime/60.0 <<
" min\n" 107 << std::asctime(std::localtime(&end))
108 << exitStatus <<
"\n" 113 #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 observeAcceptedTimeStep(const Integrator< Scalar > &integrator) override
Observe after accepting time step.
virtual void observeStartIntegrator(const Integrator< Scalar > &integrator) override
Observe the beginning of the time integrator.
virtual Tempus::Status getStatus() const =0
Get the Status.
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 observeBeforeTakeStep(const Integrator< Scalar > &integrator) override
Observe before Stepper takes step.
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.