espressomd-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ESPResSo-devel] Thoughts on implementing an improved thermostat for


From: Ulf Schiller
Subject: Re: [ESPResSo-devel] Thoughts on implementing an improved thermostat for ESPResSo
Date: Wed, 03 Jun 2015 14:18:07 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

On 03/06/15 11:52, Evyatar Arad wrote:
> Hello Ulf,
> 
> Thanks for the PDF and replying!
> 
> I may have been a little unclear as to what I want to achieve.
> The new integrator is purposed to be used with NVT ensembles
> (specifically, I'd like for it to specifically run on the
> simplebilayer.tcl simulation).
> 
> It, like the existing integrator, has two specific steps for updating
> the velocity and position of a particle. These equations are slightly
> different and do use the forces from the previous configuration (both
> F(n) and F(n+1) are needed for the velocity update). A good suggestion
> was to create a new particle field for the additional prev_force data
> needed.

Again, the existing integrator does two explicit updates of the velocity
per timestep, i.e., it calculates v(n+0.5) explicitly. It should be
possible to rewrite the equations such that the update to v(n+0.5) uses
the old forces, and the update to v(n+1) the new forces. The update to
r(n+1) then uses the velocity v(n+0.5). For example, you could employ a
Crank-Nicolson approximation for the propagators.

Equation (51) in the PDF is an *exact* solution of the momentum update,
hence there will only be a splitting error. If you expand Eqs. (52)-(54)
and the expressions for a and b in the paper for small time step, you
will see that they are equivalent up to terms of second order.

Now, it may be that you get a compensation of errors from the splitting
and the discrete propagators. In practice, for example, the velocity
Verlet seems to be somewhat more accurate than a position Verlet (albeit
the latter has some advantages when coupling particles to lattice
algorithms).

> Do you think adding the the two integration steps into the existing code
> (position update to void propagate_vel_pos in integrate.cpp and velocity
> update right next to the 4th velocity verlet step in integrate_vv under
> integrate.cpp) is a right line of thought?

Yes, if you insist on one-shot updates, that is the right direction I
think. I second Florian in assuming that "you have good reasons to
believe that your simulations will benefit from that and that it is
worthwhile to do that work."

Cheers,
Ulf

-- 
Dr Ulf D Schiller
Centre for Computational Science
University College London
20 Gordon Street
London WC1H 0AJ
United Kingdom

Phone: +44 (0)20 7679 5300



reply via email to

[Prev in Thread] Current Thread [Next in Thread]