Building graphene with wrinkles

Hi everyone,

I want to model a single layer graphene with wrinkles. Can anyone recommend some softwares or methods to build such model?

Regards,

MC

Hello.
I suspect by the time I finish typing this out, somebody else will have replied.

To reply is difficult. There are many ways to do this.

  -- lammps input script commands --
First of all, I think is possible to build your system without using
any external tools (just using the LAMMPS "lattice custom" input
script command). See the following discussion:
http://sourceforge.net/mailarchive/message.php?msg_id=30292829
http://lammps.sandia.gov/doc/lattice.html
(I think there are tools or commands for visualizing systems built
with lammps input script commands, but I don't about them.)

   -- data files --
However, in general, I prefer to build a LAMMPS "data" file. (I am
biased.) I like to build a "data" file because they can be visualized
and manipulated using free tools like VMD/topotools. That makes it
easy to check for mistakes. You can also edit a "data" file with a
text editor after you have built it. There are several tools to build
data files:
   VMD/topotools (free for academics):
https://sites.google.com/site/akohlmey/software/topotools
   Moltemplate (free):
http://www.moltemplate.org
   Molecular Dynamics Studio (free):
http://sourceforge.net/projects/moleculardynami/
   Lammpsfe (free demo)
http://www.scifes.com/
   There is also "Avogadro".
   (Can Avogadro create LAMMPS "DATA" files?)
http://avogadro.openmolecules.net/wiki/Main_Page

In general, if the wrinkles have a periodicity which is a multiple of
the graphene, lattice-spacing, then it should not be hard to build a
2-dimensional "unit cell" whose size matches the periodicity of the
wrinkes. Then copy it many times to tile the XY plane. VMD/topotools
and moltemplate can copy a unit cell in 2 or 3 dimensions. (Perhaps
MD Studio can do this too?) Your unit cell does not have to be
rectangular. (It can be hexagonal. Again, you can also use the
"lattice custom" command in LAMMPS, but not if you want to build a
data file.)

   -- moltemplate --
   In moltemplate, for example, you can use a single "new" command to
generate many copies of a unit cell:
http://www.moltemplate.org/examples/nanotube+water/graphene_walls.lt
   (Please ignore all the "delete" statements in this example file.)
The relevant lines from this file is are here:

unitcells = new Graphene/2AtomCellAlignX [14].move(1.23,2.13,0)
                                           [13].move(2.46,0,0)

  This will generate a 14x13 hexagonal sheet of graphene (which lacks bonds):
http://www.moltemplate.org/images/nanotube+water/graphene_unit_cell.jpg

   However you have to construct the actual unit cell yourself. You
will need to manually generate the coordinates for every atom in your
unit cell. An example, here is the small 2-atom graphene unit cell
used in the previous example:
http://www.moltemplate.org/examples/nanotube+water/graphene.lt
   You would need to create a larger variant of this unit cell with wrinkles.

  -- vmd/topotools --
   Again, it is definitely possible to build your system using
VMD/topotools. If you are using a force-field for the carbon which
requires unbreakable (eg harmonic bonds) connecting neighboring carbon
atoms, then I recommend you use VMD to build a graphene sheet using
Axel's "Carbon Nanotube" plugin. Then you can probably modify the (Z)
coordinates of your atoms in VMD using a TCL script with a for-loop.
VMD scripting is powerful. Finally you can save the structure as a
LAMMPS data file using "topotools". (See the link above. Afterwards,
you may need to edit your data file and manually add bonds connecting
opposite edges of the graphene sheet together. This should not be too
hard to do.)

Note: If the spacing between the wrinkles is NOT a multiple of the
graphene lattice-spacing, then, again, I think you can write a TCL
for-loop in VMD to modify the Z coordinates of your atoms.

Alternately you can always manually cut out the "Atoms" section of
your DATA file (created by any data-file builder) and write an
external program or script to change the (Z) coordinates of the atoms.

  -- Can you use LAMMPS input script commands to create wrinkles? --
If all you need to do is displace the Z coordinates of the atoms in
your top-most graphene layer, then I speculate that it might be
possible to using LAMMPS "displace_atoms" or "set" commands and a
for-loop. You could construct a data file using the tools above if
you like. Then you could use a command like "set atom $i z 43.177" to
change the z coordinate of atom i to 43.177 (for example).
Unfortunately I don't know how to make the z coordinate a function of
the atom's x and y coordinates. (Perhaps somebody else knows how to
do this.)

For more information, see:
http://lammps.sandia.gov/doc/set.html

For-loops (in lammps) are described here:
http://lammps.sandia.gov/doc/jump.html
http://lammps.sandia.gov/doc/next.html
http://lammps.sandia.gov/doc/variable.html

Also look at:
http://lammps.sandia.gov/doc/displace_atoms.html
http://lammps.sandia.gov/doc/fix_move.html

  -- other programs --
I'm sure you can also build this using "lammpsfe" or "molecular
dynamics studio", but I'm not familiar with these programs yet. I
hope someone else can fill in here.

Cheers!
Andrew
I hope this gets you started.
I don't have much time in the next week or two, but if you have a
quick question, I will reply.

This might also be a useful starting point.

In the miscellaneous section at the bottom of this person’s site has a lammps input script for arbitrary n x m graphene patches.

There’s also some other source code in other tools such as Mathematica, VMD etc to do the same.

v/r,

Sorry, here’s the link

http://penev.objectis.net/resources

This might also be a useful starting point.

In the miscellaneous section at the bottom of this person’s site has a lammps input script for arbitrary n x m graphene patches.

There’s also some other source code in other tools such as Mathematica, VMD etc to do the same.

v/r,

Thanks for the link to Evgeni's elegant scripts. (I've heard good
things about that page before, but I had forgotten it.)

Andrew