11#ifndef PANZER_SCALAR_TO_VECTOR_IMPL_HPP
12#define PANZER_SCALAR_TO_VECTOR_IMPL_HPP
19template<
typename EvalT,
typename Traits>
23 auto scalar_dl = p.get<Teuchos::RCP<PHX::DataLayout>>(
"Data Layout Scalar");
24 auto vector_dl = p.get< Teuchos::RCP<PHX::DataLayout> >(
"Data Layout Vector");
25 auto scalar_names = p.get<Teuchos::RCP<const std::vector<std::string>>>(
"Scalar Names");
26 auto vector_name = p.get<std::string>(
"Vector Name");
29 for (
size_t i=0; i < scalar_names->size(); ++i)
30 scalar_fields_[i] = PHX::MDField<const ScalarT,Cell,Point>((*scalar_names)[i], scalar_dl);
32 vector_field_ = PHX::MDField<ScalarT,Cell,Point,Dim>(vector_name, vector_dl);
39 std::string n =
"ScalarToVector: " +
vector_field_.fieldTag().name();
45template<typename EvalT, typename Traits> \
46ScalarToVector<EvalT,Traits>::
47ScalarToVector(
const std::vector<PHX::Tag<ScalarT>> & input,
48 const PHX::FieldTag & output)
54 for(std::size_t i=0;i<input.size();i++)
64 std::string n =
"ScalarToVector: " +
vector_field_.fieldTag().name();
69template<
typename EvalT,
typename Traits>
84template<
typename EvalT,
typename Traits>
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);
typename EvalT::ScalarT ScalarT
ScalarToVector(const Teuchos::ParameterList &p)
void evaluateFields(typename Traits::EvalData d)
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
PHX::ViewOfViews< 1, InnerView > scalar_fields_vov_
PHX::MDField< ScalarT, Cell, Point, Dim > vector_field_
std::vector< PHX::MDField< const ScalarT, Cell, Point > > scalar_fields_
int num_cells
DEPRECATED - use: numCells().
const panzer::Workset & EvalData
Data type passed to PHX::Evaluator::evaluateFields(): a single workset holding the cell data for one ...
const SD & SetupData
Data type passed to PHX::Evaluator::postRegistrationSetup().