I need help to set up a time dependent, temperature (tabulated in a file) to simulate the ultrafast melting of nanorods irradiated by a fs laser pulses.
I did some research of the existing posting and tried a few options with the code. It looks like the only way to make the temperature following my setting, the temp has to be rescaled every step (for me the fluctuation does not matter too much). The time range I am interested to follow is about 1 ns, an if I have to do rescaling every fs, the input file will seem to be very clumsy to write, modify or use. With loop option, it is not so obvious how to implement without importing all the temperature value.
I wonder if some one has tried similar thing? Thanks.
All the the LAMMPS thermostat fixes (nvt,langevin,rescale,berendsen) ramp the target temperature linearly in time from Tstart at the start of the run to Tstop at the end of the run, where the length of the run is specified by a subsequent ‘run nsteps’ command. You could go in and modify the code to read the target temperature schedule from a file, but I think this is not necessary. It should be sufficient to approximate your 1 ns temperature schedule by a sequence of linear ramps, each say 10 ps long (that means entering a list of one hundred temperature value in a ‘variable mytemp index t1 t2 t3…’ command, which you can write in a separate file with & line continuations and access it using the LAMMPS include command. I recommend using berendsen or langevin. They are not as formally correct as nvt, but they are more robust. Remember, when you change the target temperature, you are really just changing the ‘time average’ kinetic energy of the system. It does not make physical sense to change this too rapidly, nor can it be measured experimentally with much precision.
I am trying to compile on blue gene, have the following complaint from the machine, please help. I svned the package. The Makefile.bgp is attached. Thanks.
Yuelin
screen dump:
[email protected]...:~/lammps/src> make bgp
grep: angle_*.h: No such file or directory
grep: dihedral_*.h: No such file or directory
grep: improper_*.h: No such file or directory
make[1]: Entering directory `/gpfs/home/ylli/lammps/src/Obj_bgp'
Makefile:1: *** missing separator. Stop.
make[1]: Leaving directory `/gpfs/home/ylli/lammps/src/Obj_bgp'
make: *** [bgp] Error 2 [email protected]...:~/lammps/src>
as you can see from the error message,
the first line in your Makefile.bgp is incorrect.
that line is supposed to be a comment starting
with a pound sign.
Thanks. I got the same output as yours at 16 nodes and below, but as I scale it up, at 32 and 64 nodes, this happened. Did you spot any obvious error in the input script? Or can it be the machine? Thanks.
I think it is the machine. Does BG mean Blue Gene? We've run
plenty of stuff on BG machines before. I don't
see how LAMMPS can lose atoms between when it creates
them and the setup for the first timestep. There is a communication
that is done, but it should be effectively a no-op since
when they were created they are already on the right processor.
I think the only way to debug this is to put in print statements at
various places in the code to see where they are lost. A likely
place is in the Verlet::setup() call which does the comm. But
that could only be done on your box, since I can't reproduce
the problem.
I have not seen this problem before. I would sum and print
out the number of atoms at the beginning of verlet::setup() to
see if you've already lost atoms. If not, the comm routines
called from setup() are a good guess as to where it's happening.
If you've already lost atoms, then backup and see what command
is losing them. Kind of a binary search through the code
to figure out where things go bad.