72 const Teuchos::RCP<ExtremeValueScatterBase> & extremeValueScatter)
74 , scatterObj_(extremeValueScatter)
83 RCP<PHX::DataLayout> dl_dummy = rcp(
new PHX::MDALayout<panzer::Dummy>(0));
88 RCP<PHX::DataLayout> dl_cell = rcp(
new PHX::MDALayout<panzer::Cell>(cd.
numCells()));
92 std::string n =
"Extreme Value Response Scatter: " + name;
99 const std::string & responseName,
102 const Teuchos::RCP<ExtremeValueScatterBase> & extremeValueScatter)
103 : responseName_(responseName)
104 , scatterObj_(extremeValueScatter)
113 RCP<PHX::DataLayout> dl_dummy = rcp(
new PHX::MDALayout<panzer::Dummy>(0));
118 RCP<PHX::DataLayout> dl_cell = rcp(
new PHX::MDALayout<panzer::Cell>(cd.
numCells()));
119 cellExtremeValue_ = PHX::MDField<const ScalarT,panzer::Cell>(integrandName,dl_cell);
122 std::string n =
"Extreme Value Response Scatter: " + responseName;
153 using Teuchos::rcp_dynamic_cast;
154 using Thyra::SpmdVectorBase;
156 TEUCHOS_ASSERT(scatterObj_!=Teuchos::null);
159 Teuchos::ArrayRCP<double> local_dgdx;
160 RCP<SpmdVectorBase<double> > dgdx = rcp_dynamic_cast<SpmdVectorBase<double> >(responseObj_->getGhostedVector());
161 dgdx->getNonconstLocalData(ptrFromRef(local_dgdx));
162 TEUCHOS_ASSERT(!local_dgdx.is_null());
164 scatterObj_->scatterDerivative(cellExtremeValue_,d,this->wda,local_dgdx);