Implementation of the cutoff version of TIP4P potential

Dear users and developers,

I have recently implemented a TIP4P pair potential that uses cutoffs
for both the Lennard--Jones and Coulomb interactions, and I'm attaching
the source files to this letter for everyone to use. The documentation
for the potential is written in the style similar to the LAMMPS manual
and is also attached.

I drew the inspiration from the lj/cut/coul/cut and lj/cut/tip4p/long
pair styles when implementing the potential, and I tested it to work
with the version of LAMMPS dated 22-Feb-2013.

The restart option for the potential is also implemented. Since the
potential requires using a fix shake command, the pair style won't
restart exactly and the restart trajectory will slowly diverge from
the original non-interrupted one. The restart trajectory will still
provide statistically similar results, as discussed in documentation
for the read_restart command in the LAMMPS manual.

I hope the potential will be useful for others and I hope the developers
will find some time to inspect the code and possibly add it to the main
source tree.

Best regards,
Pavel

pair_lj_cut_coul_cut_tip4p.h (1.45 KB)

pair_lj_cut_coul_cut_tip4p.cpp (20.3 KB)

pair_lj_cut_coul_cut_tip4p.info (2.02 KB)

hi pavel, hi steve,

Dear users and developers,

I have recently implemented a TIP4P pair potential that uses cutoffs
for both the Lennard--Jones and Coulomb interactions, and I'm attaching
the source files to this letter for everyone to use. The documentation
for the potential is written in the style similar to the LAMMPS manual
and is also attached.

[...]

I hope the potential will be useful for others and I hope the developers
will find some time to inspect the code and possibly add it to the main
source tree.

i've integrated the code into LAMMPS-ICMS as part of the USER-MISC
package and published it in its git repo. i've also added a
multi-threaded version (it has additional optimizations like the rest
of USER-OMP which make it ~15% faster w/o threads).

some changes were needed to make things go smoothly.
- the style has been renamed to lj/cut/tip4p/cut to match the current
naming conventions
- documentation has been integrated into pair_lj.txt
- the destructor was made virtual and also the compute() method, so
that the /omp version can be properly derived from it.

also, i noticed that some parts in the documentation have not yet been
updated to the current tip4p naming conventions, so i updated those as
well. the entire set of changed files is the attached archive.

enjoy,
     axel.

lammps-tip4p-cut-integration.tar.gz (96.6 KB)

... and here is an updated version that is compatible with the 5 Mar
2013 version of LAMMPS fresh off the git repo.

thanks,
     axel.

lammps-tip4p-cut-integration.tar.gz (101 KB)

Hi Axel,

i've integrated the code into LAMMPS-ICMS as part of the USER-MISC
package and published it in its git repo. i've also added a
multi-threaded version (it has additional optimizations like the rest
of USER-OMP which make it ~15% faster w/o threads).
some changes were needed to make things go smoothly.
- the style has been renamed to lj/cut/tip4p/cut to match the current
naming conventions
- documentation has been integrated into pair_lj.txt
- the destructor was made virtual and also the compute() method, so
that the /omp version can be properly derived from it.

... and here is an updated version that is compatible with the 5 Mar
2013 version of LAMMPS fresh off the git repo.

Thanks,
Pavel

Pavel - I released this in an 8Mar patch today.
Thanks for contributing it.

3 questions:

(1) Why are type-specific cutoffs not allowed, like
they are for tip4p/long? This should at least be
allowed for the LJ cutoffs, if not also the Coulomb?
The reason tip4p/long does not allow type-specific
Coulomb cutoffs is only b/c of the long-range model.

(2) There is no tail flag logic implemented to add in
the long-range tail correction for the LJ part, again
as tip4p/long allows. Is this intentional or an oversight?

(3) Can you check the text for Section 6.8 of
the manual on TIP4P. Are the coeff values it lists
for the Jorgensen model, the right ones to use?
Is there also a preferred Coulomb (or LJ) cutoff to
use to get a "good" water model with a cutoff TIP4P?

Thanks,
Steve

Hi Steve,

As of your 1st and 2nd questions, I simply don't need that
functionality (i.e. variable LJ and Coulomb cuttofs for various
combinations of atom types and tail correction for LJ forces) in the
model that I'm going to start with, so I didn't program it. However,
the implementation of the above features seems straightforward, so I
will try to squeeze some time during the next 2-3 weeks to look into
that.

Regarding the 3rd question, yes, the coeffs for the TIP4P water model
listed in Section 6.8 are correct, provided they are given in
angstroms and kcal/mol. It would also be worth mentioning in the
Manual that it is possible to use the pair/lj/cut/tip4p/cut potential
for calculations with other TIP4P-like models, such as TIP4P/Ice [1]
and TIP4P/2005 [2]. The user just needs to provide the appropriate
geometries and epsilon/sigma values. For the TIP4P/Ice models the
values are (in angstroms and kcal/mol and derived units)

I've added the info to the howto page and also added the
variable LJ cutoff and tail option support. I kept only
a single allowed Coulomb cutoff, which I think makes sense
for a TIP4P model.

Will be in the next patch ...

Steve

Thanks Steve!

Pavel