43#ifndef PANZER_EVALUATOR_GATHER_SOLUTION_TPETRA_DECL_HPP
44#define PANZER_EVALUATOR_GATHER_SOLUTION_TPETRA_DECL_HPP
46#include "Phalanx_config.hpp"
47#include "Phalanx_Evaluator_Macros.hpp"
48#include "Phalanx_MDField.hpp"
49#include "Phalanx_KokkosViewOfViews.hpp"
51#include "Teuchos_ParameterList.hpp"
53#include "PanzerDiscFE_config.hpp"
76template<
typename EvalT,
typename Traits,
typename LO,
typename GO,
typename NodeT=panzer::TpetraNodeType>
89template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
92 public PHX::EvaluatorDerived<panzer::Traits::Residual, TRAITS>,
99 globalIndexer_(indexer) {}
102 const Teuchos::ParameterList& p);
104 void postRegistrationSetup(
typename TRAITS::SetupData d,
107 void preEvaluate(
typename TRAITS::PreEvalData d);
109 void evaluateFields(
typename TRAITS::EvalData d);
111 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
116 { TEUCHOS_ASSERT(i < Teuchos::as<int>(gatherFields_.size()));
return gatherFields_[i].fieldTag(); }
141 std::vector< std::vector< PHX::MDField<const ScalarT,Cell,NODE> > >
tangentFields_;
152template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
155 public PHX::EvaluatorDerived<panzer::Traits::Tangent, TRAITS>,
162 globalIndexer_(indexer) {}
165 const Teuchos::ParameterList& p);
167 void postRegistrationSetup(
typename TRAITS::SetupData d,
170 void preEvaluate(
typename TRAITS::PreEvalData d);
172 void evaluateFields(
typename TRAITS::EvalData d);
174 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
199 std::vector< std::vector< PHX::MDField<const RealT,Cell,NODE> > >
tangentFields_;
209template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
212 public PHX::EvaluatorDerived<panzer::Traits::Jacobian, TRAITS>,
217 globalIndexer_(indexer) {}
220 const Teuchos::ParameterList& p);
222 void postRegistrationSetup(
typename TRAITS::SetupData d,
225 void preEvaluate(
typename TRAITS::PreEvalData d);
227 void evaluateFields(
typename TRAITS::EvalData d);
229 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
232 KOKKOS_INLINE_FUNCTION
233 void operator()(
const int cell)
const;
238 KOKKOS_INLINE_FUNCTION
239 void operator()(
const NoSeed,
const int cell)
const;
265 Teuchos::RCP<typename TpetraLinearObjContainer<double,LO,GO,NodeT>::VectorType>
x_vector;
277 Kokkos::View<const double**, Kokkos::LayoutLeft,PHX::Device>
x_data;
282 PHX::MDField<ScalarT,Cell,NODE>
field;
288#ifdef Panzer_BUILD_HESSIAN_SUPPORT
Non-templated empty base class for template managers.
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
bool useTimeDerivativeSolutionVector_
GatherSolution_Tpetra(const Teuchos::RCP< const panzer::GlobalIndexer > &indexer)
Teuchos::RCP< const TpetraLinearObjContainer< double, LO, GO, NodeT > > tpetraContainer_
std::string sensitivitiesName_
std::vector< int > fieldIds_
std::string globalDataKey_
panzer::Traits::Jacobian::ScalarT ScalarT
std::vector< PHX::MDField< ScalarT, Cell, NODE > > gatherFields_
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
PHX::View< int ** > scratch_lids_
std::vector< std::string > indexerNames_
PHX::View< const int * > offsets
panzer::Traits::Jacobian EvalT
PHX::View< const LO ** > lids
std::vector< PHX::View< int * > > scratch_offsets_
Kokkos::View< const double **, Kokkos::LayoutLeft, PHX::Device > x_data
PHX::MDField< ScalarT, Cell, NODE > field
bool disableSensitivities_
Teuchos::RCP< typename TpetraLinearObjContainer< double, LO, GO, NodeT >::VectorType > x_vector
bool useTimeDerivativeSolutionVector_
std::vector< PHX::View< int * > > scratch_offsets_
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
std::vector< int > fieldIds_
panzer::Traits::Residual EvalT
PHX::View< int ** > scratch_lids_
panzer::Traits::Residual::ScalarT ScalarT
GatherSolution_Tpetra(const Teuchos::RCP< const panzer::GlobalIndexer > &indexer)
std::vector< std::string > indexerNames_
std::vector< std::vector< PHX::MDField< const ScalarT, Cell, NODE > > > tangentFields_
const PHX::FieldTag & getFieldTag(int i) const
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
std::string globalDataKey_
std::vector< PHX::MDField< ScalarT, Cell, NODE > > gatherFields_
Teuchos::RCP< const TpetraLinearObjContainer< double, LO, GO, NodeT > > tpetraContainer_
PHX::ViewOfViews3< 2, PHX::View< const RealT ** > > tangentFieldsVoV_
std::vector< std::string > indexerNames_
virtual Teuchos::RCP< CloneableEvaluator > clone(const Teuchos::ParameterList &pl) const
std::vector< int > fieldIds_
Teuchos::RCP< const TpetraLinearObjContainer< double, LO, GO, NodeT > > tpetraContainer_
panzer::Traits::RealType RealT
std::vector< PHX::MDField< ScalarT, Cell, NODE > > gatherFields_
PHX::ViewOfViews3< 1, PHX::View< ScalarT ** > > gatherFieldsVoV_
bool useTimeDerivativeSolutionVector_
panzer::Traits::Tangent EvalT
PHX::View< size_t * > tangentInnerVectorSizes_
std::string globalDataKey_
std::vector< std::vector< PHX::MDField< const RealT, Cell, NODE > > > tangentFields_
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
GatherSolution_Tpetra(const Teuchos::RCP< const panzer::GlobalIndexer > &indexer)
panzer::Traits::Tangent::ScalarT ScalarT
Gathers solution values from the Newton solution vector into the nodal fields of the field manager.