1 #ifndef __NEGATIVE_SPALART_ALLMARAS_RANS_MODEL__ 2 #define __NEGATIVE_SPALART_ALLMARAS_RANS_MODEL__ 5 #include "navier_stokes.h" 7 #include "reynolds_averaged_navier_stokes.h" 13 template <
int dim,
int nstate,
typename real>
24 const double ref_length,
25 const double gamma_gas,
26 const double mach_inf,
27 const double angle_of_attack,
28 const double side_slip_angle,
29 const double prandtl_number,
30 const double reynolds_number_inf,
31 const bool use_constant_viscosity,
32 const double constant_viscosity,
34 const double temperature_inf = 273.15,
35 const double isothermal_wall_temperature = 1.0,
48 const std::array<real,nstate_navier_stokes> &primitive_soln_rans,
49 const std::array<dealii::Tensor<1,dim,real>,nstate_navier_stokes> &primitive_soln_gradient_rans,
50 const std::array<real,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
54 const std::array<real,nstate_navier_stokes> &primitive_soln_rans,
55 const std::array<dealii::Tensor<1,dim,real>,nstate_navier_stokes> &primitive_soln_gradient_rans,
56 const std::array<real,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
60 const std::array<FadType,nstate_navier_stokes> &primitive_soln_rans,
61 const std::array<dealii::Tensor<1,dim,FadType>,nstate_navier_stokes> &primitive_soln_gradient_rans,
62 const std::array<FadType,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
66 const std::array<FadType,nstate_navier_stokes> &primitive_soln_rans,
67 const std::array<dealii::Tensor<1,dim,FadType>,nstate_navier_stokes> &primitive_soln_gradient_rans,
68 const std::array<FadType,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
72 const std::array<real,nstate_navier_stokes> &primitive_soln_rans,
73 const std::array<real,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
77 const std::array<FadType,nstate_navier_stokes> &primitive_soln_rans,
78 const std::array<FadType,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
82 const std::array<real,nstate_navier_stokes> &primitive_soln_rans,
83 const std::array<real,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
87 const std::array<FadType,nstate_navier_stokes> &primitive_soln_rans,
88 const std::array<FadType,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
92 const dealii::Point<dim,real> &pos,
93 const std::array<real,nstate> &conservative_solution,
94 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient)
const;
98 const dealii::Vector<double> &uh,
99 const std::vector<dealii::Tensor<1,dim> > &,
100 const std::vector<dealii::Tensor<2,dim> > &,
101 const dealii::Tensor<1,dim> &,
102 const dealii::Point<dim> &)
const override;
113 const std::array<real2,nstate_navier_stokes> &primitive_soln_rans,
114 const std::array<dealii::Tensor<1,dim,real2>,nstate_navier_stokes> &primitive_soln_gradient_rans,
115 const std::array<real2,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
119 const std::array<real2,nstate_navier_stokes> &primitive_soln_rans,
120 const std::array<dealii::Tensor<1,dim,real2>,nstate_navier_stokes> &primitive_soln_gradient_rans,
121 const std::array<real2,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
125 const real2 coefficient)
const;
132 std::array<real,nstate> &soln_bc,
133 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const override;
137 const std::array<real,nstate> &soln_int,
138 const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
139 std::array<real,nstate> &soln_bc,
140 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const override;
147 const std::array<real,nstate> &soln_int,
148 const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
149 std::array<real,nstate> &soln_bc,
150 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const override;
157 std::array<real,nstate> &soln_bc)
const override;
165 const std::array<real2,nstate_navier_stokes> &primitive_soln_rans,
166 const std::array<real2,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
173 const std::array<real2,nstate_navier_stokes> &primitive_soln_rans,
174 const std::array<real2,nstate_turbulence_model> &primitive_soln_turbulence_model)
const;
181 const real2 nu_tilde,
182 const real2 laminar_kinematic_viscosity)
const;
189 const real2 coefficient_Chi)
const;
196 const real coefficient_Chi)
const;
203 const real2 nu_tilde,
204 const real2 laminar_kinematic_viscosity)
const;
211 const real coefficient_Chi)
const;
218 const real coefficient_g)
const;
227 const real s_tilde)
const;
234 const real coefficient_r)
const;
238 const std::array<real,nstate_navier_stokes> &conservative_soln_rans,
239 const std::array<dealii::Tensor<1,dim,real>,nstate_navier_stokes> &conservative_soln_gradient_rans)
const;
246 const real coefficient_Chi,
248 const real d_wall)
const;
255 const real coefficient_Chi,
266 const real coefficient_f_t2,
270 const real s_tilde)
const;
278 const real coefficient_f_t2,
282 const real s_tilde)
const;
291 const real laminar_kinematic_viscosity,
292 const std::array<dealii::Tensor<1,dim,real>,nstate_navier_stokes> &primitive_soln_gradient_rans,
293 const std::array<dealii::Tensor<1,dim,real>,nstate_turbulence_model> &primitive_solution_gradient_turbulence_model)
const;
299 const real sigma = 2.0/3.0;
300 const real c_b2 = 0.622;
301 const real kappa = 0.41;
302 const real c_w1 = c_b1/(kappa*kappa)+(1+c_b2)/sigma;
303 const real c_w2 = 0.3;
304 const real c_w3 = 2.0;
305 const real c_v1 = 7.1;
306 const real c_v2 = 0.7;
307 const real c_v3 = 0.9;
308 const real c_t3 = 1.2;
309 const real c_t4 = 0.5;
310 const real c_n1 = 16.0;
311 const real r_lim = 10.0;
313 const FadType sigma_fad = 2.0/3.0;
314 const FadType c_v1_fad = 7.1;
315 const FadType c_n1_fad = 16.0;
static const int nstate_navier_stokes
Number of PDEs for RANS equations.
std::array< real, nstate-(dim+2)> compute_effective_viscosity_turbulence_model(const std::array< real, nstate_navier_stokes > &primitive_soln_rans, const std::array< real, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized effective (total) viscosities for the negative SA model.
real compute_s_bar(const real coefficient_Chi, const real nu_tilde, const real d_wall) const
Correction of vorticity magnitude for the negative SA model.
std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function
Manufactured solution function.
real2 scale_coefficient(const real2 coefficient) const
Templated nondimensionalized variables scaled by reynolds_number_inf for the negative SA model...
real2 compute_coefficient_f_v1(const real2 coefficient_Chi) const
Templated coefficient f_v1 for the negative SA model.
Negative Spalart-Allmaras model. Derived from Reynolds Averaged Navier Stokes.
void boundary_inflow(const std::array< real, nstate > &soln_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const override
Inflow boundary condition.
Sacado::Fad::DFad< double > FadType
Sacado AD type for first derivatives.
real compute_coefficient_r(const real nu_tilde, const real d_wall, const real s_tilde) const
Coefficient r for the negative SA model.
real compute_coefficient_g(const real coefficient_r) const
Coefficient g for the negative SA model.
Manufactured solution used for grid studies to check convergence orders.
FadType compute_eddy_viscosity_fad(const std::array< FadType, nstate_navier_stokes > &primitive_soln_rans, const std::array< FadType, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized eddy viscosity for the negative SA model (Automatic Differentiation Type: FadType)...
static const int nstate_turbulence_model
Number of PDEs for RANS turbulence model.
dealii::Tensor< 1, dim, real > compute_Reynolds_heat_flux(const std::array< real, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, real >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< real, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized Reynolds heat flux, (q^reynolds)*, for the negative SA model.
Files for the baseline physics.
dealii::Tensor< 2, dim, real2 > compute_Reynolds_stress_tensor_templated(const std::array< real2, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, real2 >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< real2, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Templated nondimensionalized Reynolds stress tensor, (tau^reynolds)* for the negative SA model...
std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > post_get_data_component_interpretation() const override
For post processing purposes, sets the interpretation of each computed quantity as either scalar or v...
real2 compute_coefficient_Chi(const real2 nu_tilde, const real2 laminar_kinematic_viscosity) const
Templated coefficient Chi for the negative SA model.
std::array< real2, nstate-(dim+2)> compute_effective_viscosity_turbulence_model_templated(const std::array< real2, nstate_navier_stokes > &primitive_soln_rans, const std::array< real2, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Templated nondimensionalized effective (total) viscosities for the negative SA model.
Main parameter class that contains the various other sub-parameter classes.
dealii::Tensor< 2, dim, real > compute_Reynolds_stress_tensor(const std::array< real, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, real >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< real, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized Reynolds stress tensor, (tau^reynolds)*, for the negative SA model.
real compute_s(const std::array< real, nstate_navier_stokes > &conservative_soln_rans, const std::array< dealii::Tensor< 1, dim, real >, nstate_navier_stokes > &conservative_soln_gradient_rans) const
Vorticity magnitude for the negative SA model, sqrt(vorticity_x^2+vorticity_y^2+vorticity_z^2) ...
const real c_b1
Constant coefficients for the negative SA model.
real compute_coefficient_f_v2(const real coefficient_Chi) const
Coefficient f_v2 for the negative SA model.
real compute_eddy_viscosity(const std::array< real, nstate_navier_stokes > &primitive_soln_rans, const std::array< real, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized eddy viscosity for the negative SA model.
std::array< real, nstate > compute_production_source(const real coefficient_f_t2, const real density, const real nu_tilde, const real s, const real s_tilde) const
Production source term for the negative SA model.
TwoPointNumericalFlux
Two point numerical flux type for split form.
std::vector< std::string > post_get_names() const override
For post processing purposes, sets the base names (with no prefix or suffix) of the computed quantiti...
void boundary_wall(std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const override
Wall boundary condition.
std::array< FadType, nstate-(dim+2)> compute_effective_viscosity_turbulence_model_fad(const std::array< FadType, nstate_navier_stokes > &primitive_soln_rans, const std::array< FadType, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized effective (total) viscosities for the negative SA model (Automatic Differentiation...
Reynolds-Averaged Navier-Stokes (RANS) equations. Derived from Navier-Stokes for modifying the stress...
real compute_coefficient_f_t2(const real coefficient_Chi) const
Coefficient f_t2 for the negative SA model.
ReynoldsAveragedNavierStokes_SAneg(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 turbulent_prandtl_number, const double temperature_inf=273.15, 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, real > > manufactured_solution_function=nullptr, const two_point_num_flux_enum two_point_num_flux_type=two_point_num_flux_enum::KG)
std::array< real, nstate > compute_production_dissipation_cross_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
Physical source term (production, dissipation source terms and source term with cross derivatives) fo...
real2 compute_coefficient_f_n(const real2 nu_tilde, const real2 laminar_kinematic_viscosity) const
Templated coefficient f_n for the negative SA model.
dealii::Tensor< 1, dim, real2 > compute_Reynolds_heat_flux_templated(const std::array< real2, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, real2 >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< real2, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Templated nondimensionalized Reynolds heat flux, (q^reynolds)* for the negative SA model...
std::array< real, nstate > compute_dissipation_source(const real coefficient_f_t2, const real density, const real nu_tilde, const real d_wall, const real s_tilde) const
Dissipation source term for the negative SA model.
real compute_s_tilde(const real coefficient_Chi, const real nu_tilde, const real d_wall, const real s) const
Modified vorticity magnitude for the negative SA model.
real compute_coefficient_f_w(const real coefficient_g) const
Coefficient f_t2 for the negative SA model.
const double turbulent_prandtl_number
Turbulent Prandtl number.
real2 compute_eddy_viscosity_templated(const std::array< real2, nstate_navier_stokes > &primitive_soln_rans, const std::array< real2, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Templated nondimensionalized eddy viscosity for the negative SA model.
void boundary_farfield(std::array< real, nstate > &soln_bc) const override
Farfield boundary conditions based on freestream values.
std::array< real, nstate > compute_cross_source(const real density, const real nu_tilde, const real laminar_kinematic_viscosity, const std::array< dealii::Tensor< 1, dim, real >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< dealii::Tensor< 1, dim, real >, nstate_turbulence_model > &primitive_solution_gradient_turbulence_model) const
Source term with cross derivatives for the negative SA model.
void boundary_outflow(const std::array< real, nstate > &soln_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const override
Outflow boundary condition.
dealii::Tensor< 1, dim, FadType > compute_Reynolds_heat_flux_fad(const std::array< FadType, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, FadType >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< FadType, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized Reynolds heat flux, (q^reynolds)* (Automatic Differentiation Type: FadType)...
ThermalBoundaryCondition
Types of thermal boundary conditions available.
dealii::Tensor< 2, dim, FadType > compute_Reynolds_stress_tensor_fad(const std::array< FadType, nstate_navier_stokes > &primitive_soln_rans, const std::array< dealii::Tensor< 1, dim, FadType >, nstate_navier_stokes > &primitive_soln_gradient_rans, const std::array< FadType, nstate_turbulence_model > &primitive_soln_turbulence_model) const
Nondimensionalized Reynolds stress tensor, (tau^reynolds)* (Automatic Differentiation Type: FadType)...
dealii::Vector< double > post_compute_derived_quantities_vector(const dealii::Vector< double > &uh, const std::vector< dealii::Tensor< 1, dim > > &, const std::vector< dealii::Tensor< 2, dim > > &, const dealii::Tensor< 1, dim > &, const dealii::Point< dim > &) const override
For post processing purposes, returns conservative and primitive solution variables for the negative ...