## LAMMPS Input Commands

Return to top-level of LAMMPS documentation.

This page contains a complete list of valid LAMMPS commands which are read-in from an input script. It will be easiest to understand if you read it while looking at sample input scripts in the examples directory.

The script of input commands is read by LAMMPS, one line at a time. Each command causes LAMMPS to take some action. Usually it simply causes some internal variable(s) to be set. Or it may cause a data file to be read in or a simulation to be run. Note that most commands have default settings, which means you only need use a particular command if you do not want the default setting.

Each LAMMPS input script contains exactly one "read data" (or "read restart") command which defines the problem to be simulated. All other commands can be split into three categories: (a) commands that (if used) must appear before the "read data" command because they define settings needed to correctly read-in the problem and allocate memory for it, (b) commands that must appear after the "read data" command because they act on the specified problem, and (c) commands that can appear either before or after the "read data" command. Commands in category (c) are used before the "read data" command if a default setting needs to be changed before the problem description is read-in. They can be used after the "read data" command if the user wishes to change a setting before the next "run" or "minimize" command is used. Other than these restrictions, commands can generally appear in any order in the input script, although some commands require others to have been previously specified.

Each LAMMPS input script also contains one or more "run" or "minimize" commands. These trigger an actual dynamics or minimization computation to be done. Following a run, new commands from categories (b) and (c) can be used to change various settings, and additional "run" commands can then be used to continue the previous simulation. LAMMPS continues to read successive lines from the input script until the end-of-file is reached, which causes LAMMPS to terminate.

This page gives examples of each command, some of which can be specified in multiple styles. Typically the commands take one or more parameters. The keyword for each command should begin in the leftmost column and all characters in the command and its parameters should be in lower-case (except the word NULL or characters in filenames). Parameters can be separated by arbitrary numbers of spaces and/or tabs, so long as the command fits on one line. The remainder of the line after the last parameter is ignored.

The next section outlines the structure of a LAMMPS input script. The final section gives a detailed description of the commands in alphabetic order, each with its associated parameters and default settings.

- Structure of a LAMMPS input script
- Alphabetic Listing of Commands

### Structure of a LAMMPS input script

Any line starting with a # is a comment. Comments can appear anywhere in the input script.

(1) Initialization settings (must appear before "read data" or "read restart")

(2) Optional Settings (can appear before and/or after "read data" or "read restart")

(3) Read in a Problem via a "read data" or "read restart" command

(4) Optional Settings (same as (2))

(5) Problem Settings (must appear after "read data" or "read restart")

- Velocity Creation
- Force Field Parameters
- Constraints
- Ensemble Control
- Output Control
- Integrator Settings
- Minimizer Settings

(6) Perform a Simulation via a "run" or "minimize" command

Repeat (4), (5), and (6) as desired ...

### Initialization Settings

(if used, must appear before "read data" or "read restart" command)

    units                  real

    extra memory           2.0 1.5 2.0 2.5
    dimension              3
    processor grid         10 10 10
    periodicity            0 0 0
    slab volume            3.0
    newton flag            3
    true flag              0
    maximum cutoff         10.0
    mixing style           geometric
    restart version        5

### Optional Settings

(if used, can appear before and/or after "read data" or "read restart" command)

    neighbor               2.0 1 1 10 1

    nonbond style          none
    nonbond style          lj/cutoff 10.0 0
    nonbond style          lj/smooth 8.0 10.0
    nonbond style          lj/shift 10.0 0
    nonbond style          soft 2.5
    nonbond style          class2/cutoff 10.0 0
    nonbond style          lj/charmm 15.0 15.1

    coulomb style          none
    coulomb style          cutoff 10.0
    coulomb style          smooth 8.0 10.0
    coulomb style          ewald 10.0 1.0E-4
    coulomb style          pppm 10.0 1.0E-4
    coulomb style          charmm/switch 15.0 15.1
    coulomb style          debye 10.0 0.5

    bond style             none
    bond style             harmonic
    bond style             fene/standard
    bond style             fene/shift
    bond style             nonlinear
    bond style             class2

    angle style            none
    angle style            harmonic
    angle style            class2
    angle style            charmm
    angle style            cosine

    dihedral style         none
    dihedral style         harmonic
    dihedral style         mutliharmonic
    dihedral style         class2
    dihedral style         charmm

    improper style         none
    improper style         harmonic
    improper style         cvff
    improper style         class2

### Read in a Problem

    read data              data.lj
    read restart           restart.100000

### Velocity Creation

(if used, must appear after "read data" or "read restart" command)

    create group           types 1 3
    create group           molecules 200 300
    create group           region 0.0 1.0 0.0 1.0 INF 1.0
    create group           remainder

    rotation zero          1

    create temp            uniform 300.0 12345678
    create temp            gaussian 300.0 12345678
    create temp            velocity 0.0 0.0 0.0

### Force Field Parameters

(if used, must appear after "read data" or "read restart" command)

    nonbond coeff          1 2 1.0 3.45 10.0         (nonbond style lj/cutoff)
    nonbond coeff          1 2 1.0 3.45 8.0 10.0     (nonbond style lj/smooth)
    nonbond coeff          1 2 1.0 3.45 2.0 10.0     (nonbond style lj/shift)
    nonbond coeff          1 2 1.0 30.0 2.5          (nonbond style soft)
    nonbond coeff          1 2 1.0 3.45 10.0         (nonbond style class2/cutoff)
    nonbond coeff          1 2 1.0 3.45 1.0 3.45     (nonbond style lj/charmm)

    special bonds          amber
    special bonds          0.0 0.0 0.5

    pppm mesh              32 32 64
    pppm order             5
    dielectric             1.0

    bond coeff             1 100.0 3.45              (bond style harmonic)
    bond coeff             1 30.0 1.5 1.0 1.0        (bond style fene/standard )
    bond coeff             1 30.0 1.5 1.0 1.0 0.2    (bond style fene/shift)
    bond coeff             1 28.0 0.748308 0.166667  (bond style nonlinear)
    angle coeff            1 30.0 108.0              (angle style harmonic)
    angle coeff            1 30.0 108.0 30.0 2.5     (angle style charmm)
    angle coeff            1 30.0                    (angle style cosine)
    dihedral coeff         1 10.0 1 3                (dihedral style harmonic)
    dihedral coeff         1 2.0 2.0 2.0 2.0 2.0     (dihedral style multiharmonic)
    dihedral coeff         1 2.0 5 180.0 0.5         (dihedral style charmm)
    improper coeff         1 20.0 0.0                (improper style harmonic)
    improper coeff         1 20.0 10.0               (improper style cvff)

### Constraints

(if used, must appear after "read data" or "read restart" command)

    fix style              none
    fix style              1 setforce 0.0 NULL 0.0
    fix style              1 addforce 1.0 0.0 0.0
    fix style              1 aveforce 1.0 0.0 0.0
    fix style              1 rescale 300.0 300.0 100 20.0 0.5
    fix style              1 hoover/drag 50.0 50.0 0.001
    fix style              1 langevin 50.0 50.0 0.01 12345 1 1 1
    fix style              1 springforce 10.0 NULL NULL 1.0
    fix style              1 dragforce 10.0 -5.0 NULL 2.0 1.0
    fix style              1 shake 3 0.001 100

    assign fix             1 atom 200
    assign fix             1 molecule 50
    assign fix             1 type 2
    assign fix             1 region 0.0 1.0 INF INF 0.0 1.0
    assign fix             1 bondtype 4
    assign fix             1 angletype 18 10
    assign fix             1 remainder

### Ensemble Control

(if used, must appear after "read data" or "read restart" command)

    temp control           none
    temp control           rescale 300.0 300.0 100 20.0 0.5
    temp control           replace 300.0 300.0 50 12345678
    temp control           langevin 50.0 50.0 0.01 123456
    temp control           nose/hoover 300.0 300.0 0.01

    press control          none
    press control          nose/hoover xyz 0.0 0.0 0.001
    press control          nose/hoover xz 0.0 10.0 5.0 5.0 0.0 10.0 0.001
    press control          nose/hoover yz NULL NULL 5.0 5.0 0.0 10.0 0.001
    press control          nose/hoover aniso 0.0 0.0 0.0 0.0 1.0 10.0 0.001
    press control          nose/hoover aniso 0.0 0.0 0.0 0.0 NULL NULL 0.001

    volume control         none
    volume control         linear x 0.0 10.0
    volume control         linear y -1.0 15.0
    volume control         linear z -10.0 10.0

### Output Control

(if used, must appear after "read data" or "read restart" command)

    thermo flag            50
    thermo style           0

    dump atoms             100 filename
    dump velocities        100 filename
    dump forces            100 filename

    restart                1000 1 filename
    restart                1000 2 file1 file2
    diagnostic             diffusion 100 filename 3 1.0 -1.0 2.5

### Integrator Settings

(if used, must appear after "read data" or "read restart" command)

    timestep               1.0
    respa                  2 2 4
    reset timestep         0

### Minimizer Settings

(if used, must appear after "read data" or "read restart" command)

    min style              hftn
    min flag               10

### Perform a Simulation

    run                    10000
    minimize               0.0001 9999 50000

### Alphabetic Listing of Commands:

### angle coeff

- 1st parameter = angle type #
- 2nd-Nth parameters = coeffs 1 to N-1

    coeffs:   harmonic
                   (1) K (energy units)
                   (2) theta (degrees)
              class2
                   currently not enabled for "angle coeff" command
                   must be specified in data file (see "read data" command)
              charmm
                   (1) K (energy units)
                   (2) theta (degrees)
                   (3) K_UB (energy/distance^2)
                   (4) r_UB (distance)
              cosine
                   (1) K (energy units)

    define (or override) angle coefficients for an individual angle type
    use appropriate number of coeffs for a particular style
    see force_fields.html for meaning of coefficients for each style
    these coefficients can also be set in data file
      by a "Angle Coeffs" entry, the most recently defined
      coefficients are used
    cannot use this command before a "read data" or "read restart" is performed,
      because memory is not yet allocated for the necessary arrays

### angle style

- none = compute no angles
- harmonic = harmonic angles (class 1)
- class2 = class 2 angles (and associated cross terms)
- charmm = harmonic + Urey-Bradley
- cosine = (1 + cos(theta))

    define style of angle interactions to use for all 3-body terms
    must be used before the "read data" command (if not using the
      default) to tell the program how to read the "Angle Coeffs" entry
      in the data file
    can be used after the "read data" command to change the style to none
    coefficients for all angle types must be defined in the data (or restart)
      file by a "Angle Coeffs" entry or by "angle coeff"
      commands before a run is performed

    Default = harmonic

### assign fix

- 1st parameter = constraint #
- 2nd parameter = style of group of atoms or bondtype
- 3rd-Nth parameters = coeffs 1 to N-2

    styles:

- atom = single atom
- molecule = all atoms in a particular molecule
- type = single atom type
- region = geometric region of atoms
- bondtype = bondtype (only for assigning to fix style SHAKE)
- angletype = angletype (only for assigning to fix style SHAKE)
- remainder = rest of unconstrained atoms

    coeffs:  atom
                   (1) global atom #
             molecule
                   (1) molecule #
             type
                   (1) atom type
             region
                   (1) lower x bound of region
                   (2) upper x bound of region
                   (3) lower y bound of region
                   (4) upper y bound of region
                   (5) lower z bound of region
                   (6) upper z bound of region
             bondtype
                   (1) bond type
             angletype
                   (1) angle type
                   (2) bond type used within that angle
             remainder
                   no other parameters required

    assign a group of atoms or a bond type to a particular constraint
    use appropriate number of coeffs for a particular style
    the constraint itself must first be defined by a
      "fix style" command
    multiple groups of atoms or bond types can be assigned to the same constraint
    the bondtype option can only be assigned to a "fix style" of "shake",
      multiple bondtypes can be SHAKEn, so long as the size of clusters of
      atoms does not exceed the limit described in the "fix style" command
    the angletype option can only be assigned to a "fix style" of "shake",
      only a single angletype can be SHAKEn, it is designed to be used
      in conjunction with "fix style bondtype" to make clusters of size 3
      entirely rigid (e.g. water)
    the angletype option enables an additional check when SHAKE constraints
      are computed: if a cluster is of size 3 and both bonds in
      the cluster are of a bondtype specified by the 2nd paramter of
      angletype, then the cluster is SHAKEn with an additional angle
      constraint that makes it rigid, using the equilibrium angle appropriate
      to the specified angletype
    IMPORTANT NOTE: the angletype option has one additional affect, namely
      that no angle forces for any angle of type angletype are computed
      (since it is assumed those angles will be frozen by being SHAKEn), thus
      it will likely cause unintended behavior if the bonds in some atom pairs
      within angles of type angletype do not have the appropriate bondtype,
      since they will not be SHAKEn but neither will the angle force by computed
    for style region, a coeff of INF means + or - infinity (all the way
      to the boundary)
    an atom can be assigned to multiple constraints, the contraints will be
      applied in the reverse order they are assigned to that atom
      (e.g. each timestep, the last fix assigned to an atom will be applied
      to it first, then the next-to-last applied second, etc)

### bond coeff

- 1st parameter = bond type #
- 2nd-Nth parameters = coeffs 1 to N-1

    coeffs:   harmonic
                   (1) K (energy units)
                   (2) r0 (distance units)
              fene/standard
                   (1) k for FENE portion (energy/distance^2 units)
                   (2) r0 for FENE portion (distance units)
                   (3) epsilon for LJ portion (energy units)
                   (4) sigma for LJ portion (distance units)
              fene/shift
                   (1) k for FENE (energy/distance^2 units)
                   (2) r0 for FENE after shift is performed (distance units)
                   (3) epsilon for LJ (energy units)
                   (4) sigma for LJ after shift is performed (distance units)
                   (5) delta shift distance (distance units)
              nonlinear
                   (1) epsilon (energy units)
                   (2) r0 (distance units)
                   (3) lamda (distance units)
              class2
                   currently not enabled for "bond coeff" command
                   must be specified in data file (see "read data" command)

    define (or override) bond coefficients for an individual bond type
    use appropriate number of coeffs for a particular style
    see force_fields.html for meaning of coefficients for each style
    these coefficients can also be set in data file
      by a "Bond Coeffs" entry, the most recently defined
      coefficients are used
    cannot use this command before a "read data" or "read restart" is performed,
      because memory is not yet allocated for the necessary arrays

### bond style

- none = compute no bonds
- harmonic = harmonic springs
- fene/standard = attractive logarithmic term, repulsive LJ
- fene/shift = same as fene/standard with shift of bond distance
- nonlinear = non-linear finite-extension spring (van Swol)
- class2 = class 2 bonds

    define style of bond interactions to use between all bonded atoms
    must be used before the "read data" command (if not using the
      default) to tell the program how to read the "Bond
      Coeffs" entry in the data file (if one exists)
    can be used after the "read data" command to change the style,
      in this case "bond coeff" commands must also be used to set new
      coefficients for each bond type (unless the new style is "none")
    coefficients for all bond types must be defined in the data (or restart)
      file by a "Bond Coeffs" entry or by "bond coeff"
      commands before a run is performed

    Default = harmonic

### comments

    blank lines are ignored
    lines starting with a # are echoed into the log file
    for commands, everything on a line after the last parameter is ignored

### coulomb style

- 1st parameter = style of pairwise Coulomb interactions
- 2nd-Nth parameters = coeffs 1 to N-1

    styles:

- none = no Coulomb interactions are computed
- cutoff = use a simple cutoff
- smooth = use a switch region that goes smoothly to zero
- ewald = use Ewald summations for long-range effects
- pppm = use particle-mesh Ewald for long-range effects
- charmm/switch = use the charmm switch to go smoothly to zero
- debye = add a Debye/Huckel screening exponential

    coeffs:  none
                   no other parameters required
             cutoff
                   (1) cutoff distance (distance units)
             smooth
                   (1) inner cutoff (distance units)
                   (2) outer cutoff (distance units)
             ewald
                   (1) cutoff distance for near-field portion (distance units)
                   (2) accuracy criterion
             pppm
                   (1) cutoff distance for near-field portion (distance units)
                   (2) accuracy criterion
             charmm/switch
                   (1) inner cutoff (distance units)
                   (2) outer cutoff (distance units)
             debye
                   (1) cutoff distance (distance units)
                   (2) kappa (inverse distance units)

    use appropriate number of coeffs for a particular style
    normally this command should be used before "read data" or "read restart"
      (if simulating a charged system) to tell LAMMPS how big a force cutoff
      is being used, the "maximum cutoff" command can also serve this
      purpose
    restart files do not store "coulomb style" choice or cutoff, so
      this should be specified in the input script when running from a restart
      file
    this command can also be used after "read data" or "read restart" to
      change the style of Coulomb interactions or the cutoff
    if simulated system has no charges, should set "coulomb style none" to
      prevent LAMMPS from doing useless nonbond work, LAMMPS will set
      this for you and issue a warning
    cutoff distance can be smaller or larger than simulation box dimensions
    accuracy criterion means "one part in value" - e.g. 1.0E-4
    Ewald and PPPM accuracy criterion are used in conjunction with cutoff
      to partition work between short-range and long-range routines
    accuracy criterion effectively determines how many k-space vectors are used
      to approximate the energy and forces
    for PPPM, accuracy criterion determines mesh spacing (see "particle mesh"
      command)
    3-d periodic boundary conditions are normally used in conjunction with
      Ewald and PPPM, see "slab volume" command for 2-d Ewald/PPPM
    cannot use any Coulomb styles other than none with nonbond style = lj/shift or
      nonbond style = soft
    Coulomb style = smooth should be used with nonbond style = lj/smooth,
      and both should use same inner and outer cutoffs
    nonbond style = lj/charmm should be used with coulomb style = charmm/switch
    for smooth and charmm/switch styles, outer cutoff must be > inner cutoff
    for smooth and charmm/switch styles, atom pairs less than the inner cutoff
      distance use usual Coulomb, pairs between inner and outer are smoothed,
      and the potential goes to 0.0 at the outer cutoff
    for smooth style, force is continuously differentiable everywhere
    for debye style, an exp(-kappa*r) screening is added to the Coulombic
      interaction

    Default = cutoff 10.0   for real units
              cutoff 2.5    for lj units

### create group

- 1st parameter = style of group of atoms
- 2nd-Nth parameters = coeffs 1 to N-1

    styles:

- types = range of atom types
- molecules = range of molecule IDs
- region = geometric region of atoms
- remainder = rest of uninitialized atoms

    coeffs:  types
                   (1) lowest atom type
                   (2) highest atom type
             molecules
                   (1) lowest molecule ID
                   (2) highest molecule ID
             region
                   (1) lower x bound of region
                   (2) upper x bound of region
                   (3) lower y bound of region
                   (4) upper y bound of region
                   (5) lower z bound of region
                   (6) upper z bound of region
             remainder
                   no other parameters required

    used with "create temp" commmand to initialize velocities of atoms
    by default, the "create temp" command initializes the velocities of all atoms,
      this command limits the initialization to a group of atoms
    this command is only in force for the next "create temp" command, any
      subsequent "create temp" command is applied to all atoms (unless the
      "create group" command is used again)
    for style types, only atoms with a type such that lo-type <= type <= hi-type
      will be initialized by "create temp"
    for style types, lo-type can equal hi-type if just want to specify one type
    for style molecules, only atoms belonging to molecules with an ID # such
      that lo-ID <= type <= hi-ID will be initialized by "create temp"
    for style molecules, lo-ID can equal hi-ID if just want to specify one molecule
    for style region, only atoms within the specified spatial region
      will be initialized by "create temp"
    for style region, a coeff of INF means + or - infinity (all the way
      to the boundary)
    for style remainder, only previously uninitialized atoms
      will be initialized by "create temp"

### create temp

- 1st parameter = style of temperature creation
- 2nd-Nth parameters = coeffs 1 to N-1

    styles:

- uniform = uniform distribution of velocities
- gaussian = gaussian distribution of velocities
- velocity = assign specific initial velocity to each atom

    coeffs:  uniform
                   (1) target T (temperature units)
                   (2) random # seed (0 < seed <= 8 digits)
             gaussian
                   (1) target T (temperature units)
                   (2) random # seed (0 < seed <= 8 digits)
             velocity
                   (1) x velocity component (velocity units)
                   (2) y velocity component (velocity units)
                   (3) z velocity component (velocity units)

    initialize velocities of atoms to a specified temperature
    use appropriate number of coeffs for a particular style
    cannot be done before a data or restart file is read
    by default, velocities are created for all atoms - this can be overridden
      by first using a "create group" command
    for uniform and Gaussian styles velocities are created in
      processor-independent fashion - is slower but gives the same initial
      state independent of # of processors
    for uniform and Gaussian styles the momentum of the initialized atoms is
      also zeroed, but only if all atoms are being initialized
    for uniform and Gaussian styles, RN are generated with Park/Miller RNG
    for velocity style in 2-d simulations, still specify z velocity component,
      even though it is ignored

### diagnostic

- 1st parameter = nametag of a user routine added to diagnostic.f file
- 2nd parameter = call this user routine every this # of timesteps
- 3rd parameter = file name for this routine's diagnostic output
- 4th parameter = # of remaining parameters (0 to 5)
- 5th-9th parameters = optional parameters to pass to user routine

    call a user-defined diagnostic routine every this many timesteps
    this command can be used multiple times to call different routines
      at different frequencies, that use different parameters, and that
      send output to different files
    value of 0 for 2nd parameter means never call this particular routine
    this command causes any previous file associated with this user routine
      to be closed
    new filename can exist, will be overwritten
    if the file name specified is "none", then no file is opened
    each routine that is added to diagnostic.f and enabled with a
      "diagnostic" command will be called at the beginning and end of
      each "run" and every so many timesteps during the run
    see *** comments in diagnostic.f for changes that must be made in
      that file to enable user diagnostics, LAMMPS must then be re-compiled
      and re-linked
    see the diagnostic.f file for further information on how to create
      routines that operate on internal LAMMPS data, do their own file output,
      perform different operations (e.g. setup and clean-up) depending
      on when they are called, etc
    the optional 5th-9th parameters are stored as internal LAMMPS variables
      which can be accessed by the diagnostic routine

### dielectric

    set dielectric constant to this value

    Default = 1.0

### dihedral coeff

- 1st parameter = dihedral type #
- 2nd-Nth parameters = coeffs 1 to N-1

    coeffs:   harmonic
                   (1) K (energy units)
                   (2) d (+1 or -1)
                   (3) n (1,2,3,4,6)
              multiharmonic
                   (1) A_1 (energy units)
                   (2) A_2 (energy units)
                   (3) A_3 (energy units)
                   (4) A_4 (energy units)
                   (5) A_5 (energy units)
              class2
                   currently not enabled for "dihedral coeff" command
                   must be specified in data file (see "read data" command)
              charmm
                   (1) K (energy units)
                   (2) n (1,2,3,4,6)
                   (3) d (0 or 180 degrees) (converted to radians within LAMMPS)
                   (4) weighting factor to turn on/off 1-4 neighbor nonbond interactions

    define (or override) dihedral coefficients for an individual dihedral type
    use appropriate number of coeffs for a particular style
    see force_fields.html for meaning of coefficients for each style
    these coefficients can also be set in data file
      by a "Dihedral Coeffs" entry, the most recently defined
      coefficients are used
    cannot use this command before a "read data" or "read restart" is performed,
      because memory is not yet allocated for the necessary arrays

### dihedral style

- none = compute no dihedrals
- harmonic = simple harmonic dihedrals (class 1)
- multiharmonic = multiple simple harmonic dihedrals (class 1)
- class2 = class 2 dihedrals (and associated cross terms)
- charmm= simple harmonic dihedrals + charmm 1-4 interactions

    define style of dihedral interactions to use for all 4-body terms
    must be used before the "read data" command (if not using the
      default) to tell the program how to read the "Dihedral
      Coeffs" entry in the data file
    can be used after the "read data" command to change the style to none
    coefficients for all dihedral types must be defined in the data (or restart)
      file by a "Dihedral Coeffs" entry or by "dihedral coeff"
      commands before a run is performed

    Default = harmonic

### dimension

- specify 3 for 3-d or 2 for 2-d run

    for a 2-d run, assumes all z-coords are set to 0.0 in "read data" or
      "read restart" files and program creates no z velocities
    this command sets the processor grid to default values for 2-d or 3-d
      so must be used before "processor grid" command
    must be set before data or restart file is read

    Default = 3

### dump atoms

- 1st parameter = # of timesteps
- 2nd parameter = file name

    dump all atom positions to a file every this many timesteps
      (every this many iteration when the minimizer is invoked)
    when rRESPA is enabled, this is steps of outermost loop (longest timesteps)
    positions are also dumped at the start and end of each run
    when dumped during minimization, all dumps will have the same timestamp
      since the timestep does not change during minimization
    value of 0 means never dump
    any previous file is closed
    new filename can exist, will be overwritten
    atom positions in dump file are in "box" units (0.0 to 1.0) in each dimension
    IMPORTANT NOTE: due to the way periodic boundary conditions are enforced
      (only when neighbor lists are rebuilt), atom coords appearing in the dump
      file can be slightly outside the specified box

    Default = 0

### dump forces

- 1st parameter = # of timesteps
- 2nd parameter = file name

    dump all atom forces to a file every this many timesteps
      (every this many iteration when the minimizer is invoked)
    when rRESPA is enabled, this is steps of outermost loop (longest timesteps)
    forces are also dumped at the start and end of each run
    when dumped during minimization, all dumps will have the same timestamp
      since the timestep does not change during minimization
    any previous file is closed
    new filename can exist, will be overwritten
    value of 0 means never dump

    Default = 0

### dump velocities

- 1st parameter = # of timesteps
- 2nd parameter = file name

    dump all atom velocities to a file every this many timesteps
    when rRESPA is enabled, this is steps of outermost loop (longest timesteps)
    velocities are also dumped at the start and end of every run
    any previous file is closed
    new filename can exist, will be overwritten
    value of 0 means never dump

    Default = 0

### extra memory

- 1st parameter = extra_own = padding factor on allocation of owned atom arrays
- 2nd parameter = extra_ghost = padding factor on allocation of ghost atom arrays
- 3rd parameter = extra_neigh = padding factor on allocation of neighbor lists
- 4th parameter = extra_buf = padding factor on allocation of communication buffers

    factors that affect how much extra memory is allocated when a problem is setup
    factor of 1.0 means no padding (use exactly what LAMMPS estimates is
      needed), factor of 2.0 means 2x longer arrays, etc
    typically don't need to change default settings unless LAMMPS tells you
      to "boost" some factor at run-time
    final section of log file lists optimal settings for these parameters,
      i.e. the job could have been run with those "extra memory" settings
      and would have used minimal memory
    must be set before data or restart file is read

    Default = 1.5 for all 4 parameters

### fix style

- 1st parameter = constraint # (except for none)
- 2nd parameter = style of that constraint
- 3rd-Nth parameters = coeffs 1 to N-2

    styles:

- none = erase all constraints and all atom and bond assignments
- setforce = set force on each atom in group
- addforce = add a force to each atom in group
- aveforce = apply an external force to group of atoms such that every atom is accelerated the same
- rescale = thermostat a group of atoms by rescaling their velocities
- hoover/drag = thermostat a group of atoms by the Hoover method
- langevin = thermostat a group of atoms by the Langevin method
- springforce = apply a spring force to each atom in group
- dragforce = drag each atom in group to a specified position
- shake = apply bond length constraints to certain bonds, enabling longer timesteps

    coeffs:  none
                   no other parameters required (use "none" as 1st parameter)
             setforce
                    (1) x component of set force (in force units)
                    (2) y component of set force (in force units)
                    (3) z component of set force (in force units)
             addforce
                    (1) x component of added force (in force units)
                    (2) y component of added force (in force units)
                    (3) z component of added force (in force units)
             aveforce
                    (1) x comp of added average force per atom (in force units)
                    (2) y comp of added average force per atom (in force units)
                    (3) z comp of added average force per atom (in force units)
             rescale
                    (1) desired T at beginning of run
                    (2) desired T at end of run
                    (3) check for rescaling every this many timesteps
                    (4) T window outside of which velocities will be rescaled
                    (5) fractional amount (0.0 to 1.0) of rescaling to perform
             hoover/drag
                    (1) desired T at beginning of run
                    (2) desired T at end of run
                    (3) damping constant for drag (roughly inverse time units)
             langevin
                    (1) desired T at beginning of run
                    (2) desired T at end of run
                    (3) Langevin damping parameter (inverse time units)
                    (4) random seed to use for white noise (0 < seed <= 8 digits)
                    (5) 0/1 = off/on x dimension
                    (6) 0/1 = off/on y dimension
                    (7) 0/1 = off/on z dimension
             springforce
                    (1) x position of spring origin
                    (2) y position
                    (3) z position
                    (4) force constant k (so that k*distance = force units)
             dragforce
                    (1) x position to drag atom towards
                    (2) y position
                    (3) z position
                    (4) force magnitude f (in force units)
                    (5) delta outside of which to apply force (in distance units)
             shake
                    (1) max # of SHAKE iterations within each atom cluster
                    (2) SHAKE tolerance (accuracy of one part in tolerance)
                    (3) print bond statistics every this many steps (0 = never)

    define a constraint
    cannot skip a constraint number, all must be used before a run is performed
    use appropriate number of coeffs for a particular style
    which atoms or bonds the constraint will affect is set by the
      "assign fix" command
    all of the constraints (except for rescale) are applied every timestep
    all specified temperatures are in temperature units
    for style setforce, a coeff of NULL means do not alter that force component
    for style aveforce, average force on the group of fixed atoms is computed,
      then new average force is added in and actual force on each atom is set
      to new total value -> has effect of applying same force to entire group
      of atoms
    thermostatting constraints (rescale, hoover/drag, langevin) cannot be used in
      conjuction with global "temp control", since they conflict and will
      cause atom velocities to be reset twice
    thermostatting constraints (rescale, hoover/drag, langevin) cannot be used
      when performing a minimization
    if multiple Langevin constraints are specified the Marsaglia RNG will
      only use the last RNG seed specified for initialization
    meaning of rescale and Langevin thermostatting coefficients is same as in
      "temp control" command
    for rescale style, it can be used as a coarse temperature rescaler,
      for example "rescale 200.0 300.0 100 10.0 1.0" will ramp the temperature
      up during the simulation, resetting it to the target temperatue as needed
    for rescale style, it can be used to create an instantaneous
      drag force that slowly rescales the temperature without oscillation,
      for example "rescale 300.0 300.0 1 0.0 0.0001" will force (or keep)
      the temperature to be 300.0, the time frame over which this occurs
      will become longer as the last parameter is made smaller
    for hoover/drag style, the drag force accumulates over time so some
      oscillation in temperature can occur, for example
      "rescale 300.0 300.0 1 0.0 0.0001" will force (or keep)
      the temperature to be 300.0, the time frame over which the oscillations
      occur will become longer as the last parameter is made smaller
    style springforce is designed to be applied to an entire group of atoms
      en masse (e.g. an umbrella force on an entire molecule)
    for springforce style, the center of mass r0 of the group of atoms is computed,
      then a restoring force = -k*(r-r0)*mass/masstotal is applied to each
      atom in the group where mass = mass of the atom and masstotal = mass of
      all the atoms in the group - thus "k" should represent the total
      force on the group of atoms (not per atom)
    for springforce style, a xyz position of NULL means do not include that
      dimension in the distance or force computation
    for dragforce style, apply a drag force of magnitude f to each atom in the
      group in the direction (r-r0) where r0 = (x,y,z) - do not apply the force if
      the atom is within a distance delta of r0
    for dragforce style, a xyz position of NULL means do not include that
      dimension in the distance or force computation
    for shake style, certain bonds in the system are constrained every timestep
      to be at their equilibrium length, this is done by applying a SHAKE-like
      constraint to the forces on the atoms so that their position at the next
      timestep will preserve the atom separations
    for shake style, only atoms in small clusters can be constrained -
      e.g. water molecules, CH3 groups, but not the C backbone of a
      long polymer chain - a cluster is defined as a central atom
      connected to others in the cluster by constrained bonds connected
      together by constrained bonds - the max size of such a cluster is
      4 atoms to enable easier parallelization
    for shake style, the max iteration count need not be large (e.g. 3) since
      iterations are only done within a cluster and converge quickly
    see the "minimize" command for what constraints are allowed for use
      with the minimizer
    see the "respa" command for how constraints are applied when rRESPA
      timestepping is enabled

    Default = none

### improper coeff

- 1st parameter = improper type #
- 2nd-Nth parameters = coeffs 1 to N-1

    coeffs:   harmonic
                   (1) K (energy units)
                   (2) chi (degrees)
              cvff
                   (1) K (energy units)
                   (2) d (+1 or -1)
                   (3) n (0,1,2,3,4,6)
              class2
                   currently not enabled for "improper coeff" command
                   must be specified in data file (see "read data" command)

    define (or override) improper coefficients for an individual improper type
    use appropriate number of coeffs for a particular style
    see force_fields.html for meaning of coefficients for each style
    these coefficients can also be set in data file
      by a "Improper Coeffs" entry, the most recently defined
      coefficients are used
    cannot use this command before a "read data" or "read restart" is performed,
      because memory is not yet allocated for the necessary arrays

### improper style

- none = compute no impropers
- harmonic = harmonic impropers
- cvff = cvff improper (class 1 variant)
- class2 = class 2 Wilson out-of-plane

    define style of improper interactions to use for all trigonal centers
    in class2 case, dictates that angle-angle terms be included for all
      trigonal and tetrahedral centers
    angle for harmonic is improper torsion, angle for class2 is Wilson out-of-plane
    must be used before the "read data" command (if not using the
      default) to tell the program how to read the "Improper
      Coeffs" entry in the data file
    can be used after the "read data" command to change the style to none
    coefficients for all improper types must be defined in the data (or restart)
      file by a "Improper Coeffs" entry or by "improper coeff"
      commands before a run is performed

    Default = harmonic

### maximum cutoff

    specifies the longest force cutoff that will be used in any runs
    this value is used by LAMMPS to accurately allocate memory
      for neighbor arrays
    if the value is inaccurate (e.g. the command is not used), it is not an
      error, but LAMMPS may allocate insufficient memory for neighbor lists
    this command is not typically needed if the "nonbond style" and "coulomb style"
      commands are used before the "read data" or "read restart" command, since
      they specify the appropriate cutoffs
    an exception to this is if a short cutoff is used initially,
      but a longer cutoff will be used for a subsequent run (in the same
      input script), in this case the "maximum cutoff" command should be
      used to insure enough memory is allocated for the later run
    note that a restart file contains nonbond cutoffs (so it is not necessary
      to use a "nonbond style" command before "read restart"), but LAMMPS
      still needs to know what the maximum cutoff will be before the
      restart file is read
    must be set before data or restart file is read

    Default = cutoffs for nonbond and Coulomb styles

### min flag

    write out minimization info every this many iterations
    value of 0 means never write

    Default = 1

### min style

- hftn = Hessian-free truncated Newton method

    choose minimization algorithm to use when "minimize" command is performed
    currently, the hftn style is the only option available

    Default = hftn

### minimize

- 1st parameter = stopping tolerance (in force units)
- 2nd parameter = max iterations of minimizer
- 3rd parameter = max number of force or energy evaluations

    perform an energy minimization of the atomic coordinates of the system
    uses algorithm selected with "min style" command
    minimize commands can be interspersed with "run" commands
      to alternate between dynamics and relaxation of the system
    minimization stops if any of 3 criteria are met:
      (1) largest force component < stopping tolerance
      (2) # of iterations > max iterations
      (3) # of force and energy evaluations > max evaluations
    output from the minimizer is specified by the "dump atoms", "dump forces",
      and "restart" commands
    when using constraints with the minimizer, fixes are
      applied when atoms move except for the following
    fixes associated with temperature control are not allowed
      (rescale, hoover/drag, langevin)
    the minimizer does not invoke the "fix style shake" contraints on
      bond lengths
    the minimizer does not invoke pressure control or volume control settings
    for good convergence, should specify use of smooth nonbond force fields
      that have continuous second derivatives, e.g. set "coulomb style" to
      "smooth" or "pppm", set "nonbond style" to "lj/smooth" or
      use a long cutoff

### mixing style

- 1st parameter = style of mixing used to generate i-j nonbond interactions

    styles:

- geometric = sqrt(i*j) for both epsilon and sigma
- arithmetic = sqrt(i*j) for epsilon, (i+j)/2 for sigma
- sixthpower = see force_fields file for details

    determine the kind of mixing rule that is applied to generate nonbond
      coefficients for interactions between type i and type j atoms
    mixing rules are applied only when nonbond coeffs are input in a "read data" file
    for nonbond style "soft", only epsilons (prefactor A) are input - they are
      always mixed geometrically, regardless of mixing style setting
    for nonbond style "lj/charmm", mixing style is always arithmetic,
      regardless of mixing style setting
    must be set before data file is read

    Default = geometric for all nonbond styles except
              arithmetic for nonbond style lj/charmm
              sixthpower for nonbond style class2/cutoff

### neighbor

- 1st parameter = skin distance in distance units
- 2nd parameter = neighboring style: 0 = N^2, 1 = binning
- 3rd parameter = build neighbor list every this many steps (see next param)
- 4th parameter = delay building until after this many steps since last build
- 5th parameter = build criteria: 0 = always build, 1 = only build if some atom has moved 1/2 or more of the skin thickness

    factors that affect how and when neighbor lists are constructed
    the binning style is almost always faster than the N^2 style
    skin must be large enough that all atoms needed for bond
      interactions are also acquired by interprocessor communication
    last parameter incurs extra checking and communication to test against
      skin thickness, but may mean neighbor list is created less often
    when rRESPA is run, the 3rd and 4th parameters refer to the
      nonbond (short-range) timestepping
    normally this command should be used before the data or restart file is read,
      since the skin distance is used to estimate memory needed for
      neighbor lists
    this command can also be used after the "read data" or "read restart" command
      to change the style of neighbor list construction, but if the
      skin distance is changed it can cause LAMMPS to run out of neighbor
      list memory, the "maximum cutoff" command can be used to avoid this
      problem

    Default = 2.0 1 1 10 1   for real units
              0.3 1 1 10 1   for lj units

### newton flag

    turn off or on Newton's 3rd law for bond and non-bond force computation

- value = 0 = no Newton's 3rd law for either
- value = 1 = Newton's 3rd law only for bonded computations
- value = 2 = Newton's 3rd law only for non-bonded computations
- value = 3 = Newton's 3rd law for both bonded and non-bonded computations

    no Newton's 3rd law means more force computation and less communication
    yes Newton's 3rd law means less force computation and more communication
    which choice is faster is problem dependent on N, # of processors,
      and cutoff length(s)
    expect for round-off errors, setting this flag should not affect answers,
      only run time
    must be set before data or restart file is read

    Default = 3

### nonbond coeff

- 1st parameter = 1st atom type
- 2nd parameter = 2nd atom type
- 3rd-Nth parameters = coeffs 1 to N-2

    coeffs: lj/cutoff
                   (1) epsilon (energy units)
                   (2) sigma (distance units)
                   (3) cutoff (distance units)
            lj/smooth
                   (1) epsilon (energy units)
                   (2) sigma (distance units)
                   (3) inner cutoff (distance units)
                   (4) outer cutoff (distance units)
            lj/shift
                   (1) epsilon (energy units)
                   (2) sigma (distance units)
                   (3) delta shift distance (distance units)
                   (4) cutoff (distance units)
            soft
                   (1) prefactor A at start of run (energy units)
                   (2) prefactor A at end of run (energy units)
                   (3) cutoff (distance units)
            class2/cutoff
                   (1) epsilon (energy units)
                   (2) sigma (distance units)
                   (3) cutoff (distance units)
            lj/charmm
                   (1) epsilon (energy units)
                   (2) sigma (distance units)
                   (3) epsilon for 1-4 interactions (energy units)
                   (4) sigma for 1-4 interactions (distance units)

    define (or override) nonbond coefficients for an individual atom type pair
    use appropriate number of coeffs for a particular style
    1st atom type must be <= 2nd atom type
    all cutoffs are in global units, not local sigma units
      (e.g. in reduced units a setting of "lj/cutoff 1.0 1.2 2.5" means a
      cutoff of 2.5, not 1.2*2.5)
    turn off a particular type pair interaction by setting the
      cutoff to 0.0 (both cutoffs to zero for lj/smooth option)
    for soft style, prefactor A is ramped from starting value to
      ending value during run
    these coefficients (except the cutoffs) can also be set in data file
      by a "Nonbond Coeffs" entry and associated mixing rules, the cutoffs can
      be set (globally) via the "nonbond style" command, the most
      recently defined coefficients/cutoffs are used
    cannot use this command before a "read data" or "read restart" is performed,
      because memory is not yet allocated for the necessary arrays

### nonbond style

- 1st parameter = style of pairwise nonbond interactions (other than Coulombic)
- 2nd-Nth parameters = coeffs 1 to N-1

    styles:

- none = no nonbond interactions are computed
- lj/cutoff = LJ with a cutoff
- lj/smooth = LJ with a switched region that goes smoothly to zero
- lj/shift = same as lj/cutoff with shift of interparticle distance
- soft = cosine potential with time-varying prefactor
- class2/cutoff
- lj/charmm = LJ with charmm switched region that goes smoothly to zero

    coeffs:  none
                   no other parameters required
             lj/cutoff
                   (1) cutoff (distance units)
                   (2) offset flag (0 or 1)
             lj/smooth
                   (1) inner cutoff (distance units)
                   (2) outer cutoff (distance units)
             lj/shift
                   (1) cutoff (distance units)
                   (2) offset flag (0 or 1)
             soft
                   (1) cutoff (distance units)
             class2/cutoff
                   (1) cutoff (distance units)
                   (2) offset flag (0 or 1)
             lj/charmm
                   (1) inner cutoff (distance units)
                   (2) outer cutoff (distance units)

    define style of pairwise nonbond interactions to use between all atom types
    use appropriate number of coeffs for a particular style
    this is separate from charge interactions (see "coulomb style" command)
    normally this command should be used before "read data"
      to tell LAMMPS how big a force cutoff is being used, the
      "maximum cutoff" command can also serve this purpose
    when running from a restart file, the restart file contains the nonbond
      style and nonbond cutoffs (but not the offset flag), so it is often
      not necessary to use a "nonbond style" command before "read restart",
      however LAMMPS still needs to know what the maximum cutoff will be
      before the restart file is read, see "maximum cutoff" command
      for more details
    this command can also be used after "read data" or "read restart" to
      change the style of nonbond interactions and/or the cutoff
    cutoff distance can be smaller or larger than simulation box dimensions
    nonbond style determines how many nonbond coefficients the program expects to
      find in a "Nonbond Coeffs" entry in the data file or when using the
      "nonbond coeff" command, thus the style must be set (if not using default)
      before using the "read data" command (if the data file contains a
      "Nonbond Coeffs" entry) or a "nonbond coeff" command
    coefficients for all atom type pairs must be defined in data (or restart)
      file by a "Nonbond Coeffs" entry or by "nonbond coeffs" commands before
      a run is performed
    this command sets the cutoff(s) for all type pair interactions, thus
      overriding any previous settings by a "nonbond coeff" command or
      that were read in from a data or restart file
    for lj/cutoff, lj/shift, class2/cutoff styles,
      offset flag only affects printout of thermodynamic energy
      (not forces or dynamics), determines whether offset energy
      is added in to LJ potential to make value at cutoff = 0.0,
      flag = 0 -> do not add in offset energy,
      flag = 1 -> add in offset energy
    for lj/smooth and lj/charmm styles, outer cutoff must be > inner cutoff
    for lj/smooth and lj/charmm styles, atom pairs less than the inner cutoff
      distance use straight LJ, pairs between inner and outer use a smoothed LJ,
       and the potential goes to 0.0 at the outer cutoff
    for lj/smooth and lj/charmm styles, energy and forces are continuous at inner
       cutoff and go smoothly to zero at outer cutoff
    for lj/shift and soft styles, must set "coulomb style" to "none"
    for lj/charmm style, must set "coulomb style" to "charmm/switch", "pppm",
       or "ewald"
    for lj/shift style, delta shift distances for each atom pair are set by
      "Nonbond Coeffs" entry in data file or by "nonbond coeffs" command
    for soft style, values of the prefactor "A", which is ramped from one
      value to another during the run, are set by "Nonbond Coeffs" entry
      in data file or by "nonbond coeffs" command

    Default = lj/cutoff 10.0 0   for real units
              lj/cutoff 2.5 0    for lj units

### periodicity

- 1st parameter = periodic BC in x direction (0) yes, (1) no
- 2nd parameter = periodic BC in y direction (0) yes, (1) no
- 3rd parameter = periodic BC in z direction (0) yes, (1) no

    turn on/off periodicity in any of three dimensions
    used in inter-particle distance computation and when particles move
      to map (or not map) them back into periodic box
    for a 2-d run (see "dimension" command), 3rd parameter must be
      specified, but doesn't matter if it is 0 or 1
    must be set before data or restart file is read

    Default = 0 0 0 (periodic in all dimensions)

### pppm mesh

- 1st parameter = # of mesh points in x direction
- 2nd parameter = # of mesh points in y direction
- 3rd parameter = # of mesh points in z direction

    specify the mesh size used by "coulomb style pppm"
    mesh dimensions that are power-of-two are fastest for FFTs, but any sizes
      can be used that are supported by native machine libraries
    this command is optional - if not used, a default
      mesh size will be chosen to satisfy accuracy criterion - if used, the
      specifed mesh size will override the default

### pppm order

    specify the order of the interpolation function that is used by "coulomb
      style pppm" to map particle charge to the particle mesh
    order is roughly equivalent to how many mesh points a point charge
      overlaps onto in each dimension

    Default = 5

### press control

- 1st parameter = style of pressure control
- 2nd parameter = pressure coupling
- 3rd-9th parameters = coeffs 1 to 7

    styles:

- none = no control (constant volume)
- nose/hoover = Nose-Hoover constant P

    coupling:

- xyz = couple all 3 dimensions together (isotropic)
- xy or yz or xz = couple 2 dimensions together, other is independent
- aniso = all 3 dimensions are independent (anisotropic)

    coeffs:   none
                   no other parameters required
              nose/hoover xyz
                   (1) desired P at beginning of run
                   (2) desired P at end of run
              nose/hoover xy or yz or xz or aniso
                   (1) desired Px at beginning of run (or NULL, see below)
                   (2) desired Px at end of run
                   (3) desired Py at beginning of run
                   (4) desired Py at end of run
                   (5) desired Pz at beginning of run
                   (6) desired Pz at end of run
                   (7) frequency constant for volume adjust (inverse time units)

    enable constant pressure simulations
    all specified pressures are in pressure units
    any dimension being varied by pressure control must be periodic
    for xyz coupling, all 3 dimensions expand/contract together uniformly
      using total scalar pressure as the driving force
    for xy/yz/xz coupling, the 2 specified dimensions expand/contract together
      uniformly using pressure components averaged over those 2 dimensions
      as the driving force, the non-specified dimension will expand/contract
      independently using its pressure component as the driving force
    for anisotropic, all 3 dimensions expand/contract independently using
      individual pressure components as the 3 driving forces
    in all cases, the simulation box stays rectilinear (not Parinello-Rahman)
    for dimensions coupled together, their specified P values should be the same
    a non-coupled dimension (e.g. dimension z for xy option or any dimension
      for aniso option) can have 2 NULL values as specified pressures,
      which means apply no pressure control in that dimension (constant volume)
    target pressure at intermediate points during a run is a ramped value
      between the beginning and ending pressure(s)
    for nose/hoover style, frequency constant is like an inverse "piston"
      mass which determines how rapidly the pressure fluctuates in response to a
      restoring force, large frequency -> small mass -> rapid fluctations
    for nose/hoover style, units of frequency/damping constant are
      inverse time, so a value of 0.001 means relax in a timespan on the
      order of 1000 fmsec (real units) or 1000 tau (LJ units)
    IMPORTANT NOTE: the computation of P in LAMMPS does not include
      a long-range Van der Waals correction, this introduces a known
      error when performing constant P simulations since the correction
      factor changes as the box size varies

    Default = none

### processor grid

- 1st parameter = # of processors in x dimension
- 2nd parameter = # of processors in y dimension
- 3rd parameter = # of processors in z dimension

    specify 3-d grid of processors to map to physical simulation domain
    for 2-d problem, specify N by M by 1 grid
    program will choose these values to best map processor grid to physical
      simulation box, only use this command if wish to override program choice
    product of 3 parameters must equal total # of processors
    must be set before data or restart file is read

    Default = none

### read data

    read the initial atom positions and bond info from the specified file
    the format for the data file is specified in the file data_format
    if a "Velocities" entry is not in data file, all atom velocities
      are set to 0.0
    if a "Coeffs" entry is in data file, the appropriate "style" command
      command must be used first (unless default setting is used) to tell
      LAMMPS how many coefficients to expect
    a "Nonbond Coeffs" entry only contains one set of coefficients for each
      atom type, after being read-in mixing rules are applied to
      compute the cross-type coefficients, see the "mixing style" command
      and data_format file for more information

### read restart

    read atom and force-field information from specified file
    allows continuation of a previous run
    file is binary to enable exact restarts
    do not have to restart on same # of processors, but can only do exact
      restarts on same # of processors due to roundoff
    when restart file is read, warnings are issued if certain parameters
      in the restart file do not match current settings (e.g. newton flag,
      dimension, periodicity, units) - this usually indicates an error
    the restart file stores the "nonbond style" and many-body styles and
      coefficients and cutoffs, so these do not have to be re-specified in the
      input script, unless you want to change them
    the restart file does not store "coulomb style" choice or cutoff, so
      this should be re-specified in the input script
    the restart file stores the constraint assignments for each atom generated
      by using the "assign fix" command, it does NOT store the constraint
      parameters themselves, so they must be re-specified with "fix style"
      commands after the restart file is read - one exception to this is that
      SHAKE constraints (bondtype or angletype) are not stored with the
      atoms, so they must be re-specified when performing a restart with both
      the "fix style" and "assign fix" commands

### reset timestep

    explicitly reset the timestep to this value
    the "read data" and "read restart" commands set the timestep to zero
      and the file value respectively, so this should be done after those commands

### respa

- 1st parameter = compute bond forces this many times for every one 3/4-body force call
- 2nd parameter = compute 3/4-body forces this many times for every one nonbond (short-range) force call
- 3rd parameter = compute nonbond (short-range) forces this many times for every one long-range force call

    factors that affect sub-cycling of force calculations within rRESPA hierarchy
    bonded intramolecular forces are calculated every innermost sub-timestep
    bonded 3- and 4-body forces are computed every 1st parameter sub-timesteps
    short-range nonbond pairwise forces (LJ, Coulombic) are computed every
      (2nd parameter * 1st parameter) sub-timesteps
    long-range (Ewald, PPPM) forces are computed every
      (3rd parameter * 2nd parameter * 1st parameter) sub-timesteps
    the timestepping for all 3 inner loops (bond, 3/4-body, nonbond) is performed
      as sub-cycling within the long-range timestepping loop
    the fastest (innermost) timestep size is set by the "timestep" command
    when running rRESPA, all input commands that specify numbers of timesteps
      (e.g. run, thermo flag, restart, etc) refer to the outermost loop
      of long-range timestepping
    the only exception to this rule is the "neighbor" command, where the timestep
      parameters refer to the short-range (nonbond) timestepping
    when using constraints (via the "fix style" and "assign fix" commands)
      with rRESPA, the setforce and aveforce constraints are applied at every
      level of the hierarchy (whenever forces are computed), the other
      constraints are applied only at the short-range (nonbond) level
    when using "temp control langevin" with rRESPA, thermostatting is applied
      at the short-range (nonbond) level
    rRESPA cannot be used with "fix style shake"
    setting all 3 parameters to 1 turns off rRESPA

    Default = 1 1 1 (no rRESPA)

### restart

- 1st parameter = # of timesteps
- 2nd parameter = 1 or 2 = naming convention for restart files
- 3rd (and 4th) parameters = file name(s)

    create a restart file every this many timesteps
    value of 0 means never create one
    if the style is 1, restart information will be written to files
      named filename.timestep and no 4th parameter is needed
    if the style is 2, restart information will be written alternately to files
      given by the 3rd and 4th parameters, so only 2 restart files ever exist
    when the minimizer is invoked this command means create a restart file
      at the end of the minimization with the filename filename.timestep.min
    a restart file stores atom and force-field information in binary form
    allows program to restart from where it left off (see "read restart" commmand)

    Default = 0

### restart version

    tell LAMMPS that a restart file from an older version of LAMMPS will be read-in
      via a "read restart" command
    this command is necessary because older restart files have a different format
    valid settings are 2001 (LAMMPS 2001), 2000 (LAMMPS 2000),
      6 (LAMMPS 99) or 5 (LAMMPS 5.0)
    restart files from earlier versions of LAMMPS are not readable without
      some source code modifications
    restart files are always written out in the current-version format
      regardless of this setting
    this must be set before the "read restart" command is executed

    Default = current version of code = 2001

### rotation zero

    zero out angular momentum when creating velocities for a group of atoms
    value of 0 means don't zero out, value of 1 means zero it

    Default = 0

### run

    run or continue dynamics for specified # of timesteps
    when rRESPA is enabled, this is steps of outermost loop (longest timesteps)
    must have performed "read data" or "read restart"
      command first

### slab volume

    invoke 2-d slab Ewald/PPPM and set extended slab volume via this ratio
    2-d slab Ewald/PPPM can be used for a system that is periodic in x-y,
      but not in z
    this ratio dampens inter-slab interactions in the z dimension
      by providing empty volume between slabs and removing
      dipole inter-slab interactions
    ratio value is the size of the extended dimension in z divided by
      the actual dimension in z
    recommended ratio value is 3.0: larger is inefficient, smaller
      risks unwanted inter-slab interactions
    when 2-d slab Ewald/PPPM is used, z-direction periodicity must be
      turned off - e.g. periodicity 0 0 1
    when 2-d slab Ewald/PPPM is used, user must prevent particle migration
      beyond initial z-bounds, typically by providing walls
    2-d slab Ewald/PPPM can only be used only with electrostatically
      neutral systems
    2-d slab Ewald/PPPM can only be used (for the moment) with constant
      volume simulations (no pressure control) - the pressure computation
      (printed as thermodynamic data) does not include any slab correction
      factor or a volume correction for the extended z direction
    must be set before data or restart file is read

    Default = none (normal 3-D Ewald/PPPM)

### special bonds

- charmm (0.0 0.0 0.0)
- amber (0.0 0.0 0.5/0.8333)
- 1st parameter = nonbond weight applied to 1-2 neighbors
- 2nd parameter = nonbond weight applied to 1-3 neighbors
- 3rd parameter = nonbond weight applied to 1-4 neighbors

    weighting factors to turn on/off nonbond interactions of atom pairs that
      are "close" in the molecular topology
    1-2 neighbors are a pair of atoms connected by a bond
    1-3 neighbors are a pair of atoms 2 hops away, etc.
    weight values are from 0.0 to 1.0 and are used to multiply the
      energy and force interaction (both Coulombic and LJ) between the 2 atoms
    weight of 0.0 means no interaction
    weight of 1.0 means full interaction
    can either specify a single keyword (charmm, amber) or can give
      3 numeric values
    using the charmm keyword means use the CHARMM force field
      settings of 0.0 0.0 0.0, requiring that pair-specific 1-4 interactions
      be read in individually (see "dihedral style charmm" command)
    using the amber keyword means use the AMBER force field
      settings of 0.0 0.0 N, where N = 0.5 for Van der Waals 1-4 interactions
      and 1.0/1.2 for Coulombic 1-4 interactions

    Default = CHARMM force field values of 0.0 0.0 0.0

### temp control

- 1st parameter = style of temperature control
- 2nd-Nth parameters = coeffs 1 to N-1

    styles:

- none = no control
- rescale = instantaneous rescaling
- replace = Gaussian replacement
- langevin = Langevin white noise
- nose/hoover = Nose-Hoover constant T

    coeffs:  none
                   no other parameters required
             rescale
                   (1) desired T at beginning of run
                   (2) desired T at end of run
                   (3) check for rescaling every this many timesteps
                   (4) T window outside of which velocities will be rescaled
                   (5) fractional amount (0.0 to 1.0) of rescaling to perform
             replace
                   (1) desired T at beginning of run
                   (2) desired T at end of run
                   (3) do Gaussian replacement every this many timesteps
                   (4) random # seed to use for replacement (0 < seed <= 8 digits)
             langevin
                   (1) desired T at beginning of run
                   (2) desired T at end of run
                   (3) Langevin damping parameter (inverse time units)
                   (4) random seed to use for white noise (0 < seed <= 8 digits)
             nose/hoover
                   (1) desired T at beginning of run
                   (2) desired T at end of run
                   (3) frequency constant for friction force (inverse time units)

    enable constant temperature simulations
    use appropriate number of coeffs for a particular style
    all specified temperatures are in temperature units
    target temperature at intermediate points during run is a ramped value
      between the beginning and ending temperatures
    for rescale style, temperature is controlled by explicitly rescaling
      velocities towards the target temperature
    for rescale style, rescaling is only done if current temperature is
      beyond the target temperature plus or minus the window value
    for rescale style, the amount of rescaling is contfolled by the fractional
      amount (0.0 to 1.0), e.g. a value of 0.5 means set the velocities
      to halfway between the current and target temperature
    for rescale style, it can be used as a coarse temperature rescaler,
      for example "rescale 200.0 300.0 100 10.0 1.0" will ramp the temperature
      up during the simulation, resetting it to the target temperatue as needed
    for rescale style, it can be used to create an instantaneous
      drag force that slowly rescales the temperature without oscillation,
      for example "rescale 300.0 300.0 1 0.0 0.0001" will force (or keep)
      the temperature to be 300.0, the time frame over which this occurs
      will become longer as the last parameter is made smaller
    for replace style, Gaussian RNs from the Marsaglia RNG are used
    for langevin style, uniform RNs from the Marsaglia RNG are used
    for replace and langevin styles, the seed is used to initialize the
      Marsaglia RNG, on successive runs the RNG will just continue on
    for replace and langevin styles, generated RNs depend on # of processors
      so will not get same answers independent of # of processors
    for replace and langevin styles, RNG states are not saved in restart file,
      so cannot do an exact restart
    for langevin style, damping parameter means small value -> less damping
    for nose/hoover style, frequency constant is like an inverse
      "piston" mass which determines how rapidly the temperature
      fluctuates in response to a restoring force, large frequency ->
      small mass -> rapid fluctations
    for nose/hoover style, cannot use a end-of-run T of 0.0, must be finite
    for langevin and nose/hoover styles, units of frequency/damping constant are
      inverse time, so a value of 0.01 means relax in a timespan on the
      order of 100 fmsec (real units) or 100 tau (LJ units)

    Default = none

### thermo flag

    print thermodynamic info to screen and log file every this many timesteps
    value of 0 means never print

    Default = 0

### thermo style

    determines format of thermodynamic output to screen and log file

- style = 0 -> standard output - about 5 lines per entry
- style = 1 -> reduced output - 1 line per entry
- style = 2 -> output with class 2 terms - about 8 lines per entry

    Default = 0

### timestep

    timestep size for MD run (time units)
    when rRESPA is enabled, the timestep size is for the innermost (bond) loop

    Default = 1.0

### true flag

    read atom positions (see "read data" command) and dump atom positions
      (see "dump atoms" command) in one of 2 formats

- flag = 0 -> read/dump only atom positions (remapped to periodic box)
- flag = 1 -> dump atom positions plus integer box counts
- flag = 2 -> read atom positions plus integer box counts
- flag = 3 -> read/dump atom positions plus integer box counts

    for each dimension, box count of "n" means add that many box lengths
      to get "true" un-remapped position, "n" can be positive, negative, or zero
    must be set before data or restart file is read

    Default = 0

### units

- real or lj

    set units to one of two options for all subsequent input parameters

    option real = conventional units:

- distance = Angstroms
- time = femtoseconds
- mass = grams/mole
- temperature = degrees K
- pressure = atmospheres
- energy = Kcal/mole
- velocity = Angstroms/femtosecond
- force = grams/mole * Angstroms/femtosecond^2

    option lj = LJ reduced units:

- distance = sigmas
- time = reduced LJ tau
- temperature = reduced LJ temp
- pressure = reduced LJ pressure
- energy = epsilons
- velocity = sigmas/tau
- force = reduced LJ force (sigmas/tau^2)

    for LJ units, LAMMPS sets global epsilon,sigma,mass all equal to 1.0
    subsequent input numbers in data and command file must be in these units
    output numbers to screen and log and dump files will be in these units
    this command (if it appears) must be the first command (aside from
      comments) in the input script
    must be set before data or restart file is read

    Default = real

### volume control

- 1st parameter = style of volume control
- 2nd parameter = dimension to control (x,y,z)
- 3rd-4th parameters = lo/hi simulation box boundaries in this dimension

    styles:

- none = no variation in any dimension (constant volume)
- linear = uniform expansion or contraction

    enable volume changes (density changes) during a simulation
    specified box boundaries are in distance units
    each dimension is controlled separately
    dimensions not specified by a "volume control" command can be left
      alone (constant volume or nonperiodic) or controlled by
      a "press control" command
    any dimension being varied by volume control must be periodic
    the lo/hi values are the desired global simulation box boundaries at
      the end of the simulation run
    at each timestep, the box is expanded/contracted uniformly from its initial
      lo/hi values to the specified ending lo/hi values
    initial lo/hi values are specified in the data or restart file or
      inherited from the end of the previous run
    at each timestep, all atom coordinates are also scaled to the new box

    Default = none