11#ifndef PANZER_EVALUATOR_GATHER_SOLUTION_TPETRA_DECL_HPP
12#define PANZER_EVALUATOR_GATHER_SOLUTION_TPETRA_DECL_HPP
14#include "Phalanx_config.hpp"
15#include "Phalanx_Evaluator_Macros.hpp"
16#include "Phalanx_MDField.hpp"
17#include "Phalanx_KokkosViewOfViews.hpp"
19#include "Teuchos_ParameterList.hpp"
21#include "PanzerDiscFE_config.hpp"
44template<
typename EvalT,
typename Traits,
typename LO,
typename GO,
typename NodeT=panzer::TpetraNodeType>
57template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
60 public PHX::EvaluatorDerived<panzer::Traits::Residual, TRAITS>,
67 globalIndexer_(indexer) {}
70 const Teuchos::ParameterList& p);
72 void postRegistrationSetup(
typename TRAITS::SetupData d,
75 void preEvaluate(
typename TRAITS::PreEvalData d);
77 void evaluateFields(
typename TRAITS::EvalData d);
79 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
84 { TEUCHOS_ASSERT(i < Teuchos::as<int>(gatherFields_.size()));
return gatherFields_[i].fieldTag(); }
109 std::vector< std::vector< PHX::MDField<const ScalarT,Cell,NODE> > >
tangentFields_;
120template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
123 public PHX::EvaluatorDerived<panzer::Traits::Tangent, TRAITS>,
130 globalIndexer_(indexer) {}
133 const Teuchos::ParameterList& p);
135 void postRegistrationSetup(
typename TRAITS::SetupData d,
138 void preEvaluate(
typename TRAITS::PreEvalData d);
140 void evaluateFields(
typename TRAITS::EvalData d);
142 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
167 std::vector< std::vector< PHX::MDField<const RealT,Cell,NODE> > >
tangentFields_;
177template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
180 public PHX::EvaluatorDerived<panzer::Traits::Jacobian, TRAITS>,
185 globalIndexer_(indexer) {}
188 const Teuchos::ParameterList& p);
190 void postRegistrationSetup(
typename TRAITS::SetupData d,
193 void preEvaluate(
typename TRAITS::PreEvalData d);
195 void evaluateFields(
typename TRAITS::EvalData d);
197 virtual Teuchos::RCP<CloneableEvaluator>
clone(
const Teuchos::ParameterList & pl)
const
200 KOKKOS_INLINE_FUNCTION
201 void operator()(
const int cell)
const;
206 KOKKOS_INLINE_FUNCTION
207 void operator()(
const NoSeed,
const int cell)
const;
233 Teuchos::RCP<typename TpetraLinearObjContainer<double,LO,GO,NodeT>::VectorType>
x_vector;
245 Kokkos::View<const double**, Kokkos::LayoutLeft,PHX::Device>
x_data;
250 PHX::MDField<ScalarT,Cell,NODE>
field;
256#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::ViewOfViews< 2, PHX::View< const RealT ** > > tangentFieldsVoV_
std::vector< std::string > indexerNames_
PHX::ViewOfViews< 1, PHX::View< ScalarT ** > > gatherFieldsVoV_
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_
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.