~ubuntu-branches/debian/sid/lammps/sid

« back to all changes in this revision

Viewing changes to tools/moltemplate/common/graphene.lt

  • Committer: Package Import Robot
  • Author(s): Anton Gladky
  • Date: 2015-04-29 23:44:49 UTC
  • mfrom: (5.1.3 experimental)
  • Revision ID: package-import@ubuntu.com-20150429234449-mbhy9utku6hp6oq8
Tags: 0~20150313.gitfa668e1-1
Upload into unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# This file contains a unit cell for building graphene and nanotubes
2
 
#
3
 
#
4
 
#  The 2AtomCellAlignX "molecule" defined below is a minimal unit cell for any
5
 
# hexagonal tesselation in 2-dimensions.  (See "graphene_unit_cell.jpg")
6
 
# Surfaces constructed with this unit cell can be flat or curved into tubes.
7
 
# The distance between nearest-neighbor carbon atoms (ie the length of a 
8
 
# carbon-carbon bond) is equal to "d" which I set to 1.420 Angstroms.
9
 
#
10
 
#    d = length of each hexagon's side = 1.42 Angstroms
11
 
#    L = length of each hexagon = 2*d  = 2.84 Angstroms
12
 
#    W = width of each hexagon = 2*d*sqrt(3)/2 = 2.4595121467478056 Angstroms
13
 
#
14
 
# Consequently, the Lattice-cell vectors for singe-layer graphene are:
15
 
#   (2.4595121467478,    0,     0)      (aligned with X axis)
16
 
#   (1.2297560733739,  2.13,    0)      (2.13 = 1.5*d)
17
 
# So, to build a sheet of graphite, you could use:
18
 
#   sheet = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
19
 
#                                        [10].move(1.2297560733739,2.13,0)
20
 
 
21
 
 
22
 
 
 
1
# The minimal unit cell for graphine contains only 2 atoms:
 
2
# (which I arbitrarily named "C1" and "C2")
23
3
 
24
4
Graphene {
25
5
 
26
 
  2AtomCellAlignX
27
 
  {
28
 
    # atomID   molID     atomType charge       x               y       z
29
 
    write("Data Atoms") {
30
 
      $atom:C1  $mol:...  @atom:../C   0.0  -0.61487803668695 -0.355  0.0
31
 
      $atom:C2  $mol:...  @atom:../C   0.0   0.61487803668695  0.355  0.0
32
 
    }
33
 
  }
34
 
 
35
 
  # Now define properties of the Carbon graphene atom
36
 
 
37
 
  write_once("In Init") {
38
 
    pair_style hybrid  lj/charmm/coul/charmm  9.0 10.0
39
 
  }
40
 
 
 
6
  # atomID   molID     atomType charge      x              y         z
 
7
  write("Data Atoms") {
 
8
    $atom:C1  $mol:...  @atom:C   0.0  -0.61487803668695 -0.355   0.0000
 
9
    $atom:C2  $mol:...  @atom:C   0.0   0.61487803668695  0.355   0.0000
 
10
  }
 
11
 
 
12
  # Now define the "C" atom type
41
13
  write_once("Data Masses") {
42
14
    @atom:C  12.0
43
15
  }
44
 
 
45
16
  write_once("In Settings") {
46
 
    #              i       j                              epsilon     sigma 
47
 
    pair_coeff  @atom:C @atom:C  lj/charmm/coul/charmm   0.068443     3.407
48
 
 
 
17
    #              i       j                             epsilon     sigma
 
18
    pair_coeff  @atom:C @atom:C  lj/cut/coul/long       0.068443     3.407
 
19
    
49
20
    # These Lennard-Jones parameters come from
50
21
    #  R. Saito, R. Matsuo, T. Kimura, G. Dresselhaus, M.S. Dresselhaus,
51
22
    #  Chem Phys Lett, 348:187 (2001)
53
24
    # Define a group consisting of only carbon atoms in graphene molecules
54
25
    group Cgraphene type @atom:C
55
26
  }
56
 
 
57
 
  # Notice that the two atoms in the unit-cell above lie in the XY plane.
58
 
  # (Their z-coordinate is zero).  It's also useful to have a version of 
59
 
  # this object which lies in the XZ plan.  So we define this below:
60
 
 
61
 
  2AtomCellAlignXZ = 2AtomCellAlignX.rot(90,1,0,0)
62
 
 
 
27
  write_once("In Init") {
 
28
    pair_style  hybrid  lj/cut/coul/long  10.0
 
29
  }
63
30
} # Graphene
64
31
 
65
32
 
66
33
 
67
34
 
68
 
 
69
 
 
70
 
 
71
 
 
72
 
 
73
 
 
74
 
# ------------   Graphite  -----------
75
 
#
76
 
# Note: For graphite: sheets stacked in the Z direction are separated by a
77
 
#       distance of 3.35 Angstroms, and shifted in an alternating +/-Y direction
78
 
#       by a distance of d (1.42 Angstroms).  To add additional graphene layers
79
 
#       you could use:
80
 
#   sheet2 = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
81
 
#                                         [10].move(1.2297560733739,2.13,0)
82
 
#   sheet2[*][*].move(0,  1.42, 3.35)
83
 
#   sheet3 = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
84
 
#                                         [10].move(1.2297560733739,2.13,0)
85
 
#   sheet3[*][*].move(0, -1.42, 6.70)
86
 
#   etc...
87
 
#       However, to build a thick sheet of graphite, it would 
88
 
#       be more efficient to use a 4-atom unit cell:
89
 
#
90
 
#Graphene {
91
 
#  GraphiteCell {
92
 
#    # atomID   molID     atomType charge       x               y       z
93
 
#    write("Data Atoms") {
94
 
#      $atom:C1  $mol:...  @atom:../C   0.0  -0.61487803668695 -0.355  0.0
95
 
#      $atom:C2  $mol:...  @atom:../C   0.0   0.61487803668695  0.355  0.0
96
 
#      $atom:C3  $mol:...  @atom:../C   0.0  -0.61487803668695  1.065  3.35
97
 
#      $atom:C4  $mol:...  @atom:../C   0.0   0.61487803668695  1.775  3.35
98
 
#    }
99
 
#  } # GraphiteCell
100
 
#}
101
 
#
102
 
# Then you could create a thick sheet of graphite this way:
103
 
#
104
 
#   graphite = new Graphene/GraphiteCell [10].move(2.4595121467478,0,0)
105
 
#                                        [10].move(1.2297560733739,2.13,0)
106
 
#                                        [5].move(0,0,6.70)
 
35
# This is a 2-dimensional hexagonal unit cell.  The unit vectors are:
 
36
#
 
37
# (2.4595121467478,    0,     0)    
 
38
# (1.2297560733739,  2.13,    0)
 
39
#
 
40
# You can create a sheet of single-layer graphene this way:
 
41
#
 
42
# small_crystal = new Graphene [3].move(2.45951214, 0, 0)
 
43
#                              [3].move(1.229756, 2.13, 0)
 
44
#
 
45
# For thicker sheets, follow the instructions in the "graphite.lt" file.
 
46
#
 
47
# Note: The length of each carbon-carbon bond is currently 1.42 Angstroms.
 
48
#       To increase it to 1.422 Angstroms, uncomment the following line:
 
49
#
 
50
# Graphene.scale(1.0014084507042254)    # 1.0014084507042254 = 1.422 / 1.42
 
51
#
 
52
# You will have to change the unit cell lattice vectors (see above) accordingly