[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
flow_solver_case_base.h
1 #ifndef __FLOW_SOLVER_CASE_BASE__
2 #define __FLOW_SOLVER_CASE_BASE__
3 
4 // for FlowSolver class:
5 #include <deal.II/base/table_handler.h>
6 #include <deal.II/distributed/shared_tria.h>
7 #include <deal.II/distributed/tria.h>
8 
9 #include "dg/dg_base.hpp"
10 #include "parameters/all_parameters.h"
11 #include "physics/initial_conditions/initial_condition_function.h"
12 #include "ode_solver/ode_solver_base.h"
13 
14 namespace PHiLiP {
15 namespace FlowSolver {
16 
17 #if PHILIP_DIM==1
18 using Triangulation = dealii::Triangulation<PHILIP_DIM>;
19 #else
20 using Triangulation = dealii::parallel::distributed::Triangulation<PHILIP_DIM>;
21 #endif
22 
23 template <int dim, int nspecies, int nstate>
25 {
26 public:
28  explicit FlowSolverCaseBase(const Parameters::AllParameters *const parameters_input);
29 
30  std::shared_ptr<InitialConditionFunction<dim,nspecies,nstate,double>> initial_condition_function;
31 
33  virtual ~FlowSolverCaseBase() = default;
34 
36  void display_flow_solver_setup(std::shared_ptr<DGBase<dim,nspecies,double>> dg) const;
37 
39  virtual std::shared_ptr<Triangulation> generate_grid() const = 0;
40 
42  virtual void set_higher_order_grid(std::shared_ptr <DGBase<dim, nspecies, double>> dg) const;
43 
46  const std::shared_ptr <ODE::ODESolverBase<dim, nspecies, double>> ode_solver,
47  const std::shared_ptr <DGBase<dim, nspecies, double>> dg,
48  const std::shared_ptr<dealii::TableHandler> unsteady_data_table,
49  const bool do_write_unsteady_data_table_file);
50 
52  virtual double get_constant_time_step(std::shared_ptr <DGBase<dim, nspecies, double>> dg) const;
53 
55  virtual double get_adaptive_time_step(std::shared_ptr <DGBase<dim, nspecies, double>> dg) const;
56 
58  virtual double get_adaptive_time_step_initial(std::shared_ptr <DGBase<dim, nspecies, double>> dg);
59 
61  virtual void steady_state_postprocessing(std::shared_ptr <DGBase<dim, nspecies, double>> dg) const;
62 
64  virtual void compute_time_averaged_solution(
65  const std::shared_ptr <ODE::ODESolverBase<dim, nspecies, double>> ode_solver,
66  const std::shared_ptr <DGBase<dim, nspecies, double>> dg,
67  const double time_step);
68 
70  virtual void compute_Reynolds_stress(
71  const std::shared_ptr <ODE::ODESolverBase<dim, nspecies, double>> ode_solver,
72  const std::shared_ptr <DGBase<dim, nspecies, double>> dg,
73  const double time_step);
74 
76  void set_time_step(const double time_step_input);
77 
79  virtual void modify_dg_object(std::shared_ptr <DGBase<dim, nspecies, double>> dg) const;
80 
81 protected:
83  const MPI_Comm mpi_communicator;
84  const int mpi_rank;
85  const int n_mpi;
86 
88 
90  dealii::ConditionalOStream pcout;
91 
92 public:
95  const double value,
96  const std::string value_string,
97  const std::shared_ptr <dealii::TableHandler> data_table) const;
98 
99 protected:
101  virtual void display_additional_flow_case_specific_parameters() const = 0;
102 
104  double get_time_step() const;
105 
106 private:
108  std::string get_pde_string() const;
109 
111  std::string get_flow_case_string() const;
112 
114  double time_step;
115 };
116 
117 } // FlowSolver namespace
118 } // PHiLiP namespace
119 
120 #endif
std::shared_ptr< InitialConditionFunction< dim, nspecies, nstate, double > > initial_condition_function
Initial condition function.
virtual double get_constant_time_step(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Virtual function to compute the constant time step.
virtual void set_higher_order_grid(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Set higher order grid.
std::string get_pde_string() const
Returns the pde type string from the all_param class member.
const Parameters::AllParameters all_param
All parameters.
virtual void compute_Reynolds_stress(const std::shared_ptr< ODE::ODESolverBase< dim, nspecies, double >> ode_solver, const std::shared_ptr< DGBase< dim, nspecies, double >> dg, const double time_step)
Virtual function for computing time-averaged Reynolds Stresses for turbulent cases.
virtual std::shared_ptr< Triangulation > generate_grid() const =0
Pure Virtual function to generate the grid.
virtual void compute_time_averaged_solution(const std::shared_ptr< ODE::ODESolverBase< dim, nspecies, double >> ode_solver, const std::shared_ptr< DGBase< dim, nspecies, double >> dg, const double time_step)
Virtual function for computing time-averaged solution for turbulent cases.
Files for the baseline physics.
Definition: ADTypes.hpp:10
Base class ODE solver.
virtual double get_adaptive_time_step(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Virtual function to compute the adaptive time step.
virtual void steady_state_postprocessing(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Virtual function for postprocessing when solving for steady state.
Main parameter class that contains the various other sub-parameter classes.
void display_flow_solver_setup(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Displays the flow setup parameters.
virtual double get_adaptive_time_step_initial(std::shared_ptr< DGBase< dim, nspecies, double >> dg)
Virtual function to compute the initial adaptive time step.
virtual void display_additional_flow_case_specific_parameters() const =0
Display additional more specific flow case parameters.
virtual ~FlowSolverCaseBase()=default
Destructor.
FlowSolverCaseBase(const Parameters::AllParameters *const parameters_input)
Constructor.
std::string get_flow_case_string() const
Returns the flow case type string from the all_param class member.
const MPI_Comm mpi_communicator
MPI communicator.
dealii::ConditionalOStream pcout
ConditionalOStream.
void add_value_to_data_table(const double value, const std::string value_string, const std::shared_ptr< dealii::TableHandler > data_table) const
Add a value to a given data table with scientific format.
double get_time_step() const
Getter for time step.
DGBase is independent of the number of state variables.
Definition: dg_base.hpp:82
virtual void modify_dg_object(std::shared_ptr< DGBase< dim, nspecies, double >> dg) const
Allows user to modify DG object during flow solver routines.
const int n_mpi
Number of MPI processes.
virtual void compute_unsteady_data_and_write_to_table(const std::shared_ptr< ODE::ODESolverBase< dim, nspecies, double >> ode_solver, const std::shared_ptr< DGBase< dim, nspecies, double >> dg, const std::shared_ptr< dealii::TableHandler > unsteady_data_table, const bool do_write_unsteady_data_table_file)
Virtual function to write unsteady snapshot data to table.
void set_time_step(const double time_step_input)
Setter for time step.