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,
typename real,
typename MeshType = dealii::Triangulation<dim>>
21 template <
int dim,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
static std::shared_ptr< ODESolverBase< dim, real, MeshType > > create_ODESolver_manual(Parameters::ODESolverParam::ODESolverEnum ode_solver_type, std::shared_ptr< DGBase< dim, real, MeshType > > dg_input)
Creates either implicit or explicit ODE solver based on manual input (no POD basis given) ...
Files for the baseline physics.
ODESolverEnum
Types of ODE solver.
Create specified ODE solver as ODESolverBase object.
static std::shared_ptr< ODESolverBase< dim, real, MeshType > > create_RungeKuttaODESolver(std::shared_ptr< DGBase< dim, real, MeshType > > dg_input)
Creates an ODESolver object based on the specified RK method, including derived classes.
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, real, MeshType > > dg_input)
Creates an RKTableau object based on the specified RK method.
Base class for storing the RK method.
DGBase is independent of the number of state variables.
static std::shared_ptr< ODESolverBase< dim, real, MeshType > > create_ODESolver(std::shared_ptr< DGBase< dim, real, MeshType > > dg_input)
Creates either implicit or explicit ODE solver based on parameter value(no POD basis given) ...
static std::shared_ptr< EmptyRRKBase< dim, real, MeshType > > create_RRKObject(std::shared_ptr< DGBase< dim, 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...