43 #ifndef __Panzer_ResponseScatterEvaluator_Probe_hpp__
44 #define __Panzer_ResponseScatterEvaluator_Probe_hpp__
49 #include "PanzerDiscFE_config.hpp"
55 #include "Phalanx_Evaluator_Macros.hpp"
56 #include "Phalanx_MDField.hpp"
68 const size_t cell_index,
72 Teuchos::ArrayRCP<double> & dgdx)
const = 0;
75 template <
typename LO,
typename GO>
83 const size_t cell_index,
87 Teuchos::ArrayRCP<double> & dgdx)
const;
96 template<
typename EvalT,
typename Traits,
typename LO,
typename GO>
99 public PHX::EvaluatorDerived<EvalT, Traits> {
104 const std::string & responseName,
105 const std::string & fieldName,
106 const int fieldComponent,
107 const Teuchos::Array<double>& point,
109 const Teuchos::RCP<const PureBasis>& basis,
111 const Teuchos::RCP<ProbeScatterBase> & probeScatter);
124 Teuchos::RCP<const panzer::PureBasis>
basis_;
130 PHX::MDField<const ScalarT,Cell,BASIS>
field_;
142 template<
typename EvalT,
typename Traits,
typename LO,
typename GO>
151 const std::string & responseName,
152 const std::string & fieldName,
153 const int fieldComponent,
154 const Teuchos::Array<double>& point,
156 const Teuchos::RCP<const PureBasis>& basis,
158 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
159 Base(responseName, fieldName, fieldComponent, point,
160 ir, basis, indexer, probeScatter) {}
165 template<
typename LO,
typename GO>
174 const std::string & responseName,
175 const std::string & fieldName,
176 const int fieldComponent,
177 const Teuchos::Array<double>& point,
179 const Teuchos::RCP<const PureBasis>& basis,
181 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
182 Base(responseName, fieldName, fieldComponent, point,
183 ir, basis, indexer, probeScatter) {}
188 template <
typename LO,
typename GO>
191 const size_t cell_index,
192 const bool has_probe,
195 Teuchos::ArrayRCP<double> & dgdx)
const
199 Kokkos::View<const LO*, PHX::Device> LIDs = globalIndexer_->getElementLIDs(cell_index);
202 for(std::size_t i=0; i<LIDs.size(); ++i) {
203 dgdx[LIDs[i]] += probeValue.dx(i);