97 TEUCHOS_TEST_FOR_EXCEPTION(pl == Teuchos::null,std::runtime_error,
98 "Error parsing general tableau. ParameterList is null.\n");
100 Teuchos::RCP<RKButcherTableau<Scalar> > tableau;
102 Teuchos::RCP<Teuchos::ParameterList> tableauPL = sublist(pl,
"Tableau",
true);
103 std::size_t numStages = 0;
104 int order = tableauPL->get<
int>(
"order");
105 Teuchos::SerialDenseMatrix<int,Scalar> A;
106 Teuchos::SerialDenseVector<int,Scalar> b;
107 Teuchos::SerialDenseVector<int,Scalar> c;
108 Teuchos::SerialDenseVector<int,Scalar> bstar;
112 std::vector<std::string> A_row_tokens;
117 numStages = A_row_tokens.size();
120 A.shape(Teuchos::as<int>(numStages),Teuchos::as<int>(numStages));
123 for(std::size_t row=0;row<numStages;row++) {
125 std::vector<std::string> tokens;
128 std::vector<double> values;
131 TEUCHOS_TEST_FOR_EXCEPTION(values.size()!=numStages,std::runtime_error,
132 "Error parsing A matrix, wrong number of stages in row "
135 for(std::size_t col=0;col<numStages;col++)
136 A(row,col) = values[col];
141 b.size(Teuchos::as<int>(numStages));
142 c.size(Teuchos::as<int>(numStages));
146 std::vector<std::string> tokens;
148 std::vector<double> values;
151 TEUCHOS_TEST_FOR_EXCEPTION(values.size()!=numStages,std::runtime_error,
152 "Error parsing b vector, wrong number of stages.\n");
154 for(std::size_t i=0;i<numStages;i++)
160 std::vector<std::string> tokens;
162 std::vector<double> values;
165 TEUCHOS_TEST_FOR_EXCEPTION(values.size()!=numStages,std::runtime_error,
166 "Error parsing c vector, wrong number of stages.\n");
168 for(std::size_t i=0;i<numStages;i++)
172 if (tableauPL->isParameter(
"bstar") &&
173 tableauPL->get<std::string>(
"bstar") !=
"") {
174 bstar.size(Teuchos::as<int>(numStages));
177 std::vector<std::string> tokens;
179 tokens, tableauPL->get<std::string>(
"bstar"),
" ",
true);
180 std::vector<double> values;
183 TEUCHOS_TEST_FOR_EXCEPTION(values.size()!=numStages,std::runtime_error,
184 "Error parsing bstar vector, wrong number of stages.\n"
185 " Number of RK stages = " << numStages <<
"\n"
186 " Number of bstar values = " << values.size() <<
"\n");
188 for(std::size_t i=0;i<numStages;i++)
189 bstar(i) = values[i];
191 tableau = rcp(
new RKButcherTableau<Scalar>(
192 "From ParameterList",A,b,c,order,order,order,bstar));
194 tableau = rcp(
new RKButcherTableau<Scalar>(
195 "From ParameterList",A,b,c,order,order,order));