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 ...