[lammps-users] Bonding to periodic images within LAMMPS - surfaces

I am trying to simulate an alumina surface - the system has triclinic symmetry. My surface keeps moving and distorting and I think it is a problem with bonding to the periodic image. I think instead on having a large alumina slab, where all the periodic images are bonded to form an "infinite" lattice, I have a series of discrete slabs with no bonding across the PBCs.

I have tried to different methods for modelling the system
1) generate a alumina supercell from the unit cell structure in Materials studio, export the coordinates, and using topotools, generate the LAMMPS data file
2) using the lattice command to define a unit cell and then extending this to get the appropriate surface size.

With 1), I do not get any bonding across the boundary conditions
With 2), I cannot define bonding within the unit cell - I can put the atoms on the lattice sites but I get an error when I use the create_bonds command.

What is the best way to handle bonding across boundary conditions, and does the fact that I have triclinic symmetry have any effect on how you would deal with this.

Thanks,
Michael

Not clear on your issue. If you defining bonds within LAMMPS
(e.g. in a data file), then there should be no problem with
them crossing a periodic boundary, whether the box is
triclinic or orthog. If may be that you are having trouble
visualizing the system, and the program you are using is
having trouble finding bonds that cross the periodic boundaries,
esp for a triclinic box. But that is a viz problem, not a LAMMPS
issue.

Steve

The problem is I don't have any bonding definitions across the BC's.
For example I import the alumina supercell into VMD. I then use the topotools plugin to write the LAMMPS data file. It writes all the bonding information for the internal bonds within the supercell - it does not however write any bonding information to bond the edge atoms on opposite sides of the supercell.

I need to find someway of bonding the atoms on the opposite edges of my supercell in order to create an "infinite" lattice stracture rather than a series of discrete structures.

Is there any way of doing this with topotools, or within LAMMPS, possibly using the create_bonds command.

Hope this is clearer,

Thanks,
Michael

The problem is I don't have any bonding definitions across the BC's.
For example I import the alumina supercell into VMD. I then use the
topotools plugin to write the LAMMPS data file. It writes all the
bonding information for the internal bonds within the supercell - it
does not however write any bonding information to bond the edge atoms on
opposite sides of the supercell.

PBC support in VMD is work in progress and still very limited.
most people that use VMD don't need it, but need it to run fast,
which excludes all easy ways to handle periodic bonds.

at the moment, you can set bonds manually.

I need to find someway of bonding the atoms on the opposite edges of my
supercell in order to create an "infinite" lattice stracture rather than
a series of discrete structures.

you didn't say what kind of model do you use for your system.
does it include explicit bonds?

Is there any way of doing this with topotools, or within LAMMPS,
possibly using the create_bonds command.

in both cases you have to first determine which atoms have to be bound.
if you don't have an orthogonal unit cell, it is going to take a lot of
scripting effort in VMD to get this right. you can possibly borrow some
code from the pbctools plugin.

cheers,
   axel.

There is no create_bonds command in LAMMPS. There is a
fix bond/create but it's not going to do what you are looking for.
I would first try to do this external to LAMMPS, e.g. see if
you can get the VMD tools to write the data file you want.
It would be possible to add a create_bonds command, something
for example, that created bonds for all pairs of atoms within
a distance, but it would be a bit of work.

Steve

Steve + Axel, thanks for your help.

It seems a very awkward way to deal with this. Some people on the mailing list must have previous experience in simulating surfaces using a full atomistic model, from a crystal structure unit cell. It would be very difficult (for me) to manually add all the required bonds or write a script to attempt to do this.

If anyone has any scripts which may help me, or if anyone could supply me with any details of how they have dealt with setting up and simulating surfaces starting from a crystallographic unit cell it would be appreciated.

Thanks,
Michael.

michael,

Steve + Axel, thanks for your help.

It seems a very awkward way to deal with this. Some people on the
mailing list must have previous experience in simulating surfaces using

you are only the second person that i have come across that uses
a model/potential for this kind of system that requires to explicitly
set bonds.everybody else was using a model that doesn't need
this (e,g. tersoff, reaxx,) or density functional theory.

a full atomistic model, from a crystal structure unit cell. It would be
very difficult (for me) to manually add all the required bonds or write
a script to attempt to do this.

it is somewhat difficult to do this after the fact, but if you start from
a specific unit cell, it is should be most straightforward to write a
small program to generate coordinates and bonds for you.
since this is very unit cell specific, i would have doubts whether
there is a generic way to do this.
the only way i can think of right now, would be to generate your
bonds by starting from a system that is one unit cell longer in
the two periodic dimensions and then identifying the atoms that
are outside of the intended system dimensions and its bonding
partners and for each bonding partner that is inside the planned
system size, reset the bond to the equivalent periodic images
on the other side of the system.

that being said., i am wondering how you plan to handle the
dangling bonds in the dimension where you cut the crystal.
while a simple classical model will have no problem with this,
it would be a not very realistic description in most cases that
i can imagine. but since you don't provide any details about
your model it is difficult to discuss this.

cheers,
     axel.

I disagree with Axel, in that I think the original request is reasonable. There is a long history of representing inorganic crystals using explicit bonds. There are also other related things that people might want to do with LAMMPS, such has construct an infinite polymer chain that bonds to itself across a periodic boundary. In theory, the replicate command should construct a large systems from a small system of this kind, but in practice it seems to only work correctly for finite molecules. Maybe there is a way to provide extra information in the LAMMPS data file to enable replicate to work properly.

I disagree with Axel, in that I think the original request is
reasonable. There is a long history of representing inorganic
crystals using explicit bonds.

i stand corrected. obviously my exposure to people
simulating inorganic materials is not large enough (yet).

There are also other related things that people might want to do
with LAMMPS, such has construct an infinite polymer chain that bonds
to itself across a periodic boundary. In theory, the replicate command
should construct a large systems from a small system of this kind, but
in practice it seems to only work correctly for finite molecules.

this is indeed a tricky situation.
as far as i understood, there are
two scenarios that need to be considered:

a) building a simulation cell with for which all bonds -
   including those across PBC would have to be created.

   that could in principle be handled by a tool like VMD
   with the strategy i outlined before (replicate the
   system, generate bonds from distance search, detect
   bonds that go across the original cell boundaries,
   rebuild those bonds within the original cell).
   i'll have to think about this for a bit, but
   that could be implemented in the topotools plugin
   with not too much effort. at least for orthogonal
   cells. with non-orthogonal cells, it would be
   more effort, since there is currently limited
   support for that in VMD altogether.

   to do that from within LAMMPS would require even
   more effort since this kind of topology generation
   on the fly it tricky to boot.

b) replicating a unit cell or existing simulation cell
   with bonds that already "wrap back".

   those would have to be detected before replicating
   and then "reconnected" to the generated periodic
   image coordinates except for the "last one" that
   has to "wrap back" again.
   not impossible, but would require some effort, too.

Maybe there is a way to provide extra information in the LAMMPS data
file to enable replicate to work properly.

hmmm... you mean like the image flag for positions?
i.e. an indicator that flags bonds that wrap in the
original cell and then would need to be treated as
outlined in case b)?

cheers,
   axel.