29 #ifndef RYTHMOS_DEFAULT_INTEGRATOR_DECL_HPP
30 #define RYTHMOS_DEFAULT_INTEGRATOR_DECL_HPP
33 #include "Rythmos_IntegrationControlStrategyAcceptingIntegratorBase.hpp"
34 #include "Rythmos_InterpolationBufferAppenderAcceptingIntegratorBase.hpp"
35 #include "Rythmos_TrailingInterpolationBufferAcceptingIntegratorBase.hpp"
36 #include "Rythmos_IntegrationObserverBase.hpp"
37 #include "Rythmos_StepControlInfo.hpp"
38 #include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
49 template<
class Scalar>
54 virtual public Teuchos::ParameterListAcceptorDefaultBase
59 typedef typename ScalarTraits<Scalar>::magnitudeType
ScalarMag;
81 RCP<const InterpolationBufferAppenderBase<Scalar> >
85 RCP<InterpolationBufferAppenderBase<Scalar> >
89 RCP<InterpolationBufferAppenderBase<Scalar> >
103 RCP<IntegrationControlStrategyBase<Scalar> >
107 RCP<const IntegrationControlStrategyBase<Scalar> >
132 const Scalar &finalTime,
133 const bool landOnFinalTime =
true
140 RCP<const StepperBase<Scalar> >
getStepper()
const;
154 RCP<InterpolationBufferBase<Scalar> >
158 RCP<const InterpolationBufferBase<Scalar> >
162 RCP<InterpolationBufferBase<Scalar> >
169 const Array<Scalar>& time_vec,
170 Array<RCP<
const Thyra::VectorBase<Scalar> > >* x_vec,
171 Array<RCP<
const Thyra::VectorBase<Scalar> > >* xdot_vec,
172 Array<ScalarMag>* accuracy_vec
184 RCP<const Thyra::VectorSpaceBase<Scalar> >
get_x_space()
const;
188 const Array<Scalar>& time_vec,
189 const Array<RCP<
const Thyra::VectorBase<Scalar> > >& x_vec,
190 const Array<RCP<
const Thyra::VectorBase<Scalar> > >& xdot_vec
195 const Array<Scalar>& time_vec,
196 Array<RCP<
const Thyra::VectorBase<Scalar> > >* x_vec,
197 Array<RCP<
const Thyra::VectorBase<Scalar> > >* xdot_vec,
198 Array<ScalarMag>* accuracy_vec
205 void getNodes(Array<Scalar>* time_vec)
const;
220 RCP<IntegrationControlStrategyBase<Scalar> > integrationControlStrategy_;
221 RCP<IntegrationObserverBase<Scalar> > integrationObserver_;
223 RCP<InterpolationBufferBase<Scalar> > trailingInterpBuffer_;
224 RCP<InterpolationBufferAppenderBase<Scalar> > interpBufferAppender_;
226 RCP<StepperBase<Scalar> > stepper_;
228 bool landOnFinalTime_;
230 int maxNumTimeSteps_;
232 int currTimeStepIndex_;
235 static const std::string maxNumTimeSteps_name_;
236 static const int maxNumTimeSteps_default_;
241 void finalizeSetup();
243 bool advanceStepperToTime(
const Scalar& t );
252 template<
class Scalar>
253 RCP<DefaultIntegrator<Scalar> >
261 template<
class Scalar>
262 RCP<DefaultIntegrator<Scalar> >
273 template<
class Scalar>
274 RCP<DefaultIntegrator<Scalar> >
275 controlledDefaultIntegrator(
284 template<
class Scalar>
285 RCP<DefaultIntegrator<Scalar> >
286 observedDefaultIntegrator(
299 #endif //RYTHMOS_DEFAULT_INTEGRATOR_DECL_HPP
RCP< const ParameterList > getValidParameters() const
RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const
void getPoints(const Array< Scalar > &time_vec, Array< RCP< const Thyra::VectorBase< Scalar > > > *x_vec, Array< RCP< const Thyra::VectorBase< Scalar > > > *xdot_vec, Array< ScalarMag > *accuracy_vec) const
RCP< StepperBase< Scalar > > unSetStepper()
RCP< const InterpolationBufferAppenderBase< Scalar > > getInterpolationBufferAppender()
RCP< InterpolationBufferBase< Scalar > > unSetTrailingInterpolationBuffer()
Base class for defining stepper functionality.
RCP< IntegratorBase< Scalar > > cloneIntegrator() const
RCP< const StepperBase< Scalar > > getStepper() const
RCP< IntegrationControlStrategyBase< Scalar > > getNonconstIntegrationControlStrategy()
Simple struct to aggregate integration/stepper control information.
void getNodes(Array< Scalar > *time_vec) const
Base class for strategy objects that control integration by selecting step sizes for a stepper...
RCP< const IntegrationControlStrategyBase< Scalar > > getIntegrationControlStrategy() const
Mix-in interface for integrator objects that accept an interpolationBufferAppender object to be used ...
TimeRange< Scalar > getFwdTimeRange() const
Mix-in interface for integrator objects that accept an integration control strategy object to be used...
Base class for strategy objects that observe and time integration by observing the stepper object...
RCP< InterpolationBufferAppenderBase< Scalar > > unSetInterpolationBufferAppender()
void setIntegrationControlStrategy(const RCP< IntegrationControlStrategyBase< Scalar > > &integrationControlStrategy)
A concrete subclass for IntegratorBase that allows a good deal of customization.
void addPoints(const Array< Scalar > &time_vec, const Array< RCP< const Thyra::VectorBase< Scalar > > > &x_vec, const Array< RCP< const Thyra::VectorBase< Scalar > > > &xdot_vec)
void setTrailingInterpolationBuffer(const RCP< InterpolationBufferBase< Scalar > > &trailingInterpBuffer)
RCP< StepperBase< Scalar > > getNonconstStepper() const
Base class for an interpolation buffer.
RCP< const InterpolationBufferBase< Scalar > > getTrailingInterpolationBuffer() const
void getFwdPoints(const Array< Scalar > &time_vec, Array< RCP< const Thyra::VectorBase< Scalar > > > *x_vec, Array< RCP< const Thyra::VectorBase< Scalar > > > *xdot_vec, Array< ScalarMag > *accuracy_vec)
Base class for strategy objects that append data from one InterplationBufferBase object to another...
void removeNodes(Array< Scalar > &time_vec)
void setInterpolationBufferAppender(const RCP< InterpolationBufferAppenderBase< Scalar > > &interpBufferAppender)
RCP< InterpolationBufferBase< Scalar > > getNonconstTrailingInterpolationBuffer()
TimeRange< Scalar > getTimeRange() const
ScalarTraits< Scalar >::magnitudeType ScalarMag
RCP< InterpolationBufferAppenderBase< Scalar > > getNonconstInterpolationBufferAppender()
void setIntegrationObserver(const RCP< IntegrationObserverBase< Scalar > > &integrationObserver)
void setParameterList(RCP< ParameterList > const ¶mList)
void setStepper(const RCP< StepperBase< Scalar > > &stepper, const Scalar &finalTime, const bool landOnFinalTime=true)
Mix-in interface for integrator objects that accept a trailing interpolation buffer object to be used...