espressomd-devel
[Top][All Lists]

## Re: [ESPResSo-devel] Monte Carlo and other non-MD methods?

 From: Florian Weik Subject: Re: [ESPResSo-devel] Monte Carlo and other non-MD methods? Date: Fri, 20 Apr 2018 04:33:07 +0000

Hi,
for MC to be feasible with electrostatics, you'd need an algorithm that can evaluate the energy of a move in constant time, such as FMM. A direct sum won't cut it as the update is still O(N), which makes sampling overall O(N^2).

Cheers,
Florian

On Thu, Apr 19, 2018, 23:37 Bogdan Tanygin <address@hidden> wrote:
Hi Rudolf,

Thanks for the feedback, one seems that I've got it. So, the non-MD algorithms could be placed into the minimize_energy.cpp (called from the integrate.cpp) with an assumption that a proper documentation will support it, especially that not every energy component calculations will work correctly. For instance, the long-range calculations should be replaced by the all-with-all summations. The dipolar direct sum on GPU may be even of a practical usage in this case.

Sincerely yours,
Bogdan Tanygin

On Thu, Apr 19, 2018 at 10:48 AM, Rudolf Weeber wrote:
Hi,
On Thu, Apr 19, 2018 at 12:26:00AM +0300, Bogdan Tanygin wrote:
> Could you please clarify, are Monte Carlo (MC) and other non-MD methods of
> any use within the ESPResSo? I understand that something like GHMC is OK
> because the same MD VV integration loop is using and all the peculiarities
> are inside the special thermostat.
Espresso is not very well suited for Monte Carlo with single particle moves, because it lacks the capability to partially recalculate the energy due to a single particle being changed.

For bonded and pair-wise non-bonded interactions implementing it would probably not be too difficult. Long-range interaction probably need to be nearly entirely recalculated.

So it is not primarily about the main loop but the energy calculation.

Espresso is used for some Monte Carlo related schemes such as grand canonical, reaction enseble, and MC volume moves. The first two have some code in the core, the latter can be done entirely on the Python level.

Regards, Rudolf