1 #ifndef __ODE_SOLVER_FACTORY__ 2 #define __ODE_SOLVER_FACTORY__ 4 #include "dg/dg_base.hpp" 5 #include "ode_solver_base.h" 6 #include "parameters/all_parameters.h" 7 #include "reduced_order/pod_basis_base.h" 8 #include "runge_kutta_methods/rk_tableau_base.h" 9 #include "runge_kutta_methods/rk_tableau_butcher_base.h" 10 #include "runge_kutta_methods/low_storage_rk_tableau_base.h" 11 #include "relaxation_runge_kutta/empty_RRK_base.h" 19 template <
int dim,
int nspecies,
typename real,
typename MeshType = dealii::Triangulation<dim>>
21 template <
int dim,
int nspecies,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
42 static std::shared_ptr<ODESolverBase<dim,nspecies,real,MeshType>>
create_ODESolver_manual(
Parameters::ODESolverParam::ODESolverEnum ode_solver_type, std::shared_ptr<
DGBase<dim, nspecies, real, MeshType> > dg_input, std::shared_ptr<
ProperOrthogonalDecomposition::PODBase<dim,nspecies>> pod, Epetra_Vector weights);
static std::shared_ptr< EmptyRRKBase< dim, nspecies, real, MeshType > > create_RRKObject(std::shared_ptr< DGBase< dim, nspecies, real, MeshType > > dg_input, std::shared_ptr< RKTableauBase< dim, real, MeshType >> rk_tableau)
Creates an RRK object with specified RRK type; if no RRK is being used, creates an RRK object with em...
Files for the baseline physics.
static std::shared_ptr< ODESolverBase< dim, nspecies, real, MeshType > > create_ODESolver_manual(Parameters::ODESolverParam::ODESolverEnum ode_solver_type, std::shared_ptr< DGBase< dim, nspecies, real, MeshType > > dg_input)
Creates either implicit or explicit ODE solver based on manual input (no POD basis given) ...
ODESolverEnum
Types of ODE solver.
Create specified ODE solver as ODESolverBase object.
static std::shared_ptr< ODESolverBase< dim, nspecies, real, MeshType > > create_RungeKuttaODESolver(std::shared_ptr< DGBase< dim, nspecies, real, MeshType > > dg_input)
Creates an ODESolver object based on the specified RK method, including derived classes.
Base class for storing the RK method.
static void display_error_ode_solver_factory(Parameters::ODESolverParam::ODESolverEnum ode_solver_type, bool reduced_order)
Output error message for Implicit and Explicit solver.
static std::shared_ptr< RKTableauBase< dim, real, MeshType > > create_RKTableau(std::shared_ptr< DGBase< dim, nspecies, real, MeshType > > dg_input)
Creates an RKTableau object based on the specified RK method.
static std::shared_ptr< ODESolverBase< dim, nspecies, real, MeshType > > create_ODESolver(std::shared_ptr< DGBase< dim, nspecies, real, MeshType > > dg_input)
Creates either implicit or explicit ODE solver based on parameter value(no POD basis given) ...
DGBase is independent of the number of state variables.