9 #ifndef Tempus_RKButcherTableauBuilder_impl_hpp
10 #define Tempus_RKButcherTableauBuilder_impl_hpp
18 template<
class Scalar>
21 Teuchos::RCP<RKButcherTableauBuilder<Scalar> >
26 template<
class Scalar>
28 const std::string& rkbt_name, Teuchos::RCP<Teuchos::ParameterList> pl)
30 Teuchos::RCP<RKButcherTableauBuilder<Scalar> >
31 rkbtfn = rKButcherTableauBuilder<Scalar>();
32 Teuchos::RCP<RKButcherTableau<Scalar> > rkbt = rkbtfn->create(rkbt_name);
33 rkbt->setParameterList(pl);
37 template<
class Scalar>
40 this->initializeDefaults_();
43 template<
class Scalar>
47 const std::string &rkbtFactoryName
50 builder_.setObjectFactory(rkbtFactory, rkbtFactoryName);
53 template<
class Scalar>
55 Teuchos::RCP<Teuchos::ParameterList>
const& paramList
58 builder_.setParameterList(paramList);
61 template<
class Scalar>
62 Teuchos::RCP<Teuchos::ParameterList>
65 return builder_.getNonconstParameterList();
69 template<
class Scalar>
70 Teuchos::RCP<Teuchos::ParameterList>
73 return builder_.unsetParameterList();
77 template<
class Scalar>
78 Teuchos::RCP<const Teuchos::ParameterList>
81 return builder_.getParameterList();
85 template<
class Scalar>
86 Teuchos::RCP<const Teuchos::ParameterList>
89 return builder_.getValidParameters();
92 template<
class Scalar>
93 Teuchos::RCP<RKButcherTableau<Scalar> >
95 const std::string &rkbt_name
98 return builder_.create(rkbt_name);
101 template<
class Scalar>
105 using Teuchos::abstractFactoryStd;
107 builder_.setObjectName(
"Tempus::RKButcherTableau");
108 builder_.setObjectTypeName(
"Runge Kutta Butcher Tableau Type");
115 builder_.setObjectFactory(
120 builder_.setObjectFactory(
125 builder_.setObjectFactory(
128 "RK Explicit 2 Stage 2nd order by Runge");
130 builder_.setObjectFactory(
133 "RK Explicit Trapezoidal");
135 builder_.setObjectFactory(
138 "RK Explicit 3 Stage 3rd order");
140 builder_.setObjectFactory(
143 "RK Explicit 3 Stage 3rd order by Heun");
145 builder_.setObjectFactory(
148 "RK Explicit 3 Stage 3rd order TVD");
150 builder_.setObjectFactory(
153 "RK Explicit 4 Stage 3rd order by Runge");
155 builder_.setObjectFactory(
158 "RK Explicit 5 Stage 3rd order by Kinnmark and Gray");
160 builder_.setObjectFactory(
163 "RK Explicit 4 Stage");
165 builder_.setObjectFactory(
168 "RK Explicit 3/8 Rule");
170 builder_.setObjectFactory(
173 "Bogacki-Shampine 3(2) Pair");
175 builder_.setObjectFactory(
181 builder_.setObjectFactory(
184 "RK Backward Euler");
186 builder_.setObjectFactory(
189 "IRK 1 Stage Theta Method");
191 builder_.setObjectFactory(
194 "Implicit Midpoint");
196 builder_.setObjectFactory(
199 "EDIRK 2 Stage Theta Method");
202 builder_.setObjectFactory(
207 builder_.setObjectFactory(
210 "SDIRK 1 Stage 1st order");
212 builder_.setObjectFactory(
215 "SDIRK 2 Stage 2nd order");
217 builder_.setObjectFactory(
220 "SDIRK 2 Stage 3rd order");
222 builder_.setObjectFactory(
225 "SDIRK 3 Stage 4th order");
227 builder_.setObjectFactory(
230 "SDIRK 5 Stage 4th order");
232 builder_.setObjectFactory(
235 "SDIRK 5 Stage 5th order");
237 builder_.setObjectFactory(
243 builder_.setObjectFactory(
246 "EDIRK 2 Stage 3rd order");
249 builder_.setObjectFactory(
252 "RK Implicit 1 Stage 2nd order Gauss");
254 builder_.setObjectFactory(
257 "RK Implicit 2 Stage 4th order Gauss");
259 builder_.setObjectFactory(
262 "RK Implicit 3 Stage 6th order Gauss");
264 builder_.setObjectFactory(
267 "RK Implicit 2 Stage 4th Order Hammer & Hollingsworth");
269 builder_.setObjectFactory(
272 "RK Implicit 3 Stage 6th Order Kuntzmann & Butcher");
279 builder_.setObjectFactory(
282 "RK Implicit 1 Stage 1st order Radau left");
284 builder_.setObjectFactory(
287 "RK Implicit 2 Stage 3rd order Radau left");
289 builder_.setObjectFactory(
292 "RK Implicit 3 Stage 5th order Radau left");
294 builder_.setObjectFactory(
297 "RK Implicit 1 Stage 1st order Radau right");
299 builder_.setObjectFactory(
302 "RK Implicit 2 Stage 3rd order Radau right");
304 builder_.setObjectFactory(
307 "RK Implicit 3 Stage 5th order Radau right");
309 builder_.setObjectFactory(
312 "RK Implicit 2 Stage 2nd order Lobatto A");
314 builder_.setObjectFactory(
317 "RK Implicit 3 Stage 4th order Lobatto A");
319 builder_.setObjectFactory(
322 "RK Implicit 4 Stage 6th order Lobatto A");
324 builder_.setObjectFactory(
327 "RK Implicit 2 Stage 2nd order Lobatto B");
329 builder_.setObjectFactory(
332 "RK Implicit 3 Stage 4th order Lobatto B");
334 builder_.setObjectFactory(
337 "RK Implicit 4 Stage 6th order Lobatto B");
339 builder_.setObjectFactory(
342 "RK Implicit 2 Stage 2nd order Lobatto C");
344 builder_.setObjectFactory(
347 "RK Implicit 3 Stage 4th order Lobatto C");
349 builder_.setObjectFactory(
352 "RK Implicit 4 Stage 6th order Lobatto C");
354 builder_.setDefaultObject(
"None");
361 #endif // Tempus_RKButcherTableauBuilder_impl_hpp
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
RK Explicit 3 Stage 3rd order TVD.
RK Explicit 2 Stage 2nd order by Runge.
Backward Euler Runge-Kutta Butcher Tableau.
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > ¶mList)
Teuchos::RCP< RKButcherTableauBuilder< Scalar > > rKButcherTableauBuilder()
void setRKButcherTableauFactory(const Teuchos::RCP< const Teuchos::AbstractFactory< RKButcherTableau< Scalar > > > &rkbtFactory, const std::string &rkbtFactoryName)
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
General Explicit Runge-Kutta Butcher Tableau.
Forward Euler Runge-Kutta Butcher Tableau.
Runge-Kutta 4th order Butcher Tableau.
Explicit RK 3/8th Rule Butcher Tableau.
Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const
Teuchos::RCP< RKButcherTableau< Scalar > > createRKBT(const std::string &rkbt_name, Teuchos::RCP< Teuchos::ParameterList > pl)
Explicit RK Bogacki-Shampine Butcher Tableau.
Teuchos::RCP< RKButcherTableau< Scalar > > create(const std::string &rkbt_name="") const
void initializeDefaults_()
General Implicit Runge-Kutta Butcher Tableau.
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
RK Explicit 3 Stage 3rd order by Heun.
RK Explicit 5 Stage 3rd order by Kinnmark and Gray.
RK Explicit 4 Stage 3rd order by Runge.
Runge-Kutta Builder class. This factory creates RKButcherTableau objects given the description string...
RK Explicit 3 Stage 3rd order.
RKButcherTableauBuilder()
Explicit RK Merson Butcher Tableau.