11 #ifndef PANZER_SCALAR_TO_VECTOR_IMPL_HPP
12 #define PANZER_SCALAR_TO_VECTOR_IMPL_HPP
19 template<
typename EvalT,
typename Traits>
26 auto vector_name = p.
get<std::string>(
"Vector Name");
28 scalar_fields_.resize(scalar_names->size());
29 for (
size_t i=0; i < scalar_names->size(); ++i)
34 for (std::size_t i=0; i < scalar_fields_.size(); ++i)
35 this->addDependentField(scalar_fields_[i]);
37 this->addEvaluatedField(vector_field_);
39 std::string n =
"ScalarToVector: " + vector_field_.fieldTag().name();
45 template<typename EvalT, typename Traits> \
46 ScalarToVector<EvalT,Traits>::
51 vector_field_ = output;
53 scalar_fields_.resize(input.size());
54 for(std::size_t i=0;i<input.size();i++)
55 scalar_fields_[i] = input[i];
58 this->addEvaluatedField(vector_field_);
60 for (std::size_t i=0; i < scalar_fields_.size(); ++i)
61 this->addDependentField(scalar_fields_[i]);
64 std::string n =
"ScalarToVector: " + vector_field_.fieldTag().name();
69 template<
typename EvalT,
typename Traits>
76 scalar_fields_vov_.initialize(
"Scalar Fields VoV",scalar_fields_.size());
77 for (
size_t i=0; i < scalar_fields_.size(); ++i)
78 scalar_fields_vov_.addView(scalar_fields_[i].get_static_view(),i);
80 scalar_fields_vov_.syncHostToDevice();
84 template<
typename EvalT,
typename Traits>
90 const int num_points = vector_field_.extent_int(1);
91 const int num_vector_scalars = vector_field_.extent_int(2);
92 auto vec = vector_field_;
93 auto scalars = scalar_fields_vov_.getViewDevice();
97 const int num_scalars = std::min(static_cast<int>(scalars.extent(0)),num_vector_scalars);
99 Kokkos::parallel_for (workset.
num_cells,KOKKOS_LAMBDA (
const int cell){
100 for (
int pt = 0; pt < num_points; ++pt) {
101 for (
int sc = 0; sc < num_scalars; ++sc) {
102 vec(cell,pt,sc) = scalars(sc)(cell,pt);
106 for(
int sc = num_scalars; sc < num_vector_scalars; ++sc) {
107 vec(cell,pt,sc) =
ScalarT(0.0);
int num_cells
DEPRECATED - use: numCells()
T & get(const std::string &name, T def_value)
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
typename EvalT::ScalarT ScalarT
void evaluateFields(typename Traits::EvalData d)
ScalarToVector(const Teuchos::ParameterList &p)