1 #ifndef VERTEXCFD_BOUNDARYSTATE_INCOMPRESSIBLEWALLFUNCTIONSTRESS_IMPL_HPP
2 #define VERTEXCFD_BOUNDARYSTATE_INCOMPRESSIBLEWALLFUNCTIONSTRESS_IMPL_HPP
4 #include <utils/VertexCFD_Utils_VectorField.hpp>
6 #include <Panzer_HierarchicParallelism.hpp>
10 namespace BoundaryCondition
13 template<
class EvalType,
class Traits,
int NumSpaceDim>
14 IncompressibleWallFunctionStress<EvalType, Traits, NumSpaceDim>::
15 IncompressibleWallFunctionStress(
const panzer::IntegrationRule& ir,
16 const std::string& flux_prefix)
17 : _boundary_u_tau(
"BOUNDARY_friction_velocity", ir.dl_scalar)
18 , _boundary_y_plus(
"BOUNDARY_y_plus", ir.dl_scalar)
20 Utils::addEvaluatedVectorField(*
this,
22 _wall_func_shear_stress,
23 flux_prefix +
"momentum_");
27 this->addDependentField(_boundary_u_tau);
28 this->addDependentField(_boundary_y_plus);
29 Utils::addDependentVectorField(*
this, ir.dl_scalar, _velocity,
"velocity_");
31 this->setName(
"Boundary State Incompressible Wall Function Stress "
32 + std::to_string(num_space_dim) +
"D");
36 template<
class EvalType,
class Traits,
int NumSpaceDim>
37 void IncompressibleWallFunctionStress<EvalType, Traits, NumSpaceDim>::evaluateFields(
38 typename Traits::EvalData workset)
40 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
42 Kokkos::parallel_for(this->getName(), policy, *
this);
46 template<
class EvalType,
class Traits,
int NumSpaceDim>
47 KOKKOS_INLINE_FUNCTION
void
48 IncompressibleWallFunctionStress<EvalType, Traits, NumSpaceDim>::operator()(
49 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
51 const int cell = team.league_rank();
52 const int num_point = _boundary_y_plus.extent(1);
54 Kokkos::parallel_for(Kokkos::TeamThreadRange(team, 0, num_point),
55 [&](
const int point) {
57 for (
int dim = 0; dim < num_space_dim; ++dim)
59 _wall_func_shear_stress[dim](cell, point)
60 = _boundary_u_tau(cell, point)
61 / _boundary_y_plus(cell, point)
62 * _velocity[dim](cell, point);
72 #endif // VERTEXCFD_BOUNDARYSTATE_INCOMPRESSIBLEWALLFUNCTIONSTRESS_IMPL_HPP