22 const Teuchos::ParameterList& p)
24 Teuchos::RCP<PHX::DataLayout> vector_dl =
25 p.get< Teuchos::RCP<PHX::DataLayout> >(
"Data Layout Vector");
27 Teuchos::RCP<PHX::DataLayout> tensor_dl =
28 p.get< Teuchos::RCP<PHX::DataLayout> >(
"Data Layout Tensor");
30 const std::vector<std::string>& vector_names =
31 *(p.get< Teuchos::RCP<const std::vector<std::string> > >(
"Vector Names"));
33 vector_fields.resize(vector_names.size());
34 for (std::size_t i=0; i < vector_names.size(); ++i)
36 PHX::MDField<ScalarT,Cell,Point,Dim>(vector_names[i], vector_dl);
39 PHX::MDField<const ScalarT,Cell,Point,Dim,Dim>(p.get<std::string>
40 (
"Tensor Name"), tensor_dl);
42 this->addDependentField(tensor_field);
44 for (std::size_t i=0; i < vector_fields.size(); ++i)
45 this->addEvaluatedField(vector_fields[i]);
47 std::string n =
"TensorToStdVector: " + tensor_field.fieldTag().name();
59 typedef typename PHX::MDField<ScalarT,Cell,Point,Dim>::size_type size_type;
62 for (index_t cell = 0; cell < workset.
num_cells; ++cell) {
65 for (size_type pt = 0; pt < tensor_field.extent(1); ++pt) {
68 for (std::size_t vec = 0; vec < vector_fields.size(); ++vec) {
71 for (std::size_t dim = 0; dim < tensor_field.extent(2); ++dim) {
73 vector_fields[vec](cell,pt,dim) = tensor_field(cell,pt,vec,dim);