Merge branch 'develop' into multi-config-support
# Conflicts: # cmake/Modules/GTest.cmake
This commit is contained in:
@ -617,15 +617,12 @@ foreach(PKG_WITH_INCL CORESHELL QEQ OPENMP DPD-SMOOTH KOKKOS OPT INTEL GPU)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(PKG_PLUGIN)
|
if(PKG_PLUGIN)
|
||||||
if(BUILD_SHARED_LIBS)
|
target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN)
|
||||||
target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN)
|
endif()
|
||||||
else()
|
|
||||||
message(WARNING "Plugin loading will not work unless BUILD_SHARED_LIBS is enabled")
|
# link with -ldl or equivalent for plugin loading; except on Windows
|
||||||
endif()
|
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
# link with -ldl or equivalent for plugin loading; except on Windows
|
target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS})
|
||||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
|
||||||
target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|||||||
@ -23,6 +23,7 @@ OPT.
|
|||||||
:columns: 5
|
:columns: 5
|
||||||
|
|
||||||
* :doc:`accelerate/cos <fix_accelerate_cos>`
|
* :doc:`accelerate/cos <fix_accelerate_cos>`
|
||||||
|
* :doc:`acks2/reaxff (k) <fix_acks2_reaxff>`
|
||||||
* :doc:`adapt <fix_adapt>`
|
* :doc:`adapt <fix_adapt>`
|
||||||
* :doc:`adapt/fep <fix_adapt_fep>`
|
* :doc:`adapt/fep <fix_adapt_fep>`
|
||||||
* :doc:`addforce <fix_addforce>`
|
* :doc:`addforce <fix_addforce>`
|
||||||
@ -103,6 +104,7 @@ OPT.
|
|||||||
* :doc:`manifoldforce <fix_manifoldforce>`
|
* :doc:`manifoldforce <fix_manifoldforce>`
|
||||||
* :doc:`mdi/engine <fix_mdi_engine>`
|
* :doc:`mdi/engine <fix_mdi_engine>`
|
||||||
* :doc:`meso/move <fix_meso_move>`
|
* :doc:`meso/move <fix_meso_move>`
|
||||||
|
* :doc:`mol/swap <fix_mol_swap>`
|
||||||
* :doc:`momentum (k) <fix_momentum>`
|
* :doc:`momentum (k) <fix_momentum>`
|
||||||
* :doc:`momentum/chunk <fix_momentum>`
|
* :doc:`momentum/chunk <fix_momentum>`
|
||||||
* :doc:`move <fix_move>`
|
* :doc:`move <fix_move>`
|
||||||
|
|||||||
@ -29,7 +29,9 @@ of code in the header before include guards:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#ifdef FIX_CLASS
|
#ifdef FIX_CLASS
|
||||||
FixStyle(print/vel,FixPrintVel)
|
// clang-format off
|
||||||
|
FixStyle(print/vel,FixPrintVel);
|
||||||
|
// clang-format on
|
||||||
#else
|
#else
|
||||||
/* the definition of the FixPrintVel class comes here */
|
/* the definition of the FixPrintVel class comes here */
|
||||||
...
|
...
|
||||||
|
|||||||
@ -80,7 +80,7 @@ Lowercase directories
|
|||||||
+-------------+------------------------------------------------------------------+
|
+-------------+------------------------------------------------------------------+
|
||||||
| friction | frictional contact of spherical asperities between 2d surfaces |
|
| 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 |
|
| 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 |
|
| 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 |
|
| PACKAGES | examples for specific packages and contributed commands |
|
||||||
+------------+--------------------------------------------------------------------------------------------------+
|
+------------+--------------------------------------------------------------------------------------------------+
|
||||||
|
|||||||
@ -166,6 +166,7 @@ page are followed by one or more of (g,i,k,o,t) to indicate which
|
|||||||
accelerated styles exist.
|
accelerated styles exist.
|
||||||
|
|
||||||
* :doc:`accelerate/cos <fix_accelerate_cos>` - apply cosine-shaped acceleration to atoms
|
* :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 <fix_adapt>` - change a simulation parameter over time
|
||||||
* :doc:`adapt/fep <fix_adapt_fep>` - enhanced version of fix adapt
|
* :doc:`adapt/fep <fix_adapt_fep>` - enhanced version of fix adapt
|
||||||
* :doc:`addforce <fix_addforce>` - add a force to each atom
|
* :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:`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:`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:`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 <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:`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
|
* :doc:`move <fix_move>` - move atoms in a prescribed fashion
|
||||||
|
|||||||
118
doc/src/fix_acks2_reaxff.rst
Normal file
118
doc/src/fix_acks2_reaxff.rst
Normal 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).
|
||||||
@ -73,51 +73,51 @@ is the same after the swap as it was before the swap, even though the
|
|||||||
atom masses have changed.
|
atom masses have changed.
|
||||||
|
|
||||||
The *semi-grand* keyword can be set to *yes* to switch to the
|
The *semi-grand* keyword can be set to *yes* to switch to the
|
||||||
semi-grand canonical ensemble as discussed in :ref:`(Sadigh) <Sadigh>`. This
|
semi-grand canonical ensemble as discussed in :ref:`(Sadigh)
|
||||||
means that the total number of each particle type does not need to be
|
<Sadigh>`. This means that the total number of each particle type does
|
||||||
conserved. The default is *no*, which means that the only kind of swap
|
not need to be conserved. The default is *no*, which means that the
|
||||||
allowed exchanges an atom of one type with an atom of a different
|
only kind of swap allowed exchanges an atom of one type with an atom
|
||||||
given type. In other words, the relative mole fractions of the swapped
|
of a different given type. In other words, the relative mole fractions
|
||||||
atoms remains constant. Whereas in the semi-grand canonical ensemble,
|
of the swapped atoms remains constant. Whereas in the semi-grand
|
||||||
the composition of the system can change. Note that when using
|
canonical ensemble, the composition of the system can change. Note
|
||||||
*semi-grand*, atoms in the fix group whose type is not listed
|
that when using *semi-grand*, atoms in the fix group whose type is not
|
||||||
in the *types* keyword are ineligible for attempted
|
listed in the *types* keyword are ineligible for attempted
|
||||||
conversion. An attempt is made to switch
|
conversion. An attempt is made to switch the selected atom (if
|
||||||
the selected atom (if eligible) to one of the other listed types
|
eligible) to one of the other listed types with equal
|
||||||
with equal probability. Acceptance of each attempt depends upon the Metropolis criterion.
|
probability. Acceptance of each attempt depends upon the Metropolis
|
||||||
|
criterion.
|
||||||
|
|
||||||
The *mu* keyword allows users to specify chemical
|
The *mu* keyword allows users to specify chemical potentials. This is
|
||||||
potentials. This is required and allowed only when using *semi-grand*\ .
|
required and allowed only when using *semi-grand*\ . All chemical
|
||||||
All chemical potentials are absolute, so there is one for
|
potentials are absolute, so there is one for each swap type listed
|
||||||
each swap type listed following the *types* keyword.
|
following the *types* keyword. In semi-grand canonical ensemble
|
||||||
In semi-grand canonical ensemble simulations the chemical composition
|
simulations the chemical composition of the system is controlled by
|
||||||
of the system is controlled by the difference in these values. So
|
the difference in these values. So shifting all values by a constant
|
||||||
shifting all values by a constant amount will have no effect
|
amount will have no effect on the simulation.
|
||||||
on the simulation.
|
|
||||||
|
|
||||||
This command may optionally use the *region* keyword to define swap
|
This command may optionally use the *region* keyword to define swap
|
||||||
volume. The specified region must have been previously defined with a
|
volume. The specified region must have been previously defined with a
|
||||||
:doc:`region <region>` command. It must be defined with side = *in*\ .
|
:doc:`region <region>` command. It must be defined with side = *in*\
|
||||||
Swap attempts occur only between atoms that are both within the
|
. Swap attempts occur only between atoms that are both within the
|
||||||
specified region. Swaps are not otherwise attempted.
|
specified region. Swaps are not otherwise attempted.
|
||||||
|
|
||||||
You should ensure you do not swap atoms belonging to a molecule, or
|
You should ensure you do not swap atoms belonging to a molecule, or
|
||||||
LAMMPS will soon generate an error when it tries to find those atoms.
|
LAMMPS will eventually generate an error when it tries to find those
|
||||||
LAMMPS will warn you if any of the atoms eligible for swapping have a
|
atoms. LAMMPS will warn you if any of the atoms eligible for swapping
|
||||||
non-zero molecule ID, but does not check for this at the time of
|
have a non-zero molecule ID, but does not check for this at the time of
|
||||||
swapping.
|
swapping.
|
||||||
|
|
||||||
If not using *semi-grand* this fix checks to ensure all atoms of the
|
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
|
given types have the same atomic charge. LAMMPS does not enforce this
|
||||||
in general, but it is needed for this fix to simplify the
|
in general, but it is needed for this fix to simplify the swapping
|
||||||
swapping procedure. Successful swaps will swap the atom type and charge
|
procedure. Successful swaps will swap the atom type and charge of the
|
||||||
of the swapped atoms. Conversely, when using *semi-grand*, it is assumed that all the atom
|
swapped atoms. Conversely, when using *semi-grand*, it is assumed that
|
||||||
types involved in switches have the same charge. Otherwise, charge
|
all the atom types involved in switches have the same
|
||||||
would not be conserved. As a consequence, no checks on atomic charges are
|
charge. Otherwise, charge would not be conserved. As a consequence, no
|
||||||
performed, and successful switches update the atom type but not the
|
checks on atomic charges are performed, and successful switches update
|
||||||
atom charge. While it is possible to use *semi-grand* with groups of
|
the atom type but not the atom charge. While it is possible to use
|
||||||
atoms that have different charges, these charges will not be changed when the
|
*semi-grand* with groups of atoms that have different charges, these
|
||||||
atom types change.
|
charges will not be changed when the atom types change.
|
||||||
|
|
||||||
Since this fix computes total potential energies before and after
|
Since this fix computes total potential energies before and after
|
||||||
proposed swaps, so even complicated potential energy calculations are
|
proposed swaps, so even complicated potential energy calculations are
|
||||||
@ -133,23 +133,24 @@ OK, including the following:
|
|||||||
Some fixes have an associated potential energy. Examples of such fixes
|
Some fixes have an associated potential energy. Examples of such fixes
|
||||||
include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
|
include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
|
||||||
:doc:`addforce <fix_addforce>`, :doc:`langevin <fix_langevin>`,
|
:doc:`addforce <fix_addforce>`, :doc:`langevin <fix_langevin>`,
|
||||||
:doc:`restrain <fix_restrain>`, :doc:`temp/berendsen <fix_temp_berendsen>`,
|
:doc:`restrain <fix_restrain>`, :doc:`temp/berendsen
|
||||||
:doc:`temp/rescale <fix_temp_rescale>`, and :doc:`wall fixes <fix_wall>`.
|
<fix_temp_berendsen>`, :doc:`temp/rescale <fix_temp_rescale>`, and
|
||||||
For that energy to be included in the total potential energy of the
|
:doc:`wall fixes <fix_wall>`. For that energy to be included in the
|
||||||
system (the quantity used when performing GCMC moves),
|
total potential energy of the system (the quantity used when
|
||||||
you MUST enable the :doc:`fix_modify <fix_modify>` *energy* option for
|
performing GCMC moves), you MUST enable the :doc:`fix_modify
|
||||||
that fix. The doc pages for individual :doc:`fix <fix>` commands
|
<fix_modify>` *energy* option for that fix. The doc pages for
|
||||||
specify if this should be done.
|
individual :doc:`fix <fix>` commands specify if this should be done.
|
||||||
|
|
||||||
Restart, fix_modify, output, run start/stop, minimize info
|
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
|
This fix writes the state of the fix to :doc:`binary restart files
|
||||||
number generator seed, the next timestep for MC exchanges, the number
|
<restart>`. This includes information about the random number
|
||||||
of exchange attempts and successes etc. See
|
generator seed, the next timestep for MC exchanges, the number of
|
||||||
the :doc:`read_restart <read_restart>` command for info on how to
|
exchange attempts and successes etc. See the :doc:`read_restart
|
||||||
re-specify a fix in an input script that reads a restart file, so that
|
<read_restart>` command for info on how to re-specify a fix in an
|
||||||
the operation of the fix continues in an uninterrupted fashion.
|
input script that reads a restart file, so that the operation of the
|
||||||
|
fix continues in an uninterrupted fashion.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -165,12 +166,13 @@ by various :doc:`output commands <Howto_output>`. The vector values are
|
|||||||
the following global cumulative quantities:
|
the following global cumulative quantities:
|
||||||
|
|
||||||
* 1 = swap attempts
|
* 1 = swap attempts
|
||||||
* 2 = swap successes
|
* 2 = swap accepts
|
||||||
|
|
||||||
The vector values calculated by this fix are "extensive".
|
The vector values calculated by this fix are "extensive".
|
||||||
|
|
||||||
No parameter of this fix can be used with the *start/stop* keywords of
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
the :doc:`run <run>` command. This fix is not invoked during
|
||||||
|
:doc:`energy minimization <minimize>`.
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
@ -184,7 +186,8 @@ Related commands
|
|||||||
|
|
||||||
:doc:`fix nvt <fix_nh>`, :doc:`neighbor <neighbor>`,
|
:doc:`fix nvt <fix_nh>`, :doc:`neighbor <neighbor>`,
|
||||||
:doc:`fix deposit <fix_deposit>`, :doc:`fix evaporate <fix_evaporate>`,
|
: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
|
Default
|
||||||
"""""""
|
"""""""
|
||||||
|
|||||||
170
doc/src/fix_mol_swap.rst
Normal file
170
doc/src/fix_mol_swap.rst
Normal 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.
|
||||||
@ -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
|
LAMMPS was built with that package. See the :doc:`Build package
|
||||||
<Build_package>` page for more info.
|
<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
|
Related commands
|
||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|||||||
@ -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 images of the same atom. Hence, it should not be used for
|
||||||
periodic cell dimensions less than 10 angstroms.
|
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
|
Related commands
|
||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ Syntax
|
|||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
keyword = *checkqeq* or *lgvdw* or *safezone* or *mincap* or *minhbonds*
|
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
|
*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
|
*lgvdw* value = *yes* or *no* = whether or not to use a low gradient vdW correction
|
||||||
*safezone* = factor used for array allocation
|
*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.
|
equilibration (QEq) model for handling the electrostatic interactions.
|
||||||
Therefore, by default, LAMMPS requires that either the
|
Therefore, by default, LAMMPS requires that either the
|
||||||
:doc:`fix qeq/reaxff <fix_qeq_reaxff>` or 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
|
*pair_style reaxff* when simulating a ReaxFF model, to equilibrate
|
||||||
the charges each timestep.
|
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
|
equilibration. In this case, the static charges you assign to each
|
||||||
atom will be used for computing the electrostatic interactions in
|
atom will be used for computing the electrostatic interactions in
|
||||||
the system. See the :doc:`fix qeq/reaxff <fix_qeq_reaxff>` or
|
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
|
Using the optional keyword *lgvdw* with the value *yes* turns on the
|
||||||
low-gradient correction of ReaxFF for long-range London Dispersion,
|
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:`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
|
Default
|
||||||
"""""""
|
"""""""
|
||||||
|
|||||||
@ -65,10 +65,8 @@ only enabled if LAMMPS was built with that package.
|
|||||||
See the :doc:`Build package <Build_package>` page for
|
See the :doc:`Build package <Build_package>` page for
|
||||||
more info. Plugins are not available on Windows.
|
more info. Plugins are not available on Windows.
|
||||||
|
|
||||||
For the loading of plugins to work the LAMMPS library must be
|
If plugins access functions or classes from a package, LAMMPS must
|
||||||
:ref:`compiled as a shared library <library>`. If plugins
|
have been compiled with that package included.
|
||||||
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)
|
Plugins are dependent on the LAMMPS binary interface (ABI)
|
||||||
and particularly the MPI library used. So they are not guaranteed
|
and particularly the MPI library used. So they are not guaranteed
|
||||||
|
|||||||
@ -254,7 +254,7 @@ for command_type, entries in index.items():
|
|||||||
|
|
||||||
print("Total number of style index entries:", total_index)
|
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')
|
skip_pair = ('meam/c','lj/sf','reax/c')
|
||||||
|
|
||||||
counter = 0
|
counter = 0
|
||||||
@ -282,7 +282,7 @@ if counter:
|
|||||||
counter = 0
|
counter = 0
|
||||||
|
|
||||||
counter += check_style_index("compute", compute, index["compute"])
|
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("angle_style", angle, index["angle_style"])
|
||||||
counter += check_style_index("bond_style", bond, index["bond_style"])
|
counter += check_style_index("bond_style", bond, index["bond_style"])
|
||||||
counter += check_style_index("dihedral_style", dihedral, index["dihedral_style"])
|
counter += check_style_index("dihedral_style", dihedral, index["dihedral_style"])
|
||||||
|
|||||||
@ -19,6 +19,7 @@ accuracies
|
|||||||
ach
|
ach
|
||||||
ackland
|
ackland
|
||||||
Ackland
|
Ackland
|
||||||
|
acks
|
||||||
acolor
|
acolor
|
||||||
acos
|
acos
|
||||||
Acta
|
Acta
|
||||||
@ -77,6 +78,7 @@ allocators
|
|||||||
allosws
|
allosws
|
||||||
AlO
|
AlO
|
||||||
Alonso
|
Alonso
|
||||||
|
Alperen
|
||||||
alphak
|
alphak
|
||||||
alphashrink
|
alphashrink
|
||||||
amap
|
amap
|
||||||
@ -685,6 +687,7 @@ diagonalized
|
|||||||
diagonalizers
|
diagonalizers
|
||||||
diagonalizing
|
diagonalizing
|
||||||
Diallo
|
Diallo
|
||||||
|
diblock
|
||||||
Dickel
|
Dickel
|
||||||
diel
|
diel
|
||||||
differentiable
|
differentiable
|
||||||
@ -1254,6 +1257,7 @@ hbond
|
|||||||
hcp
|
hcp
|
||||||
hdnnp
|
hdnnp
|
||||||
HDNNP
|
HDNNP
|
||||||
|
Hearn
|
||||||
heatconduction
|
heatconduction
|
||||||
Hebbeker
|
Hebbeker
|
||||||
Hebenstreit
|
Hebenstreit
|
||||||
@ -1280,6 +1284,7 @@ hgrid
|
|||||||
hhmrr
|
hhmrr
|
||||||
Hibbs
|
Hibbs
|
||||||
Higdon
|
Higdon
|
||||||
|
hiID
|
||||||
Hijazi
|
Hijazi
|
||||||
Hilger
|
Hilger
|
||||||
Hinestrosa
|
Hinestrosa
|
||||||
@ -1776,6 +1781,7 @@ Loewen
|
|||||||
logfile
|
logfile
|
||||||
logfreq
|
logfreq
|
||||||
logicals
|
logicals
|
||||||
|
loID
|
||||||
Lomdahl
|
Lomdahl
|
||||||
Lond
|
Lond
|
||||||
lookup
|
lookup
|
||||||
@ -3080,6 +3086,7 @@ Spearot
|
|||||||
specular
|
specular
|
||||||
spellcheck
|
spellcheck
|
||||||
Spellmeyer
|
Spellmeyer
|
||||||
|
Speybroeck
|
||||||
sph
|
sph
|
||||||
SPH
|
SPH
|
||||||
Spickermann
|
Spickermann
|
||||||
@ -3493,6 +3500,7 @@ Verlag
|
|||||||
verlet
|
verlet
|
||||||
Verlet
|
Verlet
|
||||||
versa
|
versa
|
||||||
|
Verstraelen
|
||||||
ves
|
ves
|
||||||
vflag
|
vflag
|
||||||
vhi
|
vhi
|
||||||
@ -3559,6 +3567,7 @@ vzcm
|
|||||||
vzi
|
vzi
|
||||||
Waals
|
Waals
|
||||||
Wadley
|
Wadley
|
||||||
|
Waroquier
|
||||||
wallstyle
|
wallstyle
|
||||||
walltime
|
walltime
|
||||||
Waltham
|
Waltham
|
||||||
|
|||||||
@ -75,7 +75,6 @@ eim: NaCl using the EIM potential
|
|||||||
ellipse: ellipsoidal particles in spherical solvent, 2d system
|
ellipse: ellipsoidal particles in spherical solvent, 2d system
|
||||||
flow: Couette and Poiseuille flow in a 2d channel
|
flow: Couette and Poiseuille flow in a 2d channel
|
||||||
friction: frictional contact of spherical asperities between 2d surfaces
|
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
|
gjf: use of fix langevin Gronbech-Jensen/Farago option
|
||||||
granregion: use of fix wall/region/gran as boundary on granular particles
|
granregion: use of fix wall/region/gran as boundary on granular particles
|
||||||
hugoniostat: Hugoniostat shock dynamics
|
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
|
indent: spherical indenter into a 2d solid
|
||||||
kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
|
kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
|
||||||
latte: use of LATTE density-functional tight-binding quantum code
|
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)
|
meam: MEAM test for SiC and shear (same as shear examples)
|
||||||
melt: rapid melt of 3d LJ system
|
melt: rapid melt of 3d LJ system
|
||||||
message: client/server coupling of 2 codes
|
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
|
conductivity (kappa) of a LJ liquid using 5 different methods. See
|
||||||
the KAPPA/README file for more info.
|
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
|
energy-evaluation engine in a iterative Monte Carlo energy-relaxation
|
||||||
loop.
|
loop.
|
||||||
|
|
||||||
|
|||||||
11733
examples/mc/data.bead
Normal file
11733
examples/mc/data.bead
Normal file
File diff suppressed because it is too large
Load Diff
44
examples/mc/in.mixed
Normal file
44
examples/mc/in.mixed
Normal 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
44
examples/mc/in.pure
Normal 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
|
||||||
|
|
||||||
164
examples/mc/log.13Oct21.mixed.g++.4
Normal file
164
examples/mc/log.13Oct21.mixed.g++.4
Normal 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
|
||||||
164
examples/mc/log.13Oct21.pure.g++.4
Normal file
164
examples/mc/log.13Oct21.pure.g++.4
Normal 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
|
||||||
1
examples/reaxff/water/acks2_ff.water
Symbolic link
1
examples/reaxff/water/acks2_ff.water
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../potentials/acks2_ff.water
|
||||||
3016
examples/reaxff/water/data.water
Normal file
3016
examples/reaxff/water/data.water
Normal file
File diff suppressed because it is too large
Load Diff
29
examples/reaxff/water/in.water.acks2
Normal file
29
examples/reaxff/water/in.water.acks2
Normal 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
|
||||||
31
examples/reaxff/water/in.water.acks2.field
Normal file
31
examples/reaxff/water/in.water.acks2.field
Normal 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
|
||||||
29
examples/reaxff/water/in.water.qeq
Normal file
29
examples/reaxff/water/in.water.qeq
Normal 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
|
||||||
31
examples/reaxff/water/in.water.qeq.field
Normal file
31
examples/reaxff/water/in.water.qeq.field
Normal 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
|
||||||
129
examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.1
Normal file
129
examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.1
Normal 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
|
||||||
129
examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.4
Normal file
129
examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.4
Normal 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
|
||||||
124
examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.1
Normal file
124
examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.1
Normal 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
|
||||||
124
examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.4
Normal file
124
examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.4
Normal 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
|
||||||
128
examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.1
Normal file
128
examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.1
Normal 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
|
||||||
128
examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.4
Normal file
128
examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.4
Normal 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
|
||||||
123
examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.1
Normal file
123
examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.1
Normal 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
|
||||||
123
examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.4
Normal file
123
examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.4
Normal 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
|
||||||
83
examples/reaxff/water/qeq_ff.water
Normal file
83
examples/reaxff/water/qeq_ff.water
Normal 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
|
||||||
@ -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
|
/*e optionally gives the indexes for maximal and minimal difference
|
||||||
va2 can be nullptr, then the norm of va1 is used */
|
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
|
//e finds suitable perpendicular to a vector
|
||||||
Vector_3 FindPerp(const Vector_3 &vAB);
|
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
|
// neue Funktionen
|
||||||
|
|
||||||
//e clears vector array with optional integer index
|
//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 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
|
//e changes dir according to the final state
|
||||||
|
|||||||
@ -88,7 +88,7 @@ struct OCLProperties {
|
|||||||
cl_uint clock;
|
cl_uint clock;
|
||||||
size_t work_group_size;
|
size_t work_group_size;
|
||||||
size_t work_item_size[3];
|
size_t work_item_size[3];
|
||||||
bool double_precision;
|
bool has_double_precision;
|
||||||
int preferred_vector_width32, preferred_vector_width64;
|
int preferred_vector_width32, preferred_vector_width64;
|
||||||
int alignment;
|
int alignment;
|
||||||
size_t timer_resolution;
|
size_t timer_resolution;
|
||||||
@ -226,7 +226,7 @@ class UCL_Device {
|
|||||||
inline bool double_precision() { return double_precision(_device); }
|
inline bool double_precision() { return double_precision(_device); }
|
||||||
/// Returns true if double precision is support for the device
|
/// Returns true if double precision is support for the device
|
||||||
inline bool double_precision(const int i)
|
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
|
/// Get the number of compute units on the current device
|
||||||
inline unsigned cus() { return cus(_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,
|
CL_SAFE_CALL(clGetDeviceInfo(device_list,CL_DEVICE_DOUBLE_FP_CONFIG,
|
||||||
sizeof(double_avail),&double_avail,nullptr));
|
sizeof(double_avail),&double_avail,nullptr));
|
||||||
if ((double_avail & double_mask) == double_mask)
|
if ((double_avail & double_mask) == double_mask)
|
||||||
op.double_precision=true;
|
op.has_double_precision=true;
|
||||||
else
|
else
|
||||||
op.double_precision=false;
|
op.has_double_precision=false;
|
||||||
|
|
||||||
CL_SAFE_CALL(clGetDeviceInfo(device_list,
|
CL_SAFE_CALL(clGetDeviceInfo(device_list,
|
||||||
CL_DEVICE_PROFILING_TIMER_RESOLUTION,
|
CL_DEVICE_PROFILING_TIMER_RESOLUTION,
|
||||||
|
|||||||
@ -1039,10 +1039,18 @@ Device<PRECISION,ACC_PRECISION> global_device;
|
|||||||
|
|
||||||
using namespace LAMMPS_AL;
|
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;
|
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()
|
std::string lmp_gpu_device_info()
|
||||||
|
|||||||
@ -49,9 +49,9 @@ private:
|
|||||||
POEMSChain * AddNewChain(POEMSNode * currentNode);
|
POEMSChain * AddNewChain(POEMSNode * currentNode);
|
||||||
bool setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNode);
|
bool setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNode);
|
||||||
public:
|
public:
|
||||||
SystemProcessor(void);
|
SystemProcessor();
|
||||||
|
|
||||||
~SystemProcessor(void) {
|
~SystemProcessor() {
|
||||||
headsOfSystems.DeleteValues();
|
headsOfSystems.DeleteValues();
|
||||||
for(int i = 0; i < ringsInSystem.GetNumElements(); i++)
|
for(int i = 0; i < ringsInSystem.GetNumElements(); i++)
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ public:
|
|||||||
int getNumberOfHeadChains();
|
int getNumberOfHeadChains();
|
||||||
};
|
};
|
||||||
|
|
||||||
SystemProcessor::SystemProcessor(void){
|
SystemProcessor::SystemProcessor(){
|
||||||
// register callback for deleting auxiliary data from tree nodes.
|
// register callback for deleting auxiliary data from tree nodes.
|
||||||
nodes.SetDeleteAuxData(&POEMSNodeDelete_cb);
|
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
|
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
|
//return chains linked to the reference plane, but currently returns every chain
|
||||||
//in the system.
|
//in the system.
|
||||||
{
|
{
|
||||||
return &headsOfSystems;
|
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
|
//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
|
//It will probably be deleted once I finish figuring out exactly what needs to be returned
|
||||||
{
|
{
|
||||||
|
|||||||
@ -132,6 +132,6 @@ Body* NewBody(int type){
|
|||||||
case PARTICLE : // A Particle
|
case PARTICLE : // A Particle
|
||||||
return new Particle;
|
return new Particle;
|
||||||
default : // error
|
default : // error
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,8 +30,7 @@
|
|||||||
Body23Joint::Body23Joint(){
|
Body23Joint::Body23Joint(){
|
||||||
DimQandU(4,2);
|
DimQandU(4,2);
|
||||||
}
|
}
|
||||||
Body23Joint::~Body23Joint(){
|
Body23Joint::~Body23Joint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType Body23Joint::GetType(){
|
JointType Body23Joint::GetType(){
|
||||||
return BODY23JOINT;
|
return BODY23JOINT;
|
||||||
|
|||||||
@ -24,7 +24,7 @@ using namespace std;
|
|||||||
|
|
||||||
ColMatMap::ColMatMap(){
|
ColMatMap::ColMatMap(){
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ColMatMap::~ColMatMap(){
|
ColMatMap::~ColMatMap(){
|
||||||
@ -33,7 +33,7 @@ ColMatMap::~ColMatMap(){
|
|||||||
|
|
||||||
ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor
|
ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.numrows);
|
Dim(A.numrows);
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
elements[i] = A.elements[i];
|
elements[i] = A.elements[i];
|
||||||
@ -41,7 +41,7 @@ ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor
|
|||||||
|
|
||||||
ColMatMap::ColMatMap(ColMatrix& A){ // copy constructor
|
ColMatMap::ColMatMap(ColMatrix& A){ // copy constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumRows());
|
Dim(A.GetNumRows());
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
elements[i] = A.GetElementPointer(i);
|
elements[i] = A.GetElementPointer(i);
|
||||||
@ -63,7 +63,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
|
|||||||
|
|
||||||
ColMatMap::ColMatMap(int m){ // size constructor
|
ColMatMap::ColMatMap(int m){ // size constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(m);
|
Dim(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ using namespace std;
|
|||||||
|
|
||||||
ColMatrix::ColMatrix(){
|
ColMatrix::ColMatrix(){
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ColMatrix::~ColMatrix(){
|
ColMatrix::~ColMatrix(){
|
||||||
@ -34,7 +34,7 @@ ColMatrix::~ColMatrix(){
|
|||||||
|
|
||||||
ColMatrix::ColMatrix(const ColMatrix& A){ // copy constructor
|
ColMatrix::ColMatrix(const ColMatrix& A){ // copy constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.numrows);
|
Dim(A.numrows);
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
elements[i] = A.elements[i];
|
elements[i] = A.elements[i];
|
||||||
@ -42,7 +42,7 @@ ColMatrix::ColMatrix(const ColMatrix& A){ // copy constructor
|
|||||||
|
|
||||||
ColMatrix::ColMatrix(const VirtualColMatrix& A){ // copy constructor
|
ColMatrix::ColMatrix(const VirtualColMatrix& A){ // copy constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumRows());
|
Dim(A.GetNumRows());
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
elements[i] = A.BasicGet(i);
|
elements[i] = A.BasicGet(i);
|
||||||
@ -54,7 +54,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumRows());
|
Dim(A.GetNumRows());
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
elements[i] = A.BasicGet(i,0);
|
elements[i] = A.BasicGet(i,0);
|
||||||
@ -62,7 +62,7 @@ ColMatrix::ColMatrix(const VirtualMatrix& A){ // copy constructor
|
|||||||
|
|
||||||
ColMatrix::ColMatrix(int m){ // size constructor
|
ColMatrix::ColMatrix(int m){ // size constructor
|
||||||
numrows = 0;
|
numrows = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(m);
|
Dim(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,11 +22,6 @@
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
FixedPoint::FixedPoint(){
|
|
||||||
}
|
|
||||||
FixedPoint::~FixedPoint(){
|
|
||||||
}
|
|
||||||
|
|
||||||
FixedPoint::FixedPoint(double x, double y, double z){
|
FixedPoint::FixedPoint(double x, double y, double z){
|
||||||
position(1) = x;
|
position(1) = x;
|
||||||
position(2) = y;
|
position(2) = y;
|
||||||
|
|||||||
@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
class FixedPoint : public Point {
|
class FixedPoint : public Point {
|
||||||
public:
|
public:
|
||||||
FixedPoint();
|
FixedPoint() = default;
|
||||||
~FixedPoint();
|
~FixedPoint() = default;
|
||||||
FixedPoint(double x, double y, double z);
|
FixedPoint(double x, double y, double z);
|
||||||
FixedPoint(Vect3& v);
|
FixedPoint(Vect3& v);
|
||||||
PointType GetType();
|
PointType GetType();
|
||||||
|
|||||||
@ -30,8 +30,7 @@ FreeBodyJoint::FreeBodyJoint(){
|
|||||||
DimQandU(7,6);
|
DimQandU(7,6);
|
||||||
}
|
}
|
||||||
|
|
||||||
FreeBodyJoint::~FreeBodyJoint(){
|
FreeBodyJoint::~FreeBodyJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType FreeBodyJoint::GetType(){
|
JointType FreeBodyJoint::GetType(){
|
||||||
return FREEBODYJOINT;
|
return FREEBODYJOINT;
|
||||||
|
|||||||
@ -33,8 +33,7 @@ InertialFrame::InertialFrame(){
|
|||||||
alpha.Zeros();
|
alpha.Zeros();
|
||||||
alpha_t.Zeros();
|
alpha_t.Zeros();
|
||||||
}
|
}
|
||||||
InertialFrame::~InertialFrame(){
|
InertialFrame::~InertialFrame() = default;
|
||||||
}
|
|
||||||
|
|
||||||
BodyType InertialFrame::GetType(){
|
BodyType InertialFrame::GetType(){
|
||||||
return INERTIALFRAME;
|
return INERTIALFRAME;
|
||||||
|
|||||||
@ -27,14 +27,13 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
Joint::Joint(){
|
Joint::Joint(){
|
||||||
body1 = body2 = 0;
|
body1 = body2 = nullptr;
|
||||||
point1 = point2 = 0;
|
point1 = point2 = nullptr;
|
||||||
pk_C_ko.Identity();
|
pk_C_ko.Identity();
|
||||||
pk_C_k.Identity();
|
pk_C_k.Identity();
|
||||||
}
|
}
|
||||||
|
|
||||||
Joint::~Joint(){
|
Joint::~Joint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
void Joint::SetBodies(Body* b1, Body* b2){
|
void Joint::SetBodies(Body* b1, Body* b2){
|
||||||
body1 = b1;
|
body1 = b1;
|
||||||
@ -165,7 +164,7 @@ Body* Joint::GetBody2(){
|
|||||||
Body* Joint::OtherBody(Body* body){
|
Body* Joint::OtherBody(Body* body){
|
||||||
if(body1 == body) return body2;
|
if(body1 == body) return body2;
|
||||||
if(body2 == body) return body1;
|
if(body2 == body) return body1;
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vect3* Joint::GetR12(){
|
Vect3* Joint::GetR12(){
|
||||||
@ -243,6 +242,6 @@ Joint* NewJoint(int type){
|
|||||||
case SPHERICALJOINT : return new SphericalJoint;
|
case SPHERICALJOINT : return new SphericalJoint;
|
||||||
case BODY23JOINT : return new Body23Joint;
|
case BODY23JOINT : return new Body23Joint;
|
||||||
case MIXEDJOINT : return new MixedJoint;
|
case MIXEDJOINT : return new MixedJoint;
|
||||||
default : return 0; // error
|
default : return nullptr; // error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,8 +24,6 @@ using namespace std;
|
|||||||
Mat3x3::Mat3x3(){
|
Mat3x3::Mat3x3(){
|
||||||
numrows = numcols = 3;
|
numrows = numcols = 3;
|
||||||
}
|
}
|
||||||
Mat3x3::~Mat3x3(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Mat3x3::Mat3x3(const Mat3x3& A){
|
Mat3x3::Mat3x3(const Mat3x3& A){
|
||||||
numrows = numcols = 3;
|
numrows = numcols = 3;
|
||||||
|
|||||||
@ -30,7 +30,7 @@ class Mat3x3 : public VirtualMatrix {
|
|||||||
double elements[3][3];
|
double elements[3][3];
|
||||||
public:
|
public:
|
||||||
Mat3x3();
|
Mat3x3();
|
||||||
~Mat3x3();
|
~Mat3x3() = default;
|
||||||
Mat3x3(const Mat3x3& A); // copy constructor
|
Mat3x3(const Mat3x3& A); // copy constructor
|
||||||
Mat3x3(const VirtualMatrix& A); // copy constructor
|
Mat3x3(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -23,8 +23,6 @@ using namespace std;
|
|||||||
Mat4x4::Mat4x4(){
|
Mat4x4::Mat4x4(){
|
||||||
numrows = numcols = 4;
|
numrows = numcols = 4;
|
||||||
}
|
}
|
||||||
Mat4x4::~Mat4x4(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Mat4x4::Mat4x4(const Mat4x4& A){
|
Mat4x4::Mat4x4(const Mat4x4& A){
|
||||||
numrows = numcols = 4;
|
numrows = numcols = 4;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class Mat4x4 : public VirtualMatrix {
|
|||||||
double elements[4][4];
|
double elements[4][4];
|
||||||
public:
|
public:
|
||||||
Mat4x4();
|
Mat4x4();
|
||||||
~Mat4x4();
|
~Mat4x4() = default;
|
||||||
Mat4x4(const Mat4x4& A); // copy constructor
|
Mat4x4(const Mat4x4& A); // copy constructor
|
||||||
Mat4x4(const VirtualMatrix& A); // copy constructor
|
Mat4x4(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -23,8 +23,6 @@ using namespace std;
|
|||||||
Mat6x6::Mat6x6(){
|
Mat6x6::Mat6x6(){
|
||||||
numrows = numcols = 6;
|
numrows = numcols = 6;
|
||||||
}
|
}
|
||||||
Mat6x6::~Mat6x6(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Mat6x6::Mat6x6(const Mat6x6& A){
|
Mat6x6::Mat6x6(const Mat6x6& A){
|
||||||
numrows = numcols = 6;
|
numrows = numcols = 6;
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class Mat6x6 : public VirtualMatrix {
|
|||||||
double elements[6][6];
|
double elements[6][6];
|
||||||
public:
|
public:
|
||||||
Mat6x6();
|
Mat6x6();
|
||||||
~Mat6x6();
|
~Mat6x6() = default;
|
||||||
Mat6x6(const Mat6x6& A); // copy constructor
|
Mat6x6(const Mat6x6& A); // copy constructor
|
||||||
Mat6x6(const VirtualMatrix& A); // copy constructor
|
Mat6x6(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -24,8 +24,8 @@ using namespace std;
|
|||||||
|
|
||||||
Matrix::Matrix(){
|
Matrix::Matrix(){
|
||||||
numrows = numcols = 0;
|
numrows = numcols = 0;
|
||||||
rows = 0;
|
rows = nullptr;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix::~Matrix(){
|
Matrix::~Matrix(){
|
||||||
@ -35,8 +35,8 @@ Matrix::~Matrix(){
|
|||||||
|
|
||||||
Matrix::Matrix(const Matrix& A){
|
Matrix::Matrix(const Matrix& A){
|
||||||
numrows = numcols = 0;
|
numrows = numcols = 0;
|
||||||
rows = 0;
|
rows = nullptr;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.numrows,A.numcols);
|
Dim(A.numrows,A.numcols);
|
||||||
for(int i=0;i<numrows*numcols;i++)
|
for(int i=0;i<numrows*numcols;i++)
|
||||||
elements[i] = A.elements[i];
|
elements[i] = A.elements[i];
|
||||||
@ -44,8 +44,8 @@ Matrix::Matrix(const Matrix& A){
|
|||||||
|
|
||||||
Matrix::Matrix(const VirtualMatrix& A){
|
Matrix::Matrix(const VirtualMatrix& A){
|
||||||
numrows = numcols = 0;
|
numrows = numcols = 0;
|
||||||
rows = 0;
|
rows = nullptr;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumRows(),A.GetNumCols());
|
Dim(A.GetNumRows(),A.GetNumCols());
|
||||||
for(int i=0;i<numrows;i++)
|
for(int i=0;i<numrows;i++)
|
||||||
for(int j=0;j<numcols;j++)
|
for(int j=0;j<numcols;j++)
|
||||||
@ -54,8 +54,8 @@ Matrix::Matrix(const VirtualMatrix& A){
|
|||||||
|
|
||||||
Matrix::Matrix(int m, int n){
|
Matrix::Matrix(int m, int n){
|
||||||
numrows = numcols = 0;
|
numrows = numcols = 0;
|
||||||
rows = 0;
|
rows = nullptr;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
this->Dim(m,n);
|
this->Dim(m,n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,7 @@ VirtualMatrix* NewMatrix(int type){
|
|||||||
case MAT4X4 : return new Mat4x4;
|
case MAT4X4 : return new Mat4x4;
|
||||||
case VECT3 : return new Vect3;
|
case VECT3 : return new Vect3;
|
||||||
case VECT4 : return new Vect4;
|
case VECT4 : return new Vect4;
|
||||||
default : return 0; // error!
|
default : return nullptr; // error!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -26,11 +26,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
MixedJoint::MixedJoint(){
|
MixedJoint::MixedJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
MixedJoint::~MixedJoint(){
|
MixedJoint::~MixedJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType MixedJoint::GetType(){
|
JointType MixedJoint::GetType(){
|
||||||
return MIXEDJOINT;
|
return MIXEDJOINT;
|
||||||
|
|||||||
@ -30,9 +30,9 @@ using namespace std;
|
|||||||
|
|
||||||
|
|
||||||
OnBody::OnBody(){
|
OnBody::OnBody(){
|
||||||
system_body = 0;
|
system_body = nullptr;
|
||||||
system_joint = 0;
|
system_joint = nullptr;
|
||||||
parent = 0;
|
parent = nullptr;
|
||||||
|
|
||||||
// these terms have zeros which are NEVER overwritten
|
// these terms have zeros which are NEVER overwritten
|
||||||
sI.Zeros();
|
sI.Zeros();
|
||||||
|
|||||||
@ -28,8 +28,8 @@ using namespace std;
|
|||||||
|
|
||||||
OnSolver::OnSolver(){
|
OnSolver::OnSolver(){
|
||||||
numbodies = 0;
|
numbodies = 0;
|
||||||
bodyarray = 0;
|
bodyarray = nullptr;
|
||||||
q=0;u=0; qdot=0; udot=0; qdotdot=0;
|
q=nullptr;u=nullptr; qdot=nullptr; udot=nullptr; qdotdot=nullptr;
|
||||||
type = ONSOLVER;
|
type = ONSOLVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,11 +19,9 @@
|
|||||||
#include "particle.h"
|
#include "particle.h"
|
||||||
#include "fixedpoint.h"
|
#include "fixedpoint.h"
|
||||||
|
|
||||||
Particle::Particle(){
|
Particle::Particle() = default;
|
||||||
}
|
|
||||||
|
|
||||||
Particle::~Particle(){
|
Particle::~Particle() = default;
|
||||||
}
|
|
||||||
|
|
||||||
BodyType Particle::GetType(){
|
BodyType Particle::GetType(){
|
||||||
return PARTICLE;
|
return PARTICLE;
|
||||||
|
|||||||
@ -65,7 +65,7 @@ template<class T> ListElement<T>::ListElement(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class T> ListElement<T>::ListElement(T* v){
|
template<class T> ListElement<T>::ListElement(T* v){
|
||||||
next = prev = 0;
|
next = prev = nullptr;
|
||||||
value = v;
|
value = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ template<class T> ListElement<T>::~ListElement(){
|
|||||||
//
|
//
|
||||||
|
|
||||||
template<class S> List<S>::List(){
|
template<class S> List<S>::List(){
|
||||||
head = tail = 0;
|
head = tail = nullptr;
|
||||||
numelements = 0;
|
numelements = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ template<class S> S** List<S>::CreateArray(){
|
|||||||
S** array = new S* [numelements];
|
S** array = new S* [numelements];
|
||||||
|
|
||||||
ListElement<S>* ele = head;
|
ListElement<S>* ele = head;
|
||||||
for(int i=0;ele != 0;i++){
|
for(int i=0;ele != nullptr;i++){
|
||||||
array[i] = ele->value;
|
array[i] = ele->value;
|
||||||
ele = ele->next;
|
ele = ele->next;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
POEMSObject::POEMSObject(){
|
POEMSObject::POEMSObject(){
|
||||||
name = 0;
|
name = nullptr;
|
||||||
ChangeName((const char*)"unnamed");
|
ChangeName((const char*)"unnamed");
|
||||||
ID = -1;
|
ID = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,8 +64,8 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor, destructor
|
// constructor, destructor
|
||||||
Tree(void);
|
Tree();
|
||||||
~Tree(void)
|
~Tree()
|
||||||
{
|
{
|
||||||
ClearTree(root);
|
ClearTree(root);
|
||||||
};
|
};
|
||||||
@ -85,19 +85,19 @@ public:
|
|||||||
void Insert(const int& item, const int& data, void * AuxData = nullptr);
|
void Insert(const int& item, const int& data, void * AuxData = nullptr);
|
||||||
void Delete(const int& item);
|
void Delete(const int& item);
|
||||||
void AVLInsert(TreeNode* &tree, TreeNode* newNode, int &reviseBalanceFactor);
|
void AVLInsert(TreeNode* &tree, TreeNode* newNode, int &reviseBalanceFactor);
|
||||||
void ClearList(void);
|
void ClearList();
|
||||||
|
|
||||||
// tree specific methods
|
// tree specific methods
|
||||||
void Update(const int& item);
|
void Update(const int& item);
|
||||||
TreeNode *GetRoot(void) const;
|
TreeNode *GetRoot() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
Tree::Tree(void)
|
Tree::Tree()
|
||||||
{
|
{
|
||||||
root = 0;
|
root = nullptr;
|
||||||
current = 0;
|
current = nullptr;
|
||||||
size = 0;
|
size = 0;
|
||||||
DeleteAuxData = nullptr;
|
DeleteAuxData = nullptr;
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ Tree::Tree(void)
|
|||||||
|
|
||||||
|
|
||||||
// return root pointer
|
// return root pointer
|
||||||
TreeNode *Tree::GetRoot(void) const
|
TreeNode *Tree::GetRoot() const
|
||||||
{
|
{
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
@ -603,7 +603,7 @@ void Tree::ClearTree(TreeNode * &t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// delete all nodes in list
|
// delete all nodes in list
|
||||||
void Tree::ClearList(void)
|
void Tree::ClearList()
|
||||||
{
|
{
|
||||||
delete root;
|
delete root;
|
||||||
delete current;
|
delete current;
|
||||||
|
|||||||
@ -27,23 +27,23 @@ TreeNode::TreeNode (const int & item, TreeNode *lptr,TreeNode *rptr,
|
|||||||
|
|
||||||
|
|
||||||
// return left
|
// return left
|
||||||
TreeNode* TreeNode::Left(void)
|
TreeNode* TreeNode::Left()
|
||||||
{
|
{
|
||||||
return left;
|
return left;
|
||||||
}
|
}
|
||||||
|
|
||||||
// return right
|
// return right
|
||||||
TreeNode* TreeNode::Right(void)
|
TreeNode* TreeNode::Right()
|
||||||
{
|
{
|
||||||
return right;
|
return right;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeNode::GetBalanceFactor(void)
|
int TreeNode::GetBalanceFactor()
|
||||||
{
|
{
|
||||||
return balanceFactor;
|
return balanceFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeNode::GetData(void)
|
int TreeNode::GetData()
|
||||||
{
|
{
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,8 +21,7 @@
|
|||||||
Point::Point(){
|
Point::Point(){
|
||||||
position.Zeros();
|
position.Zeros();
|
||||||
}
|
}
|
||||||
Point::~Point(){
|
Point::~Point() = default;
|
||||||
}
|
|
||||||
|
|
||||||
bool Point::ReadIn(std::istream& in){
|
bool Point::ReadIn(std::istream& in){
|
||||||
return ReadInPointData(in);
|
return ReadInPointData(in);
|
||||||
@ -39,6 +38,6 @@ Point* NewPoint(int type){
|
|||||||
case FIXEDPOINT : // A Fixed Point
|
case FIXEDPOINT : // A Fixed Point
|
||||||
return new FixedPoint();
|
return new FixedPoint();
|
||||||
default : // error
|
default : // error
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,8 +27,7 @@ PrismaticJoint::PrismaticJoint(){
|
|||||||
u.Dim(1);
|
u.Dim(1);
|
||||||
udot.Dim(1);
|
udot.Dim(1);
|
||||||
}
|
}
|
||||||
PrismaticJoint::~PrismaticJoint(){
|
PrismaticJoint::~PrismaticJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType PrismaticJoint::GetType(){
|
JointType PrismaticJoint::GetType(){
|
||||||
return PRISMATICJOINT;
|
return PRISMATICJOINT;
|
||||||
|
|||||||
@ -29,8 +29,7 @@ RevoluteJoint::RevoluteJoint(){
|
|||||||
SetAxisPK(axis);
|
SetAxisPK(axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
RevoluteJoint::~RevoluteJoint(){
|
RevoluteJoint::~RevoluteJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType RevoluteJoint::GetType(){
|
JointType RevoluteJoint::GetType(){
|
||||||
return REVOLUTEJOINT;
|
return REVOLUTEJOINT;
|
||||||
|
|||||||
@ -20,10 +20,8 @@
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
RigidBody::RigidBody(){
|
RigidBody::RigidBody() = default;
|
||||||
}
|
RigidBody::~RigidBody() = default;
|
||||||
RigidBody::~RigidBody(){
|
|
||||||
}
|
|
||||||
|
|
||||||
BodyType RigidBody::GetType(){
|
BodyType RigidBody::GetType(){
|
||||||
return RIGIDBODY;
|
return RIGIDBODY;
|
||||||
|
|||||||
@ -24,7 +24,7 @@ using namespace std;
|
|||||||
|
|
||||||
RowMatrix::RowMatrix(){
|
RowMatrix::RowMatrix(){
|
||||||
numcols = 0;
|
numcols = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
RowMatrix::~RowMatrix(){
|
RowMatrix::~RowMatrix(){
|
||||||
@ -33,7 +33,7 @@ RowMatrix::~RowMatrix(){
|
|||||||
|
|
||||||
RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor
|
RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor
|
||||||
numcols = 0;
|
numcols = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.numcols);
|
Dim(A.numcols);
|
||||||
for(int i=0;i<numcols;i++)
|
for(int i=0;i<numcols;i++)
|
||||||
elements[i] = A.elements[i];
|
elements[i] = A.elements[i];
|
||||||
@ -41,7 +41,7 @@ RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor
|
|||||||
|
|
||||||
RowMatrix::RowMatrix(const VirtualRowMatrix& A){ // copy constructor
|
RowMatrix::RowMatrix(const VirtualRowMatrix& A){ // copy constructor
|
||||||
numcols = 0;
|
numcols = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumCols());
|
Dim(A.GetNumCols());
|
||||||
for(int i=0;i<numcols;i++)
|
for(int i=0;i<numcols;i++)
|
||||||
elements[i] = A.BasicGet(i);
|
elements[i] = A.BasicGet(i);
|
||||||
@ -53,7 +53,7 @@ RowMatrix::RowMatrix(const VirtualMatrix& A){ // copy constructor
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
numcols = 0;
|
numcols = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(A.GetNumCols());
|
Dim(A.GetNumCols());
|
||||||
for(int i=0;i<numcols;i++)
|
for(int i=0;i<numcols;i++)
|
||||||
elements[i] = A.BasicGet(i,0);
|
elements[i] = A.BasicGet(i,0);
|
||||||
@ -61,7 +61,7 @@ RowMatrix::RowMatrix(const VirtualMatrix& A){ // copy constructor
|
|||||||
|
|
||||||
RowMatrix::RowMatrix(int n){ // size constructor
|
RowMatrix::RowMatrix(int n){ // size constructor
|
||||||
numcols = 0;
|
numcols = 0;
|
||||||
elements = 0;
|
elements = nullptr;
|
||||||
Dim(n);
|
Dim(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,12 +19,9 @@
|
|||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "matrices.h"
|
#include "matrices.h"
|
||||||
|
|
||||||
Solver::Solver(){
|
Solver::Solver() = default;
|
||||||
|
|
||||||
}
|
Solver::~Solver() = default;
|
||||||
|
|
||||||
Solver::~Solver(){
|
|
||||||
}
|
|
||||||
|
|
||||||
void Solver::SetSystem(System* s){
|
void Solver::SetSystem(System* s){
|
||||||
system = s;
|
system = s;
|
||||||
|
|||||||
@ -30,8 +30,7 @@
|
|||||||
SphericalJoint::SphericalJoint(){
|
SphericalJoint::SphericalJoint(){
|
||||||
DimQandU(4,3);
|
DimQandU(4,3);
|
||||||
}
|
}
|
||||||
SphericalJoint::~SphericalJoint(){
|
SphericalJoint::~SphericalJoint() = default;
|
||||||
}
|
|
||||||
|
|
||||||
JointType SphericalJoint::GetType(){
|
JointType SphericalJoint::GetType(){
|
||||||
return SPHERICALJOINT;
|
return SPHERICALJOINT;
|
||||||
|
|||||||
@ -179,7 +179,7 @@ void System::WriteOut(ostream& out){
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
Body* body;
|
Body* body;
|
||||||
ListElement<Body>* b_ele = bodies.GetHeadElement();
|
ListElement<Body>* b_ele = bodies.GetHeadElement();
|
||||||
while(b_ele !=0){
|
while(b_ele !=nullptr){
|
||||||
out << i << ' ';
|
out << i << ' ';
|
||||||
|
|
||||||
body = b_ele->value;
|
body = b_ele->value;
|
||||||
@ -200,7 +200,7 @@ void System::WriteOut(ostream& out){
|
|||||||
i = 0;
|
i = 0;
|
||||||
Joint* joint;
|
Joint* joint;
|
||||||
ListElement<Joint>* j_ele = joints.GetHeadElement();
|
ListElement<Joint>* j_ele = joints.GetHeadElement();
|
||||||
while(j_ele !=0){
|
while(j_ele !=nullptr){
|
||||||
out << i << ' ';
|
out << i << ' ';
|
||||||
joint = j_ele->value;
|
joint = j_ele->value;
|
||||||
|
|
||||||
|
|||||||
@ -23,8 +23,6 @@ using namespace std;
|
|||||||
Vect3::Vect3(){
|
Vect3::Vect3(){
|
||||||
numrows = 3; numcols = 1;
|
numrows = 3; numcols = 1;
|
||||||
}
|
}
|
||||||
Vect3::~Vect3(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Vect3::Vect3(const Vect3& A){ // copy constructor
|
Vect3::Vect3(const Vect3& A){ // copy constructor
|
||||||
numrows = 3; numcols = 1;
|
numrows = 3; numcols = 1;
|
||||||
|
|||||||
@ -30,7 +30,7 @@ class Vect3 : public VirtualColMatrix {
|
|||||||
double elements[3];
|
double elements[3];
|
||||||
public:
|
public:
|
||||||
Vect3();
|
Vect3();
|
||||||
~Vect3();
|
~Vect3() = default;
|
||||||
Vect3(const Vect3& A); // copy constructor
|
Vect3(const Vect3& A); // copy constructor
|
||||||
Vect3(const VirtualMatrix& A); // copy constructor
|
Vect3(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -23,8 +23,6 @@ using namespace std;
|
|||||||
Vect4::Vect4(){
|
Vect4::Vect4(){
|
||||||
numrows = 4; numcols = 1;
|
numrows = 4; numcols = 1;
|
||||||
}
|
}
|
||||||
Vect4::~Vect4(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Vect4::Vect4(const Vect4& A){ // copy constructor
|
Vect4::Vect4(const Vect4& A){ // copy constructor
|
||||||
numrows = 4; numcols = 1;
|
numrows = 4; numcols = 1;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class Vect4 : public VirtualColMatrix {
|
|||||||
double elements[4];
|
double elements[4];
|
||||||
public:
|
public:
|
||||||
Vect4();
|
Vect4();
|
||||||
~Vect4();
|
~Vect4() = default;
|
||||||
Vect4(const Vect4& A); // copy constructor
|
Vect4(const Vect4& A); // copy constructor
|
||||||
Vect4(const VirtualMatrix& A); // copy constructor
|
Vect4(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -23,8 +23,6 @@ using namespace std;
|
|||||||
Vect6::Vect6(){
|
Vect6::Vect6(){
|
||||||
numrows = 6; numcols = 1;
|
numrows = 6; numcols = 1;
|
||||||
}
|
}
|
||||||
Vect6::~Vect6(){
|
|
||||||
}
|
|
||||||
|
|
||||||
Vect6::Vect6(const Vect6& A){ // copy constructor
|
Vect6::Vect6(const Vect6& A){ // copy constructor
|
||||||
numrows = 6; numcols = 1;
|
numrows = 6; numcols = 1;
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class Vect6 : public VirtualColMatrix {
|
|||||||
double elements[6];
|
double elements[6];
|
||||||
public:
|
public:
|
||||||
Vect6();
|
Vect6();
|
||||||
~Vect6();
|
~Vect6() = default;
|
||||||
Vect6(const Vect6& A); // copy constructor
|
Vect6(const Vect6& A); // copy constructor
|
||||||
Vect6(const VirtualMatrix& A); // copy constructor
|
Vect6(const VirtualMatrix& A); // copy constructor
|
||||||
|
|
||||||
|
|||||||
@ -25,9 +25,6 @@ VirtualColMatrix::VirtualColMatrix(){
|
|||||||
numcols = 1;
|
numcols = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualColMatrix::~VirtualColMatrix(){
|
|
||||||
}
|
|
||||||
|
|
||||||
double& VirtualColMatrix::operator_2int(int i, int j){
|
double& VirtualColMatrix::operator_2int(int i, int j){
|
||||||
if(j!=1){
|
if(j!=1){
|
||||||
cerr << "matrix index invalid in operator ()" << endl;
|
cerr << "matrix index invalid in operator ()" << endl;
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
class VirtualColMatrix : public VirtualMatrix {
|
class VirtualColMatrix : public VirtualMatrix {
|
||||||
public:
|
public:
|
||||||
VirtualColMatrix();
|
VirtualColMatrix();
|
||||||
~VirtualColMatrix();
|
~VirtualColMatrix() = default;
|
||||||
double& operator_2int (int i, int j); // array access
|
double& operator_2int (int i, int j); // array access
|
||||||
double Get_2int (int i, int j) const;
|
double Get_2int (int i, int j) const;
|
||||||
void Set_2int (int i, int j, double value);
|
void Set_2int (int i, int j, double value);
|
||||||
|
|||||||
@ -26,8 +26,7 @@ VirtualMatrix::VirtualMatrix(){
|
|||||||
numrows = numcols = 0;
|
numrows = numcols = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualMatrix::~VirtualMatrix(){
|
VirtualMatrix::~VirtualMatrix()= default;
|
||||||
}
|
|
||||||
|
|
||||||
int VirtualMatrix::GetNumRows() const {
|
int VirtualMatrix::GetNumRows() const {
|
||||||
return numrows;
|
return numrows;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user