97 Teuchos::RCP<Teuchos::ParameterList> pl)
99 TEUCHOS_TEST_FOR_EXCEPTION(
100 pl == Teuchos::null, std::runtime_error,
101 "Error parsing general tableau. ParameterList is null.\n");
103 Teuchos::RCP<RKButcherTableau<Scalar>> tableau;
105 Teuchos::RCP<Teuchos::ParameterList> tableauPL =
106 sublist(pl,
"Tableau",
true);
107 std::size_t numStages = 0;
108 int order = tableauPL->get<
int>(
"order");
109 Teuchos::SerialDenseMatrix<int, Scalar> A;
110 Teuchos::SerialDenseVector<int, Scalar> b;
111 Teuchos::SerialDenseVector<int, Scalar> c;
112 Teuchos::SerialDenseVector<int, Scalar> bstar;
116 std::vector<std::string> A_row_tokens;
121 numStages = A_row_tokens.size();
124 A.shape(Teuchos::as<int>(numStages), Teuchos::as<int>(numStages));
127 for (std::size_t row = 0; row < numStages; row++) {
129 std::vector<std::string> tokens;
132 std::vector<double> values;
135 TEUCHOS_TEST_FOR_EXCEPTION(
136 values.size() != numStages, std::runtime_error,
137 "Error parsing A matrix, wrong number of stages in row "
140 for (std::size_t col = 0; col < numStages; col++)
141 A(row, col) = values[col];
146 b.size(Teuchos::as<int>(numStages));
147 c.size(Teuchos::as<int>(numStages));
151 std::vector<std::string> tokens;
154 std::vector<double> values;
157 TEUCHOS_TEST_FOR_EXCEPTION(
158 values.size() != numStages, std::runtime_error,
159 "Error parsing b vector, wrong number of stages.\n");
161 for (std::size_t i = 0; i < numStages; i++) b(i) = values[i];
166 std::vector<std::string> tokens;
169 std::vector<double> values;
172 TEUCHOS_TEST_FOR_EXCEPTION(
173 values.size() != numStages, std::runtime_error,
174 "Error parsing c vector, wrong number of stages.\n");
176 for (std::size_t i = 0; i < numStages; i++) c(i) = values[i];
179 if (tableauPL->isParameter(
"bstar") &&
180 tableauPL->get<std::string>(
"bstar") !=
"") {
181 bstar.size(Teuchos::as<int>(numStages));
184 std::vector<std::string> tokens;
187 std::vector<double> values;
190 TEUCHOS_TEST_FOR_EXCEPTION(
191 values.size() != numStages, std::runtime_error,
192 "Error parsing bstar vector, wrong number of stages.\n"
193 <<
" Number of RK stages = " << numStages
194 <<
"\n Number of bstar values = "
195 << values.size() <<
"\n");
197 for (std::size_t i = 0; i < numStages; i++) bstar(i) = values[i];
200 order, order, order, bstar));
204 order, order, order));