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.