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);
127 Teuchos::RCP<const panzer::PureBasis>
basis_;
133 PHX::MDField<const ScalarT,Cell,BASIS>
field_;
145 template<
typename EvalT,
typename Traits,
typename LO,
typename GO>
154 const std::string & responseName,
155 const std::string & fieldName,
156 const int fieldComponent,
157 const Teuchos::Array<double>& point,
159 const Teuchos::RCP<const PureBasis>&
basis,
161 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
162 Base(responseName, fieldName, fieldComponent, point,
163 ir,
basis, indexer, probeScatter) {}
168 template<
typename LO,
typename GO>
177 const std::string & responseName,
178 const std::string & fieldName,
179 const int fieldComponent,
180 const Teuchos::Array<double>& point,
182 const Teuchos::RCP<const PureBasis>&
basis,
184 const Teuchos::RCP<ProbeScatterBase> & probeScatter) :
185 Base(responseName, fieldName, fieldComponent, point,
186 ir,
basis, indexer, probeScatter) {}
191 template <
typename LO,
typename GO>
194 const size_t cell_index,
195 const bool has_probe,
198 Teuchos::ArrayRCP<double> & dgdx)
const 202 std::vector<LO> LIDs = globalIndexer_->getElementLIDs(cell_index);
205 for(std::size_t i=0; i<LIDs.size(); ++i) {
206 dgdx[LIDs[i]] += probeValue.dx(i);
Teuchos::RCP< const panzer::PureBasis > basis_
virtual ~ProbeScatterBase()
std::string responseName_
PHX::MDField< const ScalarT, Cell, BASIS > field_
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
ResponseScatterEvaluator_ProbeBase< panzer::Traits::Jacobian, panzer::Traits, LO, GO > Base
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
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::UniqueGlobalIndexer< LO, GO > > &indexer, const Teuchos::RCP< ProbeScatterBase > &probeScatter)
A constructor with concrete arguments instead of a parameter list.
Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > globalIndexer_
Teuchos::Array< double > point_
Teuchos::RCP< PHX::FieldTag > scatterHolder_
void preEvaluate(typename Traits::PreEvalData d)
bool computeBasisValues(typename Traits::EvalData d)
ResponseScatterEvaluator_ProbeBase< EvalT, Traits, LO, GO > Base
Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > globalIndexer_
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
ProbeScatter(const Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > &globalIndexer)
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
void evaluateFields(typename Traits::EvalData d)
Teuchos::RCP< const shards::CellTopology > topology_
Kokkos::DynRankView< double, PHX::Device > basis_values_
Teuchos::RCP< const panzer::PureBasis > basis
Interpolates basis DOF values to IP DOF values.
Teuchos::RCP< Response_Probe< EvalT > > responseObj_
ResponseScatterEvaluator_ProbeBase(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::UniqueGlobalIndexer< LO, GO > > &indexer, const Teuchos::RCP< ProbeScatterBase > &probeScatter)
A constructor with concrete arguments instead of a parameter list.
Teuchos::RCP< ProbeScatterBase > scatterObj_
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::UniqueGlobalIndexer< LO, GO > > &indexer, const Teuchos::RCP< ProbeScatterBase > &probeScatter)
A constructor with concrete arguments instead of a parameter list.