1 #ifndef VERTEXCFD_CLOSURE_CONSTANTSCALARFIELD_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_CONSTANTSCALARFIELD_IMPL_HPP
4 #include <Panzer_HierarchicParallelism.hpp>
10 namespace ClosureModel
13 template<
class EvalType,
class Traits>
14 ConstantScalarField<EvalType, Traits>::ConstantScalarField(
15 const panzer::IntegrationRule& ir,
16 const std::string& field_name,
17 const double field_value)
18 : _scalar_field(field_name, ir.dl_scalar)
19 , _field_value(field_value)
21 this->addEvaluatedField(_scalar_field);
23 this->setName(
"Constant Scalar Field \"" + field_name +
"\"");
27 template<
class EvalType,
class Traits>
28 void ConstantScalarField<EvalType, Traits>::evaluateFields(
29 typename Traits::EvalData workset)
31 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
33 Kokkos::parallel_for(this->getName(), policy, *
this);
37 template<
class EvalType,
class Traits>
38 KOKKOS_INLINE_FUNCTION
void ConstantScalarField<EvalType, Traits>::operator()(
39 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
41 const int cell = team.league_rank();
42 const int num_point = _scalar_field.extent(1);
45 Kokkos::TeamThreadRange(team, 0, num_point),
46 [&](
const int point) { _scalar_field(cell, point) = _field_value; });
54 #endif // end VERTEXCFD_CLOSURE_CONSTANTSCALARFIELD_IMPL_HPP