diff --git a/doc/Section_commands.html b/doc/Section_commands.html
index bd2ecc2ae93c34b2118b9892848b6abf2a8ebf88..4fd321c6658dfafe04518dc664f8d194baf892b8 100644
--- a/doc/Section_commands.html
+++ b/doc/Section_commands.html
@@ -245,11 +245,12 @@ in the command's documentation.
 </P>
 <P>Settings:
 </P>
-<P><A HREF = "dipole.html">dipole</A>, <A HREF = "group.html">group</A>, <A HREF = "mass.html">mass</A>,
-<A HREF = "min_modify.html">min_modify</A>, <A HREF = "min_style.html">min_style</A>,
-<A HREF = "neigh_modify.html">neigh_modify</A>, <A HREF = "neighbor.html">neighbor</A>,
-<A HREF = "reset_timestep.html">reset_timestep</A>, <A HREF = "run_style.html">run_style</A>,
-<A HREF = "set.html">set</A>, <A HREF = "timestep.html">timestep</A>, <A HREF = "velocity.html">velocity</A>
+<P><A HREF = "communicate.html">communicate</A>, <A HREF = "dipole.html">dipole</A>,
+<A HREF = "group.html">group</A>, <A HREF = "mass.html">mass</A>, <A HREF = "min_modify.html">min_modify</A>,
+<A HREF = "min_style.html">min_style</A>, <A HREF = "neigh_modify.html">neigh_modify</A>,
+<A HREF = "neighbor.html">neighbor</A>, <A HREF = "reset_timestep.html">reset_timestep</A>,
+<A HREF = "run_style.html">run_style</A>, <A HREF = "set.html">set</A>, <A HREF = "timestep.html">timestep</A>,
+<A HREF = "velocity.html">velocity</A>
 </P>
 <P>Fixes:
 </P>
@@ -295,17 +296,18 @@ in the command's documentation.
 </P>
 <DIV ALIGN=center><TABLE  WIDTH="0%"  BORDER=1 >
 <TR ALIGN="center"><TD ><A HREF = "angle_coeff.html">angle_coeff</A></TD><TD ><A HREF = "angle_style.html">angle_style</A></TD><TD ><A HREF = "atom_modify.html">atom_modify</A></TD><TD ><A HREF = "atom_style.html">atom_style</A></TD><TD ><A HREF = "bond_coeff.html">bond_coeff</A></TD><TD ><A HREF = "bond_style.html">bond_style</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "boundary.html">boundary</A></TD><TD ><A HREF = "clear.html">clear</A></TD><TD ><A HREF = "compute.html">compute</A></TD><TD ><A HREF = "compute_modify.html">compute_modify</A></TD><TD ><A HREF = "create_atoms.html">create_atoms</A></TD><TD ><A HREF = "create_box.html">create_box</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "delete_atoms.html">delete_atoms</A></TD><TD ><A HREF = "delete_bonds.html">delete_bonds</A></TD><TD ><A HREF = "dielectric.html">dielectric</A></TD><TD ><A HREF = "dihedral_coeff.html">dihedral_coeff</A></TD><TD ><A HREF = "dihedral_style.html">dihedral_style</A></TD><TD ><A HREF = "dimension.html">dimension</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "dipole.html">dipole</A></TD><TD ><A HREF = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "echo.html">echo</A></TD><TD ><A HREF = "fix.html">fix</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_modify.html">fix_modify</A></TD><TD ><A HREF = "group.html">group</A></TD><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD><TD ><A HREF = "improper_style.html">improper_style</A></TD><TD ><A HREF = "include.html">include</A></TD><TD ><A HREF = "jump.html">jump</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "kspace_modify.html">kspace_modify</A></TD><TD ><A HREF = "kspace_style.html">kspace_style</A></TD><TD ><A HREF = "label.html">label</A></TD><TD ><A HREF = "lattice.html">lattice</A></TD><TD ><A HREF = "log.html">log</A></TD><TD ><A HREF = "mass.html">mass</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "minimize.html">minimize</A></TD><TD ><A HREF = "min_modify.html">min_modify</A></TD><TD ><A HREF = "min_style.html">min_style</A></TD><TD ><A HREF = "neigh_modify.html">neigh_modify</A></TD><TD ><A HREF = "neighbor.html">neighbor</A></TD><TD ><A HREF = "newton.html">newton</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "next.html">next</A></TD><TD ><A HREF = "pair_coeff.html">pair_coeff</A></TD><TD ><A HREF = "pair_modify.html">pair_modify</A></TD><TD ><A HREF = "pair_style.html">pair_style</A></TD><TD ><A HREF = "pair_write.html">pair_write</A></TD><TD ><A HREF = "print.html">print</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "processors.html">processors</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD><TD ><A HREF = "read_restart.html">read_restart</A></TD><TD ><A HREF = "region.html">region</A></TD><TD ><A HREF = "replicate.html">replicate</A></TD><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "restart.html">restart</A></TD><TD ><A HREF = "run.html">run</A></TD><TD ><A HREF = "run_style.html">run_style</A></TD><TD ><A HREF = "set.html">set</A></TD><TD ><A HREF = "shell.html">shell</A></TD><TD ><A HREF = "special_bonds.html">special_bonds</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "temper.html">temper</A></TD><TD ><A HREF = "thermo.html">thermo</A></TD><TD ><A HREF = "thermo_modify.html">thermo_modify</A></TD><TD ><A HREF = "thermo_style.html">thermo_style</A></TD><TD ><A HREF = "timestep.html">timestep</A></TD><TD ><A HREF = "uncompute.html">uncompute</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "undump.html">undump</A></TD><TD ><A HREF = "unfix.html">unfix</A></TD><TD ><A HREF = "units.html">units</A></TD><TD ><A HREF = "variable.html">variable</A></TD><TD ><A HREF = "velocity.html">velocity</A></TD><TD ><A HREF = "write_restart.html">write_restart</A> 
+<TR ALIGN="center"><TD ><A HREF = "boundary.html">boundary</A></TD><TD ><A HREF = "clear.html">clear</A></TD><TD ><A HREF = "communicate.html">communicate</A></TD><TD ><A HREF = "compute.html">compute</A></TD><TD ><A HREF = "compute_modify.html">compute_modify</A></TD><TD ><A HREF = "create_atoms.html">create_atoms</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "create_box.html">create_box</A></TD><TD ><A HREF = "delete_atoms.html">delete_atoms</A></TD><TD ><A HREF = "delete_bonds.html">delete_bonds</A></TD><TD ><A HREF = "dielectric.html">dielectric</A></TD><TD ><A HREF = "dihedral_coeff.html">dihedral_coeff</A></TD><TD ><A HREF = "dihedral_style.html">dihedral_style</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "dimension.html">dimension</A></TD><TD ><A HREF = "dipole.html">dipole</A></TD><TD ><A HREF = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "echo.html">echo</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix.html">fix</A></TD><TD ><A HREF = "fix_modify.html">fix_modify</A></TD><TD ><A HREF = "group.html">group</A></TD><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD><TD ><A HREF = "improper_style.html">improper_style</A></TD><TD ><A HREF = "include.html">include</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "jump.html">jump</A></TD><TD ><A HREF = "kspace_modify.html">kspace_modify</A></TD><TD ><A HREF = "kspace_style.html">kspace_style</A></TD><TD ><A HREF = "label.html">label</A></TD><TD ><A HREF = "lattice.html">lattice</A></TD><TD ><A HREF = "log.html">log</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "mass.html">mass</A></TD><TD ><A HREF = "minimize.html">minimize</A></TD><TD ><A HREF = "min_modify.html">min_modify</A></TD><TD ><A HREF = "min_style.html">min_style</A></TD><TD ><A HREF = "neigh_modify.html">neigh_modify</A></TD><TD ><A HREF = "neighbor.html">neighbor</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "newton.html">newton</A></TD><TD ><A HREF = "next.html">next</A></TD><TD ><A HREF = "pair_coeff.html">pair_coeff</A></TD><TD ><A HREF = "pair_modify.html">pair_modify</A></TD><TD ><A HREF = "pair_style.html">pair_style</A></TD><TD ><A HREF = "pair_write.html">pair_write</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "print.html">print</A></TD><TD ><A HREF = "processors.html">processors</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD><TD ><A HREF = "read_restart.html">read_restart</A></TD><TD ><A HREF = "region.html">region</A></TD><TD ><A HREF = "replicate.html">replicate</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD><TD ><A HREF = "restart.html">restart</A></TD><TD ><A HREF = "run.html">run</A></TD><TD ><A HREF = "run_style.html">run_style</A></TD><TD ><A HREF = "set.html">set</A></TD><TD ><A HREF = "shell.html">shell</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "special_bonds.html">special_bonds</A></TD><TD ><A HREF = "temper.html">temper</A></TD><TD ><A HREF = "thermo.html">thermo</A></TD><TD ><A HREF = "thermo_modify.html">thermo_modify</A></TD><TD ><A HREF = "thermo_style.html">thermo_style</A></TD><TD ><A HREF = "timestep.html">timestep</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "uncompute.html">uncompute</A></TD><TD ><A HREF = "undump.html">undump</A></TD><TD ><A HREF = "unfix.html">unfix</A></TD><TD ><A HREF = "units.html">units</A></TD><TD ><A HREF = "variable.html">variable</A></TD><TD ><A HREF = "velocity.html">velocity</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "write_restart.html">write_restart</A> 
 </TD></TR></TABLE></DIV>
 
 <HR>
diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt
index 3ef3f16dfcf6a245f7661145cd85055f60ad4af9..0e84c1570627b903993f5bf116fdcce857281026 100644
--- a/doc/Section_commands.txt
+++ b/doc/Section_commands.txt
@@ -242,11 +242,12 @@ Force fields:
 
 Settings:
 
-"dipole"_dipole.html, "group"_group.html, "mass"_mass.html,
-"min_modify"_min_modify.html, "min_style"_min_style.html,
-"neigh_modify"_neigh_modify.html, "neighbor"_neighbor.html,
-"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
-"set"_set.html, "timestep"_timestep.html, "velocity"_velocity.html
+"communicate"_communicate.html, "dipole"_dipole.html,
+"group"_group.html, "mass"_mass.html, "min_modify"_min_modify.html,
+"min_style"_min_style.html, "neigh_modify"_neigh_modify.html,
+"neighbor"_neighbor.html, "reset_timestep"_reset_timestep.html,
+"run_style"_run_style.html, "set"_set.html, "timestep"_timestep.html,
+"velocity"_velocity.html
 
 Fixes:
 
@@ -298,6 +299,7 @@ in the command's documentation.
 "bond_style"_bond_style.html,
 "boundary"_boundary.html,
 "clear"_clear.html,
+"communicate"_communicate.html,
 "compute"_compute.html,
 "compute_modify"_compute_modify.html,
 "create_atoms"_create_atoms.html,
diff --git a/doc/communicate.html b/doc/communicate.html
new file mode 100644
index 0000000000000000000000000000000000000000..1523bb4cef5dbb3ccb0cbface8957c8e1d65a6ee
--- /dev/null
+++ b/doc/communicate.html
@@ -0,0 +1,53 @@
+<HTML>
+<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> 
+</CENTER>
+
+
+
+
+
+
+<HR>
+
+<H3>communicate command 
+</H3>
+<P><B>Syntax:</B>
+</P>
+<PRE>communicate style 
+</PRE>
+<UL><LI>style = <I>single</I> or <I>multi</I> 
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>communicate multi 
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This command sets the style of inter-processor communication that
+occurs each timestep as atom coordinates and other properties are
+exchanged between neighboring processors.
+</P>
+<P>The default style is <I>single</I> which means each processor acquires
+information for ghost atoms that are within a single distance from its
+sub-domain.  The distance is the maximum of the neighbor cutoff for
+all atom type pairs.
+</P>
+<P>For many systems this is an efficient algorithm, but for systems with
+widely varying cutoffs for different type pairs, the <I>multi</I> style can
+be faster.  In this case, each atom type is assigned its own distance
+cutoff for communication purposes, and fewer atoms will be
+communicated.  See the <A HREF = "neighbor.html">neighbor multi</A> command for a
+neighbor list construction option that may also be beneficial for
+simulations of this kind.
+</P>
+<P><B>Restrictions:</B> none
+</P>
+<P><B>Related commands:</B>
+</P>
+<P><A HREF = "neighbor.html">neighbor</A>
+</P>
+<P><B>Default:</B>
+</P>
+<P>style = single
+</P>
+</HTML>
diff --git a/doc/communicate.txt b/doc/communicate.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a09fde28c23eb5a64a5a242d838360fa51b3cc13
--- /dev/null
+++ b/doc/communicate.txt
@@ -0,0 +1,48 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+communicate command :h3
+
+[Syntax:]
+
+communicate style :pre
+
+style = {single} or {multi} :ul
+
+[Examples:]
+
+communicate multi :pre
+
+[Description:]
+
+This command sets the style of inter-processor communication that
+occurs each timestep as atom coordinates and other properties are
+exchanged between neighboring processors.
+
+The default style is {single} which means each processor acquires
+information for ghost atoms that are within a single distance from its
+sub-domain.  The distance is the maximum of the neighbor cutoff for
+all atom type pairs.
+
+For many systems this is an efficient algorithm, but for systems with
+widely varying cutoffs for different type pairs, the {multi} style can
+be faster.  In this case, each atom type is assigned its own distance
+cutoff for communication purposes, and fewer atoms will be
+communicated.  See the "neighbor multi"_neighbor.html command for a
+neighbor list construction option that may also be beneficial for
+simulations of this kind.
+
+[Restrictions:] none
+
+[Related commands:]
+
+"neighbor"_neighbor.html
+
+[Default:]
+
+style = single
diff --git a/doc/neighbor.html b/doc/neighbor.html
index 3111eefca7d07cc70dfecadfe9cce32179817e1e..c87118c0a8a4f707839e83d940c5c860196c9852 100644
--- a/doc/neighbor.html
+++ b/doc/neighbor.html
@@ -16,31 +16,42 @@
 <PRE>neighbor skin style 
 </PRE>
 <UL><LI>skin = extra distance beyond force cutoff (distance units)
-<LI>style = <I>bin</I> or <I>nsq</I> 
+<LI>style = <I>bin</I> or <I>nsq</I> or <I>multi</I> 
 </UL>
 <P><B>Examples:</B>
 </P>
 <PRE>neighbor 0.3 bin
 neighbor 2.0 nsq 
 </PRE>
-<P><B>Description: </B>
+<P><B>Description:</B>
 </P>
 <P>This command sets parameters that affect the building of the pairwise
 neighbor list.  All atom pairs within a cutoff distance equal to the
 their force cutoff plus the <I>skin</I> distance are stored in the list.
 Typically, the larger the skin distance, the less often neighbor lists
 need to be built, but more pairs must be checked for possible force
-interactions every timestep.
+interactions every timestep.  The default value for <I>skin</I> depends on
+the choice of units for the simulation (see below).
 </P>
-<P>The <I>style</I> value chooses what algorithm is used to build the list.
-<I>Binning</I> is an operation that scales linearly with N, the number of
-atoms on a processor.  It is almost always faster than the <I>nsq</I> style
-which scales as N^2.  For unsolvated small molecules in a non-periodic
-box, the <I>nsq</I> choice can sometimes be faster.  Either style should
-give the same answers.
+<P>The <I>style</I> value selects what algorithm is used to build the list.
+The <I>bin</I> style creates the list by binning which is an operation that
+scales linearly with N/P, the number of atoms per processor where N =
+total number of atoms and P = number of processors.  It is almost
+always faster than the <I>nsq</I> style which scales as (N/P)^2.  For
+unsolvated small molecules in a non-periodic box, the <I>nsq</I> choice can
+sometimes be faster.  Either style should give the same answers.
 </P>
-<P>The default values for <I>skin</I> and <I>style</I> depend on the choice of
-units for the simulation.
+<P>The <I>multi</I> style is a modified binning algorithm that is useful for
+systems with a wide range of cutoff distances, e.g. due to different
+size particles.  For the <I>bin</I> style, the bin size is set to 1/2 of
+the largest cutoff distance between any pair of atom types and a
+single set of bins is defined to search over for all atom types.  This
+can be inefficient if one pair of types has a very long cutoff, but
+other type pairs have a much shorter cutoff.  For style <I>multi</I> the
+bin size is set to 1/2 of the shortest cutoff distance and multiple
+sets of bins are defined to search over for different atom types.
+This imposes some extra setup overhead, but the searches themselves
+may be much faster for the short-cutoff cases.
 </P>
 <P>The <A HREF = "neigh_modify.html">neigh_modify</A> command has additional options
 that control how often neighbor lists are built and which pairs are
@@ -59,7 +70,7 @@ section</A> for details.
 </P>
 <P><B>Default:</B>
 </P>
-<PRE>0.3 bin      for lj units
-2.0 bin      for real or metal units 
+<PRE>0.3 bin      for lj units (0.3 sigma)
+2.0 bin      for real or metal units (2.0 Angstroms) 
 </PRE>
 </HTML>
diff --git a/doc/neighbor.txt b/doc/neighbor.txt
index 8daff1bdabfebf1bb4542798d8fccfda683cd710..a5701f69a75d35a36c9ffb6e60ed173b33f0c3a9 100644
--- a/doc/neighbor.txt
+++ b/doc/neighbor.txt
@@ -13,31 +13,42 @@ neighbor command :h3
 neighbor skin style :pre
 
 skin = extra distance beyond force cutoff (distance units)
-style = {bin} or {nsq} :ul
+style = {bin} or {nsq} or {multi} :ul
 
 [Examples:]
 
 neighbor 0.3 bin
 neighbor 2.0 nsq :pre
 
-[Description: ]
+[Description:]
 
 This command sets parameters that affect the building of the pairwise
 neighbor list.  All atom pairs within a cutoff distance equal to the
 their force cutoff plus the {skin} distance are stored in the list.
 Typically, the larger the skin distance, the less often neighbor lists
 need to be built, but more pairs must be checked for possible force
-interactions every timestep.
-
-The {style} value chooses what algorithm is used to build the list.
-{Binning} is an operation that scales linearly with N, the number of
-atoms on a processor.  It is almost always faster than the {nsq} style
-which scales as N^2.  For unsolvated small molecules in a non-periodic
-box, the {nsq} choice can sometimes be faster.  Either style should
-give the same answers.
-
-The default values for {skin} and {style} depend on the choice of
-units for the simulation.
+interactions every timestep.  The default value for {skin} depends on
+the choice of units for the simulation (see below).
+
+The {style} value selects what algorithm is used to build the list.
+The {bin} style creates the list by binning which is an operation that
+scales linearly with N/P, the number of atoms per processor where N =
+total number of atoms and P = number of processors.  It is almost
+always faster than the {nsq} style which scales as (N/P)^2.  For
+unsolvated small molecules in a non-periodic box, the {nsq} choice can
+sometimes be faster.  Either style should give the same answers.
+
+The {multi} style is a modified binning algorithm that is useful for
+systems with a wide range of cutoff distances, e.g. due to different
+size particles.  For the {bin} style, the bin size is set to 1/2 of
+the largest cutoff distance between any pair of atom types and a
+single set of bins is defined to search over for all atom types.  This
+can be inefficient if one pair of types has a very long cutoff, but
+other type pairs have a much shorter cutoff.  For style {multi} the
+bin size is set to 1/2 of the shortest cutoff distance and multiple
+sets of bins are defined to search over for different atom types.
+This imposes some extra setup overhead, but the searches themselves
+may be much faster for the short-cutoff cases.
 
 The "neigh_modify"_neigh_modify.html command has additional options
 that control how often neighbor lists are built and which pairs are
@@ -56,5 +67,5 @@ section"_Section_start.html#2_7 for details.
 
 [Default:]
 
-0.3 bin      for lj units
-2.0 bin      for real or metal units :pre
+0.3 bin      for lj units (0.3 sigma)
+2.0 bin      for real or metal units (2.0 Angstroms) :pre