diff --git a/doc/region.html b/doc/region.html index f35316ac70..c2080049d6 100644 --- a/doc/region.html +++ b/doc/region.html @@ -17,7 +17,7 @@
block args = xlo xhi ylo yhi zlo zhi
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
@@ -30,6 +30,12 @@
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
radius = cylinder radius (distance units)
lo,hi = bounds of cylinder in dim (distance units)
+ prism args = xlo xhi ylo yhi zlo zhi yxtilt zxtilt zytilt
+ xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism in all
+ dimensions (distance units)
+ yxtilt = distance to shift upper y in x direction (distance units)
+ zxtilt = distance to shift upper z in x direction (distance units)
+ zytilt = distance to shift upper z in y direction (distance units)
union args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to join together
@@ -55,6 +61,7 @@
region 1 block -3.0 5.0 INF 10.0 INF INF
region 2 sphere 0.0 0.0 0.0 5 side out
region void cylinder y 2 3 5 -5.0 INF units box
+region 1 prism 0 10 0 10 0 10 2 0 0
region outside union 4 side1 side2 side3 side4
Description:
@@ -65,10 +72,10 @@ atoms via the create_atoms command. Or the at
in the region can be identified as a group via the group
command, or deleted via the delete_atoms command.
-The lo/hi values for block or cylinder styles can be specified
-as INF which means they extend all the way to the global simulation
-box boundary. If a region is defined before the simulation box has
-been created (via create_box or
+
The lo/hi values for block or cylinder or prism styles can be
+specified as INF which means they extend all the way to the global
+simulation box boundary. If a region is defined before the simulation
+box has been created (via create_box or
read_data or read_restart
commands), then an INF parameter cannot be used.
@@ -79,6 +86,19 @@ third example above specifes a cylinder with its axis in the
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
extending in the y-direction from -5.0 to the upper box boundary.
+For style prism, a tilted block is defined. The bounds of the
+untilted axis-aligned block are specified in the same way as for the
+block style. A tilt factor for each dimension with respect to
+another dimension is also specified. If the lower xy face of the
+prism is initially a rectangle (untilted), then the yxtilt factor
+specifies how far the upper y edge of that face is shifted in the x
+direction (skewing that face, keeping the xy face a parallelogram). A
+plus or minus value can be chosen; 0.0 would be no tilt. Similarly,
+zxtilt and zytilt describe how far the upper xy face of the prism is
+translated in the x and y directions to further tilt the prism. The
+final prism shape remains a parallelipiped, with opposing pairs of the
+6 faces remaining parallel to each other.
+
The union style creates a region consisting of the volume of all the
listed regions combined. The intesect style creates a region
consisting of the volume that is common to all the listed regions.
@@ -96,11 +116,15 @@ both of the spheres.
to define the region. A box value selects standard distance units
as defined by the units command, e.g. Angstroms for units
= real or metal. A lattice value means the distance units are in
-cubic lattice spacings. The lattice command must first
-be used to define a lattice.
+lattice spacings. The lattice command must have been
+previously used to define the lattice spacing.
Restrictions: none
+A prism cannot be of 0.0 thickness in any dimension; use a small z
+thickness for 2d simulations. For 2d simulations, the zxtilt and
+zytilt parameters must be 0.0.
+
Related commands:
lattice, create_atoms,
diff --git a/doc/region.txt b/doc/region.txt
index d7c96a912e..a34be58d99 100644
--- a/doc/region.txt
+++ b/doc/region.txt
@@ -13,7 +13,7 @@ region command :h3
region ID style args keyword value ... :pre
ID = user-assigned name for the region :ulb,l
-style = {block} or {sphere} or {cylinder} or {union} or {intersect} :l
+style = {block} or {sphere} or {cylinder} or {prism} or {union} or {intersect} :l
{block} args = xlo xhi ylo yhi zlo zhi
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
dimensions (distance units)
@@ -25,6 +25,12 @@ style = {block} or {sphere} or {cylinder} or {union} or {intersect} :l
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
radius = cylinder radius (distance units)
lo,hi = bounds of cylinder in dim (distance units)
+ {prism} args = xlo xhi ylo yhi zlo zhi yxtilt zxtilt zytilt
+ xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism in all
+ dimensions (distance units)
+ yxtilt = distance to shift upper y in x direction (distance units)
+ zxtilt = distance to shift upper z in x direction (distance units)
+ zytilt = distance to shift upper z in y direction (distance units)
{union} args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to join together
@@ -46,6 +52,7 @@ keyword = {side} or {units} :l
region 1 block -3.0 5.0 INF 10.0 INF INF
region 2 sphere 0.0 0.0 0.0 5 side out
region void cylinder y 2 3 5 -5.0 INF units box
+region 1 prism 0 10 0 10 0 10 2 0 0
region outside union 4 side1 side2 side3 side4 :pre
[Description:]
@@ -56,10 +63,10 @@ atoms via the "create_atoms"_create_atoms.html command. Or the atoms
in the region can be identified as a group via the "group"_group.html
command, or deleted via the "delete_atoms"_delete_atoms.html command.
-The lo/hi values for {block} or {cylinder} styles can be specified
-as INF which means they extend all the way to the global simulation
-box boundary. If a region is defined before the simulation box has
-been created (via "create_box"_create_box.html or
+The lo/hi values for {block} or {cylinder} or {prism} styles can be
+specified as INF which means they extend all the way to the global
+simulation box boundary. If a region is defined before the simulation
+box has been created (via "create_box"_create_box.html or
"read_data"_read_data.html or "read_restart"_read_restart.html
commands), then an INF parameter cannot be used.
@@ -70,6 +77,19 @@ third example above specifes a cylinder with its axis in the
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
extending in the y-direction from -5.0 to the upper box boundary.
+For style {prism}, a tilted block is defined. The bounds of the
+untilted axis-aligned block are specified in the same way as for the
+{block} style. A tilt factor for each dimension with respect to
+another dimension is also specified. If the lower xy face of the
+prism is initially a rectangle (untilted), then the yxtilt factor
+specifies how far the upper y edge of that face is shifted in the x
+direction (skewing that face, keeping the xy face a parallelogram). A
+plus or minus value can be chosen; 0.0 would be no tilt. Similarly,
+zxtilt and zytilt describe how far the upper xy face of the prism is
+translated in the x and y directions to further tilt the prism. The
+final prism shape remains a parallelipiped, with opposing pairs of the
+6 faces remaining parallel to each other.
+
The {union} style creates a region consisting of the volume of all the
listed regions combined. The {intesect} style creates a region
consisting of the volume that is common to all the listed regions.
@@ -87,11 +107,15 @@ The {units} keyword determines the meaning of the distance units used
to define the region. A {box} value selects standard distance units
as defined by the "units"_units.html command, e.g. Angstroms for units
= real or metal. A {lattice} value means the distance units are in
-cubic lattice spacings. The "lattice"_lattice.html command must first
-be used to define a lattice.
+lattice spacings. The "lattice"_lattice.html command must have been
+previously used to define the lattice spacing.
[Restrictions:] none
+A prism cannot be of 0.0 thickness in any dimension; use a small z
+thickness for 2d simulations. For 2d simulations, the zxtilt and
+zytilt parameters must be 0.0.
+
[Related commands:]
"lattice"_lattice.html, "create_atoms"_create_atoms.html,
diff --git a/potentials/si.sw b/potentials/si.sw
index 313f03ad73..50fb3ec493 100644
--- a/potentials/si.sw
+++ b/potentials/si.sw
@@ -1,8 +1,10 @@
# Stillinger-Weber parameters for various elements and mixtures
-# multiple elements can be added to this file, LAMMPS reads the ones it needs
+# multiple entries can be added to this file, LAMMPS reads the ones it needs
-# format of a line:
+# format of an entry (one or more lines):
# element 1, element 2, element 3
# epsilon, sigma, littlea, lambda, gamma, costheta, biga, bigb, powerp, powerq
-Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333 7.049556277 0.6022245584 4.0 0.0
+Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333
+ 7.049556277 0.6022245584 4.0 0.0
+
diff --git a/src/MAKE/Makefile.tbird b/src/MAKE/Makefile.tbird
index 2732d893ea..1331062624 100644
--- a/src/MAKE/Makefile.tbird
+++ b/src/MAKE/Makefile.tbird
@@ -5,7 +5,7 @@ SHELL = /bin/sh
# System-specific settings
-FFTW = /apps/libraries/fftw/nwcc
+FFTW = /apps/libraries/fftw
CC = mpicxx
CCFLAGS = -O -DFFT_FFTW -I${FFTW}/include
diff --git a/src/fix_wall_reflect.h b/src/fix_wall_reflect.h
index 175d914df4..a1aa3961a5 100644
--- a/src/fix_wall_reflect.h
+++ b/src/fix_wall_reflect.h
@@ -12,7 +12,7 @@
------------------------------------------------------------------------- */
#ifndef FIX_WALL_REFLECT_H
-#define FIX_WALL_REFELCT_H
+#define FIX_WALL_REFLECT_H
#include "fix.h"
diff --git a/src/lammps.cpp b/src/lammps.cpp
index b3b95afedc..fde2329e98 100644
--- a/src/lammps.cpp
+++ b/src/lammps.cpp
@@ -50,7 +50,7 @@ FILE *LAMMPS::logfile = NULL;
void LAMMPS::open(int narg, char **arg, MPI_Comm communicator)
{
sys = new System();
- sys->open(narg,arg,MPI_COMM_WORLD);
+ sys->open(narg,arg,communicator);
sys->create();
}
diff --git a/src/region.cpp b/src/region.cpp
index b07cb65449..1790b56af5 100644
--- a/src/region.cpp
+++ b/src/region.cpp
@@ -41,6 +41,7 @@ Region::Region(int narg, char **arg)
if (strcmp(style,"block") == 0) options(narg-8,&arg[8]);
else if (strcmp(style,"sphere") == 0) options(narg-6,&arg[6]);
else if (strcmp(arg[1],"cylinder") == 0) options(narg-8,&arg[8]);
+ else if (strcmp(style,"prism") == 0) options(narg-11,&arg[11]);
else if (strcmp(arg[1],"union") == 0) {
if (narg < 5) error->all("Illegal region command");
n = atoi(arg[2]);
diff --git a/src/region_prism.cpp b/src/region_prism.cpp
new file mode 100644
index 0000000000..52e69f9692
--- /dev/null
+++ b/src/region_prism.cpp
@@ -0,0 +1,128 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#include "stdlib.h"
+#include "string.h"
+#include "region_prism.h"
+#include "domain.h"
+#include "force.h"
+#include "error.h"
+
+#define MIN(A,B) ((A) < (B)) ? (A) : (B)
+#define MAX(A,B) ((A) > (B)) ? (A) : (B)
+
+/* ---------------------------------------------------------------------- */
+
+RegPrism::RegPrism(int narg, char **arg) : Region(narg, arg)
+{
+ if (strcmp(arg[2],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ xlo = domain->boxxlo;
+ } else xlo = xscale*atof(arg[2]);
+
+ if (strcmp(arg[3],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ xhi = domain->boxxhi;
+ } else xhi = xscale*atof(arg[3]);
+
+ if (strcmp(arg[4],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ ylo = domain->boxylo;
+ } else ylo = yscale*atof(arg[4]);
+
+ if (strcmp(arg[5],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ yhi = domain->boxyhi;
+ } else yhi = yscale*atof(arg[5]);
+
+ if (strcmp(arg[6],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ zlo = domain->boxzlo;
+ } else zlo = zscale*atof(arg[6]);
+
+ if (strcmp(arg[7],"INF") == 0) {
+ if (domain->box_exist == 0)
+ error->all("Cannot use region INF when box does not exist");
+ zhi = domain->boxzhi;
+ } else zhi = zscale*atof(arg[7]);
+
+ yxshift = xscale*atof(arg[8]);
+ zxshift = xscale*atof(arg[9]);
+ zyshift = yscale*atof(arg[10]);
+
+ // error check
+ // prism cannot be 0 thickness in any dim, else inverse blows up
+
+ if (xlo >= xhi || ylo >= yhi || zlo >= zhi)
+ error->all("Illegal region prism command");
+
+ // extent of prism
+
+ extent_xlo = MIN(xlo,xlo+yxshift);
+ extent_xlo = MIN(extent_xlo,extent_xlo+zxshift);
+ extent_xhi = MAX(xhi,xhi+yxshift);
+ extent_xhi = MAX(extent_xhi,extent_xhi+zxshift);
+ extent_ylo = MIN(ylo,ylo+zyshift);
+ extent_yhi = MAX(yhi,yhi+zyshift);
+ extent_zlo = zlo;
+ extent_zhi = zhi;
+
+ // h = transformation matrix from tilt coords (0-1) to box coords (xyz)
+ // columns of h are edge vectors of tilted box
+ // hinv = transformation matrix from box coords to tilt coords
+ // both h and hinv are upper triangular
+ // since 1st edge of prism is along x-axis
+ // and bottom face of prism is in xy plane
+
+ h[0][0] = xhi - xlo;
+ h[0][1] = yxshift;
+ h[1][1] = yhi - ylo;
+ h[0][2] = zxshift;
+ h[1][2] = zyshift;
+ h[2][2] = zhi - zlo;
+
+ hinv[0][0] = 1.0/h[0][0];
+ hinv[0][1] = -h[0][1] / (h[0][0]*h[1][1]);
+ hinv[1][1] = 1.0/h[1][1];
+ hinv[0][2] = (h[0][1]*h[1][2] - h[0][2]*h[1][1]) / (h[0][0]*h[1][1]*h[2][2]);
+ hinv[1][2] = -h[1][2] / (h[1][1]*h[2][2]);
+ hinv[2][2] = 1.0/h[2][2];
+}
+
+/* ----------------------------------------------------------------------
+ check xyz against prism
+ abc = Hinv * (xyz - xyzlo)
+ abc = tilt coords (0-1)
+ Hinv = transformation matrix from box coords to tilt coords
+ xyz = box coords
+ xyzlo = lower-left corner of prism
+------------------------------------------------------------------------- */
+
+int RegPrism::match(double x, double y, double z)
+{
+ double a = hinv[0][0]*(x-xlo) + hinv[0][1]*(y-ylo) + hinv[0][2]*(z-zlo);
+ double b = hinv[1][1]*(y-ylo) + hinv[1][2]*(z-zlo);
+ double c = hinv[2][2]*(z-zlo);
+
+ int inside;
+ if (a >= 0.0 && a <= 1.0 && b >= 0.0 && b <= 1.0 && c >= 0.0 && c <= 1.0)
+ inside = 1;
+ else inside = 0;
+
+ return !(inside ^ interior); // 1 if same, 0 if different
+}
diff --git a/src/region_prism.h b/src/region_prism.h
new file mode 100644
index 0000000000..39f3c4565f
--- /dev/null
+++ b/src/region_prism.h
@@ -0,0 +1,33 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifndef REGION_PRISM_H
+#define REGION_PRISM_H
+
+#include "region.h"
+
+class RegPrism : public Region {
+ friend class FixInsert;
+
+ public:
+ RegPrism(int, char **);
+ ~RegPrism() {}
+ int match(double, double, double);
+
+ private:
+ double xlo,xhi,ylo,yhi,zlo,zhi;
+ double yxshift,zxshift,zyshift;
+ double h[3][3],hinv[3][3];
+};
+
+#endif
diff --git a/src/style.h b/src/style.h
index 36c22e1985..5a479f89ff 100644
--- a/src/style.h
+++ b/src/style.h
@@ -247,6 +247,7 @@ PairStyle(yukawa,PairYukawa)
#include "region_block.h"
#include "region_cylinder.h"
#include "region_intersect.h"
+#include "region_prism.h"
#include "region_sphere.h"
#include "region_union.h"
#endif
@@ -255,6 +256,7 @@ PairStyle(yukawa,PairYukawa)
RegionStyle(block,RegBlock)
RegionStyle(cylinder,RegCylinder)
RegionStyle(intersect,RegIntersect)
+RegionStyle(prism,RegPrism)
RegionStyle(sphere,RegSphere)
RegionStyle(union,RegUnion)
#endif
diff --git a/src/style_class2.h b/src/style_class2.h
index e69de29bb2..517070d25f 100644
--- a/src/style_class2.h
+++ b/src/style_class2.h
@@ -0,0 +1,56 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef AngleInclude
+#include "angle_class2.h"
+#endif
+
+#ifdef AngleClass
+AngleStyle(class2,AngleClass2)
+#endif
+
+#ifdef BondInclude
+#include "bond_class2.h"
+#endif
+
+#ifdef BondClass
+BondStyle(class2,BondClass2)
+#endif
+
+#ifdef DihedralInclude
+#include "dihedral_class2.h"
+#endif
+
+#ifdef DihedralClass
+DihedralStyle(class2,DihedralClass2)
+#endif
+
+#ifdef ImproperInclude
+#include "improper_class2.h"
+#endif
+
+#ifdef ImproperClass
+ImproperStyle(class2,ImproperClass2)
+#endif
+
+#ifdef PairInclude
+#include "pair_lj_class2.h"
+#include "pair_lj_class2_coul_cut.h"
+#include "pair_lj_class2_coul_long.h"
+#endif
+
+#ifdef PairClass
+PairStyle(lj/class2,PairLJClass2)
+PairStyle(lj/class2/coul/cut,PairLJClass2CoulCut)
+PairStyle(lj/class2/coul/long,PairLJClass2CoulLong)
+#endif
diff --git a/src/style_dpd.h b/src/style_dpd.h
index e69de29bb2..0b5d131f2f 100644
--- a/src/style_dpd.h
+++ b/src/style_dpd.h
@@ -0,0 +1,28 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef AtomInclude
+#include "atom_dpd.h"
+#endif
+
+#ifdef AtomClass
+AtomStyle(dpd,AtomDPD)
+#endif
+
+#ifdef PairInclude
+#include "pair_dpd.h"
+#endif
+
+#ifdef PairClass
+PairStyle(dpd,PairDPD)
+#endif
diff --git a/src/style_granular.h b/src/style_granular.h
index e69de29bb2..5b571b79a6 100644
--- a/src/style_granular.h
+++ b/src/style_granular.h
@@ -0,0 +1,50 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef AtomInclude
+#include "atom_granular.h"
+#endif
+
+#ifdef AtomClass
+AtomStyle(granular,AtomGranular)
+# endif
+
+#ifdef FixInclude
+#include "fix_freeze.h"
+#include "fix_gran_diag.h"
+#include "fix_insert.h"
+#include "fix_nve_gran.h"
+#include "fix_shear_history.h"
+#include "fix_wall_gran.h"
+#endif
+
+#ifdef FixClass
+FixStyle(freeze,FixFreeze)
+FixStyle(gran/diag,FixGranDiag)
+FixStyle(insert,FixInsert)
+FixStyle(nve/gran,FixNVEGran)
+FixStyle(SHEAR_HISTORY,FixShearHistory)
+FixStyle(wall/gran,FixWallGran)
+#endif
+
+#ifdef PairInclude
+#include "pair_gran_hertzian.h"
+#include "pair_gran_history.h"
+#include "pair_gran_no_history.h"
+#endif
+
+#ifdef PairClass
+PairStyle(gran/hertzian,PairGranHertzian)
+PairStyle(gran/history,PairGranHistory)
+PairStyle(gran/no_history,PairGranNoHistory)
+#endif
diff --git a/src/style_kspace.h b/src/style_kspace.h
index e69de29bb2..c6ea29b73b 100644
--- a/src/style_kspace.h
+++ b/src/style_kspace.h
@@ -0,0 +1,38 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef KSpaceInclude
+#include "ewald.h"
+#include "pppm.h"
+#include "pppm_tip4p.h"
+#endif
+
+#ifdef KSpaceClass
+KSpaceStyle(ewald,Ewald)
+KSpaceStyle(pppm,PPPM)
+KSpaceStyle(pppm/tip4p,PPPMTIP4P)
+#endif
+
+#ifdef PairInclude
+#include "pair_buck_coul_long.h"
+#include "pair_lj_cut_coul_long.h"
+#include "pair_lj_cut_coul_long_tip4p.h"
+#include "pair_lj_charmm_coul_long.h"
+#endif
+
+#ifdef PairClass
+PairStyle(buck/coul/long,PairBuckCoulLong)
+PairStyle(lj/cut/coul/long,PairLJCutCoulLong)
+PairStyle(lj/cut/coul/long/tip4p,PairLJCutCoulLongTIP4P)
+PairStyle(lj/charmm/coul/long,PairLJCharmmCoulLong)
+#endif
diff --git a/src/style_manybody.h b/src/style_manybody.h
index e69de29bb2..659f63ca83 100644
--- a/src/style_manybody.h
+++ b/src/style_manybody.h
@@ -0,0 +1,24 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef PairInclude
+#include "pair_eam.h"
+#include "pair_eam_alloy.h"
+#include "pair_eam_fs.h"
+#endif
+
+#ifdef PairClass
+PairStyle(eam,PairEAM)
+PairStyle(eam/alloy,PairEAMAlloy)
+PairStyle(eam/fs,PairEAMFS)
+#endif
diff --git a/src/style_molecule.h b/src/style_molecule.h
index e69de29bb2..1da512819d 100644
--- a/src/style_molecule.h
+++ b/src/style_molecule.h
@@ -0,0 +1,116 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ www.cs.sandia.gov/~sjplimp/lammps.html
+ Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef AngleInclude
+#include "angle_charmm.h"
+#include "angle_cosine.h"
+#include "angle_cosine_squared.h"
+#include "angle_harmonic.h"
+#include "angle_hybrid.h"
+#endif
+
+#ifdef AngleClass
+AngleStyle(charmm,AngleCharmm)
+AngleStyle(cosine,AngleCosine)
+AngleStyle(cosine/squared,AngleCosineSquared)
+AngleStyle(harmonic,AngleHarmonic)
+AngleStyle(hybrid,AngleHybrid)
+#endif
+
+#ifdef AtomInclude
+#include "atom_angle.h"
+#include "atom_bond.h"
+#include "atom_full.h"
+#include "atom_molecular.h"
+#endif
+
+#ifdef AtomClass
+AtomStyle(angle,AtomAngle)
+AtomStyle(bond,AtomBond)
+AtomStyle(full,AtomFull)
+AtomStyle(molecular,AtomMolecular)
+#endif
+
+#ifdef BondInclude
+#include "bond_fene.h"
+#include "bond_fene_expand.h"
+#include "bond_harmonic.h"
+#include "bond_hybrid.h"
+#include "bond_morse.h"
+#include "bond_nonlinear.h"
+#include "bond_quartic.h"
+#endif
+
+#ifdef BondClass
+BondStyle(fene,BondFENE)
+BondStyle(fene/expand,BondFENEExpand)
+BondStyle(harmonic,BondHarmonic)
+BondStyle(hybrid,BondHybrid)
+BondStyle(morse,BondMorse)
+BondStyle(nonlinear,BondNonlinear)
+BondStyle(quartic,BondQuartic)
+#endif
+
+#ifdef DihedralInclude
+#include "dihedral_charmm.h"
+#include "dihedral_harmonic.h"
+#include "dihedral_helix.h"
+#include "dihedral_hybrid.h"
+#include "dihedral_multi_harmonic.h"
+#include "dihedral_opls.h"
+#endif
+
+#ifdef DihedralClass
+DihedralStyle(charmm,DihedralCharmm)
+DihedralStyle(harmonic,DihedralHarmonic)
+DihedralStyle(helix,DihedralHelix)
+DihedralStyle(hybrid,DihedralHybrid)
+DihedralStyle(multi/harmonic,DihedralMultiHarmonic)
+DihedralStyle(opls,DihedralOPLS)
+#endif
+
+#ifdef DumpInclude
+#include "dump_bond.h"
+#endif
+
+#ifdef DumpClass
+DumpStyle(bond,DumpBond)
+#endif
+
+#ifdef FixInclude
+#endif
+
+#ifdef FixClass
+#endif
+
+#ifdef ImproperInclude
+#include "improper_cvff.h"
+#include "improper_harmonic.h"
+#include "improper_hybrid.h"
+#endif
+
+#ifdef ImproperClass
+ImproperStyle(cvff,ImproperCvff)
+ImproperStyle(harmonic,ImproperHarmonic)
+ImproperStyle(hybrid,ImproperHybrid)
+#endif
+
+#ifdef PairInclude
+#include "pair_lj_charmm_coul_charmm.h"
+#include "pair_lj_charmm_coul_charmm_implicit.h"
+#endif
+
+#ifdef PairClass
+PairStyle(lj/charmm/coul/charmm,PairLJCharmmCoulCharmm)
+PairStyle(lj/charmm/coul/charmm/implicit,PairLJCharmmCoulCharmmImplicit)
+#endif