oomph::ODEFactories Namespace Reference

Functions

SolutionFunctorBaseexact_solutions_factory (const std::string &exact_name)
 

Function Documentation

◆ exact_solutions_factory()

SolutionFunctorBase* oomph::ODEFactories::exact_solutions_factory ( const std::string &  exact_name)
256  {
257  if(exact_name == "damped_oscillation")
258  {
259  return new deriv_functions::DampedOscillation;
260  }
261  else if(exact_name == "simple_stiff")
262  {
263  return new deriv_functions::SimpleStiffTest;
264  }
265  else if(exact_name == "order_reduction")
266  {
267  return new deriv_functions::OrderReductionTest;
268  }
269  else if(exact_name == "strong_order_reduction")
270  {
271  return new deriv_functions::OrderReductionTest;
272  }
273 
274  SolutionFunctorBase::TimeSpaceToDoubleVectFctPt fpt;
275  SolutionFunctorBase::TimeSpaceValueToDoubleVectFctPt dfpt;
276 
277  if(exact_name == "sin")
278  {
279  fpt = &deriv_functions::sin;
280  dfpt = &deriv_functions::dsin;
281  }
282  else if(exact_name == "cos")
283  {
284  fpt = &deriv_functions::cos;
285  dfpt = &deriv_functions::dcos;
286  }
287  else if(exact_name == "exp")
288  {
289  fpt = &deriv_functions::exp;
290  dfpt = &deriv_functions::dexp;
291  }
292  else if(exact_name == "poly3")
293  {
294  fpt = &deriv_functions::poly3;
295  dfpt = &deriv_functions::dpoly3;
296  }
297  else if(exact_name == "stiff_test")
298  {
301  }
302  else if(exact_name == "poly2")
303  {
304  fpt = &deriv_functions::poly2;
305  dfpt = &deriv_functions::dpoly2;
306  }
307  else
308  {
309  throw OomphLibError("Unrecognised exact solution " + exact_name,
312  }
313 
314  return new SolutionFunctor(fpt, dfpt);
315  }
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
AnnoyingScalar sin(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:137
Vector< double > dexp(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:77
Vector< double > dpoly2(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:95
Vector< double > dcos(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:47
Vector< double > dstiff_test(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:137
Vector< double > dsin(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:62
Vector< double > poly2(const double &time, const Vector< double > &x)
Definition: ode_example_functions.h:87
Vector< double > dpoly3(const double &t, const Vector< double > &x, const Vector< double > &u)
Definition: ode_example_functions.h:115
Vector< double > poly3(const double &time, const Vector< double > &x)
Definition: ode_example_functions.h:107
Vector< double > stiff_test(const double &time, const Vector< double > &x)
Definition: ode_example_functions.h:126
Vector< double > exp(const double &time, const Vector< double > &x)
Definition: ode_example_functions.h:71
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References oomph::deriv_functions::cos(), oomph::deriv_functions::dcos(), oomph::deriv_functions::dexp(), oomph::deriv_functions::dpoly2(), oomph::deriv_functions::dpoly3(), oomph::deriv_functions::dsin(), oomph::deriv_functions::dstiff_test(), oomph::deriv_functions::exp(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::deriv_functions::poly2(), oomph::deriv_functions::poly3(), oomph::deriv_functions::sin(), and oomph::deriv_functions::stiff_test().

Referenced by main().