Merge remote-tracking branch 'lammps-ro/master' into lammps-icms

# Conflicts:
#	doc/Manual.html
#	doc/Manual.txt
#	doc/info.txt
#	src/atom.cpp
#	src/info.cpp
This commit is contained in:
Axel Kohlmeyer
2015-07-17 06:56:56 -04:00
37 changed files with 1677 additions and 163 deletions

View File

@ -1,7 +1,7 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>LAMMPS-ICMS Users Manual</TITLE> <TITLE>LAMMPS-ICMS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="15 Jul 2015 version"> <META NAME="docnumber" CONTENT="17 Jul 2015 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories"> <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License."> <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD> </HEAD>
@ -22,7 +22,7 @@
<CENTER><H3>LAMMPS-ICMS Documentation <CENTER><H3>LAMMPS-ICMS Documentation
</H3></CENTER> </H3></CENTER>
<CENTER><H4>15 Jul 2015 version <CENTER><H4>17 Jul 2015 version
</H4></CENTER> </H4></CENTER>
<H4>Version info: <H4>Version info:
</H4> </H4>

View File

@ -1,6 +1,6 @@
<HEAD> <HEAD>
<TITLE>LAMMPS-ICMS Users Manual</TITLE> <TITLE>LAMMPS-ICMS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="15 Jul 2015 version"> <META NAME="docnumber" CONTENT="17 Jul 2015 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories"> <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License."> <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD> </HEAD>
@ -18,7 +18,7 @@
<H1></H1> <H1></H1>
LAMMPS-ICMS Documentation :c,h3 LAMMPS-ICMS Documentation :c,h3
15 Jul 2015 version :c,h4 17 Jul 2015 version :c,h4
Version info: :h4 Version info: :h4

View File

@ -378,17 +378,17 @@ in the command's documentation.
<TR ALIGN="center"><TD ><A HREF = "comm_style.html">comm_style</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_bonds.html">create_bonds</A></TD><TD ><A HREF = "create_box.html">create_box</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "comm_style.html">comm_style</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_bonds.html">create_bonds</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 = "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 = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_image.html">dump image</A></TD><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "dump_image.html">dump movie</A></TD><TD ><A HREF = "echo.html">echo</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_image.html">dump image</A></TD><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "dump_image.html">dump movie</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 = "if.html">if</A></TD><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD><TD ><A HREF = "improper_style.html">improper_style</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 = "if.html">if</A></TD><TD ><A HREF = "info.html">info</A></TD><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "include.html">include</A></TD><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></TR> <TR ALIGN="center"><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><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></TR>
<TR ALIGN="center"><TD ><A HREF = "log.html">log</A></TD><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 = "molecule.html">molecule</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "lattice.html">lattice</A></TD><TD ><A HREF = "log.html">log</A></TD><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></TR>
<TR ALIGN="center"><TD ><A HREF = "neb.html">neb</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><TD ><A HREF = "next.html">next</A></TD><TD ><A HREF = "package.html">package</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "molecule.html">molecule</A></TD><TD ><A HREF = "neb.html">neb</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><TD ><A HREF = "next.html">next</A></TD></TR>
<TR ALIGN="center"><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 = "partition.html">partition</A></TD><TD ><A HREF = "prd.html">prd</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "package.html">package</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 = "partition.html">partition</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 = "python.html">python</A></TD><TD ><A HREF = "quit.html">quit</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD><TD ><A HREF = "read_dump.html">read_dump</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "prd.html">prd</A></TD><TD ><A HREF = "print.html">print</A></TD><TD ><A HREF = "processors.html">processors</A></TD><TD ><A HREF = "python.html">python</A></TD><TD ><A HREF = "quit.html">quit</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD></TR>
<TR ALIGN="center"><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 = "rerun.html">rerun</A></TD><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD><TD ><A HREF = "restart.html">restart</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "read_dump.html">read_dump</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 = "rerun.html">rerun</A></TD><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD></TR>
<TR ALIGN="center"><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><TD ><A HREF = "suffix.html">suffix</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 = "tad.html">tad</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 = "suffix.html">suffix</A></TD><TD ><A HREF = "tad.html">tad</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></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 = "timestep.html">timestep</A></TD><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></TR>
<TR ALIGN="center"><TD ><A HREF = "write_data.html">write_data</A></TD><TD ><A HREF = "write_dump.html">write_dump</A></TD><TD ><A HREF = "write_restart.html">write_restart</A> <TR ALIGN="center"><TD ><A HREF = "velocity.html">velocity</A></TD><TD ><A HREF = "write_data.html">write_data</A></TD><TD ><A HREF = "write_dump.html">write_dump</A></TD><TD ><A HREF = "write_restart.html">write_restart</A>
</TD></TR></TABLE></DIV> </TD></TR></TABLE></DIV>
<P>These are additional commands in USER packages, which can be used if <P>These are additional commands in USER packages, which can be used if

View File

@ -402,6 +402,7 @@ in the command's documentation.
"fix_modify"_fix_modify.html, "fix_modify"_fix_modify.html,
"group"_group.html, "group"_group.html,
"if"_if.html, "if"_if.html,
"info"_info.html,
"improper_coeff"_improper_coeff.html, "improper_coeff"_improper_coeff.html,
"improper_style"_improper_style.html, "improper_style"_improper_style.html,
"include"_include.html, "include"_include.html,

View File

@ -101,8 +101,8 @@ favorite interatomic potential, boundary condition, or atom type, see
<A HREF = "Section_modify.html">Section_modify</A>, which describes how you can add <A HREF = "Section_modify.html">Section_modify</A>, which describes how you can add
it to LAMMPS. it to LAMMPS.
</P> </P>
<H4>General features <H5>General features
</H4> </H5>
<UL><LI> runs on a single processor or in parallel <UL><LI> runs on a single processor or in parallel
<LI> distributed-memory message-passing parallelism (MPI) <LI> distributed-memory message-passing parallelism (MPI)
<LI> spatial-decomposition of simulation domain for parallelism <LI> spatial-decomposition of simulation domain for parallelism
@ -118,8 +118,8 @@ it to LAMMPS.
<LI> build as library, invoke LAMMPS thru library interface or provided Python wrapper <LI> build as library, invoke LAMMPS thru library interface or provided Python wrapper
<LI> couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both <LI> couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both
</UL> </UL>
<H4>Particle and model types <H5>Particle and model types
</H4> </H5>
<P>(<A HREF = "atom_style.html">atom style</A> command) <P>(<A HREF = "atom_style.html">atom style</A> command)
</P> </P>
<UL><LI> atoms <UL><LI> atoms
@ -135,8 +135,8 @@ it to LAMMPS.
<LI> rigid collections of particles <LI> rigid collections of particles
<LI> hybrid combinations of these <LI> hybrid combinations of these
</UL> </UL>
<H4>Force fields <H5>Force fields
</H4> </H5>
<P>(<A HREF = "pair_style.html">pair style</A>, <A HREF = "bond_style.html">bond style</A>, <P>(<A HREF = "pair_style.html">pair style</A>, <A HREF = "bond_style.html">bond style</A>,
<A HREF = "angle_style.html">angle style</A>, <A HREF = "dihedral_style.html">dihedral style</A>, <A HREF = "angle_style.html">angle style</A>, <A HREF = "dihedral_style.html">dihedral style</A>,
<A HREF = "improper_style.html">improper style</A>, <A HREF = "kspace_style.html">kspace style</A> <A HREF = "improper_style.html">improper style</A>, <A HREF = "kspace_style.html">kspace style</A>
@ -163,8 +163,8 @@ commands)
<LI> hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation <LI> hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation
<LI> overlaid potentials: superposition of multiple pair potentials <LI> overlaid potentials: superposition of multiple pair potentials
</UL> </UL>
<H4>Atom creation <H5>Atom creation
</H4> </H5>
<P>(<A HREF = "read_data.html">read_data</A>, <A HREF = "lattice.html">lattice</A>, <P>(<A HREF = "read_data.html">read_data</A>, <A HREF = "lattice.html">lattice</A>,
<A HREF = "create_atoms.html">create_atoms</A>, <A HREF = "delete_atoms.html">delete_atoms</A>, <A HREF = "create_atoms.html">create_atoms</A>, <A HREF = "delete_atoms.html">delete_atoms</A>,
<A HREF = "displace_atoms.html">displace_atoms</A>, <A HREF = "replicate.html">replicate</A> commands) <A HREF = "displace_atoms.html">displace_atoms</A>, <A HREF = "replicate.html">replicate</A> commands)
@ -175,8 +175,8 @@ commands)
<LI> replicate existing atoms multiple times <LI> replicate existing atoms multiple times
<LI> displace atoms <LI> displace atoms
</UL> </UL>
<H4>Ensembles, constraints, and boundary conditions <H5>Ensembles, constraints, and boundary conditions
</H4> </H5>
<P>(<A HREF = "fix.html">fix</A> command) <P>(<A HREF = "fix.html">fix</A> command)
</P> </P>
<UL><LI> 2d or 3d systems <UL><LI> 2d or 3d systems
@ -194,8 +194,8 @@ commands)
<LI> non-equilibrium molecular dynamics (NEMD) <LI> non-equilibrium molecular dynamics (NEMD)
<LI> variety of additional boundary conditions and constraints <LI> variety of additional boundary conditions and constraints
</UL> </UL>
<H4>Integrators <H5>Integrators
</H4> </H5>
<P>(<A HREF = "run.html">run</A>, <A HREF = "run_style.html">run_style</A>, <A HREF = "minimize.html">minimize</A> commands) <P>(<A HREF = "run.html">run</A>, <A HREF = "run_style.html">run_style</A>, <A HREF = "minimize.html">minimize</A> commands)
</P> </P>
<UL><LI> velocity-Verlet integrator <UL><LI> velocity-Verlet integrator
@ -205,12 +205,12 @@ commands)
<LI> rRESPA hierarchical timestepping <LI> rRESPA hierarchical timestepping
<LI> rerun command for post-processing of dump files <LI> rerun command for post-processing of dump files
</UL> </UL>
<H4>Diagnostics <H5>Diagnostics
</H4> </H5>
<UL><LI> see the various flavors of the <A HREF = "fix.html">fix</A> and <A HREF = "compute.html">compute</A> commands <UL><LI> see the various flavors of the <A HREF = "fix.html">fix</A> and <A HREF = "compute.html">compute</A> commands
</UL> </UL>
<H4>Output <H5>Output
</H4> </H5>
<P>(<A HREF = "dump.html">dump</A>, <A HREF = "restart.html">restart</A> commands) <P>(<A HREF = "dump.html">dump</A>, <A HREF = "restart.html">restart</A> commands)
</P> </P>
<UL><LI> log file of thermodynamic info <UL><LI> log file of thermodynamic info
@ -223,15 +223,15 @@ commands)
<LI> time averaging of system-wide quantities <LI> time averaging of system-wide quantities
<LI> atom snapshots in native, XYZ, XTC, DCD, CFG formats <LI> atom snapshots in native, XYZ, XTC, DCD, CFG formats
</UL> </UL>
<H4>Multi-replica models <H5>Multi-replica models
</H4> </H5>
<P><A HREF = "neb.html">nudged elastic band</A> <P><A HREF = "neb.html">nudged elastic band</A>
<A HREF = "prd.html">parallel replica dynamics</A> <A HREF = "prd.html">parallel replica dynamics</A>
<A HREF = "tad.html">temperature accelerated dynamics</A> <A HREF = "tad.html">temperature accelerated dynamics</A>
<A HREF = "temper.html">parallel tempering</A> <A HREF = "temper.html">parallel tempering</A>
</P> </P>
<H4>Pre- and post-processing <H5>Pre- and post-processing
</H4> </H5>
<UL><LI>Various pre- and post-processing serial tools are packaged <UL><LI>Various pre- and post-processing serial tools are packaged
with LAMMPS; see these <A HREF = "Section_tools.html">doc pages</A>. with LAMMPS; see these <A HREF = "Section_tools.html">doc pages</A>.
@ -245,8 +245,8 @@ Pizza.py WWW site</A>.
<H4>Specialized features <H5>Specialized features
</H4> </H5>
<P>These are LAMMPS capabilities which you may not think of as typical <P>These are LAMMPS capabilities which you may not think of as typical
molecular dynamics options: molecular dynamics options:
</P> </P>

View File

@ -97,7 +97,7 @@ favorite interatomic potential, boundary condition, or atom type, see
"Section_modify"_Section_modify.html, which describes how you can add "Section_modify"_Section_modify.html, which describes how you can add
it to LAMMPS. it to LAMMPS.
General features :h4 General features :h5
runs on a single processor or in parallel runs on a single processor or in parallel
distributed-memory message-passing parallelism (MPI) distributed-memory message-passing parallelism (MPI)
@ -114,7 +114,7 @@ General features :h4
build as library, invoke LAMMPS thru library interface or provided Python wrapper build as library, invoke LAMMPS thru library interface or provided Python wrapper
couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both :ul couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both :ul
Particle and model types :h4 Particle and model types :h5
("atom style"_atom_style.html command) ("atom style"_atom_style.html command)
atoms atoms
@ -130,7 +130,7 @@ Particle and model types :h4
rigid collections of particles rigid collections of particles
hybrid combinations of these :ul hybrid combinations of these :ul
Force fields :h4 Force fields :h5
("pair style"_pair_style.html, "bond style"_bond_style.html, ("pair style"_pair_style.html, "bond style"_bond_style.html,
"angle style"_angle_style.html, "dihedral style"_dihedral_style.html, "angle style"_angle_style.html, "dihedral style"_dihedral_style.html,
"improper style"_improper_style.html, "kspace style"_kspace_style.html "improper style"_improper_style.html, "kspace style"_kspace_style.html
@ -166,7 +166,7 @@ commands)
potentials can be used in one simulation potentials can be used in one simulation
overlaid potentials: superposition of multiple pair potentials :ul overlaid potentials: superposition of multiple pair potentials :ul
Atom creation :h4 Atom creation :h5
("read_data"_read_data.html, "lattice"_lattice.html, ("read_data"_read_data.html, "lattice"_lattice.html,
"create_atoms"_create_atoms.html, "delete_atoms"_delete_atoms.html, "create_atoms"_create_atoms.html, "delete_atoms"_delete_atoms.html,
"displace_atoms"_displace_atoms.html, "replicate"_replicate.html commands) "displace_atoms"_displace_atoms.html, "replicate"_replicate.html commands)
@ -177,7 +177,7 @@ Atom creation :h4
replicate existing atoms multiple times replicate existing atoms multiple times
displace atoms :ul displace atoms :ul
Ensembles, constraints, and boundary conditions :h4 Ensembles, constraints, and boundary conditions :h5
("fix"_fix.html command) ("fix"_fix.html command)
2d or 3d systems 2d or 3d systems
@ -195,7 +195,7 @@ Ensembles, constraints, and boundary conditions :h4
non-equilibrium molecular dynamics (NEMD) non-equilibrium molecular dynamics (NEMD)
variety of additional boundary conditions and constraints :ul variety of additional boundary conditions and constraints :ul
Integrators :h4 Integrators :h5
("run"_run.html, "run_style"_run_style.html, "minimize"_minimize.html commands) ("run"_run.html, "run_style"_run_style.html, "minimize"_minimize.html commands)
velocity-Verlet integrator velocity-Verlet integrator
@ -205,11 +205,11 @@ Integrators :h4
rRESPA hierarchical timestepping rRESPA hierarchical timestepping
rerun command for post-processing of dump files :ul rerun command for post-processing of dump files :ul
Diagnostics :h4 Diagnostics :h5
see the various flavors of the "fix"_fix.html and "compute"_compute.html commands :ul see the various flavors of the "fix"_fix.html and "compute"_compute.html commands :ul
Output :h4 Output :h5
("dump"_dump.html, "restart"_restart.html commands) ("dump"_dump.html, "restart"_restart.html commands)
log file of thermodynamic info log file of thermodynamic info
@ -222,14 +222,14 @@ Output :h4
time averaging of system-wide quantities time averaging of system-wide quantities
atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul
Multi-replica models :h4 Multi-replica models :h5
"nudged elastic band"_neb.html "nudged elastic band"_neb.html
"parallel replica dynamics"_prd.html "parallel replica dynamics"_prd.html
"temperature accelerated dynamics"_tad.html "temperature accelerated dynamics"_tad.html
"parallel tempering"_temper.html "parallel tempering"_temper.html
Pre- and post-processing :h4 Pre- and post-processing :h5
Various pre- and post-processing serial tools are packaged Various pre- and post-processing serial tools are packaged
with LAMMPS; see these "doc pages"_Section_tools.html. :ulb,l with LAMMPS; see these "doc pages"_Section_tools.html. :ulb,l
@ -243,7 +243,7 @@ Pizza.py WWW site"_pizza. :l,ule
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html) :link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
:link(python,http://www.python.org) :link(python,http://www.python.org)
Specialized features :h4 Specialized features :h5
These are LAMMPS capabilities which you may not think of as typical These are LAMMPS capabilities which you may not think of as typical
molecular dynamics options: molecular dynamics options:

View File

@ -194,18 +194,15 @@ lib/kokkos/Makefile.kokkos file.
#Options: force_uvm,use_ldg,rdc #Options: force_uvm,use_ldg,rdc
</P> </P>
<UL><LI>KOKKOS_DEVICES, values = <I>OpenMP</I>, <I>Serial</I>, <I>Pthreads</I>, <I>Cuda</I>, default = <I>OpenMP</I> <UL><LI>KOKKOS_DEVICES, values = <I>OpenMP</I>, <I>Serial</I>, <I>Pthreads</I>, <I>Cuda</I>, default = <I>OpenMP</I>
<LI>KOKKOS_ARCH, values = <I>KNC</I>, <I>SNB</I>, <I>HSW</I>, <I>Kepler</I>, <I>Kepler30</I>, <I>Kepler32</I>, <I>Kepler35</I>, <LI>KOKKOS_ARCH, values = <I>KNC</I>, <I>SNB</I>, <I>HSW</I>, <I>Kepler</I>, <I>Kepler30</I>, <I>Kepler32</I>, <I>Kepler35</I>, <I>Kepler37</I>, <I>Maxwell</I>, <I>Maxwell50</I>, <I>Maxwell52</I>, <I>Maxwell53</I>, <I>ARMv8</I>, <I>BGQ</I>, <I>Power7</I>, <I>Power8</I>, default = <I>none</I>
<LI><I>Kepler37</I>, <I>Maxwell</I>, <I>Maxwell50</I>, <I>Maxwell52</I>, <I>Maxwell53</I>, <I>ARMv8</I>, <I>BGQ</I>, <I>Power7</I>, <I>Power8</I>,
<LI>default = <I>none</I>
<LI>KOKKOS_DEBUG, values = <I>yes</I>, <I>no</I>, default = <I>no</I> <LI>KOKKOS_DEBUG, values = <I>yes</I>, <I>no</I>, default = <I>no</I>
<LI>KOKKOS_USE_TPLS, values = <I>hwloc</I>, <I>librt</I>, default = <I>none</I> <LI>KOKKOS_USE_TPLS, values = <I>hwloc</I>, <I>librt</I>, default = <I>none</I>
<LI>KOKKOS_CUDA_OPTIONS, values = <I>force_uvm</I>, <I>use_ldg</I>, <I>rdc</I> <LI>KOKKOS_CUDA_OPTIONS, values = <I>force_uvm</I>, <I>use_ldg</I>, <I>rdc</I>
</UL> </UL>
<P>KOKKOS_DEVICE sets the parallelization method used for Kokkos code (within <P>KOKKOS_DEVICE sets the parallelization method used for Kokkos code
LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be (within LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be
used. KOKKOS_DEVICES=Pthreads means that pthreads will be used. used. KOKKOS_DEVICES=Pthreads means that pthreads will be used.
KOKKOS_DEVICES=Cuda means an NVIDIA GPU running KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used.
CUDA will be used.
</P> </P>
<P>If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE <P>If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE
directory must use "nvcc" as its compiler, via its CC setting. For directory must use "nvcc" as its compiler, via its CC setting. For

View File

@ -191,18 +191,15 @@ lib/kokkos/Makefile.kokkos file.
#Options: force_uvm,use_ldg,rdc #Options: force_uvm,use_ldg,rdc
KOKKOS_DEVICES, values = {OpenMP}, {Serial}, {Pthreads}, {Cuda}, default = {OpenMP} KOKKOS_DEVICES, values = {OpenMP}, {Serial}, {Pthreads}, {Cuda}, default = {OpenMP}
KOKKOS_ARCH, values = {KNC}, {SNB}, {HSW}, {Kepler}, {Kepler30}, {Kepler32}, {Kepler35}, KOKKOS_ARCH, values = {KNC}, {SNB}, {HSW}, {Kepler}, {Kepler30}, {Kepler32}, {Kepler35}, {Kepler37}, {Maxwell}, {Maxwell50}, {Maxwell52}, {Maxwell53}, {ARMv8}, {BGQ}, {Power7}, {Power8}, default = {none}
{Kepler37}, {Maxwell}, {Maxwell50}, {Maxwell52}, {Maxwell53}, {ARMv8}, {BGQ}, {Power7}, {Power8},
default = {none}
KOKKOS_DEBUG, values = {yes}, {no}, default = {no} KOKKOS_DEBUG, values = {yes}, {no}, default = {no}
KOKKOS_USE_TPLS, values = {hwloc}, {librt}, default = {none} KOKKOS_USE_TPLS, values = {hwloc}, {librt}, default = {none}
KOKKOS_CUDA_OPTIONS, values = {force_uvm}, {use_ldg}, {rdc} :ul KOKKOS_CUDA_OPTIONS, values = {force_uvm}, {use_ldg}, {rdc} :ul
KOKKOS_DEVICE sets the parallelization method used for Kokkos code (within KOKKOS_DEVICE sets the parallelization method used for Kokkos code
LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be (within LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be
used. KOKKOS_DEVICES=Pthreads means that pthreads will be used. used. KOKKOS_DEVICES=Pthreads means that pthreads will be used.
KOKKOS_DEVICES=Cuda means an NVIDIA GPU running KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used.
CUDA will be used.
If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE
directory must use "nvcc" as its compiler, via its CC setting. For directory must use "nvcc" as its compiler, via its CC setting. For

View File

@ -152,7 +152,7 @@ partitioning of the simulation box across processors (one sub-box for
each of 16 processors); the middle diagram is after a "grid" method each of 16 processors); the middle diagram is after a "grid" method
has been applied. has been applied.
</P> </P>
<CENTER><A HREF = "balance_uniform.jpg"><IMG SRC = "JPG/balance_uniform_small.jpg"></A><A HREF = "balance_nonuniform.jpg"><IMG SRC = "JPG/balance_nonuniform_small.jpg"></A><A HREF = "balance_rcb.jpg"><IMG SRC = "JPG/balance_rcb_small.jpg"></A> <CENTER><A HREF = "JPG/balance_uniform.jpg"><IMG SRC = "JPG/balance_uniform_small.jpg"></A><A HREF = "JGP/balance_nonuniform.jpg"><IMG SRC = "JPG/balance_nonuniform_small.jpg"></A><A HREF = "JPG/balance_rcb.jpg"><IMG SRC = "JPG/balance_rcb_small.jpg"></A>
</CENTER> </CENTER>
<P>The <I>rcb</I> style is a "tiling" method which does not produce a logical <P>The <I>rcb</I> style is a "tiling" method which does not produce a logical
3d grid of processors. Rather it tiles the simulation domain with 3d grid of processors. Rather it tiles the simulation domain with

View File

@ -142,7 +142,7 @@ partitioning of the simulation box across processors (one sub-box for
each of 16 processors); the middle diagram is after a "grid" method each of 16 processors); the middle diagram is after a "grid" method
has been applied. has been applied.
:c,image(JPG/balance_uniform_small.jpg,balance_uniform.jpg),image(JPG/balance_nonuniform_small.jpg,balance_nonuniform.jpg),image(JPG/balance_rcb_small.jpg,balance_rcb.jpg) :c,image(JPG/balance_uniform_small.jpg,JPG/balance_uniform.jpg),image(JPG/balance_nonuniform_small.jpg,JGP/balance_nonuniform.jpg),image(JPG/balance_rcb_small.jpg,JPG/balance_rcb.jpg)
The {rcb} style is a "tiling" method which does not produce a logical The {rcb} style is a "tiling" method which does not produce a logical
3d grid of processors. Rather it tiles the simulation domain with 3d grid of processors. Rather it tiles the simulation domain with

186
doc/compute_saed.html Normal file
View File

@ -0,0 +1,186 @@
<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>compute saed command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID saed lambda type1 type2 ... typeN keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>saed = style name of this compute command
<LI>lambda = wavelength of incident radiation (length units)
<LI>type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>Kmax</I> or <I>Zone</I> or <I>dR_Ewald</I> or <I>c</I> or <I>manual</I> or <I>echo</I>
<PRE> <I>Kmax</I> value = Maximum distance explored from reciprocal space origin
(inverse length units)
<I>Zone</I> values = z1 z2 z3
z1,z2,z3 = Zone axis of incident radiation. If z1=z2=z3=0 all
reciprocal space will be meshed up to <I>Kmax</I>
<I>dR_Ewald</I> value = Thickness of Ewald sphere slice intercepting
reciprocal space (inverse length units)
<I>c</I> values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
<I>manual</I> = flag to use manual spacing of reciprocal lattice points
based on the values of the <I>c</I> parameters
<I>echo</I> = flag to provide extra output for debugging purposes
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
</P>
<PRE>fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates electron diffraction intensity as
described in <A HREF = "#Coleman">(Coleman)</A> on a mesh of reciprocal lattice nodes
defined by the entire simulation domain (or manually) using simulated
radiation of wavelength lambda.
</P>
<P>The electron diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
</P>
<CENTER><IMG SRC = "Eqs/compute_saed1.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_saed2.jpg">
</CENTER>
<P>Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors.
</P>
<P>Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I) by
the entire simulation domain or (II) manually using selected values.
</P>
<P>For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing <I>c</I>*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
</P>
<P>If the <I>manual</I> flag is included, the mesh of reciprocal lattice nodes
will defined using the <I>c</I> values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters <B><0.05 Angstrom^(-1)</B> are implemented.
Meshes with manual spacing do not require a periodic boundary.
</P>
<P>The limits of the reciprocal lattice mesh are determined by the use of
the <I>Kmax</I>, <I>Zone</I>, and <I>dR_Ewald</I> parameters. The rectilinear mesh
created about the origin of reciprocal space is terminated at the
boundary of a sphere of radius <I>Kmax</I> centered at the origin. If
<I>Zone</I> parameters z1=z2=z3=0 are used, diffraction intensities are
computed throughout the entire spherical volume - note this can greatly
increase the cost of computation. Otherwise, <I>Zone</I> parameters will
denote the z1=h, z2=k, and z3=l (in a global since) zone axis of an
intersecting Ewald sphere. Diffraction intensities will only be
computed at the intersection of the reciprocal lattice mesh and a
<I>dR_Ewald</I> thick surface of the Ewald sphere.
</P>
<P>The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute saed uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
<A HREF = "#Brown">(Brown)</A>:
</P>
<CENTER><IMG SRC = "Eqs/compute_saed3.jpg">
</CENTER>
<P>Coefficients parameterized by <A HREF = "#Fox">(Fox)</A> are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute saed are:
</P>
<P> H: He: Li: Be: B:
C: N: O: F: Ne:
Na: Mg: Al: Si: P:
S: Cl: Ar: K: Ca:
Sc: Ti: V: Cr: Mn:
Fe: Co: Ni: Cu: Zn:
Ga: Ge: As: Se: Br:
Kr: Rb: Sr: Y: Zr:
Nb: Mo: Tc: Ru: Rh:
Pd: Ag: Cd: In: Sn:
Sb: Te: I: Xe: Cs:
Ba: La: Ce: Pr: Nd:
Pm: Sm: Eu: Gd: Tb:
Dy: Ho: Er: Tm: Yb:
Lu: Hf: Ta: W: Re:
Os: Ir: Pt: Au: Hg:
Tl: Pb: Bi: Po: At:
Rn: Fr: Ra: Ac: Th:
Pa: U: Np: Pu: Am:
Cm: Bk: Cf:
</P>
<P>If the <I>echo</I> keyword is specified, compute saed will provide extra
reporting information to the screen.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector. The length of the vector is
the number of reciprocal lattice nodes that are explored by the mesh.
The entries of the global vector are the computed diffraction
intensities as described above.
</P>
<P>The vector can be accessed by any command that uses global values
from a compute as input. See <A HREF = "Section_howto.html#howto_15">this
section</A> for an overview of LAMMPS output
options.
</P>
<P>All array values calculated by this compute are "intensive".
</P>
<P><B>Restrictions:</B>
</P>
<P>The compute_saed command does not work for triclinic cells.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_saed_vtk.html">fix saed_vtk</A>
<A HREF = "compute_xrd.html">compute xrd</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are Kmax = 1.70, Zone 1 0 0, c 1 1 1, dR_Ewald = 0.01
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
<A NAME = "Brown"></A>
<P><B>(Brown)</B> Brown et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 554-95 (2004).
</P>
<A NAME = "Fox"></A>
<P><B>(Fox)</B> Fox, O'Keefe, Tabbernor, Acta Crystallogr. A, 45, 786-93
(1989).
</P>
</HTML>

173
doc/compute_saed.txt Normal file
View File

@ -0,0 +1,173 @@
"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
compute saed command :h3
[Syntax:]
compute ID group-ID saed lambda type1 type2 ... typeN keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
saed = style name of this compute command :l
lambda = wavelength of incident radiation (length units) :l
type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below) :l
zero or more keyword/value pairs may be appended :l
keyword = {Kmax} or {Zone} or {dR_Ewald} or {c} or {manual} or {echo} :l
{Kmax} value = Maximum distance explored from reciprocal space origin
(inverse length units)
{Zone} values = z1 z2 z3
z1,z2,z3 = Zone axis of incident radiation. If z1=z2=z3=0 all
reciprocal space will be meshed up to {Kmax}
{dR_Ewald} value = Thickness of Ewald sphere slice intercepting
reciprocal space (inverse length units)
{c} values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
{manual} = flag to use manual spacing of reciprocal lattice points
based on the values of the {c} parameters
{echo} = flag to provide extra output for debugging purposes :pre
:ule
[Examples:]
compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed :pre
[Description:]
Define a computation that calculates electron diffraction intensity as
described in "(Coleman)"_#Coleman on a mesh of reciprocal lattice nodes
defined by the entire simulation domain (or manually) using simulated
radiation of wavelength lambda.
The electron diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
:c,image(Eqs/compute_saed1.jpg)
:c,image(Eqs/compute_saed2.jpg)
Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors.
Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I) by
the entire simulation domain or (II) manually using selected values.
For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing {c}*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
If the {manual} flag is included, the mesh of reciprocal lattice nodes
will defined using the {c} values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters [<0.05 Angstrom^(-1)] are implemented.
Meshes with manual spacing do not require a periodic boundary.
The limits of the reciprocal lattice mesh are determined by the use of
the {Kmax}, {Zone}, and {dR_Ewald} parameters. The rectilinear mesh
created about the origin of reciprocal space is terminated at the
boundary of a sphere of radius {Kmax} centered at the origin. If
{Zone} parameters z1=z2=z3=0 are used, diffraction intensities are
computed throughout the entire spherical volume - note this can greatly
increase the cost of computation. Otherwise, {Zone} parameters will
denote the z1=h, z2=k, and z3=l (in a global since) zone axis of an
intersecting Ewald sphere. Diffraction intensities will only be
computed at the intersection of the reciprocal lattice mesh and a
{dR_Ewald} thick surface of the Ewald sphere.
The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute saed uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
"(Brown)"_#Brown:
:c,image(Eqs/compute_saed3.jpg)
Coefficients parameterized by "(Fox)"_#Fox are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute saed are:
H: He: Li: Be: B:
C: N: O: F: Ne:
Na: Mg: Al: Si: P:
S: Cl: Ar: K: Ca:
Sc: Ti: V: Cr: Mn:
Fe: Co: Ni: Cu: Zn:
Ga: Ge: As: Se: Br:
Kr: Rb: Sr: Y: Zr:
Nb: Mo: Tc: Ru: Rh:
Pd: Ag: Cd: In: Sn:
Sb: Te: I: Xe: Cs:
Ba: La: Ce: Pr: Nd:
Pm: Sm: Eu: Gd: Tb:
Dy: Ho: Er: Tm: Yb:
Lu: Hf: Ta: W: Re:
Os: Ir: Pt: Au: Hg:
Tl: Pb: Bi: Po: At:
Rn: Fr: Ra: Ac: Th:
Pa: U: Np: Pu: Am:
Cm: Bk: Cf:
If the {echo} keyword is specified, compute saed will provide extra
reporting information to the screen.
[Output info:]
This compute calculates a global vector. The length of the vector is
the number of reciprocal lattice nodes that are explored by the mesh.
The entries of the global vector are the computed diffraction
intensities as described above.
The vector can be accessed by any command that uses global values
from a compute as input. See "this
section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All array values calculated by this compute are "intensive".
[Restrictions:]
The compute_saed command does not work for triclinic cells.
[Related commands:]
"fix saed_vtk"_fix_saed_vtk.html
"compute xrd"_compute_xrd.html
[Default:]
The option defaults are Kmax = 1.70, Zone 1 0 0, c 1 1 1, dR_Ewald = 0.01
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
:link(Brown)
[(Brown)] Brown et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 554-95 (2004).
:link(Fox)
[(Fox)] Fox, O'Keefe, Tabbernor, Acta Crystallogr. A, 45, 786-93
(1989).

210
doc/compute_xrd.html Normal file
View File

@ -0,0 +1,210 @@
<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>compute xrd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID xrd lambda type1 type2 ... typeN keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>xrd = style name of this compute command
<LI>lambda = wavelength of incident radiation (length units)
<LI>type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>2Theta</I> or <I>c</I> or <I>LP</I> or <I>manual</I> or <I>echo</I>
<PRE> <I>2Theta</I> values = Min2Theta Max2Theta
Min2Theta,Max2Theta = minimum and maximum 2 theta range to explore
(radians or degrees)
<I>c</I> values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
<I>LP</I> value = switch to apply Lorentz-polarization factor
0/1 = off/on
<I>manual</I> = flag to use manual spacing of reciprocal lattice points
based on the values of the <I>c</I> parameters
<I>echo</I> = flag to provide extra output for debugging purposes
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all xrd 1.541838 Al O 2Theta 0.087 0.87 c 1 1 1 LP 1 echo
compute 2 all xrd 1.541838 Al O 2Theta 10 100 c 0.05 0.05 0.05 LP 1 manual
</P>
<P>fix 1 all ave/histo 1 1 1 0.087 0.87 250 c_1<B>1</B> mode vector weights c_1<B>2</B> file Rad2Theta.xrd
fix 2 all ave/histo 1 1 1 10 100 250 c_2<B>1</B> mode vector weights c_2<B>2</B> file Deg2Theta.xrd
</P>
<PRE>
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates x-ray diffraction intensity as described
in <A HREF = "#Coleman">(Coleman)</A> on a mesh of reciprocal lattice nodes defined
by the entire simulation domain (or manually) using simulated radiation
of wavelength lambda.
</P>
<P>The x-ray diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
</P>
<CENTER><IMG SRC = "Eqs/compute_xrd1.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd2.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd3.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd4.jpg">
</CENTER>
<P>Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors, LP is the
Lorentz-polarization factor, and theta is the scattering angle of
diffraction. The Lorentz-polarization factor can be turned off using
the <I>LP</I> switch.
</P>
<P>Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I)
by the entire simulation domain or (II) manually using selected values.
</P>
<P>For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing <I>c</I>*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
</P>
<P>If the <I>manual</I> flag is included, the mesh of reciprocal lattice nodes
will defined using the <I>c</I> values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters <B><0.05 Angstrom^(-1)</B> are implemented.
Meshes with manual spacing do not require a periodic boundary.
</P>
<P>The limits of the reciprocal lattice mesh are determined by range of
scattering angles explored. The <I>2Theta</I> parameters allows the user to
reduce the scattering angle range to only the region of interest which
reduces the cost of the computation.
</P>
<P>The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute xrd uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
<A HREF = "#Colliex">(Colliex)</A>:
</P>
<CENTER><IMG SRC = "Eqs/compute_xrd5.jpg">
</CENTER>
<P>Coefficients parameterized by <A HREF = "#Peng">(Peng)</A> are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute xrd are:
</P>
<P> H: He1-: He: Li: Li1+:
Be: Be2+: B: C: Cval:
N: O: O1-: F: F1-:
Ne: Na: Na1+: Mg: Mg2+:
Al: Al3+: Si: Sival: Si4+:
P: S: Cl: Cl1-: Ar:
K: Ca: Ca2+: Sc: Sc3+:
Ti: Ti2+: Ti3+: Ti4+: V:
V2+: V3+: V5+: Cr: Cr2+:
Cr3+: Mn: Mn2+: Mn3+: Mn4+:
Fe: Fe2+: Fe3+: Co: Co2+:
Co: Ni: Ni2+: Ni3+: Cu:
Cu1+: Cu2+: Zn: Zn2+: Ga:
Ga3+: Ge: Ge4+: As: Se:
Br: Br1-: Kr: Rb: Rb1+:
Sr: Sr2+: Y: Y3+: Zr:
Zr4+: Nb: Nb3+: Nb5+: Mo:
Mo3+: Mo5+: Mo6+: Tc: Ru:
Ru3+: Ru4+: Rh: Rh3+: Rh4+:
Pd: Pd2+: Pd4+: Ag: Ag1+:
Ag2+: Cd: Cd2+: In: In3+:
Sn: Sn2+: Sn4+: Sb: Sb3+:
Sb5+: Te: I: I1-: Xe:
Cs: Cs1+: Ba: Ba2+: La:
La3+: Ce: Ce3+: Ce4+: Pr:
Pr3+: Pr4+: Nd: Nd3+: Pm:
Pm3+: Sm: Sm3+: Eu: Eu2+:
Eu3+: Gd: Gd3+: Tb: Tb3+:
Dy: Dy3+: Ho: Ho3+: Er:
Er3+: Tm: Tm3+: Yb: Yb2+:
Yb3+: Lu: Lu3+: Hf: Hf4+:
Ta: Ta5+: W: W6+: Re:
Os: Os4+: Ir: Ir3+: Ir4+:
Pt: Pt2+: Pt4+: Au: Au1+:
Au3+: Hg: Hg1+: Hg2+: Tl:
Tl1+: Tl3+: Pb: Pb2+: Pb4+:
Bi: Bi3+: Bi5+: Po: At:
Rn: Fr: Ra: Ra2+: Ac:
Ac3+: Th: Th4+: Pa: U:
U3+: U4+: U6+: Np: Np3+:
Np4+: Np6+: Pu: Pu3+: Pu4+:
Pu6+: Am: Cm: Bk: Cf:
</P>
<P>If the <I>echo</I> keyword is specified, compute xrd will provide extra
reporting information to the screen.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global array. The number of rows in the
array is the number of reciprocal lattice nodes that are explored
which by the mesh. The global array has 2 columns.
</P>
<P>The first column contains the diffraction angle in the units (radians
or degrees) provided with the <I>2Theta</I> values. The second column contains
the computed diffraction intensities as described above.
</P>
<P>The array can be accessed by any command that uses global values
from a compute as input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS output
options.
</P>
<P>All array values calculated by this compute are "intensive".
</P>
<P><B>Restrictions:</B>
</P>
<P>The compute_xrd command does not work for triclinic cells.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_ave_histo.html">fix ave/histo</A>
<A HREF = "compute_saed.html">compute saed</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are 2Theta = 1 179 (degrees), c = 1 1 1, LP = 1, no manual flag, no echo flag
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
<A NAME = "Colliex"></A>
<P><B>(Colliex)</B> Colliex et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 249-429 (2004).
</P>
<A NAME = "Peng"></A>
<P><B>(Peng)</B> Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76
(1996).
</P>
</HTML>

196
doc/compute_xrd.txt Normal file
View File

@ -0,0 +1,196 @@
"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
compute xrd command :h3
[Syntax:]
compute ID group-ID xrd lambda type1 type2 ... typeN keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
xrd = style name of this compute command :l
lambda = wavelength of incident radiation (length units) :l
type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below) :l
zero or more keyword/value pairs may be appended :l
keyword = {2Theta} or {c} or {LP} or {manual} or {echo} :l
{2Theta} values = Min2Theta Max2Theta
Min2Theta,Max2Theta = minimum and maximum 2 theta range to explore
(radians or degrees)
{c} values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
{LP} value = switch to apply Lorentz-polarization factor
0/1 = off/on
{manual} = flag to use manual spacing of reciprocal lattice points
based on the values of the {c} parameters
{echo} = flag to provide extra output for debugging purposes :pre
:ule
[Examples:]
compute 1 all xrd 1.541838 Al O 2Theta 0.087 0.87 c 1 1 1 LP 1 echo
compute 2 all xrd 1.541838 Al O 2Theta 10 100 c 0.05 0.05 0.05 LP 1 manual
fix 1 all ave/histo 1 1 1 0.087 0.87 250 c_1[1] mode vector weights c_1[2] file Rad2Theta.xrd
fix 2 all ave/histo 1 1 1 10 100 250 c_2[1] mode vector weights c_2[2] file Deg2Theta.xrd
:pre
[Description:]
Define a computation that calculates x-ray diffraction intensity as described
in "(Coleman)"_#Coleman on a mesh of reciprocal lattice nodes defined
by the entire simulation domain (or manually) using simulated radiation
of wavelength lambda.
The x-ray diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
:c,image(Eqs/compute_xrd1.jpg)
:c,image(Eqs/compute_xrd2.jpg)
:c,image(Eqs/compute_xrd3.jpg)
:c,image(Eqs/compute_xrd4.jpg)
Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors, LP is the
Lorentz-polarization factor, and theta is the scattering angle of
diffraction. The Lorentz-polarization factor can be turned off using
the {LP} switch.
Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I)
by the entire simulation domain or (II) manually using selected values.
For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing {c}*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
If the {manual} flag is included, the mesh of reciprocal lattice nodes
will defined using the {c} values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters [<0.05 Angstrom^(-1)] are implemented.
Meshes with manual spacing do not require a periodic boundary.
The limits of the reciprocal lattice mesh are determined by range of
scattering angles explored. The {2Theta} parameters allows the user to
reduce the scattering angle range to only the region of interest which
reduces the cost of the computation.
The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute xrd uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
"(Colliex)"_#Colliex:
:c,image(Eqs/compute_xrd5.jpg)
Coefficients parameterized by "(Peng)"_#Peng are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute xrd are:
H: He1-: He: Li: Li1+:
Be: Be2+: B: C: Cval:
N: O: O1-: F: F1-:
Ne: Na: Na1+: Mg: Mg2+:
Al: Al3+: Si: Sival: Si4+:
P: S: Cl: Cl1-: Ar:
K: Ca: Ca2+: Sc: Sc3+:
Ti: Ti2+: Ti3+: Ti4+: V:
V2+: V3+: V5+: Cr: Cr2+:
Cr3+: Mn: Mn2+: Mn3+: Mn4+:
Fe: Fe2+: Fe3+: Co: Co2+:
Co: Ni: Ni2+: Ni3+: Cu:
Cu1+: Cu2+: Zn: Zn2+: Ga:
Ga3+: Ge: Ge4+: As: Se:
Br: Br1-: Kr: Rb: Rb1+:
Sr: Sr2+: Y: Y3+: Zr:
Zr4+: Nb: Nb3+: Nb5+: Mo:
Mo3+: Mo5+: Mo6+: Tc: Ru:
Ru3+: Ru4+: Rh: Rh3+: Rh4+:
Pd: Pd2+: Pd4+: Ag: Ag1+:
Ag2+: Cd: Cd2+: In: In3+:
Sn: Sn2+: Sn4+: Sb: Sb3+:
Sb5+: Te: I: I1-: Xe:
Cs: Cs1+: Ba: Ba2+: La:
La3+: Ce: Ce3+: Ce4+: Pr:
Pr3+: Pr4+: Nd: Nd3+: Pm:
Pm3+: Sm: Sm3+: Eu: Eu2+:
Eu3+: Gd: Gd3+: Tb: Tb3+:
Dy: Dy3+: Ho: Ho3+: Er:
Er3+: Tm: Tm3+: Yb: Yb2+:
Yb3+: Lu: Lu3+: Hf: Hf4+:
Ta: Ta5+: W: W6+: Re:
Os: Os4+: Ir: Ir3+: Ir4+:
Pt: Pt2+: Pt4+: Au: Au1+:
Au3+: Hg: Hg1+: Hg2+: Tl:
Tl1+: Tl3+: Pb: Pb2+: Pb4+:
Bi: Bi3+: Bi5+: Po: At:
Rn: Fr: Ra: Ra2+: Ac:
Ac3+: Th: Th4+: Pa: U:
U3+: U4+: U6+: Np: Np3+:
Np4+: Np6+: Pu: Pu3+: Pu4+:
Pu6+: Am: Cm: Bk: Cf:
If the {echo} keyword is specified, compute xrd will provide extra
reporting information to the screen.
[Output info:]
This compute calculates a global array. The number of rows in the
array is the number of reciprocal lattice nodes that are explored
which by the mesh. The global array has 2 columns.
The first column contains the diffraction angle in the units (radians
or degrees) provided with the {2Theta} values. The second column contains
the computed diffraction intensities as described above.
The array can be accessed by any command that uses global values
from a compute as input. See "this section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All array values calculated by this compute are "intensive".
[Restrictions:]
The compute_xrd command does not work for triclinic cells.
[Related commands:]
"fix ave/histo"_compute_ave_histo.html
"compute saed"_compute_saed.html
[Default:]
The option defaults are 2Theta = 1 179 (degrees), c = 1 1 1, LP = 1, no manual flag, no echo flag
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
:link(Colliex)
[(Colliex)] Colliex et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 249-429 (2004).
:link(Peng)
[(Peng)] Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76
(1996).

View File

@ -124,7 +124,7 @@ shrink-wraps the box around the atoms.
<P>The optional keywords can be used to create a system that allows for <P>The optional keywords can be used to create a system that allows for
bond (angle, dihedral, improper) interactions, or for molecules with bond (angle, dihedral, improper) interactions, or for molecules with
special 1-2,1-3,1-4 neighbors to be added later. These optional special 1-2,1-3,1-4 neighbors to be added later. These optional
keywords serve the same purpose as the analagous keywords that can be keywords serve the same purpose as the analogous keywords that can be
used in a data file which are recognized by the used in a data file which are recognized by the
<A HREF = "read_data.html">read_data</A> command when it sets up a system. <A HREF = "read_data.html">read_data</A> command when it sets up a system.
</P> </P>

View File

@ -116,7 +116,7 @@ shrink-wraps the box around the atoms.
The optional keywords can be used to create a system that allows for The optional keywords can be used to create a system that allows for
bond (angle, dihedral, improper) interactions, or for molecules with bond (angle, dihedral, improper) interactions, or for molecules with
special 1-2,1-3,1-4 neighbors to be added later. These optional special 1-2,1-3,1-4 neighbors to be added later. These optional
keywords serve the same purpose as the analagous keywords that can be keywords serve the same purpose as the analogous keywords that can be
used in a data file which are recognized by the used in a data file which are recognized by the
"read_data"_read_data.html command when it sets up a system. "read_data"_read_data.html command when it sets up a system.

View File

@ -42,7 +42,7 @@
</PRE> </PRE>
<LI>zero or more keyword/arg pairs may be appended <LI>zero or more keyword/arg pairs may be appended
<LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>beyond</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I> <LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>beyond</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I> or <I>weights</I>
<PRE> <I>mode</I> arg = <I>scalar</I> or <I>vector</I> <PRE> <I>mode</I> arg = <I>scalar</I> or <I>vector</I>
scalar = all input values are scalars scalar = all input values are scalars
@ -66,6 +66,12 @@
string = text to print as 2nd line of output file string = text to print as 2nd line of output file
<I>title3</I> arg = string <I>title3</I> arg = string
string = text to print as 3rd line of output file, only for vector mode string = text to print as 3rd line of output file, only for vector mode
<I>weights</I> arg = c_ID, c_ID[N], f_ID, f_ID[N], v_name
c_ID = scalar or vector calculated by a compute with ID
c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID
v_name = value(s) calculated by an equal-style or atom-style variable with name
</PRE> </PRE>
</UL> </UL>
@ -74,6 +80,7 @@
<PRE>fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running <PRE>fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[2] c_thermo_press[3] title1 "My output values" fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[2] c_thermo_press[3] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra
fix 1 all ave/histo 1 1 1 10 100 2000 c_XRD<B>1</B> mode vector weights c_XRD<B>2</B>
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>
</P> </P>
@ -287,6 +294,15 @@ describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in of output. The third describes the 4 values printed for each bin in
the histogram. the histogram.
</P> </P>
<P>If the <I>weights</I> keyword is specified, the fix will compute a weighted
histogram using per-bin weights specified by the <I>weights</I> argument. As
normal, the bin locations will be will be generated based off value1.
However, instead of each binned value contributing 1 to the bin
location, the contributing ammount is assigned the weights
argument. Only a single value1 and weights argument pair can be can be
used for each fix ave/histo. The length of value1 must match the
lenght of the weights arguemnt.
</P>
<HR> <HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B> <P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>

View File

@ -29,7 +29,7 @@ value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_nam
v_name = value(s) calculated by an equal-style or atom-style variable with name :pre v_name = value(s) calculated by an equal-style or atom-style variable with name :pre
zero or more keyword/arg pairs may be appended :l zero or more keyword/arg pairs may be appended :l
keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {title1} or {title2} or {title3} :l keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {title1} or {title2} or {title3} or {weights} :l
{mode} arg = {scalar} or {vector} {mode} arg = {scalar} or {vector}
scalar = all input values are scalars scalar = all input values are scalars
vector = all input values are vectors vector = all input values are vectors
@ -51,14 +51,21 @@ keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {ti
{title2} arg = string {title2} arg = string
string = text to print as 2nd line of output file string = text to print as 2nd line of output file
{title3} arg = string {title3} arg = string
string = text to print as 3rd line of output file, only for vector mode :pre string = text to print as 3rd line of output file, only for vector mode
{weights} arg = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name
c_ID = scalar or vector calculated by a compute with ID
c_ID\[I\] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID\[I\] = Ith component of vector or Ith column of array calculated by a fix with ID
v_name = value(s) calculated by an equal-style or atom-style variable with name :pre
:ule :ule
[Examples:] [Examples:]
fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[2\] c_thermo_press\[3\] title1 "My output values" fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[2\] c_thermo_press\[3\] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra :pre fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra
fix 1 all ave/histo 1 1 1 10 100 2000 c_XRD[1] mode vector weights c_XRD[2] :pre
[Description:] [Description:]
@ -272,6 +279,15 @@ describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in of output. The third describes the 4 values printed for each bin in
the histogram. the histogram.
If the {weights} keyword is specified, the fix will compute a weighted
histogram using per-bin weights specified by the {weights} argument. As
normal, the bin locations will be will be generated based off value1.
However, instead of each binned value contributing 1 to the bin
location, the contributing ammount is assigned the weights
argument. Only a single value1 and weights argument pair can be can be
used for each fix ave/histo. The length of value1 must match the
lenght of the weights arguemnt.
:line :line
[Restart, fix_modify, output, run start/stop, minimize info:] [Restart, fix_modify, output, run start/stop, minimize info:]

View File

@ -125,7 +125,7 @@ the simulation box across processors (one sub-box for each of 16
processors); the middle diagram is after a "grid" method has been processors); the middle diagram is after a "grid" method has been
applied. applied.
</P> </P>
<CENTER><A HREF = "balance_uniform.jpg"><IMG SRC = "JPG/balance_uniform_small.jpg"></A><A HREF = "balance_nonuniform.jpg"><IMG SRC = "JPG/balance_nonuniform_small.jpg"></A><A HREF = "balance_rcb.jpg"><IMG SRC = "JPG/balance_rcb_small.jpg"></A> <CENTER><A HREF = "JPG/balance_uniform.jpg"><IMG SRC = "JPG/balance_uniform_small.jpg"></A><A HREF = "JPG/balance_nonuniform.jpg"><IMG SRC = "JPG/balance_nonuniform_small.jpg"></A><A HREF = "JPG/pbalance_rcb.jpg"><IMG SRC = "JPG/balance_rcb_small.jpg"></A>
</CENTER> </CENTER>
<P>The <I>rcb</I> style is a "tiling" method which does not produce a logical <P>The <I>rcb</I> style is a "tiling" method which does not produce a logical
3d grid of processors. Rather it tiles the simulation domain with 3d grid of processors. Rather it tiles the simulation domain with

View File

@ -113,7 +113,7 @@ the simulation box across processors (one sub-box for each of 16
processors); the middle diagram is after a "grid" method has been processors); the middle diagram is after a "grid" method has been
applied. applied.
:c,image(JPG/balance_uniform_small.jpg,balance_uniform.jpg),image(JPG/balance_nonuniform_small.jpg,balance_nonuniform.jpg),image(JPG/balance_rcb_small.jpg,balance_rcb.jpg) :c,image(JPG/balance_uniform_small.jpg,JPG/balance_uniform.jpg),image(JPG/balance_nonuniform_small.jpg,JPG/balance_nonuniform.jpg),image(JPG/balance_rcb_small.jpg,JPG/pbalance_rcb.jpg)
The {rcb} style is a "tiling" method which does not produce a logical The {rcb} style is a "tiling" method which does not produce a logical
3d grid of processors. Rather it tiles the simulation domain with 3d grid of processors. Rather it tiles the simulation domain with

View File

@ -22,17 +22,20 @@
<LI>N = adjust the momentum every this many timesteps <LI>N = adjust the momentum every this many timesteps
one or more keyword/value pairs may be appended one or more keyword/value pairs may be appended
<LI>keyword = <I>linear</I> or <I>angular</I> <LI>keyword = <I>linear</I> or <I>angular</I> or <I>rescale</I>
<PRE> <I>linear</I> values = xflag yflag zflag <PRE> <I>linear</I> values = xflag yflag zflag
xflag,yflag,zflag = 0/1 to exclude/include each dimension xflag,yflag,zflag = 0/1 to exclude/include each dimension
<I>angular</I> values = none <I>angular</I> values = none
</PRE> </PRE>
<PRE> <I>rescale</I> values = none
</PRE>
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
</P> </P>
<PRE>fix 1 all momentum 1 linear 1 1 0 <PRE>fix 1 all momentum 1 linear 1 1 0
fix 1 all momentum 1 linear 1 1 1 rescale
fix 1 all momentum 100 linear 1 1 1 angular fix 1 all momentum 100 linear 1 1 1 angular
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>
@ -55,6 +58,9 @@ a subset of them) does not drift or rotate during the simulation due
to random perturbations (e.g. <A HREF = "fix_langevin.html">fix langevin</A> to random perturbations (e.g. <A HREF = "fix_langevin.html">fix langevin</A>
thermostatting). thermostatting).
</P> </P>
<P>The <I>rescale</I> keyword enables conserving the kinetic energy of the group
of atoms by rescaling the velocities after the momentum was removed.
</P>
<P>Note that the <A HREF = "velocity.html">velocity</A> command can be used to create <P>Note that the <A HREF = "velocity.html">velocity</A> command can be used to create
initial velocities with zero aggregate linear and/or angular momentum. initial velocities with zero aggregate linear and/or angular momentum.
</P> </P>

191
doc/fix_saed_vtk.html Normal file
View File

@ -0,0 +1,191 @@
<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>fix saed/vtk command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID saed/vtk Nevery Nrepeat Nfreak c_ID attribute args ... keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ave/time/saed = style name of this fix command
<LI>Nevery = use input values every this many timesteps
<LI>Nrepeat = # of times to use input values for calculating averages
<LI>Nfreq = calculate averages every this many timesteps
<LI>c_ID = saed compute ID
<PRE>keyword = <I>file</I> or <I>ave</I> or <I>start</I> or <I>file</I> or <I>overwrite</I>:l
<I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
one = output a new average value every Nfreq steps
running = output cumulative average of all previous Nfreq steps
window M = output average of M most recent Nfreq steps
<I>start</I> args = Nstart
Nstart = start averaging on this timestep
<I>file</I> arg = filename
filename = name of file to output time averages to
<I>overwrite</I> arg = none = overwrite output file with only latest output
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
</P>
<PRE>fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed
</PRE>
<P><B>Description:</B>
</P>
<P>Time average computed intensities from <A HREF = "compute_saed.txt">compute_saed</A> and
write output to a file in the 3rd generation vtk image data format for
visualization directly in parallelized visualization software packages
like ParaView and VisIt. Note that if no time averaging is done, this
command can be used as a convenient way to simply output diffraction
intensities at a single snapshot.
</P>
<P>To produce output in the image data vtk format ghost data is added
outside the <I>Kmax</I> range assigned in the compute saed. The ghost data is
assigned a value of -1 and can be removed setting a minimum isovolume
of 0 within the vizualiziton software. SAED images can be created by
visualizing a spherical slice of the data that is centered at
R_Ewald*<B>h k l</B>/norm(<B>h k l</B>), where R_Ewald=1/lambda.
</P>
<P>The group specified within this command is ignored. However, note that
specified values may represent calculations performed by saed computes
which store their own "group" definitions.
</P>
<P>Fix saed/vtk is designed to work only with <A HREF = "compute_saed.txt">compute_saed</A>
values.
</P>
<P>compute 3 top saed 0.0251 Al O
fix saed/vtk 1 1 1 c_3 file Al2O3_001.saed
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of <I>Nfreq</I>. The average is over <I>Nrepeat</I>
quantities, computed in the preceding portion of the simulation every
<I>Nevery</I> timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and
<I>Nevery</I> must be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
</P>
<HR>
<P>The output for fix ave/time/saed is a file writen with the 3rd generation
vtk image data formatting. The filename assigned by the <I>file</I> keyword is
appended with _N.vtk where N is an index (0,1,2...) to account for multiple
diffraction intensity outputs.
</P>
<P>By default the header contains the following information (with example data):
</P>
<P># vtk DataFile Version 3.0 c_SAED
Image data set
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 337 219 209
ASPECT_RATIO 0.00507953 0.00785161 0.00821458
ORIGIN -0.853361 -0.855826 -0.854316 \n POINT_DATA 15424827
SCALARS intensity float
LOOKUP_TABLE default
...data
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>The <I>ave</I> keyword determines how the values produced every <I>Nfreq</I>
steps are averaged with values produced on previous steps that were
multiples of <I>Nfreq</I>, before they are accessed by another output
command or written to a file.
</P>
<P>If the <I>ave</I> setting is <I>one</I>, then the values produced on timesteps
that are multiples of <I>Nfreq</I> are independent of each other; they are
output as-is without further averaging.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged in a
cumulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the <A HREF = "unfix.html">unfix</A>
command, or by re-defining the fix by re-specifying it.
</P>
<P>If the <I>ave</I> setting is <I>window</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
</P>
<P>The <I>start</I> keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting <I>start</I> to a larger value can avoid including a 0.0 in a
running or windowed average.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
steps, the vector of saed intensity data is written to a new file using
the 3rd generation vtk format. The base of each file is assigned by
the <I>file</I> keyword and this string is appended with _N.vtk where N is
an index (0,1,2...) to account for situations with multiple diffraction
intensity outputs.
</P>
<P>The <I>overwrite</I> keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the <I>ave running</I> setting.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>The attributes for fix_saed_vtk must match the values assigned in the
associated <A HREF = "compute_saed.txt">compute_saed</A> command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_saed.html">compute_saed</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are ave = one, start = 0, no file output.
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
</HTML>

181
doc/fix_saed_vtk.txt Normal file
View File

@ -0,0 +1,181 @@
"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
fix saed/vtk command :h3
[Syntax:]
fix ID group-ID saed/vtk Nevery Nrepeat Nfreak c_ID attribute args ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/time/saed = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating averages :l
Nfreq = calculate averages every this many timesteps :l
c_ID = saed compute ID :l
keyword = {file} or {ave} or {start} or {file} or {overwrite}:l
{ave} args = {one} or {running} or {window M}
one = output a new average value every Nfreq steps
running = output cumulative average of all previous Nfreq steps
window M = output average of M most recent Nfreq steps
{start} args = Nstart
Nstart = start averaging on this timestep
{file} arg = filename
filename = name of file to output time averages to
{overwrite} arg = none = overwrite output file with only latest output :pre
:ule
[Examples:]
compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed :pre
[Description:]
Time average computed intensities from "compute_saed"_compute_saed.txt and
write output to a file in the 3rd generation vtk image data format for
visualization directly in parallelized visualization software packages
like ParaView and VisIt. Note that if no time averaging is done, this
command can be used as a convenient way to simply output diffraction
intensities at a single snapshot.
To produce output in the image data vtk format ghost data is added
outside the {Kmax} range assigned in the compute saed. The ghost data is
assigned a value of -1 and can be removed setting a minimum isovolume
of 0 within the vizualiziton software. SAED images can be created by
visualizing a spherical slice of the data that is centered at
R_Ewald*[h k l]/norm([h k l]), where R_Ewald=1/lambda.
The group specified within this command is ignored. However, note that
specified values may represent calculations performed by saed computes
which store their own "group" definitions.
Fix saed/vtk is designed to work only with "compute_saed"_compute_saed.txt
values.
compute 3 top saed 0.0251 Al O
fix saed/vtk 1 1 1 c_3 file Al2O3_001.saed
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of {Nfreq}. The average is over {Nrepeat}
quantities, computed in the preceding portion of the simulation every
{Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and
{Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
:line
The output for fix ave/time/saed is a file writen with the 3rd generation
vtk image data formatting. The filename assigned by the {file} keyword is
appended with _N.vtk where N is an index (0,1,2...) to account for multiple
diffraction intensity outputs.
By default the header contains the following information (with example data):
# vtk DataFile Version 3.0 c_SAED
Image data set
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 337 219 209
ASPECT_RATIO 0.00507953 0.00785161 0.00821458
ORIGIN -0.853361 -0.855826 -0.854316 \n POINT_DATA 15424827
SCALARS intensity float
LOOKUP_TABLE default
...data
:line
Additional optional keywords also affect the operation of this fix.
The {ave} keyword determines how the values produced every {Nfreq}
steps are averaged with values produced on previous steps that were
multiples of {Nfreq}, before they are accessed by another output
command or written to a file.
If the {ave} setting is {one}, then the values produced on timesteps
that are multiples of {Nfreq} are independent of each other; they are
output as-is without further averaging.
If the {ave} setting is {running}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged in a
cumulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the "unfix"_unfix.html
command, or by re-defining the fix by re-specifying it.
If the {ave} setting is {window}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
The {start} keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting {start} to a larger value can avoid including a 0.0 in a
running or windowed average.
The {file} keyword allows a filename to be specified. Every {Nfreq}
steps, the vector of saed intensity data is written to a new file using
the 3rd generation vtk format. The base of each file is assigned by
the {file} keyword and this string is appended with _N.vtk where N is
an index (0,1,2...) to account for situations with multiple diffraction
intensity outputs.
The {overwrite} keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the {ave running} setting.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
The attributes for fix_saed_vtk must match the values assigned in the
associated "compute_saed"_compute_saed.txt command.
[Related commands:]
"compute_saed"_compute_saed.html
[Default:]
The option defaults are ave = one, start = 0, no file output.
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).

73
doc/info.html Normal file
View File

@ -0,0 +1,73 @@
<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>info command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>info args
</PRE>
<UL><LI>args = one or more of the following keywords: <I>system</I>, <I>computes</I>, <I>dumps</I>, <I>fixes</I>, <I>groups</I>, <I>regions</I>, <I>variables</I>, <I>time</I>, or <I>configuration</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>info system
info groups computes variables
</PRE>
<P><B>Description:</B>
</P>
<P>Print out information about the current internal state of the running
LAMMPS process. This can be helpful when debugging or validating
complex input scripts. Several output categories are available and
one or more output category may be requested. Output is only sent to
the screen, provided screen output is enabled.
</P>
<P>The <I>system</I> category prints a general system overview listing. This
includes the unit style, atom style, number of atoms, bonds, angles,
dihedrals, and impropers and the number of the respective types, box
dimensions and properties, force computing styles and more.
</P>
<P>The <I>computes</I> category prints a list of all currently defined
computes, their IDs and styles and groups they operate on.
</P>
<P>The <I>dumps</I> category prints a list of all currently active dumps,
their IDs, styles, filenames, groups, and dump frequencies.
</P>
<P>The <I>fixes</I> category prints a list of all currently defined fixes,
their IDs and styles and groups they operate on.
</P>
<P>The <I>groups</I> category prints a list of all currently defined groups.
</P>
<P>The <I>regions</I> category prints a list of all currently defined regions,
their IDs and styles and whether "inside" or "outside" atoms are
selected.
</P>
<P>The <I>variables</I> category prints a list of all currently defined
variables, their names, styles, definition and last computed value, if
available.
</P>
<P>The <I>time</I> category prints the accumulated CPU and wall time for the
process that writes output (usually MPI rank 0).
</P>
<P>The <I>configuration</I> command prints some information about the LAMMPS
version and architection and OS it is run on. Where supported, also
information about the memory consumption provided by the OS is
reported.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "print.html">print</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>

View File

@ -12,8 +12,7 @@ info command :h3
info args :pre info args :pre
args = one or more of the following keywords: {system}, {computes}, {dumps}, args = one or more of the following keywords: {system}, {computes}, {dumps}, {fixes}, {groups}, {regions}, {variables}, {time}, or {configuration} :ul
{fixes}, {groups}, {regions}, {variables}, {time}, or {configuration} :ul
[Examples:] [Examples:]
@ -23,21 +22,21 @@ info groups computes variables :pre
[Description:] [Description:]
Print out information about the current internal state of the running Print out information about the current internal state of the running
LAMMPS process. This can be particularly helpful when debugging or LAMMPS process. This can be helpful when debugging or validating
validating complex input scripts. Several output categories are available complex input scripts. Several output categories are available and
and one or more output category may be requested. Output is only sent to one or more output category may be requested. Output is only sent to
the screen, provided screen output is enabled. the screen, provided screen output is enabled.
The {system} category prints a general system overview listing - among The {system} category prints a general system overview listing. This
others - unit style, atom style, number of atoms, bonds, angles, dihedrals, includes the unit style, atom style, number of atoms, bonds, angles,
and impropers and the number of the respective types, box dimensions and dihedrals, and impropers and the number of the respective types, box
properties, force computing styles and more. dimensions and properties, force computing styles and more.
The {computes} category prints a list of all currently defined computes, The {computes} category prints a list of all currently defined
their IDs and styles and groups they operate on. computes, their IDs and styles and groups they operate on.
The {dumps} category prints a list of all currently active dumps, their The {dumps} category prints a list of all currently active dumps,
IDs, styles, filenames, groups, and dump frequencies. their IDs, styles, filenames, groups, and dump frequencies.
The {fixes} category prints a list of all currently defined fixes, The {fixes} category prints a list of all currently defined fixes,
their IDs and styles and groups they operate on. their IDs and styles and groups they operate on.
@ -45,17 +44,20 @@ their IDs and styles and groups they operate on.
The {groups} category prints a list of all currently defined groups. The {groups} category prints a list of all currently defined groups.
The {regions} category prints a list of all currently defined regions, The {regions} category prints a list of all currently defined regions,
their IDs and styles and whether "inside" or "outside" atoms are selected. their IDs and styles and whether "inside" or "outside" atoms are
selected.
The {variables} category prints a list of all currently defined variables, The {variables} category prints a list of all currently defined
their names, styles, definition and last computed value, if available. variables, their names, styles, definition and last computed value, if
available.
The {time} category prints the accumulated CPU and wall time for the The {time} category prints the accumulated CPU and wall time for the
process that writes output (usually MPI rank 0). process that writes output (usually MPI rank 0).
The {configuration} command prints some information about the LAMMPS The {configuration} command prints some information about the LAMMPS
version and architection and OS it is run on. Where supported, also version and architection and OS it is run on. Where supported, also
information about the memory consumption provided by the OS is reported. information about the memory consumption provided by the OS is
reported.
[Restrictions:] none [Restrictions:] none

View File

@ -13,16 +13,33 @@
</H3> </H3>
<P><B>Syntax:</B> <P><B>Syntax:</B>
</P> </P>
<PRE>molecule ID file1 file2 ... <PRE>molecule ID file1 file2 ... keyword values ...
</PRE> </PRE>
<UL><LI>ID = user-assigned name for the molecule template <UL><LI>ID = user-assigned name for the molecule template
<LI>file1,file2,... = names of files containing molecule descriptions <LI>file1,file2,... = names of files containing molecule descriptions
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>offset</I> or <I>auto</I>
<PRE> <I>offset</I> values = toff boff aoff doff ioff
toff = offset to add to atom types
boff = offset to add to bond types
aoff = offset to add to angle types
doff = offset to add to dihedral types
ioff = offset to add to improper types
<I>auto</I> value = none
generate special bond lists automatically if <I>auto</I> is specified
</PRE>
</UL> </UL>
<P><B>Examples:</B> <P><B>Examples:</B>
</P> </P>
<PRE>molecule 1 mymol <PRE>molecule 1 mymol
molecule 1 co2.txt h2o.txt molecule 1 co2.txt h2o.txt
molecule CO2 co2.txt molecule CO2 co2.txt
molecule 1 mymol offset 6 9 18 23 14 auto
</PRE> </PRE>
<P><B>Description:</B> <P><B>Description:</B>
</P> </P>
@ -49,6 +66,20 @@ contains multiple molecules. The <A HREF = "atom_style.html">atom_style
template</A> command allows multiple-molecule templates template</A> command allows multiple-molecule templates
to define a system with more than one templated molecule. to define a system with more than one templated molecule.
</P> </P>
<P>The optional <I>offset</I> keyword adds the specified offset values to the
atom types, bond types, angle types, dihedral types, and improper
types as they are read from the molecule file. E.g. if <I>toff</I> = 2,
and the file uses atom types 1,2,3, then each created molecule will
have atom types 3,4,5. This makes it easy to use the same molecule
template file in different simulations. Note that the same offsets
are applied to the molecules in all specified files. All five offset
values must be speicified, but individual values will be ignored if
the molecule template does not use that attribute (e.g. no bonds).
</P>
<P>The optional <I>auto</I> keyword can be used for molecules with bonds
instead of listing neighbors within the molecular topology explicitly.
More details are given below.
</P>
<P>IMPORTANT NOTE: When using the <A HREF = "atom_style.html">atom_style template</A> <P>IMPORTANT NOTE: When using the <A HREF = "atom_style.html">atom_style template</A>
command with a molecule template that contains multiple molecules, you command with a molecule template that contains multiple molecules, you
should insure the atom types, bond types, angle_types, etc in all the should insure the atom types, bond types, angle_types, etc in all the
@ -59,7 +90,23 @@ with each other when a mixture system of H2O and CO2 molecules is
defined, e.g. by the <A HREF = "read_data.html">read_data</A> command. Rather the defined, e.g. by the <A HREF = "read_data.html">read_data</A> command. Rather the
H2O molecule should define atom types 1 and 2, and bond type 1. And H2O molecule should define atom types 1 and 2, and bond type 1. And
the CO2 molecule should define atom types 3 and 4 (or atom types 3 and the CO2 molecule should define atom types 3 and 4 (or atom types 3 and
2 if a single oxygen type is desired), and bond type 2. 2 if a single oxygen type is desired), and bond type 2. You can also
use the <I>offset</I> keyword to shift all of these type values to new
values for a particular simulation.
</P>
<P>IMPORTANT NOTE: This command can be used to define molecules with
bonds, angles, dihedrals, imporopers, or special bond lists of
neighbors within a molecular topology, so that you can later add the
molecules to your simulation, via one or more of the commands listed
above. If such molecules do not already exist when LAMMPS creates the
simulation box, via the <A HREF = "create_box.html">create_box</A> or
<A HREF = "read_data.html">read_data</A> command, when you later add them you may
overflow the pre-allocated data structures which store molecular
topology information with each atom, and an error will be generated.
Both the <A HREF = "create_box.html">create_box</A> command and the data files read
by the <A HREF = "read_data.html">read_data</A> command have "extra" options which
insure space is allocated for storing topology info for molecules that
are added later.
</P> </P>
<P>The format of an individual molecule file is similar to the data file <P>The format of an individual molecule file is similar to the data file
read by the <A HREF = "read_data.html">read_data</A> commands, and is as follows. read by the <A HREF = "read_data.html">read_data</A> commands, and is as follows.
@ -119,10 +166,12 @@ internally.
<LI><I>Shake Flags, Shake Atoms, Shake Bond Types</I> = SHAKE info <LI><I>Shake Flags, Shake Atoms, Shake Bond Types</I> = SHAKE info
</UL> </UL>
<P>If a Bonds section is specified then the Special Bond Counts and <P>If a Bonds section is specified then the Special Bond Counts and
Special Bonds sections must be also, since the latter is needed for Special Bonds sections must be also unless the optional <I>auto</I> keyword
LAMMPS to properly exclude or weight bonded pairwise interactions is defined. This info is needed for LAMMPS to properly exclude or
between bonded atoms. See the <A HREF = "special_bonds.html">special_bonds</A> weight bonded pairwise interactions between bonded atoms. See the
command for more details. <A HREF = "special_bonds.html">special_bonds</A> command for more details. If the
<I>auto</I> keyword is used, then LAMMPS will generate this information
automatically for the molecule.
</P> </P>
<P>IMPORTANT NOTE: Whether a section is required depends on how the <P>IMPORTANT NOTE: Whether a section is required depends on how the
molecule template is used by other LAMMPS commands. For example, to molecule template is used by other LAMMPS commands. For example, to
@ -402,6 +451,10 @@ of SHAKE clusters.
<P><A HREF = "fix_deposit.html">fix deposit</A>, <A HREF = "fix_pour.html">fix pour</A>, <P><A HREF = "fix_deposit.html">fix deposit</A>, <A HREF = "fix_pour.html">fix pour</A>,
<A HREF = "fix_gcmc.html">fix_gcmc</A> <A HREF = "fix_gcmc.html">fix_gcmc</A>
</P> </P>
<P><B>Default:</B> none <P><B>Default:</B>
</P>
<P>The default keyword values are offset 0 0 0 0 0, and no
auto-generation of special bond lists. The latter is overridden in
the <I>auto</I> keyword is used.
</P> </P>
</HTML> </HTML>

View File

@ -10,16 +10,28 @@ molecule command :h3
[Syntax:] [Syntax:]
molecule ID file1 file2 ... :pre molecule ID file1 file2 ... keyword values ... :pre
ID = user-assigned name for the molecule template ID = user-assigned name for the molecule template :ulb,l
file1,file2,... = names of files containing molecule descriptions :ul file1,file2,... = names of files containing molecule descriptions :l
zero or more keyword/value pairs may be appended :l
keyword = {offset} or {auto} :l
{offset} values = toff boff aoff doff ioff
toff = offset to add to atom types
boff = offset to add to bond types
aoff = offset to add to angle types
doff = offset to add to dihedral types
ioff = offset to add to improper types
{auto} value = none
generate special bond lists automatically if {auto} is specified :pre
:ule
[Examples:] [Examples:]
molecule 1 mymol molecule 1 mymol
molecule 1 co2.txt h2o.txt molecule 1 co2.txt h2o.txt
molecule CO2 co2.txt :pre molecule CO2 co2.txt
molecule 1 mymol offset 6 9 18 23 14 auto :pre
[Description:] [Description:]
@ -46,6 +58,20 @@ contains multiple molecules. The "atom_style
template"_atom_style.html command allows multiple-molecule templates template"_atom_style.html command allows multiple-molecule templates
to define a system with more than one templated molecule. to define a system with more than one templated molecule.
The optional {offset} keyword adds the specified offset values to the
atom types, bond types, angle types, dihedral types, and improper
types as they are read from the molecule file. E.g. if {toff} = 2,
and the file uses atom types 1,2,3, then each created molecule will
have atom types 3,4,5. This makes it easy to use the same molecule
template file in different simulations. Note that the same offsets
are applied to the molecules in all specified files. All five offset
values must be speicified, but individual values will be ignored if
the molecule template does not use that attribute (e.g. no bonds).
The optional {auto} keyword can be used for molecules with bonds
instead of listing neighbors within the molecular topology explicitly.
More details are given below.
IMPORTANT NOTE: When using the "atom_style template"_atom_style.html IMPORTANT NOTE: When using the "atom_style template"_atom_style.html
command with a molecule template that contains multiple molecules, you command with a molecule template that contains multiple molecules, you
should insure the atom types, bond types, angle_types, etc in all the should insure the atom types, bond types, angle_types, etc in all the
@ -56,7 +82,23 @@ with each other when a mixture system of H2O and CO2 molecules is
defined, e.g. by the "read_data"_read_data.html command. Rather the defined, e.g. by the "read_data"_read_data.html command. Rather the
H2O molecule should define atom types 1 and 2, and bond type 1. And H2O molecule should define atom types 1 and 2, and bond type 1. And
the CO2 molecule should define atom types 3 and 4 (or atom types 3 and the CO2 molecule should define atom types 3 and 4 (or atom types 3 and
2 if a single oxygen type is desired), and bond type 2. 2 if a single oxygen type is desired), and bond type 2. You can also
use the {offset} keyword to shift all of these type values to new
values for a particular simulation.
IMPORTANT NOTE: This command can be used to define molecules with
bonds, angles, dihedrals, imporopers, or special bond lists of
neighbors within a molecular topology, so that you can later add the
molecules to your simulation, via one or more of the commands listed
above. If such molecules do not already exist when LAMMPS creates the
simulation box, via the "create_box"_create_box.html or
"read_data"_read_data.html command, when you later add them you may
overflow the pre-allocated data structures which store molecular
topology information with each atom, and an error will be generated.
Both the "create_box"_create_box.html command and the data files read
by the "read_data"_read_data.html command have "extra" options which
insure space is allocated for storing topology info for molecules that
are added later.
The format of an individual molecule file is similar to the data file The format of an individual molecule file is similar to the data file
read by the "read_data"_read_data.html commands, and is as follows. read by the "read_data"_read_data.html commands, and is as follows.
@ -116,10 +158,12 @@ These are the allowed section keywords for the body of the file.
{Shake Flags, Shake Atoms, Shake Bond Types} = SHAKE info :ul {Shake Flags, Shake Atoms, Shake Bond Types} = SHAKE info :ul
If a Bonds section is specified then the Special Bond Counts and If a Bonds section is specified then the Special Bond Counts and
Special Bonds sections must be also, since the latter is needed for Special Bonds sections must be also unless the optional {auto} keyword
LAMMPS to properly exclude or weight bonded pairwise interactions is defined. This info is needed for LAMMPS to properly exclude or
between bonded atoms. See the "special_bonds"_special_bonds.html weight bonded pairwise interactions between bonded atoms. See the
command for more details. "special_bonds"_special_bonds.html command for more details. If the
{auto} keyword is used, then LAMMPS will generate this information
automatically for the molecule.
IMPORTANT NOTE: Whether a section is required depends on how the IMPORTANT NOTE: Whether a section is required depends on how the
molecule template is used by other LAMMPS commands. For example, to molecule template is used by other LAMMPS commands. For example, to
@ -399,4 +443,8 @@ of SHAKE clusters.
"fix deposit"_fix_deposit.html, "fix pour"_fix_pour.html, "fix deposit"_fix_deposit.html, "fix pour"_fix_pour.html,
"fix_gcmc"_fix_gcmc.html "fix_gcmc"_fix_gcmc.html
[Default:] none [Default:]
The default keyword values are offset 0 0 0 0 0, and no
auto-generation of special bond lists. The latter is overridden in
the {auto} keyword is used.

View File

@ -36,7 +36,7 @@ pair_coeff 1 1 dpd 60.0 4.5 1.0
pair_coeff 1 2 none pair_coeff 1 2 none
pair_coeff 2 2 srp 100.0 0.8 pair_coeff 2 2 srp 100.0 0.8
</PRE> </PRE>
<PRE>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 1 min exclude yes <PRE>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 * min exclude yes
pair_coeff 1 1 dpd 60.0 50 1.0 pair_coeff 1 1 dpd 60.0 50 1.0
pair_coeff 1 2 none pair_coeff 1 2 none
pair_coeff 2 2 srp 40.0 pair_coeff 2 2 srp 40.0
@ -62,7 +62,9 @@ bond-pairwise potential, such that the force on bond <I>i</I> due to bond
<CENTER><IMG SRC = "Eqs/pair_srp1.jpg"> <CENTER><IMG SRC = "Eqs/pair_srp1.jpg">
</CENTER> </CENTER>
<P>where <I>r</I> and <I>rij</I> are the distance and unit vector between the two <P>where <I>r</I> and <I>rij</I> are the distance and unit vector between the two
bonds. The <I>mid</I> option computes <I>r</I> and <I>rij</I> from the midpoint bonds. The bondtype can also be specified as an asterisk (*) and then
this interaction applied to all bonds.
The <I>mid</I> option computes <I>r</I> and <I>rij</I> from the midpoint
distance between bonds. The <I>min</I> option computes <I>r</I> and <I>rij</I> from distance between bonds. The <I>min</I> option computes <I>r</I> and <I>rij</I> from
the minimum distance between bonds. The force acting on a bond is the minimum distance between bonds. The force acting on a bond is
mapped onto the two bond atoms according to the lever rule, mapped onto the two bond atoms according to the lever rule,

View File

@ -195,7 +195,7 @@ topology of the system). If new bonds are created (or molecules added
containing atoms with more special neighbors), the size of this list containing atoms with more special neighbors), the size of this list
needs to grow. Note that adding a single bond always adds a new 1st needs to grow. Note that adding a single bond always adds a new 1st
neighbor but may also induce *many* new 2nd and 3rd neighbors, neighbor but may also induce *many* new 2nd and 3rd neighbors,
depending on the molecular topology of your syste. Using the <I>extra</I> depending on the molecular topology of your system. Using the <I>extra</I>
keyword leaves empty space in the list for this N additional 1st, 2nd, keyword leaves empty space in the list for this N additional 1st, 2nd,
or 3rd neighbors to be added. If you do not do this, you may get an or 3rd neighbors to be added. If you do not do this, you may get an
error when bonds (or molecules) are added. error when bonds (or molecules) are added.

View File

@ -123,13 +123,13 @@ per-atom values from a file rather than from a formula. Variables can
be hooked to Python functions using code you provide, so that the be hooked to Python functions using code you provide, so that the
variable gets its value from the evaluation of the Python code. variable gets its value from the evaluation of the Python code.
</P> </P>
<P>IMPORTANT NOTE: As discussed in <A HREF = "Section_commands.html#cmd_2">Section <P>IMPORTANT NOTE: As discussed in <A HREF = "Section_commands.html#cmd_2">Section 3.2</A>
3.2</A> of the manual, an input script can of the manual, an input script can use "immediate" variables, specified
use "immediate" variables, specified as $(formula) with parenthesis, as $(formula) with parenthesis, where the formula has the same syntax
where the formula has the same syntax as equal-style variables as equal-style variables described on this page. This is a convenient
described on this page. This is a way to evaluate a formula way to evaluate a formula immediately without using the variable command
immediately without using the variable command to define a named to define a named variable and then evaluate that variable. See below
variable. for a more detailed discussion of this feature.
</P> </P>
<P>In the discussion that follows, the "name" of the variable is the <P>In the discussion that follows, the "name" of the variable is the
arbitrary string that is the 1st argument in the variable command. arbitrary string that is the 1st argument in the variable command.
@ -144,10 +144,12 @@ simulation.
</P> </P>
<P>IMPORTANT NOTE: When the input script line is encountered that defines <P>IMPORTANT NOTE: When the input script line is encountered that defines
a variable of style <I>equal</I> or <I>atom</I> or <I>python</I> that contains a a variable of style <I>equal</I> or <I>atom</I> or <I>python</I> that contains a
formula or Python code, the formula is NOT immediately evaluated and formula or Python code, the formula is NOT immediately evaluated.
the result stored. See the discussion below about "Immediate It will be evaluated every time when the variable is <B>used</B> instead.
Evaluation of Variables" if you want to do this. This is also true of If you simply want to evaluate a formula in place you can use as
the <I>format</I> style variable since it evaluates another variable when so-called. See the section below about "Immediate Evaluation
of Variables" for more details on the topic. This is also true of
a <I>format</I> style variable since it evaluates another variable when
it is invoked. it is invoked.
</P> </P>
<P>IMPORTANT NOTE: Variables of style <I>equal</I> and <I>atom</I> can be used as <P>IMPORTANT NOTE: Variables of style <I>equal</I> and <I>atom</I> can be used as
@ -161,14 +163,6 @@ can also use such a python-style variable. This means that when the
LAMMPS command evaluates the variable, the Python function will be LAMMPS command evaluates the variable, the Python function will be
executed. executed.
</P> </P>
<P>When the input script line is encountered that defines
a variable of style <I>equal</I> or <I>atom</I> or <I>python</I> that contains a
formula or Python code, the formula is NOT immediately evaluated and
the result stored. See the discussion below about "Immediate
Evaluation of Variables" if you want to do this. This is also true of
the <I>format</I> style variable since it evaluates another variable when
it is invoked.
</P>
<P>IMPORTANT NOTE: When a variable command is encountered in the input <P>IMPORTANT NOTE: When a variable command is encountered in the input
script and the variable name has already been specified, the command script and the variable name has already been specified, the command
is ignored. This means variables can NOT be re-defined in an input is ignored. This means variables can NOT be re-defined in an input

View File

@ -19,9 +19,10 @@
<LI>zero or more keyword/value pairs may be appended <LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>pair</I> <LI>keyword = <I>pair</I> or <I>nocoeff</I>
<PRE> <I>pair</I> value = <I>ii</I> or <I>ij</I> <PRE> <I>nocoeff</I> = do not write out force field info
<I>pair</I> value = <I>ii</I> or <I>ij</I>
<I>ii</I> = write one line of pair coefficient info per atom type <I>ii</I> = write one line of pair coefficient info per atom type
<I>ij</I> = write one line of pair coefficient info per IJ atom type pair <I>ij</I> = write one line of pair coefficient info per IJ atom type pair
</PRE> </PRE>
@ -84,6 +85,11 @@ data file is read.
</P> </P>
<HR> <HR>
<P>The <I>nocoeff</I> keyword requests that no force field parameters should
be written to the data file. This can be very helpful, if one wants
to make significant changes to the force field or if the parameters
are read in separately anyway, e.g. from an include file.
</P>
<P>The <I>pair</I> keyword lets you specify in what format the pair <P>The <I>pair</I> keyword lets you specify in what format the pair
coefficient information is written into the data file. If the value coefficient information is written into the data file. If the value
is specified as <I>ii</I>, then one line per atom type is written, to is specified as <I>ii</I>, then one line per atom type is written, to

View File

@ -2510,7 +2510,6 @@ void FixRigidSmall::write_restart_file(char *file)
buf[i][8] = ispace[0][1]; buf[i][8] = ispace[0][1];
buf[i][9] = ispace[0][2]; buf[i][9] = ispace[0][2];
buf[i][10] = ispace[1][2]; buf[i][10] = ispace[1][2];
buf[i][10] = ispace[1][2];
buf[i][11] = body[i].vcm[0]; buf[i][11] = body[i].vcm[0];
buf[i][12] = body[i].vcm[1]; buf[i][12] = body[i].vcm[1];
buf[i][13] = body[i].vcm[2]; buf[i][13] = body[i].vcm[2];
@ -2546,7 +2545,8 @@ void FixRigidSmall::write_restart_file(char *file)
"%-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", "%-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n",
static_cast<int> (buf[i][0]),buf[i][1], static_cast<int> (buf[i][0]),buf[i][1],
buf[i][2],buf[i][3],buf[i][4], buf[i][2],buf[i][3],buf[i][4],
buf[i][5],buf[i][6],buf[i][7],buf[i][8],buf[i][9],buf[i][10], buf[i][5],buf[i][6],buf[i][7],
buf[i][8],buf[i][9],buf[i][10],
buf[i][11],buf[i][12],buf[i][13], buf[i][11],buf[i][12],buf[i][13],
buf[i][14],buf[i][15],buf[i][16], buf[i][14],buf[i][15],buf[i][16],
static_cast<int> (buf[i][17]), static_cast<int> (buf[i][17]),

View File

@ -1414,20 +1414,27 @@ int Atom::shape_consistency(int itype,
void Atom::add_molecule(int narg, char **arg) void Atom::add_molecule(int narg, char **arg)
{ {
if (narg < 2) error->all(FLERR,"Illegal molecule command"); if (narg < 1) error->all(FLERR,"Illegal molecule command");
if (find_molecule(arg[0]) >= 0) if (find_molecule(arg[0]) >= 0)
error->all(FLERR,"Reuse of molecule template ID"); error->all(FLERR,"Reuse of molecule template ID");
int nprevious = nmolecule; // may over-allocate if not all args are mol files, but OK for srealloc
nmolecule += narg-1;
molecules = (Molecule **)
memory->srealloc(molecules,nmolecule*sizeof(Molecule *),"atom::molecules");
for (int i = 1; i < narg; i++) { molecules = (Molecule **)
molecules[nprevious] = new Molecule(lmp,arg[0],arg[i]); memory->srealloc(molecules,(nmolecule+narg-1)*sizeof(Molecule *),
if (i == 1) molecules[nprevious]->nset = narg-1; "atom::molecules");
else molecules[nprevious]->nset = 0;
nprevious++; // 1st molecule in set stores nset = # of mols, others store nset = 0
int ifile = 1;
while (1) {
molecules[nmolecule] = new Molecule(lmp,narg,arg,ifile);
molecules[nmolecule]->nset = 0;
molecules[nmolecule-ifile+1]->nset++;
nmolecule++;
if (molecules[nmolecule-1]->last) break;
ifile++;
} }
} }

View File

@ -83,7 +83,8 @@ void Info::command(int narg, char **arg)
fprintf(screen,"Compute information:\n"); fprintf(screen,"Compute information:\n");
for (int i=0; i < ncompute; ++i) { for (int i=0; i < ncompute; ++i) {
fprintf(screen,"Compute[%3d]: %s, style: %s, group: %s\n", fprintf(screen,"Compute[%3d]: %s, style: %s, group: %s\n",
i, compute[i]->id, compute[i]->style, names[compute[i]->igroup]); i, compute[i]->id, compute[i]->style,
names[compute[i]->igroup]);
} }
} else if (strncmp(arg[idx],"dumps",3) == 0) { } else if (strncmp(arg[idx],"dumps",3) == 0) {
@ -130,7 +131,8 @@ void Info::command(int narg, char **arg)
fprintf(screen,"Region information:\n"); fprintf(screen,"Region information:\n");
for (int i=0; i < nreg; ++i) { for (int i=0; i < nreg; ++i) {
fprintf(screen,"Region[%3d]: %s, style: %s, side: %s\n", fprintf(screen,"Region[%3d]: %s, style: %s, side: %s\n",
i, regs[i]->id, regs[i]->style, regs[i]->interior ? "in" : "out"); i, regs[i]->id, regs[i]->style,
regs[i]->interior ? "in" : "out");
} }
} else if (strncmp(arg[idx],"configuration",3) == 0) { } else if (strncmp(arg[idx],"configuration",3) == 0) {
@ -184,7 +186,8 @@ void Info::command(int narg, char **arg)
#if defined(_WIN32) #if defined(_WIN32)
HANDLE phandle = GetCurrentProcess(); HANDLE phandle = GetCurrentProcess();
PROCESS_MEMORY_COUNTERS_EX pmc; PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(phandle, (PROCESS_MEMORY_COUNTERS *) &pmc, sizeof(pmc)); GetProcessMemoryInfo(phandle, (PROCESS_MEMORY_COUNTERS *) &pmc,
sizeof(pmc));
fprintf(screen,"Non-shared memory use: %.3g Mbyte\n", fprintf(screen,"Non-shared memory use: %.3g Mbyte\n",
(double)pmc.PrivateUsage/1048576.0); (double)pmc.PrivateUsage/1048576.0);
@ -309,10 +312,14 @@ void Info::command(int narg, char **arg)
fprintf(screen,"Boundaries = %c,%c %c,%c %c,%c\n", fprintf(screen,"Boundaries = %c,%c %c,%c %c,%c\n",
bstyles[domain->boundary[0][0]],bstyles[domain->boundary[0][1]], bstyles[domain->boundary[0][0]],bstyles[domain->boundary[0][1]],
bstyles[domain->boundary[1][0]],bstyles[domain->boundary[1][1]], bstyles[domain->boundary[1][0]],bstyles[domain->boundary[1][1]],
bstyles[domain->boundary[2][0]],bstyles[domain->boundary[2][1]]); bstyles[domain->boundary[2][0]],
fprintf(screen,"Xlo, zhi = %g, %g\n", domain->boxlo[0], domain->boxhi[0]); bstyles[domain->boundary[2][1]]);
fprintf(screen,"Ylo, zhi = %g, %g\n", domain->boxlo[1], domain->boxhi[1]); fprintf(screen,"Xlo, zhi = %g, %g\n",
fprintf(screen,"Zlo, zhi = %g, %g\n", domain->boxlo[2], domain->boxhi[2]); domain->boxlo[0], domain->boxhi[0]);
fprintf(screen,"Ylo, zhi = %g, %g\n",
domain->boxlo[1], domain->boxhi[1]);
fprintf(screen,"Zlo, zhi = %g, %g\n",
domain->boxlo[2], domain->boxhi[2]);
if (domain->triclinic) if (domain->triclinic)
fprintf(screen,"Xy, xz, yz = %g, %g, %g\n", fprintf(screen,"Xy, xz, yz = %g, %g, %g\n",
domain->xy, domain->xz, domain->yz); domain->xy, domain->xz, domain->yz);
@ -324,5 +331,6 @@ void Info::command(int narg, char **arg)
error->one(FLERR,"Unknown info command style"); error->one(FLERR,"Unknown info command style");
} }
} }
fputs("\nInfo-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info\n\n",screen); fputs("\nInfo-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info\n\n",screen);
} }

View File

@ -35,33 +35,71 @@ using namespace MathConst;
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
Molecule::Molecule(LAMMPS *lmp, char *idarg, char *file) : Pointers(lmp) Molecule::Molecule(LAMMPS *lmp, int narg, char **arg, int ifile) : Pointers(lmp)
{ {
me = comm->me; me = comm->me;
int n = strlen(idarg) + 1; if (ifile >= narg) error->all(FLERR,"Illegal molecule command");
int n = strlen(arg[0]) + 1;
id = new char[n]; id = new char[n];
strcpy(id,idarg); strcpy(id,arg[0]);
for (int i = 0; i < n-1; i++) for (int i = 0; i < n-1; i++)
if (!isalnum(id[i]) && id[i] != '_') if (!isalnum(id[i]) && id[i] != '_')
error->all(FLERR,"Molecule template ID must be " error->all(FLERR,"Molecule template ID must be "
"alphanumeric or underscore characters"); "alphanumeric or underscore characters");
// scan args past ifile to reach optional args
// set last = 1 if no more files in list
last = 0;
int iarg = ifile+1;
while (iarg < narg) {
if (strcmp(arg[iarg],"offset") == 0) break;
if (strcmp(arg[iarg],"auto") == 0) break;
iarg++;
}
if (iarg == ifile+1) last = 1;
// parse optional args
toffset = 0;
boffset = aoffset = doffset = ioffset = 0;
autospecial = 0;
while (iarg < narg) {
if (strcmp(arg[iarg],"offset") == 0) {
if (iarg+6 > narg) error->all(FLERR,"Illegal molecule command");
toffset = force->inumeric(FLERR,arg[iarg+1]);
boffset = force->inumeric(FLERR,arg[iarg+2]);
aoffset = force->inumeric(FLERR,arg[iarg+3]);
doffset = force->inumeric(FLERR,arg[iarg+4]);
ioffset = force->inumeric(FLERR,arg[iarg+5]);
if (toffset < 0 || boffset < 0 || aoffset < 0 ||
doffset < 0 || ioffset < 0)
error->all(FLERR,"Illegal molecule command");
iarg += 6;
} else if (strcmp(arg[iarg],"auto") == 0) {
autospecial = 1;
iarg++;
} else error->all(FLERR,"Illegal molecule command");
}
// initialize all fields to empty // initialize all fields to empty
initialize(); initialize();
// scan file for sizes of all fields and allocate them // scan file for sizes of all fields and allocate them
if (me == 0) open(file); if (me == 0) open(arg[ifile]);
read(0); read(0);
if (me == 0) fclose(fp); if (me == 0) fclose(fp);
allocate(); allocate();
// read file again to populate all fields // read file again to populate all fields
if (me == 0) open(file); if (me == 0) open(arg[ifile]);
read(1); read(1);
if (me == 0) fclose(fp); if (me == 0) fclose(fp);
@ -438,9 +476,15 @@ void Molecule::read(int flag)
impropers(flag,line); impropers(flag,line);
} else if (strcmp(keyword,"Special Bond Counts") == 0) { } else if (strcmp(keyword,"Special Bond Counts") == 0) {
if (autospecial)
error->all(FLERR,"Molecule file with auto keyword cannot list "
"explict special bonds");
nspecialflag = 1; nspecialflag = 1;
nspecial_read(flag,line); nspecial_read(flag,line);
} else if (strcmp(keyword,"Special Bonds") == 0) { } else if (strcmp(keyword,"Special Bonds") == 0) {
if (autospecial)
error->all(FLERR,"Molecule file with auto keyword cannot list "
"explict special bonds");
specialflag = tag_require = 1; specialflag = tag_require = 1;
if (flag) special_read(line); if (flag) special_read(line);
else skip_lines(natoms,line); else skip_lines(natoms,line);
@ -469,6 +513,14 @@ void Molecule::read(int flag)
parse_keyword(1,line,keyword); parse_keyword(1,line,keyword);
} }
// auto-generate special bonds
if (autospecial) {
specialflag = 1;
nspecialflag = 1;
if (flag) special_generate();
}
// clean up // clean up
memory->destroy(count); memory->destroy(count);
@ -518,6 +570,7 @@ void Molecule::types(char *line)
for (int i = 0; i < natoms; i++) { for (int i = 0; i < natoms; i++) {
readline(line); readline(line);
sscanf(line,"%d %d",&tmp,&type[i]); sscanf(line,"%d %d",&tmp,&type[i]);
type[i] += toffset;
} }
for (int i = 0; i < natoms; i++) for (int i = 0; i < natoms; i++)
@ -600,6 +653,7 @@ void Molecule::bonds(int flag, char *line)
readline(line); readline(line);
sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT, sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT,
&tmp,&itype,&atom1,&atom2); &tmp,&itype,&atom1,&atom2);
itype += boffset;
if (atom1 <= 0 || atom1 > natoms || if (atom1 <= 0 || atom1 > natoms ||
atom2 <= 0 || atom2 > natoms) atom2 <= 0 || atom2 > natoms)
@ -656,6 +710,7 @@ void Molecule::angles(int flag, char *line)
readline(line); readline(line);
sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT, sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT,
&tmp,&itype,&atom1,&atom2,&atom3); &tmp,&itype,&atom1,&atom2,&atom3);
itype += aoffset;
if (atom1 <= 0 || atom1 > natoms || if (atom1 <= 0 || atom1 > natoms ||
atom2 <= 0 || atom2 > natoms || atom2 <= 0 || atom2 > natoms ||
@ -727,6 +782,7 @@ void Molecule::dihedrals(int flag, char *line)
sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " "
TAGINT_FORMAT " " TAGINT_FORMAT " ", TAGINT_FORMAT " " TAGINT_FORMAT " ",
&tmp,&itype,&atom1,&atom2,&atom3,&atom4); &tmp,&itype,&atom1,&atom2,&atom3,&atom4);
itype += doffset;
if (atom1 <= 0 || atom1 > natoms || if (atom1 <= 0 || atom1 > natoms ||
atom2 <= 0 || atom2 > natoms || atom2 <= 0 || atom2 > natoms ||
@ -812,6 +868,7 @@ void Molecule::impropers(int flag, char *line)
sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " sscanf(line,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " "
TAGINT_FORMAT " " TAGINT_FORMAT " ", TAGINT_FORMAT " " TAGINT_FORMAT " ",
&tmp,&itype,&atom1,&atom2,&atom3,&atom4); &tmp,&itype,&atom1,&atom2,&atom3,&atom4);
itype += ioffset;
if (atom1 <= 0 || atom1 > natoms || if (atom1 <= 0 || atom1 > natoms ||
atom2 <= 0 || atom2 > natoms || atom2 <= 0 || atom2 > natoms ||
@ -925,6 +982,95 @@ void Molecule::special_read(char *line)
delete [] words; delete [] words;
} }
/* ----------------------------------------------------------------------
auto generate special bond info
------------------------------------------------------------------------- */
void Molecule::special_generate()
{
int newton_bond = force->newton_bond;
tagint atom1,atom2;
int count[natoms];
for (int i = 0; i < natoms; i++) count[i] = 0;
// 1-2 neighbors
if (newton_bond) {
for (int i = 0; i < natoms; i++) {
for (int j = 0; j < num_bond[i]; j++) {
atom1 = i;
atom2 = bond_atom[i][j]-1;
nspecial[i][0]++;
nspecial[atom2][0]++;
if (count[i] >= maxspecial || count[atom2] >= maxspecial)
error->one(FLERR,"Molecule auto special bond generation overflow");
special[i][count[i]++] = atom2 + 1;
special[atom2][count[atom2]++] = i + 1;
}
}
} else {
for (int i = 0; i < natoms; i++) {
nspecial[i][0] = num_bond[i];
for (int j = 0; j < num_bond[i]; j++) {
atom2 = bond_atom[i][j];
if (count[atom1] >= maxspecial)
error->one(FLERR,"");
special[i][count[atom1]++] = atom2;
}
}
}
// 1-3 neighbors with no duplicates
for (int i = 0; i < natoms; i++) nspecial[i][1] = nspecial[i][0];
int dedup;
for (int i = 0; i < natoms; i++) {
for (int m = 0; m < nspecial[i][0]; m++) {
for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) {
dedup = 0;
for (int k =0; k < count[i]; k++) {
if (special[special[i][m]-1][j] == special[i][k] ||
special[special[i][m]-1][j] == i+1) {
dedup = 1;
}
}
if (!dedup) {
if (count[i] >= maxspecial)
error->one(FLERR,"");
special[i][count[i]++] = special[special[i][m]-1][j];
nspecial[i][1]++;
}
}
}
}
// 1-4 neighbors with no duplicates
for (int i = 0; i < natoms; i++) nspecial[i][2] = nspecial[i][1];
for (int i = 0; i < natoms; i++) {
for (int m = nspecial[i][0]; m < nspecial[i][1]; m++) {
for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) {
dedup = 0;
for (int k =0; k < count[i]; k++) {
if (special[special[i][m]-1][j] == special[i][k] ||
special[special[i][m]-1][j] == i+1) {
dedup = 1;
}
}
if (!dedup) {
if (count[i] >= maxspecial)
error->one(FLERR,"");
special[i][count[i]++] = special[special[i][m]-1][j];
nspecial[i][2]++;
}
}
}
}
}
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
read SHAKE flags from file read SHAKE flags from file
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
@ -1063,7 +1209,6 @@ void Molecule::check_attributes(int flag)
if (mismatch) if (mismatch)
error->all(FLERR,"Molecule toplogy/atom exceeds system topology/atom"); error->all(FLERR,"Molecule toplogy/atom exceeds system topology/atom");
} }
// warn if molecule topology defined but no special settings // warn if molecule topology defined but no special settings
@ -1156,7 +1301,9 @@ void Molecule::allocate()
memory->create(num_improper,natoms,"molecule:num_improper"); memory->create(num_improper,natoms,"molecule:num_improper");
for (int i = 0; i < natoms; i++) num_improper[i] = 0; for (int i = 0; i < natoms; i++) num_improper[i] = 0;
if (autospecial) maxspecial = atom->maxspecial;
memory->create(special,natoms,maxspecial,"molecule:special"); memory->create(special,natoms,maxspecial,"molecule:special");
memory->create(nspecial,natoms,3,"molecule:nspecial"); memory->create(nspecial,natoms,3,"molecule:nspecial");
for (int i = 0; i < natoms; i++) for (int i = 0; i < natoms; i++)
nspecial[i][0] = nspecial[i][1] = nspecial[i][2] = 0; nspecial[i][0] = nspecial[i][1] = nspecial[i][2] = 0;

View File

@ -23,6 +23,7 @@ class Molecule : protected Pointers {
char *id; // template id of this molecule, same for all molecules in set char *id; // template id of this molecule, same for all molecules in set
int nset; // if first in set, # of molecules in this set int nset; // if first in set, # of molecules in this set
// else 0 if not first in set // else 0 if not first in set
int last; // 1 if last molecule in set, else 0
// number of atoms,bonds,etc in molecule // number of atoms,bonds,etc in molecule
@ -101,7 +102,7 @@ class Molecule : protected Pointers {
double **dxbody; // displacement of each atom relative to COM double **dxbody; // displacement of each atom relative to COM
// in body frame (diagonalized interia tensor) // in body frame (diagonalized interia tensor)
Molecule(class LAMMPS *, char *, char *); Molecule(class LAMMPS *, int, char **, int);
~Molecule(); ~Molecule();
void compute_center(); void compute_center();
void compute_mass(); void compute_mass();
@ -113,6 +114,8 @@ class Molecule : protected Pointers {
int me; int me;
FILE *fp; FILE *fp;
int *count; int *count;
int toffset,boffset,aoffset,doffset,ioffset;
int autospecial;
void read(int); void read(int);
void coords(char *); void coords(char *);
@ -126,6 +129,7 @@ class Molecule : protected Pointers {
void impropers(int, char *); void impropers(int, char *);
void nspecial_read(int, char *); void nspecial_read(int, char *);
void special_read(char *); void special_read(char *);
void special_generate();
void shakeflag_read(char *); void shakeflag_read(char *);
void shakeatom_read(char *); void shakeatom_read(char *);
void shaketype_read(char *); void shaketype_read(char *);

View File

@ -1 +1 @@
#define LAMMPS_VERSION "15 Jul 2015" #define LAMMPS_VERSION "17 Jul 2015"