1 #ifndef VERTEXCFD_CLOSURE_INCOMPRESSIBLEKTAUEDDYVISCOSITY_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_INCOMPRESSIBLEKTAUEDDYVISCOSITY_IMPL_HPP
4 #include "utils/VertexCFD_Utils_SmoothMath.hpp"
5 #include "utils/VertexCFD_Utils_VectorField.hpp"
7 #include <Panzer_HierarchicParallelism.hpp>
11 namespace ClosureModel
14 template<
class EvalType,
class Traits,
int NumSpaceDim>
15 IncompressibleKTauEddyViscosity<EvalType, Traits, NumSpaceDim>::
16 IncompressibleKTauEddyViscosity(
const panzer::IntegrationRule& ir)
17 : _turb_kinetic_energy(
"turb_kinetic_energy", ir.dl_scalar)
18 , _turb_specific_dissipation_rate(
"turb_specific_dissipation_rate",
20 , _nu_t(
"turbulent_eddy_viscosity", ir.dl_scalar)
23 this->addDependentField(_turb_kinetic_energy);
24 this->addDependentField(_turb_specific_dissipation_rate);
27 this->addEvaluatedField(_nu_t);
30 this->setName(
"Incompressible K-Tau Turbulent Eddy Viscosity "
31 + std::to_string(num_space_dim) +
"D");
35 template<
class EvalType,
class Traits,
int NumSpaceDim>
36 void IncompressibleKTauEddyViscosity<EvalType, Traits, NumSpaceDim>::evaluateFields(
37 typename Traits::EvalData workset)
39 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
41 Kokkos::parallel_for(this->getName(), policy, *
this);
45 template<
class EvalType,
class Traits,
int NumSpaceDim>
46 KOKKOS_INLINE_FUNCTION
void
47 IncompressibleKTauEddyViscosity<EvalType, Traits, NumSpaceDim>::operator()(
48 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
50 const int cell = team.league_rank();
51 const int num_point = _nu_t.extent(1);
52 const double max_tol = 1.0e-20;
55 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
58 _turb_kinetic_energy(cell, point), max_tol, 0.0)
60 _turb_specific_dissipation_rate(cell, point),