forked from lijiext/lammps
Merge branch 'master' into exchange-biquadratic
This commit is contained in:
commit
724a9978c8
|
@ -108,7 +108,7 @@ For bug reports, the next step is that one of the core LAMMPS developers will se
|
|||
|
||||
For submitting pull requests, there is a [detailed tutorial](https://lammps.sandia.gov/doc/Howto_github.html) in the LAMMPS manual. Thus only a brief breakdown of the steps is presented here. Please note, that the LAMMPS developers are still reviewing and trying to improve the process. If you are unsure about something, do not hesitate to post a question on the lammps-users mailing list or contact one fo the core LAMMPS developers.
|
||||
Immediately after the submission, the LAMMPS continuing integration server at ci.lammps.org will download your submitted branch and perform a simple compilation test, i.e. will test whether your submitted code can be compiled under various conditions. It will also do a check on whether your included documentation translates cleanly. Whether these tests are successful or fail will be recorded. If a test fails, please inspect the corresponding output on the CI server and take the necessary steps, if needed, so that the code can compile cleanly again. The test will be re-run each the pull request is updated with a push to the remote branch on GitHub.
|
||||
Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assesment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit).
|
||||
Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assessment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit).
|
||||
You may also receive comments and suggestions on the overall submission or specific details and on occasion specific requests for changes as part of the review. If permitted, also additional changes may be pushed into your pull request branch or a pull request may be filed in your LAMMPS fork on GitHub to include those changes.
|
||||
The LAMMPS developer may then decide to assign the pull request to another developer (e.g. when that developer is more knowledgeable about the submitted feature or enhancement or has written the modified code). It may also happen, that additional developers are requested to provide a review and approve the changes. For submissions, that may change the general behavior of LAMMPS, or where a possibility of unwanted side effects exists, additional tests may be requested by the assigned developer.
|
||||
If the assigned developer is satisfied and considers the submission ready for inclusion into LAMMPS, the pull request will receive approvals and be merged into the master branch by one of the core LAMMPS developers. After the pull request is merged, you may delete the feature branch used for the pull request in your personal LAMMPS fork.
|
||||
|
|
|
@ -57,20 +57,14 @@ if(BUILD_DOC)
|
|||
|
||||
# download mathjax distribution and unpack to folder "mathjax"
|
||||
if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/mathjax/es5)
|
||||
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
|
||||
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.1.2.tar.gz"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
|
||||
EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)
|
||||
EXPECTED_MD5 a4a6a093a89bc2ccab1452d766b98e53)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${DOC_BUILD_STATIC_DIR}/mathjax)
|
||||
endif()
|
||||
|
||||
# for increased browser compatibility
|
||||
if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/polyfill.js)
|
||||
file(DOWNLOAD "https://polyfill.io/v3/polyfill.min.js?features=es6"
|
||||
"${DOC_BUILD_STATIC_DIR}/polyfill.js")
|
||||
endif()
|
||||
|
||||
# set up doxygen and add targets to run it
|
||||
file(MAKE_DIRECTORY ${DOXYGEN_BUILD_DIR})
|
||||
file(COPY ${LAMMPS_DOC_DIR}/doxygen/lammps-logo.png DESTINATION ${DOXYGEN_BUILD_DIR}/lammps-logo.png)
|
||||
|
|
|
@ -50,8 +50,8 @@ if(BUILD_LAMMPS_SHELL)
|
|||
endif()
|
||||
target_link_libraries(lammps-shell PRIVATE lammps PkgConfig::READLINE)
|
||||
install(TARGETS lammps-shell EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(DIRECTORY icons DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/)
|
||||
install(FILES lammps-shell.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/)
|
||||
install(DIRECTORY ${LAMMPS_TOOLS_DIR}/lammps-shell/icons DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/)
|
||||
install(FILES ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/)
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
message(STATUS "Downloading and building YAML library")
|
||||
|
||||
include(ExternalProject)
|
||||
set(YAML_URL "https://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz" CACHE STRING "URL for libyaml tarball")
|
||||
mark_as_advanced(YAML_URL)
|
||||
ExternalProject_Add(libyaml
|
||||
URL ${YAML_URL}
|
||||
URL_MD5 bb15429d8fb787e7d3f1c83ae129a999
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build"
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure ${CONFIGURE_REQUEST_PIC}
|
||||
CXX=${CMAKE_CXX_COMPILER}
|
||||
CC=${CMAKE_C_COMPILER}
|
||||
--prefix=<INSTALL_DIR> --disable-shared
|
||||
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}yaml.a
|
||||
TEST_COMMAND "")
|
||||
|
||||
ExternalProject_Get_Property(libyaml INSTALL_DIR)
|
||||
set(YAML_INCLUDE_DIR ${INSTALL_DIR}/include)
|
||||
set(YAML_LIBRARY_DIR ${INSTALL_DIR}/lib)
|
||||
|
||||
# workaround for CMake 3.10 on ubuntu 18.04
|
||||
file(MAKE_DIRECTORY ${YAML_INCLUDE_DIR})
|
||||
file(MAKE_DIRECTORY ${YAML_LIBRARY_DIR})
|
||||
|
||||
set(YAML_LIBRARY_PATH ${INSTALL_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}yaml.a)
|
||||
|
||||
add_library(Yaml::Yaml UNKNOWN IMPORTED)
|
||||
set_target_properties(Yaml::Yaml PROPERTIES
|
||||
IMPORTED_LOCATION ${YAML_LIBRARY_PATH}
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${YAML_INCLUDE_DIR})
|
||||
add_dependencies(Yaml::Yaml libyaml)
|
12
doc/Makefile
12
doc/Makefile
|
@ -14,7 +14,6 @@ TXT2RST = $(VENV)/bin/txt2rst
|
|||
ANCHORCHECK = $(VENV)/bin/rst_anchor_check
|
||||
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
|
||||
MATHJAX = $(SPHINXCONFIG)/_static/mathjax
|
||||
POLYFILL = $(SPHINXCONFIG)/_static/polyfill.js
|
||||
|
||||
PYTHON = $(shell which python3)
|
||||
DOXYGEN = $(shell which doxygen)
|
||||
|
@ -81,7 +80,7 @@ help:
|
|||
# ------------------------------------------
|
||||
|
||||
clean-all: clean
|
||||
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(POLYFILL) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
|
||||
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
|
||||
|
||||
clean: clean-spelling
|
||||
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py
|
||||
|
@ -95,7 +94,7 @@ $(SPHINXCONFIG)/conf.py: $(SPHINXCONFIG)/conf.py.in
|
|||
-e 's,@LAMMPS_PYTHON_DIR@,$(BUILDDIR)/../python,g' \
|
||||
-e 's,@LAMMPS_DOC_DIR@,$(BUILDDIR),g' $< > $@
|
||||
|
||||
html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) $(POLYFILL)
|
||||
html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
||||
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
||||
@$(MAKE) $(MFLAGS) -C graphviz all
|
||||
@(\
|
||||
|
@ -237,13 +236,6 @@ $(VENV):
|
|||
$(MATHJAX):
|
||||
@git clone --depth 1 https://github.com/mathjax/MathJax.git $@
|
||||
|
||||
# fall back to using wget and/or unencrypted download, if curl fails
|
||||
$(POLYFILL): $(MATHJAX)
|
||||
@curl -s -o $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
|
||||
curl -s -o $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
|
||||
wget -O $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
|
||||
wget -O $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1
|
||||
|
||||
$(TXT2RST) $(ANCHORCHECK): $(VENV)
|
||||
@( \
|
||||
. $(VENV)/bin/activate; \
|
||||
|
|
|
@ -95,7 +95,7 @@ on the pull request discussion page on GitHub, so that other developers
|
|||
can later review the entire discussion after the fact and understand the
|
||||
rationale behind choices made. Exceptions to this policy are technical
|
||||
discussions, that are centered on tools or policies themselves
|
||||
(git, github, c++) rather than on the content of the pull request.
|
||||
(git, GitHub, c++) rather than on the content of the pull request.
|
||||
|
||||
### Checklist for Pull Requests
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.TH LAMMPS "22 October 2020" "2020-10-22"
|
||||
.TH LAMMPS "29 October 2020" "2020-10-29"
|
||||
.SH NAME
|
||||
.B LAMMPS
|
||||
\- Molecular Dynamics Simulator.
|
||||
|
|
|
@ -111,8 +111,10 @@ error margin). The status of this automated testing can be viewed on
|
|||
The unit testing facility is integrated into the CMake build process
|
||||
of the LAMMPS source code distribution itself. It can be enabled by
|
||||
setting ``-D ENABLE_TESTING=on`` during the CMake configuration step.
|
||||
It requires the `PyYAML <http://pyyaml.org/>`_ library and development
|
||||
headers to compile and will download and compile a recent version of the
|
||||
It requires the `YAML <http://pyyaml.org/>`_ library and development
|
||||
headers (if not found locally a recent version will be downloaded
|
||||
and compiled transparently) to compile and will download and compile
|
||||
a specific recent version of the
|
||||
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
|
||||
for implementing the tests.
|
||||
|
||||
|
|
|
@ -73,8 +73,8 @@ after the documentation folder is returned to a pristine state with
|
|||
For the documentation build a python virtual environment is set up in
|
||||
the folder ``doc/docenv`` and various python packages are installed into
|
||||
that virtual environment via the ``pip`` tool. For rendering embedded
|
||||
LaTeX code also the `MathJax <https://www.mathjax.org/>`_ and the
|
||||
`Polyfill <https://polyfill.io/>`_ JavaScript engines need to be downloaded.
|
||||
LaTeX code also the `MathJax <https://www.mathjax.org/>`_ JavaScript
|
||||
engine needs to be downloaded.
|
||||
|
||||
The actual translation is then done via ``make`` commands in the doc
|
||||
folder. The following ``make`` commands are available:
|
||||
|
|
|
@ -119,7 +119,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||
:doc:`pair style zero <pair_zero>` with a suitable cutoff or use :doc:`comm_modify cutoff <comm_modify>`.
|
||||
|
||||
*Communication cutoff is shorter than a bond length based estimate. This may lead to errors.*
|
||||
|
||||
Since LAMMPS stores topology data with individual atoms, all atoms
|
||||
comprising a bond, angle, dihedral or improper must be present on any
|
||||
sub-domain that "owns" the atom with the information, either as a
|
||||
|
|
|
@ -72,7 +72,7 @@ explained in more detail here: `feature branch workflow <https://www.atlassian.c
|
|||
|
||||
**Feature branches**
|
||||
|
||||
First of all, create a clone of your version on github on your local
|
||||
First of all, create a clone of your version on GitHub on your local
|
||||
machine via HTTPS:
|
||||
|
||||
.. code-block:: bash
|
||||
|
@ -155,7 +155,7 @@ useful message that explains the change.
|
|||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git commit -m 'Finally updated the github tutorial'
|
||||
$ git commit -m 'Finally updated the GitHub tutorial'
|
||||
|
||||
After the commit, the changes can be pushed to the same branch on GitHub:
|
||||
|
||||
|
|
|
@ -67,5 +67,5 @@ rotate.
|
|||
|
||||
The only frictional idealized walls currently in LAMMPS are flat or
|
||||
curved surfaces specified by the :doc:`fix wall/gran <fix_wall_gran>`
|
||||
command. At some point we plan to allow regoin surfaces to be used as
|
||||
command. At some point we plan to allow region surfaces to be used as
|
||||
frictional walls, as well as triangulated surfaces.
|
||||
|
|
|
@ -24,13 +24,15 @@ DOI for the LAMMPS code
|
|||
LAMMPS developers use the `Zenodo service at CERN
|
||||
<https://zenodo.org/>`_ to create digital object identifies (DOI) for
|
||||
stable releases of the LAMMPS code. There are two types of DOIs for the
|
||||
LAMMPS source code: 1) the canonical DOI for **all** versions of LAMMPS,
|
||||
which will always point to the latest stable release version is:
|
||||
LAMMPS source code: the canonical DOI for **all** versions of LAMMPS,
|
||||
which will always point to the **latest** stable release version is:
|
||||
|
||||
`DOI: 10.5281/zenodo.3726416 <https://dx.doi/org/10.5281/zenodo.3726416>`_
|
||||
- DOI: `10.5281/zenodo.3726416 <https://dx.doi.org/10.5281/zenodo.3726416>`_
|
||||
|
||||
In addition there are DOIs for individual stable releases starting with
|
||||
the `3 March 2020 version, DOI:10.5281/zenodo.3726417 <https://dx.doi/org/10.5281/zenodo.3726416>`_
|
||||
In addition there are DOIs for individual stable releases. Currently there are:
|
||||
|
||||
- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 <https://dx.doi.org/10.5281/zenodo.3726417>`_
|
||||
- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 <https://dx.doi.org/10.5281/zenodo.4157471>`_
|
||||
|
||||
|
||||
Home page
|
||||
|
|
|
@ -21,10 +21,16 @@ where all LAMMPS development is coordinated.
|
|||
|
||||
----------
|
||||
|
||||
The content for this manual is part of the LAMMPS distribution. You can
|
||||
build a local copy of the Manual as HTML pages or a PDF file, by
|
||||
following the steps on the :doc:`Build_manual` page. The manual is
|
||||
organized in two parts:
|
||||
The content for this manual is part of the LAMMPS distribution. The
|
||||
online version always corresponds to the latest development version.
|
||||
If needed, you can download or build a local copy of the manual as
|
||||
HTML pages or a PDF file by following the steps on the
|
||||
:doc:`Build_manual` page. If you have difficulties viewing the pages
|
||||
please :ref:`see this note <webbrowser>`.
|
||||
|
||||
-----------
|
||||
|
||||
The manual is organized in two parts:
|
||||
1) the :ref:`User Guide <user_documentation>` for how to install
|
||||
and use LAMMPS and 2) the :ref:`Programmer Guide <programmer_documentation>`
|
||||
for how to write programs using the LAMMPS library from different
|
||||
|
@ -107,3 +113,15 @@ Indices and tables
|
|||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
|
||||
.. _webbrowser:
|
||||
.. admonition:: Web Browser Compatibility
|
||||
|
||||
The HTML version of the manual makes use of advanced features present
|
||||
int "modern" web browsers. This can lead to incompatibilities with older
|
||||
web browsers (released more than 4 years ago) and specific vendor browsers
|
||||
(e.g. Internet Explorer on Windows; Microsoft Edge works well though)
|
||||
where parts of the pages are not rendered as expected (e.g. the layout is
|
||||
broken or mathematical expressions not typeset). In that case we
|
||||
recommend to install/use a different/newer web browser or use
|
||||
the `PDF version of the manual <https://lammps.sandia.gov/doc/Manual.pdf>`_.
|
||||
|
|
|
@ -14,7 +14,7 @@ Syntax
|
|||
* AtC fixID = ID of :doc:`fix atc <fix_atc>` instance
|
||||
* *output* or *output index* = name of the AtC sub-command
|
||||
* filename_prefix = prefix for data files (for *output*)
|
||||
* frequency = frequency of output in time-steps (for *output*)
|
||||
* frequency = frequency of output in timesteps (for *output*)
|
||||
* optional keywords for *output*:
|
||||
|
||||
- text = creates text output of index, step and nodal variable values for unique nodes
|
||||
|
|
|
@ -42,6 +42,7 @@ Examples
|
|||
atom_style hybrid charge body nparticle 2 5
|
||||
atom_style spin
|
||||
atom_style template myMols
|
||||
atom_style hybrid template twomols charge
|
||||
atom_style tdpd 2
|
||||
|
||||
Description
|
||||
|
@ -239,6 +240,8 @@ can save memory for systems comprised of a large number of small
|
|||
molecules, all of a single type (or small number of types). See the
|
||||
paper by Grime and Voth, in :ref:`(Grime) <Grime>`, for examples of how this
|
||||
can be advantageous for large-scale coarse-grained systems.
|
||||
The ``examples/template`` directory has a few demo inputs and examples
|
||||
showing the use of the *template* atom style versus *molecular*.
|
||||
|
||||
.. note::
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ Syntax
|
|||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *rotate* or *units*
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
.. parsed-literal::
|
||||
|
||||
*mol* value = template-ID seed
|
||||
template-ID = ID of molecule template specified in a separate :doc:`molecule <molecule>` command
|
||||
|
|
|
@ -56,7 +56,7 @@ is slightly modified only for the computation of long-range forces. A
|
|||
good cluster decomposition constitutes in building clusters which
|
||||
contain the fastest covalent bonds inside clusters.
|
||||
|
||||
If the clusters are chosen suitably, the :doc:`run_style respa <run_style>` is stable for outer time-steps of at least 8fs.
|
||||
If the clusters are chosen suitably, the :doc:`run_style respa <run_style>` is stable for outer timesteps of at least 8fs.
|
||||
|
||||
----------
|
||||
|
||||
|
|
|
@ -90,10 +90,10 @@ accepted, *h* is increased by a proportional amount, and the next ODE step is be
|
|||
Otherwise, *h* is shrunk and the ODE step is repeated.
|
||||
|
||||
Run-time diagnostics are available for the rkf45 ODE solver. The frequency
|
||||
(in time-steps) that diagnostics are reported is controlled by the last (optional)
|
||||
(in timesteps) that diagnostics are reported is controlled by the last (optional)
|
||||
12th argument. A negative frequency means that diagnostics are reported once at the
|
||||
end of each run. A positive value N means that the diagnostics are reported once
|
||||
per N time-steps.
|
||||
per N timesteps.
|
||||
|
||||
The diagnostics report the average # of integrator steps and RHS function evaluations
|
||||
and run-time per ODE as well as the average/RMS/min/max per process. If the
|
||||
|
|
|
@ -79,9 +79,9 @@ make it easy to use the same molecule file in different molecule
|
|||
templates or in different simulations. You can specify the same file
|
||||
multiple times with different optional keywords.
|
||||
|
||||
The *offset*\ , *toff*\ , *aoff*\ , *doff*\ , *ioff* keywords add the
|
||||
specified offset values to the atom types, bond types, angle types,
|
||||
dihedral types, and/or improper types as they are read from the
|
||||
The *offset*\ , *toff*\ , *boff*\ , *aoff*\ , *doff*\ , *ioff* keywords
|
||||
add the specified offset values to the atom types, bond types, angle
|
||||
types, dihedral types, and/or improper types as they are read from the
|
||||
molecule file. E.g. if *toff* = 2, and the file uses atom types
|
||||
1,2,3, then each created molecule will have atom types 3,4,5. For the
|
||||
*offset* keyword, all five offset values must be specified, but
|
||||
|
@ -484,9 +484,7 @@ of SHAKE clusters.
|
|||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This command must come after the simulation box is define by a
|
||||
:doc:`read_data <read_data>`, :doc:`read_restart <read_restart>`, or
|
||||
:doc:`create_box <create_box>` command.
|
||||
None
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
|
|
@ -143,7 +143,7 @@ combinations, else an error will result.
|
|||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This pair styles do not support the :doc:`pair_modify <pair_modify>`
|
||||
This pair style do not support the :doc:`pair_modify <pair_modify>`
|
||||
mix, shift, table, and tail options.
|
||||
|
||||
This pair style writes its information to :doc:`binary restart files
|
||||
|
|
|
@ -117,7 +117,7 @@ global Coulombic cutoff is allowed.
|
|||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This pair styles does not support mixing. Thus, coefficients for all
|
||||
This pair style does not support mixing. Thus, coefficients for all
|
||||
I,J pairs must be specified explicitly.
|
||||
|
||||
This pair style supports the :doc:`pair_modify <pair_modify>` shift
|
||||
|
|
|
@ -160,7 +160,7 @@ For atom type pairs I,J and I != J, the epsilon and sigma coefficients
|
|||
and cutoff distance for this pair style can be mixed. The default mix
|
||||
value is *geometric*\ . See the "pair_modify" command for details.
|
||||
|
||||
This pair styles supports the :doc:`pair_modify <pair_modify>` shift
|
||||
This pair style supports the :doc:`pair_modify <pair_modify>` shift
|
||||
option for the energy of the Lennard-Jones portion of the pair
|
||||
interaction, but only for sphere-sphere interactions. There is no
|
||||
shifting performed for ellipsoidal interactions due to the anisotropic
|
||||
|
|
|
@ -75,14 +75,15 @@ This pair style can only be used via the *pair* keyword of the
|
|||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This pair styles is part of the MANYBODY package. It is only enabled
|
||||
if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
This pair style is part of the MANYBODY package. It is only enabled
|
||||
if LAMMPS was built with that package.
|
||||
See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
This pair potential requires the :doc:`newton <newton>` setting to be
|
||||
"on" for pair interactions.
|
||||
|
||||
The C.lcbop potential file provided with LAMMPS (see the potentials
|
||||
directory) is parameterized for metal :doc:`units <units>`. You can use
|
||||
The ``C.lcbop`` potential file provided with LAMMPS (see the potentials
|
||||
directory) is parameterized for :doc:`metal units <units>`. You can use
|
||||
the LCBOP potential with any LAMMPS units, but you would need to
|
||||
create your own LCBOP potential file with coefficients listed in the
|
||||
appropriate units if your simulation does not use "metal" units.
|
||||
|
|
|
@ -298,7 +298,7 @@ described above. For each of the F functions, nx values are listed.
|
|||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This pair styles does not support the :doc:`pair_modify <pair_modify>`
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
This pair style does not write their information to :doc:`binary restart
|
||||
|
|
|
@ -173,7 +173,7 @@ equation for the Hamaker constant presented here. Mixing of sigma and
|
|||
epsilon followed by calculation of the energy prefactors using the
|
||||
equations above is recommended.
|
||||
|
||||
This pair styles supports the :doc:`pair_modify <pair_modify>` shift
|
||||
This pair style supports the :doc:`pair_modify <pair_modify>` shift
|
||||
option for the energy of the Lennard-Jones portion of the pair
|
||||
interaction, but only for sphere-sphere interactions. There is no
|
||||
shifting performed for ellipsoidal interactions due to the anisotropic
|
||||
|
|
|
@ -124,7 +124,7 @@ at the cutoff distance :math:`r_c`.
|
|||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This pair styles does not support mixing.
|
||||
This pair style does not support mixing.
|
||||
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift option for the energy of the pair interaction. Note that as
|
||||
|
|
|
@ -618,7 +618,7 @@ of analysis.
|
|||
* - tdpd
|
||||
- atom-ID atom-type x y z cc1 cc2 ... ccNspecies
|
||||
* - template
|
||||
- atom-ID molecule-ID template-index template-atom atom-type x y z
|
||||
- atom-ID atom-type molecule-ID template-index template-atom x y z
|
||||
* - tri
|
||||
- atom-ID molecule-ID atom-type triangleflag density x y z
|
||||
* - wavepacket
|
||||
|
@ -695,9 +695,9 @@ triangle, or body in the corresponding *Ellipsoids*\ , *Lines*\ ,
|
|||
The *template-index* and *template-atom* are only defined used by
|
||||
:doc:`atom_style template <atom_style>`. In this case the
|
||||
:doc:`molecule <molecule>` command is used to define a molecule template
|
||||
which contains one or more molecules. If an atom belongs to one of
|
||||
those molecules, its *template-index* and *template-atom* are both set
|
||||
to positive integers; if not the values are both 0. The
|
||||
which contains one or more molecules (as separate files). If an atom
|
||||
belongs to one of those molecules, its *template-index* and *template-atom*
|
||||
are both set to positive integers; if not the values are both 0. The
|
||||
*template-index* is which molecule (1 to Nmols) the atom belongs to.
|
||||
The *template-atom* is which atom (1 to Natoms) within the molecule
|
||||
the atom is.
|
||||
|
|
|
@ -370,6 +370,8 @@ needed to generate absolute, unscaled coordinates.
|
|||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
The *native* dump file reader does not support binary .bin dump files.
|
||||
|
||||
To read gzipped dump files, you must compile LAMMPS with the
|
||||
-DLAMMPS_GZIP option. See the :doc:`Build settings <Build_settings>`
|
||||
doc page for details.
|
||||
|
|
|
@ -99,14 +99,15 @@ files do not match the specified output frequency.
|
|||
----------
|
||||
|
||||
If more than one dump file is specified, the dump files are read one
|
||||
after the other. It is assumed that snapshot timesteps will be in
|
||||
ascending order. If a snapshot is encountered that is not in
|
||||
ascending order, it will skip the snapshot until it reads one that is.
|
||||
after the other in the order specified. It is assumed that snapshot
|
||||
timesteps will be in ascending order. If a snapshot is encountered that
|
||||
is not in ascending order, it will skip the snapshot until it reads one
|
||||
that is.
|
||||
This allows skipping of a duplicate snapshot (same timestep),
|
||||
e.g. that appeared at the end of one file and beginning of the next.
|
||||
However if you specify a series of dump files in an incorrect order
|
||||
(with respect to the timesteps they contain), you may skip large
|
||||
numbers of snapshots
|
||||
numbers of snapshots.
|
||||
|
||||
Note that the dump files specified as part of the *dump* keyword can be
|
||||
parallel files, i.e. written as multiple files either per processor
|
||||
|
@ -118,17 +119,24 @@ and write parallel dump files.
|
|||
|
||||
The *first*\ , *last*\ , *every*\ , *skip* keywords determine which
|
||||
snapshots are read from the dump file(s). Snapshots are skipped until
|
||||
they have a timestamp >= *Nfirst*\ . When a snapshot with a timestamp >
|
||||
*Nlast* is encountered, the rerun command finishes. Note below that
|
||||
they have a timestep >= *Nfirst*\ . When a snapshot with a timestep >
|
||||
*Nlast* is encountered, the rerun command finishes. Note that
|
||||
the defaults for *first* and *last* are to read all snapshots. If the
|
||||
*every* keyword is set to a value > 0, then only snapshots with
|
||||
timestamps that are a multiple of *Nevery* are read (the first
|
||||
timesteps that are a multiple of *Nevery* are read (the first
|
||||
snapshot is always read). If *Nevery* = 0, then this criterion is
|
||||
ignored, i.e. every snapshot is read that meets the other criteria.
|
||||
If the *skip* keyword is used, then after the first snapshot is read,
|
||||
every Nth snapshot is read, where N = *Nskip*\ . E.g. if *Nskip* = 3,
|
||||
then only 1 out of every 3 snapshots is read, assuming the snapshot
|
||||
timestamp is also consistent with the other criteria.
|
||||
timestep is also consistent with the other criteria.
|
||||
|
||||
.. note::
|
||||
|
||||
Not all dump formats contain the timestep and not all dump readers
|
||||
support reading it. In that case individual snapshots are assigned
|
||||
consecutive timestep numbers starting at 1.
|
||||
|
||||
|
||||
The *start* and *stop* keywords do not affect which snapshots are read
|
||||
from the dump file(s). Rather, they have the same meaning that they
|
||||
|
@ -205,9 +213,8 @@ thermodynamic output or new dump file output.
|
|||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
To read gzipped dump files, you must compile LAMMPS with the
|
||||
-DLAMMPS_GZIP option. See the :doc:`Build settings <Build_settings>`
|
||||
doc page for details.
|
||||
The *rerun* command is subject to all restrictions of
|
||||
the :doc:`read_dump <read_dump>` command.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
|
|
@ -48,6 +48,10 @@
|
|||
<!--[if lt IE 9]>
|
||||
<script src="{{ pathto('_static/js/html5shiv.min.js', 1) }}"></script>
|
||||
<![endif]-->
|
||||
|
||||
{# Keep modernizr in head - http://modernizr.com/docs/#installing #}
|
||||
<script src="{{ pathto('_static/js/modernizr.min.js', 1) }}"></script>
|
||||
|
||||
{%- if not embedded %}
|
||||
{# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #}
|
||||
{% if sphinx_version >= "1.8.0" %}
|
||||
|
@ -103,12 +107,6 @@
|
|||
{%- endif %}
|
||||
{%- endblock %}
|
||||
{%- block extrahead %} {% endblock %}
|
||||
|
||||
{# Keep modernizr in head - http://modernizr.com/docs/#installing #}
|
||||
<script src="{{ pathto('_static/js/modernizr.min.js', 1) }}"></script>
|
||||
|
||||
{# for improved browser compatibility #}
|
||||
<script src="{{ pathto('_static/polyfill.js', 1) }}"></script>
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
|
|
@ -2615,7 +2615,6 @@ Ree
|
|||
refactored
|
||||
refactoring
|
||||
reflectionstyle
|
||||
regoin
|
||||
Reinders
|
||||
reinit
|
||||
relaxbox
|
||||
|
|
|
@ -111,6 +111,7 @@ srd: stochastic rotation dynamics (SRD) particles as solvent
|
|||
steinhardt: Steinhardt-Nelson Q_l and W_l parameters usng orientorder/atom
|
||||
streitz: Streitz-Mintmire potential for Al2O3
|
||||
tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si
|
||||
template: examples for using atom_style template and comparing to atom style molecular
|
||||
threebody: regression test input for a variety of manybody potentials
|
||||
vashishta: models using the Vashishta potential
|
||||
voronoi: Voronoi tesselation via compute voronoi/atom command
|
||||
|
|
|
@ -28,8 +28,8 @@ LAMMPS data file. CGCMM style. atom_style full generated by VMD/TopoTools v1.8 o
|
|||
|
||||
Masses
|
||||
|
||||
1 1.007940 # 1
|
||||
2 15.999400 # 2
|
||||
1 15.999400 # 1
|
||||
2 1.007940 # 2
|
||||
|
||||
Atoms # full
|
||||
|
||||
|
|
|
@ -2,99 +2,98 @@
|
|||
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||
# This simulates a rotating drum powder characterization experiment.
|
||||
|
||||
variable name string rotating_drum_two_types
|
||||
variable name string rotating_drum_two_types
|
||||
|
||||
atom_style sphere
|
||||
units lj
|
||||
atom_style sphere
|
||||
units lj
|
||||
|
||||
###############################################
|
||||
# Geometry-related parameters
|
||||
###############################################
|
||||
|
||||
variable boxx equal 30
|
||||
variable boxy equal 30
|
||||
variable boxz equal 50
|
||||
variable boxx equal 30
|
||||
variable boxy equal 30
|
||||
variable boxz equal 50
|
||||
|
||||
variable drum_rad equal ${boxx}*0.5
|
||||
variable drum_height equal 20
|
||||
variable drum_rad equal ${boxx}*0.5
|
||||
variable drum_height equal 20
|
||||
|
||||
variable xc equal 0.5*${boxx}
|
||||
variable yc equal 0.5*${boxx}
|
||||
variable zc equal 0.5*${boxz}
|
||||
variable xc equal 0.5*${boxx}
|
||||
variable yc equal 0.5*${boxx}
|
||||
variable zc equal 0.5*${boxz}
|
||||
|
||||
###############################################
|
||||
# Particle-related parameters
|
||||
###############################################
|
||||
variable rlo equal 0.25
|
||||
variable rhi equal 0.5
|
||||
variable dlo equal 2.0*${rlo}
|
||||
variable dhi equal 2.0*${rhi}
|
||||
variable rlo equal 0.25
|
||||
variable rhi equal 0.5
|
||||
variable dlo equal 2.0*${rlo}
|
||||
variable dhi equal 2.0*${rhi}
|
||||
|
||||
variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
|
||||
variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
|
||||
|
||||
variable dens equal 1.0
|
||||
variable dens equal 1.0
|
||||
|
||||
variable skin equal 0.4*${rhi}
|
||||
|
||||
#############
|
||||
processors * * 1
|
||||
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||
create_box 2 boxreg
|
||||
change_box all boundary p p f
|
||||
comm_modify vel yes
|
||||
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||
create_box 2 boxreg
|
||||
change_box all boundary p p f
|
||||
|
||||
variable theta equal 0
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
|
||||
region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
variable theta equal 0
|
||||
|
||||
region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||
region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
|
||||
fix 0 all balance 100 1.0 shift xy 5 1.1
|
||||
fix 1 all nve/sphere
|
||||
fix grav all gravity 10 vector 0 0 -1
|
||||
fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||
|
||||
comm_modify vel yes
|
||||
fix 0 all balance 100 1.0 shift xy 5 1.1
|
||||
fix 1 all nve/sphere
|
||||
fix grav all gravity 10 vector 0 0 -1
|
||||
fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
|
||||
neighbor ${skin} bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
comm_modify vel yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
neighbor ${skin} bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||
|
||||
thermo_style custom step atoms ke v_theta
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
thermo_style custom step atoms ke v_theta
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
|
||||
timestep 0.001
|
||||
timestep 0.001
|
||||
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
#For removal later
|
||||
compute 1 all property/atom radius
|
||||
variable zmax atom z+c_1>0.5*${drum_height}
|
||||
group delgroup dynamic all var zmax every 10000
|
||||
compute 1 all property/atom radius
|
||||
variable zmax atom z+c_1>0.5*${drum_height}
|
||||
group delgroup dynamic all var zmax every 10000
|
||||
|
||||
run 2000
|
||||
run 2000
|
||||
|
||||
#Remove any particles that are above z > 0.5*drum_height
|
||||
delete_atoms group delgroup
|
||||
delete_atoms group delgroup
|
||||
|
||||
#Add top lid
|
||||
region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall
|
||||
region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||
fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall
|
||||
|
||||
# 'Turn' drum by switching the direction of gravity
|
||||
unfix grav
|
||||
unfix ins1
|
||||
unfix ins2
|
||||
fix grav all gravity 10 vector 0 -1 0
|
||||
unfix grav
|
||||
unfix ins1
|
||||
unfix ins2
|
||||
fix grav all gravity 10 vector 0 -1 0
|
||||
|
||||
variable theta equal 2*PI*elapsed/20000.0
|
||||
run 3000
|
||||
variable theta equal 2*PI*elapsed/20000.0
|
||||
run 3000
|
||||
|
|
|
@ -1,67 +1,65 @@
|
|||
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||
|
||||
variable name string pour_two_types
|
||||
variable name string pour_two_types
|
||||
|
||||
atom_style sphere
|
||||
units lj
|
||||
atom_style sphere
|
||||
units lj
|
||||
|
||||
###############################################
|
||||
# Geometry-related parameters
|
||||
###############################################
|
||||
|
||||
variable boxx equal 20
|
||||
variable boxy equal 20
|
||||
variable boxz equal 30
|
||||
variable boxx equal 20
|
||||
variable boxy equal 20
|
||||
variable boxz equal 30
|
||||
|
||||
variable xc1 equal 0.3*${boxx}
|
||||
variable xc2 equal 0.7*${boxx}
|
||||
variable yc equal 0.5*${boxy}
|
||||
variable xc1 equal 0.3*${boxx}
|
||||
variable xc2 equal 0.7*${boxx}
|
||||
variable yc equal 0.5*${boxy}
|
||||
|
||||
###############################################
|
||||
# Particle-related parameters
|
||||
###############################################
|
||||
variable rlo equal 0.25
|
||||
variable rhi equal 0.5
|
||||
variable dlo equal 2.0*${rlo}
|
||||
variable dhi equal 2.0*${rhi}
|
||||
variable rlo equal 0.25
|
||||
variable rhi equal 0.5
|
||||
variable dlo equal 2.0*${rlo}
|
||||
variable dhi equal 2.0*${rhi}
|
||||
|
||||
variable dens equal 1.0
|
||||
variable dens equal 1.0
|
||||
|
||||
variable skin equal 0.3*${rhi}
|
||||
|
||||
#############
|
||||
processors * * 1
|
||||
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||
create_box 2 boxreg
|
||||
change_box all boundary p p f
|
||||
processors * * 1
|
||||
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||
create_box 2 boxreg
|
||||
change_box all boundary p p f
|
||||
|
||||
comm_modify vel yes
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
|
||||
region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz}
|
||||
region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz}
|
||||
comm_modify vel yes
|
||||
|
||||
fix 1 all nve/sphere
|
||||
fix grav all gravity 10.0 vector 0 0 -1
|
||||
fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz}
|
||||
region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz}
|
||||
|
||||
comm_modify vel yes
|
||||
fix 1 all nve/sphere
|
||||
fix grav all gravity 10.0 vector 0 0 -1
|
||||
fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||
|
||||
neighbor ${skin} bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neighbor ${skin} bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||
|
||||
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||
thermo_style custom step atoms ke
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
|
||||
thermo_style custom step cpu atoms ke
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
timestep 0.001
|
||||
|
||||
timestep 0.001
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
run 5000
|
||||
run 5000
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
LAMMPS (29 Mar 2019)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||
LAMMPS (29 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# pour two types of particles (cohesive and non-cohesive) into cylinder
|
||||
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||
|
@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz}
|
|||
region boxreg block 0 30 0 30 0 ${boxz}
|
||||
region boxreg block 0 30 0 30 0 50
|
||||
create_box 2 boxreg
|
||||
Created orthogonal box = (0 0 0) to (30 30 50)
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
change_box all boundary p p f
|
||||
comm_modify vel yes
|
||||
Changing box ...
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
|
||||
variable theta equal 0
|
||||
|
||||
|
@ -104,10 +107,6 @@ neighbor ${skin} bin
|
|||
neighbor 0.2 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
|
||||
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||
|
||||
|
@ -117,8 +116,7 @@ thermo 100
|
|||
|
||||
timestep 0.001
|
||||
|
||||
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
#For removal later
|
||||
compute 1 all property/atom radius
|
||||
|
@ -140,7 +138,7 @@ Neighbor list info ...
|
|||
pair build: half/size/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.02 | 13.02 | 13.02 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.03 | 13.03 | 13.03 Mbytes
|
||||
Step Atoms KinEng v_theta
|
||||
0 0 -0 0
|
||||
100 4000 -0 0
|
||||
|
@ -163,32 +161,32 @@ Step Atoms KinEng v_theta
|
|||
1800 4000 -0 0
|
||||
1900 4000 -0 0
|
||||
2000 4000 -0 0
|
||||
Loop time of 3.54461 on 1 procs for 2000 steps with 4000 atoms
|
||||
Loop time of 10.5178 on 1 procs for 2000 steps with 4000 atoms
|
||||
|
||||
Performance: 48750.057 tau/day, 564.237 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 16429.309 tau/day, 190.154 timesteps/s
|
||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.61949 | 0.61949 | 0.61949 | 0.0 | 17.48
|
||||
Neigh | 1.2492 | 1.2492 | 1.2492 | 0.0 | 35.24
|
||||
Comm | 0.046404 | 0.046404 | 0.046404 | 0.0 | 1.31
|
||||
Output | 0.15901 | 0.15901 | 0.15901 | 0.0 | 4.49
|
||||
Modify | 1.4165 | 1.4165 | 1.4165 | 0.0 | 39.96
|
||||
Other | | 0.05391 | | | 1.52
|
||||
Pair | 1.0701 | 1.0701 | 1.0701 | 0.0 | 10.17
|
||||
Neigh | 4.2135 | 4.2135 | 4.2135 | 0.0 | 40.06
|
||||
Comm | 0.38276 | 0.38276 | 0.38276 | 0.0 | 3.64
|
||||
Output | 0.0013647 | 0.0013647 | 0.0013647 | 0.0 | 0.01
|
||||
Modify | 4.7076 | 4.7076 | 4.7076 | 0.0 | 44.76
|
||||
Other | | 0.1424 | | | 1.35
|
||||
|
||||
Nlocal: 4000 ave 4000 max 4000 min
|
||||
Nlocal: 4000.00 ave 4000 max 4000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 166 ave 166 max 166 min
|
||||
Nghost: 171.000 ave 171 max 171 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 8195 ave 8195 max 8195 min
|
||||
Neighs: 8093.00 ave 8093 max 8093 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 8195
|
||||
Ave neighs/atom = 2.04875
|
||||
Total # of neighbors = 8093
|
||||
Ave neighs/atom = 2.0232500
|
||||
Neighbor list builds = 1004
|
||||
Dangerous builds = 3
|
||||
Dangerous builds = 4
|
||||
|
||||
#Remove any particles that are above z > 0.5*drum_height
|
||||
delete_atoms group delgroup
|
||||
|
@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl
|
|||
|
||||
# 'Turn' drum by switching the direction of gravity
|
||||
unfix grav
|
||||
unfix ins1
|
||||
unfix ins2
|
||||
fix grav all gravity 10 vector 0 -1 0
|
||||
|
||||
variable theta equal 2*PI*elapsed/20000.0
|
||||
run 3000
|
||||
Per MPI rank memory allocation (min/avg/max) = 24.81 | 24.81 | 24.81 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 19.37 | 19.37 | 19.37 Mbytes
|
||||
Step Atoms KinEng v_theta
|
||||
2000 4000 64.333531 0
|
||||
2100 4000 106.69182 0.031415927
|
||||
2200 4000 121.8461 0.062831853
|
||||
2300 4000 88.767952 0.09424778
|
||||
2400 4000 82.850721 0.12566371
|
||||
2500 4000 91.683284 0.15707963
|
||||
2600 4000 31.56344 0.18849556
|
||||
2700 4000 4.5697672 0.21991149
|
||||
2800 4000 3.9879051 0.25132741
|
||||
2900 4000 4.4394235 0.28274334
|
||||
3000 4000 5.1212931 0.31415927
|
||||
3100 4000 5.8608892 0.34557519
|
||||
3200 4000 6.600714 0.37699112
|
||||
3300 4000 7.3497851 0.40840704
|
||||
3400 4000 8.0490988 0.43982297
|
||||
3500 4000 8.6712396 0.4712389
|
||||
3600 4000 9.1328667 0.50265482
|
||||
3700 4000 9.4683561 0.53407075
|
||||
3800 4000 9.5878145 0.56548668
|
||||
3900 4000 9.387745 0.5969026
|
||||
4000 4000 8.9117631 0.62831853
|
||||
4100 4000 8.2344368 0.65973446
|
||||
4200 4000 7.5335088 0.69115038
|
||||
4300 4000 6.8426179 0.72256631
|
||||
4400 4000 6.0567247 0.75398224
|
||||
4500 4000 5.4166132 0.78539816
|
||||
4600 4000 4.6012409 0.81681409
|
||||
4700 4000 3.8314982 0.84823002
|
||||
4800 4000 3.1916415 0.87964594
|
||||
4900 4000 2.7833964 0.91106187
|
||||
5000 4000 2.5051362 0.9424778
|
||||
Loop time of 11.9545 on 1 procs for 3000 steps with 4000 atoms
|
||||
2000 4000 65.647582 0
|
||||
2100 4000 105.60001 0.031415927
|
||||
2200 4000 112.27573 0.062831853
|
||||
2300 4000 92.758671 0.09424778
|
||||
2400 4000 88.925835 0.12566371
|
||||
2500 4000 81.369163 0.15707963
|
||||
2600 4000 32.046943 0.18849556
|
||||
2700 4000 4.1926368 0.21991149
|
||||
2800 4000 3.9933453 0.25132741
|
||||
2900 4000 4.5062193 0.28274334
|
||||
3000 4000 5.3409521 0.31415927
|
||||
3100 4000 6.0165991 0.34557519
|
||||
3200 4000 6.606767 0.37699112
|
||||
3300 4000 7.3997751 0.40840704
|
||||
3400 4000 8.1098807 0.43982297
|
||||
3500 4000 8.6552424 0.4712389
|
||||
3600 4000 9.8445204 0.50265482
|
||||
3700 4000 10.098753 0.53407075
|
||||
3800 4000 10.039489 0.56548668
|
||||
3900 4000 9.6376278 0.5969026
|
||||
4000 4000 9.2598836 0.62831853
|
||||
4100 4000 8.7116037 0.65973446
|
||||
4200 4000 8.1274117 0.69115038
|
||||
4300 4000 7.1487627 0.72256631
|
||||
4400 4000 6.2253778 0.75398224
|
||||
4500 4000 5.3061398 0.78539816
|
||||
4600 4000 4.4319316 0.81681409
|
||||
4700 4000 4.205607 0.84823002
|
||||
4800 4000 3.2112987 0.87964594
|
||||
4900 4000 2.6449777 0.91106187
|
||||
5000 4000 2.3475497 0.9424778
|
||||
Loop time of 32.4926 on 1 procs for 3000 steps with 4000 atoms
|
||||
|
||||
Performance: 21682.142 tau/day, 250.951 timesteps/s
|
||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
Performance: 7977.205 tau/day, 92.329 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.8291 | 4.8291 | 4.8291 | 0.0 | 40.40
|
||||
Neigh | 2.7489 | 2.7489 | 2.7489 | 0.0 | 22.99
|
||||
Comm | 0.071249 | 0.071249 | 0.071249 | 0.0 | 0.60
|
||||
Output | 0.20547 | 0.20547 | 0.20547 | 0.0 | 1.72
|
||||
Modify | 4.0179 | 4.0179 | 4.0179 | 0.0 | 33.61
|
||||
Other | | 0.0819 | | | 0.69
|
||||
Pair | 8.0124 | 8.0124 | 8.0124 | 0.0 | 24.66
|
||||
Neigh | 10.993 | 10.993 | 10.993 | 0.0 | 33.83
|
||||
Comm | 0.86697 | 0.86697 | 0.86697 | 0.0 | 2.67
|
||||
Output | 0.0021827 | 0.0021827 | 0.0021827 | 0.0 | 0.01
|
||||
Modify | 12.367 | 12.367 | 12.367 | 0.0 | 38.06
|
||||
Other | | 0.2515 | | | 0.77
|
||||
|
||||
Nlocal: 4000 ave 4000 max 4000 min
|
||||
Nlocal: 4000.00 ave 4000 max 4000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 322 ave 322 max 322 min
|
||||
Nghost: 318.000 ave 318 max 318 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 14849 ave 14849 max 14849 min
|
||||
Neighs: 14807.0 ave 14807 max 14807 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 14849
|
||||
Ave neighs/atom = 3.71225
|
||||
Neighbor list builds = 1290
|
||||
Dangerous builds = 672
|
||||
Total wall time: 0:00:15
|
||||
Total # of neighbors = 14807
|
||||
Ave neighs/atom = 3.7017500
|
||||
Neighbor list builds = 2189
|
||||
Dangerous builds = 1536
|
||||
Total wall time: 0:00:43
|
|
@ -1,5 +1,4 @@
|
|||
LAMMPS (29 Mar 2019)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||
LAMMPS (29 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# pour two types of particles (cohesive and non-cohesive) into cylinder
|
||||
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||
|
@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz}
|
|||
region boxreg block 0 30 0 30 0 ${boxz}
|
||||
region boxreg block 0 30 0 30 0 50
|
||||
create_box 2 boxreg
|
||||
Created orthogonal box = (0 0 0) to (30 30 50)
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
change_box all boundary p p f
|
||||
comm_modify vel yes
|
||||
Changing box ...
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
|
||||
variable theta equal 0
|
||||
|
||||
|
@ -104,10 +107,6 @@ neighbor ${skin} bin
|
|||
neighbor 0.2 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||
|
||||
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||
|
||||
|
@ -117,8 +116,7 @@ thermo 100
|
|||
|
||||
timestep 0.001
|
||||
|
||||
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
#For removal later
|
||||
compute 1 all property/atom radius
|
||||
|
@ -163,32 +161,32 @@ Step Atoms KinEng v_theta
|
|||
1800 4000 -0 0
|
||||
1900 4000 -0 0
|
||||
2000 4000 -0 0
|
||||
Loop time of 2.0709 on 4 procs for 2000 steps with 4000 atoms
|
||||
Loop time of 3.86825 on 4 procs for 2000 steps with 4000 atoms
|
||||
|
||||
Performance: 83442.024 tau/day, 965.764 timesteps/s
|
||||
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 44671.398 tau/day, 517.030 timesteps/s
|
||||
96.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.24679 | 0.26336 | 0.28853 | 3.0 | 12.72
|
||||
Neigh | 0.52279 | 0.5332 | 0.53858 | 0.9 | 25.75
|
||||
Comm | 0.17418 | 0.20253 | 0.23266 | 4.7 | 9.78
|
||||
Output | 0.092897 | 0.093531 | 0.09515 | 0.3 | 4.52
|
||||
Modify | 0.88151 | 0.89571 | 0.90582 | 0.9 | 43.25
|
||||
Other | | 0.08257 | | | 3.99
|
||||
Pair | 0.26114 | 0.27918 | 0.28728 | 2.0 | 7.22
|
||||
Neigh | 1.2044 | 1.2414 | 1.3105 | 3.7 | 32.09
|
||||
Comm | 0.38592 | 0.47065 | 0.51052 | 7.4 | 12.17
|
||||
Output | 0.0007236 | 0.0013456 | 0.0024846 | 1.8 | 0.03
|
||||
Modify | 1.6217 | 1.6723 | 1.7801 | 5.0 | 43.23
|
||||
Other | | 0.2034 | | | 5.26
|
||||
|
||||
Nlocal: 1000 ave 1001 max 999 min
|
||||
Nlocal: 1000.00 ave 1012 max 988 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Nghost: 267.75 ave 276 max 262 min
|
||||
Histogram: 1 0 1 0 1 0 0 0 0 1
|
||||
Neighs: 2031.5 ave 2091 max 1958 min
|
||||
Histogram: 1 0 0 0 1 0 0 1 0 1
|
||||
Nghost: 269.250 ave 278 max 256 min
|
||||
Histogram: 1 0 0 0 0 0 1 1 0 1
|
||||
Neighs: 2060.50 ave 2156 max 1921 min
|
||||
Histogram: 1 0 0 1 0 0 0 0 0 2
|
||||
|
||||
Total # of neighbors = 8126
|
||||
Ave neighs/atom = 2.0315
|
||||
Total # of neighbors = 8242
|
||||
Ave neighs/atom = 2.0605000
|
||||
Neighbor list builds = 1004
|
||||
Dangerous builds = 3
|
||||
Dangerous builds = 4
|
||||
|
||||
#Remove any particles that are above z > 0.5*drum_height
|
||||
delete_atoms group delgroup
|
||||
|
@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl
|
|||
|
||||
# 'Turn' drum by switching the direction of gravity
|
||||
unfix grav
|
||||
unfix ins1
|
||||
unfix ins2
|
||||
fix grav all gravity 10 vector 0 -1 0
|
||||
|
||||
variable theta equal 2*PI*elapsed/20000.0
|
||||
run 3000
|
||||
Per MPI rank memory allocation (min/avg/max) = 21.6 | 22.6 | 23.82 Mbytes
|
||||
Per MPI rank memory allocation (min/avg/max) = 18.55 | 18.55 | 18.55 Mbytes
|
||||
Step Atoms KinEng v_theta
|
||||
2000 4000 64.255821 0
|
||||
2100 4000 106.47082 0.031415927
|
||||
2200 4000 121.52634 0.062831853
|
||||
2300 4000 87.748818 0.09424778
|
||||
2400 4000 82.712784 0.12566371
|
||||
2500 4000 90.618713 0.15707963
|
||||
2600 4000 30.096031 0.18849556
|
||||
2700 4000 4.0838611 0.21991149
|
||||
2800 4000 3.7485959 0.25132741
|
||||
2900 4000 4.2159774 0.28274334
|
||||
3000 4000 4.8730048 0.31415927
|
||||
3100 4000 5.6109465 0.34557519
|
||||
3200 4000 6.4290528 0.37699112
|
||||
3300 4000 7.2699677 0.40840704
|
||||
3400 4000 8.0895944 0.43982297
|
||||
3500 4000 8.7222781 0.4712389
|
||||
3600 4000 9.133205 0.50265482
|
||||
3700 4000 9.3404584 0.53407075
|
||||
3800 4000 9.3359844 0.56548668
|
||||
3900 4000 9.0916854 0.5969026
|
||||
4000 4000 8.5596424 0.62831853
|
||||
4100 4000 7.9734883 0.65973446
|
||||
4200 4000 7.2154383 0.69115038
|
||||
4300 4000 6.7039232 0.72256631
|
||||
4400 4000 6.1542738 0.75398224
|
||||
4500 4000 5.4049454 0.78539816
|
||||
4600 4000 4.4603192 0.81681409
|
||||
4700 4000 3.6197985 0.84823002
|
||||
4800 4000 2.9895571 0.87964594
|
||||
4900 4000 2.5314553 0.91106187
|
||||
5000 4000 2.2645533 0.9424778
|
||||
Loop time of 6.64209 on 4 procs for 3000 steps with 4000 atoms
|
||||
2000 4000 65.819213 0
|
||||
2100 4000 105.02389 0.031415927
|
||||
2200 4000 112.02469 0.062831853
|
||||
2300 4000 92.271262 0.09424778
|
||||
2400 4000 89.369506 0.12566371
|
||||
2500 4000 80.910925 0.15707963
|
||||
2600 4000 31.620722 0.18849556
|
||||
2700 4000 4.3019937 0.21991149
|
||||
2800 4000 3.9913967 0.25132741
|
||||
2900 4000 4.5203726 0.28274334
|
||||
3000 4000 5.484886 0.31415927
|
||||
3100 4000 6.1085958 0.34557519
|
||||
3200 4000 6.7085635 0.37699112
|
||||
3300 4000 7.4787777 0.40840704
|
||||
3400 4000 8.2116413 0.43982297
|
||||
3500 4000 8.7979302 0.4712389
|
||||
3600 4000 9.871649 0.50265482
|
||||
3700 4000 10.012426 0.53407075
|
||||
3800 4000 9.9067754 0.56548668
|
||||
3900 4000 9.725458 0.5969026
|
||||
4000 4000 9.3350056 0.62831853
|
||||
4100 4000 8.8337295 0.65973446
|
||||
4200 4000 8.2712493 0.69115038
|
||||
4300 4000 6.9609934 0.72256631
|
||||
4400 4000 6.0120294 0.75398224
|
||||
4500 4000 5.0490036 0.78539816
|
||||
4600 4000 4.2796544 0.81681409
|
||||
4700 4000 4.1736483 0.84823002
|
||||
4800 4000 3.0860106 0.87964594
|
||||
4900 4000 2.6670909 0.91106187
|
||||
5000 4000 2.2901814 0.9424778
|
||||
Loop time of 10.7627 on 4 procs for 3000 steps with 4000 atoms
|
||||
|
||||
Performance: 39023.861 tau/day, 451.665 timesteps/s
|
||||
96.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 24083.252 tau/day, 278.741 timesteps/s
|
||||
97.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.8376 | 2.126 | 2.3131 | 12.6 | 32.01
|
||||
Neigh | 0.97762 | 1.0518 | 1.1337 | 5.4 | 15.84
|
||||
Comm | 0.53699 | 0.84265 | 1.2325 | 27.6 | 12.69
|
||||
Output | 0.13922 | 0.14159 | 0.14388 | 0.4 | 2.13
|
||||
Modify | 1.8815 | 2.1026 | 2.3368 | 11.2 | 31.66
|
||||
Other | | 0.3774 | | | 5.68
|
||||
Pair | 1.6731 | 2.0701 | 2.3327 | 18.9 | 19.23
|
||||
Neigh | 2.7389 | 3.1706 | 3.5146 | 15.7 | 29.46
|
||||
Comm | 0.93507 | 1.5441 | 2.1182 | 39.1 | 14.35
|
||||
Output | 0.0021682 | 0.0044412 | 0.006026 | 2.2 | 0.04
|
||||
Modify | 3.0031 | 3.4223 | 3.9262 | 18.3 | 31.80
|
||||
Other | | 0.5511 | | | 5.12
|
||||
|
||||
Nlocal: 1000 ave 1256 max 744 min
|
||||
Nlocal: 1000.00 ave 1277 max 723 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Nghost: 579.5 ave 789 max 498 min
|
||||
Histogram: 2 1 0 0 0 0 0 0 0 1
|
||||
Neighs: 3696.25 ave 4853 max 2590 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||
Nghost: 569.750 ave 809 max 454 min
|
||||
Histogram: 1 2 0 0 0 0 0 0 0 1
|
||||
Neighs: 3690.50 ave 4937 max 2426 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 0 2
|
||||
|
||||
Total # of neighbors = 14785
|
||||
Ave neighs/atom = 3.69625
|
||||
Neighbor list builds = 1230
|
||||
Dangerous builds = 676
|
||||
Total wall time: 0:00:08
|
||||
Total # of neighbors = 14762
|
||||
Ave neighs/atom = 3.6905000
|
||||
Neighbor list builds = 2187
|
||||
Dangerous builds = 1610
|
||||
Total wall time: 0:00:14
|
|
@ -1,5 +1,4 @@
|
|||
LAMMPS (29 Mar 2019)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||
LAMMPS (29 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||
|
||||
|
@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz}
|
|||
region boxreg block 0 20 0 20 0 ${boxz}
|
||||
region boxreg block 0 20 0 20 0 30
|
||||
create_box 2 boxreg
|
||||
Created orthogonal box = (0 0 0) to (20 20 30)
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
change_box all boundary p p f
|
||||
Changing box ...
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
|
||||
comm_modify vel yes
|
||||
|
||||
|
@ -75,19 +79,13 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens}
|
|||
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1
|
||||
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||
|
||||
comm_modify vel yes
|
||||
|
||||
neighbor ${skin} bin
|
||||
neighbor 0.15 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
|
||||
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||
|
||||
thermo_style custom step cpu atoms ke
|
||||
thermo_style custom step atoms ke
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
|
||||
|
@ -109,26 +107,82 @@ Neighbor list info ...
|
|||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 12.22 | 12.22 | 12.22 Mbytes
|
||||
Step CPU Atoms KinEng
|
||||
0 0 0 -0
|
||||
100 3.8153191 855 -0
|
||||
200 4.195287 855 -0
|
||||
300 4.5890362 855 -0
|
||||
400 10.636087 1500 -0
|
||||
500 11.306909 1500 -0
|
||||
600 11.968198 1500 -0
|
||||
700 22.631892 2288 -0
|
||||
800 23.711387 2288 -0
|
||||
900 24.754344 2288 -0
|
||||
1000 25.811778 2288 -0
|
||||
1100 35.368869 2845 -0
|
||||
1200 37.149843 2845 -0
|
||||
1300 39.026458 2845 -0
|
||||
1400 41.757583 3000 -0
|
||||
1500 45.155503 3000 -0
|
||||
1600 48.570241 3000 -0
|
||||
1700 52.839322 3000 -0
|
||||
1800 59.772697 3000 -0
|
||||
1900 69.493305 3000 -0
|
||||
2000 114.61886 3000 -0
|
||||
2100 152.89232 3000 -0
|
||||
Step Atoms KinEng
|
||||
0 0 -0
|
||||
100 926 -0
|
||||
200 926 -0
|
||||
300 926 -0
|
||||
400 1498 -0
|
||||
500 1498 -0
|
||||
600 1498 -0
|
||||
700 2275 -0
|
||||
800 2275 -0
|
||||
900 2275 -0
|
||||
1000 2275 -0
|
||||
1100 2954 -0
|
||||
1200 2954 -0
|
||||
1300 2954 -0
|
||||
1400 3000 -0
|
||||
1500 3000 -0
|
||||
1600 3000 -0
|
||||
1700 3000 -0
|
||||
1800 3000 -0
|
||||
1900 3000 -0
|
||||
2000 3000 -0
|
||||
2100 3000 -0
|
||||
2200 3000 -0
|
||||
2300 3000 -0
|
||||
2400 3000 -0
|
||||
2500 3000 -0
|
||||
2600 3000 -0
|
||||
2700 3000 -0
|
||||
2800 3000 -0
|
||||
2900 3000 -0
|
||||
3000 3000 -0
|
||||
3100 3000 -0
|
||||
3200 3000 -0
|
||||
3300 3000 -0
|
||||
3400 3000 -0
|
||||
3500 3000 -0
|
||||
3600 3000 -0
|
||||
3700 3000 -0
|
||||
3800 3000 -0
|
||||
3900 3000 -0
|
||||
4000 3000 -0
|
||||
4100 3000 -0
|
||||
4200 3000 -0
|
||||
4300 3000 -0
|
||||
4400 3000 -0
|
||||
4500 3000 -0
|
||||
4600 3000 -0
|
||||
4700 3000 -0
|
||||
4800 3000 -0
|
||||
4900 3000 -0
|
||||
5000 3000 -0
|
||||
Loop time of 24.3889 on 1 procs for 5000 steps with 3000 atoms
|
||||
|
||||
Performance: 17713.003 tau/day, 205.012 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 14.362 | 14.362 | 14.362 | 0.0 | 58.89
|
||||
Neigh | 3.3483 | 3.3483 | 3.3483 | 0.0 | 13.73
|
||||
Comm | 0.42893 | 0.42893 | 0.42893 | 0.0 | 1.76
|
||||
Output | 0.0025065 | 0.0025065 | 0.0025065 | 0.0 | 0.01
|
||||
Modify | 6.059 | 6.059 | 6.059 | 0.0 | 24.84
|
||||
Other | | 0.1876 | | | 0.77
|
||||
|
||||
Nlocal: 3000.00 ave 3000 max 3000 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 462.000 ave 462 max 462 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 17694.0 ave 17694 max 17694 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 17694
|
||||
Ave neighs/atom = 5.8980000
|
||||
Neighbor list builds = 1133
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:24
|
|
@ -1,5 +1,4 @@
|
|||
LAMMPS (29 Mar 2019)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||
LAMMPS (29 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||
|
||||
|
@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz}
|
|||
region boxreg block 0 20 0 20 0 ${boxz}
|
||||
region boxreg block 0 20 0 20 0 30
|
||||
create_box 2 boxreg
|
||||
Created orthogonal box = (0 0 0) to (20 20 30)
|
||||
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
change_box all boundary p p f
|
||||
Changing box ...
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
|
||||
comm_modify vel yes
|
||||
|
||||
|
@ -75,26 +79,19 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens}
|
|||
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1
|
||||
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||
|
||||
comm_modify vel yes
|
||||
|
||||
neighbor ${skin} bin
|
||||
neighbor 0.15 bin
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||
|
||||
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||
|
||||
thermo_style custom step cpu atoms ke
|
||||
thermo_style custom step atoms ke
|
||||
thermo_modify lost warn
|
||||
thermo 100
|
||||
|
||||
timestep 0.001
|
||||
|
||||
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
dump 1 all custom 100 pour_two_types.dump id type radius mass x y z
|
||||
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||
|
||||
run 5000
|
||||
Neighbor list info ...
|
||||
|
@ -110,82 +107,82 @@ Neighbor list info ...
|
|||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 11.98 | 11.98 | 11.98 Mbytes
|
||||
Step CPU Atoms KinEng
|
||||
0 0 0 -0
|
||||
100 0.11584234 855 -0
|
||||
200 0.12743592 855 -0
|
||||
300 0.13925815 855 -0
|
||||
400 0.35203671 1500 -0
|
||||
500 0.37055922 1500 -0
|
||||
600 0.38671875 1500 -0
|
||||
700 0.71736908 2288 -0
|
||||
800 0.74506783 2288 -0
|
||||
900 0.77112222 2288 -0
|
||||
1000 0.79632139 2288 -0
|
||||
1100 1.0384252 2845 -0
|
||||
1200 1.08093 2845 -0
|
||||
1300 1.1224561 2845 -0
|
||||
1400 1.1811485 3000 -0
|
||||
1500 1.2414908 3000 -0
|
||||
1600 1.3105879 3000 -0
|
||||
1700 1.390928 3000 -0
|
||||
1800 1.4869275 3000 -0
|
||||
1900 1.5958266 3000 -0
|
||||
2000 1.7172487 3000 -0
|
||||
2100 1.851155 3000 -0
|
||||
2200 1.9957182 3000 -0
|
||||
2300 2.1593764 3000 -0
|
||||
2400 2.3433132 3000 -0
|
||||
2500 2.532742 3000 -0
|
||||
2600 2.7376895 3000 -0
|
||||
2700 2.9463468 3000 -0
|
||||
2800 3.1645725 3000 -0
|
||||
2900 3.3879526 3000 -0
|
||||
3000 3.6152103 3000 -0
|
||||
3100 3.8467371 3000 -0
|
||||
3200 4.0787683 3000 -0
|
||||
3300 4.3097105 3000 -0
|
||||
3400 4.5423617 3000 -0
|
||||
3500 4.7773693 3000 -0
|
||||
3600 5.0127218 3000 -0
|
||||
3700 5.2519271 3000 -0
|
||||
3800 5.4951298 3000 -0
|
||||
3900 5.7210469 3000 -0
|
||||
4000 5.9432652 3000 -0
|
||||
4100 6.1687591 3000 -0
|
||||
4200 6.3942792 3000 -0
|
||||
4300 6.6331475 3000 -0
|
||||
4400 6.8632154 3000 -0
|
||||
4500 7.0979366 3000 -0
|
||||
4600 7.3305347 3000 -0
|
||||
4700 7.5670528 3000 -0
|
||||
4800 7.8086057 3000 -0
|
||||
4900 8.0407174 3000 -0
|
||||
5000 8.2765219 3000 -0
|
||||
Loop time of 8.27669 on 4 procs for 5000 steps with 3000 atoms
|
||||
Step Atoms KinEng
|
||||
0 0 -0
|
||||
100 926 -0
|
||||
200 926 -0
|
||||
300 926 -0
|
||||
400 1498 -0
|
||||
500 1498 -0
|
||||
600 1498 -0
|
||||
700 2275 -0
|
||||
800 2275 -0
|
||||
900 2275 -0
|
||||
1000 2275 -0
|
||||
1100 2954 -0
|
||||
1200 2954 -0
|
||||
1300 2954 -0
|
||||
1400 3000 -0
|
||||
1500 3000 -0
|
||||
1600 3000 -0
|
||||
1700 3000 -0
|
||||
1800 3000 -0
|
||||
1900 3000 -0
|
||||
2000 3000 -0
|
||||
2100 3000 -0
|
||||
2200 3000 -0
|
||||
2300 3000 -0
|
||||
2400 3000 -0
|
||||
2500 3000 -0
|
||||
2600 3000 -0
|
||||
2700 3000 -0
|
||||
2800 3000 -0
|
||||
2900 3000 -0
|
||||
3000 3000 -0
|
||||
3100 3000 -0
|
||||
3200 3000 -0
|
||||
3300 3000 -0
|
||||
3400 3000 -0
|
||||
3500 3000 -0
|
||||
3600 3000 -0
|
||||
3700 3000 -0
|
||||
3800 3000 -0
|
||||
3900 3000 -0
|
||||
4000 3000 -0
|
||||
4100 3000 -0
|
||||
4200 3000 -0
|
||||
4300 3000 -0
|
||||
4400 3000 -0
|
||||
4500 3000 -0
|
||||
4600 3000 -0
|
||||
4700 3000 -0
|
||||
4800 3000 -0
|
||||
4900 3000 -0
|
||||
5000 3000 -0
|
||||
Loop time of 12.1982 on 4 procs for 5000 steps with 3000 atoms
|
||||
|
||||
Performance: 52194.788 tau/day, 604.106 timesteps/s
|
||||
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
Performance: 35414.923 tau/day, 409.895 timesteps/s
|
||||
97.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.6106 | 3.4073 | 5.4191 | 95.7 | 41.17
|
||||
Neigh | 0.51456 | 0.64572 | 0.81542 | 16.6 | 7.80
|
||||
Comm | 0.2808 | 2.5222 | 4.4998 | 121.9 | 30.47
|
||||
Output | 0.15695 | 0.15919 | 0.16502 | 0.8 | 1.92
|
||||
Modify | 1.3517 | 1.4192 | 1.4904 | 4.9 | 17.15
|
||||
Other | | 0.123 | | | 1.49
|
||||
Pair | 1.7141 | 3.8131 | 6.2143 | 107.3 | 31.26
|
||||
Neigh | 0.77648 | 0.96585 | 1.1892 | 18.3 | 7.92
|
||||
Comm | 0.7427 | 3.5566 | 5.9731 | 128.4 | 29.16
|
||||
Output | 0.0067544 | 0.0086352 | 0.011408 | 1.8 | 0.07
|
||||
Modify | 3.3476 | 3.5826 | 3.8235 | 11.5 | 29.37
|
||||
Other | | 0.2715 | | | 2.23
|
||||
|
||||
Nlocal: 750 ave 1036 max 482 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||
Nghost: 429.75 ave 475 max 386 min
|
||||
Nlocal: 750.000 ave 1033 max 463 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Nghost: 435.000 ave 492 max 378 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Neighs: 4434.50 ave 7028 max 1967 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Neighs: 4051.75 ave 6274 max 2057 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 16207
|
||||
Ave neighs/atom = 5.40233
|
||||
Neighbor list builds = 1165
|
||||
Total # of neighbors = 17738
|
||||
Ave neighs/atom = 5.9126667
|
||||
Neighbor list builds = 1139
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:08
|
||||
Total wall time: 0:00:12
|
|
@ -0,0 +1,63 @@
|
|||
# CO2 molecule file. TraPPE model.
|
||||
|
||||
3 atoms
|
||||
2 bonds
|
||||
1 angles
|
||||
|
||||
Coords
|
||||
|
||||
1 0.0 0.0 0.0
|
||||
2 -1.16 0.0 0.0
|
||||
3 1.16 0.0 0.0
|
||||
|
||||
Types
|
||||
|
||||
1 1
|
||||
2 2
|
||||
3 2
|
||||
|
||||
Charges
|
||||
|
||||
1 0.7
|
||||
2 -0.35
|
||||
3 -0.35
|
||||
|
||||
Bonds
|
||||
|
||||
1 1 1 2
|
||||
2 1 1 3
|
||||
|
||||
Angles
|
||||
|
||||
1 1 2 1 3
|
||||
|
||||
Special Bond Counts
|
||||
|
||||
1 2 0 0
|
||||
2 1 1 0
|
||||
3 1 1 0
|
||||
|
||||
Special Bonds
|
||||
|
||||
1 2 3
|
||||
2 1 3
|
||||
3 1 2
|
||||
|
||||
Shake Flags
|
||||
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
|
||||
Shake Atoms
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
Shake Bond Types
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
LAMMPS molecule file. Cyclohexane(UA)
|
||||
6 atoms
|
||||
6 bonds
|
||||
6 angles
|
||||
6 dihedrals
|
||||
|
||||
Coords
|
||||
|
||||
1 0.000000 0.000000 0.000000
|
||||
2 0.000000 0.000000 1.536000
|
||||
3 1.431000 0.000000 2.094000
|
||||
4 2.247000 1.176000 1.536000
|
||||
5 2.247000 1.176000 0.000000
|
||||
6 0.815000 1.176000 -0.557000
|
||||
|
||||
Types
|
||||
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
6 1
|
||||
|
||||
Bonds
|
||||
|
||||
1 1 1 6
|
||||
2 1 1 2
|
||||
3 1 2 3
|
||||
4 1 3 4
|
||||
5 1 4 5
|
||||
6 1 5 6
|
||||
|
||||
Angles
|
||||
|
||||
1 1 2 1 6
|
||||
2 1 1 2 3
|
||||
3 1 2 3 4
|
||||
4 1 3 4 5
|
||||
5 1 4 5 6
|
||||
6 1 1 6 5
|
||||
|
||||
Dihedrals
|
||||
|
||||
1 1 2 1 6 5
|
||||
2 1 6 1 2 3
|
||||
3 1 1 2 3 4
|
||||
4 1 2 3 4 5
|
||||
5 1 3 4 5 6
|
||||
6 1 4 5 6 1
|
||||
|
||||
Special Bond Counts
|
||||
|
||||
1 2 2 1
|
||||
2 2 2 1
|
||||
3 2 2 1
|
||||
4 2 2 1
|
||||
5 2 2 1
|
||||
6 2 2 1
|
||||
|
||||
Special Bonds
|
||||
|
||||
1 2 6 3 5 4
|
||||
2 3 1 4 6 5
|
||||
3 4 2 5 1 6
|
||||
4 5 3 6 2 1
|
||||
5 6 4 1 3 2
|
||||
6 1 5 2 4 3
|
|
@ -0,0 +1,428 @@
|
|||
LAMMPS data file via write_data, version 22 Oct 2020, timestep = 0
|
||||
|
||||
384 atoms
|
||||
4 atom types
|
||||
2 bond types
|
||||
2 angle types
|
||||
|
||||
-10.0 10.0 xlo xhi
|
||||
-10.0 10.0 ylo yhi
|
||||
-10.0 10.0 zlo zhi
|
||||
|
||||
Masses
|
||||
|
||||
1 15.9994
|
||||
2 1
|
||||
3 12.0107
|
||||
4 15.9994
|
||||
|
||||
PairIJ Coeffs # lj/cut/coul/cut
|
||||
|
||||
1 1 0.15535 3.166 14
|
||||
1 2 0 0 14
|
||||
1 3 0.0912928 2.983 14
|
||||
1 4 0.156159 3.108 14
|
||||
2 2 0 0 14
|
||||
2 3 0 1.4 14
|
||||
2 4 0 1.525 14
|
||||
3 3 0.053649 2.8 14
|
||||
3 4 0.0917684 2.925 14
|
||||
4 4 0.156973 3.05 14
|
||||
|
||||
Bond Coeffs # harmonic
|
||||
|
||||
1 1000 1
|
||||
2 1000 1.16
|
||||
|
||||
Angle Coeffs # harmonic
|
||||
|
||||
1 100 109.47
|
||||
2 100 180
|
||||
|
||||
Atoms # hybrid
|
||||
|
||||
1 1 -9.915603425183674 9.642074614047225 9.886373806057632 1 1 1 -0.8472 0 -1 -1
|
||||
2 2 -9.955077256991814 9.952071397945474 -9.163725932085827 1 1 2 0.4236 0 -1 0
|
||||
3 2 9.870680682175488 -9.594146011992699 9.277352126028195 1 1 3 0.4236 -1 0 -1
|
||||
4 1 -5.377413308169694 -9.975845367284359 9.928445655374531 2 1 1 -0.8472 0 0 -1
|
||||
5 2 -4.868089392205772 9.173804835517629 -9.939414010387674 2 1 2 0.4236 0 -1 0
|
||||
6 2 -4.754497299624534 -9.19795946823327 -9.989031644986857 2 1 3 0.4236 0 0 0
|
||||
7 1 0.2862645369165933 -9.834750023705109 9.802796207089045 3 1 1 -0.8472 0 0 -1
|
||||
8 2 -0.20506315473823142 -9.416615546409432 -9.433183272761259 3 1 2 0.4236 0 0 0
|
||||
9 2 -0.08120138217836187 9.25136557011454 9.630387065672213 3 1 3 0.4236 0 -1 -1
|
||||
10 1 4.954244542709665 9.733846444128554 9.725750116636055 4 1 1 -0.8472 0 -1 -1
|
||||
11 2 5.314186858355006 9.562011307112279 -9.357254293410282 4 1 2 0.4236 0 -1 0
|
||||
12 2 4.731568598935329 -9.295857751240833 9.631504176774227 4 1 3 0.4236 0 0 -1
|
||||
13 1 -9.885042196263848 -5.366646729833796 -9.977658232783796 5 1 1 -0.8472 0 0 0
|
||||
14 2 -9.499988310087788 -4.607821917003056 -9.452410572081622 5 1 2 0.4236 0 0 0
|
||||
15 2 9.385030506351637 -5.025531353163147 9.430068804865417 5 1 3 0.4236 -1 0 -1
|
||||
16 1 -5.3381930384891545 -4.817187821023332 -9.98130637447481 6 1 1 -0.8472 0 0 0
|
||||
17 2 -4.814226078866727 -5.143876565241305 -9.194731656774504 6 1 2 0.4236 0 0 0
|
||||
18 2 -4.8475808826441185 -5.038935613735363 9.176038031249314 6 1 3 0.4236 0 0 -1
|
||||
19 1 -0.17437585816420464 -5.00267209015634 -9.656881659301497 7 1 1 -0.8472 0 0 0
|
||||
20 2 0.5142734508723548 -5.661488493390246 -9.959684850984493 7 1 2 0.4236 0 0 0
|
||||
21 2 -0.3398975927081498 -4.335839416453415 9.61656651028599 7 1 3 0.4236 0 0 -1
|
||||
22 1 5.027007160081784 -5.376778433628809 -9.926156239555816 8 1 1 -0.8472 0 0 0
|
||||
23 2 5.040872603784614 -4.651165711374701 -9.238216835484566 8 1 2 0.4236 0 0 0
|
||||
24 2 4.932120236133603 -4.97205585499649 9.164373075040384 8 1 3 0.4236 0 0 -1
|
||||
25 1 -9.774983021942727 -0.11627625671956153 9.710187185567547 9 1 1 -0.8472 0 0 -1
|
||||
26 2 -9.547719336441409 -0.18624762678535645 -9.31851372479864 9 1 2 0.4236 0 0 0
|
||||
27 2 9.322702358384136 0.30252388350491777 9.608326539231093 9 1 3 0.4236 -1 0 -1
|
||||
28 1 -4.839301125374413 -0.3224292196811998 9.864502598955395 10 1 1 -0.8472 0 0 -1
|
||||
29 2 -4.437095111731628 0.2761002399087885 -9.442706303026958 10 1 2 0.4236 0 0 0
|
||||
30 2 -5.723603762893959 0.04632897977241136 9.578203704071562 10 1 3 0.4236 0 0 -1
|
||||
31 1 0.3575211513985558 0.13924369294039318 -9.96943701619651 11 1 1 -0.8472 0 0 0
|
||||
32 2 -0.15738037709944985 -0.29662855771206287 -9.231291709389254 11 1 2 0.4236 0 0 0
|
||||
33 2 -0.20014077429910587 0.1573848647716694 9.200728725585764 11 1 3 0.4236 0 0 -1
|
||||
34 1 4.945607877161568 0.17822976107332558 -9.663221252242849 12 1 1 -0.8472 0 0 0
|
||||
35 2 5.686261102802035 -0.4628832126235319 -9.864153208899683 12 1 2 0.4236 0 0 0
|
||||
36 2 4.368131020036397 0.284653451550206 9.527374461142534 12 1 3 0.4236 0 0 -1
|
||||
37 1 9.834131265901467 5.002816508870191 -9.652690475186276 13 1 1 -0.8472 -1 0 0
|
||||
38 2 -9.523525531039581 4.309893511844079 -9.980134556788492 13 1 2 0.4236 0 0 0
|
||||
39 2 9.689394265138116 5.68728997928573 9.63282503197477 13 1 3 0.4236 -1 0 -1
|
||||
40 1 -4.896522832471423 4.844697230053857 -9.6633729049121 14 1 1 -0.8472 0 0 0
|
||||
41 2 -5.719481843054487 5.391203391339132 -9.818408963548082 14 1 2 0.4236 0 0 0
|
||||
42 2 -4.383995324474091 4.764099378607011 9.481781868460182 14 1 3 0.4236 0 0 -1
|
||||
43 1 0.08644475731548724 4.625177647828908 -9.986591646424854 15 1 1 -0.8472 0 0 0
|
||||
44 2 0.483199632298402 5.33056133050579 -9.399236450405876 15 1 2 0.4236 0 0 0
|
||||
45 2 -0.5696443896138887 5.044261021665302 9.38582809683073 15 1 3 0.4236 0 0 -1
|
||||
46 1 5.279904505775219 4.8738580855036995 9.767866502301072 16 1 1 -0.8472 0 0 -1
|
||||
47 2 5.051646557564443 5.834165665231483 9.928098703484146 16 1 2 0.4236 0 0 -1
|
||||
48 2 4.6684489366603374 4.291976249264819 -9.695965205785217 16 1 3 0.4236 0 0 0
|
||||
49 1 9.908445669769623 9.636632008310487 -4.912103567014368 17 1 1 -0.8472 -1 -1 0
|
||||
50 2 -9.305514433129819 -9.862297561377305 -4.550114063115585 17 1 2 0.4236 0 0 0
|
||||
51 2 9.397068763360195 -9.774334446933182 -5.537782369870047 17 1 3 0.4236 -1 0 0
|
||||
52 1 -5.201907594124834 -9.68877920222961 -5.102563220356437 18 1 1 -0.8472 0 0 0
|
||||
53 2 -4.940302726022812 9.565133612451614 -5.714840528272083 18 1 2 0.4236 0 -1 0
|
||||
54 2 -4.857789679852353 -9.876354410222005 -4.182596251371481 18 1 3 0.4236 0 0 0
|
||||
55 1 0.37327634941779875 -9.91440084751388 -4.961505484040201 19 1 1 -0.8472 0 0 0
|
||||
56 2 -0.024482580199505652 9.563262486125167 -5.715772636834634 19 1 2 0.4236 0 -1 0
|
||||
57 2 -0.34879376921829297 -9.648861638611287 -4.322721879125167 19 1 3 0.4236 0 0 0
|
||||
58 1 5.099017423466195 9.70150361815792 -4.778099717040957 20 1 1 -0.8472 0 -1 0
|
||||
59 2 5.136067712418359 9.715462771782358 -5.77729895393951 20 1 2 0.4236 0 -1 0
|
||||
60 2 4.764914864115446 -9.416966389940278 -4.444601329019534 20 1 3 0.4236 0 0 0
|
||||
61 1 9.67209962879851 -5.197853819118096 -5.0384641199861475 21 1 1 -0.8472 -1 0 0
|
||||
62 2 9.738936599885 -4.205377815142725 -4.936039036490629 21 1 2 0.4236 -1 0 0
|
||||
63 2 -9.41103622868351 -5.5967683657391785 -5.025496843523223 21 1 3 0.4236 0 0 0
|
||||
64 1 -4.689795490189235 -5.165487837213749 -4.843375565356555 22 1 1 -0.8472 0 0 0
|
||||
65 2 -4.832160266019467 -5.015491947934958 -5.82174165261749 22 1 2 0.4236 0 0 0
|
||||
66 2 -5.478044243791298 -4.819020214851294 -4.334882782025955 22 1 3 0.4236 0 0 0
|
||||
67 1 -0.0615634035841769 -4.677472055633765 -5.200823176306976 23 1 1 -0.8472 0 0 0
|
||||
68 2 -0.6036354578743581 -5.514703146142694 -5.272716750031286 23 1 2 0.4236 0 0 0
|
||||
69 2 0.6651988614585344 -4.807824798223541 -4.526460073661738 23 1 3 0.4236 0 0 0
|
||||
70 1 4.802754604301762 -5.1046044449424395 -5.313522630242427 24 1 1 -0.8472 0 0 0
|
||||
71 2 4.674742935683063 -5.484552334539641 -4.397433491136363 24 1 2 0.4236 0 0 0
|
||||
72 2 5.522502460015175 -4.410843220517918 -5.28904387862121 24 1 3 0.4236 0 0 0
|
||||
73 1 -9.83451039343324 -0.34326467353508094 -4.9458998177338245 25 1 1 -0.8472 0 0 0
|
||||
74 2 -9.500257580872022 0.5235593797386398 -4.5759568290706625 25 1 2 0.4236 0 0 0
|
||||
75 2 9.334767974305263 -0.18029470620355853 -5.478143353195513 25 1 3 0.4236 -1 0 0
|
||||
76 1 -5.307686388170551 -0.09393136703842697 -4.788693917454198 26 1 1 -0.8472 0 0 0
|
||||
77 2 -5.322666676950796 0.48158209129479823 -5.606328644655405 26 1 2 0.4236 0 0 0
|
||||
78 2 -4.369646934878654 -0.38765072425637087 -4.604977437890398 26 1 3 0.4236 0 0 0
|
||||
79 1 0.25915920502631956 0.1183661006970869 -5.258786105415057 27 1 1 -0.8472 0 0 0
|
||||
80 2 0.4129987454382328 0.060712811699061064 -4.2723905503898125 27 1 2 0.4236 0 0 0
|
||||
81 2 -0.6721579504645518 -0.17907891239614798 -5.46882334419513 27 1 3 0.4236 0 0 0
|
||||
82 1 4.645093317547853 -0.032892978577141976 -5.145270693572841 28 1 1 -0.8472 0 0 0
|
||||
83 2 5.384532151641317 -0.6939822880761514 -5.272384156276919 28 1 2 0.4236 0 0 0
|
||||
84 2 4.9703745308108305 0.7268752666532926 -4.58234515015024 28 1 3 0.4236 0 0 0
|
||||
85 1 -9.935887941471492 4.620929536576184 -4.981574381668706 29 1 1 -0.8472 0 0 0
|
||||
86 2 -9.510577225229298 5.307736013867678 -4.392189656467925 29 1 2 0.4236 0 0 0
|
||||
87 2 9.44646516670079 5.071334449556138 -5.626235961863369 29 1 3 0.4236 -1 0 0
|
||||
88 1 -5.008590477951656 4.617494616944972 -5.041953680678674 30 1 1 -0.8472 0 0 0
|
||||
89 2 -4.783022517847073 5.100600801092718 -4.195966560733896 30 1 2 0.4236 0 0 0
|
||||
90 2 -5.2083870042012705 5.281904581962309 -5.762079758587429 30 1 3 0.4236 0 0 0
|
||||
91 1 -0.10236681102215972 4.670575674519795 -5.170718849231903 31 1 1 -0.8472 0 0 0
|
||||
92 2 0.6714005117953412 5.244086072416178 -5.439673586212998 31 1 2 0.4236 0 0 0
|
||||
93 2 -0.569033700773181 5.085338253064027 -4.389607564555099 31 1 3 0.4236 0 0 0
|
||||
94 1 4.793442916655695 4.895053625339889 -4.692648888946219 32 1 1 -0.8472 0 0 0
|
||||
95 2 5.78790922296981 4.82542619694358 -4.771105779790033 32 1 2 0.4236 0 0 0
|
||||
96 2 4.418647860374495 5.279520177716531 -5.536245331263747 32 1 3 0.4236 0 0 0
|
||||
97 1 -9.972346516877309 9.813426641245107 0.3355144443598525 33 1 1 -0.8472 0 -1 0
|
||||
98 2 9.902394946876838 9.380578255545881 -0.5571889055807204 33 1 2 0.4236 -1 -1 0
|
||||
99 2 -9.930048429999529 -9.194004896790988 0.22167446122086756 33 1 3 0.4236 0 0 0
|
||||
100 1 -5.055092848610487 9.62043108608943 -0.032194616393628146 34 1 1 -0.8472 0 -1 0
|
||||
101 2 -4.242564100118214 -9.944998495531546 0.35627968294091067 34 1 2 0.4236 0 0 0
|
||||
102 2 -5.702343051271298 -9.675432590557886 -0.3240850665472822 34 1 3 0.4236 0 0 0
|
||||
103 1 -0.16422105747150104 -9.658585046539034 0.06790839076424156 35 1 1 -0.8472 0 0 0
|
||||
104 2 0.24178705531724526 9.747651563696497 0.7625803609956086 35 1 2 0.4236 0 -1 0
|
||||
105 2 -0.07756599784574403 9.910933482842538 -0.8304887517598495 35 1 3 0.4236 0 -1 0
|
||||
106 1 5.252774480020046 -9.731538918744256 0.11035391158265477 36 1 1 -0.8472 0 0 0
|
||||
107 2 4.897417222941987 -9.843232415673553 -0.8176614328409508 36 1 2 0.4236 0 0 0
|
||||
108 2 4.849808297037967 9.57477133441781 0.7073075212582953 36 1 3 0.4236 0 -1 0
|
||||
109 1 -9.974235357986496 -5.3824393899672485 -0.03493668449344743 37 1 1 -0.8472 0 0 0
|
||||
110 2 -9.424638978370009 -4.718082489267676 -0.5414348828173003 37 1 2 0.4236 0 0 0
|
||||
111 2 9.398874336356506 -4.8994781207650755 0.5763715673107472 37 1 3 0.4236 -1 0 0
|
||||
112 1 -4.9279099757557 -5.3611565776237216 -0.11186255201619967 38 1 1 -0.8472 0 0 0
|
||||
113 2 -4.312252322613385 -4.791643655121096 0.43273581570979314 38 1 2 0.4236 0 0 0
|
||||
114 2 -5.759837701630914 -4.847199767255183 -0.3208732636935932 38 1 3 0.4236 0 0 0
|
||||
115 1 -0.1760601646477313 -4.705054107276162 0.17364911312630318 39 1 1 -0.8472 0 0 0
|
||||
116 2 -0.5420681618198102 -5.220988302880955 -0.6008292588839926 39 1 2 0.4236 0 0 0
|
||||
117 2 0.718128326467541 -5.073957589842884 0.42718014575768887 39 1 3 0.4236 0 0 0
|
||||
118 1 4.903025698266734 -5.298533854737944 0.22275052879544271 40 1 1 -0.8472 0 0 0
|
||||
119 2 5.616278707356452 -4.629646152095917 0.43209733000991873 40 1 2 0.4236 0 0 0
|
||||
120 2 4.480695594376815 -5.071819993166138 -0.654847858805361 40 1 3 0.4236 0 0 0
|
||||
121 1 -9.873572998065784 0.3496117939501917 0.09965983349802573 41 1 1 -0.8472 0 0 0
|
||||
122 2 -9.29961582738827 -0.39891518603423753 -0.23237513960458678 41 1 2 0.4236 0 0 0
|
||||
123 2 9.173188825454053 0.049303392084045605 0.1327153061065609 41 1 3 0.4236 -1 0 0
|
||||
124 1 -4.9726203993223415 0.3762262293330992 0.07647520858768621 42 1 1 -0.8472 0 0 0
|
||||
125 2 -4.438314607446875 -0.11323391388289276 -0.6126639543332082 42 1 2 0.4236 0 0 0
|
||||
126 2 -5.589064993230783 -0.2629923154502063 0.5361887457455214 42 1 3 0.4236 0 0 0
|
||||
127 1 0.18831172963220283 -0.0017827385000351538 -0.33567810477653826 43 1 1 -0.8472 0 0 0
|
||||
128 2 0.5388694262034436 -0.37110526230565655 0.5249477556788119 43 1 2 0.4236 0 0 0
|
||||
129 2 -0.7271811558356458 0.37288800080569134 -0.18926965090227335 43 1 3 0.4236 0 0 0
|
||||
130 1 5.104261929822929 -0.37049035001218517 -0.0032597910127999223 44 1 1 -0.8472 0 0 0
|
||||
131 2 5.443981207967718 0.31928842752835596 0.6360857704885375 44 1 2 0.4236 0 0 0
|
||||
132 2 4.451756862209354 0.05120192248382927 -0.632825979475737 44 1 3 0.4236 0 0 0
|
||||
133 1 -9.716043338324948 4.963029008083921 -0.2571887162126298 45 1 1 -0.8472 0 0 0
|
||||
134 2 9.633590016729197 4.245448234803103 -0.008054700350535071 45 1 2 0.4236 -1 0 0
|
||||
135 2 -9.91754667840425 5.7915227571129755 0.2652434165631647 45 1 3 0.4236 0 0 0
|
||||
136 1 -4.931156721648044 5.071542291899035 -0.37186903500505175 46 1 1 -0.8472 0 0 0
|
||||
137 2 -4.7201838672715 5.691314393753101 0.38400112142368736 46 1 2 0.4236 0 0 0
|
||||
138 2 -5.348659411080455 4.237143314347865 -0.01213208641863553 46 1 3 0.4236 0 0 0
|
||||
139 1 -0.29471440691413636 4.8919898068292405 -0.22275882076466474 47 1 1 -0.8472 0 0 0
|
||||
140 2 0.47778738080671596 4.311370196843371 0.03431811979582844 47 1 2 0.4236 0 0 0
|
||||
141 2 -0.1830729738925793 5.796639996327388 0.1884407009688362 47 1 3 0.4236 0 0 0
|
||||
142 1 5.244491723131163 4.903715118454363 -0.28124241253071613 48 1 1 -0.8472 0 0 0
|
||||
143 2 5.50417215460746 5.126383429014502 0.6584126273006984 48 1 2 0.4236 0 0 0
|
||||
144 2 4.251336122261378 4.969901452531135 -0.37717021476998186 48 1 3 0.4236 0 0 0
|
||||
145 1 -9.75433202641418 9.779421187196018 4.802170503220012 49 1 1 -0.8472 0 -1 0
|
||||
146 2 -9.650691740312444 -9.238436410716417 4.959083504652068 49 1 2 0.4236 0 0 0
|
||||
147 2 9.405023766726625 9.4590152235204 5.23874599212792 49 1 3 0.4236 -1 -1 0
|
||||
148 1 -5.055559152245123 9.796109196537483 5.321692394322919 50 1 1 -0.8472 0 -1 0
|
||||
149 2 -4.236869822621204 -9.669811657248509 5.110803930818502 50 1 2 0.4236 0 0 0
|
||||
150 2 -5.707571025133673 9.873702460711026 4.567503674858579 50 1 3 0.4236 0 -1 0
|
||||
151 1 -0.3144184450941294 9.858810634406513 5.171320985661122 51 1 1 -0.8472 0 -1 0
|
||||
152 2 0.615199476372441 9.80483357605659 5.535825710129903 51 1 2 0.4236 0 -1 0
|
||||
153 2 -0.3007810312783112 -9.663644210463103 4.2928533042089745 51 1 3 0.4236 0 0 0
|
||||
154 1 5.179923035894489 -9.84699214646902 5.303908824505562 52 1 1 -0.8472 0 0 0
|
||||
155 2 4.677889877415472 9.288179903352757 5.305330541115184 52 1 2 0.4236 0 -1 0
|
||||
156 2 5.142187086690039 -9.441187756883737 4.390760634379253 52 1 3 0.4236 0 0 0
|
||||
157 1 -9.76115088009254 -5.067151371069817 5.294255105279205 53 1 1 -0.8472 0 0 0
|
||||
158 2 9.804521478005048 -5.770185852326005 4.7311665558091125 53 1 2 0.4236 -1 0 0
|
||||
159 2 9.956629402087492 -4.162662776604179 4.974578338911683 53 1 3 0.4236 -1 0 0
|
||||
160 1 -4.819922322428162 -5.012318205300016 5.339947889475019 54 1 1 -0.8472 0 0 0
|
||||
161 2 -4.552065575809134 -4.439732159321751 4.565115855972501 54 1 2 0.4236 0 0 0
|
||||
162 2 -5.628012101762703 -5.547949635378233 5.094936254552479 54 1 3 0.4236 0 0 0
|
||||
163 1 0.29966811591104 -5.191175652071799 5.147631859912588 55 1 1 -0.8472 0 0 0
|
||||
164 2 0.3611846876298095 -4.438894380085313 4.491693374898662 55 1 2 0.4236 0 0 0
|
||||
165 2 -0.6608528035408491 -5.369929967842888 5.36067476518875 55 1 3 0.4236 0 0 0
|
||||
166 1 5.3306179671843905 -5.068017854599851 5.184958392430555 56 1 1 -0.8472 0 0 0
|
||||
167 2 4.476738522756953 -4.77740396721618 5.616699240328971 56 1 2 0.4236 0 0 0
|
||||
168 2 5.192643510058656 -5.15457817818397 4.198342367240475 56 1 3 0.4236 0 0 0
|
||||
169 1 9.638387780386097 -0.05547861370703253 4.880404842292622 57 1 1 -0.8472 -1 0 0
|
||||
170 2 -9.563668781750316 -0.5682641712421934 4.563696871357572 57 1 2 0.4236 0 0 0
|
||||
171 2 9.925281001364219 0.6237427849492254 5.555898286349805 57 1 3 0.4236 -1 0 0
|
||||
172 1 -4.92778155001994 -0.37347611049974844 5.058688721816523 58 1 1 -0.8472 0 0 0
|
||||
173 2 -4.424197210986553 0.3841495388065775 5.4738668593592825 58 1 2 0.4236 0 0 0
|
||||
174 2 -5.648021238993507 -0.010673428306828894 4.467444418824195 58 1 3 0.4236 0 0 0
|
||||
175 1 -0.18546503303408043 -0.19411622829904296 4.724199551971681 59 1 1 -0.8472 0 0 0
|
||||
176 2 0.12350879890318767 -0.5797357237270384 5.593566835013698 59 1 2 0.4236 0 0 0
|
||||
177 2 0.06195623413089274 0.7738519520260807 4.6822336130146205 59 1 3 0.4236 0 0 0
|
||||
178 1 5.024542870757014 0.35521327726870416 4.8538307458901455 60 1 1 -0.8472 0 0 0
|
||||
179 2 4.467087613939382 -0.3858533028483605 4.47962404180805 60 1 2 0.4236 0 0 0
|
||||
180 2 5.508369515303603 0.030640025579656158 5.666545212301804 60 1 3 0.4236 0 0 0
|
||||
181 1 -9.847544046825007 4.880766990446809 5.332693473747822 61 1 1 -0.8472 0 0 0
|
||||
182 2 9.515349627917418 5.644715153580236 5.230490581118248 61 1 2 0.4236 -1 0 0
|
||||
183 2 -9.667805581092411 4.474517855972955 4.4368159451339295 61 1 3 0.4236 0 0 0
|
||||
184 1 -4.983147898074708 4.80201241412343 4.670362019482786 62 1 1 -0.8472 0 0 0
|
||||
185 2 -5.672581470726773 4.677668740177936 5.383935208826349 62 1 2 0.4236 0 0 0
|
||||
186 2 -4.34427063119852 5.520318845698633 4.945702771690865 62 1 3 0.4236 0 0 0
|
||||
187 1 0.07042696284035434 4.658502024966576 5.162982979642521 63 1 1 -0.8472 0 0 0
|
||||
188 2 0.34620602341786555 5.544257758500404 5.536278287889138 63 1 2 0.4236 0 0 0
|
||||
189 2 -0.41663298625821943 4.79724021653302 4.300738732468342 63 1 3 0.4236 0 0 0
|
||||
190 1 5.127488702006002 4.733664731038008 5.246893562224226 64 1 1 -0.8472 0 0 0
|
||||
191 2 4.64413754361587 5.5715868659899 5.500319784901714 64 1 2 0.4236 0 0 0
|
||||
192 2 5.228373754378127 4.694748402972092 4.25278665287406 64 1 3 0.4236 0 0 0
|
||||
193 3 -7.5 -7.5 -7.5 65 2 1 0.7 0 0 0
|
||||
194 4 -7.363090579820503 -8.108207908322568 -8.478232564843351 65 2 2 -0.35 0 0 0
|
||||
195 4 -7.636909420179497 -6.8917920916774325 -6.521767435156649 65 2 3 -0.35 0 0 0
|
||||
196 3 -2.5 -7.5 -7.5 66 2 1 0.7 0 0 0
|
||||
197 4 -1.9890145185459458 -8.507238712895377 -7.764507113303278 66 2 2 -0.35 0 0 0
|
||||
198 4 -3.010985481454054 -6.492761287104623 -7.235492886696722 66 2 3 -0.35 0 0 0
|
||||
199 3 2.5 -7.5 -7.5 67 2 1 0.7 0 0 0
|
||||
200 4 1.3412381615021542 -7.520352744205465 -7.4504342109474795 67 2 2 -0.35 0 0 0
|
||||
201 4 3.6587618384978455 -7.479647255794535 -7.5495657890525205 67 2 3 -0.35 0 0 0
|
||||
202 3 7.5 -7.5 -7.5 68 2 1 0.7 0 0 0
|
||||
203 4 8.30819917176506 -6.684226989986137 -7.33590096011495 68 2 2 -0.35 0 0 0
|
||||
204 4 6.691800828234942 -8.315773010013862 -7.66409903988505 68 2 3 -0.35 0 0 0
|
||||
205 3 -7.5 -2.5 -7.5 69 2 1 0.7 0 0 0
|
||||
206 4 -7.042985934526503 -2.3910630732039384 -8.560599306967347 69 2 2 -0.35 0 0 0
|
||||
207 4 -7.957014065473497 -2.6089369267960616 -6.4394006930326535 69 2 3 -0.35 0 0 0
|
||||
208 3 -2.5 -2.5 -7.5 70 2 1 0.7 0 0 0
|
||||
209 4 -2.463675404493939 -2.5978807004677122 -6.344707875800553 70 2 2 -0.35 0 0 0
|
||||
210 4 -2.536324595506061 -2.4021192995322878 -8.655292124199448 70 2 3 -0.35 0 0 0
|
||||
211 3 2.5 -2.5 -7.5 71 2 1 0.7 0 0 0
|
||||
212 4 3.194913946357355 -2.0817981930843534 -6.670661796460253 71 2 2 -0.35 0 0 0
|
||||
213 4 1.8050860536426452 -2.9182018069156466 -8.329338203539747 71 2 3 -0.35 0 0 0
|
||||
214 3 7.5 -2.5 -7.5 72 2 1 0.7 0 0 0
|
||||
215 4 7.892546142220834 -2.47905949037101 -8.591361086572185 72 2 2 -0.35 0 0 0
|
||||
216 4 7.107453857779166 -2.52094050962899 -6.408638913427816 72 2 3 -0.35 0 0 0
|
||||
217 3 -7.5 2.5 -7.5 73 2 1 0.7 0 0 0
|
||||
218 4 -7.3828346282522315 1.479592808564327 -6.96088828678133 73 2 2 -0.35 0 0 0
|
||||
219 4 -7.6171653717477685 3.520407191435673 -8.03911171321867 73 2 3 -0.35 0 0 0
|
||||
220 3 -2.5 2.5 -7.5 74 2 1 0.7 0 0 0
|
||||
221 4 -2.060468233000571 2.976742396757671 -8.461836011455233 74 2 2 -0.35 0 0 0
|
||||
222 4 -2.939531766999429 2.023257603242329 -6.538163988544768 74 2 3 -0.35 0 0 0
|
||||
223 3 2.5 2.5 -7.5 75 2 1 0.7 0 0 0
|
||||
224 4 2.3501758165742057 3.3407716363704516 -8.28501959818577 75 2 2 -0.35 0 0 0
|
||||
225 4 2.6498241834257943 1.6592283636295486 -6.71498040181423 75 2 3 -0.35 0 0 0
|
||||
226 3 7.5 2.5 -7.5 76 2 1 0.7 0 0 0
|
||||
227 4 6.491384484733663 2.798405737744011 -7.989130614504423 76 2 2 -0.35 0 0 0
|
||||
228 4 8.508615515266337 2.201594262255989 -7.010869385495577 76 2 3 -0.35 0 0 0
|
||||
229 3 -7.5 7.5 -7.5 77 2 1 0.7 0 0 0
|
||||
230 4 -8.223742289003038 8.374984745462024 -7.26293715112359 77 2 2 -0.35 0 0 0
|
||||
231 4 -6.776257710996962 6.625015254537976 -7.73706284887641 77 2 3 -0.35 0 0 0
|
||||
232 3 -2.5 7.5 -7.5 78 2 1 0.7 0 0 0
|
||||
233 4 -3.61460324665069 7.680615494066614 -7.7657774366999845 78 2 2 -0.35 0 0 0
|
||||
234 4 -1.3853967533493103 7.319384505933386 -7.2342225633000155 78 2 3 -0.35 0 0 0
|
||||
235 3 2.5 7.5 -7.5 79 2 1 0.7 0 0 0
|
||||
236 4 2.7768699697291033 8.100687316711076 -6.547047867201792 79 2 2 -0.35 0 0 0
|
||||
237 4 2.2231300302708967 6.899312683288924 -8.452952132798208 79 2 3 -0.35 0 0 0
|
||||
238 3 7.5 7.5 -7.5 80 2 1 0.7 0 0 0
|
||||
239 4 7.16783620529347 7.207818725743377 -6.4276673480398285 80 2 2 -0.35 0 0 0
|
||||
240 4 7.83216379470653 7.792181274256623 -8.57233265196017 80 2 3 -0.35 0 0 0
|
||||
241 3 -7.5 -7.5 -2.5 81 2 1 0.7 0 0 0
|
||||
242 4 -6.904167548557492 -8.34992426129338 -1.9821076947154799 81 2 2 -0.35 0 0 0
|
||||
243 4 -8.095832451442508 -6.6500757387066205 -3.01789230528452 81 2 3 -0.35 0 0 0
|
||||
244 3 -2.5 -7.5 -2.5 82 2 1 0.7 0 0 0
|
||||
245 4 -3.342504009848425 -6.73061486491979 -2.7093645321130886 82 2 2 -0.35 0 0 0
|
||||
246 4 -1.6574959901515751 -8.26938513508021 -2.2906354678869114 82 2 3 -0.35 0 0 0
|
||||
247 3 2.5 -7.5 -2.5 83 2 1 0.7 0 0 0
|
||||
248 4 2.1689944159865804 -6.498569494779038 -2.0171208778950747 83 2 2 -0.35 0 0 0
|
||||
249 4 2.8310055840134196 -8.501430505220963 -2.9828791221049253 83 2 3 -0.35 0 0 0
|
||||
250 3 7.5 -7.5 -2.5 84 2 1 0.7 0 0 0
|
||||
251 4 7.672524274844629 -6.627256087060682 -1.7555851714153565 84 2 2 -0.35 0 0 0
|
||||
252 4 7.327475725155371 -8.372743912939317 -3.2444148285846435 84 2 3 -0.35 0 0 0
|
||||
253 3 -7.5 -2.5 -2.5 85 2 1 0.7 0 0 0
|
||||
254 4 -7.9562680998953565 -2.81558187201847 -1.4812618083770501 85 2 2 -0.35 0 0 0
|
||||
255 4 -7.0437319001046435 -2.18441812798153 -3.51873819162295 85 2 3 -0.35 0 0 0
|
||||
256 3 -2.5 -2.5 -2.5 86 2 1 0.7 0 0 0
|
||||
257 4 -3.655855156414235 -2.500158391730412 -2.597973630649695 86 2 2 -0.35 0 0 0
|
||||
258 4 -1.3441448435857646 -2.499841608269588 -2.402026369350305 86 2 3 -0.35 0 0 0
|
||||
259 3 2.5 -2.5 -2.5 87 2 1 0.7 0 0 0
|
||||
260 4 2.3492190747015416 -2.0985959396284857 -3.577840383769045 87 2 2 -0.35 0 0 0
|
||||
261 4 2.6507809252984584 -2.9014040603715143 -1.422159616230955 87 2 3 -0.35 0 0 0
|
||||
262 3 7.5 -2.5 -2.5 88 2 1 0.7 0 0 0
|
||||
263 4 6.369167808148362 -2.680475446720884 -2.685059901121005 88 2 2 -0.35 0 0 0
|
||||
264 4 8.630832191851638 -2.319524553279116 -2.314940098878995 88 2 3 -0.35 0 0 0
|
||||
265 3 -7.5 2.5 -2.5 89 2 1 0.7 0 0 0
|
||||
266 4 -8.653001820685228 2.600334495702883 -2.5782290896572104 89 2 2 -0.35 0 0 0
|
||||
267 4 -6.346998179314771 2.399665504297117 -2.4217709103427896 89 2 3 -0.35 0 0 0
|
||||
268 3 -2.5 2.5 -2.5 90 2 1 0.7 0 0 0
|
||||
269 4 -2.4389431621625337 2.9182920508772057 -1.4197667739204507 90 2 2 -0.35 0 0 0
|
||||
270 4 -2.5610568378374663 2.0817079491227943 -3.5802332260795495 90 2 3 -0.35 0 0 0
|
||||
271 3 2.5 2.5 -2.5 91 2 1 0.7 0 0 0
|
||||
272 4 1.7245732398737652 2.522972739967341 -1.637569948982224 91 2 2 -0.35 0 0 0
|
||||
273 4 3.275426760126235 2.477027260032659 -3.362430051017776 91 2 3 -0.35 0 0 0
|
||||
274 3 7.5 2.5 -2.5 92 2 1 0.7 0 0 0
|
||||
275 4 6.354214677495708 2.528966092667298 -2.6787091497638675 92 2 2 -0.35 0 0 0
|
||||
276 4 8.645785322504292 2.471033907332702 -2.3212908502361325 92 2 3 -0.35 0 0 0
|
||||
277 3 -7.5 7.5 -2.5 93 2 1 0.7 0 0 0
|
||||
278 4 -8.143093600185056 7.538481444597049 -3.4646500919104017 93 2 2 -0.35 0 0 0
|
||||
279 4 -6.856906399814943 7.461518555402951 -1.535349908089598 93 2 3 -0.35 0 0 0
|
||||
280 3 -2.5 7.5 -2.5 94 2 1 0.7 0 0 0
|
||||
281 4 -2.8237854486228446 7.809312312718537 -1.429911743611391 94 2 2 -0.35 0 0 0
|
||||
282 4 -2.1762145513771554 7.190687687281463 -3.570088256388609 94 2 3 -0.35 0 0 0
|
||||
283 3 2.5 7.5 -2.5 95 2 1 0.7 0 0 0
|
||||
284 4 3.21905026313534 7.538258309964428 -1.5905479557427649 95 2 2 -0.35 0 0 0
|
||||
285 4 1.78094973686466 7.461741690035572 -3.409452044257235 95 2 3 -0.35 0 0 0
|
||||
286 3 7.5 7.5 -2.5 96 2 1 0.7 0 0 0
|
||||
287 4 7.739558757849892 7.897562136690081 -3.563087930985878 96 2 2 -0.35 0 0 0
|
||||
288 4 7.260441242150108 7.102437863309919 -1.436912069014122 96 2 3 -0.35 0 0 0
|
||||
289 3 -7.5 -7.5 2.5 97 2 1 0.7 0 0 0
|
||||
290 4 -7.4900021089395485 -6.340045447267127 2.5023404633351993 97 2 2 -0.35 0 0 0
|
||||
291 4 -7.5099978910604515 -8.659954552732874 2.4976595366648007 97 2 3 -0.35 0 0 0
|
||||
292 3 -2.5 -7.5 2.5 98 2 1 0.7 0 0 0
|
||||
293 4 -3.106830756206168 -6.511472531062921 2.5130336671395352 98 2 2 -0.35 0 0 0
|
||||
294 4 -1.8931692437938321 -8.488527468937079 2.4869663328604648 98 2 3 -0.35 0 0 0
|
||||
295 3 2.5 -7.5 2.5 99 2 1 0.7 0 0 0
|
||||
296 4 1.3541840293569891 -7.32995582507702 2.4384310143483083 99 2 2 -0.35 0 0 0
|
||||
297 4 3.645815970643011 -7.67004417492298 2.5615689856516917 99 2 3 -0.35 0 0 0
|
||||
298 3 7.5 -7.5 2.5 100 2 1 0.7 0 0 0
|
||||
299 4 6.890528994434403 -6.53074739493991 2.6862645456309138 100 2 2 -0.35 0 0 0
|
||||
300 4 8.109471005565597 -8.46925260506009 2.3137354543690862 100 2 3 -0.35 0 0 0
|
||||
301 3 -7.5 -2.5 2.5 101 2 1 0.7 0 0 0
|
||||
302 4 -8.402413809003143 -1.9960963670464098 1.9733782704667298 101 2 2 -0.35 0 0 0
|
||||
303 4 -6.597586190996857 -3.00390363295359 3.0266217295332702 101 2 3 -0.35 0 0 0
|
||||
304 3 -2.5 -2.5 2.5 102 2 1 0.7 0 0 0
|
||||
305 4 -3.1146628699497816 -3.0155291909493633 1.6621341338948146 102 2 2 -0.35 0 0 0
|
||||
306 4 -1.8853371300502184 -1.9844708090506367 3.3378658661051857 102 2 3 -0.35 0 0 0
|
||||
307 3 2.5 -2.5 2.5 103 2 1 0.7 0 0 0
|
||||
308 4 1.7091896213819626 -3.348636804240857 2.505875334702054 103 2 2 -0.35 0 0 0
|
||||
309 4 3.2908103786180374 -1.651363195759143 2.494124665297946 103 2 3 -0.35 0 0 0
|
||||
310 3 7.5 -2.5 2.5 104 2 1 0.7 0 0 0
|
||||
311 4 7.846121450678692 -1.863352310559478 1.5941966764743452 104 2 2 -0.35 0 0 0
|
||||
312 4 7.153878549321308 -3.136647689440522 3.405803323525655 104 2 3 -0.35 0 0 0
|
||||
313 3 -7.5 2.5 2.5 105 2 1 0.7 0 0 0
|
||||
314 4 -7.415505185247761 1.3693275996894718 2.2549682684711767 105 2 2 -0.35 0 0 0
|
||||
315 4 -7.584494814752239 3.6306724003105284 2.7450317315288233 105 2 3 -0.35 0 0 0
|
||||
316 3 -2.5 2.5 2.5 106 2 1 0.7 0 0 0
|
||||
317 4 -1.6566227058869707 3.061399569140947 3.0649294323567706 106 2 2 -0.35 0 0 0
|
||||
318 4 -3.3433772941130293 1.938600430859053 1.9350705676432294 106 2 3 -0.35 0 0 0
|
||||
319 3 2.5 2.5 2.5 107 2 1 0.7 0 0 0
|
||||
320 4 1.8018606440593001 1.6504313913225857 2.1306294288432994 107 2 2 -0.35 0 0 0
|
||||
321 4 3.1981393559407 3.3495686086774143 2.8693705711567006 107 2 3 -0.35 0 0 0
|
||||
322 3 7.5 2.5 2.5 108 2 1 0.7 0 0 0
|
||||
323 4 7.454398927291544 1.350628262336051 2.3501162089244056 108 2 2 -0.35 0 0 0
|
||||
324 4 7.545601072708456 3.649371737663949 2.6498837910755944 108 2 3 -0.35 0 0 0
|
||||
325 3 -7.5 7.5 2.5 109 2 1 0.7 0 0 0
|
||||
326 4 -7.639487922633921 8.47694083419964 1.8903035788914426 109 2 2 -0.35 0 0 0
|
||||
327 4 -7.360512077366079 6.523059165800359 3.1096964211085574 109 2 3 -0.35 0 0 0
|
||||
328 3 -2.5 7.5 2.5 110 2 1 0.7 0 0 0
|
||||
329 4 -3.653132322293053 7.551646962835361 2.385028531744119 110 2 2 -0.35 0 0 0
|
||||
330 4 -1.3468676777069468 7.448353037164639 2.614971468255881 110 2 3 -0.35 0 0 0
|
||||
331 3 2.5 7.5 2.5 111 2 1 0.7 0 0 0
|
||||
332 4 2.8364898316331035 7.678145325449636 3.595736663723528 111 2 2 -0.35 0 0 0
|
||||
333 4 2.1635101683668965 7.321854674550364 1.4042633362764718 111 2 3 -0.35 0 0 0
|
||||
334 3 7.5 7.5 2.5 112 2 1 0.7 0 0 0
|
||||
335 4 6.479552888446932 7.807048742079671 2.958267130078399 112 2 2 -0.35 0 0 0
|
||||
336 4 8.520447111553068 7.192951257920329 2.041732869921601 112 2 3 -0.35 0 0 0
|
||||
337 3 -7.5 -7.5 7.5 113 2 1 0.7 0 0 0
|
||||
338 4 -7.6197834102650095 -6.871306065029082 8.46746879575316 113 2 2 -0.35 0 0 0
|
||||
339 4 -7.3802165897349905 -8.128693934970917 6.53253120424684 113 2 3 -0.35 0 0 0
|
||||
340 3 -2.5 -7.5 7.5 114 2 1 0.7 0 0 0
|
||||
341 4 -3.6462582687736766 -7.5580642653980155 7.6682870237177 114 2 2 -0.35 0 0 0
|
||||
342 4 -1.3537417312263231 -7.4419357346019845 7.3317129762823 114 2 3 -0.35 0 0 0
|
||||
343 3 2.5 -7.5 7.5 115 2 1 0.7 0 0 0
|
||||
344 4 1.3734554259918312 -7.525081897193473 7.224558134616524 115 2 2 -0.35 0 0 0
|
||||
345 4 3.626544574008169 -7.474918102806527 7.775441865383476 115 2 3 -0.35 0 0 0
|
||||
346 3 7.5 -7.5 7.5 116 2 1 0.7 0 0 0
|
||||
347 4 8.414658305507071 -7.215850731078148 8.154415294089395 116 2 2 -0.35 0 0 0
|
||||
348 4 6.585341694492928 -7.784149268921852 6.845584705910605 116 2 3 -0.35 0 0 0
|
||||
349 3 -7.5 -2.5 7.5 117 2 1 0.7 0 0 0
|
||||
350 4 -8.645413670915179 -2.6453055222059496 7.611865221123771 117 2 2 -0.35 0 0 0
|
||||
351 4 -6.354586329084821 -2.3546944777940504 7.388134778876229 117 2 3 -0.35 0 0 0
|
||||
352 3 -2.5 -2.5 7.5 118 2 1 0.7 0 0 0
|
||||
353 4 -2.601509341816184 -1.9084001398846042 8.492625538174135 118 2 2 -0.35 0 0 0
|
||||
354 4 -2.398490658183816 -3.091599860115396 6.507374461825866 118 2 3 -0.35 0 0 0
|
||||
355 3 2.5 -2.5 7.5 119 2 1 0.7 0 0 0
|
||||
356 4 2.2485924178438 -2.364925227008703 8.624343823452472 119 2 2 -0.35 0 0 0
|
||||
357 4 2.7514075821562 -2.635074772991297 6.375656176547529 119 2 3 -0.35 0 0 0
|
||||
358 3 7.5 -2.5 7.5 120 2 1 0.7 0 0 0
|
||||
359 4 6.784038999809617 -1.8413110953985297 8.13176639128819 120 2 2 -0.35 0 0 0
|
||||
360 4 8.215961000190383 -3.1586889046014703 6.86823360871181 120 2 3 -0.35 0 0 0
|
||||
361 3 -7.5 2.5 7.5 121 2 1 0.7 0 0 0
|
||||
362 4 -7.537548740040521 3.6593910439642627 7.49841908354891 121 2 2 -0.35 0 0 0
|
||||
363 4 -7.462451259959479 1.340608956035737 7.50158091645109 121 2 3 -0.35 0 0 0
|
||||
364 3 -2.5 2.5 7.5 122 2 1 0.7 0 0 0
|
||||
365 4 -1.649121019955475 1.7301813803117607 7.3297523741731405 122 2 2 -0.35 0 0 0
|
||||
366 4 -3.350878980044525 3.2698186196882393 7.6702476258268595 122 2 3 -0.35 0 0 0
|
||||
367 3 2.5 2.5 7.5 123 2 1 0.7 0 0 0
|
||||
368 4 3.2379752354871414 1.771831388509018 6.979651054534562 123 2 2 -0.35 0 0 0
|
||||
369 4 1.7620247645128586 3.228168611490982 8.020348945465438 123 2 3 -0.35 0 0 0
|
||||
370 3 7.5 2.5 7.5 124 2 1 0.7 0 0 0
|
||||
371 4 7.334452984137467 1.3548227605993108 7.582239138478142 124 2 2 -0.35 0 0 0
|
||||
372 4 7.665547015862533 3.645177239400689 7.417760861521858 124 2 3 -0.35 0 0 0
|
||||
373 3 -7.5 7.5 7.5 125 2 1 0.7 0 0 0
|
||||
374 4 -8.324913544328572 8.31456508779972 7.459982977108372 125 2 2 -0.35 0 0 0
|
||||
375 4 -6.675086455671429 6.6854349122002805 7.540017022891628 125 2 3 -0.35 0 0 0
|
||||
376 3 -2.5 7.5 7.5 126 2 1 0.7 0 0 0
|
||||
377 4 -2.8359455597090397 6.421926623286971 7.76551530150699 126 2 2 -0.35 0 0 0
|
||||
378 4 -2.1640544402909603 8.578073376713029 7.23448469849301 126 2 3 -0.35 0 0 0
|
||||
379 3 2.5 7.5 7.5 127 2 1 0.7 0 0 0
|
||||
380 4 1.4186788873677927 7.288670506833647 7.862883585594468 127 2 2 -0.35 0 0 0
|
||||
381 4 3.5813211126322075 7.711329493166353 7.137116414405532 127 2 3 -0.35 0 0 0
|
||||
382 3 7.5 7.5 7.5 128 2 1 0.7 0 0 0
|
||||
383 4 6.9664096100856385 6.501410755376355 7.247609793547735 128 2 2 -0.35 0 0 0
|
||||
384 4 8.03359038991436 8.498589244623645 7.752390206452265 128 2 3 -0.35 0 0 0
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
# Water molecule. SPC/E model.
|
||||
|
||||
3 atoms
|
||||
2 bonds
|
||||
1 angles
|
||||
|
||||
Coords
|
||||
|
||||
1 1.12456 0.09298 1.27452
|
||||
2 1.53683 0.75606 1.89928
|
||||
3 0.49482 0.56390 0.65678
|
||||
|
||||
Types
|
||||
|
||||
1 1
|
||||
2 2
|
||||
3 2
|
||||
|
||||
Charges
|
||||
|
||||
1 -0.8472
|
||||
2 0.4236
|
||||
3 0.4236
|
||||
|
||||
Bonds
|
||||
|
||||
1 1 1 2
|
||||
2 1 1 3
|
||||
|
||||
Angles
|
||||
|
||||
1 1 2 1 3
|
||||
|
||||
Shake Flags
|
||||
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
|
||||
Shake Atoms
|
||||
|
||||
1 1 2 3
|
||||
2 1 2 3
|
||||
3 1 2 3
|
||||
|
||||
Shake Bond Types
|
||||
|
||||
1 1 1 1
|
||||
2 1 1 1
|
||||
3 1 1 1
|
||||
|
||||
Special Bond Counts
|
||||
|
||||
1 2 0 0
|
||||
2 1 1 0
|
||||
3 1 1 0
|
||||
|
||||
Special Bonds
|
||||
|
||||
1 2 3
|
||||
2 1 3
|
||||
3 1 2
|
|
@ -0,0 +1,29 @@
|
|||
# demo using atom style hybrid template charge to simulate a h2o/co2 mixture
|
||||
|
||||
units real
|
||||
molecule twomols h2o.mol co2.mol offset 2 1 1 0 0
|
||||
atom_style hybrid template twomols charge
|
||||
boundary p p p
|
||||
pair_style lj/cut/coul/long 12
|
||||
pair_modify mix arithmetic tail yes
|
||||
kspace_style pppm 0.0001
|
||||
pair_style lj/cut/coul/long 12
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
|
||||
read_data h2o-co2.data
|
||||
|
||||
group h2o type 1 2
|
||||
group co2 type 3 4
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
timestep 1.0
|
||||
|
||||
velocity all create 300.0 34672
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols
|
||||
#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu
|
||||
|
||||
run 2500
|
|
@ -0,0 +1,21 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data molecular-mix.data
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
|
@ -0,0 +1,11 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
read_restart molecular-mix.restart
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
|
@ -0,0 +1,42 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 &
|
||||
extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
create_atoms 2 random 800 495437 box
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
#write_data molecular-mix.data
|
||||
#write_restart molecular-mix.restart
|
|
@ -0,0 +1,42 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 1: creating system with create_atoms
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
create_atoms 2 random 800 495437 box
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
#write_data template-mix.data
|
||||
#write_restart template-mix.restart
|
|
@ -0,0 +1,21 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data template-mix.data
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
|
@ -0,0 +1,11 @@
|
|||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
read_restart template-mix.restart
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
|
@ -0,0 +1,158 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo using atom style hybrid template charge to simulate a h2o/co2 mixture
|
||||
|
||||
units real
|
||||
molecule twomols h2o.mol co2.mol offset 2 1 1 0 0
|
||||
Read molecule template twomols:
|
||||
1 molecules
|
||||
3 atoms with max type 2
|
||||
2 bonds with max type 1
|
||||
1 angles with max type 1
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
Read molecule template twomols:
|
||||
1 molecules
|
||||
3 atoms with max type 4
|
||||
2 bonds with max type 2
|
||||
1 angles with max type 2
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
atom_style hybrid template twomols charge
|
||||
boundary p p p
|
||||
pair_style lj/cut/coul/long 12
|
||||
pair_modify mix arithmetic tail yes
|
||||
kspace_style pppm 0.0001
|
||||
pair_style lj/cut/coul/long 12
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
|
||||
read_data h2o-co2.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-10.000000 -10.000000 -10.000000) to (10.000000 10.000000 10.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
384 atoms
|
||||
256 template bonds
|
||||
128 template angles
|
||||
read_data CPU = 0.003 seconds
|
||||
|
||||
group h2o type 1 2
|
||||
192 atoms in group h2o
|
||||
group co2 type 3 4
|
||||
192 atoms in group co2
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
timestep 1.0
|
||||
|
||||
velocity all create 300.0 34672
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols
|
||||
WARNING: Molecule template for fix shake has multiple molecules (src/RIGID/fix_shake.cpp:174)
|
||||
0 = # of size 2 clusters
|
||||
0 = # of size 3 clusters
|
||||
0 = # of size 4 clusters
|
||||
64 = # of frozen angles
|
||||
find clusters CPU = 0.000 seconds
|
||||
#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu
|
||||
|
||||
run 2500
|
||||
PPPM initialization ...
|
||||
using 12-bit tables for long-range coulomb (src/kspace.cpp:328)
|
||||
G vector (1/distance) = 0.21452218
|
||||
grid = 8 8 8
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.0237525
|
||||
estimated relative force accuracy = 7.1529949e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 2197 512
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 1 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 15
|
||||
ghost atom cutoff = 15
|
||||
binsize = 7.5, bins = 3 3 3
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut/coul/long, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
SHAKE stats (type/ave/delta/count) on step 0
|
||||
1 1.99995 1.29379e-05 192
|
||||
1 328.411 6.25278e-13 64
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.625 | 5.625 | 5.625 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 360.18809 -173.24472 3.5527137e-13 169.25036 2429.6019
|
||||
100 363.1919 -274.40147 44.351072 115.30094 -883.3694
|
||||
200 427.79493 -329.78833 38.354106 115.34674 1523.3792
|
||||
300 465.88637 -350.56147 22.604289 115.04411 385.4719
|
||||
400 436.9596 -357.24661 57.161471 115.41032 2307.0158
|
||||
SHAKE stats (type/ave/delta/count) on step 500
|
||||
1 2.00000 4.02911e-07 192
|
||||
1 328.410 5.78944e-05 64
|
||||
500 480.93508 -378.08914 36.26854 115.49018 2822.245
|
||||
600 457.38119 -381.9922 62.73272 115.65441 -387.65281
|
||||
700 488.20843 -393.89334 45.144546 115.47805 3086.293
|
||||
800 463.52123 -384.28537 59.827245 116.2942 3310.9672
|
||||
900 500.42748 -424.29715 64.614956 116.16348 -612.56056
|
||||
SHAKE stats (type/ave/delta/count) on step 1000
|
||||
1 2.00000 8.23271e-07 192
|
||||
1 328.410 5.98754e-05 64
|
||||
1000 522.46734 -424.93564 44.24152 116.1088 3948.9908
|
||||
1100 470.79532 -398.30875 66.721422 116.08177 2480.4521
|
||||
1200 515.87076 -433.25982 58.802584 116.07313 1913.2295
|
||||
1300 517.25521 -425.5203 49.308433 115.63494 3343.755
|
||||
1400 515.28471 -427.75141 53.078285 115.29997 2755.9048
|
||||
SHAKE stats (type/ave/delta/count) on step 1500
|
||||
1 2.00000 8.95165e-07 192
|
||||
1 328.410 7.19288e-05 64
|
||||
1500 514.22181 -421.99736 48.624007 115.58906 2400.1515
|
||||
1600 533.9392 -430.89564 38.263047 115.07866 4331.2167
|
||||
1700 529.29154 -424.02106 35.673551 114.94439 2973.3181
|
||||
1800 535.52166 -438.41572 43.952454 114.75272 1799.8588
|
||||
1900 519.40791 -413.30717 34.399008 114.9856 4270.415
|
||||
SHAKE stats (type/ave/delta/count) on step 2000
|
||||
1 2.00000 8.04353e-07 192
|
||||
1 328.410 7.97925e-05 64
|
||||
2000 553.26572 -446.67936 35.423618 114.83268 1729.4708
|
||||
2100 546.58793 -448.39367 43.475288 114.82028 1266.9778
|
||||
2200 536.17021 -442.03485 46.968579 114.76641 2419.0965
|
||||
2300 556.29724 -457.19766 43.217115 114.99049 1122.5796
|
||||
2400 529.02178 -437.66639 49.530498 114.89949 1714.4747
|
||||
SHAKE stats (type/ave/delta/count) on step 2500
|
||||
1 2.00000 6.70601e-07 192
|
||||
1 328.410 6.39002e-05 64
|
||||
2500 500.56024 -423.00108 62.368402 115.33925 3750.7564
|
||||
Loop time of 6.4485 on 1 procs for 2500 steps with 384 atoms
|
||||
|
||||
Performance: 33.496 ns/day, 0.717 hours/ns, 387.687 timesteps/s
|
||||
99.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.9332 | 4.9332 | 4.9332 | 0.0 | 76.50
|
||||
Bond | 0.013685 | 0.013685 | 0.013685 | 0.0 | 0.21
|
||||
Kspace | 0.33226 | 0.33226 | 0.33226 | 0.0 | 5.15
|
||||
Neigh | 1.0663 | 1.0663 | 1.0663 | 0.0 | 16.54
|
||||
Comm | 0.062471 | 0.062471 | 0.062471 | 0.0 | 0.97
|
||||
Output | 0.00048861 | 0.00048861 | 0.00048861 | 0.0 | 0.01
|
||||
Modify | 0.030447 | 0.030447 | 0.030447 | 0.0 | 0.47
|
||||
Other | | 0.009605 | | | 0.15
|
||||
|
||||
Nlocal: 384.000 ave 384 max 384 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 5594.00 ave 5594 max 5594 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 129739.0 ave 129739 max 129739 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 129739
|
||||
Ave neighs/atom = 337.86198
|
||||
Ave special neighs/atom = 2.0000000
|
||||
Neighbor list builds = 320
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:06
|
|
@ -0,0 +1,158 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo using atom style hybrid template charge to simulate a h2o/co2 mixture
|
||||
|
||||
units real
|
||||
molecule twomols h2o.mol co2.mol offset 2 1 1 0 0
|
||||
Read molecule template twomols:
|
||||
1 molecules
|
||||
3 atoms with max type 2
|
||||
2 bonds with max type 1
|
||||
1 angles with max type 1
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
Read molecule template twomols:
|
||||
1 molecules
|
||||
3 atoms with max type 4
|
||||
2 bonds with max type 2
|
||||
1 angles with max type 2
|
||||
0 dihedrals with max type 0
|
||||
0 impropers with max type 0
|
||||
atom_style hybrid template twomols charge
|
||||
boundary p p p
|
||||
pair_style lj/cut/coul/long 12
|
||||
pair_modify mix arithmetic tail yes
|
||||
kspace_style pppm 0.0001
|
||||
pair_style lj/cut/coul/long 12
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
|
||||
read_data h2o-co2.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-10.000000 -10.000000 -10.000000) to (10.000000 10.000000 10.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
384 atoms
|
||||
256 template bonds
|
||||
128 template angles
|
||||
read_data CPU = 0.002 seconds
|
||||
|
||||
group h2o type 1 2
|
||||
192 atoms in group h2o
|
||||
group co2 type 3 4
|
||||
192 atoms in group co2
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
timestep 1.0
|
||||
|
||||
velocity all create 300.0 34672
|
||||
thermo 100
|
||||
|
||||
fix 1 all nve
|
||||
fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols
|
||||
WARNING: Molecule template for fix shake has multiple molecules (src/RIGID/fix_shake.cpp:174)
|
||||
0 = # of size 2 clusters
|
||||
0 = # of size 3 clusters
|
||||
0 = # of size 4 clusters
|
||||
64 = # of frozen angles
|
||||
find clusters CPU = 0.000 seconds
|
||||
#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu
|
||||
|
||||
run 2500
|
||||
PPPM initialization ...
|
||||
using 12-bit tables for long-range coulomb (src/kspace.cpp:328)
|
||||
G vector (1/distance) = 0.21452218
|
||||
grid = 8 8 8
|
||||
stencil order = 5
|
||||
estimated absolute RMS force accuracy = 0.0237525
|
||||
estimated relative force accuracy = 7.1529949e-05
|
||||
using double precision FFTW3
|
||||
3d grid and FFT values/proc = 1053 128
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 1 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 15
|
||||
ghost atom cutoff = 15
|
||||
binsize = 7.5, bins = 3 3 3
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut/coul/long, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
SHAKE stats (type/ave/delta/count) on step 0
|
||||
1 1.99995 1.29379e-05 192
|
||||
1 328.411 6.25278e-13 64
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.952 | 4.952 | 4.952 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 360.18809 -173.24472 3.5527137e-13 169.25036 2429.6019
|
||||
100 363.1919 -274.40147 44.351072 115.30094 -883.3694
|
||||
200 427.79493 -329.78833 38.354106 115.34674 1523.3792
|
||||
300 465.88637 -350.56147 22.60429 115.0441 385.47189
|
||||
400 436.9596 -357.24661 57.161471 115.41032 2307.0158
|
||||
SHAKE stats (type/ave/delta/count) on step 500
|
||||
1 2.00000 4.02911e-07 192
|
||||
1 328.410 5.78945e-05 64
|
||||
500 480.93505 -378.08914 36.268541 115.49016 2822.245
|
||||
600 457.38144 -381.99241 62.732739 115.65446 -387.65505
|
||||
700 488.20801 -393.89265 45.144482 115.47829 3086.2987
|
||||
800 463.5234 -384.28682 59.826927 116.2945 3310.9691
|
||||
900 500.48024 -424.35693 64.621298 116.16022 -612.4406
|
||||
SHAKE stats (type/ave/delta/count) on step 1000
|
||||
1 2.00000 8.21157e-07 192
|
||||
1 328.410 5.79572e-05 64
|
||||
1000 522.3905 -424.85292 44.232122 116.10905 3948.1535
|
||||
1100 466.7856 -395.03916 67.204265 116.02145 2555.2069
|
||||
1200 505.58079 -424.30563 59.681049 116.12127 1919.2701
|
||||
1300 510.78441 -418.28838 48.398524 115.804 3476.7443
|
||||
1400 494.39282 -407.60176 52.9665 115.47219 2343.5129
|
||||
SHAKE stats (type/ave/delta/count) on step 1500
|
||||
1 2.00000 7.21617e-07 192
|
||||
1 328.410 8.01168e-05 64
|
||||
1500 533.48096 -444.9571 53.263393 115.58182 1055.8053
|
||||
1600 548.84084 -449.81134 43.134527 115.20409 3084.0678
|
||||
1700 522.65205 -419.10648 37.279839 115.1519 1813.2589
|
||||
1800 497.72839 -403.88156 45.774501 115.17212 1822.8113
|
||||
1900 535.04509 -434.52042 40.685094 114.9275 4216.4353
|
||||
SHAKE stats (type/ave/delta/count) on step 2000
|
||||
1 2.00000 1.03652e-06 192
|
||||
1 328.410 5.49305e-05 64
|
||||
2000 540.42903 -436.41996 37.284032 114.74637 1422.0078
|
||||
2100 534.80707 -439.51681 46.068646 115.08833 1460.2864
|
||||
2200 507.8413 -419.62464 51.912776 115.18345 3790.8003
|
||||
2300 553.37305 -456.23124 45.592723 115.55197 515.72888
|
||||
2400 538.60716 -447.65657 51.130476 115.62382 2087.6217
|
||||
SHAKE stats (type/ave/delta/count) on step 2500
|
||||
1 2.00000 6.38759e-07 192
|
||||
1 328.410 5.54712e-05 64
|
||||
2500 507.38323 -436.58125 69.949293 115.8278 3313.9095
|
||||
Loop time of 2.62759 on 4 procs for 2500 steps with 384 atoms
|
||||
|
||||
Performance: 82.205 ns/day, 0.292 hours/ns, 951.443 timesteps/s
|
||||
93.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.1769 | 1.3595 | 1.5961 | 13.1 | 51.74
|
||||
Bond | 0.0040634 | 0.0042451 | 0.0044163 | 0.2 | 0.16
|
||||
Kspace | 0.37643 | 0.62177 | 0.8124 | 20.0 | 23.66
|
||||
Neigh | 0.35517 | 0.35603 | 0.35688 | 0.1 | 13.55
|
||||
Comm | 0.15521 | 0.16781 | 0.18101 | 2.8 | 6.39
|
||||
Output | 0.00039921 | 0.00083364 | 0.0018058 | 0.0 | 0.03
|
||||
Modify | 0.081231 | 0.095032 | 0.10957 | 3.5 | 3.62
|
||||
Other | | 0.02238 | | | 0.85
|
||||
|
||||
Nlocal: 96.0000 ave 105 max 84 min
|
||||
Histogram: 1 0 0 0 1 0 0 0 1 1
|
||||
Nghost: 3764.00 ave 3776 max 3755 min
|
||||
Histogram: 1 1 0 0 0 1 0 0 0 1
|
||||
Neighs: 32527.2 ave 34260 max 29030 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||
|
||||
Total # of neighbors = 130109
|
||||
Ave neighs/atom = 338.82552
|
||||
Ave special neighs/atom = 2.0000000
|
||||
Neighbor list builds = 321
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:02
|
|
@ -0,0 +1,122 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data molecular-mix.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
3872 atoms
|
||||
reading velocities ...
|
||||
3872 velocities
|
||||
scanning bonds ...
|
||||
2 = max bonds/atom
|
||||
scanning angles ...
|
||||
1 = max angles/atom
|
||||
scanning dihedrals ...
|
||||
2 = max dihedrals/atom
|
||||
reading bonds ...
|
||||
3072 bonds
|
||||
reading angles ...
|
||||
3072 angles
|
||||
reading dihedrals ...
|
||||
3072 dihedrals
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0.0 0.0 0.0
|
||||
special bond factors coul: 0.0 0.0 0.0
|
||||
2 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
4 = max # of 1-4 neighbors
|
||||
5 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.014 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 10.74 | 10.74 | 10.74 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304
|
||||
200 296.49886 -4884.3039 1747.4798 284.39198 11537.322
|
||||
300 295.24937 -4850.2788 1642.4584 198.97822 9160.666
|
||||
400 297.73321 -4952.9967 1660.6439 143.10604 10751.859
|
||||
500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826
|
||||
600 299.50756 -4999.965 1588.0327 44.000269 9233.8621
|
||||
700 295.64728 -4958.2253 1646.2011 99.365838 11089.418
|
||||
800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685
|
||||
900 300.80754 -5033.4853 1727.4591 164.90648 11497.526
|
||||
1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551
|
||||
1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28
|
||||
1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201
|
||||
1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762
|
||||
1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178
|
||||
1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337
|
||||
1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415
|
||||
1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882
|
||||
1800 301.9386 -5068.1221 1755.577 171.43863 11229.315
|
||||
1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348
|
||||
2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209
|
||||
Loop time of 15.6807 on 1 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 11.020 ns/day, 2.178 hours/ns, 127.545 timesteps/s
|
||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 14.196 | 14.196 | 14.196 | 0.0 | 90.53
|
||||
Bond | 0.58712 | 0.58712 | 0.58712 | 0.0 | 3.74
|
||||
Neigh | 0.6978 | 0.6978 | 0.6978 | 0.0 | 4.45
|
||||
Comm | 0.082724 | 0.082724 | 0.082724 | 0.0 | 0.53
|
||||
Output | 0.00052338 | 0.00052338 | 0.00052338 | 0.0 | 0.00
|
||||
Modify | 0.078892 | 0.078892 | 0.078892 | 0.0 | 0.50
|
||||
Other | | 0.0374 | | | 0.24
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11633.0 ave 11633 max 11633 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770365.0 ave 770365 max 770365 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770365
|
||||
Ave neighs/atom = 198.95790
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:15
|
|
@ -0,0 +1,122 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data molecular-mix.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
3872 atoms
|
||||
reading velocities ...
|
||||
3872 velocities
|
||||
scanning bonds ...
|
||||
2 = max bonds/atom
|
||||
scanning angles ...
|
||||
1 = max angles/atom
|
||||
scanning dihedrals ...
|
||||
2 = max dihedrals/atom
|
||||
reading bonds ...
|
||||
3072 bonds
|
||||
reading angles ...
|
||||
3072 angles
|
||||
reading dihedrals ...
|
||||
3072 dihedrals
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0.0 0.0 0.0
|
||||
special bond factors coul: 0.0 0.0 0.0
|
||||
2 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
4 = max # of 1-4 neighbors
|
||||
5 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_data CPU = 0.039 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.101 | 8.197 | 8.483 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303
|
||||
200 301.9265 -4884.8594 1745.0359 344.02042 11561.79
|
||||
300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245
|
||||
400 302 -4951.4895 1664.5419 197.74463 10784.638
|
||||
500 299.17946 -4983.7996 1615.0068 83.354011 9578.745
|
||||
600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926
|
||||
700 300.90925 -4959.9309 1653.6347 165.81003 11121.514
|
||||
800 293.14833 -4895.5912 1707.8754 194.83943 8397.927
|
||||
900 299.0508 -5032.8395 1726.0885 143.91128 11478.847
|
||||
1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738
|
||||
1100 301.13534 -5004.2113 1761.645 232.14877 11246.198
|
||||
1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178
|
||||
1300 300.79377 -5011.7826 1642.093 101.08422 10390.705
|
||||
1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88
|
||||
1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487
|
||||
1600 298.68972 -4962.1273 1747.402 231.77054 10941.114
|
||||
1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312
|
||||
1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02
|
||||
1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102
|
||||
2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704
|
||||
Loop time of 4.33662 on 4 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 39.847 ns/day, 0.602 hours/ns, 461.188 timesteps/s
|
||||
98.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.6239 | 3.6669 | 3.7143 | 1.8 | 84.56
|
||||
Bond | 0.14954 | 0.15355 | 0.15614 | 0.7 | 3.54
|
||||
Neigh | 0.17931 | 0.17933 | 0.17934 | 0.0 | 4.14
|
||||
Comm | 0.23604 | 0.28181 | 0.32663 | 6.5 | 6.50
|
||||
Output | 0.00034802 | 0.00069388 | 0.0017292 | 0.0 | 0.02
|
||||
Modify | 0.029915 | 0.036141 | 0.039601 | 1.9 | 0.83
|
||||
Other | | 0.01821 | | | 0.42
|
||||
|
||||
Nlocal: 968.000 ave 979 max 948 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||
Nghost: 6321.25 ave 6336 max 6309 min
|
||||
Histogram: 2 0 0 0 0 0 0 1 0 1
|
||||
Neighs: 192540.0 ave 195406 max 187182 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 0 2
|
||||
|
||||
Total # of neighbors = 770161
|
||||
Ave neighs/atom = 198.90522
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:04
|
|
@ -0,0 +1,106 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
read_restart molecular-mix.restart
|
||||
Reading restart file ...
|
||||
restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020
|
||||
restoring atom style molecular from restart
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
restoring pair style lj/cut from restart
|
||||
restoring bond style harmonic from restart
|
||||
restoring angle style harmonic from restart
|
||||
restoring dihedral style harmonic from restart
|
||||
3872 atoms
|
||||
3072 bonds
|
||||
3072 angles
|
||||
3072 dihedrals
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0.0 0.0 0.0
|
||||
special bond factors coul: 0.0 0.0 0.0
|
||||
2 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
4 = max # of 1-4 neighbors
|
||||
5 = max # of special neighbors
|
||||
special bonds CPU = 0.002 seconds
|
||||
read_restart CPU = 0.008 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 10.74 | 10.74 | 10.74 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304
|
||||
200 296.49886 -4884.3039 1747.4798 284.39198 11537.322
|
||||
300 295.24937 -4850.2788 1642.4584 198.97822 9160.666
|
||||
400 297.73321 -4952.9967 1660.6439 143.10604 10751.859
|
||||
500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826
|
||||
600 299.50756 -4999.965 1588.0327 44.000269 9233.8621
|
||||
700 295.64728 -4958.2253 1646.2011 99.365838 11089.418
|
||||
800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685
|
||||
900 300.80754 -5033.4853 1727.4591 164.90648 11497.526
|
||||
1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551
|
||||
1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28
|
||||
1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201
|
||||
1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762
|
||||
1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178
|
||||
1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337
|
||||
1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415
|
||||
1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882
|
||||
1800 301.9386 -5068.1221 1755.577 171.43863 11229.315
|
||||
1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348
|
||||
2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209
|
||||
Loop time of 15.5879 on 1 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 11.086 ns/day, 2.165 hours/ns, 128.305 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 14.116 | 14.116 | 14.116 | 0.0 | 90.56
|
||||
Bond | 0.58742 | 0.58742 | 0.58742 | 0.0 | 3.77
|
||||
Neigh | 0.68543 | 0.68543 | 0.68543 | 0.0 | 4.40
|
||||
Comm | 0.082574 | 0.082574 | 0.082574 | 0.0 | 0.53
|
||||
Output | 0.00054698 | 0.00054698 | 0.00054698 | 0.0 | 0.00
|
||||
Modify | 0.078446 | 0.078446 | 0.078446 | 0.0 | 0.50
|
||||
Other | | 0.03761 | | | 0.24
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11633.0 ave 11633 max 11633 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770365.0 ave 770365 max 770365 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770365
|
||||
Ave neighs/atom = 198.95790
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:15
|
|
@ -0,0 +1,107 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
read_restart molecular-mix.restart
|
||||
Reading restart file ...
|
||||
restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020
|
||||
WARNING: Restart file used different # of processors: 1 vs. 4 (src/read_restart.cpp:697)
|
||||
restoring atom style molecular from restart
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
restoring pair style lj/cut from restart
|
||||
restoring bond style harmonic from restart
|
||||
restoring angle style harmonic from restart
|
||||
restoring dihedral style harmonic from restart
|
||||
3872 atoms
|
||||
3072 bonds
|
||||
3072 angles
|
||||
3072 dihedrals
|
||||
Finding 1-2 1-3 1-4 neighbors ...
|
||||
special bond factors lj: 0.0 0.0 0.0
|
||||
special bond factors coul: 0.0 0.0 0.0
|
||||
2 = max # of 1-2 neighbors
|
||||
2 = max # of 1-3 neighbors
|
||||
4 = max # of 1-4 neighbors
|
||||
5 = max # of special neighbors
|
||||
special bonds CPU = 0.001 seconds
|
||||
read_restart CPU = 0.031 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.101 | 8.197 | 8.483 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303
|
||||
200 301.9265 -4884.8594 1745.0359 344.02042 11561.79
|
||||
300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245
|
||||
400 302 -4951.4895 1664.5419 197.74463 10784.638
|
||||
500 299.17946 -4983.7996 1615.0068 83.354011 9578.745
|
||||
600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926
|
||||
700 300.90925 -4959.9309 1653.6347 165.81003 11121.514
|
||||
800 293.14833 -4895.5912 1707.8754 194.83943 8397.927
|
||||
900 299.0508 -5032.8395 1726.0885 143.91128 11478.847
|
||||
1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738
|
||||
1100 301.13534 -5004.2113 1761.645 232.14877 11246.198
|
||||
1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178
|
||||
1300 300.79377 -5011.7826 1642.093 101.08422 10390.705
|
||||
1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88
|
||||
1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487
|
||||
1600 298.68972 -4962.1273 1747.402 231.77054 10941.114
|
||||
1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312
|
||||
1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02
|
||||
1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102
|
||||
2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704
|
||||
Loop time of 5.2142 on 4 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 33.140 ns/day, 0.724 hours/ns, 383.568 timesteps/s
|
||||
94.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.5706 | 3.6724 | 3.7809 | 4.9 | 70.43
|
||||
Bond | 0.14654 | 0.1524 | 0.15708 | 1.2 | 2.92
|
||||
Neigh | 0.18217 | 0.1822 | 0.18221 | 0.0 | 3.49
|
||||
Comm | 0.74346 | 0.8715 | 0.9808 | 10.9 | 16.71
|
||||
Output | 0.00034776 | 0.00084716 | 0.0023413 | 0.0 | 0.02
|
||||
Modify | 0.12457 | 0.18985 | 0.31013 | 17.4 | 3.64
|
||||
Other | | 0.145 | | | 2.78
|
||||
|
||||
Nlocal: 968.000 ave 979 max 948 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||
Nghost: 6321.25 ave 6336 max 6309 min
|
||||
Histogram: 2 0 0 0 0 0 0 1 0 1
|
||||
Neighs: 192540.0 ave 195406 max 187182 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 0 2
|
||||
|
||||
Total # of neighbors = 770161
|
||||
Ave neighs/atom = 198.90522
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:05
|
|
@ -0,0 +1,174 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2
|
||||
Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
Created 3072 atoms
|
||||
create_atoms CPU = 0.003 seconds
|
||||
create_atoms 2 random 800 495437 box
|
||||
Created 800 atoms
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 12.28 | 12.28 | 12.28 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 4.3897851e+13 341.92144 4.3897851e+13 1.0886888e+14
|
||||
100 0 -4351.8383 516.49891 -3835.3394 11635.037
|
||||
190 0 -6191.8175 457.61209 -5734.2054 4365.373
|
||||
Loop time of 3.46057 on 1 procs for 190 steps with 3872 atoms
|
||||
|
||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
43897850768892.8 -5729.17187196146 -5734.20542785978
|
||||
Force two-norm initial, final = 1.1080994e+15 72.746805
|
||||
Force max component initial, final = 4.6607099e+14 17.394645
|
||||
Final line search alpha, max atom move = 0.0041634525 0.072421779
|
||||
Iterations, force evaluations = 190 297
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.0573 | 3.0573 | 3.0573 | 0.0 | 88.35
|
||||
Bond | 0.10271 | 0.10271 | 0.10271 | 0.0 | 2.97
|
||||
Neigh | 0.26654 | 0.26654 | 0.26654 | 0.0 | 7.70
|
||||
Comm | 0.013532 | 0.013532 | 0.013532 | 0.0 | 0.39
|
||||
Output | 3.3796e-05 | 3.3796e-05 | 3.3796e-05 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.02041 | | | 0.59
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 12122.0 ave 12122 max 12122 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 774375.0 ave 774375 max 774375 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 774375
|
||||
Ave neighs/atom = 199.99354
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
Per MPI rank memory allocation (min/avg/max) = 11.16 | 11.16 | 11.16 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 100 -6191.8175 457.61209 -4580.3339 4842.3161
|
||||
100 106.81295 -5670.2783 921.20332 -3516.5907 5959.5039
|
||||
200 119.22024 -5701.0103 1040.0336 -3285.3283 6755.0994
|
||||
300 127.23574 -5706.7587 1023.9882 -3214.6335 6081.4162
|
||||
400 133.7471 -5734.1781 1113.1696 -3077.7387 6569.8751
|
||||
500 138.72092 -5756.3282 1191.5668 -2964.1003 6433.1441
|
||||
600 149.02612 -5731.7291 1205.3124 -2806.8466 6366.853
|
||||
700 153.5469 -5670.5879 925.61956 -2973.2344 7677.5226
|
||||
800 163.38118 -5629.0757 1180.6507 -2563.216 5865.8079
|
||||
900 173.27279 -5639.6903 1160.2138 -2480.131 8168.7364
|
||||
1000 178.05354 -5579.0492 913.19337 -2611.3466 6220.8001
|
||||
1100 188.99752 -5551.4873 1178.9541 -2191.7446 7734.6527
|
||||
1200 196.9019 -5511.951 1121.4617 -2118.4942 7602.4591
|
||||
1300 202.98293 -5433.6794 1194.3592 -1897.1579 7067.1876
|
||||
1400 212.86876 -5411.3798 1276.3809 -1678.7668 8867.2713
|
||||
1500 221.26247 -5359.7405 1390.3889 -1416.2668 6939.8559
|
||||
1600 228.1783 -5288.5782 1375.3053 -1280.3883 9387.8277
|
||||
1700 234.74001 -5255.1136 1192.2292 -1354.2862 7400.1124
|
||||
1800 244.1285 -5282.2876 1386.5554 -1078.8029 9473.6491
|
||||
1900 253.62148 -5158.5569 1242.3041 -989.78669 8596.2722
|
||||
2000 260.24011 -5157.2005 1477.2039 -677.16002 9136.1769
|
||||
2100 263.80129 -5096.4397 1403.9977 -648.51387 9640.0807
|
||||
2200 278.10721 -5098.89 1545.7716 -344.11827 8509.7183
|
||||
2300 278.05084 -5053.818 1495.944 -349.52438 10299.97
|
||||
2400 287.92949 -5011.3524 1527.0261 -161.98978 8854.8877
|
||||
2500 302.37248 -4957.687 1700.6563 231.95939 10617.134
|
||||
Loop time of 18.6761 on 1 procs for 2500 steps with 3872 atoms
|
||||
|
||||
Performance: 11.566 ns/day, 2.075 hours/ns, 133.861 timesteps/s
|
||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 17.06 | 17.06 | 17.06 | 0.0 | 91.35
|
||||
Bond | 0.73068 | 0.73068 | 0.73068 | 0.0 | 3.91
|
||||
Neigh | 0.63671 | 0.63671 | 0.63671 | 0.0 | 3.41
|
||||
Comm | 0.10272 | 0.10272 | 0.10272 | 0.0 | 0.55
|
||||
Output | 0.00064976 | 0.00064976 | 0.00064976 | 0.0 | 0.00
|
||||
Modify | 0.098028 | 0.098028 | 0.098028 | 0.0 | 0.52
|
||||
Other | | 0.04742 | | | 0.25
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11793.0 ave 11793 max 11793 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770411.0 ave 770411 max 770411 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770411
|
||||
Ave neighs/atom = 198.96978
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 33
|
||||
Dangerous builds = 0
|
||||
write_data molecular-mix.data
|
||||
System init for write_data ...
|
||||
Total wall time: 0:00:22
|
|
@ -0,0 +1,175 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style molecular
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2
|
||||
Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
Created 3072 atoms
|
||||
create_atoms CPU = 0.011 seconds
|
||||
create_atoms 2 random 800 495437 box
|
||||
Created 800 atoms
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 9.623 | 9.719 | 10.01 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 7.5430044e+16 341.92144 7.5430044e+16 1.8707026e+17
|
||||
100 0 -3410.6986 572.28283 -2838.4158 14603.831
|
||||
200 0 -6109.2306 483.67771 -5625.5529 5069.1821
|
||||
204 0 -6137.0238 483.14639 -5653.8774 4952.4081
|
||||
Loop time of 1.10481 on 4 procs for 204 steps with 3872 atoms
|
||||
|
||||
98.2% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
7.54300441078755e+16 -5648.75822692028 -5653.87742448419
|
||||
Force two-norm initial, final = 8.7430661e+18 74.636845
|
||||
Force max component initial, final = 4.1468626e+18 8.6800755
|
||||
Final line search alpha, max atom move = 0.0032186736 0.02793833
|
||||
Iterations, force evaluations = 204 328
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.89902 | 0.90561 | 0.90821 | 0.4 | 81.97
|
||||
Bond | 0.029749 | 0.030411 | 0.031345 | 0.4 | 2.75
|
||||
Neigh | 0.088655 | 0.088662 | 0.088666 | 0.0 | 8.03
|
||||
Comm | 0.063187 | 0.068096 | 0.070678 | 1.1 | 6.16
|
||||
Output | 4.8304e-05 | 0.00011426 | 0.00031124 | 0.0 | 0.01
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.01191 | | | 1.08
|
||||
|
||||
Nlocal: 968.000 ave 980 max 954 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 1 1
|
||||
Nghost: 6630.00 ave 6644 max 6616 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Neighs: 193550.0 ave 195957 max 191376 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 774200
|
||||
Ave neighs/atom = 199.94835
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.498 | 8.785 | 8.881 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 100 -6137.0238 483.14639 -4500.0059 5429.3513
|
||||
100 107.18608 -5623.5468 925.13786 -3461.6193 5640.5924
|
||||
200 119.37927 -5671.054 1050.9079 -3242.6626 7494.8637
|
||||
300 127.21276 -5646.2809 1053.2662 -3125.143 5661.4525
|
||||
400 133.89893 -5674.1417 1139.7 -2989.42 7206.4877
|
||||
500 138.74889 -5679.3757 1234.644 -2843.7477 6741.4965
|
||||
600 150.20403 -5665.0258 1211.9245 -2719.9398 6299.2406
|
||||
700 156.0507 -5681.5445 978.62091 -2902.2989 8429.7188
|
||||
800 160.67293 -5579.9146 1214.6749 -2511.2805 5217.5425
|
||||
900 172.06808 -5627.6903 1118.4786 -2523.767 8995.6018
|
||||
1000 179.82813 -5508.1617 925.22393 -2507.9521 5760.9688
|
||||
1100 190.36338 -5536.6687 1176.6794 -2163.4405 8079.5754
|
||||
1200 195.57864 -5508.64 1163.8098 -2088.1038 7738.58
|
||||
1300 204.05249 -5401.8527 1219.9794 -1827.3697 6562.2311
|
||||
1400 211.74944 -5365.2571 1326.2667 -1595.6738 9772.2773
|
||||
1500 222.08023 -5265.4213 1418.3572 -1284.5435 6395.1161
|
||||
1600 225.86408 -5316.5874 1288.1407 -1422.2653 10163.26
|
||||
1700 232.35057 -5192.56 1254.0031 -1257.5297 7437.3606
|
||||
1800 238.16652 -5199.008 1457.8824 -992.98993 9783.4089
|
||||
1900 250.86418 -5166.917 1256.4887 -1015.7777 8635.027
|
||||
2000 262.41293 -5088.5573 1494.6069 -566.04218 9100.8833
|
||||
2100 268.55207 -5057.9273 1459.8499 -499.33144 10002.961
|
||||
2200 279.96891 -4963.9376 1526.8577 -206.59825 8943.2443
|
||||
2300 286.55635 -5047.2961 1538.5334 -202.27038 10711.176
|
||||
2400 292.56468 -4910.7083 1625.6283 90.740663 8482.6522
|
||||
2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
Loop time of 5.954 on 4 procs for 2500 steps with 3872 atoms
|
||||
|
||||
Performance: 36.278 ns/day, 0.662 hours/ns, 419.886 timesteps/s
|
||||
95.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.4642 | 4.6298 | 4.8946 | 7.5 | 77.76
|
||||
Bond | 0.18992 | 0.19849 | 0.20566 | 1.3 | 3.33
|
||||
Neigh | 0.18926 | 0.18928 | 0.18929 | 0.0 | 3.18
|
||||
Comm | 0.56456 | 0.82727 | 1.0096 | 17.9 | 13.89
|
||||
Output | 0.00044023 | 0.00092791 | 0.0020343 | 0.0 | 0.02
|
||||
Modify | 0.077974 | 0.080378 | 0.082874 | 0.8 | 1.35
|
||||
Other | | 0.02782 | | | 0.47
|
||||
|
||||
Nlocal: 968.000 ave 989 max 944 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 0 2
|
||||
Nghost: 6381.50 ave 6416 max 6351 min
|
||||
Histogram: 1 0 0 1 0 1 0 0 0 1
|
||||
Neighs: 192557.0 ave 197456 max 188754 min
|
||||
Histogram: 2 0 0 0 0 0 0 1 0 1
|
||||
|
||||
Total # of neighbors = 770229
|
||||
Ave neighs/atom = 198.92278
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 34
|
||||
Dangerous builds = 0
|
||||
write_data molecular-mix.data
|
||||
System init for write_data ...
|
||||
Total wall time: 0:00:07
|
|
@ -0,0 +1,175 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 1: creating system with create_atoms
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1
|
||||
Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
Created 3072 atoms
|
||||
create_atoms CPU = 0.001 seconds
|
||||
create_atoms 2 random 800 495437 box
|
||||
Created 800 atoms
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 8.050 | 8.050 | 8.050 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 4.3897851e+13 341.92144 4.3897851e+13 1.0886888e+14
|
||||
100 0 -4351.8383 516.49891 -3835.3394 11635.037
|
||||
190 0 -6191.8175 457.61209 -5734.2054 4365.373
|
||||
Loop time of 3.4619 on 1 procs for 190 steps with 3872 atoms
|
||||
|
||||
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
43897850768892.8 -5729.17187196146 -5734.20542785978
|
||||
Force two-norm initial, final = 1.1080994e+15 72.746805
|
||||
Force max component initial, final = 4.6607099e+14 17.394645
|
||||
Final line search alpha, max atom move = 0.0041634525 0.072421779
|
||||
Iterations, force evaluations = 190 297
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.0549 | 3.0549 | 3.0549 | 0.0 | 88.24
|
||||
Bond | 0.10344 | 0.10344 | 0.10344 | 0.0 | 2.99
|
||||
Neigh | 0.2695 | 0.2695 | 0.2695 | 0.0 | 7.78
|
||||
Comm | 0.013772 | 0.013772 | 0.013772 | 0.0 | 0.40
|
||||
Output | 3.3707e-05 | 3.3707e-05 | 3.3707e-05 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.02027 | | | 0.59
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 12122.0 ave 12122 max 12122 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 774375.0 ave 774375 max 774375 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 774375
|
||||
Ave neighs/atom = 199.99354
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.925 | 6.925 | 6.925 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 100 -6191.8175 457.61209 -4580.3339 4842.3161
|
||||
100 106.81295 -5670.2783 921.20332 -3516.5907 5959.5039
|
||||
200 119.22024 -5701.0103 1040.0336 -3285.3283 6755.0994
|
||||
300 127.23574 -5706.7587 1023.9882 -3214.6335 6081.4162
|
||||
400 133.7471 -5734.1781 1113.1696 -3077.7387 6569.8751
|
||||
500 138.72092 -5756.3282 1191.5668 -2964.1003 6433.1441
|
||||
600 149.02612 -5731.7291 1205.3124 -2806.8466 6366.853
|
||||
700 153.5469 -5670.5879 925.61956 -2973.2344 7677.5226
|
||||
800 163.38118 -5629.0757 1180.6507 -2563.216 5865.8079
|
||||
900 173.27279 -5639.6903 1160.2138 -2480.131 8168.7364
|
||||
1000 178.05354 -5579.0492 913.19337 -2611.3466 6220.8001
|
||||
1100 188.99752 -5551.4873 1178.9541 -2191.7446 7734.6527
|
||||
1200 196.9019 -5511.951 1121.4617 -2118.4942 7602.4591
|
||||
1300 202.98293 -5433.6794 1194.3592 -1897.1579 7067.1876
|
||||
1400 212.86876 -5411.3798 1276.3809 -1678.7668 8867.2713
|
||||
1500 221.26247 -5359.7405 1390.3889 -1416.2668 6939.8559
|
||||
1600 228.1783 -5288.5782 1375.3053 -1280.3883 9387.8277
|
||||
1700 234.74001 -5255.1136 1192.2292 -1354.2862 7400.1124
|
||||
1800 244.1285 -5282.2876 1386.5554 -1078.8029 9473.6491
|
||||
1900 253.62148 -5158.5569 1242.3041 -989.78669 8596.2722
|
||||
2000 260.24011 -5157.2005 1477.2039 -677.16002 9136.1769
|
||||
2100 263.80129 -5096.4397 1403.9977 -648.51387 9640.0807
|
||||
2200 278.10721 -5098.89 1545.7716 -344.11827 8509.7183
|
||||
2300 278.05084 -5053.818 1495.944 -349.52438 10299.97
|
||||
2400 287.92949 -5011.3524 1527.0261 -161.98978 8854.8877
|
||||
2500 302.37248 -4957.687 1700.6563 231.95939 10617.134
|
||||
Loop time of 18.7845 on 1 procs for 2500 steps with 3872 atoms
|
||||
|
||||
Performance: 11.499 ns/day, 2.087 hours/ns, 133.089 timesteps/s
|
||||
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 17.14 | 17.14 | 17.14 | 0.0 | 91.25
|
||||
Bond | 0.74217 | 0.74217 | 0.74217 | 0.0 | 3.95
|
||||
Neigh | 0.65005 | 0.65005 | 0.65005 | 0.0 | 3.46
|
||||
Comm | 0.10364 | 0.10364 | 0.10364 | 0.0 | 0.55
|
||||
Output | 0.0006739 | 0.0006739 | 0.0006739 | 0.0 | 0.00
|
||||
Modify | 0.099647 | 0.099647 | 0.099647 | 0.0 | 0.53
|
||||
Other | | 0.04816 | | | 0.26
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11793.0 ave 11793 max 11793 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770411.0 ave 770411 max 770411 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770411
|
||||
Ave neighs/atom = 198.96978
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 33
|
||||
Dangerous builds = 0
|
||||
write_data template-mix.data
|
||||
System init for write_data ...
|
||||
Total wall time: 0:00:22
|
|
@ -0,0 +1,176 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 1: creating system with create_atoms
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
lattice sc 6.0
|
||||
Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000
|
||||
variable boxlen index 4.0
|
||||
region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice
|
||||
region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice
|
||||
create_box 2 box bond/types 1 angle/types 1 dihedral/types 1
|
||||
Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
|
||||
create_atoms 0 box mol cychex 734594
|
||||
Created 3072 atoms
|
||||
create_atoms CPU = 0.001 seconds
|
||||
create_atoms 2 random 800 495437 box
|
||||
Created 800 atoms
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
mass 1 14.027
|
||||
mass 2 16.043
|
||||
|
||||
pair_coeff 1 1 0.1180 3.905
|
||||
pair_coeff 2 2 0.2940 3.730
|
||||
|
||||
bond_coeff 1 260.00 1.5260
|
||||
angle_coeff 1 63.0 112.40
|
||||
dihedral_coeff 1 2.0 1 3
|
||||
|
||||
thermo 100
|
||||
minimize 0.001 0.001 500 1000
|
||||
WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.345 | 5.441 | 5.728 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 7.5430044e+16 341.92144 7.5430044e+16 1.8707026e+17
|
||||
100 0 -3410.6986 572.28283 -2838.4158 14603.831
|
||||
200 0 -6109.2306 483.67771 -5625.5529 5069.1821
|
||||
204 0 -6137.0238 483.14639 -5653.8774 4952.4081
|
||||
Loop time of 1.08919 on 4 procs for 204 steps with 3872 atoms
|
||||
|
||||
97.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
Minimization stats:
|
||||
Stopping criterion = energy tolerance
|
||||
Energy initial, next-to-last, final =
|
||||
7.54300441078755e+16 -5648.75822692028 -5653.87742448419
|
||||
Force two-norm initial, final = 8.7430661e+18 74.636845
|
||||
Force max component initial, final = 4.1468626e+18 8.6800755
|
||||
Final line search alpha, max atom move = 0.0032186736 0.02793833
|
||||
Iterations, force evaluations = 204 328
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0.8748 | 0.88765 | 0.9004 | 1.2 | 81.50
|
||||
Bond | 0.029354 | 0.029865 | 0.030434 | 0.2 | 2.74
|
||||
Neigh | 0.07699 | 0.077483 | 0.077966 | 0.2 | 7.11
|
||||
Comm | 0.072926 | 0.084481 | 0.097433 | 3.8 | 7.76
|
||||
Output | 4.7316e-05 | 0.00010999 | 0.00029778 | 0.0 | 0.01
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 0.009602 | | | 0.88
|
||||
|
||||
Nlocal: 968.000 ave 980 max 954 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 1 1
|
||||
Nghost: 6630.00 ave 6644 max 6616 min
|
||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||
Neighs: 193550.0 ave 195957 max 191376 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||
|
||||
Total # of neighbors = 774200
|
||||
Ave neighs/atom = 199.94835
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 14
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
velocity all create 100.0 6234235
|
||||
fix 1 all nvt temp 100.0 300.0 1.0
|
||||
# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu
|
||||
run 2500
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.220 | 4.507 | 4.603 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 100 -6137.0238 483.14639 -4500.0059 5429.3513
|
||||
100 107.18608 -5623.5468 925.13786 -3461.6193 5640.5924
|
||||
200 119.37927 -5671.054 1050.9079 -3242.6626 7494.8637
|
||||
300 127.21276 -5646.2809 1053.2662 -3125.143 5661.4525
|
||||
400 133.89893 -5674.1417 1139.7 -2989.42 7206.4877
|
||||
500 138.74889 -5679.3757 1234.644 -2843.7477 6741.4965
|
||||
600 150.20403 -5665.0258 1211.9245 -2719.9398 6299.2406
|
||||
700 156.0507 -5681.5445 978.62091 -2902.2989 8429.7188
|
||||
800 160.67293 -5579.9146 1214.6749 -2511.2805 5217.5425
|
||||
900 172.06808 -5627.6903 1118.4786 -2523.767 8995.6018
|
||||
1000 179.82813 -5508.1617 925.22393 -2507.9521 5760.9688
|
||||
1100 190.36338 -5536.6687 1176.6794 -2163.4405 8079.5754
|
||||
1200 195.57864 -5508.64 1163.8098 -2088.1038 7738.58
|
||||
1300 204.05249 -5401.8527 1219.9794 -1827.3697 6562.2311
|
||||
1400 211.74944 -5365.2571 1326.2667 -1595.6738 9772.2773
|
||||
1500 222.08023 -5265.4213 1418.3572 -1284.5435 6395.1161
|
||||
1600 225.86408 -5316.5874 1288.1407 -1422.2653 10163.26
|
||||
1700 232.35057 -5192.56 1254.0031 -1257.5297 7437.3606
|
||||
1800 238.16652 -5199.008 1457.8824 -992.98993 9783.4089
|
||||
1900 250.86418 -5166.917 1256.4887 -1015.7777 8635.027
|
||||
2000 262.41293 -5088.5573 1494.6069 -566.04218 9100.8833
|
||||
2100 268.55207 -5057.9273 1459.8499 -499.33144 10002.961
|
||||
2200 279.96891 -4963.9376 1526.8577 -206.59825 8943.2443
|
||||
2300 286.55635 -5047.2961 1538.5334 -202.27038 10711.176
|
||||
2400 292.56468 -4910.7083 1625.6283 90.740663 8482.6522
|
||||
2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
Loop time of 5.70106 on 4 procs for 2500 steps with 3872 atoms
|
||||
|
||||
Performance: 37.888 ns/day, 0.633 hours/ns, 438.515 timesteps/s
|
||||
96.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 4.4476 | 4.5874 | 4.9593 | 10.1 | 80.47
|
||||
Bond | 0.18485 | 0.19038 | 0.19543 | 0.9 | 3.34
|
||||
Neigh | 0.18057 | 0.18059 | 0.18062 | 0.0 | 3.17
|
||||
Comm | 0.30256 | 0.67081 | 0.81456 | 26.1 | 11.77
|
||||
Output | 0.00042399 | 0.00053327 | 0.00085633 | 0.0 | 0.01
|
||||
Modify | 0.035251 | 0.043755 | 0.052209 | 4.0 | 0.77
|
||||
Other | | 0.02758 | | | 0.48
|
||||
|
||||
Nlocal: 968.000 ave 989 max 944 min
|
||||
Histogram: 1 0 1 0 0 0 0 0 0 2
|
||||
Nghost: 6381.50 ave 6416 max 6351 min
|
||||
Histogram: 1 0 0 1 0 1 0 0 0 1
|
||||
Neighs: 192557.0 ave 197456 max 188754 min
|
||||
Histogram: 2 0 0 0 0 0 0 1 0 1
|
||||
|
||||
Total # of neighbors = 770229
|
||||
Ave neighs/atom = 198.92278
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 34
|
||||
Dangerous builds = 0
|
||||
write_data template-mix.data
|
||||
System init for write_data ...
|
||||
Total wall time: 0:00:06
|
|
@ -0,0 +1,105 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data template-mix.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
3872 atoms
|
||||
reading velocities ...
|
||||
3872 velocities
|
||||
3072 template bonds
|
||||
3072 template angles
|
||||
3072 template dihedrals
|
||||
read_data CPU = 0.016 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.879 | 6.879 | 6.879 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304
|
||||
200 296.49886 -4884.3039 1747.4798 284.39198 11537.322
|
||||
300 295.24937 -4850.2788 1642.4584 198.97822 9160.666
|
||||
400 297.73321 -4952.9967 1660.6439 143.10604 10751.859
|
||||
500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826
|
||||
600 299.50756 -4999.965 1588.0327 44.000269 9233.8621
|
||||
700 295.64728 -4958.2253 1646.2011 99.365838 11089.418
|
||||
800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685
|
||||
900 300.80754 -5033.4853 1727.4591 164.90648 11497.526
|
||||
1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551
|
||||
1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28
|
||||
1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201
|
||||
1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762
|
||||
1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178
|
||||
1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337
|
||||
1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415
|
||||
1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882
|
||||
1800 301.9386 -5068.1221 1755.577 171.43863 11229.315
|
||||
1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348
|
||||
2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209
|
||||
Loop time of 15.3795 on 1 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 11.236 ns/day, 2.136 hours/ns, 130.043 timesteps/s
|
||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 13.905 | 13.905 | 13.905 | 0.0 | 90.41
|
||||
Bond | 0.58069 | 0.58069 | 0.58069 | 0.0 | 3.78
|
||||
Neigh | 0.69766 | 0.69766 | 0.69766 | 0.0 | 4.54
|
||||
Comm | 0.08196 | 0.08196 | 0.08196 | 0.0 | 0.53
|
||||
Output | 0.00052444 | 0.00052444 | 0.00052444 | 0.0 | 0.00
|
||||
Modify | 0.077644 | 0.077644 | 0.077644 | 0.0 | 0.50
|
||||
Other | | 0.03568 | | | 0.23
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11633.0 ave 11633 max 11633 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770365.0 ave 770365 max 770365 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770365
|
||||
Ave neighs/atom = 198.95790
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:15
|
|
@ -0,0 +1,105 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 2: continuing from data file
|
||||
|
||||
units real
|
||||
boundary p p p
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
atom_style template cychex
|
||||
|
||||
pair_style lj/cut 12.0
|
||||
pair_modify mix geometric tail yes
|
||||
bond_style harmonic
|
||||
angle_style harmonic
|
||||
dihedral_style harmonic
|
||||
|
||||
read_data template-mix.data
|
||||
Reading data file ...
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
reading atoms ...
|
||||
3872 atoms
|
||||
reading velocities ...
|
||||
3872 velocities
|
||||
3072 template bonds
|
||||
3072 template angles
|
||||
3072 template dihedrals
|
||||
read_data CPU = 0.022 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.193 | 4.289 | 4.575 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303
|
||||
200 301.9265 -4884.8594 1745.0359 344.02042 11561.79
|
||||
300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245
|
||||
400 302 -4951.4895 1664.5419 197.74463 10784.638
|
||||
500 299.17946 -4983.7996 1615.0068 83.354011 9578.745
|
||||
600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926
|
||||
700 300.90925 -4959.9309 1653.6347 165.81003 11121.514
|
||||
800 293.14833 -4895.5912 1707.8754 194.83943 8397.927
|
||||
900 299.0508 -5032.8395 1726.0885 143.91128 11478.847
|
||||
1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738
|
||||
1100 301.13534 -5004.2113 1761.645 232.14877 11246.198
|
||||
1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178
|
||||
1300 300.79377 -5011.7826 1642.093 101.08422 10390.705
|
||||
1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88
|
||||
1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487
|
||||
1600 298.68972 -4962.1273 1747.402 231.77054 10941.114
|
||||
1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312
|
||||
1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02
|
||||
1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102
|
||||
2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704
|
||||
Loop time of 4.67813 on 4 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 36.938 ns/day, 0.650 hours/ns, 427.522 timesteps/s
|
||||
96.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.5547 | 3.689 | 3.8706 | 5.9 | 78.86
|
||||
Bond | 0.14554 | 0.15424 | 0.1658 | 2.0 | 3.30
|
||||
Neigh | 0.19598 | 0.19599 | 0.19599 | 0.0 | 4.19
|
||||
Comm | 0.39992 | 0.57068 | 0.7172 | 14.9 | 12.20
|
||||
Output | 0.00034507 | 0.00063055 | 0.0014842 | 0.0 | 0.01
|
||||
Modify | 0.036995 | 0.043513 | 0.048096 | 2.0 | 0.93
|
||||
Other | | 0.02411 | | | 0.52
|
||||
|
||||
Nlocal: 968.000 ave 979 max 948 min
|
||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
||||
Nghost: 6321.25 ave 6336 max 6309 min
|
||||
Histogram: 2 0 0 0 0 0 0 1 0 1
|
||||
Neighs: 192540.0 ave 195406 max 187182 min
|
||||
Histogram: 1 0 0 0 0 0 1 0 0 2
|
||||
|
||||
Total # of neighbors = 770161
|
||||
Ave neighs/atom = 198.90522
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:04
|
|
@ -0,0 +1,102 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
read_restart template-mix.restart
|
||||
Reading restart file ...
|
||||
restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020
|
||||
WARNING: Restart file used different # of processors: 4 vs. 1 (src/read_restart.cpp:697)
|
||||
restoring atom style template from restart
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
restoring pair style lj/cut from restart
|
||||
restoring bond style harmonic from restart
|
||||
restoring angle style harmonic from restart
|
||||
restoring dihedral style harmonic from restart
|
||||
3872 atoms
|
||||
3072 template bonds
|
||||
3072 template angles
|
||||
3072 template dihedrals
|
||||
read_restart CPU = 0.002 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
Resetting global fix info from restart file:
|
||||
fix style: nvt, fix ID: 1
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
All restart file global fix info was re-assigned
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 6.879 | 6.879 | 6.879 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
2600 303.69861 -4872.1658 1620.5986 252.72467 8824.1501
|
||||
2700 304.64827 -4885.5903 1747.1956 376.85504 11560.748
|
||||
2800 298.79617 -4851.2752 1644.5913 241.04014 9198.1133
|
||||
2900 302.323 -4949.4247 1661.0637 200.05824 10788.039
|
||||
3000 302.8192 -4983.7441 1617.1412 127.5418 9606.2027
|
||||
3100 305.27495 -4999.5335 1589.7081 112.65547 9258.8096
|
||||
3200 294.9932 -4960.8253 1650.5396 93.556955 11103.25
|
||||
3300 299.8705 -4896.6757 1711.6029 275.0477 8404.2758
|
||||
3400 308.43113 -5035.583 1732.7837 256.09989 11520.651
|
||||
3500 302.54 -4887.2016 1770.4336 374.15506 8359.8351
|
||||
3600 294.00064 -5011.409 1768.0298 149.01058 11257.53
|
||||
3700 303.26654 -4942.0636 1690.4493 247.69209 8749.4281
|
||||
3800 294.7064 -5009.5839 1638.6276 29.577045 10460.396
|
||||
3900 300.34826 -5011.778 1699.4384 153.29355 9558.3891
|
||||
4000 298.76709 -5014.8089 1613.1902 45.769836 9254.1067
|
||||
4100 297.77294 -4978.3228 1736.8967 194.49122 10810.757
|
||||
4200 302.14768 -5049.4356 1713.0187 149.97929 8258.5093
|
||||
4300 295.1467 -5094.2287 1757.8215 69.206733 11022.023
|
||||
4400 305.24677 -4967.1951 1762.3252 317.28577 8423.2256
|
||||
4500 305.53119 -5047.7285 1775.2795 252.98852 11178.338
|
||||
Loop time of 15.3536 on 1 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 11.255 ns/day, 2.132 hours/ns, 130.263 timesteps/s
|
||||
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 13.88 | 13.88 | 13.88 | 0.0 | 90.40
|
||||
Bond | 0.58065 | 0.58065 | 0.58065 | 0.0 | 3.78
|
||||
Neigh | 0.69518 | 0.69518 | 0.69518 | 0.0 | 4.53
|
||||
Comm | 0.0826 | 0.0826 | 0.0826 | 0.0 | 0.54
|
||||
Output | 0.00053438 | 0.00053438 | 0.00053438 | 0.0 | 0.00
|
||||
Modify | 0.07779 | 0.07779 | 0.07779 | 0.0 | 0.51
|
||||
Other | | 0.03687 | | | 0.24
|
||||
|
||||
Nlocal: 3872.00 ave 3872 max 3872 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 11670.0 ave 11670 max 11670 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 770032.0 ave 770032 max 770032 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 770032
|
||||
Ave neighs/atom = 198.87190
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 35
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:15
|
|
@ -0,0 +1,101 @@
|
|||
LAMMPS (22 Oct 2020)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# demo for atom style template simulating a cyclohexane methane mixture
|
||||
# part 3: continuing from restart file
|
||||
|
||||
molecule cychex cyclohexane.mol
|
||||
Read molecule template cychex:
|
||||
1 molecules
|
||||
6 atoms with max type 1
|
||||
6 bonds with max type 1
|
||||
6 angles with max type 1
|
||||
6 dihedrals with max type 1
|
||||
0 impropers with max type 0
|
||||
read_restart template-mix.restart
|
||||
Reading restart file ...
|
||||
restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020
|
||||
restoring atom style template from restart
|
||||
orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000)
|
||||
1 by 2 by 2 MPI processor grid
|
||||
restoring pair style lj/cut from restart
|
||||
restoring bond style harmonic from restart
|
||||
restoring angle style harmonic from restart
|
||||
restoring dihedral style harmonic from restart
|
||||
3872 atoms
|
||||
3072 template bonds
|
||||
3072 template angles
|
||||
3072 template dihedrals
|
||||
read_restart CPU = 0.006 seconds
|
||||
|
||||
thermo 100
|
||||
|
||||
fix 1 all nvt temp 300.0 300.0 1.0
|
||||
Resetting global fix info from restart file:
|
||||
fix style: nvt, fix ID: 1
|
||||
# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu
|
||||
run 2000
|
||||
All restart file global fix info was re-assigned
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 10 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 7 7 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair lj/cut, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.193 | 4.289 | 4.575 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089
|
||||
2600 303.6986 -4872.1658 1620.5986 252.72458 8824.1501
|
||||
2700 296.80713 -4884.3012 1753.5243 293.99628 11523.482
|
||||
2800 298.88856 -4849.1995 1639.5709 239.1615 9214.1261
|
||||
2900 297.12578 -4949.9958 1657.7582 136.2123 10727.69
|
||||
3000 298.19234 -4984.9797 1618.0356 73.812582 9576.9074
|
||||
3100 301.54182 -4999.9775 1588.997 68.424766 9225.9502
|
||||
3200 294.07259 -4962.8351 1646.3012 76.686125 11080.923
|
||||
3300 303.55697 -4900.0696 1721.4077 323.99573 8433.7992
|
||||
3400 297.80636 -5036.3758 1735.0734 135.00054 11440.101
|
||||
3500 303.96121 -4882.4297 1757.4268 382.31908 8497.7685
|
||||
3600 298.21153 -5006.6599 1759.9584 194.27658 11184.938
|
||||
3700 300.77921 -4941.495 1688.3988 217.50964 8820.5666
|
||||
3800 294.33206 -5011.7746 1653.7511 38.190478 10418.208
|
||||
3900 304.38175 -5004.4071 1719.9139 227.68132 9632.0557
|
||||
4000 302.44152 -5029.0544 1610.1577 70.889929 9237.6379
|
||||
4100 298.82638 -4971.4109 1755.8272 232.48883 10814.056
|
||||
4200 297.77273 -5040.0028 1718.5112 114.42322 8287.605
|
||||
4300 300.50984 -5082.4128 1742.354 127.43881 11003.298
|
||||
4400 310.02885 -4971.4191 1749.1209 355.03646 8502.7004
|
||||
4500 302.62639 -5033.3284 1753.488 212.07956 11150.514
|
||||
Loop time of 4.39645 on 4 procs for 2000 steps with 3872 atoms
|
||||
|
||||
Performance: 39.304 ns/day, 0.611 hours/ns, 454.913 timesteps/s
|
||||
98.2% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.6185 | 3.6709 | 3.7028 | 1.7 | 83.50
|
||||
Bond | 0.14772 | 0.15338 | 0.1621 | 1.5 | 3.49
|
||||
Neigh | 0.17739 | 0.17747 | 0.17756 | 0.0 | 4.04
|
||||
Comm | 0.29637 | 0.33265 | 0.39131 | 6.7 | 7.57
|
||||
Output | 0.00034028 | 0.0006627 | 0.0016284 | 0.0 | 0.02
|
||||
Modify | 0.039076 | 0.041988 | 0.043469 | 0.9 | 0.96
|
||||
Other | | 0.01937 | | | 0.44
|
||||
|
||||
Nlocal: 968.000 ave 977 max 956 min
|
||||
Histogram: 1 0 0 1 0 0 0 0 0 2
|
||||
Nghost: 6322.75 ave 6345 max 6308 min
|
||||
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||
Neighs: 192555.0 ave 195249 max 188636 min
|
||||
Histogram: 1 0 0 0 0 1 0 0 1 1
|
||||
|
||||
Total # of neighbors = 770221
|
||||
Ave neighs/atom = 198.92071
|
||||
Ave special neighs/atom = 3.9669421
|
||||
Neighbor list builds = 34
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:04
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -18,7 +18,7 @@ profiling and debugging tools (https://github.com/kokkos/kokkos-tools).
|
|||
|
||||
A programming guide can be found on the Wiki, the API reference is under development.
|
||||
|
||||
For questions find us on Slack: https://kokkosteam.slack.com or open a github issue.
|
||||
For questions find us on Slack: https://kokkosteam.slack.com or open a GitHub issue.
|
||||
|
||||
For non-public questions send an email to
|
||||
crtrott(at)sandia.gov
|
||||
|
@ -44,7 +44,7 @@ To learn more about Kokkos consider watching one of our presentations:
|
|||
We are open and try to encourage contributions from external developers.
|
||||
To do so please first open an issue describing the contribution and then issue
|
||||
a pull request against the develop branch. For larger features it may be good
|
||||
to get guidance from the core development team first through the github issue.
|
||||
to get guidance from the core development team first through the GitHub issue.
|
||||
|
||||
Note that Kokkos Core is licensed under standard 3-clause BSD terms of use.
|
||||
Which means contributing to Kokkos allows anyone else to use your contributions
|
||||
|
|
|
@ -17,7 +17,7 @@ Building LAMMPS with QUIP support:
|
|||
1) Building QUIP
|
||||
1.1) Obtaining QUIP
|
||||
|
||||
The most current release of QUIP can be obtained from github:
|
||||
The most current release of QUIP can be obtained from GitHub:
|
||||
|
||||
$ git clone https://github.com/libAtoms/QUIP.git QUIP
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ is required to use the KSPACE scafacos and its kspace_style
|
|||
scafacos command in a LAMMPS input script.
|
||||
|
||||
The ScaFaCoS library is available at http://scafacos.de or
|
||||
on github at https://github.com/scafacos, the library was
|
||||
on GitHub at https://github.com/scafacos, the library was
|
||||
developed by a consortium of different universities in
|
||||
Germany (Bonn, Chemnitz, Stuttgart, Wuppertal) and
|
||||
the Research Centre Juelich (Juelich Supercomputing Centre).
|
||||
|
|
|
@ -1102,15 +1102,8 @@ void PairGranular::init_style()
|
|||
// this is so its order in the fix list is preserved
|
||||
|
||||
if (use_history && fix_history == nullptr) {
|
||||
char dnumstr[16];
|
||||
sprintf(dnumstr,"%d",size_history);
|
||||
char **fixarg = new char*[4];
|
||||
fixarg[0] = (char *) "NEIGH_HISTORY_GRANULAR";
|
||||
fixarg[1] = (char *) "all";
|
||||
fixarg[2] = (char *) "NEIGH_HISTORY";
|
||||
fixarg[3] = dnumstr;
|
||||
modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY",4,fixarg,1);
|
||||
delete [] fixarg;
|
||||
modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY","NEIGH_HISTORY_GRANULAR"
|
||||
" all NEIGH_HISTORY " + std::to_string(size_history),1);
|
||||
int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR");
|
||||
fix_history = (FixNeighHistory *) modify->fix[ifix];
|
||||
fix_history->pair = this;
|
||||
|
@ -1405,11 +1398,15 @@ double PairGranular::single(int i, int j, int itype, int jtype,
|
|||
int *jlist;
|
||||
double *history,*allhistory;
|
||||
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
if ((i >= nall) || (j >= nall))
|
||||
error->all(FLERR,"Not enough atoms for pair granular single function");
|
||||
|
||||
double *radius = atom->radius;
|
||||
radi = radius[i];
|
||||
radj = radius[j];
|
||||
radsum = radi + radj;
|
||||
Reff = radi*radj/radsum;
|
||||
Reff = (radsum > 0.0) ? radi*radj/radsum : 0.0;
|
||||
|
||||
bool touchflag;
|
||||
E = normal_coeffs[itype][jtype][0];
|
||||
|
@ -1536,6 +1533,8 @@ double PairGranular::single(int i, int j, int itype, int jtype,
|
|||
jlist = list->firstneigh[i];
|
||||
|
||||
if (use_history) {
|
||||
if ((fix_history == nullptr) || (fix_history->firstvalue == nullptr))
|
||||
error->one(FLERR,"Pair granular single computation needs history");
|
||||
allhistory = fix_history->firstvalue[i];
|
||||
for (int jj = 0; jj < jnum; jj++) {
|
||||
neighprev++;
|
||||
|
|
|
@ -185,6 +185,9 @@ void KimInteractions::do_setup(int narg, char **arg)
|
|||
KIM_SimulatorModel_GetSimulatorFieldMetadata(
|
||||
simulatorModel,i,&sim_lines,&sim_field);
|
||||
if (0 == strcmp(sim_field,"model-defn")) {
|
||||
if (domain->periodicity[0]&&domain->periodicity[1]&&domain->periodicity[2]) input->one("variable kim_periodic equal 1");
|
||||
else if (domain->periodicity[0]&&domain->periodicity[1]&&!domain->periodicity[2]) input->one("variable kim_periodic equal 2");
|
||||
else input->one("variable kim_periodic equal 0");
|
||||
sim_model_idx = i;
|
||||
for (int j=0; j < sim_lines; ++j) {
|
||||
KIM_SimulatorModel_GetSimulatorFieldLine(
|
||||
|
@ -276,7 +279,6 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(const std::string &input_line) con
|
|||
MPI_Bcast(&n,1,MPI_INT,0,world);
|
||||
MPI_Bcast(line,n,MPI_CHAR,0,world);
|
||||
|
||||
ptr = line;
|
||||
nocomment = line[0] != '#';
|
||||
|
||||
if(nocomment) {
|
||||
|
@ -286,7 +288,7 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(const std::string &input_line) con
|
|||
for (int ib = ia; ib < atom->ntypes; ++ib)
|
||||
if (((species[ia] == words[0]) && (species[ib] == words[1]))
|
||||
|| ((species[ib] == words[0]) && (species[ia] == words[1])))
|
||||
input->one(fmt::format("pair_coeff {} {} {}",ia+1,ib+1,words[2]));
|
||||
input->one(fmt::format("pair_coeff {} {} {}",ia+1,ib+1,fmt::join(words.begin()+2,words.end()," ")));
|
||||
}
|
||||
} else if (key == "charge") {
|
||||
for (int ia = 0; ia < atom->ntypes; ++ia)
|
||||
|
|
|
@ -394,6 +394,7 @@ void CommKokkos::forward_comm_pair_device(Pair *pair)
|
|||
{
|
||||
int iswap,n;
|
||||
MPI_Request request;
|
||||
DAT::tdual_xfloat_1d k_buf_tmp;
|
||||
|
||||
int nsize = pair->comm_forward;
|
||||
KokkosBase* pairKKBase = dynamic_cast<KokkosBase*>(pair);
|
||||
|
@ -441,11 +442,12 @@ void CommKokkos::forward_comm_pair_device(Pair *pair)
|
|||
k_buf_recv_pair.modify<LMPHostType>();
|
||||
k_buf_recv_pair.sync<DeviceType>();
|
||||
}
|
||||
} else k_buf_recv_pair = k_buf_send_pair;
|
||||
k_buf_tmp = k_buf_recv_pair;
|
||||
} else k_buf_tmp = k_buf_send_pair;
|
||||
|
||||
// unpack buffer
|
||||
|
||||
pairKKBase->unpack_forward_comm_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_recv_pair);
|
||||
pairKKBase->unpack_forward_comm_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_tmp);
|
||||
DeviceType().fence();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -718,7 +718,6 @@ void FixDeposit::options(int narg, char **arg)
|
|||
error->all(FLERR,"Illegal fix deposit command");
|
||||
molfrac[nmol-1] = 1.0;
|
||||
iarg += nmol+1;
|
||||
|
||||
} else if (strcmp(arg[iarg],"rigid") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command");
|
||||
int n = strlen(arg[iarg+1]) + 1;
|
||||
|
|
|
@ -44,7 +44,7 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp)
|
|||
fields_restart = (char *) "molecule molindex molatom";
|
||||
fields_create = (char *) "molecule molindex molatom";
|
||||
fields_data_atom = (char *) "id molecule molindex molatom type x";
|
||||
fields_data_vel = (char *) "";
|
||||
fields_data_vel = (char *) "id v";
|
||||
|
||||
setup_fields();
|
||||
}
|
||||
|
@ -64,12 +64,6 @@ void AtomVecTemplate::process_args(int narg, char **arg)
|
|||
onemols = &atom->molecules[imol];
|
||||
nset = atom->molecules[imol]->nset;
|
||||
|
||||
// error check on molecule template fields
|
||||
|
||||
for (int i = 0; i < nset; i++)
|
||||
if (onemols[i]->typeflag == 0)
|
||||
error->all(FLERR,"Atom style template molecule must have atom types");
|
||||
|
||||
// set bonds_allow,angles_allow,etc based on the molecules in template set
|
||||
// similar to how atom_style bond,angle,full set it
|
||||
|
||||
|
@ -112,6 +106,27 @@ void AtomVecTemplate::create_atom_post(int ilocal)
|
|||
molatom[ilocal] = -1;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
modify values for AtomVec::pack_data() to pack
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void AtomVecTemplate::pack_data_pre(int ilocal)
|
||||
{
|
||||
molindex[ilocal]++;
|
||||
molatom[ilocal]++;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
unmodify values packed by AtomVec::pack_data()
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void AtomVecTemplate::pack_data_post(int ilocal)
|
||||
{
|
||||
molindex[ilocal]--;
|
||||
molatom[ilocal]--;
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
modify what AtomVec::data_atom() just unpacked
|
||||
or initialize other atom quantities
|
||||
|
@ -119,11 +134,11 @@ void AtomVecTemplate::create_atom_post(int ilocal)
|
|||
|
||||
void AtomVecTemplate::data_atom_post(int ilocal)
|
||||
{
|
||||
int molindex_one = molindex[ilocal];
|
||||
int molatom_one = molatom[ilocal];
|
||||
int molindex_one = --molindex[ilocal];
|
||||
int molatom_one = --molatom[ilocal];
|
||||
|
||||
if (molindex_one < 0 || molindex_one >= nset)
|
||||
if ((molindex_one < -1) || (molindex_one >= nset))
|
||||
error->one(FLERR,"Invalid template index in Atoms section of data file");
|
||||
if (molatom_one < 0 || molatom_one >= onemols[molindex_one]->natoms)
|
||||
if ((molatom_one < -1) || ((molindex_one >= 0) && (molatom_one >= onemols[molindex_one]->natoms)))
|
||||
error->one(FLERR,"Invalid template atom in Atoms section of data file");
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@ class AtomVecTemplate : public AtomVec {
|
|||
void grow_pointers();
|
||||
void process_args(int, char **);
|
||||
void create_atom_post(int);
|
||||
void pack_data_pre(int);
|
||||
void pack_data_post(int);
|
||||
void data_atom_post(int);
|
||||
|
||||
private:
|
||||
|
|
|
@ -1098,12 +1098,12 @@ void FixRigid::compute_forces_and_torques()
|
|||
// include Langevin thermostat forces
|
||||
|
||||
for (ibody = 0; ibody < nbody; ibody++) {
|
||||
fcm[ibody][0] = all[ibody][0] + langextra[ibody][0];
|
||||
fcm[ibody][1] = all[ibody][1] + langextra[ibody][1];
|
||||
fcm[ibody][2] = all[ibody][2] + langextra[ibody][2];
|
||||
torque[ibody][0] = all[ibody][3] + langextra[ibody][3];
|
||||
torque[ibody][1] = all[ibody][4] + langextra[ibody][4];
|
||||
torque[ibody][2] = all[ibody][5] + langextra[ibody][5];
|
||||
fcm[ibody][0] = all[ibody][0] + fflag[ibody][0]*langextra[ibody][0];
|
||||
fcm[ibody][1] = all[ibody][1] + fflag[ibody][1]*langextra[ibody][1];
|
||||
fcm[ibody][2] = all[ibody][2] + fflag[ibody][2]*langextra[ibody][2];
|
||||
torque[ibody][0] = all[ibody][3] + tflag[ibody][0]*langextra[ibody][3];
|
||||
torque[ibody][1] = all[ibody][4] + tflag[ibody][1]*langextra[ibody][4];
|
||||
torque[ibody][2] = all[ibody][5] + tflag[ibody][2]*langextra[ibody][5];
|
||||
}
|
||||
|
||||
// add gravity force to COM of each body
|
||||
|
@ -2710,11 +2710,15 @@ double FixRigid::compute_scalar()
|
|||
|
||||
void *FixRigid::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 0;
|
||||
|
||||
if (strcmp(str,"body") == 0) {
|
||||
if (!setupflag) return nullptr;
|
||||
dim = 1;
|
||||
return body;
|
||||
}
|
||||
if (strcmp(str,"masstotal") == 0) {
|
||||
if (!setupflag) return nullptr;
|
||||
dim = 1;
|
||||
return masstotal;
|
||||
}
|
||||
|
|
|
@ -875,6 +875,11 @@ void FixRigidSmall::apply_langevin_thermostat()
|
|||
// convert langevin torques from body frame back to space frame
|
||||
|
||||
MathExtra::matvec(ex_space,ey_space,ez_space,tbody,&langextra[ibody][3]);
|
||||
|
||||
// enforce 2d motion
|
||||
|
||||
if (domain->dimension == 2)
|
||||
langextra[ibody][2] = langextra[ibody][3] = langextra[ibody][4] = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3419,7 +3424,10 @@ int FixRigidSmall::modify_param(int narg, char **arg)
|
|||
|
||||
void *FixRigidSmall::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 0;
|
||||
|
||||
if (strcmp(str,"body") == 0) {
|
||||
if (!setupflag) return nullptr;
|
||||
dim = 1;
|
||||
return atom2body;
|
||||
}
|
||||
|
@ -3433,6 +3441,7 @@ void *FixRigidSmall::extract(const char *str, int &dim)
|
|||
// used by granular pair styles, indexed by atom2body
|
||||
|
||||
if (strcmp(str,"masstotal") == 0) {
|
||||
if (!setupflag) return nullptr;
|
||||
dim = 1;
|
||||
|
||||
if (nmax_mass < nmax_body) {
|
||||
|
|
|
@ -2536,13 +2536,13 @@ void FixShake::stats()
|
|||
auto mesg = fmt::format("SHAKE stats (type/ave/delta/count) on step {}\n",
|
||||
update->ntimestep);
|
||||
for (i = 1; i < nb; i++) {
|
||||
const auto bcnt = b_count_all[i];
|
||||
const auto bcnt = b_count_all[i]/2;
|
||||
if (bcnt)
|
||||
mesg += fmt::format("{:>6d} {:<9.6} {:<11.6} {:>8d}\n",i,
|
||||
b_ave_all[i]/bcnt,b_max_all[i]-b_min_all[i],bcnt);
|
||||
}
|
||||
for (i = 1; i < na; i++) {
|
||||
const auto acnt = a_count_all[i];
|
||||
const auto acnt = a_count_all[i]/3;
|
||||
if (acnt)
|
||||
mesg += fmt::format("{:>6d} {:<9.6} {:<11.6} {:>8d}\n",i,
|
||||
a_ave_all[i]/acnt,a_max_all[i]-a_min_all[i],acnt);
|
||||
|
|
|
@ -183,7 +183,7 @@ DumpNetCDF::DumpNetCDF(LAMMPS *lmp, int narg, char **arg) :
|
|||
for (int j = 0; j < DUMP_NC_MAX_DIMS; j++) {
|
||||
perat[inc].field[j] = -1;
|
||||
}
|
||||
strcpy(perat[inc].name, mangled);
|
||||
strncpy(perat[inc].name, mangled, NC_FIELD_NAME_MAX);
|
||||
n_perat++;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ even if PLUMED is not in the path if as long as the input does not contain a fix
|
|||
plumed command.
|
||||
|
||||
If you wish to statically link PLUMED you must download PLUMED to the /lib/plumed directory before compiling LAMMPS. You can
|
||||
download a tar ball into that directory or you can clone the plumed2 repository from github there. Once you have created a
|
||||
download a tar ball into that directory or you can clone the plumed2 repository from GitHub there. Once you have created a
|
||||
directory containing a distribution of PLUMED within /lib/plumed you then must build PLUMED within that directory by issuing
|
||||
the usual commands. It is worth noting that we have provided a script that will download and build PLUMED for you with
|
||||
a minimal set of options. To run this script you need to issue the following command:
|
||||
|
|
|
@ -1910,7 +1910,7 @@ void Atom::add_molecule_atom(Molecule *onemol, int iatom,
|
|||
onemol->avec_body->set_quat(ilocal,onemol->quat_external);
|
||||
}
|
||||
|
||||
if (molecular != 1) return;
|
||||
if (molecular != Atom::MOLECULAR) return;
|
||||
|
||||
// add bond topology info
|
||||
// for molecular atom styles, but not atom style template
|
||||
|
|
|
@ -533,8 +533,7 @@ void AtomVecEllipsoid::write_data_bonus(FILE *fp, int n, double *buf, int /*flag
|
|||
this may create or delete entry in bonus data
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void AtomVecEllipsoid::
|
||||
set_shape(int i, double shapex, double shapey, double shapez)
|
||||
void AtomVecEllipsoid::set_shape(int i, double shapex, double shapey, double shapez)
|
||||
{
|
||||
if (ellipsoid[i] < 0) {
|
||||
if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return;
|
||||
|
|
|
@ -557,6 +557,7 @@ void DeleteAtoms::recount_topology()
|
|||
for (int i = 0; i < nlocal; i++) {
|
||||
imol = molindex[i];
|
||||
iatom = molatom[i];
|
||||
if (imol < 0) continue;
|
||||
nbonds += onemols[imol]->num_bond[iatom];
|
||||
nangles += onemols[imol]->num_angle[iatom];
|
||||
ndihedrals += onemols[imol]->num_dihedral[iatom];
|
||||
|
|
|
@ -1873,6 +1873,7 @@ void Domain::set_boundary(int narg, char **arg, int flag)
|
|||
else zperiodic = 0;
|
||||
|
||||
// record if we changed a periodic boundary to a non-periodic one
|
||||
|
||||
int pflag=0;
|
||||
if ((periodicity[0] && !xperiodic)
|
||||
|| (periodicity[1] && !yperiodic)
|
||||
|
@ -1889,23 +1890,27 @@ void Domain::set_boundary(int narg, char **arg, int flag)
|
|||
boundary[1][0] >= 2 || boundary[1][1] >= 2 ||
|
||||
boundary[2][0] >= 2 || boundary[2][1] >= 2) nonperiodic = 2;
|
||||
}
|
||||
|
||||
// force non-zero image flags to zero for non-periodic dimensions
|
||||
// keep track if a change was made, so we can print a warning message
|
||||
|
||||
if (pflag) {
|
||||
pflag = 0;
|
||||
for (int i=0; i < atom->nlocal; ++i) {
|
||||
int xbox = (atom->image[i] & IMGMASK) - IMGMAX;
|
||||
int ybox = (atom->image[i] >> IMGBITS & IMGMASK) - IMGMAX;
|
||||
int zbox = (atom->image[i] >> IMG2BITS) - IMGMAX;
|
||||
if (!xperiodic) { xbox = 0; pflag = 1; }
|
||||
if (!yperiodic) { ybox = 0; pflag = 1; }
|
||||
if (!zperiodic) { zbox = 0; pflag = 1; }
|
||||
if ((!xperiodic) && (xbox != 0)) { xbox = 0; pflag = 1; }
|
||||
if ((!yperiodic) && (ybox != 0)) { ybox = 0; pflag = 1; }
|
||||
if ((!zperiodic) && (zbox != 0)) { zbox = 0; pflag = 1; }
|
||||
atom->image[i] = ((imageint) (xbox + IMGMAX) & IMGMASK) |
|
||||
(((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) |
|
||||
(((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS);
|
||||
}
|
||||
int flag_all;
|
||||
MPI_Allreduce(&flag,&flag_all, 1, MPI_INT, MPI_SUM, world);
|
||||
MPI_Allreduce(&pflag,&flag_all, 1, MPI_INT, MPI_SUM, world);
|
||||
if ((flag_all > 0) && (comm->me == 0))
|
||||
error->warning(FLERR,"Reset image flags for non-periodic boundary");
|
||||
error->warning(FLERR,"Resetting image flags for non-periodic dimensions");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -97,16 +97,19 @@ void DumpDCD::init_style()
|
|||
error->all(FLERR,"Dump dcd requires sorting by atom ID");
|
||||
|
||||
// check that dump frequency has not changed and is not a variable
|
||||
// but only when not being called from the "write_dump" command.
|
||||
|
||||
int idump;
|
||||
for (idump = 0; idump < output->ndump; idump++)
|
||||
if (strcmp(id,output->dump[idump]->id) == 0) break;
|
||||
if (output->every_dump[idump] == 0)
|
||||
error->all(FLERR,"Cannot use variable every setting for dump dcd");
|
||||
if (strcmp(id,"WRITE_DUMP") != 0) {
|
||||
int idump;
|
||||
for (idump = 0; idump < output->ndump; idump++)
|
||||
if (strcmp(id,output->dump[idump]->id) == 0) break;
|
||||
if (output->every_dump[idump] == 0)
|
||||
error->all(FLERR,"Cannot use variable every setting for dump dcd");
|
||||
|
||||
if (nevery_save == 0) nevery_save = output->every_dump[idump];
|
||||
else if (nevery_save != output->every_dump[idump])
|
||||
error->all(FLERR,"Cannot change dump_modify every for dump dcd");
|
||||
if (nevery_save == 0) nevery_save = output->every_dump[idump];
|
||||
else if (nevery_save != output->every_dump[idump])
|
||||
error->all(FLERR,"Cannot change dump_modify every for dump dcd");
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -735,12 +735,18 @@ void FixBoxRelax::couple()
|
|||
p_current[2] = tensor[2];
|
||||
}
|
||||
|
||||
if (!std::isfinite(p_current[0]) || !std::isfinite(p_current[1]) || !std::isfinite(p_current[2]))
|
||||
error->all(FLERR,"Non-numeric pressure - simulation unstable");
|
||||
|
||||
// switch order from xy-xz-yz to Voigt
|
||||
|
||||
if (pstyle == TRICLINIC) {
|
||||
p_current[3] = tensor[5];
|
||||
p_current[4] = tensor[4];
|
||||
p_current[5] = tensor[3];
|
||||
|
||||
if (!std::isfinite(p_current[3]) || !std::isfinite(p_current[4]) || !std::isfinite(p_current[5]))
|
||||
error->all(FLERR,"Non-numeric pressure - simulation unstable");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,43 +72,27 @@ FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) {
|
|||
static_assert(F::is_integer, "From must be integral");
|
||||
static_assert(T::is_integer, "To must be integral");
|
||||
|
||||
if (F::is_signed && !T::is_signed) {
|
||||
if (detail::const_check(F::is_signed && !T::is_signed)) {
|
||||
// From may be negative, not allowed!
|
||||
if (fmt::detail::is_negative(from)) {
|
||||
ec = 1;
|
||||
return {};
|
||||
}
|
||||
|
||||
// From is positive. Can it always fit in To?
|
||||
if (F::digits <= T::digits) {
|
||||
// yes, From always fits in To.
|
||||
} else {
|
||||
// from may not fit in To, we have to do a dynamic check
|
||||
if (from > static_cast<From>((T::max)())) {
|
||||
ec = 1;
|
||||
return {};
|
||||
}
|
||||
if (F::digits > T::digits &&
|
||||
from > static_cast<From>(detail::max_value<To>())) {
|
||||
ec = 1;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
if (!F::is_signed && T::is_signed) {
|
||||
// can from be held in To?
|
||||
if (F::digits < T::digits) {
|
||||
// yes, From always fits in To.
|
||||
} else {
|
||||
// from may not fit in To, we have to do a dynamic check
|
||||
if (from > static_cast<From>((T::max)())) {
|
||||
// outside range.
|
||||
ec = 1;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
if (!F::is_signed && T::is_signed && F::digits >= T::digits &&
|
||||
from > static_cast<From>(detail::max_value<To>())) {
|
||||
ec = 1;
|
||||
return {};
|
||||
}
|
||||
|
||||
// reaching here means all is ok for lossless conversion.
|
||||
return static_cast<To>(from);
|
||||
|
||||
} // function
|
||||
return static_cast<To>(from); // Lossless conversion.
|
||||
}
|
||||
|
||||
template <typename To, typename From,
|
||||
FMT_ENABLE_IF(std::is_same<From, To>::value)>
|
||||
|
@ -190,11 +174,9 @@ To safe_duration_cast(std::chrono::duration<FromRep, FromPeriod> from,
|
|||
// safe conversion to IntermediateRep
|
||||
IntermediateRep count =
|
||||
lossless_integral_conversion<IntermediateRep>(from.count(), ec);
|
||||
if (ec) {
|
||||
return {};
|
||||
}
|
||||
if (ec) return {};
|
||||
// multiply with Factor::num without overflow or underflow
|
||||
if (Factor::num != 1) {
|
||||
if (detail::const_check(Factor::num != 1)) {
|
||||
const auto max1 = detail::max_value<IntermediateRep>() / Factor::num;
|
||||
if (count > max1) {
|
||||
ec = 1;
|
||||
|
@ -209,17 +191,9 @@ To safe_duration_cast(std::chrono::duration<FromRep, FromPeriod> from,
|
|||
count *= Factor::num;
|
||||
}
|
||||
|
||||
// this can't go wrong, right? den>0 is checked earlier.
|
||||
if (Factor::den != 1) {
|
||||
count /= Factor::den;
|
||||
}
|
||||
// convert to the to type, safely
|
||||
using ToRep = typename To::rep;
|
||||
const ToRep tocount = lossless_integral_conversion<ToRep>(count, ec);
|
||||
if (ec) {
|
||||
return {};
|
||||
}
|
||||
return To{tocount};
|
||||
if (detail::const_check(Factor::den != 1)) count /= Factor::den;
|
||||
auto tocount = lossless_integral_conversion<typename To::rep>(count, ec);
|
||||
return ec ? To() : To(tocount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -351,6 +325,11 @@ inline std::tm localtime(std::time_t time) {
|
|||
return lt.tm_;
|
||||
}
|
||||
|
||||
inline std::tm localtime(
|
||||
std::chrono::time_point<std::chrono::system_clock> time_point) {
|
||||
return localtime(std::chrono::system_clock::to_time_t(time_point));
|
||||
}
|
||||
|
||||
// Thread-safe replacement for std::gmtime
|
||||
inline std::tm gmtime(std::time_t time) {
|
||||
struct dispatcher {
|
||||
|
@ -387,6 +366,11 @@ inline std::tm gmtime(std::time_t time) {
|
|||
return gt.tm_;
|
||||
}
|
||||
|
||||
inline std::tm gmtime(
|
||||
std::chrono::time_point<std::chrono::system_clock> time_point) {
|
||||
return gmtime(std::chrono::system_clock::to_time_t(time_point));
|
||||
}
|
||||
|
||||
namespace detail {
|
||||
inline size_t strftime(char* str, size_t count, const char* format,
|
||||
const std::tm* time) {
|
||||
|
@ -399,6 +383,17 @@ inline size_t strftime(wchar_t* str, size_t count, const wchar_t* format,
|
|||
}
|
||||
} // namespace detail
|
||||
|
||||
template <typename Char>
|
||||
struct formatter<std::chrono::time_point<std::chrono::system_clock>, Char>
|
||||
: formatter<std::tm, Char> {
|
||||
template <typename FormatContext>
|
||||
auto format(std::chrono::time_point<std::chrono::system_clock> val,
|
||||
FormatContext& ctx) -> decltype(ctx.out()) {
|
||||
std::tm time = localtime(val);
|
||||
return formatter<std::tm, Char>::format(time, ctx);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Char> struct formatter<std::tm, Char> {
|
||||
template <typename ParseContext>
|
||||
auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
|
||||
|
|
|
@ -463,16 +463,16 @@ template <> inline void reset_color<wchar_t>(FILE* stream) FMT_NOEXCEPT {
|
|||
}
|
||||
|
||||
template <typename Char>
|
||||
inline void reset_color(basic_memory_buffer<Char>& buffer) FMT_NOEXCEPT {
|
||||
inline void reset_color(buffer<Char>& buffer) FMT_NOEXCEPT {
|
||||
const char* begin = data::reset_color;
|
||||
const char* end = begin + sizeof(data::reset_color) - 1;
|
||||
buffer.append(begin, end);
|
||||
}
|
||||
|
||||
template <typename Char>
|
||||
void vformat_to(basic_memory_buffer<Char>& buf, const text_style& ts,
|
||||
void vformat_to(buffer<Char>& buf, const text_style& ts,
|
||||
basic_string_view<Char> format_str,
|
||||
basic_format_args<buffer_context<Char>> args) {
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
bool has_style = false;
|
||||
if (ts.has_emphasis()) {
|
||||
has_style = true;
|
||||
|
@ -496,7 +496,7 @@ void vformat_to(basic_memory_buffer<Char>& buf, const text_style& ts,
|
|||
|
||||
template <typename S, typename Char = char_t<S>>
|
||||
void vprint(std::FILE* f, const text_style& ts, const S& format,
|
||||
basic_format_args<buffer_context<Char>> args) {
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
basic_memory_buffer<Char> buf;
|
||||
detail::vformat_to(buf, ts, to_string_view(format), args);
|
||||
buf.push_back(Char(0));
|
||||
|
@ -504,20 +504,22 @@ void vprint(std::FILE* f, const text_style& ts, const S& format,
|
|||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
Formats a string and prints it to the specified file stream using ANSI
|
||||
escape sequences to specify text formatting.
|
||||
Example:
|
||||
|
||||
**Example**::
|
||||
|
||||
fmt::print(fmt::emphasis::bold | fg(fmt::color::red),
|
||||
"Elapsed time: {0:.2f} seconds", 1.23);
|
||||
\endrst
|
||||
*/
|
||||
template <typename S, typename... Args,
|
||||
FMT_ENABLE_IF(detail::is_string<S>::value)>
|
||||
void print(std::FILE* f, const text_style& ts, const S& format_str,
|
||||
const Args&... args) {
|
||||
detail::check_format_string<Args...>(format_str);
|
||||
using context = buffer_context<char_t<S>>;
|
||||
format_arg_store<context, Args...> as{args...};
|
||||
vprint(f, ts, format_str, basic_format_args<context>(as));
|
||||
vprint(f, ts, format_str,
|
||||
fmt::make_args_checked<Args...>(format_str, args...));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -558,7 +560,42 @@ template <typename S, typename... Args, typename Char = char_t<S>>
|
|||
inline std::basic_string<Char> format(const text_style& ts, const S& format_str,
|
||||
const Args&... args) {
|
||||
return vformat(ts, to_string_view(format_str),
|
||||
detail::make_args_checked<Args...>(format_str, args...));
|
||||
fmt::make_args_checked<Args...>(format_str, args...));
|
||||
}
|
||||
|
||||
/**
|
||||
Formats a string with the given text_style and writes the output to ``out``.
|
||||
*/
|
||||
template <typename OutputIt, typename Char,
|
||||
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value)>
|
||||
OutputIt vformat_to(
|
||||
OutputIt out, const text_style& ts, basic_string_view<Char> format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
decltype(detail::get_buffer<Char>(out)) buf(detail::get_buffer_init(out));
|
||||
detail::vformat_to(buf, ts, format_str, args);
|
||||
return detail::get_iterator(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
Formats arguments with the given text_style, writes the result to the output
|
||||
iterator ``out`` and returns the iterator past the end of the output range.
|
||||
|
||||
**Example**::
|
||||
|
||||
std::vector<char> out;
|
||||
fmt::format_to(std::back_inserter(out),
|
||||
fmt::emphasis::bold | fg(fmt::color::red), "{}", 42);
|
||||
\endrst
|
||||
*/
|
||||
template <typename OutputIt, typename S, typename... Args,
|
||||
bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value&&
|
||||
detail::is_string<S>::value>
|
||||
inline auto format_to(OutputIt out, const text_style& ts, const S& format_str,
|
||||
Args&&... args) ->
|
||||
typename std::enable_if<enable, OutputIt>::type {
|
||||
return vformat_to(out, ts, to_string_view(format_str),
|
||||
fmt::make_args_checked<Args...>(format_str, args...));
|
||||
}
|
||||
|
||||
FMT_END_NAMESPACE
|
||||
|
|
|
@ -368,7 +368,8 @@ template <typename... Args> struct type_list {};
|
|||
|
||||
// Returns a reference to the argument at index N from [first, rest...].
|
||||
template <int N, typename T, typename... Args>
|
||||
constexpr const auto& get(const T& first, const Args&... rest) {
|
||||
constexpr const auto& get([[maybe_unused]] const T& first,
|
||||
[[maybe_unused]] const Args&... rest) {
|
||||
static_assert(N < 1 + sizeof...(Args), "index is out of bounds");
|
||||
if constexpr (N == 0)
|
||||
return first;
|
||||
|
@ -406,6 +407,19 @@ constexpr text<Char> make_text(basic_string_view<Char> s, size_t pos,
|
|||
return {{&s[pos], size}};
|
||||
}
|
||||
|
||||
template <typename Char> struct code_unit {
|
||||
Char value;
|
||||
using char_type = Char;
|
||||
|
||||
template <typename OutputIt, typename... Args>
|
||||
OutputIt format(OutputIt out, const Args&...) const {
|
||||
return write<Char>(out, value);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Char>
|
||||
struct is_compiled_format<code_unit<Char>> : std::true_type {};
|
||||
|
||||
// A replacement field that refers to argument N.
|
||||
template <typename Char, typename T, int N> struct field {
|
||||
using char_type = Char;
|
||||
|
@ -430,7 +444,9 @@ template <typename Char, typename T, int N> struct spec_field {
|
|||
OutputIt format(OutputIt out, const Args&... args) const {
|
||||
// This ensures that the argument type is convertile to `const T&`.
|
||||
const T& arg = get<N>(args...);
|
||||
basic_format_context<OutputIt, Char> ctx(out, {});
|
||||
const auto& vargs =
|
||||
make_format_args<basic_format_context<OutputIt, Char>>(args...);
|
||||
basic_format_context<OutputIt, Char> ctx(out, vargs);
|
||||
return fmt.format(arg, ctx);
|
||||
}
|
||||
};
|
||||
|
@ -489,16 +505,17 @@ constexpr auto parse_tail(T head, S format_str) {
|
|||
template <typename T, typename Char> struct parse_specs_result {
|
||||
formatter<T, Char> fmt;
|
||||
size_t end;
|
||||
int next_arg_id;
|
||||
};
|
||||
|
||||
template <typename T, typename Char>
|
||||
constexpr parse_specs_result<T, Char> parse_specs(basic_string_view<Char> str,
|
||||
size_t pos) {
|
||||
size_t pos, int arg_id) {
|
||||
str.remove_prefix(pos);
|
||||
auto ctx = basic_format_parse_context<Char>(str);
|
||||
auto ctx = basic_format_parse_context<Char>(str, {}, arg_id + 1);
|
||||
auto f = formatter<T, Char>();
|
||||
auto end = f.parse(ctx);
|
||||
return {f, pos + (end - str.data()) + 1};
|
||||
return {f, pos + (end - str.data()) + 1, ctx.next_arg_id()};
|
||||
}
|
||||
|
||||
// Compiles a non-empty format string and returns the compiled representation
|
||||
|
@ -518,8 +535,8 @@ constexpr auto compile_format_string(S format_str) {
|
|||
format_str);
|
||||
} else if constexpr (str[POS + 1] == ':') {
|
||||
using type = get_type<ID, Args>;
|
||||
constexpr auto result = parse_specs<type>(str, POS + 2);
|
||||
return parse_tail<Args, result.end, ID + 1>(
|
||||
constexpr auto result = parse_specs<type>(str, POS + 2, ID);
|
||||
return parse_tail<Args, result.end, result.next_arg_id>(
|
||||
spec_field<char_type, type, ID>{result.fmt}, format_str);
|
||||
} else {
|
||||
return unknown_format();
|
||||
|
@ -530,8 +547,13 @@ constexpr auto compile_format_string(S format_str) {
|
|||
return parse_tail<Args, POS + 2, ID>(make_text(str, POS, 1), format_str);
|
||||
} else {
|
||||
constexpr auto end = parse_text(str, POS + 1);
|
||||
return parse_tail<Args, end, ID>(make_text(str, POS, end - POS),
|
||||
format_str);
|
||||
if constexpr (end - POS > 1) {
|
||||
return parse_tail<Args, end, ID>(make_text(str, POS, end - POS),
|
||||
format_str);
|
||||
} else {
|
||||
return parse_tail<Args, end, ID>(code_unit<char_type>{str[POS]},
|
||||
format_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -587,8 +609,7 @@ template <typename CompiledFormat, typename... Args,
|
|||
FMT_INLINE std::basic_string<Char> format(const CompiledFormat& cf,
|
||||
const Args&... args) {
|
||||
basic_memory_buffer<Char> buffer;
|
||||
detail::buffer<Char>& base = buffer;
|
||||
cf.format(std::back_inserter(base), args...);
|
||||
cf.format(detail::buffer_appender<Char>(buffer), args...);
|
||||
return to_string(buffer);
|
||||
}
|
||||
|
||||
|
@ -608,8 +629,7 @@ template <typename CompiledFormat, typename... Args,
|
|||
std::basic_string<Char> format(const CompiledFormat& cf, const Args&... args) {
|
||||
basic_memory_buffer<Char> buffer;
|
||||
using context = buffer_context<Char>;
|
||||
detail::buffer<Char>& base = buffer;
|
||||
detail::cf::vformat_to<context>(std::back_inserter(base), cf,
|
||||
detail::cf::vformat_to<context>(detail::buffer_appender<Char>(buffer), cf,
|
||||
make_format_args<context>(args...));
|
||||
return to_string(buffer);
|
||||
}
|
||||
|
@ -618,9 +638,13 @@ template <typename S, typename... Args,
|
|||
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
||||
FMT_INLINE std::basic_string<typename S::char_type> format(const S&,
|
||||
Args&&... args) {
|
||||
constexpr basic_string_view<typename S::char_type> str = S();
|
||||
if (str.size() == 2 && str[0] == '{' && str[1] == '}')
|
||||
return fmt::to_string(detail::first(args...));
|
||||
#ifdef __cpp_if_constexpr
|
||||
if constexpr (std::is_same<typename S::char_type, char>::value) {
|
||||
constexpr basic_string_view<typename S::char_type> str = S();
|
||||
if (str.size() == 2 && str[0] == '{' && str[1] == '}')
|
||||
return fmt::to_string(detail::first(args...));
|
||||
}
|
||||
#endif
|
||||
constexpr auto compiled = detail::compile<Args...>(S());
|
||||
return format(compiled, std::forward<Args>(args)...);
|
||||
}
|
||||
|
@ -643,18 +667,30 @@ OutputIt format_to(OutputIt out, const S&, const Args&... args) {
|
|||
return format_to(out, compiled, args...);
|
||||
}
|
||||
|
||||
template <
|
||||
typename OutputIt, typename CompiledFormat, typename... Args,
|
||||
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt>::value&& std::is_base_of<
|
||||
detail::basic_compiled_format, CompiledFormat>::value)>
|
||||
format_to_n_result<OutputIt> format_to_n(OutputIt out, size_t n,
|
||||
const CompiledFormat& cf,
|
||||
const Args&... args) {
|
||||
template <typename OutputIt, typename CompiledFormat, typename... Args>
|
||||
auto format_to_n(OutputIt out, size_t n, const CompiledFormat& cf,
|
||||
const Args&... args) ->
|
||||
typename std::enable_if<
|
||||
detail::is_output_iterator<OutputIt,
|
||||
typename CompiledFormat::char_type>::value &&
|
||||
std::is_base_of<detail::basic_compiled_format,
|
||||
CompiledFormat>::value,
|
||||
format_to_n_result<OutputIt>>::type {
|
||||
auto it =
|
||||
format_to(detail::truncating_iterator<OutputIt>(out, n), cf, args...);
|
||||
return {it.base(), it.count()};
|
||||
}
|
||||
|
||||
template <typename OutputIt, typename S, typename... Args,
|
||||
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
|
||||
format_to_n_result<OutputIt> format_to_n(OutputIt out, size_t n, const S&,
|
||||
const Args&... args) {
|
||||
constexpr auto compiled = detail::compile<Args...>(S());
|
||||
auto it = format_to(detail::truncating_iterator<OutputIt>(out, n), compiled,
|
||||
args...);
|
||||
return {it.base(), it.count()};
|
||||
}
|
||||
|
||||
template <typename CompiledFormat, typename... Args>
|
||||
size_t formatted_size(const CompiledFormat& cf, const Args&... args) {
|
||||
return format_to(detail::counting_iterator(), cf, args...).count();
|
||||
|
|
448
src/fmt/core.h
448
src/fmt/core.h
|
@ -18,7 +18,7 @@
|
|||
#include <vector>
|
||||
|
||||
// The fmt library version in the form major * 10000 + minor * 100 + patch.
|
||||
#define FMT_VERSION 70003
|
||||
#define FMT_VERSION 70102
|
||||
|
||||
#ifdef __clang__
|
||||
# define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__)
|
||||
|
@ -57,6 +57,7 @@
|
|||
# define FMT_MSC_VER 0
|
||||
# define FMT_SUPPRESS_MSC_WARNING(n)
|
||||
#endif
|
||||
|
||||
#ifdef __has_feature
|
||||
# define FMT_HAS_FEATURE(x) __has_feature(x)
|
||||
#else
|
||||
|
@ -64,7 +65,7 @@
|
|||
#endif
|
||||
|
||||
#if defined(__has_include) && !defined(__INTELLISENSE__) && \
|
||||
!(FMT_ICC_VERSION && FMT_ICC_VERSION < 1600)
|
||||
(!FMT_ICC_VERSION || FMT_ICC_VERSION >= 1600)
|
||||
# define FMT_HAS_INCLUDE(x) __has_include(x)
|
||||
#else
|
||||
# define FMT_HAS_INCLUDE(x) 0
|
||||
|
@ -99,7 +100,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef FMT_OVERRIDE
|
||||
# if FMT_HAS_FEATURE(cxx_override) || \
|
||||
# if FMT_HAS_FEATURE(cxx_override_control) || \
|
||||
(FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900
|
||||
# define FMT_OVERRIDE override
|
||||
# else
|
||||
|
@ -152,7 +153,7 @@
|
|||
# if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VER >= 1900
|
||||
# define FMT_DEPRECATED [[deprecated]]
|
||||
# else
|
||||
# if defined(__GNUC__) || defined(__clang__)
|
||||
# if (defined(__GNUC__) && !defined(__LCC__)) || defined(__clang__)
|
||||
# define FMT_DEPRECATED __attribute__((deprecated))
|
||||
# elif FMT_MSC_VER
|
||||
# define FMT_DEPRECATED __declspec(deprecated)
|
||||
|
@ -177,6 +178,15 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef FMT_USE_INLINE_NAMESPACES
|
||||
# if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \
|
||||
(FMT_MSC_VER >= 1900 && !_MANAGED)
|
||||
# define FMT_USE_INLINE_NAMESPACES 1
|
||||
# else
|
||||
# define FMT_USE_INLINE_NAMESPACES 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// LAMMPS customization
|
||||
// use 'v7_lmp' namespace instead of 'v7' so that our
|
||||
// bundled copy does not collide with linking other code
|
||||
|
@ -184,8 +194,7 @@
|
|||
// a different version.
|
||||
|
||||
#ifndef FMT_BEGIN_NAMESPACE
|
||||
# if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \
|
||||
FMT_MSC_VER >= 1900
|
||||
# if FMT_USE_INLINE_NAMESPACES
|
||||
# define FMT_INLINE_NAMESPACE inline namespace
|
||||
# define FMT_END_NAMESPACE \
|
||||
} \
|
||||
|
@ -275,8 +284,7 @@ struct monostate {};
|
|||
|
||||
namespace detail {
|
||||
|
||||
// A helper function to suppress bogus "conditional expression is constant"
|
||||
// warnings.
|
||||
// A helper function to suppress "conditional expression is constant" warnings.
|
||||
template <typename T> constexpr T const_check(T value) { return value; }
|
||||
|
||||
FMT_NORETURN FMT_API void assert_fail(const char* file, int line,
|
||||
|
@ -305,7 +313,8 @@ template <typename T> struct std_string_view {};
|
|||
|
||||
#ifdef FMT_USE_INT128
|
||||
// Do nothing.
|
||||
#elif defined(__SIZEOF_INT128__) && !FMT_NVCC && !(FMT_CLANG_VERSION && FMT_MSC_VER)
|
||||
#elif defined(__SIZEOF_INT128__) && !FMT_NVCC && \
|
||||
!(FMT_CLANG_VERSION && FMT_MSC_VER)
|
||||
# define FMT_USE_INT128 1
|
||||
using int128_t = __int128_t;
|
||||
using uint128_t = __uint128_t;
|
||||
|
@ -514,6 +523,18 @@ template <typename S> struct char_t_impl<S, enable_if_t<is_string<S>::value>> {
|
|||
using type = typename result::value_type;
|
||||
};
|
||||
|
||||
// Reports a compile-time error if S is not a valid format string.
|
||||
template <typename..., typename S, FMT_ENABLE_IF(!is_compile_string<S>::value)>
|
||||
FMT_INLINE void check_format_string(const S&) {
|
||||
#ifdef FMT_ENFORCE_COMPILE_STRING
|
||||
static_assert(is_compile_string<S>::value,
|
||||
"FMT_ENFORCE_COMPILE_STRING requires all format strings to use "
|
||||
"FMT_STRING.");
|
||||
#endif
|
||||
}
|
||||
template <typename..., typename S, FMT_ENABLE_IF(is_compile_string<S>::value)>
|
||||
void check_format_string(S);
|
||||
|
||||
struct error_handler {
|
||||
constexpr error_handler() = default;
|
||||
constexpr error_handler(const error_handler&) = default;
|
||||
|
@ -553,8 +574,9 @@ class basic_format_parse_context : private ErrorHandler {
|
|||
using iterator = typename basic_string_view<Char>::iterator;
|
||||
|
||||
explicit constexpr basic_format_parse_context(
|
||||
basic_string_view<Char> format_str, ErrorHandler eh = {})
|
||||
: ErrorHandler(eh), format_str_(format_str), next_arg_id_(0) {}
|
||||
basic_string_view<Char> format_str, ErrorHandler eh = {},
|
||||
int next_arg_id = 0)
|
||||
: ErrorHandler(eh), format_str_(format_str), next_arg_id_(next_arg_id) {}
|
||||
|
||||
/**
|
||||
Returns an iterator to the beginning of the format string range being
|
||||
|
@ -624,8 +646,24 @@ template <typename T, typename Context>
|
|||
using has_formatter =
|
||||
std::is_constructible<typename Context::template formatter_type<T>>;
|
||||
|
||||
// Checks whether T is a container with contiguous storage.
|
||||
template <typename T> struct is_contiguous : std::false_type {};
|
||||
template <typename Char>
|
||||
struct is_contiguous<std::basic_string<Char>> : std::true_type {};
|
||||
|
||||
namespace detail {
|
||||
|
||||
// Extracts a reference to the container from back_insert_iterator.
|
||||
template <typename Container>
|
||||
inline Container& get_container(std::back_insert_iterator<Container> it) {
|
||||
using bi_iterator = std::back_insert_iterator<Container>;
|
||||
struct accessor : bi_iterator {
|
||||
accessor(bi_iterator iter) : bi_iterator(iter) {}
|
||||
using bi_iterator::container;
|
||||
};
|
||||
return *accessor(it).container;
|
||||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
A contiguous memory buffer with an optional growing ability. It is an internal
|
||||
|
@ -648,6 +686,8 @@ template <typename T> class buffer {
|
|||
size_(sz),
|
||||
capacity_(cap) {}
|
||||
|
||||
~buffer() = default;
|
||||
|
||||
/** Sets the buffer data and capacity. */
|
||||
void set(T* buf_data, size_t buf_capacity) FMT_NOEXCEPT {
|
||||
ptr_ = buf_data;
|
||||
|
@ -663,7 +703,6 @@ template <typename T> class buffer {
|
|||
|
||||
buffer(const buffer&) = delete;
|
||||
void operator=(const buffer&) = delete;
|
||||
virtual ~buffer() = default;
|
||||
|
||||
T* begin() FMT_NOEXCEPT { return ptr_; }
|
||||
T* end() FMT_NOEXCEPT { return ptr_ + size_; }
|
||||
|
@ -683,24 +722,26 @@ template <typename T> class buffer {
|
|||
/** Returns a pointer to the buffer data. */
|
||||
const T* data() const FMT_NOEXCEPT { return ptr_; }
|
||||
|
||||
/**
|
||||
Resizes the buffer. If T is a POD type new elements may not be initialized.
|
||||
*/
|
||||
void resize(size_t new_size) {
|
||||
reserve(new_size);
|
||||
size_ = new_size;
|
||||
}
|
||||
|
||||
/** Clears this buffer. */
|
||||
void clear() { size_ = 0; }
|
||||
|
||||
/** Reserves space to store at least *capacity* elements. */
|
||||
void reserve(size_t new_capacity) {
|
||||
// Tries resizing the buffer to contain *count* elements. If T is a POD type
|
||||
// the new elements may not be initialized.
|
||||
void try_resize(size_t count) {
|
||||
try_reserve(count);
|
||||
size_ = count <= capacity_ ? count : capacity_;
|
||||
}
|
||||
|
||||
// Tries increasing the buffer capacity to *new_capacity*. It can increase the
|
||||
// capacity by a smaller amount than requested but guarantees there is space
|
||||
// for at least one additional element either by increasing the capacity or by
|
||||
// flushing the buffer if it is full.
|
||||
void try_reserve(size_t new_capacity) {
|
||||
if (new_capacity > capacity_) grow(new_capacity);
|
||||
}
|
||||
|
||||
void push_back(const T& value) {
|
||||
reserve(size_ + 1);
|
||||
try_reserve(size_ + 1);
|
||||
ptr_[size_++] = value;
|
||||
}
|
||||
|
||||
|
@ -713,32 +754,150 @@ template <typename T> class buffer {
|
|||
}
|
||||
};
|
||||
|
||||
// A container-backed buffer.
|
||||
struct buffer_traits {
|
||||
explicit buffer_traits(size_t) {}
|
||||
size_t count() const { return 0; }
|
||||
size_t limit(size_t size) { return size; }
|
||||
};
|
||||
|
||||
class fixed_buffer_traits {
|
||||
private:
|
||||
size_t count_ = 0;
|
||||
size_t limit_;
|
||||
|
||||
public:
|
||||
explicit fixed_buffer_traits(size_t limit) : limit_(limit) {}
|
||||
size_t count() const { return count_; }
|
||||
size_t limit(size_t size) {
|
||||
size_t n = limit_ - count_;
|
||||
count_ += size;
|
||||
return size < n ? size : n;
|
||||
}
|
||||
};
|
||||
|
||||
// A buffer that writes to an output iterator when flushed.
|
||||
template <typename OutputIt, typename T, typename Traits = buffer_traits>
|
||||
class iterator_buffer final : public Traits, public buffer<T> {
|
||||
private:
|
||||
OutputIt out_;
|
||||
enum { buffer_size = 256 };
|
||||
T data_[buffer_size];
|
||||
|
||||
protected:
|
||||
void grow(size_t) final FMT_OVERRIDE {
|
||||
if (this->size() == buffer_size) flush();
|
||||
}
|
||||
void flush();
|
||||
|
||||
public:
|
||||
explicit iterator_buffer(OutputIt out, size_t n = buffer_size)
|
||||
: Traits(n),
|
||||
buffer<T>(data_, 0, n < size_t(buffer_size) ? n : size_t(buffer_size)),
|
||||
out_(out) {}
|
||||
~iterator_buffer() { flush(); }
|
||||
|
||||
OutputIt out() {
|
||||
flush();
|
||||
return out_;
|
||||
}
|
||||
size_t count() const { return Traits::count() + this->size(); }
|
||||
};
|
||||
|
||||
template <typename T> class iterator_buffer<T*, T> final : public buffer<T> {
|
||||
protected:
|
||||
void grow(size_t) final FMT_OVERRIDE {}
|
||||
|
||||
public:
|
||||
explicit iterator_buffer(T* out, size_t = 0) : buffer<T>(out, 0, ~size_t()) {}
|
||||
|
||||
T* out() { return &*this->end(); }
|
||||
};
|
||||
|
||||
// A buffer that writes to a container with the contiguous storage.
|
||||
template <typename Container>
|
||||
class container_buffer : public buffer<typename Container::value_type> {
|
||||
class iterator_buffer<std::back_insert_iterator<Container>,
|
||||
enable_if_t<is_contiguous<Container>::value,
|
||||
typename Container::value_type>>
|
||||
final : public buffer<typename Container::value_type> {
|
||||
private:
|
||||
Container& container_;
|
||||
|
||||
protected:
|
||||
void grow(size_t capacity) FMT_OVERRIDE {
|
||||
void grow(size_t capacity) final FMT_OVERRIDE {
|
||||
container_.resize(capacity);
|
||||
this->set(&container_[0], capacity);
|
||||
}
|
||||
|
||||
public:
|
||||
explicit container_buffer(Container& c)
|
||||
explicit iterator_buffer(Container& c)
|
||||
: buffer<typename Container::value_type>(c.size()), container_(c) {}
|
||||
explicit iterator_buffer(std::back_insert_iterator<Container> out, size_t = 0)
|
||||
: iterator_buffer(get_container(out)) {}
|
||||
std::back_insert_iterator<Container> out() {
|
||||
return std::back_inserter(container_);
|
||||
}
|
||||
};
|
||||
|
||||
// Extracts a reference to the container from back_insert_iterator.
|
||||
template <typename Container>
|
||||
inline Container& get_container(std::back_insert_iterator<Container> it) {
|
||||
using bi_iterator = std::back_insert_iterator<Container>;
|
||||
struct accessor : bi_iterator {
|
||||
accessor(bi_iterator iter) : bi_iterator(iter) {}
|
||||
using bi_iterator::container;
|
||||
};
|
||||
return *accessor(it).container;
|
||||
// A buffer that counts the number of code units written discarding the output.
|
||||
template <typename T = char> class counting_buffer final : public buffer<T> {
|
||||
private:
|
||||
enum { buffer_size = 256 };
|
||||
T data_[buffer_size];
|
||||
size_t count_ = 0;
|
||||
|
||||
protected:
|
||||
void grow(size_t) final FMT_OVERRIDE {
|
||||
if (this->size() != buffer_size) return;
|
||||
count_ += this->size();
|
||||
this->clear();
|
||||
}
|
||||
|
||||
public:
|
||||
counting_buffer() : buffer<T>(data_, 0, buffer_size) {}
|
||||
|
||||
size_t count() { return count_ + this->size(); }
|
||||
};
|
||||
|
||||
// An output iterator that appends to the buffer.
|
||||
// It is used to reduce symbol sizes for the common case.
|
||||
template <typename T>
|
||||
class buffer_appender : public std::back_insert_iterator<buffer<T>> {
|
||||
using base = std::back_insert_iterator<buffer<T>>;
|
||||
|
||||
public:
|
||||
explicit buffer_appender(buffer<T>& buf) : base(buf) {}
|
||||
buffer_appender(base it) : base(it) {}
|
||||
|
||||
buffer_appender& operator++() {
|
||||
base::operator++();
|
||||
return *this;
|
||||
}
|
||||
|
||||
buffer_appender operator++(int) {
|
||||
buffer_appender tmp = *this;
|
||||
++*this;
|
||||
return tmp;
|
||||
}
|
||||
};
|
||||
|
||||
// Maps an output iterator into a buffer.
|
||||
template <typename T, typename OutputIt>
|
||||
iterator_buffer<OutputIt, T> get_buffer(OutputIt);
|
||||
template <typename T> buffer<T>& get_buffer(buffer_appender<T>);
|
||||
|
||||
template <typename OutputIt> OutputIt get_buffer_init(OutputIt out) {
|
||||
return out;
|
||||
}
|
||||
template <typename T> buffer<T>& get_buffer_init(buffer_appender<T> out) {
|
||||
return get_container(out);
|
||||
}
|
||||
|
||||
template <typename Buffer>
|
||||
auto get_iterator(Buffer& buf) -> decltype(buf.out()) {
|
||||
return buf.out();
|
||||
}
|
||||
template <typename T> buffer_appender<T> get_iterator(buffer<T>& buf) {
|
||||
return buffer_appender<T>(buf);
|
||||
}
|
||||
|
||||
template <typename T, typename Char = char, typename Enable = void>
|
||||
|
@ -767,7 +926,8 @@ template <typename Char> struct named_arg_info {
|
|||
template <typename T, typename Char, size_t NUM_ARGS, size_t NUM_NAMED_ARGS>
|
||||
struct arg_data {
|
||||
// args_[0].named_args points to named_args_ to avoid bloating format_args.
|
||||
T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : 1)];
|
||||
// +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning.
|
||||
T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : +1)];
|
||||
named_arg_info<Char> named_args_[NUM_NAMED_ARGS];
|
||||
|
||||
template <typename... U>
|
||||
|
@ -779,7 +939,8 @@ struct arg_data {
|
|||
|
||||
template <typename T, typename Char, size_t NUM_ARGS>
|
||||
struct arg_data<T, Char, NUM_ARGS, 0> {
|
||||
T args_[NUM_ARGS != 0 ? NUM_ARGS : 1];
|
||||
// +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning.
|
||||
T args_[NUM_ARGS != 0 ? NUM_ARGS : +1];
|
||||
|
||||
template <typename... U>
|
||||
FMT_INLINE arg_data(const U&... init) : args_{init...} {}
|
||||
|
@ -967,6 +1128,8 @@ enum { long_short = sizeof(long) == sizeof(int) };
|
|||
using long_type = conditional_t<long_short, int, long long>;
|
||||
using ulong_type = conditional_t<long_short, unsigned, unsigned long long>;
|
||||
|
||||
struct unformattable {};
|
||||
|
||||
// Maps formatting arguments to core types.
|
||||
template <typename Context> struct arg_mapper {
|
||||
using char_type = typename Context::char_type;
|
||||
|
@ -1075,15 +1238,7 @@ template <typename Context> struct arg_mapper {
|
|||
return map(val.value);
|
||||
}
|
||||
|
||||
int map(...) {
|
||||
constexpr bool formattable = sizeof(Context) == 0;
|
||||
static_assert(
|
||||
formattable,
|
||||
"Cannot format argument. To make type T formattable provide a "
|
||||
"formatter<T> specialization: "
|
||||
"https://fmt.dev/latest/api.html#formatting-user-defined-types");
|
||||
return 0;
|
||||
}
|
||||
unformattable map(...) { return {}; }
|
||||
};
|
||||
|
||||
// A type constant after applying arg_mapper<Context>.
|
||||
|
@ -1207,15 +1362,25 @@ FMT_CONSTEXPR_DECL FMT_INLINE auto visit_format_arg(
|
|||
return vis(monostate());
|
||||
}
|
||||
|
||||
// Checks whether T is a container with contiguous storage.
|
||||
template <typename T> struct is_contiguous : std::false_type {};
|
||||
template <typename Char>
|
||||
struct is_contiguous<std::basic_string<Char>> : std::true_type {};
|
||||
template <typename Char>
|
||||
struct is_contiguous<detail::buffer<Char>> : std::true_type {};
|
||||
template <typename T> struct formattable : std::false_type {};
|
||||
|
||||
namespace detail {
|
||||
|
||||
// A workaround for gcc 4.8 to make void_t work in a SFINAE context.
|
||||
template <typename... Ts> struct void_t_impl { using type = void; };
|
||||
template <typename... Ts>
|
||||
using void_t = typename detail::void_t_impl<Ts...>::type;
|
||||
|
||||
template <typename It, typename T, typename Enable = void>
|
||||
struct is_output_iterator : std::false_type {};
|
||||
|
||||
template <typename It, typename T>
|
||||
struct is_output_iterator<
|
||||
It, T,
|
||||
void_t<typename std::iterator_traits<It>::iterator_category,
|
||||
decltype(*std::declval<It>() = std::declval<T>())>>
|
||||
: std::true_type {};
|
||||
|
||||
template <typename OutputIt>
|
||||
struct is_back_insert_iterator : std::false_type {};
|
||||
template <typename Container>
|
||||
|
@ -1227,6 +1392,9 @@ struct is_contiguous_back_insert_iterator : std::false_type {};
|
|||
template <typename Container>
|
||||
struct is_contiguous_back_insert_iterator<std::back_insert_iterator<Container>>
|
||||
: is_contiguous<Container> {};
|
||||
template <typename Char>
|
||||
struct is_contiguous_back_insert_iterator<buffer_appender<Char>>
|
||||
: std::true_type {};
|
||||
|
||||
// A type-erased reference to an std::locale to avoid heavy <locale> include.
|
||||
class locale_ref {
|
||||
|
@ -1258,13 +1426,24 @@ FMT_CONSTEXPR basic_format_arg<Context> make_arg(const T& value) {
|
|||
return arg;
|
||||
}
|
||||
|
||||
template <typename T> int check(unformattable) {
|
||||
static_assert(
|
||||
formattable<T>(),
|
||||
"Cannot format an argument. To make type T formattable provide a "
|
||||
"formatter<T> specialization: https://fmt.dev/latest/api.html#udt");
|
||||
return 0;
|
||||
}
|
||||
template <typename T, typename U> inline const U& check(const U& val) {
|
||||
return val;
|
||||
}
|
||||
|
||||
// The type template parameter is there to avoid an ODR violation when using
|
||||
// a fallback formatter in one translation unit and an implicit conversion in
|
||||
// another (not recommended).
|
||||
template <bool IS_PACKED, typename Context, type, typename T,
|
||||
FMT_ENABLE_IF(IS_PACKED)>
|
||||
inline value<Context> make_arg(const T& val) {
|
||||
return arg_mapper<Context>().map(val);
|
||||
return check<T>(arg_mapper<Context>().map(val));
|
||||
}
|
||||
|
||||
template <bool IS_PACKED, typename Context, type, typename T,
|
||||
|
@ -1364,13 +1543,13 @@ template <typename OutputIt, typename Char> class basic_format_context {
|
|||
|
||||
template <typename Char>
|
||||
using buffer_context =
|
||||
basic_format_context<std::back_insert_iterator<detail::buffer<Char>>, Char>;
|
||||
basic_format_context<detail::buffer_appender<Char>, Char>;
|
||||
using format_context = buffer_context<char>;
|
||||
using wformat_context = buffer_context<wchar_t>;
|
||||
|
||||
// Workaround a bug in gcc: https://stackoverflow.com/q/62767544/471164.
|
||||
// Workaround an alias issue: https://stackoverflow.com/q/62767544/471164.
|
||||
#define FMT_BUFFER_CONTEXT(Char) \
|
||||
basic_format_context<std::back_insert_iterator<detail::buffer<Char>>, Char>
|
||||
basic_format_context<detail::buffer_appender<Char>, Char>
|
||||
|
||||
/**
|
||||
\rst
|
||||
|
@ -1422,7 +1601,7 @@ class format_arg_store
|
|||
|
||||
/**
|
||||
\rst
|
||||
Constructs an `~fmt::format_arg_store` object that contains references to
|
||||
Constructs a `~fmt::format_arg_store` object that contains references to
|
||||
arguments and can be implicitly converted to `~fmt::format_args`. `Context`
|
||||
can be omitted in which case it defaults to `~fmt::context`.
|
||||
See `~fmt::arg` for lifetime considerations.
|
||||
|
@ -1434,6 +1613,27 @@ inline format_arg_store<Context, Args...> make_format_args(
|
|||
return {args...};
|
||||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
Constructs a `~fmt::format_arg_store` object that contains references
|
||||
to arguments and can be implicitly converted to `~fmt::format_args`.
|
||||
If ``format_str`` is a compile-time string then `make_args_checked` checks
|
||||
its validity at compile time.
|
||||
\endrst
|
||||
*/
|
||||
template <typename... Args, typename S, typename Char = char_t<S>>
|
||||
inline auto make_args_checked(const S& format_str,
|
||||
const remove_reference_t<Args>&... args)
|
||||
-> format_arg_store<buffer_context<Char>, remove_reference_t<Args>...> {
|
||||
static_assert(
|
||||
detail::count<(
|
||||
std::is_base_of<detail::view, remove_reference_t<Args>>::value &&
|
||||
std::is_reference<Args>::value)...>() == 0,
|
||||
"passing views as lvalues is disallowed");
|
||||
detail::check_format_string<Args...>(format_str);
|
||||
return {args...};
|
||||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
Returns a named argument to be used in a formatting function. It should only
|
||||
|
@ -1737,7 +1937,14 @@ template <typename Context> class basic_format_args {
|
|||
}
|
||||
};
|
||||
|
||||
/** An alias to ``basic_format_args<context>``. */
|
||||
#ifdef FMT_ARM_ABI_COMPATIBILITY
|
||||
/** An alias to ``basic_format_args<format_context>``. */
|
||||
// Separate types would result in shorter symbols but break ABI compatibility
|
||||
// between clang and gcc on ARM (#1919).
|
||||
using format_args = basic_format_args<format_context>;
|
||||
using wformat_args = basic_format_args<wformat_context>;
|
||||
#else
|
||||
// DEPRECATED! These are kept for ABI compatibility.
|
||||
// It is a separate type rather than an alias to make symbols readable.
|
||||
struct format_args : basic_format_args<format_context> {
|
||||
template <typename... Args>
|
||||
|
@ -1746,32 +1953,10 @@ struct format_args : basic_format_args<format_context> {
|
|||
struct wformat_args : basic_format_args<wformat_context> {
|
||||
using basic_format_args::basic_format_args;
|
||||
};
|
||||
#endif
|
||||
|
||||
namespace detail {
|
||||
|
||||
// Reports a compile-time error if S is not a valid format string.
|
||||
template <typename..., typename S, FMT_ENABLE_IF(!is_compile_string<S>::value)>
|
||||
FMT_INLINE void check_format_string(const S&) {
|
||||
#ifdef FMT_ENFORCE_COMPILE_STRING
|
||||
static_assert(is_compile_string<S>::value,
|
||||
"FMT_ENFORCE_COMPILE_STRING requires all format strings to use "
|
||||
"FMT_STRING.");
|
||||
#endif
|
||||
}
|
||||
template <typename..., typename S, FMT_ENABLE_IF(is_compile_string<S>::value)>
|
||||
void check_format_string(S);
|
||||
|
||||
template <typename... Args, typename S, typename Char = char_t<S>>
|
||||
inline format_arg_store<buffer_context<Char>, remove_reference_t<Args>...>
|
||||
make_args_checked(const S& format_str,
|
||||
const remove_reference_t<Args>&... args) {
|
||||
static_assert(count<(std::is_base_of<view, remove_reference_t<Args>>::value &&
|
||||
std::is_reference<Args>::value)...>() == 0,
|
||||
"passing views as lvalues is disallowed");
|
||||
check_format_string<Args...>(format_str);
|
||||
return {args...};
|
||||
}
|
||||
|
||||
template <typename Char, FMT_ENABLE_IF(!std::is_same<Char, char>::value)>
|
||||
std::basic_string<Char> vformat(
|
||||
basic_string_view<Char> format_str,
|
||||
|
@ -1780,9 +1965,10 @@ std::basic_string<Char> vformat(
|
|||
FMT_API std::string vformat(string_view format_str, format_args args);
|
||||
|
||||
template <typename Char>
|
||||
typename FMT_BUFFER_CONTEXT(Char)::iterator vformat_to(
|
||||
void vformat_to(
|
||||
buffer<Char>& buf, basic_string_view<Char> format_str,
|
||||
basic_format_args<FMT_BUFFER_CONTEXT(type_identity_t<Char>)> args);
|
||||
basic_format_args<FMT_BUFFER_CONTEXT(type_identity_t<Char>)> args,
|
||||
detail::locale_ref loc = {});
|
||||
|
||||
template <typename Char, typename Args,
|
||||
FMT_ENABLE_IF(!std::is_same<Char, char>::value)>
|
||||
|
@ -1797,26 +1983,80 @@ inline void vprint_mojibake(std::FILE*, string_view, format_args) {}
|
|||
/** Formats a string and writes the output to ``out``. */
|
||||
// GCC 8 and earlier cannot handle std::back_insert_iterator<Container> with
|
||||
// vformat_to<ArgFormatter>(...) overload, so SFINAE on iterator type instead.
|
||||
template <
|
||||
typename OutputIt, typename S, typename Char = char_t<S>,
|
||||
FMT_ENABLE_IF(detail::is_contiguous_back_insert_iterator<OutputIt>::value)>
|
||||
OutputIt vformat_to(
|
||||
OutputIt out, const S& format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
auto& c = detail::get_container(out);
|
||||
detail::container_buffer<remove_reference_t<decltype(c)>> buf(c);
|
||||
template <typename OutputIt, typename S, typename Char = char_t<S>,
|
||||
bool enable = detail::is_output_iterator<OutputIt, Char>::value>
|
||||
auto vformat_to(OutputIt out, const S& format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args)
|
||||
-> typename std::enable_if<enable, OutputIt>::type {
|
||||
decltype(detail::get_buffer<Char>(out)) buf(detail::get_buffer_init(out));
|
||||
detail::vformat_to(buf, to_string_view(format_str), args);
|
||||
return out;
|
||||
return detail::get_iterator(buf);
|
||||
}
|
||||
|
||||
template <typename Container, typename S, typename... Args,
|
||||
FMT_ENABLE_IF(
|
||||
is_contiguous<Container>::value&& detail::is_string<S>::value)>
|
||||
inline std::back_insert_iterator<Container> format_to(
|
||||
std::back_insert_iterator<Container> out, const S& format_str,
|
||||
Args&&... args) {
|
||||
return vformat_to(out, to_string_view(format_str),
|
||||
detail::make_args_checked<Args...>(format_str, args...));
|
||||
/**
|
||||
\rst
|
||||
Formats arguments, writes the result to the output iterator ``out`` and returns
|
||||
the iterator past the end of the output range.
|
||||
|
||||
**Example**::
|
||||
|
||||
std::vector<char> out;
|
||||
fmt::format_to(std::back_inserter(out), "{}", 42);
|
||||
\endrst
|
||||
*/
|
||||
// We cannot use FMT_ENABLE_IF because of a bug in gcc 8.3.
|
||||
template <typename OutputIt, typename S, typename... Args,
|
||||
bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value>
|
||||
inline auto format_to(OutputIt out, const S& format_str, Args&&... args) ->
|
||||
typename std::enable_if<enable, OutputIt>::type {
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return vformat_to(out, to_string_view(format_str), vargs);
|
||||
}
|
||||
|
||||
template <typename OutputIt> struct format_to_n_result {
|
||||
/** Iterator past the end of the output range. */
|
||||
OutputIt out;
|
||||
/** Total (not truncated) output size. */
|
||||
size_t size;
|
||||
};
|
||||
|
||||
template <typename OutputIt, typename Char, typename... Args,
|
||||
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value)>
|
||||
inline format_to_n_result<OutputIt> vformat_to_n(
|
||||
OutputIt out, size_t n, basic_string_view<Char> format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
detail::iterator_buffer<OutputIt, Char, detail::fixed_buffer_traits> buf(out,
|
||||
n);
|
||||
detail::vformat_to(buf, format_str, args);
|
||||
return {buf.out(), buf.count()};
|
||||
}
|
||||
|
||||
/**
|
||||
\rst
|
||||
Formats arguments, writes up to ``n`` characters of the result to the output
|
||||
iterator ``out`` and returns the total output size and the iterator past the
|
||||
end of the output range.
|
||||
\endrst
|
||||
*/
|
||||
template <typename OutputIt, typename S, typename... Args,
|
||||
bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value>
|
||||
inline auto format_to_n(OutputIt out, size_t n, const S& format_str,
|
||||
const Args&... args) ->
|
||||
typename std::enable_if<enable, format_to_n_result<OutputIt>>::type {
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return vformat_to_n(out, n, to_string_view(format_str), vargs);
|
||||
}
|
||||
|
||||
/**
|
||||
Returns the number of characters in the output of
|
||||
``format(format_str, args...)``.
|
||||
*/
|
||||
template <typename... Args>
|
||||
inline size_t formatted_size(string_view format_str, Args&&... args) {
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
detail::counting_buffer<> buf;
|
||||
detail::vformat_to(buf, format_str, vargs);
|
||||
return buf.count();
|
||||
}
|
||||
|
||||
template <typename S, typename Char = char_t<S>>
|
||||
|
@ -1840,7 +2080,7 @@ FMT_INLINE std::basic_string<Char> vformat(
|
|||
// std::basic_string<char_t<S>> to reduce the symbol size.
|
||||
template <typename S, typename... Args, typename Char = char_t<S>>
|
||||
FMT_INLINE std::basic_string<Char> format(const S& format_str, Args&&... args) {
|
||||
const auto& vargs = detail::make_args_checked<Args...>(format_str, args...);
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return detail::vformat(to_string_view(format_str), vargs);
|
||||
}
|
||||
|
||||
|
@ -1860,7 +2100,7 @@ FMT_API void vprint(std::FILE*, string_view, format_args);
|
|||
*/
|
||||
template <typename S, typename... Args, typename Char = char_t<S>>
|
||||
inline void print(std::FILE* f, const S& format_str, Args&&... args) {
|
||||
const auto& vargs = detail::make_args_checked<Args...>(format_str, args...);
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return detail::is_unicode<Char>()
|
||||
? vprint(f, to_string_view(format_str), vargs)
|
||||
: detail::vprint_mojibake(f, to_string_view(format_str), vargs);
|
||||
|
@ -1879,7 +2119,7 @@ inline void print(std::FILE* f, const S& format_str, Args&&... args) {
|
|||
*/
|
||||
template <typename S, typename... Args, typename Char = char_t<S>>
|
||||
inline void print(const S& format_str, Args&&... args) {
|
||||
const auto& vargs = detail::make_args_checked<Args...>(format_str, args...);
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return detail::is_unicode<Char>()
|
||||
? vprint(to_string_view(format_str), vargs)
|
||||
: detail::vprint_mojibake(stdout, to_string_view(format_str),
|
||||
|
|
1898
src/fmt/format-inl.h
1898
src/fmt/format-inl.h
File diff suppressed because it is too large
Load Diff
1151
src/fmt/format.h
1151
src/fmt/format.h
File diff suppressed because it is too large
Load Diff
|
@ -15,22 +15,12 @@
|
|||
FMT_BEGIN_NAMESPACE
|
||||
|
||||
namespace detail {
|
||||
template <typename Char>
|
||||
typename buffer_context<Char>::iterator vformat_to(
|
||||
const std::locale& loc, buffer<Char>& buf,
|
||||
basic_string_view<Char> format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
using af = arg_formatter<typename buffer_context<Char>::iterator, Char>;
|
||||
return vformat_to<af>(std::back_inserter(buf), to_string_view(format_str),
|
||||
args, detail::locale_ref(loc));
|
||||
}
|
||||
|
||||
template <typename Char>
|
||||
std::basic_string<Char> vformat(
|
||||
const std::locale& loc, basic_string_view<Char> format_str,
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
basic_memory_buffer<Char> buffer;
|
||||
detail::vformat_to(loc, buffer, format_str, args);
|
||||
detail::vformat_to(buffer, format_str, args, detail::locale_ref(loc));
|
||||
return fmt::to_string(buffer);
|
||||
}
|
||||
} // namespace detail
|
||||
|
@ -45,32 +35,28 @@ inline std::basic_string<Char> vformat(
|
|||
template <typename S, typename... Args, typename Char = char_t<S>>
|
||||
inline std::basic_string<Char> format(const std::locale& loc,
|
||||
const S& format_str, Args&&... args) {
|
||||
return detail::vformat(
|
||||
loc, to_string_view(format_str),
|
||||
detail::make_args_checked<Args...>(format_str, args...));
|
||||
return detail::vformat(loc, to_string_view(format_str),
|
||||
fmt::make_args_checked<Args...>(format_str, args...));
|
||||
}
|
||||
|
||||
template <typename S, typename OutputIt, typename... Args,
|
||||
typename Char = enable_if_t<
|
||||
detail::is_output_iterator<OutputIt>::value, char_t<S>>>
|
||||
typename Char = char_t<S>,
|
||||
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value)>
|
||||
inline OutputIt vformat_to(
|
||||
OutputIt out, const std::locale& loc, const S& format_str,
|
||||
format_args_t<type_identity_t<OutputIt>, Char> args) {
|
||||
using af = detail::arg_formatter<OutputIt, Char>;
|
||||
return vformat_to<af>(out, to_string_view(format_str), args,
|
||||
detail::locale_ref(loc));
|
||||
basic_format_args<buffer_context<type_identity_t<Char>>> args) {
|
||||
decltype(detail::get_buffer<Char>(out)) buf(detail::get_buffer_init(out));
|
||||
vformat_to(buf, to_string_view(format_str), args, detail::locale_ref(loc));
|
||||
return detail::get_iterator(buf);
|
||||
}
|
||||
|
||||
template <typename OutputIt, typename S, typename... Args,
|
||||
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt>::value&&
|
||||
detail::is_string<S>::value)>
|
||||
inline OutputIt format_to(OutputIt out, const std::locale& loc,
|
||||
const S& format_str, Args&&... args) {
|
||||
detail::check_format_string<Args...>(format_str);
|
||||
using context = format_context_t<OutputIt, char_t<S>>;
|
||||
format_arg_store<context, Args...> as{args...};
|
||||
return vformat_to(out, loc, to_string_view(format_str),
|
||||
basic_format_args<context>(as));
|
||||
bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value>
|
||||
inline auto format_to(OutputIt out, const std::locale& loc,
|
||||
const S& format_str, Args&&... args) ->
|
||||
typename std::enable_if<enable, OutputIt>::type {
|
||||
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
|
||||
return vformat_to(out, loc, to_string_view(format_str), vargs);
|
||||
}
|
||||
|
||||
FMT_END_NAMESPACE
|
||||
|
|
106
src/fmt/os.h
106
src/fmt/os.h
|
@ -29,7 +29,8 @@
|
|||
#if FMT_HAS_INCLUDE("winapifamily.h")
|
||||
# include <winapifamily.h>
|
||||
#endif
|
||||
#if FMT_HAS_INCLUDE("fcntl.h") && \
|
||||
#if (FMT_HAS_INCLUDE(<fcntl.h>) || defined(__APPLE__) || \
|
||||
defined(__linux__)) && \
|
||||
(!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
|
||||
# include <fcntl.h> // for O_RDONLY
|
||||
# define FMT_USE_FCNTL 1
|
||||
|
@ -278,7 +279,8 @@ class file {
|
|||
RDONLY = FMT_POSIX(O_RDONLY), // Open for reading only.
|
||||
WRONLY = FMT_POSIX(O_WRONLY), // Open for writing only.
|
||||
RDWR = FMT_POSIX(O_RDWR), // Open for reading and writing.
|
||||
CREATE = FMT_POSIX(O_CREAT) // Create if the file doesn't exist.
|
||||
CREATE = FMT_POSIX(O_CREAT), // Create if the file doesn't exist.
|
||||
APPEND = FMT_POSIX(O_APPEND) // Open in append mode.
|
||||
};
|
||||
|
||||
// Constructs a file object which doesn't represent any file.
|
||||
|
@ -343,36 +345,69 @@ class file {
|
|||
// Returns the memory page size.
|
||||
long getpagesize();
|
||||
|
||||
class direct_buffered_file;
|
||||
namespace detail {
|
||||
|
||||
template <typename S, typename... Args>
|
||||
void print(direct_buffered_file& f, const S& format_str,
|
||||
const Args&... args);
|
||||
struct buffer_size {
|
||||
size_t value = 0;
|
||||
buffer_size operator=(size_t val) const {
|
||||
auto bs = buffer_size();
|
||||
bs.value = val;
|
||||
return bs;
|
||||
}
|
||||
};
|
||||
|
||||
// A buffered file with a direct buffer access and no synchronization.
|
||||
class direct_buffered_file {
|
||||
struct ostream_params {
|
||||
int oflag = file::WRONLY | file::CREATE;
|
||||
size_t buffer_size = BUFSIZ > 32768 ? BUFSIZ : 32768;
|
||||
|
||||
ostream_params() {}
|
||||
|
||||
template <typename... T>
|
||||
ostream_params(T... params, int oflag) : ostream_params(params...) {
|
||||
this->oflag = oflag;
|
||||
}
|
||||
|
||||
template <typename... T>
|
||||
ostream_params(T... params, detail::buffer_size bs)
|
||||
: ostream_params(params...) {
|
||||
this->buffer_size = bs.value;
|
||||
}
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
static constexpr detail::buffer_size buffer_size;
|
||||
|
||||
// A fast output stream which is not thread-safe.
|
||||
class ostream final : private detail::buffer<char> {
|
||||
private:
|
||||
file file_;
|
||||
|
||||
enum { buffer_size = 4096 };
|
||||
char buffer_[buffer_size];
|
||||
int pos_;
|
||||
|
||||
void flush() {
|
||||
if (pos_ == 0) return;
|
||||
file_.write(buffer_, pos_);
|
||||
pos_ = 0;
|
||||
if (size() == 0) return;
|
||||
file_.write(data(), size());
|
||||
clear();
|
||||
}
|
||||
|
||||
int free_capacity() const { return buffer_size - pos_; }
|
||||
void grow(size_t) final;
|
||||
|
||||
ostream(cstring_view path, const detail::ostream_params& params)
|
||||
: file_(path, params.oflag) {
|
||||
set(new char[params.buffer_size], params.buffer_size);
|
||||
}
|
||||
|
||||
public:
|
||||
direct_buffered_file(cstring_view path, int oflag)
|
||||
: file_(path, oflag), pos_(0) {}
|
||||
|
||||
~direct_buffered_file() {
|
||||
flush();
|
||||
ostream(ostream&& other)
|
||||
: detail::buffer<char>(other.data(), other.size(), other.capacity()),
|
||||
file_(std::move(other.file_)) {
|
||||
other.set(nullptr, 0);
|
||||
}
|
||||
~ostream() {
|
||||
flush();
|
||||
delete[] data();
|
||||
}
|
||||
|
||||
template <typename... T>
|
||||
friend ostream output_file(cstring_view path, T... params);
|
||||
|
||||
void close() {
|
||||
flush();
|
||||
|
@ -380,25 +415,20 @@ class direct_buffered_file {
|
|||
}
|
||||
|
||||
template <typename S, typename... Args>
|
||||
friend void print(direct_buffered_file& f, const S& format_str,
|
||||
const Args&... args) {
|
||||
// We could avoid double buffering.
|
||||
auto buf = fmt::memory_buffer();
|
||||
fmt::format_to(std::back_inserter(buf), format_str, args...);
|
||||
auto remaining_pos = 0;
|
||||
auto remaining_size = buf.size();
|
||||
while (remaining_size > detail::to_unsigned(f.free_capacity())) {
|
||||
auto size = f.free_capacity();
|
||||
memcpy(f.buffer_ + f.pos_, buf.data() + remaining_pos, size);
|
||||
f.pos_ += size;
|
||||
f.flush();
|
||||
remaining_pos += size;
|
||||
remaining_size -= size;
|
||||
}
|
||||
memcpy(f.buffer_ + f.pos_, buf.data() + remaining_pos, remaining_size);
|
||||
f.pos_ += static_cast<int>(remaining_size);
|
||||
void print(const S& format_str, const Args&... args) {
|
||||
format_to(detail::buffer_appender<char>(*this), format_str, args...);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Opens a file for writing. Supported parameters passed in `params`:
|
||||
* ``<integer>``: Output flags (``file::WRONLY | file::CREATE`` by default)
|
||||
* ``buffer_size=<integer>``: Output buffer size
|
||||
*/
|
||||
template <typename... T>
|
||||
inline ostream output_file(cstring_view path, T... params) {
|
||||
return {path, detail::ostream_params(params...)};
|
||||
}
|
||||
#endif // FMT_USE_FCNTL
|
||||
|
||||
#ifdef FMT_LOCALE
|
||||
|
|
|
@ -49,17 +49,27 @@ template <class Char> class formatbuf : public std::basic_streambuf<Char> {
|
|||
}
|
||||
};
|
||||
|
||||
struct converter {
|
||||
template <typename T, FMT_ENABLE_IF(is_integral<T>::value)> converter(T);
|
||||
};
|
||||
|
||||
template <typename Char> struct test_stream : std::basic_ostream<Char> {
|
||||
private:
|
||||
// Hide all operator<< from std::basic_ostream<Char>.
|
||||
void_t<> operator<<(null<>);
|
||||
void_t<> operator<<(const Char*);
|
||||
|
||||
template <typename T, FMT_ENABLE_IF(std::is_convertible<T, int>::value &&
|
||||
!std::is_enum<T>::value)>
|
||||
void_t<> operator<<(T);
|
||||
void_t<> operator<<(converter);
|
||||
};
|
||||
|
||||
// Hide insertion operators for built-in types.
|
||||
template <typename Char, typename Traits>
|
||||
void_t<> operator<<(std::basic_ostream<Char, Traits>&, Char);
|
||||
template <typename Char, typename Traits>
|
||||
void_t<> operator<<(std::basic_ostream<Char, Traits>&, char);
|
||||
template <typename Traits>
|
||||
void_t<> operator<<(std::basic_ostream<char, Traits>&, char);
|
||||
template <typename Traits>
|
||||
void_t<> operator<<(std::basic_ostream<char, Traits>&, signed char);
|
||||
template <typename Traits>
|
||||
void_t<> operator<<(std::basic_ostream<char, Traits>&, unsigned char);
|
||||
|
||||
// Checks if T has a user-defined operator<< (e.g. not a member of
|
||||
// std::ostream).
|
||||
template <typename T, typename Char> class is_streamable {
|
||||
|
@ -103,7 +113,7 @@ void format_value(buffer<Char>& buf, const T& value,
|
|||
#endif
|
||||
output << value;
|
||||
output.exceptions(std::ios_base::failbit | std::ios_base::badbit);
|
||||
buf.resize(buf.size());
|
||||
buf.try_resize(buf.size());
|
||||
}
|
||||
|
||||
// Formats an object of type T that has an overloaded ostream operator<<.
|
||||
|
@ -160,7 +170,7 @@ template <typename S, typename... Args,
|
|||
typename Char = enable_if_t<detail::is_string<S>::value, char_t<S>>>
|
||||
void print(std::basic_ostream<Char>& os, const S& format_str, Args&&... args) {
|
||||
vprint(os, to_string_view(format_str),
|
||||
detail::make_args_checked<Args...>(format_str, args...));
|
||||
fmt::make_args_checked<Args...>(format_str, args...));
|
||||
}
|
||||
FMT_END_NAMESPACE
|
||||
|
||||
|
|
|
@ -181,7 +181,7 @@ template <typename Char> class printf_width_handler {
|
|||
template <typename Char, typename Context>
|
||||
void vprintf(buffer<Char>& buf, basic_string_view<Char> format,
|
||||
basic_format_args<Context> args) {
|
||||
Context(std::back_inserter(buf), format, args).format();
|
||||
Context(buffer_appender<Char>(buf), format, args).format();
|
||||
}
|
||||
} // namespace detail
|
||||
|
||||
|
@ -598,7 +598,7 @@ OutputIt basic_printf_context<OutputIt, Char>::format() {
|
|||
|
||||
template <typename Char>
|
||||
using basic_printf_context_t =
|
||||
basic_printf_context<std::back_insert_iterator<detail::buffer<Char>>, Char>;
|
||||
basic_printf_context<detail::buffer_appender<Char>, Char>;
|
||||
|
||||
using printf_context = basic_printf_context_t<char>;
|
||||
using wprintf_context = basic_printf_context_t<wchar_t>;
|
||||
|
|
|
@ -157,6 +157,9 @@ template <class Tuple, class F> void for_each(Tuple&& tup, F&& f) {
|
|||
for_each(indexes, std::forward<Tuple>(tup), std::forward<F>(f));
|
||||
}
|
||||
|
||||
template <typename Range>
|
||||
using value_type = remove_cvref_t<decltype(*std::declval<Range>().begin())>;
|
||||
|
||||
template <typename Arg, FMT_ENABLE_IF(!is_like_std_string<
|
||||
typename std::decay<Arg>::type>::value)>
|
||||
FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&) {
|
||||
|
@ -182,7 +185,6 @@ FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char) {
|
|||
FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t) {
|
||||
return add_space ? L" '{}'" : L"'{}'";
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <typename T> struct is_tuple_like {
|
||||
|
@ -246,9 +248,15 @@ template <typename T, typename Char> struct is_range {
|
|||
!std::is_constructible<detail::std_string_view<Char>, T>::value;
|
||||
};
|
||||
|
||||
template <typename RangeT, typename Char>
|
||||
struct formatter<RangeT, Char,
|
||||
enable_if_t<fmt::is_range<RangeT, Char>::value>> {
|
||||
template <typename T, typename Char>
|
||||
struct formatter<
|
||||
T, Char,
|
||||
enable_if_t<fmt::is_range<T, Char>::value
|
||||
// Workaround a bug in MSVC 2017 and earlier.
|
||||
#if !FMT_MSC_VER || FMT_MSC_VER >= 1927
|
||||
&& has_formatter<detail::value_type<T>, format_context>::value
|
||||
#endif
|
||||
>> {
|
||||
formatting_range<Char> formatting;
|
||||
|
||||
template <typename ParseContext>
|
||||
|
@ -257,8 +265,7 @@ struct formatter<RangeT, Char,
|
|||
}
|
||||
|
||||
template <typename FormatContext>
|
||||
typename FormatContext::iterator format(const RangeT& values,
|
||||
FormatContext& ctx) {
|
||||
typename FormatContext::iterator format(const T& values, FormatContext& ctx) {
|
||||
auto out = detail::copy(formatting.prefix, ctx.out());
|
||||
size_t i = 0;
|
||||
auto it = values.begin();
|
||||
|
|
|
@ -23,6 +23,36 @@ int format_float(char* buf, std::size_t size, const char* format, int precision,
|
|||
return precision < 0 ? snprintf_ptr(buf, size, format, value)
|
||||
: snprintf_ptr(buf, size, format, precision, value);
|
||||
}
|
||||
|
||||
template dragonbox::decimal_fp<float> dragonbox::to_decimal(float x)
|
||||
FMT_NOEXCEPT;
|
||||
template dragonbox::decimal_fp<double> dragonbox::to_decimal(double x)
|
||||
FMT_NOEXCEPT;
|
||||
|
||||
// DEPRECATED! This function exists for ABI compatibility.
|
||||
template <typename Char>
|
||||
typename basic_format_context<std::back_insert_iterator<buffer<Char>>,
|
||||
Char>::iterator
|
||||
vformat_to(buffer<Char>& buf, basic_string_view<Char> format_str,
|
||||
basic_format_args<basic_format_context<
|
||||
std::back_insert_iterator<buffer<type_identity_t<Char>>>,
|
||||
type_identity_t<Char>>>
|
||||
args) {
|
||||
using iterator = std::back_insert_iterator<buffer<char>>;
|
||||
using context = basic_format_context<
|
||||
std::back_insert_iterator<buffer<type_identity_t<Char>>>,
|
||||
type_identity_t<Char>>;
|
||||
auto out = iterator(buf);
|
||||
format_handler<iterator, Char, context> h(out, format_str, args, {});
|
||||
parse_format_string<false>(format_str, h);
|
||||
return out;
|
||||
}
|
||||
template basic_format_context<std::back_insert_iterator<buffer<char>>,
|
||||
char>::iterator
|
||||
vformat_to(buffer<char>&, string_view,
|
||||
basic_format_args<basic_format_context<
|
||||
std::back_insert_iterator<buffer<type_identity_t<char>>>,
|
||||
type_identity_t<char>>>);
|
||||
} // namespace detail
|
||||
|
||||
template struct FMT_INSTANTIATION_DEF_API detail::basic_data<void>;
|
||||
|
@ -44,9 +74,9 @@ template FMT_API char detail::decimal_point_impl(locale_ref);
|
|||
|
||||
template FMT_API void detail::buffer<char>::append(const char*, const char*);
|
||||
|
||||
template FMT_API FMT_BUFFER_CONTEXT(char)::iterator detail::vformat_to(
|
||||
template FMT_API void detail::vformat_to(
|
||||
detail::buffer<char>&, string_view,
|
||||
basic_format_args<FMT_BUFFER_CONTEXT(char)>);
|
||||
basic_format_args<FMT_BUFFER_CONTEXT(char)>, detail::locale_ref);
|
||||
|
||||
template FMT_API int detail::snprintf_float(double, int, detail::float_specs,
|
||||
detail::buffer<char>&);
|
||||
|
|
|
@ -62,7 +62,7 @@ using RWResult = int;
|
|||
inline unsigned convert_rwcount(std::size_t count) {
|
||||
return count <= UINT_MAX ? static_cast<unsigned>(count) : UINT_MAX;
|
||||
}
|
||||
#else
|
||||
#elif FMT_USE_FCNTL
|
||||
// Return type of read and write functions.
|
||||
using RWResult = ssize_t;
|
||||
|
||||
|
@ -124,7 +124,8 @@ void detail::format_windows_error(detail::buffer<char>& out, int error_code,
|
|||
if (result != 0) {
|
||||
utf16_to_utf8 utf8_message;
|
||||
if (utf8_message.convert(system_message) == ERROR_SUCCESS) {
|
||||
format_to(std::back_inserter(out), "{}: {}", message, utf8_message);
|
||||
format_to(buffer_appender<char>(out), "{}: {}", message,
|
||||
utf8_message);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
@ -288,12 +289,12 @@ void file::pipe(file& read_end, file& write_end) {
|
|||
}
|
||||
|
||||
buffered_file file::fdopen(const char* mode) {
|
||||
// Don't retry as fdopen doesn't return EINTR.
|
||||
#if defined(__MINGW32__) && defined(_POSIX_)
|
||||
// Don't retry as fdopen doesn't return EINTR.
|
||||
# if defined(__MINGW32__) && defined(_POSIX_)
|
||||
FILE* f = ::fdopen(fd_, mode);
|
||||
#else
|
||||
# else
|
||||
FILE* f = FMT_POSIX_CALL(fdopen(fd_, mode));
|
||||
#endif
|
||||
# endif
|
||||
if (!f)
|
||||
FMT_THROW(
|
||||
system_error(errno, "cannot associate stream with file descriptor"));
|
||||
|
@ -313,5 +314,9 @@ long getpagesize() {
|
|||
return size;
|
||||
# endif
|
||||
}
|
||||
|
||||
void ostream::grow(size_t) {
|
||||
if (this->size() == this->capacity()) flush();
|
||||
}
|
||||
#endif // FMT_USE_FCNTL
|
||||
FMT_END_NAMESPACE
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue