Merge branch 'develop' into multi-config-support

# Conflicts:
#	cmake/Modules/GTest.cmake
This commit is contained in:
Axel Kohlmeyer 2021-10-21 10:26:31 -04:00
commit d8db9dd3ac
No known key found for this signature in database
GPG Key ID: D9B44E93BF0C375A
297 changed files with 23041 additions and 1408 deletions

View File

@ -617,15 +617,12 @@ foreach(PKG_WITH_INCL CORESHELL QEQ OPENMP DPD-SMOOTH KOKKOS OPT INTEL GPU)
endforeach()
if(PKG_PLUGIN)
if(BUILD_SHARED_LIBS)
target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN)
else()
message(WARNING "Plugin loading will not work unless BUILD_SHARED_LIBS is enabled")
endif()
# link with -ldl or equivalent for plugin loading; except on Windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS})
endif()
target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN)
endif()
# link with -ldl or equivalent for plugin loading; except on Windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS})
endif()
######################################################################

View File

@ -23,6 +23,7 @@ OPT.
:columns: 5
* :doc:`accelerate/cos <fix_accelerate_cos>`
* :doc:`acks2/reaxff (k) <fix_acks2_reaxff>`
* :doc:`adapt <fix_adapt>`
* :doc:`adapt/fep <fix_adapt_fep>`
* :doc:`addforce <fix_addforce>`
@ -103,6 +104,7 @@ OPT.
* :doc:`manifoldforce <fix_manifoldforce>`
* :doc:`mdi/engine <fix_mdi_engine>`
* :doc:`meso/move <fix_meso_move>`
* :doc:`mol/swap <fix_mol_swap>`
* :doc:`momentum (k) <fix_momentum>`
* :doc:`momentum/chunk <fix_momentum>`
* :doc:`move <fix_move>`

View File

@ -29,7 +29,9 @@ of code in the header before include guards:
.. code-block:: c
#ifdef FIX_CLASS
FixStyle(print/vel,FixPrintVel)
// clang-format off
FixStyle(print/vel,FixPrintVel);
// clang-format on
#else
/* the definition of the FixPrintVel class comes here */
...

View File

@ -80,7 +80,7 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| friction | frictional contact of spherical asperities between 2d surfaces |
+-------------+------------------------------------------------------------------+
| gcmc | Grand Canonical Monte Carlo (GCMC) via the fix gcmc command |
| mc | Monte Carlo features via fix gcmc, widom and other commands |
+-------------+------------------------------------------------------------------+
| granregion | use of fix wall/region/gran as boundary on granular particles |
+-------------+------------------------------------------------------------------+
@ -205,7 +205,7 @@ Uppercase directories
+------------+--------------------------------------------------------------------------------------------------+
| KAPPA | compute thermal conductivity via several methods |
+------------+--------------------------------------------------------------------------------------------------+
| MC | using LAMMPS in a Monte Carlo mode to relax the energy of a system |
| MC-LOOP | using LAMMPS in a Monte Carlo mode to relax the energy of a system in a input script loop |
+------------+--------------------------------------------------------------------------------------------------+
| PACKAGES | examples for specific packages and contributed commands |
+------------+--------------------------------------------------------------------------------------------------+

View File

@ -166,6 +166,7 @@ page are followed by one or more of (g,i,k,o,t) to indicate which
accelerated styles exist.
* :doc:`accelerate/cos <fix_accelerate_cos>` - apply cosine-shaped acceleration to atoms
* :doc:`acks2/reaxff <fix_acks2_reaxff>` - apply ACKS2 charge equilibration
* :doc:`adapt <fix_adapt>` - change a simulation parameter over time
* :doc:`adapt/fep <fix_adapt_fep>` - enhanced version of fix adapt
* :doc:`addforce <fix_addforce>` - add a force to each atom
@ -246,6 +247,7 @@ accelerated styles exist.
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
* :doc:`mdi/engine <fix_mdi_engine>` - connect LAMMPS to external programs via the MolSSI Driver Interface (MDI)
* :doc:`meso/move <fix_meso_move>` - move mesoscopic SPH/SDPD particles in a prescribed fashion
* :doc:`mol/swap <fix_mol_swap>` - Monte Carlo atom type swapping with a molecule
* :doc:`momentum <fix_momentum>` - zero the linear and/or angular momentum of a group of atoms
* :doc:`momentum/chunk <fix_momentum>` - zero the linear and/or angular momentum of a chunk of atoms
* :doc:`move <fix_move>` - move atoms in a prescribed fashion

View File

@ -0,0 +1,118 @@
.. index:: fix acks2/reaxff
.. index:: fix acks2/reaxff/kk
fix acks2/reaxff command
========================
Accelerator Variants: *acks2/reaxff/kk*
Syntax
""""""
.. parsed-literal::
fix ID group-ID acks2/reaxff Nevery cutlo cuthi tolerance params args
* ID, group-ID are documented in :doc:`fix <fix>` command
* acks2/reaxff = style name of this fix command
* Nevery = perform ACKS2 every this many steps
* cutlo,cuthi = lo and hi cutoff for Taper radius
* tolerance = precision to which charges will be equilibrated
* params = reaxff or a filename
Examples
""""""""
.. code-block:: LAMMPS
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 param.acks2
Description
"""""""""""
Perform the atom-condensed Kohn-Sham DFT to second order (ACKS2) charge
equilibration method as described in :ref:`(Verstraelen) <Verstraelen>`.
ACKS2 impedes unphysical long-range charge transfer sometimes seen with
QEq (e.g. for dissociation of molecules), at increased computational
cost. It is typically used in conjunction with the ReaxFF force field
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
defines and uses charges on each atom. For more technical details about
the charge equilibration performed by fix acks2/reaxff, see the
:ref:`(O'Hearn) <O'Hearn>` paper.
The ACKS2 method minimizes the electrostatic energy of the system by
adjusting the partial charge on individual atoms based on interactions
with their neighbors. It requires some parameters for each atom type.
If the *params* setting above is the word "reaxff", then these are
extracted from the :doc:`pair_style reaxff <pair_reaxff>` command and
the ReaxFF force field file it reads in. If a file name is specified
for *params*\ , then the parameters are taken from the specified file
and the file must contain one line for each atom type. The latter form
must be used when performing QeQ with a non-ReaxFF potential. The lines
should be formatted as follows:
.. parsed-literal::
bond_softness
itype chi eta gamma bcut
where the first line is the global parameter *bond_softness*. The
remaining 1 to Ntypes lines include *itype*, the atom type from 1 to
Ntypes, *chi*, the electronegativity in eV, *eta*, the self-Coulomb
potential in eV, *gamma*, the valence orbital exponent, and *bcut*, 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
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.
**Restart, fix_modify, output, run start/stop, minimize info:**
No information about this fix is written to :doc:`binary restart files
<restart>`. No global scalar or vector or per-atom quantities are
stored 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 the :doc:`run <run>` command.
This fix is invoked during :doc:`energy minimization <minimize>`.
----------
.. include:: accel_styles.rst
----------
Restrictions
""""""""""""
This fix is part of the REAXFF package. It is only enabled if LAMMPS
was built with that package. See the :doc:`Build package
<Build_package>` doc page for more info.
This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than 10 angstroms.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
but there may be only one fix efield instance used, it may only use a
constant electric field, and the electric field vector may only have
components in non-periodic directions.
Related commands
""""""""""""""""
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/reaxff <fix_qeq_reaxff>`
**Default:** none
----------
.. _O'Hearn:
**(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1-C22 (2020).
.. _Verstraelen:
**(Verstraelen)** Verstraelen, Ayers, Speybroeck, Waroquier, J. Chem. Phys. 138, 074108 (2013).

View File

@ -73,51 +73,51 @@ is the same after the swap as it was before the swap, even though the
atom masses have changed.
The *semi-grand* keyword can be set to *yes* to switch to the
semi-grand canonical ensemble as discussed in :ref:`(Sadigh) <Sadigh>`. This
means that the total number of each particle type does not need to be
conserved. The default is *no*, which means that the only kind of swap
allowed exchanges an atom of one type with an atom of a different
given type. In other words, the relative mole fractions of the swapped
atoms remains constant. Whereas in the semi-grand canonical ensemble,
the composition of the system can change. Note that when using
*semi-grand*, atoms in the fix group whose type is not listed
in the *types* keyword are ineligible for attempted
conversion. An attempt is made to switch
the selected atom (if eligible) to one of the other listed types
with equal probability. Acceptance of each attempt depends upon the Metropolis criterion.
semi-grand canonical ensemble as discussed in :ref:`(Sadigh)
<Sadigh>`. This means that the total number of each particle type does
not need to be conserved. The default is *no*, which means that the
only kind of swap allowed exchanges an atom of one type with an atom
of a different given type. In other words, the relative mole fractions
of the swapped atoms remains constant. Whereas in the semi-grand
canonical ensemble, the composition of the system can change. Note
that when using *semi-grand*, atoms in the fix group whose type is not
listed in the *types* keyword are ineligible for attempted
conversion. An attempt is made to switch the selected atom (if
eligible) to one of the other listed types with equal
probability. Acceptance of each attempt depends upon the Metropolis
criterion.
The *mu* keyword allows users to specify chemical
potentials. This is required and allowed only when using *semi-grand*\ .
All chemical potentials are absolute, so there is one for
each swap type listed following the *types* keyword.
In semi-grand canonical ensemble simulations the chemical composition
of the system is controlled by the difference in these values. So
shifting all values by a constant amount will have no effect
on the simulation.
The *mu* keyword allows users to specify chemical potentials. This is
required and allowed only when using *semi-grand*\ . All chemical
potentials are absolute, so there is one for each swap type listed
following the *types* keyword. In semi-grand canonical ensemble
simulations the chemical composition of the system is controlled by
the difference in these values. So shifting all values by a constant
amount will have no effect on the simulation.
This command may optionally use the *region* keyword to define swap
volume. The specified region must have been previously defined with a
:doc:`region <region>` command. It must be defined with side = *in*\ .
Swap attempts occur only between atoms that are both within the
:doc:`region <region>` command. It must be defined with side = *in*\
. Swap attempts occur only between atoms that are both within the
specified region. Swaps are not otherwise attempted.
You should ensure you do not swap atoms belonging to a molecule, or
LAMMPS will soon generate an error when it tries to find those atoms.
LAMMPS will warn you if any of the atoms eligible for swapping have a
non-zero molecule ID, but does not check for this at the time of
LAMMPS will eventually generate an error when it tries to find those
atoms. LAMMPS will warn you if any of the atoms eligible for swapping
have a non-zero molecule ID, but does not check for this at the time of
swapping.
If not using *semi-grand* this fix checks to ensure all atoms of the
given types have the same atomic charge. LAMMPS does not enforce this
in general, but it is needed for this fix to simplify the
swapping procedure. Successful swaps will swap the atom type and charge
of the swapped atoms. Conversely, when using *semi-grand*, it is assumed that all the atom
types involved in switches have the same charge. Otherwise, charge
would not be conserved. As a consequence, no checks on atomic charges are
performed, and successful switches update the atom type but not the
atom charge. While it is possible to use *semi-grand* with groups of
atoms that have different charges, these charges will not be changed when the
atom types change.
in general, but it is needed for this fix to simplify the swapping
procedure. Successful swaps will swap the atom type and charge of the
swapped atoms. Conversely, when using *semi-grand*, it is assumed that
all the atom types involved in switches have the same
charge. Otherwise, charge would not be conserved. As a consequence, no
checks on atomic charges are performed, and successful switches update
the atom type but not the atom charge. While it is possible to use
*semi-grand* with groups of atoms that have different charges, these
charges will not be changed when the atom types change.
Since this fix computes total potential energies before and after
proposed swaps, so even complicated potential energy calculations are
@ -133,23 +133,24 @@ OK, including the following:
Some fixes have an associated potential energy. Examples of such fixes
include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
:doc:`addforce <fix_addforce>`, :doc:`langevin <fix_langevin>`,
:doc:`restrain <fix_restrain>`, :doc:`temp/berendsen <fix_temp_berendsen>`,
:doc:`temp/rescale <fix_temp_rescale>`, and :doc:`wall fixes <fix_wall>`.
For that energy to be included in the total potential energy of the
system (the quantity used when performing GCMC moves),
you MUST enable the :doc:`fix_modify <fix_modify>` *energy* option for
that fix. The doc pages for individual :doc:`fix <fix>` commands
specify if this should be done.
:doc:`restrain <fix_restrain>`, :doc:`temp/berendsen
<fix_temp_berendsen>`, :doc:`temp/rescale <fix_temp_rescale>`, and
:doc:`wall fixes <fix_wall>`. For that energy to be included in the
total potential energy of the system (the quantity used when
performing GCMC moves), you MUST enable the :doc:`fix_modify
<fix_modify>` *energy* option for that fix. The doc pages for
individual :doc:`fix <fix>` commands specify if this should be done.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This fix writes the state of the fix to :doc:`binary restart files <restart>`. This includes information about the random
number generator seed, the next timestep for MC exchanges, the number
of exchange attempts and successes etc. See
the :doc:`read_restart <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 fix continues in an uninterrupted fashion.
This fix writes the state of the fix to :doc:`binary restart files
<restart>`. This includes information about the random number
generator seed, the next timestep for MC exchanges, the number of
exchange attempts and successes etc. See the :doc:`read_restart
<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
fix continues in an uninterrupted fashion.
.. note::
@ -165,12 +166,13 @@ by various :doc:`output commands <Howto_output>`. The vector values are
the following global cumulative quantities:
* 1 = swap attempts
* 2 = swap successes
* 2 = swap accepts
The vector values calculated by this fix are "extensive".
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
""""""""""""
@ -184,7 +186,8 @@ Related commands
:doc:`fix nvt <fix_nh>`, :doc:`neighbor <neighbor>`,
:doc:`fix deposit <fix_deposit>`, :doc:`fix evaporate <fix_evaporate>`,
:doc:`delete_atoms <delete_atoms>`, :doc:`fix gcmc <fix_gcmc>`
:doc:`delete_atoms <delete_atoms>`, :doc:`fix gcmc <fix_gcmc>`,
:doc:`fix mol/swap <fix_mol_swap>`
Default
"""""""

170
doc/src/fix_mol_swap.rst Normal file
View File

@ -0,0 +1,170 @@
.. index:: fix mol/swap
fix mol/swap command
=====================
Syntax
""""""
.. parsed-literal::
fix ID group-ID mol/swap N X itype jtype seed T keyword value ...
* ID, group-ID are documented in :doc:`fix <fix>` command
* atom/swap = style name of this fix command
* N = invoke this fix every N steps
* X = number of swaps to attempt every N steps
* itype,jtype = two atom types to swap with each other
* seed = random # seed (positive integer)
* T = scaling temperature of the MC swaps (temperature units)
* zero or more keyword/value pairs may be appended to args
* keyword = *ke*
.. parsed-literal::
*ke* value = *no* or *yes*
*no* = no conservation of kinetic energy after atom swaps
*yes* = kinetic energy is conserved after atom swaps
Examples
""""""""
.. code-block:: LAMMPS
fix 2 all mol/swap 100 1 2 3 29494 300.0 ke no
fix mySwap fluid mol/swap 500 10 1 2 482798 1.0
Description
"""""""""""
This fix performs Monte Carlo swaps of two specified atom types within
a randomly selected molecule. Two possible use cases are as follows.
First, consider a mixture of some molecules with atoms of itype and
other molecules with atoms of jtype. The fix will select a random
molecule and attempt to swap all the itype atoms to jtype for the
first kind of molecule, or all the jtype atoms to itype for the second
kind. Because the swap will only take place if it is energetically
favorable, the fix can be used to determine the miscibility of 2
different kinds of molecules much more quickly than just dynamics
would do it.
Second, consider diblock co-polymers with two types of monomers itype
and jtype. The fix will select a random molecule and attempt to do a
itype <--> jtype swap of all those monomers within the molecule. Thus
the fix can be used to find the energetically favorable fractions of
two flavors of diblock co-polymers.
Intra-molecular swaps of atom types are attempted every N timesteps. On
that timestep, X swaps are attempted. For each attempt a single
molecule ID is randomly selected. The range of possible molecule IDs
from loID to hiID is pre-computed before each run begins. The
loID/hiID is set for the molecule with the smallest/largest ID which
has any itype or jtype atoms in it. Note that if you define a system
with many molecule IDs between loID and hiID which have no itype or
jtype atoms, then the fix will be inefficient at performing swaps.
Also note that if atoms with molecule ID = 0 exist, they are not
considered molecules by this fix; they are assumed to be solvent atoms
or molecules.
Candidate atoms for swapping must also be in the fix group. Atoms
within the selected molecule which are not itype or jtype are ignored.
When an atom is swapped from itype to jtype (or vice versa), if
charges are defined, the charge values for itype versus jtype atoms
are also swapped. This requires that all itype atoms in the system
have the same charge value. Likewise all jtype atoms in the system
must have the same charge value. If this is not the case, LAMMPS
issues a warning that it cannot swap charge values.
If the *ke* keyword is set to yes, which is the default, and the
masses of itype and jtype atoms are different, then when a swap
occurs, the velocity of the swapped atom is rescaled by the sqrt of
the mass ratio, so as to conserve the kinetic energy of the atom.
----------
The potential energy of the entire system is computed before and after
each swap is performed within a single molecule. The specified
temperature T is used in the Metropolis criterion to accept or reject
the attempted swap. If the swap is rejected all swapped values are
reversed.
The potential energy calculations can include systems and models with
the following features:
* manybody pair styles, including EAM
* hybrid pair styles
* long-range electrostatics (kspace)
* triclinic systems
* potential energy contributions from other fixes
For the last bullet point, fixes can have an associated potential
energy. Examples of such fixes include: :doc:`efield <fix_efield>`,
:doc:`gravity <fix_gravity>`, :doc:`addforce <fix_addforce>`,
:doc:`langevin <fix_langevin>`, :doc:`restrain <fix_restrain>`,
:doc:`temp/berendsen <fix_temp_berendsen>`, :doc:`temp/rescale
<fix_temp_rescale>`, and :doc:`wall fixes <fix_wall>`. For that
energy to be included in the total potential energy of the system (the
quantity used for the swap accept/reject decision), you MUST enable
the :doc:`fix_modify <fix_modify>` *energy* option for that fix. The
doc pages for individual :doc:`fix <fix>` commands specify if this
should be done.
.. note::
One comment on computational efficiency. If the cutoff lengths
defined for the pair style are different for itype versus jtype
atoms (for any of their interactions with any other atom type), then
a new neighbor list needs to be generated for every attempted swap.
This is potentially expensive if N is small or X is large.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This fix writes the state of the fix to :doc:`binary restart files
<restart>`. This includes information about the random number
generator seed, the next timestep for MC exchanges, the number of
exchange attempts and successes etc. See the :doc:`read_restart
<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
fix continues in an uninterrupted fashion.
.. note::
For this to work correctly, the timestep must **not** be changed
after reading the restart with :doc:`reset_timestep <reset_timestep>`.
The fix will try to detect it and stop with an error.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this
fix.
This fix computes a global vector of length 2, which can be accessed
by various :doc:`output commands <Howto_output>`. The vector values are
the following global cumulative quantities:
* 1 = swap attempts
* 2 = swap accepts
The vector values calculated by this fix are "extensive".
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>`.
Restrictions
""""""""""""
This fix is part of the MC package. It is only enabled if LAMMPS was
built with that package. See the :doc:`Build package <Build_package>`
doc page for more info.
Related commands
""""""""""""""""
:doc:`fix atom/swap <fix_atom_swap>`, :doc:`fix gcmc <fix_gcmc>`
Default
"""""""
The option default is ke = yes.

View File

@ -230,7 +230,10 @@ These fixes are part of the QEQ package. They are only enabled if
LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
The qeq fixes are not compatible with the GPU and USER-INTEL packages.
These qeq fixes are not compatible with the GPU and USER-INTEL packages.
These qeq fixes will ignore electric field contributions from
:doc:`fix efield <fix_efield>`.
Related commands
""""""""""""""""

View File

@ -116,6 +116,12 @@ This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than 10 angstroms.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
but there may be only one fix efield instance used, it may only use a
constant electric field, and the electric field vector may only have
components in non-periodic directions.
Related commands
""""""""""""""""

View File

@ -20,7 +20,7 @@ Syntax
.. parsed-literal::
keyword = *checkqeq* or *lgvdw* or *safezone* or *mincap* or *minhbonds*
*checkqeq* value = *yes* or *no* = whether or not to require qeq/reaxff fix
*checkqeq* value = *yes* or *no* = whether or not to require qeq/reaxff or acks2/reaxff fix
*enobonds* value = *yes* or *no* = whether or not to tally energy of atoms with no bonds
*lgvdw* value = *yes* or *no* = whether or not to use a low gradient vdW correction
*safezone* = factor used for array allocation
@ -119,7 +119,8 @@ The ReaxFF parameter files provided were created using a charge
equilibration (QEq) model for handling the electrostatic interactions.
Therefore, by default, LAMMPS requires that either the
:doc:`fix qeq/reaxff <fix_qeq_reaxff>` or the
:doc:`fix qeq/shielded <fix_qeq>` command be used with
:doc:`fix qeq/shielded <fix_qeq>` or :doc:`fix acks2/reaxff <fix_acks2_reaxff>`
command be used with
*pair_style reaxff* when simulating a ReaxFF model, to equilibrate
the charges each timestep.
@ -128,7 +129,8 @@ for the QEq fixes, allowing a simulation to be run without charge
equilibration. In this case, the static charges you assign to each
atom will be used for computing the electrostatic interactions in
the system. See the :doc:`fix qeq/reaxff <fix_qeq_reaxff>` or
:doc:`fix qeq/shielded <fix_qeq>` command documentation for more details.
:doc:`fix qeq/shielded <fix_qeq>` or :doc:`fix acks2/reaxff <fix_acks2_reaxff>`
command documentation for more details.
Using the optional keyword *lgvdw* with the value *yes* turns on the
low-gradient correction of ReaxFF for long-range London Dispersion,
@ -352,7 +354,8 @@ Related commands
""""""""""""""""
:doc:`pair_coeff <pair_coeff>`, :doc:`fix qeq/reaxff <fix_qeq_reaxff>`,
:doc:`fix reaxff/bonds <fix_reaxff_bonds>`, :doc:`fix reaxff/species <fix_reaxff_species>`
:doc:`fix acks2/reaxff <fix_acks2_reaxff>`, :doc:`fix reaxff/bonds <fix_reaxff_bonds>`,
:doc:`fix reaxff/species <fix_reaxff_species>`
Default
"""""""

View File

@ -65,10 +65,8 @@ only enabled if LAMMPS was built with that package.
See the :doc:`Build package <Build_package>` page for
more info. Plugins are not available on Windows.
For the loading of plugins to work the LAMMPS library must be
:ref:`compiled as a shared library <library>`. If plugins
access functions or classes from a package, LAMMPS must have
been compiled with that package included.
If plugins access functions or classes from a package, LAMMPS must
have been compiled with that package included.
Plugins are dependent on the LAMMPS binary interface (ABI)
and particularly the MPI library used. So they are not guaranteed

View File

@ -254,7 +254,7 @@ for command_type, entries in index.items():
print("Total number of style index entries:", total_index)
skip_fix = ('python', 'NEIGH_HISTORY/omp','qeq/reax','reax/c/bonds','reax/c/species')
skip_fix = ('python', 'NEIGH_HISTORY/omp','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species')
skip_pair = ('meam/c','lj/sf','reax/c')
counter = 0
@ -282,7 +282,7 @@ if counter:
counter = 0
counter += check_style_index("compute", compute, index["compute"])
counter += check_style_index("fix", fix, index["fix"], skip=['python','qeq/reax','reax/c/bonds','reax/c/species'])
counter += check_style_index("fix", fix, index["fix"], skip=['python','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species'])
counter += check_style_index("angle_style", angle, index["angle_style"])
counter += check_style_index("bond_style", bond, index["bond_style"])
counter += check_style_index("dihedral_style", dihedral, index["dihedral_style"])

View File

@ -19,6 +19,7 @@ accuracies
ach
ackland
Ackland
acks
acolor
acos
Acta
@ -77,6 +78,7 @@ allocators
allosws
AlO
Alonso
Alperen
alphak
alphashrink
amap
@ -685,6 +687,7 @@ diagonalized
diagonalizers
diagonalizing
Diallo
diblock
Dickel
diel
differentiable
@ -1254,6 +1257,7 @@ hbond
hcp
hdnnp
HDNNP
Hearn
heatconduction
Hebbeker
Hebenstreit
@ -1280,6 +1284,7 @@ hgrid
hhmrr
Hibbs
Higdon
hiID
Hijazi
Hilger
Hinestrosa
@ -1776,6 +1781,7 @@ Loewen
logfile
logfreq
logicals
loID
Lomdahl
Lond
lookup
@ -3080,6 +3086,7 @@ Spearot
specular
spellcheck
Spellmeyer
Speybroeck
sph
SPH
Spickermann
@ -3493,6 +3500,7 @@ Verlag
verlet
Verlet
versa
Verstraelen
ves
vflag
vhi
@ -3559,6 +3567,7 @@ vzcm
vzi
Waals
Wadley
Waroquier
wallstyle
walltime
Waltham

View File

@ -75,7 +75,6 @@ eim: NaCl using the EIM potential
ellipse: ellipsoidal particles in spherical solvent, 2d system
flow: Couette and Poiseuille flow in a 2d channel
friction: frictional contact of spherical asperities between 2d surfaces
gcmc: Grand Canonical MC with fix gcmc, Widom insertion with fix widom
gjf: use of fix langevin Gronbech-Jensen/Farago option
granregion: use of fix wall/region/gran as boundary on granular particles
hugoniostat: Hugoniostat shock dynamics
@ -83,6 +82,7 @@ hyper: global and local hyperdynamics of diffusion on Pt surface
indent: spherical indenter into a 2d solid
kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
latte: use of LATTE density-functional tight-binding quantum code
mc: MC package models: GCMC, Widom, fix mol/swap
meam: MEAM test for SiC and shear (same as shear examples)
melt: rapid melt of 3d LJ system
message: client/server coupling of 2 codes
@ -167,7 +167,7 @@ The KAPPA directory has example scripts for computing the thermal
conductivity (kappa) of a LJ liquid using 5 different methods. See
the KAPPA/README file for more info.
The MC directory has an example script for using LAMMPS as an
The MC-LOOP directory has an example script for using LAMMPS as an
energy-evaluation engine in a iterative Monte Carlo energy-relaxation
loop.

11733
examples/mc/data.bead Normal file

File diff suppressed because it is too large Load Diff

44
examples/mc/in.mixed Normal file
View File

@ -0,0 +1,44 @@
# test script for fix mol/swap
# initial system is 50/50 chains of type 1 and type 2
# b/c epsilon12 is set to 1.02 (weakly same as 1/1 or 1/2) the
# system will stay in equilibrium as a mix of both chain types
# fix mol/swap helps this happen quickly
# see the last 2 columns of thermo output for counts of 2 chain types
units lj
atom_style angle
neighbor 0.36 bin
neigh_modify delay 0
pair_style lj/cut 1.1224620483
bond_style fene
angle_style cosine
special_bonds lj 0.0 1.0 1.0
read_data data.bead
pair_coeff * * 1.0 1.0 1.1224620483
pair_coeff 1 2 1.02 1.0 1.1224620483
bond_coeff 1 30.0 1.5 1.0 1.0
angle_coeff 1 1.500
pair_modify shift yes
variable vt1 atom type==1
variable vt2 atom type==2
group g1 dynamic all var vt1 every 100
group g2 dynamic all var vt2 every 100
variable count1 equal count(g1)
variable count2 equal count(g2)
timestep 0.010
fix 1 all langevin 1.0 1.0 100.0 702547
fix 2 all nve
fix 3 all mol/swap 100 1 1 2 482794 1.0
compute p all pressure thermo_temp
thermo 1000
thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2
run 50000

44
examples/mc/in.pure Normal file
View File

@ -0,0 +1,44 @@
# test script for fix mol/swap
# initial system is 50/50 chains of type 1 and type 2
# b/c epsilon12 is set to 1.1 (stronger than 1/1 or 2/2) the
# system will go to equilibrium as mostly one type or the other
# fix mol/swap helps this happen quickly
# see the last 2 columns of thermo output for counts of 2 chain types
units lj
atom_style angle
neighbor 0.36 bin
neigh_modify delay 0
pair_style lj/cut 1.1224620483
bond_style fene
angle_style cosine
special_bonds lj 0.0 1.0 1.0
read_data data.bead
pair_coeff * * 1.0 1.0 1.1224620483
pair_coeff 1 2 1.1 1.0 1.1224620483
bond_coeff 1 30.0 1.5 1.0 1.0
angle_coeff 1 1.500
pair_modify shift yes
variable vt1 atom type==1
variable vt2 atom type==2
group g1 dynamic all var vt1 every 100
group g2 dynamic all var vt2 every 100
variable count1 equal count(g1)
variable count2 equal count(g2)
timestep 0.010
fix 1 all langevin 1.0 1.0 100.0 702547
fix 2 all nve
fix 3 all mol/swap 100 1 1 2 482794 1.0
compute p all pressure thermo_temp
thermo 1000
thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2
run 50000

View File

@ -0,0 +1,164 @@
LAMMPS (29 Sep 2021)
# test script for fix mol/swap
# initial system is 50/50 chains of type 1 and type 2
# b/c epsilon12 is set to 1.02 (weakly same as 1/1 or 1/2) the
# system will stay in equilibrium as a mix of both chain types
# fix mol/swap helps this happen quickly
# see the last 2 columns of thermo output for counts of 2 chain types
units lj
atom_style angle
neighbor 0.36 bin
neigh_modify delay 0
pair_style lj/cut 1.1224620483
bond_style fene
angle_style cosine
special_bonds lj 0.0 1.0 1.0
read_data data.bead
Reading data file ...
orthogonal box = (-8.2115700 -8.2115700 -8.2115700) to (8.2115700 8.2115700 8.2115700)
1 by 2 by 2 MPI processor grid
reading atoms ...
4000 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
3900 bonds
reading angles ...
3800 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 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.001 seconds
read_data CPU = 0.028 seconds
pair_coeff * * 1.0 1.0 1.1224620483
pair_coeff 1 2 1.02 1.0 1.1224620483
bond_coeff 1 30.0 1.5 1.0 1.0
angle_coeff 1 1.500
pair_modify shift yes
variable vt1 atom type==1
variable vt2 atom type==2
group g1 dynamic all var vt1 every 100
dynamic group g1 defined
group g2 dynamic all var vt2 every 100
dynamic group g2 defined
variable count1 equal count(g1)
variable count2 equal count(g2)
timestep 0.010
fix 1 all langevin 1.0 1.0 100.0 702547
fix 2 all nve
fix 3 all mol/swap 100 1 1 2 482794 1.0
compute p all pressure thermo_temp
thermo 1000
thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2
run 50000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 1.482462
ghost atom cutoff = 1.482462
binsize = 0.74123102, bins = 23 23 23
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
WARNING: Communication cutoff 1.4824620483 is shorter than a bond length based estimate of 1.815. This may lead to errors. (../comm.cpp:728)
Per MPI rank memory allocation (min/avg/max) = 5.313 | 5.314 | 5.314 Mbytes
Step Temp TotEng Press f_3[1] f_3[2] v_count1 v_count2
0 0 21.451627 5.079399 0 0 2000 2000
1000 0.49011138 21.59359 4.2337989 10 10 2000 2000
2000 0.55288866 21.724374 4.4596786 20 20 2080 1920
3000 0.59299724 21.844178 4.6112243 30 29 2280 1720
4000 0.64746348 21.964318 4.9463669 40 39 2280 1720
5000 0.67853936 22.053147 5.1950218 50 48 2320 1680
6000 0.70751144 22.147453 5.0636869 60 58 2240 1760
7000 0.73570064 22.233705 5.4872622 70 68 2160 1840
8000 0.7677554 22.312938 5.4283736 80 77 2360 1640
9000 0.78493237 22.383155 5.8547233 90 87 2440 1560
10000 0.80634514 22.449402 5.8785731 100 96 2400 1600
11000 0.82563194 22.475286 5.8193738 110 104 2400 1600
12000 0.81684024 22.527492 6.0323967 120 114 2320 1680
13000 0.84497155 22.567888 6.0488755 130 122 2240 1760
14000 0.85452242 22.606908 6.1983634 140 132 2080 1920
15000 0.88109242 22.654336 6.1408279 150 141 1960 2040
16000 0.88925915 22.707597 6.1560975 160 150 2000 2000
17000 0.91598439 22.762791 6.1071728 170 160 2000 2000
18000 0.92453211 22.778304 6.3330693 180 170 2240 1760
19000 0.92839551 22.797316 6.2917909 190 180 2000 2000
20000 0.93054033 22.819289 6.091701 200 189 2200 1800
21000 0.93955351 22.844135 6.5833013 210 198 2000 2000
22000 0.94454858 22.856272 6.5661753 220 207 2200 1800
23000 0.95446407 22.878735 6.5957294 230 216 2160 1840
24000 0.94748257 22.894539 6.6187447 240 226 1920 2080
25000 0.95732202 22.912292 6.4795471 250 236 1680 2320
26000 0.96970172 22.908988 6.537366 260 245 1720 2280
27000 0.96032166 22.924899 6.6238248 270 255 1960 2040
28000 0.96197769 22.9358 6.8926097 280 264 1920 2080
29000 0.98745595 22.964694 6.5839025 290 271 2040 1960
30000 0.99264869 22.947884 6.3893499 300 280 1920 2080
31000 0.96953069 22.957927 6.6616047 310 289 1800 2200
32000 0.99955117 22.963979 6.5958456 320 298 1680 2320
33000 0.97090103 22.969029 6.9087296 330 307 1800 2200
34000 0.99818457 22.988477 6.6471994 340 316 1920 2080
35000 0.9965288 22.992883 6.9691785 350 325 2040 1960
36000 0.99533174 22.983774 6.6585089 360 334 2000 2000
37000 0.98819278 22.995387 6.618802 370 344 2080 1920
38000 0.99598576 22.991892 6.7536669 380 354 2080 1920
39000 0.99312702 22.989239 6.4028165 390 364 2080 1920
40000 1.0035821 23.001944 6.9307671 400 374 1920 2080
41000 0.99914733 23.00134 6.6251677 410 383 1880 2120
42000 0.98054536 22.981781 6.5918554 420 393 1880 2120
43000 0.99413829 23.008 6.7390795 430 403 1720 2280
44000 0.98867961 23.00521 6.8505543 440 412 1600 2400
45000 0.99626811 23.019995 6.827741 450 421 1640 2360
46000 1.0186043 23.020759 6.6195562 460 430 1680 2320
47000 1.0121335 23.019271 6.6022102 470 439 1800 2200
48000 0.99883756 23.013973 6.5255522 480 448 1920 2080
49000 0.99425223 23.022708 6.609746 490 458 2240 1760
50000 0.99505489 23.012641 6.4592863 500 468 2240 1760
Loop time of 19.4175 on 4 procs for 50000 steps with 4000 atoms
Performance: 2224796.830 tau/day, 2574.996 timesteps/s
95.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.5467 | 2.6684 | 2.7896 | 6.3 | 13.74
Bond | 2.3037 | 2.4117 | 2.5085 | 5.3 | 12.42
Neigh | 7.3597 | 7.3633 | 7.3673 | 0.1 | 37.92
Comm | 3.0482 | 3.2694 | 3.4997 | 10.2 | 16.84
Output | 0.0014609 | 0.0017069 | 0.0021793 | 0.7 | 0.01
Modify | 2.9624 | 3.0581 | 3.1424 | 4.7 | 15.75
Other | | 0.6447 | | | 3.32
Nlocal: 1000.00 ave 1013 max 986 min
Histogram: 1 0 0 1 0 0 0 1 0 1
Nghost: 1186.25 ave 1198 max 1178 min
Histogram: 2 0 0 0 0 0 1 0 0 1
Neighs: 4927.00 ave 5028 max 4790 min
Histogram: 1 0 0 0 0 1 0 1 0 1
Total # of neighbors = 19708
Ave neighs/atom = 4.9270000
Ave special neighs/atom = 5.7000000
Neighbor list builds = 10721
Dangerous builds = 0
Total wall time: 0:00:19

View File

@ -0,0 +1,164 @@
LAMMPS (29 Sep 2021)
# test script for fix mol/swap
# initial system is 50/50 chains of type 1 and type 2
# b/c epsilon12 is set to 1.1 (stronger than 1/1 or 2/2) the
# system will go to equilibrium as mostly one type or the other
# fix mol/swap helps this happen quickly
# see the last 2 columns of thermo output for counts of 2 chain types
units lj
atom_style angle
neighbor 0.36 bin
neigh_modify delay 0
pair_style lj/cut 1.1224620483
bond_style fene
angle_style cosine
special_bonds lj 0.0 1.0 1.0
read_data data.bead
Reading data file ...
orthogonal box = (-8.2115700 -8.2115700 -8.2115700) to (8.2115700 8.2115700 8.2115700)
1 by 2 by 2 MPI processor grid
reading atoms ...
4000 atoms
scanning bonds ...
1 = max bonds/atom
scanning angles ...
1 = max angles/atom
reading bonds ...
3900 bonds
reading angles ...
3800 angles
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 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.001 seconds
read_data CPU = 0.034 seconds
pair_coeff * * 1.0 1.0 1.1224620483
pair_coeff 1 2 1.1 1.0 1.1224620483
bond_coeff 1 30.0 1.5 1.0 1.0
angle_coeff 1 1.500
pair_modify shift yes
variable vt1 atom type==1
variable vt2 atom type==2
group g1 dynamic all var vt1 every 100
dynamic group g1 defined
group g2 dynamic all var vt2 every 100
dynamic group g2 defined
variable count1 equal count(g1)
variable count2 equal count(g2)
timestep 0.010
fix 1 all langevin 1.0 1.0 100.0 702547
fix 2 all nve
fix 3 all mol/swap 100 1 1 2 482794 1.0
compute p all pressure thermo_temp
thermo 1000
thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2
run 50000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 1.482462
ghost atom cutoff = 1.482462
binsize = 0.74123102, bins = 23 23 23
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d
bin: standard
WARNING: Communication cutoff 1.4824620483 is shorter than a bond length based estimate of 1.815. This may lead to errors. (../comm.cpp:728)
Per MPI rank memory allocation (min/avg/max) = 5.313 | 5.314 | 5.314 Mbytes
Step Temp TotEng Press f_3[1] f_3[2] v_count1 v_count2
0 0 21.4699 5.230121 0 0 2000 2000
1000 0.50228459 21.61044 4.3659303 10 9 1960 2040
2000 0.55721903 21.75955 4.5695439 20 17 1960 2040
3000 0.61139287 21.892943 4.6514755 30 26 2240 1760
4000 0.65767189 22.002303 5.1854503 40 33 2280 1720
5000 0.69383416 22.110271 5.3803498 50 41 2280 1720
6000 0.72692038 22.205887 5.1756569 60 49 2280 1720
7000 0.77151336 22.306777 5.5743555 70 56 2240 1760
8000 0.78606858 22.37036 5.7745208 80 64 2560 1440
9000 0.79363653 22.420931 5.7369418 90 71 2680 1320
10000 0.82352629 22.488759 6.0238896 100 76 2720 1280
11000 0.83867685 22.534887 6.1263771 110 82 2800 1200
12000 0.85335127 22.590281 6.1499954 120 86 2800 1200
13000 0.86430985 22.632068 6.1654016 130 89 2760 1240
14000 0.88057592 22.680253 6.2162735 140 94 2800 1200
15000 0.89326694 22.719731 6.4789839 150 97 2760 1240
16000 0.90667644 22.737367 6.214481 160 101 2760 1240
17000 0.91190336 22.758572 6.2293336 170 105 2600 1400
18000 0.93182455 22.782019 6.2865382 180 111 2680 1320
19000 0.93002139 22.797048 6.5579988 190 117 2600 1400
20000 0.92396243 22.796108 6.6207461 200 122 2800 1200
21000 0.92949808 22.802813 6.3753268 210 125 2920 1080
22000 0.93415719 22.807112 6.4696121 220 130 3040 960
23000 0.9214833 22.82116 6.4146288 230 131 3080 920
24000 0.95693685 22.839738 6.4035728 240 135 2920 1080
25000 0.95421851 22.865199 6.4510751 250 138 2880 1120
26000 0.95476555 22.878082 6.4652888 260 145 3000 1000
27000 0.95773535 22.880671 6.757952 270 149 3000 1000
28000 0.95405332 22.896053 6.7425175 280 155 3080 920
29000 0.95955713 22.904144 6.6672832 290 161 3240 760
30000 0.95521498 22.886699 6.6197941 300 164 3360 640
31000 0.96431176 22.91094 6.6373887 310 168 3440 560
32000 0.96592495 22.903679 6.4245884 320 172 3520 480
33000 0.96457971 22.922681 6.6987987 330 175 3480 520
34000 0.96541889 22.92116 6.5992755 340 178 3600 400
35000 0.96892691 22.923361 6.7973298 350 178 3600 400
36000 0.97267726 22.923431 6.6577403 360 179 3640 360
37000 0.97514714 22.939979 6.4028068 370 183 3640 360
38000 0.98638599 22.952022 6.6518868 380 183 3640 360
39000 0.97864891 22.962534 6.3906837 390 184 3680 320
40000 0.9933016 22.975785 6.6819613 400 185 3720 280
41000 0.9861477 22.977271 6.6747347 410 187 3800 200
42000 0.98157369 22.963129 6.830028 420 187 3800 200
43000 0.98202452 22.966947 6.5257905 430 187 3800 200
44000 0.99540503 22.971262 6.5546513 440 187 3800 200
45000 0.98433653 22.978028 6.4316725 450 189 3800 200
46000 0.97912775 22.981328 6.9139851 460 189 3800 200
47000 0.9791927 22.981131 6.6417971 470 190 3840 160
48000 0.99601024 22.998536 6.6756953 480 191 3880 120
49000 0.99589958 22.998489 6.9262843 490 191 3880 120
50000 0.99294715 23.00399 6.6976013 500 192 3920 80
Loop time of 19.5161 on 4 procs for 50000 steps with 4000 atoms
Performance: 2213556.537 tau/day, 2561.987 timesteps/s
95.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.6256 | 2.7183 | 2.8265 | 5.2 | 13.93
Bond | 2.3363 | 2.4406 | 2.5197 | 4.8 | 12.51
Neigh | 7.382 | 7.3884 | 7.3936 | 0.2 | 37.86
Comm | 3.014 | 3.2136 | 3.3994 | 9.4 | 16.47
Output | 0.0014574 | 0.0017086 | 0.0020613 | 0.5 | 0.01
Modify | 3.0282 | 3.1295 | 3.2034 | 4.1 | 16.04
Other | | 0.624 | | | 3.20
Nlocal: 1000.00 ave 1011 max 993 min
Histogram: 2 0 0 0 0 1 0 0 0 1
Nghost: 1187.25 ave 1202 max 1179 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 4939.25 ave 5067 max 4850 min
Histogram: 1 0 0 2 0 0 0 0 0 1
Total # of neighbors = 19757
Ave neighs/atom = 4.9392500
Ave special neighs/atom = 5.7000000
Neighbor list builds = 10714
Dangerous builds = 0
Total wall time: 0:00:19

View File

@ -0,0 +1 @@
../../../potentials/acks2_ff.water

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20

View File

@ -0,0 +1,31 @@
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20

View File

@ -0,0 +1,29 @@
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20

View File

@ -0,0 +1,31 @@
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20

View File

@ -0,0 +1,129 @@
LAMMPS (29 Sep 2021)
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
reading atoms ...
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
3000 atoms
read_data CPU = 0.010 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309)
1 by 1 by 1 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
Reading potential file acks2_ff.water with DATE: 2021-09-21
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix acks2/reaxff command:
@Article{O'Hearn2020,
author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga},
title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms},
journal = {SIAM J. Sci. Comput.},
year = 2020,
volume = 42,
pages = {1--22}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix acks2/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 361.2 | 361.2 | 361.2 Mbytes
Step Temp Press Density Volume
0 300 -20762.954 0.99996859 29916.212
10 396.27588 -18423.747 1.0000143 29914.844
20 518.59361 -10010.691 1.0000209 29914.647
Loop time of 29.8896 on 1 procs for 20 steps with 3000 atoms
Performance: 0.029 ns/day, 830.268 hours/ns, 0.669 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 11.611 | 11.611 | 11.611 | 0.0 | 38.85
Neigh | 0.6729 | 0.6729 | 0.6729 | 0.0 | 2.25
Comm | 0.0020791 | 0.0020791 | 0.0020791 | 0.0 | 0.01
Output | 0.00015777 | 0.00015777 | 0.00015777 | 0.0 | 0.00
Modify | 17.602 | 17.602 | 17.602 | 0.0 | 58.89
Other | | 0.001149 | | | 0.00
Nlocal: 3000.00 ave 3000 max 3000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 5438.00 ave 5438 max 5438 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 787357.0 ave 787357 max 787357 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 787357
Ave neighs/atom = 262.45233
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:00:32

View File

@ -0,0 +1,129 @@
LAMMPS (29 Sep 2021)
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
reading atoms ...
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
3000 atoms
read_data CPU = 0.011 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309)
2 by 1 by 2 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
Reading potential file acks2_ff.water with DATE: 2021-09-21
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix acks2/reaxff command:
@Article{O'Hearn2020,
author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga},
title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms},
journal = {SIAM J. Sci. Comput.},
year = 2020,
volume = 42,
pages = {1--22}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix acks2/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 198.5 | 199.3 | 199.9 Mbytes
Step Temp Press Density Volume
0 300 -20761.724 0.99996859 29916.212
10 396.27588 -18420.441 1.0000144 29914.843
20 518.59146 -10012.622 1.0000207 29914.652
Loop time of 11.3556 on 4 procs for 20 steps with 3000 atoms
Performance: 0.076 ns/day, 315.433 hours/ns, 1.761 timesteps/s
94.3% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 3.7511 | 3.8123 | 3.9245 | 3.4 | 33.57
Neigh | 0.36492 | 0.3767 | 0.39023 | 1.5 | 3.32
Comm | 0.12022 | 0.23202 | 0.29307 | 13.8 | 2.04
Output | 8.0451e-05 | 0.00017452 | 0.00045489 | 0.0 | 0.00
Modify | 6.9172 | 6.9312 | 6.9431 | 0.4 | 61.04
Other | | 0.003189 | | | 0.03
Nlocal: 750.000 ave 758 max 737 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Nghost: 4219.50 ave 4233 max 4198 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Neighs: 230733.0 ave 233431 max 225531 min
Histogram: 1 0 0 0 0 0 0 0 2 1
Total # of neighbors = 922931
Ave neighs/atom = 307.64367
Neighbor list builds = 7
Dangerous builds = 0
Total wall time: 0:00:12

View File

@ -0,0 +1,124 @@
LAMMPS (29 Sep 2021)
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
reading atoms ...
3000 atoms
read_data CPU = 0.010 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
Reading potential file acks2_ff.water with DATE: 2021-09-21
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix acks2/reaxff command:
@Article{O'Hearn2020,
author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga},
title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms},
journal = {SIAM J. Sci. Comput.},
year = 2020,
volume = 42,
pages = {1--22}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix acks2/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 574.5 | 574.5 | 574.5 Mbytes
Step Temp Press Density Volume
0 300 1572.3474 1 29915.273
10 300.61522 8252.7686 1 29915.273
20 294.7387 2502.6624 1 29915.273
Loop time of 25.9579 on 1 procs for 20 steps with 3000 atoms
Performance: 0.033 ns/day, 721.052 hours/ns, 0.770 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 14.081 | 14.081 | 14.081 | 0.0 | 54.24
Neigh | 0.34284 | 0.34284 | 0.34284 | 0.0 | 1.32
Comm | 0.0027799 | 0.0027799 | 0.0027799 | 0.0 | 0.01
Output | 0.00012876 | 0.00012876 | 0.00012876 | 0.0 | 0.00
Modify | 11.53 | 11.53 | 11.53 | 0.0 | 44.42
Other | | 0.001007 | | | 0.00
Nlocal: 3000.00 ave 3000 max 3000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 11077.0 ave 11077 max 11077 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 971815.0 ave 971815 max 971815 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 971815
Ave neighs/atom = 323.93833
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:27

View File

@ -0,0 +1,124 @@
LAMMPS (29 Sep 2021)
# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
reading atoms ...
3000 atoms
read_data CPU = 0.013 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
3000 atoms
replicate CPU = 0.002 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * acks2_ff.water O H
Reading potential file acks2_ff.water with DATE: 2021-09-21
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix acks2/reaxff command:
@Article{O'Hearn2020,
author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga},
title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms},
journal = {SIAM J. Sci. Comput.},
year = 2020,
volume = 42,
pages = {1--22}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix acks2/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 271.9 | 273.6 | 275.1 Mbytes
Step Temp Press Density Volume
0 300 1572.3807 1 29915.273
10 300.6152 8252.4834 1 29915.273
20 294.73868 2502.5661 1 29915.273
Loop time of 11.1133 on 4 procs for 20 steps with 3000 atoms
Performance: 0.078 ns/day, 308.702 hours/ns, 1.800 timesteps/s
92.7% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.3609 | 4.7715 | 5.4812 | 19.5 | 42.94
Neigh | 0.15797 | 0.17176 | 0.19405 | 3.5 | 1.55
Comm | 0.21014 | 0.922 | 1.3353 | 44.6 | 8.30
Output | 8.815e-05 | 0.0002 | 0.00030501 | 0.0 | 0.00
Modify | 5.2267 | 5.2468 | 5.2584 | 0.5 | 47.21
Other | | 0.001074 | | | 0.01
Nlocal: 750.000 ave 760 max 735 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Nghost: 6231.50 ave 6255 max 6192 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Neighs: 277006.0 ave 280567 max 271394 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Total # of neighbors = 1108026
Ave neighs/atom = 369.34200
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:12

View File

@ -0,0 +1,128 @@
LAMMPS (29 Sep 2021)
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
reading atoms ...
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
3000 atoms
read_data CPU = 0.010 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309)
1 by 1 by 1 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix qeq/reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix qeq/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 332.3 | 332.3 | 332.3 Mbytes
Step Temp Press Density Volume
0 300 25015.837 0.99996859 29916.212
10 348.83356 31131.298 0.99964273 29925.965
20 414.67243 27564.999 0.99979791 29921.32
Loop time of 15.4107 on 1 procs for 20 steps with 3000 atoms
Performance: 0.056 ns/day, 428.074 hours/ns, 1.298 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 11.413 | 11.413 | 11.413 | 0.0 | 74.06
Neigh | 0.57486 | 0.57486 | 0.57486 | 0.0 | 3.73
Comm | 0.0019709 | 0.0019709 | 0.0019709 | 0.0 | 0.01
Output | 0.00013211 | 0.00013211 | 0.00013211 | 0.0 | 0.00
Modify | 3.4192 | 3.4192 | 3.4192 | 0.0 | 22.19
Other | | 0.001104 | | | 0.01
Nlocal: 3000.00 ave 3000 max 3000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 5439.00 ave 5439 max 5439 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 786591.0 ave 786591 max 786591 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 786591
Ave neighs/atom = 262.19700
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:00:16

View File

@ -0,0 +1,128 @@
LAMMPS (29 Sep 2021)
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p s
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
reading atoms ...
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208)
3000 atoms
read_data CPU = 0.017 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309)
2 by 1 by 2 MPI processor grid
3000 atoms
replicate CPU = 0.002 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
fix 3 all efield 0.0 0.0 1.0
fix 4 all wall/reflect zlo EDGE zhi EDGE
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix qeq/reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix qeq/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 188.9 | 189.5 | 190.1 Mbytes
Step Temp Press Density Volume
0 300 25015.837 0.99996859 29916.212
10 348.83356 31131.298 0.99964273 29925.965
20 414.67243 27564.999 0.99979791 29921.32
Loop time of 5.71549 on 4 procs for 20 steps with 3000 atoms
Performance: 0.151 ns/day, 158.764 hours/ns, 3.499 timesteps/s
94.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 | 3.6678 | 3.8126 | 4.1402 | 9.8 | 66.71
Neigh | 0.31449 | 0.34639 | 0.38898 | 5.5 | 6.06
Comm | 0.032125 | 0.35935 | 0.50408 | 31.9 | 6.29
Output | 7.643e-05 | 0.00015959 | 0.00039876 | 0.0 | 0.00
Modify | 1.1534 | 1.1959 | 1.2283 | 3.0 | 20.92
Other | | 0.001099 | | | 0.02
Nlocal: 750.000 ave 757 max 738 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Nghost: 4219.00 ave 4232 max 4198 min
Histogram: 1 0 0 0 0 1 0 0 1 1
Neighs: 230549.0 ave 233374 max 225849 min
Histogram: 1 0 0 0 0 0 1 0 1 1
Total # of neighbors = 922196
Ave neighs/atom = 307.39867
Neighbor list builds = 6
Dangerous builds = 0
Total wall time: 0:00:06

View File

@ -0,0 +1,123 @@
LAMMPS (29 Sep 2021)
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
reading atoms ...
3000 atoms
read_data CPU = 0.010 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 1 by 1 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix qeq/reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix qeq/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 539.2 | 539.2 | 539.2 Mbytes
Step Temp Press Density Volume
0 300 780.33989 1 29915.273
10 301.29205 5433.7415 1 29915.273
20 297.90652 1572.6111 1 29915.273
Loop time of 17.5765 on 1 procs for 20 steps with 3000 atoms
Performance: 0.049 ns/day, 488.237 hours/ns, 1.138 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 13.806 | 13.806 | 13.806 | 0.0 | 78.55
Neigh | 0.34211 | 0.34211 | 0.34211 | 0.0 | 1.95
Comm | 0.0028155 | 0.0028155 | 0.0028155 | 0.0 | 0.02
Output | 0.00012279 | 0.00012279 | 0.00012279 | 0.0 | 0.00
Modify | 3.4248 | 3.4248 | 3.4248 | 0.0 | 19.49
Other | | 0.001008 | | | 0.01
Nlocal: 3000.00 ave 3000 max 3000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 11077.0 ave 11077 max 11077 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 971826.0 ave 971826 max 971826 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 971826
Ave neighs/atom = 323.94200
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:18

View File

@ -0,0 +1,123 @@
LAMMPS (29 Sep 2021)
# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)
boundary p p p
units real
atom_style charge
read_data data.water
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
reading atoms ...
3000 atoms
read_data CPU = 0.010 seconds
variable x index 1
variable y index 1
variable z index 1
replicate $x $y $z
replicate 1 $y $z
replicate 1 1 $z
replicate 1 1 1
Replicating atoms ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046)
1 by 2 by 2 MPI processor grid
3000 atoms
replicate CPU = 0.001 seconds
pair_style reaxff NULL safezone 3.0 mincap 150
pair_coeff * * qeq_ff.water O H
WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296)
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
velocity all create 300.0 4928459 rot yes dist gaussian
fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400
fix 2 all nvt temp 300 300 50.0
timestep 0.5
thermo 10
thermo_style custom step temp press density vol
run 20
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- pair reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
- fix qeq/reaxff command:
@Article{Aktulga12,
author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama},
title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques},
journal = {Parallel Computing},
year = 2012,
volume = 38,
pages = {245--259}
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10.5
ghost atom cutoff = 10.5
binsize = 5.25, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair reaxff, perpetual
attributes: half, newton off, ghost
pair build: half/bin/newtoff/ghost
stencil: full/ghost/bin/3d
bin: standard
(2) fix qeq/reaxff, perpetual, copy from (1)
attributes: half, newton off, ghost
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 260.5 | 262.2 | 263.6 Mbytes
Step Temp Press Density Volume
0 300 780.34006 1 29915.273
10 301.29205 5433.7414 1 29915.273
20 297.90652 1572.6111 1 29915.273
Loop time of 6.79573 on 4 procs for 20 steps with 3000 atoms
Performance: 0.127 ns/day, 188.770 hours/ns, 2.943 timesteps/s
93.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.4827 | 4.6649 | 4.866 | 6.6 | 68.64
Neigh | 0.16329 | 0.17253 | 0.18074 | 1.6 | 2.54
Comm | 0.44871 | 0.64804 | 0.82827 | 17.5 | 9.54
Output | 9.9269e-05 | 0.00013061 | 0.00022048 | 0.0 | 0.00
Modify | 1.3028 | 1.3091 | 1.3201 | 0.6 | 19.26
Other | | 0.001043 | | | 0.02
Nlocal: 750.000 ave 759 max 735 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Nghost: 6230.50 ave 6256 max 6190 min
Histogram: 1 0 0 0 0 1 0 0 1 1
Neighs: 277008.0 ave 280943 max 271394 min
Histogram: 1 0 0 0 0 1 0 0 1 1
Total # of neighbors = 1108032
Ave neighs/atom = 369.34400
Neighbor list builds = 2
Dangerous builds = 0
Total wall time: 0:00:07

View File

@ -0,0 +1,83 @@
Reactive MD-force field: QEq Water [CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)]
39 ! Number of general parameters
50.0000 !Overcoordination parameter
9.5469 !Overcoordination parameter
26.5405 !Valency angle conjugation parameter
1.7224 !Triple bond stabilisation parameter
6.8702 !Triple bond stabilisation parameter
60.4850 !C2-correction
1.0588 !Undercoordination parameter
4.6000 !Triple bond stabilisation parameter
12.1176 !Undercoordination parameter
13.3056 !Undercoordination parameter
-70.5044 !Triple bond stabilization energy
0.0000 !Lower Taper-radius
10.0000 !Upper Taper-radius
2.8793 !Not used
33.8667 !Valency undercoordination
6.0891 !Valency angle/lone pair parameter
1.0563 !Valency angle
2.0384 !Valency angle parameter
6.1431 !Not used
6.9290 !Double bond/angle parameter
0.3989 !Double bond/angle parameter: overcoord
3.9954 !Double bond/angle parameter: overcoord
-2.4837 !Not used
5.7796 !Torsion/BO parameter
10.0000 !Torsion overcoordination
1.9487 !Torsion overcoordination
-1.2327 !Conjugation 0 (not used)
2.1645 !Conjugation
1.5591 !vdWaals shielding
0.1000 !Cutoff for bond order (*100)
2.1365 !Valency angle conjugation parameter
0.6991 !Overcoordination parameter
50.0000 !Overcoordination parameter
1.8512 !Valency/lone pair parameter
0.5000 !Not used
20.0000 !Not used
5.0000 !Molecular energy (not used)
0.0000 !Molecular energy (not used)
2.6962 !Valency angle conjugation parameter
3 ! Nr of atoms; cov.r; valency;a.m;Rvdw;Evdw;gammaEEM;cov.r2;#
alfa;gammavdW;valency;Eunder;Eover;chiEEM;etaEEM;n.u.
cov r3;Elp;Heat inc.;n.u.;n.u.;n.u.;n.u.
ov/un;val1;n.u.;val3,vval4
H 0.8930 1.0000 1.0080 1.3550 0.0930 0.8203 -0.1000 1.0000
8.2230 33.2894 1.0000 0.0000 121.1250 3.7248 9.6093 1.0000
-0.1000 0.0000 61.6606 3.0408 2.4197 0.0003 1.0698 0.0000
-19.4571 4.2733 1.0338 1.0000 2.8793 0.0000 0.0000 0.0000
O 1.2450 2.0000 15.9990 2.3890 0.1000 1.0898 1.0548 6.0000
9.7300 13.8449 4.0000 37.5000 116.0768 8.5000 8.3122 2.0000
0.9049 0.4056 59.0626 3.5027 0.7640 0.0021 0.9745 0.0000
-3.5500 2.9000 1.0493 4.0000 2.9225 0.0000 0.0000 0.0000
X -0.1000 2.0000 1.0080 2.0000 0.0000 1.0000 -0.1000 6.0000
10.0000 2.5000 4.0000 0.0000 0.0000 8.5000 1.5000 0.0000
-0.1000 0.0000 -2.3700 8.7410 13.3640 0.6690 0.9745 0.0000
-11.0000 2.7466 1.0338 2.0000 2.8793 0.0000 0.0000 0.0000
3 ! Nr of bonds; Edis1;LPpen;n.u.;pbe1;pbo5;13corr;pbo6
pbe2;pbo3;pbo4;n.u.;pbo1;pbo2;ovcorr
1 1 153.3934 0.0000 0.0000 -0.4600 0.0000 1.0000 6.0000 0.7300
6.2500 1.0000 0.0000 1.0000 -0.0790 6.0552 0.0000 0.0000
2 2 142.2858 145.0000 50.8293 0.2506 -0.1000 1.0000 29.7503 0.6051
0.3451 -0.1055 9.0000 1.0000 -0.1225 5.5000 1.0000 0.0000
1 2 160.0000 0.0000 0.0000 -0.5725 0.0000 1.0000 6.0000 0.5626
1.1150 1.0000 0.0000 0.0000 -0.0920 4.2790 0.0000 0.0000
1 ! Nr of off-diagonal terms; Ediss;Ro;gamma;rsigma;rpi;rpi2
1 2 0.0283 1.2885 10.9190 0.9215 -1.0000 -1.0000
6 ! Nr of angles;at1;at2;at3;Thetao,o;ka;kb;pv1;pv2
1 1 1 0.0000 27.9213 5.8635 0.0000 0.0000 0.0000 1.0400
2 2 2 80.7324 30.4554 0.9953 0.0000 1.6310 50.0000 1.0783
1 2 2 75.6935 50.0000 2.0000 0.0000 1.0000 0.0000 1.1680
1 2 1 85.8000 9.8453 2.2720 0.0000 2.8635 0.0000 1.5800
2 1 2 0.0000 15.0000 2.8900 0.0000 0.0000 0.0000 2.8774
1 1 2 0.0000 8.5744 3.0000 0.0000 0.0000 0.0000 1.0421
6 ! Nr of torsions;at1;at2;at3;at4;;V1;V2;V3;V2(BO);vconj;n.u;n
1 2 2 1 2.5000 -4.0000 0.9000 -2.5000 -1.0000 0.0000 0.0000
1 2 2 2 0.8302 -4.0000 -0.7763 -2.5000 -1.0000 0.0000 0.0000
2 2 2 2 -2.5000 -4.0000 1.0000 -2.5000 -1.0000 0.0000 0.0000
0 1 1 0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0 1 2 0 0.0000 0.1000 0.0200 -2.5415 0.0000 0.0000 0.0000
0 2 2 0 0.5511 25.4150 1.1330 -5.1903 -1.0000 0.0000 0.0000
1 ! Nr of hydrogen bonds;at1;at2;at3;Rhb;Dehb;vhb1
2 1 2 2.1200 -3.5800 1.4500 19.5000

View File

@ -487,7 +487,7 @@ vec_type dist_av(Vector_3 *va1,Vector_3 *va2,int n);
/*e optionally gives the indexes for maximal and minimal difference
va2 can be nullptr, then the norm of va1 is used */
vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=0, int *maxind=0);
vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=nullptr, int *maxind=nullptr);
//e finds suitable perpendicular to a vector
Vector_3 FindPerp(const Vector_3 &vAB);
@ -507,7 +507,7 @@ Vector_3 GetIScopei(const Vector_3 *varr,int *indarr,int n,Vector_3* box_min,Vec
// neue Funktionen
//e clears vector array with optional integer index
void clear_vecarri(int n,Vector_3 *vec, int *ind=0);
void clear_vecarri(int n,Vector_3 *vec, int *ind=nullptr);
//e reflects the vector ini+dir*t+0.5*force*t^2 to be inside a box limited by 0 and box sizes
//e changes dir according to the final state

View File

@ -88,7 +88,7 @@ struct OCLProperties {
cl_uint clock;
size_t work_group_size;
size_t work_item_size[3];
bool double_precision;
bool has_double_precision;
int preferred_vector_width32, preferred_vector_width64;
int alignment;
size_t timer_resolution;
@ -226,7 +226,7 @@ class UCL_Device {
inline bool double_precision() { return double_precision(_device); }
/// Returns true if double precision is support for the device
inline bool double_precision(const int i)
{return _properties[i].double_precision;}
{return _properties[i].has_double_precision;}
/// Get the number of compute units on the current device
inline unsigned cus() { return cus(_device); }
@ -569,9 +569,9 @@ void UCL_Device::add_properties(cl_device_id device_list) {
CL_SAFE_CALL(clGetDeviceInfo(device_list,CL_DEVICE_DOUBLE_FP_CONFIG,
sizeof(double_avail),&double_avail,nullptr));
if ((double_avail & double_mask) == double_mask)
op.double_precision=true;
op.has_double_precision=true;
else
op.double_precision=false;
op.has_double_precision=false;
CL_SAFE_CALL(clGetDeviceInfo(device_list,
CL_DEVICE_PROFILING_TIMER_RESOLUTION,

View File

@ -1039,10 +1039,18 @@ Device<PRECISION,ACC_PRECISION> global_device;
using namespace LAMMPS_AL;
bool lmp_has_gpu_device()
// check if a suitable GPU is present.
// for mixed and double precision GPU library compilation
// also the GPU needs to support double precision.
bool lmp_has_compatible_gpu_device()
{
UCL_Device gpu;
return (gpu.num_platforms() > 0);
bool compatible_gpu = gpu.num_platforms() > 0;
#if defined(_SINGLE_DOUBLE) || defined(_DOUBLE_DOUBLE)
if (compatible_gpu && !gpu.double_precision(0))
compatible_gpu = false;
#endif
return compatible_gpu;
}
std::string lmp_gpu_device_info()

View File

@ -49,9 +49,9 @@ private:
POEMSChain * AddNewChain(POEMSNode * currentNode);
bool setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNode);
public:
SystemProcessor(void);
SystemProcessor();
~SystemProcessor(void) {
~SystemProcessor() {
headsOfSystems.DeleteValues();
for(int i = 0; i < ringsInSystem.GetNumElements(); i++)
{
@ -66,7 +66,7 @@ public:
int getNumberOfHeadChains();
};
SystemProcessor::SystemProcessor(void){
SystemProcessor::SystemProcessor(){
// register callback for deleting auxiliary data from tree nodes.
nodes.SetDeleteAuxData(&POEMSNodeDelete_cb);
}
@ -271,14 +271,14 @@ bool SystemProcessor::setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNo
return true; //return true to indicate that this is the first time the link has been visited
}
List<POEMSChain> * SystemProcessor::getSystemData(void) //Gets the list of POEMSChains that comprise the system. Might eventually only
List<POEMSChain> * SystemProcessor::getSystemData() //Gets the list of POEMSChains that comprise the system. Might eventually only
//return chains linked to the reference plane, but currently returns every chain
//in the system.
{
return &headsOfSystems;
}
int SystemProcessor::getNumberOfHeadChains(void) //This function isnt implemented yet, and might be taken out entirely; this was a holdover
int SystemProcessor::getNumberOfHeadChains() //This function isnt implemented yet, and might be taken out entirely; this was a holdover
//from when I intended to return an array of chain pointers, rather than a list of chains
//It will probably be deleted once I finish figuring out exactly what needs to be returned
{

View File

@ -132,6 +132,6 @@ Body* NewBody(int type){
case PARTICLE : // A Particle
return new Particle;
default : // error
return 0;
return nullptr;
}
}

View File

@ -30,8 +30,7 @@
Body23Joint::Body23Joint(){
DimQandU(4,2);
}
Body23Joint::~Body23Joint(){
}
Body23Joint::~Body23Joint() = default;
JointType Body23Joint::GetType(){
return BODY23JOINT;

View File

@ -24,7 +24,7 @@ using namespace std;
ColMatMap::ColMatMap(){
numrows = 0;
elements = 0;
elements = nullptr;
}
ColMatMap::~ColMatMap(){
@ -33,7 +33,7 @@ ColMatMap::~ColMatMap(){
ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(A.numrows);
for(int i=0;i<numrows;i++)
elements[i] = A.elements[i];
@ -41,7 +41,7 @@ ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor
ColMatMap::ColMatMap(ColMatrix& A){ // copy constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(A.GetNumRows());
for(int i=0;i<numrows;i++)
elements[i] = A.GetElementPointer(i);
@ -63,7 +63,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
ColMatMap::ColMatMap(int m){ // size constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(m);
}

View File

@ -25,7 +25,7 @@ using namespace std;
ColMatrix::ColMatrix(){
numrows = 0;
elements = 0;
elements = nullptr;
}
ColMatrix::~ColMatrix(){
@ -34,7 +34,7 @@ ColMatrix::~ColMatrix(){
ColMatrix::ColMatrix(const ColMatrix& A){ // copy constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(A.numrows);
for(int i=0;i<numrows;i++)
elements[i] = A.elements[i];
@ -42,7 +42,7 @@ ColMatrix::ColMatrix(const ColMatrix& A){ // copy constructor
ColMatrix::ColMatrix(const VirtualColMatrix& A){ // copy constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(A.GetNumRows());
for(int i=0;i<numrows;i++)
elements[i] = A.BasicGet(i);
@ -54,7 +54,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
exit(1);
}
numrows = 0;
elements = 0;
elements = nullptr;
Dim(A.GetNumRows());
for(int i=0;i<numrows;i++)
elements[i] = A.BasicGet(i,0);
@ -62,7 +62,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
ColMatrix::ColMatrix(int m){ // size constructor
numrows = 0;
elements = 0;
elements = nullptr;
Dim(m);
}

View File

@ -22,11 +22,6 @@
using namespace std;
FixedPoint::FixedPoint(){
}
FixedPoint::~FixedPoint(){
}
FixedPoint::FixedPoint(double x, double y, double z){
position(1) = x;
position(2) = y;

View File

@ -24,8 +24,8 @@
class FixedPoint : public Point {
public:
FixedPoint();
~FixedPoint();
FixedPoint() = default;
~FixedPoint() = default;
FixedPoint(double x, double y, double z);
FixedPoint(Vect3& v);
PointType GetType();

View File

@ -30,8 +30,7 @@ FreeBodyJoint::FreeBodyJoint(){
DimQandU(7,6);
}
FreeBodyJoint::~FreeBodyJoint(){
}
FreeBodyJoint::~FreeBodyJoint() = default;
JointType FreeBodyJoint::GetType(){
return FREEBODYJOINT;

View File

@ -33,8 +33,7 @@ InertialFrame::InertialFrame(){
alpha.Zeros();
alpha_t.Zeros();
}
InertialFrame::~InertialFrame(){
}
InertialFrame::~InertialFrame() = default;
BodyType InertialFrame::GetType(){
return INERTIALFRAME;

View File

@ -27,14 +27,13 @@
using namespace std;
Joint::Joint(){
body1 = body2 = 0;
point1 = point2 = 0;
body1 = body2 = nullptr;
point1 = point2 = nullptr;
pk_C_ko.Identity();
pk_C_k.Identity();
}
Joint::~Joint(){
}
Joint::~Joint() = default;
void Joint::SetBodies(Body* b1, Body* b2){
body1 = b1;
@ -165,7 +164,7 @@ Body* Joint::GetBody2(){
Body* Joint::OtherBody(Body* body){
if(body1 == body) return body2;
if(body2 == body) return body1;
return 0;
return nullptr;
}
Vect3* Joint::GetR12(){
@ -243,6 +242,6 @@ Joint* NewJoint(int type){
case SPHERICALJOINT : return new SphericalJoint;
case BODY23JOINT : return new Body23Joint;
case MIXEDJOINT : return new MixedJoint;
default : return 0; // error
default : return nullptr; // error
}
}

View File

@ -24,8 +24,6 @@ using namespace std;
Mat3x3::Mat3x3(){
numrows = numcols = 3;
}
Mat3x3::~Mat3x3(){
}
Mat3x3::Mat3x3(const Mat3x3& A){
numrows = numcols = 3;

View File

@ -30,7 +30,7 @@ class Mat3x3 : public VirtualMatrix {
double elements[3][3];
public:
Mat3x3();
~Mat3x3();
~Mat3x3() = default;
Mat3x3(const Mat3x3& A); // copy constructor
Mat3x3(const VirtualMatrix& A); // copy constructor

View File

@ -23,8 +23,6 @@ using namespace std;
Mat4x4::Mat4x4(){
numrows = numcols = 4;
}
Mat4x4::~Mat4x4(){
}
Mat4x4::Mat4x4(const Mat4x4& A){
numrows = numcols = 4;

View File

@ -28,7 +28,7 @@ class Mat4x4 : public VirtualMatrix {
double elements[4][4];
public:
Mat4x4();
~Mat4x4();
~Mat4x4() = default;
Mat4x4(const Mat4x4& A); // copy constructor
Mat4x4(const VirtualMatrix& A); // copy constructor

View File

@ -23,8 +23,6 @@ using namespace std;
Mat6x6::Mat6x6(){
numrows = numcols = 6;
}
Mat6x6::~Mat6x6(){
}
Mat6x6::Mat6x6(const Mat6x6& A){
numrows = numcols = 6;

View File

@ -29,7 +29,7 @@ class Mat6x6 : public VirtualMatrix {
double elements[6][6];
public:
Mat6x6();
~Mat6x6();
~Mat6x6() = default;
Mat6x6(const Mat6x6& A); // copy constructor
Mat6x6(const VirtualMatrix& A); // copy constructor

View File

@ -24,8 +24,8 @@ using namespace std;
Matrix::Matrix(){
numrows = numcols = 0;
rows = 0;
elements = 0;
rows = nullptr;
elements = nullptr;
}
Matrix::~Matrix(){
@ -35,8 +35,8 @@ Matrix::~Matrix(){
Matrix::Matrix(const Matrix& A){
numrows = numcols = 0;
rows = 0;
elements = 0;
rows = nullptr;
elements = nullptr;
Dim(A.numrows,A.numcols);
for(int i=0;i<numrows*numcols;i++)
elements[i] = A.elements[i];
@ -44,8 +44,8 @@ Matrix::Matrix(const Matrix& A){
Matrix::Matrix(const VirtualMatrix& A){
numrows = numcols = 0;
rows = 0;
elements = 0;
rows = nullptr;
elements = nullptr;
Dim(A.GetNumRows(),A.GetNumCols());
for(int i=0;i<numrows;i++)
for(int j=0;j<numcols;j++)
@ -54,8 +54,8 @@ Matrix::Matrix(const VirtualMatrix& A){
Matrix::Matrix(int m, int n){
numrows = numcols = 0;
rows = 0;
elements = 0;
rows = nullptr;
elements = nullptr;
this->Dim(m,n);
}

View File

@ -36,7 +36,7 @@ VirtualMatrix* NewMatrix(int type){
case MAT4X4 : return new Mat4x4;
case VECT3 : return new Vect3;
case VECT4 : return new Vect4;
default : return 0; // error!
default : return nullptr; // error!
}
}

View File

@ -26,11 +26,9 @@
MixedJoint::MixedJoint(){
}
MixedJoint::MixedJoint() = default;
MixedJoint::~MixedJoint(){
}
MixedJoint::~MixedJoint() = default;
JointType MixedJoint::GetType(){
return MIXEDJOINT;

View File

@ -30,9 +30,9 @@ using namespace std;
OnBody::OnBody(){
system_body = 0;
system_joint = 0;
parent = 0;
system_body = nullptr;
system_joint = nullptr;
parent = nullptr;
// these terms have zeros which are NEVER overwritten
sI.Zeros();

View File

@ -28,8 +28,8 @@ using namespace std;
OnSolver::OnSolver(){
numbodies = 0;
bodyarray = 0;
q=0;u=0; qdot=0; udot=0; qdotdot=0;
bodyarray = nullptr;
q=nullptr;u=nullptr; qdot=nullptr; udot=nullptr; qdotdot=nullptr;
type = ONSOLVER;
}

View File

@ -19,11 +19,9 @@
#include "particle.h"
#include "fixedpoint.h"
Particle::Particle(){
}
Particle::Particle() = default;
Particle::~Particle(){
}
Particle::~Particle() = default;
BodyType Particle::GetType(){
return PARTICLE;

View File

@ -65,7 +65,7 @@ template<class T> ListElement<T>::ListElement(){
}
template<class T> ListElement<T>::ListElement(T* v){
next = prev = 0;
next = prev = nullptr;
value = v;
}
@ -77,7 +77,7 @@ template<class T> ListElement<T>::~ListElement(){
//
template<class S> List<S>::List(){
head = tail = 0;
head = tail = nullptr;
numelements = 0;
}
@ -181,7 +181,7 @@ template<class S> S** List<S>::CreateArray(){
S** array = new S* [numelements];
ListElement<S>* ele = head;
for(int i=0;ele != 0;i++){
for(int i=0;ele != nullptr;i++){
array[i] = ele->value;
ele = ele->next;
}

View File

@ -20,7 +20,7 @@
#include <cstring>
POEMSObject::POEMSObject(){
name = 0;
name = nullptr;
ChangeName((const char*)"unnamed");
ID = -1;
}

View File

@ -64,8 +64,8 @@ protected:
public:
// constructor, destructor
Tree(void);
~Tree(void)
Tree();
~Tree()
{
ClearTree(root);
};
@ -85,19 +85,19 @@ public:
void Insert(const int& item, const int& data, void * AuxData = nullptr);
void Delete(const int& item);
void AVLInsert(TreeNode* &tree, TreeNode* newNode, int &reviseBalanceFactor);
void ClearList(void);
void ClearList();
// tree specific methods
void Update(const int& item);
TreeNode *GetRoot(void) const;
TreeNode *GetRoot() const;
};
// constructor
Tree::Tree(void)
Tree::Tree()
{
root = 0;
current = 0;
root = nullptr;
current = nullptr;
size = 0;
DeleteAuxData = nullptr;
}
@ -105,7 +105,7 @@ Tree::Tree(void)
// return root pointer
TreeNode *Tree::GetRoot(void) const
TreeNode *Tree::GetRoot() const
{
return root;
}
@ -603,7 +603,7 @@ void Tree::ClearTree(TreeNode * &t)
}
// delete all nodes in list
void Tree::ClearList(void)
void Tree::ClearList()
{
delete root;
delete current;

View File

@ -27,23 +27,23 @@ TreeNode::TreeNode (const int & item, TreeNode *lptr,TreeNode *rptr,
// return left
TreeNode* TreeNode::Left(void)
TreeNode* TreeNode::Left()
{
return left;
}
// return right
TreeNode* TreeNode::Right(void)
TreeNode* TreeNode::Right()
{
return right;
}
int TreeNode::GetBalanceFactor(void)
int TreeNode::GetBalanceFactor()
{
return balanceFactor;
}
int TreeNode::GetData(void)
int TreeNode::GetData()
{
return data;
}

View File

@ -21,8 +21,7 @@
Point::Point(){
position.Zeros();
}
Point::~Point(){
}
Point::~Point() = default;
bool Point::ReadIn(std::istream& in){
return ReadInPointData(in);
@ -39,6 +38,6 @@ Point* NewPoint(int type){
case FIXEDPOINT : // A Fixed Point
return new FixedPoint();
default : // error
return 0;
return nullptr;
}
}

View File

@ -27,8 +27,7 @@ PrismaticJoint::PrismaticJoint(){
u.Dim(1);
udot.Dim(1);
}
PrismaticJoint::~PrismaticJoint(){
}
PrismaticJoint::~PrismaticJoint() = default;
JointType PrismaticJoint::GetType(){
return PRISMATICJOINT;

View File

@ -29,8 +29,7 @@ RevoluteJoint::RevoluteJoint(){
SetAxisPK(axis);
}
RevoluteJoint::~RevoluteJoint(){
}
RevoluteJoint::~RevoluteJoint() = default;
JointType RevoluteJoint::GetType(){
return REVOLUTEJOINT;

View File

@ -20,10 +20,8 @@
using namespace std;
RigidBody::RigidBody(){
}
RigidBody::~RigidBody(){
}
RigidBody::RigidBody() = default;
RigidBody::~RigidBody() = default;
BodyType RigidBody::GetType(){
return RIGIDBODY;

View File

@ -24,7 +24,7 @@ using namespace std;
RowMatrix::RowMatrix(){
numcols = 0;
elements = 0;
elements = nullptr;
}
RowMatrix::~RowMatrix(){
@ -33,7 +33,7 @@ RowMatrix::~RowMatrix(){
RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor
numcols = 0;
elements = 0;
elements = nullptr;
Dim(A.numcols);
for(int i=0;i<numcols;i++)
elements[i] = A.elements[i];
@ -41,7 +41,7 @@ RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor
RowMatrix::RowMatrix(const VirtualRowMatrix& A){ // copy constructor
numcols = 0;
elements = 0;
elements = nullptr;
Dim(A.GetNumCols());
for(int i=0;i<numcols;i++)
elements[i] = A.BasicGet(i);
@ -53,7 +53,7 @@ RowMatrix::RowMatrix(const VirtualMatrix& A){ // copy constructor
exit(1);
}
numcols = 0;
elements = 0;
elements = nullptr;
Dim(A.GetNumCols());
for(int i=0;i<numcols;i++)
elements[i] = A.BasicGet(i,0);
@ -61,7 +61,7 @@ RowMatrix::RowMatrix(const VirtualMatrix& A){ // copy constructor
RowMatrix::RowMatrix(int n){ // size constructor
numcols = 0;
elements = 0;
elements = nullptr;
Dim(n);
}

View File

@ -19,12 +19,9 @@
#include "system.h"
#include "matrices.h"
Solver::Solver(){
Solver::Solver() = default;
}
Solver::~Solver(){
}
Solver::~Solver() = default;
void Solver::SetSystem(System* s){
system = s;

View File

@ -30,8 +30,7 @@
SphericalJoint::SphericalJoint(){
DimQandU(4,3);
}
SphericalJoint::~SphericalJoint(){
}
SphericalJoint::~SphericalJoint() = default;
JointType SphericalJoint::GetType(){
return SPHERICALJOINT;

View File

@ -179,7 +179,7 @@ void System::WriteOut(ostream& out){
int i = 0;
Body* body;
ListElement<Body>* b_ele = bodies.GetHeadElement();
while(b_ele !=0){
while(b_ele !=nullptr){
out << i << ' ';
body = b_ele->value;
@ -200,7 +200,7 @@ void System::WriteOut(ostream& out){
i = 0;
Joint* joint;
ListElement<Joint>* j_ele = joints.GetHeadElement();
while(j_ele !=0){
while(j_ele !=nullptr){
out << i << ' ';
joint = j_ele->value;

View File

@ -23,8 +23,6 @@ using namespace std;
Vect3::Vect3(){
numrows = 3; numcols = 1;
}
Vect3::~Vect3(){
}
Vect3::Vect3(const Vect3& A){ // copy constructor
numrows = 3; numcols = 1;

View File

@ -30,7 +30,7 @@ class Vect3 : public VirtualColMatrix {
double elements[3];
public:
Vect3();
~Vect3();
~Vect3() = default;
Vect3(const Vect3& A); // copy constructor
Vect3(const VirtualMatrix& A); // copy constructor

View File

@ -23,8 +23,6 @@ using namespace std;
Vect4::Vect4(){
numrows = 4; numcols = 1;
}
Vect4::~Vect4(){
}
Vect4::Vect4(const Vect4& A){ // copy constructor
numrows = 4; numcols = 1;

View File

@ -28,7 +28,7 @@ class Vect4 : public VirtualColMatrix {
double elements[4];
public:
Vect4();
~Vect4();
~Vect4() = default;
Vect4(const Vect4& A); // copy constructor
Vect4(const VirtualMatrix& A); // copy constructor

View File

@ -23,8 +23,6 @@ using namespace std;
Vect6::Vect6(){
numrows = 6; numcols = 1;
}
Vect6::~Vect6(){
}
Vect6::Vect6(const Vect6& A){ // copy constructor
numrows = 6; numcols = 1;

View File

@ -29,7 +29,7 @@ class Vect6 : public VirtualColMatrix {
double elements[6];
public:
Vect6();
~Vect6();
~Vect6() = default;
Vect6(const Vect6& A); // copy constructor
Vect6(const VirtualMatrix& A); // copy constructor

View File

@ -25,9 +25,6 @@ VirtualColMatrix::VirtualColMatrix(){
numcols = 1;
}
VirtualColMatrix::~VirtualColMatrix(){
}
double& VirtualColMatrix::operator_2int(int i, int j){
if(j!=1){
cerr << "matrix index invalid in operator ()" << endl;

View File

@ -25,7 +25,7 @@
class VirtualColMatrix : public VirtualMatrix {
public:
VirtualColMatrix();
~VirtualColMatrix();
~VirtualColMatrix() = default;
double& operator_2int (int i, int j); // array access
double Get_2int (int i, int j) const;
void Set_2int (int i, int j, double value);

View File

@ -26,8 +26,7 @@ VirtualMatrix::VirtualMatrix(){
numrows = numcols = 0;
}
VirtualMatrix::~VirtualMatrix(){
}
VirtualMatrix::~VirtualMatrix()= default;
int VirtualMatrix::GetNumRows() const {
return numrows;

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