30 #include "libmesh/getpot.h"
31 #include "libmesh/mesh.h"
32 #include "libmesh/fem_system.h"
40 _C( input(
"Stabilization/tau_constant_vel", input(
"Stabilization/tau_constant", 1 ) ) ),
41 _tau_factor( input(
"Stabilization/tau_factor_vel", input(
"Stabilization/tau_factor", 0.5 ) ) ),
43 _turbulence_vars(input),
44 _spalart_allmaras_helper(input),
63 this->
_dim = system.get_mesh().mesh_dimension();
69 unsigned int qp,
const libMesh::Real rho,
const libMesh::Real mu,
const libMesh::Real distance_qp )
const
76 libMesh::NumberVectorValue U(u,v);
77 if ( context.get_system().get_mesh().mesh_dimension() == 3 )
80 libMesh::RealGradient grad_u = context.fixed_interior_gradient(this->
_flow_vars.
u_var(), qp);
81 libMesh::RealGradient grad_v = context.fixed_interior_gradient(this->
_flow_vars.
v_var(), qp);
90 libMesh::Number rhoUdotGradnu = rho*(U*grad_nu);
93 libMesh::Number inv_sigmadivnuplusnuphysicalGradnu = (1./this->
_sa_params.
get_sigma())*(grad_nu*grad_nu + ((nu_value + mu)*(hess_nu(0,0) + hess_nu(1,1) + (this->
_dim == 3)?hess_nu(2,2):0)) + this->
_sa_params.
get_cb2()*grad_nu*grad_nu);
97 libMesh::Real S_tilde = this->
_sa_params.
source_fn(nu_value, mu, distance_qp, vorticity_value_qp);
102 libMesh::Real destruction_term = this->
_sa_params.
get_cw1()*fw*pow(nu_value/distance_qp, 2.);
104 return rhoUdotGradnu + source_term + inv_sigmadivnuplusnuphysicalGradnu - destruction_term;
109 unsigned int ,
const libMesh::Real ,
const libMesh::Real ,
118 libmesh_not_implemented();
133 const libMesh::Real ,
134 libMesh::RealGradient& ,
138 libmesh_not_implemented();
VariableIndex w_var() const
PrimitiveFlowVariables _flow_vars
VariableIndex nu_var() const
libMesh::Real source_fn(libMesh::Number nu, libMesh::Real mu, libMesh::Real wall_distance, libMesh::Real vorticity_value) const
void compute_res_spalart_transient_and_derivs(AssemblyContext &context, unsigned int qp, const libMesh::Real rho, libMesh::RealGradient &res_M, libMesh::Real &d_res_Muvw_duvw) const
libMesh::Real get_cw1() const
libMesh::Real destruction_fn(libMesh::Number nu, libMesh::Real wall_distance, libMesh::Real S_tilde) const
libMesh::Real compute_res_spalart_steady(AssemblyContext &context, unsigned int qp, const libMesh::Real rho, const libMesh::Real mu, const libMesh::Real distance_qp) const
~SpalartAllmarasStabilizationHelper()
virtual void init(libMesh::FEMSystem *system)
libMesh::Real get_sigma() const
libMesh::Real get_cb2() const
libMesh::Real compute_res_spalart_transient(AssemblyContext &context, unsigned int qp, const libMesh::Real rho) const
void init(libMesh::FEMSystem &system)
VariableIndex u_var() const
virtual void init(libMesh::FEMSystem *system)
SpalartAllmarasHelper _spalart_allmaras_helper
libMesh::Real vorticity(AssemblyContext &context, unsigned int qp) const
TurbulenceVariables _turbulence_vars
libMesh::Real get_cb1() const
SpalartAllmarasStabilizationHelper(const std::string &helper_name, const GetPot &input)
SpalartAllmarasParameters _sa_params
VariableIndex v_var() const
unsigned int _dim
Physical dimension of problem.
void init_variables(libMesh::FEMSystem *system)
void compute_res_spalart_steady_and_derivs(AssemblyContext &context, unsigned int qp, const libMesh::Real rho, const libMesh::Real mu, libMesh::Gradient &res_M, libMesh::Tensor &d_res_M_dgradp, libMesh::Tensor &d_res_M_dU, libMesh::Gradient &d_res_Muvw_dgraduvw, libMesh::Tensor &d_res_Muvw_dhessuvw) const