1 #ifndef VERTEXCFD_CLOSURE_RADTIMEDERIVATIVE_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_RADTIMEDERIVATIVE_IMPL_HPP
4 #include "utils/VertexCFD_Utils_ScalarFieldView.hpp"
6 #include <Panzer_HierarchicParallelism.hpp>
10 namespace ClosureModel
13 template<
class EvalType,
class Traits>
14 RADTimeDerivative<EvalType, Traits>::RADTimeDerivative(
15 const panzer::IntegrationRule& ir,
16 const SpeciesProperties::ConstantSpeciesProperties& species_prop)
17 : _num_species(species_prop.numSpecies())
20 Utils::addEvaluatedScalarFieldView(*
this,
24 "DQDT_reaction_advection_diffusion_"
28 Utils::addDependentScalarFieldView(
29 *
this, ir.dl_scalar, _num_species, _dxdt_species,
"DXDT_species_");
32 this->setName(
"RAD Time Derivative");
36 template<
class EvalType,
class Traits>
37 void RADTimeDerivative<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 RADTimeDerivative<EvalType, Traits>::operator()(
48 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
50 const int cell = team.league_rank();
51 const int num_point = _dqdt_rad[0].extent(1);
54 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
55 for (
int num = 0; num < _num_species; ++num)
56 _dqdt_rad[num](cell, point) = _dxdt_species[num](cell, point);
65 #endif // end VERTEXCFD_CLOSURE_RADTIMEDERIVATIVE_IMPL_HPP