37 #include "libmesh/getpot.h" 
   38 #include "libmesh/mesh.h" 
   39 #include "libmesh/fem_system.h" 
   47       _C( input(
"Stabilization/tau_constant_vel", input(
"Stabilization/tau_constant", 1.0 ) ) ),
 
   48       _tau_factor( input(
"Stabilization/tau_factor_vel", input(
"Stabilization/tau_factor", 0.5 ) ) ),
 
   52       _spalart_allmaras_helper(input),
 
   55     this->
set_parameter(this->
_C ,input, 
"Stabilization/tau_constant_vel" , this->
_C );
 
   64     this->_sa_params.register_parameter(param_name, param_pointer);
 
   77     this->
_dim = system.get_mesh().mesh_dimension();
 
   81                                                                                 unsigned int qp, 
const libMesh::Real rho, 
const libMesh::Real mu, 
const libMesh::Real distance_qp, 
const bool infinite_distance)
 const 
   85     u = context.interior_value(this->
_flow_vars.
u(), qp);
 
   86     v = context.interior_value(this->
_flow_vars.
v(), qp);
 
   88     libMesh::NumberVectorValue U(u,v);
 
   89     if ( context.get_system().get_mesh().mesh_dimension() == 3 )
 
   90       U(2) = context.interior_value(this->
_flow_vars.
w(), qp);
 
   92     libMesh::RealGradient grad_u = context.fixed_interior_gradient(this->
_flow_vars.
u(), qp);
 
   93     libMesh::RealGradient grad_v = context.fixed_interior_gradient(this->
_flow_vars.
v(), qp);
 
   97     libMesh::RealGradient grad_nu = context.fixed_interior_gradient(this->
_turbulence_vars.
nu(), qp);
 
   99     libMesh::RealTensor hess_nu = context.fixed_interior_hessian(this->
_turbulence_vars.
nu(), qp);
 
  102     libMesh::Number rhoUdotGradnu = rho*(U*grad_nu);
 
  105     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);
 
  109     libMesh::Real S_tilde = this->
_sa_params.
source_fn(nu_value, mu, distance_qp, vorticity_value_qp, infinite_distance);
 
  117     libMesh::Real destruction_term = 0.0;
 
  118     if(infinite_distance)
 
  120       destruction_term = 0.0;
 
  124      destruction_term =  cw1*fw*pow(nu_value/distance_qp, 2.);
 
  127     return rhoUdotGradnu + source_term + inv_sigmadivnuplusnuphysicalGradnu - destruction_term;
 
  132     unsigned int , 
const libMesh::Real , 
const libMesh::Real ,
 
  141     libmesh_not_implemented();
 
  156     const libMesh::Real ,
 
  157     libMesh::RealGradient& ,
 
  161     libmesh_not_implemented();
 
virtual void set_parameter(libMesh::Number ¶m_variable, const GetPot &input, const std::string ¶m_name, libMesh::Number param_default)
Each subclass can simultaneously read a parameter value from. 
 
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 
 
const TurbulenceFEVariables & _turbulence_vars
 
libMesh::Real source_fn(libMesh::Number nu, libMesh::Real mu, libMesh::Real wall_distance, libMesh::Real vorticity_value, bool infinite_distance) const 
 
~SpalartAllmarasStabilizationHelper()
 
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)
 
virtual void register_parameter(const std::string ¶m_name, libMesh::ParameterMultiAccessor< libMesh::Number > ¶m_pointer) const 
Each subclass will register its copy of an independent. 
 
libMesh::Real _tau_factor
 
const VelocityFEVariables & _flow_vars
 
SpalartAllmarasHelper _spalart_allmaras_helper
 
libMesh::Real vorticity(AssemblyContext &context, unsigned int qp) const 
 
libMesh::Real get_cb1() const 
 
SpalartAllmarasStabilizationHelper(const std::string &helper_name, const GetPot &input)
 
SpalartAllmarasParameters _sa_params
 
libMesh::Real destruction_fn(libMesh::Number nu, libMesh::Real wall_distance, libMesh::Real S_tilde, bool infinite_distance) const 
 
libMesh::Real get_kappa() const 
 
unsigned int _dim
Physical dimension of problem. 
 
virtual void register_parameter(const std::string ¶m_name, libMesh::ParameterMultiAccessor< libMesh::Number > ¶m_pointer) const 
Each subclass will register its copy of an independent. 
 
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 
 
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 bool infinite_distance) const