|
Panzer Version of the Day
|
Device functors that interpolate DOF coefficients to values at integration points. More...
Classes | |
| class | EvaluateDOFFastSens_Scalar |
| Scalar-valued DOF interpolation functor using the fast-sensitivity optimization. More... | |
| class | EvaluateDOFFastSens_Vector |
| Vector-valued DOF interpolation functor using the fast-sensitivity optimization. More... | |
| class | EvaluateDOFWithSens_Scalar |
| Scalar-valued DOF interpolation functor with full derivative propagation. More... | |
| class | EvaluateDOFWithSens_Vector |
| Vector-valued DOF interpolation functor with full derivative propagation. More... | |
| struct | SumRank2 |
| Sums all entries of a Rank 2 Kokkos View. More... | |
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.