1 #ifndef VERTEXCFD_BOUNDARYSTATE_TURBULENCEBOUNDARYEDDYVISCOSITY_IMPL_HPP
2 #define VERTEXCFD_BOUNDARYSTATE_TURBULENCEBOUNDARYEDDYVISCOSITY_IMPL_HPP
4 #include <Panzer_HierarchicParallelism.hpp>
8 namespace BoundaryCondition
11 template<
class EvalType,
class Traits>
12 TurbulenceBoundaryEddyViscosity<EvalType, Traits>::TurbulenceBoundaryEddyViscosity(
13 const panzer::IntegrationRule& ir,
14 const Teuchos::ParameterList& bc_params,
15 const std::string& flux_prefix)
16 : _boundary_nu_t(flux_prefix +
"turbulent_eddy_viscosity", ir.dl_scalar)
17 , _interior_nu_t(
"turbulent_eddy_viscosity", ir.dl_scalar)
18 , _wall_func_nu_t(
"wall_func_turbulent_eddy_viscosity", ir.dl_scalar)
23 if (bc_params.numParams() > 0)
26 const std::string bc_type = bc_params.get<std::string>(
"Type");
28 if (std::string::npos != bc_type.find(
"Wall Function"))
35 this->addEvaluatedField(_boundary_nu_t);
40 this->addDependentField(_wall_func_nu_t);
44 this->addDependentField(_interior_nu_t);
47 this->setName(
"Boundary State Turbulence Eddy Viscosity");
51 template<
class EvalType,
class Traits>
52 void TurbulenceBoundaryEddyViscosity<EvalType, Traits>::evaluateFields(
53 typename Traits::EvalData workset)
55 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
57 Kokkos::parallel_for(this->getName(), policy, *
this);
61 template<
class EvalType,
class Traits>
62 KOKKOS_INLINE_FUNCTION
void
63 TurbulenceBoundaryEddyViscosity<EvalType, Traits>::operator()(
64 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
66 const int cell = team.league_rank();
67 const int num_point = _boundary_nu_t.extent(1);
70 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
74 _boundary_nu_t(cell, point) = _wall_func_nu_t(cell, point);
78 _boundary_nu_t(cell, point) = _interior_nu_t(cell, point);
88 #endif // end VERTEXCFD_BOUNDARYSTATE_TURBULENCEBOUNDARYEDDYVISCOSITY_IMPL_HPP