1 #ifndef VERTEXCFD_CLOSURE_INCOMPRESSIBLEVARIABLETIMEDERIVATIVE_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_INCOMPRESSIBLEVARIABLETIMEDERIVATIVE_IMPL_HPP
4 #include <Panzer_HierarchicParallelism.hpp>
10 namespace ClosureModel
13 template<
class EvalType,
class Traits>
14 IncompressibleVariableTimeDerivative<EvalType, Traits>::
15 IncompressibleVariableTimeDerivative(
16 const panzer::IntegrationRule& ir,
17 const Teuchos::ParameterList& closure_params)
18 : _variable_name(closure_params.get<std::string>(
"Field Name"))
19 , _equation_name(closure_params.get<std::string>(
"Equation Name"))
20 , _dqdt_var_eq(
"DQDT_" + _equation_name, ir.dl_scalar)
21 , _dxdt_var(
"DXDT_" + _variable_name, ir.dl_scalar)
24 this->addEvaluatedField(_dqdt_var_eq);
27 this->addDependentField(_dxdt_var);
30 const int num_grad_dim = ir.spatial_dimension;
31 this->setName(_equation_name +
" Incompressible Time Derivative "
32 + std::to_string(num_grad_dim) +
"D");
36 template<
class EvalType,
class Traits>
37 void IncompressibleVariableTimeDerivative<EvalType, Traits>::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>
47 KOKKOS_INLINE_FUNCTION
void
48 IncompressibleVariableTimeDerivative<EvalType, Traits>::operator()(
49 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
51 const int cell = team.league_rank();
52 const int num_point = _dqdt_var_eq.extent(1);
55 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
56 _dqdt_var_eq(cell, point) = _dxdt_var(cell, point);
65 #endif // end VERTEXCFD_CLOSURE_INCOMPRESSIBLEVARIABLETIMEDERIVATIVE_IMPL_HPP