1 #ifndef VERTEXCFD_CLOSURE_RADERRORNORMS_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_RADERRORNORMS_IMPL_HPP
4 #include "utils/VertexCFD_Utils_ScalarFieldView.hpp"
6 #include <Panzer_GlobalIndexer.hpp>
7 #include <Panzer_HierarchicParallelism.hpp>
8 #include <Panzer_PureBasis.hpp>
9 #include <Panzer_Workset_Utilities.hpp>
11 #include <Teuchos_Array.hpp>
15 namespace ClosureModel
18 template<
class EvalType,
class Traits>
19 RADErrorNorms<EvalType, Traits>::RADErrorNorms(
20 const panzer::IntegrationRule& ir,
21 const SpeciesProperties::ConstantSpeciesProperties& species_prop)
22 : _num_species(species_prop.numSpecies())
23 , _volume(
"volume", ir.dl_scalar)
26 Utils::addDependentScalarFieldView(
27 *
this, ir.dl_scalar, _num_species, _exact_species,
"Exact_species_");
28 Utils::addDependentScalarFieldView(
29 *
this, ir.dl_scalar, _num_species, _species,
"species_");
32 Utils::addEvaluatedScalarFieldView(*
this,
36 "L1_Error_reaction_advection_diffusion_"
38 Utils::addEvaluatedScalarFieldView(*
this,
42 "L2_Error_reaction_advection_diffusion_"
44 this->addEvaluatedField(_volume);
46 this->setName(
"RAD Error Norms");
50 template<
class EvalType,
class Traits>
51 void RADErrorNorms<EvalType, Traits>::evaluateFields(
52 typename Traits::EvalData workset)
54 auto policy = panzer::HP::inst().teamPolicy<scalar_type, PHX::Device>(
56 Kokkos::parallel_for(this->getName(), policy, *
this);
60 template<
class EvalType,
class Traits>
61 KOKKOS_INLINE_FUNCTION
void RADErrorNorms<EvalType, Traits>::operator()(
62 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team)
const
64 const int cell = team.league_rank();
65 const int num_point = _species[0].extent(1);
68 Kokkos::TeamThreadRange(team, 0, num_point), [&](
const int point) {
71 for (
int num = 0; num < _num_species; ++num)
73 _L1_error_species[num](cell, point)
74 = abs(_species[num](cell, point)
75 - _exact_species[num](cell, point));
77 _L2_error_species[num](cell, point)
78 = pow(_species[num](cell, point)
79 - _exact_species[num](cell, point),
82 _volume(cell, point) = 1.0;
91 #endif // VERTEXCFD_CLOSURE_RADERRORNORMS_IMPL_HPP