2
# This is a simulation of pyramid-like objects made of particles stacked
3
# and arranged like cannon-balls, or fruit-stands. Ordinarilly, the stack
4
# does not collapse because the particles at the ground layer are immobilized.
5
# However given an initial perterbation the pyramids collapse in an avalanche.
6
# (This can happen, for example when you do not minimize the system beforehand.)
7
# The particles roll down the pyramid and bounce off the "ground". The bouncing
8
# is due to a repulsive external force which is added artificially.
9
# (See the "run.in" file.) The simulation looks weird without something
10
# to bounce off of. So I added a graphene surface at the bottom as scenery.
11
# The ground does not serve any purpose except to look pretty.
13
# (Because there is no damping, I suspect that the distribution of heights of
14
# the particles in a small area should approach the Boltzmann distribution,
15
# if you run the simulation long enough.)
18
# ----------------- Pyramids: -----------------
22
# Move the pyramids into their locations in Giza (approximate)
24
pyramidKhufu = new PyramidKhufu.move(210, 215, 1)
25
pyramidKhafre = new PyramidKhafre.move(150, 150, 1)
26
pyramidMenkaure = new PyramidMenkaure.move(105, 082, 1)
27
PyramidQueens1 = new PyramidQueens1.move(089, 059, 1)
28
PyramidQueens2 = new PyramidQueens2.move(100, 059, 1)
29
PyramidQueens3 = new PyramidQueens3.move(111, 059, 1)
32
# --------------- Scenery: --------------------
34
import "graphene_wall.lt"
36
graphene_wall = new GrapheneWall
38
write_once("In Settings") {
39
# Turn off all interactions with the graphene atoms by setting epsilon to 0.
40
# (We will use a different repulsive barrier to represent the ground instead.)
41
# These atoms are just "for show". epsilon sigma
42
pair_coeff @atom:Graphene/C @atom:Graphene/C lj/cut 0.00000 3.407
44
# Optional: Add the graphene atoms to the "gImmobile" group. Later freeze them
45
group gImmobile type @atom:Graphene/C
48
# Unfortunately, the ground still looks kind of ugly because moltemplate does
49
# not yet know how to automatically connect nearby carbon atoms with C-C bonds
50
# (based on distance). (As of 2013-4-29, moltemplate is not good at
51
# generating crystalline objects containing explicit bonds.)
52
# If you want bonds between atoms, use VMD's "carbon-nanotube-builder plugin"
53
# (which creates data files with bonds) and then merge the two data files
54
# manually later. (This is not done here.)
57
# -------- override earlier settings ----------
59
write_once("In Init") {
60
# Override any earlier style settings
63
pair_style hybrid lj/cut 1.0
68
pair_modify mix arithmetic
69
special_bonds lj 0.0 0.0 0.0
72
# ------------ boundary conditions ------------
74
write_once("Data Boundary") {
75
-1.842033 398.493813 xlo xhi
76
-0.708994 399.167013 ylo yhi
79
# ---------------------------------------------