git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10172 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2013-06-28 20:32:24 +00:00
parent d9fc13e4b3
commit 81005917e4
11 changed files with 511 additions and 0 deletions

View File

@ -0,0 +1,106 @@
# This file contains a unit cell for building graphene and nanotubes
#
#
# The 2AtomCellAlignX "molecule" defined below is a minimal unit cell for any
# hexagonal tesselation in 2-dimensions. (See "graphene_unit_cell.jpg")
# Surfaces constructed with this unit cell can be flat or curved into tubes.
# The distance between nearest-neighbor carbon atoms (ie the length of a
# carbon-carbon bond) is equal to "d" which I set to 1.420 Angstroms.
#
# d = length of each hexagon's side = 1.42 Angstroms
# L = length of each hexagon = 2*d = 2.84 Angstroms
# W = width of each hexagon = 2*d*sqrt(3)/2 = 2.4595121467478056 Angstroms
#
# Consequently, the Lattice-cell vectors for singe-layer graphene are:
# (2.4595121467478, 0, 0) (aligned with X axis)
# (1.2297560733739, 2.13, 0) (2.13 = 1.5*d)
# So, to build a sheet of graphite, you could use:
# sheet = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
# [10].move(1.2297560733739,2.13,0)
Graphene {
2AtomCellAlignX
{
# atomID molID atomType charge x y z
write("Data Atoms") {
$atom:C1 $mol:... @atom:../C 0.0 -0.61487803668695 -0.355 0.0
$atom:C2 $mol:... @atom:../C 0.0 0.61487803668695 0.355 0.0
}
}
# Now define properties of the Carbon graphene atom
write_once("In Init") {
pair_style hybrid lj/charmm/coul/charmm 9.0 10.0
}
write_once("Data Masses") {
@atom:C 12.0
}
write_once("In Settings") {
# i j epsilon sigma
pair_coeff @atom:C @atom:C lj/charmm/coul/charmm 0.068443 3.407
# These Lennard-Jones parameters come from
# R. Saito, R. Matsuo, T. Kimura, G. Dresselhaus, M.S. Dresselhaus,
# Chem Phys Lett, 348:187 (2001)
# Define a group consisting of only carbon atoms in graphene molecules
group Cgraphene type @atom:C
}
# Notice that the two atoms in the unit-cell above lie in the XY plane.
# (Their z-coordinate is zero). It's also useful to have a version of
# this object which lies in the XZ plan. So we define this below:
2AtomCellAlignXZ = 2AtomCellAlignX.rot(90,1,0,0)
} # Graphene
# ------------ Graphite -----------
#
# Note: For graphite: sheets stacked in the Z direction are separated by a
# distance of 3.35 Angstroms, and shifted in an alternating +/-Y direction
# by a distance of d (1.42 Angstroms). To add additional graphene layers
# you could use:
# sheet2 = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
# [10].move(1.2297560733739,2.13,0)
# sheet2[*][*].move(0, 1.42, 3.35)
# sheet3 = new Graphene/2AtomCellAlignX [10].move(2.4595121467478,0,0)
# [10].move(1.2297560733739,2.13,0)
# sheet3[*][*].move(0, -1.42, 6.70)
# etc...
# However, to build a thick sheet of graphite, it would
# be more efficient to use a 4-atom unit cell:
#
#Graphene {
# GraphiteCell {
# # atomID molID atomType charge x y z
# write("Data Atoms") {
# $atom:C1 $mol:... @atom:../C 0.0 -0.61487803668695 -0.355 0.0
# $atom:C2 $mol:... @atom:../C 0.0 0.61487803668695 0.355 0.0
# $atom:C3 $mol:... @atom:../C 0.0 -0.61487803668695 1.065 3.35
# $atom:C4 $mol:... @atom:../C 0.0 0.61487803668695 1.775 3.35
# }
# } # GraphiteCell
#}
#
# Then you could create a thick sheet of graphite this way:
#
# graphite = new Graphene/GraphiteCell [10].move(2.4595121467478,0,0)
# [10].move(1.2297560733739,2.13,0)
# [5].move(0,0,6.70)

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,52 @@
# file "spce.lt"
#
# H1 H2
# \ /
# O
SPCE {
write_once("In Init") {
# -- Default styles (for solo "SPCE" water) --
units real
atom_style full
# (Hybrid force fields were not necessary but are used for portability.)
pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0
bond_style hybrid harmonic
angle_style hybrid harmonic
kspace_style pppm 0.0001
pair_modify mix arithmetic
}
write("Data Atoms") {
$atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000
$atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590
$atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590
}
write_once("Data Masses") {
@atom:O 15.9994
@atom:H 1.008
}
write("Data Bonds") {
$bond:OH1 @bond:OH $atom:O $atom:H1
$bond:OH2 @bond:OH $atom:O $atom:H2
}
write("Data Angles") {
$angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2
}
write_once("In Settings") {
bond_coeff @bond:OH harmonic 1000.0 1.0
angle_coeff @angle:HOH harmonic 1000.0 109.47
pair_coeff @atom:O @atom:O lj/charmm/coul/long 0.1553 3.166
pair_coeff @atom:H @atom:H lj/charmm/coul/long 0.0 2.058
group spce type @atom:O @atom:H
fix fSHAKE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH
# (Remember to "unfix" fSHAKE during minimization.)
}
} # end of definition of "SPCE" water molecule type

View File

@ -0,0 +1,57 @@
# This ice (1h) unit cell is rectangular and contains 8 water molecules.
# (Coordinates and cell dimensions converted were from a PDB file.)
# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362
import "spce.lt" # <-- define the "SPCE" molecule
SpceIceRect8 {
# Create a 3-dimensional array of 8 water molecules
wat = new SPCE[2][2][2]
# Array indices will be correlated with position [xindex][yindex][zindex]
# You can overwrite coordinates of atoms after they were created this way:
# (Order is not important)
# atom-ID molecule-ID atomType charge newX newY newZ
write("Data Atoms") {
$atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381
$atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710
$atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710
$atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981
$atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970
$atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652
$atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300
$atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289
$atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971
$atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061
$atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391
$atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391
$atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381
$atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710
$atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710
$atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981
$atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970
$atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652
$atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300
$atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289
$atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971
$atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061
$atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391
$atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391
}
} # IceRect8
# Credit goes to Martin Chaplin.
# These coordinates were orignally downloaded from Martin Chaplin's
# website: http://www.btinternet.com/~martin.chaplin/ice1h.html
# ... and then they were stretched independently in the xy and z
# directions in order to match the lattice parameters measured by
# Rottger et al.,
# "Lattice constants and thermal expansion of H2O and D2O ice Ih"
# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648
# I am using the lattice constants measured at temperature 265K
# (and pressure=100Torr).

View File

@ -0,0 +1,13 @@
This directory contains two LT files corresponding to
different versions of TIP3P:
tip3pcharmm.lt # The implementation of TIP3P used by CHARMM (I think).
tip3p2004.lt # The newer Price & Brooks, J. Chem Phys 2004 model
# which uses long-range coulombics
I have not tested these files so I moved them here.
(If you have tested these files, and they work, or if you have other comments
or suggestions, feel free to email me at jewett.aij at gmail dot com.)
Andrew
2012-10-20

View File

@ -0,0 +1,88 @@
# file "tip3p2004.lt"
#
# H1 H2
# \ /
# O
#
# I think this is the TIP3P water described in the paper by
# Daniel J. Price and Charles L. Brooks III
# J. Chem. Phys., 121(20): 10096 (2004)
# Specifically I think it refers to the "Model B" version of long-range TIP3P
# described in the 3rd-to-last column of "Table I", on p.10099.
TIP3P2004 {
write_once("In Init") {
# -- Default styles (for solo "TIP3P2004" water) --
units real
atom_style full
pair_style hybrid lj/charmm/coul/long 10.0 10.5 10.5
bond_style hybrid harmonic
angle_style hybrid harmonic
kspace_style pppm 0.0001
pair_modify mix arithmetic
}
write("Data Atoms") {
$atom:O $mol:. @atom:O -0.830 0.0000000 0.00000 0.000000
$atom:H1 $mol:. @atom:H 0.415 0.756950327 0.00000 0.5858822766
$atom:H2 $mol:. @atom:H 0.415 -0.756950327 0.00000 0.5858822766
}
write_once("Data Masses") {
@atom:O 15.9994
@atom:H 1.008
}
write("Data Bonds") {
$bond:OH1 @bond:OH $atom:O $atom:H1
$bond:OH2 @bond:OH $atom:O $atom:H2
}
write("Data Angles") {
$angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2
}
write_once("In Settings") {
bond_coeff @bond:OH harmonic 450.0 0.9572
angle_coeff @angle:HOH harmonic 55.0 104.52
#########################################################################
#### There are two choices for for the O-O interactions
#########################################################################
#### O-O nonbonded interactions
# For the 1983 Jorgensen version of TIP3P use:
# pair_coeff @atom:O @atom:O lj/charmm/coul/charmm 0.1521 3.1507
# For the 2004 Price & Brooks version of TIP3P use:
pair_coeff @atom:O @atom:O lj/charmm/coul/charmm 0.102 3.188
#########################################################################
#### There are three choices for for the O-H and H-H interactions
#########################################################################
#### 1) CHARMM uses an arithmetic mixing-rule for the O-H sigma parameter
pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.0460 0.4000
pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.0836 1.7753 #arithmetic
#########################################################################
#### 2) OPLS-AA uses geometric a mixing-fule for the O-H sigma parameter,
#### If you want to use this, uncomment the following two lines:
# pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.0460 0.4000
# pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.0836 1.1226 #geometric
#########################################################################
#### 3) The original Jorgensen 1983 parameterization has no OH or HH
# lennard-jones interactions. For this behavior, uncomment these lines:
# pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.00 0.4000
# pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.00 1.7753
#########################################################################
# Define a group for the tip3p water molecules:
group tip3p type @atom:O @atom:H
# Optional: Constrain the angles and distances.
# (Most implementations use this, but it is optional.)
fix fSHAKE tip3p shake 0.0001 10 100 b @bond:OH a @angle:HOH
# (Remember to "unfix" fSHAKE during minimization.)
}
} # "TIP3P2004" water molecule type

View File

@ -0,0 +1,91 @@
# file "tip3p_charmm.lt"
#
# H1 H2
# \ /
# O
#
# I think this is the TIP3P water model used by CHARMM (and probably AMBER)
# It is (mostly) based on this paper:
# Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem Phys, 79, 926 (1983)
TIP3Pcharmm {
write_once("In Init") {
# -- Default styles (for solo "TIP3Pcharmm" water) --
units real
atom_style full
# I'm not sure exactly which cutoffs distances are traditionally used in
# the TIP3P water model used by CHARMM.
# (See the Price JCP 2004 paper for a review.)
# pair_style hybrid lj/charmm/coul/charmm 7.5 8.0 10.0 10.5
# Try this instead:
pair_style hybrid lj/charmm/coul/charmm 10.0 10.5 10.0 10.5
bond_style hybrid harmonic
angle_style hybrid harmonic
pair_modify mix arithmetic
}
write("Data Atoms") {
$atom:O $mol:. @atom:O -0.834 0.0000000 0.00000 0.000000
$atom:H1 $mol:. @atom:H 0.417 0.756950327 0.00000 0.5858822766
$atom:H2 $mol:. @atom:H 0.417 -0.756950327 0.00000 0.5858822766
}
write_once("Data Masses") {
@atom:O 15.9994
@atom:H 1.008
}
write("Data Bonds") {
$bond:OH1 @bond:OH $atom:O $atom:H1
$bond:OH2 @bond:OH $atom:O $atom:H2
}
write("Data Angles") {
$angle:HOH @angle:HOH $atom:H1 $atom:O $atom:H2
}
write_once("In Settings") {
bond_coeff @bond:OH harmonic 450.0 0.9572
angle_coeff @angle:HOH harmonic 55.0 104.52
#########################################################################
#### There are two choices for for the O-O interactions
#########################################################################
#### O-O nonbonded interactions
# For the 1983 Jorgensen version of TIP3P use:
pair_coeff @atom:O @atom:O lj/charmm/coul/charmm 0.1521 3.1507
# For the 2004 Price & Brooks version of TIP3P use:
# pair_coeff @atom:O @atom:O lj/charmm/coul/charmm 0.102 3.188
#########################################################################
#### There are three choices for for the O-H and H-H interactions
#########################################################################
#### 1) CHARMM uses an arithmetic mixing-rule for the O-H sigma parameter
pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.0460 0.4000
pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.0836 1.7753 #arithmetic
#########################################################################
#### 2) OPLS-AA uses geometric a mixing-fule for the O-H sigma parameter,
#### If you want to use this, uncomment the following two lines:
# pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.0460 0.4000
# pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.0836 1.1226 #geometric
#########################################################################
#### 3) The original Jorgensen 1983 parameterization has no OH or HH
# lennard-jones interactions. For this behavior, uncomment these lines:
# pair_coeff @atom:H @atom:H lj/charmm/coul/charmm 0.00 0.4000
# pair_coeff @atom:O @atom:H lj/charmm/coul/charmm 0.00 1.7753
#########################################################################
# Define a group for the tip3p water molecules:
group tip3p type @atom:O @atom:H
# Optional: Constrain the angles and distances.
# (Most implementations use this, but it is optional.)
fix fSHAKE tip3p shake 0.0001 10 100 b @bond:OH a @angle:HOH
# (Remember to "unfix" fSHAKE during minimization.)
}
} # "TIP3Pcharmm" water molecule type

View File

@ -0,0 +1,50 @@
# This file stores complete LAMMPS data for the TraPPE model of saturated
# hydrocarbon chains. In this "united-atom" model, each methyl group is
# represented by a single atom. Forces between "atoms" are taken from the
# TraPPE force-field. (J Phys Chem B, 1998, volume 102, pp.2569-2577)
TraPPE {
write_once("In Init") {
# -- Default styles for "TraPPE" --
units real
atom_style full
# (Hybrid force field styles were used for portability.)
bond_style hybrid harmonic
angle_style hybrid harmonic
dihedral_style hybrid opls
improper_style none
pair_style hybrid lj/charmm/coul/charmm 9.0 11.0 9.0 11.0
pair_modify mix arithmetic
special_bonds lj 0.0 0.0 0.0
}
write_once("Data Masses") {
@atom:CH2 14.1707
@atom:CH3 15.2507
@atom:CH4 16.3307
}
write_once("Data Angles By Type") {
@angle:backbone @atom:CH? @atom:CH? @atom:CH? @bond:saturated @bond:saturated
}
write_once("Data Dihedrals By Type") {
@dihedral:backbone @atom:CH? @atom:CH? @atom:CH? @atom:CH? @bond:saturated @bond:saturated @bond:saturated
}
write_once("In Settings") {
pair_coeff @atom:CH2 @atom:CH2 lj/charmm/coul/charmm 0.091411522 3.95
pair_coeff @atom:CH3 @atom:CH3 lj/charmm/coul/charmm 0.194746286 3.75
pair_coeff @atom:CH4 @atom:CH4 lj/charmm/coul/charmm 0.294106636 3.73
bond_coeff @bond:saturated harmonic 120.0 1.54
angle_coeff @angle:backbone harmonic 62.0022 114
dihedral_coeff @dihedral:backbone opls 1.411036 -0.271016 3.145034 0.0
}
write_once("In Settings") {
group TraPPE type @atom:CH2 @atom:CH3 @atom:CH4
}
} # class TraPPE

View File

@ -0,0 +1,54 @@
# This file stores LAMMPS data for the "mW" water model.
# (Molinero, V. and Moore, E.B., J. Phys. Chem. B 2009, 113, 4008-4016)
#
# In this model, each water molecule is represented by a single "mW" particle.
# These particles interact with their neighbors via 3-body Stillinger-Weber
# forces whose parameters are tuned to mimic directional hydrogen-bonding
# in liquid water (as well as hexagonal ice, type II ice, and
# low-density super-cooled liquid/amorphous water phases).
WatMW {
write("Data Atoms") {
$atom:mW $mol:. @atom:mW 0.0 0.0 0.0 0.0
}
write_once("Data Masses") {
@atom:mW 18.02
}
write_once("system.in.sw") {
mW mW mW 6.189 2.3925 1.8 23.15 1.2 -0.333333333 7.049556277 0.602224558 4 0 0
}
write_once("In Init") {
# -- Default styles for "WatMW" --
units real
pair_style sw
}
write_once("In Settings") {
# --Now indicate which atom type(s) are simulated using the "sw" pair style
# -- In this case only one of the atom types is used (the mW water "atom").
pair_coeff * * sw system.in.sw mW NULL NULL NULL
# -- Unfortunately LAMMPS itself does not understand molemlate syntax, so
# -- the atoms are identified by order in the list, not by name. (The "mW"
# -- refers to to an identifier in the system.in.sw file, not watmw.lt.)
# -- This command says that the first atom type corresponds to the "mW"
# -- atom in system.in.sw, and to ignore the remaining three atom types
# -- (correspond to the CH2, CH3, CH4 atom types defined in trappe1998.lt.
# -- We don't want to use the "sw" force field for interactions involving
# -- these atom types, so we put "NULL" there.)
# -- Note: For this to work, you should probably run moltemplate this way:
# -- moltemplate.sh -a "@atom:WatMW/mW 1" system.lt
# -- This assigns the atom type named @atom:WatMW/mW to 1 (the first atom)
}
# -- optional --
write_once("In Settings") {
group WatMW type @atom:mW #(Atoms of this type belong to the "WatMW" group)
}
} # WatMW