Dear all,
I used the command:
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 2.0
to fix the temperature of a 10x10x10 unit cell sample of Cu (attached sample input file). I note that the temperature of the sample is initially close to 0 K and rises slowly to finally converge to 300 K after around 20 pico-secs (see attached figure).
I am of the opinion (misguided?) that since I have specified the value of Tstart and Tstop as 300 K, I would expect the program to set the starting temperature at 300 K and then proceed to maintain it at 300 K throughout the simulation. This is currently not being done. Is there some reason for it?
Currently, one has to use the velocity command to first set the temperature at the value of Tstart and then proceed with the “fix npt” command. See attached sample file (with commented out velocity command before the fix npt command).
Best Regards
Manoj
NPT-Cu.eps (34.5 KB)
in.mytest (574 Bytes)
Dear all,
I used the command:
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 2.0
to fix the temperature of a 10x10x10 unit cell sample of Cu (attached sample input file). I note that the temperature of the sample is initially close to 0 K and rises slowly to finally converge to 300 K after around 20 pico-secs (see attached figure).
I am of the opinion (misguided?) that since I have specified the value of Tstart and Tstop as 300 K, I would expect the program to set the starting temperature at 300 K and then proceed to maintain it at 300 K throughout the simulation. This is currently not being done. Is there some reason for it?
Yes. This is not how a thermostat works. Especially a nose-hoover thermostat is limited in the way how much kinetic energy it can transfer.
There is such a thing as setting an initial temperature and equilibration in a gazillion of input script examples.
Thank you. I am not asking how to set an initial temperature or how to carry out equilibration.
Let me rephrase the question. What is the use of the “Tstart” value in the command:
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 1.0
if the program seemingly ignores it?
Currently I just have to add the following line:
velocity all create 300.0 5812775 mom yes
before
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 1.0
to get faster equilibration at 300 K. I believe that the program can be made to assign a velocity distribution corresponding to Tstart at the outset of the simulation. My question is -> is there any reason not to do this? This is what is effectively being done by the above two commands.
Best Regards
Manoj
Thank you. I am not asking how to set an initial temperature or how to carry
out equilibration.
Let me rephrase the question. What is the use of the "Tstart" value in the
command:
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 1.0
if the program seemingly ignores it?
it does *not* ignore it.
Currently I just have to add the following line:
velocity all create 300.0 5812775 mom yes
before
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 0.5 drag 1.0
to get faster equilibration at 300 K. I believe that the program can be made
to assign a velocity distribution corresponding to Tstart at the outset of
the simulation. My question is -> is there any reason not to do this? This
because it would be a stupid thing to do. it would destroy any
existing equilibration by assigning a new temperature distribution.
you are not understanding the way how a thermal coupling with a
thermostat algorithm is supposed to work.
is what is effectively being done by the above two commands.
and that is a good thing. a thermostat is not supposed to guarantee an
instantaneous temperature, but supposed to couple the system to a heat
bath without disrupting and invalidating the statistical mechanical
ensemble.
axel.
Thank you for your time once again.
I am attaching a plot with 3 cases:
case-1: Tstart assigned a velocity distribution corresponding to 300 K (yes, I understand that this state of the system is not yet a valid, equilibrium state of the system).
case-2: same system without a velocity distribution being assigned (with drag = 0), and
case-3: same system without a velocity distribution being assigned (with drag = 2).
Sorry for bringing “drag” into this discussion - I wanted to see the effect of drag on equilibration time - we can forget it as far as this discussion is concerned.
Note that case-1 equilibrates much earlier than case-2 and case-3. The region where it dips below 100 K and climbs back to 300 K is where equipartition of energy occurs (1 pico-second). It is therefore perhaps not a stupid thing to do in this system.
Best Regards
Manoj
NPT_cmp.eps (34.8 KB)
Thank you for your time once again.
I am attaching a plot with 3 cases:
case-1: Tstart assigned a velocity distribution corresponding to 300 K (yes,
I understand that this state of the system is not yet a valid, equilibrium
state of the system).
case-2: same system without a velocity distribution being assigned (with
drag = 0), and
case-3: same system without a velocity distribution being assigned (with
drag = 2).
Sorry for bringing "drag" into this discussion - I wanted to see the effect
of drag on equilibration time - we can forget it as far as this discussion
is concerned.
the problem is your overall approach to equilibration.
Note that case-1 equilibrates much earlier than case-2 and case-3. The
region where it dips below 100 K and climbs back to 300 K is where
equipartition of energy occurs (1 pico-second). It is therefore perhaps not
a stupid thing to do in this system.
i maintain, that it *is* a stupid thing. you keep forgetting that the
temperature value you set with fix npt is not the temperature of the
system but that of the heat bath you are coupling to. any subsequent
transfer of kinetic energy is bounded by how the thermostat is coupled
to your system and how much kinetic energy can be transferred this way
(which is limited). if you care about quickly transferring a suitable
amount kinetic energy into your system without assigning an initial
distribution, a nose-hoover thermostat is about the worst thing to use
(only temp/rescale is worse). you are expecting to be able to abuse
the thermostat for something it is not meant to do. try fix temp/csvr
instead that is a thermostat which is able to transfer *by
construction* a great deal of kinetic energy into a system in a very
effective way that also achieves equipartitioning fairly quickly
(faster than any other thermostats that lammps supports).
axel.