From 9cefb572726d8ee303e385684b9ceb07b4f99c07 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Mon, 8 Sep 2014 15:46:08 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@12435 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/Section_accelerate.html | 85 ++++++++++++++--- doc/Section_accelerate.txt | 84 ++++++++++++++--- doc/Section_commands.html | 13 +-- doc/Section_commands.txt | 1 + doc/fix_qeq.html | 182 ++++++++++++++++++++++++++++++++++++ doc/fix_qeq.txt | 169 +++++++++++++++++++++++++++++++++ 6 files changed, 503 insertions(+), 31 deletions(-) create mode 100644 doc/fix_qeq.html create mode 100644 doc/fix_qeq.txt diff --git a/doc/Section_accelerate.html b/doc/Section_accelerate.html index 224ead93fa..a95a5d398a 100644 --- a/doc/Section_accelerate.html +++ b/doc/Section_accelerate.html @@ -11,6 +11,8 @@ Section
+

NOTE: USER-CUDA: no newton setting needed? +

5. Accelerating LAMMPS performance

This section describes various methods for improving LAMMPS @@ -44,12 +46,12 @@ on different hardware platforms. understand how it currently performs and where the bottlenecks are.

The best way to do this is run the your system (actual number of -atoms) for a modest number of timesteps (say 100, or a few 100 at -most) on several different processor counts, including a single -processor if possible. Do this for an equilibrium version of your -system, so that the 100-step timings are representative of a much -longer run. There is typically no need to run for 1000s or timesteps -to get accurate timings; you can simply extrapolate from short runs. +atoms) for a modest number of timesteps (say 100 steps) on several +different processor counts, including a single processor if possible. +Do this for an equilibrium version of your system, so that the +100-step timings are representative of a much longer run. There is +typically no need to run for 1000s of timesteps to get accurate +timings; you can simply extrapolate from short runs.

For the set of runs, look at the timing data printed to the screen and log file at the end of each LAMMPS run. This @@ -244,6 +246,13 @@ Technologies). It contains a handful of pair styles whose compute() methods were rewritten in C++ templated form to reduce the overhead due to if tests and other conditional code.

+

Here is a quick overview of how to use the OPT package: +

+ +

Details follow. +

Required hardware/software:

None. @@ -255,8 +264,8 @@ due to if tests and other conditional code.

make yes-opt
 make machine 
 
-

No additional compile/link flags are needed in your lo-level -src/MAKE/Makefile.machine. +

No additional compile/link flags are needed in your machine +Makefile in src/MAKE.

Running with the OPT package:

@@ -296,6 +305,16 @@ nearly all bonded styles (bond, angle, dihedral, improper), several Kspace styles, and a few fix styles. The package currently uses the OpenMP interface for multi-threading.

+

Here is a quick overview of how to use the USER-OMP package: +

+ +

Details follow. +

Required hardware/software:

Your compiler must support the OpenMP interface. You should have one @@ -362,8 +381,7 @@ style in your input script:

pair_style lj/cut/omp 2.5
 fix nve/omp 
 
-

< -Or you can run with the "-sf omp" command-line +

Or you can run with the "-sf omp" command-line switch, which will automatically append "omp" to styles that support it.

@@ -393,7 +411,7 @@ benchmark runs for a specific simulation running on a specific machine, paying attention to guidelines discussed in the next sub-section.

-

A description of the multi-threading strategy used in the UESR-OMP +

A description of the multi-threading strategy used in the USER-OMP package and some performance examples are presented here

@@ -502,6 +520,19 @@ NVIDIA support as well as more general OpenCL support, so that the same functionality can eventually be supported on a variety of GPU hardware. +

Here is a quick overview of how to use the GPU package: +

+ +

Details follow. +

Required hardware/software:

To use this package, you currently need to have an NVIDIA GPU and @@ -714,10 +745,20 @@ transparently.

  • The package only supports use of a single MPI task, running on a single CPU (core), assigned to each GPU. +

    Here is a quick overview of how to use the USER-CUDA package: +

    + +

    Details follow. +

    Required hardware/software:

    -

    To use this package, you need to have an NVIDIA GPU and -install the NVIDIA Cuda software on your system: +

    To use this package, you need to have one or more NVIDIA GPUs and install the NVIDIA Cuda software on your system:

    Your NVIDIA GPU needs to support Compute Capability 1.3. This list may help you to find out the Compute Capability of your card: @@ -1260,6 +1301,24 @@ suffix to "omp" so that styles from the USER-OMP package will be used if available, after first testing if a style from the USER-INTEL package is available.

    +

    Here is a quick overview of how to use the USER-INTEL package +for CPU acceleration: +

    + +

    Running with the USER-INTEL package to offload to the Intel(R) Xeon Phi(TM) +is the same except for these additional steps: +

    + +

    Details follow. +

    Required hardware/software:

    To use the offload option, you must have one or more Intel(R) Xeon diff --git a/doc/Section_accelerate.txt b/doc/Section_accelerate.txt index de7c9473bc..091fe95da4 100644 --- a/doc/Section_accelerate.txt +++ b/doc/Section_accelerate.txt @@ -8,6 +8,8 @@ Section"_Section_howto.html :c :line +NOTE: USER-CUDA: no newton setting needed? + 5. Accelerating LAMMPS performance :h3 This section describes various methods for improving LAMMPS @@ -40,12 +42,12 @@ Before trying to make your simulation run faster, you should understand how it currently performs and where the bottlenecks are. The best way to do this is run the your system (actual number of -atoms) for a modest number of timesteps (say 100, or a few 100 at -most) on several different processor counts, including a single -processor if possible. Do this for an equilibrium version of your -system, so that the 100-step timings are representative of a much -longer run. There is typically no need to run for 1000s or timesteps -to get accurate timings; you can simply extrapolate from short runs. +atoms) for a modest number of timesteps (say 100 steps) on several +different processor counts, including a single processor if possible. +Do this for an equilibrium version of your system, so that the +100-step timings are representative of a much longer run. There is +typically no need to run for 1000s of timesteps to get accurate +timings; you can simply extrapolate from short runs. For the set of runs, look at the timing data printed to the screen and log file at the end of each LAMMPS run. "This @@ -238,6 +240,13 @@ Technologies). It contains a handful of pair styles whose compute() methods were rewritten in C++ templated form to reduce the overhead due to if tests and other conditional code. +Here is a quick overview of how to use the OPT package: + +include the OPT package and build LAMMPS +use OPT pair styles in your input script :ul + +Details follow. + [Required hardware/software:] None. @@ -249,8 +258,8 @@ Include the package and build LAMMPS. make yes-opt make machine :pre -No additional compile/link flags are needed in your lo-level -src/MAKE/Makefile.machine. +No additional compile/link flags are needed in your machine +Makefile in src/MAKE. [Running with the OPT package:] @@ -290,6 +299,16 @@ nearly all bonded styles (bond, angle, dihedral, improper), several Kspace styles, and a few fix styles. The package currently uses the OpenMP interface for multi-threading. +Here is a quick overview of how to use the USER-OMP package: + +specify the -fopenmp flag for compiling and linking in your machine Makefile +include the USER-OMP package and build LAMMPS +specify how many threads per MPI task to run with via an environment variable or the package omp command +enable the USER-OMP package via the "-sf omp" command-line switch, or the package omp commmand +use USER-OMP styles in your input script :ul + +Details follow. + [Required hardware/software:] Your compiler must support the OpenMP interface. You should have one @@ -355,7 +374,7 @@ style in your input script: pair_style lj/cut/omp 2.5 fix nve/omp :pre -< + Or you can run with the "-sf omp" "command-line switch"_Section_start.html#start_7, which will automatically append "omp" to styles that support it. @@ -386,7 +405,7 @@ benchmark runs for a specific simulation running on a specific machine, paying attention to guidelines discussed in the next sub-section. -A description of the multi-threading strategy used in the UESR-OMP +A description of the multi-threading strategy used in the USER-OMP package and some performance examples are "presented here"_http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1 @@ -495,6 +514,19 @@ NVIDIA support as well as more general OpenCL support, so that the same functionality can eventually be supported on a variety of GPU hardware. :l,ule +Here is a quick overview of how to use the GPU package: + +build the library in lib/gpu for your GPU hardware (CUDA_ARCH) with desired precision (CUDA_PREC) +include the GPU package and build LAMMPS +decide how many MPI tasks per GPU to run with, i.e. set MPI tasks/node via mpirun +specify how many GPUs per node to use (default = 1) via the package gpu command +enable the GPU package via the "-sf gpu" command-line switch, or the package gpu commmand +use the newton command to turn off Newton's law for pairwise interactions +use the package gpu command to enable neighbor list building on the GPU if desired +use GPU pair styles and kspace styles in your input script :ul + +Details follow. + [Required hardware/software:] To use this package, you currently need to have an NVIDIA GPU and @@ -707,10 +739,20 @@ Neighbor lists are constructed on the GPU. :l The package only supports use of a single MPI task, running on a single CPU (core), assigned to each GPU. :l,ule +Here is a quick overview of how to use the USER-CUDA package: + +build the library in lib/cuda for your GPU hardware (arch with desired precision (precision) +include the USER-CUDA package and build LAMMPS +use the mpirun command to specify 1 MPI task per GPU (on each node) +specify how many GPUs per node to use (default = 1) via the package cuda command +enable the USER-CUDA package via the "-c on" command-line switch +use USER-CUDA styles in your input script :ul + +Details follow. + [Required hardware/software:] -To use this package, you need to have an NVIDIA GPU and -install the NVIDIA Cuda software on your system: +To use this package, you need to have one or more NVIDIA GPUs and install the NVIDIA Cuda software on your system: Your NVIDIA GPU needs to support Compute Capability 1.3. This list may help you to find out the Compute Capability of your card: @@ -1253,6 +1295,24 @@ suffix to "omp" so that styles from the USER-OMP package will be used if available, after first testing if a style from the USER-INTEL package is available. +Here is a quick overview of how to use the USER-INTEL package +for CPU acceleration: + +specify these CCFLAGS in your machine Makefile: -fopenmp, -DLAMMPS_MEMALIGN=64, and -restrict, -xHost +specify -fopenmp with LINKFLAGS in your machine Makefile +include the USER-INTEL package and (optionally) USER-OMP package and build LAMMP +if also using the USER-OMP package, specify how many threads per MPI task to run with via an environment variable or the package omp command +use USER-INTEL styles in your input script :ul + +Running with the USER-INTEL package to offload to the Intel(R) Xeon Phi(TM) +is the same except for these additional steps: + +add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in your Machine makefile +add the flag -offload to the LINKFLAGS in your Machine makefile +the package intel command can be used to adjust threads per coprocessor :ul + +Details follow. + [Required hardware/software:] To use the offload option, you must have one or more Intel(R) Xeon diff --git a/doc/Section_commands.html b/doc/Section_commands.html index 1af6b95ff6..42194e3cd2 100644 --- a/doc/Section_commands.html +++ b/doc/Section_commands.html @@ -406,12 +406,13 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. msstnebnph (o)nphug (o)nph/asphere (o)nph/sphere (o)npt (co)npt/asphere (o) npt/sphere (o)nve (cko)nve/aspherenve/asphere/noforcenve/bodynve/limitnve/linenve/noforce nve/sphere (o)nve/trinvt (co)nvt/asphere (o)nvt/sllod (o)nvt/sphere (o)onewayorient/fcc -planeforcepoemspourpress/berendsenprintproperty/atomqeq/comb (o)reax/bonds -recenterrestrainrigid (o)rigid/nph (o)rigid/npt (o)rigid/nve (o)rigid/nvt (o)rigid/small (o) -rigid/small/nphrigid/small/nptrigid/small/nverigid/small/nvtsetforce (c)shake (c)springspring/rg -spring/selfsrdstore/forcestore/statetemp/berendsen (c)temp/csvrtemp/rescale (c)thermal/conductivity -tmdttmtune/kspacevectorviscosityviscous (c)wall/colloidwall/gran -wall/harmonicwall/lj1043wall/lj126wall/lj93wall/pistonwall/reflectwall/regionwall/srd +planeforcepoemspourpress/berendsenprintproperty/atomqeqqeq/comb (o) +reax/bondsrecenterrestrainrigid (o)rigid/nph (o)rigid/npt (o)rigid/nve (o)rigid/nvt (o) +rigid/small (o)rigid/small/nphrigid/small/nptrigid/small/nverigid/small/nvtsetforce (c)shake (c)spring +spring/rgspring/selfsrdstore/forcestore/statetemp/berendsen (c)temp/csvrtemp/rescale (c) +thermal/conductivitytmdttmtune/kspacevectorviscosityviscous (c)wall/colloid +wall/granwall/harmonicwall/lj1043wall/lj126wall/lj93wall/pistonwall/reflectwall/region +wall/srd

    These are additional fix styles in USER packages, which can be used if diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt index e282b5958a..539fb8f20a 100644 --- a/doc/Section_commands.txt +++ b/doc/Section_commands.txt @@ -527,6 +527,7 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "press/berendsen"_fix_press_berendsen.html, "print"_fix_print.html, "property/atom"_fix_property_atom.html, +"qeq"_fix_qeq.html, "qeq/comb (o)"_fix_qeq_comb.html, "reax/bonds"_fix_reax_bonds.html, "recenter"_fix_recenter.html, diff --git a/doc/fix_qeq.html b/doc/fix_qeq.html new file mode 100644 index 0000000000..78dd39cd2a --- /dev/null +++ b/doc/fix_qeq.html @@ -0,0 +1,182 @@ + +

    LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
    + + + + + + +
    + +

    fix qeq/point command +

    +

    fix qeq/shielded command +

    +

    fix qeq/slater command +

    +

    fix qeq/dynamic command +

    +

    Syntax: +

    +
    fix ID group-ID style Nevery cutoff tolerance maxiter params 
    +
    + +

    Examples: +

    +
    fix 1 all qeq/point 1 10 1.0e-6 200 param.qeq1
    +fix 1 qeq qeq/shielded 1 8 1.0e-6 100 param.qeq2
    +fix 1 all qeq/slater 5 10 1.0e-6 100 params
    +fix 1 qeq qeq/dynamic 1 12 1.0e-3 100 my_qeq 
    +
    +

    Description: +

    +

    Perform the charge equilibration (QEq) method as described in (Rappe +and Goddard) and formulated in (Nakano) (also +known as the matrix inversion method) +and in (Rick and Stuart) (also known as the extended +Lagrangian method) based on the electronegativity equilization principle. +These fixes can be used with any potential in LAMMPS, so long as it defines and +uses charges on each atom and that QEq parameters are provided. +

    +

    IMPORTANT NOTE: The fix qeq/comb +command should be used to perform charge equliibration with the COMB +potential. The fix qeq/reax +command can be used to perform charge equilibration with the ReaxFF force +field, although fix qeq/shielded yields exact same +results as fix qeq/reax if Nevery, cutoff, and tolerance are the same. +

    +

    The QEq method minimizes the electrostatic energy of the system (or +equalizes the derivative of energy with respect to charge of all the +atoms) by adjusting the partial charge on individual atoms based on +interactions with their neighbors within cutoff. +It reqires some parameters for each atom type provided in a file +specified by params. First line of the file should be the unit +style of these parameters. These +fixes support real, metal, si, cgs, and electron units. Using lj, +micro, and nano units will result in an error. +Each of the following lines should be formatted as follows: +

    +
    itype chi eta gamma zeta qcore 
    +
    +

    where itype is the atom type from 1 to Ntypes, chi denotes the +electronegativity in energy units, eta denotes the self-Coulomb +potential in energy units, gamma denotes the shielded Coulomb +constant defined by ReaxFF force field in distance units, +zeta denotes the Slater type orbital exponent defined by the +Streitz-Mintmire potential (not yet available in LAMMPS) +in reverse distance units, and qcore denotes the charge of the +nucleus defined by the Streitz-Mintmire potential in charge units. +

    +

    The qeq/point style describes partial charges on atoms as point charges. +Interaction between a pair of charged particles is 1/r, which is the simplest +description of the interaction between charges. Only chi and eta +parameters in the params file are used. Note that Coulomb catastrophe +can occur if repulsion between the pair of charged particles is too weak. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. +

    +

    The qeq/shielded style describes partial charges on atoms also as point +charges, but uses a shielded Coulomb potential to describe +the interaction between a pair of charged particles. Interaction through +the shielded Coulomb is given by equation (13) of the +ReaxFF force field paper. The shielding accounts for charge overlap +between charged particles at small separation. This style is the same as +fix qeq/reax, and can be used with +pair_style reax/c. Only chi, eta, and gamma parameters +in the params file are used. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. +

    +

    The qeq/slater style describes partial charges on atoms as spherical +charge densities centered around atoms via the Slater 1s orbital, so that +the interaction between a pair of charged particles is the product of two +Slater 1s orbitals. The expression for the Slater 1s orbital is given under +equation (6) of the Streitz-Mintmire paper. chi, eta, zeta, +and qcore parameters in the params file are used. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. +

    +

    The qeq/dynamic style describes partial charges on atoms as point charges +that interact through 1/r, but the extended Lagrangian method is used to solve +partial charges on atoms. Only chi and eta parameters in the params file +are used. Note that Coulomb catastrophe can occur if repulsion between the +pair of charged particles is too weak. +A tolerance of 1.0e-3 is usually a good number. +

    +

    Note that qeq/point, qeq/shielded, and qeq/slater describe different charge +models, whereas the matrix inversion method and the extended Lagrangian method +(qeq/dynamic) are different solvers. +

    +

    Note that the qeq/point and the qeq/dynamic styles both describe charges as +point charges that interact through 1/r relationship, but solve partial charges +on atoms using different solvers. qeq/point and the qeq/dynamic styles should +yield comparable results if the QEq parameters and Nevery, cutoff, +and tolerance are the same. qeq/point is typically faster, but qeq/dynamic +scales better on larger sizes. +

    +

    IMPORTANT NOTE: To avoid the evaluation of the derivative of charge with +respect to position, which is typically ill-defined, the system should have a +zero net charge. +

    +

    IMPORTANT NOTE: Developing QEq parameters (chi, eta, gamma, zeta, and qcore) +is an "art". Charges on atoms are not guaranteed to equilibrate with arbitrary +choices of these parameters. We do not develop these QEq paramters. +

    +

    Restart, fix_modify, output, run start/stop, minimize info: +

    +

    No information about these fixes is written to binary restart +files. No global scalar or vector or per-atom +quantities are stored by these fixes for access by various output +commands. No parameter of these fixes can +be used with the start/stop keywords of the run command. +

    +

    Thexe fixes are invoked during energy minimization. +

    +

    Restrictions: +

    +

    These fixes are part of the USER-QEQ package. They are only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

    +

    Related commands: +

    +

    fix qeq/reax +fix qeq/comb +

    +

    Default: none +

    +
    + + + +

    (Rappe and Goddard) A. K. Rappe and W. A. Goddard III, J Physical Chemistry, 105, +3358-3363 (1991). +

    + + +

    (Nakano) A. Nakano, Computer Physics Communications, 104, 59-69 (1997). +

    + + +

    (Rick and Stuart) S. W. Rick, S. J. Stuart, B. J. Berne, J Chemical Physics +101, 16141 (1994). +

    + + +

    (Streitz-Mintmire) F. H. Streitz, J. W. Mintmire, Physical Review B, 50, +16, 11996 (1994) +

    + + +

    (ReaxFF) A. C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J +Physical Chemistry, 105, 9396-9049 (2001) +

    + diff --git a/doc/fix_qeq.txt b/doc/fix_qeq.txt new file mode 100644 index 0000000000..16b796a733 --- /dev/null +++ b/doc/fix_qeq.txt @@ -0,0 +1,169 @@ +"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 qeq/point command :h3 +fix qeq/shielded command :h3 +fix qeq/slater command :h3 +fix qeq/dynamic command :h3 + +[Syntax:] + +fix ID group-ID style Nevery cutoff tolerance maxiter params :pre + +ID, group-ID are documented in "fix"_fix.html command +style = {qeq/point} or {qeq/shielded} or {qeq/slater} or {qeq/dynamic} +Nevery = perform charge equilibration every this many steps +cutoff = global cutoff for charge-charge interactions (distance unit) +tolerance = precision to which charges will be equilibrated +maxiter = maximum iterations to perform charge equilibration +params = a filename :ul + +[Examples:] + +fix 1 all qeq/point 1 10 1.0e-6 200 param.qeq1 +fix 1 qeq qeq/shielded 1 8 1.0e-6 100 param.qeq2 +fix 1 all qeq/slater 5 10 1.0e-6 100 params +fix 1 qeq qeq/dynamic 1 12 1.0e-3 100 my_qeq :pre + +[Description:] + +Perform the charge equilibration (QEq) method as described in "(Rappe +and Goddard)"_#Rappe and formulated in "(Nakano)"_#Nakano (also +known as the matrix inversion method) +and in "(Rick and Stuart)"_#Rick (also known as the extended +Lagrangian method) based on the electronegativity equilization principle. +These fixes can be used with any potential in LAMMPS, so long as it defines and +uses charges on each atom and that QEq parameters are provided. + +IMPORTANT NOTE: The "fix qeq/comb"_fix_qeq_comb.html +command should be used to perform charge equliibration with the "COMB +potential"_pair_comb.html. The "fix qeq/reax"_fix_qeq_reax.html +command can be used to perform charge equilibration with the "ReaxFF force +field"_pair_reax_c.html, although fix qeq/shielded yields exact same +results as fix qeq/reax if {Nevery}, cutoff}, and {tolerance} are the same. + +The QEq method minimizes the electrostatic energy of the system (or +equalizes the derivative of energy with respect to charge of all the +atoms) by adjusting the partial charge on individual atoms based on +interactions with their neighbors within {cutoff}. +It reqires some parameters for each atom type provided in a file +specified by {params}. First line of the file should be the unit +style of these parameters. These +fixes support real, metal, si, cgs, and electron units. Using lj, +micro, and nano units will result in an error. +Each of the following lines should be formatted as follows: + +itype chi eta gamma zeta qcore :pre + +where {itype} is the atom type from 1 to Ntypes, {chi} denotes the +electronegativity in energy units, {eta} denotes the self-Coulomb +potential in energy units, {gamma} denotes the shielded Coulomb +constant defined by "ReaxFF force field"_#vanDuin in distance units, +{zeta} denotes the Slater type orbital exponent defined by the +"Streitz-Mintmire"_#Streitz potential (not yet available in LAMMPS) +in reverse distance units, and {qcore} denotes the charge of the +nucleus defined by the Streitz-Mintmire potential in charge units. + +The {qeq/point} style describes partial charges on atoms as point charges. +Interaction between a pair of charged particles is 1/r, which is the simplest +description of the interaction between charges. Only {chi} and {eta} +parameters in the {params} file are used. Note that Coulomb catastrophe +can occur if repulsion between the pair of charged particles is too weak. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. + +The {qeq/shielded} style describes partial charges on atoms also as point +charges, but uses a shielded Coulomb potential to describe +the interaction between a pair of charged particles. Interaction through +the shielded Coulomb is given by equation (13) of the +"ReaxFF force field"_#vanDuin paper. The shielding accounts for charge overlap +between charged particles at small separation. This style is the same as +"fix qeq/reax"_fix_qeq_reax.html, and can be used with +"pair_style reax/c"_pair_reax_c.html. Only {chi}, {eta}, and {gamma} parameters +in the {params} file are used. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. + +The {qeq/slater} style describes partial charges on atoms as spherical +charge densities centered around atoms via the Slater 1{s} orbital, so that +the interaction between a pair of charged particles is the product of two +Slater 1{s} orbitals. The expression for the Slater 1{s} orbital is given under +equation (6) of the "Streitz-Mintmire"_#Streitz paper. {chi}, {eta}, {zeta}, +and {qcore} parameters in the {params} file are used. +This style solves partial charges on atoms via the matrix inversion method. +A tolerance of 1.0e-6 is usually a good number. + +The {qeq/dynamic} style describes partial charges on atoms as point charges +that interact through 1/r, but the extended Lagrangian method is used to solve +partial charges on atoms. Only {chi} and {eta} parameters in the {params} file +are used. Note that Coulomb catastrophe can occur if repulsion between the +pair of charged particles is too weak. +A tolerance of 1.0e-3 is usually a good number. + +Note that {qeq/point}, {qeq/shielded}, and {qeq/slater} describe different charge +models, whereas the matrix inversion method and the extended Lagrangian method +({qeq/dynamic}) are different solvers. + +Note that the {qeq/point} and the {qeq/dynamic} styles both describe charges as +point charges that interact through 1/r relationship, but solve partial charges +on atoms using different solvers. {qeq/point} and the {qeq/dynamic} styles should +yield comparable results if the QEq parameters and {Nevery}, cutoff}, +and {tolerance} are the same. {qeq/point} is typically faster, but {qeq/dynamic} +scales better on larger sizes. + +IMPORTANT NOTE: To avoid the evaluation of the derivative of charge with +respect to position, which is typically ill-defined, the system should have a +zero net charge. + +IMPORTANT NOTE: Developing QEq parameters (chi, eta, gamma, zeta, and qcore) +is an "art". Charges on atoms are not guaranteed to equilibrate with arbitrary +choices of these parameters. We do not develop these QEq paramters. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about these fixes is written to "binary restart +files"_restart.html. No global scalar or vector or per-atom +quantities are stored by these fixes for access by various "output +commands"_Section_howto.html#howto_15. No parameter of these fixes can +be used with the {start/stop} keywords of the "run"_run.html command. + +Thexe fixes are invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +These fixes are part of the USER-QEQ package. They are only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"fix qeq/reax"_fix_qeq_reax.html +"fix qeq/comb"_fix_qeq_comb.html + +[Default:] none + +:line + +:link(Rappe) +[(Rappe and Goddard)] A. K. Rappe and W. A. Goddard III, J Physical Chemistry, 105, +3358-3363 (1991). + +:link(Nakano) +[(Nakano)] A. Nakano, Computer Physics Communications, 104, 59-69 (1997). + +:link(Rick) +[(Rick and Stuart)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chemical Physics +101, 16141 (1994). + +:link(Streitz) +[(Streitz-Mintmire)] F. H. Streitz, J. W. Mintmire, Physical Review B, 50, +16, 11996 (1994) + +:link(vanDuin) +[(ReaxFF)] A. C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J +Physical Chemistry, 105, 9396-9049 (2001)