There are $N$ particles with positions $x_i(t)$ and velocities $v_i(t)$ and mass 1. There is a potential function $U_{i,j}(x_i, x_j)$ between each pair of particles, which is $0$ unless the particles are close enough. I want to update the simulation so that total energy $\sum_{i,j} U_{i,j}(x_i, x_j) + \sum_i \frac{1}{2}v_i^2$ is conserved, using only information local to the particles. It's alright if the simulation is otherwise not too accurate but I want to rule out any possibility of the energy growing exponentially (or decaying to 0) no matter how many time steps are used or how coarse they are. Also if a group of particles is disconnected from the rest, energy within that group of particles should be conserved.
Conserving Energy in Physics Simulation with imperfect Numerical Solver gave some answers but I don't think they would work here. I want conservation even after arbitrary numbers of time steps, and with coarse time steps - I think that rules out symplectic integration. I want isolated groups of particles to be independent of what's going on elsewhere - I think that rules out post-step projection.
I have in mind a message passing scheme where particles and potential functions pass packets of energy so that energy of one can only go up if energy of a neighbor goes down a corresponding amount, tweaking the particle velocities to ensure this. Also in my half-thought-out scheme, potential functions can "store" a local energy surplus or deficit, and adjust future interactions to bring this surplus/deficit closer to 0. But I'm having some difficulty working out the details and it would be great if something like this already exists.