KOKKOS_INLINE_FUNCTION
void XZHydrostatic_UTracer<EvalT, Traits>::
operator() (const XZHydrostatic_UTracer_Tag& tag, const int& cell) const{
  for (int node=0; node < numNodes; ++node) 
    for (int level=0; level < numLevels; ++level) 
      for (int dim=0; dim < numDims; ++dim)
        UTracer(cell,node,level,dim) = Velocity(cell,node,level,dim)*Tracer(cell,node,level);
}
void XZHydrostatic_UTracer<EvalT, Traits>::
evaluateFields(typename Traits::EvalData workset)
{
  for (int cell=0; cell < workset.numCells; ++cell) 
    for (int node=0; node < numNodes; ++node) 
      for (int level=0; level < numLevels; ++level) 
        for (int dim=0; dim < numDims; ++dim) {
          UTracer(cell,node,level,dim) = Velx(cell,node,level,dim)*Tracer(cell,node,level);
          //UTracer(cell,node,level,dim) = PiVelx(cell,node,level,dim)*Tracer(cell,node,level);
            //std::cout << "pivelx: " << cell << " " << node << " " << level << " " << dim << " " << PiVelx(cell,node,level,dim) << std::endl;
            //std::cout << "Tracer " << Tracer(cell,node,level) << std::endl;
          }

}
void XZHydrostatic_UTracer<EvalT, Traits>::
evaluateFields(typename Traits::EvalData workset)
{
#ifndef ALBANY_KOKKOS_UNDER_DEVELOPMENT
  for (int cell=0; cell < workset.numCells; ++cell) 
    for (int node=0; node < numNodes; ++node) 
      for (int level=0; level < numLevels; ++level) 
        for (int dim=0; dim < numDims; ++dim) {
          UTracer(cell,node,level,dim) = Velocity(cell,node,level,dim)*Tracer(cell,node,level);
          //UTracer(cell,node,level,dim) = PiVelx(cell,node,level,dim)*Tracer(cell,node,level);
            //std::cout << "pivelx: " << cell << " " << node << " " << level << " " << dim << " " << PiVelx(cell,node,level,dim) << std::endl;
            //std::cout << "Tracer " << Tracer(cell,node,level) << std::endl;
          }

#else
  Kokkos::parallel_for(XZHydrostatic_UTracer_Policy(0,workset.numCells),*this);

#endif
}