TransWikia.com

Conserve energy by message passing?

Computational Science Asked on January 9, 2021

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.

One Answer

Sorry to make this an answer, but I don't have enough reputation to comment and I feel the following clarification could be helpful:

While symplectic intergrators do not exactly conserve energy, they make the total energy of the system remain bounded, independently of the number of time steps [1 p.343 ff]. Your max error (regarding the energy) will therefore be $mathcal{O}(h)$ instead of $mathcal{O}(nh)$, so no exponential growing. (btw your problem is an example in the book, chapter 1.4)

Another way that comes to my mind would be to formulate each time step as an optimization problem, with energy conservation as equality constraint, but this would be a huge additional computation effort.

[1] Hairer, Ernst; Lubich, Christian; Wanner, Gerhard, Geometric numerical integration. Structure-preserving algorithms for ordinary differential equations, Springer Series in Computational Mathematics 31. Berlin: Springer (ISBN 3-540-30663-3/hbk). xvii, 644 p. (2006). ZBL1094.65125.

Answered by Yann on January 9, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP