Hi,
> I'm implementing replica exchange with random neighbor pairs. That is
> you don't have the restriction to exchange with the left on even time
> steps and the right on the odd, also allowing for an odd number of
> replicas. I just generate a list of pairs and try to exchange each time.
> Regarding my problem, sometimes a replica ends up with no partner.
Please take a look at ncsu-bbmd-hooks.f: it implements REMD between
random pairs of replicas (including even number of replicas); the
list of exchange partners is constructed by random shuffling of the
(1 ... Nr) array and then trying to exchange consecutive pairs.
The code is tailored towards NCSU stuff, but you can probably reuse
some ideas. Please see example runs at
http://ambermd.org/tutorials/advanced/tutorial11/index.html
http://ambermd.org/tutorials/advanced/tutorial12/index.html
The code is not restricted to "biased" things and can be used
easily for temperature exchange REMD as well (input looks somewhat
unexpected in that case though).
> But
> it should still do it's "updates" like you mention below, no?
(a) If a replica is not planned to participate in exchange, there
is no need to do anything exchange-related. (b) Calls to
on_delta/on_exchange will attempt to mpi_sendrecv() for a given pair
(if needed, i.e., if some of the ncsu stuff is active).
> ok...
If none of ncsu_* things is present in the MDINs, there is no need
to call any of the on_* callbacks (except init/fini/on_mdread, so that
the ncsu-* things know they are not active). You can probably proceed
ignoring them all; I can later adjust things as needed for ncsu stuff
to work properly.
Have a nice day,
Volodymyr
_______________________________________________
AMBER-Developers mailing list
AMBER-Developers.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber-developers
Received on Fri Oct 22 2010 - 09:30:03 PDT