43 #ifndef PANZER_STK_SCATTER_VECTOR_FIELDS_IMPL_HPP 44 #define PANZER_STK_SCATTER_VECTOR_FIELDS_IMPL_HPP 46 #include "Teuchos_Assert.hpp" 48 #include "Phalanx_config.hpp" 49 #include "Phalanx_Evaluator_Macros.hpp" 50 #include "Phalanx_MDField.hpp" 51 #include "Phalanx_DataLayout.hpp" 52 #include "Phalanx_DataLayout_MDALayout.hpp" 57 #include "Teuchos_FancyOStream.hpp" 64 TEUCHOS_ASSERT(
false);
67 template <
typename EvalT,
typename TraitsT>
70 const Teuchos::RCP<STK_Interface> mesh,
71 const Teuchos::RCP<const panzer::PointRule> &
pointRule,
72 const std::vector<std::string> & names,
73 const std::vector<double> &
scaling)
89 for (std::size_t fd = 0; fd < names.size(); ++fd) {
96 PHX::Tag<ScalarT> scatterHolder(scatterName,Teuchos::rcp(
new PHX::MDALayout<panzer::Dummy>(0)));
97 this->addEvaluatedField(scatterHolder);
99 this->setName(scatterName+
": STK-Scatter Vector Fields");
114 TEUCHOS_ASSERT(
false);
118 void ScatterVectorFields<panzer::Traits::Residual,panzer::Traits>::
123 std::vector<std::string> dimStrings(3);
129 const std::vector<std::size_t> & localCellIds = this->wda(workset).cell_local_ids;
130 std::string blockId = this->wda(workset).block_id;
133 for(std::size_t fieldIndex=0; fieldIndex<
scatterFields_.size();fieldIndex++) {
134 PHX::MDField<const ScalarT,panzer::Cell,panzer::IP,panzer::Dim> &
field =
scatterFields_[fieldIndex];
135 std::string fieldName =
names_[fieldIndex]+dimStrings[d];
137 PHX::MDField<double,panzer::Cell,panzer::NODE> cellValue
138 = af.buildStaticArray<double,panzer::Cell,panzer::NODE>(
"",
field.dimension(0),1);
143 for(
unsigned i=0; i<
field.dimension(0);i++)
144 cellValue(i,0) =
field(i,0,d);
147 mesh_->setCellFieldData(fieldName,blockId,localCellIds,cellValue,
scaling);
std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::Point > > scatterFields_
std::vector< std::string > names_
Teuchos::RCP< const panzer::PointRule > pointRule
Teuchos::RCP< STK_Interface > mesh_
PHX_EVALUATOR_CTOR(ScatterCellAvgQuantity, p)
PHX_EVALUATE_FIELDS(ScatterVectorFields, workset)
PHX::MDField< const ScalarT, Cell, IP > field
PHX_POST_REGISTRATION_SETUP(ScatterVectorFields, d, fm)
ScatterVectorFields(const std::string &scatterName, const Teuchos::RCP< STK_Interface > mesh, const Teuchos::RCP< const panzer::PointRule > &pointRule, const std::vector< std::string > &names, const std::vector< double > &scaling=std::vector< double >())
std::vector< double > scaling_