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