def get_func_deriv(k): """ Get the energy value and its derivative for given k value """ f = np.pi spr = Spring(k) u = spr.solve(0, f) E = spr.F(u) dRdk = spr.dRdk(u) dFdk = spr.dFdk(u) dRdq = spr.dRdq(u) dFdq = spr.dFdq(u) lam = spr.adjoint_solve(u) DFDx = dFdk + lam * dRdk return E, DFDx