Those are reasonable comments. The original thought was to get the resetting done at a point where no logic was required, but now that I think about it I can make it simpler and put it in ComputeAccelerationFieldExternal. More once it passes push suite.
Before SetAccelerationBoundary, AccelerationField was deleted at the end of every timestep. Since this makes it impossible to set the boundary conditions from parent grids with the boundary machinery, I removed that delete. With self gravity on, AccelerationField is initialized properly in ComputeAccelerationField, but with it off the necessary initialization is missing.
This formulation doesn't work though. I pushed too soon. More later.