espressomd / espresso

The ESPResSo package
https://espressomd.org
GNU General Public License v3.0
224 stars 183 forks source link

Inertialess Tracers should not be a virtual site implementation #3059

Open fweik opened 5 years ago

fweik commented 5 years ago

The inertialess traces consist of two parts, an Euler integrator for the position and the LB coupling. Neither one is a virtual site mechanism. The two parts should be separated, and can be used independently. One could e.g. trigger the lb coupling by allowing to set gamma per particle and do the trace coupling for gamma infinity. I think the Euler integration is not needed if the coupling just sets the velocity of the particles (and the forces to zero as they already do), with constant force Velocity Verlet and Euler are identical.

This would make all of the duplication go away, the tracer case could be handle together with the force coupling for LB, which would fix #2695. It would also allow to use the coupling with actual virtual sites to implement the force dipoles that are currently in the ENGINE feature and apparently broken (see #3052).

fweik commented 5 years ago

@RudolfWeeber @KaiSzuttor i think this is a clean solution, what do you think? (Some unsolicited wisdom on top: The rule here is if it is fighting you, you are doing it wrong, which really was an important insight for me.)

RudolfWeeber commented 5 years ago

I agree.

RudolfWeeber commented 1 month ago

The dipole swimmer lb forcing is with the remaining LB coupling, but the one for the tracers still is not. We should look into that. The VirtualSites classes were removed with the 1st stage of the propagation refactoring.