Reuse curvature and gradient for gradient and energy in Energy classes
Especially in nifty/library/energy_library/critical_power_energy.py
the gradient information is not reused for the computation of the energy itself.
Additionally, use memoization/caching. For this the memo decorator from nifty.energies can be used.