9 #ifndef Tempus_StepperRKBase_hpp
10 #define Tempus_StepperRKBase_hpp
12 #include "Thyra_VectorBase.hpp"
14 #include "Tempus_config.hpp"
15 #include "Tempus_Stepper.hpp"
19 #include "Tempus_Stepper_ErrorNorm.hpp"
29 template <
class Scalar>
55 &errCalculator = Teuchos::null)
57 if (errCalculator != Teuchos::null) {
68 if (appAction == Teuchos::null) {
87 if (pl != Teuchos::null) {
99 pl == Teuchos::null, std::runtime_error,
100 "Error parsing general tableau. ParameterList is null.\n");
105 sublist(pl,
"Tableau",
true);
106 std::size_t numStages = 0;
107 int order = tableauPL->
get<
int>(
"order");
115 std::vector<std::string> A_row_tokens;
120 numStages = A_row_tokens.size();
123 A.shape(Teuchos::as<int>(numStages), Teuchos::as<int>(numStages));
126 for (std::size_t row = 0; row < numStages; row++) {
128 std::vector<std::string> tokens;
131 std::vector<double> values;
135 values.size() != numStages, std::runtime_error,
136 "Error parsing A matrix, wrong number of stages in row "
139 for (std::size_t col = 0; col < numStages; col++)
140 A(row, col) = values[col];
145 b.
size(Teuchos::as<int>(numStages));
146 c.
size(Teuchos::as<int>(numStages));
150 std::vector<std::string> tokens;
153 std::vector<double> values;
157 values.size() != numStages, std::runtime_error,
158 "Error parsing b vector, wrong number of stages.\n");
160 for (std::size_t i = 0; i < numStages; i++) b(i) = values[i];
165 std::vector<std::string> tokens;
168 std::vector<double> values;
172 values.size() != numStages, std::runtime_error,
173 "Error parsing c vector, wrong number of stages.\n");
175 for (std::size_t i = 0; i < numStages; i++) c(i) = values[i];
179 tableauPL->
get<std::string>(
"bstar") !=
"") {
180 bstar.
size(Teuchos::as<int>(numStages));
183 std::vector<std::string> tokens;
186 std::vector<double> values;
190 values.size() != numStages, std::runtime_error,
191 "Error parsing bstar vector, wrong number of stages.\n"
192 <<
" Number of RK stages = " << numStages
193 <<
"\n Number of bstar values = "
194 << values.size() <<
"\n");
196 for (std::size_t i = 0; i < numStages; i++) bstar(i) = values[i];
199 order, order, order, bstar));
203 order, order, order));
230 #endif // Tempus_StepperRKBase_hpp
Teuchos::RCP< Thyra::VectorBase< Scalar > > sc
virtual Teuchos::RCP< StepperRKAppAction< Scalar > > getAppAction() const
Teuchos::RCP< RKButcherTableau< Scalar > > tableau_
T & get(const std::string &name, T def_value)
virtual Scalar getOrderMin() const
virtual void setUseEmbedded(bool a)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
void TokensToDoubles(std::vector< double > &values, const std::vector< std::string > &tokens)
Turn a vector of tokens into a vector of doubles.
virtual void setStageNumber(int s)
virtual Scalar getOrder() const
virtual void setStepperRKValues(Teuchos::RCP< Teuchos::ParameterList > pl)
Set StepperRK member data from the ParameterList.
bool isInitialized_
True if stepper's member data is initialized.
Teuchos::RCP< Thyra::VectorBase< Scalar > > ee_
Thyra Base interface for time steppers.
bool isParameter(const std::string &name) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Application Action for StepperRKBase.
virtual int getNumberOfStages() const
virtual void setAppAction(Teuchos::RCP< StepperRKAppAction< Scalar >> appAction)
void validateParametersAndSetDefaults(ParameterList const &validParamList, int const depth=1000)
virtual int getStageNumber() const
virtual Teuchos::RCP< RKButcherTableau< Scalar > > createTableau(Teuchos::RCP< Teuchos::ParameterList > pl)
void setStepperValues(const Teuchos::RCP< Teuchos::ParameterList > pl)
Set Stepper member data from ParameterList.
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u0
Teuchos::RCP< Thyra::VectorBase< Scalar > > abs_u
Stepper_ErrorNorm provides error norm calcualtions for variable time stepping.
int size(OrdinalType length_in)
Default modifier for StepperRK.
virtual void setErrorNorm(const Teuchos::RCP< Stepper_ErrorNorm< Scalar >> &errCalculator=Teuchos::null)
virtual Scalar getOrderMax() const
void StringTokenizer(std::vector< std::string > &tokens, const std::string &str, const std::string delimiters, bool trim)
Tokenize a string, put tokens in a vector.
Teuchos::RCP< StepperRKAppAction< Scalar > > stepperRKAppAction_
Teuchos::RCP< Stepper_ErrorNorm< Scalar > > stepperErrorNormCalculator_
virtual bool getUseEmbedded() const
virtual Teuchos::RCP< const RKButcherTableau< Scalar > > getTableau() const
virtual void setEmbeddedMemory()
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const