Panzer Version of the Day
Loading...
Searching...
No Matches
panzer::dof_functors Namespace Reference

Device functors that interpolate DOF coefficients to values at integration points. More...

Classes

class  EvaluateDOFWithSens_Vector
 Vector-valued DOF interpolation functor with full derivative propagation. More...
class  EvaluateDOFWithSens_Scalar
 Scalar-valued DOF interpolation functor with full derivative propagation. More...
class  EvaluateDOFFastSens_Vector
 Vector-valued DOF interpolation functor using the fast-sensitivity optimization. More...
class  EvaluateDOFFastSens_Scalar
 Scalar-valued DOF interpolation functor using the fast-sensitivity optimization. More...
struct  SumRank2
 Sums all entries of a Rank 2 Kokkos View. More...

Detailed Description

Device functors that interpolate DOF coefficients to values at integration points.

Each functor here performs one Kokkos-parallel evaluation of dof_ip(cell,pt) = sum_bf dof_basis(cell,bf) * basis(cell,bf,pt), i.e. it computes the value (or vector/gradient components) of a field at every integration point of every cell in a workset, given per-basis-function DOF coefficients. They are used by evaluators such as panzer::DOF and panzer::DOFGradient.

Two evaluation strategies are provided:

  • *WithSens: propagates derivatives with respect to all local DOF coefficients using whatever AD type ScalarT already carries. Correct in general, but loops over every derivative component.
  • *FastSens: exploits the fact that dof_ip's derivative with respect to a given cell-local DOF depends only on that DOF's entry in offsets, so the functor sets exactly that one nonzero derivative component via fastAccessDx() instead of iterating over the whole FAD array. This is a significant performance optimization for the Jacobian evaluation type, but assumes the basis values themselves carry no derivative information (see the per-functor note about coordinate sensitivities).

*_Vector variants compute all spaceDim components of a vector-valued (or gradient) field; *_Scalar variants compute a single scalar field.