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"
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 );
252template<
class Scalar>
253RCP<DefaultIntegrator<Scalar> >
261template<
class Scalar>
262RCP<DefaultIntegrator<Scalar> >
273template<
class Scalar>
274RCP<DefaultIntegrator<Scalar> >
284template<
class Scalar>
285RCP<DefaultIntegrator<Scalar> >
A concrete subclass for IntegratorBase that allows a good deal of customization.
RCP< DefaultIntegrator< Scalar > > defaultIntegrator(const RCP< IntegrationControlStrategyBase< Scalar > > &integrationControlStrategy, const RCP< IntegrationObserverBase< Scalar > > &integrationObserver)
void setStepper(const RCP< StepperBase< Scalar > > &stepper, const Scalar &finalTime, const bool landOnFinalTime=true)
RCP< const IntegrationControlStrategyBase< Scalar > > getIntegrationControlStrategy() const
RCP< InterpolationBufferBase< Scalar > > getNonconstTrailingInterpolationBuffer()
RCP< StepperBase< Scalar > > getNonconstStepper() const
RCP< InterpolationBufferAppenderBase< Scalar > > getNonconstInterpolationBufferAppender()
RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const
void removeNodes(Array< Scalar > &time_vec)
void setTrailingInterpolationBuffer(const RCP< InterpolationBufferBase< Scalar > > &trailingInterpBuffer)
RCP< const StepperBase< Scalar > > getStepper() const
RCP< DefaultIntegrator< Scalar > > defaultIntegrator()
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)
RCP< StepperBase< Scalar > > unSetStepper()
RCP< IntegratorBase< Scalar > > cloneIntegrator() 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)
RCP< DefaultIntegrator< Scalar > > observedDefaultIntegrator(const RCP< IntegrationObserverBase< Scalar > > &integrationObserver)
void setIntegrationObserver(const RCP< IntegrationObserverBase< Scalar > > &integrationObserver)
void getNodes(Array< Scalar > *time_vec) const
void setInterpolationBufferAppender(const RCP< InterpolationBufferAppenderBase< Scalar > > &interpBufferAppender)
RCP< const ParameterList > getValidParameters() const
RCP< const InterpolationBufferAppenderBase< Scalar > > getInterpolationBufferAppender()
void setIntegrationControlStrategy(const RCP< IntegrationControlStrategyBase< Scalar > > &integrationControlStrategy)
TimeRange< Scalar > getTimeRange() const
void setParameterList(RCP< ParameterList > const ¶mList)
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< InterpolationBufferBase< Scalar > > unSetTrailingInterpolationBuffer()
RCP< IntegrationControlStrategyBase< Scalar > > getNonconstIntegrationControlStrategy()
RCP< const InterpolationBufferBase< Scalar > > getTrailingInterpolationBuffer() const
TimeRange< Scalar > getFwdTimeRange() const
RCP< InterpolationBufferAppenderBase< Scalar > > unSetInterpolationBufferAppender()
RCP< DefaultIntegrator< Scalar > > controlledDefaultIntegrator(const RCP< IntegrationControlStrategyBase< Scalar > > &integrationControlStrategy)
ScalarTraits< Scalar >::magnitudeType ScalarMag
Mix-in interface for integrator objects that accept an integration control strategy object to be used...
Base class for strategy objects that control integration by selecting step sizes for a stepper.
Base class for strategy objects that observe and time integration by observing the stepper object.
Mix-in interface for integrator objects that accept an interpolationBufferAppender object to be used ...
Base class for strategy objects that append data from one InterplationBufferBase object to another.
Base class for an interpolation buffer.
Simple struct to aggregate integration/stepper control information.
Base class for defining stepper functionality.
Mix-in interface for integrator objects that accept a trailing interpolation buffer object to be used...