MoS2 Force Field parameters setup and Angle definition

Hello dear lammps users!

Im trying to model MoS2 with the force field parameters from Comp. Mat. Sci. 48, 101 (2010), [set parameters # 8].

My lattice is stable but the lattice constants and the Phonon DOS are slightly different. I think there are two reasons this happens:

1) In their study a morse potential to model the bonded atoms interaction (Mo-S, ~2.4A apart) and a LJ potential for the non bonded ones (Mo-Mo, S-S ~3.2A apart, Mo-S~5A apart ) were used. The thing is the LJ potential for the non bonded Mo-S (~5A apart) also affects the bonded ones resulting to a slight higher lattice constant.

So i want to ask: How can i set (if possible) the LJ potential to ignore the nearest neighboring atoms?

Here is the section where i define the interatomic potentials.

Hello dear lammps users!

Im trying to model MoS2 with the force field parameters from Comp. Mat. Sci.
48, 101 (2010), [set parameters # 8].

My lattice is stable but the lattice constants and the Phonon DOS are
slightly different. I think there are two reasons this happens:

1) In their study a morse potential to model the bonded atoms interaction
(Mo-S, ~2.4A apart) and a LJ potential for the non bonded ones (Mo-Mo, S-S
~3.2A apart, Mo-S~5A apart ) were used. The thing is the LJ potential for
the non bonded Mo-S (~5A apart) also affects the bonded ones resulting to a
slight higher lattice constant.

Here is the section where i define the interatomic potentials.

############################################
# define interatomic potentials

pair_style hybrid/overlay morse 2.9 lj/cut/coul/long 4 12.33
pair_coeff 1 2 morse 19.945 0.858 2.39 #S-Mo
pair_coeff 1 1 lj/cut/coul/long 0.8382 2.5510 #Mo-Mo
pair_coeff 2 2 lj/cut/coul/long 0.0606 3.3695 #S-S
pair_coeff 1 2 lj/cut/coul/long 0.0339 2.9318 #Mo-S

So i want to ask: How can i set (if possible) the LJ potential to ignore the
nearest neighboring atoms?

don't use hybrid/overlay. you are not correctly modeling the system
that you describe.

define suitable bonds and use bond_style morse for them and then
pair_style lj/cut/coul/long for *all* atoms.
due to 1-2 exclusions, the non-bonded terms will not be applied to
those atoms that are connected via a bond.

[...]

kspace_style pppm 1.0e-4

angle_style harmonic
angle_coeff 1 2.5163 82.0 #theta
angle_coeff 2 2.5163 82.0 #fi
angle_coeff 3 2.5163 82.0 #psi

# set charge
set type 1 charge 0.76
set type 2 charge -0.38
############################################

2) In order to define the angles Mo-S-Mo (θ), S-Mo-S (Φ) and S-Mo-S (Ψ) (to
set the harmonic angle_style and the angle_coeff) i have to define them one
by one in the data file of the unit cell. Well i tried to do that, i defined
angles (θ, Φ, Ψ) between the atoms of my 6-atom unit cell but i must also
define angles between my cell atoms and the atoms of the future neighboring
cells (after replicate command). So is there a way to do it like that or i
have to predefine the whole structure in the data file and the angles
corresponding to it?

as far as i remember, replicate cannot handle "periodic" bonds/angles/etc.
currently, you have to define those explicitly in a new data file.

axel.

as far as i remember, replicate cannot handle “periodic” bonds/angles/etc.
currently, you have to define those explicitly in a new data file.

The relevant part of the replicate doc page is this:

IMPORTANT NOTE: You cannot use the replicate command on a system which
has a molecule that spans the box and is bonded to itself across a
periodic boundary, so that the molecule is efffectively a loop. A
simple example would be a linear polymer chain that spans the
simulation box and bonds back to itself across the periodic boundary.
More realistic examples would be a CNT (meant to be an infinitely long
CNT) or a graphene sheet or a bulk periodic crystal where there are
explicit bonds specified between near neighbors. (Note that this only
applies to systems that have permanent bonds as specified in the data
file. A CNT that is just atoms modeled with the “AIREBO
potential”_pair_airebo.html has no such permanent bonds, so it can be
replicated.) The reason replication does not work with those systems
is that the image flag settings described above cannot be made
consistent. I.e. it is not possible to define images flags such that
when every pair of bonded atoms is unwrapped (using the image flags),
they will be close to each other. The only way the replicate command
could work in this scenario is for it to break a bond, insert more
atoms, and re-connect the loop for the larger simulation box. But it
is not clever enough to do this. So you will have to construct a
larger version of your molecule as a pre-processing step and input a
new data file to LAMMPS.

Steve

> 2) ...So is there a way to do it like that or do i
> have to predefine the whole structure in the data file and the angles
> corresponding to it?
as far as i remember, replicate cannot handle "periodic" bonds/angles/etc.
currently, you have to define those explicitly in a new data file.

So you will have to construct a
larger version of your molecule as a pre-processing step and input a
new data file to LAMMPS.

It is a headache to build periodic structures with explicit bonds
which span the periodic boundary.

Axel's topotools can automatically connect atoms with bonds if they
are physically close together.

https://sites.google.com/site/akohlmey/software/topotools/topotools-tutorial---part-1

However I do not think it currently will automatically connect atoms
which lie on opposite sides of the periodic boundary together. You
still have to do that manually. Hopefully that is not too difficult.

You can also have a look at:
http://sourceforge.net/projects/moleculardynami/
and
http://lammps.sandia.gov/prepost.html

With moltemplate, you currently have to manually connect every unit
cell or monomer together explicitly.
(1-dimensional polymer example:
http://www.moltemplate.org/examples/2bead_homopolymer/peptide.lt)
Moltemplate currently does not generate bonds automatically between
nearby atoms.
(You can create big unit cells from small unit cells. In each "big"
unit cell you can add bonds between the smaller unit cells. Then you
can make a lattice using the big unit cells. This might help, but you
still have to connect the big unit cells together manually, which will
be a headache.)

Please let us know if you find an easy way to build these kinds of
periodic structures.
Cheers

Andrew

Thanks a lot for your comments guys, i really appr-eciate it, you’ve been of great help!

Its ok i figured a simple bash script with loops (its in my mind right now) to print those bonds and angles for that data file.
It shouldn’t be hard to implement.

Andrew thanks for your links they seem rather interesting and helpful!