1 #ifndef VERTEXCFD_CLOSURE_INCOMPRESSIBLEKEPSILONDIFFUSIVITYCOEFFICIENT_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_INCOMPRESSIBLEKEPSILONDIFFUSIVITYCOEFFICIENT_IMPL_HPP
4 #include <Panzer_HierarchicParallelism.hpp>
11 template<
class EvalType,
class Traits>
12 IncompressibleKEpsilonDiffusivityCoefficient<EvalType, Traits>::
13 IncompressibleKEpsilonDiffusivityCoefficient(
14 const panzer::IntegrationRule& ir,
17 const std::string field_prefix)
18 : _nu(
"kinematic_viscosity", ir.dl_scalar)
19 , _nu_t(field_prefix +
"turbulent_eddy_viscosity", ir.dl_scalar)
22 , _num_grad_dim(ir.spatial_dimension)
23 , _diffusivity_var_k(
"diffusivity_turb_kinetic_energy", ir.dl_scalar)
24 , _diffusivity_var_e(
"diffusivity_turb_dissipation_rate", ir.dl_scalar)
27 this->addDependentField(_nu);
28 this->addDependentField(_nu_t);
31 this->addEvaluatedField(_diffusivity_var_k);
32 this->addEvaluatedField(_diffusivity_var_e);
35 this->setName(
"K-Epsilon Incompressible Diffusivity Coefficient "
36 + std::to_string(_num_grad_dim) +
"D");
40 template<
class EvalType,
class Traits>
41 void IncompressibleKEpsilonDiffusivityCoefficient<EvalType, Traits>::evaluateFields(
42 typename Traits::EvalData workset)
44 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
46 Kokkos::parallel_for(this->getName(), policy, *
this);
50 template<
class EvalType,
class Traits>
51 KOKKOS_INLINE_FUNCTION
void
52 IncompressibleKEpsilonDiffusivityCoefficient<EvalType, Traits>::operator()(
53 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
55 const int cell = team.league_rank();
56 const int num_point = _diffusivity_var_k.extent(1);
59 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
60 _diffusivity_var_k(cell, point)
61 = (_nu(cell, point) + _nu_t(cell, point) / _sigma_k);
62 _diffusivity_var_e(cell, point)
63 = (_nu(cell, point) + _nu_t(cell, point) / _sigma_e);