43 #ifndef PANZER_SCATTER_RESIDUAL_TPETRA_SG_IMPL_HPP
44 #define PANZER_SCATTER_RESIDUAL_TPETRA_SG_IMPL_HPP
46 #include "Panzer_config.hpp"
50 #include "Phalanx_DataLayout_MDALayout.hpp"
56 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
60 : globalIndexer_(indexer)
62 std::string scatterName = p.
get<std::string>(
"Scatter Name");
67 const std::vector<std::string>& names =
78 for (std::size_t eq = 0; eq < names.size(); ++eq) {
79 scatterFields_[eq] = PHX::MDField<ScalarT,Cell,NODE>(names[eq],dl);
86 this->addEvaluatedField(*scatterHolder_);
88 this->setName(scatterName+
" Scatter Residual (SGResidual)");
92 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
103 std::string fieldName = fieldMap_->find(
scatterFields_[fd].fieldTag().name())->second;
104 fieldIds_[fd] = globalIndexer_->getFieldNum(fieldName);
112 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
178 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
182 : globalIndexer_(indexer)
184 std::string scatterName = p.
get<std::string>(
"Scatter Name");
189 const std::vector<std::string>& names =
200 for (std::size_t eq = 0; eq < names.size(); ++eq) {
201 scatterFields_[eq] = PHX::MDField<ScalarT,Cell,NODE>(names[eq],dl);
208 this->addEvaluatedField(*scatterHolder_);
210 this->setName(scatterName+
" Scatter Residual (SGJacobian)");
214 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
225 std::string fieldName = fieldMap_->find(
scatterFields_[fd].fieldTag().name())->second;
226 fieldIds_[fd] = globalIndexer_->getFieldNum(fieldName);
234 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::Point > > scatterFields_
T & get(const std::string &name, T def_value)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Pushes residual values into the residual vector for a Newton-based solve.
#define TEUCHOS_ASSERT(assertion_test)