Is your feature request related to a problem? Please describe.
For any optimization calculation, one may want to modify the energy/gradient in some arbitrary way.
Describe the solution you'd like
Rather than try to build all cases as parameters or keywords, I could let users pass a modification function that can accept a ProgramOutput (the per-step computed energy/gradient by the "external" program--external to the optimizer), and then return a new ProgramOutput (with modified .energy and .gradient values according to any bespoke algorithm).
results = compute("geometric", ..., mod_func=myfunc)
Is your feature request related to a problem? Please describe.
For any optimization calculation, one may want to modify the energy/gradient in some arbitrary way.
Describe the solution you'd like
Rather than try to build all cases as parameters or keywords, I could let users pass a modification function that can accept a
ProgramOutput(the per-step computed energy/gradient by the "external" program--external to the optimizer), and then return a new ProgramOutput (with modified.energyand.gradientvalues according to any bespoke algorithm).