11#ifndef __Panzer_ResponseScatterEvaluator_Probe_hpp__
12#define __Panzer_ResponseScatterEvaluator_Probe_hpp__
17#include "PanzerDiscFE_config.hpp"
23#include "Phalanx_Evaluator_Macros.hpp"
24#include "Phalanx_MDField.hpp"
36 const size_t cell_index,
40 Teuchos::ArrayRCP<double> & dgdx)
const = 0;
43template <
typename LO,
typename GO>
46 ProbeScatter(
const Teuchos::RCP<const panzer::GlobalIndexer> & globalIndexer)
51 const size_t cell_index,
55 Teuchos::ArrayRCP<double> & dgdx)
const;
64template<
typename EvalT,
typename Traits,
typename LO,
typename GO>
67 public PHX::EvaluatorDerived<EvalT, Traits> {
72 const std::string & responseName,
73 const std::string & fieldName,
74 const int fieldComponent,
75 const Teuchos::Array<double>& point,
77 const Teuchos::RCP<const PureBasis>& basis,
78 const Teuchos::RCP<const panzer::GlobalIndexer>& indexer,
79 const Teuchos::RCP<ProbeScatterBase> & probeScatter);
98 Teuchos::RCP<const panzer::PureBasis>
basis_;
104 PHX::MDField<const ScalarT,Cell,BASIS>
field_;
116template<
typename EvalT,
typename Traits,
typename LO,
typename GO>
125 const std::string & responseName,
126 const std::string & fieldName,
127 const int fieldComponent,
128 const Teuchos::Array<double>& point,
130 const Teuchos::RCP<const PureBasis>& basis,
131 const Teuchos::RCP<const panzer::GlobalIndexer> & indexer,
132 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
133 Base(responseName, fieldName, fieldComponent, point,
134 ir, basis, indexer, probeScatter) {}
139template<
typename LO,
typename GO>
148 const std::string & responseName,
149 const std::string & fieldName,
150 const int fieldComponent,
151 const Teuchos::Array<double>& point,
153 const Teuchos::RCP<const PureBasis>& basis,
154 const Teuchos::RCP<const panzer::GlobalIndexer> & indexer,
155 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
156 Base(responseName, fieldName, fieldComponent, point,
157 ir, basis, indexer, probeScatter) {}
162template <
typename LO,
typename GO>
165 const size_t cell_index,
166 const bool has_probe,
169 Teuchos::ArrayRCP<double> & dgdx)
const
173 PHX::View<const LO*> LIDs = globalIndexer_->getElementLIDs(cell_index);
176 for(std::size_t i=0; i<LIDs.size(); ++i) {
177 dgdx[LIDs[i]] += probeValue.dx(i);
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
virtual ~ProbeScatterBase()
virtual void scatterDerivative(const panzer::Traits::Jacobian::ScalarT &probeValue, const size_t cell_index, const bool has_probe, panzer::Traits::EvalData workset, WorksetDetailsAccessor &wda, Teuchos::ArrayRCP< double > &dgdx) const =0
ProbeScatter(const Teuchos::RCP< const panzer::GlobalIndexer > &globalIndexer)
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
void scatterDerivative(const panzer::Traits::Jacobian::ScalarT &probeValue, const size_t cell_index, const bool has_probe, panzer::Traits::EvalData workset, WorksetDetailsAccessor &wda, Teuchos::ArrayRCP< double > &dgdx) const
Teuchos::RCP< ProbeScatterBase > scatterObj_
Teuchos::RCP< Response_Probe< EvalT > > responseObj_
Teuchos::RCP< PHX::FieldTag > scatterHolder_
Teuchos::RCP< const panzer::PureBasis > basis_
void evaluateFields(typename Traits::EvalData d)
Teuchos::RCP< const shards::CellTopology > topology_
void postRegistrationSetup(typename Traits::SetupData, PHX::FieldManager< Traits > &)
PHX::MDField< const ScalarT, Cell, BASIS > field_
std::string responseName_
Teuchos::Array< double > point_
Kokkos::DynRankView< double, PHX::Device > basis_values_
bool findCellAndComputeBasisValues(typename Traits::EvalData d)
void preEvaluate(typename Traits::PreEvalData d)
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
ResponseScatterEvaluator_Probe(const std::string &responseName, const std::string &fieldName, const int fieldComponent, const Teuchos::Array< double > &point, const IntegrationRule &ir, const Teuchos::RCP< const PureBasis > &basis, const Teuchos::RCP< const panzer::GlobalIndexer > &indexer, const Teuchos::RCP< ProbeScatterBase > &probeScatter)
A constructor with concrete arguments instead of a parameter list.
ResponseScatterEvaluator_ProbeBase< panzer::Traits::Jacobian, panzer::Traits, LO, GO > Base
ResponseScatterEvaluator_ProbeBase< EvalT, Traits, LO, GO > Base
ResponseScatterEvaluator_Probe(const std::string &responseName, const std::string &fieldName, const int fieldComponent, const Teuchos::Array< double > &point, const IntegrationRule &ir, const Teuchos::RCP< const PureBasis > &basis, const Teuchos::RCP< const panzer::GlobalIndexer > &indexer, const Teuchos::RCP< ProbeScatterBase > &probeScatter)
A constructor with concrete arguments instead of a parameter list.