43 #ifndef PANZER_SCATTER_DIRICHLET_RESIDUAL_TPETRA_SG_IMPL_HPP
44 #define PANZER_SCATTER_DIRICHLET_RESIDUAL_TPETRA_SG_IMPL_HPP
46 #include "Panzer_config.hpp"
50 #include "Phalanx_DataLayout_MDALayout.hpp"
58 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
62 : globalIndexer_(indexer)
63 , globalDataKey_(
"Residual Scatter Container")
65 std::string scatterName = p.
get<std::string>(
"Scatter Name");
70 const std::vector<std::string>& names =
79 side_subcell_dim_ = p.
get<
int>(
"Side Subcell Dimension");
80 local_side_id_ = p.
get<
int>(
"Local Side ID");
85 for (std::size_t eq = 0; eq < names.size(); ++eq) {
86 scatterFields_[eq] = PHX::MDField<ScalarT,Cell,NODE>(names[eq],dl);
93 this->addEvaluatedField(*scatterHolder_);
95 if (p.
isType<std::string>(
"Global Data Key"))
96 globalDataKey_ = p.
get<std::string>(
"Global Data Key");
98 this->setName(scatterName+
" Scatter Residual (SGResidual)");
102 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
112 std::string fieldName = fieldMap_->find(
scatterFields_[fd].fieldTag().name())->second;
113 fieldIds_[fd] = globalIndexer_->getFieldNum(fieldName);
124 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
139 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
218 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
222 : globalIndexer_(indexer)
224 std::string scatterName = p.
get<std::string>(
"Scatter Name");
229 const std::vector<std::string>& names =
238 side_subcell_dim_ = p.
get<
int>(
"Side Subcell Dimension");
239 local_side_id_ = p.
get<
int>(
"Local Side ID");
243 for (std::size_t eq = 0; eq < names.size(); ++eq) {
244 scatterFields_[eq] = PHX::MDField<ScalarT,Cell,NODE>(names[eq],dl);
251 this->addEvaluatedField(*scatterHolder_);
253 this->setName(scatterName+
" Scatter Residual (SGJacobian)");
257 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
266 std::string fieldName = fieldMap_->find(
scatterFields_[fd].fieldTag().name())->second;
267 fieldIds_[fd] = globalIndexer_->getFieldNum(fieldName);
279 template<
typename TRAITS,
typename LO,
typename GO,
typename NodeT>
294 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.
bool isType(const std::string &name) const
#define TEUCHOS_ASSERT(assertion_test)