[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
navier_stokes_model.h
1 #ifndef __NAVIER_STOKES_MODEL__
2 #define __NAVIER_STOKES_MODEL__
3 
4 #include "model.h"
5 #include "navier_stokes.h"
6 #include "euler.h"
7 
8 namespace PHiLiP {
9 namespace Physics {
10 
12 template <int dim, int nspecies, int nstate, typename real>
13 class NavierStokesWithModelSourceTerms : public ModelBase <dim, nspecies, nstate, real>
14 {
15 public:
20  const Parameters::AllParameters *const parameters_input,
21  const double ref_length,
22  const double gamma_gas,
23  const double mach_inf,
24  const double angle_of_attack,
25  const double side_slip_angle,
26  const double prandtl_number,
27  const double reynolds_number_inf,
28  const bool use_constant_viscosity,
29  const double constant_viscosity,
30  const double temperature_inf,
31  const double relaxation_coefficient,
32  const double isothermal_wall_temperature = 1.0,
33  const thermal_boundary_condition_enum thermal_boundary_condition_type = thermal_boundary_condition_enum::adiabatic,
35  const two_point_num_flux_enum two_point_num_flux_type = two_point_num_flux_enum::KG);
36 
39 
40  const double relaxation_coefficient;
41 
43  std::unique_ptr< NavierStokes<dim,nspecies,nstate,real> > navier_stokes_physics;
44 
46  std::array<dealii::Tensor<1,dim,real>,nstate> convective_flux (
47  const std::array<real,nstate> &conservative_soln) const;
48 
50  std::array<dealii::Tensor<1,dim,real>,nstate> dissipative_flux (
51  const std::array<real,nstate> &conservative_soln,
52  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
53  const dealii::types::global_dof_index cell_index) const;
54 
56  std::array<real,nstate> dissipative_flux_dot_normal (
57  const std::array<real,nstate> &solution,
58  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
59  const std::array<real,nstate> &filtered_solution,
60  const std::array<dealii::Tensor<1,dim,real>,nstate> &filtered_solution_gradient,
61  const bool on_boundary,
62  const dealii::types::global_dof_index cell_index,
63  const dealii::Tensor<1,dim,real> &normal,
64  const int boundary_type) const;
65 
67 
68  std::array<real,nstate> convective_eigenvalues (
69  const std::array<real,nstate> &/*conservative_soln*/,
70  const dealii::Tensor<1,dim,real> &/*normal*/) const override;
71 
73 
74  real max_convective_eigenvalue (const std::array<real,nstate> &soln) const;
75 
77 
79  const std::array<real,nstate> &soln,
80  const dealii::Tensor<1,dim,real> &normal) const;
81 
83  std::array<real,nstate> source_term (
84  const dealii::Point<dim,real> &pos,
85  const std::array<real,nstate> &solution,
86  const real current_time,
87  const dealii::types::global_dof_index cell_index) const;
88 
90  std::array<real,nstate> physical_source_term (
91  const dealii::Point<dim,real> &pos,
92  const std::array<real,nstate> &conservative_solution,
93  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
94  const dealii::types::global_dof_index cell_index) const override;
95 
96 protected:
97  std::array<real,nstate> zero_array;
98  std::array<dealii::Tensor<1,dim,real>,nstate> zero_tensor_array;
99 
101 
104  std::array<real,nstate> channel_flow_source_term (
105  const std::array<real,nstate> &conservative_soln) const;
106 };
107 
108 } // Physics namespace
109 } // PHiLiP namespace
110 
111 #endif
Manufactured solution used for grid studies to check convergence orders.
std::array< real, nstate > dissipative_flux_dot_normal(const std::array< real, nstate > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const std::array< real, nstate > &filtered_solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &filtered_solution_gradient, const bool on_boundary, const dealii::types::global_dof_index cell_index, const dealii::Tensor< 1, dim, real > &normal, const int boundary_type) const
Dissipative (i.e. viscous) flux: dot normal vector.
Files for the baseline physics.
Definition: ADTypes.hpp:10
std::array< real, nstate > source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const real current_time, const dealii::types::global_dof_index cell_index) const
Source term for manufactured solution functions.
std::array< real, nstate > physical_source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &conservative_solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const override
Physical source term.
Physics model additional terms and equations to the baseline physics.
Definition: model.h:18
std::array< real, nstate > convective_eigenvalues(const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const override
Convective eigenvalues of the additional models&#39; PDEs.
Main parameter class that contains the various other sub-parameter classes.
std::array< real, nstate > channel_flow_source_term(const std::array< real, nstate > &conservative_soln) const
Channel flow source term.
TwoPointNumericalFlux
Two point numerical flux type for split form.
std::array< dealii::Tensor< 1, dim, real >, nstate > dissipative_flux(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const
Dissipative (i.e. viscous) flux: .
std::unique_ptr< NavierStokes< dim, nspecies, nstate, real > > navier_stokes_physics
Pointer to Navier-Stokes physics object.
std::array< dealii::Tensor< 1, dim, real >, nstate > zero_tensor_array
Tensor array of zeros.
const double relaxation_coefficient
Relaxation coefficient for the channel flow source term.
Navier Stokes equations with model source term.
std::array< real, nstate > zero_array
Array of zeros.
real max_convective_normal_eigenvalue(const std::array< real, nstate > &soln, const dealii::Tensor< 1, dim, real > &normal) const
Maximum convective normal eigenvalue (used in Lax-Friedrichs) of the additional models&#39; PDEs...
ThermalBoundaryCondition
Types of thermal boundary conditions available.
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &conservative_soln) const
Convective flux: .
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
Definition: model.h:29
NavierStokesWithModelSourceTerms(const Parameters::AllParameters *const parameters_input, const double ref_length, const double gamma_gas, const double mach_inf, const double angle_of_attack, const double side_slip_angle, const double prandtl_number, const double reynolds_number_inf, const bool use_constant_viscosity, const double constant_viscosity, const double temperature_inf, const double relaxation_coefficient, const double isothermal_wall_temperature=1.0, const thermal_boundary_condition_enum thermal_boundary_condition_type=thermal_boundary_condition_enum::adiabatic, std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr, const two_point_num_flux_enum two_point_num_flux_type=two_point_num_flux_enum::KG)
Constructor.
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const
Maximum convective eigenvalue of the additional models&#39; PDEs.