9#ifndef Tempus_StepperOperatorSplit_decl_hpp
10#define Tempus_StepperOperatorSplit_decl_hpp
12#include "Tempus_config.hpp"
13#include "Tempus_Stepper.hpp"
79 std::vector<Teuchos::RCP<Stepper<Scalar> > > subStepperList,
81 std::string ICConsistency,
82 bool ICConsistencyCheck,
86 const Teuchos::RCP<StepperOperatorSplitAppAction<Scalar> >& stepperOSAppAction);
93 virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
getModel()
const;
96 Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver);
98 virtual Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> >
getSolver()
const
99 {
return Teuchos::null; }
101 virtual void setAppAction(Teuchos::RCP<StepperOperatorSplitAppAction<Scalar> > appAction);
103 virtual Teuchos::RCP<StepperOperatorSplitAppAction<Scalar> >
getAppAction()
const
114 const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
118 const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
131 const Teuchos::RCP<SolutionHistory<Scalar> >& )
const
132 {
return Scalar(1.0e+99);}
140 typename std::vector<Teuchos::RCP<Stepper<Scalar> > >::const_iterator
143 if ( (*subStepperIter)->isExplicit() )
isExplicit =
true;
150 typename std::vector<Teuchos::RCP<Stepper<Scalar> > >::const_iterator
153 if ( (*subStepperIter)->isImplicit() )
isImplicit =
true;
162 typename std::vector<Teuchos::RCP<Stepper<Scalar> > >::const_iterator
178 Teuchos::RCP<Teuchos::ParameterList> pl);
182 virtual void describe(Teuchos::FancyOStream & out,
183 const Teuchos::EVerbosityLevel verbLevel)
const;
186 virtual bool isValidSetup(Teuchos::FancyOStream & out)
const;
198 virtual void addStepper(Teuchos::RCP<Stepper<Scalar> > stepper,
199 bool useFSAL =
false);
202 std::vector<Teuchos::RCP<Stepper<Scalar> > > subStepperList);
225template<
class Scalar>
226Teuchos::RCP<StepperOperatorSplit<Scalar> >
229 Teuchos::RCP<Teuchos::ParameterList> pl);
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
OperatorSplit stepper loops through the Stepper list.
virtual OrderODE getOrderODE() const
std::vector< Teuchos::RCP< Stepper< Scalar > > > subStepperList_
virtual void clearSubStepperList()
virtual void setModels(std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > > appModels)
virtual void setOrderMin(Scalar o)
virtual bool isExplicit() const
virtual void setOrderMax(Scalar o)
virtual bool isValidSetup(Teuchos::FancyOStream &out) const
virtual void setUseFSAL(bool a)
virtual void setAppAction(Teuchos::RCP< StepperOperatorSplitAppAction< Scalar > > appAction)
virtual bool isMultiStepMethod() const
virtual void initialize()
Initialize during construction and after changing input parameters.
virtual void setSolver(Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver)
Set solver.
virtual void setStepperList(std::vector< Teuchos::RCP< Stepper< Scalar > > > sl)
virtual Teuchos::RCP< StepperOperatorSplitAppAction< Scalar > > getAppAction() const
virtual std::vector< Teuchos::RCP< Stepper< Scalar > > > getStepperList() const
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Take the specified timestep, dt, and return true if successful.
virtual void setSubStepperList(std::vector< Teuchos::RCP< Stepper< Scalar > > > subStepperList)
Teuchos::RCP< StepperOperatorSplitAppAction< Scalar > > stepperOSAppAction_
void createSubSteppers(std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > > appModels, Teuchos::RCP< Teuchos::ParameterList > pl)
virtual Scalar getOrderMin() const
virtual bool isExplicitImplicit() const
virtual bool isOneStepMethod() const
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
virtual bool isImplicit() const
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &) const
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Set the initial conditions and make them consistent.
Teuchos::RCP< SolutionState< Scalar > > tempState_
virtual void setOrder(Scalar o)
Teuchos::RCP< SolutionHistory< Scalar > > OpSpSolnHistory_
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > >)
Pass initial guess to Newton solver.
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel() const
virtual Scalar getOrderMax() const
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
StepperOperatorSplit()
Default constructor.
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()
Get a default (initial) StepperState.
virtual void addStepper(Teuchos::RCP< Stepper< Scalar > > stepper, bool useFSAL=false)
Add Stepper to subStepper list. In most cases, subSteppers cannot use xDotOld (thus the default),...
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
virtual void setTempState(Teuchos::RCP< Tempus::SolutionState< Scalar > > state)
virtual Scalar getOrder() const
Thyra Base interface for time steppers.
bool isInitialized_
True if stepper's member data is initialized.
bool useFSAL_
Use First-Same-As-Last (FSAL) principle.
Teuchos::RCP< StepperOperatorSplit< Scalar > > createStepperOperatorSplit(std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > > appModels, Teuchos::RCP< Teuchos::ParameterList > pl)
Nonmember constructor - ModelEvaluator and ParameterList.
@ FIRST_ORDER_ODE
Stepper integrates first-order ODEs.