[petsc-dev] loop structure in PetscFEIntegrateJacobian_Basic

Geoffrey Irving irving at naml.us
Tue Jan 28 15:33:28 CST 2014


On Tue, Jan 28, 2014 at 1:31 PM, Geoffrey Irving <irving at naml.us> wrote:
> PetscFEIntegrateJacobian_Basic has four layers of loops:
>
>    e - element
>    f - component of field being differentiated
>    g - component of field we're differentiating against
>    q - quadrature point

Typo: f and g index basis functions, not field components.

> It looks like g3_func and friends are being called once for each
> combination of (e,f,g,q), even though the calls to g3_func are
> independent of (f,g).  If g3_func is expensive, this duplication seems
> a bit slow.
>
> It seems like the loops should be flipped to be (e,q,f,g) major order,
> with the user functions hoisted up to the (e,q) level.  Is there a
> reason not to do this?
>
> Geoffrey



More information about the petsc-dev mailing list