  Nonlinear energy functionals appearing in the calculus of variations can be
discretized by the finite element (FE) method and formulated as a sum of energy
contributions from local elements. A fast evaluation of energy functionals
containing the first order gradient terms is a central part of this
contribution. We describe a vectorized implementation using the simplest linear
nodal (P1) elements in which all energy contributions are evaluated all at once
without the loop over triangular or tetrahedral elements. Furthermore, in
connection to the first-order optimization methods, the discrete gradient of
energy functional is assembled in a way that the gradient components are
evaluated over all degrees of freedom all at once. The key ingredient is the
vectorization of exact or approximate energy gradients over nodal patches. It
leads to a time-efficient implementation at higher memory-cost. Provided codes
in MATLAB related to 2D/3D hyperelasticity and 2D p-Laplacian problem are
available for download and structured in a way it can be easily extended to
other types of vector or scalar forms of energies.
