It's not very clear to me whether the output from a parallel tempering simulation
has been sorted by temperature?
To make it more clear, for example I have a master log
step T0 T1 T2
0 0 1 2
100 1 0 2
and I have log files log.lammps.0 and log.lammps.1 and log.lammps.2
Does log.lammps.0 contains all the output for T0?
Or log.lammps.0 contains output for T0 at timestep=0 and output for T1 at timestep=100?
If the later case is true, that means I need to re-sort the log files by temperature like that in Gromacs.
According to my test, it seems the log files are already written by temperature. (i,e. one temperature per file).
Can anybody confirm this?
Are the dump files written in the same way?
Each log file is for one replica, and its temperature varies
during the tempering. The doc page for the temper
command explains this in detail.
Thank you for the answer!
I finally found my problem is not really related to the output.
The problem is cause by MISSING code in lammps. As far as
in the latest version, fix_nvt.cpp does not implement the reset_target
member function. But this function is used in temper.cpp for the actual
temperature exchange. For a constant T simulation, fix_nvt.cpp has to
use the implementation from its base class fix_nh,
where the reset_target() is just an empty function. As a consequence,
during the remd simulation the temperatures are NOT exchanged!!!
although the master log file indicates so. This should be corrected.
I think this issue exists also for all the derived classes of fixNH (like fixNPT etc).
It's better to set this function in fixNH to pure virtual in order to prevent further
problem or mistake. (unfortunately, this was found yesterday after a couple of weeks
Hmm - looks like that function was inadvertently
left out when we reformulated NVT/NPT. We'll
add it back in as a patch.
Just posted a 26Nov10 patch for this - please try
out your tempering model and see if it now
works as you expect.
Thank you! It works well.