Merge branch 'master' of https://github.com/charlessievers/lammps into fix_numerical_differentiation

This commit is contained in:
Sievers
2020-03-10 16:14:20 -06:00
127 changed files with 11370 additions and 345 deletions

View File

@ -73,7 +73,7 @@ Here is a checklist of steps you need to follow to submit a single file or user
* If you want your contribution to be added as a user-contributed feature, and it is a single file (actually a `<name>.cpp` and `<name>.h` file) it can be rapidly added to the USER-MISC directory. Include the one-line entry to add to the USER-MISC/README file in that directory, along with the 2 source files. You can do this multiple times if you wish to contribute several individual features.
* If you want your contribution to be added as a user-contribution and it is several related features, it is probably best to make it a user package directory with a name like USER-FOO. In addition to your new files, the directory should contain a README text file. The README should contain your name and contact information and a brief description of what your new package does. If your files depend on other LAMMPS style files also being installed (e.g. because your file is a derived class from the other LAMMPS class), then an Install.sh file is also needed to check for those dependencies. See other README and Install.sh files in other USER directories as examples. Send us a tarball of this USER-FOO directory.
* Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code.
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are files in the [reStructuredText](https://docutils.sourceforge.io/rst.html) markup language, that are then converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.rst` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. An introduction to reStructuredText can be found at [https://docutils.sourceforge.io/docs/user/rst/quickstart.html](https://docutils.sourceforge.io/docs/user/rst/quickstart.html). As appropriate, the text files can include mathematical expressions in MathJAX markup or links to equations (see doc/Eqs/*.tex for examples, we auto-create the associated JPG files), or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.rst for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv. Please run at least `make html` and `make spelling` and carefully inspect and proofread the resulting HTML format doc page as well as the output produced to the screen. Make sure that all spelling errors are fixed or the necessary false positives are added to the `doc/utils/sphinx-config/false_positives.txt` file. For new styles, those usually also need to be added to lists on the respective overview pages. This can be checked for also with `make style_check`.
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are files in the [reStructuredText](https://docutils.sourceforge.io/rst.html) markup language, that are then converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.rst` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. An introduction to reStructuredText can be found at [https://docutils.sourceforge.io/docs/user/rst/quickstart.html](https://docutils.sourceforge.io/docs/user/rst/quickstart.html). The text files can include mathematical expressions and symbol in ".. math::" sections or ":math:" expressions or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.rst for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv. Please run at least `make html`, `make pdf` and `make spelling` and carefully inspect and proofread the resulting HTML format doc page as well as the output produced to the screen. Make sure that all spelling errors are fixed or the necessary false positives are added to the `doc/utils/sphinx-config/false_positives.txt` file. For new styles, those usually also need to be added to lists on the respective overview pages. This can be checked for also with `make style_check`.
* For a new package (or even a single command) you should include one or more example scripts demonstrating its use. These should run in no more than a couple minutes, even on a single processor, and not require large data files as input. See directories under examples/USER for examples of input scripts other users provided for their packages. These example inputs are also required for validating memory accesses and testing for memory leaks with valgrind
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the *.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.

View File

@ -52,7 +52,13 @@ include(CheckCCompilerFlag)
include(CheckIncludeFileCXX)
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict -std=c++11")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
if(NOT ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug"))
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math -ftree-vectorize -fexpensive-optimizations")
endif()
endif()
# we require C++11
@ -125,12 +131,12 @@ set(LAMMPS_API_DEFINES)
set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE
GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MOLECULE PERI POEMS QEQ
REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB
USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC
USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF
USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-ADIOS)
USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REACTION
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-ADIOS)
set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES})
option(PKG_${PKG} "Build ${PKG} Package" OFF)
@ -175,6 +181,7 @@ option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
if(BUILD_MPI)
find_package(MPI REQUIRED)
include_directories(${MPI_CXX_INCLUDE_PATH})
add_definitions(-DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1)
list(APPEND LAMMPS_LINK_LIBS ${MPI_CXX_LIBRARIES})
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
if(LAMMPS_LONGLONG_TO_LONG)

View File

@ -95,7 +95,7 @@ OPT.
* :doc:`eam/fs (gikot) <pair_eam>`
* :doc:`edip (o) <pair_edip>`
* :doc:`edip/multi <pair_edip>`
* :doc:`edpd <pair_meso>`
* :doc:`edpd <pair_mesodpd>`
* :doc:`eff/cut <pair_eff>`
* :doc:`eim (o) <pair_eim>`
* :doc:`exp6/rx (k) <pair_exp6_rx>`
@ -171,8 +171,8 @@ OPT.
* :doc:`lubricate/poly (o) <pair_lubricate>`
* :doc:`lubricateU <pair_lubricateU>`
* :doc:`lubricateU/poly <pair_lubricateU>`
* :doc:`mdpd <pair_meso>`
* :doc:`mdpd/rhosum <pair_meso>`
* :doc:`mdpd <pair_mesodpd>`
* :doc:`mdpd/rhosum <pair_mesodpd>`
* :doc:`meam/c <pair_meamc>`
* :doc:`meam/spline (o) <pair_meam_spline>`
* :doc:`meam/sw/spline <pair_meam_sw_spline>`
@ -242,7 +242,7 @@ OPT.
* :doc:`sw (giko) <pair_sw>`
* :doc:`table (gko) <pair_table>`
* :doc:`table/rx (k) <pair_table_rx>`
* :doc:`tdpd <pair_meso>`
* :doc:`tdpd <pair_mesodpd>`
* :doc:`tersoff (giko) <pair_tersoff>`
* :doc:`tersoff/mod (gko) <pair_tersoff_mod>`
* :doc:`tersoff/mod/c (o) <pair_tersoff_mod>`

View File

@ -509,14 +509,14 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Bond/react: Atom affected by reaction too close to template edge*
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the superimpose
reaction is too close to an 'edge' atom defined in the map
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom.
*Bond/react: Fix bond/react needs ghost atoms from farther away*
This is because a processor needs to superimpose the entire unreacted
This is because a processor needs to map the entire unreacted
molecule template onto simulation atoms it knows about. The
comm\_modify cutoff command can be used to extend the communication
range.

View File

@ -1,22 +1,28 @@
Building the LAMMPS manual
**************************
Depending on how you obtained LAMMPS, the doc directory has 2 or 3
sub-directories and optionally 2 PDF files and 2 e-book format files:
Depending on how you obtained LAMMPS, the doc directory has up
to 6 sub-directories, 2 Nroff files, and optionally 2 PDF files
plus 2 e-book format files:
.. parsed-literal::
src # content files for LAMMPS documentation
html # HTML version of the LAMMPS manual (see html/Manual.html)
tools # tools and settings for building the documentation
utils # tools and settings for building the documentation
docenv # virtualenv for processing the manual sources
doctrees # temporary data from processing the manual
mathjax # code and fonts for rendering math in html
Manual.pdf # large PDF version of entire manual
Developer.pdf # small PDF with info about how LAMMPS is structured
LAMMPS.epub # Manual in ePUB e-book format
LAMMPS.mobi # Manual in MOBI e-book format
lammps.1 # man page for the lammps command
msi2lmp.1 # man page for the msi2lmp command
If you downloaded LAMMPS as a tarball from the web site, all these
directories and files should be included.
If you downloaded LAMMPS as a tarball from the web site, the html folder
and the PDF files should be included.
If you downloaded LAMMPS from the public git repository, then the HTML
and PDF files are not included. Instead you need to create them, in one

View File

@ -140,8 +140,7 @@ packages in the src directory for examples. If you are uncertain, please ask.
and your name and email address at the top, like other
user-contributed LAMMPS source files. They need to create a class
that is inside the LAMMPS namespace. If the file is for one of the
* USER packages, including USER-MISC, then we are not as picky about the
USER packages, including USER-MISC, then we are not as picky about the
coding style (see above). I.e. the files do not need to be in the
same stylistic format and syntax as other LAMMPS files, though that
would be nice for developers as well as users who try to read your

View File

@ -81,7 +81,7 @@ page gives those details.
* :ref:`USER-LB <PKG-USER-LB>`
* :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>`
* :ref:`USER-MEAMC <PKG-USER-MEAMC>`
* :ref:`USER-MESO <PKG-USER-MESO>`
* :ref:`USER-MESODPD <PKG-USER-MESODPD>`
* :ref:`USER-MGPT <PKG-USER-MGPT>`
* :ref:`USER-MISC <PKG-USER-MISC>`
* :ref:`USER-MOFFF <PKG-USER-MOFFF>`
@ -94,6 +94,7 @@ page gives those details.
* :ref:`USER-QMMM <PKG-USER-QMMM>`
* :ref:`USER-QTB <PKG-USER-QTB>`
* :ref:`USER-QUIP <PKG-USER-QUIP>`
* :ref:`USER-REACTION <PKG-USER-REACTION>`
* :ref:`USER-REAXC <PKG-USER-REAXC>`
* :ref:`USER-SCAFACOS <PKG-USER-SCAFACOS>`
* :ref:`USER-SDPD <PKG-USER-SDPD>`
@ -1792,10 +1793,10 @@ Sandia.
----------
.. _PKG-USER-MESO:
.. _PKG-USER-MESODPD:
USER-MESO package
-----------------
USER-MESODPD package
--------------------
**Contents:**
@ -1811,14 +1812,14 @@ algorithm.
**Supporting info:**
* src/USER-MESO: filenames -> commands
* src/USER-MESO/README
* src/USER-MESODPD: filenames -> commands
* src/USER-MESODPD/README
* :doc:`atom_style edpd <atom_style>`
* :doc:`pair_style edpd <pair_meso>`
* :doc:`pair_style mdpd <pair_meso>`
* :doc:`pair_style tdpd <pair_meso>`
* :doc:`pair_style edpd <pair_mesodpd>`
* :doc:`pair_style mdpd <pair_mesodpd>`
* :doc:`pair_style tdpd <pair_mesodpd>`
* :doc:`fix mvv/dpd <fix_mvv_dpd>`
* examples/USER/meso
* examples/USER/mesodpd
* http://lammps.sandia.gov/movies.html#mesodpd
@ -2180,6 +2181,39 @@ This package has :ref:`specific installation instructions <user-quip>` on the :d
----------
.. _PKG-USER-REACTION:
USER-REACTION package
---------------------
**Contents:**
This package allows for complex bond topology changes (reactions)
during a running MD simulation, when using classical force fields.
Topology changes are defined in pre- and post-reaction molecule
templates and can include creation and deletion of bonds, angles,
dihedrals, impropers, atom types, bond types, angle types, dihedral
types, improper types, and/or atomic charges. Other options currently
available include reaction constraints (e.g. angle and Arrhenius
constraints), deletion of reaction byproducts or other small
molecules, and chiral-sensitive reactions.
**Author:** Jacob R. Gissinger (CU Boulder) while at NASA Langley Research Center.
**Supporting info:**
* src/USER-REACTION: filenames -> commands
* src/USER-REACTION/README
* :doc:`fix bond/react <fix_bond_react>`
* examples/USER/reaction
* `2017 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug17/pdf/gissinger.pdf>`_
* `2019 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug19/talk_gissinger.pdf>`_
* disarmmd.org
----------
.. _PKG-USER-REAXC:
USER-REAXC package

View File

@ -65,7 +65,7 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-MEAMC <PKG-USER-MEAMC>` | modified EAM potential (C++) | :doc:`pair_style meam/c <pair_meamc>` | meamc | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-MESO <PKG-USER-MESO>` | mesoscale DPD models | :doc:`pair_style edpd <pair_meso>` | USER/meso | no |
| :ref:`USER-MESODPD <PKG-USER-MESODPD>` | mesoscale DPD models | :doc:`pair_style edpd <pair_mesodpd>` | USER/mesodpd | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-MGPT <PKG-USER-MGPT>` | fast MGPT multi-ion potentials | :doc:`pair_style mgpt <pair_mgpt>` | USER/mgpt | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
@ -91,6 +91,8 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-QUIP <PKG-USER-QUIP>` | QUIP/libatoms interface | :doc:`pair_style quip <pair_quip>` | USER/quip | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-REACTION <PKG-USER-REACTION>` | chemical reactions in classical MD | :doc:`fix bond/react <fix_bond_react>` | USER/reaction | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-REAXC <PKG-USER-REAXC>` | ReaxFF potential (C/C++) | :doc:`pair_style reaxc <pair_reaxc>` | reax | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+---------+
| :ref:`USER-SCAFACOS <PKG-USER-SCAFACOS>` | wrapper on ScaFaCoS solver | :doc:`kspace_style scafacos <kspace_style>` | USER/scafacos | ext |

View File

@ -338,7 +338,7 @@ The *electron* style is part of the USER-EFF package for :doc:`electronic force
The *dpd* style is part of the USER-DPD package for dissipative
particle dynamics (DPD).
The *edpd*\ , *mdpd*\ , and *tdpd* styles are part of the USER-MESO package
The *edpd*\ , *mdpd*\ , and *tdpd* styles are part of the USER-MESODPD package
for energy-conserving dissipative particle dynamics (eDPD), many-body
dissipative particle dynamics (mDPD), and transport dissipative particle
dynamics (tDPD), respectively.

View File

@ -46,13 +46,13 @@ Restrictions
""""""""""""
This compute is part of the USER-MESO package. It is only enabled if
This compute is part of the USER-MESODPD 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:`pair_style edpd <pair_meso>`
:doc:`pair_style edpd <pair_mesodpd>`
**Default:** none

View File

@ -48,13 +48,13 @@ Restrictions
""""""""""""
This compute is part of the USER-MESO package. It is only enabled if
This compute is part of the USER-MESODPD 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:`pair_style tdpd <pair_meso>`
:doc:`pair_style tdpd <pair_mesodpd>`
**Default:** none

View File

@ -60,7 +60,7 @@ Syntax
Examples
""""""""
For unabridged example scripts and files, see examples/USER/misc/bond\_react.
For unabridged example scripts and files, see examples/USER/reaction.
.. parsed-literal::
@ -149,10 +149,9 @@ constant-topology parts of your system separately. The dynamic group
contains only atoms not involved in a reaction at a given timestep,
and therefore should be used by a subsequent system-wide time
integrator such as nvt, npt, or nve, as shown in the second example
above (full examples can be found at examples/USER/misc/bond\_react).
The time integration command should be placed after the fix bond/react
command due to the internal dynamic grouping performed by fix
bond/react.
above (full examples can be found at examples/USER/reaction). The time
integration command should be placed after the fix bond/react command
due to the internal dynamic grouping performed by fix bond/react.
.. note::
@ -295,7 +294,7 @@ either 'none' or 'charges.' Further details are provided in the
discussion of the 'update\_edges' keyword. The fifth optional section
begins with the keyword 'Constraints' and lists additional criteria
that must be satisfied in order for the reaction to occur. Currently,
there are three types of constraints available, as discussed below.
there are four types of constraints available, as discussed below.
A sample map file is given below:
@ -371,6 +370,24 @@ the central atom). Angles must be specified in degrees. This
constraint can be used to enforce a certain orientation between
reacting molecules.
The constraint of type 'dihedral' has the following syntax:
.. parsed-literal::
dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2*
where 'dihedral' is the required keyword, and *ID1*\ , *ID2*\ , *ID3*
and *ID4* are pre-reaction atom IDs. Dihedral angles are calculated in
the interval (-180,180]. Refer to the :doc:`dihedral style <dihedral_style>`
documentation for further details on convention. If *amin* is less
than *amax*, these four atoms must form a dihedral angle greater than
*amin* **and** less than *amax* for the reaction to occur. If *amin*
is greater than *amax*, these four atoms must form a dihedral angle
greater than *amin* **or** less than *amax* for the reaction to occur.
Angles must be specified in degrees. Optionally, a second range of
permissible angles *amin2*-*amax2* can be specified.
The constraint of type 'arrhenius' imposes an additional reaction
probability according to the temperature-dependent Arrhenius equation:
@ -516,7 +533,7 @@ Restrictions
""""""""""""
This fix is part of the USER-MISC package. It is only enabled if
This fix is part of the USER-REACTION package. It is only enabled if
LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` doc page for more info.

View File

@ -82,16 +82,16 @@ Restrictions
""""""""""""
This fix is part of the USER-MESO package. It is only enabled if
This fix is part of the USER-MESODPD package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
Fix *edpd/source* must be used with the :doc:`pair_style edpd <pair_meso>` command. Fix *tdpd/source* must be used with the
:doc:`pair_style tdpd <pair_meso>` command.
Fix *edpd/source* must be used with the :doc:`pair_style edpd <pair_mesodpd>` command. Fix *tdpd/source* must be used with the
:doc:`pair_style tdpd <pair_mesodpd>` command.
Related commands
""""""""""""""""
:doc:`pair_style edpd <pair_meso>`, :doc:`pair_style tdpd <pair_meso>`,
:doc:`pair_style edpd <pair_mesodpd>`, :doc:`pair_style tdpd <pair_mesodpd>`,
:doc:`compute edpd/temp/atom <compute_edpd_temp_atom>`, :doc:`compute tdpd/cc/atom <compute_tdpd_cc_atom>`
**Default:** none

View File

@ -66,15 +66,15 @@ standard velocity-Verlet (VV) scheme. For more details, see
:ref:`Groot <Groot2>`.
Fix *mvv/dpd* updates the position and velocity of each atom. It can
be used with the :doc:`pair_style mdpd <pair_meso>` command or other
be used with the :doc:`pair_style mdpd <pair_mesodpd>` command or other
pair styles such as :doc:`pair dpd <pair_dpd>`.
Fix *mvv/edpd* updates the per-atom temperature, in addition to
position and velocity, and must be used with the :doc:`pair_style edpd <pair_meso>` command.
position and velocity, and must be used with the :doc:`pair_style edpd <pair_mesodpd>` command.
Fix *mvv/tdpd* updates the per-atom chemical concentration, in
addition to position and velocity, and must be used with the
:doc:`pair_style tdpd <pair_meso>` command.
:doc:`pair_style tdpd <pair_mesodpd>` command.
----------
@ -92,14 +92,14 @@ Restrictions
""""""""""""
This fix is part of the USER-MESO package. It is only enabled if
This fix is part of the USER-MESODPD 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:`pair_style mdpd <pair_meso>`, :doc:`pair_style edpd <pair_meso>`,
:doc:`pair_style tdpd <pair_meso>`
:doc:`pair_style mdpd <pair_mesodpd>`, :doc:`pair_style edpd <pair_mesodpd>`,
:doc:`pair_style tdpd <pair_mesodpd>`
Default
"""""""

View File

@ -182,4 +182,4 @@ Jonsson, Mills, Jacobsen.
.. _Guenole:
**(Guenole)** Guenole, Noehring, Vaid, Houlle, Xie, Prakash, Bitzek,
Comput Mater Sci, (2020), in press (arXiv:190802038).
Comput Mater Sci, 175, 109584 (2020).

View File

@ -297,7 +297,7 @@ Restrictions
""""""""""""
The pair styles *edpd*\ , *mdpd*\ , *mdpd/rhosum* and *tdpd* are part of
the USER-MESO package. It is only enabled if LAMMPS was built with
the USER-MESODPD package. It is only enabled if LAMMPS was built with
that package. See the :doc:`Build package <Build_package>` doc page for
more info.

View File

@ -162,7 +162,7 @@ accelerated styles exist.
* :doc:`eam/fs <pair_eam>` - Finnis-Sinclair EAM
* :doc:`edip <pair_edip>` - three-body EDIP potential
* :doc:`edip/multi <pair_edip>` - multi-element EDIP potential
* :doc:`edpd <pair_meso>` - eDPD particle interactions
* :doc:`edpd <pair_mesodpd>` - eDPD particle interactions
* :doc:`eff/cut <pair_eff>` - electron force field with a cutoff
* :doc:`eim <pair_eim>` - embedded ion method (EIM)
* :doc:`exp6/rx <pair_exp6_rx>` - reactive DPD potential
@ -239,8 +239,8 @@ accelerated styles exist.
* :doc:`lubricate/poly <pair_lubricate>` - hydrodynamic lubrication forces with polydispersity
* :doc:`lubricateU <pair_lubricateU>` - hydrodynamic lubrication forces for Fast Lubrication Dynamics
* :doc:`lubricateU/poly <pair_lubricateU>` - hydrodynamic lubrication forces for Fast Lubrication with polydispersity
* :doc:`mdpd <pair_meso>` - mDPD particle interactions
* :doc:`mdpd/rhosum <pair_meso>` - mDPD particle interactions for mass density
* :doc:`mdpd <pair_mesodpd>` - mDPD particle interactions
* :doc:`mdpd/rhosum <pair_mesodpd>` - mDPD particle interactions for mass density
* :doc:`meam/c <pair_meamc>` - modified embedded atom method (MEAM) in C
* :doc:`meam/spline <pair_meam_spline>` - splined version of MEAM
* :doc:`meam/sw/spline <pair_meam_sw_spline>` - splined version of MEAM with a Stillinger-Weber term
@ -309,7 +309,7 @@ accelerated styles exist.
* :doc:`sw <pair_sw>` - Stillinger-Weber 3-body potential
* :doc:`table <pair_table>` - tabulated pair potential
* :doc:`table/rx <pair_table_rx>` -
* :doc:`tdpd <pair_meso>` - tDPD particle interactions
* :doc:`tdpd <pair_mesodpd>` - tDPD particle interactions
* :doc:`tersoff <pair_tersoff>` - Tersoff 3-body potential
* :doc:`tersoff/mod <pair_tersoff_mod>` - modified Tersoff 3-body potential
* :doc:`tersoff/mod/c <pair_tersoff_mod>` -

View File

@ -462,13 +462,13 @@ value >= 0.0, the internal temperature is set to that value. If it is
temperature is set to that value.
Keywords *edpd/temp* and *edpd/cv* set the temperature and volumetric
heat capacity of an eDPD particle as defined by the USER-MESO package.
heat capacity of an eDPD particle as defined by the USER-MESODPD package.
Currently, only :doc:`atom_style edpd <atom_style>` defines particles
with these attributes. The values for the temperature and heat
capacity must be positive.
Keyword *cc* sets the chemical concentration of a tDPD particle for a
specified species as defined by the USER-MESO package. Currently, only
specified species as defined by the USER-MESODPD package. Currently, only
:doc:`atom_style tdpd <atom_style>` defines particles with this
attribute. An integer for "index" selects a chemical species (1 to
Nspecies) where Nspecies is set by the atom\_style command. The value

View File

@ -615,6 +615,7 @@ dipolar
dir
Direc
dirname
disarmmd
discoverable
discretization
discretized
@ -1704,6 +1705,8 @@ Merz
meshless
meso
mesocnt
MESODPD
mesodpd
mesoparticle
mesoscale
mesoscopic
@ -2017,6 +2020,7 @@ Nrecompute
Nrepeat
nreset
Nrho
Nroff
nrun
Ns
Nsample

View File

@ -0,0 +1,49 @@
# two molecules DGEBA (diepoxy) and one DETA (linker)
# two crosslinking reactions
units real
boundary p p p
atom_style full
pair_style lj/class2 8
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
read_data tiny_epoxy.data
velocity all create 300.0 4928459 dist gaussian
molecule mol1 rxn1_stp1_pre.data_template
molecule mol2 rxn1_stp1_post.data_template
molecule mol3 rxn1_stp2_post.data_template
molecule mol4 rxn2_stp1_pre.data_template
molecule mol5 rxn2_stp1_post.data_template
molecule mol6 rxn2_stp2_post.data_template
thermo 50
# dump 1 all xyz 1 test_vis.xyz
fix rxns all bond/react stabilization yes statted_grp .03 &
react rxn1_stp1 all 1 0.0 5 mol1 mol2 rxn1_stp1.map &
react rxn1_stp2 all 1 0.0 5 mol2 mol3 rxn1_stp2.map &
react rxn2_stp1 all 1 0.0 5 mol4 mol5 rxn2_stp1.map &
react rxn2_stp2 all 1 0.0 5 mol5 mol6 rxn2_stp2.map
fix 1 statted_grp_REACT nvt temp 300 300 100
thermo_style custom step temp f_rxns[1] f_rxns[2] f_rxns[3] f_rxns[4]
run 2000
# write_restart restart_longrun
# write_data restart_longrun.data nofix

View File

@ -0,0 +1,172 @@
LAMMPS (20 Nov 2019)
WARNING-WARNING-WARNING-WARNING-WARNING
This LAMMPS executable was compiled using C++98 compatibility.
Please report the compiler info below at https://github.com/lammps/lammps/issues/1659
GNU C++ 4.8.5
WARNING-WARNING-WARNING-WARNING-WARNING
Reading data file ...
orthogonal box = (10 -10 -15) to (30 20 10)
1 by 1 by 1 MPI processor grid
reading atoms ...
118 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
4 = max impropers/atom
reading bonds ...
123 bonds
reading angles ...
221 angles
reading dihedrals ...
302 dihedrals
reading impropers ...
115 impropers
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
4 = max # of 1-2 neighbors
10 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
22 = max # of special neighbors
special bonds CPU = 0.000286808 secs
read_data CPU = 0.00724107 secs
Read molecule mol1:
31 atoms with max type 10
30 bonds with max type 15
53 angles with max type 29
66 dihedrals with max type 39
31 impropers with max type 5
Read molecule mol2:
31 atoms with max type 10
30 bonds with max type 17
55 angles with max type 36
75 dihedrals with max type 51
34 impropers with max type 5
Read molecule mol3:
31 atoms with max type 11
30 bonds with max type 18
53 angles with max type 37
72 dihedrals with max type 53
31 impropers with max type 5
Read molecule mol4:
42 atoms with max type 11
41 bonds with max type 18
73 angles with max type 41
96 dihedrals with max type 54
43 impropers with max type 5
Read molecule mol5:
42 atoms with max type 11
41 bonds with max type 18
75 angles with max type 37
108 dihedrals with max type 53
46 impropers with max type 5
Read molecule mol6:
42 atoms with max type 11
41 bonds with max type 19
73 angles with max type 50
102 dihedrals with max type 66
43 impropers with max type 22
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp_REACT defined
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10
ghost atom cutoff = 10
binsize = 5, bins = 4 6 5
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Setting up Verlet run ...
Unit style : real
Current step : 0
Time step : 1
Per MPI rank memory allocation (min/avg/max) = 17.28 | 17.28 | 17.28 Mbytes
Step Temp f_rxns[1] f_rxns[2] f_rxns[3] f_rxns[4]
0 300 0 0 0 0
50 391.52956 1 0 0 0
100 475.26826 1 1 0 0
150 605.26215 1 1 1 0
200 545.7485 1 1 1 0
250 461.64929 1 1 1 1
300 452.10611 1 1 1 1
350 379.61671 1 1 1 1
400 331.22444 1 1 1 1
450 275.63969 1 1 1 1
500 316.63407 1 1 1 1
550 261.39841 1 1 1 1
600 313.70928 1 1 1 1
650 294.24011 1 1 1 1
700 285.81736 1 1 1 1
750 340.37496 1 1 1 1
800 333.2496 1 1 1 1
850 307.40826 1 1 1 1
900 304.68718 1 1 1 1
950 328.0289 1 1 1 1
1000 290.22808 1 1 1 1
1050 272.78518 1 1 1 1
1100 291.30546 1 1 1 1
1150 320.33992 1 1 1 1
1200 330.57057 1 1 1 1
1250 300.51008 1 1 1 1
1300 293.6209 1 1 1 1
1350 324.36604 1 1 1 1
1400 331.15408 1 1 1 1
1450 302.23396 1 1 1 1
1500 297.55562 1 1 1 1
1550 277.3187 1 1 1 1
1600 289.66052 1 1 1 1
1650 281.85404 1 1 1 1
1700 293.4999 1 1 1 1
1750 306.21866 1 1 1 1
1800 283.22696 1 1 1 1
1850 295.10473 1 1 1 1
1900 317.3843 1 1 1 1
1950 305.14825 1 1 1 1
2000 289.00911 1 1 1 1
Loop time of 1.87066 on 1 procs for 2000 steps with 118 atoms
Performance: 92.374 ns/day, 0.260 hours/ns, 1069.141 timesteps/s
98.4% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.12832 | 0.12832 | 0.12832 | 0.0 | 6.86
Bond | 0.77458 | 0.77458 | 0.77458 | 0.0 | 41.41
Neigh | 0.45068 | 0.45068 | 0.45068 | 0.0 | 24.09
Comm | 0.029785 | 0.029785 | 0.029785 | 0.0 | 1.59
Output | 0.31635 | 0.31635 | 0.31635 | 0.0 | 16.91
Modify | 0.16657 | 0.16657 | 0.16657 | 0.0 | 8.90
Other | | 0.004368 | | | 0.23
Nlocal: 118 ave 118 max 118 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 332 ave 332 max 332 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 4338 ave 4338 max 4338 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 4338
Ave neighs/atom = 36.7627
Ave special neighs/atom = 10.5763
Neighbor list builds = 2000
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:02

View File

@ -0,0 +1,172 @@
LAMMPS (20 Nov 2019)
WARNING-WARNING-WARNING-WARNING-WARNING
This LAMMPS executable was compiled using C++98 compatibility.
Please report the compiler info below at https://github.com/lammps/lammps/issues/1659
GNU C++ 4.8.5
WARNING-WARNING-WARNING-WARNING-WARNING
Reading data file ...
orthogonal box = (10 -10 -15) to (30 20 10)
1 by 2 by 2 MPI processor grid
reading atoms ...
118 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
4 = max impropers/atom
reading bonds ...
123 bonds
reading angles ...
221 angles
reading dihedrals ...
302 dihedrals
reading impropers ...
115 impropers
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
4 = max # of 1-2 neighbors
10 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
22 = max # of special neighbors
special bonds CPU = 0.000239905 secs
read_data CPU = 0.0080783 secs
Read molecule mol1:
31 atoms with max type 10
30 bonds with max type 15
53 angles with max type 29
66 dihedrals with max type 39
31 impropers with max type 5
Read molecule mol2:
31 atoms with max type 10
30 bonds with max type 17
55 angles with max type 36
75 dihedrals with max type 51
34 impropers with max type 5
Read molecule mol3:
31 atoms with max type 11
30 bonds with max type 18
53 angles with max type 37
72 dihedrals with max type 53
31 impropers with max type 5
Read molecule mol4:
42 atoms with max type 11
41 bonds with max type 18
73 angles with max type 41
96 dihedrals with max type 54
43 impropers with max type 5
Read molecule mol5:
42 atoms with max type 11
41 bonds with max type 18
75 angles with max type 37
108 dihedrals with max type 53
46 impropers with max type 5
Read molecule mol6:
42 atoms with max type 11
41 bonds with max type 19
73 angles with max type 50
102 dihedrals with max type 66
43 impropers with max type 22
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp_REACT defined
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 10
ghost atom cutoff = 10
binsize = 5, bins = 4 6 5
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Setting up Verlet run ...
Unit style : real
Current step : 0
Time step : 1
Per MPI rank memory allocation (min/avg/max) = 16.26 | 16.45 | 16.63 Mbytes
Step Temp f_rxns[1] f_rxns[2] f_rxns[3] f_rxns[4]
0 300 0 0 0 0
50 391.52956 1 0 0 0
100 475.26826 1 1 0 0
150 605.26215 1 1 1 0
200 545.7485 1 1 1 0
250 461.64929 1 1 1 1
300 452.10611 1 1 1 1
350 379.61671 1 1 1 1
400 331.22444 1 1 1 1
450 275.63969 1 1 1 1
500 316.63407 1 1 1 1
550 261.39841 1 1 1 1
600 313.70928 1 1 1 1
650 294.24011 1 1 1 1
700 285.81736 1 1 1 1
750 340.37496 1 1 1 1
800 333.2496 1 1 1 1
850 307.40826 1 1 1 1
900 304.68718 1 1 1 1
950 328.0289 1 1 1 1
1000 290.22808 1 1 1 1
1050 272.78518 1 1 1 1
1100 291.30546 1 1 1 1
1150 320.33992 1 1 1 1
1200 330.57057 1 1 1 1
1250 300.51008 1 1 1 1
1300 293.6209 1 1 1 1
1350 324.36604 1 1 1 1
1400 331.15408 1 1 1 1
1450 302.23396 1 1 1 1
1500 297.55562 1 1 1 1
1550 277.3187 1 1 1 1
1600 289.66052 1 1 1 1
1650 281.85404 1 1 1 1
1700 293.4999 1 1 1 1
1750 306.21866 1 1 1 1
1800 283.22695 1 1 1 1
1850 295.10472 1 1 1 1
1900 317.38431 1 1 1 1
1950 305.14824 1 1 1 1
2000 289.00909 1 1 1 1
Loop time of 0.689125 on 4 procs for 2000 steps with 118 atoms
Performance: 250.753 ns/day, 0.096 hours/ns, 2902.231 timesteps/s
100.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 | 0.02002 | 0.030617 | 0.053133 | 7.7 | 4.44
Bond | 0.10356 | 0.18908 | 0.22691 | 11.6 | 27.44
Neigh | 0.16721 | 0.17002 | 0.17247 | 0.5 | 24.67
Comm | 0.057286 | 0.12002 | 0.21612 | 17.0 | 17.42
Output | 0.00028991 | 0.00034121 | 0.00049323 | 0.0 | 0.05
Modify | 0.17626 | 0.17675 | 0.17721 | 0.1 | 25.65
Other | | 0.002287 | | | 0.33
Nlocal: 29.5 ave 41 max 18 min
Histogram: 1 0 0 1 0 0 1 0 0 1
Nghost: 306 ave 349 max 269 min
Histogram: 1 1 0 0 0 0 1 0 0 1
Neighs: 1084.5 ave 2154 max 397 min
Histogram: 1 0 1 1 0 0 0 0 0 1
Total # of neighbors = 4338
Ave neighs/atom = 36.7627
Ave special neighs/atom = 10.5763
Neighbor list builds = 2000
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:01

View File

@ -0,0 +1,47 @@
this is a map file
1 edgeIDs
31 equivalences
BondingIDs
15
1
EdgeIDs
5
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31

View File

@ -0,0 +1,315 @@
rxn1_stp1_post
31 atoms
30 bonds
55 angles
75 dihedrals
34 impropers
Types
1 1
2 6
3 1
4 7
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 10
25 10
26 10
27 10
28 8
29 8
30 8
31 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
Coords
1 22.582573 10.988183 -5.014054
2 23.904713 10.750493 -4.202215
3 23.989172 9.487042 -3.323374
4 24.067001 11.723383 -4.037435
5 24.627851 7.325302 -3.319944
6 24.554632 8.418972 -4.080365
7 22.667763 11.445703 -5.999605
8 21.787441 10.247643 -4.916974
9 24.964962 10.712683 -4.449374
10 24.616703 9.689913 -2.456034
11 22.989313 9.208153 -2.991455
12 18.808882 13.758042 -3.958724
13 19.293213 12.549683 -3.196594
14 20.810543 12.417832 -3.417504
15 21.090193 12.251203 -4.891234
16 17.657042 16.437199 -3.985224
17 19.126713 16.210239 -4.245154
18 19.589151 14.957593 -3.479565
19 19.000433 13.609432 -5.041715
20 18.761223 11.614392 -3.573184
21 19.082903 12.688992 -2.085145
22 21.202852 11.511562 -2.848624
23 21.328482 13.360252 -3.038924
24 19.949852 12.199403 -5.680355
25 21.477343 13.247442 -5.445915
26 17.080341 15.555528 -4.334374
27 17.319832 17.341927 -4.532204
28 19.720472 17.115158 -3.887564
29 19.298622 16.058659 -5.361685
30 19.410772 15.105113 -2.363724
31 20.700163 14.782252 -3.666344
Bonds
1 1 1 8
2 16 1 2
3 1 1 7
4 13 1 15
5 16 3 2
6 12 2 9
7 17 2 4
8 3 3 6
9 1 3 10
10 1 3 11
11 8 6 5
12 13 13 12
13 13 18 12
14 14 12 19
15 15 13 14
16 1 13 20
17 1 13 21
18 13 14 15
19 1 14 22
20 1 14 23
21 14 15 24
22 14 15 25
23 13 17 16
24 14 16 26
25 14 16 27
26 15 17 18
27 1 17 28
28 1 17 29
29 1 18 30
30 1 18 31
Angles
1 30 2 1 8
2 2 8 1 7
3 26 8 1 15
4 30 2 1 7
5 31 2 1 15
6 26 7 1 15
7 32 1 2 3
8 33 1 2 9
9 34 1 2 4
10 33 3 2 9
11 34 3 2 4
12 35 4 2 9
13 36 2 3 6
14 30 2 3 10
15 30 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 22 3 6 5
20 23 13 12 18
21 24 13 12 19
22 24 18 12 19
23 25 14 13 12
24 26 20 13 12
25 26 21 13 12
26 27 14 13 20
27 27 14 13 21
28 2 20 13 21
29 25 13 14 15
30 27 13 14 22
31 27 13 14 23
32 26 22 14 15
33 26 23 14 15
34 2 22 14 23
35 23 1 15 14
36 24 1 15 24
37 24 1 15 25
38 24 14 15 24
39 24 14 15 25
40 28 24 15 25
41 24 17 16 26
42 24 17 16 27
43 28 26 16 27
44 25 18 17 16
45 26 28 17 16
46 26 29 17 16
47 27 18 17 28
48 27 18 17 29
49 2 28 17 29
50 25 17 18 12
51 26 30 18 12
52 26 31 18 12
53 27 17 18 30
54 27 17 18 31
55 2 30 18 31
Dihedrals
1 40 8 1 2 3
2 41 8 1 2 9
3 42 8 1 2 4
4 40 7 1 2 3
5 41 7 1 2 9
6 42 7 1 2 4
7 43 15 1 2 3
8 44 15 1 2 9
9 45 15 1 2 4
10 28 8 1 15 14
11 30 8 1 15 24
12 30 8 1 15 25
13 46 2 1 15 14
14 47 2 1 15 24
15 47 2 1 15 25
16 28 7 1 15 14
17 30 7 1 15 24
18 30 7 1 15 25
19 48 6 3 2 1
20 40 10 3 2 1
21 40 11 3 2 1
22 49 6 3 2 9
23 41 10 3 2 9
24 41 11 3 2 9
25 50 6 3 2 4
26 42 10 3 2 4
27 42 11 3 2 4
28 51 2 3 6 5
29 7 10 3 6 5
30 7 11 3 6 5
31 27 14 13 12 18
32 28 20 13 12 18
33 28 21 13 12 18
34 29 14 13 12 19
35 30 20 13 12 19
36 30 21 13 12 19
37 27 17 18 12 13
38 28 30 18 12 13
39 28 31 18 12 13
40 29 17 18 12 19
41 30 30 18 12 19
42 30 31 18 12 19
43 31 12 13 14 15
44 32 22 14 13 12
45 32 23 14 13 12
46 32 20 13 14 15
47 33 20 13 14 22
48 33 20 13 14 23
49 32 21 13 14 15
50 33 21 13 14 22
51 33 21 13 14 23
52 27 13 14 15 1
53 29 13 14 15 24
54 29 13 14 15 25
55 28 22 14 15 1
56 30 22 14 15 24
57 30 22 14 15 25
58 28 23 14 15 1
59 30 23 14 15 24
60 30 23 14 15 25
61 29 18 17 16 26
62 30 28 17 16 26
63 30 29 17 16 26
64 29 18 17 16 27
65 30 28 17 16 27
66 30 29 17 16 27
67 31 16 17 18 12
68 32 30 18 17 16
69 32 31 18 17 16
70 32 28 17 18 12
71 33 28 17 18 30
72 33 28 17 18 31
73 32 29 17 18 12
74 33 29 17 18 30
75 33 29 17 18 31
Impropers
1 4 13 12 18 19
2 5 17 16 26 27
3 1 2 1 8 7
4 1 2 1 8 15
5 1 8 1 7 15
6 1 2 1 7 15
7 1 1 2 3 9
8 1 1 2 3 4
9 1 1 2 4 9
10 1 3 2 4 9
11 1 2 3 6 10
12 1 2 3 6 11
13 1 2 3 10 11
14 1 6 3 10 11
15 1 14 13 20 12
16 1 14 13 21 12
17 1 20 13 21 12
18 1 14 13 20 21
19 1 13 14 22 15
20 1 13 14 23 15
21 1 13 14 22 23
22 1 22 14 23 15
23 1 1 15 14 24
24 1 1 15 14 25
25 1 1 15 24 25
26 1 14 15 24 25
27 1 18 17 28 16
28 1 18 17 29 16
29 1 28 17 29 16
30 1 18 17 28 29
31 1 17 18 30 12
32 1 17 18 31 12
33 1 30 18 31 12
34 1 17 18 30 31

View File

@ -0,0 +1,301 @@
rxn1_stp1_pre
31 atoms
30 bonds
53 angles
66 dihedrals
31 impropers
Types
1 2
2 2
3 1
4 3
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 10
25 10
26 10
27 10
28 8
29 8
30 8
31 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
Coords
1 19.846882 9.569666 -1.229588
2 21.168802 9.331466 -0.418038
3 21.253012 8.067936 0.460722
4 20.170443 10.460656 0.020692
5 21.891691 5.906196 0.464152
6 21.818472 6.999866 -0.296268
7 19.932211 10.027435 -2.215008
8 19.051722 8.829116 -1.132808
9 22.229073 9.293536 -0.665088
10 21.880442 8.270676 1.328162
11 20.253073 7.789126 0.792482
12 16.072590 12.338870 -0.174330
13 16.557261 11.130320 0.587290
14 18.074570 10.998810 0.366080
15 18.353970 10.832370 -1.107720
16 14.920720 15.017820 -0.200530
17 16.390430 14.791100 -0.460440
18 16.852980 13.538320 0.304870
19 16.263750 12.190560 -1.257430
20 16.025360 10.195070 0.210470
21 16.347120 11.269210 1.698830
22 18.467180 10.092570 0.934800
23 18.592390 11.941300 0.744640
24 17.843861 9.919930 -1.479780
25 19.448191 10.736480 -1.267520
26 14.344120 14.136250 -0.550130
27 14.583470 15.922760 -0.747140
28 16.984060 15.696010 -0.102600
29 16.562420 14.639820 -1.577000
30 16.674820 13.685670 1.420760
31 17.963949 13.362980 0.117850
Bonds
1 6 1 8
2 4 1 4
3 5 1 2
4 6 1 7
5 4 2 4
6 2 2 3
7 6 2 9
8 3 3 6
9 1 3 10
10 1 3 11
11 8 5 6
12 13 13 12
13 13 18 12
14 14 12 19
15 15 13 14
16 1 13 20
17 1 13 21
18 13 14 15
19 1 14 22
20 1 14 23
21 14 15 24
22 14 15 25
23 13 17 16
24 14 16 26
25 14 16 27
26 15 17 18
27 1 17 28
28 1 17 29
29 1 18 30
30 1 18 31
Angles
1 9 4 1 8
2 10 2 1 8
3 11 8 1 7
4 8 2 1 4
5 9 4 1 7
6 10 2 1 7
7 8 1 2 4
8 29 1 2 3
9 10 1 2 9
10 5 3 2 4
11 9 4 2 9
12 7 3 2 9
13 4 2 3 6
14 1 2 3 10
15 1 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 12 1 4 2
20 22 3 6 5
21 23 13 12 18
22 24 13 12 19
23 24 18 12 19
24 25 14 13 12
25 26 20 13 12
26 26 21 13 12
27 27 14 13 20
28 27 14 13 21
29 2 20 13 21
30 25 13 14 15
31 27 13 14 22
32 27 13 14 23
33 26 22 14 15
34 26 23 14 15
35 2 22 14 23
36 24 14 15 24
37 24 14 15 25
38 28 24 15 25
39 24 17 16 26
40 24 17 16 27
41 28 26 16 27
42 25 18 17 16
43 26 28 17 16
44 26 29 17 16
45 27 18 17 28
46 27 18 17 29
47 2 28 17 29
48 25 17 18 12
49 26 30 18 12
50 26 31 18 12
51 27 17 18 30
52 27 17 18 31
53 2 30 18 31
Dihedrals
1 10 8 1 4 2
2 10 7 1 4 2
3 13 4 2 1 8
4 12 3 2 1 8
5 14 8 1 2 9
6 11 3 2 1 4
7 13 4 1 2 9
8 13 4 2 1 7
9 12 3 2 1 7
10 14 7 1 2 9
11 9 3 2 4 1
12 10 9 2 4 1
13 34 1 2 3 6
14 35 1 2 3 10
15 35 1 2 3 11
16 36 4 2 3 6
17 37 4 2 3 10
18 37 4 2 3 11
19 38 9 2 3 6
20 39 9 2 3 10
21 39 9 2 3 11
22 8 2 3 6 5
23 7 10 3 6 5
24 7 11 3 6 5
25 27 14 13 12 18
26 28 20 13 12 18
27 28 21 13 12 18
28 29 14 13 12 19
29 30 20 13 12 19
30 30 21 13 12 19
31 27 17 18 12 13
32 28 30 18 12 13
33 28 31 18 12 13
34 29 17 18 12 19
35 30 30 18 12 19
36 30 31 18 12 19
37 31 12 13 14 15
38 32 22 14 13 12
39 32 23 14 13 12
40 32 20 13 14 15
41 33 20 13 14 22
42 33 20 13 14 23
43 32 21 13 14 15
44 33 21 13 14 22
45 33 21 13 14 23
46 29 13 14 15 24
47 29 13 14 15 25
48 30 22 14 15 24
49 30 22 14 15 25
50 30 23 14 15 24
51 30 23 14 15 25
52 29 18 17 16 26
53 30 28 17 16 26
54 30 29 17 16 26
55 29 18 17 16 27
56 30 28 17 16 27
57 30 29 17 16 27
58 31 16 17 18 12
59 32 30 18 17 16
60 32 31 18 17 16
61 32 28 17 18 12
62 33 28 17 18 30
63 33 28 17 18 31
64 32 29 17 18 12
65 33 29 17 18 30
66 33 29 17 18 31
Impropers
1 4 13 12 18 19
2 5 14 15 24 25
3 5 17 16 26 27
4 1 2 1 4 8
5 1 4 1 8 7
6 1 2 1 8 7
7 1 2 1 4 7
8 1 1 2 3 4
9 1 1 2 4 9
10 1 1 2 3 9
11 1 3 2 4 9
12 1 2 3 6 10
13 1 2 3 6 11
14 1 2 3 10 11
15 1 6 3 10 11
16 1 14 13 20 12
17 1 14 13 21 12
18 1 20 13 21 12
19 1 14 13 20 21
20 1 13 14 22 15
21 1 13 14 23 15
22 1 13 14 22 23
23 1 22 14 23 15
24 1 18 17 28 16
25 1 18 17 29 16
26 1 28 17 29 16
27 1 18 17 28 29
28 1 17 18 30 12
29 1 17 18 31 12
30 1 30 18 31 12
31 1 17 18 30 31

View File

@ -0,0 +1,47 @@
this is a map file
1 edgeIDs
31 equivalences
BondingIDs
4
25
EdgeIDs
5
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31

View File

@ -0,0 +1,307 @@
rxn1_stp2_post
31 atoms
30 bonds
53 angles
72 dihedrals
31 impropers
Types
1 1
2 6
3 1
4 7
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 10
25 11
26 10
27 10
28 8
29 8
30 8
31 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
Coords
1 19.846411 9.569080 -1.229960
2 21.168550 9.331390 -0.418120
3 21.253010 8.067940 0.460720
4 21.330839 10.304280 -0.253340
5 21.891689 5.906200 0.464150
6 21.818470 6.999870 -0.296270
7 19.931601 10.026600 -2.215510
8 19.051279 8.828540 -1.132880
9 22.228800 9.293580 -0.665280
10 21.880541 8.270810 1.328060
11 20.253151 7.789050 0.792640
12 16.072720 12.338940 -0.174630
13 16.557051 11.130580 0.587500
14 18.074381 10.998730 0.366590
15 18.354031 10.832100 -1.107140
16 14.920880 15.018100 -0.201130
17 16.390551 14.791140 -0.461060
18 16.852989 13.538490 0.304530
19 16.264271 12.190330 -1.257620
20 16.025061 10.195290 0.210910
21 16.346741 11.269890 1.698950
22 18.466690 10.092460 0.935470
23 18.592319 11.941150 0.745170
24 17.213690 10.780300 -1.896260
25 20.881861 11.302060 -0.773030
26 14.344180 14.136430 -0.550280
27 14.583670 15.922830 -0.748110
28 16.984310 15.696060 -0.103470
29 16.562460 14.639560 -1.577590
30 16.674610 13.686010 1.420370
31 17.964001 13.363150 0.117750
Bonds
1 1 1 8
2 16 1 2
3 1 1 7
4 13 1 15
5 16 3 2
6 12 2 9
7 17 2 4
8 3 3 6
9 1 3 10
10 1 3 11
11 18 4 25
12 8 6 5
13 13 13 12
14 13 18 12
15 14 12 19
16 15 13 14
17 1 13 20
18 1 13 21
19 13 14 15
20 1 14 22
21 1 14 23
22 14 15 24
23 13 17 16
24 14 16 26
25 14 16 27
26 15 17 18
27 1 17 28
28 1 17 29
29 1 18 30
30 1 18 31
Angles
1 30 2 1 8
2 2 8 1 7
3 26 8 1 15
4 30 2 1 7
5 31 2 1 15
6 26 7 1 15
7 32 1 2 3
8 33 1 2 9
9 34 1 2 4
10 33 3 2 9
11 34 3 2 4
12 35 4 2 9
13 36 2 3 6
14 30 2 3 10
15 30 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 37 2 4 25
20 22 3 6 5
21 23 13 12 18
22 24 13 12 19
23 24 18 12 19
24 25 14 13 12
25 26 20 13 12
26 26 21 13 12
27 27 14 13 20
28 27 14 13 21
29 2 20 13 21
30 25 13 14 15
31 27 13 14 22
32 27 13 14 23
33 26 22 14 15
34 26 23 14 15
35 2 22 14 23
36 23 1 15 14
37 24 1 15 24
38 24 14 15 24
39 24 17 16 26
40 24 17 16 27
41 28 26 16 27
42 25 18 17 16
43 26 28 17 16
44 26 29 17 16
45 27 18 17 28
46 27 18 17 29
47 2 28 17 29
48 25 17 18 12
49 26 30 18 12
50 26 31 18 12
51 27 17 18 30
52 27 17 18 31
53 2 30 18 31
Dihedrals
1 40 8 1 2 3
2 41 8 1 2 9
3 42 8 1 2 4
4 40 7 1 2 3
5 41 7 1 2 9
6 42 7 1 2 4
7 43 15 1 2 3
8 44 15 1 2 9
9 45 15 1 2 4
10 28 8 1 15 14
11 30 8 1 15 24
12 46 2 1 15 14
13 47 2 1 15 24
14 28 7 1 15 14
15 30 7 1 15 24
16 48 6 3 2 1
17 40 10 3 2 1
18 40 11 3 2 1
19 49 6 3 2 9
20 41 10 3 2 9
21 41 11 3 2 9
22 50 6 3 2 4
23 42 10 3 2 4
24 42 11 3 2 4
25 52 1 2 4 25
26 52 3 2 4 25
27 53 9 2 4 25
28 51 2 3 6 5
29 7 10 3 6 5
30 7 11 3 6 5
31 27 14 13 12 18
32 28 20 13 12 18
33 28 21 13 12 18
34 29 14 13 12 19
35 30 20 13 12 19
36 30 21 13 12 19
37 27 17 18 12 13
38 28 30 18 12 13
39 28 31 18 12 13
40 29 17 18 12 19
41 30 30 18 12 19
42 30 31 18 12 19
43 31 12 13 14 15
44 32 22 14 13 12
45 32 23 14 13 12
46 32 20 13 14 15
47 33 20 13 14 22
48 33 20 13 14 23
49 32 21 13 14 15
50 33 21 13 14 22
51 33 21 13 14 23
52 27 13 14 15 1
53 29 13 14 15 24
54 28 22 14 15 1
55 30 22 14 15 24
56 28 23 14 15 1
57 30 23 14 15 24
58 29 18 17 16 26
59 30 28 17 16 26
60 30 29 17 16 26
61 29 18 17 16 27
62 30 28 17 16 27
63 30 29 17 16 27
64 31 16 17 18 12
65 32 30 18 17 16
66 32 31 18 17 16
67 32 28 17 18 12
68 33 28 17 18 30
69 33 28 17 18 31
70 32 29 17 18 12
71 33 29 17 18 30
72 33 29 17 18 31
Impropers
1 4 13 12 18 19
2 4 1 15 14 24
3 5 17 16 26 27
4 1 2 1 8 7
5 1 2 1 8 15
6 1 8 1 7 15
7 1 2 1 7 15
8 1 1 2 3 9
9 1 1 2 3 4
10 1 1 2 4 9
11 1 3 2 4 9
12 1 2 3 6 10
13 1 2 3 6 11
14 1 2 3 10 11
15 1 6 3 10 11
16 1 14 13 20 12
17 1 14 13 21 12
18 1 20 13 21 12
19 1 14 13 20 21
20 1 13 14 22 15
21 1 13 14 23 15
22 1 13 14 22 23
23 1 22 14 23 15
24 1 18 17 28 16
25 1 18 17 29 16
26 1 28 17 29 16
27 1 18 17 28 29
28 1 17 18 30 12
29 1 17 18 31 12
30 1 30 18 31 12
31 1 17 18 30 31

View File

@ -0,0 +1,59 @@
this is a map file
2 edgeIDs
42 equivalences
BondingIDs
15
32
EdgeIDs
5
36
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42

View File

@ -0,0 +1,424 @@
rxn2_stp1_post
42 atoms
41 bonds
75 angles
108 dihedrals
46 impropers
Types
1 1
2 6
3 1
4 7
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 10
25 11
26 10
27 10
28 8
29 8
30 8
31 8
32 1
33 6
34 1
35 7
36 4
37 7
38 8
39 8
40 8
41 8
42 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
32 0.000000
33 0.000000
34 0.000000
35 0.100000
36 0.000000
37 0.000000
38 0.000000
39 0.000000
40 0.000000
41 0.000000
42 0.000000
Coords
1 19.846411 9.569080 -1.229960
2 21.168550 9.331390 -0.418120
3 21.253010 8.067940 0.460720
4 21.330839 10.304280 -0.253340
5 21.891689 5.906200 0.464150
6 21.818470 6.999870 -0.296270
7 19.931601 10.026600 -2.215510
8 19.051279 8.828540 -1.132880
9 22.228800 9.293580 -0.665280
10 21.880541 8.270810 1.328060
11 20.253151 7.789050 0.792640
12 16.072720 12.338940 -0.174630
13 16.557051 11.130580 0.587500
14 18.074381 10.998730 0.366590
15 18.354031 10.832100 -1.107140
16 14.920880 15.018100 -0.201130
17 16.390551 14.791140 -0.461060
18 16.852989 13.538490 0.304530
19 16.264271 12.190330 -1.257620
20 16.025061 10.195290 0.210910
21 16.346741 11.269890 1.698950
22 18.466690 10.092460 0.935470
23 18.592319 11.941150 0.745170
24 17.213690 10.780300 -1.896260
25 20.881861 11.302060 -0.773030
26 14.344180 14.136430 -0.550280
27 14.583670 15.922830 -0.748110
28 16.984310 15.696060 -0.103470
29 16.562460 14.639560 -1.577590
30 16.674610 13.686010 1.420370
31 17.964001 13.363150 0.117750
32 18.680189 9.134390 -4.183100
33 18.099751 8.263650 -5.343000
34 19.081829 7.609610 -6.334180
35 17.971729 9.827680 -5.367080
36 20.263880 5.733600 -6.736780
37 19.414030 6.299980 -5.878960
38 18.194740 9.091640 -3.210950
39 19.788940 9.208560 -4.119640
40 17.399309 7.432220 -5.407800
41 18.616249 7.545570 -7.316910
42 19.987049 8.212500 -6.399400
Bonds
1 1 1 8
2 16 1 2
3 1 1 7
4 13 1 15
5 16 3 2
6 12 2 9
7 17 2 4
8 3 3 6
9 1 3 10
10 1 3 11
11 18 4 25
12 8 6 5
13 13 13 12
14 13 18 12
15 14 12 19
16 15 13 14
17 1 13 20
18 1 13 21
19 13 14 15
20 1 14 22
21 1 14 23
22 14 15 24
23 13 32 15
24 13 17 16
25 14 16 26
26 14 16 27
27 15 17 18
28 1 17 28
29 1 17 29
30 1 18 30
31 1 18 31
32 1 32 39
33 16 32 33
34 1 32 38
35 17 33 35
36 16 34 33
37 12 33 40
38 3 34 37
39 1 34 41
40 1 34 42
41 8 37 36
Angles
1 30 2 1 8
2 2 8 1 7
3 26 8 1 15
4 30 2 1 7
5 31 2 1 15
6 26 7 1 15
7 32 1 2 3
8 33 1 2 9
9 34 1 2 4
10 33 3 2 9
11 34 3 2 4
12 35 4 2 9
13 36 2 3 6
14 30 2 3 10
15 30 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 37 2 4 25
20 22 3 6 5
21 23 13 12 18
22 24 13 12 19
23 24 18 12 19
24 25 14 13 12
25 26 20 13 12
26 26 21 13 12
27 27 14 13 20
28 27 14 13 21
29 2 20 13 21
30 25 13 14 15
31 27 13 14 22
32 27 13 14 23
33 26 22 14 15
34 26 23 14 15
35 2 22 14 23
36 23 1 15 14
37 24 1 15 24
38 23 1 15 32
39 24 14 15 24
40 23 14 15 32
41 24 32 15 24
42 24 17 16 26
43 24 17 16 27
44 28 26 16 27
45 25 18 17 16
46 26 28 17 16
47 26 29 17 16
48 27 18 17 28
49 27 18 17 29
50 2 28 17 29
51 25 17 18 12
52 26 30 18 12
53 26 31 18 12
54 27 17 18 30
55 27 17 18 31
56 2 30 18 31
57 26 39 32 15
58 31 33 32 15
59 26 38 32 15
60 30 33 32 39
61 2 39 32 38
62 30 33 32 38
63 34 32 33 35
64 32 32 33 34
65 33 32 33 40
66 34 34 33 35
67 35 35 33 40
68 33 34 33 40
69 36 33 34 37
70 30 33 34 41
71 30 33 34 42
72 3 37 34 41
73 3 37 34 42
74 2 41 34 42
75 22 34 37 36
Dihedrals
1 40 8 1 2 3
2 41 8 1 2 9
3 42 8 1 2 4
4 40 7 1 2 3
5 41 7 1 2 9
6 42 7 1 2 4
7 43 15 1 2 3
8 44 15 1 2 9
9 45 15 1 2 4
10 28 8 1 15 14
11 30 8 1 15 24
12 28 8 1 15 32
13 46 2 1 15 14
14 47 2 1 15 24
15 46 2 1 15 32
16 28 7 1 15 14
17 30 7 1 15 24
18 28 7 1 15 32
19 48 6 3 2 1
20 40 10 3 2 1
21 40 11 3 2 1
22 49 6 3 2 9
23 41 10 3 2 9
24 41 11 3 2 9
25 50 6 3 2 4
26 42 10 3 2 4
27 42 11 3 2 4
28 52 1 2 4 25
29 52 3 2 4 25
30 53 9 2 4 25
31 51 2 3 6 5
32 7 10 3 6 5
33 7 11 3 6 5
34 27 14 13 12 18
35 28 20 13 12 18
36 28 21 13 12 18
37 29 14 13 12 19
38 30 20 13 12 19
39 30 21 13 12 19
40 27 17 18 12 13
41 28 30 18 12 13
42 28 31 18 12 13
43 29 17 18 12 19
44 30 30 18 12 19
45 30 31 18 12 19
46 31 12 13 14 15
47 32 22 14 13 12
48 32 23 14 13 12
49 32 20 13 14 15
50 33 20 13 14 22
51 33 20 13 14 23
52 32 21 13 14 15
53 33 21 13 14 22
54 33 21 13 14 23
55 27 13 14 15 1
56 29 13 14 15 24
57 27 13 14 15 32
58 28 22 14 15 1
59 30 22 14 15 24
60 28 22 14 15 32
61 28 23 14 15 1
62 30 23 14 15 24
63 28 23 14 15 32
64 28 39 32 15 1
65 46 33 32 15 1
66 28 38 32 15 1
67 28 39 32 15 14
68 46 33 32 15 14
69 28 38 32 15 14
70 30 39 32 15 24
71 47 33 32 15 24
72 30 38 32 15 24
73 29 18 17 16 26
74 30 28 17 16 26
75 30 29 17 16 26
76 29 18 17 16 27
77 30 28 17 16 27
78 30 29 17 16 27
79 31 16 17 18 12
80 32 30 18 17 16
81 32 31 18 17 16
82 32 28 17 18 12
83 33 28 17 18 30
84 33 28 17 18 31
85 32 29 17 18 12
86 33 29 17 18 30
87 33 29 17 18 31
88 45 15 32 33 35
89 43 15 32 33 34
90 44 15 32 33 40
91 42 39 32 33 35
92 40 39 32 33 34
93 41 39 32 33 40
94 42 38 32 33 35
95 40 38 32 33 34
96 41 38 32 33 40
97 48 37 34 33 32
98 40 41 34 33 32
99 40 42 34 33 32
100 50 37 34 33 35
101 42 41 34 33 35
102 42 42 34 33 35
103 49 37 34 33 40
104 41 41 34 33 40
105 41 42 34 33 40
106 51 33 34 37 36
107 7 41 34 37 36
108 7 42 34 37 36
Impropers
1 4 13 12 18 19
2 5 17 16 26 27
3 1 2 1 8 7
4 1 2 1 8 15
5 1 8 1 7 15
6 1 2 1 7 15
7 1 1 2 3 9
8 1 1 2 3 4
9 1 1 2 4 9
10 1 3 2 4 9
11 1 2 3 6 10
12 1 2 3 6 11
13 1 2 3 10 11
14 1 6 3 10 11
15 1 14 13 20 12
16 1 14 13 21 12
17 1 20 13 21 12
18 1 14 13 20 21
19 1 13 14 22 15
20 1 13 14 23 15
21 1 13 14 22 23
22 1 22 14 23 15
23 1 1 15 14 24
24 1 1 15 14 32
25 1 1 15 32 24
26 1 14 15 32 24
27 1 18 17 28 16
28 1 18 17 29 16
29 1 28 17 29 16
30 1 18 17 28 29
31 1 17 18 30 12
32 1 17 18 31 12
33 1 30 18 31 12
34 1 17 18 30 31
35 1 33 32 39 15
36 1 39 32 38 15
37 1 33 32 38 15
38 1 33 32 39 38
39 1 32 33 34 35
40 1 32 33 35 40
41 1 32 33 34 40
42 1 34 33 35 40
43 1 33 34 37 41
44 1 33 34 37 42
45 1 33 34 41 42
46 1 37 34 41 42

View File

@ -0,0 +1,407 @@
rxn2_stp1_pre
42 atoms
41 bonds
73 angles
96 dihedrals
43 impropers
Types
1 1
2 6
3 1
4 7
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 10
25 11
26 10
27 10
28 8
29 8
30 8
31 8
32 2
33 2
34 1
35 3
36 4
37 7
38 8
39 8
40 8
41 8
42 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
32 0.000000
33 0.000000
34 0.000000
35 0.100000
36 0.000000
37 0.000000
38 0.000000
39 0.000000
40 0.000000
41 0.000000
42 0.000000
Coords
1 19.846411 9.569080 -1.229960
2 21.168550 9.331390 -0.418120
3 21.253010 8.067940 0.460720
4 21.330839 10.304280 -0.253340
5 21.891689 5.906200 0.464150
6 21.818470 6.999870 -0.296270
7 19.931601 10.026600 -2.215510
8 19.051279 8.828540 -1.132880
9 22.228800 9.293580 -0.665280
10 21.880541 8.270810 1.328060
11 20.253151 7.789050 0.792640
12 16.072720 12.338940 -0.174630
13 16.557051 11.130580 0.587500
14 18.074381 10.998730 0.366590
15 18.354031 10.832100 -1.107140
16 14.920880 15.018100 -0.201130
17 16.390551 14.791140 -0.461060
18 16.852989 13.538490 0.304530
19 16.264271 12.190330 -1.257620
20 16.025061 10.195290 0.210910
21 16.346741 11.269890 1.698950
22 18.466690 10.092460 0.935470
23 18.592319 11.941150 0.745170
24 17.213690 10.780300 -1.896260
25 20.881861 11.302060 -0.773030
26 14.344180 14.136430 -0.550280
27 14.583670 15.922830 -0.748110
28 16.984310 15.696060 -0.103470
29 16.562460 14.639560 -1.577590
30 16.674610 13.686010 1.420370
31 17.964001 13.363150 0.117750
32 18.703360 9.118830 -4.174240
33 18.099751 8.263650 -5.343000
34 19.081829 7.609610 -6.334180
35 17.971729 9.827680 -5.367080
36 20.263880 5.733600 -6.736780
37 19.414030 6.299980 -5.878960
38 18.194740 9.091640 -3.210950
39 19.788940 9.208560 -4.119640
40 17.399309 7.432220 -5.407800
41 18.616249 7.545570 -7.316910
42 19.987049 8.212500 -6.399400
Bonds
1 1 1 8
2 16 1 2
3 1 1 7
4 13 1 15
5 16 3 2
6 12 2 9
7 17 2 4
8 3 3 6
9 1 3 10
10 1 3 11
11 18 4 25
12 8 6 5
13 13 13 12
14 13 18 12
15 14 12 19
16 15 13 14
17 1 13 20
18 1 13 21
19 13 14 15
20 1 14 22
21 1 14 23
22 14 15 24
23 13 17 16
24 14 16 26
25 14 16 27
26 15 17 18
27 1 17 28
28 1 17 29
29 1 18 30
30 1 18 31
31 6 39 32
32 4 32 35
33 5 32 33
34 6 38 32
35 4 33 35
36 2 34 33
37 6 40 33
38 3 34 37
39 1 34 41
40 1 34 42
41 8 37 36
Angles
1 30 2 1 8
2 2 8 1 7
3 26 8 1 15
4 30 2 1 7
5 31 2 1 15
6 26 7 1 15
7 32 1 2 3
8 33 1 2 9
9 34 1 2 4
10 33 3 2 9
11 34 3 2 4
12 35 4 2 9
13 36 2 3 6
14 30 2 3 10
15 30 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 37 2 4 25
20 22 3 6 5
21 23 13 12 18
22 24 13 12 19
23 24 18 12 19
24 25 14 13 12
25 26 20 13 12
26 26 21 13 12
27 27 14 13 20
28 27 14 13 21
29 2 20 13 21
30 25 13 14 15
31 27 13 14 22
32 27 13 14 23
33 26 22 14 15
34 26 23 14 15
35 2 22 14 23
36 23 1 15 14
37 24 1 15 24
38 24 14 15 24
39 24 17 16 26
40 24 17 16 27
41 28 26 16 27
42 25 18 17 16
43 26 28 17 16
44 26 29 17 16
45 27 18 17 28
46 27 18 17 29
47 2 28 17 29
48 25 17 18 12
49 26 30 18 12
50 26 31 18 12
51 27 17 18 30
52 27 17 18 31
53 2 30 18 31
54 38 39 32 35
55 39 39 32 33
56 11 39 32 38
57 8 33 32 35
58 38 38 32 35
59 39 38 32 33
60 8 32 33 35
61 6 34 33 32
62 39 40 33 32
63 5 34 33 35
64 38 40 33 35
65 7 34 33 40
66 40 37 34 33
67 41 41 34 33
68 41 42 34 33
69 3 37 34 41
70 3 37 34 42
71 2 41 34 42
72 12 32 35 33
73 22 34 37 36
Dihedrals
1 40 8 1 2 3
2 41 8 1 2 9
3 42 8 1 2 4
4 40 7 1 2 3
5 41 7 1 2 9
6 42 7 1 2 4
7 43 15 1 2 3
8 44 15 1 2 9
9 45 15 1 2 4
10 28 8 1 15 14
11 30 8 1 15 24
12 46 2 1 15 14
13 47 2 1 15 24
14 28 7 1 15 14
15 30 7 1 15 24
16 48 6 3 2 1
17 40 10 3 2 1
18 40 11 3 2 1
19 49 6 3 2 9
20 41 10 3 2 9
21 41 11 3 2 9
22 50 6 3 2 4
23 42 10 3 2 4
24 42 11 3 2 4
25 52 1 2 4 25
26 52 3 2 4 25
27 53 9 2 4 25
28 51 2 3 6 5
29 7 10 3 6 5
30 7 11 3 6 5
31 27 14 13 12 18
32 28 20 13 12 18
33 28 21 13 12 18
34 29 14 13 12 19
35 30 20 13 12 19
36 30 21 13 12 19
37 27 17 18 12 13
38 28 30 18 12 13
39 28 31 18 12 13
40 29 17 18 12 19
41 30 30 18 12 19
42 30 31 18 12 19
43 31 12 13 14 15
44 32 22 14 13 12
45 32 23 14 13 12
46 32 20 13 14 15
47 33 20 13 14 22
48 33 20 13 14 23
49 32 21 13 14 15
50 33 21 13 14 22
51 33 21 13 14 23
52 27 13 14 15 1
53 29 13 14 15 24
54 28 22 14 15 1
55 30 22 14 15 24
56 28 23 14 15 1
57 30 23 14 15 24
58 29 18 17 16 26
59 30 28 17 16 26
60 30 29 17 16 26
61 29 18 17 16 27
62 30 28 17 16 27
63 30 29 17 16 27
64 31 16 17 18 12
65 32 30 18 17 16
66 32 31 18 17 16
67 32 28 17 18 12
68 33 28 17 18 30
69 33 28 17 18 31
70 32 29 17 18 12
71 33 29 17 18 30
72 33 29 17 18 31
73 10 39 32 35 33
74 10 38 32 35 33
75 54 39 32 33 35
76 12 34 33 32 39
77 14 39 32 33 40
78 11 34 33 32 35
79 54 40 33 32 35
80 54 38 32 33 35
81 12 34 33 32 38
82 14 38 32 33 40
83 9 34 33 35 32
84 10 40 33 35 32
85 5 37 34 33 32
86 2 41 34 33 32
87 2 42 34 33 32
88 4 37 34 33 35
89 1 41 34 33 35
90 1 42 34 33 35
91 6 37 34 33 40
92 3 41 34 33 40
93 3 42 34 33 40
94 8 33 34 37 36
95 7 41 34 37 36
96 7 42 34 37 36
Impropers
1 4 13 12 18 19
2 4 1 15 14 24
3 5 17 16 26 27
4 1 2 1 8 7
5 1 2 1 8 15
6 1 8 1 7 15
7 1 2 1 7 15
8 1 1 2 3 9
9 1 1 2 3 4
10 1 1 2 4 9
11 1 3 2 4 9
12 1 2 3 6 10
13 1 2 3 6 11
14 1 2 3 10 11
15 1 6 3 10 11
16 1 14 13 20 12
17 1 14 13 21 12
18 1 20 13 21 12
19 1 14 13 20 21
20 1 13 14 22 15
21 1 13 14 23 15
22 1 13 14 22 23
23 1 22 14 23 15
24 1 18 17 28 16
25 1 18 17 29 16
26 1 28 17 29 16
27 1 18 17 28 29
28 1 17 18 30 12
29 1 17 18 31 12
30 1 30 18 31 12
31 1 17 18 30 31
32 1 39 32 33 35
33 1 39 32 38 35
34 1 39 32 38 33
35 1 38 32 33 35
36 1 34 33 32 35
37 1 40 33 32 35
38 1 34 33 40 32
39 1 34 33 40 35
40 1 37 34 41 33
41 1 37 34 42 33
42 1 41 34 42 33
43 1 37 34 41 42

View File

@ -0,0 +1,59 @@
this is a map file
2 edgeIDs
42 equivalences
BondingIDs
35
24
EdgeIDs
5
36
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42

View File

@ -0,0 +1,413 @@
rxn2_stp2_post
42 atoms
41 bonds
73 angles
102 dihedrals
43 impropers
Types
1 1
2 2
3 1
4 7
5 4
6 7
7 8
8 8
9 8
10 8
11 8
12 9
13 1
14 1
15 9
16 9
17 1
18 1
19 10
20 8
21 8
22 8
23 8
24 11
25 11
26 10
27 10
28 8
29 8
30 8
31 8
32 1
33 6
34 1
35 7
36 4
37 7
38 8
39 8
40 8
41 8
42 8
Charges
1 0.000000
2 0.000000
3 0.000000
4 0.100000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 -0.025000
16 -0.025000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000
29 0.000000
30 0.000000
31 0.000000
32 0.000000
33 0.000000
34 0.000000
35 0.100000
36 0.000000
37 0.000000
38 0.000000
39 0.000000
40 0.000000
41 0.000000
42 0.000000
Coords
1 19.846411 9.569080 -1.229960
2 21.168550 9.331390 -0.418120
3 21.253010 8.067940 0.460720
4 21.330839 10.304280 -0.253340
5 21.891689 5.906200 0.464150
6 21.818470 6.999870 -0.296270
7 19.931601 10.026600 -2.215510
8 19.051279 8.828540 -1.132880
9 22.228800 9.293580 -0.665280
10 21.880541 8.270810 1.328060
11 20.253151 7.789050 0.792640
12 16.072720 12.338940 -0.174630
13 16.557051 11.130580 0.587500
14 18.074381 10.998730 0.366590
15 18.354031 10.832100 -1.107140
16 14.920880 15.018100 -0.201130
17 16.390551 14.791140 -0.461060
18 16.852989 13.538490 0.304530
19 16.264271 12.190330 -1.257620
20 16.025061 10.195290 0.210910
21 16.346741 11.269890 1.698950
22 18.466690 10.092460 0.935470
23 18.592319 11.941150 0.745170
24 16.017490 9.805710 -4.329880
25 20.881861 11.302060 -0.773030
26 14.344180 14.136430 -0.550280
27 14.583670 15.922830 -0.748110
28 16.984310 15.696060 -0.103470
29 16.562460 14.639560 -1.577590
30 16.674610 13.686010 1.420370
31 17.964001 13.363150 0.117750
32 18.680189 9.134390 -4.183100
33 18.099751 8.263650 -5.343000
34 19.081829 7.609610 -6.334180
35 17.971729 9.827680 -5.367080
36 20.263880 5.733600 -6.736780
37 19.414030 6.299980 -5.878960
38 18.194740 9.091640 -3.210950
39 19.788940 9.208560 -4.119640
40 17.399309 7.432220 -5.407800
41 18.616249 7.545570 -7.316910
42 19.987049 8.212500 -6.399400
Bonds
1 1 1 8
2 2 1 2
3 1 1 7
4 13 1 15
5 2 3 2
6 6 2 9
7 19 2 4
8 3 3 6
9 1 3 10
10 1 3 11
11 18 4 25
12 8 6 5
13 13 13 12
14 13 18 12
15 14 12 19
16 15 13 14
17 1 13 20
18 1 13 21
19 13 14 15
20 1 14 22
21 1 14 23
22 13 32 15
23 13 17 16
24 14 16 26
25 14 16 27
26 15 17 18
27 1 17 28
28 1 17 29
29 1 18 30
30 1 18 31
31 18 35 24
32 1 32 39
33 16 32 33
34 1 32 38
35 17 35 33
36 16 34 33
37 12 40 33
38 3 34 37
39 1 34 41
40 1 34 42
41 8 37 36
Angles
1 1 2 1 8
2 2 8 1 7
3 26 8 1 15
4 1 2 1 7
5 42 2 1 15
6 26 7 1 15
7 43 1 2 3
8 7 1 2 9
9 44 1 2 4
10 7 3 2 9
11 44 3 2 4
12 45 4 2 9
13 4 2 3 6
14 1 2 3 10
15 1 2 3 11
16 3 6 3 10
17 3 6 3 11
18 2 10 3 11
19 46 2 4 25
20 22 3 6 5
21 23 13 12 18
22 24 13 12 19
23 24 18 12 19
24 25 14 13 12
25 26 20 13 12
26 26 21 13 12
27 27 14 13 20
28 27 14 13 21
29 2 20 13 21
30 25 13 14 15
31 27 13 14 22
32 27 13 14 23
33 26 22 14 15
34 26 23 14 15
35 2 22 14 23
36 23 1 15 14
37 23 1 15 32
38 23 14 15 32
39 24 17 16 26
40 24 17 16 27
41 28 26 16 27
42 25 18 17 16
43 26 28 17 16
44 26 29 17 16
45 27 18 17 28
46 27 18 17 29
47 2 28 17 29
48 25 17 18 12
49 26 30 18 12
50 26 31 18 12
51 27 17 18 30
52 27 17 18 31
53 2 30 18 31
54 26 39 32 15
55 47 15 32 33
56 26 38 32 15
57 48 39 32 33
58 2 39 32 38
59 48 38 32 33
60 34 32 33 35
61 32 32 33 34
62 33 32 33 40
63 34 34 33 35
64 35 35 33 40
65 33 34 33 40
66 49 37 34 33
67 48 41 34 33
68 48 42 34 33
69 3 37 34 41
70 3 37 34 42
71 2 41 34 42
72 50 24 35 33
73 22 34 37 36
Dihedrals
1 55 8 1 2 3
2 3 8 1 2 9
3 56 8 1 2 4
4 55 7 1 2 3
5 3 7 1 2 9
6 56 7 1 2 4
7 57 15 1 2 3
8 58 15 1 2 9
9 59 15 1 2 4
10 28 8 1 15 14
11 28 8 1 15 32
12 60 2 1 15 14
13 60 2 1 15 32
14 28 7 1 15 14
15 28 7 1 15 32
16 61 6 3 2 1
17 55 10 3 2 1
18 55 11 3 2 1
19 6 6 3 2 9
20 3 10 3 2 9
21 3 11 3 2 9
22 62 6 3 2 4
23 56 10 3 2 4
24 56 11 3 2 4
25 63 1 2 4 25
26 63 3 2 4 25
27 64 9 2 4 25
28 8 2 3 6 5
29 7 10 3 6 5
30 7 11 3 6 5
31 27 14 13 12 18
32 28 20 13 12 18
33 28 21 13 12 18
34 29 14 13 12 19
35 30 20 13 12 19
36 30 21 13 12 19
37 27 17 18 12 13
38 28 30 18 12 13
39 28 31 18 12 13
40 29 17 18 12 19
41 30 30 18 12 19
42 30 31 18 12 19
43 31 12 13 14 15
44 32 22 14 13 12
45 32 23 14 13 12
46 32 20 13 14 15
47 33 20 13 14 22
48 33 20 13 14 23
49 32 21 13 14 15
50 33 21 13 14 22
51 33 21 13 14 23
52 27 13 14 15 1
53 27 13 14 15 32
54 28 22 14 15 1
55 28 22 14 15 32
56 28 23 14 15 1
57 28 23 14 15 32
58 28 39 32 15 1
59 46 33 32 15 1
60 28 38 32 15 1
61 28 39 32 15 14
62 46 33 32 15 14
63 28 38 32 15 14
64 29 18 17 16 26
65 30 28 17 16 26
66 30 29 17 16 26
67 29 18 17 16 27
68 30 28 17 16 27
69 30 29 17 16 27
70 31 16 17 18 12
71 32 30 18 17 16
72 32 31 18 17 16
73 32 28 17 18 12
74 33 28 17 18 30
75 33 28 17 18 31
76 32 29 17 18 12
77 33 29 17 18 30
78 33 29 17 18 31
79 45 15 32 33 35
80 43 15 32 33 34
81 44 15 32 33 40
82 42 39 32 33 35
83 40 39 32 33 34
84 41 39 32 33 40
85 42 38 32 33 35
86 40 38 32 33 34
87 41 38 32 33 40
88 65 24 35 33 32
89 65 24 35 33 34
90 66 24 35 33 40
91 48 37 34 33 32
92 40 41 34 33 32
93 40 42 34 33 32
94 50 37 34 33 35
95 42 41 34 33 35
96 42 42 34 33 35
97 49 37 34 33 40
98 41 41 34 33 40
99 41 42 34 33 40
100 51 33 34 37 36
101 7 41 34 37 36
102 7 42 34 37 36
Impropers
1 4 13 12 18 19
2 22 1 15 14 32
3 5 17 16 26 27
4 1 2 1 8 7
5 1 2 1 8 15
6 1 8 1 7 15
7 1 2 1 7 15
8 1 1 2 3 9
9 1 1 2 3 4
10 1 1 2 4 9
11 1 3 2 4 9
12 1 2 3 6 10
13 1 2 3 6 11
14 1 2 3 10 11
15 1 6 3 10 11
16 1 14 13 20 12
17 1 14 13 21 12
18 1 20 13 21 12
19 1 14 13 20 21
20 1 13 14 22 15
21 1 13 14 23 15
22 1 13 14 22 23
23 1 22 14 23 15
24 1 18 17 28 16
25 1 18 17 29 16
26 1 28 17 29 16
27 1 18 17 28 29
28 1 17 18 30 12
29 1 17 18 31 12
30 1 30 18 31 12
31 1 17 18 30 31
32 1 39 32 15 33
33 1 39 32 38 15
34 1 38 32 15 33
35 1 39 32 38 33
36 1 32 33 34 35
37 1 32 33 35 40
38 1 32 33 34 40
39 1 34 33 35 40
40 1 37 34 41 33
41 1 37 34 42 33
42 1 41 34 42 33
43 1 37 34 41 42

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
this is a map file
0 edgeIDs
32 equivalences
BondingIDs
4
30
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32

View File

@ -0,0 +1,312 @@
2styrene_reacted
32 atoms
33 bonds
54 angles
79 dihedrals
22 impropers
Types
1 1
2 2
3 1
4 5
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 6
15 2
16 2
17 1
18 2
19 1
20 5
21 1
22 2
23 1
24 2
25 1
26 2
27 1
28 2
29 2
30 6
31 2
32 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.129000
18 0.123700
19 0.026600
20 -0.018200
21 -0.129000
22 0.123700
23 -0.173400
24 0.140300
25 -0.113400
26 0.128800
27 -0.173400
28 0.140300
29 0.051600
30 -0.069600
31 0.035400
32 0.035400
Coords
1 13.465810 0.682530 -1.658940
2 14.397820 1.221530 -1.658940
3 12.235820 1.392530 -1.658940
4 12.235820 2.892530 -1.658940
5 11.005820 0.682530 -1.658940
6 10.073820 1.221530 -1.658940
7 11.005820 -0.737470 -1.658940
8 10.073820 -1.276460 -1.658940
9 12.235820 -1.447460 -1.658940
10 12.235820 -2.524470 -1.658940
11 13.465810 -0.737470 -1.658940
12 14.397820 -1.276460 -1.658940
13 13.101820 3.297530 -1.301940
14 10.957820 3.441530 -2.220940
15 11.007810 4.183540 -2.319940
16 10.314820 2.618530 -2.514940
17 18.663521 0.855480 -1.372130
18 19.595510 1.394480 -1.372130
19 17.433510 1.565480 -1.372130
20 17.433510 3.065480 -1.372130
21 16.203510 0.855480 -1.372130
22 15.271510 1.394480 -1.372130
23 16.203510 -0.564520 -1.372130
24 15.271510 -1.103520 -1.372130
25 17.433510 -1.274520 -1.372130
26 17.433510 -2.351520 -1.372130
27 18.663521 -0.564520 -1.372130
28 19.595510 -1.103520 -1.372130
29 18.299509 3.470480 -1.015130
30 16.155510 3.614480 -1.934130
31 16.205509 4.356480 -2.033130
32 15.512510 2.791480 -2.228130
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 7 3 4
5 2 3 5
6 8 13 4
7 9 4 14
8 9 4 30
9 1 5 6
10 2 5 7
11 1 7 8
12 2 7 9
13 1 9 10
14 2 9 11
15 1 11 12
16 10 15 14
17 10 16 14
18 1 17 18
19 2 17 19
20 2 17 27
21 7 19 20
22 2 19 21
23 8 29 20
24 9 20 30
25 1 21 22
26 2 21 23
27 1 23 24
28 2 23 25
29 1 25 26
30 2 25 27
31 1 27 28
32 10 31 30
33 10 32 30
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 9 1 3 4
5 2 1 3 5
6 9 5 3 4
7 10 3 4 13
8 11 3 4 14
9 11 3 4 30
10 12 13 4 14
11 12 13 4 30
12 13 14 4 30
13 1 3 5 6
14 2 3 5 7
15 1 7 5 6
16 1 5 7 8
17 2 5 7 9
18 1 9 7 8
19 1 7 9 10
20 2 7 9 11
21 1 11 9 10
22 2 1 11 9
23 1 1 11 12
24 1 9 11 12
25 14 15 14 4
26 14 16 14 4
27 15 15 14 16
28 1 19 17 18
29 1 27 17 18
30 2 19 17 27
31 9 17 19 20
32 2 17 19 21
33 9 21 19 20
34 10 19 20 29
35 11 19 20 30
36 12 29 20 30
37 1 19 21 22
38 2 19 21 23
39 1 23 21 22
40 1 21 23 24
41 2 21 23 25
42 1 25 23 24
43 1 23 25 26
44 2 23 25 27
45 1 27 25 26
46 2 17 27 25
47 1 17 27 28
48 1 25 27 28
49 16 4 30 20
50 14 31 30 4
51 14 32 30 4
52 14 31 30 20
53 14 32 30 20
54 15 31 30 32
Dihedrals
1 10 2 1 3 4
2 2 5 3 1 2
3 11 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 12 1 3 4 13
10 13 1 3 4 14
11 13 1 3 4 30
12 12 5 3 4 13
13 13 5 3 4 14
14 13 5 3 4 30
15 2 1 3 5 6
16 4 1 3 5 7
17 10 6 5 3 4
18 11 7 5 3 4
19 14 3 4 14 15
20 14 3 4 14 16
21 15 13 4 14 15
22 15 13 4 14 16
23 16 30 4 14 15
24 16 30 4 14 16
25 17 3 4 30 20
26 14 3 4 30 31
27 14 3 4 30 32
28 18 13 4 30 20
29 15 13 4 30 31
30 15 13 4 30 32
31 19 14 4 30 20
32 16 14 4 30 31
33 16 14 4 30 32
34 2 3 5 7 8
35 4 3 5 7 9
36 5 6 5 7 8
37 2 9 7 5 6
38 2 5 7 9 10
39 4 5 7 9 11
40 5 8 7 9 10
41 2 11 9 7 8
42 4 7 9 11 1
43 2 7 9 11 12
44 2 1 11 9 10
45 5 10 9 11 12
46 10 18 17 19 20
47 2 21 19 17 18
48 11 27 17 19 20
49 4 27 17 19 21
50 2 25 27 17 18
51 5 18 17 27 28
52 4 19 17 27 25
53 2 19 17 27 28
54 12 17 19 20 29
55 13 17 19 20 30
56 12 21 19 20 29
57 13 21 19 20 30
58 2 17 19 21 22
59 4 17 19 21 23
60 10 22 21 19 20
61 11 23 21 19 20
62 17 19 20 30 4
63 14 19 20 30 31
64 14 19 20 30 32
65 18 29 20 30 4
66 15 29 20 30 31
67 15 29 20 30 32
68 2 19 21 23 24
69 4 19 21 23 25
70 5 22 21 23 24
71 2 25 23 21 22
72 2 21 23 25 26
73 4 21 23 25 27
74 5 24 23 25 26
75 2 27 25 23 24
76 4 23 25 27 17
77 2 23 25 27 28
78 2 17 27 25 26
79 5 26 25 27 28
Impropers
1 1 3 1 11 2
2 5 1 3 5 4
3 1 3 5 7 6
4 1 5 7 9 8
5 1 7 9 11 10
6 1 1 11 9 12
7 6 15 14 16 4
8 1 19 17 27 18
9 5 17 19 21 20
10 7 19 20 29 30
11 1 19 21 23 22
12 1 21 23 25 24
13 1 23 25 27 26
14 1 17 27 25 28
15 1 3 4 13 14
16 1 3 4 13 30
17 1 3 4 14 30
18 1 13 4 14 30
19 1 31 30 20 4
20 1 32 30 20 4
21 1 31 30 32 4
22 1 31 30 32 20

View File

@ -0,0 +1,284 @@
2styrene_unreacted
32 atoms
32 bonds
48 angles
64 dihedrals
16 impropers
Types
1 1
2 2
3 1
4 3
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 4
15 2
16 2
17 1
18 2
19 1
20 3
21 1
22 2
23 1
24 2
25 1
26 2
27 1
28 2
29 2
30 4
31 2
32 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.129000
18 0.123700
19 0.026600
20 -0.018200
21 -0.129000
22 0.123700
23 -0.173400
24 0.140300
25 -0.113400
26 0.128800
27 -0.173400
28 0.140300
29 0.051600
30 -0.069600
31 0.035400
32 0.035400
Coords
1 13.465815 0.682534 -1.658941
2 14.397816 1.221534 -1.658941
3 12.235815 1.392534 -1.658941
4 12.235815 2.892534 -1.658941
5 11.005816 0.682534 -1.658941
6 10.073815 1.221534 -1.658941
7 11.005816 -0.737466 -1.658941
8 10.073815 -1.276465 -1.658941
9 12.235815 -1.447465 -1.658941
10 12.235815 -2.524465 -1.658941
11 13.465815 -0.737466 -1.658941
12 14.397816 -1.276465 -1.658941
13 13.101815 3.297535 -1.301941
14 10.957815 3.441535 -2.220941
15 11.007814 4.183536 -2.319941
16 10.314816 2.618534 -2.514940
17 18.663515 0.855482 -1.372128
18 19.595514 1.394482 -1.372128
19 17.433512 1.565481 -1.372128
20 17.433512 3.065482 -1.372128
21 16.203512 0.855482 -1.372128
22 15.271511 1.394482 -1.372128
23 16.203512 -0.564518 -1.372128
24 15.271511 -1.103518 -1.372128
25 17.433512 -1.274518 -1.372128
26 17.433512 -2.351518 -1.372128
27 18.663515 -0.564518 -1.372128
28 19.595514 -1.103518 -1.372128
29 18.299513 3.470482 -1.015128
30 16.155512 3.614482 -1.934128
31 16.205513 4.356482 -2.033128
32 15.512512 2.791482 -2.228127
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 3 3 4
5 2 3 5
6 4 13 4
7 5 4 14
8 1 5 6
9 2 5 7
10 1 7 8
11 2 7 9
12 1 9 10
13 2 9 11
14 1 11 12
15 6 15 14
16 6 16 14
17 1 17 18
18 2 17 19
19 2 17 27
20 3 19 20
21 2 19 21
22 4 29 20
23 5 20 30
24 1 21 22
25 2 21 23
26 1 23 24
27 2 23 25
28 1 25 26
29 2 25 27
30 1 27 28
31 6 31 30
32 6 32 30
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 3 1 3 4
5 2 1 3 5
6 3 5 3 4
7 4 3 4 13
8 5 3 4 14
9 6 13 4 14
10 1 3 5 6
11 2 3 5 7
12 1 7 5 6
13 1 5 7 8
14 2 5 7 9
15 1 9 7 8
16 1 7 9 10
17 2 7 9 11
18 1 11 9 10
19 2 1 11 9
20 1 1 11 12
21 1 9 11 12
22 7 15 14 4
23 7 16 14 4
24 8 15 14 16
25 1 19 17 18
26 1 27 17 18
27 2 19 17 27
28 3 17 19 20
29 2 17 19 21
30 3 21 19 20
31 4 19 20 29
32 5 19 20 30
33 6 29 20 30
34 1 19 21 22
35 2 19 21 23
36 1 23 21 22
37 1 21 23 24
38 2 21 23 25
39 1 25 23 24
40 1 23 25 26
41 2 23 25 27
42 1 27 25 26
43 2 17 27 25
44 1 17 27 28
45 1 25 27 28
46 7 31 30 20
47 7 32 30 20
48 8 31 30 32
Dihedrals
1 1 2 1 3 4
2 2 5 3 1 2
3 3 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 6 1 3 4 13
10 7 1 3 4 14
11 6 5 3 4 13
12 7 5 3 4 14
13 2 1 3 5 6
14 4 1 3 5 7
15 1 6 5 3 4
16 3 7 5 3 4
17 8 3 4 14 15
18 8 3 4 14 16
19 9 13 4 14 15
20 9 13 4 14 16
21 2 3 5 7 8
22 4 3 5 7 9
23 5 6 5 7 8
24 2 9 7 5 6
25 2 5 7 9 10
26 4 5 7 9 11
27 5 8 7 9 10
28 2 11 9 7 8
29 4 7 9 11 1
30 2 7 9 11 12
31 2 1 11 9 10
32 5 10 9 11 12
33 1 18 17 19 20
34 2 21 19 17 18
35 3 27 17 19 20
36 4 27 17 19 21
37 2 25 27 17 18
38 5 18 17 27 28
39 4 19 17 27 25
40 2 19 17 27 28
41 6 17 19 20 29
42 7 17 19 20 30
43 6 21 19 20 29
44 7 21 19 20 30
45 2 17 19 21 22
46 4 17 19 21 23
47 1 22 21 19 20
48 3 23 21 19 20
49 8 19 20 30 31
50 8 19 20 30 32
51 9 29 20 30 31
52 9 29 20 30 32
53 2 19 21 23 24
54 4 19 21 23 25
55 5 22 21 23 24
56 2 25 23 21 22
57 2 21 23 25 26
58 4 21 23 25 27
59 5 24 23 25 26
60 2 27 25 23 24
61 4 23 25 27 17
62 2 23 25 27 28
63 2 17 27 25 26
64 5 26 25 27 28
Impropers
1 1 3 1 11 2
2 2 1 3 5 4
3 3 3 4 13 14
4 1 3 5 7 6
5 1 5 7 9 8
6 1 7 9 11 10
7 1 1 11 9 12
8 4 15 14 16 4
9 1 19 17 27 18
10 2 17 19 21 20
11 3 19 20 29 30
12 1 19 21 23 22
13 1 21 23 25 24
14 1 23 25 27 26
15 1 17 27 25 28
16 4 31 30 32 20

View File

@ -0,0 +1,67 @@
this is a map file
2 edgeIDs
50 equivalences
EdgeIDs
17
34
BondingIDs
14
38
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42
43 43
44 44
45 45
46 46
47 47
48 48
49 49
50 50

View File

@ -0,0 +1,497 @@
chain_chain_reacted
50 atoms
52 bonds
90 angles
135 dihedrals
42 impropers
Types
1 1
2 2
3 1
4 5
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 6
15 2
16 2
17 5
18 6
19 2
20 2
21 1
22 2
23 1
24 5
25 1
26 2
27 1
28 2
29 1
30 2
31 1
32 2
33 2
34 6
35 1
36 2
37 1
38 5
39 1
40 2
41 1
42 2
43 1
44 2
45 1
46 2
47 2
48 6
49 2
50 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.018200
18 -0.069600
19 0.035400
20 0.035400
21 -0.129000
22 0.123700
23 0.026600
24 -0.018200
25 -0.129000
26 0.123700
27 -0.173400
28 0.140300
29 -0.113400
30 0.128800
31 -0.173400
32 0.140300
33 0.051600
34 -0.069600
35 -0.129000
36 0.123700
37 0.026600
38 -0.018200
39 -0.129000
40 0.123700
41 -0.173400
42 0.140300
43 -0.113400
44 0.128800
45 -0.173400
46 0.140300
47 0.051600
48 -0.069600
49 0.035400
50 0.035400
Coords
1 24.391510 0.871570 -1.658940
2 25.323530 1.410570 -1.658940
3 23.161520 1.581570 -1.658940
4 23.161520 3.081570 -1.658940
5 21.931530 0.871570 -1.658940
6 20.999531 1.410570 -1.658940
7 21.931530 -0.548430 -1.658940
8 20.999531 -1.087420 -1.658940
9 23.161520 -1.258420 -1.658940
10 23.161520 -2.335430 -1.658940
11 24.391510 -0.548430 -1.658940
12 25.323530 -1.087420 -1.658940
13 24.027519 3.486570 -1.301940
14 21.883520 3.630570 -2.220940
15 21.933510 4.372580 -2.319940
16 21.240520 2.807570 -2.514940
17 28.359209 3.254520 -1.372130
18 27.081209 3.803520 -1.934130
19 27.131210 4.545520 -2.033130
20 26.438219 2.980520 -2.228130
21 13.465810 0.682530 -1.658940
22 14.397820 1.221530 -1.658940
23 12.235820 1.392530 -1.658940
24 12.235820 2.892530 -1.658940
25 11.005820 0.682530 -1.658940
26 10.073820 1.221530 -1.658940
27 11.005820 -0.737470 -1.658940
28 10.073820 -1.276460 -1.658940
29 12.235820 -1.447460 -1.658940
30 12.235820 -2.524470 -1.658940
31 13.465810 -0.737470 -1.658940
32 14.397820 -1.276460 -1.658940
33 13.101820 3.297530 -1.301940
34 10.957820 3.441530 -2.220940
35 18.663521 0.855480 -1.372130
36 19.595510 1.394480 -1.372130
37 17.433510 1.565480 -1.372130
38 17.433510 3.065480 -1.372130
39 16.203510 0.855480 -1.372130
40 15.271510 1.394480 -1.372130
41 16.203510 -0.564520 -1.372130
42 15.271510 -1.103520 -1.372130
43 17.433510 -1.274520 -1.372130
44 17.433510 -2.351520 -1.372130
45 18.663521 -0.564520 -1.372130
46 19.595510 -1.103520 -1.372130
47 18.299509 3.470480 -1.015130
48 16.155510 3.614480 -1.934130
49 16.205509 4.356480 -2.033130
50 15.512510 2.791480 -2.228130
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 7 3 4
5 2 3 5
6 8 13 4
7 9 4 14
8 9 4 18
9 1 5 6
10 2 5 7
11 1 7 8
12 2 7 9
13 1 9 10
14 2 9 11
15 1 11 12
16 10 15 14
17 10 16 14
18 9 38 14
19 9 17 18
20 10 19 18
21 10 20 18
22 1 21 22
23 2 21 23
24 2 21 31
25 7 23 24
26 2 23 25
27 8 33 24
28 9 24 34
29 9 24 48
30 1 25 26
31 2 25 27
32 1 27 28
33 2 27 29
34 1 29 30
35 2 29 31
36 1 31 32
37 1 35 36
38 2 35 37
39 2 35 45
40 7 37 38
41 2 37 39
42 8 47 38
43 9 38 48
44 1 39 40
45 2 39 41
46 1 41 42
47 2 41 43
48 1 43 44
49 2 43 45
50 1 45 46
51 10 49 48
52 10 50 48
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 9 1 3 4
5 2 1 3 5
6 9 5 3 4
7 10 3 4 13
8 11 3 4 14
9 11 3 4 18
10 12 13 4 14
11 12 13 4 18
12 13 14 4 18
13 1 3 5 6
14 2 3 5 7
15 1 7 5 6
16 1 5 7 8
17 2 5 7 9
18 1 9 7 8
19 1 7 9 10
20 2 7 9 11
21 1 11 9 10
22 2 1 11 9
23 1 1 11 12
24 1 9 11 12
25 14 15 14 4
26 14 16 14 4
27 16 4 14 38
28 15 15 14 16
29 14 15 14 38
30 14 16 14 38
31 16 4 18 17
32 14 19 18 4
33 14 20 18 4
34 14 19 18 17
35 14 20 18 17
36 15 19 18 20
37 1 23 21 22
38 1 31 21 22
39 2 23 21 31
40 9 21 23 24
41 2 21 23 25
42 9 25 23 24
43 10 23 24 33
44 11 23 24 34
45 11 23 24 48
46 12 33 24 34
47 12 33 24 48
48 13 34 24 48
49 1 23 25 26
50 2 23 25 27
51 1 27 25 26
52 1 25 27 28
53 2 25 27 29
54 1 29 27 28
55 1 27 29 30
56 2 27 29 31
57 1 31 29 30
58 2 21 31 29
59 1 21 31 32
60 1 29 31 32
61 1 37 35 36
62 1 45 35 36
63 2 37 35 45
64 9 35 37 38
65 2 35 37 39
66 9 39 37 38
67 11 37 38 14
68 12 47 38 14
69 13 14 38 48
70 10 37 38 47
71 11 37 38 48
72 12 47 38 48
73 1 37 39 40
74 2 37 39 41
75 1 41 39 40
76 1 39 41 42
77 2 39 41 43
78 1 43 41 42
79 1 41 43 44
80 2 41 43 45
81 1 45 43 44
82 2 35 45 43
83 1 35 45 46
84 1 43 45 46
85 16 24 48 38
86 14 49 48 24
87 14 50 48 24
88 14 49 48 38
89 14 50 48 38
90 15 49 48 50
Dihedrals
1 10 2 1 3 4
2 2 5 3 1 2
3 11 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 12 1 3 4 13
10 13 1 3 4 14
11 13 1 3 4 18
12 12 5 3 4 13
13 13 5 3 4 14
14 13 5 3 4 18
15 2 1 3 5 6
16 4 1 3 5 7
17 10 6 5 3 4
18 11 7 5 3 4
19 14 3 4 14 15
20 14 3 4 14 16
21 17 3 4 14 38
22 15 13 4 14 15
23 15 13 4 14 16
24 18 13 4 14 38
25 16 18 4 14 15
26 16 18 4 14 16
27 19 18 4 14 38
28 17 3 4 18 17
29 14 3 4 18 19
30 14 3 4 18 20
31 18 13 4 18 17
32 15 13 4 18 19
33 15 13 4 18 20
34 19 14 4 18 17
35 16 14 4 18 19
36 16 14 4 18 20
37 2 3 5 7 8
38 4 3 5 7 9
39 5 6 5 7 8
40 2 9 7 5 6
41 2 5 7 9 10
42 4 5 7 9 11
43 5 8 7 9 10
44 2 11 9 7 8
45 4 7 9 11 1
46 2 7 9 11 12
47 2 1 11 9 10
48 5 10 9 11 12
49 17 37 38 14 4
50 18 47 38 14 4
51 19 48 38 14 4
52 14 37 38 14 15
53 15 47 38 14 15
54 16 48 38 14 15
55 14 37 38 14 16
56 15 47 38 14 16
57 16 48 38 14 16
58 10 22 21 23 24
59 2 25 23 21 22
60 11 31 21 23 24
61 4 31 21 23 25
62 2 29 31 21 22
63 5 22 21 31 32
64 4 23 21 31 29
65 2 23 21 31 32
66 12 21 23 24 33
67 13 21 23 24 34
68 13 21 23 24 48
69 12 25 23 24 33
70 13 25 23 24 34
71 13 25 23 24 48
72 2 21 23 25 26
73 4 21 23 25 27
74 10 26 25 23 24
75 11 27 25 23 24
76 17 23 24 48 38
77 14 23 24 48 49
78 14 23 24 48 50
79 18 33 24 48 38
80 15 33 24 48 49
81 15 33 24 48 50
82 19 34 24 48 38
83 16 34 24 48 49
84 16 34 24 48 50
85 2 23 25 27 28
86 4 23 25 27 29
87 5 26 25 27 28
88 2 29 27 25 26
89 2 25 27 29 30
90 4 25 27 29 31
91 5 28 27 29 30
92 2 31 29 27 28
93 4 27 29 31 21
94 2 27 29 31 32
95 2 21 31 29 30
96 5 30 29 31 32
97 10 36 35 37 38
98 2 39 37 35 36
99 11 45 35 37 38
100 4 45 35 37 39
101 2 43 45 35 36
102 5 36 35 45 46
103 4 37 35 45 43
104 2 37 35 45 46
105 13 35 37 38 14
106 12 35 37 38 47
107 13 35 37 38 48
108 13 39 37 38 14
109 12 39 37 38 47
110 13 39 37 38 48
111 2 35 37 39 40
112 4 35 37 39 41
113 10 40 39 37 38
114 11 41 39 37 38
115 19 14 38 48 24
116 16 14 38 48 49
117 16 14 38 48 50
118 17 37 38 48 24
119 14 37 38 48 49
120 14 37 38 48 50
121 18 47 38 48 24
122 15 47 38 48 49
123 15 47 38 48 50
124 2 37 39 41 42
125 4 37 39 41 43
126 5 40 39 41 42
127 2 43 41 39 40
128 2 39 41 43 44
129 4 39 41 43 45
130 5 42 41 43 44
131 2 45 43 41 42
132 4 41 43 45 35
133 2 41 43 45 46
134 2 35 45 43 44
135 5 44 43 45 46
Impropers
1 1 3 1 11 2
2 5 1 3 5 4
3 1 3 5 7 6
4 1 5 7 9 8
5 1 7 9 11 10
6 1 1 11 9 12
7 1 23 21 31 22
8 5 21 23 25 24
9 1 23 25 27 26
10 1 25 27 29 28
11 1 27 29 31 30
12 1 21 31 29 32
13 1 37 35 45 36
14 5 35 37 39 38
15 1 37 39 41 40
16 1 39 41 43 42
17 1 41 43 45 44
18 1 35 45 43 46
19 1 3 4 13 14
20 1 3 4 13 18
21 1 3 4 14 18
22 1 13 4 14 18
23 1 15 14 16 4
24 1 15 14 4 38
25 1 16 14 4 38
26 1 15 14 16 38
27 1 19 18 17 4
28 1 20 18 17 4
29 1 19 18 20 4
30 1 19 18 20 17
31 1 23 24 33 34
32 1 23 24 33 48
33 1 23 24 34 48
34 1 33 24 34 48
35 1 37 38 47 14
36 1 37 38 14 48
37 1 47 38 14 48
38 1 37 38 47 48
39 1 49 48 38 24
40 1 50 48 38 24
41 1 49 48 50 24
42 1 49 48 50 38

View File

@ -0,0 +1,467 @@
chain_chain_unreacted
50 atoms
51 bonds
84 angles
118 dihedrals
36 impropers
Types
1 1
2 2
3 1
4 5
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 6
15 2
16 2
17 5
18 6
19 2
20 2
21 1
22 2
23 1
24 5
25 1
26 2
27 1
28 2
29 1
30 2
31 1
32 2
33 2
34 6
35 1
36 2
37 1
38 5
39 1
40 2
41 1
42 2
43 1
44 2
45 1
46 2
47 2
48 6
49 2
50 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.018200
18 -0.069600
19 0.035400
20 0.035400
21 -0.129000
22 0.123700
23 0.026600
24 -0.018200
25 -0.129000
26 0.123700
27 -0.173400
28 0.140300
29 -0.113400
30 0.128800
31 -0.173400
32 0.140300
33 0.051600
34 -0.069600
35 -0.129000
36 0.123700
37 0.026600
38 -0.018200
39 -0.129000
40 0.123700
41 -0.173400
42 0.140300
43 -0.113400
44 0.128800
45 -0.173400
46 0.140300
47 0.051600
48 -0.069600
49 0.035400
50 0.035400
Coords
1 24.391510 0.871570 -1.658940
2 25.323530 1.410570 -1.658940
3 23.161520 1.581570 -1.658940
4 23.161520 3.081570 -1.658940
5 21.931530 0.871570 -1.658940
6 20.999531 1.410570 -1.658940
7 21.931530 -0.548430 -1.658940
8 20.999531 -1.087420 -1.658940
9 23.161520 -1.258420 -1.658940
10 23.161520 -2.335430 -1.658940
11 24.391510 -0.548430 -1.658940
12 25.323530 -1.087420 -1.658940
13 24.027519 3.486570 -1.301940
14 21.883520 3.630570 -2.220940
15 21.933510 4.372580 -2.319940
16 21.240520 2.807570 -2.514940
17 28.359209 3.254520 -1.372130
18 27.081209 3.803520 -1.934130
19 27.131210 4.545520 -2.033130
20 26.438219 2.980520 -2.228130
21 13.465810 0.682530 -1.658940
22 14.397820 1.221530 -1.658940
23 12.235820 1.392530 -1.658940
24 12.235820 2.892530 -1.658940
25 11.005820 0.682530 -1.658940
26 10.073820 1.221530 -1.658940
27 11.005820 -0.737470 -1.658940
28 10.073820 -1.276460 -1.658940
29 12.235820 -1.447460 -1.658940
30 12.235820 -2.524470 -1.658940
31 13.465810 -0.737470 -1.658940
32 14.397820 -1.276460 -1.658940
33 13.101820 3.297530 -1.301940
34 10.957820 3.441530 -2.220940
35 18.663521 0.855480 -1.372130
36 19.595510 1.394480 -1.372130
37 17.433510 1.565480 -1.372130
38 17.433510 3.065480 -1.372130
39 16.203510 0.855480 -1.372130
40 15.271510 1.394480 -1.372130
41 16.203510 -0.564520 -1.372130
42 15.271510 -1.103520 -1.372130
43 17.433510 -1.274520 -1.372130
44 17.433510 -2.351520 -1.372130
45 18.663521 -0.564520 -1.372130
46 19.595510 -1.103520 -1.372130
47 18.299509 3.470480 -1.015130
48 16.155510 3.614480 -1.934130
49 16.205509 4.356480 -2.033130
50 15.512510 2.791480 -2.228130
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 7 3 4
5 2 3 5
6 8 13 4
7 9 4 14
8 9 4 18
9 1 5 6
10 2 5 7
11 1 7 8
12 2 7 9
13 1 9 10
14 2 9 11
15 1 11 12
16 10 15 14
17 10 16 14
18 9 17 18
19 10 19 18
20 10 20 18
21 1 21 22
22 2 21 23
23 2 21 31
24 7 23 24
25 2 23 25
26 8 33 24
27 9 24 34
28 9 24 48
29 1 25 26
30 2 25 27
31 1 27 28
32 2 27 29
33 1 29 30
34 2 29 31
35 1 31 32
36 1 35 36
37 2 35 37
38 2 35 45
39 7 37 38
40 2 37 39
41 8 47 38
42 9 38 48
43 1 39 40
44 2 39 41
45 1 41 42
46 2 41 43
47 1 43 44
48 2 43 45
49 1 45 46
50 10 49 48
51 10 50 48
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 9 1 3 4
5 2 1 3 5
6 9 5 3 4
7 10 3 4 13
8 11 3 4 14
9 11 3 4 18
10 12 13 4 14
11 12 13 4 18
12 13 14 4 18
13 1 3 5 6
14 2 3 5 7
15 1 7 5 6
16 1 5 7 8
17 2 5 7 9
18 1 9 7 8
19 1 7 9 10
20 2 7 9 11
21 1 11 9 10
22 2 1 11 9
23 1 1 11 12
24 1 9 11 12
25 14 15 14 4
26 14 16 14 4
27 15 15 14 16
28 16 4 18 17
29 14 19 18 4
30 14 20 18 4
31 14 19 18 17
32 14 20 18 17
33 15 19 18 20
34 1 23 21 22
35 1 31 21 22
36 2 23 21 31
37 9 21 23 24
38 2 21 23 25
39 9 25 23 24
40 10 23 24 33
41 11 23 24 34
42 11 23 24 48
43 12 33 24 34
44 12 33 24 48
45 13 34 24 48
46 1 23 25 26
47 2 23 25 27
48 1 27 25 26
49 1 25 27 28
50 2 25 27 29
51 1 29 27 28
52 1 27 29 30
53 2 27 29 31
54 1 31 29 30
55 2 21 31 29
56 1 21 31 32
57 1 29 31 32
58 1 37 35 36
59 1 45 35 36
60 2 37 35 45
61 9 35 37 38
62 2 35 37 39
63 9 39 37 38
64 10 37 38 47
65 11 37 38 48
66 12 47 38 48
67 1 37 39 40
68 2 37 39 41
69 1 41 39 40
70 1 39 41 42
71 2 39 41 43
72 1 43 41 42
73 1 41 43 44
74 2 41 43 45
75 1 45 43 44
76 2 35 45 43
77 1 35 45 46
78 1 43 45 46
79 16 24 48 38
80 14 49 48 24
81 14 50 48 24
82 14 49 48 38
83 14 50 48 38
84 15 49 48 50
Dihedrals
1 10 2 1 3 4
2 2 5 3 1 2
3 11 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 12 1 3 4 13
10 13 1 3 4 14
11 13 1 3 4 18
12 12 5 3 4 13
13 13 5 3 4 14
14 13 5 3 4 18
15 2 1 3 5 6
16 4 1 3 5 7
17 10 6 5 3 4
18 11 7 5 3 4
19 14 3 4 14 15
20 14 3 4 14 16
21 15 13 4 14 15
22 15 13 4 14 16
23 16 18 4 14 15
24 16 18 4 14 16
25 17 3 4 18 17
26 14 3 4 18 19
27 14 3 4 18 20
28 18 13 4 18 17
29 15 13 4 18 19
30 15 13 4 18 20
31 19 14 4 18 17
32 16 14 4 18 19
33 16 14 4 18 20
34 2 3 5 7 8
35 4 3 5 7 9
36 5 6 5 7 8
37 2 9 7 5 6
38 2 5 7 9 10
39 4 5 7 9 11
40 5 8 7 9 10
41 2 11 9 7 8
42 4 7 9 11 1
43 2 7 9 11 12
44 2 1 11 9 10
45 5 10 9 11 12
46 10 22 21 23 24
47 2 25 23 21 22
48 11 31 21 23 24
49 4 31 21 23 25
50 2 29 31 21 22
51 5 22 21 31 32
52 4 23 21 31 29
53 2 23 21 31 32
54 12 21 23 24 33
55 13 21 23 24 34
56 13 21 23 24 48
57 12 25 23 24 33
58 13 25 23 24 34
59 13 25 23 24 48
60 2 21 23 25 26
61 4 21 23 25 27
62 10 26 25 23 24
63 11 27 25 23 24
64 17 23 24 48 38
65 14 23 24 48 49
66 14 23 24 48 50
67 18 33 24 48 38
68 15 33 24 48 49
69 15 33 24 48 50
70 19 34 24 48 38
71 16 34 24 48 49
72 16 34 24 48 50
73 2 23 25 27 28
74 4 23 25 27 29
75 5 26 25 27 28
76 2 29 27 25 26
77 2 25 27 29 30
78 4 25 27 29 31
79 5 28 27 29 30
80 2 31 29 27 28
81 4 27 29 31 21
82 2 27 29 31 32
83 2 21 31 29 30
84 5 30 29 31 32
85 10 36 35 37 38
86 2 39 37 35 36
87 11 45 35 37 38
88 4 45 35 37 39
89 2 43 45 35 36
90 5 36 35 45 46
91 4 37 35 45 43
92 2 37 35 45 46
93 12 35 37 38 47
94 13 35 37 38 48
95 12 39 37 38 47
96 13 39 37 38 48
97 2 35 37 39 40
98 4 35 37 39 41
99 10 40 39 37 38
100 11 41 39 37 38
101 17 37 38 48 24
102 14 37 38 48 49
103 14 37 38 48 50
104 18 47 38 48 24
105 15 47 38 48 49
106 15 47 38 48 50
107 2 37 39 41 42
108 4 37 39 41 43
109 5 40 39 41 42
110 2 43 41 39 40
111 2 39 41 43 44
112 4 39 41 43 45
113 5 42 41 43 44
114 2 45 43 41 42
115 4 41 43 45 35
116 2 41 43 45 46
117 2 35 45 43 44
118 5 44 43 45 46
Impropers
1 1 3 1 11 2
2 5 1 3 5 4
3 1 3 5 7 6
4 1 5 7 9 8
5 1 7 9 11 10
6 1 1 11 9 12
7 6 15 14 16 4
8 1 23 21 31 22
9 5 21 23 25 24
10 1 23 25 27 26
11 1 25 27 29 28
12 1 27 29 31 30
13 1 21 31 29 32
14 1 37 35 45 36
15 5 35 37 39 38
16 7 37 38 47 48
17 1 37 39 41 40
18 1 39 41 43 42
19 1 41 43 45 44
20 1 35 45 43 46
21 1 3 4 13 14
22 1 3 4 13 18
23 1 3 4 14 18
24 1 13 4 14 18
25 1 19 18 17 4
26 1 20 18 17 4
27 1 19 18 20 4
28 1 19 18 20 17
29 1 23 24 33 34
30 1 23 24 33 48
31 1 23 24 34 48
32 1 33 24 34 48
33 1 49 48 38 24
34 1 50 48 38 24
35 1 49 48 50 24
36 1 49 48 50 38

View File

@ -0,0 +1,62 @@
this is a map file
1 edgeIDs
46 equivalences
EdgeIDs
30
BondingIDs
14
34
Equivalences
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42
43 43
44 44
45 45
46 46

View File

@ -0,0 +1,451 @@
chain_plus_styrene_reacted
46 atoms
48 bonds
81 angles
121 dihedrals
35 impropers
Types
1 1
2 2
3 1
4 5
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 6
15 2
16 2
17 1
18 2
19 1
20 5
21 1
22 2
23 1
24 2
25 1
26 2
27 1
28 2
29 2
30 6
31 1
32 2
33 1
34 5
35 1
36 2
37 1
38 2
39 1
40 2
41 1
42 2
43 2
44 6
45 2
46 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.129000
18 0.123700
19 0.026600
20 -0.018200
21 -0.129000
22 0.123700
23 -0.173400
24 0.140300
25 -0.113400
26 0.128800
27 -0.173400
28 0.140300
29 0.051600
30 -0.069600
31 -0.129000
32 0.123700
33 0.026600
34 -0.018200
35 -0.129000
36 0.123700
37 -0.173400
38 0.140300
39 -0.113400
40 0.128800
41 -0.173400
42 0.140300
43 0.051600
44 -0.069600
45 0.035400
46 0.035400
Coords
1 24.130699 1.043900 -1.309300
2 25.062700 1.582900 -1.309300
3 22.900700 1.753900 -1.309300
4 22.900700 3.253900 -1.309300
5 21.670700 1.043900 -1.309300
6 20.738701 1.582900 -1.309300
7 21.670700 -0.376100 -1.309300
8 20.738701 -0.915100 -1.309300
9 22.900700 -1.086100 -1.309300
10 22.900700 -2.163100 -1.309300
11 24.130699 -0.376100 -1.309300
12 25.062700 -0.915100 -1.309300
13 23.766701 3.658900 -0.952300
14 21.622700 3.802900 -1.871300
15 21.672701 4.544900 -1.970300
16 20.979700 2.979900 -2.165300
17 13.465800 0.682500 -1.658900
18 14.397800 1.221500 -1.658900
19 12.235800 1.392500 -1.658900
20 12.235800 2.892500 -1.658900
21 11.005800 0.682500 -1.658900
22 10.073800 1.221500 -1.658900
23 11.005800 -0.737500 -1.658900
24 10.073800 -1.276500 -1.658900
25 12.235800 -1.447500 -1.658900
26 12.235800 -2.524500 -1.658900
27 13.465800 -0.737500 -1.658900
28 14.397800 -1.276500 -1.658900
29 13.101800 3.297500 -1.301900
30 10.957800 3.441500 -2.220900
31 18.663500 0.855500 -1.372100
32 19.595501 1.394500 -1.372100
33 17.433500 1.565500 -1.372100
34 17.433500 3.065500 -1.372100
35 16.203501 0.855500 -1.372100
36 15.271500 1.394500 -1.372100
37 16.203501 -0.564500 -1.372100
38 15.271500 -1.103500 -1.372100
39 17.433500 -1.274500 -1.372100
40 17.433500 -2.351500 -1.372100
41 18.663500 -0.564500 -1.372100
42 19.595501 -1.103500 -1.372100
43 18.299500 3.470500 -1.015100
44 16.155500 3.614500 -1.934100
45 16.205500 4.356500 -2.033100
46 15.512500 2.791500 -2.228100
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 11 3 4
5 2 3 5
6 12 13 4
7 13 4 14
8 1 5 6
9 2 5 7
10 1 7 8
11 2 7 9
12 1 9 10
13 2 9 11
14 1 11 12
15 10 15 14
16 10 16 14
17 9 14 34
18 1 17 18
19 2 17 19
20 2 17 27
21 7 19 20
22 2 19 21
23 8 29 20
24 9 30 20
25 9 44 20
26 1 21 22
27 2 21 23
28 1 23 24
29 2 23 25
30 1 25 26
31 2 25 27
32 1 27 28
33 1 31 32
34 2 31 33
35 2 31 41
36 7 33 34
37 2 33 35
38 8 43 34
39 9 44 34
40 1 35 36
41 2 35 37
42 1 37 38
43 2 37 39
44 1 39 40
45 2 39 41
46 1 41 42
47 10 45 44
48 10 46 44
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 17 1 3 4
5 2 1 3 5
6 17 5 3 4
7 18 3 4 13
8 19 3 4 14
9 20 13 4 14
10 1 3 5 6
11 2 3 5 7
12 1 7 5 6
13 1 5 7 8
14 2 5 7 9
15 1 9 7 8
16 1 7 9 10
17 2 7 9 11
18 1 11 9 10
19 2 1 11 9
20 1 1 11 12
21 1 9 11 12
22 21 15 14 4
23 21 16 14 4
24 22 4 14 34
25 15 15 14 16
26 14 15 14 34
27 14 16 14 34
28 1 19 17 18
29 1 27 17 18
30 2 19 17 27
31 9 17 19 20
32 2 17 19 21
33 9 21 19 20
34 10 19 20 29
35 11 19 20 30
36 11 19 20 44
37 12 29 20 30
38 12 29 20 44
39 13 30 20 44
40 1 19 21 22
41 2 19 21 23
42 1 23 21 22
43 1 21 23 24
44 2 21 23 25
45 1 25 23 24
46 1 23 25 26
47 2 23 25 27
48 1 27 25 26
49 2 17 27 25
50 1 17 27 28
51 1 25 27 28
52 1 33 31 32
53 1 41 31 32
54 2 33 31 41
55 9 31 33 34
56 2 31 33 35
57 9 35 33 34
58 11 33 34 14
59 12 43 34 14
60 13 14 34 44
61 10 33 34 43
62 11 33 34 44
63 12 43 34 44
64 1 33 35 36
65 2 33 35 37
66 1 37 35 36
67 1 35 37 38
68 2 35 37 39
69 1 39 37 38
70 1 37 39 40
71 2 37 39 41
72 1 41 39 40
73 2 31 41 39
74 1 31 41 42
75 1 39 41 42
76 16 20 44 34
77 14 45 44 20
78 14 46 44 20
79 14 45 44 34
80 14 46 44 34
81 15 45 44 46
Dihedrals
1 20 2 1 3 4
2 2 5 3 1 2
3 21 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 22 1 3 4 13
10 23 1 3 4 14
11 22 5 3 4 13
12 23 5 3 4 14
13 2 1 3 5 6
14 4 1 3 5 7
15 20 6 5 3 4
16 21 7 5 3 4
17 24 3 4 14 15
18 24 3 4 14 16
19 25 3 4 14 34
20 26 13 4 14 15
21 26 13 4 14 16
22 27 13 4 14 34
23 2 3 5 7 8
24 4 3 5 7 9
25 5 6 5 7 8
26 2 9 7 5 6
27 2 5 7 9 10
28 4 5 7 9 11
29 5 8 7 9 10
30 2 11 9 7 8
31 4 7 9 11 1
32 2 7 9 11 12
33 2 1 11 9 10
34 5 10 9 11 12
35 28 4 14 34 33
36 29 4 14 34 43
37 30 4 14 34 44
38 31 15 14 34 33
39 32 15 14 34 43
40 33 15 14 34 44
41 31 16 14 34 33
42 32 16 14 34 43
43 33 16 14 34 44
44 10 18 17 19 20
45 2 21 19 17 18
46 11 27 17 19 20
47 4 27 17 19 21
48 2 25 27 17 18
49 5 18 17 27 28
50 4 19 17 27 25
51 2 19 17 27 28
52 12 17 19 20 29
53 13 17 19 20 30
54 13 17 19 20 44
55 12 21 19 20 29
56 13 21 19 20 30
57 13 21 19 20 44
58 2 17 19 21 22
59 4 17 19 21 23
60 10 22 21 19 20
61 11 23 21 19 20
62 34 34 44 20 19
63 31 45 44 20 19
64 31 46 44 20 19
65 35 34 44 20 29
66 32 45 44 20 29
67 32 46 44 20 29
68 36 34 44 20 30
69 33 45 44 20 30
70 33 46 44 20 30
71 2 19 21 23 24
72 4 19 21 23 25
73 5 22 21 23 24
74 2 25 23 21 22
75 2 21 23 25 26
76 4 21 23 25 27
77 5 24 23 25 26
78 2 27 25 23 24
79 4 23 25 27 17
80 2 23 25 27 28
81 2 17 27 25 26
82 5 26 25 27 28
83 10 32 31 33 34
84 2 35 33 31 32
85 11 41 31 33 34
86 4 41 31 33 35
87 2 39 41 31 32
88 5 32 31 41 42
89 4 33 31 41 39
90 2 33 31 41 42
91 13 31 33 34 14
92 12 31 33 34 43
93 13 31 33 34 44
94 13 35 33 34 14
95 12 35 33 34 43
96 13 35 33 34 44
97 2 31 33 35 36
98 4 31 33 35 37
99 10 36 35 33 34
100 11 37 35 33 34
101 36 20 44 34 14
102 33 45 44 34 14
103 33 46 44 34 14
104 34 20 44 34 33
105 31 45 44 34 33
106 31 46 44 34 33
107 35 20 44 34 43
108 32 45 44 34 43
109 32 46 44 34 43
110 2 33 35 37 38
111 4 33 35 37 39
112 5 36 35 37 38
113 2 39 37 35 36
114 2 35 37 39 40
115 4 35 37 39 41
116 5 38 37 39 40
117 2 41 39 37 38
118 4 37 39 41 31
119 2 37 39 41 42
120 2 31 41 39 40
121 5 40 39 41 42
Impropers
1 1 3 1 11 2
2 8 1 3 5 4
3 9 3 4 13 14
4 1 3 5 7 6
5 1 5 7 9 8
6 1 7 9 11 10
7 1 1 11 9 12
8 1 19 17 27 18
9 5 17 19 21 20
10 1 19 21 23 22
11 1 21 23 25 24
12 1 23 25 27 26
13 1 17 27 25 28
14 1 33 31 41 32
15 5 31 33 35 34
16 1 33 35 37 36
17 1 35 37 39 38
18 1 37 39 41 40
19 1 31 41 39 42
20 1 15 14 16 4
21 1 15 14 4 34
22 1 16 14 4 34
23 1 15 14 16 34
24 1 19 20 29 30
25 1 19 20 29 44
26 1 19 20 30 44
27 1 29 20 30 44
28 1 33 34 43 14
29 1 33 34 14 44
30 1 43 34 14 44
31 1 33 34 43 44
32 1 45 44 34 20
33 1 46 44 34 20
34 1 45 44 46 20
35 1 45 44 46 34

View File

@ -0,0 +1,422 @@
chain_plus_styrene_unreacted
46 atoms
47 bonds
75 angles
105 dihedrals
29 impropers
Types
1 1
2 2
3 1
4 3
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 2
14 4
15 2
16 2
17 1
18 2
19 1
20 5
21 1
22 2
23 1
24 2
25 1
26 2
27 1
28 2
29 2
30 6
31 1
32 2
33 1
34 5
35 1
36 2
37 1
38 2
39 1
40 2
41 1
42 2
43 2
44 6
45 2
46 2
Charges
1 -0.129000
2 0.123700
3 0.026600
4 -0.018200
5 -0.129000
6 0.123700
7 -0.173400
8 0.140300
9 -0.113400
10 0.128800
11 -0.173400
12 0.140300
13 0.051600
14 -0.069600
15 0.035400
16 0.035400
17 -0.129000
18 0.123700
19 0.026600
20 -0.018200
21 -0.129000
22 0.123700
23 -0.173400
24 0.140300
25 -0.113400
26 0.128800
27 -0.173400
28 0.140300
29 0.051600
30 -0.069600
31 -0.129000
32 0.123700
33 0.026600
34 -0.018200
35 -0.129000
36 0.123700
37 -0.173400
38 0.140300
39 -0.113400
40 0.128800
41 -0.173400
42 0.140300
43 0.051600
44 -0.069600
45 0.035400
46 0.035400
Coords
1 24.130699 1.043900 -1.309300
2 25.062700 1.582900 -1.309300
3 22.900700 1.753900 -1.309300
4 22.900700 3.253900 -1.309300
5 21.670700 1.043900 -1.309300
6 20.738701 1.582900 -1.309300
7 21.670700 -0.376100 -1.309300
8 20.738701 -0.915100 -1.309300
9 22.900700 -1.086100 -1.309300
10 22.900700 -2.163100 -1.309300
11 24.130699 -0.376100 -1.309300
12 25.062700 -0.915100 -1.309300
13 23.766701 3.658900 -0.952300
14 21.622700 3.802900 -1.871300
15 21.672701 4.544900 -1.970300
16 20.979700 2.979900 -2.165300
17 13.465800 0.682500 -1.658900
18 14.397800 1.221500 -1.658900
19 12.235800 1.392500 -1.658900
20 12.235800 2.892500 -1.658900
21 11.005800 0.682500 -1.658900
22 10.073800 1.221500 -1.658900
23 11.005800 -0.737500 -1.658900
24 10.073800 -1.276500 -1.658900
25 12.235800 -1.447500 -1.658900
26 12.235800 -2.524500 -1.658900
27 13.465800 -0.737500 -1.658900
28 14.397800 -1.276500 -1.658900
29 13.101800 3.297500 -1.301900
30 10.957800 3.441500 -2.220900
31 18.663500 0.855500 -1.372100
32 19.595501 1.394500 -1.372100
33 17.433500 1.565500 -1.372100
34 17.433500 3.065500 -1.372100
35 16.203501 0.855500 -1.372100
36 15.271500 1.394500 -1.372100
37 16.203501 -0.564500 -1.372100
38 15.271500 -1.103500 -1.372100
39 17.433500 -1.274500 -1.372100
40 17.433500 -2.351500 -1.372100
41 18.663500 -0.564500 -1.372100
42 19.595501 -1.103500 -1.372100
43 18.299500 3.470500 -1.015100
44 16.155500 3.614500 -1.934100
45 16.205500 4.356500 -2.033100
46 15.512500 2.791500 -2.228100
Bonds
1 1 1 2
2 2 1 3
3 2 1 11
4 3 3 4
5 2 3 5
6 4 13 4
7 5 4 14
8 1 5 6
9 2 5 7
10 1 7 8
11 2 7 9
12 1 9 10
13 2 9 11
14 1 11 12
15 6 15 14
16 6 16 14
17 1 17 18
18 2 17 19
19 2 17 27
20 7 19 20
21 2 19 21
22 8 29 20
23 9 20 30
24 9 20 44
25 1 21 22
26 2 21 23
27 1 23 24
28 2 23 25
29 1 25 26
30 2 25 27
31 1 27 28
32 1 31 32
33 2 31 33
34 2 31 41
35 7 33 34
36 2 33 35
37 8 43 34
38 9 34 44
39 1 35 36
40 2 35 37
41 1 37 38
42 2 37 39
43 1 39 40
44 2 39 41
45 1 41 42
46 10 45 44
47 10 46 44
Angles
1 1 3 1 2
2 1 11 1 2
3 2 3 1 11
4 3 1 3 4
5 2 1 3 5
6 3 5 3 4
7 4 3 4 13
8 5 3 4 14
9 6 13 4 14
10 1 3 5 6
11 2 3 5 7
12 1 7 5 6
13 1 5 7 8
14 2 5 7 9
15 1 9 7 8
16 1 7 9 10
17 2 7 9 11
18 1 11 9 10
19 2 1 11 9
20 1 1 11 12
21 1 9 11 12
22 7 15 14 4
23 7 16 14 4
24 8 15 14 16
25 1 19 17 18
26 1 27 17 18
27 2 19 17 27
28 9 17 19 20
29 2 17 19 21
30 9 21 19 20
31 10 19 20 29
32 11 19 20 30
33 11 19 20 44
34 12 29 20 30
35 12 29 20 44
36 13 30 20 44
37 1 19 21 22
38 2 19 21 23
39 1 23 21 22
40 1 21 23 24
41 2 21 23 25
42 1 25 23 24
43 1 23 25 26
44 2 23 25 27
45 1 27 25 26
46 2 17 27 25
47 1 17 27 28
48 1 25 27 28
49 1 33 31 32
50 1 41 31 32
51 2 33 31 41
52 9 31 33 34
53 2 31 33 35
54 9 35 33 34
55 10 33 34 43
56 11 33 34 44
57 12 43 34 44
58 1 33 35 36
59 2 33 35 37
60 1 37 35 36
61 1 35 37 38
62 2 35 37 39
63 1 39 37 38
64 1 37 39 40
65 2 37 39 41
66 1 41 39 40
67 2 31 41 39
68 1 31 41 42
69 1 39 41 42
70 16 20 44 34
71 14 45 44 20
72 14 46 44 20
73 14 45 44 34
74 14 46 44 34
75 15 45 44 46
Dihedrals
1 1 2 1 3 4
2 2 5 3 1 2
3 3 11 1 3 4
4 4 11 1 3 5
5 2 9 11 1 2
6 5 2 1 11 12
7 4 3 1 11 9
8 2 3 1 11 12
9 6 1 3 4 13
10 7 1 3 4 14
11 6 5 3 4 13
12 7 5 3 4 14
13 2 1 3 5 6
14 4 1 3 5 7
15 1 6 5 3 4
16 3 7 5 3 4
17 8 3 4 14 15
18 8 3 4 14 16
19 9 13 4 14 15
20 9 13 4 14 16
21 2 3 5 7 8
22 4 3 5 7 9
23 5 6 5 7 8
24 2 9 7 5 6
25 2 5 7 9 10
26 4 5 7 9 11
27 5 8 7 9 10
28 2 11 9 7 8
29 4 7 9 11 1
30 2 7 9 11 12
31 2 1 11 9 10
32 5 10 9 11 12
33 10 18 17 19 20
34 2 21 19 17 18
35 11 27 17 19 20
36 4 27 17 19 21
37 2 25 27 17 18
38 5 18 17 27 28
39 4 19 17 27 25
40 2 19 17 27 28
41 12 17 19 20 29
42 13 17 19 20 30
43 13 17 19 20 44
44 12 21 19 20 29
45 13 21 19 20 30
46 13 21 19 20 44
47 2 17 19 21 22
48 4 17 19 21 23
49 10 22 21 19 20
50 11 23 21 19 20
51 17 19 20 44 34
52 14 19 20 44 45
53 14 19 20 44 46
54 18 29 20 44 34
55 15 29 20 44 45
56 15 29 20 44 46
57 19 30 20 44 34
58 16 30 20 44 45
59 16 30 20 44 46
60 2 19 21 23 24
61 4 19 21 23 25
62 5 22 21 23 24
63 2 25 23 21 22
64 2 21 23 25 26
65 4 21 23 25 27
66 5 24 23 25 26
67 2 27 25 23 24
68 4 23 25 27 17
69 2 23 25 27 28
70 2 17 27 25 26
71 5 26 25 27 28
72 10 32 31 33 34
73 2 35 33 31 32
74 11 41 31 33 34
75 4 41 31 33 35
76 2 39 41 31 32
77 5 32 31 41 42
78 4 33 31 41 39
79 2 33 31 41 42
80 12 31 33 34 43
81 13 31 33 34 44
82 12 35 33 34 43
83 13 35 33 34 44
84 2 31 33 35 36
85 4 31 33 35 37
86 10 36 35 33 34
87 11 37 35 33 34
88 17 33 34 44 20
89 14 33 34 44 45
90 14 33 34 44 46
91 18 43 34 44 20
92 15 43 34 44 45
93 15 43 34 44 46
94 2 33 35 37 38
95 4 33 35 37 39
96 5 36 35 37 38
97 2 39 37 35 36
98 2 35 37 39 40
99 4 35 37 39 41
100 5 38 37 39 40
101 2 41 39 37 38
102 4 37 39 41 31
103 2 37 39 41 42
104 2 31 41 39 40
105 5 40 39 41 42
Impropers
1 1 3 1 11 2
2 2 1 3 5 4
3 3 3 4 13 14
4 1 3 5 7 6
5 1 5 7 9 8
6 1 7 9 11 10
7 1 1 11 9 12
8 4 15 14 16 4
9 1 19 17 27 18
10 5 17 19 21 20
11 1 19 21 23 22
12 1 21 23 25 24
13 1 23 25 27 26
14 1 17 27 25 28
15 1 33 31 41 32
16 5 31 33 35 34
17 7 33 34 43 44
18 1 33 35 37 36
19 1 35 37 39 38
20 1 37 39 41 40
21 1 31 41 39 42
22 1 19 20 29 30
23 1 19 20 29 44
24 1 19 20 30 44
25 1 29 20 30 44
26 1 45 44 34 20
27 1 46 44 34 20
28 1 45 44 46 20
29 1 45 44 46 34

View File

@ -0,0 +1,56 @@
# 20 styrene molecules
# three reactions defined
units real
boundary p p p
atom_style full
kspace_style pppm 1.0e-4
pair_style lj/class2/coul/long 8.5
angle_style class2
bond_style class2
dihedral_style class2
improper_style class2
variable T equal 530
read_data tiny_polystyrene.data &
extra/bond/per/atom 5 &
extra/angle/per/atom 15 &
extra/dihedral/per/atom 15 &
extra/improper/per/atom 25 &
extra/special/per/atom 25
molecule mol1 2styrene_unreacted.data_template
molecule mol2 2styrene_reacted.data_template
molecule mol3 chain_plus_styrene_unreacted.data_template
molecule mol4 chain_plus_styrene_reacted.data_template
molecule mol5 chain_chain_unreacted.data_template
molecule mol6 chain_chain_reacted.data_template
thermo 100
# dump 1 all xyz 5 test_vis.xyz
fix rxn1 all bond/react stabilization yes statted_grp .03 &
react rxn1 all 1 0 3.0 mol1 mol2 2styrene_map stabilize_steps 100 &
react rxn2 all 1 0 3.0 mol3 mol4 chain_plus_styrene_map stabilize_steps 100 &
react rxn3 all 1 0 5.0 mol5 mol6 chain_chain_map stabilize_steps 100
fix 1 statted_grp_REACT nvt temp $T $T 100
fix 4 bond_react_MASTER_group temp/rescale 1 $T $T 1 1
thermo_style custom step temp press density f_rxn1[1] f_rxn1[2] f_rxn1[3]
run 10000
# write_restart restart_longrun nofix
# write_data restart_longrun.data

View File

@ -0,0 +1,245 @@
LAMMPS (20 Nov 2019)
WARNING-WARNING-WARNING-WARNING-WARNING
This LAMMPS executable was compiled using C++98 compatibility.
Please report the compiler info below at https://github.com/lammps/lammps/issues/1659
GNU C++ 4.8.5
WARNING-WARNING-WARNING-WARNING-WARNING
Reading data file ...
orthogonal box = (1.74267 1.74267 1.74267) to (18.2573 18.2573 18.2573)
1 by 1 by 1 MPI processor grid
reading atoms ...
320 atoms
reading velocities ...
320 velocities
scanning bonds ...
8 = max bonds/atom
scanning angles ...
18 = max angles/atom
scanning dihedrals ...
22 = max dihedrals/atom
scanning impropers ...
26 = max impropers/atom
reading bonds ...
320 bonds
reading angles ...
480 angles
reading dihedrals ...
640 dihedrals
reading impropers ...
160 impropers
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
3 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
39 = max # of special neighbors
special bonds CPU = 0.000929056 secs
read_data CPU = 0.00930568 secs
Read molecule mol1:
32 atoms with max type 4
32 bonds with max type 6
48 angles with max type 8
64 dihedrals with max type 9
16 impropers with max type 4
Read molecule mol2:
32 atoms with max type 6
33 bonds with max type 10
54 angles with max type 16
79 dihedrals with max type 19
22 impropers with max type 7
Read molecule mol3:
46 atoms with max type 6
47 bonds with max type 10
75 angles with max type 16
105 dihedrals with max type 19
29 impropers with max type 7
Read molecule mol4:
46 atoms with max type 6
48 bonds with max type 13
81 angles with max type 22
121 dihedrals with max type 36
35 impropers with max type 9
Read molecule mol5:
50 atoms with max type 6
51 bonds with max type 10
84 angles with max type 16
118 dihedrals with max type 19
36 impropers with max type 7
Read molecule mol6:
50 atoms with max type 6
52 bonds with max type 10
90 angles with max type 16
135 dihedrals with max type 19
42 impropers with max type 5
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp_REACT defined
PPPM initialization ...
WARNING: System is not charge neutral, net charge = -0.004 (../kspace.cpp:304)
using 12-bit tables for long-range coulomb (../kspace.cpp:323)
G vector (1/distance) = 0.255611
grid = 6 6 6
stencil order = 5
estimated absolute RMS force accuracy = 0.00974692
estimated relative force accuracy = 2.93525e-05
using double precision FFTs
3d grid and FFT values/proc = 1331 216
Neighbor list info ...
update every 1 steps, delay 10 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 = 4 4 4
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Setting up Verlet run ...
Unit style : real
Current step : 0
Time step : 1
Per MPI rank memory allocation (min/avg/max) = 31.14 | 31.14 | 31.14 Mbytes
Step Temp Press Density f_rxn1[1] f_rxn1[2] f_rxn1[3]
0 320.13638 -376.0844 0.76796752 0 0 0
100 520.00782 3952.7008 0.76796752 8 0 0
200 499.9174 2360.8219 0.76796752 8 3 1
300 583.93895 2453.7374 0.76796752 8 3 2
400 560.65536 -2243.3464 0.76796752 8 3 3
500 556.27995 3598.7044 0.76796752 8 3 3
600 570.8397 -3340.1826 0.76796752 8 4 4
700 456.89894 -1087.8081 0.76796752 8 4 4
800 572.91817 -776.19188 0.76796752 8 4 4
900 530.13621 -246734.46 0.76796752 8 4 5
1000 542.34698 1044.0793 0.76796752 8 4 5
1100 562.86339 1207.1715 0.76796752 8 4 5
1200 520.1559 2725.6523 0.76796752 8 4 5
1300 534.01667 951.0972 0.76796752 8 4 5
1400 478.68681 1184.9224 0.76796752 8 4 5
1500 509.05445 2020.5224 0.76796752 8 4 5
1600 549.5382 810.17577 0.76796752 8 4 5
1700 549.46882 -6349.7751 0.76796752 8 4 5
1800 496.77334 3953.1043 0.76796752 8 4 5
1900 522.28719 -2271.7599 0.76796752 8 4 6
2000 569.95975 5633.4352 0.76796752 8 4 6
2100 590.8418 2355.8447 0.76796752 8 4 6
2200 537.64787 6459.6743 0.76796752 8 4 6
2300 548.38487 -1566.3528 0.76796752 8 4 6
2400 533.50353 6755.664 0.76796752 8 4 6
2500 512.57053 325.30968 0.76796752 8 4 6
2600 498.4597 -2468.1165 0.76796752 8 4 6
2700 559.03937 2428.3446 0.76796752 8 4 6
2800 585.85721 -2896.3607 0.76796752 8 4 6
2900 523.18635 1391.254 0.76796752 8 4 6
3000 524.62076 375.02973 0.76796752 8 4 6
3100 534.65688 -1522.7879 0.76796752 8 4 6
3200 499.42665 3725.5476 0.76796752 8 4 6
3300 514.36972 1725.8329 0.76796752 8 4 6
3400 482.52662 4648.5013 0.76796752 8 4 6
3500 495.36836 967.3482 0.76796752 8 4 6
3600 583.28736 745.21794 0.76796752 8 4 6
3700 531.99717 -804.39572 0.76796752 8 4 6
3800 555.08359 -2381.363 0.76796752 8 4 6
3900 520.1818 -547.34169 0.76796752 8 4 6
4000 444.38804 -2488.7881 0.76796752 8 4 6
4100 518.65622 -3135.9573 0.76796752 8 4 6
4200 484.15227 -1040.2447 0.76796752 8 4 6
4300 514.58006 550.14626 0.76796752 8 4 6
4400 579.81405 -849.81454 0.76796752 8 4 6
4500 522.8698 5222.654 0.76796752 8 4 6
4600 490.78275 3251.2892 0.76796752 8 4 6
4700 492.64299 3785.3482 0.76796752 8 4 6
4800 500.11059 4441.8978 0.76796752 8 4 6
4900 536.80009 965.33724 0.76796752 8 4 6
5000 516.98575 -3794.4213 0.76796752 8 4 6
5100 516.76648 -3593.9106 0.76796752 8 4 6
5200 521.6379 -6532.7773 0.76796752 8 4 6
5300 535.64798 2931.412 0.76796752 8 4 6
5400 559.83266 7628.1659 0.76796752 8 4 6
5500 538.91756 2841.6746 0.76796752 8 4 6
5600 539.13999 10445.173 0.76796752 8 4 6
5700 501.56603 -2106.3309 0.76796752 8 4 6
5800 496.72952 -4831.0565 0.76796752 8 4 6
5900 536.12979 -3916.8197 0.76796752 8 4 6
6000 553.10092 3142.6871 0.76796752 8 4 6
6100 558.09546 3154.584 0.76796752 8 4 6
6200 523.48472 9807.0034 0.76796752 8 4 6
6300 551.80343 -3608.2078 0.76796752 8 4 6
6400 484.28359 2255.4675 0.76796752 8 4 6
6500 560.68443 -4826.4868 0.76796752 8 4 6
6600 604.50797 402.32183 0.76796752 8 4 6
6700 538.84714 -7670.3312 0.76796752 8 4 6
6800 528.82853 -380.32058 0.76796752 8 4 6
6900 579.30919 4438.4574 0.76796752 8 4 6
7000 540.3406 3738.0524 0.76796752 8 4 6
7100 519.53645 -1825.5563 0.76796752 8 4 6
7200 474.136 1657.3863 0.76796752 8 4 6
7300 485.55159 -221.84939 0.76796752 8 4 6
7400 527.38494 1037.1777 0.76796752 8 4 6
7500 517.14767 -2313.5823 0.76796752 8 4 6
7600 517.95967 -4763.4709 0.76796752 8 4 6
7700 513.63507 4819.0253 0.76796752 8 4 6
7800 503.56828 1295.1212 0.76796752 8 4 6
7900 520.87804 1506.9417 0.76796752 8 4 6
8000 509.46453 -5800.0971 0.76796752 8 4 6
8100 566.67059 6065.4607 0.76796752 8 4 6
8200 592.53068 1097.2277 0.76796752 8 4 6
8300 529.55235 -580.81757 0.76796752 8 4 6
8400 518.22587 560.45589 0.76796752 8 4 6
8500 521.94561 5325.9459 0.76796752 8 4 6
8600 510.54416 -1929.1967 0.76796752 8 4 6
8700 562.71252 -629.90392 0.76796752 8 4 6
8800 540.23123 -3484.3893 0.76796752 8 4 6
8900 513.82411 -5227.152 0.76796752 8 4 6
9000 534.3307 -3299.088 0.76796752 8 4 6
9100 509.24467 -5676.2775 0.76796752 8 4 6
9200 506.3216 -7043.8493 0.76796752 8 4 7
9300 480.37682 2380.4696 0.76796752 8 4 7
9400 546.15532 1831.0103 0.76796752 8 4 7
9500 567.18341 3839.9843 0.76796752 8 4 7
9600 536.14883 4258.5304 0.76796752 8 4 7
9700 496.04153 3321.3561 0.76796752 8 4 7
9800 531.78927 3124.9156 0.76796752 8 4 7
9900 530.91395 38.987859 0.76796752 8 4 7
10000 551.22761 1027.5706 0.76796752 8 4 7
Loop time of 57.7096 on 1 procs for 10000 steps with 320 atoms
Performance: 14.972 ns/day, 1.603 hours/ns, 173.281 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 11.621 | 11.621 | 11.621 | 0.0 | 20.14
Bond | 11.151 | 11.151 | 11.151 | 0.0 | 19.32
Kspace | 2.2403 | 2.2403 | 2.2403 | 0.0 | 3.88
Neigh | 25.467 | 25.467 | 25.467 | 0.0 | 44.13
Comm | 0.90467 | 0.90467 | 0.90467 | 0.0 | 1.57
Output | 0.0017984 | 0.0017984 | 0.0017984 | 0.0 | 0.00
Modify | 6.2622 | 6.2622 | 6.2622 | 0.0 | 10.85
Other | | 0.06192 | | | 0.11
Nlocal: 320 ave 320 max 320 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 3240 ave 3240 max 3240 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 54336 ave 54336 max 54336 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 54336
Ave neighs/atom = 169.8
Ave special neighs/atom = 11.3063
Neighbor list builds = 10000
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:58

View File

@ -0,0 +1,255 @@
LAMMPS (20 Nov 2019)
WARNING-WARNING-WARNING-WARNING-WARNING
This LAMMPS executable was compiled using C++98 compatibility.
Please report the compiler info below at https://github.com/lammps/lammps/issues/1659
GNU C++ 4.8.5
WARNING-WARNING-WARNING-WARNING-WARNING
Reading data file ...
orthogonal box = (1.74267 1.74267 1.74267) to (18.2573 18.2573 18.2573)
1 by 2 by 2 MPI processor grid
reading atoms ...
320 atoms
reading velocities ...
320 velocities
scanning bonds ...
8 = max bonds/atom
scanning angles ...
18 = max angles/atom
scanning dihedrals ...
22 = max dihedrals/atom
scanning impropers ...
26 = max impropers/atom
reading bonds ...
320 bonds
reading angles ...
480 angles
reading dihedrals ...
640 dihedrals
reading impropers ...
160 impropers
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
3 = max # of 1-2 neighbors
6 = max # of 1-3 neighbors
12 = max # of 1-4 neighbors
39 = max # of special neighbors
special bonds CPU = 0.000751222 secs
read_data CPU = 0.0268223 secs
Read molecule mol1:
32 atoms with max type 4
32 bonds with max type 6
48 angles with max type 8
64 dihedrals with max type 9
16 impropers with max type 4
Read molecule mol2:
32 atoms with max type 6
33 bonds with max type 10
54 angles with max type 16
79 dihedrals with max type 19
22 impropers with max type 7
Read molecule mol3:
46 atoms with max type 6
47 bonds with max type 10
75 angles with max type 16
105 dihedrals with max type 19
29 impropers with max type 7
Read molecule mol4:
46 atoms with max type 6
48 bonds with max type 13
81 angles with max type 22
121 dihedrals with max type 36
35 impropers with max type 9
Read molecule mol5:
50 atoms with max type 6
51 bonds with max type 10
84 angles with max type 16
118 dihedrals with max type 19
36 impropers with max type 7
Read molecule mol6:
50 atoms with max type 6
52 bonds with max type 10
90 angles with max type 16
135 dihedrals with max type 19
42 impropers with max type 5
dynamic group bond_react_MASTER_group defined
dynamic group statted_grp_REACT defined
PPPM initialization ...
WARNING: System is not charge neutral, net charge = -0.004 (../kspace.cpp:304)
using 12-bit tables for long-range coulomb (../kspace.cpp:323)
G vector (1/distance) = 0.255611
grid = 6 6 6
stencil order = 5
estimated absolute RMS force accuracy = 0.00974692
estimated relative force accuracy = 2.93525e-05
using double precision FFTs
3d grid and FFT values/proc = 704 72
Neighbor list info ...
update every 1 steps, delay 10 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 = 4 4 4
2 neighbor lists, perpetual/occasional/extra = 1 1 0
(1) pair lj/class2/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
(2) fix bond/react, occasional, copy from (1)
attributes: half, newton on
pair build: copy
stencil: none
bin: none
Setting up Verlet run ...
Unit style : real
Current step : 0
Time step : 1
Per MPI rank memory allocation (min/avg/max) = 30.66 | 30.68 | 30.69 Mbytes
Step Temp Press Density f_rxn1[1] f_rxn1[2] f_rxn1[3]
0 320.13638 -376.0844 0.76796752 0 0 0
100 522.71544 6623.0579 0.76796752 8 0 0
200 500.86716 -9439.5519 0.76796752 8 3 2
300 594.60588 6714.1323 0.76796752 8 3 3
400 598.68768 683.70457 0.76796752 8 3 3
500 563.1011 3576.6857 0.76796752 8 3 4
600 510.29713 -196148.37 0.76796752 8 3 5
700 494.14346 -118517.45 0.76796752 8 3 6
800 565.62849 7678.1235 0.76796752 8 3 6
900 515.74468 554.84571 0.76796752 8 3 6
1000 500.64636 450.15932 0.76796752 8 3 6
1100 463.34973 6023.8346 0.76796752 8 3 6
1200 529.88483 2748.185 0.76796752 8 3 6
1300 546.84049 1353.4891 0.76796752 8 3 6
1400 552.27356 1446.5807 0.76796752 8 3 6
1500 557.70874 -2745.1523 0.76796752 8 3 6
1600 572.0005 629.36722 0.76796752 8 3 6
1700 503.96569 5937.0231 0.76796752 8 3 6
1800 491.34262 -1175.8104 0.76796752 8 3 6
1900 538.24798 -81.197397 0.76796752 8 3 6
2000 523.89324 2857.2466 0.76796752 8 3 6
2100 515.1424 2288.2405 0.76796752 8 3 6
2200 546.80854 3807.1038 0.76796752 8 3 6
2300 500.31231 -135.33933 0.76796752 8 4 6
2400 497.16354 5516.857 0.76796752 8 4 6
2500 545.34187 3485.5645 0.76796752 8 4 6
2600 522.70122 3114.1284 0.76796752 8 4 6
2700 531.76604 6633.5518 0.76796752 8 4 6
2800 521.97643 -279.83682 0.76796752 8 4 6
2900 497.29575 7052.9409 0.76796752 8 4 6
3000 524.5942 2284.8918 0.76796752 8 4 6
3100 567.61329 -3667.4557 0.76796752 8 4 6
3200 506.82452 -2934.4936 0.76796752 8 4 6
3300 510.8521 313.36263 0.76796752 8 4 6
3400 516.70206 3671.1899 0.76796752 8 4 6
3500 535.12788 2645.2564 0.76796752 8 4 6
3600 580.14214 2604.3079 0.76796752 8 4 6
3700 529.77869 2684.0812 0.76796752 8 4 6
3800 502.93191 2838.6698 0.76796752 8 4 6
3900 585.91492 5308.0828 0.76796752 8 4 6
4000 548.89917 5262.5775 0.76796752 8 4 6
4100 550.7662 -1066.6807 0.76796752 8 4 6
4200 519.19198 2777.5276 0.76796752 8 4 6
4300 521.46332 -3429.7171 0.76796752 8 4 6
4400 532.64173 2301.3135 0.76796752 8 4 6
4500 528.96107 1369.0991 0.76796752 8 4 6
4600 564.66443 9687.2531 0.76796752 8 4 6
4700 558.49446 2322.6085 0.76796752 8 4 6
4800 497.78614 -442.45053 0.76796752 8 4 6
4900 511.09435 -10251.159 0.76796752 8 4 6
5000 525.6642 -1202.0584 0.76796752 8 4 6
5100 521.76974 1821.7811 0.76796752 8 4 6
5200 555.9859 7256.9632 0.76796752 8 4 6
5300 551.51971 -122893.16 0.76796752 8 4 7
5400 524.34705 2905.1033 0.76796752 8 4 7
5500 567.09396 2896.4824 0.76796752 8 4 7
5600 487.57746 1417.1715 0.76796752 8 4 7
5700 547.37304 3900.8734 0.76796752 8 4 7
5800 536.17647 -4048.7522 0.76796752 8 4 7
5900 536.85051 4497.9847 0.76796752 8 4 7
6000 548.58212 -4880.4979 0.76796752 8 4 7
6100 500.94692 6004.2105 0.76796752 8 4 7
6200 486.82494 402.5875 0.76796752 8 4 7
6300 478.09381 6600.767 0.76796752 8 4 7
6400 559.90398 2868.0805 0.76796752 8 4 7
6500 526.01866 -3398.4788 0.76796752 8 4 7
6600 539.68471 -1202.0012 0.76796752 8 4 7
6700 507.51217 -378.71164 0.76796752 8 4 7
6800 526.15958 -4536.9888 0.76796752 8 4 7
6900 511.37134 -2522.3553 0.76796752 8 4 7
7000 538.86918 -2028.0323 0.76796752 8 4 7
7100 523.25566 2911.9962 0.76796752 8 4 7
7200 513.28464 -1000.4758 0.76796752 8 4 7
7300 510.19826 5181.7976 0.76796752 8 4 7
7400 493.46528 -1166.3996 0.76796752 8 4 7
7500 491.51305 5669.2213 0.76796752 8 4 7
7600 506.72032 -2840.301 0.76796752 8 4 7
7700 513.4319 2802.1719 0.76796752 8 4 7
7800 543.7658 -7477.3623 0.76796752 8 4 7
7900 527.35619 -3182.3155 0.76796752 8 4 7
8000 533.50993 613.16561 0.76796752 8 4 7
8100 512.44958 -5037.3414 0.76796752 8 4 7
8200 494.88981 1799.3513 0.76796752 8 4 7
8300 554.81474 -2436.0507 0.76796752 8 4 7
8400 523.22917 364.30593 0.76796752 8 4 7
8500 515.12395 525.24581 0.76796752 8 4 7
8600 511.6321 -1679.8669 0.76796752 8 4 7
8700 531.6327 -1168.1215 0.76796752 8 4 7
8800 548.14438 -5222.7573 0.76796752 8 4 7
8900 517.72579 2073.9695 0.76796752 8 4 7
9000 543.11894 -5307.0759 0.76796752 8 4 7
9100 521.13747 -5546.8552 0.76796752 8 4 7
9200 509.66142 -1584.019 0.76796752 8 4 7
9300 488.73821 -277.85847 0.76796752 8 4 7
9400 513.67282 989.60653 0.76796752 8 4 7
9500 509.98833 -1754.8786 0.76796752 8 4 7
9600 558.72497 5616.6969 0.76796752 8 4 7
9700 533.74988 811.48871 0.76796752 8 4 7
9800 510.94641 -3136.5876 0.76796752 8 4 7
9900 517.80127 -1962.0837 0.76796752 8 4 7
10000 477.50428 -3768.1653 0.76796752 8 4 7
Loop time of 20.9963 on 4 procs for 10000 steps with 320 atoms
Performance: 41.150 ns/day, 0.583 hours/ns, 476.276 timesteps/s
100.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.4968 | 3.0329 | 3.3607 | 18.6 | 14.45
Bond | 2.3164 | 2.8835 | 3.456 | 26.0 | 13.73
Kspace | 1.3332 | 2.2082 | 3.285 | 48.0 | 10.52
Neigh | 7.4831 | 7.4922 | 7.5012 | 0.3 | 35.68
Comm | 1.2809 | 1.3121 | 1.3297 | 1.6 | 6.25
Output | 0.0012138 | 0.0013506 | 0.0017552 | 0.6 | 0.01
Modify | 4.0269 | 4.0301 | 4.0335 | 0.1 | 19.19
Other | | 0.03583 | | | 0.17
Nlocal: 80 ave 94 max 66 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 2243.75 ave 2260 max 2221 min
Histogram: 1 0 0 1 0 0 0 0 0 2
Neighs: 13658.5 ave 17096 max 9421 min
Histogram: 1 0 0 0 0 1 1 0 0 1
Total # of neighbors = 54634
Ave neighs/atom = 170.731
Ave special neighs/atom = 11.3063
Neighbor list builds = 10000
Dangerous builds = 0
System init for write_data ...
PPPM initialization ...
using 12-bit tables for long-range coulomb (../kspace.cpp:323)
G vector (1/distance) = 0.255611
grid = 6 6 6
stencil order = 5
estimated absolute RMS force accuracy = 0.00974692
estimated relative force accuracy = 2.93525e-05
using double precision FFTs
3d grid and FFT values/proc = 704 72
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:21

File diff suppressed because it is too large Load Diff

View File

@ -8,16 +8,7 @@
// in the root directory of this source distribution.
// -------------------------------------------------------------
#include "cudpp_maximal_launch.h"
inline size_t min(size_t x, size_t y)
{
return (x <= y) ? x : y;
}
inline size_t max(size_t x, size_t y)
{
return (x >= y) ? x : y;
}
#include <algorithm>
// computes next highest multiple of f from x
inline size_t multiple(size_t x, size_t f)
@ -65,7 +56,7 @@ size_t maxBlocks(cudaFuncAttributes &attribs,
size_t ctaLimitSMem = smemPerCTA > 0 ? devprop.sharedMemPerBlock / smemPerCTA : maxBlocksPerSM;
size_t ctaLimitThreads = maxThreadsPerSM / threadsPerBlock;
return devprop.multiProcessorCount * min(ctaLimitRegs, min(ctaLimitSMem, min(ctaLimitThreads, maxBlocksPerSM)));
return devprop.multiProcessorCount * std::min(ctaLimitRegs, std::min(ctaLimitSMem, std::min(ctaLimitThreads, (size_t)maxBlocksPerSM)));
}
extern "C"
@ -80,15 +71,15 @@ size_t maxBlocksFromPointer(void* kernel,
{
err = cudaGetDeviceProperties(&devprop, deviceID);
if (err != cudaSuccess)
return -1;
return (size_t)-1;
cudaFuncAttributes attr;
err = cudaFuncGetAttributes(&attr, (const char*)kernel);
if (err != cudaSuccess)
return -1;
return (size_t)-1;
return maxBlocks(attr, devprop, bytesDynamicSharedMem, threadsPerBlock);
}
return -1;
return (size_t)-1;
}

View File

@ -244,7 +244,7 @@ class UCL_Kernel {
template <class dtype>
inline void add_arg(const dtype* const arg) {
#if CUDA_VERSION >= 4000
_kernel_args[_num_args]=const_cast<dtype * const>(arg);
_kernel_args[_num_args]=const_cast<dtype *>(arg);
#else
_param_size = (_param_size+__alignof(dtype)-1) & ~(__alignof(dtype)-1);
CU_SAFE_CALL(cuParamSetv(_kernel,_param_size,(void*)arg,sizeof(dtype)));

View File

@ -37,12 +37,16 @@ struct TagPairSNAPBeta{};
struct TagPairSNAPComputeNeigh{};
struct TagPairSNAPPreUi{};
struct TagPairSNAPComputeUi{};
struct TagPairSNAPComputeUiTot{}; // accumulate ulist into ulisttot separately
struct TagPairSNAPComputeUiCPU{};
struct TagPairSNAPComputeZi{};
struct TagPairSNAPComputeBi{};
struct TagPairSNAPZeroYi{};
struct TagPairSNAPComputeYi{};
struct TagPairSNAPComputeDuidrj{};
struct TagPairSNAPComputeDuidrjCPU{};
struct TagPairSNAPComputeDeidrj{};
struct TagPairSNAPComputeDeidrjCPU{};
template<class DeviceType>
class PairSNAPKokkos : public PairSNAP {
@ -74,11 +78,17 @@ public:
void operator() (TagPairSNAPComputeNeigh,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeNeigh>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPPreUi,const int& ii) const;
void operator() (TagPairSNAPPreUi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPPreUi>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeUi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUi>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeUiTot,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiTot>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeUiCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiCPU>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeZi,const int& ii) const;
@ -86,7 +96,7 @@ public:
void operator() (TagPairSNAPComputeBi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeBi>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPZeroYi,const int& ii) const;
void operator() (TagPairSNAPZeroYi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPZeroYi>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeYi,const int& ii) const;
@ -94,9 +104,15 @@ public:
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeDuidrj,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrj>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeDuidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrjCPU>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeDeidrj,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrj>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPComputeDeidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrjCPU>::member_type& team) const;
KOKKOS_INLINE_FUNCTION
void operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPBeta>::member_type& team) const;

View File

@ -12,7 +12,8 @@
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christian Trott (SNL), Stan Moore (SNL)
Contributing authors: Christian Trott (SNL), Stan Moore (SNL),
Evan Weinberg (NVIDIA)
------------------------------------------------------------------------- */
#include <cmath>
@ -29,6 +30,7 @@
#include "kokkos.h"
#include "sna.h"
#define MAXLINE 1024
#define MAXWORD 3
@ -194,7 +196,7 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
if (beta_max < inum) {
beta_max = inum;
d_beta = Kokkos::View<F_FLOAT**, DeviceType>("PairSNAPKokkos:beta",inum,ncoeff);
d_beta = Kokkos::View<F_FLOAT**, DeviceType>("PairSNAPKokkos:beta",ncoeff,inum);
d_ninside = Kokkos::View<int*, DeviceType>("PairSNAPKokkos:ninside",inum);
}
@ -205,6 +207,8 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
EV_FLOAT ev;
int idxu_max = snaKK.idxu_max;
while (chunk_offset < inum) { // chunk up loop to prevent running out of memory
EV_FLOAT ev_tmp;
@ -217,15 +221,62 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
Kokkos::parallel_for("ComputeNeigh",policy_neigh,*this);
//PreUi
typename Kokkos::RangePolicy<DeviceType, TagPairSNAPPreUi> policy_preui(0,chunk_size);
Kokkos::parallel_for("PreUi",policy_preui,*this);
{
int vector_length = 1;
int team_size = 1;
if (lmp->kokkos->ngpus != 0) {
vector_length = 32;
team_size = 32;//max_neighs;
int team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPPreUi>::team_size_max(*this);
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
}
typename Kokkos::TeamPolicy<DeviceType,TagPairSNAPPreUi> policy_preui((chunk_size+team_size-1)/team_size,team_size,vector_length);
Kokkos::parallel_for("PreUi",policy_preui,*this);
}
//ComputeUi
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUi> policy_ui(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeUi",policy_ui,*this);
// ComputeUI
if (lmp->kokkos->ngpus == 0) { // CPU
// Run a fused calculation of ulist and accumulation into ulisttot using atomics
int vector_length = 1;
int team_size = 1;
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiCPU> policy_ui_cpu(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeUiCPU",policy_ui_cpu,*this);
} else { // GPU, vector parallelism, shared memory, separate ulist and ulisttot to avoid atomics
// ComputeUi
int vector_length = 32;
int team_size = 4; // need to cap b/c of shared memory reqs
int team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUi>::team_size_max(*this);
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
// scratch size: 2 * team_size * (twojmax+1)^2, to cover all `m1`,`m2` values
// 2 is for double buffer
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUi> policy_ui(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
typedef Kokkos::View< SNAcomplex*,
Kokkos::DefaultExecutionSpace::scratch_memory_space,
Kokkos::MemoryTraits<Kokkos::Unmanaged> >
ScratchViewType;
int scratch_size = ScratchViewType::shmem_size( 2 * team_size * (twojmax+1)*(twojmax+1));
policy_ui = policy_ui.set_scratch_size(0, Kokkos::PerTeam( scratch_size ));
Kokkos::parallel_for("ComputeUi",policy_ui,*this);
// ComputeUitot
vector_length = 1;
team_size = 128;
team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiTot>::team_size_max(*this);
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiTot> policy_ui_tot(((idxu_max+team_size-1)/team_size)*chunk_size,team_size,vector_length);
Kokkos::parallel_for("ComputeUiTot",policy_ui_tot,*this);
}
//Ulisttot transpose
snaKK.transpose_ulisttot();
//Compute bispectrum
if (quadraticflag || eflag) {
@ -237,15 +288,28 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
//ComputeBi
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeBi> policy_bi(chunk_size,team_size,vector_length);
Kokkos::parallel_for("ComputeBi",policy_bi,*this);
}
//Compute beta = dE_i/dB_i for all i in list
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPBeta> policy_beta(chunk_size,team_size,vector_length);
Kokkos::parallel_for("ComputeBeta",policy_beta,*this);
//ComputeYi
typename Kokkos::RangePolicy<DeviceType, TagPairSNAPZeroYi> policy_zero_yi(0,chunk_size);
Kokkos::parallel_for("ZeroYi",policy_zero_yi,*this);
//ZeroYi
{
int vector_length = 1;
int team_size = 1;
int team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPZeroYi>::team_size_max(*this);
#ifdef KOKKOS_ENABLE_CUDA
team_size = 128;
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
#endif
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPZeroYi> policy_zero_yi(((idxu_max+team_size-1)/team_size)*chunk_size,team_size,vector_length);
Kokkos::parallel_for("ZeroYi",policy_zero_yi,*this);
}
//ComputeYi
int idxz_max = snaKK.idxz_max;
@ -253,12 +317,59 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
Kokkos::parallel_for("ComputeYi",policy_yi,*this);
//ComputeDuidrj
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrj> policy_duidrj(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeDuidrj",policy_duidrj,*this);
if (lmp->kokkos->ngpus == 0) { // CPU
int vector_length = 1;
int team_size = 1;
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrjCPU> policy_duidrj_cpu(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
snaKK.set_dir(-1); // technically doesn't do anything
Kokkos::parallel_for("ComputeDuidrjCPU",policy_duidrj_cpu,*this);
} else { // GPU, utilize scratch memory and splitting over dimensions
int team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrj>::team_size_max(*this);
int vector_length = 32;
int team_size = 2; // need to cap b/c of shared memory reqs
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
// scratch size: 2 * 2 * team_size * (twojmax+1)^2, to cover all `m1`,`m2` values
// 2 is for double buffer
typedef Kokkos::View< SNAcomplex*,
Kokkos::DefaultExecutionSpace::scratch_memory_space,
Kokkos::MemoryTraits<Kokkos::Unmanaged> >
ScratchViewType;
int scratch_size = ScratchViewType::shmem_size( 4 * team_size * (twojmax+1)*(twojmax+1));
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrj> policy_duidrj(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
policy_duidrj = policy_duidrj.set_scratch_size(0, Kokkos::PerTeam( scratch_size ));
// Need to call three times, once for each direction
for (int k = 0; k < 3; k++) {
snaKK.set_dir(k);
Kokkos::parallel_for("ComputeDuidrj",policy_duidrj,*this);
}
}
//ComputeDeidrj
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrj> policy_deidrj(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeDeidrj",policy_deidrj,*this);
if (lmp->kokkos->ngpus == 0) { // CPU
int vector_length = 1;
int team_size = 1;
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrjCPU> policy_deidrj_cpu(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeDeidrjCPU",policy_deidrj_cpu,*this);
} else { // GPU, different loop strategy internally
int team_size_max = Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrj>::team_size_max(*this);
int vector_length = 32; // coalescing disaster right now, will fix later
int team_size = 8;
if (team_size*vector_length > team_size_max)
team_size = team_size_max/vector_length;
typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrj> policy_deidrj(((chunk_size+team_size-1)/team_size)*max_neighs,team_size,vector_length);
Kokkos::parallel_for("ComputeDeidrj",policy_deidrj,*this);
}
//ComputeForce
if (eflag) {
@ -284,6 +395,7 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
}
ev += ev_tmp;
chunk_offset += chunk_size;
} // end while
if (need_dup)
@ -341,18 +453,18 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPBeta,const typename Kokk
d_coeffi(d_coeffelem,ielem,Kokkos::ALL);
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
d_beta(ii,icoeff) = d_coeffi[icoeff+1];
d_beta(icoeff,ii) = d_coeffi[icoeff+1];
if (quadraticflag) {
int k = ncoeff+1;
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
double bveci = my_sna.blist(ii,icoeff);
d_beta(ii,icoeff) += d_coeffi[k]*bveci;
double bveci = my_sna.blist(icoeff,ii);
d_beta(icoeff,ii) += d_coeffi[k]*bveci;
k++;
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) {
double bvecj = my_sna.blist(ii,jcoeff);
d_beta(ii,icoeff) += d_coeffi[k]*bvecj;
d_beta(ii,jcoeff) += d_coeffi[k]*bveci;
double bvecj = my_sna.blist(jcoeff,ii);
d_beta(icoeff,ii) += d_coeffi[k]*bvecj;
d_beta(jcoeff,ii) += d_coeffi[k]*bveci;
k++;
}
}
@ -503,9 +615,14 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeNeigh,const typen
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPPreUi,const int& ii) const {
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPPreUi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPPreUi>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
my_sna.pre_ui(ii);
// Extract the atom number
const int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
my_sna.pre_ui(team,ii);
}
template<class DeviceType>
@ -514,8 +631,7 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeUi,const typename
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() %
((chunk_size+team.team_size()-1)/team.team_size()));
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
@ -528,9 +644,54 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeUi,const typename
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPZeroYi,const int& ii) const {
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeUiTot,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiTot>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
my_sna.zero_yi(ii);
// Extract the quantum number
const int idx = team.team_rank() + team.team_size() * (team.league_rank() % ((my_sna.idxu_max+team.team_size()-1)/team.team_size()));
if (idx >= my_sna.idxu_max) return;
// Extract the atomic index
const int ii = team.league_rank() / ((my_sna.idxu_max+team.team_size()-1)/team.team_size());
if (ii >= chunk_size) return;
// Extract the number of neighbors neighbor number
const int ninside = d_ninside(ii);
my_sna.compute_uitot(team,idx,ii,ninside);
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeUiCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeUiCPU>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size());
const int ninside = d_ninside(ii);
if (jj >= ninside) return;
my_sna.compute_ui_cpu(team,ii,jj);
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPZeroYi,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPZeroYi>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the quantum number
const int idx = team.team_rank() + team.team_size() * (team.league_rank() % ((my_sna.idxu_max+team.team_size()-1)/team.team_size()));
if (idx >= my_sna.idxu_max) return;
// Extract the atomic index
const int ii = team.league_rank() / ((my_sna.idxu_max+team.team_size()-1)/team.team_size());
if (ii >= chunk_size) return;
my_sna.zero_yi(idx,ii);
}
template<class DeviceType>
@ -561,8 +722,7 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDuidrj,const type
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() %
((chunk_size+team.team_size()-1)/team.team_size()));
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
@ -573,14 +733,31 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDuidrj,const type
my_sna.compute_duidrj(team,ii,jj);
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDuidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDuidrjCPU>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size());
const int ninside = d_ninside(ii);
if (jj >= ninside) return;
my_sna.compute_duidrj_cpu(team,ii,jj);
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDeidrj,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrj>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() %
((chunk_size+team.team_size()-1)/team.team_size()));
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
@ -591,6 +768,23 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDeidrj,const type
my_sna.compute_deidrj(team,ii,jj);
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeDeidrjCPU,const typename Kokkos::TeamPolicy<DeviceType, TagPairSNAPComputeDeidrjCPU>::member_type& team) const {
SNAKokkos<DeviceType> my_sna = snaKK;
// Extract the atom number
int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((chunk_size+team.team_size()-1)/team.team_size()));
if (ii >= chunk_size) return;
// Extract the neighbor number
const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size());
const int ninside = d_ninside(ii);
if (jj >= ninside) return;
my_sna.compute_deidrj_cpu(team,ii,jj);
}
template<class DeviceType>
template<int NEIGHFLAG, int EVFLAG>
KOKKOS_INLINE_FUNCTION
@ -658,17 +852,17 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAPComputeForce<NEIGHFLAG,E
// linear contributions
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
evdwl += d_coeffi[icoeff+1]*my_sna.blist(ii,icoeff);
evdwl += d_coeffi[icoeff+1]*my_sna.blist(icoeff,ii);
// quadratic contributions
if (quadraticflag) {
int k = ncoeff+1;
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
double bveci = my_sna.blist(ii,icoeff);
double bveci = my_sna.blist(icoeff,ii);
evdwl += 0.5*d_coeffi[k++]*bveci*bveci;
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) {
double bvecj = my_sna.blist(ii,jcoeff);
double bvecj = my_sna.blist(jcoeff,ii);
evdwl += d_coeffi[k++]*bveci*bvecj;
}
}

View File

@ -28,19 +28,53 @@ namespace LAMMPS_NS {
typedef double SNAreal;
//typedef struct { SNAreal re, im; } SNAcomplex;
struct alignas(2*sizeof(SNAreal)) SNAcomplex{
SNAreal re, im;
template <typename real>
struct alignas(2*sizeof(real)) SNAComplex
{
real re,im;
KOKKOS_FORCEINLINE_FUNCTION SNAComplex() = default;
KOKKOS_INLINE_FUNCTION
SNAcomplex() : re(0),im(0)
{}
KOKKOS_FORCEINLINE_FUNCTION SNAComplex(real re)
: re(re), im(static_cast<real>(0.)) { ; }
KOKKOS_FORCEINLINE_FUNCTION SNAComplex(real re, real im)
: re(re), im(im) { ; }
KOKKOS_FORCEINLINE_FUNCTION SNAComplex(const SNAComplex& other)
: re(other.re), im(other.im) { ; }
KOKKOS_FORCEINLINE_FUNCTION SNAComplex& operator=(const SNAComplex& other) {
re = other.re; im = other.im;
return *this;
}
KOKKOS_FORCEINLINE_FUNCTION SNAComplex(SNAComplex&& other)
: re(other.re), im(other.im) { ; }
KOKKOS_FORCEINLINE_FUNCTION SNAComplex& operator=(SNAComplex&& other) {
re = other.re; im = other.im;
return *this;
}
KOKKOS_FORCEINLINE_FUNCTION SNAComplex operator+(SNAComplex const& other) {
return SNAComplex(re + other.re, im + other.im);
}
KOKKOS_FORCEINLINE_FUNCTION SNAComplex& operator+=(SNAComplex const& other) {
re += other.re; im += other.im;
return *this;
}
KOKKOS_INLINE_FUNCTION
SNAcomplex(SNAreal real_in, SNAreal imag_in)
:re(real_in),im(imag_in)
{}
};
template <typename real>
KOKKOS_FORCEINLINE_FUNCTION SNAComplex<real> operator*(const real& r, const SNAComplex<real>& self) {
return SNAComplex<real>(r*self.re, r*self.im);
}
typedef SNAComplex<SNAreal> SNAcomplex;
//struct SNAKK_ZINDICES {
// int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju;
//};
@ -58,6 +92,7 @@ public:
typedef Kokkos::View<double*, DeviceType, Kokkos::MemoryTraits<Kokkos::Atomic> > t_sna_1d_atomic;
typedef Kokkos::View<int**, DeviceType> t_sna_2i;
typedef Kokkos::View<double**, DeviceType> t_sna_2d;
typedef Kokkos::View<double**, Kokkos::LayoutLeft, DeviceType> t_sna_2d_ll;
typedef Kokkos::View<double***, DeviceType> t_sna_3d;
typedef Kokkos::View<double***[3], DeviceType> t_sna_4d;
typedef Kokkos::View<double**[3], DeviceType> t_sna_3d3;
@ -66,32 +101,15 @@ public:
typedef Kokkos::View<SNAcomplex*, DeviceType> t_sna_1c;
typedef Kokkos::View<SNAcomplex*, DeviceType, Kokkos::MemoryTraits<Kokkos::Atomic> > t_sna_1c_atomic;
typedef Kokkos::View<SNAcomplex**, DeviceType> t_sna_2c;
typedef Kokkos::View<SNAcomplex**, Kokkos::LayoutLeft, DeviceType> t_sna_2c_ll;
typedef Kokkos::View<SNAcomplex**, Kokkos::LayoutRight, DeviceType> t_sna_2c_lr;
typedef Kokkos::View<SNAcomplex***, DeviceType> t_sna_3c;
typedef Kokkos::View<SNAcomplex***, Kokkos::LayoutLeft, DeviceType> t_sna_3c_ll;
typedef Kokkos::View<SNAcomplex***[3], DeviceType> t_sna_4c;
typedef Kokkos::View<SNAcomplex***[3], Kokkos::LayoutLeft, DeviceType> t_sna_4c_ll;
typedef Kokkos::View<SNAcomplex**[3], DeviceType> t_sna_3c3;
typedef Kokkos::View<SNAcomplex*****, DeviceType> t_sna_5c;
// Helper class to get ulisttot_r
template<typename DeviceLayout, typename T1, typename T2>
class UlisttotHelper {
public:
inline
static void transpose(T1 &ulisttot_lr, const T2 &ulisttot) {
Kokkos::deep_copy(ulisttot_lr,ulisttot);
}
};
template<typename T1, typename T2>
class UlisttotHelper<Kokkos::LayoutRight,T1,T2> {
public:
inline
static void transpose(T1 &ulisttot_lr, const T2 &ulisttot) {
ulisttot_lr = ulisttot;
}
};
inline
SNAKokkos() {};
KOKKOS_INLINE_FUNCTION
@ -113,20 +131,21 @@ inline
int ncoeff;
inline
void transpose_ulisttot();
// functions for bispectrum coefficients
KOKKOS_INLINE_FUNCTION
void pre_ui(const int&); // ForceSNAP
void pre_ui(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team,const int&); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_ui(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_ui_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_ui_orig(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_uitot(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_zi(const int&); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void zero_yi(const int&);
void zero_yi(const int&,const int&); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_yi(int,
const Kokkos::View<F_FLOAT**, DeviceType> &beta); // ForceSNAP
@ -138,12 +157,29 @@ inline
KOKKOS_INLINE_FUNCTION
void compute_duidrj(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); //ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_duidrj_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); //ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_deidrj(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
void compute_deidrj_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int); // ForceSNAP
KOKKOS_INLINE_FUNCTION
double compute_sfac(double, double); // add_uarraytot, compute_duarray
KOKKOS_INLINE_FUNCTION
double compute_dsfac(double, double); // compute_duarray
// efficient complex FMA
// efficient caxpy (i.e., y += a x)
static KOKKOS_FORCEINLINE_FUNCTION
void caxpy(const SNAcomplex& a, const SNAcomplex& x, SNAcomplex& y);
// efficient complex FMA, conjugate of scalar
static KOKKOS_FORCEINLINE_FUNCTION
void caconjxpy(const SNAcomplex& a, const SNAcomplex& x, SNAcomplex& y);
// Set the direction for split ComputeDuidrj
KOKKOS_INLINE_FUNCTION
void set_dir(int);
#ifdef TIMING_INFO
double* timers;
timespec starttime, endtime;
@ -165,17 +201,16 @@ inline
void grow_rij(int, int);
int twojmax, diagonalstyle;
t_sna_2d_ll blist;
t_sna_2c_ll ulisttot;
t_sna_2c_ll zlist;
t_sna_2d blist;
t_sna_2c ulisttot;
t_sna_2c_lr ulisttot_lr;
t_sna_2c zlist;
t_sna_3c ulist;
t_sna_2c_lr ylist;
t_sna_3c_ll ulist;
t_sna_2c_ll ylist;
// derivatives of data
t_sna_4c dulist;
t_sna_4c_ll dulist;
int idxcg_max, idxu_max, idxz_max, idxb_max;
@ -212,10 +247,7 @@ inline
inline
void init_rootpqarray(); // init()
KOKKOS_INLINE_FUNCTION
void zero_uarraytot(const int&); // compute_ui
KOKKOS_INLINE_FUNCTION
void addself_uarraytot(const int&, const double&); // compute_ui
KOKKOS_INLINE_FUNCTION
void add_uarraytot(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int, double, double, double); // compute_ui
@ -223,6 +255,12 @@ inline
void compute_uarray(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int,
double, double, double,
double, double); // compute_ui
KOKKOS_INLINE_FUNCTION
void compute_uarray_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int,
double, double, double,
double, double); // compute_ui_cpu
inline
double deltacg(int, int, int); // init_clebsch_gordan
@ -232,6 +270,10 @@ inline
void compute_duarray(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int,
double, double, double, // compute_duidrj
double, double, double, double, double);
KOKKOS_INLINE_FUNCTION
void compute_duarray_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int, int,
double, double, double, // compute_duidrj
double, double, double, double, double);
// Sets the style for the switching function
// 0 = none
@ -243,6 +285,9 @@ inline
int bzero_flag; // 1 if bzero subtracted from barray
Kokkos::View<double*, DeviceType> bzero; // array of B values for isolated atoms
// for per-direction dulist calculation, specify the direction.
int dir;
};
}

View File

@ -224,16 +224,19 @@ void SNAKokkos<DeviceType>::grow_rij(int newnatom, int newnmax)
rcutij = t_sna_2d("sna:rcutij",natom,nmax);
dedr = t_sna_3d("sna:dedr",natom,nmax,3);
blist = t_sna_2d("sna:blist",natom,idxb_max);
ulisttot = t_sna_2c("sna:ulisttot",natom,idxu_max);
if (!Kokkos::Impl::is_same<typename DeviceType::array_layout,Kokkos::LayoutRight>::value)
ulisttot_lr = t_sna_2c_lr("sna:ulisttot_lr",natom,idxu_max);
zlist = t_sna_2c("sna:zlist",natom,idxz_max);
blist = t_sna_2d_ll("sna:blist",idxb_max,natom);
//ulisttot = t_sna_2c("sna:ulisttot",natom,idxu_max);
ulisttot = t_sna_2c_ll("sna:ulisttot",idxu_max,natom);
ulist = t_sna_3c("sna:ulist",natom,nmax,idxu_max);
ylist = t_sna_2c_lr("sna:ylist",natom,idxu_max);
zlist = t_sna_2c_ll("sna:zlist",idxz_max,natom);
dulist = t_sna_4c("sna:dulist",natom,nmax,idxu_max);
//ulist = t_sna_3c("sna:ulist",natom,nmax,idxu_max);
ulist = t_sna_3c_ll("sna:ulist",idxu_max,natom,nmax);
//ylist = t_sna_2c_lr("sna:ylist",natom,idxu_max);
ylist = t_sna_2c_ll("sna:ylist",idxu_max,natom);
//dulist = t_sna_4c("sna:dulist",natom,nmax,idxu_max);
dulist = t_sna_4c_ll("sna:dulist",idxu_max,natom,nmax);
}
/* ----------------------------------------------------------------------
@ -242,19 +245,31 @@ void SNAKokkos<DeviceType>::grow_rij(int newnatom, int newnmax)
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::pre_ui(const int& iatom)
void SNAKokkos<DeviceType>::pre_ui(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, const int& iatom)
{
//if(team.team_rank() == 0) {
zero_uarraytot(iatom);
//Kokkos::single(Kokkos::PerThread(team), [&] (){
addself_uarraytot(iatom,wself);
//});
//}
//team.team_barrier();
for (int j = 0; j <= twojmax; j++) {
const int jju = idxu_block(j);
// Only diagonal elements get initialized
// for (int m = 0; m < (j+1)*(j+1); m++)
Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, (j+1)*(j+1)),
[&] (const int m) {
const int jjup = jju + m;
// if m is on the "diagonal", initialize it with the self energy.
// Otherwise zero it out
SNAcomplex init = {0., 0.};
if (m % (j+2) == 0) { init = {wself, 0.0}; }
ulisttot(jjup, iatom) = init;
});
}
}
/* ----------------------------------------------------------------------
compute Ui by summing over neighbors j
compute Ui by summing over bispectrum components
------------------------------------------------------------------------- */
template<class DeviceType>
@ -280,11 +295,72 @@ void SNAKokkos<DeviceType>::compute_ui(const typename Kokkos::TeamPolicy<DeviceT
z0 = r / tan(theta0);
compute_uarray(team, iatom, jnbor, x, y, z, z0, r);
// if we're on the GPU, accumulating into uarraytot is done in a separate kernel.
// if we're not, it's more efficient to include it in compute_uarray.
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_ui_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor)
{
double rsq, r, x, y, z, z0, theta0;
// utot(j,ma,mb) = 0 for all j,ma,ma
// utot(j,ma,ma) = 1 for all j,ma
// for j in neighbors of i:
// compute r0 = (x,y,z,z0)
// utot(j,ma,mb) += u(r0;j,ma,mb) for all j,ma,mb
x = rij(iatom,jnbor,0);
y = rij(iatom,jnbor,1);
z = rij(iatom,jnbor,2);
rsq = x * x + y * y + z * z;
r = sqrt(rsq);
theta0 = (r - rmin0) * rfac0 * MY_PI / (rcutij(iatom,jnbor) - rmin0);
// theta0 = (r - rmin0) * rscale0;
z0 = r / tan(theta0);
compute_uarray_cpu(team, iatom, jnbor, x, y, z, z0, r);
add_uarraytot(team, iatom, jnbor, r, wj(iatom,jnbor), rcutij(iatom,jnbor));
}
/* ----------------------------------------------------------------------
compute UiTot by summing over neighbors
------------------------------------------------------------------------- */
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_uitot(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int idx, int iatom, int ninside)
{
// fuse initialize in, avoid this load?
SNAcomplex utot = ulisttot(idx, iatom);
for (int jnbor = 0; jnbor < ninside; jnbor++) {
const auto x = rij(iatom,jnbor,0);
const auto y = rij(iatom,jnbor,1);
const auto z = rij(iatom,jnbor,2);
const auto rsq = x * x + y * y + z * z;
const auto r = sqrt(rsq);
const double wj_local = wj(iatom, jnbor);
const double rcut = rcutij(iatom, jnbor);
const double sfac = compute_sfac(r, rcut) * wj_local;
auto ulist_local = ulist(idx, iatom, jnbor);
utot.re += sfac * ulist_local.re;
utot.im += sfac * ulist_local.im;
}
ulisttot(idx, iatom) = utot;
}
/* ----------------------------------------------------------------------
compute Zi by summing over products of Ui
not updated yet
------------------------------------------------------------------------- */
template<class DeviceType>
@ -306,8 +382,8 @@ void SNAKokkos<DeviceType>::compute_zi(const int& iter)
const double* cgblock = cglist.data() + idxcg_block(j1,j2,j);
zlist(iatom,jjz).re = 0.0;
zlist(iatom,jjz).im = 0.0;
zlist(jjz,iatom).re = 0.0;
zlist(jjz,iatom).im = 0.0;
int jju1 = idxu_block[j1] + (j1+1)*mb1min;
int jju2 = idxu_block[j2] + (j2+1)*mb2max;
@ -321,15 +397,15 @@ void SNAKokkos<DeviceType>::compute_zi(const int& iter)
int ma2 = ma2max;
int icga = ma1min*(j2+1) + ma2max;
for(int ia = 0; ia < na; ia++) {
suma1_r += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).re - ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).im);
suma1_i += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).im + ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).re);
suma1_r += cgblock[icga] * (ulisttot(jju1+ma1,iatom).re * ulisttot(jju2+ma2,iatom).re - ulisttot(jju1+ma1,iatom).im * ulisttot(jju2+ma2,iatom).im);
suma1_i += cgblock[icga] * (ulisttot(jju1+ma1,iatom).re * ulisttot(jju2+ma2,iatom).im + ulisttot(jju1+ma1,iatom).im * ulisttot(jju2+ma2,iatom).re);
ma1++;
ma2--;
icga += j2;
} // end loop over ia
zlist(iatom,jjz).re += cgblock[icgb] * suma1_r;
zlist(iatom,jjz).im += cgblock[icgb] * suma1_i;
zlist(jjz,iatom).re += cgblock[icgb] * suma1_r;
zlist(jjz,iatom).im += cgblock[icgb] * suma1_i;
jju1 += j1+1;
jju2 -= j2+1;
@ -343,10 +419,9 @@ void SNAKokkos<DeviceType>::compute_zi(const int& iter)
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::zero_yi(const int& iatom)
void SNAKokkos<DeviceType>::zero_yi(const int& idx, const int& iatom)
{
for (int j = 0; j < idxu_max; j++)
ylist(iatom,j) = {0.0,0.0};
ylist(idx,iatom) = {0.0, 0.0};
}
/* ----------------------------------------------------------------------
@ -393,8 +468,8 @@ void SNAKokkos<DeviceType>::compute_yi(int iter,
int icga = ma1min*(j2+1) + ma2max;
for(int ia = 0; ia < na; ia++) {
suma1_r += cgblock[icga] * (ulisttot_lr(iatom,jju1+ma1).re * ulisttot_lr(iatom,jju2+ma2).re - ulisttot_lr(iatom,jju1+ma1).im * ulisttot_lr(iatom,jju2+ma2).im);
suma1_i += cgblock[icga] * (ulisttot_lr(iatom,jju1+ma1).re * ulisttot_lr(iatom,jju2+ma2).im + ulisttot_lr(iatom,jju1+ma1).im * ulisttot_lr(iatom,jju2+ma2).re);
suma1_r += cgblock[icga] * (ulisttot(jju1+ma1,iatom).re * ulisttot(jju2+ma2,iatom).re - ulisttot(jju1+ma1,iatom).im * ulisttot(jju2+ma2,iatom).im);
suma1_i += cgblock[icga] * (ulisttot(jju1+ma1,iatom).re * ulisttot(jju2+ma2,iatom).im + ulisttot(jju1+ma1,iatom).im * ulisttot(jju2+ma2,iatom).re);
ma1++;
ma2--;
icga += j2;
@ -417,20 +492,20 @@ void SNAKokkos<DeviceType>::compute_yi(int iter,
if (j >= j1) {
const int jjb = idxb_block(j1,j2,j);
if (j1 == j) {
if (j2 == j) betaj = 3*beta(iatom,jjb);
else betaj = 2*beta(iatom,jjb);
} else betaj = beta(iatom,jjb);
if (j2 == j) betaj = 3*beta(jjb,iatom);
else betaj = 2*beta(jjb,iatom);
} else betaj = beta(jjb,iatom);
} else if (j >= j2) {
const int jjb = idxb_block(j,j2,j1);
if (j2 == j) betaj = 2*beta(iatom,jjb)*(j1+1)/(j+1.0);
else betaj = beta(iatom,jjb)*(j1+1)/(j+1.0);
if (j2 == j) betaj = 2*beta(jjb,iatom)*(j1+1)/(j+1.0);
else betaj = beta(jjb,iatom)*(j1+1)/(j+1.0);
} else {
const int jjb = idxb_block(j2,j,j1);
betaj = beta(iatom,jjb)*(j1+1)/(j+1.0);
betaj = beta(jjb,iatom)*(j1+1)/(j+1.0);
}
Kokkos::atomic_add(&(ylist(iatom,jju).re), betaj*ztmp_r);
Kokkos::atomic_add(&(ylist(iatom,jju).im), betaj*ztmp_i);
Kokkos::atomic_add(&(ylist(jju,iatom).re), betaj*ztmp_r);
Kokkos::atomic_add(&(ylist(jju,iatom).im), betaj*ztmp_i);
}
/* ----------------------------------------------------------------------
@ -441,18 +516,81 @@ template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_deidrj(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor)
{
t_scalar3<double> sum;
t_scalar3<double> final_sum;
// Like in ComputeUi/ComputeDuidrj, regular loop over j.
for (int j = 0; j <= twojmax; j++) {
int jju = idxu_block(j);
// Flatten loop over ma, mb, reduce w/in
const int n_ma = j+1;
// for (int mb = 0; 2*mb <= j; mb++)
const int n_mb = j/2+1;
const int total_iters = n_ma * n_mb;
t_scalar3<double> sum;
//for (int m = 0; m < total_iters; m++) {
Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team, total_iters),
[&] (const int m, t_scalar3<double>& sum_tmp) {
// ma fast, mb slow
int ma = m % n_ma;
int mb = m / n_ma;
// get index
const int jju_index = jju+mb+mb*j+ma;
// get ylist, rescale last element by 0.5
SNAcomplex y_local = ylist(jju_index,iatom);
const SNAcomplex du_x = dulist(jju_index,iatom,jnbor,0);
const SNAcomplex du_y = dulist(jju_index,iatom,jnbor,1);
const SNAcomplex du_z = dulist(jju_index,iatom,jnbor,2);
if (j % 2 == 0 && 2*mb == j) {
if (ma == mb) { y_local = 0.5*y_local; }
else if (ma > mb) { y_local = { 0., 0. }; }
// else the ma < mb gets "double counted", cancelling the 0.5.
}
sum_tmp.x += du_x.re * y_local.re + du_x.im * y_local.im;
sum_tmp.y += du_y.re * y_local.re + du_y.im * y_local.im;
sum_tmp.z += du_z.re * y_local.re + du_z.im * y_local.im;
}, sum); // end loop over flattened ma,mb
final_sum.x += sum.x;
final_sum.y += sum.y;
final_sum.z += sum.z;
}
Kokkos::single(Kokkos::PerThread(team), [&] () {
dedr(iatom,jnbor,0) = final_sum.x*2.0;
dedr(iatom,jnbor,1) = final_sum.y*2.0;
dedr(iatom,jnbor,2) = final_sum.z*2.0;
});
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_deidrj_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor)
{
t_scalar3<double> final_sum;
//for(int j = 0; j <= twojmax; j++) {
Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team,twojmax+1),
[&] (const int& j, t_scalar3<double>& sum_tmp) {
//for(int j = 0; j <= twojmax; j++) {
int jju = idxu_block[j];
for(int mb = 0; 2*mb < j; mb++)
for(int ma = 0; ma <= j; ma++) {
sum_tmp.x += dulist(iatom,jnbor,jju,0).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,0).im * ylist(iatom,jju).im;
sum_tmp.y += dulist(iatom,jnbor,jju,1).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,1).im * ylist(iatom,jju).im;
sum_tmp.z += dulist(iatom,jnbor,jju,2).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,2).im * ylist(iatom,jju).im;
sum_tmp.x += dulist(jju,iatom,jnbor,0).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,0).im * ylist(jju,iatom).im;
sum_tmp.y += dulist(jju,iatom,jnbor,1).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,1).im * ylist(jju,iatom).im;
sum_tmp.z += dulist(jju,iatom,jnbor,2).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,2).im * ylist(jju,iatom).im;
jju++;
} //end loop over ma mb
@ -462,25 +600,24 @@ void SNAKokkos<DeviceType>::compute_deidrj(const typename Kokkos::TeamPolicy<Dev
int mb = j/2;
for(int ma = 0; ma < mb; ma++) {
sum_tmp.x += dulist(iatom,jnbor,jju,0).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,0).im * ylist(iatom,jju).im;
sum_tmp.y += dulist(iatom,jnbor,jju,1).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,1).im * ylist(iatom,jju).im;
sum_tmp.z += dulist(iatom,jnbor,jju,2).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,2).im * ylist(iatom,jju).im;
sum_tmp.x += dulist(jju,iatom,jnbor,0).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,0).im * ylist(jju,iatom).im;
sum_tmp.y += dulist(jju,iatom,jnbor,1).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,1).im * ylist(jju,iatom).im;
sum_tmp.z += dulist(jju,iatom,jnbor,2).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,2).im * ylist(jju,iatom).im;
jju++;
}
//int ma = mb;
sum_tmp.x += (dulist(iatom,jnbor,jju,0).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,0).im * ylist(iatom,jju).im)*0.5;
sum_tmp.y += (dulist(iatom,jnbor,jju,1).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,1).im * ylist(iatom,jju).im)*0.5;
sum_tmp.z += (dulist(iatom,jnbor,jju,2).re * ylist(iatom,jju).re + dulist(iatom,jnbor,jju,2).im * ylist(iatom,jju).im)*0.5;
sum_tmp.x += (dulist(jju,iatom,jnbor,0).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,0).im * ylist(jju,iatom).im)*0.5;
sum_tmp.y += (dulist(jju,iatom,jnbor,1).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,1).im * ylist(jju,iatom).im)*0.5;
sum_tmp.z += (dulist(jju,iatom,jnbor,2).re * ylist(jju,iatom).re + dulist(jju,iatom,jnbor,2).im * ylist(jju,iatom).im)*0.5;
} // end if jeven
},sum); // end loop over j
//}
},final_sum); // end loop over j
Kokkos::single(Kokkos::PerThread(team), [&] () {
dedr(iatom,jnbor,0) = sum.x*2.0;
dedr(iatom,jnbor,1) = sum.y*2.0;
dedr(iatom,jnbor,2) = sum.z*2.0;
dedr(iatom,jnbor,0) = final_sum.x*2.0;
dedr(iatom,jnbor,1) = final_sum.y*2.0;
dedr(iatom,jnbor,2) = final_sum.z*2.0;
});
}
@ -524,8 +661,8 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
const int jjz_index = jjz+mb*(j+1)+ma;
if (2*mb == j) return;
sum +=
ulisttot(iatom,jju_index).re * zlist(iatom,jjz_index).re +
ulisttot(iatom,jju_index).im * zlist(iatom,jjz_index).im;
ulisttot(jju_index,iatom).re * zlist(jjz_index,iatom).re +
ulisttot(jju_index,iatom).im * zlist(jjz_index,iatom).im;
},sumzu_temp); // end loop over ma, mb
sumzu += sumzu_temp;
@ -539,8 +676,8 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
const int jju_index = jju+(mb-1)*(j+1)+(j+1)+ma;
const int jjz_index = jjz+(mb-1)*(j+1)+(j+1)+ma;
sum +=
ulisttot(iatom,jju_index).re * zlist(iatom,jjz_index).re +
ulisttot(iatom,jju_index).im * zlist(iatom,jjz_index).im;
ulisttot(jju_index,iatom).re * zlist(jjz_index,iatom).re +
ulisttot(jju_index,iatom).im * zlist(jjz_index,iatom).im;
},sumzu_temp); // end loop over ma
sumzu += sumzu_temp;
@ -548,8 +685,8 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
const int jju_index = jju+(mb-1)*(j+1)+(j+1)+ma;
const int jjz_index = jjz+(mb-1)*(j+1)+(j+1)+ma;
sumzu += 0.5*
(ulisttot(iatom,jju_index).re * zlist(iatom,jjz_index).re +
ulisttot(iatom,jju_index).im * zlist(iatom,jjz_index).im);
(ulisttot(jju_index,iatom).re * zlist(jjz_index,iatom).re +
ulisttot(jju_index,iatom).im * zlist(jjz_index,iatom).im);
} // end if jeven
Kokkos::single(Kokkos::PerThread(team), [&] () {
@ -560,7 +697,7 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
if (bzero_flag)
sumzu -= bzero[j];
blist(iatom,jjb) = sumzu;
blist(jjb,iatom) = sumzu;
});
});
//} // end loop over j
@ -593,39 +730,26 @@ void SNAKokkos<DeviceType>::compute_duidrj(const typename Kokkos::TeamPolicy<Dev
compute_duarray(team, iatom, jnbor, x, y, z, z0, r, dz0dr, wj(iatom,jnbor), rcutij(iatom,jnbor));
}
/* ---------------------------------------------------------------------- */
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::zero_uarraytot(const int& iatom)
void SNAKokkos<DeviceType>::compute_duidrj_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor)
{
{
//Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot.extent(1)),
// [&] (const int& i) {
for (int i = 0; i < ulisttot.extent(1); i++) {
ulisttot(iatom,i).re = 0.0;
ulisttot(iatom,i).im = 0.0;
}
//});
}
}
double rsq, r, x, y, z, z0, theta0, cs, sn;
double dz0dr;
/* ---------------------------------------------------------------------- */
x = rij(iatom,jnbor,0);
y = rij(iatom,jnbor,1);
z = rij(iatom,jnbor,2);
rsq = x * x + y * y + z * z;
r = sqrt(rsq);
double rscale0 = rfac0 * MY_PI / (rcutij(iatom,jnbor) - rmin0);
theta0 = (r - rmin0) * rscale0;
cs = cos(theta0);
sn = sin(theta0);
z0 = r * cs / sn;
dz0dr = z0 / r - (r*rscale0) * (rsq + z0 * z0) / rsq;
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::addself_uarraytot(const int& iatom, const double& wself_in)
{
//Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1),
// [&] (const int& j) {
for (int j = 0; j <= twojmax; j++) {
int jju = idxu_block[j];
for (int ma = 0; ma <= j; ma++) {
ulisttot(iatom,jju).re = wself_in;
ulisttot(iatom,jju).im = 0.0;
jju += j+2;
}
}//});
compute_duarray_cpu(team, iatom, jnbor, x, y, z, z0, r, dz0dr, wj(iatom,jnbor), rcutij(iatom,jnbor));
}
/* ----------------------------------------------------------------------
@ -639,10 +763,10 @@ void SNAKokkos<DeviceType>::add_uarraytot(const typename Kokkos::TeamPolicy<Devi
{
const double sfac = compute_sfac(r, rcut) * wj;
Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot.extent(1)),
Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot.extent(0)),
[&] (const int& i) {
Kokkos::atomic_add(&(ulisttot(iatom,i).re), sfac * ulist(iatom,jnbor,i).re);
Kokkos::atomic_add(&(ulisttot(iatom,i).im), sfac * ulist(iatom,jnbor,i).im);
Kokkos::atomic_add(&(ulisttot(i,iatom).re), sfac * ulist(i,iatom,jnbor).re);
Kokkos::atomic_add(&(ulisttot(i,iatom).im), sfac * ulist(i,iatom,jnbor).im);
});
}
@ -655,6 +779,119 @@ KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_uarray(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor,
double x, double y, double z,
double z0, double r)
{
// define size of scratch memory buffer
const int max_m_tile = (twojmax+1)*(twojmax+1);
const int team_rank = team.team_rank();
// get scratch memory double buffer
SNAcomplex* buf1 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
SNAcomplex* buf2 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
// compute Cayley-Klein parameters for unit quaternion,
// pack into complex number
double r0inv = 1.0 / sqrt(r * r + z0 * z0);
SNAcomplex a = { r0inv * z0, -r0inv * z };
SNAcomplex b = { r0inv * y, -r0inv * x };
// VMK Section 4.8.2
// All writes go to global memory and shared memory
// so we can avoid all global memory reads
Kokkos::single(Kokkos::PerThread(team), [=]() {
ulist(0,iatom,jnbor) = { 1.0, 0.0 };
buf1[max_m_tile*team_rank] = {1.,0.};
});
for (int j = 1; j <= twojmax; j++) {
const int jju = idxu_block[j];
int jjup = idxu_block[j-1];
// fill in left side of matrix layer from previous layer
// Flatten loop over ma, mb, need to figure out total
// number of iterations
// for (int ma = 0; ma <= j; ma++)
const int n_ma = j+1;
// for (int mb = 0; 2*mb <= j; mb++)
const int n_mb = j/2+1;
const int total_iters = n_ma * n_mb;
//for (int m = 0; m < total_iters; m++) {
Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, total_iters),
[&] (const int m) {
// ma fast, mb slow
int ma = m % n_ma;
int mb = m / n_ma;
// index into global memory array
const int jju_index = jju+mb+mb*j+ma;
// index into shared memory buffer for previous level
const int jju_shared_idx = max_m_tile*team_rank+mb+mb*j+ma;
// index into shared memory buffer for next level
const int jjup_shared_idx = max_m_tile*team_rank+mb*j+ma;
SNAcomplex u_accum = {0., 0.};
// VMK recursion relation: grab contribution which is multiplied by a*
const double rootpq1 = rootpqarray(j - ma, j - mb);
const SNAcomplex u_up1 = (ma < j)?rootpq1*buf1[jjup_shared_idx]:SNAcomplex(0.,0.);
caconjxpy(a, u_up1, u_accum);
// VMK recursion relation: grab contribution which is multiplied by b*
const double rootpq2 = -rootpqarray(ma, j - mb);
const SNAcomplex u_up2 = (ma > 0)?rootpq2*buf1[jjup_shared_idx-1]:SNAcomplex(0.,0.);
caconjxpy(b, u_up2, u_accum);
ulist(jju_index,iatom,jnbor) = u_accum;
// We no longer accumulate into ulisttot in this kernel.
// Instead, we have a separate kernel which avoids atomics.
// Running two separate kernels is net faster.
// back up into shared memory for next iter
if (j != twojmax) buf2[jju_shared_idx] = u_accum;
// copy left side to right side with inversion symmetry VMK 4.4(2)
// u[ma-j,mb-j] = (-1)^(ma-mb)*Conj([u[ma,mb))
// We can avoid this if we're on the last row for an integer j
if (!(n_ma % 2 == 1 && (mb+1) == n_mb)) {
int sign_factor = ((ma%2==0)?1:-1)*(mb%2==0?1:-1);
const int jjup_flip = jju+(j+1-mb)*(j+1)-(ma+1);
const int jju_shared_flip = max_m_tile*team_rank+(j+1-mb)*(j+1)-(ma+1);
if (sign_factor == 1) {
u_accum.im = -u_accum.im;
} else {
u_accum.re = -u_accum.re;
}
ulist(jjup_flip,iatom,jnbor) = u_accum;
if (j != twojmax) buf2[jju_shared_flip] = u_accum;
}
});
// In CUDA backend,
// ThreadVectorRange has a __syncwarp (appropriately masked for
// vector lengths < 32) implict at the end
// swap double buffers
auto tmp = buf1; buf1 = buf2; buf2 = tmp;
//std::swap(buf1, buf2); // throws warnings
}
}
// CPU version
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_uarray_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor,
double x, double y, double z,
double z0, double r)
{
double r0inv;
double a_r, b_r, a_i, b_i;
@ -670,8 +907,8 @@ void SNAKokkos<DeviceType>::compute_uarray(const typename Kokkos::TeamPolicy<Dev
// VMK Section 4.8.2
ulist(iatom,jnbor,0).re = 1.0;
ulist(iatom,jnbor,0).im = 0.0;
ulist(0,iatom,jnbor).re = 1.0;
ulist(0,iatom,jnbor).im = 0.0;
for (int j = 1; j <= twojmax; j++) {
int jju = idxu_block[j];
@ -683,31 +920,31 @@ void SNAKokkos<DeviceType>::compute_uarray(const typename Kokkos::TeamPolicy<Dev
[&] (const int& mb) {
//for (int mb = 0; 2*mb <= j; mb++) {
const int jju_index = jju+mb+mb*j;
ulist(iatom,jnbor,jju_index).re = 0.0;
ulist(iatom,jnbor,jju_index).im = 0.0;
ulist(jju_index,iatom,jnbor).re = 0.0;
ulist(jju_index,iatom,jnbor).im = 0.0;
for (int ma = 0; ma < j; ma++) {
const int jju_index = jju+mb+mb*j+ma;
const int jjup_index = jjup+mb*j+ma;
rootpq = rootpqarray(j - ma,j - mb);
ulist(iatom,jnbor,jju_index).re +=
ulist(jju_index,iatom,jnbor,jju).re +=
rootpq *
(a_r * ulist(iatom,jnbor,jjup_index).re +
a_i * ulist(iatom,jnbor,jjup_index).im);
ulist(iatom,jnbor,jju_index).im +=
(a_r * ulist(jjup_index,iatom,jnbor).re +
a_i * ulist(jjup_index,iatom,jnbor).im);
ulist(jju_index,iatom,jnbor).im +=
rootpq *
(a_r * ulist(iatom,jnbor,jjup_index).im -
a_i * ulist(iatom,jnbor,jjup_index).re);
(a_r * ulist(jjup_index,iatom,jnbor).im -
a_i * ulist(jjup_index,iatom,jnbor).re);
rootpq = rootpqarray(ma + 1,j - mb);
ulist(iatom,jnbor,jju_index+1).re =
ulist(jju_index+1,iatom,jnbor).re =
-rootpq *
(b_r * ulist(iatom,jnbor,jjup_index).re +
b_i * ulist(iatom,jnbor,jjup_index).im);
ulist(iatom,jnbor,jju_index+1).im =
(b_r * ulist(jjup_index,iatom,jnbor).re +
b_i * ulist(jjup_index,iatom,jnbor).im);
ulist(jju_index+1,iatom,jnbor).im =
-rootpq *
(b_r * ulist(iatom,jnbor,jjup_index).im -
b_i * ulist(iatom,jnbor,jjup_index).re);
(b_r * ulist(jjup_index,iatom,jnbor).im -
b_i * ulist(jjup_index,iatom,jnbor).re);
}
});
@ -725,11 +962,11 @@ void SNAKokkos<DeviceType>::compute_uarray(const typename Kokkos::TeamPolicy<Dev
const int jju_index = jju+mb*(j+1)+ma;
const int jjup_index = jjup-mb*(j+1)-ma;
if (mapar == 1) {
ulist(iatom,jnbor,jjup_index).re = ulist(iatom,jnbor,jju_index).re;
ulist(iatom,jnbor,jjup_index).im = -ulist(iatom,jnbor,jju_index).im;
ulist(jjup_index,iatom,jnbor).re = ulist(jju_index,iatom,jnbor).re;
ulist(jjup_index,iatom,jnbor).im = -ulist(jju_index,iatom,jnbor).im;
} else {
ulist(iatom,jnbor,jjup_index).re = -ulist(iatom,jnbor,jju_index).re;
ulist(iatom,jnbor,jjup_index).im = ulist(iatom,jnbor,jju_index).im;
ulist(jjup_index,iatom,jnbor).re = -ulist(jju_index,iatom,jnbor).re;
ulist(jjup_index,iatom,jnbor).im = ulist(jju_index,iatom,jnbor).im;
}
mapar = -mapar;
}
@ -737,12 +974,6 @@ void SNAKokkos<DeviceType>::compute_uarray(const typename Kokkos::TeamPolicy<Dev
}
}
template<class DeviceType>
void SNAKokkos<DeviceType>::transpose_ulisttot()
{
UlisttotHelper<typename DeviceType::array_layout,decltype(ulisttot_lr),decltype(ulisttot)>::transpose(ulisttot_lr,ulisttot);
}
/* ----------------------------------------------------------------------
compute derivatives of Wigner U-functions for one neighbor
see comments in compute_uarray()
@ -755,7 +986,150 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
double z0, double r, double dz0dr,
double wj, double rcut)
{
double r0inv;
// get shared memory offset
const int max_m_tile = (twojmax+1)*(twojmax+1);
const int team_rank = team.team_rank();
// double buffer for ulist
SNAcomplex* ulist_buf1 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
SNAcomplex* ulist_buf2 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
// double buffer for dulist
SNAcomplex* dulist_buf1 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
SNAcomplex* dulist_buf2 = (SNAcomplex*)team.team_shmem( ).get_shmem(team.team_size()*max_m_tile*sizeof(SNAcomplex), 0);
const double sfac = wj * compute_sfac(r, rcut);
const double dsfac = wj * compute_dsfac(r, rcut);
const double rinv = 1.0 / r;
// extract a single unit vector
const double u = (dir == 0 ? x * rinv : dir == 1 ? y * rinv : z * rinv);
// Compute Cayley-Klein parameters for unit quaternion
const double r0inv = 1.0 / sqrt(r * r + z0 * z0);
const SNAcomplex a = { r0inv * z0, -r0inv * z };
const SNAcomplex b = { r0inv * y, -r0inv * x };
const double dr0invdr = -r0inv * r0inv * r0inv * (r + z0 * dz0dr);
const double dr0inv = dr0invdr * u;
const double dz0 = dz0dr * u;
const SNAcomplex da = { dz0 * r0inv + z0 * dr0inv,
- z * dr0inv + (dir == 2 ? - r0inv : 0.) };
const SNAcomplex db = { y * dr0inv + (dir==1?r0inv:0.),
-x * dr0inv + (dir==0?-r0inv:0.) };
// single has a warp barrier at the end
Kokkos::single(Kokkos::PerThread(team), [=]() {
dulist(0,iatom,jnbor,dir) = { dsfac * u, 0. }; // fold in chain rule here
ulist_buf1[max_m_tile*team_rank] = {1., 0.};
dulist_buf1[max_m_tile*team_rank] = {0., 0.};
});
for (int j = 1; j <= twojmax; j++) {
int jju = idxu_block[j];
int jjup = idxu_block[j-1];
// flatten the loop over ma,mb
// for (int ma = 0; ma <= j; ma++)
const int n_ma = j+1;
// for (int mb = 0; 2*mb <= j; mb++)
const int n_mb = j/2+1;
const int total_iters = n_ma * n_mb;
//for (int m = 0; m < total_iters; m++) {
Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, total_iters),
[&] (const int m) {
// ma fast, mb slow
int ma = m % n_ma;
int mb = m / n_ma;
const int jju_index = jju+mb+mb*j+ma;
// index into shared memory
const int jju_shared_idx = max_m_tile*team_rank+mb+mb*j+ma;
const int jjup_shared_idx = max_m_tile*team_rank+mb*j+ma;
// Need to compute and accumulate both u and du (mayhaps, we could probably
// balance some read and compute by reading u each time).
SNAcomplex u_accum = { 0., 0. };
SNAcomplex du_accum = { 0., 0. };
const double rootpq1 = rootpqarray(j - ma, j - mb);
const SNAcomplex u_up1 = (ma < j)?rootpq1*ulist_buf1[jjup_shared_idx]:SNAcomplex(0.,0.);
caconjxpy(a, u_up1, u_accum);
const double rootpq2 = -rootpqarray(ma, j - mb);
const SNAcomplex u_up2 = (ma > 0)?rootpq2*ulist_buf1[jjup_shared_idx-1]:SNAcomplex(0.,0.);
caconjxpy(b, u_up2, u_accum);
// No need to save u_accum to global memory
if (j != twojmax) ulist_buf2[jju_shared_idx] = u_accum;
// Next, spin up du_accum
const SNAcomplex du_up1 = (ma < j) ? rootpq1*dulist_buf1[jjup_shared_idx] : SNAcomplex(0.,0.);
caconjxpy(da, u_up1, du_accum);
caconjxpy(a, du_up1, du_accum);
const SNAcomplex du_up2 = (ma > 0) ? rootpq2*dulist_buf1[jjup_shared_idx-1] : SNAcomplex(0.,0.);
caconjxpy(db, u_up2, du_accum);
caconjxpy(b, du_up2, du_accum);
dulist(jju_index,iatom,jnbor,dir) = ((dsfac * u)*u_accum) + (sfac*du_accum);
if (j != twojmax) dulist_buf2[jju_shared_idx] = du_accum;
// copy left side to right side with inversion symmetry VMK 4.4(2)
// u[ma-j][mb-j] = (-1)^(ma-mb)*Conj([u[ma][mb])
int sign_factor = ((ma%2==0)?1:-1)*(mb%2==0?1:-1);
const int jjup_flip = jju+(j+1-mb)*(j+1)-(ma+1);
const int jju_shared_flip = max_m_tile*team_rank+(j+1-mb)*(j+1)-(ma+1);
if (sign_factor == 1) {
//ulist_alt(iatom,jnbor,jjup_flip).re = u_accum.re;
//ulist_alt(iatom,jnbor,jjup_flip).im = -u_accum.im;
u_accum.im = -u_accum.im;
du_accum.im = -du_accum.im;
} else {
//ulist_alt(iatom,jnbor,jjup_flip).re = -u_accum.re;
//ulist_alt(iatom,jnbor,jjup_flip).im = u_accum.im;
u_accum.re = -u_accum.re;
du_accum.re = -du_accum.re;
}
dulist(jjup_flip,iatom,jnbor,dir) = ((dsfac * u)*u_accum) + (sfac*du_accum);
if (j != twojmax) {
ulist_buf2[jju_shared_flip] = u_accum;
dulist_buf2[jju_shared_flip] = du_accum;
}
});
// swap buffers
auto tmp = ulist_buf1; ulist_buf1 = ulist_buf2; ulist_buf2 = tmp;
tmp = dulist_buf1; dulist_buf1 = dulist_buf2; dulist_buf2 = tmp;
}
}
template<class DeviceType>
KOKKOS_INLINE_FUNCTION
void SNAKokkos<DeviceType>::compute_duarray_cpu(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team, int iatom, int jnbor,
double x, double y, double z,
double z0, double r, double dz0dr,
double wj, double rcut)
{
double r0inv;
double a_r, a_i, b_r, b_i;
double da_r[3], da_i[3], db_r[3], db_i[3];
double dz0[3], dr0inv[3], dr0invdr;
@ -772,7 +1146,7 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
b_r = y * r0inv;
b_i = -x * r0inv;
dr0invdr = -pow(r0inv, 3.0) * (r + z0 * dz0dr);
dr0invdr = -r0inv * r0inv * r0inv * (r + z0 * dz0dr);
dr0inv[0] = dr0invdr * ux;
dr0inv[1] = dr0invdr * uy;
@ -797,12 +1171,12 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
db_i[0] += -r0inv;
db_r[1] += r0inv;
dulist(iatom,jnbor,0,0).re = 0.0;
dulist(iatom,jnbor,0,1).re = 0.0;
dulist(iatom,jnbor,0,2).re = 0.0;
dulist(iatom,jnbor,0,0).im = 0.0;
dulist(iatom,jnbor,0,1).im = 0.0;
dulist(iatom,jnbor,0,2).im = 0.0;
dulist(0,iatom,jnbor,0).re = 0.0;
dulist(0,iatom,jnbor,1).re = 0.0;
dulist(0,iatom,jnbor,2).re = 0.0;
dulist(0,iatom,jnbor,0).im = 0.0;
dulist(0,iatom,jnbor,1).im = 0.0;
dulist(0,iatom,jnbor,2).im = 0.0;
for (int j = 1; j <= twojmax; j++) {
int jju = idxu_block[j];
@ -811,42 +1185,42 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
[&] (const int& mb) {
//for (int mb = 0; 2*mb <= j; mb++) {
const int jju_index = jju+mb+mb*j;
dulist(iatom,jnbor,jju_index,0).re = 0.0;
dulist(iatom,jnbor,jju_index,1).re = 0.0;
dulist(iatom,jnbor,jju_index,2).re = 0.0;
dulist(iatom,jnbor,jju_index,0).im = 0.0;
dulist(iatom,jnbor,jju_index,1).im = 0.0;
dulist(iatom,jnbor,jju_index,2).im = 0.0;
dulist(jju_index,iatom,jnbor,0).re = 0.0;
dulist(jju_index,iatom,jnbor,1).re = 0.0;
dulist(jju_index,iatom,jnbor,2).re = 0.0;
dulist(jju_index,iatom,jnbor,0).im = 0.0;
dulist(jju_index,iatom,jnbor,1).im = 0.0;
dulist(jju_index,iatom,jnbor,2).im = 0.0;
for (int ma = 0; ma < j; ma++) {
const int jju_index = jju+mb+mb*j+ma;
const int jjup_index = jjup+mb*j+ma;
rootpq = rootpqarray(j - ma,j - mb);
for (int k = 0; k < 3; k++) {
dulist(iatom,jnbor,jju_index,k).re +=
rootpq * (da_r[k] * ulist(iatom,jnbor,jjup_index).re +
da_i[k] * ulist(iatom,jnbor,jjup_index).im +
a_r * dulist(iatom,jnbor,jjup_index,k).re +
a_i * dulist(iatom,jnbor,jjup_index,k).im);
dulist(iatom,jnbor,jju_index,k).im +=
rootpq * (da_r[k] * ulist(iatom,jnbor,jjup_index).im -
da_i[k] * ulist(iatom,jnbor,jjup_index).re +
a_r * dulist(iatom,jnbor,jjup_index,k).im -
a_i * dulist(iatom,jnbor,jjup_index,k).re);
dulist(jju_index,iatom,jnbor,k).re +=
rootpq * (da_r[k] * ulist(jjup_index,iatom,jnbor).re +
da_i[k] * ulist(jjup_index,iatom,jnbor).im +
a_r * dulist(jjup_index,iatom,jnbor,k).re +
a_i * dulist(jjup_index,iatom,jnbor,k).im);
dulist(jju_index,iatom,jnbor,k).im +=
rootpq * (da_r[k] * ulist(jjup_index,iatom,jnbor).im -
da_i[k] * ulist(jjup_index,iatom,jnbor).re +
a_r * dulist(jjup_index,iatom,jnbor,k).im -
a_i * dulist(jjup_index,iatom,jnbor,k).re);
}
rootpq = rootpqarray(ma + 1,j - mb);
for (int k = 0; k < 3; k++) {
dulist(iatom,jnbor,jju_index+1,k).re =
-rootpq * (db_r[k] * ulist(iatom,jnbor,jjup_index).re +
db_i[k] * ulist(iatom,jnbor,jjup_index).im +
b_r * dulist(iatom,jnbor,jjup_index,k).re +
b_i * dulist(iatom,jnbor,jjup_index,k).im);
dulist(iatom,jnbor,jju_index+1,k).im =
-rootpq * (db_r[k] * ulist(iatom,jnbor,jjup_index).im -
db_i[k] * ulist(iatom,jnbor,jjup_index).re +
b_r * dulist(iatom,jnbor,jjup_index,k).im -
b_i * dulist(iatom,jnbor,jjup_index,k).re);
dulist(jju_index+1,iatom,jnbor,k).re =
-rootpq * (db_r[k] * ulist(jjup_index,iatom,jnbor).re +
db_i[k] * ulist(jjup_index,iatom,jnbor).im +
b_r * dulist(jjup_index,iatom,jnbor,k).re +
b_i * dulist(jjup_index,iatom,jnbor,k).im);
dulist(jju_index+1,iatom,jnbor,k).im =
-rootpq * (db_r[k] * ulist(jjup_index,iatom,jnbor).im -
db_i[k] * ulist(jjup_index,iatom,jnbor).re +
b_r * dulist(jjup_index,iatom,jnbor,k).im -
b_i * dulist(jjup_index,iatom,jnbor,k).re);
}
}
});
@ -866,13 +1240,13 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
const int jjup_index = jjup-mb*(j+1)-ma;
if (mapar == 1) {
for (int k = 0; k < 3; k++) {
dulist(iatom,jnbor,jjup_index,k).re = dulist(iatom,jnbor,jju_index,k).re;
dulist(iatom,jnbor,jjup_index,k).im = -dulist(iatom,jnbor,jju_index,k).im;
dulist(jjup_index,iatom,jnbor,k).re = dulist(jju_index,iatom,jnbor,k).re;
dulist(jjup_index,iatom,jnbor,k).im = -dulist(jju_index,iatom,jnbor,k).im;
}
} else {
for (int k = 0; k < 3; k++) {
dulist(iatom,jnbor,jjup_index,k).re = -dulist(iatom,jnbor,jju_index,k).re;
dulist(iatom,jnbor,jjup_index,k).im = dulist(iatom,jnbor,jju_index,k).im;
dulist(jjup_index,iatom,jnbor,k).re = -dulist(jju_index,iatom,jnbor,k).re;
dulist(jjup_index,iatom,jnbor,k).im = dulist(jju_index,iatom,jnbor,k).im;
}
}
mapar = -mapar;
@ -890,18 +1264,18 @@ void SNAKokkos<DeviceType>::compute_duarray(const typename Kokkos::TeamPolicy<De
int jju = idxu_block[j];
for (int mb = 0; 2*mb <= j; mb++)
for (int ma = 0; ma <= j; ma++) {
dulist(iatom,jnbor,jju,0).re = dsfac * ulist(iatom,jnbor,jju).re * ux +
sfac * dulist(iatom,jnbor,jju,0).re;
dulist(iatom,jnbor,jju,0).im = dsfac * ulist(iatom,jnbor,jju).im * ux +
sfac * dulist(iatom,jnbor,jju,0).im;
dulist(iatom,jnbor,jju,1).re = dsfac * ulist(iatom,jnbor,jju).re * uy +
sfac * dulist(iatom,jnbor,jju,1).re;
dulist(iatom,jnbor,jju,1).im = dsfac * ulist(iatom,jnbor,jju).im * uy +
sfac * dulist(iatom,jnbor,jju,1).im;
dulist(iatom,jnbor,jju,2).re = dsfac * ulist(iatom,jnbor,jju).re * uz +
sfac * dulist(iatom,jnbor,jju,2).re;
dulist(iatom,jnbor,jju,2).im = dsfac * ulist(iatom,jnbor,jju).im * uz +
sfac * dulist(iatom,jnbor,jju,2).im;
dulist(jju,iatom,jnbor,0).re = dsfac * ulist(jju,iatom,jnbor).re * ux +
sfac * dulist(jju,iatom,jnbor,0).re;
dulist(jju,iatom,jnbor,0).im = dsfac * ulist(jju,iatom,jnbor).im * ux +
sfac * dulist(jju,iatom,jnbor,0).im;
dulist(jju,iatom,jnbor,1).re = dsfac * ulist(jju,iatom,jnbor).re * uy +
sfac * dulist(jju,iatom,jnbor,1).re;
dulist(jju,iatom,jnbor,1).im = dsfac * ulist(jju,iatom,jnbor).im * uy +
sfac * dulist(jju,iatom,jnbor,1).im;
dulist(jju,iatom,jnbor,2).re = dsfac * ulist(jju,iatom,jnbor).re * uz +
sfac * dulist(jju,iatom,jnbor,2).re;
dulist(jju,iatom,jnbor,2).im = dsfac * ulist(jju,iatom,jnbor).im * uz +
sfac * dulist(jju,iatom,jnbor,2).im;
jju++;
}
@ -1257,6 +1631,39 @@ double SNAKokkos<DeviceType>::compute_dsfac(double r, double rcut)
return 0.0;
}
/* ---------------------------------------------------------------------- */
// efficient complex FMA (i.e., y += a x)
template<class DeviceType>
KOKKOS_FORCEINLINE_FUNCTION
void SNAKokkos<DeviceType>::caxpy(const SNAcomplex& a, const SNAcomplex& x, SNAcomplex& y) {
y.re += a.re * x.re;
y.re -= a.im * x.im;
y.im += a.im * x.re;
y.im += a.re * x.im;
}
/* ---------------------------------------------------------------------- */
// efficient complex FMA, conjugate of scalar (i.e.) y += (a.re - i a.im) x)
template<class DeviceType>
KOKKOS_FORCEINLINE_FUNCTION
void SNAKokkos<DeviceType>::caconjxpy(const SNAcomplex& a, const SNAcomplex& x, SNAcomplex& y) {
y.re += a.re * x.re;
y.re += a.im * x.im;
y.im -= a.im * x.re;
y.im += a.re * x.im;
}
/* ---------------------------------------------------------------------- */
// set direction of batched Duidrj
template<class DeviceType>
KOKKOS_FORCEINLINE_FUNCTION
void SNAKokkos<DeviceType>::set_dir(int dir_) {
dir = dir_;
}
/* ----------------------------------------------------------------------
memory usage of arrays
------------------------------------------------------------------------- */

View File

@ -927,7 +927,7 @@ void PairADP::grab(FILE *fp, char *filename, int n, double *list)
while (i < n) {
utils::sfgets(FLERR,line,MAXLINE,fp,filename,error);
ptr = strtok(line," \t\n\r\f");
list[i++] = atof(ptr);
if (ptr) list[i++] = atof(ptr);
while ((ptr = strtok(NULL," \t\n\r\f"))) list[i++] = atof(ptr);
}
}

View File

@ -797,7 +797,7 @@ void PairEAM::grab(FILE *fptr, int n, double *list)
while (i < n) {
utils::sfgets(FLERR,line,MAXLINE,fptr,NULL,error);
ptr = strtok(line," \t\n\r\f");
list[i++] = atof(ptr);
if (ptr) list[i++] = atof(ptr);
while ((ptr = strtok(NULL," \t\n\r\f"))) list[i++] = atof(ptr);
}
}

View File

@ -60,10 +60,10 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \
PACKUSER = user-adios user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \
user-diffraction user-dpd user-drude user-eff user-fep user-h5md \
user-intel user-lb user-manifold user-meamc user-meso \
user-intel user-lb user-manifold user-meamc user-mesodpd \
user-mgpt user-misc user-mofff user-molfile \
user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm \
user-qtb user-quip user-reaxc user-scafacos user-smd user-smtbq \
user-qtb user-quip user-reaction user-reaxc user-scafacos user-smd user-smtbq \
user-sdpd user-sph user-tally user-uef user-vtk user-yaff
PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems \

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