1 #ifndef __FLOW_SOLVER_H__ 2 #define __FLOW_SOLVER_H__ 5 #include "flow_solver_cases/flow_solver_case_base.h" 6 #include "physics/physics.h" 7 #include "parameters/all_parameters.h" 10 #include <deal.II/base/function.h> 11 #include <deal.II/distributed/shared_tria.h> 12 #include <deal.II/distributed/tria.h> 13 #include <deal.II/dofs/dof_tools.h> 14 #include <deal.II/grid/grid_tools.h> 15 #include <deal.II/grid/tria.h> 16 #include <deal.II/numerics/vector_tools.h> 23 #include "dg/dg_base.hpp" 24 #include "dg/dg_factory.hpp" 25 #include "physics/physics_factory.h" 27 #include "ode_solver/runge_kutta_ode_solver.h" 28 #include "ode_solver/ode_solver_factory.h" 30 #include "reduced_order/pod_basis_online.h" 32 #include <deal.II/base/table_handler.h> 34 #include <deal.II/base/parameter_handler.h> 37 namespace FlowSolver {
40 using Triangulation = dealii::Triangulation<PHILIP_DIM>;
42 using Triangulation = dealii::parallel::distributed::Triangulation<PHILIP_DIM>;
58 virtual int run()
const = 0;
63 template <
int dim,
int nstate>
71 const dealii::ParameterHandler ¶meter_handler_input);
80 int run ()
const override;
83 void initialize_data_table_from_file(
84 std::string data_table_filename_with_extension,
85 const std::shared_ptr <dealii::TableHandler> data_table)
const;
88 std::string get_restart_filename_without_extension(
const unsigned int restart_index_input)
const;
97 dealii::ConditionalOStream
pcout;
114 std::shared_ptr<DGBase<dim, double>>
dg;
119 std::shared_ptr<ProperOrthogonalDecomposition::OnlinePOD<dim>> time_pod;
124 std::vector<std::string> get_data_table_column_names(
const std::string string_input)
const;
127 void write_restart_parameter_file(
const unsigned int restart_index_input,
128 const double constant_time_step_input)
const;
131 std::string double_to_string(
const double value_input)
const;
134 void output_restart_files(
136 const unsigned int current_restart_index,
137 const double constant_time_step,
138 const std::shared_ptr <dealii::TableHandler> unsteady_data_table)
const;
144 void perform_steady_state_mesh_adaptation()
const;
const MPI_Comm mpi_communicator
MPI communicator.
dealii::Table< 1, double > output_solution_fixed_times
Fixed times at which to output the solution.
Selects which flow case to simulate.
dealii::ConditionalOStream pcout
ConditionalOStream.
std::shared_ptr< FlowSolverCaseBase< dim, nstate > > flow_solver_case
Pointer to Flow Solver Case.
std::shared_ptr< DGBase< dim, double > > dg
Pointer to dg so it can be accessed externally.
const Parameters::FlowSolverParam flow_solver_param
Flow solver parameters.
const int mpi_rank
MPI rank.
Files for the baseline physics.
const std::string input_parameters_file_reference_copy_filename
Name of the reference copy of inputted parameters file; for restart purposes.
Main parameter class that contains the various other sub-parameter classes.
virtual int run() const =0
Basically the main and only function of this class.
const Parameters::AllParameters all_param
All parameters.
const Parameters::ODESolverParam ode_param
ODE solver parameters.
Parameters related to the flow solver.
std::shared_ptr< ODE::ODESolverBase< dim, double > > ode_solver
Pointer to ode solver so it can be accessed externally.
Parameters related to the ODE solver.
const bool do_output_solution_at_fixed_times
Flag for outputting solution at fixed times.
const double final_time
Final time of solution.
const unsigned int number_of_fixed_times_to_output_solution
Number of fixed times to output the solution.
Base class of all the flow solvers.
virtual ~FlowSolverBase()=default
Destructor.
const unsigned int poly_degree
Polynomial order.
const unsigned int grid_degree
Polynomial order of the grid.
const bool output_solution_at_exact_fixed_times
Flag for outputting the solution at exact fixed times by decreasing the time step on the fly...
const dealii::ParameterHandler & parameter_handler
Parameter handler for storing the .prm file being ran.