The "rem" variable is not and should not be available to sander when
there is no MPI. If a user tries to specify -rem or any of the
remd-related variables on the command line (remlog etc), sander will
consider it an unknown flag. I have fixed remd.f so that no replica
variables are available if MPI is not defined. You were completely right
about the use of rem in force.f - since I didn't work on the REMD LES
code at all I missed that stuff. There was also some stuff in sander.f,
ene.f and egb.f that I cleaned up. So the appropriate defines have been
added in force.f, egb.f, sander.f, and ene.f where rem is used, but it
should be noted that REMD LES has been disabled (via a check in
mdread.f) until it can be verified with the new REMD code.
-Dan
David A. Case wrote:
> I've checked in changes from Volodymyr, and for me, both serial and parallel
> codes now compile. But I had to make some tweaks, and there seems to be
> cross-purposes about the "rem" variable:
>
> In multisander (and elsewhere in Dan's code I think), rem gets set and passed
> around only when MPI is set. It's not clear to me what happens when MPI
> is not set (it's in the code: I just haven't studied carefully enough to
> figure it out.) There clearly seem to be places where it is assumed that rem
> and remd variables are only available under MPI.
>
> There is a comment in remd.f that indicates that some variables might be
> available without MPI, but I'm not yet convinced that this is consistently
> handled.
>
> The force.f routine uses the rem variable when LES is turned on, even if MPI
> is not set. I put in a declaration just to make the code compile, but this
> needs to be looked at -- if the intent is to disable simulatneous rem and LES
> (?), that should be done once (presumably in mdread.f) and not everywhere
> inside force.f. If there is some other intent, things should be commented and
> fixed.
>
> The ncsu stuff uses the "rem" variable, but in serial mode this is probably
> not available. I haven't taken the time to try to grok the connection between
> remd and ncsu, since I figure others understand the code much better than I
> do.
>
> My bias (based on what I know now): replica exchange seems to require MPI, and
> we should not try to be using those variables in serial code. But I'm open
> to alternatives. We certainly could have an "rem" variable that was set to 0
> (but still visible) in serial code, [somewhat like we define master=.true.
> in serial code so that code like "if(master)" will work in both serial and
> parallel.]
>
> So, please look at what is there, and make appropriate fixes.
>
> ...thanks!...dave
>
>
--
-------------------------
Daniel R. Roe, Ph.D.
Department of Chemistry
Stony Brook University
Stony Brook, NY, 11790
631-632-1560
Received on Sun Dec 23 2007 - 06:07:34 PST