Merge branch 'develop' into distributed-grids

# Conflicts:
#	doc/src/Developer_utils.rst
#	doc/src/dump.rst
#	doc/src/fix_ave_chunk.rst
#	src/utils.h
This commit is contained in:
Axel Kohlmeyer
2022-09-12 18:31:29 -04:00
524 changed files with 298740 additions and 6598 deletions

View File

@ -3,9 +3,11 @@ name: "Native Windows Compilation and Unit Tests"
on: on:
push: push:
branches: [ develop ] branches:
- develop
pull_request: pull_request:
branches: [ $default-branch ] branches:
- develop
workflow_dispatch: workflow_dispatch:

103
.github/workflows/coverity.yml vendored Normal file
View File

@ -0,0 +1,103 @@
name: "Run Coverity Scan"
on:
schedule:
- cron: "0 0 * * FRI"
workflow_dispatch:
jobs:
analyze:
name: Analyze
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
container:
image: lammps/buildenv:ubuntu20.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Create Build and Download Folder
run: mkdir build download
- name: Cache Coverity
id: cache-coverity
uses: actions/cache@v3
with:
path: ./download/
key: ${{ runner.os }}-download-${{ hashFiles('**/coverity_tool.*') }}
- name: Download Coverity if necessary
if: steps.cache-coverity.outputs.cache-hit != 'true'
working-directory: download
run: |
wget -nv https://scan.coverity.com/download/linux64 --post-data "token=${{ secrets.COVERITY_TOKEN }}&project=LAMMPS" -O coverity_tool.tgz
wget -nv https://scan.coverity.com/download/linux64 --post-data "token=${{ secrets.COVERITY_TOKEN }}&project=LAMMPS&md5=1" -O coverity_tool.md5
echo " coverity_tool.tgz" >> coverity_tool.md5
md5sum -c coverity_tool.md5
- name: Setup Coverity
run: |
tar xzf download/coverity_tool.tgz
ln -s cov-analysis-linux64-* coverity
- name: Configure LAMMPS via CMake
shell: bash
working-directory: build
run: |
cmake \
-C ../cmake/presets/clang.cmake \
-C ../cmake/presets/most.cmake \
-C ../cmake/presets/kokkos-openmp.cmake \
-D CMAKE_BUILD_TYPE="RelWithDebug" \
-D CMAKE_TUNE_FLAGS="-Wall -Wextra -Wno-unused-result" \
-D BUILD_MPI=on \
-D BUILD_OMP=on \
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_SIZES=SMALLBIG \
-D LAMMPS_EXCEPTIONS=off \
-D PKG_MESSAGE=on \
-D PKG_MPIIO=on \
-D PKG_ATC=on \
-D PKG_AWPMD=on \
-D PKG_BOCS=on \
-D PKG_EFF=on \
-D PKG_H5MD=on \
-D PKG_INTEL=on \
-D PKG_LATBOLTZ=on \
-D PKG_MANIFOLD=on \
-D PKG_MGPT=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=on \
-D PKG_MOLFILE=on \
-D PKG_NETCDF=on \
-D PKG_PTM=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-D PKG_TALLY=on \
../cmake
- name: Run Coverity Scan
shell: bash
working-directory: build
run: |
export PATH=$GITHUB_WORKSPACE/coverity/bin:$PATH
cov-build --dir cov-int cmake --build . --parallel 2
- name: Create tarball with scan results
shell: bash
working-directory: build
run: tar czf lammps.tgz cov-int
- name: Upload scan result to Coverity
shell: bash
run: |
curl --form token=${{ secrets.COVERITY_TOKEN }} \
--form email=${{ secrets.COVERITY_EMAIL }} \
--form file=@build/lammps.tgz \
--form version=${{ github.sha }} \
--form description="LAMMPS automated build" \
https://scan.coverity.com/builds?project=LAMMPS

View File

@ -3,9 +3,11 @@ name: "Unittest for MacOS"
on: on:
push: push:
branches: [ develop ] branches:
- develop
pull_request: pull_request:
branches: [ $default-branch ] branches:
- develop
workflow_dispatch: workflow_dispatch:

View File

@ -376,6 +376,7 @@ pkg_depends(DIELECTRIC EXTRA-PAIR)
pkg_depends(CG-DNA MOLECULE) pkg_depends(CG-DNA MOLECULE)
pkg_depends(CG-DNA ASPHERE) pkg_depends(CG-DNA ASPHERE)
pkg_depends(ELECTRODE KSPACE) pkg_depends(ELECTRODE KSPACE)
pkg_depends(EXTRA-MOLECULE MOLECULE)
# detect if we may enable OpenMP support by default # detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF) set(BUILD_OMP_DEFAULT OFF)

View File

@ -110,14 +110,16 @@ function(FetchPotentials pkgfolder potfolder)
math(EXPR plusone "${blank}+1") math(EXPR plusone "${blank}+1")
string(SUBSTRING ${line} 0 ${blank} pot) string(SUBSTRING ${line} 0 ${blank} pot)
string(SUBSTRING ${line} ${plusone} -1 sum) string(SUBSTRING ${line} ${plusone} -1 sum)
if(EXISTS ${LAMMPS_POTENTIALS_DIR}/${pot}) if(EXISTS "${LAMMPS_POTENTIALS_DIR}/${pot}")
file(MD5 "${LAMMPS_POTENTIALS_DIR}/${pot}" oldsum) file(MD5 "${LAMMPS_POTENTIALS_DIR}/${pot}" oldsum)
endif() endif()
if(NOT sum STREQUAL oldsum) if(NOT sum STREQUAL oldsum)
message(STATUS "Checking external potential ${pot} from ${LAMMPS_POTENTIALS_URL}") message(STATUS "Downloading external potential ${pot} from ${LAMMPS_POTENTIALS_URL}")
file(DOWNLOAD "${LAMMPS_POTENTIALS_URL}/${pot}.${sum}" "${CMAKE_BINARY_DIR}/${pot}" string(MD5 TMP_EXT "${CMAKE_BINARY_DIR}")
file(DOWNLOAD "${LAMMPS_POTENTIALS_URL}/${pot}.${sum}" "${CMAKE_BINARY_DIR}/${pot}.${TMP_EXT}"
EXPECTED_HASH MD5=${sum} SHOW_PROGRESS) EXPECTED_HASH MD5=${sum} SHOW_PROGRESS)
file(COPY "${CMAKE_BINARY_DIR}/${pot}" DESTINATION ${LAMMPS_POTENTIALS_DIR}) file(COPY "${CMAKE_BINARY_DIR}/${pot}.${TMP_EXT}" DESTINATION "${LAMMPS_POTENTIALS_DIR}")
file(RENAME "${LAMMPS_POTENTIALS_DIR}/${pot}.${TMP_EXT}" "${LAMMPS_POTENTIALS_DIR}/${pot}")
endif() endif()
endforeach() endforeach()
endif() endif()

View File

@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
if(DOWNLOAD_MDI) if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own") message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.1.tar.gz" CACHE STRING "URL for MDI tarball") set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.11.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "f9505fccd4c79301a619f6452dad4ad9" CACHE STRING "MD5 checksum for MDI tarball") set(MDI_MD5 "3791fe5081405c14aac07d4687f1cc58" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL) mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5) mark_as_advanced(MDI_MD5)
enable_language(C) enable_language(C)

View File

@ -3,6 +3,13 @@
# prefer flang over gfortran, if available # prefer flang over gfortran, if available
find_program(CLANG_FORTRAN NAMES flang gfortran f95) find_program(CLANG_FORTRAN NAMES flang gfortran f95)
set(ENV{OMPI_FC} ${CLANG_FORTRAN}) set(ENV{OMPI_FC} ${CLANG_FORTRAN})
get_filename_component(_tmp_fc ${CLANG_FORTRAN} NAME)
if (_tmp_fc STREQUAL "flang")
set(FC_STD_VERSION "-std=f2018")
set(BUILD_MPI OFF)
else()
set(FC_STD_VERSION "-std=f2003")
endif()
set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE) set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
@ -10,9 +17,9 @@ set(CMAKE_Fortran_COMPILER ${CLANG_FORTRAN} CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g -std=f2003" CACHE STRING "" FORCE) set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g ${FC_STD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG -std=f2003" CACHE STRING "" FORCE) set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG ${FC_STD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE) set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG ${FC_STD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE) set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE) set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)

View File

@ -61,6 +61,7 @@ An alphabetic list of general LAMMPS commands.
* :doc:`kspace_modify <kspace_modify>` * :doc:`kspace_modify <kspace_modify>`
* :doc:`kspace_style <kspace_style>` * :doc:`kspace_style <kspace_style>`
* :doc:`label <label>` * :doc:`label <label>`
* :doc:`labelmap <labelmap>`
* :doc:`lattice <lattice>` * :doc:`lattice <lattice>`
* :doc:`log <log>` * :doc:`log <log>`
* :doc:`mass <mass>` * :doc:`mass <mass>`

View File

@ -44,6 +44,7 @@ OPT.
* :doc:`harmonic (iko) <bond_harmonic>` * :doc:`harmonic (iko) <bond_harmonic>`
* :doc:`harmonic/shift (o) <bond_harmonic_shift>` * :doc:`harmonic/shift (o) <bond_harmonic_shift>`
* :doc:`harmonic/shift/cut (o) <bond_harmonic_shift_cut>` * :doc:`harmonic/shift/cut (o) <bond_harmonic_shift_cut>`
* :doc:`mesocnt <bond_mesocnt>`
* :doc:`mm3 <bond_mm3>` * :doc:`mm3 <bond_mm3>`
* :doc:`morse (o) <bond_morse>` * :doc:`morse (o) <bond_morse>`
* :doc:`nonlinear (o) <bond_nonlinear>` * :doc:`nonlinear (o) <bond_nonlinear>`
@ -92,6 +93,7 @@ OPT.
* :doc:`fourier/simple (o) <angle_fourier_simple>` * :doc:`fourier/simple (o) <angle_fourier_simple>`
* :doc:`gaussian <angle_gaussian>` * :doc:`gaussian <angle_gaussian>`
* :doc:`harmonic (iko) <angle_harmonic>` * :doc:`harmonic (iko) <angle_harmonic>`
* :doc:`mesocnt <angle_mesocnt>`
* :doc:`mm3 <angle_mm3>` * :doc:`mm3 <angle_mm3>`
* :doc:`quartic (o) <angle_quartic>` * :doc:`quartic (o) <angle_quartic>`
* :doc:`spica (o) <angle_spica>` * :doc:`spica (o) <angle_spica>`

View File

@ -201,6 +201,7 @@ OPT.
* :doc:`meam/spline (o) <pair_meam_spline>` * :doc:`meam/spline (o) <pair_meam_spline>`
* :doc:`meam/sw/spline <pair_meam_sw_spline>` * :doc:`meam/sw/spline <pair_meam_sw_spline>`
* :doc:`mesocnt <pair_mesocnt>` * :doc:`mesocnt <pair_mesocnt>`
* :doc:`mesocnt/viscous <pair_mesocnt>`
* :doc:`mesont/tpm <pair_mesont_tpm>` * :doc:`mesont/tpm <pair_mesont_tpm>`
* :doc:`mgpt <pair_mgpt>` * :doc:`mgpt <pair_mgpt>`
* :doc:`mie/cut (g) <pair_mie>` * :doc:`mie/cut (g) <pair_mie>`

View File

@ -175,6 +175,12 @@ and parsing files or arguments.
.. doxygenfunction:: is_double .. doxygenfunction:: is_double
:project: progguide :project: progguide
.. doxygenfunction:: is_id
:project: progguide
.. doxygenfunction:: is_type
:project: progguide
Potential file functions Potential file functions
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
@ -208,6 +214,9 @@ Argument processing
.. doxygenfunction:: parse_gridid .. doxygenfunction:: parse_gridid
:project: progguide :project: progguide
.. doxygenfunction:: expand_type
:project: progguide
Convenience functions Convenience functions
^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^

View File

@ -5453,6 +5453,11 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
Mass command must set a type from 1-N where N is the number of atom Mass command must set a type from 1-N where N is the number of atom
types. types.
*Invalid label2type() function syntax in variable formula*
The first argument must be a label map kind (atom, bond, angle,
dihedral, or improper) and the second argument must be a valid type
label that has been assigned to a numeric type.
*Invalid use of library file() function* *Invalid use of library file() function*
This function is called through the library interface. This This function is called through the library interface. This
error should not occur. Contact the developers if it does. error should not occur. Contact the developers if it does.
@ -5585,9 +5590,18 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*LJ6 off not supported in pair_style buck/long/coul/long* *LJ6 off not supported in pair_style buck/long/coul/long*
Self-explanatory. Self-explanatory.
*Label map is incomplete: all types must be assigned a unique type label*
For a given type-kind (atom types, bond types, etc.) to be written to
the data file, all associated types must be assigned a type label, and
each type label can be assigned to only one numeric type.
*Label wasn't found in input script* *Label wasn't found in input script*
Self-explanatory. Self-explanatory.
*Labelmap command before simulation box is defined*
The labelmap command cannot be used before a read_data,
read_restart, or create_box command.
*Lattice orient vectors are not orthogonal* *Lattice orient vectors are not orthogonal*
The three specified lattice orientation vectors must be mutually The three specified lattice orientation vectors must be mutually
orthogonal. orthogonal.
@ -5863,6 +5877,12 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Must not have multiple fixes change box parameter ...* *Must not have multiple fixes change box parameter ...*
Self-explanatory. Self-explanatory.
*Must read Angle Type Labels before Angles*
An Angle Type Labels section of a data file must come before the Angles section.
*Must read Atom Type Labels before Atoms*
An Atom Type Labels section of a data file must come before the Atoms section.
*Must read Atoms before Angles* *Must read Atoms before Angles*
The Atoms section of a data file must come before an Angles section. The Atoms section of a data file must come before an Angles section.
@ -5893,6 +5913,15 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
The Atoms section of a data file must come before a Velocities The Atoms section of a data file must come before a Velocities
section. section.
*Must read Bond Type Labels before Bonds*
A Bond Type Labels section of a data file must come before the Bonds section.
*Must read Dihedral Type Labels before Dihedrals*
An Dihedral Type Labels section of a data file must come before the Dihedrals section.
*Must read Improper Type Labels before Impropers*
An Improper Type Labels section of a data file must come before the Impropers section.
*Must re-specify non-restarted pair style (xxx) after read_restart* *Must re-specify non-restarted pair style (xxx) after read_restart*
For pair styles, that do not store their settings in a restart file, For pair styles, that do not store their settings in a restart file,
it must be defined with a new 'pair_style' command after read_restart. it must be defined with a new 'pair_style' command after read_restart.
@ -7849,6 +7878,10 @@ keyword to allow for additional bonds to be formed
Number of local atoms times number of columns must fit in a 32-bit Number of local atoms times number of columns must fit in a 32-bit
integer for dump. integer for dump.
*Topology type exceeds system topology type*
The number of bond, angle, etc types exceeds the system setting. See
the create_box or read_data command for how to specify these values.
*Tree structure in joint connections* *Tree structure in joint connections*
Fix poems cannot (yet) work with coupled bodies whose joints connect Fix poems cannot (yet) work with coupled bodies whose joints connect
the bodies in a tree structure. the bodies in a tree structure.
@ -7873,6 +7906,13 @@ keyword to allow for additional bonds to be formed
*Two groups cannot be the same in fix spring couple* *Two groups cannot be the same in fix spring couple*
Self-explanatory. Self-explanatory.
*The %s type label %s is already in use for type %s*
For a given type-kind (atom types, bond types, etc.), a given type
label can be assigned to only one numeric type.
*Type label string %s for %s type %s is invalid*
See the labelmap command documentation for valid type labels.
*Unable to initialize accelerator for use* *Unable to initialize accelerator for use*
There was a problem initializing an accelerator for the gpu package There was a problem initializing an accelerator for the gpu package

View File

@ -34,6 +34,7 @@ Settings howto
:maxdepth: 1 :maxdepth: 1
Howto_2d Howto_2d
Howto_type_labels
Howto_triclinic Howto_triclinic
Howto_thermostat Howto_thermostat
Howto_barostat Howto_barostat

View File

@ -0,0 +1,126 @@
Type labels
===========
.. versionadded:: TBD
Each atom in LAMMPS has an associated numeric atom type. Similarly,
each bond, angle, dihedral, and improper is assigned a bond type,
angle type, and so on. The primary use of these types is to map
potential (force field) parameters to the interactions of the atom,
bond, angle, dihedral, and improper.
By default, type values are entered as integers from 1 to Ntypes
wherever they appear in LAMMPS input or output files. The total number
Ntypes for each interaction is "locked in" when the simulation box
is created.
A recent addition to LAMMPS is the option to use strings - referred
to as type labels - as an alternative. Using type labels instead of
numeric types can be advantageous in various scenarios. For example,
type labels can make inputs more readable and generic (i.e. usable through
the :doc:`include command <include>` for different systems with different
numerical values assigned to types. This generality also applies to
other inputs like data files read by :doc:`read_data <read_data>` or
molecule template files read by the :doc:`molecule <molecule>`
command. See below for a list of other commands that can use
type labels in different ways.
LAMMPS will *internally* continue to use numeric types, which means
that many previous restrictions still apply. For example, the total
number of types is locked in when creating the simulation box, and
potential parameters for each type must be provided even if not used
by any interactions.
A collection of type labels for all type-kinds (atom types, bond types,
etc.) is stored as a "label map" which is simply a list of numeric types
and their associated type labels. Within a type-kind, each type label
must be unique. It can be assigned to only one numeric type. To read
and write type labels to data files for a given type-kind, *all*
associated numeric types need have a type label assigned. Partial
maps can be saved with the :doc:`labelmap write <labelmap>` command
and read back with the :doc:`include <include>` command.
Valid type labels can contain most ASCII characters, but cannot start
with a number, a '#', or a '*'. Also, labels must not contain whitespace
characters. When using the :doc:`labelmap command <labelmap>` in the
LAMMPS input, if certain characters appear in the type label, such as
the single (') or double (") quote or the '#' character, the label
must be put in either double, single, or triple (""") quotes. Triple
quotes allow for the most generic type label strings, but they require
to have a leading and trailing blank space. When defining type labels
the blanks will be ignored. Example:
.. code-block:: LAMMPS
labelmap angle 1 """ C1'-C2"-C3# """
This command will map the string ```C1'-C2"-C3#``` to the angle type 1.
There are two ways to define label maps. One is via the :doc:`labelmap
<labelmap>` command. The other is via the :doc:`read_data <read_data>`
command. A data file can have sections such as *Atom Type Labels*, *Bond
Type Labels*, etc., which assign type labels to numeric types. The
label map can be written out to data files by the :doc:`write_data
<write_data>` command. This map is also written to and read from
restart files, by the :doc:`write_restart <write_restart>` and
:doc:`read_restart <read_restart>` commands.
----------
Use of type labels in LAMMPS input or output
""""""""""""""""""""""""""""""""""""""""""""
Many LAMMPS input script commands that take a numeric type as an
argument can use the associated type label instead. If a type label
is not defined for a particular numeric type, only its numeric type
can be used.
This example assigns labels to the atom types, and then uses the type
labels to redefine the pair coefficients.
.. code-block:: LAMMPS
pair_coeff 1 2 1.0 1.0 # numeric types
labelmap atom 1 C 2 H
pair_coeff C H 1.0 1.0 # type labels
Adding support for type labels to various commands is an ongoing
project. If an input script command (or a section in a file read by a
command) allows substituting a type label for a numeric type argument,
it will be explicitly mentioned in that command's documentation page.
As a temporary measure, input script commands can take advantage of
variables and how they can be expanded during processing of the input.
The variables can use functions that will translate type label strings
to their respective number as defined in the current label map. See the
:doc:`variable <variable>` command for details.
For example, here is how the pair_coeff command could be used with
type labels if it did not yet support them, either with an explicit
variable command or an implicit variable used in the pair_coeff
command.
.. code-block:: LAMMPS
labelmap atom 1 C 2 H
variable atom1 equal label2type(atom,C)
variable atom2 equal label2type(atom,H)
pair_coeff ${atom1} ${atom2} 1.0 1.0
.. code-block:: LAMMPS
labelmap atom 1 C 2 H
pair_coeff $(label2type(atom,C)) $(label2type(atom,H)) 80.0 1.2
----------
Commands that can use label types
"""""""""""""""""""""""""""""""""
Any workflow that involves reading multiple data files, molecule
templates or a combination of the two can be streamlined by using type
labels instead of numeric types, because types are automatically synced
between the files. The creation of simulation-ready reaction templates
for :doc:`fix bond/react <fix_bond_react>` is much simpler when using
type labels, and results in templates that can be used without
modification in multiple simulations or different systems.

View File

@ -932,6 +932,10 @@ EXTRA-MOLECULE package
Additional bond, angle, dihedral, and improper styles that are less commonly used. Additional bond, angle, dihedral, and improper styles that are less commonly used.
**Install:**
To use this package, also the :ref:`MOLECULE <PKG-MOLECULE>` package needs to be installed.
**Supporting info:** **Supporting info:**
* src/EXTRA-MOLECULE: filenames -> commands * src/EXTRA-MOLECULE: filenames -> commands
@ -1404,7 +1408,7 @@ This package has :ref:`specific installation instructions <machdyn>` on the :doc
* src/MACHDYN: filenames -> commands * src/MACHDYN: filenames -> commands
* src/MACHDYN/README * src/MACHDYN/README
* doc/PDF/MACHDYN_LAMMPS_userguide.pdf * `doc/PDF/MACHDYN_LAMMPS_userguide.pdf <PDF/MACHDYN_LAMMPS_userguide.pdf>`_
* examples/PACKAGES/machdyn * examples/PACKAGES/machdyn
* https://www.lammps.org/movies.html#smd * https://www.lammps.org/movies.html#smd
@ -1556,31 +1560,40 @@ MESONT package
**Contents:** **Contents:**
MESONT is a LAMMPS package for simulation of nanomechanics of MESONT is a LAMMPS package for simulation of nanomechanics of nanotubes
nanotubes (NTs). The model is based on a coarse-grained representation (NTs). The model is based on a coarse-grained representation of NTs as
of NTs as "flexible cylinders" consisting of a variable number of "flexible cylinders" consisting of a variable number of
segments. Internal interactions within a NT and the van der Waals segments. Internal interactions within a NT and the van der Waals
interaction between the tubes are described by a mesoscopic force field interaction between the tubes are described by a mesoscopic force field
designed and parameterized based on the results of atomic-level designed and parameterized based on the results of atomic-level
molecular dynamics simulations. The description of the force field is molecular dynamics simulations. The description of the force field is
provided in the papers listed below. This package contains two provided in the papers listed below.
independent implementations of this model: :doc:`pair_style mesocnt
<pair_mesocnt>` is a (minimal) C++ implementation, and :doc:`pair_style This package contains two independent implementations of this model:
mesont/tpm <pair_mesont_tpm>` is a more general and feature rich :doc:`pair_style mesont/tpm <pair_mesont_tpm>` is the original
implementation based on a Fortran library in the ``lib/mesont`` folder. implementation of the model based on a Fortran library in the
``lib/mesont`` folder. The second implementation is provided by the
mesocnt styles (:doc:`bond_style mesocnt <bond_mesocnt>`,
:doc:`angle_style mesocnt <angle_mesocnt>` and :doc:`pair_style mesocnt
<pair_mesocnt>`). The mesocnt implementation has the same features as
the original implementation with the addition of friction, but is
directly implemented in C++, interfaces more cleanly with general LAMMPS
functionality, and is typically faster. It also does not require its own
atom style and can be installed without any external libraries.
**Download of potential files:** **Download of potential files:**
The potential files for these pair styles are *very* large and thus The potential files for these pair styles are *very* large and thus are
are not included in the regular downloaded packages of LAMMPS or the not included in the regular downloaded packages of LAMMPS or the git
git repositories. Instead, they will be automatically downloaded repositories. Instead, they will be automatically downloaded from a web
from a web server when the package is installed for the first time. server when the package is installed for the first time.
**Authors of the *mesont* styles:** **Authors of the *mesont* styles:**
Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University of Alabama), Leonid V. Zhigilei (University of Virginia) Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University
of Alabama), Leonid V. Zhigilei (University of Virginia)
**Author of the *mesocnt* pair style:** **Author of the *mesocnt* styles:**
Philipp Kloza (U Cambridge) Philipp Kloza (U Cambridge)
**Supporting info:** **Supporting info:**
@ -1590,6 +1603,8 @@ Philipp Kloza (U Cambridge)
* :doc:`atom_style mesont <atom_style>` * :doc:`atom_style mesont <atom_style>`
* :doc:`pair_style mesont/tpm <pair_mesont_tpm>` * :doc:`pair_style mesont/tpm <pair_mesont_tpm>`
* :doc:`compute mesont <compute_mesont>` * :doc:`compute mesont <compute_mesont>`
* :doc:`bond_style mesocnt <bond_mesocnt>`
* :doc:`angle_style mesocnt <angle_mesocnt>`
* :doc:`pair_style mesocnt <pair_mesocnt>` * :doc:`pair_style mesocnt <pair_mesocnt>`
* examples/PACKAGES/mesont * examples/PACKAGES/mesont
* tools/mesont * tools/mesont
@ -2692,7 +2707,7 @@ Dynamics, Ernst Mach Institute, Germany).
* src/SPH: filenames -> commands * src/SPH: filenames -> commands
* src/SPH/README * src/SPH/README
* doc/PDF/SPH_LAMMPS_userguide.pdf * `doc/PDF/SPH_LAMMPS_userguide.pdf <PDF/SPH_LAMMPS_userguide.pdf>`_
* examples/PACKAGES/sph * examples/PACKAGES/sph
* https://www.lammps.org/movies.html#sph * https://www.lammps.org/movies.html#sph

View File

@ -6,7 +6,7 @@ page. The accelerated styles take the same arguments and should
produce the same results, except for round-off and precision issues. produce the same results, except for round-off and precision issues.
These accelerated styles are part of the GPU, INTEL, KOKKOS, These accelerated styles are part of the GPU, INTEL, KOKKOS,
OPENMP and OPT packages, respectively. They are only enabled if OPENMP, and OPT packages, respectively. They are only enabled if
LAMMPS was built with those packages. See the :doc:`Build package <Build_package>` page for more info. LAMMPS was built with those packages. See the :doc:`Build package <Build_package>` page for more info.
You can specify the accelerated styles explicitly in your input script You can specify the accelerated styles explicitly in your input script

View File

@ -10,7 +10,7 @@ Syntax
angle_coeff N args angle_coeff N args
* N = angle type (see asterisk form below) * N = numeric angle type (see asterisk form below), or type label
* args = coefficients for one or more angle types * args = coefficients for one or more angle types
Examples Examples
@ -22,6 +22,9 @@ Examples
angle_coeff * 5.0 angle_coeff * 5.0
angle_coeff 2*10 5.0 angle_coeff 2*10 5.0
labelmap angle 1 hydroxyl
angle_coeff hydroxyl 300.0 107.0
Description Description
""""""""""" """""""""""
@ -30,18 +33,24 @@ The number and meaning of the coefficients depends on the angle style.
Angle coefficients can also be set in the data file read by the Angle coefficients can also be set in the data file read by the
:doc:`read_data <read_data>` command or in a restart file. :doc:`read_data <read_data>` command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can :math:`N` can be specified in one of two ways. An explicit numeric
be used, as in the first example above. Or a wild-card asterisk can be value can be used, as in the first example above. Or :math:`N` can be a
used to set the coefficients for multiple angle types. This takes the type label, which is an alphanumeric string defined by the
form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of angle types, :doc:`labelmap <labelmap>` command or in a section of a data file read
then an asterisk with no numeric values means all types from 1 to N. A by the :doc:`read_data <read_data>` command.
leading asterisk means all types from 1 to n (inclusive). A trailing
asterisk means all types from n to N (inclusive). A middle asterisk
means all types from m to n (inclusive).
Note that using an :doc:`angle_coeff <angle_coeff>` command can override a previous setting For numeric values only, a wild-card asterisk can be used to set the
for the same angle type. For example, these commands set the coeffs coefficients for multiple angle types. This takes the form "\*" or
for all angle types, then overwrite the coeffs for just angle type 2: "\*n" or "n\*" or "m\*n". If :math:`N` is the number of angle types,
then an asterisk with no numeric values means all types from 1 to
:math:`N`. A leading asterisk means all types from 1 to n (inclusive).
A trailing asterisk means all types from n to :math:`N` (inclusive). A
middle asterisk means all types from m to n (inclusive).
Note that using an :doc:`angle_coeff <angle_coeff>` command can
override a previous setting for the same angle type. For example,
these commands set the coeffs for all angle types, then overwrite the
coeffs for just angle type 2:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -49,11 +58,11 @@ for all angle types, then overwrite the coeffs for just angle type 2:
angle_coeff 2 50.0 107.0 angle_coeff 2 50.0 107.0
A line in a data file that specifies angle coefficients uses the exact A line in a data file that specifies angle coefficients uses the exact
same format as the arguments of the :doc:`angle_coeff <angle_coeff>` command in an input same format as the arguments of the :doc:`angle_coeff <angle_coeff>`
script, except that wild-card asterisks should not be used since command in an input script, except that wild-card asterisks should not
coefficients for all N types must be listed in the file. For example, be used since coefficients for all :math:`N` types must be listed in the
under the "Angle Coeffs" section of a data file, the line that file. For example, under the "Angle Coeffs" section of a data file, the
corresponds to the first example above would be listed as line that corresponds to the first example above would be listed as
.. parsed-literal:: .. parsed-literal::
@ -61,15 +70,14 @@ corresponds to the first example above would be listed as
The :doc:`angle_style class2 <angle_class2>` is an exception to this The :doc:`angle_style class2 <angle_class2>` is an exception to this
rule, in that an additional argument is used in the input script to rule, in that an additional argument is used in the input script to
allow specification of the cross-term coefficients. See its allow specification of the cross-term coefficients. See its doc page
doc page for details. for details.
---------- ----------
The list of all angle styles defined in LAMMPS is given on the The list of all angle styles defined in LAMMPS is given on the
:doc:`angle_style <angle_style>` doc page. They are also listed in more :doc:`angle_style <angle_style>` doc page. They are also listed in more
compact form on the :ref:`Commands angle <angle>` doc compact form on the :ref:`Commands angle <angle>` doc page.
page.
On either of those pages, click on the style to display the formula it On either of those pages, click on the style to display the formula it
computes and its coefficients as specified by the associated computes and its coefficients as specified by the associated

146
doc/src/angle_mesocnt.rst Normal file
View File

@ -0,0 +1,146 @@
.. index:: angle_style mesocnt
angle_style mesocnt command
===========================
Syntax
""""""
.. code-block:: LAMMPS
angle_style mesocnt
Examples
""""""""
.. code-block:: LAMMPS
angle_style mesocnt
angle_coeff 1 buckling C 10 10 20.0
angle_coeff 4 harmonic C 8 4 10.0
angle_coeff 2 buckling custom 400.0 50.0 5.0
angle_coeff 1 harmonic custom 300.0
Description
"""""""""""
.. versionadded:: TBD
The *mesocnt* angle style uses the potential
.. math::
E = K_\text{H} \Delta \theta^2, \qquad |\Delta \theta| < \Delta
\theta_\text{B} \\
E = K_\text{H} \Delta \theta_\text{B}^2 +
K_\text{B} (\Delta \theta - \Delta \theta_\text{B}), \qquad |\Delta
\theta| \geq \Delta \theta_\text{B}
where :math:`\Delta \theta = \theta - \pi` is the bending angle of the
nanotube, :math:`K_\text{H}` and :math:`K_\text{B}` are prefactors for
the harmonic and linear regime respectively and :math:`\Delta
\theta_\text{B}` is the buckling angle. Note that the usual 1/2 factor
for the harmonic potential is included in :math:`K_\text{H}`.
The style implements parameterization presets of :math:`K_\text{H}`,
:math:`K_\text{B}` and :math:`\Delta \theta_\text{B}` for mesoscopic
simulations of carbon nanotubes based on the atomistic simulations of
:ref:`(Srivastava) <Srivastava_2>` and buckling considerations of
:ref:`(Zhigilei) <Zhigilei1_1>`.
The following coefficients must be defined for each angle type via the
:doc:`angle_coeff <angle_coeff>` command as in the examples above, or
in the data file or restart files read by the :doc:`read_data
<read_data>` or :doc:`read_restart <read_restart>` commands:
* mode = *buckling* or *harmonic*
* preset = *C* or *custom*
* additional parameters depending on preset
If mode *harmonic* is chosen, the potential is simply harmonic and
does not switch to the linear term when the buckling angle is
reached. In *buckling* mode, the full piecewise potential is used.
Preset *C* is for carbon nanotubes, and the additional parameters are:
* chiral index :math:`n` (unitless)
* chiral index :math:`m` (unitless)
* :math:`r_0` (distance)
Here, :math:`r_0` is the equilibrium distance of the bonds included in
the angle, see :doc:`bond_style mesocnt <bond_mesocnt>`.
In harmonic mode with preset *custom*, the additional parameter is:
* :math:`K_\text{H}` (energy)
Hence, this setting is simply a wrapper for :doc:`bond_style harmonic
<bond_harmonic>` with an equilibrium angle of 180 degrees.
In harmonic mode with preset *custom*, the additional parameters are:
* :math:`K_\text{H}` (energy)
* :math:`K_\text{B}` (energy)
* :math:`\Delta \theta_\text{B}` (degrees)
:math:`\Delta \theta_\text{B}` is specified in degrees, but LAMMPS
converts it to radians internally; hence :math:`K_\text{H}` is
effectively energy per radian\^2 and :math:`K_\text{B}` is energy per
radian.
----------
In *buckling* mode, this angle style adds the *buckled* property to
all atoms in the simulation, which is an integer flag indicating
whether the bending angle at a given atom has exceeded :math:`\Delta
\theta_\text{B}`. It can be accessed as an atomic variable, e.g. for
custom dump commands, as *i_buckled*.
.. note::
If the initial state of the simulation contains buckled nanotubes
and :doc:`pair_style mesocnt <pair_mesocnt>` is used, the
*i_buckled* atomic variable needs to be initialized before the
pair_style is defined by doing a *run 0* command straight after the
angle_style command. See below for an example.
If CNTs are already buckled at the start of the simulation, this
script will correctly initialize *i_buckled*:
.. code-block:: LAMMPS
angle_style mesocnt
angle_coeff 1 buckling C 10 10 20.0
run 0
pair_style mesocnt 60.0
pair_coeff * * C_10_10.mesocnt 1
Restrictions
""""""""""""
This angle style can only be used if LAMMPS was built with the
MOLECULE and MESONT packages. See the :doc:`Build package
<Build_package>` doc page for more info.
Related commands
""""""""""""""""
:doc:`angle_coeff <angle_coeff>`
Default
"""""""
none
----------
.. _Srivastava_2:
**(Srivastava)** Zhigilei, Wei, Srivastava, Phys. Rev. B 71, 165417
(2005).
.. _Zhigilei1_1:
**(Zhigilei)** Volkov and Zhigilei, ACS Nano 4, 6187 (2010).

View File

@ -90,6 +90,7 @@ of (g,i,k,o,t) to indicate which accelerated styles exist.
* :doc:`fourier/simple <angle_fourier_simple>` - angle with a single cosine term * :doc:`fourier/simple <angle_fourier_simple>` - angle with a single cosine term
* :doc:`gaussian <angle_gaussian>` - multi-centered Gaussian-based angle potential * :doc:`gaussian <angle_gaussian>` - multi-centered Gaussian-based angle potential
* :doc:`harmonic <angle_harmonic>` - harmonic angle * :doc:`harmonic <angle_harmonic>` - harmonic angle
* :doc:`mesocnt <angle_mesocnt>` - piecewise harmonic and linear angle for bending-buckling of nanotubes
* :doc:`mm3 <angle_mm3>` - anharmonic angle * :doc:`mm3 <angle_mm3>` - anharmonic angle
* :doc:`quartic <angle_quartic>` - angle with cubic and quartic terms * :doc:`quartic <angle_quartic>` - angle with cubic and quartic terms
* :doc:`spica <angle_spica>` - harmonic angle with repulsive SPICA pair style between 1-3 atoms * :doc:`spica <angle_spica>` - harmonic angle with repulsive SPICA pair style between 1-3 atoms

View File

@ -10,7 +10,7 @@ Syntax
bond_coeff N args bond_coeff N args
* N = bond type (see asterisk form below) * N = numeric bond type (see asterisk form below), or type label
* args = coefficients for one or more bond types * args = coefficients for one or more bond types
Examples Examples
@ -21,7 +21,10 @@ Examples
bond_coeff 5 80.0 1.2 bond_coeff 5 80.0 1.2
bond_coeff * 30.0 1.5 1.0 1.0 bond_coeff * 30.0 1.5 1.0 1.0
bond_coeff 1*4 30.0 1.5 1.0 1.0 bond_coeff 1*4 30.0 1.5 1.0 1.0
bond_coeff 1 harmonic 200.0 1.0 bond_coeff 1 harmonic 200.0 1.0 (for bond_style hybrid)
labelmap bond 5 carbonyl
bond_coeff carbonyl 80.0 1.2
Description Description
""""""""""" """""""""""
@ -31,14 +34,19 @@ The number and meaning of the coefficients depends on the bond style.
Bond coefficients can also be set in the data file read by the Bond coefficients can also be set in the data file read by the
:doc:`read_data <read_data>` command or in a restart file. :doc:`read_data <read_data>` command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can :math:`N` can be specified in one of several ways. An explicit numeric
be used, as in the first example above. Or a wild-card asterisk can be value can be used, as in the first example above. Or :math:`N` can be a
used to set the coefficients for multiple bond types. This takes the type label, which is an alphanumeric string defined by the
form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of bond types, :doc:`labelmap <labelmap>` command or in a section of a data file read
then an asterisk with no numeric values means all types from 1 to N. A by the :doc:`read_data <read_data>` command.
For numeric values only, a wild-card asterisk can be used to set the
coefficients for multiple bond types. This takes the form "\*" or "\*n"
or "n\*" or "m\*n". If :math:`N` is the number of bond types, then an
asterisk with no numeric values means all types from 1 to :math:`N`. A
leading asterisk means all types from 1 to n (inclusive). A trailing leading asterisk means all types from 1 to n (inclusive). A trailing
asterisk means all types from n to N (inclusive). A middle asterisk asterisk means all types from n to :math:`N` (inclusive). A middle
means all types from m to n (inclusive). asterisk means all types from m to n (inclusive).
Note that using a bond_coeff command can override a previous setting Note that using a bond_coeff command can override a previous setting
for the same bond type. For example, these commands set the coeffs for the same bond type. For example, these commands set the coeffs
@ -52,8 +60,8 @@ for all bond types, then overwrite the coeffs for just bond type 2:
A line in a data file that specifies bond coefficients uses the exact A line in a data file that specifies bond coefficients uses the exact
same format as the arguments of the bond_coeff command in an input same format as the arguments of the bond_coeff command in an input
script, except that wild-card asterisks should not be used since script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example, coefficients for all :math:`N` types must be listed in the file. For
under the "Bond Coeffs" section of a data file, the line that example, under the "Bond Coeffs" section of a data file, the line that
corresponds to the first example above would be listed as corresponds to the first example above would be listed as
.. parsed-literal:: .. parsed-literal::

84
doc/src/bond_mesocnt.rst Normal file
View File

@ -0,0 +1,84 @@
.. index:: bond_style mesocnt
bond_style mesocnt command
===========================
Syntax
""""""
.. code-block:: LAMMPS
bond_style mesocnt
Examples
""""""""
.. code-block:: LAMMPS
bond_style mesocnt
bond_coeff 1 C 10 10 20.0
bond_coeff 4 custom 800.0 10.0
Description
"""""""""""
.. versionadded:: TBD
The *mesocnt* bond style is a wrapper for the :doc:`harmonic
<bond_harmonic>` style, and uses the potential
.. math::
E = K (r - r_0)^2
where :math:`r_0` is the equilibrium bond distance. Note that the
usual 1/2 factor is included in :math:`K`. The style implements
parameterization presets of :math:`K` for mesoscopic simulations of
carbon nanotubes based on the atomistic simulations of
:ref:`(Srivastava) <Srivastava_1>`.
Other presets can be readily implemented in the future.
The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data
<read_data>` or :doc:`read_restart <read_restart>` commands:
* preset = *C* or *custom*
* additional parameters depending on preset
Preset *C* is for carbon nanotubes, and the additional parameters are:
* chiral index :math:`n` (unitless)
* chiral index :math:`m` (unitless)
* :math:`r_0` (distance)
Preset *custom* is simply a direct wrapper for the :doc:`harmonic
<bond_harmonic>` style, and the additional parameters are:
* :math:`K` (energy/distance\^2)
* :math:`r_0` (distance)
Restrictions
""""""""""""
This bond style can only be used if LAMMPS was built with the MOLECULE
and MESONT packages. See the :doc:`Build package <Build_package>`
page for more info.
Related commands
""""""""""""""""
:doc:`bond_coeff <bond_coeff>`, :doc:`delete_bonds <delete_bonds>`
Default
"""""""
none
----------
.. _Srivastava_1:
**(Srivastava)** Zhigilei, Wei and Srivastava, Phys. Rev. B 71, 165417
(2005).

View File

@ -95,6 +95,7 @@ accelerated styles exist.
* :doc:`harmonic <bond_harmonic>` - harmonic bond * :doc:`harmonic <bond_harmonic>` - harmonic bond
* :doc:`harmonic/shift <bond_harmonic_shift>` - shifted harmonic bond * :doc:`harmonic/shift <bond_harmonic_shift>` - shifted harmonic bond
* :doc:`harmonic/shift/cut <bond_harmonic_shift_cut>` - shifted harmonic bond with a cutoff * :doc:`harmonic/shift/cut <bond_harmonic_shift_cut>` - shifted harmonic bond with a cutoff
* :doc:`mesocnt <bond_mesocnt>` - Harmonic bond wrapper with parameterization presets for nanotubes
* :doc:`mm3 <bond_mm3>` - MM3 anharmonic bond * :doc:`mm3 <bond_mm3>` - MM3 anharmonic bond
* :doc:`morse <bond_morse>` - Morse bond * :doc:`morse <bond_morse>` - Morse bond
* :doc:`nonlinear <bond_nonlinear>` - nonlinear bond * :doc:`nonlinear <bond_nonlinear>` - nonlinear bond

View File

@ -56,6 +56,7 @@ Commands
kspace_modify kspace_modify
kspace_style kspace_style
label label
labelmap
lattice lattice
log log
mass mass

View File

@ -198,8 +198,8 @@ Related commands
"""""""""""""""" """"""""""""""""
:doc:`dump custom <dump>`, :doc:`compute reduce <compute_reduce>`, :doc:`dump custom <dump>`, :doc:`compute reduce <compute_reduce>`,
:doc::doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`,
:doc:<fix_ave_chunk>`, `fix property/atom <fix_property_atom>` :doc:`fix property/atom <fix_property_atom>`
Default Default
""""""" """""""

View File

@ -222,6 +222,26 @@ result. I.e. the last 2 columns of thermo output will be the same:
<pair_modify>` command, since those are contributions to the global <pair_modify>` command, since those are contributions to the global
system pressure. system pressure.
The compute stress/atom can be used in a number of ways. Here is an
example to compute a 1-d pressure profile in z-direction across the
complete simulation box. You will need to adjust the number of bins and the
selections for time averaging to your specific simulation. This assumes
that the dimensions of the simulation cell does not change.
.. code-block:: LAMMPS
# set number of bins
variable nbins index 20
variable fraction equal 1.0/v_nbins
# define bins as chunks
compute cchunk all chunk/atom bin/1d x lower ${fraction} units reduced
compute stress all stress/atom NULL
# apply conversion to pressure early since we have no variable style for processing chunks
variable press atom -(c_stress[1]+c_stress[2]+c_stress[3])/(3.0*vol*${fraction})
compute binpress all reduce/chunk cchunk sum v_press
fix avg all ave/time 10 40 400 c_binpress mode vector file ave_stress.txt
Output info Output info
""""""""""" """""""""""

View File

@ -10,7 +10,7 @@ Syntax
dihedral_coeff N args dihedral_coeff N args
* N = dihedral type (see asterisk form below) * N = numeric dihedral type (see asterisk form below) or alphanumeric type label
* args = coefficients for one or more dihedral types * args = coefficients for one or more dihedral types
Examples Examples
@ -22,26 +22,35 @@ Examples
dihedral_coeff * 80.0 1 3 0.5 dihedral_coeff * 80.0 1 3 0.5
dihedral_coeff 2* 80.0 1 3 0.5 dihedral_coeff 2* 80.0 1 3 0.5
labelmap dihedral 1 backbone
dihedral_coeff backbone 80.0 1 3
Description Description
""""""""""" """""""""""
Specify the dihedral force field coefficients for one or more dihedral types. Specify the dihedral force field coefficients for one or more dihedral
The number and meaning of the coefficients depends on the dihedral style. types. The number and meaning of the coefficients depends on the
Dihedral coefficients can also be set in the data file read by the dihedral style. Dihedral coefficients can also be set in the data file
:doc:`read_data <read_data>` command or in a restart file. read by the :doc:`read_data <read_data>` command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can :math:`N` can be specified in one of two ways. An explicit numeric
be used, as in the first example above. Or a wild-card asterisk can be value can be used, as in the first example above. Or :math:`N` can be
used to set the coefficients for multiple dihedral types. This takes the an alphanumeric type label, which is a string defined by the
form "\*" or "\*n" or "m\*" or "m\*n". If :math:`N` is the number of dihedral :doc:`labelmap <labelmap>` command or in a corresponding section of a
types, then an asterisk with no numeric values means all types from 1 to data file read by the :doc:`read_data <read_data>` command.
:math:`N`. A leading asterisk means all types from 1 to n (inclusive). A
trailing asterisk means all types from m to N (inclusive). A middle asterisk For numeric values only, a wild-card asterisk can be used to set the
means all types from m to n (inclusive). coefficients for multiple dihedral types. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If :math:`N` is the number of dihedral types,
then an asterisk with no numeric values means all types from 1 to
:math:`N`. A leading asterisk means all types from 1 to n (inclusive).
A trailing asterisk means all types from n to :math:`N` (inclusive). A
middle asterisk means all types from m to n (inclusive).
Note that using a dihedral_coeff command can override a previous setting Note that using a dihedral_coeff command can override a previous setting
for the same dihedral type. For example, these commands set the coeffs for the same dihedral type. For example, these commands set the coeffs
for all dihedral types, then overwrite the coeffs for just dihedral type 2: for all dihedral types, then overwrite the coeffs for just dihedral type
2:
.. code-block:: LAMMPS .. code-block:: LAMMPS

View File

@ -56,24 +56,24 @@ dump command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
dump ID group-ID style N file args dump ID group-ID style N file args
* ID = user-assigned name for the dump * ID = user-assigned name for the dump
* group-ID = ID of the group of atoms to be dumped * group-ID = ID of the group of atoms to be dumped
* style = *atom* or *atom/gz* or *atom/zstd* or *atom/mpiio* or *cfg* or *cfg/gz* or *cfg/zstd* or *cfg/mpiio* or *cfg/uef* or *custom* or *custom/gz* or *custom/zstd* or *custom/mpiio* or *dcd* or *grid* or *h5md* or *image* or *local* or *local/gz* or *local/zstd* or *molfile* or *movie* or *netcdf* or *netcdf/mpiio* or *vtk* or *xtc* or *xyz* or *xyz/gz* or *xyz/zstd* or *xyz/mpiio* or *yaml* * style = *atom* or *atom/adios* or *atom/gz* or *atom/zstd* or *atom/mpiio* or *cfg* or *cfg/gz* or *cfg/zstd* or *cfg/mpiio* or *cfg/uef* or *custom* or *custom/gz* or *custom/zstd* or *custom/mpiio* or *custom/adios* or *dcd* or *grid* or *h5md* or *image* or *local* or *local/gz* or *local/zstd* or *molfile* or *movie* or *netcdf* or *netcdf/mpiio* or *vtk* or *xtc* or *xyz* or *xyz/gz* or *xyz/zstd* or *xyz/mpiio* or *yaml*
* N = dump every this many timesteps * N = dump on timesteps which are multiples of N
* file = name of file to write dump info to * file = name of file to write dump info to
* args = list of arguments for a particular style * args = list of arguments for a particular style
.. parsed-literal:: .. parsed-literal::
*atom* args = none *atom* args = none
*atom/adios* args = none, discussed on :doc:`dump atom/adios <dump_adios>` page
*atom/gz* args = none *atom/gz* args = none
*atom/zstd* args = none *atom/zstd* args = none
*atom/mpiio* args = none *atom/mpiio* args = none
*atom/adios* args = none, discussed on :doc:`dump atom/adios <dump_adios>` page
*cfg* args = same as *custom* args, see below *cfg* args = same as *custom* args, see below
*cfg/gz* args = same as *custom* args, see below *cfg/gz* args = same as *custom* args, see below
*cfg/zstd* args = same as *custom* args, see below *cfg/zstd* args = same as *custom* args, see below
@ -190,14 +190,15 @@ Examples
Description Description
""""""""""" """""""""""
Dump a snapshot of atom quantities to one or more files every :math:`N` Dump a snapshot of atom quantities to one or more files once every
timesteps in one of several styles. The *image* and *movie* styles are :math:`N` timesteps in one of several styles. The *image* and *movie*
the exception: the *image* style renders a JPG, PNG, or PPM image file styles are the exception: the *image* style renders a JPG, PNG, or PPM
of the atom configuration every :math:`N` timesteps while the *movie* style image file of the atom configuration every :math:`N` timesteps while
combines and compresses them into a movie file; both are discussed in the *movie* style combines and compresses them into a movie file; both
detail on the :doc:`dump image <dump_image>` page. The timesteps on are discussed in detail on the :doc:`dump image <dump_image>` page.
which dump output is written can also be controlled by a variable. The timesteps on which dump output is written can also be controlled
See the :doc:`dump_modify every <dump_modify>` command. by a variable. See the :doc:`dump_modify every <dump_modify>`
command.
Only information for atoms in the specified group is dumped. The Only information for atoms in the specified group is dumped. The
:doc:`dump_modify thresh and region and refresh <dump_modify>` commands :doc:`dump_modify thresh and region and refresh <dump_modify>` commands
@ -256,7 +257,7 @@ the compression level in both variants.
As explained below, the *atom/mpiio*, *cfg/mpiio*, *custom/mpiio*, and As explained below, the *atom/mpiio*, *cfg/mpiio*, *custom/mpiio*, and
*xyz/mpiio* styles are identical in command syntax and in the format *xyz/mpiio* styles are identical in command syntax and in the format
of the dump files they create, to the corresponding styles without of the dump files they create, to the corresponding styles without
"mpiio," except the single dump file they produce is written in "mpiio", except the single dump file they produce is written in
parallel via the MPI-IO library. For the remainder of this page, parallel via the MPI-IO library. For the remainder of this page,
you should thus consider the *atom* and *atom/mpiio* styles (etc.) to you should thus consider the *atom* and *atom/mpiio* styles (etc.) to
be inter-changeable. The one exception is how the filename is be inter-changeable. The one exception is how the filename is
@ -301,13 +302,13 @@ where xlo,xhi are the maximum extents of the simulation box in the
:math:`x`-dimension, and similarly for :math:`y` and :math:`z`. The :math:`x`-dimension, and similarly for :math:`y` and :math:`z`. The
"xx yy zz" terms are six characters that encode the style of boundary for each "xx yy zz" terms are six characters that encode the style of boundary for each
of the six simulation box boundaries (xlo,xhi; ylo,yhi; and zlo,zhi). Each of of the six simulation box boundaries (xlo,xhi; ylo,yhi; and zlo,zhi). Each of
the six characters is either p (periodic), f (fixed), s (shrink wrap), the six characters is one of *p* (periodic), *f* (fixed), *s* (shrink wrap),
or m (shrink wrapped with a minimum value). See the or *m* (shrink wrapped with a minimum value). See the
:doc:`boundary <boundary>` command for details. :doc:`boundary <boundary>` command for details.
For triclinic simulation boxes (non-orthogonal), an orthogonal For triclinic simulation boxes (non-orthogonal), an orthogonal
bounding box which encloses the triclinic simulation box is output, bounding box which encloses the triclinic simulation box is output,
along with the 3 tilt factors (*xy*, *xz*, *yz*) of the triclinic box, along with the three tilt factors (*xy*, *xz*, *yz*) of the triclinic box,
formatted as follows: formatted as follows:
.. parsed-literal:: .. parsed-literal::
@ -346,8 +347,8 @@ added for each atom via dump_modify.
Style *custom* allows you to specify a list of atom attributes to be Style *custom* allows you to specify a list of atom attributes to be
written to the dump file for each atom. Possible attributes are written to the dump file for each atom. Possible attributes are
listed above and will appear in the order specified. You cannot listed above and will appear in the order specified. You cannot
specify a quantity that is not defined for a particular simulation - specify a quantity that is not defined for a particular simulation---such as
such as *q* for atom style *bond*, since that atom style does not *q* for atom style *bond*, since that atom style does not
assign charges. Dumps occur at the very end of a timestep, so atom assign charges. Dumps occur at the very end of a timestep, so atom
attributes will include effects due to fixes that are applied during attributes will include effects due to fixes that are applied during
the timestep. An explanation of the possible dump custom attributes the timestep. An explanation of the possible dump custom attributes
@ -447,7 +448,7 @@ Below is an example for a YAML format dump created by the following commands.
dump out all yaml 100 dump.yaml id type x y z vx vy vz ix iy iz dump out all yaml 100 dump.yaml id type x y z vx vy vz ix iy iz
dump_modify out time yes units yes thermo yes format 1 %5d format "% 10.6e" dump_modify out time yes units yes thermo yes format 1 %5d format "% 10.6e"
The tags "time," "units," and "thermo" are optional and enabled by the The tags "time", "units", and "thermo" are optional and enabled by the
dump_modify command. The list under the "box" tag has three lines for dump_modify command. The list under the "box" tag has three lines for
orthogonal boxes and four lines for triclinic boxes, where the first three are orthogonal boxes and four lines for triclinic boxes, where the first three are
the box boundaries and the fourth the three tilt factors (:math:`xy`, the box boundaries and the fourth the three tilt factors (:math:`xy`,
@ -499,21 +500,29 @@ popular molecular viewing program.
---------- ----------
Dumps are performed on timesteps that are a multiple of :math:`N` (including Dumps are performed on timesteps that are a multiple of :math:`N`
timestep 0) and on the last timestep of a minimization if the (including timestep 0) and on the last timestep of a minimization if
minimization converges. Note that this means a dump will not be the minimization converges. Note that this means a dump will not be
performed on the initial timestep after the dump command is invoked, performed on the initial timestep after the dump command is invoked,
if the current timestep is not a multiple of :math:`N`. This behavior can be if the current timestep is not a multiple of :math:`N`. This behavior
changed via the :doc:`dump_modify first <dump_modify>` command, which can be changed via the :doc:`dump_modify first <dump_modify>` command,
can also be useful if the dump command is invoked after a minimization which can also be useful if the dump command is invoked after a
ended on an arbitrary timestep. :math:`N` can be changed between runs by minimization ended on an arbitrary timestep.
using the :doc:`dump_modify every <dump_modify>` command (not allowed
for *dcd* style). The :doc:`dump_modify every <dump_modify>` command The value of :math:`N` can be changed between runs by using the
also allows a variable to be used to determine the sequence of :doc:`dump_modify every <dump_modify>` command (not allowed for *dcd*
timesteps on which dump files are written. In this mode a dump on the style). The :doc:`dump_modify every <dump_modify>` command also
first timestep of a run will also not be written unless the allows a variable to be used to determine the sequence of timesteps on
which dump files are written. In this mode a dump on the first
timestep of a run will also not be written unless the
:doc:`dump_modify first <dump_modify>` command is used. :doc:`dump_modify first <dump_modify>` command is used.
If you instead want to dump snapshots based on simulation time (in
time units of the :doc:`units` command), the :doc:`dump_modify
every/time <dump_modify>` command can be used. This can be useful
when the timestep size varies during a simulation run, e.g. by use of
the :doc:`fix dt/reset <fix_dt_reset>` command.
The specified filename determines how the dump file(s) is written. The specified filename determines how the dump file(s) is written.
The default is to write one large text file, which is opened when the The default is to write one large text file, which is opened when the
dump command is invoked and closed when an :doc:`undump <undump>` dump command is invoked and closed when an :doc:`undump <undump>`
@ -559,7 +568,7 @@ package installed, viz.,
make mpi # build LAMMPS for your platform make mpi # build LAMMPS for your platform
Second, use a dump filename which contains ".mpiio." Note that it Second, use a dump filename which contains ".mpiio." Note that it
does not have to end in ".mpiio," just contain those characters. does not have to end in ".mpiio", just contain those characters.
Unlike MPI-IO restart files, which must be both written and read using Unlike MPI-IO restart files, which must be both written and read using
MPI-IO, the dump files produced by these MPI-IO styles are identical MPI-IO, the dump files produced by these MPI-IO styles are identical
in format to the files produced by their non-MPI-IO style in format to the files produced by their non-MPI-IO style
@ -582,19 +591,19 @@ and have the same binary format as if it were written without MPI-IO.
If the filename ends with ".bin" or ".lammpsbin", the dump file (or If the filename ends with ".bin" or ".lammpsbin", the dump file (or
files, if "\*" or "%" is also used) is written in binary format. A files, if "\*" or "%" is also used) is written in binary format. A
binary dump file will be about the same size as a text version, but binary dump file will be about the same size as a text version, but will
will typically write out much faster. Of course, when typically write out much faster. Of course, when post-processing, you
post-processing, you will need to convert it back to text format (see will need to convert it back to text format (see the :ref:`binary2txt
the :ref:`binary2txt tool <binary>`) or write your own code to read tool <binary>`) or write your own code to read the binary file. The
the binary file. The format of the binary file can be understood by format of the binary file can be understood by looking at the
looking at the :file:`tools/binary2txt.cpp` file. This option is only :file:`tools/binary2txt.cpp` file. This option is only available for
available for the *atom* and *custom* styles. the *atom* and *custom* styles.
If the filename ends with ".gz", the dump file (or files, if "\*" or If the filename ends with ".gz", the dump file (or files, if "\*" or "%"
"%" is also used) is written in gzipped format. A gzipped dump file is also used) is written in gzipped format. A gzipped dump file will be
will be about :math:`3\times` smaller than the text version, but will about :math:`3\times` smaller than the text version, but will also take
also take longer to write. This option is not available for the *dcd* longer to write. This option is not available for the *dcd* and *xtc*
and *xtc* styles. styles.
---------- ----------
@ -643,10 +652,10 @@ mass. The quantities *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, and *q* are components
of atom velocity and force and atomic charge. of atom velocity and force and atomic charge.
There are several options for outputting atom coordinates. The *x*, There are several options for outputting atom coordinates. The *x*,
*y*, and *z* attributes write atom coordinates "unscaled," in the *y*, and *z* attributes write atom coordinates "unscaled", in the
appropriate distance :doc:`units <units>` (:math:`\mathrm{\mathring A}`, appropriate distance :doc:`units <units>` (:math:`\mathrm{\mathring A}`,
:math:`\sigma`, etc.). Use *xs*, *ys*, *zs* if you want the coordinates :math:`\sigma`, etc.). Use *xs*, *ys*, and *zs* if you want the coordinates
"scaled" to the box size, so that each value is 0.0 to 1.0. If the simulation "scaled" to the box size so that each value is 0.0 to 1.0. If the simulation
box is triclinic (tilted), then all atom coords will still be between 0.0 and box is triclinic (tilted), then all atom coords will still be between 0.0 and
1.0. The actual unscaled :math:`(x,y,z)` coordinate is 1.0. The actual unscaled :math:`(x,y,z)` coordinate is
:math:`x_s a + y_s b + z_s c`, where :math:`(a,b,c)` are the non-orthogonal :math:`x_s a + y_s b + z_s c`, where :math:`(a,b,c)` are the non-orthogonal
@ -689,7 +698,7 @@ The *angmomx*, *angmomy*, and *angmomz* attributes are specific to
finite-size aspherical particles that have an angular momentum. Only finite-size aspherical particles that have an angular momentum. Only
the *ellipsoid* atom style defines this quantity. the *ellipsoid* atom style defines this quantity.
The *tqx*, *tqy*, *tqz* attributes are for finite-size particles that The *tqx*, *tqy*, and *tqz* attributes are for finite-size particles that
can sustain a rotational torque due to interactions with other can sustain a rotational torque due to interactions with other
particles. particles.
@ -728,8 +737,8 @@ If *f_ID* is used as a attribute, then the per-atom vector calculated
by the fix is printed. If *f_ID[i]* is used, then :math:`i` must be in the by the fix is printed. If *f_ID[i]* is used, then :math:`i` must be in the
range from 1 to :math:`M`, which will print the :math:`i`\ th column of the range from 1 to :math:`M`, which will print the :math:`i`\ th column of the
per-atom array with :math:`M` columns calculated by the fix. See the per-atom array with :math:`M` columns calculated by the fix. See the
discussion above for how :math:`i` can be specified with a wildcard asterisk to discussion above for how :math:`i` can be specified with a wildcard asterisk
effectively specify multiple values. to effectively specify multiple values.
The *v_name* attribute allows per-atom vectors calculated by a The *v_name* attribute allows per-atom vectors calculated by a
:doc:`variable <variable>` to be output. The name in the attribute :doc:`variable <variable>` to be output. The name in the attribute

View File

@ -10,10 +10,9 @@ dump custom/adios command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
dump ID group-ID atom/adios N file.bp dump ID group-ID atom/adios N file.bp
dump ID group-ID custom/adios N file.bp args dump ID group-ID custom/adios N file.bp args
* ID = user-assigned name for the dump * ID = user-assigned name for the dump
@ -21,7 +20,7 @@ Syntax
* adios = style of dump command (other styles *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page) * adios = style of dump command (other styles *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page)
* N = dump every this many timesteps * N = dump every this many timesteps
* file.bp = name of file/stream to write to * file.bp = name of file/stream to write to
* args = same options as in :doc:`\ *dump custom*\ <dump>` command * args = same options as in :doc:`dump custom <dump>` command
Examples Examples
"""""""" """"""""
@ -35,10 +34,10 @@ Examples
Description Description
""""""""""" """""""""""
Dump a snapshot of atom coordinates every N timesteps in the `ADIOS Dump a snapshot of atom coordinates every :math:`N` timesteps in the `ADIOS
<adios_>`_ based "BP" file format, or using different I/O solutions in <adios_>`_-based "BP" file format, or using different I/O solutions in
ADIOS, to a stream that can be read on-line by another program. ADIOS, to a stream that can be read on-line by another program.
ADIOS-BP files are binary, portable and self-describing. ADIOS-BP files are binary, portable, and self-describing.
.. _adios: https://github.com/ornladios/ADIOS2 .. _adios: https://github.com/ornladios/ADIOS2
@ -67,7 +66,7 @@ create a new file at each individual dump.
Restrictions Restrictions
"""""""""""" """"""""""""
The number of atoms per snapshot CAN change with the adios style. The number of atoms per snapshot **can** change with the adios style.
When using the ADIOS tool 'bpls' to list the content of a .bp file, When using the ADIOS tool 'bpls' to list the content of a .bp file,
bpls will print *__* for the size of the output table indicating that bpls will print *__* for the size of the output table indicating that
its size is changing every step. its size is changing every step.

View File

@ -6,7 +6,7 @@ dump cfg/uef command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
dump ID group-ID cfg/uef N file mass type xs ys zs args dump ID group-ID cfg/uef N file mass type xs ys zs args
@ -32,9 +32,8 @@ Description
This command is used to dump atomic coordinates in the This command is used to dump atomic coordinates in the
reference frame of the applied flow field when reference frame of the applied flow field when
:doc:`fix nvt/uef <fix_nh_uef>` or :doc:`fix nvt/uef <fix_nh_uef>` or :doc:`fix npt/uef <fix_nh_uef>` is used.
:doc:`fix npt/uef <fix_nh_uef>` or is used. Only the atomic Only the atomic coordinates and frame-invariant scalar quantities
coordinates and frame-invariant scalar quantities
will be in the flow frame. If velocities are selected will be in the flow frame. If velocities are selected
as output, for example, they will not be in the same as output, for example, they will not be in the same
reference frame as the atomic positions. reference frame as the atomic positions.
@ -43,7 +42,8 @@ Restrictions
"""""""""""" """"""""""""
This fix is part of the UEF package. It is only enabled if LAMMPS This fix is part of the UEF package. It is only enabled if LAMMPS
was built with that package. See the :doc:`Build package <Build_package>` page for more info. was built with that package. See the :doc:`Build package <Build_package>`
page for more info.
This command can only be used when :doc:`fix nvt/uef <fix_nh_uef>` This command can only be used when :doc:`fix nvt/uef <fix_nh_uef>`
or :doc:`fix npt/uef <fix_nh_uef>` is active. or :doc:`fix npt/uef <fix_nh_uef>` is active.

View File

@ -12,7 +12,7 @@ dump movie command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
dump ID group-ID style N file color diameter keyword value ... dump ID group-ID style N file color diameter keyword value ...
@ -28,7 +28,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
*atom* = yes/no = do or do not draw atoms *atom* = *yes* or *no* = do or do not draw atoms
*adiam* size = numeric value for atom diameter (distance units) *adiam* size = numeric value for atom diameter (distance units)
*bond* values = color width = color and width of bonds *bond* values = color width = color and width of bonds
color = *atom* or *type* or *none* color = *atom* or *type* or *none*
@ -68,21 +68,20 @@ Syntax
*box* values = yes/no diam = draw outline of simulation box *box* values = yes/no diam = draw outline of simulation box
yes/no = do or do not draw simulation box lines yes/no = do or do not draw simulation box lines
diam = diameter of box lines as fraction of shortest box length diam = diameter of box lines as fraction of shortest box length
*axes* values = yes/no length diam = draw xyz axes *axes* values = axes length diam = draw xyz axes
yes/no = do or do not draw xyz axes lines next to simulation box axes = *yes* or *no = do or do not draw xyz axes lines next to simulation box
length = length of axes lines as fraction of respective box lengths length = length of axes lines as fraction of respective box lengths
diam = diameter of axes lines as fraction of shortest box length diam = diameter of axes lines as fraction of shortest box length
*subbox* values = yes/no diam = draw outline of processor sub-domains *subbox* values = lines diam = draw outline of processor sub-domains
yes/no = do or do not draw sub-domain lines lines = *yes* or *no* = do or do not draw sub-domain lines
diam = diameter of sub-domain lines as fraction of shortest box length diam = diameter of sub-domain lines as fraction of shortest box length
*shiny* value = sfactor = shinyness of spheres and cylinders *shiny* value = sfactor = shinyness of spheres and cylinders
sfactor = shinyness of spheres and cylinders from 0.0 to 1.0 sfactor = shinyness of spheres and cylinders from 0.0 to 1.0
*ssao* value = yes/no seed dfactor = SSAO depth shading *ssao* value = shading seed dfactor = SSAO depth shading
yes/no = turn depth shading on/off shading = *yes* or *no* = turn depth shading on/off
seed = random # seed (positive integer) seed = random # seed (positive integer)
dfactor = strength of shading from 0.0 to 1.0 dfactor = strength of shading from 0.0 to 1.0
.. _dump_modify_image: .. _dump_modify_image:
dump_modify options for dump image/movie dump_modify options for dump image/movie
@ -162,7 +161,7 @@ Examples
Description Description
""""""""""" """""""""""
Dump a high-quality rendered image of the atom configuration every N Dump a high-quality rendered image of the atom configuration every :math:`N`
timesteps and save the images either as a sequence of JPEG or PNG or timesteps and save the images either as a sequence of JPEG or PNG or
PPM files, or as a single movie file. The options for this command as PPM files, or as a single movie file. The options for this command as
well as the :doc:`dump_modify <dump_modify>` command control what is well as the :doc:`dump_modify <dump_modify>` command control what is
@ -179,7 +178,7 @@ has been run, using the :doc:`rerun <rerun>` command to read snapshots
from an existing dump file, and using these dump commands in the rerun from an existing dump file, and using these dump commands in the rerun
script to generate the images/movie. script to generate the images/movie.
Here are two sample images, rendered as 1024x1024 JPEG files. Here are two sample images, rendered as :math:`1024\times 1024` JPEG files.
.. |dump1| image:: img/dump1.jpg .. |dump1| image:: img/dump1.jpg
:width: 48% :width: 48%
@ -197,8 +196,8 @@ Only atoms in the specified group are rendered in the image. The
alter what atoms are included in the image. alter what atoms are included in the image.
The filename suffix determines whether a JPEG, PNG, or PPM file is The filename suffix determines whether a JPEG, PNG, or PPM file is
created with the *image* dump style. If the suffix is ".jpg" or created with the *image* dump style. If the suffix is ".jpg" or
".jpeg", then a `JPEG format <jpeg_format_>`_ file is created, if the ".jpeg," then a `JPEG format <jpeg_format_>`_ file is created, if the
suffix is ".png", then a `PNG format <png_format_>`_ is created, else suffix is ".png," then a `PNG format <png_format_>`_ is created, else
a `PPM (aka NETPBM) format <ppm_format_>`_ file is created. a `PPM (aka NETPBM) format <ppm_format_>`_ file is created.
The JPEG and PNG files are binary; PPM has a text mode header followed The JPEG and PNG files are binary; PPM has a text mode header followed
by binary data. JPEG images have lossy compression, PNG has lossless by binary data. JPEG images have lossy compression, PNG has lossless
@ -232,22 +231,22 @@ details.
---------- ----------
Dumps are performed on timesteps that are a multiple of N (including Dumps are performed on timesteps that are a multiple of :math:`N` (including
timestep 0) and on the last timestep of a minimization if the timestep 0) and on the last timestep of a minimization if the
minimization converges. Note that this means a dump will not be minimization converges. Note that this means a dump will not be
performed on the initial timestep after the dump command is invoked, performed on the initial timestep after the dump command is invoked,
if the current timestep is not a multiple of N. This behavior can be if the current timestep is not a multiple of :math:`N`. This behavior can be
changed via the :doc:`dump_modify first <dump_modify>` command, which changed via the :doc:`dump_modify first <dump_modify>` command, which
can be useful if the dump command is invoked after a minimization can be useful if the dump command is invoked after a minimization
ended on an arbitrary timestep. N can be changed between runs by ended on an arbitrary timestep. :math:`N` can be changed between runs by
using the :doc:`dump_modify every <dump_modify>` command. using the :doc:`dump_modify every <dump_modify>` command.
Dump *image* filenames must contain a wildcard character "\*", so that Dump *image* filenames must contain a wildcard character "\*" so that
one image file per snapshot is written. The "\*" character is replaced one image file per snapshot is written. The "\*" character is replaced
with the timestep value. For example, tmp.dump.\*.jpg becomes with the timestep value. For example, tmp.dump.\*.jpg becomes
tmp.dump.0.jpg, tmp.dump.10000.jpg, tmp.dump.20000.jpg, etc. Note tmp.dump.0.jpg, tmp.dump.10000.jpg, tmp.dump.20000.jpg, etc. Note
that the :doc:`dump_modify pad <dump_modify>` command can be used to that the :doc:`dump_modify pad <dump_modify>` command can be used to
insure all timestep numbers are the same length (e.g. 00010), which insure all timestep numbers are the same length (e.g., 00010), which
can make it easier to convert a series of images into a movie in the can make it easier to convert a series of images into a movie in the
correct ordering. correct ordering.
@ -262,7 +261,7 @@ atoms rendered in the image. They can be any atom attribute defined
for the :doc:`dump custom <dump>` command, including *type* and for the :doc:`dump custom <dump>` command, including *type* and
*element*\ . This includes per-atom quantities calculated by a *element*\ . This includes per-atom quantities calculated by a
:doc:`compute <compute>`, :doc:`fix <fix>`, or :doc:`variable <variable>`, :doc:`compute <compute>`, :doc:`fix <fix>`, or :doc:`variable <variable>`,
which are prefixed by "c\_", "f\_", or "v\_" respectively. Note that the which are prefixed by "c\_," "f\_," or "v\_," respectively. Note that the
*diameter* setting can be overridden with a numeric value applied to *diameter* setting can be overridden with a numeric value applied to
all atoms by the optional *adiam* keyword. all atoms by the optional *adiam* keyword.
@ -277,7 +276,7 @@ to colors is as follows:
* type 5 = aqua * type 5 = aqua
* type 6 = cyan * type 6 = cyan
and repeats itself for types > 6. This mapping can be changed by the and repeats itself for types :math:`> 6`. This mapping can be changed by the
"dump_modify acolor" command, as described below. "dump_modify acolor" command, as described below.
If *type* is specified for the *diameter* setting then the diameter of If *type* is specified for the *diameter* setting then the diameter of
@ -298,18 +297,18 @@ and sizes used by the `AtomEye <atomeye_>`_ visualization package.
If other atom attributes are used for the *color* or *diameter* If other atom attributes are used for the *color* or *diameter*
settings, they are interpreted in the following way. settings, they are interpreted in the following way.
If "vx", for example, is used as the *color* setting, then the color If "vx," for example, is used as the *color* setting, then the color
of the atom will depend on the x-component of its velocity. The of the atom will depend on the x-component of its velocity. The
association of a per-atom value with a specific color is determined by association of a per-atom value with a specific color is determined by
a "color map", which can be specified via the dump_modify command, as a "color map," which can be specified via the dump_modify command, as
described below. The basic idea is that the atom-attribute will be described below. The basic idea is that the atom-attribute will be
within a range of values, and every value within the range is mapped within a range of values, and every value within the range is mapped
to a specific color. Depending on how the color map is defined, that to a specific color. Depending on how the color map is defined, that
mapping can take place via interpolation so that a value of -3.2 is mapping can take place via interpolation so that a value of -3.2 is
halfway between "red" and "blue", or discretely so that the value of halfway between "red" and "blue," or discretely so that the value of
-3.2 is "orange". -3.2 is "orange".
If "vx", for example, is used as the *diameter* setting, then the atom If "vx," for example, is used as the *diameter* setting, then the atom
will be rendered using the x-component of its velocity as the will be rendered using the x-component of its velocity as the
diameter. If the per-atom value <= 0.0, them the atom will not be diameter. If the per-atom value <= 0.0, them the atom will not be
drawn. Note that finite-size spherical particles, as defined by drawn. Note that finite-size spherical particles, as defined by
@ -773,10 +772,11 @@ the number 5.0 would be used. But for a fractional map, the number
The *delta* setting must be specified for all styles, but is only used The *delta* setting must be specified for all styles, but is only used
for the sequential style; otherwise the value is ignored. It for the sequential style; otherwise the value is ignored. It
specifies the bin size to use within the range for assigning specifies the bin size to use within the range for assigning
consecutive colors to. For example, if the range is from -10.0 to consecutive colors to. For example, if the range is from :math:`-10.0` to
10.0 and a *delta* of 1.0 is used, then 20 colors will be assigned to :math:`10.0` and a *delta* of :math:`1.0` is used, then 20 colors will be
the range. The first will be from -10.0 <= color1 < -9.0, then second assigned to the range. The first will be from
from -9.0 <= color2 < -8.0, etc. :math:`-10.0 \le \text{color1} < -9.0`, then second from
:math:`-9.0 \le color2 < -8.0`, etc.
The *N* setting is how many entries follow. The format of the entries The *N* setting is how many entries follow. The format of the entries
depends on whether the color map style is continuous, discrete or depends on whether the color map style is continuous, discrete or
@ -793,13 +793,13 @@ as absolute numbers or as fractions (0.0 to 1.0) of the range,
depending on the "a" or "f" in the style setting for the color map. depending on the "a" or "f" in the style setting for the color map.
Here is how the entries are used to determine the color of an Here is how the entries are used to determine the color of an
individual atom, given the value X of its atom attribute. X will fall individual atom, given the value :math:`X` of its atom attribute.
between 2 of the entry values. The color of the atom is linearly :math:`X` will fall between 2 of the entry values. The color of the atom is
interpolated (in each of the RGB values) between the 2 colors linearly interpolated (in each of the RGB values) between the 2 colors
associated with those entries. For example, if X = -5.0 and the 2 associated with those entries. For example, if :math:`X = -5.0` and the two
surrounding entries are "red" at -10.0 and "blue" at 0.0, then the surrounding entries are "red" at :math:`-10.0` and "blue" at :math:`0.0`,
atom's color will be halfway between "red" and "blue", which happens then the atom's color will be halfway between "red" and "blue," which happens
to be "purple". to be "purple."
For discrete color maps, each entry has a *lo* and *hi* value and a For discrete color maps, each entry has a *lo* and *hi* value and a
*color*\ . The *lo* and *hi* settings are either numbers within the *color*\ . The *lo* and *hi* settings are either numbers within the
@ -864,20 +864,20 @@ The *bcolor* keyword can be used with the dump image command, with its
*bond* keyword, when its color setting is *type*, to set the color *bond* keyword, when its color setting is *type*, to set the color
that bonds of each type will be drawn in the image. that bonds of each type will be drawn in the image.
The specified *type* should be an integer from 1 to Nbondtypes = the The specified *type* should be an integer from 1 to :math:`N`, where :math:`N`
number of bond types. A wildcard asterisk can be used in place of or is the number of bond types. A wildcard asterisk can be used in place of or
in conjunction with the *type* argument to specify a range of bond in conjunction with the *type* argument to specify a range of bond
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
the number of bond types, then an asterisk with no numeric values is the number of bond types, then an asterisk with no numerical values
means all types from 1 to N. A leading asterisk means all types from means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N 1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n
(inclusive). (inclusive).
The specified *color* can be a single color which is any of the 140 The specified *color* can be a single color which is any of the 140
pre-defined colors (see below) or a color name defined by the pre-defined colors (see below) or a color name defined by the
dump_modify color option. Or it can be two or more colors separated dump_modify color option. Or it can be two or more colors separated
by a "/" character, e.g. red/green/blue. In the former case, that by a "/" character (e.g., red/green/blue). In the former case, that
color is assigned to all the specified bond types. In the latter color is assigned to all the specified bond types. In the latter
case, the list of colors are assigned in a round-robin fashion to each case, the list of colors are assigned in a round-robin fashion to each
of the specified bond types. of the specified bond types.
@ -885,13 +885,13 @@ of the specified bond types.
---------- ----------
The *bdiam* keyword can be used with the dump image command, with its The *bdiam* keyword can be used with the dump image command, with its
*bond* keyword, when its diam setting is *type*, to set the diameter *bond* keyword, when its *diam* setting is *type*, to set the diameter
that bonds of each type will be drawn in the image. The specified that bonds of each type will be drawn in the image. The specified
*type* should be an integer from 1 to Nbondtypes. As with the *type* should be an integer from 1 to Nbondtypes. As with the
*bcolor* keyword, a wildcard asterisk can be used as part of the *bcolor* keyword, a wildcard asterisk can be used as part of the
*type* argument to specify a range of bond types. The specified *type* argument to specify a range of bond types. The specified
*diam* is the size in whatever distance :doc:`units <units>` you are *diam* is the size in whatever distance :doc:`units <units>` you are
using, e.g. Angstroms. using (e.g., Angstroms).
---------- ----------
@ -922,7 +922,7 @@ dump_modify color option.
---------- ----------
The *color* keyword allows definition of a new color name, in addition The *color* keyword allows definition of a new color name, in addition
to the 140-predefined colors (see below), and associates 3 to the 140-predefined colors (see below), and associates three
red/green/blue RGB values with that color name. The color name can red/green/blue RGB values with that color name. The color name can
then be used with any other dump_modify keyword that takes a color then be used with any other dump_modify keyword that takes a color
name as a value. The RGB values should each be floating point values name as a value. The RGB values should each be floating point values
@ -959,15 +959,15 @@ PNG library.
To write *movie* dumps, you must use the -DLAMMPS_FFMPEG switch when To write *movie* dumps, you must use the -DLAMMPS_FFMPEG switch when
building LAMMPS and have the FFmpeg executable available on the building LAMMPS and have the FFmpeg executable available on the
machine where LAMMPS is being run. Typically it's name is lowercase, machine where LAMMPS is being run. Typically its name is lowercase
i.e. ffmpeg. (i.e., "ffmpeg").
See the :doc:`Build settings <Build_settings>` page for details. See the :doc:`Build settings <Build_settings>` page for details.
Note that since FFmpeg is run as an external program via a pipe, Note that since FFmpeg is run as an external program via a pipe,
LAMMPS has limited control over its execution and no knowledge about LAMMPS has limited control over its execution and no knowledge about
errors and warnings printed by it. Those warnings and error messages errors and warnings printed by it. Those warnings and error messages
will be printed to the screen only. Due to the way image data is will be printed to the screen only. Due to the way image data are
communicated to FFmpeg, it will often print the message communicated to FFmpeg, it will often print the message
.. parsed-literal:: .. parsed-literal::
@ -976,7 +976,7 @@ communicated to FFmpeg, it will often print the message
which can be safely ignored. Other warnings which can be safely ignored. Other warnings
and errors have to be addressed according to the FFmpeg documentation. and errors have to be addressed according to the FFmpeg documentation.
One known issue is that certain movie file formats (e.g. MPEG level 1 One known issue is that certain movie file formats (e.g., MPEG level 1
and 2 format streams) have video bandwidth limits that can be crossed and 2 format streams) have video bandwidth limits that can be crossed
when rendering too large of image sizes. Typical warnings look like when rendering too large of image sizes. Typical warnings look like
this: this:
@ -987,10 +987,9 @@ this:
[mpeg @ 0x98b5e0] buffer underflow st=0 bufi=281407 size=285018 [mpeg @ 0x98b5e0] buffer underflow st=0 bufi=281407 size=285018
[mpeg @ 0x98b5e0] buffer underflow st=0 bufi=283448 size=285018 [mpeg @ 0x98b5e0] buffer underflow st=0 bufi=283448 size=285018
In this case it is recommended to either reduce the size of the image In this case it is recommended either to reduce the size of the image
or encode in a different format that is also supported by your copy of or to encode in a different format that is also supported by your copy of
FFmpeg, and which does not have this limitation (e.g. .avi, .mkv, FFmpeg and which does not have this limitation (e.g., .avi, .mkv, mp4).
mp4).
Related commands Related commands
"""""""""""""""" """"""""""""""""

View File

@ -35,10 +35,10 @@ Syntax
*element* args = E1 E2 ... EN, where N = # of atom types *element* args = E1 E2 ... EN, where N = # of atom types
E1,...,EN = element name (e.g., C or Fe or Ga) E1,...,EN = element name (e.g., C or Fe or Ga)
*every* arg = N *every* arg = N
N = dump every this many timesteps N = dump on timesteps which are a multiple of N
N can be a variable (see below) N can be a variable (see below)
*every/time* arg = Delta *every/time* arg = Delta
Delta = dump every this interval in simulation time (time units) Delta = dump once every Delta interval of simulation time (time units)
Delta can be a variable (see below) Delta can be a variable (see below)
*fileper* arg = Np *fileper* arg = Np
Np = write one file for every this many processors Np = write one file for every this many processors
@ -176,6 +176,31 @@ extra buffering.
---------- ----------
.. versionadded:: 4May2022
The *colname* keyword can be used to change the default header keyword
for dump styles: *atom*, *custom*, and *cfg* and their compressed, ADIOS,
and MPIIO variants. The setting for *ID string* replaces the default
text with the provided string. *ID* can be a positive integer when it
represents the column number counting from the left, a negative integer
when it represents the column number from the right (i.e. -1 is the last
column/keyword), or a custom dump keyword (or compute, fix, property, or
variable reference) and then it replaces the string for that specific
keyword. For *atom* dump styles only the keywords "id", "type", "x",
"y", "z", "ix", "iy", "iz" can be accessed via string regardless of
whether scaled or unwrapped coordinates were enabled or disabled, and
it always assumes 8 columns for indexing regardless of whether image
flags are enabled or not. For dump style *cfg* only changes to the
"auxiliary" keywords (6th or later keyword) will become visible.
The *colname* keyword can be used multiple times. If multiple *colname*
settings refer to the same keyword, the last setting has precedence. A
setting of *default* clears all previous settings, reverting all values
to their default names. Using the *scale* or *image* keyword will also
reset all header keywords to their default values.
----------
The *delay* keyword applies to all dump styles. No snapshots will be The *delay* keyword applies to all dump styles. No snapshots will be
output until the specified *Dstep* timestep or later. Specifying output until the specified *Dstep* timestep or later. Specifying
*Dstep* < 0 is the same as turning off the delay setting. This is a *Dstep* < 0 is the same as turning off the delay setting. This is a
@ -207,13 +232,10 @@ will be accepted.
---------- ----------
The *every* keyword can be used with any dump style except the *dcd* The *every* keyword can be used with any dump style except the *dcd*
and *xtc* styles. It does two things. It specifies that the interval and *xtc* styles. It specifies that the output of dump snapshots will
between dump snapshots will be set in timesteps, which is the default now be performed on timesteps which are a multiple of a new :math:`N`
if the *every* or *every/time* keywords are not used. See the value, This overrides the dump frequency originally specified by the
*every/time* keyword for how to specify the interval in simulation :doc:`dump <dump>` command.
time, i.e. in time units of the :doc:`units <units>` command. The
*every* keyword also sets the interval value, which overrides the dump
frequency originally specified by the :doc:`dump <dump>` command.
The *every* keyword can be specified in one of two ways. It can be a The *every* keyword can be specified in one of two ways. It can be a
numeric value in which case it must be > 0. Or it can be an numeric value in which case it must be > 0. Or it can be an
@ -273,6 +295,17 @@ in file tmp.times:
---------- ----------
The *every/time* keyword can be used with any dump style except the
*dcd* and *xtc* styles. It changes the frequency of dump snapshots
from being based on the current timestep to being determined by
elapsed simulation time, i.e. in time units of the :doc:`units
<units>` command, and specifies *Delta* for the interval between
snapshots. This can be useful when the timestep size varies during a
simulation run, e.g. by use of the :doc:`fix dt/reset <fix_dt_reset>`
command. The default is to perform output on timesteps which a
multiples of specified timestep value :math:`N`; see the *every*
keyword.
The *every/time* keyword can be used with any dump style except the The *every/time* keyword can be used with any dump style except the
*dcd* and *xtc* styles. It does two things. It specifies that the *dcd* and *xtc* styles. It does two things. It specifies that the
interval between dump snapshots will be set in simulation time interval between dump snapshots will be set in simulation time
@ -357,7 +390,7 @@ always occur if the current timestep is a multiple of $N$, the
frequency specified in the :doc:`dump <dump>` command or frequency specified in the :doc:`dump <dump>` command or
:doc:`dump_modify every <dump_modify>` command, including timestep 0. :doc:`dump_modify every <dump_modify>` command, including timestep 0.
It will also always occur if the current simulation time is a multiple It will also always occur if the current simulation time is a multiple
of *Delta*, the time interval specified in the doc:`dump_modify of *Delta*, the time interval specified in the :doc:`dump_modify
every/time <dump_modify>` command. every/time <dump_modify>` command.
But if this is not the case, a dump snapshot will only be written if But if this is not the case, a dump snapshot will only be written if
@ -365,7 +398,7 @@ the setting of this keyword is *yes*\ . If it is *no*, which is the
default, then it will not be written. default, then it will not be written.
Note that if the argument to the :doc:`dump_modify every Note that if the argument to the :doc:`dump_modify every
<dump_modify>` doc:`dump_modify every/time <dump_modify>` commands is <dump_modify>` :doc:`dump_modify every/time <dump_modify>` commands is
a variable and not a numeric value, then specifying *first yes* is the a variable and not a numeric value, then specifying *first yes* is the
only way to write a dump snapshot on the first timestep after the dump only way to write a dump snapshot on the first timestep after the dump
command is invoked. command is invoked.
@ -380,30 +413,6 @@ performed with dump style *xtc*\ .
---------- ----------
.. versionadded:: 4May2022
The *colname* keyword can be used to change the default header keyword
for dump styles: *atom*, *custom*, and *cfg* and their compressed, ADIOS,
and MPIIO variants. The setting for *ID string* replaces the default
text with the provided string. *ID* can be a positive integer when it
represents the column number counting from the left, a negative integer
when it represents the column number from the right (i.e. -1 is the last
column/keyword), or a custom dump keyword (or compute, fix, property, or
variable reference) and then it replaces the string for that specific
keyword. For *atom* dump styles only the keywords "id", "type", "x",
"y", "z", "ix", "iy", "iz" can be accessed via string regardless of
whether scaled or unwrapped coordinates were enabled or disabled, and
it always assumes 8 columns for indexing regardless of whether image
flags are enabled or not. For dump style *cfg* only changes to the
"auxiliary" keywords (6th or later keyword) will become visible.
The *colname* keyword can be used multiple times. If multiple *colname*
settings refer to the same keyword, the last setting has precedence. A
setting of *default* clears all previous settings, reverting all values
to their default names.
----------
The *format* keyword can be used to change the default numeric format output The *format* keyword can be used to change the default numeric format output
by the text-based dump styles: *atom*, *local*, *custom*, *cfg*, and by the text-based dump styles: *atom*, *local*, *custom*, *cfg*, and
*xyz* styles, and their MPIIO variants. Only the *line* or *none* *xyz* styles, and their MPIIO variants. Only the *line* or *none*
@ -490,6 +499,8 @@ boundary twice and is really two box lengths to the left of its
current coordinate. Note that for dump style *custom* these various current coordinate. Note that for dump style *custom* these various
values can be printed in the dump file by using the appropriate atom values can be printed in the dump file by using the appropriate atom
attributes in the dump command itself. attributes in the dump command itself.
Using this keyword will reset all custom header names set with
*dump_modify colname* to their respective default values.
---------- ----------
@ -663,6 +674,8 @@ value of *yes* means atom coords are written in normalized units from
(tilted), then all atom coords will still be between 0.0 and 1.0. A (tilted), then all atom coords will still be between 0.0 and 1.0. A
value of *no* means they are written in absolute distance units value of *no* means they are written in absolute distance units
(e.g., :math:`\mathrm{\mathring A}` or :math:`\sigma`). (e.g., :math:`\mathrm{\mathring A}` or :math:`\sigma`).
Using this keyword will reset all custom header names set with
*dump_modify colname* to their respective default values.
---------- ----------

View File

@ -6,13 +6,13 @@ dump vtk command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
dump ID group-ID vtk N file args dump ID group-ID vtk N file args
* ID = user-assigned name for the dump * ID = user-assigned name for the dump
* group-ID = ID of the group of atoms to be dumped * group-ID = ID of the group of atoms to be dumped
* vtk = style of dump command (other styles *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page) * vtk = style of dump command (other styles such as *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page)
* N = dump every this many timesteps * N = dump every this many timesteps
* file = name of file to write dump info to * file = name of file to write dump info to
* args = same as arguments for :doc:`dump_style custom <dump>` * args = same as arguments for :doc:`dump_style custom <dump>`
@ -28,17 +28,18 @@ Examples
Description Description
""""""""""" """""""""""
Dump a snapshot of atom quantities to one or more files every N Dump a snapshot of atom quantities to one or more files every :math:`N`
timesteps in a format readable by the `VTK visualization toolkit <http://www.vtk.org>`_ or other visualization tools that use it, timesteps in a format readable by the `VTK visualization toolkit <http://www.vtk.org>`_ or other visualization tools that use it,
e.g. `ParaView <http://www.paraview.org>`_. The timesteps on which dump such as `ParaView <http://www.paraview.org>`_. The time steps on which dump
output is written can also be controlled by a variable; see the output is written can also be controlled by a variable; see the
:doc:`dump_modify every <dump_modify>` command for details. :doc:`dump_modify every <dump_modify>` command for details.
This dump style is similar to :doc:`dump_style custom <dump>` but uses This dump style is similar to :doc:`dump_style custom <dump>` but uses
the VTK library to write data to VTK simple legacy or XML format the VTK library to write data to VTK simple legacy or XML format,
depending on the filename extension specified for the dump file. This depending on the filename extension specified for the dump file. This
can be either *\*.vtk* for the legacy format or *\*.vtp* and *\*.vtu*, can be either *\*.vtk* for the legacy format or *\*.vtp* and *\*.vtu*,
respectively, for XML format; see the `VTK homepage <http://www.vtk.org/VTK/img/file-formats.pdf>`_ for a detailed respectively, for XML format; see the
`VTK homepage <http://www.vtk.org/VTK/img/file-formats.pdf>`_ for a detailed
description of these formats. Since this naming convention conflicts description of these formats. Since this naming convention conflicts
with the way binary output is usually specified (see below), the with the way binary output is usually specified (see below), the
:doc:`dump_modify binary <dump_modify>` command allows setting of a :doc:`dump_modify binary <dump_modify>` command allows setting of a

View File

@ -6,8 +6,7 @@ fix accelerate/cos command
Syntax Syntax
"""""" """"""
.. code-block:: LAMMPS
.. parsed-literal::
fix ID group-ID accelerate value fix ID group-ID accelerate value
@ -19,7 +18,6 @@ Syntax
Examples Examples
"""""""" """"""""
.. code-block:: LAMMPS .. code-block:: LAMMPS
fix 1 all accelerate/cos 0.02e-5 fix 1 all accelerate/cos 0.02e-5
@ -34,8 +32,8 @@ The acceleration is a periodic function along the z-direction:
a_{x}(z) = A \cos \left(\frac{2 \pi z}{l_{z}}\right) a_{x}(z) = A \cos \left(\frac{2 \pi z}{l_{z}}\right)
where :math:`A` is the acceleration amplitude, :math:`l_z` is the z-length where :math:`A` is the acceleration amplitude, :math:`l_z` is the
of the simulation box. :math:`z`-length of the simulation box.
At steady state, the acceleration generates a velocity profile: At steady state, the acceleration generates a velocity profile:
.. math:: .. math::
@ -49,17 +47,18 @@ shear viscosity :math:`\eta` by:
V = \frac{A \rho}{\eta}\left(\frac{l_{z}}{2 \pi}\right)^{2} V = \frac{A \rho}{\eta}\left(\frac{l_{z}}{2 \pi}\right)^{2}
and it can be obtained from ensemble average of the velocity profile: and it can be obtained from ensemble average of the velocity profile:
.. math:: .. math::
V = \frac{\sum_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum_i m_{i}} V = \frac{\sum\limits_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum\limits_i m_{i}},
where :math:`m_i`, :math:`v_{i,x}` and :math:`z_i` are the mass, where :math:`m_i`, :math:`v_{i,x}`, and :math:`z_i` are the mass,
x-component velocity and z coordinate of a particle. :math:`x`-component velocity, and :math:`z`-coordinate of a particle,
respectively.
The velocity amplitude :math:`V` can be calculated with :doc:`compute viscosity/cos <compute_viscosity_cos>`, The velocity amplitude :math:`V` can be calculated with
:doc:`compute viscosity/cos <compute_viscosity_cos>`,
which enables viscosity calculation with periodic perturbation method, which enables viscosity calculation with periodic perturbation method,
as described by :ref:`Hess<Hess2>`. as described by :ref:`Hess<Hess2>`.
Because the applied acceleration drives the system away from equilibration, Because the applied acceleration drives the system away from equilibration,
@ -79,15 +78,17 @@ Restart, fix_modify, output, run start/stop, minimize info
No information about this fix is written to binary restart files. No information about this fix is written to binary restart files.
None of the fix_modify options are relevant to this fix. None of the fix_modify options are relevant to this fix.
No global or per-atom quantities are stored by this fix for access by various output commands. No global or per-atom quantities are stored by this fix for access by various
No parameter of this fix can be used with the start/stop keywords of the run command. output commands. No parameter of this fix can be used with the start/stop
keywords of the run command.
This fix is not invoked during energy minimization. This fix is not invoked during energy minimization.
Restrictions Restrictions
"""""""""""" """"""""""""
This command is only available when LAMMPS was built with the MISC package. This command is only available when LAMMPS was built with the MISC package.
Since this fix depends on the z-coordinate of atoms, it cannot be used in 2d simulations. Since this fix depends on the :math:`z`-coordinate of atoms, it cannot be used
in 2d simulations.
Related commands Related commands
"""""""""""""""" """"""""""""""""
@ -102,4 +103,4 @@ Default
.. _Hess2: .. _Hess2:
**(Hess)** Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209-217. **(Hess)** Hess, B. Journal of Chemical Physics 2002, 116 (1), 209--217.

View File

@ -9,7 +9,7 @@ Accelerator Variants: *acks2/reaxff/kk*
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID acks2/reaxff Nevery cutlo cuthi tolerance params args fix ID group-ID acks2/reaxff Nevery cutlo cuthi tolerance params args
@ -37,10 +37,10 @@ Examples
Description Description
""""""""""" """""""""""
Perform the atom-condensed Kohn-Sham DFT to second order (ACKS2) charge Perform the atom-condensed Kohn--Sham DFT to second order (ACKS2) charge
equilibration method as described in :ref:`(Verstraelen) <Verstraelen>`. equilibration method as described in :ref:`(Verstraelen) <Verstraelen>`.
ACKS2 impedes unphysical long-range charge transfer sometimes seen with ACKS2 impedes unphysical long-range charge transfer sometimes seen with
QEq (e.g. for dissociation of molecules), at increased computational QEq (e.g., for dissociation of molecules), at increased computational
cost. It is typically used in conjunction with the ReaxFF force field cost. It is typically used in conjunction with the ReaxFF force field
model as implemented in the :doc:`pair_style reaxff <pair_reaxff>` model as implemented in the :doc:`pair_style reaxff <pair_reaxff>`
command, but it can be used with any potential in LAMMPS, so long as it command, but it can be used with any potential in LAMMPS, so long as it
@ -71,7 +71,8 @@ potential in eV, *gamma*, the valence orbital exponent, and *bcut*, the
bond cutoff distance. Note that these 4 quantities are also in the bond cutoff distance. Note that these 4 quantities are also in the
ReaxFF potential file, except that eta is defined here as twice the eta ReaxFF potential file, except that eta is defined here as twice the eta
value in the ReaxFF file. Note that unlike the rest of LAMMPS, the units value in the ReaxFF file. Note that unlike the rest of LAMMPS, the units
of this fix are hard-coded to be A, eV, and electronic charge. of this fix are hard-coded to be :math:`\mathrm{\mathring{A}}`, eV, and
electronic charge.
The optional *maxiter* keyword allows changing the max number The optional *maxiter* keyword allows changing the max number
of iterations in the linear solver. The default value is 200. of iterations in the linear solver. The default value is 200.
@ -110,7 +111,7 @@ LAMMPS was built with that package. See the :doc:`Build package
This fix does not correctly handle interactions involving multiple This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than 10 angstroms. periodic cell dimensions less than :math:`10~\mathrm{\mathring{A}}`.
This fix may be used in combination with :doc:`fix efield <fix_efield>` This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration, and will apply the external electric field during charge equilibration,
@ -132,7 +133,7 @@ maxiter 200
.. _O'Hearn: .. _O'Hearn:
**(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1-C22 (2020). **(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1--C22 (2020).
.. _Verstraelen: .. _Verstraelen:

View File

@ -6,7 +6,7 @@ fix adapt command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID adapt N attribute args ... keyword value ... fix ID group-ID adapt N attribute args ... keyword value ...
@ -19,24 +19,24 @@ Syntax
.. parsed-literal:: .. parsed-literal::
*pair* args = pstyle pparam I J v_name *pair* args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut pstyle = pair style name (e.g., lj/cut)
pparam = parameter to adapt over time pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam v_name = variable with name that calculates value of pparam
*bond* args = bstyle bparam I v_name *bond* args = bstyle bparam I v_name
bstyle = bond style name, e.g. harmonic bstyle = bond style name (e.g., harmonic)
bparam = parameter to adapt over time bparam = parameter to adapt over time
I = type bond to set parameter for I = type bond to set parameter for
v_name = variable with name that calculates value of bparam v_name = variable with name that calculates value of bparam
*angle* args = astyle aparam I v_name *angle* args = astyle aparam I v_name
astyle = angle style name, e.g. harmonic astyle = angle style name (e.g., harmonic)
aparam = parameter to adapt over time aparam = parameter to adapt over time
I = type angle to set parameter for I = type angle to set parameter for
v_name = variable with name that calculates value of aparam v_name = variable with name that calculates value of aparam
*kspace* arg = v_name *kspace* arg = v_name
v_name = variable with name that calculates scale factor on K-space terms v_name = variable with name that calculates scale factor on :math:`k`-space terms
*atom* args = atomparam v_name *atom* args = atomparam v_name
atomparam = parameter to adapt over time atomparam = *charge* or *diameter* or *diameter/disc* = parameter to adapt over time
v_name = variable with name that calculates value of atomparam v_name = variable with name that calculates value of atomparam
* zero or more keyword/value pairs may be appended * zero or more keyword/value pairs may be appended
@ -70,22 +70,22 @@ Examples
Description Description
""""""""""" """""""""""
Change or adapt one or more specific simulation attributes or settings Change or adapt one or more specific simulation attributes or settings over
over time as a simulation runs. Pair potential and K-space and atom time as a simulation runs. Pair potential and :math:`k`-space and atom
attributes which can be varied by this fix are discussed below. Many attributes which can be varied by this fix are discussed below. Many other
other fixes can also be used to time-vary simulation parameters, fixes can also be used to time-vary simulation parameters (e.g., the
e.g. the "fix deform" command will change the simulation box :doc:`fix deform <fix_deform>` command will change the simulation box
size/shape and the "fix move" command will change atom positions and size/shape and the :doc:`fix move <fix_move>` command will change atom
velocities in a prescribed manner. Also note that many commands allow positions and velocities in a prescribed manner). Also note that many commands
variables as arguments for specific parameters, if described in that allow variables as arguments for specific parameters, if described in that
manner on their doc pages. An equal-style variable can calculate a manner on their doc pages. An equal-style variable can calculate a
time-dependent quantity, so this is another way to vary a simulation time-dependent quantity, so this is another way to vary a simulation parameter
parameter over time. over time.
If *N* is specified as 0, the specified attributes are only changed If :math:`N` is specified as 0, the specified attributes are only changed
once, before the simulation begins. This is all that is needed if the once, before the simulation begins. This is all that is needed if the
associated variables are not time-dependent. If *N* > 0, then changes associated variables are not time-dependent. If :math:`N > 0`, then changes
are made every *N* steps during the simulation, presumably with a are made every :math:`N` steps during the simulation, presumably with a
variable that is time-dependent. variable that is time-dependent.
Depending on the value of the *reset* keyword, attributes changed by Depending on the value of the *reset* keyword, attributes changed by
@ -98,9 +98,9 @@ If the *scale* keyword is set to *no*, which is the default, then
the value of the altered parameter will be whatever the variable the value of the altered parameter will be whatever the variable
generates. If the *scale* keyword is set to *yes*, then the value generates. If the *scale* keyword is set to *yes*, then the value
of the altered parameter will be the initial value of that parameter of the altered parameter will be the initial value of that parameter
multiplied by whatever the variable generates. I.e. the variable is multiplied by whatever the variable generates (i.e., the variable is
now a "scale factor" applied in (presumably) a time-varying fashion to now a "scale factor" applied in (presumably) a time-varying fashion to
the parameter. the parameter).
Note that whether scale is *no* or *yes*, internally, the parameters Note that whether scale is *no* or *yes*, internally, the parameters
themselves are actually altered by this fix. Make sure you use the themselves are actually altered by this fix. Make sure you use the
@ -120,9 +120,9 @@ The *pstyle* argument is the name of the pair style. If
:doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used, :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used,
*pstyle* should be a sub-style name. If there are multiple *pstyle* should be a sub-style name. If there are multiple
sub-styles using the same pair style, then *pstyle* should be specified sub-styles using the same pair style, then *pstyle* should be specified
as "style:N" where N is which instance of the pair style you wish to as "style:N", where :math:`N` is which instance of the pair style you wish to
adapt, e.g. the first, second, etc. For example, *pstyle* could be adapt (e.g., the first or second). For example, *pstyle* could be
specified as "soft" or "lubricate" or "lj/cut:1" or "lj/cut:2". The specified as "soft" or "lubricate" or "lj/cut:1" or "lj/cut:2." The
*pparam* argument is the name of the parameter to change. This is the *pparam* argument is the name of the parameter to change. This is the
current list of pair styles and parameters that can be varied by this current list of pair styles and parameters that can be varied by this
fix. See the doc pages for individual pair styles and their energy fix. See the doc pages for individual pair styles and their energy
@ -216,45 +216,46 @@ formulas for the meaning of these parameters:
to this list. All it typically takes is adding an extract() method to to this list. All it typically takes is adding an extract() method to
the pair\_\*.cpp file associated with the potential. the pair\_\*.cpp file associated with the potential.
Some parameters are global settings for the pair style, e.g. the Some parameters are global settings for the pair style (e.g., the
viscosity setting "mu" for :doc:`pair_style lubricate <pair_lubricate>`. viscosity setting "mu" for :doc:`pair_style lubricate <pair_lubricate>`).
Other parameters apply to atom type pairs within the pair style, Other parameters apply to atom type pairs within the pair style (e.g., the
e.g. the prefactor "a" for :doc:`pair_style soft <pair_soft>`. prefactor :math:`a` for :doc:`pair_style soft <pair_soft>`).
Note that for many of the potentials, the parameter that can be varied Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale" potential (e.g., the lj/cut epsilon). The parameters listed as "scale"
are exactly that, since the energy expression for the are exactly that, since the energy expression for the
:doc:`coul/cut <pair_coul>` potential (for example) has no labeled :doc:`coul/cut <pair_coul>` potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some prefactor in its formula. To apply an effective prefactor to some
potentials, multiple parameters need to be altered. For example, the potentials, multiple parameters need to be altered. For example, the
:doc:`Buckingham potential <pair_buck>` needs both the A and C terms :doc:`Buckingham potential <pair_buck>` needs both the :math:`A` and
altered together. To scale the Buckingham potential, you should thus :math:`C` terms altered together. To scale the Buckingham potential, you
list the pair style twice, once for A and once for C. should thus list the pair style twice, once for :math:`A` and once for
:math:`C`.
If a type pair parameter is specified, the *I* and *J* settings should If a type pair parameter is specified, the :math:`I` and :math:`J` settings
be specified to indicate which type pairs to apply it to. If a global should be specified to indicate which type pairs to apply it to. If a global
parameter is specified, the *I* and *J* settings still need to be parameter is specified, the :math:`I` and :math:`J` settings still need to be
specified, but are ignored. specified, but are ignored.
Similar to the :doc:`pair_coeff command <pair_coeff>`, I and J can be Similar to the :doc:`pair_coeff command <pair_coeff>`, :math:`I` and :math:`J`
specified in one of two ways. Explicit numeric values can be used for can be specified in one of two ways. Explicit numeric values can be used for
each, as in the first example above. I <= J is required. LAMMPS sets each, as in the first example above. :math:`I \le J` is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values. the coefficients for the symmetric :math:`J,I` interaction to the same values.
A wild-card asterisk can be used in place of or in conjunction with A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs of atom the :math:`I,J` arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
the number of atom types, then an asterisk with no numeric values is the number of atom types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N 1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n
(inclusive). Note that only type pairs with I <= J are considered; if (inclusive). Note that only type pairs with :math:`I \le J` are considered; if
asterisks imply type pairs where J < I, they are ignored. asterisks imply type pairs where :math:`J < I`, they are ignored.
IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay IMPORTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay
<pair_hybrid>` is being used, then the *pstyle* will be a sub-style <pair_hybrid>` is being used, then the *pstyle* will be a sub-style
name. You must specify I,J arguments that correspond to type pair name. You must specify :math:`I,J` arguments that correspond to type pair
values defined (via the :doc:`pair_coeff <pair_coeff>` command) for values defined (via the :doc:`pair_coeff <pair_coeff>` command) for
that sub-style. that sub-style.
@ -289,12 +290,11 @@ given bond type is adapted.
A wild-card asterisk can be used in place of or in conjunction with A wild-card asterisk can be used in place of or in conjunction with
the bond type argument to set the coefficients for multiple bond the bond type argument to set the coefficients for multiple bond
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
the number of bond types, then an asterisk with no numeric values is the number of bond types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N 1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n (inclusive).
(inclusive).
Currently *bond* does not support bond_style hybrid nor bond_style Currently *bond* does not support bond_style hybrid nor bond_style
hybrid/overlay as bond styles. The bond styles that currently work hybrid/overlay as bond styles. The bond styles that currently work
@ -325,12 +325,11 @@ given angle type is adapted.
A wild-card asterisk can be used in place of or in conjunction with A wild-card asterisk can be used in place of or in conjunction with
the angle type argument to set the coefficients for multiple angle the angle type argument to set the coefficients for multiple angle
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
the number of angle types, then an asterisk with no numeric values is the number of angle types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N 1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n (inclusive).
(inclusive).
Currently *angle* does not support angle_style hybrid nor angle_style Currently *angle* does not support angle_style hybrid nor angle_style
hybrid/overlay as angle styles. The angle styles that currently work hybrid/overlay as angle styles. The angle styles that currently work
@ -348,7 +347,7 @@ this fix uses to reset theta0 needs to generate values in radians.
---------- ----------
The *kspace* keyword used the specified variable as a scale factor on The *kspace* keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is the energy, forces, virial calculated by whatever :math:`k`-space solver is
defined by the :doc:`kspace_style <kspace_style>` command. If the defined by the :doc:`kspace_style <kspace_style>` command. If the
variable has a value of 1.0, then the solver is unaltered. variable has a value of 1.0, then the solver is unaltered.
@ -373,17 +372,17 @@ with equal-style variables. The new value is assigned to the
corresponding attribute for all atoms in the fix group. corresponding attribute for all atoms in the fix group.
If the atom parameter is *diameter* and per-atom density and per-atom If the atom parameter is *diameter* and per-atom density and per-atom
mass are defined for particles (e.g. :doc:`atom_style granular mass are defined for particles (e.g., :doc:`atom_style granular
<atom_style>`), then the mass of each particle is, by default, also <atom_style>`), then the mass of each particle is, by default, also
changed when the diameter changes. The mass is set from the particle changed when the diameter changes. The mass is set from the particle
volume for 3d systems (density is assumed to stay constant). For 2d, volume for 3d systems (density is assumed to stay constant). For 2d,
the default is for LAMMPS to model particles with a radius attribute the default is for LAMMPS to model particles with a radius attribute
as spheres. However, if the atom parameter is *diameter/disc*, then the as spheres. However, if the atom parameter is *diameter/disc*, then the
mass is set from the particle area (the density is assumed to be in mass is set from the particle area (the density is assumed to be in
mass/distance^2 units). The mass of the particle may also be kept constant mass/distance\ :math:`^2` units). The mass of the particle may also be kept
if the *mass* keyword is set to *no*. This can be useful to account for constant if the *mass* keyword is set to *no*. This can be useful to account
diameter changes that do not involve mass changes, e.g., thermal expansion. for diameter changes that do not involve mass changes (e.g., thermal
expansion).
For example, these commands would shrink the diameter of all granular For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion particles in the "center" group from 1.0 to 0.1 in a linear fashion
@ -405,11 +404,11 @@ their original values at the end of the last restarted run.
Note that all the parameters changed by this fix are written into a Note that all the parameters changed by this fix are written into a
restart file in their current changed state. A new restarted restart file in their current changed state. A new restarted
simulation does not know their original time=0 values, unless the simulation does not know the original time=0 values, unless the
input script explicitly resets the parameters (after the restart file input script explicitly resets the parameters (after the restart file
is read), to their original values. is read) to the original values.
Also note, that the time-dependent variable(s) used in the restart Also note that the time-dependent variable(s) used in the restart
script should typically be written as a function of time elapsed since script should typically be written as a function of time elapsed since
the original simulation began. the original simulation began.
@ -430,8 +429,8 @@ the one used in the original script.
In a restarted run, if the *reset* keyword is set to *yes*, and the In a restarted run, if the *reset* keyword is set to *yes*, and the
run ends in this script (as opposed to just writing more restart run ends in this script (as opposed to just writing more restart
files, parameters will be restored to the values they were at the files), parameters will be restored to the values they were at the
beginning of the run command in the restart script. Which as beginning of the run command in the restart script, which as
explained above, may or may not be the original values of the explained above, may or may not be the original values of the
parameters. Again, an exception is if the *atom* keyword is being parameters. Again, an exception is if the *atom* keyword is being
used with *reset yes* (in all the runs). In that case, the original used with *reset yes* (in all the runs). In that case, the original

View File

@ -6,7 +6,7 @@ fix adapt/fep command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID adapt/fep N attribute args ... keyword value ... fix ID group-ID adapt/fep N attribute args ... keyword value ...
@ -19,7 +19,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
*pair* args = pstyle pparam I J v_name *pair* args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut pstyle = pair style name (e.g., lj/cut)
pparam = parameter to adapt over time pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam v_name = variable with name that calculates value of pparam
@ -66,12 +66,12 @@ Change or adapt one or more specific simulation attributes or settings
over time as a simulation runs. over time as a simulation runs.
This is an enhanced version of the :doc:`fix adapt <fix_adapt>` command This is an enhanced version of the :doc:`fix adapt <fix_adapt>` command
with two differences, with two differences:
* It is possible to modify the charges of chosen atom types only, * It is possible to modify the charges of chosen atom types only,
instead of scaling all the charges in the system. instead of scaling all the charges in the system.
* There is a new option *after* for better compatibility with "fix * There is a new option *after* for better compatibility with
ave/time". :doc:`fix ave/time <fix_ave_time>`.
This version is suited for free energy calculations using This version is suited for free energy calculations using
:doc:`compute ti <compute_ti>` or :doc:`compute fep <compute_fep>`. :doc:`compute ti <compute_ti>` or :doc:`compute fep <compute_fep>`.
@ -92,8 +92,8 @@ If the *scale* keyword is set to *no*, then the value the parameter is
set to will be whatever the variable generates. If the *scale* set to will be whatever the variable generates. If the *scale*
keyword is set to *yes*, then the value of the altered parameter will keyword is set to *yes*, then the value of the altered parameter will
be the initial value of that parameter multiplied by whatever the be the initial value of that parameter multiplied by whatever the
variable generates. I.e. the variable is now a "scale factor" applied variable generates (i.e., the variable is now a "scale factor" applied
in (presumably) a time-varying fashion to the parameter. Internally, in (presumably) a time-varying fashion to the parameter). Internally,
the parameters themselves are actually altered; make sure you use the the parameters themselves are actually altered; make sure you use the
*reset yes* option if you want the parameters to be restored to their *reset yes* option if you want the parameters to be restored to their
initial values after the run. initial values after the run.
@ -115,7 +115,7 @@ overrides the parameters.
The *pstyle* argument is the name of the pair style. If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used, *pstyle* should be The *pstyle* argument is the name of the pair style. If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used, *pstyle* should be
a sub-style name. For example, *pstyle* could be specified as "soft" a sub-style name. For example, *pstyle* could be specified as "soft"
or "lubricate". The *pparam* argument is the name of the parameter to or "lubricate." The *pparam* argument is the name of the parameter to
change. This is the current list of pair styles and parameters that change. This is the current list of pair styles and parameters that
can be varied by this fix. See the doc pages for individual pair can be varied by this fix. See the doc pages for individual pair
styles and their energy formulas for the meaning of these parameters: styles and their energy formulas for the meaning of these parameters:
@ -188,7 +188,7 @@ styles and their energy formulas for the meaning of these parameters:
Note that for many of the potentials, the parameter that can be varied Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale" potential (e.g., the lj/cut epsilon). The parameters listed as "scale"
are exactly that, since the energy expression for the are exactly that, since the energy expression for the
:doc:`coul/cut <pair_coul>` potential (for example) has no labeled :doc:`coul/cut <pair_coul>` potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some prefactor in its formula. To apply an effective prefactor to some
@ -204,23 +204,23 @@ specified, but are ignored.
Similar to the :doc:`pair_coeff command <pair_coeff>`, I and J can be Similar to the :doc:`pair_coeff command <pair_coeff>`, I and J can be
specified in one of two ways. Explicit numeric values can be used for specified in one of two ways. Explicit numeric values can be used for
each, as in the first example above. I <= J is required. LAMMPS sets each, as in the first example above. :math:`I \le J` is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values. the coefficients for the symmetric J,I interaction to the same values.
A wild-card asterisk can be used in place of or in conjunction with A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs of atom the :math:`I,J` arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = the types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N` is
number of atom types, then an asterisk with no numeric values means the number of atom types, then an asterisk with no numeric values means
all types from 1 to N. A leading asterisk means all types from 1 to n all types from 1 to :math:`N`. A leading asterisk means all types from 1 to n
(inclusive). A trailing asterisk means all types from n to N (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n
(inclusive). Note that only type pairs with I <= J are considered; if (inclusive). Note that only type pairs with :math:`I \le J` are considered; if
asterisks imply type pairs where J < I, they are ignored. asterisks imply type pairs where :math:`J < I`, they are ignored.
IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is being used, then the *pstyle* will IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is
be a sub-style name. You must specify I,J arguments that correspond being used, then the *pstyle* will be a sub-style name. You must specify
to type pair values defined (via the :doc:`pair_coeff <pair_coeff>` :math:`I,J` arguments that correspond to type pair values defined (via the
command) for that sub-style. :doc:`pair_coeff <pair_coeff>` command) for that sub-style.
The *v_name* argument for keyword *pair* is the name of an The *v_name* argument for keyword *pair* is the name of an
:doc:`equal-style variable <variable>` which will be evaluated each time :doc:`equal-style variable <variable>` which will be evaluated each time
@ -232,8 +232,7 @@ simulation box parameters and timestep and elapsed time. Thus it is
easy to specify parameters that change as a function of time or span easy to specify parameters that change as a function of time or span
consecutive runs in a continuous fashion. For the latter, see the consecutive runs in a continuous fashion. For the latter, see the
*start* and *stop* keywords of the :doc:`run <run>` command and the *start* and *stop* keywords of the :doc:`run <run>` command and the
*elaplong* keyword of :doc:`thermo_style custom <thermo_style>` for *elaplong* keyword of :doc:`thermo_style custom <thermo_style>` for details.
details.
For example, these commands would change the prefactor coefficient of For example, these commands would change the prefactor coefficient of
the :doc:`pair_style soft <pair_soft>` potential from 10.0 to 30.0 in a the :doc:`pair_style soft <pair_soft>` potential from 10.0 to 30.0 in a
@ -247,7 +246,7 @@ linear fashion over the course of a simulation:
---------- ----------
The *kspace* keyword used the specified variable as a scale factor on The *kspace* keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is the energy, forces, virial calculated by whatever :math:`k`-space solver is
defined by the :doc:`kspace_style <kspace_style>` command. If the defined by the :doc:`kspace_style <kspace_style>` command. If the
variable has a value of 1.0, then the solver is unaltered. variable has a value of 1.0, then the solver is unaltered.
@ -263,8 +262,8 @@ current list of atom parameters that can be varied by this fix:
* charge = charge on particle * charge = charge on particle
* diameter = diameter of particle * diameter = diameter of particle
The *I* argument indicates which atom types are affected. A wild-card The :math:`I` argument indicates which atom types are affected. A wild-card
asterisk can be used in place of or in conjunction with the I argument asterisk can be used in place of or in conjunction with the :math:`I` argument
to set the coefficients for multiple atom types. to set the coefficients for multiple atom types.
The *v_name* argument of the *atom* keyword is the name of an The *v_name* argument of the *atom* keyword is the name of an
@ -276,9 +275,9 @@ variables. The new value is assigned to the corresponding attribute
for all atoms in the fix group. for all atoms in the fix group.
If the atom parameter is *diameter* and per-atom density and per-atom If the atom parameter is *diameter* and per-atom density and per-atom
mass are defined for particles (e.g. :doc:`atom_style granular <atom_style>`), then the mass of each particle is also mass are defined for particles (e.g., :doc:`atom_style granular <atom_style>`),
changed when the diameter changes (density is assumed to stay then the mass of each particle is also changed when the diameter changes
constant). (density is assumed to stay constant).
For example, these commands would shrink the diameter of all granular For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion particles in the "center" group from 1.0 to 0.1 in a linear fashion
@ -297,11 +296,14 @@ parameters on the outermost rRESPA level.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
:doc:`binary restart files <restart>`.
None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global or per-atom quantities are stored are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`. by this fix for access by various :doc:`output commands <Howto_output>`.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""
@ -310,7 +312,8 @@ Restrictions
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute fep <compute_fep>`, :doc:`fix adapt <fix_adapt>`, :doc:`compute ti <compute_ti>`, :doc:`pair_style \*/soft <pair_fep_soft>` :doc:`compute fep <compute_fep>`, :doc:`fix adapt <fix_adapt>`,
:doc:`compute ti <compute_ti>`, :doc:`pair_style \*/soft <pair_fep_soft>`
Default Default
""""""" """""""

View File

@ -6,7 +6,7 @@ fix addforce command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID addforce fx fy fz keyword value ... fix ID group-ID addforce fx fy fz keyword value ...
@ -42,26 +42,26 @@ Examples
Description Description
""""""""""" """""""""""
Add fx,fy,fz to the corresponding component of force for each atom in Add :math:`(f_x,f_y,f_z)` to the corresponding component of the force for each
the group. This command can be used to give an additional push to atom in the group. This command can be used to give an additional push to
atoms in a simulation, such as for a simulation of Poiseuille flow in atoms in a simulation, such as for a simulation of Poiseuille flow in
a channel. a channel.
Any of the 3 quantities defining the force components can be specified Any of the three quantities defining the force components, namely :math:`f_x`,
as an equal-style or atom-style :doc:`variable <variable>`, namely *fx*, :math:`f_y`, and :math:`f_z`, can be specified as an equal-style or atom-style
*fy*, *fz*\ . If the value is a variable, it should be specified as :doc:`variable <variable>`. If the value is a variable, it should be specified
v_name, where name is the variable name. In this case, the variable as v_name, where name is the variable name. In this case, the variable
will be evaluated each timestep, and its value(s) used to determine will be evaluated each time step, and its value(s) will be used to determine
the force component. the force component(s).
Equal-style variables can specify formulas with various mathematical Equal-style variables can specify formulas with various mathematical
functions, and include :doc:`thermo_style <thermo_style>` command functions and include :doc:`thermo_style <thermo_style>` command
keywords for the simulation box parameters and timestep and elapsed keywords for the simulation box parameters, time step, and elapsed time.
time. Thus it is easy to specify a time-dependent force field. Thus, it is easy to specify a time-dependent force field.
Atom-style variables can specify the same formulas as equal-style Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force coordinates. Thus, it is easy to specify a spatially-dependent force
field with optional time-dependence as well. field with optional time-dependence as well.
If the *every* keyword is used, the *Nevery* setting determines how If the *every* keyword is used, the *Nevery* setting determines how
@ -83,10 +83,14 @@ potential energy to formulate a self-consistent minimization problem
(see below). (see below).
The *energy* keyword is not allowed if the added force is a constant The *energy* keyword is not allowed if the added force is a constant
vector F = (fx,fy,fz), with all components defined as numeric vector :math:`\vec F = (f_x,f_y,f_z)`, with all components defined as numeric
constants and not as variables. This is because LAMMPS can compute constants and not as variables. This is because LAMMPS can compute
the energy for each atom directly as E = -x dot F = -(x\*fx + y\*fy + the energy for each atom directly as
z\*fz), so that -Grad(E) = F.
.. math::
E = -\vec x \cdot \vec F = -(x f_x + y f_y + z f_z),
so that :math:`-\vec\nabla E = \vec F`.
The *energy* keyword is optional if the added force is defined with The *energy* keyword is optional if the added force is defined with
one or more variables, and if you are performing dynamics via the one or more variables, and if you are performing dynamics via the
@ -98,16 +102,16 @@ one or more variables, and you are performing energy minimization via
the "minimize" command. The keyword specifies the name of an the "minimize" command. The keyword specifies the name of an
atom-style :doc:`variable <variable>` which is used to compute the atom-style :doc:`variable <variable>` which is used to compute the
energy of each atom as function of its position. Like variables used energy of each atom as function of its position. Like variables used
for *fx*, *fy*, *fz*, the energy variable is specified as v_name, for :math:`f_x`, :math:`f_y`, :math:`f_z`, the energy variable is specified as
where name is the variable name. v_name, where name is the variable name.
Note that when the *energy* keyword is used during an energy Note that when the *energy* keyword is used during an energy
minimization, you must insure that the formula defined for the minimization, you must insure that the formula defined for the
atom-style :doc:`variable <variable>` is consistent with the force atom-style :doc:`variable <variable>` is consistent with the force
variable formulas, i.e. that -Grad(E) = F. For example, if the force variable formulas (i.e., that :math:`-\vec\nabla E = \vec F`).
were a spring-like F = kx, then the energy formula should be E = For example, if the force were a spring-like, :math:`\vec F = -k\vec x`, then
-0.5kx\^2. If you don't do this correctly, the minimization will not the energy formula should be :math:`E = \frac12 kx^2`. If you do not do this
converge properly. correctly, the minimization will not converge properly.
---------- ----------
@ -128,8 +132,8 @@ the global potential energy of the system as part of
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
energy is a fictitious quantity but is needed so that the energy is a fictitious quantity but is needed so that the
:doc:`minimize <minimize>` command can include the forces added by :doc:`minimize <minimize>` command can include the forces added by
this fix in a consistent manner. I.e. there is a decrease in this fix in a consistent manner (i.e., there is a decrease in
potential energy when atoms move in the direction of the added force. potential energy when atoms move in the direction of the added force).
The :doc:`fix_modify <fix_modify>` *virial* option is supported by The :doc:`fix_modify <fix_modify>` *virial* option is supported by
this fix to add the contribution due to the added forces on atoms to this fix to add the contribution due to the added forces on atoms to
@ -144,12 +148,12 @@ fix. This allows to set at which level of the :doc:`r-RESPA
<run_style>` integrator the fix is adding its forces. Default is the <run_style>` integrator the fix is adding its forces. Default is the
outermost level. outermost level.
This fix computes a global scalar and a global 3-vector of forces, This fix computes a global scalar and a global three-vector of forces,
which can be accessed by various :doc:`output commands which can be accessed by various :doc:`output commands
<Howto_output>`. The scalar is the potential energy discussed above. <Howto_output>`. The scalar is the potential energy discussed above.
The vector is the total force on the group of atoms before the forces The vector is the total force on the group of atoms before the forces
on individual atoms are changed by the fix. The scalar and vector on individual atoms are changed by the fix. The scalar and vector
values calculated by this fix are "extensive". values calculated by this fix are "extensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix addtorque command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID addtorque Tx Ty Tz fix ID group-ID addtorque Tx Ty Tz
@ -30,13 +30,13 @@ Add a set of forces to each atom in
the group such that: the group such that:
* the components of the total torque applied on the group (around its * the components of the total torque applied on the group (around its
center of mass) are Tx,Ty,Tz center of mass) are :math:`T_x`, :math:`T_y`, and :math:`T_z`
* the group would move as a rigid body in the absence of other * the group would move as a rigid body in the absence of other
forces. forces.
This command can be used to drive a group of atoms into rotation. This command can be used to drive a group of atoms into rotation.
Any of the 3 quantities defining the torque components can be specified Any of the three quantities defining the torque components can be specified
as an equal-style :doc:`variable <variable>`, namely *Tx*, as an equal-style :doc:`variable <variable>`, namely *Tx*,
*Ty*, *Tz*\ . If the value is a variable, it should be specified as *Ty*, *Tz*\ . If the value is a variable, it should be specified as
v_name, where name is the variable name. In this case, the variable v_name, where name is the variable name. In this case, the variable
@ -53,7 +53,8 @@ time. Thus it is easy to specify a time-dependent torque.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. No information about this fix is written to
:doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential "energy" inferred by the added torques this fix to add the potential "energy" inferred by the added torques
@ -62,8 +63,8 @@ to the global potential energy of the system as part of
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
is a fictitious quantity but is needed so that the :doc:`minimize is a fictitious quantity but is needed so that the :doc:`minimize
<minimize>` command can include the forces added by this fix in a <minimize>` command can include the forces added by this fix in a
consistent manner. I.e. there is a decrease in potential energy when consistent manner (i.e., there is a decrease in potential energy when
atoms move in the direction of the added forces. atoms move in the direction of the added forces).
The :doc:`fix_modify <fix_modify>` *respa* option is supported by The :doc:`fix_modify <fix_modify>` *respa* option is supported by
this fix. This allows to set at which level of the :doc:`r-RESPA <run_style>` this fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
@ -74,7 +75,7 @@ accessed by various :doc:`output commands <Howto_output>`. The scalar
is the potential energy discussed above. The vector is the total is the potential energy discussed above. The vector is the total
torque on the group of atoms before the forces on individual atoms are torque on the group of atoms before the forces on individual atoms are
changed by the fix. The scalar and vector values calculated by this changed by the fix. The scalar and vector values calculated by this
fix are "extensive". fix are "extensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. the :doc:`run <run>` command.
@ -99,9 +100,9 @@ invoked by the :doc:`minimize <minimize>` command.
Restrictions Restrictions
"""""""""""" """"""""""""
This fix is part of the EXTRA-FIX package. It is only enabled if This fix is part of the EXTRA-FIX package. It is only enabled if LAMMPS was
LAMMPS was built with that package. See the :doc:`Build package built with that package. See the :doc:`Build package <Build_package>` page for
<Build_package>` page for more info. more info.
Related commands Related commands
"""""""""""""""" """"""""""""""""

View File

@ -6,7 +6,7 @@ fix amoeba/bitorsion command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ameoba/bitorsion filename fix ID group-ID ameoba/bitorsion filename
@ -55,8 +55,8 @@ should have a line like this in its header section:
N bitorsions N bitorsions
where N is the number of bitorsion 5-body interactions. It should where :math:`N` is the number of bitorsion 5-body interactions. It should
also have a section in the body of the data file like this with N also have a section in the body of the data file like this with :math:`N`
lines: lines:
.. parsed-literal:: .. parsed-literal::
@ -68,7 +68,7 @@ lines:
[...] [...]
N 3 314 315 317 318 330 N 3 314 315 317 318 330
The first column is an index from 1 to N to enumerate the bitorsion The first column is an index from 1 to :math:`N` to enumerate the bitorsion
5-atom tuples; it is ignored by LAMMPS. The second column is the 5-atom tuples; it is ignored by LAMMPS. The second column is the
*type* of the interaction; it is an index into the bitorsion force *type* of the interaction; it is an index into the bitorsion force
field file. The remaining 5 columns are the atom IDs of the atoms in field file. The remaining 5 columns are the atom IDs of the atoms in
@ -124,7 +124,7 @@ setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential :doc:`output commands <Howto_output>`. The scalar is the potential
energy discussed above. The scalar value calculated by this fix is energy discussed above. The scalar value calculated by this fix is
"extensive". "extensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix amoeba/pitorsion command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ameoba/pitorsion fix ID group-ID ameoba/pitorsion
@ -29,14 +29,16 @@ Description
This command enables 6-body pitorsion interactions to be added to This command enables 6-body pitorsion interactions to be added to
simulations which use the AMOEBA and HIPPO force fields. It matches simulations which use the AMOEBA and HIPPO force fields. It matches
how the Tinker MD code computes its pitorsion interactions for the how the Tinker MD code computes its pitorsion interactions for the
AMOEBA and HIPPO force fields. See the :doc:`Howto amoeba AMOEBA and HIPPO force fields. See the :doc:`Howto amoeba <Howto_amoeba>`
<Howto_amoeba>` doc page for more information about the implementation doc page for more information about the implementation of AMOEBA and HIPPO in
of AMOEBA and HIPPO in LAMMPS. LAMMPS.
Pitorsion interactions add additional potential energy contributions Pitorsion interactions add additional potential energy contributions
to 6-tuples of atoms IJKLMN which have a bond between atoms K and L, to 6-tuples of atoms :math:`IJKLMN` that have a bond between atoms
where both K and L are additionally bonded to exactly two other atoms. :math:`K` and :math:`L`, where both :math:`K` and :math:`L` are additionally
Namely K is also bonded to I and J. And L is also bonded to M and N. bonded to exactly two other atoms. Namely, :math:`K` is also bonded to
:math:`I` and :math:`J`, and :math:`L` is also bonded to :math:`M` and
:math:`N`.
The examples/amoeba directory has a sample input script and data file The examples/amoeba directory has a sample input script and data file
for ubiquitin, which illustrates use of the fix amoeba/pitorsion for ubiquitin, which illustrates use of the fix amoeba/pitorsion
@ -47,7 +49,7 @@ file that contains a listing of pitorsion interactions.
The data file read by the :doc:`read_data <read_data>` command must The data file read by the :doc:`read_data <read_data>` command must
contain the topology of all the pitorsion interactions, similar to the contain the topology of all the pitorsion interactions, similar to the
topology data for bonds, angles, dihedrals, etc. Specifically it topology data for bonds, angles, dihedrals, etc. Specifically, it
should have two lines like these in its header section: should have two lines like these in its header section:
.. parsed-literal:: .. parsed-literal::
@ -55,9 +57,9 @@ should have two lines like these in its header section:
M pitorsion types M pitorsion types
N pitorsions N pitorsions
where N is the number of pitorsion 5-body interactions and M is the where :math:`N` is the number of pitorsion 5-body interactions and :math:`M` is
number of pitorsion types. It should also have two sections in the body the number of pitorsion types. It should also have two sections in the body
of the data file like these with M and N lines each: of the data file like these with :math:`M` and :math:`N` lines each:
.. parsed-literal:: .. parsed-literal::
@ -77,11 +79,11 @@ of the data file like these with M and N lines each:
[...] [...]
N 3 314 315 317 318 330 N 3 314 315 317 318 330
For PiTorsion Coeffs, the first column is an index from 1 to M to For PiTorsion Coeffs, the first column is an index from 1 to :math:`M` to
enumerate the pitorsion types. The second column is the single enumerate the pitorsion types. The second column is the single
prefactor coefficient needed for each type. prefactor coefficient needed for each type.
For PiTorsions, the first column is an index from 1 to N to enumerate For PiTorsions, the first column is an index from 1 to :math:`N` to enumerate
the pitorsion 5-atom tuples; it is ignored by LAMMPS. The second the pitorsion 5-atom tuples; it is ignored by LAMMPS. The second
column is the "type" of the interaction; it is an index into the column is the "type" of the interaction; it is an index into the
PiTorsion Coeffs. The remaining 5 columns are the atom IDs of the PiTorsion Coeffs. The remaining 5 columns are the atom IDs of the
@ -90,8 +92,8 @@ atoms in the two 4-atom dihedrals that overlap to create the pitorsion
Note that the *pitorsion types* and *pitorsions* and *PiTorsion Note that the *pitorsion types* and *pitorsions* and *PiTorsion
Coeffs* and *PiTorsions* keywords for the header and body sections of Coeffs* and *PiTorsions* keywords for the header and body sections of
the data file match those specified in the :doc:`read_data the data file match those specified in the :doc:`read_data <read_data>`
<read_data>` command following the data file name. command following the data file name.
The data file should be generated by using the The data file should be generated by using the
tools/tinker/tinker2lmp.py conversion script which creates a LAMMPS tools/tinker/tinker2lmp.py conversion script which creates a LAMMPS
@ -136,7 +138,7 @@ setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential :doc:`output commands <Howto_output>`. The scalar is the potential
energy discussed above. The scalar value calculated by this fix is energy discussed above. The scalar value calculated by this fix is
"extensive". "extensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. the :doc:`run <run>` command.
@ -161,8 +163,8 @@ Restrictions
"""""""""""" """"""""""""
To function as expected this fix command must be issued *before* a To function as expected this fix command must be issued *before* a
:doc:`read_data <read_data>` command but *after* a :doc:`read_restart :doc:`read_data <read_data>` command but *after* a
<read_restart>` command. :doc:`read_restart <read_restart>` command.
This fix can only be used if LAMMPS was built with the AMOEBA package. This fix can only be used if LAMMPS was built with the AMOEBA package.
See the :doc:`Build package <Build_package>` page for more info. See the :doc:`Build package <Build_package>` page for more info.

View File

@ -6,7 +6,7 @@ fix append/atoms command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID append/atoms face ... keyword value ... fix ID group-ID append/atoms face ... keyword value ...
@ -66,7 +66,7 @@ specific basis atoms as they are created. See the
defined for the unit cell of the lattice. By default, all created defined for the unit cell of the lattice. By default, all created
atoms are assigned type = 1 unless this keyword specifies differently. atoms are assigned type = 1 unless this keyword specifies differently.
The *size* keyword defines the size in z of the chunk of material to The *size* keyword defines the size in :math:`z` of the chunk of material to
be added. be added.
The *random* keyword will give the atoms random displacements around The *random* keyword will give the atoms random displacements around
@ -79,7 +79,8 @@ measured from zhi and is set with the *extent* argument.
The *units* keyword determines the meaning of the distance units used The *units* keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used. to define a wall position, but only when a numeric constant is used.
A *box* value selects standard distance units as defined by the A *box* value selects standard distance units as defined by the
:doc:`units <units>` command, e.g. Angstroms for units = real or metal. :doc:`units <units>` command (e.g., :math:`\mathrm{\mathring A}`
for units = real or metal.
A *lattice* value means the distance units are in lattice spacings. A *lattice* value means the distance units are in lattice spacings.
The :doc:`lattice <lattice>` command must have been previously used to The :doc:`lattice <lattice>` command must have been previously used to
define the lattice spacings. define the lattice spacings.
@ -89,17 +90,21 @@ define the lattice spacings.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
:doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global or per-atom quantities are stored are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`. by this fix for access by various :doc:`output commands <Howto_output>`.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""
This fix style is part of the SHOCK package. It is only enabled if This fix style is part of the SHOCK package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info. LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
The boundary on which atoms are added with append/atoms must be The boundary on which atoms are added with append/atoms must be
shrink/minimum. The opposite boundary may be any boundary type other shrink/minimum. The opposite boundary may be any boundary type other

View File

@ -6,7 +6,7 @@ fix atc command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix <fixID> <group> atc <type> <parameter_file> fix <fixID> <group> atc <type> <parameter_file>
@ -40,8 +40,8 @@ This fix is the beginning to creating a coupled FE/MD simulation and/or
an on-the-fly estimation of continuum fields. The coupled versions of an on-the-fly estimation of continuum fields. The coupled versions of
this fix do Verlet integration and the post-processing does not. After this fix do Verlet integration and the post-processing does not. After
instantiating this fix, several other fix_modify commands will be instantiating this fix, several other fix_modify commands will be
needed to set up the problem, e.g. define the finite element mesh and needed to set up the problem (i.e., define the finite element mesh and
prescribe initial and boundary conditions. prescribe initial and boundary conditions).
.. image:: JPG/atc_nanotube.jpg .. image:: JPG/atc_nanotube.jpg
:align: center :align: center
@ -135,7 +135,7 @@ fix are listed below.
This fix computes a global scalar which can be accessed by various This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the energy :doc:`output commands <Howto_output>`. The scalar is the energy
discussed in the previous paragraph. The scalar value is "extensive". discussed in the previous paragraph. The scalar value is "extensive."
No parameter of this fix can be used with the No parameter of this fix can be used with the
*start/stop* keywords of the :doc:`run <run>` command. This fix is not *start/stop* keywords of the :doc:`run <run>` command. This fix is not
@ -147,7 +147,7 @@ Restrictions
Thermal and two_temperature (coupling) types use a Verlet Thermal and two_temperature (coupling) types use a Verlet
time-integration algorithm. The hardy type does not contain its own time-integration algorithm. The hardy type does not contain its own
time-integrator and must be used with a separate fix that does contain time-integrator and must be used with a separate fix that does contain
one, e.g. nve, nvt, etc. In addition, currently: one (e.g., nve, nvt). In addition, currently:
* the coupling is restricted to thermal physics * the coupling is restricted to thermal physics
* the FE computations are done in serial on each processor. * the FE computations are done in serial on each processor.
@ -159,8 +159,8 @@ Related commands
After specifying this fix in your input script, several After specifying this fix in your input script, several
:doc:`fix_modify AtC <fix_modify>` commands are used to setup the :doc:`fix_modify AtC <fix_modify>` commands are used to setup the
problem, e.g. define the finite element mesh and prescribe initial and problem (e.g., define the finite element mesh and prescribe initial and
boundary conditions. Each of these options has its own doc page. boundary conditions). Each of these options has its own doc page.
*fix_modify* commands for setup: *fix_modify* commands for setup:
@ -311,6 +311,6 @@ and Computation (2011), 7:1736.
as a field variable from molecular dynamics simulations." Journal of as a field variable from molecular dynamics simulations." Journal of
Chemical Physics (2013), 139:054115. Chemical Physics (2013), 139:054115.
Please refer to the standard finite element (FE) texts, e.g. T.J.R Please refer to the standard finite element (FE) texts (e.g., T.J.R.
Hughes " The finite element method ", Dover 2003, for the basics of FE Hughes, *The Finite Element Method,* Dover 2003) for the basics of FE
simulation. simulations.

View File

@ -6,7 +6,7 @@ fix atom/swap command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID atom/swap N X seed T keyword values ... fix ID group-ID atom/swap N X seed T keyword values ...
@ -45,10 +45,10 @@ Description
""""""""""" """""""""""
This fix performs Monte Carlo swaps of atoms of one given atom type This fix performs Monte Carlo swaps of atoms of one given atom type
with atoms of the other given atom types. The specified T is used in with atoms of the other given atom types. The specified :math:`T` is used in
the Metropolis criterion dictating swap probabilities. the Metropolis criterion dictating swap probabilities.
Perform X swaps of atoms of one type with atoms of another type Perform :math:`X` swaps of atoms of one type with atoms of another type
according to a Monte Carlo probability. Swap candidates must be in the according to a Monte Carlo probability. Swap candidates must be in the
fix group, must be in the region (if specified), and must be of one of fix group, must be in the region (if specified), and must be of one of
the listed types. Swaps are attempted between candidates that are the listed types. Swaps are attempted between candidates that are
@ -57,7 +57,7 @@ atoms. Swaps are not attempted between atoms of the same type since
nothing would happen. nothing would happen.
All atoms in the simulation domain can be moved using regular time All atoms in the simulation domain can be moved using regular time
integration displacements, e.g. via :doc:`fix nvt <fix_nh>`, resulting integration displacements (e.g., via :doc:`fix nvt <fix_nh>`), resulting
in a hybrid MC+MD simulation. A smaller-than-usual timestep size may in a hybrid MC+MD simulation. A smaller-than-usual timestep size may
be needed when running such a hybrid simulation, especially if the be needed when running such a hybrid simulation, especially if the
swapped atoms are not well equilibrated. swapped atoms are not well equilibrated.
@ -83,9 +83,8 @@ canonical ensemble, the composition of the system can change. Note
that when using *semi-grand*, atoms in the fix group whose type is not that when using *semi-grand*, atoms in the fix group whose type is not
listed in the *types* keyword are ineligible for attempted listed in the *types* keyword are ineligible for attempted
conversion. An attempt is made to switch the selected atom (if conversion. An attempt is made to switch the selected atom (if
eligible) to one of the other listed types with equal eligible) to one of the other listed types with equal probability.
probability. Acceptance of each attempt depends upon the Metropolis Acceptance of each attempt depends upon the Metropolis criterion.
criterion.
The *mu* keyword allows users to specify chemical potentials. This is The *mu* keyword allows users to specify chemical potentials. This is
required and allowed only when using *semi-grand*\ . All chemical required and allowed only when using *semi-grand*\ . All chemical
@ -97,8 +96,8 @@ amount will have no effect on the simulation.
This command may optionally use the *region* keyword to define swap This command may optionally use the *region* keyword to define swap
volume. The specified region must have been previously defined with a volume. The specified region must have been previously defined with a
:doc:`region <region>` command. It must be defined with side = *in*\ :doc:`region <region>` command. It must be defined with side = *in*\ .
. Swap attempts occur only between atoms that are both within the Swap attempts occur only between atoms that are both within the
specified region. Swaps are not otherwise attempted. specified region. Swaps are not otherwise attempted.
You should ensure you do not swap atoms belonging to a molecule, or You should ensure you do not swap atoms belonging to a molecule, or
@ -123,7 +122,7 @@ Since this fix computes total potential energies before and after
proposed swaps, so even complicated potential energy calculations are proposed swaps, so even complicated potential energy calculations are
OK, including the following: OK, including the following:
* long-range electrostatics (kspace) * long-range electrostatics (:math:`k`-space)
* many body pair styles * many body pair styles
* hybrid pair styles * hybrid pair styles
* eam pair styles * eam pair styles
@ -137,7 +136,7 @@ include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
<fix_temp_berendsen>`, :doc:`temp/rescale <fix_temp_rescale>`, and <fix_temp_berendsen>`, :doc:`temp/rescale <fix_temp_rescale>`, and
:doc:`wall fixes <fix_wall>`. For that energy to be included in the :doc:`wall fixes <fix_wall>`. For that energy to be included in the
total potential energy of the system (the quantity used when total potential energy of the system (the quantity used when
performing GCMC moves), you MUST enable the :doc:`fix_modify performing GCMC moves), you **must** enable the :doc:`fix_modify
<fix_modify>` *energy* option for that fix. The doc pages for <fix_modify>` *energy* option for that fix. The doc pages for
individual :doc:`fix <fix>` commands specify if this should be done. individual :doc:`fix <fix>` commands specify if this should be done.
@ -147,7 +146,7 @@ Restart, fix_modify, output, run start/stop, minimize info
This fix writes the state of the fix to :doc:`binary restart files This fix writes the state of the fix to :doc:`binary restart files
<restart>`. This includes information about the random number <restart>`. This includes information about the random number
generator seed, the next timestep for MC exchanges, the number of generator seed, the next timestep for MC exchanges, the number of
exchange attempts and successes etc. See the :doc:`read_restart exchange attempts and successes, etc. See the :doc:`read_restart
<read_restart>` command for info on how to re-specify a fix in an <read_restart>` command for info on how to re-specify a fix in an
input script that reads a restart file, so that the operation of the input script that reads a restart file, so that the operation of the
fix continues in an uninterrupted fashion. fix continues in an uninterrupted fashion.
@ -168,7 +167,7 @@ the following global cumulative quantities:
* 1 = swap attempts * 1 = swap attempts
* 2 = swap accepts * 2 = swap accepts
The vector values calculated by this fix are "extensive". The vector values calculated by this fix are "extensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during the :doc:`run <run>` command. This fix is not invoked during

View File

@ -6,7 +6,7 @@ fix ave/atom command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ... fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ...
@ -15,8 +15,8 @@ Syntax
* Nevery = use input values every this many timesteps * Nevery = use input values every this many timesteps
* Nrepeat = # of times to use input values for calculating averages * Nrepeat = # of times to use input values for calculating averages
* Nfreq = calculate averages every this many timesteps * Nfreq = calculate averages every this many timesteps
one or more input values can be listed * one or more input values can be listed
* value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[i], f_ID, f_ID[i], v_name * value = *x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, c_ID, c_ID[i], f_ID, f_ID[i], v_name
.. parsed-literal:: .. parsed-literal::
@ -41,7 +41,9 @@ Description
Use one or more per-atom vectors as inputs every few timesteps, and Use one or more per-atom vectors as inputs every few timesteps, and
average them atom by atom over longer timescales. The resulting average them atom by atom over longer timescales. The resulting
per-atom averages can be used by other :doc:`output commands <Howto_output>` such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>` commands. per-atom averages can be used by other :doc:`output commands <Howto_output>`
such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>`
commands.
The group specified with the command means only atoms within the group The group specified with the command means only atoms within the group
have their averages computed. Results are set to 0.0 for atoms not in have their averages computed. Results are set to 0.0 for atoms not in
@ -53,7 +55,8 @@ component) or can be the result of a :doc:`compute <compute>` or
:doc:`variable <variable>`. In the latter cases, the compute, fix, or :doc:`variable <variable>`. In the latter cases, the compute, fix, or
variable must produce a per-atom vector, not a global quantity or variable must produce a per-atom vector, not a global quantity or
local quantity. If you wish to time-average global quantities from a local quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>` command. compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>`
command.
Each per-atom value of each input vector is averaged independently. Each per-atom value of each input vector is averaged independently.
@ -66,18 +69,18 @@ per-atom vectors.
Note that for values from a compute or fix, the bracketed index I can Note that for values from a compute or fix, the bracketed index I can
be specified using a wildcard asterisk with the index to effectively be specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the "m\*n." If :math:`N` is the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading with no numeric values means all indices from 1 to :math:`N`. A leading
asterisk means all indices from 1 to n (inclusive). A trailing asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to N (inclusive). A middle asterisk asterisk means all indices from m to :math:`N` (inclusive). A middle asterisk
means all indices from m to n (inclusive). means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual columns of the array Using a wildcard is the same as if the individual columns of the array
had been listed one by one. E.g. these 2 fix ave/atom commands are had been listed one by one. For example, these two fix ave/atom commands are
equivalent, since the :doc:`compute stress/atom <compute_stress_atom>` equivalent, since the :doc:`compute stress/atom <compute_stress_atom>`
command creates a per-atom array with 6 columns: command creates a per-atom array with six columns:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -89,61 +92,66 @@ command creates a per-atom array with 6 columns:
---------- ----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
timesteps the input values will be used in order to contribute to the arguments specify on what timesteps the input values will be used in order to
average. The final averaged quantities are generated on timesteps contribute to the average. The final averaged quantities are generated on
that are a multiple of *Nfreq*\ . The average is over *Nrepeat* timesteps that are a multiple of :math:`N_\text{freq}`\ . The average is over
quantities, computed in the preceding portion of the simulation every :math:`N_\text{repeat}` quantities, computed in the preceding portion of the
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and simulation every :math:`N_\text{every}` timesteps. :math:`N_\text{freq}` must
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
contributing to the average value cannot overlap, non-zero even if :math:`N_\text{repeat}` is 1. Also, the timesteps
i.e. Nrepeat\*Nevery can not exceed Nfreq. contributing to the average value cannot overlap; that is,
:math:`N_\text{repeat} N_\text{every}` cannot exceed :math:`N_\text{freq}`.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
timesteps 90,92,94,96,98,100 will be used to compute the final average :math:`N_\text{freq}=100`, then values on timesteps 90, 92, 94, 96, 98, and 100
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on will be used to compute the final average on time step 100. Similarly for
timestep 200, etc. timesteps 190, 192, 194, 196, 198, and 200 on time step 200, etc.
---------- ----------
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are The atom attribute values (*x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, and
self-explanatory. Note that other atom attributes can be used as *fz*) are self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying inputs to this fix by using the
an input value from that compute. :doc:`compute property/atom <compute_property_atom>` command and then
specifying an input value from that compute.
.. note:: .. note::
The x,y,z attributes are values that are re-wrapped inside the The *x*\ , *y*\ , and *z* attributes are values that are re-wrapped inside
periodic box whenever an atom crosses a periodic boundary. Thus if the periodic box whenever an atom crosses a periodic boundary. Thus, if
you time average an atom that spends half its time on either side of you time-average an atom that spends half of its time on either side of
the periodic box, you will get a value in the middle of the box. If the periodic box, you will get a value in the middle of the box. If
this is not what you want, consider averaging unwrapped coordinates, this is not what you want, consider averaging unwrapped coordinates,
which can be provided by the :doc:`compute property/atom <compute_property_atom>` command via its xu,yu,zu which can be provided by the
attributes. :doc:`compute property/atom <compute_property_atom>`
command via its *xu*, *yu*, and *zu* attributes.
If a value begins with "c\_", a compute ID must follow which has been If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If no bracketed term is previously defined in the input script. If no bracketed term is
appended, the per-atom vector calculated by the compute is used. If a appended, the per-atom vector calculated by the compute is used. If a
bracketed term containing an index I is appended, the Ith column of bracketed term containing an index :math:`I` is appended, the
the per-atom array calculated by the compute is used. Users can also :math:`I^\text{th}` column of the per-atom array calculated by the compute is
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can used. Users can also write code for their own compute styles and
be specified with a wildcard asterisk to effectively specify multiple :doc:`add them to LAMMPS <Modify>`. See the discussion above for how
values. :math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values.
If a value begins with "f\_", a fix ID must follow which has been If a value begins with "f\_," a fix ID must follow which has been previously
previously defined in the input script. If no bracketed term is defined in the input script. If no bracketed term is appended, the per-atom
appended, the per-atom vector calculated by the fix is used. If a vector calculated by the fix is used. If a bracketed term containing an index
bracketed term containing an index I is appended, the Ith column of :math:`I` is appended, the :math:`I^\text{th}` column of the per-atom array
the per-atom array calculated by the fix is used. Note that some calculated by the fix is used. Note that some fixes only produce their values
fixes only produce their values on certain timesteps, which must be on certain timesteps, which must be compatible with :math:`N_\text{every}`,
compatible with *Nevery*, else an error will result. Users can also else an error will result. Users can also write code for their own fix styles
write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can be and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how
specified with a wildcard asterisk to effectively specify multiple :math:`I` can be specified with a wildcard asterisk to effectively specify
values. multiple values.
If a value begins with "v\_", a variable name must follow which has If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script as an :doc:`atom-style variable <variable>` Variables of style *atom* can reference been previously defined in the input script as an
thermodynamic keywords, or invoke other computes, fixes, or variables :doc:`atom-style variable <variable>`. Variables of style *atom* can reference
thermodynamic keywords or invoke other computes, fixes, or variables
when they are evaluated, so this is a very general means of generating when they are evaluated, so this is a very general means of generating
per-atom quantities to time average. per-atom quantities to time average.
@ -152,19 +160,22 @@ per-atom quantities to time average.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
are relevant to this fix. No global scalar or vector quantities are :doc:`binary restart files <restart>`. None of the
stored by this fix for access by various :doc:`output commands <Howto_output>`. :doc:`fix_modify <fix_modify>` options are relevant to this fix.
No global scalar or vector quantities are stored by this fix for access by
various :doc:`output commands <Howto_output>`.
This fix produces a per-atom vector or array which can be accessed by This fix produces a per-atom vector or array which can be accessed by
various :doc:`output commands <Howto_output>`. A vector is produced if various :doc:`output commands <Howto_output>`. A vector is produced if
only a single quantity is averaged by this fix. If two or more only a single quantity is averaged by this fix. If two or more
quantities are averaged, then an array of values is produced. The quantities are averaged, then an array of values is produced. The
per-atom values can only be accessed on timesteps that are multiples per-atom values can only be accessed on timesteps that are multiples
of *Nfreq* since that is when averaging is performed. of :math:`N_\text{freq}` since that is when averaging is performed.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""
@ -173,7 +184,8 @@ Restrictions
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`, :doc:`variable <variable>`,
Default Default

View File

@ -6,7 +6,7 @@ fix ave/chunk command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ave/chunk Nevery Nrepeat Nfreq chunkID value1 value2 ... keyword args ... fix ID group-ID ave/chunk Nevery Nrepeat Nfreq chunkID value1 value2 ... keyword args ...
@ -17,7 +17,7 @@ Syntax
* Nfreq = calculate averages every this many timesteps * Nfreq = calculate averages every this many timesteps
* chunkID = ID of :doc:`compute chunk/atom <compute_chunk_atom>` command * chunkID = ID of :doc:`compute chunk/atom <compute_chunk_atom>` command
* one or more input values can be listed * one or more input values can be listed
* value = vx, vy, vz, fx, fy, fz, density/mass, density/number, mass, temp, c_ID, c_ID[I], f_ID, f_ID[I], v_name * value = *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, *density/mass*, *density/number*, *mass*, *temp*, c_ID, c_ID[I], f_ID, f_ID[I], v_name
.. parsed-literal:: .. parsed-literal::
@ -145,18 +145,18 @@ Note that for values from a compute or fix that produces a per-atom
array (multiple values per atom), the bracketed index I can be array (multiple values per atom), the bracketed index I can be
specified using a wildcard asterisk with the index to effectively specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "n\*" specify multiple values. This takes the form "\*" or "\*n" or "n\*"
or "m\*n". If N = the size of the vector (for *mode* = scalar) or the or "m\*n". If :math:`N` = the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading with no numeric values means all indices from 1 to :math:`N`. A leading
asterisk means all indices from 1 to n (inclusive). A trailing asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to N (inclusive). A middle asterisk asterisk means all indices from m to :math:`N` (inclusive). A middle asterisk
means all indices from m to n (inclusive). means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual columns of the array Using a wildcard is the same as if the individual columns of the array
had been listed one by one. E.g. these 2 fix ave/chunk commands are had been listed one by one. For example, these two fix ave/chunk commands are
equivalent, since the :doc:`compute property/atom equivalent, since the :doc:`compute property/atom
<compute_property_atom>` command creates, in this case, a per-atom <compute_property_atom>` command creates, in this case, a per-atom
array with 3 columns: array with three columns:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -166,105 +166,109 @@ array with 3 columns:
.. note:: .. note::
This fix works by creating an array of size *Nchunk* by Nvalues This fix works by creating an array of size
on each processor. *Nchunk* is the number of chunks which is defined :math:`N_\text{chunk} \times N_\text{values}` on each processor.
by the :doc:`compute chunk/atom <compute_chunk_atom>` command. :math:`N_\text{chunk}` is the number of chunks, which is defined by the
Nvalues is the number of input values specified. Each processor loops :doc:`compute chunk/atom <compute_chunk_atom>` command.
over its atoms, tallying its values to the appropriate chunk. Then :math:`N_\text{values}` is the number of input values specified.
the entire array is summed across all processors. This means that Each processor loops over its atoms, tallying its values to the appropriate
using a large number of chunks will incur an overhead in memory and chunk. Then the entire array is summed across all processors. This means
that using a large number of chunks will incur an overhead in memory and
computational cost (summing across processors), so be careful to computational cost (summing across processors), so be careful to
define a reasonable number of chunks. define a reasonable number of chunks.
---------- ----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
timesteps the input values will be accessed and contribute to the arguments specify on what time steps the input values will be accessed and
average. The final averaged quantities are generated on timesteps contribute to the average. The final averaged quantities are generated on time
that are a multiples of *Nfreq*\ . The average is over *Nrepeat* steps that are a multiples of :math:`N_\text{freq}`\ . The average is over
quantities, computed in the preceding portion of the simulation every :math:`N_\text{repeat}` quantities, computed in the preceding portion of the
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and simulation every :math:`N_\text{every}` time steps. :math:`N_\text{freq}`
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps must be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
contributing to the average value cannot overlap, i.e. Nrepeat\*Nevery non-zero even if :math:`N_\text{repeat} = 1`\ . Also, the time steps
can not exceed Nfreq. contributing to the average value cannot overlap (i.e.,
:math:`N_\text{repeat}N_\text{every}` cannot exceed :math:`N_\text{freq}`).
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then values on
time steps 90, 92, 94, 96, 98, 100 will be used to compute the final average time steps 90, 92, 94, 96, 98, 100 will be used to compute the final average
on time step 100. Similarly for time steps 190, 192, 194, 196, 198, 200 on on time step 100. Similarly for time steps 190, 192, 194, 196, 198, 200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time time step 200, etc. If :math:`N_\text{repeat}=1` and
averaging is done; values are simply generated on timesteps :math:`N_\text{freq} = 100`, then no time averaging is done; values are simply
100,200,etc. generated on time steps 100, 200, etc.
Each input value can also be averaged over the atoms in each chunk. Each input value can also be averaged over the atoms in each chunk.
The way the averaging is done across the *Nrepeat* timesteps to The way the averaging is done across the :math:`N_\text{repeat}` time steps to
produce output on the *Nfreq* timesteps, and across multiple *Nfreq* produce output on the :math:`N_\text{freq}` time steps, and across multiple
outputs, is determined by the *norm* and *ave* keyword settings, as :math:`N_\text{freq}` outputs, is determined by the *norm* and *ave* keyword
discussed below. settings, as discussed below.
.. note:: .. note::
To perform per-chunk averaging within a *Nfreq* time window, the To perform per-chunk averaging within a :math:`N_\text{freq}` time window,
number of chunks *Nchunk* defined by the :doc:`compute chunk/atom the number of chunks :math:`N_\text{chunk}` defined by the
<compute_chunk_atom>` command must remain constant. If the *ave* :doc:`compute chunk/atom <compute_chunk_atom>` command must remain
keyword is set to *running* or *window* then *Nchunk* must remain constant. If the *ave* keyword is set to *running* or *window* then
constant for the duration of the simulation. This fix forces the :math:`N_\text{chunk}` must remain constant for the duration of the
chunk/atom compute specified by chunkID to hold *Nchunk* constant simulation. This fix forces the chunk/atom compute specified by chunkID to
for the appropriate time windows, by not allowing it to hold :math:`N_\text{chunk}` constant for the appropriate time windows,
re-calculate *Nchunk*, which can also affect how it assigns chunk by not allowing it to re-calculate :math:`N_\text{chunk}`, which can also
IDs to atoms. This is particularly important to understand if the affect how it assigns chunk IDs to atoms. This is particularly important to
chunks defined by the :doc:`compute chunk/atom understand if the chunks defined by the :doc:`compute chunk/atom
<compute_chunk_atom>` command are spatial bins. If its *units* <compute_chunk_atom>` command are spatial bins. If its *units*
keyword is set to *box* or *lattice*, then the number of bins keyword is set to *box* or *lattice*, then the number of bins
*Nchunk* and size of each bin will be fixed over the *Nfreq* time :math:`N_\text{chunk}` and size of each bin will be fixed over the
window, which can affect which atoms are discarded if the :math:`N_\text{freq}` time window, which can affect which atoms are
simulation box size changes. If its *units* keyword is set to discarded if the simulation box size changes. If its *units* keyword is set
*reduced*, then the number of bins *Nchunk* will still be fixed, to *reduced*, then the number of bins :math:`N_\text{chunk}` will still be
but the size of each bin can vary at each timestep if the fixed, but the size of each bin can vary at each time step if the
simulation box size changes, e.g. for an NPT simulation. simulation box size changes (e.g., for an NPT simulation).
---------- ----------
The atom attribute values (vx,vy,vz,fx,fy,fz,mass) are The atom attribute values (*vx*, *vy*, *vz*, *fx*, *fy*, *fz*, *mass*) are
self-explanatory. As noted above, any other atom attributes can be self-explanatory. As noted above, any other atom attributes can be
used as input values to this fix by using the :doc:`compute used as input values to this fix by using the :doc:`compute
property/atom <compute_property_atom>` command and then specifying an property/atom <compute_property_atom>` command and then specifying an
input value from that compute. input value from that compute.
The *density/number* value means the number density is computed for The *density/number* value means the number density is computed for
each chunk, i.e. number/volume. The *density/mass* value means the each chunk (i.e., number/volume). The *density/mass* value means the
mass density is computed for each chunk, i.e. total-mass/volume. The mass density is computed for each chunk (i.e., total-mass/volume). The
output values are in units of 1/volume or density (mass/volume). See output values are in units of 1/volume or mass density (mass/volume). See
the :doc:`units <units>` command page for the definition of density the :doc:`units <units>` command page for the definition of density
for each choice of units, e.g. gram/cm\^3. If the chunks defined by for each choice of units (e.g., g/cm\ :math:`^3`). If the chunks defined by
the :doc:`compute chunk/atom <compute_chunk_atom>` command are spatial the :doc:`compute chunk/atom <compute_chunk_atom>` command are spatial
bins, the volume is the bin volume. Otherwise it is the volume of the bins, the volume is the bin volume. Otherwise, it is the volume of the
entire simulation box. entire simulation box.
The *temp* value means the temperature is computed for each chunk, by The *temp* value means the temperature is computed for each chunk,
the formula by the formula
.. math:: .. math::
\text{KE} = \frac{\text{DOF}}{2} k_B T, \text{KE} = \frac{\text{DOF}}{2} k_B T,
where KE = total kinetic energy of the chunk of atoms (sum of where KE is the total kinetic energy of the chunk of atoms (sum of
:math:`\frac{1}{2} m v^2`), DOF = the total number of degrees of freedom :math:`\frac{1}{2} m v^2`), DOF is the the total number of degrees of freedom
for all atoms in the chunk, :math:`k_B` = Boltzmann constant, and for all atoms in the chunk, :math:`k_B` is the Boltzmann constant, and
:math:`T` = temperature. :math:`T` is the absolute temperature.
The DOF is calculated as N\*adof + cdof, where N = number of atoms in The DOF is calculated as :math:`N`\ \*adof + cdof, where :math:`N` is the
the chunk, adof = degrees of freedom per atom, and cdof = degrees of number of atoms in the chunk, adof is the number of degrees of freedom per
freedom per chunk. By default adof = 2 or 3 = dimensionality of atom, and cdof is the number of degrees of freedom per chunk. By default,
system, as set via the :doc:`dimension <dimension>` command, and cdof = adof = 2 or 3 = dimensionality of system,
0.0. This gives the usual formula for temperature. as set via the :doc:`dimension <dimension>` command, and cdof = 0.0.
This gives the usual formula for temperature.
Note that currently this temperature only includes translational Note that currently this temperature only includes translational
degrees of freedom for each atom. No rotational degrees of freedom degrees of freedom for each atom. No rotational degrees of freedom
are included for finite-size particles. Also no degrees of freedom are included for finite-size particles. Also, no degrees of freedom
are subtracted for any velocity bias or constraints that are applied, are subtracted for any velocity bias or constraints that are applied,
such as :doc:`compute temp/partial <compute_temp_partial>`, or such as :doc:`compute temp/partial <compute_temp_partial>`,
:doc:`fix shake <fix_shake>` or :doc:`fix rigid <fix_rigid>`. This is :doc:`fix shake <fix_shake>`, or :doc:`fix rigid <fix_rigid>`. This is
because those degrees of freedom (e.g. a constrained bond) could apply because those degrees of freedom (e.g., a constrained bond) could apply
to sets of atoms that are both included and excluded from a specific to sets of atoms that are both included and excluded from a specific
chunk, and hence the concept is somewhat ill-defined. In some cases, chunk, and hence the concept is somewhat ill-defined. In some cases,
you can use the *adof* and *cdof* keywords to adjust the calculated you can use the *adof* and *cdof* keywords to adjust the calculated
@ -285,27 +289,27 @@ together as one set of atoms to calculate their temperature. The
compute allows the center-of-mass velocity of each chunk to be compute allows the center-of-mass velocity of each chunk to be
subtracted before calculating the temperature; this fix does not. subtracted before calculating the temperature; this fix does not.
If a value begins with "c\_", a compute ID must follow which has been If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a appended, the per-atom vector calculated by the compute is used. If a
bracketed integer is appended, the Ith column of the per-atom array bracketed integer is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for calculated by the compute is used. Users can also write code for
their own compute styles and :doc:`add them to LAMMPS <Modify>`. See their own compute styles and :doc:`add them to LAMMPS <Modify>`.
the discussion above for how I can be specified with a wildcard See the discussion above for how I can be specified with a wildcard
asterisk to effectively specify multiple values. asterisk to effectively specify multiple values.
If a value begins with "f\_", a fix ID must follow which has been If a value begins with "f\_," a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce calculated by the fix is used. Note that some fixes only produce
their values on certain time steps, which must be compatible with their values on certain time steps, which must be compatible with
*Nevery*, else an error results. Users can also write code for their :math:`N_\text{every}`, else an error results. Users can also write code for
own fix styles and :doc:`add them to LAMMPS <Modify>`. See the their own fix styles and :doc:`add them to LAMMPS <Modify>`. See the
discussion above for how I can be specified with a wildcard asterisk discussion above for how I can be specified with a wildcard asterisk
to effectively specify multiple values. to effectively specify multiple values.
If a value begins with "v\_", a variable name must follow which has If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script. Variables of style been previously defined in the input script. Variables of style
*atom* can reference thermodynamic keywords and various per-atom *atom* can reference thermodynamic keywords and various per-atom
attributes, or invoke other computes, fixes, or variables when they attributes, or invoke other computes, fixes, or variables when they
@ -318,113 +322,113 @@ Additional optional keywords also affect the operation of this fix
and its outputs. and its outputs.
The *norm* keyword affects how averaging is done for the per-chunk The *norm* keyword affects how averaging is done for the per-chunk
values that are output every *Nfreq* timesteps. values that are output every :math:`N_\text{freq}` time steps.
It the *norm* setting is *all*, which is the default, a chunk value is It the *norm* setting is *all*, which is the default, a chunk value is summed
summed over all atoms in all *Nrepeat* samples, as is the count of over all atoms in all :math:`N_\text{repeat}` samples, as is the count of
atoms in the chunk. The averaged output value for the chunk on the atoms in the chunk. The averaged output value for the chunk on the
*Nfreq* timesteps is Total-sum / Total-count. In other words it is an :math:`N_\text{freq}` time steps is Total-sum / Total-count. In other words it
average over atoms across the entire *Nfreq* timescale. For the is an average over atoms across the entire :math:`N_\text{freq}` timescale.
*density/number* and *density/mass* values, the volume (bin volume or For the *density/number* and *density/mass* values, the volume (bin volume or
system volume) used in the final normalization will be the volume at system volume) used in the final normalization will be the volume at
the final *Nfreq* timestep. For the *temp* values, degrees of freedom the final :math:`N_\text{freq}` time step. For the *temp* values, degrees of
and kinetic energy are summed separately across the entire *Nfreq* freedom and kinetic energy are summed separately across the entire
timescale, and the output value is calculated by dividing those two :math:`N_\text{freq}` timescale, and the output value is calculated by dividing
sums. those two sums.
If the *norm* setting is *sample*, the chunk value is summed over If the *norm* setting is *sample*, the chunk value is summed over
atoms for each sample, as is the count, and an "average sample value" atoms for each sample, as is the count, and an "average sample value"
is computed for each sample, i.e. Sample-sum / Sample-count. The is computed for each sample (i.e., Sample-sum / Sample-count). The
output value for the chunk on the *Nfreq* timesteps is the average of output value for the chunk on the :math:`N_\text{freq}` time steps is the
the *Nrepeat* "average sample values", i.e. the sum of *Nrepeat* average of the :math:`N_\text{repeat}` "average sample values" (i.e., the sum
"average sample values" divided by *Nrepeat*\ . In other words it is an of :math:`N_\text{repeat}` "average sample values" divided by
average of an average. For the *density/number* and *density/mass* :math:`N_\text{repeat}`\ ). In other words, it is an average of an average.
values, the volume (bin volume or system volume) used in the For the *density/number* and *density/mass* values, the volume (bin volume or
per-sample normalization will be the current volume at each sampling system volume) used in the per-sample normalization will be the current volume
step. at each sampling step.
If the *norm* setting is *none*, a similar computation as for the If the *norm* setting is *none*, a similar computation as for the
*sample* setting is done, except the individual "average sample *sample* setting is done, except the individual "average sample
values" are "summed sample values". A summed sample value is simply values" are "summed sample values." A summed sample value is simply
the chunk value summed over atoms in the sample, without dividing by the chunk value summed over atoms in the sample, without dividing by
the number of atoms in the sample. The output value for the chunk on the number of atoms in the sample. The output value for the chunk on
the *Nfreq* timesteps is the average of the *Nrepeat* "summed sample the :math:`N_\text{freq}` timesteps is the average of the
values", i.e. the sum of *Nrepeat* "summed sample values" divided by :math:`N_\text{repeat}` "summed sample values" (i.e., the sum of
*Nrepeat*\ . For the *density/number* and *density/mass* values, the :math:`N_\text{repeat}` "summed sample values" divided by
:math:`N_\text{repeat}`\ ).
For the *density/number* and *density/mass* values, the
volume (bin volume or system volume) used in the per-sample sum volume (bin volume or system volume) used in the per-sample sum
normalization will be the current volume at each sampling step. normalization will be the current volume at each sampling step.
---------- ----------
The *ave* keyword determines how the per-chunk values produced every The *ave* keyword determines how the per-chunk values produced every
*Nfreq* steps are averaged with values produced on previous steps that :math:`N_\text{freq}` steps are averaged with values produced on previous steps
were multiples of *Nfreq*, before they are accessed by another output that were multiples of :math:`N_\text{freq}`, before they are accessed by
command or written to a file. another output command or written to a file.
If the *ave* setting is *one*, which is the default, then the chunk If the *ave* setting is *one*, which is the default, then the chunk
values produced on timesteps that are multiples of *Nfreq* are values produced on timesteps that are multiples of :math:`N_\text{freq}` are
independent of each other; they are output as-is without further independent of each other; they are output as-is without further averaging.
averaging.
If the *ave* setting is *running*, then the chunk values produced on If the *ave* setting is *running*, then the chunk values produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
cumulative sense before being output. Each output chunk value is thus in a cumulative sense before being output. Each output chunk value is thus
the average of the chunk value produced on that timestep with all the average of the chunk value produced on that timestep with all
preceding values for the same chunk. This running average begins when preceding values for the same chunk. This running average begins when
the fix is defined; it can only be restarted by deleting the fix via the fix is defined; it can only be restarted by deleting the fix via
the :doc:`unfix <unfix>` command, or re-defining the fix by the :doc:`unfix <unfix>` command, or re-defining the fix by re-specifying it.
re-specifying it.
If the *ave* setting is *window*, then the chunk values produced on If the *ave* setting is *window*, then the chunk values produced on
timesteps that are multiples of *Nfreq* are summed and averaged within timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
a moving "window" of time, so that the last M values for the same within a moving "window" of time, so that the last :math:`M` values for the
chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000, same chunk are used to produce the output. For example, if :math:`M = 3` and
then the output on step 10000 will be the average of the individual :math:`N_\text{freq} = 1000`, then the output on step 10000 will be the average
chunk values on steps 8000,9000,10000. Outputs on early steps will of the individual chunk values on time steps 8000, 9000, and 10000. Outputs on
average over less than M values if they are not available. early steps will average over less than :math:`M` values if they are not
available.
---------- ----------
The *bias* keyword specifies the ID of a temperature compute that The *bias* keyword specifies the ID of a temperature compute that
removes a "bias" velocity from each atom, specified as *bias-ID*\ . It removes a "bias" velocity from each atom, specified as *bias-ID*\ .
is only used when the *temp* value is calculated, to compute the It is only used when the *temp* value is calculated, to compute the
thermal temperature of each chunk after the translational kinetic thermal temperature of each chunk after the translational kinetic
energy components have been altered in a prescribed way, e.g. to energy components have been altered in a prescribed way (e.g., to
remove a flow velocity profile. See the doc pages for individual remove a flow velocity profile). See the doc pages for individual
computes that calculate a temperature to see which ones implement a computes that calculate a temperature to see which ones implement a bias.
bias.
The *adof* and *cdof* keywords define the values used in the degree of The *adof* and *cdof* keywords define the values used in the degree of
freedom (DOF) formula described above for temperature calculation freedom (DOF) formula described above for temperature calculation
for each chunk. They are only used when the *temp* value is for each chunk. They are only used when the *temp* value is
calculated. They can be used to calculate a more appropriate calculated. They can be used to calculate a more appropriate
temperature for some kinds of chunks. Here are 3 examples: temperature for some kinds of chunks. Here are three examples:
If spatially binned chunks contain some number of water molecules and If spatially binned chunks contain some number of water molecules and
:doc:`fix shake <fix_shake>` is used to make each molecule rigid, then :doc:`fix shake <fix_shake>` is used to make each molecule rigid, then
you could calculate a temperature with 6 degrees of freedom (DOF) (3 you could calculate a temperature with six degrees of freedom (DOF) (three
translational, 3 rotational) per molecule by setting *adof* to 2.0. translational, three rotational) per molecule by setting *adof* to 2.0.
If :doc:`compute temp/partial <compute_temp_partial>` is used with the If :doc:`compute temp/partial <compute_temp_partial>` is used with the
*bias* keyword to only allow the x component of velocity to contribute *bias* keyword to only allow the :math:`x` component of velocity to contribute
to the temperature, then *adof* = 1.0 would be appropriate. to the temperature, then *adof* = 1.0 would be appropriate.
If each chunk consists of a large molecule, with some number of its If each chunk consists of a large molecule, with some number of its
bonds constrained by :doc:`fix shake <fix_shake>` or the entire molecule bonds constrained by :doc:`fix shake <fix_shake>` or the entire molecule
by :doc:`fix rigid/small <fix_rigid>`, *adof* = 0.0 and *cdof* could be by :doc:`fix rigid/small <fix_rigid>`, *adof* = 0.0 and *cdof* could be
set to the remaining degrees of freedom for the entire molecule set to the remaining degrees of freedom for the entire molecule
(entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid (entire chunk in this case), that is, 6 for 3d or 3 for 2d for a rigid
molecule. molecule.
---------- ----------
The *file* keyword allows a filename to be specified. Every *Nfreq* The *file* keyword allows a filename to be specified. Every
timesteps, a section of chunk info will be written to a text file in :math:`N_\text{freq}` timesteps, a section of chunk info will be written to a
the following format. A line with the timestep and number of chunks text file in the following format. A line with the timestep and number of
is written. Then one line per chunk is written, containing the chunk chunks is written. Then one line per chunk is written, containing the chunk
ID (1-Nchunk), an optional original ID value, optional coordinate ID :math:`(1-N_\text{chunk}),` an optional original ID value, optional
values for chunks that represent spatial bins, the number of atoms in coordinate values for chunks that represent spatial bins, the number of atoms
the chunk, and one or more calculated values. More explanation of the in the chunk, and one or more calculated values. More explanation of the
optional values is given below. The number of values in each line optional values is given below. The number of values in each line
corresponds to the number of values specified in the fix ave/chunk corresponds to the number of values specified in the fix ave/chunk
command. The number of atoms and the value(s) are summed or average command. The number of atoms and the value(s) are summed or average
@ -437,10 +441,10 @@ output. This option can only be used with the *ave running* setting.
The *format* keyword sets the numeric format of each value when it is The *format* keyword sets the numeric format of each value when it is
printed to a file via the *file* keyword. Note that all values are printed to a file via the *file* keyword. Note that all values are
floating point quantities. The default format is %g. You can specify floating point quantities. The default format is %g. You can specify
a higher precision if desired, e.g. %20.16g. a higher precision if desired (e.g., %20.16g).
The *title1* and *title2* and *title3* keywords allow specification of The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output the strings that will be printed as the first three lines of the output
file, assuming the *file* keyword was used. LAMMPS uses default file, assuming the *file* keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified. values for each of these, so they do not need to be specified.
@ -455,34 +459,33 @@ By default, these header lines are as follows:
In the first line, ID and name are replaced with the fix-ID and group In the first line, ID and name are replaced with the fix-ID and group
name. The second line describes the two values that are printed at name. The second line describes the two values that are printed at
the first of each section of output. In the third line the values are the first of each section of output. In the third line the values are
replaced with the appropriate value names, e.g. fx or c_myCompute[2]. replaced with the appropriate value names (e.g., *fx* or c_myCompute[2]).
The words in parenthesis only appear with corresponding columns if the The words in parenthesis only appear with corresponding columns if the
chunk style specified for the :doc:`compute chunk/atom chunk style specified for the :doc:`compute chunk/atom
<compute_chunk_atom>` command supports them. The OrigID column is <compute_chunk_atom>` command supports them. The OrigID column is
only used if the *compress* keyword was set to *yes* for the only used if the *compress* keyword was set to *yes* for the
:doc:`compute chunk/atom <compute_chunk_atom>` command. This means :doc:`compute chunk/atom <compute_chunk_atom>` command. This means
that the original chunk IDs (e.g. molecule IDs) will have been that the original chunk IDs (e.g., molecule IDs) will have been
compressed to remove chunk IDs with no atoms assigned to them. Thus a compressed to remove chunk IDs with no atoms assigned to them. Thus a
compressed chunk ID of 3 may correspond to an original chunk ID or compressed chunk ID of 3 may correspond to an original chunk ID or
molecule ID of molecule ID of 415. The OrigID column will list 415 for the third chunk.
415. The OrigID column will list 415 for the third chunk.
The CoordN columns only appear if a *binning* style was used in the The CoordN columns only appear if a *binning* style was used in the
:doc:`compute chunk/atom <compute_chunk_atom>` command. For *bin/1d*, :doc:`compute chunk/atom <compute_chunk_atom>` command. For *bin/1d*,
*bin/2d*, and *bin/3d* styles the column values are the center point *bin/2d*, and *bin/3d* styles the column values are the center point
of the bin in the corresponding dimension. Just Coord1 is used for of the bin in the corresponding dimension. Just Coord1 is used for
*bin/1d*, Coord2 is added for *bin/2d*, Coord3 is added for *bin/3d*\ *bin/1d*, Coord2 is added for *bin/2d*, Coord3 is added for *bin/3d*\ .
. For *bin/sphere*, just Coord1 is used, and it is the radial For *bin/sphere*, just Coord1 is used, and it is the radial
coordinate. For *bin/cylinder*, Coord1 and Coord2 are used. Coord1 coordinate. For *bin/cylinder*, Coord1 and Coord2 are used. Coord1
is the radial coordinate (away from the cylinder axis), and coord2 is is the radial coordinate (away from the cylinder axis), and coord2 is
the coordinate along the cylinder axis. the coordinate along the cylinder axis.
Note that if the value of the *units* keyword used in the Note that if the value of the *units* keyword used in the
:doc:`compute chunk/atom command <compute_chunk_atom>` is *box* or :doc:`compute chunk/atom command <compute_chunk_atom>` is *box* or
*lattice*, the coordinate values will be in distance :doc:`units *lattice*, the coordinate values will be in distance :doc:`units <units>`.
<units>`. If the value of the *units* keyword is *reduced*, the If the value of the *units* keyword is *reduced*, the
coordinate values will be in unitless reduced units (0-1). This is coordinate values will be in unitless reduced units (0--1). This is
not true for the Coord1 value of style *bin/sphere* or *bin/cylinder* not true for the Coord1 value of style *bin/sphere* or *bin/cylinder*
which both represent radial dimensions. Those values are always in which both represent radial dimensions. Those values are always in
distance :doc:`units <units>`. distance :doc:`units <units>`.
@ -498,20 +501,21 @@ relevant to this fix.
This fix computes a global array of values which can be accessed by This fix computes a global array of values which can be accessed by
various :doc:`output commands <Howto_output>`. The values can only be various :doc:`output commands <Howto_output>`. The values can only be
accessed on timesteps that are multiples of *Nfreq* since that is when accessed on timesteps that are multiples of :math:`N_\text{freq}`, since that
averaging is performed. The global array has # of rows = the number is when averaging is performed. The global array has # of rows = the number
of chunks *Nchunk* as calculated by the specified :doc:`compute of chunks :math:`N_\text{chunk}`, as calculated by the specified
chunk/atom <compute_chunk_atom>` command. The # of columns = :doc:`compute chunk/atom <compute_chunk_atom>` command. The # of columns is
M+1+Nvalues, where M = 1 to 4, depending on whether the optional :math:`M+1+N_\text{values}`, where :math:`M \in \{1,\dotsc,4\}`,
depending on whether the optional
columns for OrigID and CoordN are used, as explained above. Following columns for OrigID and CoordN are used, as explained above. Following
the optional columns, the next column contains the count of atoms in the optional columns, the next column contains the count of atoms in
the chunk, and the remaining columns are the Nvalue quantities. When the chunk, and the remaining columns are the Nvalue quantities. When
the array is accessed with a row I that exceeds the current number of the array is accessed with a row :math:`I` that exceeds the current number of
chunks, than a 0.0 is returned by the fix instead of an error, since chunks, than a 0.0 is returned by the fix instead of an error, since
the number of chunks can vary as a simulation runs depending on how the number of chunks can vary as a simulation runs depending on how
that value is computed by the compute chunk/atom command. that value is computed by the compute chunk/atom command.
The array values calculated by this fix are treated as "intensive", The array values calculated by this fix are treated as "intensive,"
since they are typically already normalized by the count of atoms in since they are typically already normalized by the count of atoms in
each chunk. each chunk.
@ -526,7 +530,8 @@ Restrictions
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>` :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`
Default Default

View File

@ -6,7 +6,7 @@ fix ave/correlate command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ... fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
@ -73,10 +73,12 @@ Description
Use one or more global scalar values as inputs every few timesteps, Use one or more global scalar values as inputs every few timesteps,
calculate time correlations between them at varying time intervals, calculate time correlations between them at varying time intervals,
and average the correlation data over longer timescales. The and average the correlation data over longer timescales. The resulting
resulting correlation values can be time integrated by correlation values can be time integrated by
:doc:`variables <variable>` or used by other :doc:`output commands <Howto_output>` such as :doc:`thermo_style custom <thermo_style>`, and can also be written to a file. See the :doc:`variables <variable>` or used by other
:doc:`fix ave/correlate/long <fix_ave_correlate_long>` command for an :doc:`output commands <Howto_output>` such as
:doc:`thermo_style custom <thermo_style>`, and can also be written to a file.
See the :doc:`fix ave/correlate/long <fix_ave_correlate_long>` command for an
alternate method for computing correlation functions efficiently over alternate method for computing correlation functions efficiently over
very long time windows. very long time windows.
@ -89,9 +91,11 @@ Each listed value can be the result of a :doc:`compute <compute>` or
:doc:`variable <variable>`. In each case, the compute, fix, or variable :doc:`variable <variable>`. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, or from a compute, fix, or variable, then see the
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, or
:doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to convert a :doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to convert a
per-atom quantity into a single global value, see the :doc:`compute reduce <compute_reduce>` command. per-atom quantity into a single global value, see the
:doc:`compute reduce <compute_reduce>` command.
The input values must be all scalars. What kinds of The input values must be all scalars. What kinds of
correlations between input values are calculated is determined by the correlations between input values are calculated is determined by the
@ -110,16 +114,16 @@ be used, since they produce per-atom values.
For input values from a compute or fix or variable , the bracketed For input values from a compute or fix or variable , the bracketed
index I can be specified using a wildcard asterisk with the index to index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector, then an "\*n" or "m\*" or "m\*n". If :math:`N` is the size of the vector, then an
asterisk with no numeric values means all indices from 1 to N. A asterisk with no numeric values means all indices from 1 to :math:`N`. A
leading asterisk means all indices from 1 to n (inclusive). A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle trailing asterisk means all indices from m to :math:`N` (inclusive).
asterisk means all indices from m to n (inclusive). A middle asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the Using a wildcard is the same as if the individual elements of the
vector had been listed one by one. E.g. these 2 fix ave/correlate vector had been listed one by one. For example, the following two fix
commands are equivalent, since the :doc:`compute pressure ave/correlate commands are equivalent, since the :doc:`compute pressure
<compute_pressure>` command creates a global vector with 6 values. <compute_pressure>` command creates a global vector with six values:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -139,151 +143,161 @@ commands are equivalent, since the :doc:`compute pressure
---------- ----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
timesteps the input values will be used to calculate correlation data. arguments specify on what timesteps the input values will be used to calculate
The input values are sampled every *Nevery* timesteps. The correlation data. The input values are sampled every :math:`N_\text{every}`
correlation data for the preceding samples is computed on timesteps time steps. The correlation data for the preceding samples is computed on
that are a multiple of *Nfreq*\ . Consider a set of samples from some time steps that are a multiple of :math:`N_\text{freq}`\ . Consider a set of
initial time up to an output timestep. The initial time could be the samples from some initial time up to an output timestep. The initial time
beginning of the simulation or the last output time; see the *ave* could be the beginning of the simulation or the last output time; see the *ave*
keyword for options. For the set of samples, the correlation value keyword for options. For the set of samples, the correlation value
Cij is calculated as: :math:`C_{ij}` is calculated as:
.. parsed-literal:: .. math::
Cij(delta) = ave(Vi(t)\*Vj(t+delta)) C_{ij}(\Delta t) = \left\langle V_i(t) V_j(t+\Delta t)\right\rangle,
which is the correlation value between input values Vi and Vj, which is the correlation value between input values :math:`V_i` and
separated by time delta. Note that the second value Vj in the pair is :math:`V_j`, separated by time :math:`\Delta t`. Note that the second value
always the one sampled at the later time. The ave() represents an :math:`V_j` in the pair is always the one sampled at the later time. The
average over every pair of samples in the set that are separated by average is an average over every pair of samples in the set that are separated
time delta. The maximum delta used is of size (\ *Nrepeat*\ -1)\*\ *Nevery*\ . by time :math:`\Delta t`. The maximum :math:`\Delta t` used is of size
Thus the correlation between a pair of input values yields *Nrepeat* :math:`(N_\text{repeat} - 1) N_\text{every}`\ .
correlation datums: Thus the correlation between a pair of input values yields
:math:`N_\text{repeat}` correlation data:
.. parsed-literal:: .. math::
Cij(0), Cij(Nevery), Cij(2\*Nevery), ..., Cij((Nrepeat-1)\*Nevery) C_{ij}(0), C_{ij}(N_\text{every}), C_{ij}(2N_\text{every}), \dotsc,
C_{ij}\bigl((N_\text{repeat}-1) N_\text{every}\bigr)
For example, if Nevery=5, Nrepeat=6, and Nfreq=100, then values on For example, if :math:`N_\text{every}=5`, :math:`N_\text{repeat}=6`, and
timesteps 0,5,10,15,...,100 will be used to compute the final averages :math:`N_\text{freq}=100`, then values on time steps
on timestep 100. Six averages will be computed: Cij(0), Cij(5), :math:`0, 5, 10, 15,\dotsc,100` will be used to compute the final averages
Cij(10), Cij(15), Cij(20), and Cij(25). Cij(10) on timestep 100 will on time step 100. Six averages will be computed: :math:`C_{ij}(0)`,
be the average of 19 samples, namely Vi(0)\*Vj(10), Vi(5)\*Vj(15), :math:`C_{ij}(5)`, :math:`C_{ij}(10)`, :math:`C_{ij}(15)`, :math:`C_{ij}(20)`,
Vi(10)\*V j20), Vi(15)\*Vj(25), ..., Vi(85)\*Vj(95), Vi(90)\*Vj(100). and :math:`C_{ij}(25)`. :math:`C_{ij}(10)` on time step 100 will
be the average of 19 samples, namely :math:`V_i(0) V_j(10)`,
:math:`V_i(5) V_j(15)`, :math:`V_i(10) V_j(20)`,
:math:`V_i(15) V_j(25), \dotsc,`
:math:`V_i(85) V_j(95)`, and :math:`V_i(90) V_j(100)`.
*Nfreq* must be a multiple of *Nevery*\ ; *Nevery* and *Nrepeat* must be :math:`N_\text{freq}` must be a multiple of :math:`N_\text{every}`;
non-zero. Also, if the *ave* keyword is set to *one* which is the :math:`N_\text{every}` and :math:`N_\text{repeat}` must be non-zero.
default, then *Nfreq* >= (\ *Nrepeat*\ -1)\*\ *Nevery* is required. Also, if the *ave* keyword is set to *one* which is the default, then
:math:`N_\text{freq} \ge (N_\text{repeat} -1) N_\text{every}` is required.
---------- ----------
If a value begins with "c\_", a compute ID must follow which has been If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If no bracketed term is previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the compute is used. If a appended, the global scalar calculated by the compute is used. If a
bracketed term is appended, the Ith element of the global vector bracketed term is appended, the :math:`I^\text{th}` element of the global
calculated by the compute is used. See the discussion above for how I vector calculated by the compute is used. See the discussion above for how
can be specified with a wildcard asterisk to effectively specify :math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values. multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which that can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/correlate. Or it can be a compute can then be accessed by fix ave/correlate. It can also be a compute defined
defined not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` not in your input script, but by :doc:`thermodynamic output <thermo_style>`
or other fixes such as :doc:`fix nvt <fix_nh>`
or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
these commands which give the IDs of these computes. Users can also these commands which give the IDs of these computes. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`. write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`.
If a value begins with "f\_", a fix ID must follow which has been If a value begins with "f\_," a fix ID must follow which has been
previously defined in the input script. If no bracketed term is previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the fix is used. If a appended, the global scalar calculated by the fix is used. If a
bracketed term is appended, the Ith element of the global vector bracketed term is appended, the :math:`I^\text{th}` element of the global
calculated by the fix is used. See the discussion above for how I can vector calculated by the fix is used. See the discussion above for how
be specified with a wildcard asterisk to effectively specify multiple :math:`I` can be specified with a wildcard asterisk to effectively specify
values. multiple values.
Note that some fixes only produce their values on certain timesteps, Note that some fixes only produce their values on certain timesteps,
which must be compatible with *Nevery*, else an error will result. which must be compatible with :math:`N_\text{every}`, else an error will
Users can also write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`. result. Users can also write code for their own fix styles and
:doc:`add them to LAMMPS <Modify>`.
If a value begins with "v\_", a variable name must follow which has If a value begins with "v\_," a variable name must follow which has been
been previously defined in the input script. Only equal-style or previously defined in the input script. Only equal-style or vector-style
vector-style variables can be referenced; the latter requires a variables can be referenced; the latter requires a bracketed term to specify
bracketed term to specify the Ith element of the vector calculated by the :math:`I^\text{th}` element of the vector calculated by the variable.
the variable. See the :doc:`variable <variable>` command for details. See the :doc:`variable <variable>` command for details. Note that variables of
Note that variables of style *equal* or *vector* define a formula style *equal* or *vector* define a formula which can reference individual atom
which can reference individual atom properties or thermodynamic properties or thermodynamic keywords, or they can invoke other computes, fixes,
keywords, or they can invoke other computes, fixes, or variables when or variables when they are evaluated, so this is a very general means of
they are evaluated, so this is a very general means of specifying specifying quantities to time correlate.
quantities to time correlate.
---------- ----------
Additional optional keywords also affect the operation of this fix. Additional optional keywords also affect the operation of this fix.
The *type* keyword determines which pairs of input values are The *type* keyword determines which pairs of input values are
correlated with each other. For N input values Vi, for i = 1 to N, correlated with each other. For :math:`N` input values :math:`V_i`,
let the number of pairs = Npair. Note that the second value in the with :math:`i \in \{1,\dotsc,N\}`, let the number of pairs be
pair Vi(t)\*Vj(t+delta) is always the one sampled at the later time. :math:`N_\text{pair}`. Note that the second value in the
pair, :math:`V_i(t) V_j(t+\Delta t)`, is always the one sampled at the later
time.
* If *type* is set to *auto* then each input value is correlated with * If *type* is set to *auto* then each input value is correlated with
itself. I.e. Cii = Vi\*Vi, for i = 1 to N, so Npair = N. itself (i.e., :math:`C_{ii} = V_i^2` for :math:`i \in \{1,\dotsc,N\}`,
* If *type* is set so :math:`N_\text{pair} = N`).
to *upper* then each input value is correlated with every succeeding * If *type* is set to *upper* then each input value is correlated with every
value. I.e. Cij = Vi\*Vj, for i < j, so Npair = N\*(N-1)/2. succeeding value (i.e., :math:`C_{ij} = V_i V_j` for :math:`i < j`, so
* If *type* is set :math:`N_\text{pair} = N (N-1)/2`).
to *lower* then each input value is correlated with every preceding * If *type* is set to *lower* then each input value is correlated with every
value. I.e. Cij = Vi\*Vj, for i > j, so Npair = N\*(N-1)/2. preceding value (i.e., :math:`C_{ij} = V_i V_j` for :math:`i > j`, so
:math:`N_\text{pair} = N(N-1)/2`).
* If *type* is set to *auto/upper* then each input value is correlated * If *type* is set to *auto/upper* then each input value is correlated
with itself and every succeeding value. I.e. Cij = Vi\*Vj, for i >= j, with itself and every succeeding value (i.e., :math:`C_{ij} = V_i V_j`
so Npair = N\*(N+1)/2. for :math:`i \ge j`, so :math:`N_\text{pair} = N(N+1)/2`).
* If *type* is set to *auto/lower* then each input value is correlated * If *type* is set to *auto/lower* then each input value is correlated
with itself and every preceding value. I.e. Cij = Vi\*Vj, for i <= j, with itself and every preceding value (i.e., :math:`C_{ij} = V_i V_j`
so Npair = N\*(N+1)/2. for :math:`i \le j`, so :math:`N_\text{pair} = N(N+1)/2`).
* If *type* is set to *full* then each input value is correlated with * If *type* is set to *full* then each input value is correlated with
itself and every other value. I.e. Cij = Vi\*Vj, for i,j = 1,N so itself and every other value (i.e., :math:`C_{ij} = V_i V_j` for
Npair = N\^2. :math:`\{i,j\} = \{1,N\}`, so :math:`N_\text{pair} = N^2`).
The *ave* keyword determines what happens to the accumulation of The *ave* keyword determines what happens to the accumulation of correlation
correlation samples every *Nfreq* timesteps. If the *ave* setting is samples every :math:`N_\text{freq}` timesteps. If the *ave* setting is *one*,
*one*, then the accumulation is restarted or zeroed every *Nfreq* then the accumulation is restarted or zeroed every :math:`N_\text{freq}`
timesteps. Thus the outputs on successive *Nfreq* timesteps are timesteps. Thus the outputs on successive :math:`N_\text{freq}` timesteps are
essentially independent of each other. The exception is that the essentially independent of each other. The exception is that the
Cij(0) = Vi(T)\*Vj(T) value at a timestep T, where T is a multiple of :math:`C_{ij}(0) = V_i(t) V_j(t)` value at a time step :math:`t,` where
*Nfreq*, contributes to the correlation output both at time T and at :math:`t` is a multiple of :math:`N_\text{freq}`, contributes to the
time T+Nfreq. correlation output both at time :math:`t` and at time :math:`t+N_\text{freq}`.
If the *ave* setting is *running*, then the accumulation is never If the *ave* setting is *running*, then the accumulation is never zeroed.
zeroed. Thus the output of correlation data at any timestep is the Thus the output of correlation data at any timestep is the average over samples
average over samples accumulated every *Nevery* steps since the fix accumulated every :math:`N_\text{every}` steps since the fix was defined.
was defined. it can only be restarted by deleting the fix via the It can only be restarted by deleting the fix via the :doc:`unfix <unfix>`
:doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying command, or by re-defining the fix by re-specifying it.
it.
The *start* keyword specifies what time step the accumulation of The *start* keyword specifies what time step the accumulation of
correlation samples will begin on. The default is step 0. Setting it correlation samples will begin on. The default is step 0. Setting it
to a larger value can avoid adding non-equilibrated data to the to a larger value can avoid adding non-equilibrated data to the
correlation averages. correlation averages.
The *prefactor* keyword specifies a constant which will be used as a The *prefactor* keyword specifies a constant which will be used as a multiplier
multiplier on the correlation data after it is averaged. It is on the correlation data after it is averaged. It is effectively a scale factor
effectively a scale factor on Vi\*Vj, which can be used to account for on :math:`V_i V_j`, which can be used to account for the size of the time
the size of the time window or other unit conversions. window or other unit conversions.
The *file* keyword allows a filename to be specified. Every *Nfreq* The *file* keyword allows a filename to be specified. Every
steps, an array of correlation data is written to the file. The :math:`N_\text{freq}` steps, an array of correlation data is written to the
number of rows is *Nrepeat*, as described above. The number of file. The number of rows is :math:`N_\text{repeat}`, as described above.
columns is the Npair+2, also as described above. Thus the file ends The number of columns is :math:`N_\text{pair}+2`, also as described above.
up to be a series of these array sections. Thus the file ends up to be a series of these array sections.
The *overwrite* keyword will continuously overwrite the output file The *overwrite* keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the *ave running* setting. output. This option can only be used with the *ave running* setting.
The *title1* and *title2* and *title3* keywords allow specification of The *title1*, *title2*, and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output the strings that will be printed as the first three lines of the output file,
file, assuming the *file* keyword was used. LAMMPS uses default assuming the *file* keyword was used. LAMMPS uses default values for each of
values for each of these, so they do not need to be specified. these, so they do not need to be specified.
By default, these header lines are as follows: By default, these header lines are as follows:
@ -300,18 +314,19 @@ appropriate fields from the fix ave/correlate command.
---------- ----------
Let Sij = a set of time correlation data for input values I and J, Let :math:`S_{ij}` be a set of time correlation data for input values
namely the *Nrepeat* values: :math:`I` and :math:`J`, namely the :math:`N_\text{repeat}` values:
.. parsed-literal:: .. math::
Sij = Cij(0), Cij(Nevery), Cij(2\*Nevery), ..., Cij(\*Nrepeat-1)\*Nevery) S_{ij} = C_{ij}(0), C_{ij}(N_\text{every}), C_{ij}(2N_\text{every}),
\dotsc, C_{ijI}\bigl((N_\text{repeat}-1) N_\text{every}\bigr)
As explained below, these datums are output as one column of a global As explained below, these data are output as one column of a global
array, which is effectively the correlation matrix. array, which is effectively the correlation matrix.
The *trap* function defined for :doc:`equal-style variables <variable>` The *trap* function defined for :doc:`equal-style variables <variable>`
can be used to perform a time integration of this vector of datums, can be used to perform a time integration of this vector of data,
using a trapezoidal rule. This is useful for calculating various using a trapezoidal rule. This is useful for calculating various
quantities which can be derived from time correlation data. If a quantities which can be derived from time correlation data. If a
normalization factor is needed for the time integration, it can be normalization factor is needed for the time integration, it can be
@ -322,40 +337,43 @@ included in the variable formula or via the *prefactor* keyword.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
are relevant to this fix. :doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix computes a global array of values which can be accessed by This fix computes a global array of values which can be accessed by
various :doc:`output commands <Howto_output>`. The values can only be various :doc:`output commands <Howto_output>`. The values can only be
accessed on timesteps that are multiples of *Nfreq* since that is when accessed on timesteps that are multiples of :math:`N_\text{freq}` since that is
averaging is performed. The global array has # of rows = *Nrepeat* when averaging is performed. The global array has # of rows
and # of columns = Npair+2. The first column has the time delta (in :math:`N_\text{repeat}` and # of columns :math:`N_\text{pair}+2`. The first
timesteps) between the pairs of input values used to calculate the column has the time :math:`\Delta t` (in time steps) between the pairs of input
correlation, as described above. The second column has the number of values used to calculate the correlation, as described above. The second
samples contributing to the correlation average, as described above. column has the number of samples contributing to the correlation average, as
The remaining Npair columns are for I,J pairs of the N input values, described above. The remaining Npair columns are for :math:`I,J` pairs of the
as determined by the *type* keyword, as described above. :math:`N` input values, as determined by the *type* keyword, as described
above.
* For *type* = *auto*, the Npair = N columns are ordered: C11, C22, ..., * For *type* = *auto*, the :math:`N_\text{pair} = N` columns are ordered:
CNN. :math:`C_{11}, C_{22}, \dotsc, C_{NN}`
* For *type* = *upper*, the Npair = N\*(N-1)/2 columns are ordered: C12, * For *type* = *upper*, the :math:`N_\text{pair} = N(N-1)/2` columns are
C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N. ordered: :math:`C_{12}, C_{13}, \dotsc, C_{1N}, C_{23}, \dotsc, C_{2N},
* For *type* = *lower*, the Npair = N\*(N-1)/2 columns are ordered: C21, C_{34}, \dotsc, C_{N-1,N}`
C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1. * For *type* = *lower*, the :math:`N_\text{pair} = N(N-1)/2` columns are
* For *type* = *auto/upper*, the Npair = N\*(N+1)/2 columns are ordered: ordered: :math:`C_{21}, C_{31}, C_{32}, C_{41}, C_{42}, C_{43I}, \dotsc,
C11, C12, C13, ..., C1N, C22, C23, ..., C2N, C33, C34, ..., CN-1N, C_{N1}, C_{N2}, \dotsc, C_{N,N-1}`
CNN. * For *type* = *auto/upper*, the :math:`N_\text{pair} = N(N+1)/2` columns are
* For *type* = *auto/lower*, the Npair = N\*(N+1)/2 columns are ordered: ordered: :math:`C_{11}, C_{12}, C_{13}, \dotsc, C_{1N}, C_{22}, C_{23},
C11, C21, C22, C31, C32, C33, C41, ..., C44, CN1, CN2, ..., CNN-1, \dotsc, C_{2N}, C_{33}, C_{34}, \dotsc, C_{N-1,N}, C_{NN}`
CNN. * For *type* = *auto/lower*, the :math:`N_\text{pair} = N(N+1)/2` columns are
* For *type* = *full*, the Npair = N\^2 columns are ordered: C11, C12, ordered: :math:`C_{11}, C_{21}, C_{22}, C_{31}, C_{32}, C_{33}, C_{41},
..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1, \dotsc, C_{44}, C_{N1}, C_{N2}, \dotsc, C_{N,N-1}, C_{NN}`
CNN. * For *type* = *full*, the :math:`N_\text{pair} = N^2` columns are ordered:
:math:`C_{11}, C_{12}, \dotsc, C_{1N}, C_{21}, C_{22}, \dotsc, C_{2N},
C_{31}, \dotsc, C_{3N}, \dotsc, C_{N1}, \dotsc, C_{N,N-1}, C_{NN}`
The array values calculated by this fix are treated as intensive. If The array values calculated by this fix are treated as extensive. If
you need to divide them by the number of atoms, you must do this in a you need to divide them by the number of atoms, you must do this in a
later processing step, e.g. when using them in a later processing step (e.g., when using them in a :doc:`variable <variable>`).
:doc:`variable <variable>`.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
@ -368,7 +386,8 @@ Related commands
"""""""""""""""" """"""""""""""""
:doc:`fix ave/correlate/long <fix_ave_correlate_long>`, :doc:`fix ave/correlate/long <fix_ave_correlate_long>`,
:doc:`compute <compute>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`compute <compute>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`,
:doc:`fix ave/histo <fix_ave_histo>`, :doc:`variable <variable>` :doc:`fix ave/histo <fix_ave_histo>`, :doc:`variable <variable>`
Default Default

View File

@ -6,7 +6,7 @@ fix ave/correlate/long command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ... fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ...
@ -66,10 +66,11 @@ Examples
Description Description
""""""""""" """""""""""
This fix is similar in spirit and syntax to the :doc:`fix ave/correlate <fix_ave_correlate>`. This fix is similar in spirit and syntax to the
:doc:`fix ave/correlate <fix_ave_correlate>`.
However, this fix allows the efficient calculation of time correlation However, this fix allows the efficient calculation of time correlation
functions on-the-fly over extremely long time windows with little functions on-the-fly over extremely long time windows with little
additional CPU overhead, using a multiple-tau method additional CPU overhead, using a multiple-:math:`\tau` method
:ref:`(Ramirez) <Ramirez>` that decreases the resolution of the stored :ref:`(Ramirez) <Ramirez>` that decreases the resolution of the stored
correlation function with time. It is not a full drop-in replacement. correlation function with time. It is not a full drop-in replacement.
@ -78,37 +79,41 @@ specified values may represent calculations performed by computes and
fixes which store their own "group" definitions. fixes which store their own "group" definitions.
Each listed value can be the result of a compute or fix or the Each listed value can be the result of a compute or fix or the
evaluation of an equal-style variable. See the :doc:`fix ave/correlate <fix_ave_correlate>` page for details. evaluation of an equal-style variable. See the
:doc:`fix ave/correlate <fix_ave_correlate>` page for details.
The *Nevery* and *Nfreq* arguments specify on what time steps the input The *Nevery* and *Nfreq* arguments specify on what time steps the input
values will be used to calculate correlation data, and the frequency values will be used to calculate correlation data and the frequency
with which the time correlation functions will be output to a file. with which the time correlation functions will be output to a file,
Note that there is no *Nrepeat* argument, unlike the :doc:`fix ave/correlate <fix_ave_correlate>` command. respectively.
Note that there is no *Nrepeat* argument, unlike the
:doc:`fix ave/correlate <fix_ave_correlate>` command.
The optional keywords *ncorr*, *nlen*, and *ncount* are unique to this The optional keywords *ncorr*, *nlen*, and *ncount* are unique to this
command and determine the number of correlation points calculated and command and determine the number of correlation points calculated and
the memory and CPU overhead used by this calculation. *Nlen* and the memory and CPU overhead used by this calculation. *Nlen* and
*ncount* determine the amount of averaging done at longer correlation *ncount* determine the amount of averaging done at longer correlation
times. The default values *nlen=16*, *ncount=2* ensure that the times. The default values *nlen* = 16 and *ncount* = 2 ensure that the
systematic error of the multiple-tau correlator is always below the systematic error of the multiple-:math:`\tau` correlator is always below the
level of the statistical error of a typical simulation (which depends level of the statistical error of a typical simulation (which depends
on the ensemble size and the simulation length). on the ensemble size and the simulation length).
The maximum correlation time (in time steps) that can be reached is The maximum correlation time (in time steps) that can be reached is
given by the formula (nlen-1) \* ncount\^(ncorr-1). Longer correlation given by the formula :math:`(nlen-1) ncount^{(ncorr-1)}`. Longer correlation
times are discarded and not calculated. With the default values of times are discarded and not calculated. With the default values of
the parameters (ncorr=20, nlen=16 and ncount=2), this corresponds to the parameters (:math:`ncorr=20`, :math:`nlen=16` and :math:`ncount=2`),
7864320 time steps. If longer correlation times are needed, the value this corresponds to 7864320 time steps. If longer correlation times are
of ncorr should be increased. Using nlen=16 and ncount=2, with needed, the value of ncorr should be increased. Using :math:`nlen=16` and
ncorr=30, the maximum number of steps that can be correlated is :math:`ncount=2`, with :math:`ncorr=30`, the maximum number of steps that can
80530636808. If ncorr=40, correlation times in excess of 8e12 time be correlated is 80530636808. If :math:`ncorr=40`, correlation times in excess
steps can be calculated. of :math:`8\times 10^{12}` time steps can be calculated.
The total memory needed for each correlation pair is roughly The total memory needed for each correlation pair is roughly
4\*ncorr\*nlen\*8 bytes. With the default values of the parameters, this :math:`4 \times ncorr\times nlen \times 8` bytes.
corresponds to about 10 KB. With the default values of the parameters, this corresponds to about 10 KB.
For the meaning of the additional optional keywords, see the :doc:`fix ave/correlate <fix_ave_correlate>` doc page. For the meaning of the additional optional keywords, see the
:doc:`fix ave/correlate <fix_ave_correlate>` doc page.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@ -128,7 +133,8 @@ Restrictions
"""""""""""" """"""""""""
This compute is part of the EXTRA-FIX package. It is only enabled if This compute is part of the EXTRA-FIX package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info. LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
Related commands Related commands
"""""""""""""""" """"""""""""""""
@ -140,8 +146,9 @@ Default
none none
The option defaults for keywords that are also keywords for the :doc:`fix ave/correlate <fix_ave_correlate>` command are as follows: type = The option defaults for keywords that are also keywords for the
auto, start = 0, no file output, title 1,2 = strings as described on :doc:`fix ave/correlate <fix_ave_correlate>` command are as follows:
type = auto, start = 0, no file output, title 1,2 = strings as described on
the :doc:`fix ave/correlate <fix_ave_correlate>` doc page. the :doc:`fix ave/correlate <fix_ave_correlate>` doc page.
The option defaults for keywords unique to this command are as The option defaults for keywords unique to this command are as

View File

@ -10,7 +10,7 @@ fix ave/histo/weight command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID style Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ... fix ID group-ID style Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ...
@ -22,7 +22,7 @@ Syntax
* lo,hi = lo/hi bounds within which to histogram * lo,hi = lo/hi bounds within which to histogram
* Nbin = # of histogram bins * Nbin = # of histogram bins
* one or more input values can be listed * one or more input values can be listed
* value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name * value = *x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, c_ID, c_ID[N], f_ID, f_ID[N], v_name
.. parsed-literal:: .. parsed-literal::
@ -126,26 +126,27 @@ length. The first value (a scalar or vector) is what is histogrammed
into bins, in the same manner the fix ave/histo command operates. The into bins, in the same manner the fix ave/histo command operates. The
second value (a scalar or vector) is used as a "weight". This means second value (a scalar or vector) is used as a "weight". This means
that instead of each value tallying a "1" to its bin, the that instead of each value tallying a "1" to its bin, the
corresponding weight is tallied. E.g. The Nth entry (weight) in the corresponding weight is tallied. For example, the :math:`N^\text{th}` entry
second vector is tallied to the bin corresponding to the Nth entry in (weight) in the second vector is tallied to the bin corresponding to the
the first vector. :math:`N^\text{th}` entry in the first vector.
---------- ----------
For input values from a compute or fix or variable, the bracketed For input values from a compute or fix or variable, the bracketed
index I can be specified using a wildcard asterisk with the index to index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector (for *mode* = "\*n" or "m\*" or "m\*n". If :math:`N` is the size of the vector
scalar) or the number of columns in the array (for *mode* = vector), (for *mode* = scalar) or the number of columns in the array
then an asterisk with no numeric values means all indices from 1 to N. (for *mode* = vector), then an asterisk with no numeric values means all
indices from 1 to :math:`N`\ .
A leading asterisk means all indices from 1 to n (inclusive). A A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle trailing asterisk means all indices from m to :math:`N` (inclusive). A middle
asterisk means all indices from m to n (inclusive). asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the Using a wildcard is the same as if the individual elements of the
vector or columns of the array had been listed one by one. E.g. these vector or columns of the array had been listed one by one. For example, the
2 fix ave/histo commands are equivalent, since the :doc:`compute following two fix ave/histo commands are equivalent, since the :doc:`compute
com/chunk <compute_com_chunk>` command creates a global array with 3 com/chunk <compute_com_chunk>` command creates a global array with three
columns: columns:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -164,31 +165,35 @@ columns:
---------- ----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
timesteps the input values will be used in order to contribute to the arguments specify on what time steps the input values will be used in order to
histogram. The final histogram is generated on timesteps that are contribute to the histogram. The final histogram is generated on time steps
multiple of *Nfreq*\ . It is averaged over *Nrepeat* histograms, that are multiple of :math:`N_\text{freq}`\ . It is averaged over
computed in the preceding portion of the simulation every *Nevery* :math:`N_\text{repeat}` histograms, computed in the preceding portion of the
timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must simulation every :math:`N_\text{every}` time steps.
be non-zero even if *Nrepeat* is 1. Also, the timesteps :math:`N_\text{freq}` must be a multiple of :math:`N_\text{every}` and
contributing to the histogram value cannot overlap, :math:`N_\text{every}` must be non-zero even if :math:`N_\text{repeat}` is 1.
i.e. Nrepeat\*Nevery can not exceed Nfreq. Also, the time steps contributing to the histogram value cannot overlap
(i.e., :math:`N_\text{repeat}\times N_\text{every}` cannot exceed
:math:`N_\text{freq}`).
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
on timesteps 90,92,94,96,98,100 will be used to compute the final :math:`N_\text{freq}=100`, then input values on time steps 90, 92, 94, 96, 98,
histogram on timestep 100. Similarly for timesteps and 100 will be used to compute the final histogram on timestep 100.
190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq Similarly for timesteps 190, 192, 194, 196, 198, and 200 on timestep 200, etc.
= 100, then no time averaging of the histogram is done; a histogram is If :math:`N_\text{repeat}=1` and :math:`N_\text{freq} = 100`, then no time
simply generated on timesteps 100,200,etc. averaging of the histogram is done; a histogram is simply generated on
timesteps 100, 200, etc.
---------- ----------
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are The atom attribute values (*x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, and
self-explanatory. Note that other atom attributes can be used as *fz*) are self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying inputs to this fix by using the
an input value from that compute. :doc:`compute property/atom <compute_property_atom>` command and then
specifying an input value from that compute.
If a value begins with "c\_", a compute ID must follow which has been If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If *mode* = scalar, then if previously defined in the input script. If *mode* = scalar, then if
no bracketed term is appended, the global scalar calculated by the no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of compute is used. If a bracketed term is appended, the Ith element of
@ -201,35 +206,38 @@ how I can be specified with a wildcard asterisk to effectively specify
multiple values. multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which that can sum per-atom quantities into a global scalar or vector, which
can thus be accessed by fix ave/histo. Or it can be a compute defined can then be accessed by fix ave/histo. It can also be a compute defined
not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` not in your input script, but by :doc:`thermodynamic output <thermo_style>`
or other fixes such as :doc:`fix nvt <fix_nh>`
or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
these commands which give the IDs of these computes. Users can also these commands which give the IDs of these computes. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`. write code for their own compute styles and
:doc:`add them to LAMMPS <Modify>`.
If a value begins with "f\_", a fix ID must follow which has been If a value begins with "f\_," a fix ID must follow which has been
previously defined in the input script. If *mode* = scalar, then if previously defined in the input script. If *mode* = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If *mode* = vector, then global vector calculated by the fix is used. If *mode* = vector, then
if no bracketed term is appended, the global or per-atom or local if no bracketed term is appended, the global or per-atom or local
vector calculated by the fix is used. If a bracketed term is vector calculated by the fix is used. If a bracketed term is
appended, the Ith column of the global or per-atom or local array appended, the :math:`I^\text{th}` column of the global or per-atom or local
calculated by the fix is used. See the discussion above for how I can array calculated by the fix is used. See the discussion above for how
be specified with a wildcard asterisk to effectively specify multiple :math:`I` can be specified with a wildcard asterisk to effectively specify
values. multiple values.
Note that some fixes only produce their values on certain timesteps, Note that some fixes only produce their values on certain timesteps,
which must be compatible with *Nevery*, else an error will result. which must be compatible with :math:`N_\text{every}`, else an error will
Users can also write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`. result. Users can also write code for their own fix styles and
:doc:`add them to LAMMPS <Modify>`.
If a value begins with "v\_", a variable name must follow which has If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script. If *mode* = scalar, then been previously defined in the input script. If *mode* = scalar, then
only equal-style or vector-style variables can be used, which both only equal-style or vector-style variables can be used, which both
produce global values. In this mode, a vector-style variable requires produce global values. In this mode, a vector-style variable requires
a bracketed term to specify the Ith element of the vector calculated a bracketed term to specify the :math:`I^\text{th}` element of the vector
by the variable. If *mode* = vector, then only vector-style or calculated by the variable. If *mode* = vector, then only vector-style or
atom-style variables can be used, which produce a global or per-atom atom-style variables can be used, which produce a global or per-atom
vector respectively. The vector-style variable must be used without a vector respectively. The vector-style variable must be used without a
bracketed term. See the :doc:`variable <variable>` command for details. bracketed term. See the :doc:`variable <variable>` command for details.
@ -259,44 +267,44 @@ keyword should be used to specify which output will be used. The
remaining input arguments must still be consistent. remaining input arguments must still be consistent.
The *beyond* keyword determines how input values that fall outside the The *beyond* keyword determines how input values that fall outside the
*lo* to *hi* bounds are treated. Values such that *lo* <= value <= *lo* to *hi* bounds are treated. Values such that *lo* :math:`\le` value
*hi* are assigned to one bin. Values on a bin boundary are assigned :math:`\le` *hi* are assigned to one bin. Values on a bin boundary are
to the lower of the 2 bins. If *beyond* is set to *ignore* then assigned to the lower of the two bins. If *beyond* is set to *ignore* then
values < *lo* and values > *hi* are ignored, i.e. they are not binned. values :math:`<` *lo* and values :math:`>` *hi* are ignored (i.e., they are not
If *beyond* is set to *end* then values < *lo* are counted in the binned). If *beyond* is set to *end*, then values :math:`<` *lo* are counted in
first bin and values > *hi* are counted in the last bin. If *beyond* the first bin and values :math:`>` *hi* are counted in the last bin.
is set to *extend* then two extra bins are created, so that there are If *beyond* is set to *extend*, then two extra bins are created so that there
Nbins+2 total bins. Values < *lo* are counted in the first bin and are :math:`N_\text{bins}+2` total bins. Values :math:`<` *lo* are counted in
values > *hi* are counted in the last bin (Nbins+2). Values between the first bin and values :math:`>` *hi* are counted in the last bin
*lo* and *hi* (inclusive) are counted in bins 2 through Nbins+1. The :math:`(N_\text{bins}+2)`\ . Values between
"coordinate" stored and printed for these two extra bins is *lo* and *lo* and *hi* (inclusive) are counted in bins 2 through
*hi*\ . :math:`N_\text{bins}+1`\ . The "coordinate" stored and printed for these two
extra bins is *lo* and *hi*\ .
The *ave* keyword determines how the histogram produced every *Nfreq* The *ave* keyword determines how the histogram produced every
steps are averaged with histograms produced on previous steps that :math:`N_\text{freq}` steps are averaged with histograms produced on previous
were multiples of *Nfreq*, before they are accessed by another output steps that were multiples of :math:`N_\text{freq}`, before they are accessed by
command or written to a file. another output command or written to a file.
If the *ave* setting is *one*, then the histograms produced on If the *ave* setting is *one*, then the histograms produced on
timesteps that are multiples of *Nfreq* are independent of each other; timesteps that are multiples of :math:`N_\text{freq}` are independent of each
they are output as-is without further averaging. other; they are output as-is without further averaging.
If the *ave* setting is *running*, then the histograms produced on If the *ave* setting is *running*, then the histograms produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
cumulative sense before being output. Each bin value in the histogram in a cumulative sense before being output. Each bin value in the histogram
is thus the average of the bin value produced on that timestep with is thus the average of the bin value produced on that timestep with all
all preceding values for the same bin. This running average begins preceding values for the same bin. This running average begins when the fix is
when the fix is defined; it can only be restarted by deleting the fix defined; it can only be restarted by deleting the fix via the
via the :doc:`unfix <unfix>` command, or by re-defining the fix by :doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying it.
re-specifying it.
If the *ave* setting is *window*, then the histograms produced on If the *ave* setting is *window*, then the histograms produced on
timesteps that are multiples of *Nfreq* are summed within a moving timesteps that are multiples of :math:`N_\text{freq}` are summed within a
"window" of time, so that the last M histograms are used to produce moving "window" of time, so that the last :math:`M` histograms are used to
the output. E.g. if M = 3 and Nfreq = 1000, then the output on step produce the output (e.g., if :math:`M = 3` and :math:`N_\text{freq} = 1000`,
10000 will be the combined histogram of the individual histograms on then the output on step 10000 will be the combined histogram of the individual
steps 8000,9000,10000. Outputs on early steps will be sums over less histograms on steps 8000, 9000, and 10000. Outputs on early steps will be sums
than M histograms if they are not available. over less than :math:`M` histograms if they are not available.
The *start* keyword specifies what timestep histogramming will begin The *start* keyword specifies what timestep histogramming will begin
on. The default is step 0. Often input values can be 0.0 at time 0, on. The default is step 0. Often input values can be 0.0 at time 0,
@ -321,8 +329,8 @@ The *overwrite* keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the *ave running* setting. output. This option can only be used with the *ave running* setting.
The *title1* and *title2* and *title3* keywords allow specification of The *title1*, *title2*, and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output the strings that will be printed as the first three lines of the output
file, assuming the *file* keyword was used. LAMMPS uses default file, assuming the *file* keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified. values for each of these, so they do not need to be specified.
@ -336,7 +344,7 @@ By default, these header lines are as follows:
In the first line, ID is replaced with the fix-ID. The second line In the first line, ID is replaced with the fix-ID. The second line
describes the six values that are printed at the first of each section describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in of output. The third describes the four values printed for each bin in
the histogram. the histogram.
---------- ----------
@ -344,13 +352,14 @@ the histogram.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
are relevant to this fix. :doc:`binary restart files <restart>`.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix produces a global vector and global array which can be This fix produces a global vector and global array which can be
accessed by various :doc:`output commands <Howto_output>`. The values accessed by various :doc:`output commands <Howto_output>`. The values
can only be accessed on timesteps that are multiples of *Nfreq* since can only be accessed on timesteps that are multiples of :math:`N_\text{freq}`
that is when a histogram is generated. The global vector has 4 since that is when a histogram is generated. The global vector has four
values: values:
* 1 = total counts in the histogram * 1 = total counts in the histogram
@ -358,19 +367,20 @@ values:
* 3 = min value of all input values, including ones not histogrammed * 3 = min value of all input values, including ones not histogrammed
* 4 = max value of all input values, including ones not histogrammed * 4 = max value of all input values, including ones not histogrammed
The global array has # of rows = Nbins and # of columns = 3. The The global array has :math:`N_\text{bins}` rows and three columns. The
first column has the bin coordinate, the second column has the count of first column has the bin coordinate, the second column has the count of
values in that histogram bin, and the third column has the bin count values in that histogram bin, and the third column has the bin count
divided by the total count (not including missing counts), so that the divided by the total count (not including missing counts), so that the
values in the third column sum to 1.0. values in the third column sum to 1.0.
The vector and array values calculated by this fix are all treated as The vector and array values calculated by this fix are all treated as
intensive. If this is not the case, e.g. due to histogramming intensive. If this is not the case (e.g., due to histogramming
per-atom input values, then you will need to account for that when per-atom input values), then you will need to account for that when
interpreting the values produced by this fix. interpreting the values produced by this fix.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command.
This fix is not invoked during :doc:`energy minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""
@ -379,7 +389,8 @@ Restrictions
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`, :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`,
Default Default

View File

@ -6,7 +6,7 @@ fix ave/time command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ... fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
@ -86,9 +86,11 @@ Each listed value can be the result of a :doc:`compute <compute>` or
:doc:`variable <variable>`. In each case, the compute, fix, or variable :doc:`variable <variable>`. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, from a compute, fix, or variable, then see the
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`,
or :doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to sum a or :doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to sum a
per-atom quantity into a single global quantity, see the :doc:`compute reduce <compute_reduce>` command. per-atom quantity into a single global quantity, see the
:doc:`compute reduce <compute_reduce>` command.
:doc:`Computes <compute>` that produce global quantities are those which :doc:`Computes <compute>` that produce global quantities are those which
do not have the word *atom* in their style name. Only a few do not have the word *atom* in their style name. Only a few
@ -100,13 +102,13 @@ be used, since they produce per-atom values.
The input values must either be all scalars or all vectors depending The input values must either be all scalars or all vectors depending
on the setting of the *mode* keyword. In both cases, the averaging is on the setting of the *mode* keyword. In both cases, the averaging is
performed independently on each input value. I.e. each input scalar performed independently on each input value (i.e., each input scalar
is averaged independently or each element of each input vector is is averaged independently or each element of each input vector is
averaged independently. averaged independently).
If *mode* = scalar, then the input values must be scalars, or vectors If *mode* = scalar, then the input values must be scalars, or vectors
with a bracketed term appended, indicating the Ith value of the vector with a bracketed term appended, indicating the :math:`I^\text{th}` value of the
is used. vector is used.
If *mode* = vector, then the input values must be vectors, or arrays If *mode* = vector, then the input values must be vectors, or arrays
with a bracketed term appended, indicating the Ith column of the array with a bracketed term appended, indicating the Ith column of the array
@ -118,17 +120,17 @@ the vector or number of rows in the array.
For input values from a compute or fix or variable, the bracketed For input values from a compute or fix or variable, the bracketed
index I can be specified using a wildcard asterisk with the index to index I can be specified using a wildcard asterisk with the index to
effectively specify multiple values. This takes the form "\*" or effectively specify multiple values. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If N = the size of the vector (for *mode* = "\*n" or "m\*" or "m\*n". If :math:`N` is the size of the vector (for *mode* =
scalar) or the number of columns in the array (for *mode* = vector), scalar) or the number of columns in the array (for *mode* = vector),
then an asterisk with no numeric values means all indices from 1 to N. then an asterisk with no numeric values means all indices from 1 to :math:`N`.
A leading asterisk means all indices from 1 to n (inclusive). A A leading asterisk means all indices from 1 to n (inclusive). A trailing
trailing asterisk means all indices from n to N (inclusive). A middle asterisk means all indices from n to :math:`N` (inclusive). A middle asterisk
asterisk means all indices from m to n (inclusive). means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual elements of the Using a wildcard is the same as if the individual elements of the
vector or columns of the array had been listed one by one. E.g. these vector or columns of the array had been listed one by one. For example, the
2 fix ave/time commands are equivalent, since the :doc:`compute rdf following two fix ave/time commands are equivalent, since the :doc:`compute rdf
<compute_rdf>` command creates, in this case, a global array with 3 <compute_rdf>` command creates, in this case, a global array with three
columns, each of length 50: columns, each of length 50:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -147,20 +149,22 @@ columns, each of length 50:
---------- ----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
timesteps the input values will be used in order to contribute to the arguments specify on what time steps the input values will be used in order to
average. The final averaged quantities are generated on timesteps contribute to the average. The final averaged quantities are generated on
that are a multiple of *Nfreq*\ . The average is over *Nrepeat* time steps that are a multiple of :math:`N_\text{freq}`\ . The average is over
quantities, computed in the preceding portion of the simulation every :math:`N_\text{repeat}` quantities, computed in the preceding portion of the
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and simulation every :math:`N_\text{every}` time steps. :math:`N_\text{freq}` must
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
non-zero even if :math:`N_\text{repeat} = 1`. Also, the time steps
contributing to the average value cannot overlap, contributing to the average value cannot overlap,
i.e. Nrepeat\*Nevery can not exceed Nfreq. i.e. Nrepeat\*Nevery can not exceed Nfreq.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
timesteps 90,92,94,96,98,100 will be used to compute the final average :math:`N_\text{freq}=100`, then values on time steps 90, 92, 94, 96, 98, and
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on 100 will be used to compute the final average on time step 100. Similarly for
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time time steps 190, 192, 194, 196, 198, and 200 on time step 200, etc.
If :math:`N_\text{repeat}=1` and :math:`N_\text{freq} = 100`, then no time
averaging is done; values are simply generated on time steps averaging is done; values are simply generated on time steps
100, 200, etc. 100, 200, etc.
@ -178,8 +182,8 @@ See the discussion above for how I can be specified with a wildcard
asterisk to effectively specify multiple values. asterisk to effectively specify multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which that can sum per-atom quantities into a global scalar or vector, which
can thus be accessed by fix ave/time. Or it can be a compute defined can then be accessed by fix ave/time. It can also be a compute defined
not in your input script, but by :doc:`thermodynamic output not in your input script, but by :doc:`thermodynamic output
<thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or
:doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
@ -228,18 +232,18 @@ vectors, or columns of global arrays. They can also be global arrays,
which are converted into a series of global vectors (one per column), which are converted into a series of global vectors (one per column),
as explained above. as explained above.
The *ave* keyword determines how the values produced every *Nfreq* The *ave* keyword determines how the values produced every
steps are averaged with values produced on previous steps that were :math:`N_\text{freq}` steps are averaged with values produced on previous steps
multiples of *Nfreq*, before they are accessed by another output that were multiples of :math:`N_\text{freq}`, before they are accessed by
command or written to a file. another output command or written to a file.
If the *ave* setting is *one*, then the values produced on time steps If the *ave* setting is *one*, then the values produced on time steps
that are multiples of *Nfreq* are independent of each other; they are that are multiples of :math:`N_\text{freq}` are independent of each other; they
output as-is without further averaging. are output as-is without further averaging.
If the *ave* setting is *running*, then the values produced on If the *ave* setting is *running*, then the values produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a time steps that are multiples of :math:`N_\text{freq}` are summed and averaged
cumulative sense before being output. Each output value is thus the in a cumulative sense before being output. Each output value is thus the
average of the value produced on that time step with all preceding average of the value produced on that time step with all preceding
values. This running average begins when the fix is defined; it can values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the :doc:`unfix <unfix>` only be restarted by deleting the fix via the :doc:`unfix <unfix>`
@ -248,10 +252,10 @@ command, or by re-defining the fix by re-specifying it.
If the *ave* setting is *window*, then the values produced on If the *ave* setting is *window*, then the values produced on
time steps that are multiples of *Nfreq* are summed and averaged within time steps that are multiples of *Nfreq* are summed and averaged within
a moving "window" of time, so that the last M values are used to a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output produce the output. For example, if :math:`M = 3` and
on step 10000 will be the average of the individual values on steps :math:`N_\text{freq} = 1000`, then the output on step 10000 will be the average
8000,9000,10000. Outputs on early steps will average over less than M of the individual values on steps 8000, 9000, and 10000. Outputs on early
values if they are not available. steps will average over less than :math:`M` values if they are not available.
The *start* keyword specifies what time step averaging will begin on. The *start* keyword specifies what time step averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so The default is step 0. Often input values can be 0.0 at time 0, so
@ -262,9 +266,9 @@ The *off* keyword can be used to flag any of the input values. If a
value is flagged, it will not be time averaged. Instead the most value is flagged, it will not be time averaged. Instead the most
recent input value will always be stored and output. This is useful recent input value will always be stored and output. This is useful
if one of more of the inputs produced by a compute or fix or variable if one of more of the inputs produced by a compute or fix or variable
are effectively constant or are simply current values. E.g. they are are effectively constant or are simply current values (e.g., they are
being written to a file with other time-averaged values for purposes being written to a file with other time-averaged values for purposes
of creating well-formatted output. of creating well-formatted output).
The *file* keyword allows a filename to be specified. Every *Nfreq* The *file* keyword allows a filename to be specified. Every *Nfreq*
steps, one quantity or vector of quantities is written to the file for steps, one quantity or vector of quantities is written to the file for
@ -294,7 +298,7 @@ output. This option can only be used with the *ave running* setting.
The *format* keyword sets the numeric format of each value when it is The *format* keyword sets the numeric format of each value when it is
printed to a file via the *file* keyword. Note that all values are printed to a file via the *file* keyword. Note that all values are
floating point quantities. The default format is %g. You can specify floating point quantities. The default format is %g. You can specify
a higher precision if desired, e.g. %20.16g. a higher precision if desired (e.g., %20.16g).
The *title1* and *title2* and *title3* keywords allow specification of The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 2 or 3 lines of the the strings that will be printed as the first 2 or 3 lines of the
@ -341,7 +345,7 @@ a YAML format file this name will be in the list of keywords.
This fix produces a global scalar or global vector or global array This fix produces a global scalar or global vector or global array
which can be accessed by various :doc:`output commands <Howto_output>`. which can be accessed by various :doc:`output commands <Howto_output>`.
The values can only be accessed on time steps that are multiples of The values can only be accessed on time steps that are multiples of
*Nfreq* since that is when averaging is performed. :math:`N_\text{freq}` since that is when averaging is performed.
A scalar is produced if only a single input value is averaged and A scalar is produced if only a single input value is averaged and
*mode* = scalar. A vector is produced if multiple input values are *mode* = scalar. A vector is produced if multiple input values are
@ -354,17 +358,18 @@ of rows = length of the input vectors and # of columns = number of
inputs. inputs.
If the fix produces a scalar or vector, then the scalar and each If the fix produces a scalar or vector, then the scalar and each
element of the vector can be either "intensive" or "extensive", element of the vector can be either "intensive" or "extensive,"
depending on whether the values contributing to the scalar or vector depending on whether the values contributing to the scalar or vector
element are "intensive" or "extensive". If the fix produces an array, element are "intensive" or "extensive." If the fix produces an array,
then all elements in the array must be the same, either "intensive" or then all elements in the array must be the same, either "intensive" or
"extensive". If a compute or fix provides the value being time "extensive." If a compute or fix provides the value being time
averaged, then the compute or fix determines whether the value is averaged, then the compute or fix determines whether the value is
intensive or extensive; see the page for that compute or fix for intensive or extensive; see the page for that compute or fix for
further info. Values produced by a variable are treated as intensive. further info. Values produced by a variable are treated as intensive.
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions Restrictions
"""""""""""" """"""""""""
@ -373,7 +378,8 @@ Restrictions
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`, :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`,
Default Default

View File

@ -6,7 +6,7 @@ fix aveforce command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID aveforce fx fy fz keyword value ... fix ID group-ID aveforce fx fy fz keyword value ...
@ -48,13 +48,13 @@ component. The actual force on each atom is then set to the average
value plus the component specified in this command. This means each value plus the component specified in this command. This means each
atom in the group receives the same force. atom in the group receives the same force.
Any of the fx,fy,fz values can be specified as NULL which means the Any of the *fx*, *fy*, or *fz* values can be specified as :code:`NULL`, which
force in that dimension is not changed. Note that this is not the means the force in that dimension is not changed. Note that this is not the
same as specifying a 0.0 value, since that sets all forces to the same same as specifying a 0.0 value, since that sets all forces to the same
average value without adding in any additional force. average value without adding in any additional force.
Any of the 3 quantities defining the force components can be specified Any of the three quantities defining the force components, namely *fx*, *fy*,
as an equal-style :doc:`variable <variable>`, namely *fx*, *fy*, *fz*\ . and *fz*, can be specified as an equal-style :doc:`variable <variable>`\ .
If the value is a variable, it should be specified as v_name, where If the value is a variable, it should be specified as v_name, where
name is the variable name. In this case, the variable will be name is the variable name. In this case, the variable will be
evaluated each timestep, and its value used to determine the average evaluated each timestep, and its value used to determine the average
@ -78,17 +78,17 @@ to it.
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. No information about this fix is written to
:doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *respa* option is supported by this The :doc:`fix_modify <fix_modify>` *respa* option is supported by this
fix. This allows to set at which level of the :doc:`r-RESPA <run_style>` fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
integrator the fix is adding its forces. Default is the outermost level. integrator the fix is adding its forces. Default is the outermost level.
This fix computes a global 3-vector of forces, which can be accessed This fix computes a global three-vector of forces, which can be accessed
by various :doc:`output commands <Howto_output>`. This is the total by various :doc:`output commands <Howto_output>`. This is the total
force on the group of atoms before the forces on individual atoms are force on the group of atoms before the forces on individual atoms are
changed by the fix. The vector values calculated by this fix are changed by the fix. The vector values calculated by this fix are "extensive".
"extensive".
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix balance command
Syntax Syntax
"""""" """"""
.. parsed-literal:: .. code-block:: LAMMPS
fix ID group-ID balance Nfreq thresh style args keyword args ... fix ID group-ID balance Nfreq thresh style args keyword args ...
@ -19,7 +19,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
shift args = dimstr Niter stopthresh shift args = dimstr Niter stopthresh
dimstr = sequence of letters containing "x" or "y" or "z", each not more than once dimstr = sequence of letters containing *x* or *y* or *z*, each not more than once
Niter = # of times to iterate within each dimension of dimstr sequence Niter = # of times to iterate within each dimension of dimstr sequence
stopthresh = stop balancing when this imbalance threshold is reached stopthresh = stop balancing when this imbalance threshold is reached
*rcb* args = none *rcb* args = none
@ -72,10 +72,10 @@ perform "static" balancing, before or between runs, see the
Load-balancing is typically most useful if the particles in the Load-balancing is typically most useful if the particles in the
simulation box have a spatially-varying density distribution or simulation box have a spatially-varying density distribution or
where the computational cost varies significantly between different where the computational cost varies significantly between different
atoms. E.g. a model of a vapor/liquid interface, or a solid with atoms (e.g., a model of a vapor/liquid interface, or a solid with
an irregular-shaped geometry containing void regions, or an irregular-shaped geometry containing void regions, or
:doc:`hybrid pair style simulations <pair_hybrid>` which combine :doc:`hybrid pair style simulations <pair_hybrid>` that combine
pair styles with different computational cost. In these cases, the pair styles with different computational cost). In these cases, the
LAMMPS default of dividing the simulation box volume into a LAMMPS default of dividing the simulation box volume into a
regular-spaced grid of 3d bricks, with one equal-volume sub-domain regular-spaced grid of 3d bricks, with one equal-volume sub-domain
per processor, may assign numbers of particles per processor in a per processor, may assign numbers of particles per processor in a
@ -92,28 +92,30 @@ processor.
.. note:: .. note::
The weighting options listed above are documented with the The weighting options listed above are documented with the
:doc:`balance <balance>` command in :ref:`this section of the balance command <weighted_balance>` doc page. That section :doc:`balance <balance>` command in :ref:`this section of the balance
command <weighted_balance>` doc page. That section
describes the various weighting options and gives a few examples of describes the various weighting options and gives a few examples of
how they can be used. The weighting options are the same for both the how they can be used. The weighting options are the same for both the
fix balance and :doc:`balance <balance>` commands. fix balance and :doc:`balance <balance>` commands.
Note that the :doc:`processors <processors>` command allows some control Note that the :doc:`processors <processors>` command allows some control
over how the box volume is split across processors. Specifically, for over how the box volume is split across processors. Specifically, for
a Px by Py by Pz grid of processors, it allows choice of Px, Py, and a :math:`P_x \times P_y \times P_z` grid of processors, it allows choices of
Pz, subject to the constraint that Px \* Py \* Pz = P, the total number :math:`P_x`, :math:`P_y`, and :math:`P_z` subject to the constraint that
of processors. This is sufficient to achieve good load-balance for :math:`P_x P_y P_z = P`, the total number of processors.
This is sufficient to achieve good load-balance for
some problems on some processor counts. However, all the processor some problems on some processor counts. However, all the processor
sub-domains will still have the same shape and same volume. sub-domains will still have the same shape and the same volume.
On a particular time step, a load-balancing operation is only performed On a particular time step, a load-balancing operation is only performed
if the current "imbalance factor" in particles owned by each processor if the current "imbalance factor" in particles owned by each processor
exceeds the specified *thresh* parameter. The imbalance factor is exceeds the specified *thresh* parameter. The imbalance factor is
defined as the maximum number of particles (or weight) owned by any defined as the maximum number of particles (or weight) owned by any
processor, divided by the average number of particles (or weight) per processor, divided by the average number of particles (or weight) per
processor. Thus an imbalance factor of 1.0 is perfect balance. processor. Thus, an imbalance factor of 1.0 is perfect balance.
As an example, for 10000 particles running on 10 processors, if the As an example, for 10000 particles running on 10 processors, if the
most heavily loaded processor has 1200 particles, then the factor is most heavily loaded processor has 1200 particles, then the imbalance factor is
1.2, meaning there is a 20% imbalance. Note that re-balances can be 1.2, meaning there is a 20% imbalance. Note that re-balances can be
forced even if the current balance is perfect (1.0) be specifying a forced even if the current balance is perfect (1.0) be specifying a
*thresh* < 1.0. *thresh* < 1.0.
@ -125,28 +127,29 @@ forced even if the current balance is perfect (1.0) be specifying a
may not be achieved. For example, "grid" methods (defined below) that may not be achieved. For example, "grid" methods (defined below) that
create a logical 3d grid cannot achieve perfect balance for many create a logical 3d grid cannot achieve perfect balance for many
irregular distributions of particles. Likewise, if a portion of the irregular distributions of particles. Likewise, if a portion of the
system is a perfect lattice, e.g. the initial system is generated by system is a perfect, non-rotated lattice (e.g., the initial system is
the :doc:`create_atoms <create_atoms>` command, then "grid" methods may generated by the :doc:`create_atoms <create_atoms>` command with no
be unable to achieve exact balance. This is because entire lattice rotations), then "grid" methods may be unable to achieve exact balance.
planes will be owned or not owned by a single processor. This is because entire lattice planes will be owned or not owned by a single
processor.
.. note:: .. note::
The imbalance factor is also an estimate of the maximum speed-up The imbalance factor is also an estimate of the maximum speed-up
you can hope to achieve by running a perfectly balanced simulation you can hope to achieve by running a perfectly balanced simulation
versus an imbalanced one. In the example above, the 10000 particle versus an imbalanced one. In the example above, the 10000-particle
simulation could run up to 20% faster if it were perfectly balanced, simulation could run up to 20% faster if it were perfectly balanced,
versus when imbalanced. However, computational cost is not strictly versus when imbalanced. However, computational cost is not strictly
proportional to particle count, and changing the relative size and proportional to particle count, and changing the relative size and
shape of processor sub-domains may lead to additional computational shape of processor sub-domains may lead to additional computational
and communication overheads, e.g. in the PPPM solver used via the and communication overheads (e.g., in the PPPM solver used via the
:doc:`kspace_style <kspace_style>` command. Thus you should benchmark :doc:`kspace_style <kspace_style>` command). Thus, you should benchmark
the run times of a simulation before and after balancing. the run times of a simulation before and after balancing.
---------- ----------
The method used to perform a load balance is specified by one of the The method used to perform a load balance is specified by one of the
listed styles, which are described in detail below. There are 2 kinds listed styles, which are described in detail below. There are two kinds
of styles. of styles.
The *shift* style is a "grid" method which produces a logical 3d grid The *shift* style is a "grid" method which produces a logical 3d grid
@ -198,11 +201,12 @@ The *group-ID* is ignored. However the impact of balancing on
different groups of atoms can be affected by using the *group* weight different groups of atoms can be affected by using the *group* weight
style as described below. style as described below.
The *Nfreq* setting determines how often a re-balance is performed. If The :math:`N_\text{freq}` setting determines how often a re-balance is
*Nfreq* > 0, then re-balancing will occur every *Nfreq* steps. Each performed. If :math:`N_\text{freq} > 0`, then re-balancing will occur every
time a re-balance occurs, a reneighboring is triggered, so *Nfreq* :math:`N_\text{freq}` steps. Each time a re-balance occurs, a reneighboring is
should not be too small. If *Nfreq* = 0, then re-balancing will be triggered, so :math:`N_\text{freq}` should not be too small. If
done every time reneighboring normally occurs, as determined by the :math:`N_\text{freq} = 0`, then re-balancing will be done every time
reneighboring normally occurs, as determined by the
the :doc:`neighbor <neighbor>` and :doc:`neigh_modify <neigh_modify>` the :doc:`neighbor <neighbor>` and :doc:`neigh_modify <neigh_modify>`
command settings. command settings.
@ -216,7 +220,7 @@ above. It changes the positions of cutting planes between processors
in an iterative fashion, seeking to reduce the imbalance factor. in an iterative fashion, seeking to reduce the imbalance factor.
The *dimstr* argument is a string of characters, each of which must be The *dimstr* argument is a string of characters, each of which must be
an "x" or "y" or "z". Each character can appear zero or one time, *x* or *y* or *z*. Each character can appear zero or one time,
since there is no advantage to balancing on a dimension more than since there is no advantage to balancing on a dimension more than
once. You should normally only list dimensions where you expect there once. You should normally only list dimensions where you expect there
to be a density variation in the particles. to be a density variation in the particles.
@ -224,8 +228,8 @@ to be a density variation in the particles.
Balancing proceeds by adjusting the cutting planes in each of the Balancing proceeds by adjusting the cutting planes in each of the
dimensions listed in *dimstr*, one dimension at a time. For a single dimensions listed in *dimstr*, one dimension at a time. For a single
dimension, the balancing operation (described below) is iterated on up dimension, the balancing operation (described below) is iterated on up
to *Niter* times. After each dimension finishes, the imbalance factor to :math:`N_\text{iter}` times. After each dimension finishes, the imbalance
is re-computed, and the balancing operation halts if the *stopthresh* factor is re-computed, and the balancing operation halts if the *stopthresh*
criterion is met. criterion is met.
A re-balance operation in a single dimension is performed using a A re-balance operation in a single dimension is performed using a
@ -265,15 +269,15 @@ the normal reneighboring procedure.
by the extent of a processor's sub-domain in one dimension. The size by the extent of a processor's sub-domain in one dimension. The size
of this bracketing region shrinks based on the local density, as of this bracketing region shrinks based on the local density, as
described above, which should typically be 1/2 or more every described above, which should typically be 1/2 or more every
iteration. Thus if *Niter* is specified as 10, the cutting plane will iteration. Thus if :math:`N_\text{iter}` is specified as 10, the cutting
typically be positioned to better than 1 part in 1000 accuracy plane will typically be positioned to better than 1 part in 1000 accuracy
(relative to the perfect target position). For *Niter* = 20, it will (relative to the perfect target position). For :math:`N_\text{iter} = 20`,
be accurate to better than 1 part in a million. Thus there is no need it will be accurate to better than 1 part in a million. Thus there is no
to set *Niter* to a large value. This is especially true if you are need to set :math:`N_\text{iter}` to a large value. This is especially true
re-balancing often enough that each time you expect only an incremental if you are re-balancing often enough that each time you expect only an
adjustment in the cutting planes is necessary. LAMMPS will check if incremental adjustment in the cutting planes is necessary. LAMMPS will
the threshold accuracy is reached (in a dimension) is less iterations check if the threshold accuracy is reached (in a dimension) is less
than *Niter* and exit early. iterations than :math:`N_\text{iter}` and exit early.
---------- ----------
@ -281,12 +285,12 @@ The *rcb* style invokes a "tiled" method for balancing, as described
above. It performs a recursive coordinate bisectioning (RCB) of the above. It performs a recursive coordinate bisectioning (RCB) of the
simulation domain. The basic idea is as follows. simulation domain. The basic idea is as follows.
The simulation domain is cut into 2 boxes by an axis-aligned cut in The simulation domain is cut into two boxes by an axis-aligned cut in
the longest dimension, leaving one new box on either side of the cut. the longest dimension, leaving one new box on either side of the cut.
All the processors are also partitioned into 2 groups, half assigned All the processors are also partitioned into two groups, half assigned
to the box on the lower side of the cut, and half to the box on the to the box on the lower side of the cut, and half to the box on the
upper side. (If the processor count is odd, one side gets an extra upper side. If the processor count is odd, one side gets an extra
processor.) The cut is positioned so that the number of atoms in the processor. The cut is positioned so that the number of atoms in the
lower box is exactly the number that the processors assigned to that lower box is exactly the number that the processors assigned to that
box should own for load balance to be perfect. This also makes load box should own for load balance to be perfect. This also makes load
balance for the upper box perfect. The positioning is done balance for the upper box perfect. The positioning is done
@ -309,7 +313,7 @@ results of each re-balancing operation. The file contains the bounds
of the sub-domain for each processor after the balancing operation of the sub-domain for each processor after the balancing operation
completes. The format of the file is compatible with the completes. The format of the file is compatible with the
`Pizza.py <pizza_>`_ *mdump* tool which has support for manipulating and `Pizza.py <pizza_>`_ *mdump* tool which has support for manipulating and
visualizing mesh files. An example is shown here for a balancing by 4 visualizing mesh files. An example is shown here for a balancing by four
processors for a 2d problem: processors for a 2d problem:
.. parsed-literal:: .. parsed-literal::
@ -349,27 +353,28 @@ processors for a 2d problem:
3 1 9 10 11 12 3 1 9 10 11 12
4 1 13 14 15 16 4 1 13 14 15 16
The coordinates of all the vertices are listed in the NODES section, 5 The coordinates of all the vertices are listed in the NODES section, five
per processor. Note that the 4 sub-domains share vertices, so there per processor. Note that the four sub-domains share vertices, so there
will be duplicate nodes in the list. will be duplicate nodes in the list.
The "SQUARES" section lists the node IDs of the 4 vertices in a The "SQUARES" section lists the node IDs of the four vertices in a
rectangle for each processor (1 to 4). rectangle for each processor (1 to 4).
For a 3d problem, the syntax is similar with 8 vertices listed for For a 3d problem, the syntax is similar but with eight vertices listed for
each processor, instead of 4, and "SQUARES" replaced by "CUBES". each processor instead of four, and "SQUARES" replaced by "CUBES."
---------- ----------
Restart, fix_modify, output, run start/stop, minimize info Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options No information about this fix is written to
are relevant to this fix. :doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix computes a global scalar which is the imbalance factor This fix computes a global scalar which is the imbalance factor
after the most recent re-balance and a global vector of length 3 with after the most recent re-balance and a global vector of length 3 with
additional information about the most recent re-balancing. The 3 additional information about the most recent re-balancing. The three
values in the vector are as follows: values in the vector are as follows:
* 1 = max # of particles per processor * 1 = max # of particles per processor
@ -380,22 +385,24 @@ As explained above, the imbalance factor is the ratio of the maximum
number of particles (or total weight) on any processor to the average number of particles (or total weight) on any processor to the average
number of particles (or total weight) per processor. number of particles (or total weight) per processor.
These quantities can be accessed by various :doc:`output commands <Howto_output>`. The scalar and vector values calculated These quantities can be accessed by various
by this fix are "intensive". :doc:`output commands <Howto_output>`. The scalar and vector values calculated
by this fix are "intensive."
No parameter of this fix can be used with the *start/stop* keywords of No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
---------- ----------
Restrictions Restrictions
"""""""""""" """"""""""""
For 2d simulations, the *z* style cannot be used. Nor can a "z" For 2d simulations, the *z* style cannot be used, nor can *z*
appear in *dimstr* for the *shift* style. appear in *dimstr* for the *shift* style.
Balancing through recursive bisectioning (\ *rcb* style) requires Balancing through recursive bisectioning (\ *rcb* style) requires
:doc:`comm_style tiled <comm_style>` :doc:`comm_style tiled <comm_style>`\ .
Related commands Related commands
"""""""""""""""" """"""""""""""""

View File

@ -125,13 +125,14 @@ LAMMPS atom type corresponds to. This is specified by the atomic
number of the element, e.g. 13 for Al. An atomic number must be number of the element, e.g. 13 for Al. An atomic number must be
specified for each of the ntypes LAMMPS atom types. Ntypes is specified for each of the ntypes LAMMPS atom types. Ntypes is
typically specified via the create_box command or in the data file typically specified via the create_box command or in the data file
read by the read_data command. If this keyword is not specified, then read by the read_data command.
this fix will send the LAMMPS atom type for each atom to the MDI
engine. If both the LAMMPS driver and the MDI engine are initialized If this keyword is specified, then this fix will send the MDI
so that atom type values are consistent in both codes, then the ">ELEMENTS" command to the engine, to insure the two codes are
*elements* keyword is not needed. Otherwise the keyword can be used consistent in their definition of atomic species. If this keyword is
to insure the two codes are consistent in their definition of atomic not specified, then this fix will send the MDI >TYPES command to the
species. engine. This is fine if both the LAMMPS driver and the MDI engine are
initialized so that the atom type values are consistent in both codes.
---------- ----------

View File

@ -10,7 +10,7 @@ Syntax
improper_coeff N args improper_coeff N args
* N = improper type (see asterisk form below) * N = numeric improper type (see asterisk form below), or type label
* args = coefficients for one or more improper types * args = coefficients for one or more improper types
Examples Examples
@ -22,27 +22,34 @@ Examples
improper_coeff * 80.2 -1 2 improper_coeff * 80.2 -1 2
improper_coeff *4 80.2 -1 2 improper_coeff *4 80.2 -1 2
labelmap improper 1 benzene
improper_coeff benzene 300.0 0.0
Description Description
""""""""""" """""""""""
Specify the improper force field coefficients for one or more improper Specify the improper force field coefficients for one or more improper
types. The number and meaning of the coefficients depends on the types. The number and meaning of the coefficients depends on the
improper style. Improper coefficients can also be set in the data improper style. Improper coefficients can also be set in the data file
file read by the :doc:`read_data <read_data>` command or in a restart read by the :doc:`read_data <read_data>` command or in a restart file.
file.
N can be specified in one of two ways. An explicit numeric value can :math:`N` can be specified in one of two ways. An explicit numeric
be used, as in the first example above. Or a wild-card asterisk can be value can be used, as in the first example above. Or :math:`N` can be a
used to set the coefficients for multiple improper types. This takes type label, which is an alphanumeric string defined by the
the form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of improper :doc:`labelmap <labelmap>` command or in a section of a data file read
types, then an asterisk with no numeric values means all types from 1 by the :doc:`read_data <read_data>` command.
to N. A leading asterisk means all types from 1 to n (inclusive). A
trailing asterisk means all types from n to N (inclusive). A middle For numeric values only, a wild-card asterisk can be used to set the
asterisk means all types from m to n (inclusive). coefficients for multiple improper types. This takes the form "\*" or
"\*n" or "n\*" or "m\*n". If :math:`N` = the number of improper types,
then an asterisk with no numeric values means all types from 1 to
:math:`N`. A leading asterisk means all types from 1 to n (inclusive).
A trailing asterisk means all types from n to :math:`N` (inclusive). A
middle asterisk means all types from m to n (inclusive).
Note that using an improper_coeff command can override a previous Note that using an improper_coeff command can override a previous
setting for the same improper type. For example, these commands set setting for the same improper type. For example, these commands set the
the coeffs for all improper types, then overwrite the coeffs for just coeffs for all improper types, then overwrite the coeffs for just
improper type 2: improper type 2:
.. code-block:: LAMMPS .. code-block:: LAMMPS
@ -53,9 +60,9 @@ improper type 2:
A line in a data file that specifies improper coefficients uses the A line in a data file that specifies improper coefficients uses the
exact same format as the arguments of the improper_coeff command in an exact same format as the arguments of the improper_coeff command in an
input script, except that wild-card asterisks should not be used since input script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example, coefficients for all :math:`N` types must be listed in the file. For
under the "Improper Coeffs" section of a data file, the line that example, under the "Improper Coeffs" section of a data file, the line
corresponds to the first example above would be listed as that corresponds to the first example above would be listed as
.. parsed-literal:: .. parsed-literal::

100
doc/src/labelmap.rst Normal file
View File

@ -0,0 +1,100 @@
.. index:: labelmap
labelmap command
==================
Syntax
""""""
.. code-block:: LAMMPS
labelmap option args
* *option* = *atom* or *bond* or *angle* or *dihedral* or *improper* or *clear* or *write*
.. parsed-literal::
*clear* = no args
*write* arg = filename
*atom* or *bond* or *angle* or *dihedral* or *improper*
args = list of one or more numeric-type/type-label pairs
Examples
""""""""
.. code-block:: LAMMPS
labelmap atom 3 carbon 4 'c3"' 5 "c1'" 6 "c#"
labelmap bond 1 carbonyl 2 nitrile 3 """ c1'-c2" """
labelmap atom $(label2type(atom,carbon)) C # change type label from 'carbon' to 'C'
labelmap clear
labelmap write mymap.include
Description
"""""""""""
.. versionadded:: TBD
Define alphanumeric type labels to associate with one or more numeric
atom, bond, angle, dihedral or improper types. A collection of type
labels for all atom types, bond types, etc. is stored as a label map.
The label map can also be defined by the :doc:`read_data <read_data>`
command when it reads these sections in a data file: Atom Type Labels,
Bond Type Labels, etc. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for a general discussion of how type
labels can be used.
Valid type labels can contain any alphanumeric character, but must not
start with a number, a '#', or a '*' character. They can contain other
standard ASCII characters such as angular or square brackets '<' and '>'
or '[' and ']', parenthesis '(' and ')', dash '-', underscore '_', plus
'+' and equals '=' signs and more. They must not contain blanks or any
other whitespace. Note that type labels must be put in single or double
quotation marks if they contain the '#' character or if they contain a
double (") or single quotation mark ('). If the label contains both
a single and a double quotation mark, then triple quotation (""") must
be used. When enclosing a type label with quotation marks, the
LAMMPS input parser may require adding leading or trailing blanks
around the type label so it can identify the enclosing quotation
marks. Those blanks will be removed when defining the label.
A *labelmap* command can only modify the label map for one type-kind
(atom types, bond types, etc). Any number of numeric-type/type-label
pairs may follow. If a type label already exists for the same numeric
type, it will be overwritten. Type labels must be unique; assigning the
same type label to multiple numeric types within the same type-kind is
not allowed. When reading and writing data files, it is required that
there is a label defined for *every* numeric type within a given
type-kind in order to write out the type label section for that
type-kind.
The *clear* option resets the labelmap and thus discards all previous
settings.
The *write* option takes a filename as argument and writes the current
label mappings to a file as labelmap commands, so the file can be copied
into a new LAMMPS input file or read in using the :doc:`include
<include>` command.
----------
Restrictions
""""""""""""
This command must come after the simulation box is defined by a
:doc:`read_data <read_data>`, :doc:`read_restart <read_restart>`, or
:doc:`create_box <create_box>` command.
Labelmaps are currently not supported when using the KOKKOS package.
Related commands
""""""""""""""""
:doc:`read_data <read_data>`, :doc:`write_data <write_data>`,
:doc:`molecule <molecule>`, :doc:`fix bond/react <fix_bond_react>`
Default
"""""""
none

View File

@ -10,7 +10,7 @@ Syntax
mass I value mass I value
* I = atom type (see asterisk form below) * I = atom type (see asterisk form below), or type label
* value = mass * value = mass
Examples Examples
@ -22,6 +22,9 @@ Examples
mass * 62.5 mass * 62.5
mass 2* 62.5 mass 2* 62.5
labelmap atom 1 C
mass C 12.01
Description Description
""""""""""" """""""""""
@ -30,12 +33,16 @@ values can also be set in the :doc:`read_data <read_data>` data file
using the "Masses" keyword. See the :doc:`units <units>` command for using the "Masses" keyword. See the :doc:`units <units>` command for
what mass units to use. what mass units to use.
The I index can be specified in one of two ways. An explicit numeric The I index can be specified in one of several ways. An explicit
value can be used, as in the first example above. Or a wild-card numeric value can be used, as in the first example above. Or I can be
asterisk can be used to set the mass for multiple atom types. This a type label, which is an alphanumeric string defined by the
takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of :doc:`labelmap <labelmap>` command or in a section of a data file read
atom types, then an asterisk with no numeric values means all types by the :doc:`read_data <read_data>` command, and which converts
from 1 to N. A leading asterisk means all types from 1 to n internally to a numeric type. Or a wild-card asterisk can be used to
set the mass for multiple atom types. This takes the form "\*" or
"\*n" or "n\*" or "m\*n", where m and n are numbers. If N = the
number of atom types, then an asterisk with no numeric values means
all types from 1 to N. A leading asterisk means all types from 1 to n
(inclusive). A trailing asterisk means all types from n to N (inclusive). A trailing asterisk means all types from n to N
(inclusive). A middle asterisk means all types from m to n (inclusive). A middle asterisk means all types from m to n
(inclusive). (inclusive).

View File

@ -14,7 +14,7 @@ Syntax
.. parsed-literal:: .. parsed-literal::
*engine* args = zero or more keyword arg pairs *engine* args = zero or more keyword/args pairs
keywords = *elements* keywords = *elements*
*elements* args = N_1 N_2 ... N_ntypes *elements* args = N_1 N_2 ... N_ntypes
N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types
@ -24,7 +24,7 @@ Syntax
keywords = *mdi* or *infile* or *extra* or *command* keywords = *mdi* or *infile* or *extra* or *command*
*mdi* value = args passed to MDI for driver to operate with plugins (required) *mdi* value = args passed to MDI for driver to operate with plugins (required)
*infile* value = filename the engine will read at start-up (optional) *infile* value = filename the engine will read at start-up (optional)
*extra* value = aditional command-line args to pass to engine library when loaded *extra* value = aditional command-line args to pass to engine library when loaded (optional)
*command* value = a LAMMPS input script command to execute (required) *command* value = a LAMMPS input script command to execute (required)
*connect* args = none *connect* args = none
*exit* args = none *exit* args = none
@ -289,11 +289,11 @@ are required. The -name setting can be anything you choose. MDI
drivers and engines can query their names to verify they are values drivers and engines can query their names to verify they are values
they expect. they expect.
The *infile* keyword is also required. It is the name of an input The *infile* keyword is optional. It sets the name of an input script
script which the engine will open and process. MDI will pass it as a which the engine will open and process. MDI will pass it as a
command-line argument to the library when it is launched. The file command-line argument to the library when it is launched. The file
typically contains settings that an MD or QM code will use for its typically contains settings that an MD or QM code will use for its
subsequent calculations. calculations.
The *extra* keyword is optional. It contains additional command-line The *extra* keyword is optional. It contains additional command-line
arguments which MDI will pass to the library when it is launched. arguments which MDI will pass to the library when it is launched.
@ -309,12 +309,12 @@ could specify a filename with multiple LAMMPS commands.
.. note:: .. note::
When the single *command* is complete, LAMMPS will send an MDI When the *command* is complete, LAMMPS will send an MDI EXIT
EXIT command to the plugin engine and the plugin will be removed. command to the plugin engine and the plugin will be removed. The
The "mdi plugin" command will then exit and the next command "mdi plugin" command will then exit and the next command (if any)
(if any) in the LAMMPS input script will be processed. A subsequent in the LAMMPS input script will be processed. A subsequent "mdi
"mdi plugin" command could then load the same library plugin or plugin" command could then load the same or a different MDI
a different one if desired. plugin if desired.
---------- ----------

View File

@ -70,8 +70,9 @@ and underscores.
A single template can contain multiple molecules, listed one per file. A single template can contain multiple molecules, listed one per file.
Some of the commands listed above currently use only the first Some of the commands listed above currently use only the first
molecule in the template, and will issue a warning if the template molecule in the template, and will issue a warning if the template
contains multiple molecules. The :doc:`atom_style template <atom_style>` command allows multiple-molecule templates contains multiple molecules. The :doc:`atom_style template
to define a system with more than one templated molecule. <atom_style>` command allows multiple-molecule templates to define a
system with more than one templated molecule.
Each filename can be followed by optional keywords which are applied Each filename can be followed by optional keywords which are applied
only to the molecule in the file as used in this template. This is to only to the molecule in the file as used in this template. This is to
@ -88,6 +89,12 @@ molecule file. E.g. if *toff* = 2, and the file uses atom types
individual values will be ignored if the molecule template does not individual values will be ignored if the molecule template does not
use that attribute (e.g. no bonds). use that attribute (e.g. no bonds).
.. note::
Offsets are **ignored** on lines using type labels, as the type
labels will determine the actual types directly depending on the
current :doc:`labelmap <labelmap>` settings.
The *scale* keyword scales the size of the molecule. This can be The *scale* keyword scales the size of the molecule. This can be
useful for modeling polydisperse granular rigid bodies. The scale useful for modeling polydisperse granular rigid bodies. The scale
factor is applied to each of these properties in the molecule file, if factor is applied to each of these properties in the molecule file, if
@ -118,14 +125,18 @@ The format of an individual molecule file is similar but
(not identical) to the data file read by the :doc:`read_data <read_data>` (not identical) to the data file read by the :doc:`read_data <read_data>`
commands, and is as follows. commands, and is as follows.
A molecule file has a header and a body. The header appears first. A molecule file has a header and a body. The header appears first. The
The first line of the header is always skipped; it typically contains first line of the header and thus of the molecule file is *always* skipped;
a description of the file. Then lines are read one at a time. Lines it typically contains a description of the file or a comment from the software
can have a trailing comment starting with '#' that is ignored. If the that created the file.
line is blank (only white-space after comment is deleted), it is
Then lines are read one line at a time. Lines can have a trailing
comment starting with '#' that is ignored. There *must* be at least one
blank between any valid content and the comment. If the line is blank
(i.e. contains only white-space after comments are deleted), it is
skipped. If the line contains a header keyword, the corresponding skipped. If the line contains a header keyword, the corresponding
value(s) is read from the line. If it does not contain a header value(s) is/are read from the line. A line that is *not* blank and does
keyword, the line begins the body of the file. *not* contains a header keyword begins the body of the file.
The body of the file contains zero or more sections. The first line The body of the file contains zero or more sections. The first line
of a section has only a keyword. The next line is skipped. The of a section has only a keyword. The next line is skipped. The
@ -173,31 +184,43 @@ These are the allowed section keywords for the body of the file.
* *Special Bond Counts, Special Bonds* = special neighbor info * *Special Bond Counts, Special Bonds* = special neighbor info
* *Shake Flags, Shake Atoms, Shake Bond Types* = SHAKE info * *Shake Flags, Shake Atoms, Shake Bond Types* = SHAKE info
For the Types, Bonds, Angles, Dihedrals, and Impropers sections, each
atom/bond/angle/etc type can be specified either as a number (numeric
type) or as an alphanumeric type label. The latter is only allowed if
type labels have been defined, either by the :doc:`labelmap
<labelmap>` command or in data files read by the :doc:`read_data
<read_data>` command which have sections for Atom Type Labels, Bond
Type Labels, Angle Type Labels, etc. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
When using type labels, any values specified as *offset* are ignored.
If a Bonds section is specified then the Special Bond Counts and If a Bonds section is specified then the Special Bond Counts and
Special Bonds sections can also be used, if desired, to explicitly Special Bonds sections can also be used, if desired, to explicitly
list the 1-2, 1-3, 1-4 neighbors within the molecule topology (see list the 1-2, 1-3, 1-4 neighbors within the molecule topology (see
details below). This is optional since if these sections are not details below). This is optional since if these sections are not
included, LAMMPS will auto-generate this information. Note that included, LAMMPS will auto-generate this information. Note that
LAMMPS uses this info to properly exclude or weight bonded pairwise LAMMPS uses this info to properly exclude or weight bonded pairwise
interactions between bonded atoms. See the interactions between bonded atoms. See the :doc:`special_bonds
:doc:`special_bonds <special_bonds>` command for more details. One <special_bonds>` command for more details. One reason to list the
reason to list the special bond info explicitly is for the special bond info explicitly is for the :doc:`thermalized Drude
:doc:`thermalized Drude oscillator model <Howto_drude>` which treats the oscillator model <Howto_drude>` which treats the bonds between nuclear
bonds between nuclear cores and Drude electrons in a different manner. cores and Drude electrons in a different manner.
.. note:: .. note::
Whether a section is required depends on how the molecule Whether a section is required depends on how the molecule template
template is used by other LAMMPS commands. For example, to add a is used by other LAMMPS commands. For example, to add a molecule
molecule via the :doc:`fix deposit <fix_deposit>` command, the Coords via the :doc:`fix deposit <fix_deposit>` command, the Coords and
and Types sections are required. To add a rigid body via the :doc:`fix pour <fix_pour>` command, the Bonds (Angles, etc) sections are not Types sections are required. To add a rigid body via the :doc:`fix
pour <fix_pour>` command, the Bonds (Angles, etc) sections are not
required, since the molecule will be treated as a rigid body. Some required, since the molecule will be treated as a rigid body. Some
sections are optional. For example, the :doc:`fix pour <fix_pour>` sections are optional. For example, the :doc:`fix pour <fix_pour>`
command can be used to add "molecules" which are clusters of command can be used to add "molecules" which are clusters of
finite-size granular particles. If the Diameters section is not finite-size granular particles. If the Diameters section is not
specified, each particle in the molecule will have a default diameter specified, each particle in the molecule will have a default
of 1.0. See the doc pages for LAMMPS commands that use molecule diameter of 1.0. See the doc pages for LAMMPS commands that use
templates for more details. molecule templates for more details.
Each section is listed below in alphabetic order. The format of each Each section is listed below in alphabetic order. The format of each
section is described including the number of lines it must contain and section is described including the number of lines it must contain and
@ -222,7 +245,7 @@ order.
* one line per atom * one line per atom
* line syntax: ID type * line syntax: ID type
* type = atom type of atom * type = atom type of atom (1-Natomtype, or type label)
---------- ----------
@ -289,7 +312,7 @@ included, the default mass for each atom is derived from its volume
* one line per bond * one line per bond
* line syntax: ID type atom1 atom2 * line syntax: ID type atom1 atom2
* type = bond type (1-Nbondtype) * type = bond type (1-Nbondtype, or type label)
* atom1,atom2 = IDs of atoms in bond * atom1,atom2 = IDs of atoms in bond
The IDs for the two atoms in each bond should be values The IDs for the two atoms in each bond should be values
@ -301,7 +324,7 @@ from 1 to Natoms, where Natoms = # of atoms in the molecule.
* one line per angle * one line per angle
* line syntax: ID type atom1 atom2 atom3 * line syntax: ID type atom1 atom2 atom3
* type = angle type (1-Nangletype) * type = angle type (1-Nangletype, or type label)
* atom1,atom2,atom3 = IDs of atoms in angle * atom1,atom2,atom3 = IDs of atoms in angle
The IDs for the three atoms in each angle should be values from 1 to The IDs for the three atoms in each angle should be values from 1 to
@ -315,7 +338,7 @@ which the angle is computed) is the atom2 in the list.
* one line per dihedral * one line per dihedral
* line syntax: ID type atom1 atom2 atom3 atom4 * line syntax: ID type atom1 atom2 atom3 atom4
* type = dihedral type (1-Ndihedraltype) * type = dihedral type (1-Ndihedraltype, or type label)
* atom1,atom2,atom3,atom4 = IDs of atoms in dihedral * atom1,atom2,atom3,atom4 = IDs of atoms in dihedral
The IDs for the four atoms in each dihedral should be values from 1 to The IDs for the four atoms in each dihedral should be values from 1 to
@ -328,7 +351,7 @@ ordered linearly within the dihedral.
* one line per improper * one line per improper
* line syntax: ID type atom1 atom2 atom3 atom4 * line syntax: ID type atom1 atom2 atom3 atom4
* type = improper type (1-Nimpropertype) * type = improper type (1-Nimpropertype, or type label)
* atom1,atom2,atom3,atom4 = IDs of atoms in improper * atom1,atom2,atom3,atom4 = IDs of atoms in improper
The IDs for the four atoms in each improper should be values from 1 to The IDs for the four atoms in each improper should be values from 1 to
@ -447,11 +470,15 @@ This section is only needed when molecules created using the template
will be constrained by SHAKE via the "fix shake" command. The other will be constrained by SHAKE via the "fix shake" command. The other
two Shake sections must also appear in the file. two Shake sections must also appear in the file.
The a,b,c values are bond types (from 1 to Nbondtypes) for all bonds The a,b,c values are bond types for all bonds in the SHAKE cluster that
in the SHAKE cluster that this atom belongs to. The number of values this atom belongs to. Bond types may be either numbers (from 1 to Nbondtypes)
that must appear is determined by the shake flag for the atom (see the or bond type labels as defined by the :doc:`labelmap <labelmap>` command
Shake Flags section above). All atoms in a particular cluster should or a "Bond Type Labels" section of a data file.
list their a,b,c values identically.
The number of values that must appear is determined by the shake flag
for the atom (see the Shake Flags section above). All atoms in a
particular cluster should list their a,b,c values identically.
If flag = 0, no a,b,c values are listed on the line, just the If flag = 0, no a,b,c values are listed on the line, just the
(ignored) ID. (ignored) ID.
@ -459,8 +486,9 @@ If flag = 0, no a,b,c values are listed on the line, just the
If flag = 1, a,b,c are listed, where a = bondtype of the bond between If flag = 1, a,b,c are listed, where a = bondtype of the bond between
the central atom and the first non-central atom (value b in the Shake the central atom and the first non-central atom (value b in the Shake
Atoms section), b = bondtype of the bond between the central atom and Atoms section), b = bondtype of the bond between the central atom and
the second non-central atom (value c in the Shake Atoms section), and c = the second non-central atom (value c in the Shake Atoms section), and c
the angle type (1 to Nangletypes) of the angle between the 3 atoms. = the angle type (1 to Nangletypes, or angle type label) of the angle
between the 3 atoms.
If flag = 2, only a is listed, where a = bondtype of the bond between If flag = 2, only a is listed, where a = bondtype of the bond between
the 2 atoms in the cluster. the 2 atoms in the cluster.
@ -473,9 +501,9 @@ and the second non-central atom (value c in the Shake Atoms section).
If flag = 4, a,b,c are listed, where a = bondtype of the bond between If flag = 4, a,b,c are listed, where a = bondtype of the bond between
the central atom and the first non-central atom (value b in the Shake the central atom and the first non-central atom (value b in the Shake
Atoms section), b = bondtype of the bond between the central atom and Atoms section), b = bondtype of the bond between the central atom and
the second non-central atom (value c in the Shake Atoms section), and c = the second non-central atom (value c in the Shake Atoms section), and c
bondtype of the bond between the central atom and the third non-central = bondtype of the bond between the central atom and the third
atom (value d in the Shake Atoms section). non-central atom (value d in the Shake Atoms section).
See the :doc:`fix shake <fix_shake>` page for a further description See the :doc:`fix shake <fix_shake>` page for a further description
of SHAKE clusters. of SHAKE clusters.

View File

@ -10,7 +10,7 @@ Syntax
pair_coeff I J args pair_coeff I J args
* I,J = atom types (see asterisk form below) * I,J = numeric atom types (see asterisk form below), or type labels
* args = coefficients for one or more pairs of atom types * args = coefficients for one or more pairs of atom types
Examples Examples
@ -26,6 +26,10 @@ Examples
pair_coeff * 3 morse.table ENTRY1 pair_coeff * 3 morse.table ENTRY1
pair_coeff 1 2 lj/cut 1.0 1.0 2.5 # (for pair_style hybrid) pair_coeff 1 2 lj/cut 1.0 1.0 2.5 # (for pair_style hybrid)
labelmap atom 1 C
labelmap atom 2 H
pair_coeff C H 1.0 1.0 2.5
Description Description
""""""""""" """""""""""
@ -34,20 +38,27 @@ atom types. The number and meaning of the coefficients depends on the
pair style. Pair coefficients can also be set in the data file read pair style. Pair coefficients can also be set in the data file read
by the :doc:`read_data <read_data>` command or in a restart file. by the :doc:`read_data <read_data>` command or in a restart file.
I and J can be specified in one of two ways. Explicit numeric values I and J can be specified in one of several ways. Explicit numeric
can be used for each, as in the first example above. I <= J is values can be used for each, as in the first example above. Or, one
required. LAMMPS sets the coefficients for the symmetric J,I or both of the types in the I,J pair can be a type label, which is an
interaction to the same values. alphanumeric string defined by the :doc:`labelmap <labelmap>` command
or in a section of a data file read by the :doc:`read_data
<read_data>` command, and which converts internally to a numeric type.
Internally, LAMMPS will set coefficients for the symmetric J,I
interaction to the same values as the I,J interaction.
A wildcard asterisk can be used in place of or in conjunction with the For numeric values only, a wildcard asterisk can be used in place of or
I,J arguments to set the coefficients for multiple pairs of atom in conjunction with the I,J arguments to set the coefficients for
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = the multiple pairs of atom types. This takes the form "\*" or "\*n" or
number of atom types, then an asterisk with no numeric values means all "n\*" or "m\*n". If :math:`N` is the number of atom types, then an
types from 1 to N. A leading asterisk means all types from 1 to n asterisk with no numeric values means all types from 1 to :math:`N`. A
(inclusive). A trailing asterisk means all types from n to N leading asterisk means all types from 1 to n (inclusive). A trailing
(inclusive). A middle asterisk means all types from m to n asterisk means all types from n to :math:`N` (inclusive). A middle
(inclusive). Note that only type pairs with I <= J are considered; if asterisk means all types from m to n (inclusive). For the asterisk
asterisks imply type pairs where J < I, they are ignored. syntax, only type pairs with I <= J are considered; if asterisks imply
type pairs where J < I, they are ignored. Again internally, LAMMPS will
set the coefficients for the symmetric J,I interactions to the same
values as the I <= J interactions.
Note that a pair_coeff command can override a previous setting for the Note that a pair_coeff command can override a previous setting for the
same I,J pair. For example, these commands set the coeffs for all I,J same I,J pair. For example, these commands set the coeffs for all I,J
@ -63,11 +74,11 @@ same format as the arguments of the pair_coeff command in an input
script, with the exception of the I,J type arguments. In each line of script, with the exception of the I,J type arguments. In each line of
the "Pair Coeffs" section of a data file, only a single type I is the "Pair Coeffs" section of a data file, only a single type I is
specified, which sets the coefficients for type I interacting with specified, which sets the coefficients for type I interacting with
type I. This is because the section has exactly N lines, where N = type I. This is because the section has exactly :math:`N` lines, where
the number of atom types. For this reason, the wild-card asterisk :math:`N` is the number of atom types. For this reason, the wild-card
should also not be used as part of the I argument. Thus in a data asterisk should also not be used as part of the I argument. Thus in a
file, the line corresponding to the first example above would be listed data file, the line corresponding to the first example above would be
as listed as
.. parsed-literal:: .. parsed-literal::

View File

@ -249,7 +249,7 @@ Style *lj/long/dipole/long* has the same functionality as style
*lj/cut/dipole/long*, except it also has an option to compute 12/6 *lj/cut/dipole/long*, except it also has an option to compute 12/6
Lennard-Jones interactions for use with a long-range dispersion kspace Lennard-Jones interactions for use with a long-range dispersion kspace
style. This is done by setting its *flag_lj* argument to *long*. For style. This is done by setting its *flag_lj* argument to *long*. For
long-range LJ interactions, the doc:`kspace_style ewald/disp long-range LJ interactions, the :doc:`kspace_style ewald/disp
<kspace_style>` command must be used. <kspace_style>` command must be used.
---------- ----------

View File

@ -33,7 +33,8 @@ Style *harmonic/cut* computes pairwise repulsive-only harmonic interactions with
E = k (r_c - r)^2 \qquad r < r_c E = k (r_c - r)^2 \qquad r < r_c
:math:`r_c` is the cutoff. where :math:`r_c` is the cutoff. Note that the usual 1/2 factor is
included in :math:`k`.
The following coefficients must be defined for each pair of atoms The following coefficients must be defined for each pair of atoms
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
@ -41,7 +42,7 @@ above, or in the data file or restart files read by the
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>` :doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
commands: commands:
* :math:`k` (energy units) * :math:`k` (energy/distance^2 units)
* :math:`r_c` (distance units) * :math:`r_c` (distance units)
---------- ----------

View File

@ -1,68 +1,153 @@
.. index:: pair_style mesocnt .. index:: pair_style mesocnt
.. index:: pair_style mesocnt/viscous
pair_style mesocnt command pair_style mesocnt command
========================== ==========================
pair_style mesocnt/viscous command
==================================
Syntax Syntax
"""""" """"""
.. code-block:: LAMMPS .. code-block:: LAMMPS
pair_style mesocnt pair_style style neigh_cutoff mode neigh_mode
* style = *mesocnt* or *mesocnt/viscous*
* neigh_cutoff = neighbor list cutoff (distance units)
* mode = *chain* or *segment* (optional)
* neigh_mode = *id* or *topology* (optional)
Examples Examples
"""""""" """"""""
.. code-block:: LAMMPS .. code-block:: LAMMPS
pair_style mesocnt pair_style mesocnt 30.0
pair_coeff * * 10_10.cnt pair_coeff * * C_10_10.mesocnt 2
pair_style mesocnt/viscous 60.0 chain topology
pair_coeff * * C_10_10.mesocnt 0.001 20.0 0.2 2 4
Description Description
""""""""""" """""""""""
Style *mesocnt* implements a mesoscopic potential Style *mesocnt* implements a mesoscopic potential for the interaction
for the interaction of carbon nanotubes (CNTs). In this potential, of carbon nanotubes (CNTs), or other quasi-1D objects such as other
CNTs are modelled as chains of cylindrical segments in which kinds of nanotubes or nanowires. In this potential, CNTs are modelled
each infinitesimal surface element interacts with all other as chains of cylindrical segments in which each infinitesimal surface
CNT surface elements with the Lennard-Jones (LJ) term adopted from element interacts with all other CNT surface elements with the
the :doc:`airebo <pair_airebo>` style. The interaction energy Lennard-Jones (LJ) term adopted from the :doc:`airebo <pair_airebo>`
is then computed by integrating over the surfaces of all interacting style. The interaction energy is then computed by integrating over the
CNTs. surfaces of all interacting CNTs.
The potential is based on interactions between one cylindrical In LAMMPS, cylindrical segments are represented by bonds. Each segment
segment and infinitely or semi-infinitely long CNTs as described is defined by its two end points ("nodes") which correspond to atoms
in :ref:`(Volkov1) <Volkov1>`. Chains of segments are in LAMMPS. For the exact functional form of the potential and
converted to these (semi-)infinite CNTs bases on an approximate implementation details, the reader is referred to the original papers
chain approach outlined in :ref:`(Volkov2) <Volkov2>`. :ref:`(Volkov1) <Volkov1>` and :ref:`(Volkov2) <Volkov2>`.
This allows to simplify the computation of the interactions
significantly and reduces the computational times to the
same order of magnitude as for regular bead spring models
where beads interact with the standard :doc:`pair_lj/cut <pair_lj>`
potential.
In LAMMPS, cylindrical segments are represented by bonds. Each .. versionchanged:: TBD
segment is defined by its two end points ("nodes") which correspond
to atoms in LAMMPS. For the exact functional form of the potential
and implementation details, the reader is referred to the
original papers :ref:`(Volkov1) <Volkov1>` and
:ref:`(Volkov2) <Volkov2>`.
The potential requires tabulated data provided in a single ASCII The potential supports two modes, *segment* and *chain*. By default,
text file specified in the :doc:`pair_coeff <pair_coeff>` command. *chain* mode is enabled. In *segment* mode, interactions are
The first line of the file provides a time stamp and pair-wise between all neighboring segments based on a segment-segment
general information. The second line lists four integers giving approach (keyword *segment* in pair_style command). In *chain* mode,
the number of data points provided in the subsequent four interactions are calculated between each segment and infinitely or
data tables. The third line lists four floating point numbers: semi-infinitely long CNTs as described in :ref:`(Volkov1) <Volkov1>`.
the CNT radius R, the LJ parameter sigma and two numerical Chains of segments are converted to these (semi-)infinite CNTs bases
parameters delta1 and delta2. These four parameters are given on an approximate chain approach outlined in :ref:`(Volkov2)
in Angstroms. This is followed by four data tables each separated <Volkov2>`. Hence, interactions are calculated on a segment-chain
by a single empty line. The first two tables have two columns basis (keyword *chain* in the pair_style command). Using *chain* mode
and list the parameters uInfParallel and Gamma respectively. allows to simplify the computation of the interactions significantly
The last two tables have three columns giving data on a quadratic and reduces the computational times to the same order of magnitude as
array and list the parameters Phi and uSemiParallel respectively. for regular bead spring models where beads interact with the standard
uInfParallel and uSemiParallel are given in eV/Angstrom, Phi is :doc:`pair_lj/cut <pair_lj>` potential. However, this method is only
given in eV and Gamma is unitless. valid when the curvature of the CNTs in the system is small. When
CNTs are buckled (see :doc:`angle_mesocnt <angle_mesocnt>`), local
curvature can be very high and the pair_style automatically switches
to *segment* mode for interactions involving buckled CNTs.
The potential further implements two different neighbor list
construction modes. Mode *id* uses atom and mol IDs to construct
neighbor lists while *topology* modes uses only the bond topology of
the system. While *id* mode requires bonded atoms to have consecutive
LAMMPS atom IDs and atoms in different CNTs to have different LAMMPS
molecule IDs, *topology* mode has no such requirement. Using *id* mode
is faster and is enabled by default.
.. note::
Neighbor *id* mode requires all CNTs in the system to have distinct
LAMMPS molecule IDs and bonded atoms to have consecutive LAMMPS atom
IDs. If this is not possible (e.g. in simulations of CNT rings),
*topology* mode needs to be enabled in the pair_style command.
.. versionadded:: TBD
In addition to the LJ interactions described above, style
*mesocnt/viscous* explicitly models friction between neighboring
segments. Friction forces are a function of the relative velocity
between a segment and its neighboring approximate chain (even in
*segment* mode) and only act along the axes of the interacting segment
and chain. In this potential, friction forces acting per unit length
of a nanotube segment are modelled as a shifted logistic function:
.. math::
F^{\text{FRICTION}}(v) / L = \frac{F^{\text{max}}}{1 +
\exp(-k(v-v_0))} - \frac{F^{\text{max}}}{1 + \exp(k v_0)}
----------
In the pair_style command, the modes described above can be toggled
using the *segment* or *chain* keywords. The neighbor list cutoff
defines the cutoff within which atoms are included in the neighbor
list for constructing neighboring CNT chains. This is different from
the potential cutoff, which is directly calculated from parameters
specified in the potential file. We recommend using a neighbor list
cutoff of at least 3 times the maximum segment length used in the
simulation to ensure proper neighbor chain construction.
.. note::
CNT ends are treated differently by all *mesocnt* styles. Atoms on
CNT ends need to be assigned different LAMMPS atom types than atoms
not on CNT ends.
Style *mesocnt* requires tabulated data provided in a single ASCII
text file, as well as a list of integers corresponding to all LAMMPS
atom types representing CNT ends:
* filename
* :math:`N` CNT end atom types
For example, if your LAMMPS simulation of (10, 10) nanotubes has 4
atom types where atom types 1 and 3 are assigned to 'inner' nodes and
atom types 2 and 4 are assigned to CNT end nodes, the pair_coeff
command would be:
.. code-block:: LAMMPS
pair_coeff * * C_10_10.mesocnt 2 4
Likewise, style *mesocnt/viscous* also requires the same information
as style *mesocnt*, with the addition of 3 parameters for the viscous
friction forces as listed above:
* filename
* :math:`F^{\text{max}}`
* :math:`k`
* :math:`v_0`
* :math:`N` CNT end atom types
Using the same example system as with style *mesocnt* with the
addition of friction, the pair_coeff command is:
.. code-block:: LAMMPS
pair_coeff * * C_10_10.mesocnt 0.03 20.0 0.20 2 4
Potential files for CNTs can be readily generated using the freely Potential files for CNTs can be readily generated using the freely
available code provided on available code provided on
@ -71,45 +156,51 @@ available code provided on
https://github.com/phankl/cntpot https://github.com/phankl/cntpot
Using the same approach, it should also be possible to Using the same approach, it should also be possible to generate
generate potential files for other 1D systems such as potential files for other 1D systems mentioned above.
boron nitride nanotubes.
.. note:: .. note::
Because of their size, *mesocnt* style potential files Because of their size, *mesocnt* style potential files are not
are not bundled with LAMMPS. When compiling LAMMPS from bundled with LAMMPS. When compiling LAMMPS from source code, the
source code, the file ``C_10_10.mesocnt`` should be downloaded file ``C_10_10.mesocnt`` should be downloaded separately from
transparently from `https://download.lammps.org/potentials/C_10_10.mesocnt <https://download.lammps.org/potentials/C_10_10.mesocnt>`_ `https://download.lammps.org/potentials/C_10_10.mesocnt
This file has as number of data points per table 1001. <https://download.lammps.org/potentials/C_10_10.mesocnt>`_
This is sufficient for NVT simulations. For proper energy
conservation, we recommend using a potential file where
the resolution for Phi is at least 2001 data points.
.. note:: The first line of the potential file provides a time stamp and
general information. The second line lists four integers giving the
number of data points provided in the subsequent four data
tables. The third line lists four floating point numbers: the CNT
radius R, the LJ parameter sigma and two numerical parameters
delta1 and delta2. These four parameters are given in
Angstroms. This is followed by four data tables each separated by a
single empty line. The first two tables have two columns and list
the parameters uInfParallel and Gamma respectively. The last two
tables have three columns giving data on a quadratic array and list
the parameters Phi and uSemiParallel respectively. uInfParallel
and uSemiParallel are given in eV/Angstrom, Phi is given in eV and
Gamma is unitless.
The *mesocnt* style requires CNTs to be represented If a simulation produces many warnings about segment-chain
as a chain of atoms connected by bonds. Atoms need interactions falling outside the interpolation range, we recommend
to be numbered consecutively within one chain. generating a potential file with lower values of delta1 and delta2.
Atoms belonging to different CNTs need to be assigned
different molecule IDs.
---------- ----------
Mixing, shift, table, tail correction, restart, rRESPA info Mixing, shift, table, tail correction, restart, rRESPA info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This pair style does not support mixing. These pair styles does not support mixing.
This pair style does not support the :doc:`pair_modify <pair_modify>` These pair styles does not support the :doc:`pair_modify
shift, table, and tail options. <pair_modify>` shift, table, and tail options.
The *mesocnt* pair style do not write their information to :doc:`binary restart files <restart>`, These pair styles do not write their information to :doc:`binary
since it is stored in tabulated potential files. restart files <restart>`, since it is stored in tabulated potential
Thus, you need to re-specify the pair_style and pair_coeff commands in files. Thus, you need to re-specify the pair_style and pair_coeff
an input script that reads a restart file. commands in an input script that reads a restart file.
This pair style can only be used via the *pair* keyword of the These pair styles can only be used via the *pair* keyword of the
:doc:`run_style respa <run_style>` command. They do not support the :doc:`run_style respa <run_style>` command. They do not support the
*inner*, *middle*, *outer* keywords. *inner*, *middle*, *outer* keywords.
@ -118,12 +209,21 @@ This pair style can only be used via the *pair* keyword of the
Restrictions Restrictions
"""""""""""" """"""""""""
This style is part of the MESONT package. It is only These styles are part of the MESONT package. They are only enabled if
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info. LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
This pair potential requires the :doc:`newton <newton>` setting to be These pair styles require the :doc:`newton <newton>` setting to be
"on" for pair interactions. "on" for pair interactions.
These pair styles require all 3 :doc:`special_bonds lj
<special_bonds>` settings to be non-zero for proper neighbor list
construction.
Pair style *mesocnt/viscous* requires you to use the :doc:`comm_modify
vel yes <comm_modify>` command so that velocities are stored by ghost
atoms.
Related commands Related commands
"""""""""""""""" """"""""""""""""
@ -132,7 +232,7 @@ Related commands
Default Default
""""""" """""""
none mode = chain, neigh_mode = id
---------- ----------

View File

@ -81,12 +81,12 @@ only the global settings in that command are reset. Any previous
doc:`pair_coeff <pair_coeff>` and :doc:`pair_modify <pair_modify>` doc:`pair_coeff <pair_coeff>` and :doc:`pair_modify <pair_modify>`
command settings are preserved. The only exception is that if the command settings are preserved. The only exception is that if the
global cutoff in the pair_style command is changed, it will override global cutoff in the pair_style command is changed, it will override
the corresponding cutoff in any of the previous doc:`pair_modify the corresponding cutoff in any of the previous :doc:`pair_modify
<pair_coeff>` commands. <pair_coeff>` commands.
Two pair styles which do not follow this rule are the pair_style Two pair styles which do not follow this rule are the pair_style
*table* and *hybrid* commands. A new pair_style command for these *table* and *hybrid* commands. A new pair_style command for these
styles will wipe out all previously specified doc:`pair_coeff styles will wipe out all previously specified :doc:`pair_coeff
<pair_coeff>` and :doc:`pair_modify <pair_modify>` settings, including <pair_coeff>` and :doc:`pair_modify <pair_modify>` settings, including
for the sub-styles of the *hybrid* command. for the sub-styles of the *hybrid* command.
@ -278,7 +278,8 @@ accelerated styles exist.
* :doc:`meam <pair_meam>` - modified embedded atom method (MEAM) in C * :doc:`meam <pair_meam>` - modified embedded atom method (MEAM) in C
* :doc:`meam/spline <pair_meam_spline>` - splined version of MEAM * :doc:`meam/spline <pair_meam_spline>` - splined version of MEAM
* :doc:`meam/sw/spline <pair_meam_sw_spline>` - splined version of MEAM with a Stillinger-Weber term * :doc:`meam/sw/spline <pair_meam_sw_spline>` - splined version of MEAM with a Stillinger-Weber term
* :doc:`mesocnt <pair_mesocnt>` - mesoscale model for (carbon) nanotubes * :doc:`mesocnt <pair_mesocnt>` - mesoscopic vdW potential for (carbon) nanotubes
* :doc:`mesocnt/viscous <pair_mesocnt>` - mesoscopic vdW potential for (carbon) nanotubes with friction
* :doc:`mgpt <pair_mgpt>` - simplified model generalized pseudopotential theory (MGPT) potential * :doc:`mgpt <pair_mgpt>` - simplified model generalized pseudopotential theory (MGPT) potential
* :doc:`mesont/tpm <pair_mesont_tpm>` - nanotubes mesoscopic force field * :doc:`mesont/tpm <pair_mesont_tpm>` - nanotubes mesoscopic force field
* :doc:`mie/cut <pair_mie>` - Mie potential * :doc:`mie/cut <pair_mie>` - Mie potential

View File

@ -164,6 +164,12 @@ other types already exist. All five offset values must be specified,
but individual values will be ignored if the data file does not use but individual values will be ignored if the data file does not use
that attribute (e.g. no bonds). that attribute (e.g. no bonds).
.. note::
Offsets are **ignored** on lines using type labels, as the type
labels will determine the actual types directly depending on the
current :doc:`labelmap <labelmap>` settings.
The *shift* keyword can be used to specify an (Sx, Sy, Sz) The *shift* keyword can be used to specify an (Sx, Sy, Sz)
displacement applied to the coordinates of each atom. Sz must be 0.0 displacement applied to the coordinates of each atom. Sz must be 0.0
for a 2d simulation. This is a mechanism for adding structured for a 2d simulation. This is a mechanism for adding structured
@ -227,22 +233,27 @@ The file will be read line by line, but there is a limit of 254
characters per line and characters beyond that limit will be ignored. characters per line and characters beyond that limit will be ignored.
A data file has a header and a body. The header appears first. The A data file has a header and a body. The header appears first. The
first line of the header is always skipped; it typically contains a first line of the header and thus of the data file is *always* skipped;
description of the file. Then lines are read one at a time. Lines it typically contains a description of the file or a comment from the
can have a trailing comment starting with '#' that is ignored. If the software that created the file.
line is blank (only white-space after comment is deleted), it is
skipped. If the line contains a header keyword, the corresponding
value(s) is read from the line. If it does not contain a header
keyword, the line begins the body of the file.
The body of the file contains zero or more sections. The first line Then lines are read one line at a time. Lines can have a trailing
of a section has only a keyword. This line can have a trailing comment starting with '#' that is ignored. There *must* be at least one
comment starting with '#' that is either ignored or can be used to blank between any valid content and the comment. If a line is blank
check for a style match, as described below. The next line is (i.e. contains only white-space after comments are deleted), it is
skipped. The remaining lines of the section contain values. The skipped. If the line contains a header keyword, the corresponding
number of lines depends on the section keyword as described below. value(s) is/are read from the line. A line that is *not* blank and does
Zero or more blank lines can be used between sections. Sections can *not* contain a header keyword begins the body of the file.
appear in any order, with a few exceptions as noted below.
The body of the file contains zero or more sections. The first line of
a section has only a keyword. This line can have a trailing comment
starting with '#' that is either ignored or can be used to check for a
style match, as described below. There must be a blank between the
keyword and any comment. The *next* line is *always* skipped. The
remaining lines of the section contain values. The number of lines
depends on the section keyword as described below. Zero or more blank
lines can be used *between* sections. Sections can appear in any order,
with a few exceptions as noted below.
The keyword *fix* can be used one or more times. Each usage specifies The keyword *fix* can be used one or more times. Each usage specifies
a fix that will be used to process a specific portion of the data a fix that will be used to process a specific portion of the data
@ -477,6 +488,7 @@ These are the section keywords for the body of the file.
* *Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles, Bodies* = atom-property sections * *Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles, Bodies* = atom-property sections
* *Bonds, Angles, Dihedrals, Impropers* = molecular topology sections * *Bonds, Angles, Dihedrals, Impropers* = molecular topology sections
* *Atom Type Labels, Bond Type Labels, Angle Type Labels, Dihedral Type Labels, Improper Type Labels* = type label maps
* *Pair Coeffs, PairIJ Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, Improper Coeffs* = force field sections * *Pair Coeffs, PairIJ Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, Improper Coeffs* = force field sections
* *BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs, EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs, BondBond13 Coeffs, AngleAngle Coeffs* = class 2 force field sections * *BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs, EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs, BondBond13 Coeffs, AngleAngle Coeffs* = class 2 force field sections
@ -503,7 +515,8 @@ section is described including the number of lines it must contain and
rules (if any) for where it can appear in the data file. rules (if any) for where it can appear in the data file.
Any individual line in the various sections can have a trailing Any individual line in the various sections can have a trailing
comment starting with "#" for annotation purposes. E.g. in the comment starting with "#" for annotation purposes. There must be at least
one blank between valid content and the comment. E.g. in the
Atoms section: Atoms section:
.. parsed-literal:: .. parsed-literal::
@ -536,6 +549,26 @@ input script.
---------- ----------
*Angle Type Labels* section:
* one line per angle type
* line syntax: ID label
.. parsed-literal::
ID = angle type (1-N)
label = alphanumeric type label
Define alphanumeric type labels for each numeric angle type. These
can be used in the Angles section in place of a numeric type, but only
if the this section appears before the Angles section.
See the :doc:`Howto type labels <Howto_type_labels>` doc page for the
allowed syntax of type labels and a general discussion of how type
labels can be used.
----------
*AngleAngle Coeffs* section: *AngleAngle Coeffs* section:
* one line per improper type * one line per improper type
@ -568,7 +601,7 @@ input script.
.. parsed-literal:: .. parsed-literal::
ID = number of angle (1-Nangles) ID = number of angle (1-Nangles)
type = angle type (1-Nangletype) type = angle type (1-Nangletype, or type label)
atom1,atom2,atom3 = IDs of 1st,2nd,3rd atom in angle atom1,atom2,atom3 = IDs of 1st,2nd,3rd atom in angle
example: example:
@ -580,8 +613,15 @@ example:
The 3 atoms are ordered linearly within the angle. Thus the central The 3 atoms are ordered linearly within the angle. Thus the central
atom (around which the angle is computed) is the atom2 in the list. atom (around which the angle is computed) is the atom2 in the list.
E.g. H,O,H for a water molecule. The *Angles* section must appear E.g. H,O,H for a water molecule. The *Angles* section must appear
after the *Atoms* section. All values in this section must be after the *Atoms* section.
integers (1, not 1.0).
All values in this section must be integers (1, not 1.0). However,
the type can be a numeric value or an alphanumeric label. The latter
is only allowed if the type label has been defined by the
:doc:`labelmap <labelmap>` command or an Angle Type Labels section
earlier in the data file. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
---------- ----------
@ -597,6 +637,26 @@ integers (1, not 1.0).
---------- ----------
*Atom Type Labels* section:
* one line per atom type
* line syntax: ID label
.. parsed-literal::
ID = numeric atom type (1-N)
label = alphanumeric type label
Define alphanumeric type labels for each numeric atom type. These
can be used in the Atoms section in place of a numeric type, but only
if the Atom Type Labels section appears before the Atoms section.
See the :doc:`Howto type labels <Howto_type_labels>` doc page for the
allowed syntax of type labels and a general discussion of how type
labels can be used.
----------
*Atoms* section: *Atoms* section:
* one line per atom * one line per atom
@ -670,7 +730,7 @@ of analysis.
The per-atom values have these meanings and units, listed alphabetically: The per-atom values have these meanings and units, listed alphabetically:
* atom-ID = integer ID of atom * atom-ID = integer ID of atom
* atom-type = type of atom (1-Ntype) * atom-type = type of atom (1-Ntype, or type label)
* bodyflag = 1 for body particles, 0 for point particles * bodyflag = 1 for body particles, 0 for point particles
* bond_nt = bond NT factor for MESONT particles (?? units) * bond_nt = bond NT factor for MESONT particles (?? units)
* buckling = buckling factor for MESONT particles (?? units) * buckling = buckling factor for MESONT particles (?? units)
@ -722,6 +782,13 @@ not used (e.g. an atomic system with no bonds), and you don't care if
unique atom IDs appear in dump files, then the atom-IDs can all be set unique atom IDs appear in dump files, then the atom-IDs can all be set
to 0. to 0.
The atom-type can be a numeric value or an alphanumeric label. The
latter is only allowed if the type label has been defined by the
:doc:`labelmap <labelmap>` command or an Atom Type Labels section
earlier in the data file. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
The molecule ID is a second identifier attached to an atom. Normally, it The molecule ID is a second identifier attached to an atom. Normally, it
is a number from 1 to N, identifying which molecule the atom belongs is a number from 1 to N, identifying which molecule the atom belongs
to. It can be 0 if it is a non-bonded atom or if you don't care to to. It can be 0 if it is a non-bonded atom or if you don't care to
@ -932,6 +999,26 @@ script.
---------- ----------
*Bond Type Labels* section:
* one line per bond type
* line syntax: ID label
.. parsed-literal::
ID = bond type (1-N)
label = alphanumeric type label
Define alphanumeric type labels for each numeric bond type. These can
be used in the Bonds section in place of a numeric type, but only if
the this section appears before the Angles section.
See the :doc:`Howto type labels <Howto_type_labels>` doc page for the
allowed syntax of type labels and a general discussion of how type
labels can be used.
----------
*BondAngle Coeffs* section: *BondAngle Coeffs* section:
* one line per angle type * one line per angle type
@ -976,7 +1063,7 @@ script.
.. parsed-literal:: .. parsed-literal::
ID = bond number (1-Nbonds) ID = bond number (1-Nbonds)
type = bond type (1-Nbondtype) type = bond type (1-Nbondtype, or type label)
atom1,atom2 = IDs of 1st,2nd atom in bond atom1,atom2 = IDs of 1st,2nd atom in bond
* example: * example:
@ -985,8 +1072,15 @@ script.
12 3 17 29 12 3 17 29
The *Bonds* section must appear after the *Atoms* section. All values The *Bonds* section must appear after the *Atoms* section.
in this section must be integers (1, not 1.0).
All values in this section must be integers (1, not 1.0). However,
the type can be a numeric value or an alphanumeric label. The latter
is only allowed if the type label has been defined by the
:doc:`labelmap <labelmap>` command or a Bond Type Labels section
earlier in the data file. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
---------- ----------
@ -1014,6 +1108,26 @@ Coefficients can also be set via the
---------- ----------
*Dihedral Type Labels* section:
* one line per dihedral type
* line syntax: ID label
.. parsed-literal::
ID = dihedral type (1-N)
label = alphanumeric type label
Define alphanumeric type labels for each numeric dihedral type. These
can be used in the Dihedrals section in place of a numeric type, but
only if the this section appears before the Dihedrals section.
See the :doc:`Howto type labels <Howto_type_labels>` doc page for the
allowed syntax of type labels and a general discussion of how type
labels can be used.
----------
*Dihedrals* section: *Dihedrals* section:
* one line per dihedral * one line per dihedral
@ -1022,7 +1136,7 @@ Coefficients can also be set via the
.. parsed-literal:: .. parsed-literal::
ID = number of dihedral (1-Ndihedrals) ID = number of dihedral (1-Ndihedrals)
type = dihedral type (1-Ndihedraltype) type = dihedral type (1-Ndihedraltype, or type label)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atom in dihedral atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atom in dihedral
* example: * example:
@ -1032,8 +1146,15 @@ Coefficients can also be set via the
12 4 17 29 30 21 12 4 17 29 30 21
The 4 atoms are ordered linearly within the dihedral. The *Dihedrals* The 4 atoms are ordered linearly within the dihedral. The *Dihedrals*
section must appear after the *Atoms* section. All values in this section must appear after the *Atoms* section.
section must be integers (1, not 1.0).
All values in this section must be integers (1, not 1.0). However,
the type can be a numeric value or an alphanumeric label. The latter
is only allowed if the type label has been defined by the
:doc:`labelmap <labelmap>` command or a Dihedral Type Labels section
earlier in the data file. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
---------- ----------
@ -1115,6 +1236,26 @@ Coefficients can also be set via the
---------- ----------
*Improper Type Labels* section:
* one line per improper type
* line syntax: ID label
.. parsed-literal::
ID = improper type (1-N)
label = alphanumeric type label
Define alphanumeric type labels for each numeric improper type. These
can be used in the Impropers section in place of a numeric type, but
only if the this section appears before the Impropers section.
See the :doc:`Howto type labels <Howto_type_labels>` doc page for the
allowed syntax of type labels and a general discussion of how type
labels can be used.
----------
*Impropers* section: *Impropers* section:
* one line per improper * one line per improper
@ -1123,7 +1264,7 @@ Coefficients can also be set via the
.. parsed-literal:: .. parsed-literal::
ID = number of improper (1-Nimpropers) ID = number of improper (1-Nimpropers)
type = improper type (1-Nimpropertype) type = improper type (1-Nimpropertype, or type label)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atom in improper atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atom in improper
* example: * example:
@ -1133,11 +1274,19 @@ Coefficients can also be set via the
12 3 17 29 13 100 12 3 17 29 13 100
The ordering of the 4 atoms determines the definition of the improper The ordering of the 4 atoms determines the definition of the improper
angle used in the formula for each :doc:`improper style <improper_style>`. See the doc pages for individual styles angle used in the formula for each :doc:`improper style
for details. <improper_style>`. See the doc pages for individual styles for
details.
The *Impropers* section must appear after the *Atoms* section. All The *Impropers* section must appear after the *Atoms* section.
values in this section must be integers (1, not 1.0).
All values in this section must be integers (1, not 1.0). However,
the type can be a numeric value or an alphanumeric label. The latter
is only allowed if the type label has been defined by the
:doc:`labelmap <labelmap>` command or a Improper Type Labels section
earlier in the data file. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
---------- ----------
@ -1181,7 +1330,7 @@ The *Lines* section must appear after the *Atoms* section.
.. parsed-literal:: .. parsed-literal::
ID = atom type (1-N) ID = atom type (1-N or atom type label)
mass = mass value mass = mass value
* example: * example:
@ -1195,6 +1344,13 @@ This defines the mass of each atom type. This can also be set via the
used for atom styles that define a mass for individual atoms - used for atom styles that define a mass for individual atoms -
e.g. :doc:`atom_style sphere <atom_style>`. e.g. :doc:`atom_style sphere <atom_style>`.
Using type labels instead of atom type numbers is only allowed if the
type label has been defined by the :doc:`labelmap <labelmap>` command or
a Atom Type Labels section earlier in the data file. See the
:doc:`Howto type labels <Howto_type_labels>` doc page for the allowed
syntax of type labels and a general discussion of how type labels can be
used.
---------- ----------
*MiddleBondTorsion Coeffs* section: *MiddleBondTorsion Coeffs* section:
@ -1363,11 +1519,14 @@ To read gzipped data files, you must compile LAMMPS with the
-DLAMMPS_GZIP option. See the :doc:`Build settings <Build_settings>` -DLAMMPS_GZIP option. See the :doc:`Build settings <Build_settings>`
doc page for details. doc page for details.
Labelmaps are currently not supported when using the KOKKOS package.
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`read_dump <read_dump>`, :doc:`read_restart <read_restart>`, :doc:`read_dump <read_dump>`, :doc:`read_restart <read_restart>`,
:doc:`create_atoms <create_atoms>`, :doc:`write_data <write_data>` :doc:`create_atoms <create_atoms>`, :doc:`write_data <write_data>`,
:doc:`labelmap <labelmap>`
Default Default
""""""" """""""

View File

@ -12,7 +12,7 @@ Syntax
restart N root keyword value ... restart N root keyword value ...
restart N file1 file2 keyword value ... restart N file1 file2 keyword value ...
* N = write a restart file every this many timesteps * N = write a restart file on timesteps which are multipls of N
* N can be a variable (see below) * N can be a variable (see below)
* root = filename to which timestep # is appended * root = filename to which timestep # is appended
* file1,file2 = two full filenames, toggle between them when writing file * file1,file2 = two full filenames, toggle between them when writing file
@ -42,13 +42,14 @@ Description
""""""""""" """""""""""
Write out a binary restart file with the current state of the Write out a binary restart file with the current state of the
simulation every so many timesteps, in either or both of two modes, as simulation on timesteps which are a multiple of N. A value of N = 0
a run proceeds. A value of 0 means do not write out any restart means do not write out any restart files, which is the default.
files. The two modes are as follows. If one filename is specified, a Restart files are written in one (or both) of two modes as a run
series of filenames will be created which include the timestep in the proceeds. If one filename is specified, a series of filenames will be
filename. If two filenames are specified, only 2 restart files will created which include the timestep in the filename. If two filenames
be created, with those names. LAMMPS will toggle between the 2 names are specified, only 2 restart files will be created, with those names.
as it writes successive restart files. LAMMPS will toggle between the 2 names as it writes successive restart
files.
Note that you can specify the restart command twice, once with a Note that you can specify the restart command twice, once with a
single filename and once with two filenames. This would allow you, single filename and once with two filenames. This would allow you,

View File

@ -66,7 +66,7 @@ Syntax
bound(group,dir,region), gyration(group,region), ke(group,reigon), bound(group,dir,region), gyration(group,region), ke(group,reigon),
angmom(group,dim,region), torque(group,dim,region), angmom(group,dim,region), torque(group,dim,region),
inertia(group,dimdim,region), omega(group,dim,region) inertia(group,dimdim,region), omega(group,dim,region)
special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x), is_file(name), is_os(name), extract_setting(name) special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x), is_file(name), is_os(name), extract_setting(name), label2type(kind,label)
feature functions = is_active(category,feature), is_available(category,feature), is_defined(category,id) feature functions = is_active(category,feature), is_available(category,feature), is_defined(category,id)
atom value = id[i], mass[i], type[i], mol[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i], q[i] atom value = id[i], mass[i], type[i], mol[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i], q[i]
atom vector = id, mass, type, mol, x, y, z, vx, vy, vz, fx, fy, fz, q atom vector = id, mass, type, mol, x, y, z, vx, vy, vz, fx, fy, fz, q
@ -505,7 +505,7 @@ references, and references to other variables.
+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Region functions | count(ID,IDR), mass(ID,IDR), charge(ID,IDR), xcm(ID,dim,IDR), vcm(ID,dim,IDR), fcm(ID,dim,IDR), bound(ID,dir,IDR), gyration(ID,IDR), ke(ID,IDR), angmom(ID,dim,IDR), torque(ID,dim,IDR), inertia(ID,dimdim,IDR), omega(ID,dim,IDR) | | Region functions | count(ID,IDR), mass(ID,IDR), charge(ID,IDR), xcm(ID,dim,IDR), vcm(ID,dim,IDR), fcm(ID,dim,IDR), bound(ID,dir,IDR), gyration(ID,IDR), ke(ID,IDR), angmom(ID,dim,IDR), torque(ID,dim,IDR), inertia(ID,dimdim,IDR), omega(ID,dim,IDR) |
+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Special functions | sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x) | | Special functions | sum(x), min(x), max(x), ave(x), trap(x), slope(x), gmask(x), rmask(x), grmask(x,y), next(x), label2type(kind,label) |
+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Atom values | id[i], mass[i], type[i], mol[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i], q[i] | | Atom values | id[i], mass[i], type[i], mol[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i], q[i] |
+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@ -962,6 +962,12 @@ types, bond types and so on. For the full list of available keywords
*name* and their meaning, see the documentation for extract_setting() *name* and their meaning, see the documentation for extract_setting()
via the link in this paragraph. via the link in this paragraph.
The label2type() function converts type labels into numeric types, using label
maps created by the :doc:`labelmap <labelmap>` or :doc:`read_data <read_data>`
commands. The first argument is the label map kind (atom, bond, angle,
dihedral, or improper) and the second argument is the label. The function
returns the corresponding numeric type.
---------- ----------
Feature Functions Feature Functions

View File

@ -12,12 +12,14 @@ Syntax
* file = name of data file to write out * file = name of data file to write out
* zero or more keyword/value pairs may be appended * zero or more keyword/value pairs may be appended
* keyword = *pair* or *nocoeff* * keyword = *pair* or *nocoeff* or *nofix* or *nolabelmap*
.. parsed-literal:: .. parsed-literal::
*nocoeff* = do not write out force field info *nocoeff* = do not write out force field info
*nofix* = do not write out extra sections read by fixes *nofix* = do not write out extra sections read by fixes
*nolabelmap* = do not write out type labels
*types* value = *numeric* or *labels*
*pair* value = *ii* or *ij* *pair* value = *ii* or *ij*
*ii* = write one line of pair coefficient info per atom type *ii* = write one line of pair coefficient info per atom type
*ij* = write one line of pair coefficient info per IJ atom type pair *ij* = write one line of pair coefficient info per IJ atom type pair
@ -94,16 +96,39 @@ data file is read.
---------- ----------
The *nocoeff* keyword requests that no force field parameters should Use of the *nocoeff* keyword means no force field parameters are
be written to the data file. This can be very helpful, if one wants written to the data file. This can be helpful, for example, if you
to make significant changes to the force field or if the parameters want to make significant changes to the force field or if the force
are read in separately anyway, e.g. from an include file. field parameters are read in separately, e.g. from an include file.
The *nofix* keyword requests that no extra sections read by fixes Use of the *nofix* keyword means no extra sections read by fixes are
should be written to the data file (see the *fix* option of the written to the data file (see the *fix* option of the :doc:`read_data
:doc:`read_data <read_data>` command for details). For example, this <read_data>` command for details). For example, this option excludes
option excludes sections for user-created per-atom properties sections for user-created per-atom properties from :doc:`fix
from :doc:`fix property/atom <fix_property_atom>`. property/atom <fix_property_atom>`.
The *nolabelmap* and *types* keywords refer to type labels that may be
defined for numeric atom types, bond types, angle types, etc. The
label map can be defined in two ways, either by the :doc:`labelmap
<labelmap>` command or in data files read by the :doc:`read_data
<read_data>` command which have sections for Atom Type Labels, Bond
Type Labels, Angle Type Labels, etc. See the :doc:`Howto type labels
<Howto_type_labels>` doc page for the allowed syntax of type labels
and a general discussion of how type labels can be used.
Use of the *nolabelmap* keyword means that even if type labels exist
for a given type-kind (Atoms, Bonds, Angles, etc.), type labels are
not written to the data file. By default, they are written if they
exist. A type label must be defined for every numeric type (within a
given type-kind) to be written to the data file.
The *types* keyword determines how atom types, bond types, angle
types, etc are written into these data file sections: Atoms, Bonds,
Angles, etc. The default is the *numeric* setting, even if type label
maps exist. If the *labels* setting is used, type labels will be
written to the data file, if the corresponding label map exists. Note
that when using *types labels*, the *nolabelmap* keyword cannot be
used.
The *pair* keyword lets you specify in what format the pair The *pair* keyword lets you specify in what format the pair
coefficient information is written into the data file. If the value coefficient information is written into the data file. If the value
@ -144,4 +169,4 @@ Related commands
Default Default
""""""" """""""
The option defaults are pair = ii. The option defaults are pair = ii and types_style = numeric.

View File

@ -6,7 +6,7 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
"clear", "comm_modify", "comm_style", "clear", "comm_modify", "comm_style",
"compute_modify", "create_atoms", "create_bonds", "create_box", "delete_atoms", "compute_modify", "create_atoms", "create_bonds", "create_box", "delete_atoms",
"delete_bonds", "dielectric", "dihedral_coeff", "dihedral_style", "dimension", "delete_bonds", "dielectric", "dihedral_coeff", "dihedral_style", "dimension",
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff", "fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
"improper_style", "include", "info", "jump", "kim", "improper_style", "include", "info", "jump", "kim",
"kspace_modify", "kspace_style", "label", "lattice", "kspace_modify", "kspace_style", "label", "lattice",
@ -16,8 +16,8 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
"partition", "prd", "print", "processors", "python", "quit", "read_data", "partition", "prd", "print", "processors", "python", "quit", "read_data",
"read_dump", "read_restart", "replicate", "rerun", "reset_ids", "read_dump", "read_restart", "replicate", "rerun", "reset_ids",
"reset_timestep", "restart", "run", "run_style", "server", "set", "shell", "reset_timestep", "restart", "run", "run_style", "server", "set", "shell",
"special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt", "special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt", "then",
"thermo", "thermo_modify", "thermo_style", "then", "third_order", "timer", "timestep", "thermo", "thermo_modify", "thermo_style", "third_order", "timer", "timestep",
"units", "velocity", "write_coeff", "units", "velocity", "write_coeff",
"write_data", "write_restart") "write_data", "write_restart")

View File

@ -61,6 +61,7 @@ ajs
akohlmey akohlmey
Aktulga Aktulga
al al
alabel
alain alain
Alain Alain
Alamos Alamos
@ -287,6 +288,7 @@ bitrates
Bitzek Bitzek
Bjerrum Bjerrum
Bkappa Bkappa
blabel
Blaise Blaise
blanchedalmond blanchedalmond
blocksize blocksize
@ -750,6 +752,7 @@ dissipative
Dissipative Dissipative
distharm distharm
dl dl
dlabel
dlambda dlambda
DLAMMPS DLAMMPS
dll dll
@ -1427,6 +1430,7 @@ ijk
ijkl ijkl
ik ik
Ikeshoji Ikeshoji
ilabel
Ilie Ilie
ilmenau ilmenau
Ilmenau Ilmenau
@ -1716,6 +1720,8 @@ Kusters
Kutta Kutta
Kuznetsov Kuznetsov
kx kx
labelmap
Labelmap
Lachet Lachet
Lackmann Lackmann
Ladd Ladd
@ -1939,6 +1945,8 @@ Manolopoulos
manpages manpages
manybody manybody
MANYBODY MANYBODY
mapID
mapIDs
Maras Maras
Marchetti Marchetti
Marchi Marchi
@ -2252,6 +2260,7 @@ nanoparticles
nanotube nanotube
Nanotube Nanotube
nanotubes nanotubes
nanowires
Narulkar Narulkar
nasa nasa
nasr nasr
@ -2259,6 +2268,7 @@ natively
Natoli Natoli
natoms natoms
Natoms Natoms
Natomtype
Nattempt Nattempt
navajowhite navajowhite
Navier Navier
@ -3555,6 +3565,7 @@ typeargs
typedefs typedefs
typeI typeI
typeJ typeJ
typelabel
typeN typeN
typesafe typesafe
Tz Tz

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
#Initialisation
units nano
dimension 3
boundary p p p
atom_style full
comm_modify cutoff 11.0
neighbor 7.80 bin
newton on
#Read data
read_data cnt.data
replicate 1 2 2
#Force field
bond_style harmonic
bond_coeff 1 268896.77 2.0
angle_style harmonic
angle_coeff 1 46562.17 180.0
pair_style mesocnt
pair_coeff * * C_10_10.mesocnt
#Output
thermo 1000
dump xyz all xyz 1000 cnt.xyz
#Simulation setup
timestep 1.0e-05
#Nose-Hoover thermostat
fix nvt all nvt temp 300 300 0.001
run 10000

View File

@ -0,0 +1,46 @@
# initialisation
units metal
dimension 3
boundary p p s
atom_style full
special_bonds lj 1 1 1
neigh_modify every 5 delay 0 check yes
newton on
read_data data.film_mesocnt
# force field
bond_style mesocnt
bond_coeff 1 C 10 10 10
angle_style mesocnt
angle_coeff 1 buckling C 10 10 10
pair_style mesocnt 40 chain
pair_coeff * * C_10_10.mesocnt 1
# output
compute epair all pe pair
compute ebond all pe bond
compute eangle all pe angle
compute epair_atom all pe/atom pair
compute ebond_atom all pe/atom bond
compute eangle_atom all pe/atom angle
fix angle_mesocnt_buckled all property/atom i_buckled ghost yes
thermo_style custom step temp etotal ke pe c_ebond c_eangle c_epair
thermo 10
#dump custom all custom 100 film_mesocnt.lmp id mol type x y z c_ebond_atom c_eangle_atom c_epair_atom i_buckled
# simulation setup
velocity all create 600.0 2022 loop geom
timestep 0.01
fix nvt all nvt temp 300.0 300.0 1
run 100

View File

@ -0,0 +1,126 @@
LAMMPS (3 Aug 2022)
# initialisation
units metal
dimension 3
boundary p p s
atom_style full
special_bonds lj 1 1 1
neigh_modify every 5 delay 0 check yes
newton on
read_data data.film_mesocnt
Reading data file ...
orthogonal box = (-2500 -2500 -300) to (2500 2500 402.42)
1 by 1 by 1 MPI processor grid
reading atoms ...
79596 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
79200 bonds
reading angles ...
78804 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.012 seconds
read_data CPU = 0.160 seconds
# force field
bond_style mesocnt
bond_coeff 1 C 10 10 10
angle_style mesocnt
angle_coeff 1 buckling C 10 10 10
pair_style mesocnt 40 chain
pair_coeff * * C_10_10.mesocnt 1
Reading mesocnt potential file C_10_10.mesocnt with DATE: 2022-07-12
# output
compute epair all pe pair
compute ebond all pe bond
compute eangle all pe angle
compute epair_atom all pe/atom pair
compute ebond_atom all pe/atom bond
compute eangle_atom all pe/atom angle
fix angle_mesocnt_buckled all property/atom i_buckled ghost yes
thermo_style custom step temp etotal ke pe c_ebond c_eangle c_epair
thermo 10
#dump custom all custom 100 film_mesocnt.lmp id mol type x y z c_ebond_atom c_eangle_atom c_epair_atom i_buckled
# simulation setup
velocity all create 600.0 2022 loop geom
timestep 0.01
fix nvt all nvt temp 300.0 300.0 1
run 100
Neighbor list info ...
update: every = 5 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 42
ghost atom cutoff = 42
binsize = 21, bins = 239 239 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair mesocnt, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 49.89 | 49.89 | 49.89 Mbytes
Step Temp TotEng KinEng PotEng c_ebond c_eangle c_epair
0 600 1355.8735 6173.0767 -4817.2032 28.668731 21.29199 -4867.1639
10 389.92732 1373.1839 4011.7521 -2638.5683 848.77485 1387.6166 -4874.9597
20 311.7468 1388.0161 3207.3949 -1819.3788 1211.534 1868.6817 -4899.5945
30 291.75586 1385.2114 3001.7189 -1616.5075 1184.1423 2133.2088 -4933.8586
40 320.42607 1364.2644 3296.6912 -1932.4267 951.62534 2088.33 -4972.382
50 341.37701 1346.0547 3512.2441 -2166.1894 956.59158 1891.9196 -5014.7005
60 333.15461 1337.5518 3427.6483 -2090.0965 1137.7331 1825.9946 -5053.8242
70 324.47061 1328.7153 3338.3033 -2009.588 1133.3639 1953.8288 -5096.7807
80 324.39487 1315.4948 3337.5241 -2022.0293 979.16213 2141.4697 -5142.6611
90 323.39973 1302.3471 3327.2856 -2024.9385 972.70286 2185.7686 -5183.41
100 322.73067 1289.0538 3320.402 -2031.3482 1100.1024 2088.3804 -5219.831
Loop time of 4.1637 on 1 procs for 100 steps with 79596 atoms
Performance: 20.751 ns/day, 1.157 hours/ns, 24.017 timesteps/s
99.5% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 3.705 | 3.705 | 3.705 | 0.0 | 88.98
Bond | 0.29317 | 0.29317 | 0.29317 | 0.0 | 7.04
Neigh | 0.078491 | 0.078491 | 0.078491 | 0.0 | 1.89
Comm | 0.0019462 | 0.0019462 | 0.0019462 | 0.0 | 0.05
Output | 0.00099817 | 0.00099817 | 0.00099817 | 0.0 | 0.02
Modify | 0.079874 | 0.079874 | 0.079874 | 0.0 | 1.92
Other | | 0.004224 | | | 0.10
Nlocal: 79596 ave 79596 max 79596 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2567 ave 2567 max 2567 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 1.1337e+06 ave 1.1337e+06 max 1.1337e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1133696
Ave neighs/atom = 14.243128
Ave special neighs/atom = 5.9402985
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:05

View File

@ -0,0 +1,126 @@
LAMMPS (3 Aug 2022)
# initialisation
units metal
dimension 3
boundary p p s
atom_style full
special_bonds lj 1 1 1
neigh_modify every 5 delay 0 check yes
newton on
read_data data.film_mesocnt
Reading data file ...
orthogonal box = (-2500 -2500 -300) to (2500 2500 402.42)
2 by 2 by 1 MPI processor grid
reading atoms ...
79596 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
79200 bonds
reading angles ...
78804 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 1 1 1
special bond factors coul: 0 0 0
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.005 seconds
read_data CPU = 0.156 seconds
# force field
bond_style mesocnt
bond_coeff 1 C 10 10 10
angle_style mesocnt
angle_coeff 1 buckling C 10 10 10
pair_style mesocnt 40 chain
pair_coeff * * C_10_10.mesocnt 1
Reading mesocnt potential file C_10_10.mesocnt with DATE: 2022-07-12
# output
compute epair all pe pair
compute ebond all pe bond
compute eangle all pe angle
compute epair_atom all pe/atom pair
compute ebond_atom all pe/atom bond
compute eangle_atom all pe/atom angle
fix angle_mesocnt_buckled all property/atom i_buckled ghost yes
thermo_style custom step temp etotal ke pe c_ebond c_eangle c_epair
thermo 10
#dump custom all custom 100 film_mesocnt.lmp id mol type x y z c_ebond_atom c_eangle_atom c_epair_atom i_buckled
# simulation setup
velocity all create 600.0 2022 loop geom
timestep 0.01
fix nvt all nvt temp 300.0 300.0 1
run 100
Neighbor list info ...
update: every = 5 steps, delay = 0 steps, check = yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 42
ghost atom cutoff = 42
binsize = 21, bins = 239 239 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair mesocnt, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 16.47 | 16.58 | 16.89 Mbytes
Step Temp TotEng KinEng PotEng c_ebond c_eangle c_epair
0 600 1355.8735 6173.0767 -4817.2032 28.668731 21.29199 -4867.1639
10 389.92732 1373.1839 4011.7521 -2638.5683 848.77485 1387.6166 -4874.9597
20 311.7468 1388.0161 3207.3949 -1819.3788 1211.534 1868.6817 -4899.5945
30 291.75586 1385.2114 3001.7189 -1616.5075 1184.1423 2133.2088 -4933.8586
40 320.42607 1364.2644 3296.6912 -1932.4267 951.62534 2088.33 -4972.382
50 341.37701 1346.0547 3512.2441 -2166.1894 956.59158 1891.9196 -5014.7005
60 333.15461 1337.5518 3427.6483 -2090.0965 1137.7331 1825.9946 -5053.8242
70 324.47061 1328.7153 3338.3033 -2009.588 1133.3639 1953.8288 -5096.7807
80 324.39487 1315.4948 3337.5241 -2022.0293 979.16213 2141.4697 -5142.6611
90 323.39973 1302.3471 3327.2856 -2024.9385 972.70286 2185.7686 -5183.41
100 322.73067 1289.0538 3320.402 -2031.3482 1100.1024 2088.3804 -5219.831
Loop time of 1.25052 on 4 procs for 100 steps with 79596 atoms
Performance: 69.091 ns/day, 0.347 hours/ns, 79.967 timesteps/s
99.6% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.87036 | 0.97558 | 1.1135 | 9.0 | 78.01
Bond | 0.071751 | 0.076357 | 0.084244 | 1.7 | 6.11
Neigh | 0.023232 | 0.023239 | 0.023244 | 0.0 | 1.86
Comm | 0.0046002 | 0.15227 | 0.26319 | 24.1 | 12.18
Output | 0.00032696 | 0.00037811 | 0.00045537 | 0.0 | 0.03
Modify | 0.019263 | 0.020646 | 0.023155 | 1.1 | 1.65
Other | | 0.00204 | | | 0.16
Nlocal: 19899 ave 21951 max 18670 min
Histogram: 1 1 0 1 0 0 0 0 0 1
Nghost: 1323.5 ave 1412 max 1255 min
Histogram: 1 0 1 0 1 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 283424 ave 325466 max 258171 min
Histogram: 1 0 2 0 0 0 0 0 0 1
Total # of neighbors = 1133696
Ave neighs/atom = 14.243128
Ave special neighs/atom = 5.9402985
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -1,126 +0,0 @@
LAMMPS (09 Jan 2020)
#Initialisation
units nano
dimension 3
boundary p p p
atom_style full
comm_modify cutoff 11.0
neighbor 7.80 bin
newton on
#Read data
read_data cnt.data
orthogonal box = (0 0 0) to (600 600 60)
1 by 1 by 1 MPI processor grid
reading atoms ...
500 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
498 bonds
reading angles ...
496 angles
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.000180006 secs
read_data CPU = 0.00125766 secs
replicate 1 2 2
orthogonal box = (0 0 0) to (600 1200 120)
1 by 1 by 1 MPI processor grid
2000 atoms
1992 bonds
1984 angles
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.00054121 secs
replicate CPU = 0.000902414 secs
#Force field
bond_style harmonic
bond_coeff 1 268896.77 2.0
angle_style harmonic
angle_coeff 1 46562.17 180.0
pair_style mesocnt
pair_coeff * * 10_10.cnt
Reading potential file 10_10.cnt with DATE: 2020-01-13
#Output
thermo 1000
dump xyz all xyz 1000 cnt.xyz
#Simulation setup
timestep 1.0e-05
#Nose-Hoover thermostat
fix nvt all nvt temp 300 300 0.001
run 10000
WARNING: Using a manybody potential with bonds/angles/dihedrals and special_bond exclusions (src/pair.cpp:226)
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.177
ghost atom cutoff = 11
binsize = 5.0885, bins = 118 236 24
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair mesocnt, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 11.21 | 11.21 | 11.21 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -4632.0136 5.7939238e-17 -4632.0136 -0.00015032304
1000 298.82235 -19950.274 13208.089 5628.7024 -0.0056205182
2000 300.43933 -28320.212 11980.296 -3902.0877 -0.0045324757
3000 300.4263 -36049.855 11338.405 -12274.161 -0.0018833539
4000 299.13368 -43471.21 11926.882 -19160.553 -0.00043030866
5000 293.77858 -50083.893 12334.927 -25586.884 -0.0015653738
6000 296.4851 -56330.135 12325.63 -31730.376 -0.0012795986
7000 298.20879 -62120.359 12582.297 -37192.574 -0.0013845796
8000 299.45547 -67881.692 13058.926 -42425.669 -0.00021100885
9000 301.82622 -73333.698 13598.257 -47240.197 -0.0006009197
10000 307.16873 -78292.306 13818.929 -51756.96 -0.0005609903
Loop time of 4.0316 on 1 procs for 10000 steps with 2000 atoms
Performance: 2143.072 ns/day, 0.011 hours/ns, 2480.408 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.5955 | 2.5955 | 2.5955 | 0.0 | 64.38
Bond | 1.1516 | 1.1516 | 1.1516 | 0.0 | 28.57
Neigh | 0.001163 | 0.001163 | 0.001163 | 0.0 | 0.03
Comm | 0.0019577 | 0.0019577 | 0.0019577 | 0.0 | 0.05
Output | 0.020854 | 0.020854 | 0.020854 | 0.0 | 0.52
Modify | 0.21637 | 0.21637 | 0.21637 | 0.0 | 5.37
Other | | 0.04409 | | | 1.09
Nlocal: 2000 ave 2000 max 2000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 13320 ave 13320 max 13320 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 13320
Ave neighs/atom = 6.66
Ave special neighs/atom = 5.952
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:05

View File

@ -1,126 +0,0 @@
LAMMPS (09 Jan 2020)
#Initialisation
units nano
dimension 3
boundary p p p
atom_style full
comm_modify cutoff 11.0
neighbor 7.80 bin
newton on
#Read data
read_data cnt.data
orthogonal box = (0 0 0) to (600 600 60)
2 by 2 by 1 MPI processor grid
reading atoms ...
500 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
498 bonds
reading angles ...
496 angles
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.000354767 secs
read_data CPU = 0.00286365 secs
replicate 1 2 2
orthogonal box = (0 0 0) to (600 1200 120)
1 by 4 by 1 MPI processor grid
2000 atoms
1992 bonds
1984 angles
2 = max # of 1-2 neighbors
2 = max # of 1-3 neighbors
4 = max # of 1-4 neighbors
6 = max # of special neighbors
special bonds CPU = 0.00019598 secs
replicate CPU = 0.00055337 secs
#Force field
bond_style harmonic
bond_coeff 1 268896.77 2.0
angle_style harmonic
angle_coeff 1 46562.17 180.0
pair_style mesocnt
pair_coeff * * 10_10.cnt
Reading potential file 10_10.cnt with DATE: 2020-01-13
#Output
thermo 1000
dump xyz all xyz 1000 cnt.xyz
#Simulation setup
timestep 1.0e-05
#Nose-Hoover thermostat
fix nvt all nvt temp 300 300 0.001
run 10000
WARNING: Using a manybody potential with bonds/angles/dihedrals and special_bond exclusions (src/pair.cpp:226)
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.177
ghost atom cutoff = 11
binsize = 5.0885, bins = 118 236 24
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair mesocnt, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 2.725 | 2.725 | 2.725 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -4632.0136 5.7939238e-17 -4632.0136 -0.00015032304
1000 298.82235 -19950.274 13208.089 5628.7024 -0.0056205182
2000 300.43861 -28320.205 11980.287 -3902.1202 -0.0045324738
3000 300.41076 -36049.308 11339.149 -12273.513 -0.0018848513
4000 299.13326 -43471.424 11927.668 -19159.998 -0.00042845101
5000 293.78857 -50083.216 12333.969 -25586.752 -0.0015664633
6000 296.45482 -56329.621 12326.419 -31730.328 -0.0012773686
7000 298.19097 -62119.086 12581.4 -37192.937 -0.0013862831
8000 299.46424 -67880.989 13057.62 -42425.908 -0.00020874264
9000 301.80677 -73332.208 13597.237 -47240.532 -0.00060074773
10000 307.17104 -78292.912 13818.889 -51757.51 -0.00056148282
Loop time of 1.23665 on 4 procs for 10000 steps with 2000 atoms
Performance: 6986.607 ns/day, 0.003 hours/ns, 8086.351 timesteps/s
96.1% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.66321 | 0.68439 | 0.71413 | 2.5 | 55.34
Bond | 0.28561 | 0.29434 | 0.30976 | 1.7 | 23.80
Neigh | 0.00043321 | 0.00043637 | 0.00043917 | 0.0 | 0.04
Comm | 0.026656 | 0.05346 | 0.097228 | 12.7 | 4.32
Output | 0.0070224 | 0.0073031 | 0.0081415 | 0.6 | 0.59
Modify | 0.12769 | 0.15394 | 0.18743 | 6.5 | 12.45
Other | | 0.04279 | | | 3.46
Nlocal: 500 ave 504 max 496 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 22 ave 24 max 20 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 3330 ave 3368 max 3292 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 13320
Ave neighs/atom = 6.66
Ave special neighs/atom = 5.952
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -0,0 +1,24 @@
LAMMPS Description
6 atoms
2 atom types
0.0000000000000000 10.800000000000001 xlo xhi
0.0000000000000000 5.4000000000000004 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
3.3065463576978537E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 2.70000 10.80000 2.70000
5 1 2 0.0 1.35000 12.15000 4.05000
6 1 2 0.0 4.05000 12.15000 4.05000

View File

@ -0,0 +1,27 @@
LAMMPS Description
9 atoms
2 atom types
0.0000000000000000 16.199999999999999 xlo xhi
0.0000000000000000 5.4000000000000004 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
3.3065463576978537E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 2.70000 10.80000 2.70000
5 1 2 0.0 1.35000 12.15000 4.05000
6 1 2 0.0 4.05000 12.15000 4.05000
7 1 1 0.0 2.70000 13.50000 5.40000
8 1 2 0.0 1.35000 14.85000 6.75000
9 1 2 0.0 4.05000 14.85000 6.75000

View File

@ -0,0 +1,30 @@
LAMMPS Description
12 atoms
2 atom types
0.0000000000000000 10.800000000000001 xlo xhi
0.0000000000000000 10.800000000000001 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
6.6130927153957075E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 5.40000 8.10000 2.70000
5 1 2 0.0 4.05000 9.45000 4.05000
6 1 2 0.0 6.75000 9.45000 4.05000
7 1 1 0.0 2.70000 10.80000 2.70000
8 1 2 0.0 1.35000 12.15000 4.05000
9 1 2 0.0 4.05000 12.15000 4.05000
10 1 1 0.0 5.40000 10.80000 5.40000
11 1 2 0.0 4.05000 12.15000 6.75000
12 1 2 0.0 6.75000 12.15000 6.75000

161
examples/QM/LATTE/README Normal file
View File

@ -0,0 +1,161 @@
LATTE is a semi-empirical tight-binding quantum code, developed
primarily at Los Alamos National Labs.
See these links:
https://www.osti.gov/biblio/1526907-los-alamos-transferable-tight-binding-energetics-latte-version
https://github.com/lanl/LATTE
LAMMPS has 2 ways of working with LATTE:
(1) Via its LATTE package and the fix latte command
must run LAMMPS on a single processor, it calls LATTE as a library
(2) Via its MDI package and the code-coupling MDI library
(a) can run LAMMPS and LATTE as stand-alone codes
LAMMPS can be run on any number of procs
LATTE must run on a single proc, but can use OpenMP
(b) can run LAMMPS with LATTE as a plug-in library
must run LAMMPS on a single processor
Examples for use case (1) are in the examples/latte dir. Use case (2)
is illustrated in this dir.
NOTE: If you compare MDI runs in this dir to similar fix latte runs in
examples/latte, the answers for energy and virial will be differnt.
This is b/c the version of LATTE used by the fix latte command within
the LATTE package is older than the version of LATTE used here.
------------------
Building 3 codes needed to run these examples
(1) Download and build MDI
% git clone git@github.com:MolSSI-MDI/MDI_Library.git mdi
% cd mdi
% mkdir build; cd build
% cmake .. # includes support for all langauges (incl Fortran, Python)
% make
(2) Download and build LATTE with MDI support
% git clone git@github.com:lanl/LATTE.git latte
% cd latte
% git checkout skimLATTE-progress # goto branch with MDI support
% cp makefiles/makefile.CHOICES.mdi makefile.CHOICES # so can now edit
% edit makefile.CHOICES settings to have these settings:
MAKELIB = OFF, SHARED = ON, MDI = ON
MDI_PATH must point to CMake build of MDI in (1),
e.g. /home/sjplimp/mdi/build/MDI_Library
comment out 2 LIB lines with CUDA-CUDART_LIBRARY
% make clean
% make # creates liblatte.so and LATTE_DOUBLE with support for MDI
(3) Build LAMMPS with its MDI package
also with the MOLECULE package for these example scripts
Build with traditional make
% cd lammps/lib/mdi
% python Install.py -m mpi # downloads and builds MDI
% cd ../../src
% make yes-mdi yes-molecule
$ make mpi # creates lmp_mpi
% mkdir build; cd build
% cmake -D PKG_MDI=yes -D PKG_MOLECULE=yes ../cmake
% make # creates lmp
Build with CMake
% cd lammps
% mkdir build; cd build
% cmake -D PKG_MDI=yes -D PKG_MOLECULE=yes ../cmake
% make # creates lmp
(4) Copy LAMMPS and LATTE executables into this dir
Copy the LAMMPS executable (lmp_mpi or lmp) into this dir as lmp_mpi.
Copy the LATTE executable LATTE_DOUBLE into this dir.
The run commands below assume you have done this.
(5) Insure LD_LIBRARY_PATH includes the dir where MDI was built in (1)
with its libmdi.so file, e.g. mdi/build/MDI_Library. This is needed
so when LATTE_DOUBLE runs as an executable it will able to find
libmdi.so.
------------------
Notes on LATTE usage
You must run this version of LATTE on a single MPI processor.
However, you can use OpenMP with LATTE. To do this you need to build
LATTE with OpenMP support by editing the makefile.CHOICES file to
include -fopenmp with FFLAGS and LINKFLAGS. Also -lapack and -lblas
need to be added to LIB, and those libraries must be available on your
system. For best performance you should also build LATTE with its
PROGRESS and BML libraries. Building those libs is more complex,
see details here:
https://github.com/lanl/LATTE_SUPER/tree/allMachines/Laptop
At run time, you need to also first set an environment variable for
the number of OpenMP threads to use, e.g.
% export OMP_NUM_THREADS=12
By default LATTE reads the latte.in file for its parameters. That
file specifies other files LATTE will read. With MDI, the driver code
(e.g. LAMMPS) can use the >FNAME command to specify an alternate
filename to use instead of latte.in.
By default LATTE writes out a log.latte file with info about its
calculations. An "OUTFILE= logfile" setting in latte.in can rename
this file.
---------
Run example #1: AIMD
* Run with MPI: 1 proc each
mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.aimd -log log.aimd.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run with MPI: 2 procs for LAMMPS, 1 for LATTE
mpirun -np 2 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.aimd -log log.aimd.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run in plugin mode: 1 proc
lmp_mpi -mdi \
"-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/latte/git" \
-in in.aimd.plugin -log log.aimd.lammps.plugin
NOTE: The -plugin_path needs to point to where LATTE was built in step
(2).
---------
Run example #2: sequence of configurations
* Run with MPI: 1 proc each
mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.series -log log.series.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run with MPI: 2 procs for LAMMPS, 1 for LATTE
mpirun -np 2 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.series -log log.series.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run in plugin mode: 1 proc
lmp_mpi -mdi \
"-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/latte/git" \
-in in.series.plugin -log log.series.lammps.plugin
NOTE: The -plugin_path needs to point to where LATTE was built in step
(2).

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
Noelem= 2
Element basis Numel Es Ep Ed Ef Mass HubbardU Wss Wpp Wdd Wff
U sdf 6.0 -4.08 0.0 0.816 -0.586 238.05078 9.0 0.0 0.0 0.0 0.0
O sp 6.0 -23.77 -8.85 0.0 0.0 15.994915 12.2 0.0 0.0 0.0 0.0
W spd 6.0 -4.52 0.53 -2.91 0.0 183.84 7.048 0.0 0.0 0.0 0.0
Mo sd 6.0 -3.29 0.0 -1.98 0.0 95.95 6.48 0.0 0.0 0.0 0.0
S sp 6.0 -14.00 -3.97 0.0 0.0 32.06 8.28 0.0 -0.4278 0.0 0.0
N sp 5.000000 -18.543798 -7.862407 0.000000 0.000000 14.006700 17.053958 0.000000 -0.6934 0.000000 0.000000
H s 1.000000 -6.237968 0.000000 0.000000 0.000000 1.007900 13.684855 -2.23400 0.000000 0.000000 0.000000
C sp 4.000000 -13.736556 -4.748938 0.000000 0.000000 12.010000 10.522540 0.000000 -0.618100 0.000000 0.000000
O sp 6.000000 -23.833752 -9.645001 0.000000 0.000000 15.999400 14.443874 0.000000 -0.757650 0.000000 0.000000

26
examples/QM/LATTE/in.aimd Normal file
View File

@ -0,0 +1,26 @@
# AIMD test of two UO2 molecules with LATTE in MDI stand-alone mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.mpi &
id type x y z vx vy vz fx fy fz
run 20

View File

@ -0,0 +1,27 @@
# AIMD test of two UO2 molecules with LATTE in MDI plugin mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.plugin &
id type x y z vx vy vz fx fy fz
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" &
command "run 20"

View File

@ -0,0 +1,37 @@
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI stand-alone mode
variable files index 2uo2 3uo2 4uo2
mdi connect
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
write_dump all custom dump.series.mpi.${files} &
id type x y z fx fy fz modify sort id
clear
next files
jump SELF LOOP
mdi exit

View File

@ -0,0 +1,32 @@
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI plugin mode
variable files index 2uo2 3uo2 4uo2
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
fix 1 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" &
command "run 0"
write_dump all custom dump.series.plugin.${files} &
id type x y z fx fy fz modify sort id
clear
next files
jump SELF LOOP

67
examples/QM/LATTE/latte.in Executable file
View File

@ -0,0 +1,67 @@
#General controls
CONTROL{
XCONTROL= 1
BASISTYPE= NONORTHO
PARAMPATH= './'
SCLTYPE= TABLE
DEBUGON= 0
FERMIM= 6
CGORLIB= 1 CGTOL= 1.0e-6
KBT= 1.0
NORECS= 5
ENTROPYKIND= 1
PPOTON= 2 VDWON= 0
SPINON= 0 SPINTOL= 1.0e-4
ELECTRO= 1 ELECMETH= 0 ELEC_ETOL= 0.001 ELEC_QTOL= 1.0e-12
COULACC= 1.0e-6 COULCUT= -500.0 COULR1= 500.0
MAXSCF= 250
BREAKTOL= 1.0E-12 MINSP2ITER= 22 SP2CONV= REL
FULLQCONV= 1 QITER= 0
QMIX= 0.05 SPINMIX= 0.05 MDMIX= 0.05
#QMIX= 0.25 SPINMIX= 0.25 MDMIX= 0.25
ORDERNMOL= 0
SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-6 FILLINSTOP= 100 BLKSZ= 4
MSPARSE= 3000
LCNON= 0 LCNITER= 4 CHTOL= 0.01
SKIN= 1.0
RELAX= 0 RELAXTYPE= SD MAXITER= 100 RLXFTOL= 0.001
MDON= 1
PBCON= 1
RESTART= 0
CHARGE= 0
XBO= 1
XBODISON= 1
XBODISORDER= 5
NGPU= 2
KON= 0
COMPFORCE= 1
DOSFIT= 0 INTS2FIT= 1 BETA= 1000.0 NFITSTEP= 5000 QFIT= 0 MCSIGMA= 0.2
PPFITON= 0
ALLFITON= 0
PPSTEP= 500 BISTEP= 500 PP2FIT= 2 BINT2FIT= 6
PPBETA= 1000.0 PPSIGMA= 0.01 PPNMOL= 10 PPNGEOM= 200
PARREP= 0
ER= 1.0
#DOKERNEL= T
}
MDCONTROL{
MAXITER= 2000
UDNEIGH= 1
DT= 0.5
TEMPERATURE= 1.0e-10 RNDIST= GAUSSIAN SEEDINIT= UNIFORM
DUMPFREQ= 250
RSFREQ= 500
WRTFREQ= 1
TOINITTEMP5= 1
THERMPER= 500
THERMRUN= 50000
NVTON= 0 NPTON= 0 AVEPER= 1000 FRICTION= 1000.0 SEED= 54
PTARGET= 0.0 NPTTYPE= ISO
SHOCKON= 0
SHOCKSTART= 100000
SHOCKDIR= 1
UPARTICLE= 500.0 USHOCK= -4590.0 C0= 1300.0
MDADAPT= 0
GETHUG= 0 E0= -795.725 V0= 896.984864 P0= 0.083149
}

View File

@ -0,0 +1,102 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# AIMD test of two UO2 molecules with LATTE in MDI stand-alone mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.003 seconds
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.mpi id type x y z vx vy vz fx fy fz
run 20
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 6.489 | 6.489 | 6.489 Mbytes
Step Temp PotEng TotEng Press
0 300 -50.539035 -50.345145 -120197.6
1 307.57345 -50.544722 -50.345937 -120123.27
2 316.3757 -50.551342 -50.346868 -120035.12
3 326.39203 -50.558885 -50.347938 -119933.11
4 337.60559 -50.567341 -50.349146 -119817.17
5 349.99734 -50.576697 -50.350493 -119687.24
6 363.54606 -50.586939 -50.351979 -119543.23
7 378.22834 -50.598054 -50.353605 -119385.07
8 394.0186 -50.610024 -50.355369 -119212.67
9 410.88903 -50.622831 -50.357273 -119025.94
10 428.80963 -50.636457 -50.359317 -118824.77
11 447.74819 -50.65088 -50.3615 -118609.06
12 467.67027 -50.666079 -50.363823 -118378.7
13 488.53922 -50.68203 -50.366287 -118133.58
14 510.31617 -50.698708 -50.36889 -117873.58
15 532.96002 -50.716086 -50.371633 -117598.57
16 556.42747 -50.734137 -50.374517 -117308.44
17 580.67298 -50.75283 -50.377541 -117003.05
18 605.64879 -50.772136 -50.380705 -116682.27
19 631.30497 -50.792023 -50.38401 -116345.95
20 657.58937 -50.812455 -50.387454 -115993.97
Loop time of 3.40001 on 1 procs for 20 steps with 6 atoms
Performance: 0.127 ns/day, 188.889 hours/ns, 5.882 timesteps/s
100.0% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Bond | 1.2223e-05 | 1.2223e-05 | 1.2223e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 6.0971e-05 | 6.0971e-05 | 6.0971e-05 | 0.0 | 0.00
Output | 0.0009257 | 0.0009257 | 0.0009257 | 0.0 | 0.03
Modify | 3.3989 | 3.3989 | 3.3989 | 0.0 | 99.97
Other | | 6.824e-05 | | | 0.00
Nlocal: 6 ave 6 max 6 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2 ave 2 max 2 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

Some files were not shown because too many files have changed in this diff Show More