And I think having a HybridMonteCarlo optimizer would be nice, cause now we can only have python wrappers around MD to make it work.The functionality provided in core.MonteCarlo should make that easier to implement as it exposes do_move() to apply the movers do_accept_or_reject_move(energy) to decide if that energy is good enough to accept everything that has happened and a hook do_step() so that individual implementations can do all the stuff they need to around moves and energy computations and stuff.
by core.MonteCarlo do you mean the new one you are planning to implement? Cause we had walked through the old code and it was incompatible with
oldconf = store_current_conf()
for all gibbs_steps:
… sample other gibbs variables …
for all mc_steps:
oldene = get_etot()
newene = get_etot()
because assign_velocities changes the total energy.