diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6d1bcee2db..d4a33ea46a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -73,8 +73,8 @@ src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps src/EXTRA-DUMP/dump_extxyz.* @fxcoudert src/EXTRA-FIX/fix_deform_pressure.* @jtclemm -src/EXTRA-PAIR/pair_dispersion_d3.* @soniasolomoni @arthurfl -src/EXTRA-PAIR/d3_parameters.h @soniasolomoni @arthurfl +src/EXTRA-PAIR/pair_dispersion_d3.* @soniasalomoni @arthurfl +src/EXTRA-PAIR/d3_parameters.h @soniasalomoni @arthurfl src/MISC/*_tracker.* @jtclemm src/MC/fix_gcmc.* @athomps src/MC/fix_sgcmc.* @athomps diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 511d54114c..c0ca3e2778 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -73,7 +73,7 @@ if(BUILD_DOC) # download mathjax distribution and unpack to folder "mathjax" if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/mathjax/es5) if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz) - file(MD5 ${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz) + file(MD5 ${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz DL_MD5) endif() if(NOT "${DL_MD5}" STREQUAL "${MATHJAX_MD5}") file(DOWNLOAD ${MATHJAX_URL} "${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz" STATUS DL_STATUS SHOW_PROGRESS) diff --git a/cmake/Modules/Packages/COLVARS.cmake b/cmake/Modules/Packages/COLVARS.cmake index afef315120..b4dc738626 100644 --- a/cmake/Modules/Packages/COLVARS.cmake +++ b/cmake/Modules/Packages/COLVARS.cmake @@ -27,6 +27,7 @@ if(BUILD_OMP) endif() if(BUILD_MPI) + target_compile_definitions(colvars PUBLIC -DCOLVARS_MPI) target_link_libraries(colvars PUBLIC MPI::MPI_CXX) endif() diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index 1b4845d259..606fe2174b 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -32,9 +32,9 @@ endif() # Note: must also adjust check for supported API versions in # fix_plumed.cpp when version changes from v2.n.x to v2.n+1.y -set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.3/plumed-src-2.9.3.tgz" +set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.4/plumed-src-2.9.4.tgz" CACHE STRING "URL for PLUMED tarball") -set(PLUMED_MD5 "ee1249805fe94bccee17d10610d3f6f1" CACHE STRING "MD5 checksum of PLUMED tarball") +set(PLUMED_MD5 "e540bf5132e3270e843398a6080d00c7" CACHE STRING "MD5 checksum of PLUMED tarball") mark_as_advanced(PLUMED_URL) mark_as_advanced(PLUMED_MD5) diff --git a/cmake/packaging/build_linux_tgz.sh b/cmake/packaging/build_linux_tgz.sh index 276da019ae..14c9f2b377 100755 --- a/cmake/packaging/build_linux_tgz.sh +++ b/cmake/packaging/build_linux_tgz.sh @@ -5,7 +5,7 @@ DESTDIR=${PWD}/../LAMMPS_GUI VERSION="$1" echo "Delete old files, if they exist" -rm -rf ${DESTDIR} ../LAMMPS_GUI-Linux-amd64*.tar.gz +rm -rf ${DESTDIR} ../LAMMPS-GUI-Linux-amd64*.tar.gz echo "Create staging area for deployment and populate" DESTDIR=${DESTDIR} cmake --install . --prefix "/" @@ -25,18 +25,18 @@ rm -f ${DESTDIR}/lib/libgcc_s* rm -f ${DESTDIR}/lib/libstdc++* # get qt dir -QTDIR=$(ldd ${DESTDIR}/bin/lammps-gui | grep libQt5Core | sed -e 's/^.*=> *//' -e 's/libQt5Core.so.*$/qt5/') +QTDIR=$(ldd ${DESTDIR}/bin/lammps-gui | grep libQt.Core | sed -e 's/^.*=> *//' -e 's/libQt\(.\)Core.so.*$/qt\1/') cat > ${DESTDIR}/bin/qt.conf < *//' -e 's/\(libQt5.*.so.*\) .*$/\1/') +QTDEPS=$(LD_LIBRARY_PATH=${DESTDIR}/lib ldd ${QTDIR}/plugins/platforms/libqxcb.so | grep -v ${DESTDIR} | grep libQt[56] | sed -e 's/^.*=> *//' -e 's/\(libQt[56].*.so.*\) .*$/\1/') for dep in ${QTDEPS} do \ cp ${dep} ${DESTDIR}/lib @@ -45,13 +45,13 @@ done echo "Add additional plugins for Qt" for dir in styles imageformats do \ - cp -r ${QTDIR}/plugins/${dir} ${DESTDIR}/qt5plugins/ + cp -r ${QTDIR}/plugins/${dir} ${DESTDIR}/qtplugins/ done # get imageplugin dependencies -for s in ${DESTDIR}/qt5plugins/imageformats/*.so +for s in ${DESTDIR}/qtplugins/imageformats/*.so do \ - QTDEPS=$(LD_LIBRARY_PATH=${DESTDIR}/lib ldd $s | grep -v ${DESTDIR} | grep -E '(libQt5|jpeg)' | sed -e 's/^.*=> *//' -e 's/\(lib.*.so.*\) .*$/\1/') + QTDEPS=$(LD_LIBRARY_PATH=${DESTDIR}/lib ldd $s | grep -v ${DESTDIR} | grep -E '(libQt.|jpeg)' | sed -e 's/^.*=> *//' -e 's/\(lib.*.so.*\) .*$/\1/') for dep in ${QTDEPS} do \ cp ${dep} ${DESTDIR}/lib @@ -72,7 +72,7 @@ do \ done pushd .. -tar -czvvf LAMMPS_GUI-Linux-amd64-${VERSION}.tar.gz LAMMPS_GUI +tar -czvvf LAMMPS-GUI-Linux-amd64-${VERSION}.tar.gz LAMMPS_GUI popd echo "Cleanup dir" diff --git a/doc/Makefile b/doc/Makefile index 58800ec633..edb569cf6d 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -66,11 +66,13 @@ help: @echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)" @echo " (requires ebook-convert tool from calibre)" @echo " fasthtml approximate HTML page creation in fasthtml dir (for development)" + @echo " upgrade upgrade sphinx, extensions, and dependencies to latest supported versions" @echo " clean remove all intermediate files" @echo " clean-all reset the entire build environment" @echo " anchor_check scan for duplicate anchor labels" @echo " style_check check for complete and consistent style lists" @echo " package_check check for complete and consistent package lists" + @echo " char_check check for non-ASCII characters" @echo " role_check check for misformatted role keywords" @echo " spelling spell-check the manual" diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index 0df3cf2f83..0a4e48625f 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -380,7 +380,7 @@ Bibliography Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006). **(Elliott)** - Elliott, Tadmor and Bernstein, `https://openkim.org/kim-api `_ (2011) doi: `https://doi.org/10.25950/FF8F563A `_ + Elliott, Tadmor and Bernstein, `https://openkim.org/kim-api/ `_ (2011) doi: `https://doi.org/10.25950/FF8F563A `_ **(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021) @@ -1098,9 +1098,6 @@ Bibliography **(Parrinello)** Parrinello and Rahman, J Appl Phys, 52, 7182 (1981). -**(PASS)** - PASS webpage: https://www.sdu.dk/en/DPASS - **(Paula Leite2016)** Paula Leite , Freitas, Azevedo, and de Koning, J Chem Phys, 126, 044509 (2016). @@ -1213,7 +1210,7 @@ Bibliography S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141 **(Roberts)** - R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ + R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ **(Rohart)** Rohart and Thiaville, Physical Review B, 88(18), 184422. (2013). diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 2349eebf62..05fe976e80 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -217,6 +217,5 @@ Most Linux distributions offer pre-compiled cmake packages through their package management system. If you do not have CMake or a recent enough version (Note: for CentOS 7.x you need to enable the EPEL repository), you can download the latest version from `https://cmake.org/download/ -`_. Instructions on how to install it on -various platforms can be found `on this page -`_. +`_. Links to more details on CMake can +be found `on this page `_. diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 39760b043f..c55b82d8ad 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -1752,7 +1752,7 @@ within CMake will download the non-commercial use version. PLUMED package ------------------------------------- -.. _plumedinstall: https://plumed.github.io/doc-master/user-doc/html/_installation.html +.. _plumedinstall: https://www.plumed.org/doc-v2.9/user-doc/html/_installation.html Before building LAMMPS with this package, you must first build PLUMED. PLUMED can be built as part of the LAMMPS build or installed separately @@ -2379,7 +2379,7 @@ SCAFACOS package ----------------------------------------- To build with this package, you must download and build the -`ScaFaCoS Coulomb solver library `_ +`ScaFaCoS Coulomb solver library `_ .. tabs:: diff --git a/doc/src/Build_manual.rst b/doc/src/Build_manual.rst index 25ca91ad7b..fac2c19949 100644 --- a/doc/src/Build_manual.rst +++ b/doc/src/Build_manual.rst @@ -82,6 +82,7 @@ folder. The following ``make`` commands are available: make fasthtml # generate approximate HTML in fasthtml dir using pandoc + make upgrade # upgrade sphinx, extensions, and dependencies to latest supported versions make clean # remove intermediate RST files created by HTML build make clean-all # remove entire build folder and any cached data make upgrade # upgrade the python packages in the virtual environment @@ -89,7 +90,10 @@ folder. The following ``make`` commands are available: make anchor_check # check for duplicate anchor labels make style_check # check for complete and consistent style lists make package_check # check for complete and consistent package lists - make link_check # check for broken or outdated URLs + make char_check # check for non-ASCII characters + make role_check # check for misformatted role keywords + + make link_check # check for broken external URLs make spelling # spell-check the manual ---------- @@ -303,7 +307,7 @@ be multiple tests run automatically: In addition, there is the option to run a spellcheck on the entire manual with ``make spelling``. This requires `a library called enchant -`_. To avoid printing out *false +`_. To avoid printing out *false positives* (e.g. keywords, names, abbreviations) those can be added to the file ``lammps/doc/utils/sphinx-config/false_positives.txt``. diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 5b6b7f3b74..44cb696eaa 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -286,7 +286,7 @@ find a heFFTe installation with the correct back end (e.g., FFTW or MKL), it will attempt to download and build the library automatically. In this case, LAMMPS CMake will also accept all heFFTe specific variables listed in the `heFFTe documentation -`_ +`_ and those variables will be passed into the heFFTe build. ---------- diff --git a/doc/src/Developer_code_design.rst b/doc/src/Developer_code_design.rst index 9213efa18f..083cdea636 100644 --- a/doc/src/Developer_code_design.rst +++ b/doc/src/Developer_code_design.rst @@ -397,8 +397,11 @@ value, for example "{:{}d}" will consume two integer arguments, the first will be the value shown and the second the minimum width. For more details and examples, please consult the `{fmt} syntax -documentation `_ website. - +documentation `_ website. Since we +plan to eventually transition from {fmt} to using ``std::format()`` +of the C++ standard library, it is advisable to avoid using any +extensions beyond what the `C++20 standard offers +`_. Memory management ^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Developer_notes.rst b/doc/src/Developer_notes.rst index 4c789abb3a..2935ddd001 100644 --- a/doc/src/Developer_notes.rst +++ b/doc/src/Developer_notes.rst @@ -292,16 +292,21 @@ processing similar to the "format()" functionality in Python. .. note:: - For commands like :doc:`fix ave/time ` that accept - wildcard arguments, the :cpp:func:`utils::expand_args` function - may be passed as an optional argument where the function will provide - a map to the original arguments from the expanded argument indices. + Commands that accept wildcard arguments, for example + :doc:`fix ave/time `, use + :cpp:func:`utils::expand_args() ` + to convert the wildcards into a list of explicit arguments. + This function accepts a pointer address as an optional argument, + which will be set to a map to the original arguments from the + expanded argument indices. Please see the corresponding source + code for details on how to apply this map in error messages. For complex errors, that can have multiple causes and which cannot be explained in a single line, you can append to the error message, the -string created by :cpp:func:`utils::errorurl`, which then provides a -URL pointing to a paragraph of the :doc:`Errors_details` that -corresponds to the number provided. Example: +string created by :cpp:func:`utils::errorurl() +`, which then provides a URL pointing to a +paragraph of the :doc:`Errors_details` that corresponds to the number +provided. Example: .. code-block:: c++ diff --git a/doc/src/Developer_updating.rst b/doc/src/Developer_updating.rst index 6524347810..8dec2c3155 100644 --- a/doc/src/Developer_updating.rst +++ b/doc/src/Developer_updating.rst @@ -164,7 +164,7 @@ New: .. seealso:: :cpp:func:`utils::count_words() `, - :cpp:func:`utils::trim_comments() ` + :cpp:func:`utils::trim_comment() ` Use utils::numeric() functions instead of force->numeric() @@ -663,7 +663,8 @@ Use utils::logmesg() instead of error->warning() .. versionchanged:: 22Jul2025 The ``Error::message()`` method has been removed since its functionality -has been superseded by the :cpp:func:`utils::logmesg` function. +has been superseded by the :cpp:func:`utils::logmesg() +` function. Old: diff --git a/doc/src/Developer_write_command.rst b/doc/src/Developer_write_command.rst index 16ac2092f6..05d1b2cf96 100644 --- a/doc/src/Developer_write_command.rst +++ b/doc/src/Developer_write_command.rst @@ -38,7 +38,7 @@ Interfacing the *libcurl* library """"""""""""""""""""""""""""""""" Rather than implementing the various protocols for downloading files, we -rely on an external library: `libcurl library `_. +rely on an external library: `libcurl library `_. This requires that the library and its headers are installed. For the traditional GNU make build system, this simply requires edits to the machine makefile to add compilation flags like for other libraries. For the CMake diff --git a/doc/src/Howto_amoeba.rst b/doc/src/Howto_amoeba.rst index c927c28a1f..53254e4b9b 100644 --- a/doc/src/Howto_amoeba.rst +++ b/doc/src/Howto_amoeba.rst @@ -281,7 +281,8 @@ Here is more information about the extended XYZ format defined and used by Tinker, and links to programs that convert standard PDB files to the extended XYZ format: -* `https://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html `_ +* `https://dasher.wustl.edu/tinker/distribution/doc/sphinx/tinker/_build/html/text/file-types.html `_ +* `https://openbabel.org/docs/FileFormats/Tinker_XYZ_format.html `_ * `https://github.com/emleddin/pdbxyz-xyzpdb `_ * `https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f `_ diff --git a/doc/src/Howto_bpm.rst b/doc/src/Howto_bpm.rst index f632ee6172..b99c6c4b1e 100644 --- a/doc/src/Howto_bpm.rst +++ b/doc/src/Howto_bpm.rst @@ -85,26 +85,42 @@ files to render bond data. ---------- -As bonds can be broken between neighbor list builds, the -:doc:`special_bonds ` command works differently for BPM -bond styles. There are two possible settings which determine how pair -interactions work between bonded particles. First, one can overlay -pair forces with bond forces such that all bonded particles also -feel pair interactions. This can be accomplished by setting the *overlay/pair* -keyword present in all bpm bond styles to *yes* and requires using the -following special bond settings +As bonds can potentially be broken between neighbor list builds, BPM bond +styles may place restrictions on the :doc:`special_bonds ` command. There are three possible scenarios which determine how pair +interactions between bonded particles and special bond weights work. + +The first option is the simplest. If bonds cannot break, then one can use any +special bond settings to control pair forces. Namely, this is accomplished by +setting the *break* keyword to *no*. Note that a zero coul weight for 1-2 bonds +can be used to exclude bonded atoms from the neighbor list builds + + .. code-block:: LAMMPS + + special_bonds lj 0 1 1 coul 0 1 1 + +This can be useful for post-processing, or to determine pair interaction +properties between distinct bonded particles. + +If bonds can break, the second scenario is if pair forces are overlaid +on top of bond forces such that atoms can simultaneously exchange both types +of forces. This is accomplished by setting the *overlay/pair* keyword present +in all bpm bond styles to *yes*. This case requires the following special +bond settings .. code-block:: LAMMPS special_bonds lj/coul 1 1 1 -Alternatively, one can turn off all pair interactions between bonded -particles. Unlike :doc:`bond quartic `, this is not done -by subtracting pair forces during the bond computation, but rather by -dynamically updating the special bond list. This is the default behavior -of BPM bond styles and is done by updating the 1-2 special bond list as -bonds break. To do this, LAMMPS requires :doc:`newton ` bond off -such that all processors containing an atom know when a bond breaks. +Note that this scenario does not update special bond lists when bonds break, +hence why fractional weights are not allowed. Whether or not two particles +are bonded has no bearing on pair forces. + +In the third scenario, bonds can break but pair forces are disabled between +bonded particles. This is the default behavior of BPM bond styles. Unlike +:doc:`bond quartic `, pair forces are not removed by subtracting +pair forces during the bond computation, but rather by dynamically updating the +1-2 special bond list. To do this, LAMMPS requires :doc:`newton ` bond +off such that all processors containing an atom know when a bond breaks. Additionally, one must use the following special bond settings .. code-block:: LAMMPS @@ -112,23 +128,13 @@ Additionally, one must use the following special bond settings special_bonds lj 0 1 1 coul 1 1 1 These settings accomplish two goals. First, they turn off 1-3 and 1-4 -special bond lists, which are not currently supported for BPMs. As -BPMs often have dense bond networks, generating 1-3 and 1-4 special -bond lists is expensive. By setting the lj weight for 1-2 bonds to -zero, this turns off pairwise interactions. Even though there are no -charges in BPM models, setting a nonzero coul weight for 1-2 bonds +special bond lists, which are not currently supported for breakable BPMs. +As BPMs often have dense bond networks, generating/updating 1-3 and 1-4 +special bond lists can be expensive. By setting the lj weight for 1-2 +bonds to zero, this turns off pairwise interactions. Even though there +are no charges in BPM models, setting a nonzero coul weight for 1-2 bonds ensures all bonded neighbors are still included in the neighbor list -in case bonds break between neighbor list builds. If bond breakage is -disabled during a simulation run by setting the *break* keyword to *no*, -a zero coul weight for 1-2 bonds can be used to exclude bonded atoms -from the neighbor list builds - - .. code-block:: LAMMPS - - special_bonds lj 0 1 1 coul 0 1 1 - -This can be useful for post-processing, or to determine pair interaction -properties between distinct bonded particles. +in case bonds break between neighbor list builds. To monitor the fracture of bonds in the system, all BPM bond styles have the ability to record instances of bond breakage to output using diff --git a/doc/src/Howto_couple.rst b/doc/src/Howto_couple.rst index 7e91cd59c2..ecde863dd1 100644 --- a/doc/src/Howto_couple.rst +++ b/doc/src/Howto_couple.rst @@ -18,7 +18,7 @@ the context of your application. make library calls to the other code, which has been linked to LAMMPS as a library. This is the way the :ref:`VORONOI ` package, which computes Voronoi tesselations using the `Voro++ - library `_, is interfaced to LAMMPS. See + library `_, is interfaced to LAMMPS. See the :doc:`compute voronoi ` command for more details. Also see the :doc:`Modify ` pages for information on how to add a new fix or compute to LAMMPS. diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 079a48c73f..e555f87902 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -251,7 +251,7 @@ LAMMPS runs in a separate thread, so the GUI stays responsive and is able to interact with the running calculation and access data it produces. It is important to note that running LAMMPS this way is using the contents of the input buffer for the run (via the -:cpp:func:`lammps_commands_string()` function of the LAMMPS C-library +:cpp:func:`lammps_commands_string` function of the LAMMPS C-library interface), and **not** the original file it was read from. Thus, if there are unsaved changes in the buffer, they *will* be used. As an alternative, it is also possible to run LAMMPS by reading the contents @@ -331,7 +331,7 @@ timestep (or iteration for energy minimization) and then complete the processing of the buffer while skipping all run or minimize commands. This is equivalent to the input script command :doc:`timer timeout 0 ` and is implemented by calling the -:cpp:func:`lammps_force_timeout()` function of the LAMMPS C-library +:cpp:func:`lammps_force_timeout` function of the LAMMPS C-library interface. Please see the corresponding documentation pages to understand the implications of this operation. @@ -1168,7 +1168,7 @@ Window), and `Ctrl-Q` (Quit Application) are supported. .. _Gravelle1: -**(Gravelle1)** Gravelle, Gissinger, Kohlmeyer, `arXiv:2503.14020 \[physics.comp-ph\] `_ (2025) +**(Gravelle1)** Gravelle, Alvares, Gissinger, Kohlmeyer, `arXiv:2503.14020 \[physics.comp-ph\] `_ (2025) .. _Gravelle2: diff --git a/doc/src/Howto_viz.rst b/doc/src/Howto_viz.rst index 45b807fc2d..134532b4e8 100644 --- a/doc/src/Howto_viz.rst +++ b/doc/src/Howto_viz.rst @@ -9,7 +9,7 @@ can create files in several formats. The native LAMMPS dump format is a text file (see :lammps:`dump atom` or :lammps:`dump custom`) which can be visualized by `several visualization tools `_ for MD simulation trajectories. `OVITO `_ and `VMD -`_ seem to be the most popular +`_ seem to be the most popular choices among them. The :doc:`dump image ` and :doc:`dump movie ` diff --git a/doc/src/Howto_wsl.rst b/doc/src/Howto_wsl.rst index 30e4835e4c..47ebc552be 100644 --- a/doc/src/Howto_wsl.rst +++ b/doc/src/Howto_wsl.rst @@ -358,4 +358,4 @@ these skills will make you much more productive in this environment. .. seealso:: - * `Windows Subsystem for Linux Documentation `_ + * `Windows Subsystem for Linux Documentation `_ diff --git a/doc/src/Install_linux.rst b/doc/src/Install_linux.rst index 3dd97d8342..db08ec21b6 100644 --- a/doc/src/Install_linux.rst +++ b/doc/src/Install_linux.rst @@ -79,7 +79,7 @@ potentials from `openkim.org `_, you can also install the sudo apt-get install openkim-models -Or use the `KIM-API commands `_ +Or use the `KIM-API commands `_ to download and install individual models. This LAMMPS executable can then be used in the usual way to run input diff --git a/doc/src/Intro_features.rst b/doc/src/Intro_features.rst index 98e9d981ed..a39878a7d0 100644 --- a/doc/src/Intro_features.rst +++ b/doc/src/Intro_features.rst @@ -211,7 +211,7 @@ Pre- and post-processing plotting, and visualization for LAMMPS simulations. Pizza.py is written in `Python `_ and is available for download from `the Pizza.py WWW site `_. -.. _pizza: https://lammps.github.io/pizza +.. _pizza: https://lammps.github.io/pizza/ .. _python: https://www.python.org diff --git a/doc/src/Intro_nonfeatures.rst b/doc/src/Intro_nonfeatures.rst index d1e206fb33..bd2034641f 100644 --- a/doc/src/Intro_nonfeatures.rst +++ b/doc/src/Intro_nonfeatures.rst @@ -105,7 +105,7 @@ Here are suggestions on how to perform these tasks: collected during the simulation and plotted immediately. * **Pizza.py:** Our group has also written a separate toolkit called - `Pizza.py `_ which can do certain kinds of + `Pizza.py `_ which can do certain kinds of setup, analysis, plotting, and visualization (via OpenGL) for LAMMPS simulations. It thus provides some functionality for several of the above bullets. Pizza.py is written in `Python `_ diff --git a/doc/src/Intro_opensource.rst b/doc/src/Intro_opensource.rst index 8de0e412f3..08d29adb4d 100644 --- a/doc/src/Intro_opensource.rst +++ b/doc/src/Intro_opensource.rst @@ -25,7 +25,7 @@ applies to LAMMPS is in the LICENSE file included in the LAMMPS distribution. .. _gnuorg: https://www.gnu.org -.. _opensource: https://www.opensource.org +.. _opensource: https://opensource.org Here is a more specific summary of what the GPL means for LAMMPS users: diff --git a/doc/src/Modify_style.rst b/doc/src/Modify_style.rst index 69b7cc9350..c205be4cd9 100644 --- a/doc/src/Modify_style.rst +++ b/doc/src/Modify_style.rst @@ -153,9 +153,10 @@ Miscellaneous standards (varied) ``&&``, ``||``, and ``!``. The alternative tokens are not available by default on all compilers. -- Output to the screen and the logfile should use the corresponding - FILE pointers and only be done on MPI rank 0. Use the - :cpp:func:`utils::logmesg` convenience function where possible. +- Output to the screen and the logfile should use the corresponding FILE + pointers and only be done on MPI rank 0. Use the + :cpp:func:`utils::logmesg() ` convenience + function where possible. - Usage of C++11 `virtual`, `override`, `final` keywords: Please follow the `C++ Core Guideline C.128 diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 2d56257a0e..83f0263a79 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -782,7 +782,6 @@ algorithm. * :doc:`pair_style tdpd ` * :doc:`fix mvv/dpd ` * ``examples/PACKAGES/mesodpd`` -* https://www.lammps.org/movies.html#mesodpd ---------- @@ -1167,7 +1166,7 @@ H5MD is a format for molecular simulations, built on top of HDF5. This package implements a :doc:`dump h5md ` command to output LAMMPS snapshots in this format. -.. _HDF5: https://www.hdfgroup.org/solutions/hdf5 +.. _HDF5: https://www.hdfgroup.org/solutions/hdf5/ To use this package you must have the HDF5 library available on your system. @@ -1512,7 +1511,6 @@ This package has :ref:`specific installation instructions ` on the :doc * ``src/MACHDYN/README`` * `doc/PDF/MACHDYN_LAMMPS_userguide.pdf `_ * ``examples/PACKAGES/machdyn`` -* https://www.lammps.org/movies.html#smd ---------- @@ -2125,7 +2123,7 @@ support for new file formats can be added to LAMMPS (or VMD or other programs that use them) without having to re-compile the application itself. More information about the VMD molfile plugins can be found at -`https://www.ks.uiuc.edu/Research/vmd/plugins/molfile `_. +`https://www.ks.uiuc.edu/Research/vmd/plugins/molfile `_. **Author:** Axel Kohlmeyer (Temple U). @@ -2316,7 +2314,7 @@ Foster (UTSA). * :doc:`compute damage/atom ` * :doc:`compute plasticity/atom ` * ``examples/peri`` -* https://www.lammps.org/movies.html#peri +* https://www.lammps.org/movies.html#impact ---------- @@ -2757,7 +2755,7 @@ SCAFACOS package **Contents:** -A KSpace style which wraps the `ScaFaCoS Coulomb solver library `_ to compute long-range Coulombic +A KSpace style which wraps the `ScaFaCoS Coulomb solver library `_ to compute long-range Coulombic interactions. To use this package you must have the ScaFaCoS library available on @@ -3027,7 +3025,7 @@ A :doc:`dump vtk ` command which outputs snapshot info in the `VTK format `_, enabling visualization by `Paraview `_ or other visualization packages. -.. _vtk: https://www.vtk.org +.. _vtk: https://vtk.org .. _paraview: https://www.paraview.org @@ -3066,7 +3064,7 @@ which discuss the `QuickFF `_ methodology. .. _vanduyfhuys2015: https://doi.org/10.1002/jcc.23877 .. _vanduyfhuys2018: https://doi.org/10.1002/jcc.25173 -.. _quickff: https://molmod.github.io/QuickFF +.. _quickff: https://molmod.github.io/QuickFF/ .. _yaff: https://github.com/molmod/yaff **Author:** Steven Vandenbrande. diff --git a/doc/src/Python_examples.rst b/doc/src/Python_examples.rst index 14912b9e0e..3bc0e9e53f 100644 --- a/doc/src/Python_examples.rst +++ b/doc/src/Python_examples.rst @@ -35,9 +35,9 @@ visualization package you have installed. Note that for GL, you need to be able to run the Pizza.py GL tool, which is included in the pizza subdirectory. See the Pizza.py doc pages for more info: -* `https://lammps.github.io/pizza `_ +* `https://lammps.github.io/pizza/ `_ -.. _pizza: https://lammps.github.io/pizza +.. _pizza: https://lammps.github.io/pizza/ Note that for AtomEye, you need version 3, and there is a line in the scripts that specifies the path and name of the executable. See the diff --git a/doc/src/Python_jupyter.rst b/doc/src/Python_jupyter.rst index 9e9a1c917e..a0a9534d8f 100644 --- a/doc/src/Python_jupyter.rst +++ b/doc/src/Python_jupyter.rst @@ -1,16 +1,19 @@ Using LAMMPS in IPython notebooks and Jupyter ============================================= -If the LAMMPS Python package is installed for the same Python interpreter as -`IPython `_, you can use LAMMPS directly inside of an IPython notebook inside of -Jupyter. `Jupyter `_ is a powerful integrated development environment (IDE) for -many dynamic languages like Python, Julia and others, which operates inside of -any web browser. Besides auto-completion and syntax highlighting it allows you -to create formatted documents using Markup, mathematical formulas, graphics and -animations intermixed with executable Python code. It is a great format for -tutorials and showcasing your latest research. - -The easiest way to install it is via ``pip``: +If the LAMMPS Python package is installed for the same Python +interpreter as `IPython `_, you can use LAMMPS +directly inside of an IPython notebook inside of Jupyter. `Jupyter +`_ is a powerful integrated development environment +(IDE) for many dynamic languages like `Python `_, +`Julia `_ and others, which operates inside of +any web browser. Besides auto-completion and syntax highlighting it +allows you to create formatted documents using Markup, mathematical +formulas, graphics and animations intermixed with executable Python +code. It is a great format for tutorials and showcasing your latest +research. + +The easiest way to install it is via ``pip`` from ``_: .. code-block:: bash diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index f8379949a4..49b1a36189 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -51,7 +51,7 @@ version 23 November 2023 and Kokkos version 4.2. For example, the GNU compiler uses the ``-std=c++17`` flag. For a list of compilers that have been tested with the Kokkos library, see the `requirements document of the Kokkos Wiki - `_. + `_. .. admonition:: NVIDIA CUDA support :class: note diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index bb59f72fb3..842ce50bd5 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -15,7 +15,7 @@ Sandia which provides tools for doing setup, analysis, plotting, and visualization for LAMMPS simulations. .. _lws: https://www.lammps.org -.. _pizza: https://lammps.github.io/pizza +.. _pizza: https://lammps.github.io/pizza/ .. _python: https://www.python.org Additional tools included in the LAMMPS distribution are described on @@ -482,7 +482,7 @@ a :doc:`molecule command file ` you would then run for example: check-jsonschema --schemafile molecule-schema.json tip3p.json The latest schema files are also maintained and available for download -at https://download.lammps.org/json . This enables validation of JSON +at https://download.lammps.org/json/ . This enables validation of JSON files even if the LAMMPS sources are not locally available. Example: .. code-block:: sh @@ -600,11 +600,13 @@ acceleration is available and enabled by default. Prerequisites and portability ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. versionchanged:: 22July2025 + LAMMPS-GUI is programmed in C++ based on the C++11 standard and using the `Qt GUI framework `_. -Currently, Qt version 5.12 or later is required; Qt 5.15LTS is -recommended; support for Qt version 6.x is available. Building LAMMPS -with CMake is required. +For LAMMPS-GUI version 1.7.0 the use of Qt version 5.12 or later is required; +Qt 5.15LTS is recommended; support for Qt version 6.x is available. +Building LAMMPS with CMake is required. The LAMMPS-GUI has been successfully compiled and tested on: @@ -623,7 +625,7 @@ Pre-compiled executables ^^^^^^^^^^^^^^^^^^^^^^^^ Pre-compiled LAMMPS executable packages that include the GUI are -currently available from https://download.lammps.org/static or +currently available from https://download.lammps.org/static/ or https://github.com/lammps/lammps/releases. For Windows, you need to download and then run the application installer. For macOS you download and mount the disk image and then drag the application bundle to the @@ -701,6 +703,10 @@ LAMMPS-GUI *Preferences* dialog. The command-line flag allows to reset this path to a valid value in case the original setting has become invalid. An empty path ("") as argument restores the default setting. +When loading a LAMMPS library, it must be at least version 22 July +2025 for LAMMPS-GUI version 1.7.0, since it uses features only available +since that LAMMPS version. Older LAMMPS versions will be rejected. + Platform notes ^^^^^^^^^^^^^^ diff --git a/doc/src/balance.rst b/doc/src/balance.rst index 4eaa00ea84..6a6f339708 100644 --- a/doc/src/balance.rst +++ b/doc/src/balance.rst @@ -573,7 +573,7 @@ Related commands :doc:`group `, :doc:`processors `, :doc:`fix balance `, :doc:`comm_style ` -.. _pizza: https://lammps.github.io/pizza +.. _pizza: https://lammps.github.io/pizza/ Default """"""" diff --git a/doc/src/bond_bpm_rotational.rst b/doc/src/bond_bpm_rotational.rst index 3eb5b0c61d..fd825f2ef3 100644 --- a/doc/src/bond_bpm_rotational.rst +++ b/doc/src/bond_bpm_rotational.rst @@ -145,10 +145,10 @@ must be given in force units. By default, pair forces are not calculated between bonded particles. Pair forces can alternatively be overlaid on top of bond forces by setting -the *overlay/pair* keyword to *yes*. These settings require specific -:doc:`special_bonds ` settings described in the -restrictions. Further details can be found in the :doc:`how to ` -page on BPMs. +the *overlay/pair* keyword to *yes*. This keyword is only necessary if +bonds can break and requires specific :doc:`special_bonds ` +settings described in the restrictions. Further details can be found in +the :doc:`how to ` page on BPMs. .. versionadded:: 28Mar2023 @@ -240,19 +240,24 @@ This bond style is part of the BPM package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -By default if pair interactions between bonded atoms are to be disabled, -this bond style requires setting +To handle breaking bonds, BPM bond styles have extra requirements for +special bonds. If bonds cannot break (*break no*), then one can use any +special bond weights. Otherwise, restrictions depend on whether pair +forces are overlaid (*pair/overlay yes*). If so, then all weights must +be one: .. code-block:: LAMMPS - special_bonds lj 0 1 1 coul 1 1 1 + special_bonds lj/coul 1 1 1 -and :doc:`newton ` must be set to bond off. If the *overlay/pair* -keyword is set to *yes*, this bond style alternatively requires setting +If pair forces are disabled (*pair/overlay no*), the default, then the +weights must be .. code-block:: LAMMPS - special_bonds lj/coul 1 1 1 + special_bonds lj 0 1 1 coul 1 1 1 + +and :doc:`newton ` must be set to bond off. The *bpm/rotational* style requires :doc:`atom style bpm/sphere `. diff --git a/doc/src/bond_bpm_spring.rst b/doc/src/bond_bpm_spring.rst index fb40e5164b..f99d2f3777 100644 --- a/doc/src/bond_bpm_spring.rst +++ b/doc/src/bond_bpm_spring.rst @@ -108,10 +108,10 @@ normalized by :math:`r_0` such that :math:`k` must be given in force units. By default, pair forces are not calculated between bonded particles. Pair forces can alternatively be overlaid on top of bond forces by setting -the *overlay/pair* keyword to *yes*. These settings require specific -:doc:`special_bonds ` settings described in the -restrictions. Further details can be found in the :doc:`how to ` -page on BPMs. +the *overlay/pair* keyword to *yes*. This keyword is only necessary if +bonds can break and requires specific :doc:`special_bonds ` +settings described in the restrictions. Further details can be found in +the :doc:`how to ` page on BPMs. .. versionadded:: 28Mar2023 @@ -232,19 +232,24 @@ This bond style is part of the BPM package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -By default if pair interactions between bonded atoms are to be disabled, -this bond style requires setting +To handle breaking bonds, BPM bond styles have extra requirements for +special bonds. If bonds cannot break (*break no*), then one can use any +special bond weights. Otherwise, restrictions depend on whether pair +forces are overlaid (*pair/overlay yes*). If so, then all weights must +be one: .. code-block:: LAMMPS - special_bonds lj 0 1 1 coul 1 1 1 + special_bonds lj/coul 1 1 1 -and :doc:`newton ` must be set to bond off. If the *overlay/pair* -keyword is set to *yes*, this bond style alternatively requires setting +If pair forces are disabled (*pair/overlay no*), the default, then the +weights must be .. code-block:: LAMMPS - special_bonds lj/coul 1 1 1 + special_bonds lj 0 1 1 coul 1 1 1 + +and :doc:`newton ` must be set to bond off. Related commands """""""""""""""" diff --git a/doc/src/bond_bpm_spring_plastic.rst b/doc/src/bond_bpm_spring_plastic.rst index e19e520d0e..7077ef07c4 100644 --- a/doc/src/bond_bpm_spring_plastic.rst +++ b/doc/src/bond_bpm_spring_plastic.rst @@ -152,19 +152,24 @@ This bond style is part of the BPM package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -By default if pair interactions between bonded atoms are to be disabled, -this bond style requires setting +To handle breaking bonds, BPM bond styles have extra requirements for +special bonds. If bonds cannot break (*break no*), then one can use any +special bond weights. Otherwise, restrictions depend on whether pair +forces are overlaid (*pair/overlay yes*). If so, then all weights must +be one: .. code-block:: LAMMPS - special_bonds lj 0 1 1 coul 1 1 1 + special_bonds lj/coul 1 1 1 -and :doc:`newton ` must be set to bond off. If the *overlay/pair* -keyword is set to *yes*, this bond style alternatively requires setting +If pair forces are disabled (*pair/overlay no*), the default, then the +weights must be .. code-block:: LAMMPS - special_bonds lj/coul 1 1 1 + special_bonds lj 0 1 1 coul 1 1 1 + +and :doc:`newton ` must be set to bond off. Related commands """""""""""""""" diff --git a/doc/src/create_atoms.rst b/doc/src/create_atoms.rst index a29d8352a3..07e19a3073 100644 --- a/doc/src/create_atoms.rst +++ b/doc/src/create_atoms.rst @@ -649,4 +649,4 @@ checked, *maxtry* = 10, and *units* = lattice. .. _Roberts2019: -**(Roberts)** R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ +**(Roberts)** R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ diff --git a/doc/src/dump.rst b/doc/src/dump.rst index 62f9909073..2fd673ce48 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -254,7 +254,7 @@ dump file(s) and in what format. Note that *atom*, *custom*, *dcd*, *extxyz*, *xtc*, *xyz*, and *yaml* style dump files can be read directly by `VMD -`_, a popular tool for visualizing +`_, a popular tool for visualizing and analyzing trajectories from atomic and molecular systems. For reading *netcdf* style dump files, the netcdf plugin needs to be recompiled from source using a NetCDF version compatible with the one @@ -284,7 +284,7 @@ when viewing a dump file. Many post-processing tools either included with LAMMPS or third-party tools can read this format, as does the :doc:`rerun ` command. See tools described on the :doc:`Tools ` doc page for examples, including `Pizza.py -`_. +`_. For all these styles, the dimensions of the simulation box are included in each snapshot. The simulation box in LAMMPS can be diff --git a/doc/src/dump_h5md.rst b/doc/src/dump_h5md.rst index 41d6dc7594..f6faa1181f 100644 --- a/doc/src/dump_h5md.rst +++ b/doc/src/dump_h5md.rst @@ -64,7 +64,7 @@ stored within the same file by defining several dumps. A dump that refers (via *file_from*) to an already open dump ID and that concerns another particle group must specify *create_group yes*. -.. _h5md: https://nongnu.org/h5md/ +.. _h5md: https://www.nongnu.org/h5md/ Each data element is written every N\*N_element steps. For *image*, no sub-interval is needed as it must be present at the same interval as diff --git a/doc/src/dump_image.rst b/doc/src/dump_image.rst index 8313d3cccb..3f5b5741bb 100644 --- a/doc/src/dump_image.rst +++ b/doc/src/dump_image.rst @@ -710,7 +710,7 @@ Play the movie: mplayer foo.mpg ffplay bar.avi -* c) Use the `Pizza.py `_ +* c) Use the `Pizza.py `_ `animate tool `_, which works directly on a series of image files. diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index 4786ea3c8f..ca4d08209b 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -947,7 +947,7 @@ default and it can be disabled with the :code:`checksum` keyword. ---------- The :ref:`VTK package ` offers writing dump files in `VTK file -formats `_ that can be read by a variety of +formats `_ that can be read by a variety of visualization tools based on the VTK library. These VTK files follow naming conventions that collide with the LAMMPS convention to append ".bin" to a file name in order to switch to a binary output. Thus for diff --git a/doc/src/dump_molfile.rst b/doc/src/dump_molfile.rst index 2878bc7b73..b422947f85 100644 --- a/doc/src/dump_molfile.rst +++ b/doc/src/dump_molfile.rst @@ -34,7 +34,7 @@ Dump a snapshot of atom coordinates and selected additional quantities to one or more files every N timesteps in one of several formats. Only information for atoms in the specified group is dumped. This specific dump style uses molfile plugins that are bundled with the -`VMD `_ molecular visualization and +`VMD `_ molecular visualization and analysis program. Unless the filename contains a \* character, the output will be written diff --git a/doc/src/dump_netcdf.rst b/doc/src/dump_netcdf.rst index f7495e29a8..89e03b3f16 100644 --- a/doc/src/dump_netcdf.rst +++ b/doc/src/dump_netcdf.rst @@ -58,7 +58,7 @@ by :doc:`thermo_style `. .. _netcdf-home: https://www.unidata.ucar.edu/software/netcdf/ -.. _pnetcdf-home: https://trac.mcs.anl.gov/projects/parallel-netcdf/ +.. _pnetcdf-home: https://parallel-netcdf.github.io/ ---------- diff --git a/doc/src/dump_vtk.rst b/doc/src/dump_vtk.rst index 9486c43a39..a253022e50 100644 --- a/doc/src/dump_vtk.rst +++ b/doc/src/dump_vtk.rst @@ -30,7 +30,7 @@ Description Dump a snapshot of atom quantities to one or more files every :math:`N` timesteps in a format readable by the `VTK visualization toolkit -`_ or other visualization tools that use it, such +`_ or other visualization tools that use it, such as `ParaView `_. The time steps on which dump output is written can also be controlled by a variable; see the :doc:`dump_modify every ` command for details. @@ -40,7 +40,7 @@ the VTK library to write data to VTK simple legacy or XML format, depending on the filename extension specified for the dump file. This can be either *\*.vtk* for the legacy format or *\*.vtp* and *\*.vtu*, respectively, for XML format; see the `VTK homepage -`_ for a detailed +`_ for a detailed description of these formats. Since this naming convention conflicts with the way binary output is usually specified (see below), the :doc:`dump_modify binary ` command allows setting of a diff --git a/doc/src/fix_balance.rst b/doc/src/fix_balance.rst index ff68cca5f8..a31bd92baf 100644 --- a/doc/src/fix_balance.rst +++ b/doc/src/fix_balance.rst @@ -427,7 +427,7 @@ Related commands :doc:`group `, :doc:`processors `, :doc:`balance `, :doc:`comm_style ` -.. _pizza: https://lammps.github.io/pizza +.. _pizza: https://lammps.github.io/pizza/ Default """"""" diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index 542407d7ff..52ecbb7aa0 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -289,16 +289,15 @@ currently connected to the rest of a long polymer chain. These are referred to as edge atoms, and are also specified in the map file. All pre-reaction template atoms should be linked to an initiator atom, via at least one path that does not involve edge atoms. When the -pre-reaction template contains edge atoms, not all atoms, bonds, -charges, etc. specified in the reaction templates will be updated. -Specifically, topology that involves only atoms that are "too near" to -template edges will not be updated. The definition of "too near the -edge" depends on which interactions are defined in the simulation. If -the simulation has defined dihedrals, atoms within two bonds of edge -atoms are considered "too near the edge." If the simulation defines -angles, but not dihedrals, atoms within one bond of edge atoms are -considered "too near the edge." If just bonds are defined, only edge -atoms are considered "too near the edge." +pre-reaction template contains edge atoms, not all atoms, bonds, etc. +specified in the reaction templates will be updated. Specifically, topology +that involves only atoms that are "too near" to template edges will not be +updated. The definition of "too near the edge" depends on which +interactions are defined in the simulation. If the simulation has defined +dihedrals, atoms within two bonds of edge atoms are considered "too near +the edge." If the simulation defines angles, but not dihedrals, atoms +within one bond of edge atoms are considered "too near the edge." If just +bonds are defined, only edge atoms are considered "too near the edge." .. note:: @@ -578,16 +577,17 @@ only one value, e.g. bond force. This value is returned by the fragment in the pre-reaction template. The fragment must contain exactly two atoms, corresponding to the atoms involved in the bond whose value should be calculated. An example of a constraint that uses -the force experienced by a bond is provided below. The 'rxnsum' and -'rxnave' functions operate over the atoms in a given reaction site, -and have one mandatory argument and one optional argument. The -mandatory argument is the identifier for an atom-style variable. The -second, optional argument is the name of a molecule fragment in the -pre-reaction template, and can be used to operate over a subset of -atoms in the reaction site. The 'rxnsum' function sums the atom-style -variable over the reaction site, while the 'rxnave' returns the -average value. For example, a constraint on the total potential energy -of atoms involved in the reaction can be imposed as follows: +the force experienced by a bond is provided below. When using 'rxnbond', +at least one atom in the fragment must be an initiator atom. The +'rxnsum' and 'rxnave' functions operate over the atoms in a given +reaction site, and have one mandatory argument and one optional +argument. The mandatory argument is the identifier for an atom-style +variable. The second, optional argument is the name of a molecule +fragment in the pre-reaction template, and can be used to operate over a +subset of atoms in the reaction site. The 'rxnsum' function sums the +atom-style variable over the reaction site, while the 'rxnave' returns +the average value. For example, a constraint on the total potential +energy of atoms involved in the reaction can be imposed as follows: .. code-block:: LAMMPS @@ -620,7 +620,7 @@ Arrhenius constraint that depends on the bond force of a specific bond: # in Constraints section of map file - custom "exp(-(v_E_a-rxnbond(c_bondforce,bond1frag)*v_l0)/(2/3*rxnave(v_ke))) < random(0,1,12345)" + custom "exp(-(v_E_a-rxnbond(c_bondforce,bond1frag)*v_l0)/(2/3*rxnave(v_ke))) > random(0,1,12345)" By using an inequality and the 'random(x,y,z)' function, the left-hand side can be interpreted as the probability of the reaction occurring, diff --git a/doc/src/fix_electron_stopping.rst b/doc/src/fix_electron_stopping.rst index 81a04d7ccf..1604c99942 100644 --- a/doc/src/fix_electron_stopping.rst +++ b/doc/src/fix_electron_stopping.rst @@ -140,12 +140,11 @@ kinetic energy higher than the largest energy given in *file*, LAMMPS will exit with an error message. The stopping power depends on the energy of the ion and the target -material. The electronic stopping table can be obtained from -scientific publications, experimental databases or by using -:ref:`SRIM ` software. Other programs such as :ref:`CasP ` or -:ref:`PASS ` can calculate the energy deposited as a function -of the impact parameter of the ion; these results can be used -to derive the stopping power. +material. The electronic stopping table can be obtained from scientific +publications, experimental databases or by using :ref:`SRIM ` +software. Other programs such as :ref:`CasP ` can calculate the +energy deposited as a function of the impact parameter of the ion; these +results can be used to derive the stopping power. ---------- @@ -221,10 +220,6 @@ The default is no limitation by region, and minneigh = 1. **(CasP)** CasP webpage: http://www.casp-program.org/ -.. _PASS: - -**(PASS)** PASS webpage: https://www.sdu.dk/en/DPASS - .. _Stewart2018: **(Stewart2018)** J.A. Stewart, et al. (2018) Journal of Applied Physics, 123(16), 165902. diff --git a/doc/src/fix_external.rst b/doc/src/fix_external.rst index fa10248a42..6f6afc5127 100644 --- a/doc/src/fix_external.rst +++ b/doc/src/fix_external.rst @@ -78,7 +78,7 @@ example of how this is done. This sample application performs classical MD using quantum forces computed by a density functional code `Quest `_. -.. _quest: https://dft.sandia.gov/Quest +.. _quest: https://www.sandia.gov/quest/ ---------- diff --git a/doc/src/fix_imd.rst b/doc/src/fix_imd.rst index d85ebc8d34..5bf5a62d6c 100644 --- a/doc/src/fix_imd.rst +++ b/doc/src/fix_imd.rst @@ -160,7 +160,7 @@ If IMD control messages are received, a line of text describing the message and its effect will be printed to the LAMMPS output screen, if screen output is active. -.. _VMD: https://www.ks.uiuc.edu/Research/vmd +.. _VMD: https://www.ks.uiuc.edu/Research/vmd/ .. _imdvmd: https://www.ks.uiuc.edu/Research/vmd/imd/ diff --git a/doc/src/fix_langevin.rst b/doc/src/fix_langevin.rst index b8be16e16d..6191877db1 100644 --- a/doc/src/fix_langevin.rst +++ b/doc/src/fix_langevin.rst @@ -241,7 +241,7 @@ to zero by subtracting off an equal part of it from each atom in the group. As a result, the center-of-mass of a system with zero initial momentum will not drift over time. -.. deprecated:: TDB +.. deprecated:: 12Jun2025 The *gjf* keyword in fix langevin is deprecated and will be removed soon. The GJF functionality has been moved to its own fix style diff --git a/doc/src/fix_shake.rst b/doc/src/fix_shake.rst index 434415eecf..6ad8c5851d 100644 --- a/doc/src/fix_shake.rst +++ b/doc/src/fix_shake.rst @@ -196,7 +196,7 @@ preserve the bond lengths and angles as closely as the constraints during the MD, they are generally close enough so that the constraints will be fulfilled to the desired accuracy within a few MD steps following the minimization. The default value for *kbond* depends on the -:doc:`units ` setting and is 1.0e6*k_B. +:doc:`units ` setting and is 1.0e9*k_B. ---------- @@ -272,10 +272,10 @@ which can lead to poor energy conservation. You can test for this in your system by running a constant NVE simulation with a particular set of SHAKE parameters and monitoring the energy versus time. -SHAKE or RATTLE should not be used to constrain an angle at 180 degrees +SHAKE or RATTLE *cannot* not be used to constrain an angle at 180 degrees (e.g. a linear CO2 molecule). This causes a divergence when solving the constraint equations numerically. You can use :doc:`fix rigid or fix -rigid/small ` instead to make a linear molecule rigid. +rigid/small ` instead to simulate rigid linear molecules. When used during minimization choosing a too large value of the *kbond* can make minimization very inefficient and also cause stability problems diff --git a/doc/src/geturl.rst b/doc/src/geturl.rst index fd5d23262d..b075b02672 100644 --- a/doc/src/geturl.rst +++ b/doc/src/geturl.rst @@ -36,7 +36,7 @@ Description .. versionadded:: 29Aug2024 Download a file from an URL to the local disk. This is implemented with -the `libcurl library `_ which supports a +the `libcurl library `_ which supports a large variety of protocols including "http", "https", "ftp", "scp", "sftp", "file". The transfer will only be performed on MPI rank 0. @@ -69,7 +69,7 @@ failure. .. admonition:: Using *geturl* with proxies for http or https :class: note - The `libcurl library `_ supports `routing + The `libcurl library `_ supports `routing traffic through proxies `_ by setting suitable environment variables (e.g. ``http_proxy`` or diff --git a/doc/src/kim_commands.rst b/doc/src/kim_commands.rst index 20728dee06..edc4f3548e 100644 --- a/doc/src/kim_commands.rst +++ b/doc/src/kim_commands.rst @@ -87,7 +87,7 @@ The URL for the Model Page is constructed from the .. parsed-literal:: - https://openkim.org/id/extended_KIM_ID + ``_ For example, for the Stillinger-Weber potential listed above the Model Page is located at: @@ -481,7 +481,7 @@ the format *keyword=value*, where *value* is always an array of one or more comma-separated items in brackets. The list of supported keywords and the type and format of their values depend on the query function used. The current list of query functions is available on the OpenKIM webpage at -`https://openkim.org/doc/usage/kim-query `_. +`https://openkim.org/doc/usage/kim-query `_. .. note:: @@ -949,13 +949,13 @@ Syntax * instance_id = a positive integer identifying the KIM property instance; (note that the results file can contain multiple property instances) * property_id = identifier of a - `KIM Property Definition `_, which can be (1) + `KIM Property Definition `_, which can be (1) a property short name, (2) the full unique ID of the property (including the contributor and date), (3) a file name corresponding to a local property definition file * key_name = one of the keys belonging to the specified KIM property definition * key_name_key = a key belonging to a key-value pair (standardized in the - `KIM Properties Framework `__) + `KIM Properties Framework `__) * key_name_value = value to be associated with a key_name_key in a key-value pair * file = name of a file to write the currently defined set of KIM property @@ -989,7 +989,7 @@ the *key_name* argument, that are defined as part of the relevant KIM Property Definition and include only lowercase alphanumeric characters and dashes. The value paired with each property key is itself a map whose possible keys are defined as part of the `KIM Properties Framework -`__; these keys are +`__; these keys are referred to by the *key_name_key* argument and their associated values by the *key_name_value* argument. These values may either be scalars or arrays, as stipulated in the property definition. @@ -1379,5 +1379,5 @@ doi: `https://doi.org/10.1007/s11837-011-0102-6 `_ (2011) +**(Elliott)** Elliott, Tadmor and Bernstein, `https://openkim.org/kim-api/ `_ (2011) doi: `https://doi.org/10.25950/FF8F563A `_ diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index 3f9bdbb747..2ff1f9ed56 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -318,7 +318,7 @@ pressure simulation with MSM will cause the code to run slower. ---------- The *scafacos* style is a wrapper on the `ScaFaCoS Coulomb solver -library `_ which provides a variety of solver +library `_ which provides a variety of solver methods which can be used with LAMMPS. The paper by :ref:`(Sutman) ` gives an overview of ScaFaCoS. @@ -328,9 +328,9 @@ in 2009-2012. Participants of the consortium were the Universities of Bonn, Chemnitz, Stuttgart, and Wuppertal as well as the Forschungszentrum Juelich. -The library is available for download at "http://scafacos.de" or can +The library is available for download at "http://www.scafacos.de/" or can be cloned from the git-repository -"https://github.com/scafacos/scafacos.git". +"https://github.com/scafacos/scafacos". In order to use this KSpace style, you must download and build the ScaFaCoS library, then build LAMMPS with the SCAFACOS package diff --git a/doc/src/pair_adp.rst b/doc/src/pair_adp.rst index 9a3ce240cd..c44db7cdc9 100644 --- a/doc/src/pair_adp.rst +++ b/doc/src/pair_adp.rst @@ -54,7 +54,7 @@ command to specify them. **ADP potentials are available from:** -* The NIST WWW site at https://www.ctcms.nist.gov/potentials. +* The NIST WWW site at https://www.ctcms.nist.gov/potentials/. Note that ADP potentials obtained from NIST must be converted into the extended DYNAMO *setfl* format discussed below. * The OpenKIM Project at diff --git a/doc/src/pair_eam.rst b/doc/src/pair_eam.rst index cdb6487981..c4d49cc7bf 100644 --- a/doc/src/pair_eam.rst +++ b/doc/src/pair_eam.rst @@ -126,8 +126,8 @@ are parameterized in terms of LAMMPS :doc:`metal units `. There are web sites that distribute and document EAM potentials stored in DYNAMO or other formats: -* https://www.ctcms.nist.gov/potentials -* https://openkim.org +* https://www.ctcms.nist.gov/potentials/ +* https://openkim.org/ These potentials should be usable with LAMMPS, though the alternate formats would need to be converted to the DYNAMO format used by LAMMPS diff --git a/doc/src/pair_granular.rst b/doc/src/pair_granular.rst index 4d8753a7a1..599f23844e 100644 --- a/doc/src/pair_granular.rst +++ b/doc/src/pair_granular.rst @@ -171,6 +171,18 @@ initially will not experience force until they come into contact experience a tensile force up to :math:`3\pi\gamma R`, at which point they lose contact. +.. note:: + + Typically, neighbor lists are constructed for pair granular by testing + whether finite sized particles overlap (using their radii). However, + this is not the case for normal normals which can interact beyond + contact, e.g. *jkr*. Instead, the maximum radius for each particle + type is first calculated then used to calculate a maximum per-type + cutoff distance. For polydisperse systems, this affects the performance + of the :doc:`multi neighbor ` option where one should + assign atoms of similar radii the same type. See the + :doc:`pair lj/cut/sphere ` page for a related discussion. + The *mdr* model is a mechanically-derived contact model designed to capture the contact response between adhesive elastic-plastic particles into large deformation. The theoretical foundations of the *mdr* model are detailed in the diff --git a/doc/src/pair_mliap.rst b/doc/src/pair_mliap.rst index 7f8b36bb83..39bdbb5fde 100644 --- a/doc/src/pair_mliap.rst +++ b/doc/src/pair_mliap.rst @@ -199,7 +199,7 @@ the elements are listed must be consistent for all three keywords. The SO3 descriptor file is similar to the SNAP descriptor except that it contains a few more arguments (e.g., *nmax* and *alpha*). The preparation of SO3 descriptor and model files can be done with the -`Pyxtal_FF `_ package. +`PyXtal_FF `_ package. The ACE descriptor file differs from the SNAP and SO3 files. It more closely resembles the potential file format for linear or square-root diff --git a/doc/src/read_dump.rst b/doc/src/read_dump.rst index b2963a19b9..90b546db6e 100644 --- a/doc/src/read_dump.rst +++ b/doc/src/read_dump.rst @@ -417,4 +417,4 @@ Default The option defaults are box = yes, timestep = yes, replace = yes, purge = no, trim = no, add = no, scaled = no, wrapped = yes, and format = native. -.. _vmd: https://www.ks.uiuc.edu/Research/vmd +.. _vmd: https://www.ks.uiuc.edu/Research/vmd/ diff --git a/doc/src/region2vmd.rst b/doc/src/region2vmd.rst index 792155d9eb..f403c9c6ba 100644 --- a/doc/src/region2vmd.rst +++ b/doc/src/region2vmd.rst @@ -35,7 +35,7 @@ Description .. versionadded:: 2Apr2025 -Write a `VMD `_ Tcl script file with +Write a `VMD `_ Tcl script file with commands that aim to create a visualization of :doc:`regions `. There may be multiple region visualizations stored in a single file. diff --git a/doc/utils/pandoc.html b/doc/utils/pandoc.html index 26740d1b0e..87aa5c8bf1 100644 --- a/doc/utils/pandoc.html +++ b/doc/utils/pandoc.html @@ -1,5 +1,5 @@ - + diff --git a/doc/utils/requirements.txt b/doc/utils/requirements.txt index 7bbf8c54ce..cf586a0f55 100644 --- a/doc/utils/requirements.txt +++ b/doc/utils/requirements.txt @@ -1,4 +1,4 @@ -Sphinx >= 5.3.0, <8.3.0 +Sphinx >= 6, <8.3.0 sphinxcontrib-spelling sphinxcontrib-jquery sphinx-design @@ -13,3 +13,4 @@ pyyaml linkchecker ipython numpy +docutils > 0.18, <0.22 diff --git a/doc/utils/sphinx-config/LAMMPSLexer.py b/doc/utils/sphinx-config/LAMMPSLexer.py index c72e180d83..b28a04be39 100644 --- a/doc/utils/sphinx-config/LAMMPSLexer.py +++ b/doc/utils/sphinx-config/LAMMPSLexer.py @@ -1,34 +1,26 @@ from pygments.lexer import RegexLexer, words, include, default from pygments.token import * -LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", - "atom_style", "angle_write", "balance", "bond_coeff", - "bond_style", "bond_write", "boundary", "clear", - "comm_modify", "comm_style", "compute_modify", - "create_atoms", "create_bonds", "create_box", - "delete_atoms", "delete_bonds", "dielectric", - "dihedral_coeff", "dihedral_style", "dihedral_write", - "dimension", "displace_atoms", "dump_modify", - "dynamical_matrix", "echo", "geturl", "fitpod", - "fix_modify", "group2ndx", "hyper", - "improper_coeff", "improper_style", "include", - "info", "jump", "kim", "kspace_modify", - "kspace_style", "label", "labelmap", "lattice", - "log", "mass", "mdi", "message", "minimize", - "min_modify", "min_style", "molecule", "ndx2group", - "neb", "neb/spin", "neighbor", "neigh_modify", - "newton", "next", "package", "pair_coeff", - "pair_modify", "pair_style", "pair_write", - "partition", "plugin", "prd", "print", "processors", - "python", "quit", "read_data", "read_dump", - "read_restart", "replicate", "rerun", "reset_atoms", - "reset_timestep", "restart", "run", "run_style", - "server", "set", "shell", "special_bonds", "suffix", - "tad", "temper", "temper/grem", "temper/npt", - "thermo", "thermo_modify", "thermo_style", - "third_order", "timer", "timestep", "units", - "velocity", "write_coeff", "write_data", - "write_restart") +LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "angle_write", "atom_modify", + "atom_style", "balance", "bond_coeff", "bond_style", "bond_write", + "boundary", "change_box", "clear", "comm_modify", "comm_style", + "compute_modify", "create_atoms", "create_bonds", "create_box", + "delete_atoms", "delete_bonds", "dielectric", "dihedral_coeff", + "dihedral_style", "dihedral_write", "dimension", "displace_atoms", + "dump_modify", "dynamical_matrix", "echo", "fitpod","fix_modify", + "geturl", "group2ndx", "hyper", "improper_coeff", "improper_style", + "include", "info", "jump", "kim", "kspace_modify", "kspace_style", + "label", "labelmap", "lattice", "log", "mass", "mdi", "message", + "minimize", "min_modify", "min_style", "molecule", "ndx2group", + "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next", + "package", "pair_coeff", "pair_modify", "pair_style", "pair_write", + "partition", "plugin", "prd", "print", "processors", "python", + "quit", "read_data", "read_dump", "read_restart", "region2vmd", + "replicate", "rerun", "reset_atoms", "reset_timestep", "restart", + "run", "run_style", "server", "set", "shell", "special_bonds", + "suffix", "tad", "temper", "temper/grem", "temper/npt", "thermo", + "thermo_modify", "thermo_style", "third_order", "timer", "timestep", + "units", "velocity", "write_coeff", "write_data", "write_restart") #fix ID group-ID style args #compute ID group-ID style args diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/.gitignore b/doc/utils/sphinx-config/_themes/lammps_theme/.gitignore index 7e0caf8f59..181bc64338 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/.gitignore +++ b/doc/utils/sphinx-config/_themes/lammps_theme/.gitignore @@ -1 +1,2 @@ !*.html +/search.html diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html index 869ce2c6ca..9377c196b5 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html +++ b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html @@ -187,7 +187,7 @@
{%- endif %} {% include "breadcrumbs.html" %} -
+
{%- block document %}
{% block body %}{% endblock %} diff --git a/doc/utils/sphinx-config/conf.py.in b/doc/utils/sphinx-config/conf.py.in index 3ae92d7f4b..98bdfc64bd 100644 --- a/doc/utils/sphinx-config/conf.py.in +++ b/doc/utils/sphinx-config/conf.py.in @@ -173,6 +173,20 @@ pygments_style = 'default' # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False +# warn about all missing references (default False) +nitpicky = False + +# ignore known missing references +nitpicky_ignore = { + ('cpp:identifier', 'Error'), + ('cpp:identifier', 'FILE'), + ('cpp:identifier', 'LAMMPS_NS'), + ('cpp:identifier', 'LAMMPS_NS::utils'), + ('cpp:identifier', 'MPI_Comm'), + ('cpp:identifier', 'size_t'), + ('envvar', 'DUMMY'), +} + # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 8bea058f07..4f673f680d 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -691,6 +691,7 @@ cuthi cutinner cutlo cutmax +cutmin cutoffA cutoffC cutsq diff --git a/examples/PACKAGES/neighbor-swap/in.KMC_pulse_center b/examples/PACKAGES/neighbor-swap/in.KMC_pulse_center index 29993fab29..2c6dbb86c8 100644 --- a/examples/PACKAGES/neighbor-swap/in.KMC_pulse_center +++ b/examples/PACKAGES/neighbor-swap/in.KMC_pulse_center @@ -37,7 +37,7 @@ thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe velocity all create 2400 908124 loop geom fix temp all npt temp 1000 1000 1000 aniso 0 0 1 -fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2 +fix mc all neighbor/swap 50 12 1340723 1000 3.0 voroN diff 2 thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*] #dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym diff --git a/examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge b/examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge index 5bf51d2ed1..72b585dff1 100644 --- a/examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge +++ b/examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge @@ -38,7 +38,7 @@ thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe velocity all create 2400 908124 loop geom fix temp all npt temp 1000 1000 1000 aniso 0 0 1 -fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2 +fix mc all neighbor/swap 50 12 1340723 1000 3.0 voroN diff 2 thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*] #dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym diff --git a/examples/bpm/pour/log.22Jul2025.bpm.pour.g++.4 b/examples/bpm/pour/log.22Jul2025.bpm.pour.g++.4 new file mode 100644 index 0000000000..6a9d7e3883 --- /dev/null +++ b/examples/bpm/pour/log.22Jul2025.bpm.pour.g++.4 @@ -0,0 +1,1118 @@ +LAMMPS (22 Jul 2025 - Development - patch_2Apr2025-1550-g1d846f7d16-modified) +units lj +dimension 3 +boundary m m m +atom_style bpm/sphere +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 +newton on off +comm_modify vel yes cutoff 3.3 +region box block -15 15 -15 15 0 60.0 +create_box 1 box bond/types 1 extra/bond/per/atom 15 extra/special/per/atom 50 +Created orthogonal box = (-15 -15 0) to (15 15 60) + 1 by 1 by 4 MPI processor grid + +molecule my_mol "rect.mol" +Read molecule template my_mol: +#Made with create_mol.py + 1 molecules + 0 fragments + 0 bodies + 63 atoms with max type 1 + 297 bonds with max type 1 + 0 angles with max type 0 + 0 dihedrals with max type 0 + 0 impropers with max type 0 +region wall_cyl cylinder z 0.0 0.0 10.0 EDGE EDGE side in +region dropzone cylinder z 0.0 0.0 10.0 40.0 50.0 side in + +pair_style gran/hertz/history 1.0 NULL 0.5 NULL 0.1 1 +bond_style bpm/rotational break no smooth no +pair_coeff 1 1 +bond_coeff 1 1.0 0.2 0.01 0.01 0.0 0.0 0.0 0.0 0.2 0.04 0.002 0.002 + +compute nbond all nbond/atom +compute tbond all reduce sum c_nbond +compute bond_ids all property/local batom1 batom2 +compute bond_properties all bond/local dist b1 + +compute_modify thermo_temp dynamic/dof yes + +fix 1 all wall/gran hertz/history 1.0 NULL 0.5 NULL 0.1 1 zplane 0.0 NULL +fix 2 all wall/gran/region hertz/history 1.0 NULL 0.5 NULL 0.1 1 region wall_cyl +fix 3 all gravity 1e-4 vector 0 0 -1 +fix 4 all deposit 40 0 1500 712511343 mol my_mol region dropzone near 2.0 vz -0.05 -0.05 +fix 5 all nve/bpm/sphere + +timestep 0.05 +thermo_style custom step ke pe pxx pyy pzz c_tbond +thermo 100 +#dump 1 all custom 500 atomDump id radius x y z c_nbond mol +#dump 2 all local 500 bondDump c_bond_ids[*] c_bond_properties[*] +#dump_modify 2 colname 1 "id1" colname 2 "id2" colname 3 "r" colname 4 "r0" + +run 100000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- BPM bond style: doi:10.1039/D3SM01373A + +@Article{Clemmer2024, + author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, + title = {A soft departure from jamming: the compaction of deformable + granular matter under high pressures}, + journal = {Soft Matter}, + year = 2024, + volume = 20, + number = 8, + pages = {1702--1718} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 3.3 + binsize = 0.65, bins = 47 47 93 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair gran/hertz/history, perpetual + attributes: half, newton on, size, history + pair build: half/size/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.515 | 6.515 | 6.515 Mbytes + Step KinEng PotEng Pxx Pyy Pzz c_tbond + 0 -0 0 0 0 0 0 + 100 0.0018406759 0 1.2842737e-05 1.3192741e-05 6.1270888e-06 9.4285714 + 200 0.0026054014 0 -9.5238084e-07 4.4390002e-07 2.276027e-06 9.4285714 + 300 0.0036876407 0 -5.2887136e-06 9.5842023e-06 8.3748246e-07 9.4285714 + 400 0.0060252036 0 2.3582937e-05 1.8361861e-05 1.2642656e-05 9.4285714 + 500 0.0074741299 0 -1.789193e-05 3.8580093e-06 -5.0297601e-06 9.4285714 + 600 0.0078175447 0 3.7847082e-06 1.354617e-05 4.1601827e-06 9.4285714 + 700 0.0075880478 0 3.1036029e-06 1.2109603e-05 4.9483946e-06 9.4285714 + 800 0.0074266449 0 -1.4461829e-05 1.231522e-05 -6.7784934e-06 9.4285714 + 900 0.0075837676 0 1.0006431e-05 1.2964224e-05 8.8504998e-06 9.4285714 + 1000 0.0076126304 0 -6.1355256e-06 1.265311e-05 -2.0447119e-06 9.4285714 + 1100 0.0075597634 0 -5.5773504e-06 1.0844777e-05 -3.296087e-06 9.4285714 + 1200 0.0075328709 0 7.0782206e-06 1.4050653e-05 8.5204975e-06 9.4285714 + 1300 0.0075974351 0 -4.7397195e-06 8.655509e-06 -3.6821711e-06 9.4285714 + 1400 0.0076539613 0 1.0961299e-06 7.9537258e-06 1.2313306e-06 9.4285714 + 1500 0.0076352731 0 3.6111676e-06 1.3125368e-05 5.3101288e-06 9.4285714 + 1600 0.006006423 0 4.7160229e-06 1.5369588e-05 5.0636281e-06 9.4285714 + 1700 0.0080558565 0 7.8138607e-06 2.5257606e-05 1.2709614e-05 9.4285714 + 1800 0.0087849017 0 4.7097929e-06 1.966114e-05 5.0951652e-07 9.4285714 + 1900 0.0087235023 0 4.7873946e-06 1.8019354e-05 2.2496878e-06 9.4285714 + 2000 0.0087131313 0 6.1634351e-06 2.642983e-05 9.0915635e-06 9.4285714 + 2100 0.008427469 0 5.3623387e-06 2.1009078e-05 5.0556283e-06 9.4285714 + 2200 0.0083345607 0 9.7696141e-06 1.8720631e-05 1.0714556e-05 9.4285714 + 2300 0.0083235047 0 6.1986454e-06 1.9747014e-05 3.9220739e-06 9.4285714 + 2400 0.0082916184 0 5.3395802e-06 1.2889835e-05 6.1613557e-06 9.4285714 + 2500 0.0083652166 0 7.0237704e-06 1.8243183e-05 9.9892969e-06 9.4285714 + 2600 0.0083853283 0 4.1611558e-06 1.8566616e-05 5.5120232e-06 9.4285714 + 2700 0.0083229797 0 4.0701286e-06 1.7705798e-05 8.0682541e-06 9.4285714 + 2800 0.0074176723 0 1.1231842e-05 1.4199577e-05 1.0018115e-05 9.4285714 + 2900 0.0073053678 0 7.9279614e-06 1.2570524e-05 9.674908e-06 9.4285714 + 3000 0.0072005684 0 1.2447603e-05 1.7406357e-05 1.0520344e-05 9.4285714 + 3100 0.0048043541 0 2.8905501e-05 2.6265306e-05 1.5509895e-05 9.4285714 + 3200 0.0045874892 0 2.4366752e-05 2.0971745e-05 1.7512312e-05 9.4285714 + 3300 0.00479499 0 6.0213482e-06 1.2638208e-05 1.4128912e-05 9.4285714 + 3400 0.0048641255 0 2.1441835e-06 9.1775799e-06 1.2309026e-05 9.4285714 + 3500 0.0048481043 0 3.3249507e-06 1.0477522e-05 1.174191e-05 9.4285714 + 3600 0.0048035761 0 3.8169025e-06 1.4538411e-05 1.2859131e-05 9.4285714 + 3700 0.0046219191 0 4.4420389e-06 1.0004242e-05 1.4136739e-05 9.4285714 + 3800 0.0046060044 0 7.9607264e-06 9.9082273e-06 1.5708136e-05 9.4285714 + 3900 0.0047638587 0 4.9188998e-06 1.3013033e-05 1.2345204e-05 9.4285714 + 4000 0.0049124607 0 5.6510434e-06 1.0154486e-05 1.8085305e-05 9.4285714 + 4100 0.0047106573 0 8.7061818e-06 1.0447188e-05 1.5757898e-05 9.4285714 + 4200 0.003655308 0 3.3017508e-05 3.8729974e-05 1.4755823e-05 9.4285714 + 4300 0.0032761502 0 2.6270899e-05 2.6447932e-05 2.6415843e-05 9.4285714 + 4400 0.0033725658 0 -4.4338353e-06 -1.8747385e-06 1.268695e-05 9.4285714 + 4500 0.0034856288 0 4.2831181e-06 3.3568463e-06 1.6551102e-05 9.4285714 + 4600 0.0030478282 0 4.6046246e-06 5.3455536e-06 2.3135532e-05 9.4285714 + 4700 0.0031168245 0 -2.3364453e-06 1.7443067e-06 6.0457431e-06 9.4285714 + 4800 0.0031397141 0 3.3093286e-06 3.9055707e-06 1.3666494e-05 9.4285714 + 4900 0.0030578915 0 6.0355903e-06 8.7494437e-06 1.7257174e-05 9.4285714 + 5000 0.0030452045 0 5.7724452e-06 1.607533e-05 7.5387141e-06 9.4285714 + 5100 0.0030773764 0 7.3897288e-06 2.1460968e-05 1.0105443e-05 9.4285714 + 5200 0.0030534891 0 7.3340945e-06 2.0052503e-05 8.0875472e-06 9.4285714 + 5300 0.0030589672 0 6.9554983e-06 1.1388616e-05 1.4195538e-05 9.4285714 + 5400 0.0032172786 0 7.0973327e-06 8.4663927e-06 1.0162239e-05 9.4285714 + 5500 0.0032559194 0 5.3565829e-06 5.1852679e-06 3.4336808e-06 9.4285714 + 5600 0.0031908895 0 4.6499293e-06 2.8091094e-06 1.8285395e-05 9.4285714 + 5700 0.0032642757 0 5.709389e-06 4.8224286e-06 1.6427642e-05 9.4285714 + 5800 0.0030990615 0 8.253728e-06 1.0455637e-06 1.659029e-05 9.4285714 + 5900 0.0026341939 0 8.4035315e-06 2.0755727e-06 4.1054501e-05 9.4285714 + 6000 0.0027655242 0 4.2483627e-06 5.4168008e-06 1.9470693e-05 9.4285714 + 6100 0.0026042044 0 3.6709033e-06 3.4725773e-06 2.1091793e-05 9.4285714 + 6200 0.0028149804 0 4.7213595e-06 -7.2919291e-07 2.3223456e-05 9.4285714 + 6300 0.0027103158 0 -6.2559439e-06 1.1706149e-06 1.7446499e-05 9.4285714 + 6400 0.0034563482 0 1.3811125e-05 3.3362682e-05 3.6303419e-05 9.4285714 + 6500 0.0039685735 0 3.9092294e-06 1.7179813e-05 2.1443394e-05 9.4285714 + 6600 0.0040730075 0 -1.730953e-05 1.0027223e-05 1.9674811e-05 9.4285714 + 6700 0.0040325237 0 1.6130719e-05 2.6480155e-05 3.2469986e-05 9.4285714 + 6800 0.0038015372 0 -9.5613177e-06 7.8642293e-06 1.7383877e-05 9.4285714 + 6900 0.0036803202 0 3.3124034e-06 2.8618724e-05 2.7477522e-05 9.4285714 + 7000 0.0033569979 0 1.6030635e-05 5.6277841e-05 4.9488628e-05 9.4285714 + 7100 0.0032876107 0 -9.0485051e-06 3.6383737e-05 2.8925748e-05 9.4285714 + 7200 0.0033908789 0 1.5638438e-05 2.0197609e-05 2.8351014e-05 9.4285714 + 7300 0.0035973172 0 -2.0912015e-06 3.6426312e-05 2.4620627e-05 9.4285714 + 7400 0.0036958962 0 -1.3556805e-05 1.1980603e-06 2.2187657e-05 9.4285714 + 7500 0.0037303282 0 1.019358e-05 5.0014967e-06 2.8719888e-05 9.4285714 + 7600 0.0033149916 0 -2.8759621e-06 1.780461e-05 2.7947196e-05 9.4285714 + 7700 0.0034044865 0 4.9316432e-06 -1.3625502e-06 3.0763568e-05 9.4285714 + 7800 0.0037019149 0 1.1189745e-05 6.7366532e-06 3.4816302e-05 9.4285714 + 7900 0.0040016102 0 8.72866e-06 6.2720753e-06 3.2812711e-05 9.4285714 + 8000 0.0042965823 0 2.3411444e-05 3.1433133e-06 3.6061346e-05 9.4285714 + 8100 0.0049063753 0 2.7128565e-05 7.8650816e-06 3.9110886e-05 9.4285714 + 8200 0.0053524021 0 2.12025e-05 2.9333878e-07 2.5869295e-05 9.4285714 + 8300 0.0052649528 0 2.829196e-05 7.4220763e-06 3.2087371e-05 9.4285714 + 8400 0.0052972403 0 2.7200353e-05 1.1049251e-05 4.289512e-05 9.4285714 + 8500 0.0053915935 0 2.9502963e-05 2.9511499e-06 1.6795138e-05 9.4285714 + 8600 0.0053485581 0 3.3169978e-05 5.1868552e-06 2.9428884e-05 9.4285714 + 8700 0.0053414432 0 2.5011908e-05 -1.1061008e-06 4.2577101e-05 9.4285714 + 8800 0.0054352149 0 2.9763406e-05 -1.4099084e-06 1.8442013e-05 9.4285714 + 8900 0.0054817226 0 3.5732941e-05 1.2926928e-06 2.5512543e-05 9.4285714 + 9000 0.0054728461 0 2.7669858e-05 -1.8779559e-06 2.9398806e-05 9.4285714 + 9100 0.0048751494 0 2.6241102e-05 7.2474542e-07 3.5364646e-05 9.4285714 + 9200 0.0049235623 0 3.1465366e-05 1.8587679e-06 3.6884993e-05 9.4285714 + 9300 0.0049408639 0 3.0163037e-05 4.7937499e-06 2.2278557e-05 9.4285714 + 9400 0.0047722286 0 3.0651769e-05 2.0118874e-06 3.8611885e-05 9.4285714 + 9500 0.004531602 0 3.0764127e-05 3.0365717e-06 4.2239782e-05 9.4285714 + 9600 0.0044175792 0 1.6872325e-05 6.3060434e-06 3.5262608e-05 9.4285714 + 9700 0.0044167782 0 2.1136761e-05 5.0187541e-06 4.607146e-05 9.4285714 + 9800 0.0045545638 0 1.9049762e-05 2.4071799e-08 4.896805e-05 9.4285714 + 9900 0.0047725617 0 3.8862135e-07 -9.2384834e-07 4.5715336e-05 9.4285714 + 10000 0.0047366384 0 9.9108301e-06 8.6495901e-06 3.7838373e-05 9.4285714 + 10100 0.0045925429 0 1.6501456e-05 9.70185e-06 5.9118233e-05 9.4285714 + 10200 0.0045829044 0 2.3104532e-05 1.0151385e-05 5.5272534e-05 9.4285714 + 10300 0.0044545165 0 3.6515058e-05 2.122633e-05 4.0700398e-05 9.4285714 + 10400 0.0041971922 0 5.0801964e-05 8.0635586e-06 5.6192525e-05 9.4285714 + 10500 0.0042997418 0 3.4801704e-05 1.6066531e-05 5.1783335e-05 9.4285714 + 10600 0.0045718981 0 1.4755365e-06 1.5228806e-05 5.7583703e-05 9.4285714 + 10700 0.0054414967 0 3.9990019e-06 8.4499803e-06 5.5171885e-05 9.4285714 + 10800 0.0056085076 0 2.8633626e-06 6.2092201e-05 6.0022519e-05 9.4285714 + 10900 0.0052604016 0 5.8779596e-06 7.9455014e-05 6.2139126e-05 9.4285714 + 11000 0.0053082441 0 9.1658519e-06 3.4007612e-05 4.2130508e-05 9.4285714 + 11100 0.0051714794 0 -3.1065631e-06 3.1123236e-05 3.7584395e-05 9.4285714 + 11200 0.0051148957 0 1.7374833e-06 5.4777946e-05 4.1123477e-05 9.4285714 + 11300 0.0053229225 0 7.3698476e-06 2.7007905e-05 4.1734229e-05 9.4285714 + 11400 0.0053758011 0 4.5797189e-06 1.1387227e-05 3.8484692e-05 9.4285714 + 11500 0.0051526413 0 2.981552e-06 4.0393591e-05 4.3663945e-05 9.4285714 + 11600 0.0050898777 0 9.2528054e-06 4.6193679e-05 3.9414288e-05 9.4285714 + 11700 0.0052834511 0 3.6915908e-06 1.5583059e-05 4.2291524e-05 9.4285714 + 11800 0.0053705654 0 5.0167887e-06 1.7777568e-05 5.2655106e-05 9.4285714 + 11900 0.005038774 0 7.9846178e-06 5.1767431e-05 5.2516307e-05 9.4285714 + 12000 0.0049088358 0 1.3229996e-05 3.8692052e-05 5.451387e-05 9.4285714 + 12100 0.0047131753 0 1.2151329e-05 1.5646142e-05 5.6905539e-05 9.4285714 + 12200 0.0047612378 0 7.2037124e-06 2.3541687e-05 5.1618792e-05 9.4285714 + 12300 0.0045291736 0 6.1042171e-06 4.7628984e-05 4.269753e-05 9.4285714 + 12400 0.0046419824 0 1.6185496e-05 4.0805231e-05 6.3641317e-05 9.4285714 + 12500 0.0047344432 0 2.4764754e-06 1.8802628e-05 4.8520156e-05 9.4285714 + 12600 0.0045536662 0 4.4271892e-06 5.2628029e-05 5.2207062e-05 9.4285714 + 12700 0.0041503561 0 1.6357247e-05 6.4219777e-05 7.1176195e-05 9.4285714 + 12800 0.0040016029 0 1.1879603e-05 2.3353629e-05 5.6103242e-05 9.4285714 + 12900 0.004171103 0 9.767379e-06 1.1371942e-05 5.7698311e-05 9.4285714 + 13000 0.0042998958 0 3.1783957e-06 -1.9279639e-06 4.7565922e-05 9.4285714 + 13100 0.0044022013 0 5.5668883e-06 1.3933065e-05 5.0604818e-05 9.4285714 + 13200 0.0043552769 0 1.0149487e-05 2.4470597e-05 1.8274094e-05 9.4285714 + 13300 0.0045028199 0 1.9030825e-06 1.2227578e-05 4.1965078e-05 9.4285714 + 13400 0.0045092683 0 2.9859337e-06 2.1014681e-05 4.8962974e-05 9.4285714 + 13500 0.0041619695 0 7.797774e-06 2.900914e-05 4.2163211e-05 9.4285714 + 13600 0.0036824743 0 1.6182687e-05 2.5555512e-05 5.5692706e-05 9.4285714 + 13700 0.0034193767 0 7.2162948e-06 1.4255379e-05 7.2093862e-05 9.4285714 + 13800 0.0036164855 0 5.3843155e-06 3.9591393e-05 7.0739751e-05 9.4285714 + 13900 0.0038578088 0 1.4313783e-05 1.7378025e-05 4.5907547e-05 9.4285714 + 14000 0.0044935875 0 2.5495452e-05 1.0141432e-05 4.5846532e-05 9.4285714 + 14100 0.0046832712 0 9.1104031e-06 1.852915e-05 5.4273774e-05 9.4285714 + 14200 0.0044686568 0 1.6934689e-05 1.9350853e-05 6.4902787e-05 9.4285714 + 14300 0.0044797079 0 2.3124797e-05 3.6035366e-05 5.6198635e-05 9.4285714 + 14400 0.0046304596 0 1.3511668e-05 5.7385191e-06 4.6890693e-05 9.4285714 + 14500 0.0046647072 0 9.4307246e-06 1.0367236e-05 5.0773988e-05 9.4285714 + 14600 0.004501411 0 1.3956748e-05 2.9384016e-05 6.0182997e-05 9.4285714 + 14700 0.0043423922 0 2.3511745e-05 2.5269088e-05 6.226637e-05 9.4285714 + 14800 0.0041117861 0 2.729497e-05 2.8828266e-05 4.8933653e-05 9.4285714 + 14900 0.0038091088 0 2.562073e-05 3.9233049e-05 6.2321952e-05 9.4285714 + 15000 0.0037323486 0 3.2541059e-05 3.9208474e-05 7.1140809e-05 9.4285714 + 15100 0.0039478751 0 4.5420105e-05 1.7695082e-05 6.4596914e-05 9.4285714 + 15200 0.0046789396 0 1.7092948e-05 1.3667877e-05 6.1202594e-05 9.4285714 + 15300 0.0049365227 0 3.6248103e-05 1.348841e-05 7.0851902e-05 9.4285714 + 15400 0.0048773919 0 4.7673089e-05 2.5973994e-05 5.5299119e-05 9.4285714 + 15500 0.0049573146 0 3.7779911e-05 1.9140411e-05 6.1162085e-05 9.4285714 + 15600 0.0049927431 0 2.0560805e-05 1.8251395e-05 6.0988282e-05 9.4285714 + 15700 0.0048703914 0 3.3189856e-05 2.1606962e-05 6.4055405e-05 9.4285714 + 15800 0.0046293837 0 6.2944957e-05 1.8863233e-05 7.8874813e-05 9.4285714 + 15900 0.0044328498 0 3.5627487e-05 2.5340889e-05 0.00012458266 9.4285714 + 16000 0.0045283026 0 2.8554883e-05 1.8623511e-05 0.00010924436 9.4285714 + 16100 0.0045247349 0 4.4396365e-05 1.8292404e-05 5.7642046e-05 9.4285714 + 16200 0.0045236357 0 3.0387119e-05 1.7555066e-05 5.491962e-05 9.4285714 + 16300 0.0046088726 0 1.7967786e-05 2.0445799e-05 5.0372662e-05 9.4285714 + 16400 0.0043337397 0 5.438195e-05 1.5302694e-05 6.2505332e-05 9.4285714 + 16500 0.0042687729 0 4.8872531e-05 1.2851892e-05 7.5358475e-05 9.4285714 + 16600 0.003967394 0 7.0452826e-06 3.1074652e-05 5.9409989e-05 9.4285714 + 16700 0.003981999 0 4.0095732e-05 1.2176047e-05 7.5313962e-05 9.4285714 + 16800 0.0040030325 0 1.6647571e-05 2.3871165e-05 7.168208e-05 9.4285714 + 16900 0.0039453755 0 1.3492785e-05 3.6847163e-05 5.9312706e-05 9.4285714 + 17000 0.0040422203 0 4.3782176e-05 1.908774e-05 6.4893021e-05 9.4285714 + 17100 0.0042850082 0 1.7326523e-05 6.1383682e-05 7.2512906e-05 9.4285714 + 17200 0.0043992395 0 1.7726935e-05 2.6471921e-05 6.6950562e-05 9.4285714 + 17300 0.0044284641 0 2.9697976e-05 3.7251867e-05 5.4556431e-05 9.4285714 + 17400 0.004349641 0 2.0535377e-05 2.9445591e-05 5.6131851e-05 9.4285714 + 17500 0.0041364121 0 7.586836e-05 2.6194654e-05 6.5687674e-05 9.4285714 + 17600 0.0043163562 0 3.3078881e-05 3.8960648e-05 4.7978756e-05 9.4285714 + 17700 0.0042848154 0 1.8758192e-05 2.1841342e-05 2.5035641e-05 9.4285714 + 17800 0.0042690812 0 6.6596206e-05 4.830089e-05 5.0141723e-05 9.4285714 + 17900 0.0043341914 0 1.1220727e-05 3.1802974e-05 3.2237655e-05 9.4285714 + 18000 0.0035850011 0 3.2192355e-05 2.025442e-05 3.569131e-05 9.4285714 + 18100 0.0033744622 0 4.670393e-05 4.6727849e-05 4.611621e-05 9.4285714 + 18200 0.0033243821 0 1.7222924e-05 2.8973304e-05 4.6692188e-05 9.4285714 + 18300 0.0034430195 0 3.3708704e-05 4.0577947e-05 4.1304444e-05 9.4285714 + 18400 0.0034771967 0 1.9020553e-05 2.1781885e-05 2.948127e-05 9.4285714 + 18500 0.0034547329 0 1.044558e-05 1.6108184e-05 4.089211e-05 9.4285714 + 18600 0.0033938592 0 2.4915703e-05 4.6313058e-05 3.9147842e-05 9.4285714 + 18700 0.0034939072 0 6.747369e-06 2.4195351e-05 3.4096046e-05 9.4285714 + 18800 0.0035298151 0 9.2622003e-06 2.0435725e-05 4.0027395e-05 9.4285714 + 18900 0.0034538544 0 1.9668285e-05 3.4858753e-05 4.0537174e-05 9.4285714 + 19000 0.003453927 0 6.068747e-06 3.1622905e-05 4.2238217e-05 9.4285714 + 19100 0.0035174754 0 1.2904225e-05 2.9369926e-05 4.388079e-05 9.4285714 + 19200 0.003344507 0 2.5196205e-05 2.7844948e-05 3.3597319e-05 9.4285714 + 19300 0.0028023333 0 3.9297495e-05 3.4208343e-05 3.6809806e-05 9.4285714 + 19400 0.0028277714 0 5.0485772e-05 3.8846638e-05 5.1440681e-05 9.4285714 + 19500 0.0030224831 0 -3.0866815e-06 2.3874092e-05 4.0211958e-05 9.4285714 + 19600 0.0029078339 0 1.3860594e-05 2.0584476e-05 4.0790999e-05 9.4285714 + 19700 0.0028081466 0 2.8762894e-05 3.7727358e-05 6.7206224e-05 9.4285714 + 19800 0.0026851701 0 1.3928003e-05 2.3857186e-05 4.7382611e-05 9.4285714 + 19900 0.0026975412 0 3.479382e-05 2.5431266e-05 5.440872e-05 9.4285714 + 20000 0.002668787 0 1.6826372e-05 3.9225429e-05 5.6975046e-05 9.4285714 + 20100 0.0026331075 0 1.1031868e-05 2.2840955e-05 4.2102584e-05 9.4285714 + 20200 0.0026679181 0 2.3878298e-05 2.2458255e-05 5.4999958e-05 9.4285714 + 20300 0.002629004 0 9.4176671e-06 1.9493877e-05 2.7108262e-05 9.4285714 + 20400 0.002675316 0 1.7137494e-05 2.4019919e-05 4.2649204e-05 9.4285714 + 20500 0.0026964559 0 1.6970036e-05 3.0887712e-05 6.0277639e-05 9.4285714 + 20600 0.0026269599 0 9.6627762e-06 2.8908435e-05 4.9241763e-05 9.4285714 + 20700 0.0026202193 0 1.9068809e-05 3.624268e-05 6.7508965e-05 9.4285714 + 20800 0.0026364111 0 1.3052041e-05 2.8559554e-05 5.9232241e-05 9.4285714 + 20900 0.0026285033 0 1.5046621e-05 2.4294001e-05 4.6914966e-05 9.4285714 + 21000 0.0026298822 0 2.4970356e-05 3.1542638e-05 5.4690587e-05 9.4285714 + 21100 0.0026039794 0 2.7585617e-05 3.1370699e-05 5.8070572e-05 9.4285714 + 21200 0.0027927291 0 3.184803e-05 3.1995367e-05 6.3361708e-05 9.4285714 + 21300 0.0029465015 0 3.1968083e-05 2.9649867e-05 4.1011672e-05 9.4285714 + 21400 0.0029674677 0 2.6487547e-05 2.0341791e-05 3.7663428e-05 9.4285714 + 21500 0.0029127557 0 3.5547953e-05 2.7404228e-05 5.5240477e-05 9.4285714 + 21600 0.0029212622 0 3.4939811e-05 2.9683693e-05 4.1142583e-05 9.4285714 + 21700 0.002893674 0 2.8732848e-05 9.7692049e-06 3.7287898e-05 9.4285714 + 21800 0.0028982035 0 3.1011361e-05 2.642124e-05 5.2822262e-05 9.4285714 + 21900 0.0029687843 0 1.9867782e-05 2.2089322e-05 3.9822643e-05 9.4285714 + 22000 0.0029604025 0 1.7429723e-05 8.7212514e-06 3.6988589e-05 9.4285714 + 22100 0.002922153 0 2.3027454e-05 2.8623103e-05 5.2689113e-05 9.4285714 + 22200 0.0029471377 0 1.8458371e-05 2.3735436e-05 4.6435011e-05 9.4285714 + 22300 0.0029822647 0 1.2807436e-05 1.7057464e-05 4.8341223e-05 9.4285714 + 22400 0.0029412433 0 1.6476084e-05 2.3461621e-05 5.6926898e-05 9.4285714 + 22500 0.0028654811 0 2.2184146e-05 2.8254893e-05 5.5214019e-05 9.4285714 + 22600 0.0027709036 0 1.8329824e-05 4.5795776e-05 8.9403973e-05 9.4285714 + 22700 0.0028335778 0 1.0775695e-05 1.5632027e-05 7.9808315e-05 9.4285714 + 22800 0.0030242492 0 1.7897072e-05 3.2868775e-05 6.5240688e-05 9.4285714 + 22900 0.0031286075 0 2.0079235e-05 4.0300145e-05 5.4009617e-05 9.4285714 + 23000 0.0030482248 0 1.0738056e-05 2.4026152e-05 6.6236508e-05 9.4285714 + 23100 0.0027835798 0 2.2867262e-05 2.3355444e-05 0.00015842767 9.4285714 + 23200 0.0029035438 0 2.7341475e-05 2.6769564e-05 0.00011372859 9.4285714 + 23300 0.0029059837 0 2.2131072e-05 2.8723684e-05 2.1058121e-05 9.4285714 + 23400 0.0029582077 0 2.2654318e-05 1.6277409e-05 7.6567328e-05 9.4285714 + 23500 0.0029515507 0 2.6858895e-05 2.2938776e-05 4.0950067e-05 9.4285714 + 23600 0.002922597 0 2.4804359e-05 2.7820999e-05 2.8949006e-05 9.4285714 + 23700 0.0028938804 0 1.9758277e-05 1.5000656e-05 7.5217444e-05 9.4285714 + 23800 0.0029112694 0 2.4735574e-05 1.2786659e-05 2.681886e-05 9.4285714 + 23900 0.00297458 0 2.3076395e-05 2.1094392e-05 4.3349728e-05 9.4285714 + 24000 0.0029355431 0 2.1283744e-05 2.5878857e-05 5.5442053e-05 9.4285714 + 24100 0.0029426022 0 3.2340563e-05 4.3616434e-05 4.8713025e-05 9.4285714 + 24200 0.0032353692 0 3.8163135e-05 6.7237827e-05 0.00011914428 9.4285714 + 24300 0.003416756 0 3.4029879e-05 6.6710036e-05 0.0001361305 9.4285714 + 24400 0.0034567614 0 3.1825981e-05 6.1020649e-05 7.1942342e-05 9.4285714 + 24500 0.0035257842 0 3.0286878e-05 6.5212873e-05 6.302126e-05 9.4285714 + 24600 0.0034125197 0 4.4932852e-05 3.4729062e-05 4.423406e-05 9.4285714 + 24700 0.0032942838 0 2.7935626e-05 3.7464715e-05 5.6162641e-05 9.4285714 + 24800 0.0031152743 0 4.3684519e-05 6.5029661e-05 6.5423532e-05 9.4285714 + 24900 0.0030976323 0 3.5682812e-05 5.4042457e-05 6.1829713e-05 9.4285714 + 25000 0.003166479 0 1.7908389e-05 5.4510292e-05 3.5283672e-05 9.4285714 + 25100 0.00312392 0 4.032974e-05 3.5569546e-05 7.098646e-05 9.4285714 + 25200 0.0031035839 0 2.1454624e-05 2.9794728e-05 2.2915366e-05 9.4285714 + 25300 0.0030440785 0 3.6672981e-05 4.8789927e-05 4.2651167e-05 9.4285714 + 25400 0.0030674938 0 3.6727163e-05 3.5770931e-05 7.6223318e-05 9.4285714 + 25500 0.0030216924 0 1.5374207e-05 3.4762863e-05 2.0258999e-05 9.4285714 + 25600 0.0027829027 0 3.6386907e-05 4.9791994e-05 3.4365964e-05 9.4285714 + 25700 0.0028908893 0 3.8372625e-05 4.1731531e-05 6.9075185e-05 9.4285714 + 25800 0.0030337526 0 1.2321178e-05 5.6156262e-05 8.6105955e-05 9.4285714 + 25900 0.0033204472 0 2.6018822e-05 6.0927484e-05 8.383897e-05 9.4285714 + 26000 0.0032663107 0 2.4231045e-05 6.1250193e-05 5.5020992e-05 9.4285714 + 26100 0.0032430815 0 3.5978616e-05 7.3751351e-05 8.0249304e-05 9.4285714 + 26200 0.0030404433 0 1.7765113e-05 4.7539025e-05 4.5538726e-05 9.4285714 + 26300 0.0030243525 0 2.9060208e-05 5.3675095e-05 5.4951344e-05 9.4285714 + 26400 0.002944279 0 4.3848485e-05 6.0190279e-05 6.0663593e-05 9.4285714 + 26500 0.0028335637 0 -1.7288669e-06 4.7587303e-05 2.2243882e-05 9.4285714 + 26600 0.0029548697 0 2.0261144e-05 5.6212188e-05 9.1812419e-05 9.4285714 + 26700 0.0030361969 0 5.2782517e-06 4.6354806e-05 4.1787163e-05 9.4285714 + 26800 0.0028389671 0 3.8189649e-06 3.481951e-05 2.05298e-05 9.4285714 + 26900 0.0027417179 0 4.1973513e-05 5.3853895e-05 0.00010008006 9.4285714 + 27000 0.0027303437 0 6.4210547e-06 3.2707443e-05 3.0071238e-05 9.4285714 + 27100 0.0027523491 0 1.8027038e-05 3.6360109e-05 6.9867182e-05 9.4285714 + 27200 0.0029156037 0 3.0271135e-05 4.5719363e-05 0.0001068368 9.4285714 + 27300 0.0030047168 0 1.9237954e-05 4.7122178e-05 2.582602e-05 9.4285714 + 27400 0.0032323735 0 3.8646553e-05 6.2154308e-05 9.0242247e-05 9.4285714 + 27500 0.0033901987 0 3.3236906e-05 5.6345808e-05 5.5391759e-05 9.4285714 + 27600 0.0033766113 0 2.5789737e-05 5.1888258e-05 2.2779241e-05 9.4285714 + 27700 0.0033426295 0 3.0636623e-05 5.9828051e-05 9.5130029e-05 9.4285714 + 27800 0.0033297236 0 3.5074949e-05 5.870062e-05 3.6565136e-05 9.4285714 + 27900 0.0031466693 0 4.575337e-05 7.3776498e-05 6.2207414e-05 9.4285714 + 28000 0.0030049995 0 3.3073435e-05 6.9285723e-05 8.9733564e-05 9.4285714 + 28100 0.0029509882 0 2.841791e-05 4.4716515e-05 3.3027101e-05 9.4285714 + 28200 0.0030798503 0 3.0756091e-05 4.6032739e-05 7.1628827e-05 9.4285714 + 28300 0.0029071346 0 3.0109055e-05 6.2579054e-05 4.8994249e-05 9.4285714 + 28400 0.0026828717 0 3.0208189e-05 6.9534703e-05 6.3494025e-05 9.4285714 + 28500 0.0027528303 0 3.5821667e-05 4.9281056e-05 4.7109236e-05 9.4285714 + 28600 0.002981446 0 4.1467479e-05 4.0801417e-05 1.021751e-05 9.4285714 + 28700 0.0033296851 0 5.0420919e-05 4.0892274e-05 4.7773097e-05 9.4285714 + 28800 0.0031952984 0 5.0573292e-05 5.0321932e-05 6.4274908e-05 9.4285714 + 28900 0.0031207744 0 5.8997767e-05 4.2887603e-05 7.149606e-05 9.4285714 + 29000 0.0030844783 0 5.1507437e-05 3.2133713e-05 5.8659606e-05 9.4285714 + 29100 0.0030444708 0 3.7838207e-05 4.7715492e-05 5.2932052e-05 9.4285714 + 29200 0.0029076346 0 6.4825889e-05 3.8273324e-05 8.322811e-05 9.4285714 + 29300 0.0029691027 0 4.7293765e-05 2.0840647e-05 5.0389245e-05 9.4285714 + 29400 0.0030121455 0 2.486458e-05 2.0405571e-05 5.6527219e-05 9.4285714 + 29500 0.0029433013 0 8.1233176e-05 4.2065734e-05 7.5315698e-05 9.4285714 + 29600 0.0027639431 0 6.1809804e-05 1.1868052e-05 7.0717475e-05 9.4285714 + 29700 0.0026837095 0 5.6854377e-05 1.9793954e-05 7.1571955e-05 9.4285714 + 29800 0.0026564164 0 0.0001008669 2.4325648e-05 6.9310201e-05 9.4285714 + 29900 0.0026296783 0 4.5719703e-05 1.3377553e-05 7.1132956e-05 9.4285714 + 30000 0.0027038164 0 6.3406866e-05 4.9847494e-05 7.0867972e-05 9.4285714 + 30100 0.0027283641 0 7.1822624e-05 6.0762907e-05 8.1446377e-05 9.4285714 + 30200 0.0027245082 0 3.0303021e-05 4.1101452e-05 5.232134e-05 9.4285714 + 30300 0.0027780662 0 5.6641562e-05 5.631607e-05 5.4990703e-05 9.4285714 + 30400 0.0027801788 0 3.659307e-05 2.9548851e-05 7.0760959e-05 9.4285714 + 30500 0.0027728766 0 3.8314728e-05 2.9460261e-05 4.5429017e-05 9.4285714 + 30600 0.0027643044 0 5.2788909e-05 5.0545226e-05 5.3353737e-05 9.4285714 + 30700 0.0024986835 0 8.8380551e-05 3.0713155e-05 5.8749143e-05 9.4285714 + 30800 0.0023866697 0 6.5288397e-05 4.4578406e-05 5.5609262e-05 9.4285714 + 30900 0.0024041227 0 6.2357792e-05 4.4749784e-05 6.2360478e-05 9.4285714 + 31000 0.002432005 0 3.2098539e-05 2.6619709e-05 5.6145087e-05 9.4285714 + 31100 0.0024948692 0 3.3093878e-05 4.7228688e-05 3.9768035e-05 9.4285714 + 31200 0.0024935366 0 4.0949227e-05 3.1265272e-05 6.9929987e-05 9.4285714 + 31300 0.0024544187 0 3.050017e-05 2.8484959e-05 3.1070749e-05 9.4285714 + 31400 0.0024703415 0 3.942284e-05 5.510338e-05 2.9579998e-05 9.4285714 + 31500 0.0024319126 0 3.1747118e-05 4.0872826e-05 5.4037157e-05 9.4285714 + 31600 0.0023850033 0 4.1497624e-05 4.8463752e-05 3.8247306e-05 9.4285714 + 31700 0.0024395025 0 2.2001808e-05 4.5886845e-05 5.9370597e-05 9.4285714 + 31800 0.0023936232 0 3.0963973e-05 3.3106312e-05 4.5821357e-05 9.4285714 + 31900 0.002285582 0 5.747906e-05 6.1801087e-05 5.9770445e-05 9.4285714 + 32000 0.0022938489 0 1.9445678e-05 3.012151e-05 7.3030759e-05 9.4285714 + 32100 0.0021874826 0 4.422427e-05 2.6163388e-05 7.210652e-05 9.4285714 + 32200 0.0022037904 0 8.1086378e-05 4.1198879e-05 8.851267e-05 9.4285714 + 32300 0.0023087203 0 1.157204e-05 1.125474e-05 5.4763149e-05 9.4285714 + 32400 0.0022902318 0 2.3677883e-06 2.4769069e-05 5.0847533e-05 9.4285714 + 32500 0.0021805121 0 5.9016264e-05 2.7607748e-05 7.6225007e-05 9.4285714 + 32600 0.0021888612 0 1.419074e-05 1.5134848e-05 5.8255136e-05 9.4285714 + 32700 0.002260667 0 7.012228e-06 3.4345816e-05 6.5313744e-05 9.4285714 + 32800 0.0021257077 0 3.914166e-05 1.6566614e-05 8.5982764e-05 9.4285714 + 32900 0.0019176174 0 3.4804962e-05 2.9890551e-05 8.1104989e-05 9.4285714 + 33000 0.0018483196 0 4.8159283e-05 3.7774082e-05 9.6880074e-05 9.4285714 + 33100 0.0019626457 0 1.1326063e-05 1.87156e-05 8.0956127e-05 9.4285714 + 33200 0.0020068131 0 9.6625819e-06 1.8792505e-05 4.8026035e-05 9.4285714 + 33300 0.0019691048 0 6.6987688e-05 2.7913244e-05 8.2917772e-05 9.4285714 + 33400 0.0019980258 0 3.6472815e-05 2.4724743e-05 7.2538346e-05 9.4285714 + 33500 0.0020256487 0 2.0126197e-05 1.4552663e-05 4.4782343e-05 9.4285714 + 33600 0.0019915409 0 2.5337352e-05 1.6129416e-05 7.3777306e-05 9.4285714 + 33700 0.0019236353 0 3.4281893e-05 2.0149198e-05 7.249554e-05 9.4285714 + 33800 0.0019658846 0 3.3271059e-05 1.8958778e-05 6.0108493e-05 9.4285714 + 33900 0.0019760621 0 8.7054032e-06 2.2154471e-05 7.0395344e-05 9.4285714 + 34000 0.0018818305 0 2.6255092e-05 1.9097909e-05 6.7792284e-05 9.4285714 + 34100 0.0018420848 0 3.6765465e-05 2.0976214e-05 7.6180423e-05 9.4285714 + 34200 0.0019290254 0 3.2716933e-05 3.6171672e-05 6.7262354e-05 9.4285714 + 34300 0.0019586939 0 1.7526028e-05 1.3984239e-05 3.6831893e-05 9.4285714 + 34400 0.0018929031 0 2.3989789e-05 1.5043443e-05 7.4619333e-05 9.4285714 + 34500 0.0018584336 0 4.6401173e-05 4.3152114e-05 9.5696084e-05 9.4285714 + 34600 0.001833217 0 5.0592202e-05 3.1344935e-05 7.4799719e-05 9.4285714 + 34700 0.0017809161 0 4.9982087e-05 3.9244559e-05 8.5039426e-05 9.4285714 + 34800 0.0017096027 0 3.4332594e-05 2.1323965e-05 7.4669737e-05 9.4285714 + 34900 0.0016277542 0 5.0094744e-05 8.6258801e-06 7.8437323e-05 9.4285714 + 35000 0.0017356837 0 4.2854382e-05 1.8332652e-05 8.2646176e-05 9.4285714 + 35100 0.0016963333 0 1.7577545e-05 7.0053644e-07 6.1095649e-05 9.4285714 + 35200 0.0015572391 0 3.3732443e-05 3.2024727e-05 8.6352721e-05 9.4285714 + 35300 0.0014743671 0 1.7922722e-05 3.394889e-05 8.911252e-05 9.4285714 + 35400 0.0014444621 0 9.644964e-06 5.544573e-06 7.941229e-05 9.4285714 + 35500 0.0014411215 0 3.3630457e-05 2.5623358e-05 9.8688158e-05 9.4285714 + 35600 0.0014485633 0 1.6887842e-05 2.6273213e-05 6.6430504e-05 9.4285714 + 35700 0.0015016437 0 1.5451563e-05 1.6439226e-05 5.4273262e-05 9.4285714 + 35800 0.0015211658 0 2.0281894e-05 2.5101058e-05 7.0470357e-05 9.4285714 + 35900 0.001466604 0 2.770996e-06 1.1440582e-05 6.5181366e-05 9.4285714 + 36000 0.0014501566 0 2.8462028e-05 1.3432249e-05 6.4927395e-05 9.4285714 + 36100 0.0015241971 0 1.8251997e-05 2.0128487e-05 5.1457694e-05 9.4285714 + 36200 0.001645158 0 1.8069942e-06 1.7403698e-05 6.5873689e-05 9.4285714 + 36300 0.0016387367 0 3.2541715e-05 3.0436306e-05 7.65556e-05 9.4285714 + 36400 0.0018472487 0 2.3734772e-05 4.4398892e-05 7.3016847e-05 9.4285714 + 36500 0.0019443333 0 1.4094082e-05 3.6130319e-05 3.6019354e-05 9.4285714 + 36600 0.0019225842 0 2.9878573e-05 3.8531124e-05 4.8951901e-05 9.4285714 + 36700 0.0019003629 0 1.5144859e-05 3.8912532e-05 7.8067424e-05 9.4285714 + 36800 0.0019076107 0 2.3461415e-05 4.703674e-05 4.3268047e-05 9.4285714 + 36900 0.0019243286 0 2.0499306e-05 5.5681543e-05 4.8449806e-05 9.4285714 + 37000 0.001885329 0 1.1549757e-05 4.7974957e-05 6.28639e-05 9.4285714 + 37100 0.0018412473 0 3.9677166e-05 5.425041e-05 6.1386002e-05 9.4285714 + 37200 0.0017021834 0 2.2142149e-05 6.3801587e-05 5.4559653e-05 9.4285714 + 37300 0.0016220199 0 1.1895023e-05 3.2364849e-05 3.8101812e-05 9.4285714 + 37400 0.0015948507 0 4.0294104e-05 4.2769062e-05 6.82252e-05 9.4285714 + 37500 0.0016023622 0 2.645865e-05 5.9399162e-05 8.2860131e-05 9.4285714 + 37600 0.0016081512 0 1.0329166e-05 3.9193016e-05 5.9066575e-05 9.4285714 + 37700 0.0016505121 0 2.9022455e-05 4.590777e-05 8.5292918e-05 9.4285714 + 37800 0.0016795834 0 2.4367973e-05 4.1845982e-05 8.1941179e-05 9.4285714 + 37900 0.0016469159 0 7.4597713e-06 3.1081106e-05 4.9309429e-05 9.4285714 + 38000 0.0016585735 0 3.7146574e-05 5.7463652e-05 7.7038158e-05 9.4285714 + 38100 0.0016197538 0 2.568048e-05 2.613918e-05 6.1265712e-05 9.4285714 + 38200 0.0015995136 0 2.0926043e-05 2.6620232e-05 5.790837e-05 9.4285714 + 38300 0.001575365 0 2.7905548e-05 5.3104847e-05 6.909554e-05 9.4285714 + 38400 0.0016118738 0 9.1556819e-06 2.5878921e-05 5.6520704e-05 9.4285714 + 38500 0.001627926 0 1.9916706e-05 1.0741667e-05 5.5911116e-05 9.4285714 + 38600 0.0015398998 0 2.5754895e-05 3.2514831e-05 7.9193031e-05 9.4285714 + 38700 0.0015297278 0 1.7475326e-05 3.0940483e-05 6.989626e-05 9.4285714 + 38800 0.001519349 0 1.603988e-05 3.4569959e-05 7.0841531e-05 9.4285714 + 38900 0.0014566171 0 1.3118314e-05 3.7878039e-05 6.5156752e-05 9.4285714 + 39000 0.00137148 0 2.6562922e-05 4.648487e-05 7.9359408e-05 9.4285714 + 39100 0.0013853185 0 1.8560351e-05 2.9058736e-05 7.4823973e-05 9.4285714 + 39200 0.0014624493 0 9.8859841e-06 1.3917289e-05 6.3259008e-05 9.4285714 + 39300 0.0014683633 0 2.7317771e-05 2.1151338e-05 7.6262316e-05 9.4285714 + 39400 0.0015002752 0 3.1692123e-05 2.6084929e-05 6.9525219e-05 9.4285714 + 39500 0.0016157937 0 3.7876334e-05 3.0183847e-05 7.0988739e-05 9.4285714 + 39600 0.0017222644 0 4.1766323e-05 1.8940815e-05 7.6874177e-05 9.4285714 + 39700 0.0017366667 0 6.268265e-05 3.875855e-05 6.162349e-05 9.4285714 + 39800 0.0016875096 0 6.0460561e-05 5.0265999e-05 7.5641784e-05 9.4285714 + 39900 0.0017075675 0 5.0740814e-05 4.3208118e-05 7.5319397e-05 9.4285714 + 40000 0.0017295614 0 3.1948178e-05 2.7295879e-05 5.3686792e-05 9.4285714 + 40100 0.0017046337 0 3.4213478e-05 -5.3296061e-06 6.2254534e-05 9.4285714 + 40200 0.0016603479 0 4.010844e-05 2.9815463e-05 6.5355784e-05 9.4285714 + 40300 0.0016725095 0 4.0928404e-05 3.1590351e-05 5.9530763e-05 9.4285714 + 40400 0.0016567124 0 5.6539177e-05 5.6694466e-06 6.3277469e-05 9.4285714 + 40500 0.0015894914 0 6.0002605e-05 5.1408915e-05 6.7258053e-05 9.4285714 + 40600 0.0015202048 0 5.5888787e-05 4.6379438e-05 7.8689276e-05 9.4285714 + 40700 0.0015232561 0 5.6393613e-05 2.2809194e-05 7.9713909e-05 9.4285714 + 40800 0.0015440294 0 4.4693856e-05 2.9519152e-05 7.4253182e-05 9.4285714 + 40900 0.0014790936 0 3.2781481e-05 2.9657273e-05 8.7518861e-05 9.4285714 + 41000 0.0014438346 0 4.753218e-05 5.9968251e-05 8.993006e-05 9.4285714 + 41100 0.001489124 0 4.0869258e-05 3.82388e-05 6.3707933e-05 9.4285714 + 41200 0.0015164352 0 2.4323139e-05 2.6251275e-05 6.3938828e-05 9.4285714 + 41300 0.0014413264 0 3.7426925e-05 4.0199885e-05 8.0013729e-05 9.4285714 + 41400 0.0014461815 0 4.1830051e-05 2.0863586e-05 7.5546018e-05 9.4285714 + 41500 0.0014413437 0 3.4453445e-05 2.595803e-05 6.0138666e-05 9.4285714 + 41600 0.0014517294 0 1.7453931e-05 2.0630425e-05 9.9637948e-05 9.4285714 + 41700 0.0014236261 0 2.6405456e-05 2.6280631e-05 6.988071e-05 9.4285714 + 41800 0.0013866845 0 4.702003e-05 4.8604613e-05 5.9944676e-05 9.4285714 + 41900 0.0013988588 0 2.9220261e-05 3.448141e-05 8.4996427e-05 9.4285714 + 42000 0.0014106759 0 2.0029626e-05 2.8193276e-05 5.848703e-05 9.4285714 + 42100 0.0014347066 0 4.3925548e-05 4.4871069e-05 7.1123614e-05 9.4285714 + 42200 0.0015179504 0 4.776427e-05 4.7983573e-05 7.1397265e-05 9.4285714 + 42300 0.0015495282 0 3.1121701e-05 4.7753119e-05 5.5612085e-05 9.4285714 + 42400 0.0015330013 0 3.7915024e-05 4.6608585e-05 9.3123701e-05 9.4285714 + 42500 0.0015006374 0 4.6904683e-05 5.0251248e-05 6.6037275e-05 9.4285714 + 42600 0.0014815201 0 4.7637952e-05 6.2838708e-05 5.0790858e-05 9.4285714 + 42700 0.0015035622 0 4.7003896e-05 4.6119932e-05 7.9735401e-05 9.4285714 + 42800 0.001510002 0 4.0924975e-05 3.0002205e-05 6.5519384e-05 9.4285714 + 42900 0.001486893 0 4.4240243e-05 3.8912841e-05 7.4463061e-05 9.4285714 + 43000 0.0014596125 0 5.3390515e-05 3.6547495e-05 7.8746855e-05 9.4285714 + 43100 0.0014402863 0 4.4447962e-05 2.8677464e-05 7.6794775e-05 9.4285714 + 43200 0.0014294391 0 2.7384987e-05 3.1778734e-05 8.391794e-05 9.4285714 + 43300 0.0014130015 0 3.1309055e-05 3.6984097e-05 7.5469723e-05 9.4285714 + 43400 0.0013590622 0 4.1380447e-05 2.6340316e-05 8.3877897e-05 9.4285714 + 43500 0.0013294464 0 3.2878708e-05 4.5607517e-05 9.4610107e-05 9.4285714 + 43600 0.0013684274 0 4.7074831e-05 3.8112551e-05 7.9574258e-05 9.4285714 + 43700 0.0014788317 0 5.172435e-05 4.0666366e-05 6.4621849e-05 9.4285714 + 43800 0.0016049064 0 4.7437113e-05 7.3989164e-05 8.4851353e-05 9.4285714 + 43900 0.0016863537 0 7.0088025e-05 5.3425828e-05 8.20764e-05 9.4285714 + 44000 0.0016969667 0 6.0718506e-05 6.8601553e-05 4.2089781e-05 9.4285714 + 44100 0.0016728308 0 4.6104304e-05 6.2469774e-05 8.1326153e-05 9.4285714 + 44200 0.0016125428 0 6.615777e-05 5.341561e-05 0.00010738175 9.4285714 + 44300 0.0016460565 0 5.6854689e-05 7.0757298e-05 8.5866171e-05 9.4285714 + 44400 0.0016380627 0 4.7342223e-05 4.7947528e-05 7.578687e-05 9.4285714 + 44500 0.001561749 0 5.5767022e-05 6.6584861e-05 8.4438764e-05 9.4285714 + 44600 0.0015422814 0 6.025534e-05 8.8893576e-05 9.2544829e-05 9.4285714 + 44700 0.0012179052 0 6.165839e-05 5.4809945e-05 6.1803604e-05 9.4285714 + 44800 0.0011990324 0 5.552928e-05 5.2056632e-05 6.9957978e-05 9.4285714 + 44900 0.001239264 0 4.7151223e-05 4.2113793e-05 6.7377463e-05 9.4285714 + 45000 0.001288125 0 4.64251e-05 4.2330237e-05 6.6082076e-05 9.4285714 + 45100 0.0012827652 0 5.9457866e-05 2.5370516e-05 6.361286e-05 9.4285714 + 45200 0.001309305 0 5.2748624e-05 2.7598115e-05 6.1790539e-05 9.4285714 + 45300 0.0013173207 0 5.3592248e-05 2.5873491e-05 5.3544232e-05 9.4285714 + 45400 0.0013869858 0 6.5389549e-05 2.491857e-05 5.7839602e-05 9.4285714 + 45500 0.0014300951 0 5.2682979e-05 8.8010381e-06 6.1313795e-05 9.4285714 + 45600 0.0014654229 0 5.653501e-05 1.0684719e-05 6.273671e-05 9.4285714 + 45700 0.0015319474 0 7.0567986e-05 3.4005378e-05 7.5552156e-05 9.4285714 + 45800 0.0016327088 0 6.501588e-05 2.0184446e-05 7.9233956e-05 9.4285714 + 45900 0.0015532193 0 7.5826819e-05 5.6576189e-05 0.00011640839 9.4285714 + 46000 0.0014671979 0 8.3344152e-05 9.0867873e-05 0.00012229565 9.4285714 + 46100 0.0014740617 0 6.0645506e-05 3.9791154e-05 8.5043727e-05 9.4285714 + 46200 0.0015061364 0 6.1424049e-05 4.1872638e-05 7.7216457e-05 9.4285714 + 46300 0.0015363374 0 5.2109799e-05 3.7995755e-05 6.8527359e-05 9.4285714 + 46400 0.0015427905 0 4.1564821e-05 -8.9544222e-06 6.3242647e-05 9.4285714 + 46500 0.0015345807 0 5.6478409e-05 5.0134532e-05 6.7498135e-05 9.4285714 + 46600 0.0015315791 0 4.7218046e-05 4.7259168e-05 5.3095757e-05 9.4285714 + 46700 0.0015766283 0 4.9345551e-05 2.0884295e-05 5.8528421e-05 9.4285714 + 46800 0.0016174934 0 6.5001466e-05 5.5529304e-05 5.9363125e-05 9.4285714 + 46900 0.0016258562 0 5.0934405e-05 5.2453037e-05 4.6027251e-05 9.4285714 + 47000 0.0016836156 0 6.8621658e-05 7.855288e-05 6.2195151e-05 9.4285714 + 47100 0.0017902981 0 7.7158935e-05 8.631494e-05 6.7562935e-05 9.4285714 + 47200 0.0018713895 0 7.1053256e-05 5.5918516e-05 5.2017022e-05 9.4285714 + 47300 0.0018098745 0 7.3491772e-05 6.0752779e-05 4.6445866e-05 9.4285714 + 47400 0.0017677971 0 6.1134743e-05 6.0334487e-05 5.7362227e-05 9.4285714 + 47500 0.00173879 0 5.5583108e-05 5.2512875e-05 3.646225e-05 9.4285714 + 47600 0.0014879566 0 6.7745322e-05 4.1728058e-05 5.4891911e-05 9.4285714 + 47700 0.0013978688 0 5.4095656e-05 3.4225308e-05 6.2258157e-05 9.4285714 + 47800 0.001485641 0 5.2572684e-05 6.4241479e-05 3.9677335e-05 9.4285714 + 47900 0.001569345 0 4.6443681e-05 4.019895e-05 4.6722136e-05 9.4285714 + 48000 0.0015797053 0 5.4339271e-05 1.6715737e-05 4.9438686e-05 9.4285714 + 48100 0.0015787942 0 5.2293548e-05 4.1801624e-05 5.3602889e-05 9.4285714 + 48200 0.0016734716 0 5.6659351e-05 5.2476443e-05 5.9276401e-05 9.4285714 + 48300 0.0018178973 0 6.7587899e-05 5.3925402e-05 7.5695724e-05 9.4285714 + 48400 0.0016408072 0 7.6021781e-05 3.5332586e-05 7.423528e-05 9.4285714 + 48500 0.0015180127 0 5.4136927e-05 4.5351896e-05 6.1013597e-05 9.4285714 + 48600 0.0015714246 0 4.1280412e-05 4.5835402e-05 4.4852452e-05 9.4285714 + 48700 0.0015651707 0 3.5387044e-05 2.7172475e-05 4.3389172e-05 9.4285714 + 48800 0.0015502994 0 5.3050031e-05 2.8192425e-05 4.780275e-05 9.4285714 + 48900 0.0015767096 0 2.3516501e-05 3.4913265e-05 4.9068241e-05 9.4285714 + 49000 0.001497117 0 2.7618092e-05 3.5606663e-05 4.270338e-05 9.4285714 + 49100 0.0014645889 0 3.782625e-05 5.82114e-05 9.3141168e-05 9.4285714 + 49200 0.0013605988 0 5.5927774e-05 6.6087066e-05 9.0024103e-05 9.4285714 + 49300 0.0013046452 0 7.6171893e-05 4.2582801e-05 6.281726e-05 9.4285714 + 49400 0.00126249 0 6.0977611e-06 3.2518347e-05 7.8729319e-05 9.4285714 + 49500 0.0012591073 0 4.0070541e-05 4.1157054e-05 6.55184e-05 9.4285714 + 49600 0.0013496941 0 2.8359114e-05 3.8279088e-05 4.9021164e-05 9.4285714 + 49700 0.0014143399 0 -1.2648293e-05 2.669301e-05 6.391785e-05 9.4285714 + 49800 0.0013359192 0 2.9590085e-05 4.9524468e-05 5.5885841e-05 9.4285714 + 49900 0.0013068005 0 2.4798963e-05 4.0847149e-05 7.1549636e-05 9.4285714 + 50000 0.0013425699 0 3.034939e-06 2.4141308e-05 7.0223142e-05 9.4285714 + 50100 0.0013001293 0 1.6524888e-05 5.7670267e-05 5.5184587e-05 9.4285714 + 50200 0.0012197279 0 2.2989742e-05 5.5116207e-05 8.3235181e-05 9.4285714 + 50300 0.0012271487 0 3.8802337e-05 2.6262795e-05 6.4660488e-05 9.4285714 + 50400 0.001291317 0 1.2661e-05 3.4693083e-05 3.9372092e-05 9.4285714 + 50500 0.0012827893 0 2.8612559e-06 4.1945047e-05 6.0557227e-05 9.4285714 + 50600 0.0012564103 0 4.2422735e-05 4.1169468e-05 4.9258036e-05 9.4285714 + 50700 0.0012729248 0 2.6096527e-05 4.1288418e-05 3.8953273e-05 9.4285714 + 50800 0.0012274144 0 3.9482188e-05 5.3452721e-05 4.9908655e-05 9.4285714 + 50900 0.0011574062 0 5.9316706e-05 4.6870128e-05 6.7997494e-05 9.4285714 + 51000 0.0011296857 0 7.727098e-06 2.8698541e-05 5.5842025e-05 9.4285714 + 51100 0.0011388779 0 6.0718142e-05 4.1306192e-05 6.7861576e-05 9.4285714 + 51200 0.0011937387 0 7.066783e-05 4.2834494e-05 5.0727869e-05 9.4285714 + 51300 0.0012081275 0 6.9960047e-06 2.8076083e-05 4.8289505e-05 9.4285714 + 51400 0.0012502837 0 6.3509848e-05 3.35021e-05 9.5995137e-05 9.4285714 + 51500 0.0012969542 0 6.1043789e-05 3.4230636e-05 5.1503225e-05 9.4285714 + 51600 0.0013220502 0 2.9168865e-05 3.83825e-05 5.4431981e-05 9.4285714 + 51700 0.0013081034 0 4.9582069e-05 4.2197084e-05 0.00011031135 9.4285714 + 51800 0.0012828263 0 4.569917e-05 3.3151705e-05 7.4881048e-05 9.4285714 + 51900 0.0012720741 0 5.8805342e-05 4.6305957e-05 8.3902806e-05 9.4285714 + 52000 0.0012604971 0 5.2948167e-05 3.5372954e-05 7.7302315e-05 9.4285714 + 52100 0.0012342123 0 2.668491e-05 2.0142345e-05 6.6211682e-05 9.4285714 + 52200 0.0011854361 0 6.3813416e-05 5.5651791e-05 0.00011271647 9.4285714 + 52300 0.0011781501 0 6.1807577e-05 4.7368873e-05 8.6948299e-05 9.4285714 + 52400 0.0011446275 0 3.5627079e-05 5.2138643e-05 7.6026051e-05 9.4285714 + 52500 0.0011322278 0 5.4511292e-05 7.7333494e-05 0.00011183146 9.4285714 + 52600 0.0011638797 0 4.9025588e-05 4.1838852e-05 7.0845404e-05 9.4285714 + 52700 0.0011961285 0 4.9345142e-05 5.2630672e-05 8.9296697e-05 9.4285714 + 52800 0.0012198161 0 5.7527971e-05 5.8240821e-05 0.00010124816 9.4285714 + 52900 0.001273751 0 5.3738338e-05 6.168997e-05 9.141532e-05 9.4285714 + 53000 0.0013484632 0 7.2465344e-05 8.226475e-05 9.2568236e-05 9.4285714 + 53100 0.0013289922 0 7.2879301e-05 6.7917236e-05 7.3229527e-05 9.4285714 + 53200 0.0012944645 0 4.9698268e-05 6.5834267e-05 0.00010086307 9.4285714 + 53300 0.0013235344 0 6.6277359e-05 6.6421605e-05 9.8260892e-05 9.4285714 + 53400 0.0012924925 0 6.5805401e-05 5.5419618e-05 4.4142506e-05 9.4285714 + 53500 0.0012783474 0 7.1057578e-05 6.1513476e-05 0.00011038284 9.4285714 + 53600 0.0012680627 0 7.8362175e-05 6.5421064e-05 0.00010438102 9.4285714 + 53700 0.0012796382 0 7.0664927e-05 6.2367456e-05 6.3143821e-05 9.4285714 + 53800 0.0012854235 0 6.016806e-05 6.28356e-05 7.8130568e-05 9.4285714 + 53900 0.0012602979 0 6.1883931e-05 5.5269182e-05 8.3402959e-05 9.4285714 + 54000 0.0012274731 0 6.7710325e-05 5.8794203e-05 9.7066392e-05 9.4285714 + 54100 0.0012315731 0 5.3006642e-05 5.7999381e-05 6.4202226e-05 9.4285714 + 54200 0.0011860462 0 4.8120173e-05 5.5712798e-05 5.0183733e-05 9.4285714 + 54300 0.0011307587 0 3.8568386e-05 5.7142289e-05 8.1135744e-05 9.4285714 + 54400 0.0011254036 0 4.6849471e-05 4.3135281e-05 8.1869874e-05 9.4285714 + 54500 0.0011445325 0 4.6730622e-05 4.4885187e-05 7.5149124e-05 9.4285714 + 54600 0.001135296 0 4.6769034e-05 5.3352321e-05 5.3992858e-05 9.4285714 + 54700 0.0011252624 0 4.3633074e-05 4.1379276e-05 7.9637475e-05 9.4285714 + 54800 0.0011174123 0 5.2843156e-05 4.063133e-05 8.2824912e-05 9.4285714 + 54900 0.0010853378 0 5.2849823e-05 5.0687621e-05 7.858578e-05 9.4285714 + 55000 0.00091825741 0 7.6506837e-05 9.5182976e-05 0.00012002574 9.4285714 + 55100 0.00081806475 0 6.1064783e-05 0.00010584402 0.00010457692 9.4285714 + 55200 0.00086585159 0 3.3155719e-05 3.9402558e-05 7.1518652e-05 9.4285714 + 55300 0.00091265818 0 4.4302518e-05 3.7568919e-05 7.1916634e-05 9.4285714 + 55400 0.00086088874 0 3.5485399e-05 3.6344553e-05 5.5659439e-05 9.4285714 + 55500 0.00082243334 0 3.4433966e-05 4.1488223e-05 5.8604015e-05 9.4285714 + 55600 0.00087357984 0 3.4742088e-05 6.6633287e-05 8.0039015e-05 9.4285714 + 55700 0.0008692441 0 2.5508337e-05 2.6429395e-05 4.8378627e-05 9.4285714 + 55800 0.00089698302 0 3.8931215e-05 5.8027552e-05 6.4671391e-05 9.4285714 + 55900 0.00089756804 0 3.3208627e-05 3.8916753e-05 6.2654765e-05 9.4285714 + 56000 0.00089173201 0 3.0316741e-05 2.6023349e-05 5.2559959e-05 9.4285714 + 56100 0.00088396442 0 4.2666411e-05 5.7442073e-05 6.9669274e-05 9.4285714 + 56200 0.00088840391 0 2.3033892e-05 2.7271768e-05 5.7626685e-05 9.4285714 + 56300 0.00086888083 0 2.5300231e-05 3.3460894e-05 6.7425268e-05 9.4285714 + 56400 0.0008195613 0 4.096235e-05 5.9576221e-05 9.2381894e-05 9.4285714 + 56500 0.00083135224 0 2.7447155e-05 2.6912145e-05 6.9990461e-05 9.4285714 + 56600 0.00083562389 0 2.3897502e-05 2.9953166e-05 7.4873676e-05 9.4285714 + 56700 0.00082436951 0 4.6403993e-05 4.4596045e-05 7.7802802e-05 9.4285714 + 56800 0.00080128454 0 3.8555457e-05 3.1357057e-05 5.647557e-05 9.4285714 + 56900 0.00078981035 0 4.1359507e-05 4.3505003e-05 7.241494e-05 9.4285714 + 57000 0.00078586225 0 4.0506909e-05 4.2850749e-05 6.5884322e-05 9.4285714 + 57100 0.00078916693 0 4.178575e-05 3.9825175e-05 6.7213746e-05 9.4285714 + 57200 0.00077365749 0 4.766364e-05 5.3737805e-05 7.7886698e-05 9.4285714 + 57300 0.00078345511 0 4.6078717e-05 5.5180603e-05 5.9215243e-05 9.4285714 + 57400 0.00079107474 0 4.5490598e-05 5.3074695e-05 4.8395067e-05 9.4285714 + 57500 0.00079220227 0 4.8323857e-05 4.8530791e-05 5.860095e-05 9.4285714 + 57600 0.00077979339 0 5.2162562e-05 2.2987016e-05 5.8375049e-05 9.4285714 + 57700 0.00078608076 0 4.6576754e-05 3.021822e-05 5.192676e-05 9.4285714 + 57800 0.00078878175 0 3.2189049e-05 2.9440112e-05 5.0932992e-05 9.4285714 + 57900 0.00077861224 0 2.8222847e-05 2.5337728e-05 6.2762567e-05 9.4285714 + 58000 0.00079380272 0 2.8468553e-05 2.994577e-05 5.6073575e-05 9.4285714 + 58100 0.00079225471 0 2.186816e-05 2.6581224e-05 4.8995393e-05 9.4285714 + 58200 0.00073665936 0 3.5314721e-05 4.6623743e-05 7.6581095e-05 9.4285714 + 58300 0.00070688837 0 4.021219e-05 5.5825992e-05 7.1903297e-05 9.4285714 + 58400 0.00071611372 0 2.9831153e-05 4.8627125e-05 6.6545362e-05 9.4285714 + 58500 0.00072483198 0 2.6753389e-05 4.6485829e-05 7.2631749e-05 9.4285714 + 58600 0.0007351691 0 2.1099794e-05 3.5736723e-05 6.5755371e-05 9.4285714 + 58700 0.00073590924 0 1.9061542e-05 3.9686648e-05 6.4329755e-05 9.4285714 + 58800 0.00074183154 0 3.0789698e-05 4.0495246e-05 6.9335969e-05 9.4285714 + 58900 0.00073998718 0 3.0416344e-05 2.4907946e-05 6.9445147e-05 9.4285714 + 59000 0.00073929475 0 2.5562862e-05 2.8736957e-05 7.2875068e-05 9.4285714 + 59100 0.00071790614 0 4.3452017e-05 4.9938109e-05 6.8693283e-05 9.4285714 + 59200 0.00068098606 0 6.533829e-05 5.1908115e-05 6.1640636e-05 9.4285714 + 59300 0.000669531 0 5.7426069e-05 4.1119263e-05 6.5326889e-05 9.4285714 + 59400 0.00067740846 0 4.5713273e-05 3.1152773e-05 5.8094208e-05 9.4285714 + 59500 0.00068645739 0 4.6506368e-05 3.1787222e-05 6.8030215e-05 9.4285714 + 59600 0.00065223009 0 3.340199e-05 2.588824e-05 8.0480883e-05 9.4285714 + 59700 0.00061018506 0 4.6794468e-05 2.4680076e-05 9.1072356e-05 9.4285714 + 59800 0.00060223028 0 5.2317517e-05 3.724215e-05 8.9548282e-05 9.4285714 + 59900 0.00058493162 0 2.102763e-05 2.4520505e-05 7.9950291e-05 9.4285714 + 60000 0.00057093682 0 4.2826465e-05 2.5826541e-05 7.6616643e-05 9.4285714 + 60100 0.00056211304 0 5.4207366e-05 2.9723742e-05 6.4787445e-05 9.4285714 + 60200 0.00058031435 0 3.8888069e-05 2.059913e-05 7.170529e-05 9.4285714 + 60300 0.00057909642 0 4.707507e-05 2.8461859e-05 7.4220019e-05 9.4285714 + 60400 0.00058318468 0 3.9365541e-05 3.4001019e-05 7.2507643e-05 9.4285714 + 60500 0.00058895344 0 3.5036704e-05 2.4586022e-05 7.0454469e-05 9.4285714 + 60600 0.00058250376 0 4.728713e-05 3.2564452e-05 5.9764753e-05 9.4285714 + 60700 0.00057142619 0 3.6196692e-05 2.5108101e-05 7.4531406e-05 9.4285714 + 60800 0.00058009294 0 4.2087368e-05 1.943163e-05 7.9536107e-05 9.4285714 + 60900 0.00056937593 0 4.5065644e-05 2.9939819e-05 4.8147216e-05 9.4285714 + 61000 0.00057015359 0 3.3708174e-05 2.6348076e-05 6.4130811e-05 9.4285714 + 61100 0.00057913017 0 3.7890273e-05 2.5656415e-05 7.4770294e-05 9.4285714 + 61200 0.00057517291 0 4.0318369e-05 2.8817687e-05 6.2291555e-05 9.4285714 + 61300 0.00056965237 0 4.0760849e-05 2.7022058e-05 7.1157146e-05 9.4285714 + 61400 0.0005765101 0 4.6572181e-05 3.0317909e-05 7.0493214e-05 9.4285714 + 61500 0.00057026728 0 4.7536879e-05 2.6913145e-05 7.1752015e-05 9.4285714 + 61600 0.00054394886 0 5.2204976e-05 3.0467134e-05 8.064426e-05 9.4285714 + 61700 0.0005282147 0 4.8847294e-05 3.9357248e-05 8.1995793e-05 9.4285714 + 61800 0.00053338771 0 5.0479798e-05 3.4127454e-05 8.0173037e-05 9.4285714 + 61900 0.00053458285 0 4.4066855e-05 3.2312536e-05 7.1682113e-05 9.4285714 + 62000 0.00052393276 0 4.9873122e-05 3.3616056e-05 7.2809235e-05 9.4285714 + 62100 0.0004980484 0 5.9755667e-05 2.6029466e-05 7.7423821e-05 9.4285714 + 62200 0.00049369187 0 3.0216125e-05 2.3008359e-05 6.5461594e-05 9.4285714 + 62300 0.00050362959 0 3.6088301e-05 1.9795611e-05 5.798608e-05 9.4285714 + 62400 0.0005085823 0 4.2876207e-05 2.3009503e-05 5.0385013e-05 9.4285714 + 62500 0.00051125372 0 2.6911188e-05 2.6041032e-05 6.0833706e-05 9.4285714 + 62600 0.00049409671 0 4.6464161e-05 2.4839175e-05 6.9696923e-05 9.4285714 + 62700 0.00049534996 0 4.038616e-05 3.1238817e-05 6.45015e-05 9.4285714 + 62800 0.00051290818 0 2.5200585e-05 2.0417534e-05 6.1354673e-05 9.4285714 + 62900 0.00050911172 0 3.7657108e-05 1.5160979e-05 5.642647e-05 9.4285714 + 63000 0.00049147789 0 3.1147633e-05 2.3454167e-05 6.1055851e-05 9.4285714 + 63100 0.0004951308 0 2.6628997e-05 1.8450352e-05 6.3832011e-05 9.4285714 + 63200 0.00050062712 0 2.9461193e-05 1.8894883e-05 5.3709621e-05 9.4285714 + 63300 0.00050139893 0 2.4412715e-05 2.1523377e-05 6.3687974e-05 9.4285714 + 63400 0.00048447114 0 2.7417779e-05 2.1992864e-05 6.9868247e-05 9.4285714 + 63500 0.00047978034 0 3.0555223e-05 2.6931303e-05 6.1387264e-05 9.4285714 + 63600 0.00049427346 0 1.9450584e-05 2.57919e-05 6.2763612e-05 9.4285714 + 63700 0.0004901157 0 1.8042785e-05 2.4269181e-05 6.3857894e-05 9.4285714 + 63800 0.00047694742 0 2.9321344e-05 2.6189306e-05 6.6770234e-05 9.4285714 + 63900 0.00048601419 0 2.6979337e-05 2.7149374e-05 6.8186957e-05 9.4285714 + 64000 0.00049649147 0 2.3935534e-05 2.7256362e-05 6.3734437e-05 9.4285714 + 64100 0.00048920908 0 3.2116897e-05 2.4108499e-05 7.0256211e-05 9.4285714 + 64200 0.00047495846 0 3.8975693e-05 2.630817e-05 7.1653523e-05 9.4285714 + 64300 0.00048317212 0 3.6421737e-05 3.0275882e-05 6.7249521e-05 9.4285714 + 64400 0.00048577809 0 3.1436413e-05 2.4999089e-05 6.8161034e-05 9.4285714 + 64500 0.00048135814 0 2.756429e-05 2.1451536e-05 6.6148018e-05 9.4285714 + 64600 0.00047337605 0 2.7900388e-05 2.4744334e-05 6.5642657e-05 9.4285714 + 64700 0.00047561605 0 2.5014245e-05 2.6330051e-05 5.9888487e-05 9.4285714 + 64800 0.00047768906 0 2.2184281e-05 2.7752063e-05 5.4367213e-05 9.4285714 + 64900 0.00047150997 0 2.4737436e-05 2.5849715e-05 5.8167365e-05 9.4285714 + 65000 0.00047348923 0 2.4609009e-05 2.4526544e-05 5.84653e-05 9.4285714 + 65100 0.00047838104 0 2.1185933e-05 2.3385614e-05 6.0539391e-05 9.4285714 + 65200 0.00046686 0 2.5688303e-05 2.7353928e-05 7.3479213e-05 9.4285714 + 65300 0.00045592385 0 3.070139e-05 2.8995365e-05 7.0741174e-05 9.4285714 + 65400 0.00044397472 0 2.2926914e-05 2.8384032e-05 7.4501644e-05 9.4285714 + 65500 0.00044322001 0 2.3879269e-05 3.3834666e-05 7.7595057e-05 9.4285714 + 65600 0.00043965697 0 2.485101e-05 3.4572558e-05 6.4914566e-05 9.4285714 + 65700 0.00042087138 0 2.702303e-05 3.3273171e-05 7.1716743e-05 9.4285714 + 65800 0.00041027634 0 3.4829915e-05 3.631925e-05 8.30961e-05 9.4285714 + 65900 0.00041485923 0 3.0790557e-05 3.3132684e-05 7.0068508e-05 9.4285714 + 66000 0.00040462812 0 3.5225732e-05 3.045457e-05 6.7459266e-05 9.4285714 + 66100 0.00039426331 0 3.479407e-05 3.4904978e-05 8.3549323e-05 9.4285714 + 66200 0.00039250839 0 3.3733262e-05 3.3376075e-05 7.9049984e-05 9.4285714 + 66300 0.00038475689 0 4.1363564e-05 3.3611761e-05 6.6102481e-05 9.4285714 + 66400 0.00037815986 0 3.9786022e-05 3.9563847e-05 7.4132245e-05 9.4285714 + 66500 0.00036499659 0 4.1366528e-05 3.9700917e-05 7.7686492e-05 9.4285714 + 66600 0.00035284331 0 4.666029e-05 5.3783978e-05 8.0530891e-05 9.4285714 + 66700 0.00034261186 0 3.8553503e-05 5.509834e-05 7.821729e-05 9.4285714 + 66800 0.0003324884 0 3.3118047e-05 4.3094514e-05 6.5077394e-05 9.4285714 + 66900 0.0003277956 0 3.526711e-05 4.1110476e-05 6.3572994e-05 9.4285714 + 67000 0.00033650288 0 3.3407364e-05 4.2227125e-05 6.114382e-05 9.4285714 + 67100 0.00034239114 0 3.2749548e-05 4.1180924e-05 5.881852e-05 9.4285714 + 67200 0.00033167021 0 3.5105016e-05 4.0847444e-05 5.628596e-05 9.4285714 + 67300 0.00033122027 0 3.9806624e-05 3.9493968e-05 5.5932217e-05 9.4285714 + 67400 0.00032577352 0 3.8152397e-05 4.8295411e-05 5.7978173e-05 9.4285714 + 67500 0.00031506675 0 4.1986283e-05 5.1269447e-05 6.1788674e-05 9.4285714 + 67600 0.00029844955 0 4.2582158e-05 4.078476e-05 6.4090753e-05 9.4285714 + 67700 0.00029373946 0 3.5572883e-05 4.2390139e-05 6.2050343e-05 9.4285714 + 67800 0.00029756719 0 3.9931159e-05 4.377586e-05 6.4745394e-05 9.4285714 + 67900 0.00027242868 0 3.7385175e-05 5.2277573e-05 7.5324716e-05 9.4285714 + 68000 0.0002375432 0 3.2657468e-05 5.8891619e-05 8.0328699e-05 9.4285714 + 68100 0.00022336944 0 3.8163955e-05 4.264584e-05 6.9890065e-05 9.4285714 + 68200 0.0002394125 0 4.2265311e-05 5.0374122e-05 6.0693337e-05 9.4285714 + 68300 0.00023458425 0 3.8489054e-05 4.210798e-05 5.8936828e-05 9.4285714 + 68400 0.00022593675 0 3.8487469e-05 4.6709627e-05 5.3084678e-05 9.4285714 + 68500 0.00021122659 0 4.2002335e-05 5.0682585e-05 5.3442368e-05 9.4285714 + 68600 0.00019037881 0 4.7612474e-05 4.5901841e-05 6.7055416e-05 9.4285714 + 68700 0.00016229105 0 4.5624704e-05 6.4233086e-05 7.8690738e-05 9.4285714 + 68800 0.00016661853 0 3.8121124e-05 5.363946e-05 8.9823479e-05 9.4285714 + 68900 0.00016247396 0 3.38414e-05 3.1297733e-05 8.5338211e-05 9.4285714 + 69000 0.00015179485 0 4.0162341e-05 4.2235387e-05 7.4654173e-05 9.4285714 + 69100 0.00015169157 0 4.4394807e-05 2.8305662e-05 6.3294941e-05 9.4285714 + 69200 0.00014178767 0 4.0618111e-05 2.2793402e-05 6.24278e-05 9.4285714 + 69300 0.00012969162 0 4.0775754e-05 4.6133374e-05 7.0939893e-05 9.4285714 + 69400 0.00012071471 0 4.3368142e-05 3.3640709e-05 6.3643499e-05 9.4285714 + 69500 0.0001146975 0 4.0676483e-05 3.9504332e-05 5.9807616e-05 9.4285714 + 69600 0.00010556571 0 4.1039291e-05 3.9615635e-05 6.3643545e-05 9.4285714 + 69700 0.00010486735 0 3.4519103e-05 3.2546644e-05 5.6764861e-05 9.4285714 + 69800 0.00010434767 0 3.0937411e-05 3.9647266e-05 5.3569378e-05 9.4285714 + 69900 0.00010027608 0 3.4520432e-05 3.0972554e-05 5.1940604e-05 9.4285714 + 70000 9.4667667e-05 0 3.3924618e-05 3.4918364e-05 4.8498053e-05 9.4285714 + 70100 8.9366625e-05 0 3.911498e-05 3.3808428e-05 4.8584204e-05 9.4285714 + 70200 8.8516331e-05 0 3.9452984e-05 2.3079957e-05 4.696871e-05 9.4285714 + 70300 8.938838e-05 0 3.1788796e-05 3.7168646e-05 4.1707638e-05 9.4285714 + 70400 8.4850023e-05 0 3.7628834e-05 3.7536056e-05 3.5846252e-05 9.4285714 + 70500 8.0956996e-05 0 3.8842029e-05 2.8364414e-05 3.2397126e-05 9.4285714 + 70600 8.1567226e-05 0 3.3018333e-05 2.7507104e-05 3.1872387e-05 9.4285714 + 70700 8.0381978e-05 0 3.0630896e-05 2.0105597e-05 3.1770456e-05 9.4285714 + 70800 8.0222191e-05 0 2.7029631e-05 2.0864787e-05 2.9478803e-05 9.4285714 + 70900 7.8624451e-05 0 2.3613202e-05 2.4774487e-05 2.6767605e-05 9.4285714 + 71000 7.1624346e-05 0 2.3698403e-05 2.4556743e-05 2.8087535e-05 9.4285714 + 71100 6.6463841e-05 0 2.3364968e-05 2.8081912e-05 2.5543773e-05 9.4285714 + 71200 6.6538222e-05 0 2.0469822e-05 2.2122674e-05 2.1689827e-05 9.4285714 + 71300 6.676336e-05 0 1.9173852e-05 1.8819111e-05 2.194277e-05 9.4285714 + 71400 6.5684586e-05 0 2.0545463e-05 2.3611505e-05 2.1874371e-05 9.4285714 + 71500 6.244042e-05 0 2.1992758e-05 2.2981981e-05 2.1660398e-05 9.4285714 + 71600 5.9367959e-05 0 2.1860341e-05 2.3846776e-05 2.1276858e-05 9.4285714 + 71700 5.8051241e-05 0 1.9910901e-05 2.5898889e-05 2.084689e-05 9.4285714 + 71800 5.7950593e-05 0 1.6565616e-05 2.2043471e-05 2.1570135e-05 9.4285714 + 71900 5.7161841e-05 0 1.5234725e-05 2.0222147e-05 2.2605045e-05 9.4285714 + 72000 5.4570031e-05 0 1.7006943e-05 1.9623036e-05 2.3239161e-05 9.4285714 + 72100 5.2590194e-05 0 1.8579432e-05 1.7928822e-05 2.3217644e-05 9.4285714 + 72200 5.0954671e-05 0 1.8271811e-05 1.9071654e-05 2.1147198e-05 9.4285714 + 72300 4.9399541e-05 0 1.8071208e-05 1.7124978e-05 1.9359994e-05 9.4285714 + 72400 4.9995256e-05 0 1.6891462e-05 1.5070439e-05 1.953487e-05 9.4285714 + 72500 4.7598717e-05 0 1.6513835e-05 1.6370284e-05 1.9587024e-05 9.4285714 + 72600 4.2483775e-05 0 1.867585e-05 1.7289599e-05 2.08997e-05 9.4285714 + 72700 4.1166149e-05 0 1.8084762e-05 1.7773807e-05 2.0571475e-05 9.4285714 + 72800 4.1265323e-05 0 1.6418316e-05 1.7934951e-05 1.7621087e-05 9.4285714 + 72900 3.8883184e-05 0 1.4842738e-05 1.7349368e-05 1.7558007e-05 9.4285714 + 73000 3.7853766e-05 0 1.3020247e-05 1.630628e-05 1.7848196e-05 9.4285714 + 73100 3.7886089e-05 0 1.3532398e-05 1.595487e-05 1.5829667e-05 9.4285714 + 73200 3.6233583e-05 0 1.5292934e-05 1.646088e-05 1.5363762e-05 9.4285714 + 73300 3.5327118e-05 0 1.542281e-05 1.4857174e-05 1.6977865e-05 9.4285714 + 73400 3.5028251e-05 0 1.5529593e-05 1.4125725e-05 1.8100113e-05 9.4285714 + 73500 3.5280241e-05 0 1.5430984e-05 1.531323e-05 1.6172979e-05 9.4285714 + 73600 3.5452801e-05 0 1.4643468e-05 1.3843214e-05 1.5685451e-05 9.4285714 + 73700 3.5687526e-05 0 1.4745493e-05 1.3285627e-05 1.6046845e-05 9.4285714 + 73800 3.4986663e-05 0 1.6246342e-05 1.5047051e-05 1.6868345e-05 9.4285714 + 73900 3.2282568e-05 0 1.6220437e-05 1.3388184e-05 2.1932412e-05 9.4285714 + 74000 3.1117596e-05 0 1.5306764e-05 1.3882456e-05 2.3867036e-05 9.4285714 + 74100 2.9439175e-05 0 1.4636591e-05 1.609711e-05 2.3696917e-05 9.4285714 + 74200 2.8834198e-05 0 1.5258518e-05 1.3253909e-05 2.6495743e-05 9.4285714 + 74300 2.9086586e-05 0 1.4321218e-05 1.2653553e-05 2.4874275e-05 9.4285714 + 74400 2.8087585e-05 0 1.3756031e-05 1.2925145e-05 2.3478669e-05 9.4285714 + 74500 2.8902792e-05 0 1.4377871e-05 1.3379362e-05 2.354043e-05 9.4285714 + 74600 2.8332529e-05 0 1.3870538e-05 1.4960389e-05 2.1802155e-05 9.4285714 + 74700 2.7889584e-05 0 1.3400198e-05 1.4427326e-05 2.4530647e-05 9.4285714 + 74800 2.6435242e-05 0 1.348739e-05 1.4462951e-05 2.5759462e-05 9.4285714 + 74900 2.5098935e-05 0 1.4618771e-05 1.5728822e-05 2.5288231e-05 9.4285714 + 75000 2.4865457e-05 0 1.6588834e-05 1.595056e-05 2.7032513e-05 9.4285714 + 75100 2.5123617e-05 0 1.8301314e-05 1.5539838e-05 2.5708159e-05 9.4285714 + 75200 2.5008036e-05 0 1.840951e-05 1.3438371e-05 2.5150771e-05 9.4285714 + 75300 2.4115144e-05 0 1.6666828e-05 1.4061131e-05 2.667145e-05 9.4285714 + 75400 2.2855611e-05 0 1.6047524e-05 1.687139e-05 2.718363e-05 9.4285714 + 75500 2.2419569e-05 0 1.6328692e-05 1.7827059e-05 2.7899589e-05 9.4285714 + 75600 2.3937092e-05 0 1.6322018e-05 1.8803176e-05 2.7395763e-05 9.4285714 + 75700 2.5296889e-05 0 1.5896202e-05 1.9482123e-05 2.8009033e-05 9.4285714 + 75800 2.4653377e-05 0 1.7140355e-05 1.8073958e-05 3.0403605e-05 9.4285714 + 75900 2.3035577e-05 0 2.0143607e-05 1.6971721e-05 2.990465e-05 9.4285714 + 76000 2.3677733e-05 0 2.0504922e-05 1.618283e-05 2.9212486e-05 9.4285714 + 76100 2.3824349e-05 0 1.7942343e-05 1.6656011e-05 3.014184e-05 9.4285714 + 76200 2.3040903e-05 0 1.7234153e-05 1.6157452e-05 2.9499924e-05 9.4285714 + 76300 2.4284516e-05 0 1.7365967e-05 1.5702242e-05 2.838064e-05 9.4285714 + 76400 2.4823481e-05 0 1.7572672e-05 1.7443809e-05 2.8511916e-05 9.4285714 + 76500 2.3633066e-05 0 1.9312604e-05 1.828381e-05 2.8795079e-05 9.4285714 + 76600 2.3792938e-05 0 2.0485662e-05 1.8438361e-05 2.7846689e-05 9.4285714 + 76700 2.3162329e-05 0 1.9790437e-05 1.9523079e-05 2.6803851e-05 9.4285714 + 76800 2.1774734e-05 0 1.9660139e-05 2.0949392e-05 2.9587153e-05 9.4285714 + 76900 2.0469371e-05 0 1.8137504e-05 2.2241806e-05 3.3727105e-05 9.4285714 + 77000 1.996647e-05 0 1.7571226e-05 2.3884786e-05 3.2492755e-05 9.4285714 + 77100 1.9700968e-05 0 1.9278777e-05 2.4924073e-05 3.1924804e-05 9.4285714 + 77200 1.9576781e-05 0 1.9807941e-05 2.355905e-05 3.4065557e-05 9.4285714 + 77300 2.052527e-05 0 2.0247351e-05 2.1422654e-05 3.2658734e-05 9.4285714 + 77400 2.0256525e-05 0 2.141067e-05 1.9555507e-05 3.0977189e-05 9.4285714 + 77500 1.8579461e-05 0 2.2121806e-05 1.8254663e-05 3.1952958e-05 9.4285714 + 77600 1.8172288e-05 0 2.1703547e-05 1.8551843e-05 3.2086158e-05 9.4285714 + 77700 1.848403e-05 0 2.1625089e-05 1.7592866e-05 3.0909965e-05 9.4285714 + 77800 1.875638e-05 0 2.2217682e-05 1.6150581e-05 3.0772143e-05 9.4285714 + 77900 1.7660808e-05 0 2.2188335e-05 1.6789439e-05 3.1296788e-05 9.4285714 + 78000 1.6105412e-05 0 2.2630278e-05 1.8283335e-05 3.1639662e-05 9.4285714 + 78100 1.5412481e-05 0 2.385335e-05 2.0412496e-05 3.1975087e-05 9.4285714 + 78200 1.4864995e-05 0 2.351266e-05 2.1202185e-05 3.2969522e-05 9.4285714 + 78300 1.4215873e-05 0 2.2220845e-05 2.0082977e-05 3.3754612e-05 9.4285714 + 78400 1.3602903e-05 0 2.1501329e-05 2.1365493e-05 3.5321505e-05 9.4285714 + 78500 1.3308215e-05 0 2.0868327e-05 2.2286055e-05 3.6687464e-05 9.4285714 + 78600 1.2464718e-05 0 2.2125444e-05 2.1632638e-05 3.6514375e-05 9.4285714 + 78700 1.1997485e-05 0 2.2921785e-05 2.0540202e-05 3.7414398e-05 9.4285714 + 78800 1.1392291e-05 0 2.3031375e-05 1.9112386e-05 3.6604622e-05 9.4285714 + 78900 1.1038293e-05 0 2.4433388e-05 1.880859e-05 3.4809275e-05 9.4285714 + 79000 1.088168e-05 0 2.5692623e-05 1.9715239e-05 3.412374e-05 9.4285714 + 79100 1.0601616e-05 0 2.6511597e-05 2.0775617e-05 3.3361256e-05 9.4285714 + 79200 1.0350859e-05 0 2.5979671e-05 2.0802484e-05 3.2000993e-05 9.4285714 + 79300 9.7669088e-06 0 2.6078647e-05 2.0853061e-05 3.2295433e-05 9.4285714 + 79400 9.5473046e-06 0 2.7497492e-05 2.0827234e-05 3.3689531e-05 9.4285714 + 79500 9.3302639e-06 0 2.7317012e-05 2.0757747e-05 3.3863877e-05 9.4285714 + 79600 9.006607e-06 0 2.665243e-05 2.2203804e-05 3.3704914e-05 9.4285714 + 79700 8.8783739e-06 0 2.5454404e-05 2.2505602e-05 3.3267662e-05 9.4285714 + 79800 9.2670164e-06 0 2.3572503e-05 2.1497708e-05 3.1836215e-05 9.4285714 + 79900 9.4624901e-06 0 2.2490167e-05 2.0761063e-05 3.1063905e-05 9.4285714 + 80000 9.2913775e-06 0 2.2188072e-05 1.9790415e-05 3.0413386e-05 9.4285714 + 80100 9.2204804e-06 0 2.1849441e-05 1.9664212e-05 2.9577952e-05 9.4285714 + 80200 9.1112771e-06 0 2.1546799e-05 1.9799597e-05 2.9060721e-05 9.4285714 + 80300 8.9357495e-06 0 2.117671e-05 1.8740814e-05 2.7738225e-05 9.4285714 + 80400 9.0621063e-06 0 2.0960369e-05 1.8570471e-05 2.6418909e-05 9.4285714 + 80500 9.3137554e-06 0 2.1041109e-05 1.9374997e-05 2.584146e-05 9.4285714 + 80600 9.2731768e-06 0 2.0809488e-05 2.0011353e-05 2.484502e-05 9.4285714 + 80700 9.0811528e-06 0 2.0722964e-05 2.0412376e-05 2.4292261e-05 9.4285714 + 80800 9.3081023e-06 0 1.9997134e-05 2.0157203e-05 2.3235915e-05 9.4285714 + 80900 9.7371259e-06 0 1.9085798e-05 1.9415505e-05 2.2111343e-05 9.4285714 + 81000 9.8235853e-06 0 1.8249579e-05 1.83865e-05 2.1924758e-05 9.4285714 + 81100 9.7794246e-06 0 1.7804803e-05 1.7762047e-05 2.1912969e-05 9.4285714 + 81200 9.8195521e-06 0 1.784124e-05 1.7208377e-05 2.2317538e-05 9.4285714 + 81300 9.8276228e-06 0 1.8175269e-05 1.6598707e-05 2.2561018e-05 9.4285714 + 81400 9.835974e-06 0 1.842253e-05 1.6753807e-05 2.2280935e-05 9.4285714 + 81500 9.6814791e-06 0 1.8882067e-05 1.7085261e-05 2.3077997e-05 9.4285714 + 81600 9.5264203e-06 0 1.9354193e-05 1.6855027e-05 2.3662171e-05 9.4285714 + 81700 9.4995203e-06 0 1.8777588e-05 1.6682343e-05 2.2648301e-05 9.4285714 + 81800 9.2138911e-06 0 1.7805674e-05 1.6815859e-05 2.1853149e-05 9.4285714 + 81900 8.9865042e-06 0 1.710424e-05 1.6320131e-05 2.2059023e-05 9.4285714 + 82000 8.7686497e-06 0 1.6452477e-05 1.6168032e-05 2.2799159e-05 9.4285714 + 82100 8.5361642e-06 0 1.6678933e-05 1.6763963e-05 2.4876051e-05 9.4285714 + 82200 8.0817014e-06 0 1.7494924e-05 1.6959852e-05 2.6660502e-05 9.4285714 + 82300 8.017532e-06 0 1.7707169e-05 1.6820276e-05 2.70571e-05 9.4285714 + 82400 8.4331535e-06 0 1.7498288e-05 1.6434774e-05 2.7250073e-05 9.4285714 + 82500 8.6775268e-06 0 1.7562034e-05 1.6200728e-05 2.7059472e-05 9.4285714 + 82600 8.7105032e-06 0 1.8068671e-05 1.6528428e-05 2.6778931e-05 9.4285714 + 82700 8.7023511e-06 0 1.9047357e-05 1.7070445e-05 2.6510837e-05 9.4285714 + 82800 8.6760089e-06 0 1.9744825e-05 1.8495172e-05 2.5959251e-05 9.4285714 + 82900 8.7035415e-06 0 1.9944061e-05 1.8940404e-05 2.5509284e-05 9.4285714 + 83000 8.6686195e-06 0 1.9409972e-05 1.8066893e-05 2.5055154e-05 9.4285714 + 83100 8.8930733e-06 0 1.8500763e-05 1.7748431e-05 2.4765229e-05 9.4285714 + 83200 9.183272e-06 0 1.7993736e-05 1.7226872e-05 2.515568e-05 9.4285714 + 83300 8.794759e-06 0 1.9521767e-05 1.7581906e-05 2.7294245e-05 9.4285714 + 83400 7.8919819e-06 0 2.1286271e-05 1.8313898e-05 3.0145178e-05 9.4285714 + 83500 7.3611036e-06 0 2.2011282e-05 1.7761285e-05 3.1637707e-05 9.4285714 + 83600 7.3886162e-06 0 2.241376e-05 1.7852504e-05 3.1890147e-05 9.4285714 + 83700 7.5492719e-06 0 2.1923394e-05 1.9030341e-05 3.1129441e-05 9.4285714 + 83800 7.5391515e-06 0 2.1100292e-05 2.0189536e-05 2.9766151e-05 9.4285714 + 83900 7.4528953e-06 0 2.1167488e-05 2.0293223e-05 2.9248415e-05 9.4285714 + 84000 7.3444008e-06 0 2.1321388e-05 1.985356e-05 2.9439591e-05 9.4285714 + 84100 7.294419e-06 0 2.1497494e-05 2.0328581e-05 2.9851159e-05 9.4285714 + 84200 7.2556229e-06 0 2.2356421e-05 2.0734903e-05 3.0680344e-05 9.4285714 + 84300 7.1861638e-06 0 2.2281285e-05 2.0137766e-05 3.0701832e-05 9.4285714 + 84400 7.2421878e-06 0 2.2053202e-05 2.0203929e-05 3.0734527e-05 9.4285714 + 84500 7.1312984e-06 0 2.2181098e-05 2.0494518e-05 3.1259943e-05 9.4285714 + 84600 7.0639247e-06 0 2.1846579e-05 2.0415534e-05 3.1272592e-05 9.4285714 + 84700 6.9970911e-06 0 2.1912939e-05 2.0728162e-05 3.1483503e-05 9.4285714 + 84800 6.7833544e-06 0 2.1838079e-05 2.1083851e-05 3.1615804e-05 9.4285714 + 84900 6.696088e-06 0 2.1251606e-05 2.1404886e-05 3.1055904e-05 9.4285714 + 85000 6.8508026e-06 0 2.1604247e-05 2.1957736e-05 3.0822644e-05 9.4285714 + 85100 7.0149035e-06 0 2.2133425e-05 2.225083e-05 3.0294813e-05 9.4285714 + 85200 6.9651462e-06 0 2.2784248e-05 2.2233831e-05 3.0020651e-05 9.4285714 + 85300 7.0230356e-06 0 2.2960553e-05 2.181369e-05 3.0101629e-05 9.4285714 + 85400 7.2096406e-06 0 2.2670753e-05 2.1279021e-05 2.9421304e-05 9.4285714 + 85500 7.2605887e-06 0 2.2868672e-05 2.1007489e-05 2.8638663e-05 9.4285714 + 85600 7.3183029e-06 0 2.2299861e-05 2.0839905e-05 2.8423112e-05 9.4285714 + 85700 7.3670005e-06 0 2.1544825e-05 2.0667082e-05 2.812385e-05 9.4285714 + 85800 7.2882647e-06 0 2.1233339e-05 2.0588127e-05 2.7913544e-05 9.4285714 + 85900 7.2003978e-06 0 2.0318834e-05 2.0508954e-05 2.7430534e-05 9.4285714 + 86000 7.1315335e-06 0 1.9661231e-05 2.0404432e-05 2.6976168e-05 9.4285714 + 86100 7.0750585e-06 0 1.9767711e-05 2.0804133e-05 2.6762049e-05 9.4285714 + 86200 7.0341386e-06 0 1.9748667e-05 2.1899833e-05 2.6333865e-05 9.4285714 + 86300 7.0621992e-06 0 1.969107e-05 2.2443415e-05 2.5936586e-05 9.4285714 + 86400 7.0494445e-06 0 1.9852895e-05 2.2258942e-05 2.5708929e-05 9.4285714 + 86500 6.8256561e-06 0 2.0536252e-05 2.2334343e-05 2.5959072e-05 9.4285714 + 86600 6.6354092e-06 0 2.1319851e-05 2.2420743e-05 2.6593505e-05 9.4285714 + 86700 5.9502201e-06 0 2.0925216e-05 2.2481441e-05 2.8247753e-05 9.4285714 + 86800 5.0433782e-06 0 2.0868937e-05 2.2456933e-05 2.9780502e-05 9.4285714 + 86900 4.7791085e-06 0 2.1331638e-05 2.203957e-05 2.8996239e-05 9.4285714 + 87000 5.2179655e-06 0 2.1080689e-05 2.1909804e-05 2.8251242e-05 9.4285714 + 87100 5.8865496e-06 0 2.1062246e-05 2.1895473e-05 2.7400298e-05 9.4285714 + 87200 6.0718291e-06 0 2.0638254e-05 2.1764508e-05 2.586378e-05 9.4285714 + 87300 5.9929014e-06 0 2.001027e-05 2.1494448e-05 2.5611661e-05 9.4285714 + 87400 6.1339499e-06 0 2.0010532e-05 2.0883997e-05 2.5511522e-05 9.4285714 + 87500 6.3029072e-06 0 1.9902553e-05 2.0681155e-05 2.531436e-05 9.4285714 + 87600 6.1772463e-06 0 2.051441e-05 2.1678171e-05 2.5834346e-05 9.4285714 + 87700 5.8200423e-06 0 2.1579628e-05 2.2224969e-05 2.6185225e-05 9.4285714 + 87800 5.6493695e-06 0 2.1819144e-05 2.2470168e-05 2.6517709e-05 9.4285714 + 87900 5.465527e-06 0 2.2194561e-05 2.2408607e-05 2.6655838e-05 9.4285714 + 88000 5.4543415e-06 0 2.2471281e-05 2.1557236e-05 2.7004515e-05 9.4285714 + 88100 5.5323837e-06 0 2.2456044e-05 2.1106171e-05 2.7761828e-05 9.4285714 + 88200 5.4963478e-06 0 2.240858e-05 2.1058851e-05 2.8532985e-05 9.4285714 + 88300 5.2815601e-06 0 2.2091591e-05 2.1111869e-05 2.915992e-05 9.4285714 + 88400 4.9454478e-06 0 2.1932139e-05 2.1722939e-05 2.987211e-05 9.4285714 + 88500 4.9243003e-06 0 2.1777236e-05 2.1808198e-05 3.0307574e-05 9.4285714 + 88600 4.9702809e-06 0 2.1823872e-05 2.1395586e-05 3.0738462e-05 9.4285714 + 88700 4.8102932e-06 0 2.2089224e-05 2.155389e-05 3.0606904e-05 9.4285714 + 88800 4.6497905e-06 0 2.2174837e-05 2.1529784e-05 3.0434735e-05 9.4285714 + 88900 4.2490768e-06 0 2.2290407e-05 2.1394443e-05 3.069309e-05 9.4285714 + 89000 3.7406675e-06 0 2.1919483e-05 2.1325379e-05 3.0448828e-05 9.4285714 + 89100 3.4408336e-06 0 2.1777248e-05 2.1220789e-05 2.9986424e-05 9.4285714 + 89200 3.4842643e-06 0 2.1877446e-05 2.1127243e-05 2.9526728e-05 9.4285714 + 89300 3.7134604e-06 0 2.2019849e-05 2.1054862e-05 2.8853298e-05 9.4285714 + 89400 3.8571265e-06 0 2.2187429e-05 2.0956739e-05 2.8321646e-05 9.4285714 + 89500 3.8536004e-06 0 2.1656647e-05 2.0500139e-05 2.7701918e-05 9.4285714 + 89600 3.7115928e-06 0 2.1542247e-05 2.0001398e-05 2.733073e-05 9.4285714 + 89700 3.7955347e-06 0 2.1877115e-05 1.9819842e-05 2.726407e-05 9.4285714 + 89800 3.7849716e-06 0 2.116844e-05 2.014988e-05 2.7000733e-05 9.4285714 + 89900 3.4645398e-06 0 2.0736141e-05 2.0999156e-05 2.6833381e-05 9.4285714 + 90000 3.386906e-06 0 2.1455949e-05 2.1399923e-05 2.6693976e-05 9.4285714 + 90100 3.6353462e-06 0 2.2099428e-05 2.0873464e-05 2.6559161e-05 9.4285714 + 90200 3.6234028e-06 0 2.24652e-05 2.058986e-05 2.6947788e-05 9.4285714 + 90300 3.3058024e-06 0 2.2619641e-05 2.157048e-05 2.6886209e-05 9.4285714 + 90400 3.028682e-06 0 2.2589611e-05 2.2093753e-05 2.654515e-05 9.4285714 + 90500 2.8968918e-06 0 2.2513869e-05 2.1958063e-05 2.6640534e-05 9.4285714 + 90600 2.7822251e-06 0 2.2499733e-05 2.2241335e-05 2.6491637e-05 9.4285714 + 90700 2.6879098e-06 0 2.2719355e-05 2.2105617e-05 2.6728454e-05 9.4285714 + 90800 2.6716599e-06 0 2.2978305e-05 2.1885994e-05 2.6654611e-05 9.4285714 + 90900 2.5961937e-06 0 2.2576732e-05 2.2001322e-05 2.6084793e-05 9.4285714 + 91000 2.524828e-06 0 2.2374063e-05 2.1390562e-05 2.6205589e-05 9.4285714 + 91100 2.5581597e-06 0 2.2179013e-05 2.086611e-05 2.6384727e-05 9.4285714 + 91200 2.5683145e-06 0 2.2017655e-05 2.0892605e-05 2.6345225e-05 9.4285714 + 91300 2.4521274e-06 0 2.2345825e-05 2.1029635e-05 2.6363279e-05 9.4285714 + 91400 2.2077642e-06 0 2.2056e-05 2.1238725e-05 2.614673e-05 9.4285714 + 91500 2.0511098e-06 0 2.1729796e-05 2.1403068e-05 2.6076671e-05 9.4285714 + 91600 2.1041469e-06 0 2.1281714e-05 2.1017236e-05 2.6195529e-05 9.4285714 + 91700 2.1957074e-06 0 2.0532362e-05 2.0472419e-05 2.6477361e-05 9.4285714 + 91800 2.3908373e-06 0 2.0431891e-05 1.9937375e-05 2.6504059e-05 9.4285714 + 91900 2.6555803e-06 0 2.0154083e-05 1.9587738e-05 2.6337683e-05 9.4285714 + 92000 2.7663254e-06 0 1.9576333e-05 1.948033e-05 2.6197279e-05 9.4285714 + 92100 2.667362e-06 0 1.9468577e-05 1.951981e-05 2.6336045e-05 9.4285714 + 92200 2.4659338e-06 0 1.9085472e-05 1.9862633e-05 2.7397223e-05 9.4285714 + 92300 2.2198432e-06 0 1.8870397e-05 2.0001914e-05 2.8190498e-05 9.4285714 + 92400 1.8984686e-06 0 1.8916426e-05 1.9937357e-05 2.8810019e-05 9.4285714 + 92500 1.7198787e-06 0 1.9307633e-05 2.0082631e-05 2.9841954e-05 9.4285714 + 92600 1.694353e-06 0 1.9749783e-05 2.034271e-05 2.993753e-05 9.4285714 + 92700 1.584529e-06 0 1.9915011e-05 2.0781651e-05 2.9700349e-05 9.4285714 + 92800 1.4044343e-06 0 2.0564867e-05 2.1122551e-05 2.945706e-05 9.4285714 + 92900 1.2665053e-06 0 2.1088273e-05 2.1063428e-05 2.8856821e-05 9.4285714 + 93000 1.1706075e-06 0 2.099797e-05 2.086136e-05 2.9038558e-05 9.4285714 + 93100 1.1763625e-06 0 2.1082906e-05 2.0776994e-05 2.9560005e-05 9.4285714 + 93200 1.1100296e-06 0 2.1233131e-05 2.1029529e-05 2.948191e-05 9.4285714 + 93300 1.0476407e-06 0 2.1360185e-05 2.134174e-05 2.9230776e-05 9.4285714 + 93400 1.0023462e-06 0 2.1483262e-05 2.1349561e-05 2.8873944e-05 9.4285714 + 93500 9.3792364e-07 0 2.1460491e-05 2.1416285e-05 2.8341449e-05 9.4285714 + 93600 9.2760609e-07 0 2.1265287e-05 2.1129004e-05 2.7977468e-05 9.4285714 + 93700 8.9890513e-07 0 2.1139643e-05 2.083664e-05 2.7987578e-05 9.4285714 + 93800 8.5455298e-07 0 2.1209061e-05 2.0839422e-05 2.8166541e-05 9.4285714 + 93900 8.5054017e-07 0 2.1167235e-05 2.0685989e-05 2.7873814e-05 9.4285714 + 94000 8.3591156e-07 0 2.1208306e-05 2.0914137e-05 2.746879e-05 9.4285714 + 94100 7.924707e-07 0 2.1468766e-05 2.1308627e-05 2.7302548e-05 9.4285714 + 94200 7.3044151e-07 0 2.1360225e-05 2.1508672e-05 2.6794652e-05 9.4285714 + 94300 6.821312e-07 0 2.1089342e-05 2.1509409e-05 2.6275547e-05 9.4285714 + 94400 6.5371203e-07 0 2.0980296e-05 2.100372e-05 2.5972368e-05 9.4285714 + 94500 6.5161409e-07 0 2.0816179e-05 2.0499481e-05 2.5695015e-05 9.4285714 + 94600 6.5800483e-07 0 2.0826779e-05 2.0346534e-05 2.5705131e-05 9.4285714 + 94700 6.4558289e-07 0 2.0869021e-05 2.0186747e-05 2.5683166e-05 9.4285714 + 94800 6.2905882e-07 0 2.0839355e-05 2.0169366e-05 2.5471349e-05 9.4285714 + 94900 6.0933241e-07 0 2.084934e-05 2.0229522e-05 2.5265751e-05 9.4285714 + 95000 6.0966876e-07 0 2.0632878e-05 2.0250548e-05 2.519609e-05 9.4285714 + 95100 6.2560866e-07 0 2.0430001e-05 2.0444891e-05 2.5257748e-05 9.4285714 + 95200 6.3054915e-07 0 2.031059e-05 2.0620504e-05 2.5410364e-05 9.4285714 + 95300 6.4263069e-07 0 1.999852e-05 2.0652295e-05 2.5423223e-05 9.4285714 + 95400 6.654932e-07 0 1.989867e-05 2.0624783e-05 2.5423088e-05 9.4285714 + 95500 6.8015154e-07 0 1.9870817e-05 2.0431696e-05 2.5500688e-05 9.4285714 + 95600 6.810534e-07 0 1.9774661e-05 2.0292439e-05 2.5553838e-05 9.4285714 + 95700 6.6567852e-07 0 1.9721388e-05 2.0207128e-05 2.5755047e-05 9.4285714 + 95800 6.4797415e-07 0 1.9771399e-05 2.023216e-05 2.5915032e-05 9.4285714 + 95900 6.2884717e-07 0 1.967111e-05 2.0313471e-05 2.5977707e-05 9.4285714 + 96000 6.0337073e-07 0 1.9661756e-05 2.0340062e-05 2.6168446e-05 9.4285714 + 96100 5.9040143e-07 0 1.975692e-05 2.046911e-05 2.6465242e-05 9.4285714 + 96200 5.7802129e-07 0 1.9796237e-05 2.0664824e-05 2.6731604e-05 9.4285714 + 96300 5.5414297e-07 0 1.9784672e-05 2.0829017e-05 2.688432e-05 9.4285714 + 96400 5.4574244e-07 0 1.9840582e-05 2.1008332e-05 2.6925443e-05 9.4285714 + 96500 5.3731885e-07 0 2.0097819e-05 2.1203865e-05 2.7002012e-05 9.4285714 + 96600 4.974724e-07 0 2.0437682e-05 2.1402631e-05 2.716375e-05 9.4285714 + 96700 4.4674948e-07 0 2.0743202e-05 2.1552329e-05 2.7373922e-05 9.4285714 + 96800 4.3263598e-07 0 2.0966425e-05 2.1680258e-05 2.7588497e-05 9.4285714 + 96900 4.4919785e-07 0 2.1055522e-05 2.1828778e-05 2.7776549e-05 9.4285714 + 97000 4.5479534e-07 0 2.1169798e-05 2.1896262e-05 2.8078112e-05 9.4285714 + 97100 4.3548954e-07 0 2.1302757e-05 2.1924869e-05 2.8310152e-05 9.4285714 + 97200 3.9635971e-07 0 2.1453242e-05 2.2056333e-05 2.8453022e-05 9.4285714 + 97300 3.3882521e-07 0 2.1525928e-05 2.2237463e-05 2.8590472e-05 9.4285714 + 97400 2.8835288e-07 0 2.1514713e-05 2.2426042e-05 2.8647779e-05 9.4285714 + 97500 2.7695388e-07 0 2.1440511e-05 2.2522914e-05 2.8737576e-05 9.4285714 + 97600 2.9271716e-07 0 2.1264817e-05 2.244918e-05 2.8860049e-05 9.4285714 + 97700 3.0747638e-07 0 2.1090164e-05 2.228622e-05 2.8844019e-05 9.4285714 + 97800 3.1570767e-07 0 2.1077143e-05 2.212163e-05 2.8831335e-05 9.4285714 + 97900 3.2132516e-07 0 2.1165049e-05 2.198699e-05 2.8747922e-05 9.4285714 + 98000 3.1715511e-07 0 2.121151e-05 2.1856188e-05 2.857762e-05 9.4285714 + 98100 3.0391432e-07 0 2.1184326e-05 2.174681e-05 2.8373195e-05 9.4285714 + 98200 2.9704049e-07 0 2.1105499e-05 2.1706505e-05 2.814912e-05 9.4285714 + 98300 2.9578091e-07 0 2.1068276e-05 2.1748184e-05 2.7935897e-05 9.4285714 + 98400 2.9547597e-07 0 2.1129569e-05 2.1856323e-05 2.7751798e-05 9.4285714 + 98500 3.0367605e-07 0 2.1181799e-05 2.1927592e-05 2.7579261e-05 9.4285714 + 98600 3.2091149e-07 0 2.1134546e-05 2.1885836e-05 2.7344171e-05 9.4285714 + 98700 3.3451563e-07 0 2.1002891e-05 2.1738759e-05 2.7100065e-05 9.4285714 + 98800 3.3707492e-07 0 2.0831894e-05 2.1566143e-05 2.6855406e-05 9.4285714 + 98900 3.342094e-07 0 2.0634792e-05 2.1425153e-05 2.6594469e-05 9.4285714 + 99000 3.2923236e-07 0 2.0469304e-05 2.1316379e-05 2.6392796e-05 9.4285714 + 99100 3.2052048e-07 0 2.0417005e-05 2.1253677e-05 2.6182803e-05 9.4285714 + 99200 3.1336052e-07 0 2.0442549e-05 2.1204812e-05 2.6004085e-05 9.4285714 + 99300 3.1600385e-07 0 2.0483697e-05 2.1161629e-05 2.579731e-05 9.4285714 + 99400 3.2652895e-07 0 2.0498384e-05 2.1136909e-05 2.5555003e-05 9.4285714 + 99500 3.3570572e-07 0 2.0510911e-05 2.1072202e-05 2.53301e-05 9.4285714 + 99600 3.4192547e-07 0 2.0494251e-05 2.0969646e-05 2.513629e-05 9.4285714 + 99700 3.4987655e-07 0 2.0481605e-05 2.0838694e-05 2.5044826e-05 9.4285714 + 99800 3.5945628e-07 0 2.0492649e-05 2.0736961e-05 2.5030449e-05 9.4285714 + 99900 3.6918756e-07 0 2.0467479e-05 2.0690204e-05 2.5033313e-05 9.4285714 + 100000 3.8236718e-07 0 2.0415151e-05 2.0660632e-05 2.5078386e-05 9.4285714 +Loop time of 225.216 on 4 procs for 100000 steps with 2520 atoms + +Performance: 1918160.231 tau/day, 444.019 timesteps/s, 1.119 Matom-step/s +99.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.020345 | 0.85647 | 3.189 | 145.6 | 0.38 +Bond | 198.19 | 201.69 | 203.39 | 14.6 | 89.56 +Neigh | 2.6271 | 2.648 | 2.6681 | 0.9 | 1.18 +Comm | 0.91343 | 1.595 | 2.4363 | 50.1 | 0.71 +Output | 0.092549 | 0.14512 | 0.16805 | 8.0 | 0.06 +Modify | 0.645 | 5.7837 | 18.229 | 299.8 | 2.57 +Other | | 12.49 | | | 5.55 + +Nlocal: 630 ave 2514 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 64.5 ave 252 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Neighs: 2433.75 ave 9731 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 9735 +Ave neighs/atom = 3.8630952 +Ave special neighs/atom = 36.31746 +Neighbor list builds = 4842 +Dangerous builds = 0 +Total wall time: 0:03:45 diff --git a/examples/bpm/pour/log.29Aug2024.bpm.pour.g++.4 b/examples/bpm/pour/log.29Aug2024.bpm.pour.g++.4 deleted file mode 100644 index 6c7de49699..0000000000 --- a/examples/bpm/pour/log.29Aug2024.bpm.pour.g++.4 +++ /dev/null @@ -1,1117 +0,0 @@ -LAMMPS (29 Aug 2024 - Development - patch_29Aug2024-1045-gbcd123c882-modified) -units lj -dimension 3 -boundary m m m -atom_style bpm/sphere -special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 -newton on off -comm_modify vel yes cutoff 3.3 -region box block -15 15 -15 15 0 60.0 -create_box 1 box bond/types 1 extra/bond/per/atom 15 extra/special/per/atom 50 -Created orthogonal box = (-15 -15 0) to (15 15 60) - 1 by 1 by 4 MPI processor grid - -molecule my_mol "rect.mol" -Read molecule template my_mol: -#Made with create_mol.py - 1 molecules - 0 fragments - 63 atoms with max type 1 - 297 bonds with max type 1 - 0 angles with max type 0 - 0 dihedrals with max type 0 - 0 impropers with max type 0 -region wall_cyl cylinder z 0.0 0.0 10.0 EDGE EDGE side in -region dropzone cylinder z 0.0 0.0 10.0 40.0 50.0 side in - -pair_style gran/hertz/history 1.0 NULL 0.5 NULL 0.1 1 -bond_style bpm/rotational break no smooth no -pair_coeff 1 1 -bond_coeff 1 1.0 0.2 0.01 0.01 0.0 0.0 0.0 0.0 0.2 0.04 0.002 0.002 - -compute nbond all nbond/atom -compute tbond all reduce sum c_nbond -compute bond_ids all property/local batom1 batom2 -compute bond_properties all bond/local dist b1 - -compute_modify thermo_temp dynamic/dof yes - -fix 1 all wall/gran hertz/history 1.0 NULL 0.5 NULL 0.1 1 zplane 0.0 NULL -fix 2 all wall/gran/region hertz/history 1.0 NULL 0.5 NULL 0.1 1 region wall_cyl -fix 3 all gravity 1e-4 vector 0 0 -1 -fix 4 all deposit 40 0 1500 712511343 mol my_mol region dropzone near 2.0 vz -0.05 -0.05 -fix 5 all nve/bpm/sphere - -timestep 0.05 -thermo_style custom step ke pe pxx pyy pzz c_tbond -thermo 100 -#dump 1 all custom 500 atomDump id radius x y z c_nbond mol -#dump 2 all local 500 bondDump c_bond_ids[*] c_bond_properties[*] -#dump_modify 2 colname 1 "id1" colname 2 "id2" colname 3 "r" colname 4 "r0" - -run 100000 - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Your simulation uses code contributions which should be cited: - -- BPM bond style: doi:10.1039/D3SM01373A - -@Article{Clemmer2024, - author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, - title = {A soft departure from jamming: the compaction of deformable - granular matter under high pressures}, - journal = {Soft Matter}, - year = 2024, - volume = 20, - number = 8, - pages = {1702--1718} -} - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.3 - ghost atom cutoff = 3.3 - binsize = 0.65, bins = 47 47 93 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair gran/hertz/history, perpetual - attributes: half, newton on, size, history - pair build: half/size/bin/newton - stencil: half/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.515 | 6.515 | 6.515 Mbytes - Step KinEng PotEng Pxx Pyy Pzz c_tbond - 0 -0 0 0 0 0 0 - 100 0.0018406759 0 1.2842737e-05 1.3192741e-05 6.1270887e-06 9.4285714 - 200 0.0026054014 0 -9.5238083e-07 4.4390007e-07 2.276027e-06 9.4285714 - 300 0.0036876407 0 -5.2887136e-06 9.5842023e-06 8.3748245e-07 9.4285714 - 400 0.0060252036 0 2.3582937e-05 1.8361861e-05 1.2642656e-05 9.4285714 - 500 0.0074741299 0 -1.789193e-05 3.8580093e-06 -5.0297601e-06 9.4285714 - 600 0.0078175447 0 3.7847082e-06 1.354617e-05 4.1601826e-06 9.4285714 - 700 0.0075880478 0 3.1036029e-06 1.2109603e-05 4.9483946e-06 9.4285714 - 800 0.0074266449 0 -1.4461829e-05 1.231522e-05 -6.7784934e-06 9.4285714 - 900 0.0075837676 0 1.0006431e-05 1.2964224e-05 8.8504998e-06 9.4285714 - 1000 0.0076126304 0 -6.1355256e-06 1.265311e-05 -2.0447118e-06 9.4285714 - 1100 0.0075597634 0 -5.5773504e-06 1.0844777e-05 -3.2960871e-06 9.4285714 - 1200 0.0075328709 0 7.0782206e-06 1.4050653e-05 8.5204975e-06 9.4285714 - 1300 0.0075974351 0 -4.7397195e-06 8.655509e-06 -3.6821711e-06 9.4285714 - 1400 0.0076539613 0 1.0961299e-06 7.9537258e-06 1.2313306e-06 9.4285714 - 1500 0.0076352731 0 3.6111676e-06 1.3125368e-05 5.3101288e-06 9.4285714 - 1600 0.006006423 0 4.7160229e-06 1.5369588e-05 5.0636281e-06 9.4285714 - 1700 0.0080558565 0 7.8138607e-06 2.5257606e-05 1.2709614e-05 9.4285714 - 1800 0.0087849017 0 4.7097929e-06 1.966114e-05 5.0951652e-07 9.4285714 - 1900 0.0087235023 0 4.7873946e-06 1.8019354e-05 2.2496878e-06 9.4285714 - 2000 0.0087131313 0 6.1634351e-06 2.642983e-05 9.0915635e-06 9.4285714 - 2100 0.008427469 0 5.3623387e-06 2.1009078e-05 5.0556283e-06 9.4285714 - 2200 0.0083345607 0 9.7696141e-06 1.8720631e-05 1.0714556e-05 9.4285714 - 2300 0.0083235047 0 6.1986454e-06 1.9747014e-05 3.9220739e-06 9.4285714 - 2400 0.0082916184 0 5.3395802e-06 1.2889835e-05 6.1613557e-06 9.4285714 - 2500 0.0083652166 0 7.0237704e-06 1.8243183e-05 9.9892969e-06 9.4285714 - 2600 0.0083853283 0 4.1611558e-06 1.8566616e-05 5.5120232e-06 9.4285714 - 2700 0.0083229797 0 4.0701286e-06 1.7705798e-05 8.0682541e-06 9.4285714 - 2800 0.0074176723 0 1.1231842e-05 1.4199577e-05 1.0018115e-05 9.4285714 - 2900 0.0073053678 0 7.9279614e-06 1.2570524e-05 9.674908e-06 9.4285714 - 3000 0.0072005684 0 1.2447603e-05 1.7406357e-05 1.0520344e-05 9.4285714 - 3100 0.0048043541 0 2.89055e-05 2.6265305e-05 1.5509896e-05 9.4285714 - 3200 0.0045874892 0 2.4366752e-05 2.0971746e-05 1.7512311e-05 9.4285714 - 3300 0.00479499 0 6.021348e-06 1.2638208e-05 1.4128913e-05 9.4285714 - 3400 0.0048641255 0 2.1441827e-06 9.1775809e-06 1.2309026e-05 9.4285714 - 3500 0.0048481043 0 3.3249511e-06 1.0477521e-05 1.1741911e-05 9.4285714 - 3600 0.0048035761 0 3.8169024e-06 1.4538411e-05 1.2859132e-05 9.4285714 - 3700 0.0046219191 0 4.4420388e-06 1.0004242e-05 1.4136739e-05 9.4285714 - 3800 0.0046060044 0 7.9607264e-06 9.9082273e-06 1.5708136e-05 9.4285714 - 3900 0.0047638587 0 4.9188998e-06 1.3013033e-05 1.2345204e-05 9.4285714 - 4000 0.0049124607 0 5.6510434e-06 1.0154486e-05 1.8085305e-05 9.4285714 - 4100 0.0047106573 0 8.7061818e-06 1.0447188e-05 1.5757898e-05 9.4285714 - 4200 0.003655308 0 3.3017508e-05 3.8729974e-05 1.4755823e-05 9.4285714 - 4300 0.0032761502 0 2.6270899e-05 2.6447932e-05 2.6415843e-05 9.4285714 - 4400 0.0033725658 0 -4.4338353e-06 -1.8747385e-06 1.268695e-05 9.4285714 - 4500 0.0034856288 0 4.2831181e-06 3.3568464e-06 1.6551102e-05 9.4285714 - 4600 0.0030478282 0 4.6046245e-06 5.3455529e-06 2.3135533e-05 9.4285714 - 4700 0.0031168245 0 -2.3364455e-06 1.744307e-06 6.045743e-06 9.4285714 - 4800 0.0031397141 0 3.3093281e-06 3.9055709e-06 1.3666494e-05 9.4285714 - 4900 0.0030578915 0 6.0355899e-06 8.7494431e-06 1.7257175e-05 9.4285714 - 5000 0.0030452045 0 5.7724451e-06 1.607533e-05 7.5387143e-06 9.4285714 - 5100 0.0030773764 0 7.389729e-06 2.1460966e-05 1.0105443e-05 9.4285714 - 5200 0.0030534891 0 7.3340938e-06 2.0052503e-05 8.0875475e-06 9.4285714 - 5300 0.0030589672 0 6.9554983e-06 1.1388617e-05 1.4195538e-05 9.4285714 - 5400 0.0032172786 0 7.0973329e-06 8.4663931e-06 1.0162238e-05 9.4285714 - 5500 0.0032559194 0 5.3565838e-06 5.1852677e-06 3.4336799e-06 9.4285714 - 5600 0.0031908895 0 4.6499297e-06 2.8091094e-06 1.8285395e-05 9.4285714 - 5700 0.0032642757 0 5.709388e-06 4.8224286e-06 1.6427643e-05 9.4285714 - 5800 0.0030990615 0 8.253728e-06 1.0455638e-06 1.659029e-05 9.4285714 - 5900 0.0026341939 0 8.4035319e-06 2.0755718e-06 4.1054501e-05 9.4285714 - 6000 0.0027655242 0 4.248363e-06 5.4168004e-06 1.9470693e-05 9.4285714 - 6100 0.0026042044 0 3.670903e-06 3.4725767e-06 2.1091794e-05 9.4285714 - 6200 0.0028149804 0 4.721359e-06 -7.2919257e-07 2.3223456e-05 9.4285714 - 6300 0.0027103158 0 -6.2559432e-06 1.1706141e-06 1.7446499e-05 9.4285714 - 6400 0.0034563482 0 1.3811125e-05 3.3362683e-05 3.6303419e-05 9.4285714 - 6500 0.0039685735 0 3.9092295e-06 1.7179813e-05 2.1443394e-05 9.4285714 - 6600 0.0040730075 0 -1.730953e-05 1.0027223e-05 1.9674811e-05 9.4285714 - 6700 0.0040325237 0 1.6130719e-05 2.6480155e-05 3.2469986e-05 9.4285714 - 6800 0.0038015372 0 -9.5613177e-06 7.8642293e-06 1.7383877e-05 9.4285714 - 6900 0.0036803202 0 3.3124034e-06 2.8618724e-05 2.7477522e-05 9.4285714 - 7000 0.0033569979 0 1.6030635e-05 5.6277841e-05 4.9488628e-05 9.4285714 - 7100 0.0032876107 0 -9.0485051e-06 3.6383737e-05 2.8925748e-05 9.4285714 - 7200 0.0033908789 0 1.5638438e-05 2.019761e-05 2.8351014e-05 9.4285714 - 7300 0.0035973172 0 -2.0912017e-06 3.6426312e-05 2.4620627e-05 9.4285714 - 7400 0.0036958962 0 -1.3556805e-05 1.1980602e-06 2.2187656e-05 9.4285714 - 7500 0.0037303282 0 1.019358e-05 5.0014974e-06 2.8719888e-05 9.4285714 - 7600 0.0033149916 0 -2.8759622e-06 1.780461e-05 2.7947196e-05 9.4285714 - 7700 0.0034044865 0 4.9316432e-06 -1.3625503e-06 3.0763568e-05 9.4285714 - 7800 0.0037019149 0 1.1189745e-05 6.7366535e-06 3.4816302e-05 9.4285714 - 7900 0.0040016102 0 8.7286599e-06 6.2720751e-06 3.2812711e-05 9.4285714 - 8000 0.0042965823 0 2.3411444e-05 3.1433134e-06 3.6061346e-05 9.4285714 - 8100 0.0049063753 0 2.7128565e-05 7.8650816e-06 3.9110887e-05 9.4285714 - 8200 0.0053524021 0 2.12025e-05 2.9333857e-07 2.5869295e-05 9.4285714 - 8300 0.0052649528 0 2.829196e-05 7.422076e-06 3.2087371e-05 9.4285714 - 8400 0.0052972403 0 2.7200353e-05 1.1049251e-05 4.289512e-05 9.4285714 - 8500 0.0053915935 0 2.9502963e-05 2.9511501e-06 1.6795137e-05 9.4285714 - 8600 0.0053485581 0 3.3169978e-05 5.1868554e-06 2.9428884e-05 9.4285714 - 8700 0.0053414432 0 2.5011908e-05 -1.1061007e-06 4.2577101e-05 9.4285714 - 8800 0.0054352149 0 2.9763406e-05 -1.4099082e-06 1.8442013e-05 9.4285714 - 8900 0.0054817226 0 3.5732941e-05 1.2926928e-06 2.5512543e-05 9.4285714 - 9000 0.0054728461 0 2.7669858e-05 -1.8779558e-06 2.9398806e-05 9.4285714 - 9100 0.0048751494 0 2.6241102e-05 7.2474601e-07 3.5364646e-05 9.4285714 - 9200 0.0049235623 0 3.1465366e-05 1.8587675e-06 3.6884994e-05 9.4285714 - 9300 0.0049408639 0 3.0163037e-05 4.7937501e-06 2.2278557e-05 9.4285714 - 9400 0.0047722286 0 3.0651769e-05 2.0118875e-06 3.8611885e-05 9.4285714 - 9500 0.004531602 0 3.0764127e-05 3.0365718e-06 4.2239782e-05 9.4285714 - 9600 0.0044175792 0 1.6872324e-05 6.3060434e-06 3.5262607e-05 9.4285714 - 9700 0.0044167782 0 2.1136761e-05 5.018754e-06 4.6071459e-05 9.4285714 - 9800 0.0045545638 0 1.9049762e-05 2.4071844e-08 4.8968051e-05 9.4285714 - 9900 0.0047725617 0 3.8862098e-07 -9.2384823e-07 4.5715335e-05 9.4285714 - 10000 0.0047366384 0 9.9108305e-06 8.6495895e-06 3.7838372e-05 9.4285714 - 10100 0.0045925429 0 1.6501456e-05 9.7018497e-06 5.9118233e-05 9.4285714 - 10200 0.0045829044 0 2.3104532e-05 1.0151386e-05 5.5272533e-05 9.4285714 - 10300 0.0044545165 0 3.6515058e-05 2.122633e-05 4.0700397e-05 9.4285714 - 10400 0.0041971922 0 5.0801964e-05 8.0635585e-06 5.6192525e-05 9.4285714 - 10500 0.0042997418 0 3.4801704e-05 1.6066531e-05 5.1783335e-05 9.4285714 - 10600 0.0045718981 0 1.4755359e-06 1.5228806e-05 5.7583702e-05 9.4285714 - 10700 0.0054414967 0 3.999002e-06 8.4499806e-06 5.5171884e-05 9.4285714 - 10800 0.0056085076 0 2.8633627e-06 6.20922e-05 6.0022516e-05 9.4285714 - 10900 0.0052604017 0 5.877959e-06 7.9455011e-05 6.2139123e-05 9.4285714 - 11000 0.0053082441 0 9.1658522e-06 3.4007617e-05 4.2130515e-05 9.4285714 - 11100 0.0051714794 0 -3.1065631e-06 3.1123238e-05 3.7584396e-05 9.4285714 - 11200 0.0051148957 0 1.7374829e-06 5.4777942e-05 4.1123475e-05 9.4285714 - 11300 0.0053229225 0 7.3698463e-06 2.7007909e-05 4.1734231e-05 9.4285714 - 11400 0.0053758011 0 4.5797202e-06 1.1387222e-05 3.8484692e-05 9.4285714 - 11500 0.0051526414 0 2.9815496e-06 4.0393593e-05 4.3663943e-05 9.4285714 - 11600 0.0050898777 0 9.2528053e-06 4.6193681e-05 3.9414289e-05 9.4285714 - 11700 0.0052834511 0 3.6915941e-06 1.5583056e-05 4.2291524e-05 9.4285714 - 11800 0.0053705655 0 5.0167866e-06 1.7777568e-05 5.2655103e-05 9.4285714 - 11900 0.005038774 0 7.9846192e-06 5.1767433e-05 5.2516309e-05 9.4285714 - 12000 0.0049088358 0 1.3229998e-05 3.8692056e-05 5.4513873e-05 9.4285714 - 12100 0.0047131753 0 1.2151329e-05 1.5646141e-05 5.6905538e-05 9.4285714 - 12200 0.0047612378 0 7.2037098e-06 2.3541684e-05 5.1618792e-05 9.4285714 - 12300 0.0045291737 0 6.104216e-06 4.762899e-05 4.2697528e-05 9.4285714 - 12400 0.0046419825 0 1.61855e-05 4.0805231e-05 6.3641318e-05 9.4285714 - 12500 0.0047344433 0 2.4764754e-06 1.8802629e-05 4.8520155e-05 9.4285714 - 12600 0.0045536662 0 4.4271877e-06 5.2628041e-05 5.2207058e-05 9.4285714 - 12700 0.0041503561 0 1.6357247e-05 6.4219786e-05 7.1176195e-05 9.4285714 - 12800 0.0040016029 0 1.1879602e-05 2.3353654e-05 5.6103249e-05 9.4285714 - 12900 0.004171103 0 9.7673848e-06 1.1371969e-05 5.7698324e-05 9.4285714 - 13000 0.0042998958 0 3.1783984e-06 -1.9279498e-06 4.7565927e-05 9.4285714 - 13100 0.0044022014 0 5.5668891e-06 1.393307e-05 5.0604817e-05 9.4285714 - 13200 0.004355277 0 1.0149489e-05 2.4470591e-05 1.8274094e-05 9.4285714 - 13300 0.00450282 0 1.9030821e-06 1.2227582e-05 4.1965075e-05 9.4285714 - 13400 0.0045092683 0 2.9859349e-06 2.1014692e-05 4.8962971e-05 9.4285714 - 13500 0.0041619694 0 7.7977801e-06 2.9009145e-05 4.2163221e-05 9.4285714 - 13600 0.0036824743 0 1.6182689e-05 2.5555515e-05 5.5692705e-05 9.4285714 - 13700 0.0034193768 0 7.2162797e-06 1.4255376e-05 7.2093853e-05 9.4285714 - 13800 0.0036164855 0 5.3843232e-06 3.9591399e-05 7.0739752e-05 9.4285714 - 13900 0.0038578089 0 1.4313784e-05 1.7378028e-05 4.5907547e-05 9.4285714 - 14000 0.0044935876 0 2.5495441e-05 1.0141425e-05 4.5846529e-05 9.4285714 - 14100 0.0046832712 0 9.1104149e-06 1.8529163e-05 5.4273779e-05 9.4285714 - 14200 0.0044686568 0 1.6934692e-05 1.9350858e-05 6.4902787e-05 9.4285714 - 14300 0.004479708 0 2.3124792e-05 3.6035361e-05 5.6198632e-05 9.4285714 - 14400 0.0046304597 0 1.3511672e-05 5.7385237e-06 4.6890692e-05 9.4285714 - 14500 0.0046647072 0 9.4307276e-06 1.0367238e-05 5.0773988e-05 9.4285714 - 14600 0.004501411 0 1.3956753e-05 2.9384019e-05 6.0183e-05 9.4285714 - 14700 0.004342392 0 2.3511793e-05 2.5269096e-05 6.2266367e-05 9.4285714 - 14800 0.0041117854 0 2.7295081e-05 2.8828313e-05 4.893365e-05 9.4285714 - 14900 0.0038091078 0 2.5620881e-05 3.9233141e-05 6.2321946e-05 9.4285714 - 15000 0.0037323488 0 3.2540975e-05 3.920845e-05 7.1140798e-05 9.4285714 - 15100 0.0039478757 0 4.5419989e-05 1.769503e-05 6.4596906e-05 9.4285714 - 15200 0.00467894 0 1.7092964e-05 1.3667883e-05 6.1202598e-05 9.4285714 - 15300 0.0049365228 0 3.6248068e-05 1.3488388e-05 7.0851898e-05 9.4285714 - 15400 0.004877392 0 4.767314e-05 2.597402e-05 5.529912e-05 9.4285714 - 15500 0.0049573148 0 3.7779933e-05 1.9140403e-05 6.116208e-05 9.4285714 - 15600 0.0049927433 0 2.0560768e-05 1.8251382e-05 6.0988289e-05 9.4285714 - 15700 0.0048703913 0 3.3189927e-05 2.160701e-05 6.4055442e-05 9.4285714 - 15800 0.0046293835 0 6.2944952e-05 1.8863222e-05 7.8874809e-05 9.4285714 - 15900 0.0044328498 0 3.5627449e-05 2.5340865e-05 0.00012458268 9.4285714 - 16000 0.004528302 0 2.8554904e-05 1.8623497e-05 0.00010924446 9.4285714 - 16100 0.0045247349 0 4.4396368e-05 1.8292407e-05 5.7642082e-05 9.4285714 - 16200 0.0045236352 0 3.0387021e-05 1.7555075e-05 5.4919568e-05 9.4285714 - 16300 0.0046088719 0 1.7967935e-05 2.044582e-05 5.0372645e-05 9.4285714 - 16400 0.0043337401 0 5.4381937e-05 1.5302671e-05 6.250539e-05 9.4285714 - 16500 0.0042687717 0 4.8872403e-05 1.2851863e-05 7.5358534e-05 9.4285714 - 16600 0.0039673921 0 7.0455035e-06 3.1074749e-05 5.9409944e-05 9.4285714 - 16700 0.0039819976 0 4.0095618e-05 1.2175972e-05 7.531403e-05 9.4285714 - 16800 0.0040030294 0 1.6647469e-05 2.3871103e-05 7.1682472e-05 9.4285714 - 16900 0.0039453757 0 1.3492698e-05 3.6847549e-05 5.9312859e-05 9.4285714 - 17000 0.0040422183 0 4.3781676e-05 1.908762e-05 6.4893015e-05 9.4285714 - 17100 0.0042850054 0 1.7326749e-05 6.1383562e-05 7.2513048e-05 9.4285714 - 17200 0.0043992382 0 1.7726582e-05 2.6471964e-05 6.6950628e-05 9.4285714 - 17300 0.0044284607 0 2.9699481e-05 3.725102e-05 5.4556058e-05 9.4285714 - 17400 0.0043496384 0 2.0535337e-05 2.9446559e-05 5.6131214e-05 9.4285714 - 17500 0.0041364123 0 7.5867295e-05 2.6195015e-05 6.5687048e-05 9.4285714 - 17600 0.0043163506 0 3.3078885e-05 3.8960282e-05 4.7978657e-05 9.4285714 - 17700 0.0042848109 0 1.8757206e-05 2.1841254e-05 2.503573e-05 9.4285714 - 17800 0.0042690741 0 6.6596452e-05 4.8301029e-05 5.0141884e-05 9.4285714 - 17900 0.0043341866 0 1.1220588e-05 3.1803304e-05 3.2237681e-05 9.4285714 - 18000 0.0035849989 0 3.2191699e-05 2.0254501e-05 3.5691091e-05 9.4285714 - 18100 0.0033744551 0 4.6704352e-05 4.6728596e-05 4.6116181e-05 9.4285714 - 18200 0.003324376 0 1.7222589e-05 2.8972869e-05 4.6692246e-05 9.4285714 - 18300 0.003443015 0 3.3708783e-05 4.0578071e-05 4.1304156e-05 9.4285714 - 18400 0.0034771941 0 1.9020433e-05 2.178227e-05 2.9481174e-05 9.4285714 - 18500 0.0034547284 0 1.0445159e-05 1.6107453e-05 4.0891808e-05 9.4285714 - 18600 0.0033938539 0 2.4916162e-05 4.6313484e-05 3.9147806e-05 9.4285714 - 18700 0.0034939014 0 6.7473151e-06 2.419571e-05 3.4096388e-05 9.4285714 - 18800 0.0035298107 0 9.2615938e-06 2.0435624e-05 4.0027701e-05 9.4285714 - 18900 0.0034538446 0 1.9667538e-05 3.4856249e-05 4.0535345e-05 9.4285714 - 19000 0.0034539236 0 6.0689241e-06 3.1626714e-05 4.2237034e-05 9.4285714 - 19100 0.0035174783 0 1.2903682e-05 2.9365824e-05 4.3881457e-05 9.4285714 - 19200 0.0033445131 0 2.5194723e-05 2.7839851e-05 3.3595747e-05 9.4285714 - 19300 0.0028023352 0 3.9299467e-05 3.421431e-05 3.6811429e-05 9.4285714 - 19400 0.0028277692 0 5.0485519e-05 3.8839168e-05 5.1436409e-05 9.4285714 - 19500 0.0030224983 0 -3.0877104e-06 2.3878903e-05 4.021401e-05 9.4285714 - 19600 0.0029078482 0 1.3861201e-05 2.0586401e-05 4.0794975e-05 9.4285714 - 19700 0.0028081549 0 2.8760708e-05 3.772136e-05 6.7202136e-05 9.4285714 - 19800 0.0026851731 0 1.3931802e-05 2.3860731e-05 4.7388853e-05 9.4285714 - 19900 0.0026975277 0 3.4791835e-05 2.5427085e-05 5.4413472e-05 9.4285714 - 20000 0.0026687893 0 1.6822937e-05 3.9225833e-05 5.6980824e-05 9.4285714 - 20100 0.0026330898 0 1.1031642e-05 2.2844628e-05 4.2104562e-05 9.4285714 - 20200 0.0026679077 0 2.3881008e-05 2.2455096e-05 5.500639e-05 9.4285714 - 20300 0.0026289936 0 9.4168874e-06 1.9492641e-05 2.7106714e-05 9.4285714 - 20400 0.0026753194 0 1.7136984e-05 2.4020701e-05 4.2640066e-05 9.4285714 - 20500 0.0026964569 0 1.6969094e-05 3.0883636e-05 6.0287458e-05 9.4285714 - 20600 0.0026269439 0 9.6646122e-06 2.8909527e-05 4.9243574e-05 9.4285714 - 20700 0.0026201713 0 1.9068877e-05 3.6242157e-05 6.7510183e-05 9.4285714 - 20800 0.0026363656 0 1.3051409e-05 2.8567791e-05 5.9242441e-05 9.4285714 - 20900 0.0026284811 0 1.5045945e-05 2.4293652e-05 4.6903807e-05 9.4285714 - 21000 0.0026298958 0 2.4962817e-05 3.1540396e-05 5.4680405e-05 9.4285714 - 21100 0.002604006 0 2.7578851e-05 3.1380626e-05 5.8067042e-05 9.4285714 - 21200 0.0027927517 0 3.1845898e-05 3.2007867e-05 6.3361581e-05 9.4285714 - 21300 0.0029464871 0 3.197127e-05 2.9654558e-05 4.1022177e-05 9.4285714 - 21400 0.0029674816 0 2.6486572e-05 2.0325981e-05 3.7670362e-05 9.4285714 - 21500 0.002912776 0 3.5552261e-05 2.7419521e-05 5.5226397e-05 9.4285714 - 21600 0.0029212892 0 3.4940001e-05 2.9678696e-05 4.1148653e-05 9.4285714 - 21700 0.0028936576 0 2.8733596e-05 9.7531127e-06 3.7294738e-05 9.4285714 - 21800 0.0028981796 0 3.1017838e-05 2.6444029e-05 5.2821294e-05 9.4285714 - 21900 0.002968785 0 1.9867243e-05 2.2082759e-05 3.9817653e-05 9.4285714 - 22000 0.0029604007 0 1.7428713e-05 8.7224328e-06 3.6979721e-05 9.4285714 - 22100 0.0029222376 0 2.3025841e-05 2.861972e-05 5.2686893e-05 9.4285714 - 22200 0.0029471754 0 1.8465043e-05 2.3715222e-05 4.6426097e-05 9.4285714 - 22300 0.0029823066 0 1.2807162e-05 1.7072316e-05 4.8354244e-05 9.4285714 - 22400 0.0029412962 0 1.6465914e-05 2.347325e-05 5.6917929e-05 9.4285714 - 22500 0.0028655139 0 2.2182748e-05 2.8248379e-05 5.5210541e-05 9.4285714 - 22600 0.0027709226 0 1.8330383e-05 4.5796728e-05 8.9424893e-05 9.4285714 - 22700 0.0028335444 0 1.0794836e-05 1.5620726e-05 7.9801128e-05 9.4285714 - 22800 0.0030243092 0 1.7915933e-05 3.2888516e-05 6.5184341e-05 9.4285714 - 22900 0.0031287494 0 2.0074168e-05 4.0303447e-05 5.396891e-05 9.4285714 - 23000 0.003048872 0 1.075768e-05 2.4000183e-05 6.5941388e-05 9.4285714 - 23100 0.0027838253 0 2.2866446e-05 2.3320252e-05 0.00015840066 9.4285714 - 23200 0.0029031692 0 2.7371814e-05 2.683469e-05 0.00011397097 9.4285714 - 23300 0.0029059127 0 2.2202618e-05 2.8777361e-05 2.1259229e-05 9.4285714 - 23400 0.0029582597 0 2.2700584e-05 1.6282524e-05 7.6538142e-05 9.4285714 - 23500 0.0029521383 0 2.6859026e-05 2.2932873e-05 4.0941095e-05 9.4285714 - 23600 0.0029228867 0 2.4875138e-05 2.7804937e-05 2.8934466e-05 9.4285714 - 23700 0.0028943096 0 1.9718571e-05 1.4993543e-05 7.5133746e-05 9.4285714 - 23800 0.0029111728 0 2.4710626e-05 1.279522e-05 2.6813271e-05 9.4285714 - 23900 0.0029743263 0 2.3073352e-05 2.1115768e-05 4.3417285e-05 9.4285714 - 24000 0.0029355354 0 2.1277639e-05 2.586278e-05 5.5266393e-05 9.4285714 - 24100 0.0029425744 0 3.2172061e-05 4.3513795e-05 4.8639202e-05 9.4285714 - 24200 0.0032349673 0 3.8101771e-05 6.7292467e-05 0.0001190773 9.4285714 - 24300 0.0034153051 0 3.4075318e-05 6.6839985e-05 0.00013642068 9.4285714 - 24400 0.0034558648 0 3.1647065e-05 6.0821256e-05 7.203515e-05 9.4285714 - 24500 0.0035254928 0 3.019316e-05 6.4864759e-05 6.2608529e-05 9.4285714 - 24600 0.0034129673 0 4.465623e-05 3.4278486e-05 4.4270355e-05 9.4285714 - 24700 0.0032950508 0 2.8086189e-05 3.7647476e-05 5.6217167e-05 9.4285714 - 24800 0.0031179674 0 4.376804e-05 6.4837034e-05 6.5034414e-05 9.4285714 - 24900 0.0030993997 0 3.5972925e-05 5.4258179e-05 6.1953835e-05 9.4285714 - 25000 0.003166692 0 1.7121966e-05 5.4520195e-05 3.4905587e-05 9.4285714 - 25100 0.0031258131 0 3.9987619e-05 3.5030482e-05 7.1147285e-05 9.4285714 - 25200 0.0031053643 0 2.158721e-05 3.011678e-05 2.2839818e-05 9.4285714 - 25300 0.0030425175 0 3.5836353e-05 4.8994542e-05 4.2361866e-05 9.4285714 - 25400 0.0030697508 0 3.4532992e-05 3.5394575e-05 7.7662436e-05 9.4285714 - 25500 0.0030265652 0 1.2788641e-05 3.456828e-05 1.8632765e-05 9.4285714 - 25600 0.0027854019 0 3.6160824e-05 4.9326634e-05 3.4903881e-05 9.4285714 - 25700 0.0028863761 0 3.840907e-05 4.1429963e-05 7.011236e-05 9.4285714 - 25800 0.0030375994 0 1.1848635e-05 5.6471514e-05 8.5822151e-05 9.4285714 - 25900 0.0033244234 0 2.6175192e-05 6.2309979e-05 8.3432675e-05 9.4285714 - 26000 0.0032704519 0 2.3370636e-05 6.0648401e-05 5.2281928e-05 9.4285714 - 26100 0.0032524997 0 3.6328695e-05 7.3664927e-05 7.8937335e-05 9.4285714 - 26200 0.0030450557 0 1.8263791e-05 4.6620677e-05 4.5818953e-05 9.4285714 - 26300 0.0030253351 0 2.8774136e-05 5.4096161e-05 5.4812315e-05 9.4285714 - 26400 0.0029455796 0 4.4417916e-05 6.0172227e-05 6.0149768e-05 9.4285714 - 26500 0.0028372947 0 -2.0730073e-06 4.7335202e-05 2.3269097e-05 9.4285714 - 26600 0.0029562991 0 2.070073e-05 5.6966531e-05 9.3985132e-05 9.4285714 - 26700 0.0030361889 0 5.7796002e-06 4.6360033e-05 4.3035903e-05 9.4285714 - 26800 0.0028356261 0 3.3174559e-06 3.5846145e-05 2.2735238e-05 9.4285714 - 26900 0.0027324168 0 4.2939853e-05 5.5772402e-05 0.00010805685 9.4285714 - 27000 0.0027044867 0 7.8667443e-06 3.4991619e-05 4.0072467e-05 9.4285714 - 27100 0.0027499364 0 1.674757e-05 3.6711387e-05 6.6791962e-05 9.4285714 - 27200 0.0029250481 0 2.8155772e-05 4.2978943e-05 9.6473699e-05 9.4285714 - 27300 0.0030158344 0 1.3970557e-05 4.8436237e-05 2.4882137e-05 9.4285714 - 27400 0.0032437671 0 3.667415e-05 6.1044185e-05 9.0533929e-05 9.4285714 - 27500 0.0033991773 0 3.3791012e-05 5.2560616e-05 5.2567118e-05 9.4285714 - 27600 0.0033755497 0 2.6601154e-05 5.4840839e-05 2.4778685e-05 9.4285714 - 27700 0.003341232 0 3.5163367e-05 6.1738936e-05 9.6411856e-05 9.4285714 - 27800 0.0033359321 0 3.6419649e-05 6.0233228e-05 3.6462476e-05 9.4285714 - 27900 0.0031467882 0 4.7281738e-05 7.3131877e-05 6.2080263e-05 9.4285714 - 28000 0.0030039755 0 3.3085654e-05 6.7467092e-05 9.0186854e-05 9.4285714 - 28100 0.0029442723 0 2.7184194e-05 4.3266302e-05 3.7188839e-05 9.4285714 - 28200 0.0030644278 0 3.3666048e-05 4.89101e-05 7.5088002e-05 9.4285714 - 28300 0.0028827994 0 2.6674012e-05 6.5020248e-05 4.7900086e-05 9.4285714 - 28400 0.0026614407 0 3.0428743e-05 7.4752674e-05 6.39704e-05 9.4285714 - 28500 0.0027765045 0 2.8174749e-05 5.096122e-05 5.1669328e-05 9.4285714 - 28600 0.0030152691 0 3.4100234e-05 3.4660136e-05 5.8784917e-06 9.4285714 - 28700 0.0033309751 0 5.9203687e-05 3.8696406e-05 5.458022e-05 9.4285714 - 28800 0.0031989581 0 5.1614625e-05 4.616862e-05 6.6601563e-05 9.4285714 - 28900 0.0031151751 0 5.1465877e-05 4.0566825e-05 6.3555446e-05 9.4285714 - 29000 0.003089706 0 5.8452412e-05 4.0068825e-05 6.6735272e-05 9.4285714 - 29100 0.0030529555 0 3.05057e-05 4.5172836e-05 5.2640638e-05 9.4285714 - 29200 0.0028957496 0 6.647284e-05 3.4622222e-05 8.8937577e-05 9.4285714 - 29300 0.0029588155 0 6.3904028e-05 2.3006184e-05 6.4583725e-05 9.4285714 - 29400 0.0029889131 0 2.2230884e-05 2.3139347e-05 6.0516718e-05 9.4285714 - 29500 0.0029388631 0 7.3295891e-05 4.5005748e-05 7.6512988e-05 9.4285714 - 29600 0.0027740662 0 5.6213825e-05 9.9266881e-06 6.7177696e-05 9.4285714 - 29700 0.0026955305 0 5.2321745e-05 1.9264846e-05 5.7946132e-05 9.4285714 - 29800 0.0027025528 0 9.3402593e-05 2.4652423e-05 6.265756e-05 9.4285714 - 29900 0.0026965517 0 3.5522889e-05 1.3150417e-05 6.8882458e-05 9.4285714 - 30000 0.0027512162 0 6.9903581e-05 5.3093763e-05 7.4585465e-05 9.4285714 - 30100 0.0027653321 0 5.2114669e-05 5.8309368e-05 8.6657127e-05 9.4285714 - 30200 0.0027252764 0 2.5562279e-05 3.6691671e-05 6.1597617e-05 9.4285714 - 30300 0.002762022 0 7.3522187e-05 5.9543426e-05 6.1414296e-05 9.4285714 - 30400 0.0028136672 0 2.3623954e-05 2.8735471e-05 6.4297095e-05 9.4285714 - 30500 0.0027741385 0 3.4073413e-05 2.9952486e-05 5.2135446e-05 9.4285714 - 30600 0.0026774151 0 8.2053427e-05 5.3495062e-05 6.1894922e-05 9.4285714 - 30700 0.002382759 0 8.9621432e-05 4.1140036e-05 5.7369718e-05 9.4285714 - 30800 0.0023050315 0 6.0265486e-05 4.5265038e-05 6.7561108e-05 9.4285714 - 30900 0.0023526912 0 6.2348183e-05 3.8610724e-05 5.6183525e-05 9.4285714 - 31000 0.0024037159 0 3.060603e-05 2.1183409e-05 4.8509428e-05 9.4285714 - 31100 0.0024205525 0 1.4541393e-05 4.0296696e-05 4.0624138e-05 9.4285714 - 31200 0.002479098 0 2.65321e-05 2.5543962e-05 5.2920997e-05 9.4285714 - 31300 0.0024549881 0 2.2457425e-05 2.5817816e-05 2.2618345e-05 9.4285714 - 31400 0.0024174905 0 2.8411091e-05 4.6323026e-05 2.742185e-05 9.4285714 - 31500 0.0023657867 0 4.0418758e-05 2.901528e-05 6.6833788e-05 9.4285714 - 31600 0.0023350557 0 4.8383998e-05 4.293807e-05 6.3690065e-05 9.4285714 - 31700 0.0023542614 0 4.0385719e-05 3.7515825e-05 7.4201666e-05 9.4285714 - 31800 0.0022486008 0 4.1963334e-05 4.4781906e-05 9.0390115e-05 9.4285714 - 31900 0.0021107741 0 4.3303725e-05 8.3980448e-05 9.4747474e-05 9.4285714 - 32000 0.0021409832 0 3.4424967e-05 4.9593168e-05 7.3387421e-05 9.4285714 - 32100 0.002112582 0 4.7321632e-05 5.6435933e-05 7.7418185e-05 9.4285714 - 32200 0.0021181679 0 4.5619956e-05 5.4866557e-05 8.8283379e-05 9.4285714 - 32300 0.0021725432 0 1.9405944e-05 1.7827062e-05 6.5588249e-05 9.4285714 - 32400 0.002155614 0 9.77053e-06 3.906653e-05 6.2711643e-05 9.4285714 - 32500 0.0020913829 0 3.0949029e-05 3.2112083e-05 6.4933997e-05 9.4285714 - 32600 0.0021150191 0 3.3154279e-05 2.2091201e-05 7.2286108e-05 9.4285714 - 32700 0.0021451254 0 1.2183567e-05 3.858576e-05 7.4937884e-05 9.4285714 - 32800 0.0020237876 0 2.5929013e-05 2.374572e-05 5.7803736e-05 9.4285714 - 32900 0.0018430119 0 4.4815874e-05 3.7026303e-05 6.3135552e-05 9.4285714 - 33000 0.001740025 0 5.0536575e-05 3.6552583e-05 8.1299772e-05 9.4285714 - 33100 0.001850659 0 1.7289313e-05 2.4296393e-05 7.4344406e-05 9.4285714 - 33200 0.0019069567 0 2.8383197e-05 2.545114e-05 5.1689294e-05 9.4285714 - 33300 0.0018991164 0 5.3200864e-05 2.9076164e-05 5.8744953e-05 9.4285714 - 33400 0.0019290637 0 3.0752441e-05 2.1315269e-05 5.2584662e-05 9.4285714 - 33500 0.0019834442 0 2.9456567e-05 2.3256078e-05 3.5779121e-05 9.4285714 - 33600 0.0019565002 0 2.5217029e-05 2.2677295e-05 5.6496298e-05 9.4285714 - 33700 0.0018575375 0 2.821171e-05 2.0403816e-05 6.2551543e-05 9.4285714 - 33800 0.0018887919 0 2.6929853e-05 3.3889941e-05 6.0934332e-05 9.4285714 - 33900 0.0019353541 0 8.384222e-06 2.365232e-05 5.2177522e-05 9.4285714 - 34000 0.0018764353 0 2.8643415e-05 1.9409741e-05 5.0765557e-05 9.4285714 - 34100 0.0018406672 0 4.0233194e-05 3.3990188e-05 6.13824e-05 9.4285714 - 34200 0.0018900768 0 1.5846665e-05 2.4168382e-05 4.5389662e-05 9.4285714 - 34300 0.0019127939 0 2.7748442e-05 1.6511224e-05 3.7366391e-05 9.4285714 - 34400 0.0018996098 0 2.9191353e-05 1.896553e-05 5.3487603e-05 9.4285714 - 34500 0.0018825592 0 1.866335e-05 1.9347641e-05 5.1453414e-05 9.4285714 - 34600 0.0018729661 0 3.5547556e-05 3.7123705e-05 6.8952045e-05 9.4285714 - 34700 0.0018508656 0 3.9275598e-05 3.2698716e-05 7.9564684e-05 9.4285714 - 34800 0.0018146827 0 4.8101818e-05 1.9935529e-05 6.2366778e-05 9.4285714 - 34900 0.0017427349 0 5.8017525e-05 2.8778292e-05 8.1697529e-05 9.4285714 - 35000 0.0017514892 0 4.3069739e-05 1.0742082e-05 8.686099e-05 9.4285714 - 35100 0.0016552485 0 2.7806181e-05 6.0559071e-06 6.7244873e-05 9.4285714 - 35200 0.0015221994 0 4.1590056e-05 4.5313058e-05 9.6370975e-05 9.4285714 - 35300 0.0015315851 0 1.9506433e-05 2.4700328e-05 6.6583926e-05 9.4285714 - 35400 0.00158809 0 1.598001e-05 1.362832e-05 5.5220566e-05 9.4285714 - 35500 0.0015914104 0 3.5008197e-05 2.3856051e-05 8.2330414e-05 9.4285714 - 35600 0.001565483 0 2.6440925e-05 1.8005684e-05 6.084583e-05 9.4285714 - 35700 0.001571479 0 2.6919893e-05 2.5244538e-05 5.3346479e-05 9.4285714 - 35800 0.001571655 0 1.1813324e-05 1.8804279e-05 7.1799089e-05 9.4285714 - 35900 0.0015263597 0 1.759118e-05 1.9915199e-05 7.7600393e-05 9.4285714 - 36000 0.0014257136 0 2.1964044e-05 4.327892e-05 8.5323153e-05 9.4285714 - 36100 0.0014617841 0 1.8296209e-05 3.7253493e-05 6.5934539e-05 9.4285714 - 36200 0.0016033662 0 3.1342381e-05 2.1968676e-05 7.7572239e-05 9.4285714 - 36300 0.0016273885 0 1.3210354e-05 3.3088408e-05 7.3360746e-05 9.4285714 - 36400 0.001862934 0 2.262698e-05 4.4262761e-05 7.3251945e-05 9.4285714 - 36500 0.0019494493 0 1.4107819e-05 4.1171949e-05 5.4901336e-05 9.4285714 - 36600 0.0018953399 0 9.8679977e-06 4.3238901e-05 5.971232e-05 9.4285714 - 36700 0.0018409505 0 2.6783499e-05 3.9781779e-05 6.9249517e-05 9.4285714 - 36800 0.0018940846 0 1.3701003e-05 4.258314e-05 3.6849223e-05 9.4285714 - 36900 0.0019312011 0 6.8081135e-06 3.9322831e-05 4.4692334e-05 9.4285714 - 37000 0.0018848971 0 2.2438749e-05 2.6801011e-05 5.7182853e-05 9.4285714 - 37100 0.0018577956 0 2.0496208e-05 3.9862599e-05 5.8943261e-05 9.4285714 - 37200 0.0017303772 0 8.5763161e-06 4.1761678e-05 6.1854001e-05 9.4285714 - 37300 0.0016211525 0 1.5769353e-05 8.6262611e-06 4.6250651e-05 9.4285714 - 37400 0.0015754306 0 3.3022684e-05 3.8367443e-05 7.1019436e-05 9.4285714 - 37500 0.0015691406 0 2.0349234e-05 4.878697e-05 9.2676001e-05 9.4285714 - 37600 0.0015775583 0 1.5362628e-05 2.437589e-05 8.0842202e-05 9.4285714 - 37700 0.0016543347 0 4.335544e-05 3.6582121e-05 8.6191322e-05 9.4285714 - 37800 0.0016215571 0 2.2281322e-05 3.5787505e-05 7.382495e-05 9.4285714 - 37900 0.001570463 0 7.4371724e-06 5.394285e-05 5.178288e-05 9.4285714 - 38000 0.0016528658 0 1.7676821e-05 4.6549715e-05 7.4939039e-05 9.4285714 - 38100 0.0016484889 0 5.8587299e-06 -4.9107938e-07 5.7645076e-05 9.4285714 - 38200 0.0015984293 0 1.0671822e-05 3.4470822e-05 6.3745018e-05 9.4285714 - 38300 0.0015710865 0 4.4087264e-06 6.1197092e-05 6.8343309e-05 9.4285714 - 38400 0.0015793526 0 4.7461657e-06 3.7878407e-05 4.7745506e-05 9.4285714 - 38500 0.00159328 0 2.0539368e-05 3.9420528e-05 6.0739849e-05 9.4285714 - 38600 0.0015628995 0 2.4761081e-06 2.7232923e-05 6.5840751e-05 9.4285714 - 38700 0.0015511665 0 1.3285488e-05 3.1789534e-05 6.571997e-05 9.4285714 - 38800 0.0015047736 0 3.5850221e-05 5.0541292e-05 7.4329443e-05 9.4285714 - 38900 0.0014543448 0 1.9520164e-05 3.3703216e-05 8.2553257e-05 9.4285714 - 39000 0.0014049414 0 2.0563188e-05 4.6282108e-05 9.573642e-05 9.4285714 - 39100 0.0013592667 0 3.7448207e-05 3.3625511e-05 7.9968675e-05 9.4285714 - 39200 0.0014283692 0 1.4613867e-05 1.4624639e-05 7.8329315e-05 9.4285714 - 39300 0.0014980879 0 2.632332e-05 2.5830124e-05 6.7754562e-05 9.4285714 - 39400 0.0015239204 0 5.0406984e-05 2.4875194e-05 5.8899223e-05 9.4285714 - 39500 0.0015827769 0 4.6007741e-05 4.3947253e-05 7.1960056e-05 9.4285714 - 39600 0.0016911946 0 4.2152926e-05 4.2468337e-05 6.8038708e-05 9.4285714 - 39700 0.0017371562 0 5.4576123e-05 3.818247e-05 5.3315764e-05 9.4285714 - 39800 0.0016905784 0 4.8696801e-05 5.1934452e-05 5.9622933e-05 9.4285714 - 39900 0.0016679735 0 4.9650941e-05 6.2065498e-05 6.7678814e-05 9.4285714 - 40000 0.0016804728 0 2.6936787e-05 3.6772729e-05 6.8197494e-05 9.4285714 - 40100 0.0016953728 0 3.2845556e-05 4.8277263e-07 6.2189335e-05 9.4285714 - 40200 0.001661138 0 3.6282353e-05 3.4426968e-05 5.4259796e-05 9.4285714 - 40300 0.0016646181 0 2.7467829e-05 3.1713464e-05 5.914136e-05 9.4285714 - 40400 0.0016460484 0 4.8049299e-05 1.6139482e-05 7.0993842e-05 9.4285714 - 40500 0.001584111 0 4.8662486e-05 4.9496364e-05 6.603143e-05 9.4285714 - 40600 0.0015294729 0 3.802145e-05 3.1760814e-05 6.8855123e-05 9.4285714 - 40700 0.0015176504 0 4.0052592e-05 3.1861316e-05 7.8780588e-05 9.4285714 - 40800 0.0015605556 0 2.7701428e-05 2.423322e-05 6.4544184e-05 9.4285714 - 40900 0.0015536145 0 1.3848621e-05 -6.1126439e-07 6.3259453e-05 9.4285714 - 41000 0.0015310077 0 2.8421261e-05 3.4918038e-05 6.7797468e-05 9.4285714 - 41100 0.0015247209 0 2.0741223e-05 2.9128868e-05 6.029826e-05 9.4285714 - 41200 0.0015059107 0 1.6000876e-05 6.6996209e-06 7.9823117e-05 9.4285714 - 41300 0.0014429996 0 3.3652684e-05 3.1548027e-05 9.5593662e-05 9.4285714 - 41400 0.0014050396 0 6.5381009e-06 4.2947868e-05 9.4137894e-05 9.4285714 - 41500 0.0013865248 0 -6.6520071e-06 2.2003908e-05 7.078385e-05 9.4285714 - 41600 0.0013961027 0 2.2230932e-05 3.7090424e-05 0.00011151118 9.4285714 - 41700 0.0014117253 0 3.0130095e-05 3.6007809e-05 7.8176416e-05 9.4285714 - 41800 0.0013882283 0 1.3288874e-05 2.7573529e-05 5.9201334e-05 9.4285714 - 41900 0.0013753318 0 1.6984699e-05 3.6009436e-05 0.0001074797 9.4285714 - 42000 0.0013513945 0 1.7069135e-05 2.7993012e-05 9.1820042e-05 9.4285714 - 42100 0.0013863187 0 1.1155401e-05 4.553084e-05 9.7133876e-05 9.4285714 - 42200 0.0014933369 0 2.0831243e-05 5.087146e-05 8.784321e-05 9.4285714 - 42300 0.0015198423 0 1.0125181e-05 2.4600202e-05 6.2380383e-05 9.4285714 - 42400 0.0015221508 0 6.7561665e-06 3.6631691e-05 9.2684019e-05 9.4285714 - 42500 0.0015024243 0 2.7000681e-05 3.4307844e-05 6.7639862e-05 9.4285714 - 42600 0.0014893063 0 2.2128038e-05 3.5609622e-05 6.1427776e-05 9.4285714 - 42700 0.001499974 0 1.9097097e-05 3.4788871e-05 9.5912141e-05 9.4285714 - 42800 0.0015009281 0 2.4859527e-05 1.9268361e-05 6.8128418e-05 9.4285714 - 42900 0.0015031569 0 2.5009903e-05 2.9940853e-05 6.0578918e-05 9.4285714 - 43000 0.0014454794 0 4.4527001e-05 3.0364691e-05 7.4964032e-05 9.4285714 - 43100 0.001404434 0 5.8064814e-05 2.0201863e-05 7.0949978e-05 9.4285714 - 43200 0.0014048357 0 3.506138e-05 3.4776921e-05 8.0565203e-05 9.4285714 - 43300 0.0014138482 0 2.3721192e-05 3.2374127e-05 6.6747875e-05 9.4285714 - 43400 0.0013970565 0 1.9946066e-05 3.2758634e-05 7.3460323e-05 9.4285714 - 43500 0.0013955246 0 2.0121957e-05 3.8102995e-05 7.8275265e-05 9.4285714 - 43600 0.0014327655 0 2.6929081e-05 2.1831174e-05 6.7351934e-05 9.4285714 - 43700 0.0015031566 0 2.8744415e-05 3.5314431e-05 6.7917455e-05 9.4285714 - 43800 0.0016007805 0 4.9300269e-05 5.2531669e-05 8.1673155e-05 9.4285714 - 43900 0.0016871966 0 5.7903055e-05 5.8931487e-05 7.2381839e-05 9.4285714 - 44000 0.0017433511 0 4.8323375e-05 5.7285131e-05 3.9859077e-05 9.4285714 - 44100 0.0017096036 0 3.6345002e-05 4.5060973e-05 7.2336376e-05 9.4285714 - 44200 0.0016524366 0 4.6380669e-05 6.3320421e-05 9.6708837e-05 9.4285714 - 44300 0.0016566529 0 3.5636796e-05 7.6368249e-05 7.62331e-05 9.4285714 - 44400 0.0016503804 0 3.9172358e-05 5.6168788e-05 6.4579533e-05 9.4285714 - 44500 0.0016126454 0 4.4554414e-05 6.5633847e-05 8.287072e-05 9.4285714 - 44600 0.0015820491 0 3.3726182e-05 9.0977476e-05 8.5942347e-05 9.4285714 - 44700 0.0012596787 0 4.4895722e-05 5.9163212e-05 6.9212547e-05 9.4285714 - 44800 0.0012150743 0 3.6359427e-05 4.1282726e-05 9.0699449e-05 9.4285714 - 44900 0.0012437188 0 3.4560213e-05 3.0722383e-05 5.9605755e-05 9.4285714 - 45000 0.0012779821 0 4.1282676e-05 5.0767841e-05 5.6288275e-05 9.4285714 - 45100 0.0012623526 0 3.4476846e-05 2.9773147e-05 5.2191912e-05 9.4285714 - 45200 0.0012896009 0 4.114665e-05 2.5284854e-05 6.0876039e-05 9.4285714 - 45300 0.0012853341 0 4.8527658e-05 2.0069362e-05 6.6996527e-05 9.4285714 - 45400 0.0013361987 0 4.5881621e-05 1.8001757e-05 6.7234675e-05 9.4285714 - 45500 0.0013927353 0 4.6101251e-05 1.3981484e-05 6.3492122e-05 9.4285714 - 45600 0.0014198964 0 5.5443094e-05 2.1179803e-05 7.0197111e-05 9.4285714 - 45700 0.0014801207 0 7.0984118e-05 2.8583955e-05 6.7700562e-05 9.4285714 - 45800 0.0015579503 0 6.937725e-05 3.4791292e-05 5.9678447e-05 9.4285714 - 45900 0.0015584674 0 7.0115212e-05 4.7527248e-05 7.0089399e-05 9.4285714 - 46000 0.0014923368 0 6.8734502e-05 3.8294697e-05 5.6331338e-05 9.4285714 - 46100 0.0014912511 0 6.4174805e-05 2.4795442e-05 5.3006287e-05 9.4285714 - 46200 0.0015162305 0 5.9799315e-05 3.9482509e-05 5.9487266e-05 9.4285714 - 46300 0.0015497448 0 4.3674411e-05 3.2802877e-05 4.4985426e-05 9.4285714 - 46400 0.0015709594 0 4.5263389e-05 -5.3960008e-06 4.5841288e-05 9.4285714 - 46500 0.0015640817 0 3.6981938e-05 3.5353885e-05 4.9564163e-05 9.4285714 - 46600 0.001550004 0 3.2474916e-05 4.153406e-05 5.1697382e-05 9.4285714 - 46700 0.0015974044 0 4.6324057e-05 1.1509938e-05 5.9560845e-05 9.4285714 - 46800 0.0016632586 0 4.490488e-05 3.5296632e-05 6.1766018e-05 9.4285714 - 46900 0.0016794098 0 4.4301704e-05 3.7788616e-05 5.967362e-05 9.4285714 - 47000 0.0017580945 0 6.6504945e-05 4.9082566e-05 6.5533612e-05 9.4285714 - 47100 0.0018650028 0 5.145719e-05 5.215116e-05 6.3205077e-05 9.4285714 - 47200 0.0018852648 0 6.3537699e-05 5.5242241e-05 6.4040264e-05 9.4285714 - 47300 0.0018012411 0 6.5902624e-05 6.8503287e-05 5.3278653e-05 9.4285714 - 47400 0.0017813175 0 4.1247872e-05 6.0288292e-05 5.5158267e-05 9.4285714 - 47500 0.0017712621 0 5.8794427e-05 4.8192973e-05 3.9564999e-05 9.4285714 - 47600 0.0014983113 0 6.1528046e-05 3.9452241e-05 5.2456251e-05 9.4285714 - 47700 0.0014210781 0 3.9534178e-05 3.3213677e-05 6.019428e-05 9.4285714 - 47800 0.0015248822 0 5.2526977e-05 4.2140167e-05 2.5787538e-05 9.4285714 - 47900 0.0015982347 0 3.7157073e-05 3.2482618e-05 4.3174668e-05 9.4285714 - 48000 0.0016017453 0 4.7591793e-05 1.5611074e-05 5.2033754e-05 9.4285714 - 48100 0.0015951994 0 6.1254157e-05 3.4175393e-05 4.3900481e-05 9.4285714 - 48200 0.0016917466 0 5.7967266e-05 5.0193865e-05 6.2494378e-05 9.4285714 - 48300 0.0018311545 0 6.8256986e-05 4.865834e-05 7.4005593e-05 9.4285714 - 48400 0.001663258 0 8.4355633e-05 3.2852117e-05 6.6773781e-05 9.4285714 - 48500 0.0015451602 0 5.2025572e-05 3.6312967e-05 7.1034232e-05 9.4285714 - 48600 0.0015809499 0 4.4287332e-05 4.2386687e-05 5.9021201e-05 9.4285714 - 48700 0.0015622921 0 4.0603813e-05 3.1889011e-05 5.419145e-05 9.4285714 - 48800 0.0015452556 0 5.6411924e-05 2.9309787e-05 5.9778868e-05 9.4285714 - 48900 0.0015809688 0 3.4077578e-05 3.7449741e-05 6.5423745e-05 9.4285714 - 49000 0.0015096577 0 3.4921753e-05 4.6405011e-05 5.4124634e-05 9.4285714 - 49100 0.0014794912 0 4.725593e-05 7.3468911e-05 8.4504595e-05 9.4285714 - 49200 0.0013908791 0 6.2532426e-05 7.2584645e-05 7.7992763e-05 9.4285714 - 49300 0.001331941 0 8.3970791e-05 5.6802893e-05 8.5864931e-05 9.4285714 - 49400 0.0012849302 0 3.5098043e-05 4.8687728e-05 8.4263421e-05 9.4285714 - 49500 0.0012703335 0 3.2337991e-05 4.1421455e-05 6.363085e-05 9.4285714 - 49600 0.0013663929 0 3.6702318e-05 3.5124696e-05 6.3491658e-05 9.4285714 - 49700 0.0014410308 0 3.2939374e-06 2.2368693e-05 6.7690366e-05 9.4285714 - 49800 0.0013777961 0 2.1557945e-05 4.0513612e-05 5.3381336e-05 9.4285714 - 49900 0.0013630247 0 3.7282249e-05 4.5943806e-05 6.7644867e-05 9.4285714 - 50000 0.001430246 0 1.7303432e-05 2.193594e-05 6.4740083e-05 9.4285714 - 50100 0.0014144645 0 1.5676512e-05 3.6056804e-05 5.6289473e-05 9.4285714 - 50200 0.001306106 0 3.1980903e-05 4.9952019e-05 7.5959001e-05 9.4285714 - 50300 0.0012870177 0 5.047748e-05 5.174361e-05 7.9115671e-05 9.4285714 - 50400 0.0013497605 0 2.1318565e-05 4.1118782e-05 6.7052102e-05 9.4285714 - 50500 0.0013387412 0 4.1054827e-07 2.106858e-05 6.7436309e-05 9.4285714 - 50600 0.0012977904 0 6.0369247e-05 4.0912426e-05 7.5786036e-05 9.4285714 - 50700 0.0012999712 0 4.9274273e-05 3.3964501e-05 7.3552972e-05 9.4285714 - 50800 0.0012646646 0 3.9810791e-05 4.6119904e-05 7.3660024e-05 9.4285714 - 50900 0.0011627247 0 6.3221966e-05 3.4209985e-05 9.1260766e-05 9.4285714 - 51000 0.0011224602 0 3.1336367e-06 2.1749266e-05 6.8170284e-05 9.4285714 - 51100 0.0011554569 0 6.1200658e-05 4.0983542e-05 8.1784697e-05 9.4285714 - 51200 0.0012349075 0 6.6381864e-05 1.3005243e-05 6.5810605e-05 9.4285714 - 51300 0.0011920985 0 -1.0744783e-05 1.5340585e-05 6.7493128e-05 9.4285714 - 51400 0.0011810026 0 6.6593256e-05 4.128025e-05 0.00010941824 9.4285714 - 51500 0.0011861699 0 5.6645968e-05 2.8472362e-05 6.0511711e-05 9.4285714 - 51600 0.0012240206 0 2.1100894e-05 2.7935451e-05 6.4717546e-05 9.4285714 - 51700 0.0012104336 0 4.3108243e-05 3.976457e-05 0.00011078365 9.4285714 - 51800 0.0011824965 0 2.2269955e-05 4.8730228e-05 7.6176372e-05 9.4285714 - 51900 0.0012107078 0 3.7297559e-05 4.7362219e-05 9.2333509e-05 9.4285714 - 52000 0.0012180885 0 4.8181798e-05 3.4816739e-05 9.0290946e-05 9.4285714 - 52100 0.0011780719 0 2.9276832e-05 3.8790922e-05 8.494653e-05 9.4285714 - 52200 0.001104839 0 4.2588723e-05 4.2660056e-05 0.00011393396 9.4285714 - 52300 0.0011123145 0 4.357949e-05 3.2344034e-05 8.1936335e-05 9.4285714 - 52400 0.001096837 0 3.9790937e-05 3.689969e-05 7.9488273e-05 9.4285714 - 52500 0.0010926267 0 5.6825751e-05 4.8418389e-05 0.00010830164 9.4285714 - 52600 0.001115873 0 4.2951455e-05 4.8266165e-05 6.4679129e-05 9.4285714 - 52700 0.0011356205 0 5.6118811e-05 4.895045e-05 8.6317038e-05 9.4285714 - 52800 0.0011692645 0 6.8584886e-05 5.5147538e-05 9.9726278e-05 9.4285714 - 52900 0.0012447646 0 6.0890903e-05 6.5997e-05 8.0185069e-05 9.4285714 - 53000 0.0013276016 0 7.1286295e-05 6.0747485e-05 7.2816682e-05 9.4285714 - 53100 0.0013039314 0 6.4064864e-05 5.7518336e-05 6.4392756e-05 9.4285714 - 53200 0.0013038847 0 4.578846e-05 5.6853804e-05 8.6664313e-05 9.4285714 - 53300 0.0012978484 0 4.7008936e-05 5.5328947e-05 7.9406136e-05 9.4285714 - 53400 0.0013091507 0 5.2916548e-05 5.1537072e-05 5.1246436e-05 9.4285714 - 53500 0.0013048663 0 4.887723e-05 4.4807236e-05 6.2430874e-05 9.4285714 - 53600 0.0013009978 0 5.0592564e-05 4.0312326e-05 8.2420432e-05 9.4285714 - 53700 0.0013064131 0 5.4132133e-05 4.5874464e-05 4.3559251e-05 9.4285714 - 53800 0.0013021898 0 4.6217323e-05 5.6786468e-05 4.3986938e-05 9.4285714 - 53900 0.0012686345 0 5.0198667e-05 5.44896e-05 7.5000702e-05 9.4285714 - 54000 0.0012358914 0 5.1789644e-05 4.4583221e-05 6.8402278e-05 9.4285714 - 54100 0.0012408854 0 3.5815839e-05 4.2287352e-05 6.1390329e-05 9.4285714 - 54200 0.0011858358 0 3.9605034e-05 5.5897001e-05 6.7527358e-05 9.4285714 - 54300 0.0011203314 0 3.8253997e-05 3.7780626e-05 8.8316894e-05 9.4285714 - 54400 0.0011203585 0 4.0304312e-05 2.4198377e-05 9.2599368e-05 9.4285714 - 54500 0.0011366429 0 4.1873664e-05 4.3368258e-05 6.9453987e-05 9.4285714 - 54600 0.00111231 0 3.9662859e-05 4.6808661e-05 5.3358965e-05 9.4285714 - 54700 0.0011082223 0 3.2408762e-05 4.2094332e-05 7.2484409e-05 9.4285714 - 54800 0.0011153521 0 3.8035279e-05 3.3439276e-05 7.0959277e-05 9.4285714 - 54900 0.0010956569 0 3.1503844e-05 3.0480363e-05 6.0807879e-05 9.4285714 - 55000 0.00094683736 0 6.3050995e-05 9.1381836e-05 7.4157459e-05 9.4285714 - 55100 0.00085738884 0 5.4162732e-05 8.8233107e-05 8.2117059e-05 9.4285714 - 55200 0.00089232191 0 3.4880035e-05 2.4444005e-05 7.8094552e-05 9.4285714 - 55300 0.00090181492 0 5.4646961e-05 5.228637e-05 9.2572385e-05 9.4285714 - 55400 0.00088962176 0 4.5252166e-05 3.8983853e-05 6.5678103e-05 9.4285714 - 55500 0.00088926437 0 3.493832e-05 4.1363235e-05 4.3893091e-05 9.4285714 - 55600 0.00095128085 0 4.8488772e-05 6.8535054e-05 7.2264114e-05 9.4285714 - 55700 0.00089306718 0 3.4508106e-05 3.0466257e-05 4.7314243e-05 9.4285714 - 55800 0.00088062835 0 4.390357e-05 7.2304456e-05 7.9656825e-05 9.4285714 - 55900 0.00086938762 0 3.5602471e-05 3.7012762e-05 8.7961418e-05 9.4285714 - 56000 0.00084791645 0 2.4587324e-05 2.8420646e-05 8.6520499e-05 9.4285714 - 56100 0.00084908574 0 3.5988814e-05 6.8661771e-05 9.6568652e-05 9.4285714 - 56200 0.00084939412 0 6.6449608e-06 1.7476822e-05 6.7373409e-05 9.4285714 - 56300 0.0008363476 0 2.1711741e-05 3.3757906e-05 8.0761495e-05 9.4285714 - 56400 0.000794016 0 4.2003796e-05 5.1055073e-05 8.1681457e-05 9.4285714 - 56500 0.00081851325 0 2.0938565e-05 2.464949e-05 6.0320994e-05 9.4285714 - 56600 0.00082053882 0 3.0131161e-05 3.6296626e-05 5.8942389e-05 9.4285714 - 56700 0.00080313789 0 4.3200674e-05 3.4818428e-05 6.8080951e-05 9.4285714 - 56800 0.00080862283 0 2.7953944e-05 2.593842e-05 5.4136841e-05 9.4285714 - 56900 0.00080797804 0 3.1435725e-05 3.9907489e-05 5.4523729e-05 9.4285714 - 57000 0.00078565112 0 2.4966072e-05 4.2140354e-05 5.5759038e-05 9.4285714 - 57100 0.00079399786 0 2.8332972e-05 3.7413633e-05 4.9670756e-05 9.4285714 - 57200 0.0008000982 0 3.2204636e-05 2.8811183e-05 5.4247256e-05 9.4285714 - 57300 0.00080246804 0 2.2681395e-05 2.6046921e-05 5.7216619e-05 9.4285714 - 57400 0.0007877642 0 3.7947776e-05 3.2523017e-05 5.6053358e-05 9.4285714 - 57500 0.0007860211 0 5.0162479e-05 3.7111684e-05 6.2390457e-05 9.4285714 - 57600 0.00078336961 0 3.864222e-05 2.8991529e-05 5.8708077e-05 9.4285714 - 57700 0.00077615739 0 3.8565434e-05 3.3513366e-05 6.0053094e-05 9.4285714 - 57800 0.00077454851 0 3.0389748e-05 3.7613017e-05 6.8094181e-05 9.4285714 - 57900 0.00077662304 0 2.5354181e-05 3.7021458e-05 6.7217863e-05 9.4285714 - 58000 0.00078848282 0 2.6979538e-05 3.3746385e-05 6.4561227e-05 9.4285714 - 58100 0.00078272979 0 1.9243521e-05 2.8559736e-05 6.6141835e-05 9.4285714 - 58200 0.00076149968 0 1.9535014e-05 3.789365e-05 7.0052408e-05 9.4285714 - 58300 0.000763035 0 2.1948531e-05 3.954981e-05 7.7015059e-05 9.4285714 - 58400 0.00075915903 0 1.7591078e-05 2.2258504e-05 7.479081e-05 9.4285714 - 58500 0.00075047498 0 1.7244716e-05 2.6122357e-05 7.8382408e-05 9.4285714 - 58600 0.00078842521 0 1.4192266e-05 2.9266351e-05 8.0160703e-05 9.4285714 - 58700 0.00080531146 0 7.0538516e-06 1.9408586e-05 7.0982863e-05 9.4285714 - 58800 0.00079267656 0 2.0630753e-05 2.7136197e-05 7.1915268e-05 9.4285714 - 58900 0.00077837989 0 1.9950131e-05 2.9283262e-05 7.0607767e-05 9.4285714 - 59000 0.00076268915 0 1.3125986e-05 3.1633975e-05 7.4519831e-05 9.4285714 - 59100 0.00073382081 0 3.5020254e-05 3.812067e-05 7.734654e-05 9.4285714 - 59200 0.00069392884 0 5.6280181e-05 4.4920134e-05 6.7334762e-05 9.4285714 - 59300 0.00067699597 0 5.1625332e-05 4.3045634e-05 6.6447686e-05 9.4285714 - 59400 0.00070838508 0 3.5638472e-05 2.5879928e-05 6.5337589e-05 9.4285714 - 59500 0.00071669183 0 3.3154936e-05 3.4826944e-05 6.4729304e-05 9.4285714 - 59600 0.00065855704 0 3.0591887e-05 3.0291762e-05 8.449991e-05 9.4285714 - 59700 0.00061671139 0 3.0392665e-05 1.6863434e-05 8.6504376e-05 9.4285714 - 59800 0.00062189217 0 2.1511805e-05 2.5294946e-05 6.538177e-05 9.4285714 - 59900 0.00063915137 0 2.0531708e-05 2.9665491e-05 8.5551338e-05 9.4285714 - 60000 0.00063508738 0 2.0200579e-05 2.4325355e-05 7.9201221e-05 9.4285714 - 60100 0.00063014175 0 1.9049912e-05 2.3743517e-05 5.7107412e-05 9.4285714 - 60200 0.00059917116 0 4.0182823e-05 2.8869854e-05 7.3792291e-05 9.4285714 - 60300 0.00060452978 0 3.8177138e-05 3.6712461e-05 6.2351083e-05 9.4285714 - 60400 0.0006225319 0 1.9134976e-05 2.0279448e-05 5.2938213e-05 9.4285714 - 60500 0.00062247798 0 4.1048478e-05 1.5742494e-05 5.4139494e-05 9.4285714 - 60600 0.00060151604 0 3.3494483e-05 2.8924931e-05 5.0894613e-05 9.4285714 - 60700 0.00057977549 0 2.522371e-05 2.0748979e-05 7.1254971e-05 9.4285714 - 60800 0.00057013518 0 5.0410904e-05 2.7782967e-05 7.0369653e-05 9.4285714 - 60900 0.00056670422 0 3.1423247e-05 3.7439116e-05 5.7451888e-05 9.4285714 - 61000 0.00056267995 0 2.0779974e-05 2.1570651e-05 6.3299948e-05 9.4285714 - 61100 0.00055922981 0 3.3539257e-05 2.4373735e-05 5.5286713e-05 9.4285714 - 61200 0.00057884989 0 2.4218281e-05 3.8059418e-05 4.8780832e-05 9.4285714 - 61300 0.00056896374 0 2.9412667e-05 2.2561342e-05 5.7409361e-05 9.4285714 - 61400 0.00055403782 0 4.0698115e-05 3.0700937e-05 6.1253039e-05 9.4285714 - 61500 0.00054575955 0 3.3523659e-05 4.0547532e-05 5.7254845e-05 9.4285714 - 61600 0.00054534484 0 3.2863762e-05 3.3623403e-05 6.2684641e-05 9.4285714 - 61700 0.00053575752 0 3.1820619e-05 3.7735983e-05 5.6446619e-05 9.4285714 - 61800 0.00050924136 0 3.7547282e-05 2.1982693e-05 6.0035121e-05 9.4285714 - 61900 0.00050726904 0 5.0881295e-05 2.4289477e-05 6.8832171e-05 9.4285714 - 62000 0.00049551903 0 3.6291861e-05 3.7971418e-05 5.9652751e-05 9.4285714 - 62100 0.00047134428 0 4.2864103e-05 2.4080638e-05 6.5786273e-05 9.4285714 - 62200 0.00047770022 0 3.3424968e-05 2.8470305e-05 6.0100111e-05 9.4285714 - 62300 0.00049816357 0 2.1047065e-05 3.066098e-05 5.3128554e-05 9.4285714 - 62400 0.0005160559 0 2.375004e-05 1.6124191e-05 6.0422951e-05 9.4285714 - 62500 0.00049840793 0 2.0983461e-05 1.8649261e-05 6.4444257e-05 9.4285714 - 62600 0.00048816935 0 2.7000406e-05 1.8925499e-05 6.6470797e-05 9.4285714 - 62700 0.00050525774 0 1.5590225e-05 1.7140838e-05 6.3637e-05 9.4285714 - 62800 0.00050739365 0 1.7831244e-05 2.1337053e-05 5.686189e-05 9.4285714 - 62900 0.00049282098 0 3.4169385e-05 2.5655648e-05 6.2726495e-05 9.4285714 - 63000 0.00048572981 0 2.2415807e-05 3.0454484e-05 6.9931482e-05 9.4285714 - 63100 0.00048503597 0 2.0711857e-05 2.4803488e-05 6.0398964e-05 9.4285714 - 63200 0.00048736674 0 2.6715094e-05 2.4610161e-05 5.3406159e-05 9.4285714 - 63300 0.000495187 0 1.7302806e-05 2.9173052e-05 6.0607802e-05 9.4285714 - 63400 0.00049057 0 2.4793546e-05 2.2947412e-05 6.3932937e-05 9.4285714 - 63500 0.00049454241 0 2.7460546e-05 2.295346e-05 6.236266e-05 9.4285714 - 63600 0.00050750934 0 1.8870306e-05 2.1796594e-05 5.1992068e-05 9.4285714 - 63700 0.00050223819 0 2.3354837e-05 2.6101961e-05 5.555683e-05 9.4285714 - 63800 0.00049825851 0 2.4450955e-05 2.5205531e-05 5.9007169e-05 9.4285714 - 63900 0.00050446329 0 2.9018575e-05 1.8664962e-05 5.8195442e-05 9.4285714 - 64000 0.00050123425 0 2.5293131e-05 2.6077288e-05 6.7028726e-05 9.4285714 - 64100 0.00049398396 0 2.0032697e-05 1.9407169e-05 6.3194814e-05 9.4285714 - 64200 0.00048958916 0 2.8155148e-05 1.5927368e-05 6.0175096e-05 9.4285714 - 64300 0.00049084865 0 3.9751773e-05 2.4517852e-05 6.0313962e-05 9.4285714 - 64400 0.00048910757 0 4.4735032e-05 1.5405562e-05 5.3540443e-05 9.4285714 - 64500 0.00048471727 0 3.5535228e-05 1.6802982e-05 6.0214621e-05 9.4285714 - 64600 0.00047890045 0 2.7671036e-05 2.5143761e-05 6.0460667e-05 9.4285714 - 64700 0.00048854524 0 2.4772991e-05 2.2127364e-05 5.2755828e-05 9.4285714 - 64800 0.00049397887 0 2.6143367e-05 3.0107165e-05 5.5672921e-05 9.4285714 - 64900 0.00048156538 0 2.7324051e-05 2.7397209e-05 6.2207257e-05 9.4285714 - 65000 0.00046910086 0 2.3107446e-05 2.1342305e-05 5.9462521e-05 9.4285714 - 65100 0.00047018569 0 2.8373353e-05 2.5607705e-05 6.0074709e-05 9.4285714 - 65200 0.00046171565 0 3.4532098e-05 2.6330991e-05 6.3506249e-05 9.4285714 - 65300 0.00045355106 0 4.0659619e-05 3.9365784e-05 6.5750756e-05 9.4285714 - 65400 0.0004513268 0 3.8718945e-05 3.7824685e-05 6.3873217e-05 9.4285714 - 65500 0.00045328094 0 3.3417102e-05 2.8215995e-05 6.5933345e-05 9.4285714 - 65600 0.00045594277 0 2.5411307e-05 3.5413971e-05 6.7042626e-05 9.4285714 - 65700 0.00044893271 0 2.7761122e-05 3.0781129e-05 6.674899e-05 9.4285714 - 65800 0.00043673665 0 3.137767e-05 2.7133886e-05 6.9153693e-05 9.4285714 - 65900 0.00044417684 0 3.2415712e-05 3.0361507e-05 6.9191067e-05 9.4285714 - 66000 0.00043734522 0 4.0325917e-05 3.1024803e-05 6.6938523e-05 9.4285714 - 66100 0.00042196243 0 3.2753785e-05 3.2032259e-05 7.3193885e-05 9.4285714 - 66200 0.00041973452 0 4.0164148e-05 2.8338884e-05 8.1948511e-05 9.4285714 - 66300 0.00041436701 0 6.2963257e-05 2.9034625e-05 7.9302556e-05 9.4285714 - 66400 0.0003941513 0 4.5872689e-05 3.7807303e-05 8.1728593e-05 9.4285714 - 66500 0.0003836529 0 5.6445215e-05 4.2270969e-05 8.2747199e-05 9.4285714 - 66600 0.00038465213 0 5.3263887e-05 3.9719425e-05 7.9149461e-05 9.4285714 - 66700 0.00038894992 0 4.20255e-05 4.566467e-05 7.8879149e-05 9.4285714 - 66800 0.00036070492 0 5.566745e-05 5.7759724e-05 8.9987504e-05 9.4285714 - 66900 0.00034297457 0 5.3259574e-05 6.8869365e-05 9.177822e-05 9.4285714 - 67000 0.00035071188 0 4.8313416e-05 6.0559453e-05 8.5500562e-05 9.4285714 - 67100 0.00035503575 0 3.097501e-05 4.3472679e-05 7.9626917e-05 9.4285714 - 67200 0.00034128431 0 3.4720585e-05 4.816892e-05 7.8514087e-05 9.4285714 - 67300 0.00031836785 0 4.5282712e-05 5.2691067e-05 7.7424489e-05 9.4285714 - 67400 0.00030663661 0 3.5113049e-05 4.9635601e-05 7.4666973e-05 9.4285714 - 67500 0.00029481791 0 3.9138377e-05 5.1053527e-05 7.2565942e-05 9.4285714 - 67600 0.00028910904 0 4.9257505e-05 5.6455991e-05 7.5528344e-05 9.4285714 - 67700 0.00027183249 0 5.505267e-05 5.4725918e-05 7.5520601e-05 9.4285714 - 67800 0.00025778954 0 5.5325298e-05 5.581733e-05 7.8035058e-05 9.4285714 - 67900 0.00024581296 0 4.8759439e-05 6.1088154e-05 8.1274762e-05 9.4285714 - 68000 0.00022556887 0 5.1728122e-05 5.3916307e-05 8.9568848e-05 9.4285714 - 68100 0.00022448115 0 5.0575203e-05 5.8938015e-05 8.6660799e-05 9.4285714 - 68200 0.0002316233 0 4.4277765e-05 5.6650457e-05 8.0759893e-05 9.4285714 - 68300 0.00022986293 0 4.3595152e-05 5.2689036e-05 8.3692076e-05 9.4285714 - 68400 0.00021976837 0 4.2832179e-05 5.7513019e-05 8.1198068e-05 9.4285714 - 68500 0.00018897003 0 4.677852e-05 5.1979086e-05 8.5959875e-05 9.4285714 - 68600 0.00014377952 0 4.7381465e-05 5.6949726e-05 9.151628e-05 9.4285714 - 68700 0.00014928898 0 4.2459064e-05 6.2648099e-05 8.1113559e-05 9.4285714 - 68800 0.00013847203 0 4.4769387e-05 4.5920285e-05 7.7943736e-05 9.4285714 - 68900 0.0001453686 0 4.7948908e-05 5.259867e-05 7.4055916e-05 9.4285714 - 69000 0.00014381237 0 4.3553764e-05 4.756036e-05 6.5598289e-05 9.4285714 - 69100 0.00013007965 0 4.6134105e-05 4.7607098e-05 6.1441724e-05 9.4285714 - 69200 0.00011982704 0 5.0774605e-05 5.3204128e-05 6.2701345e-05 9.4285714 - 69300 0.0001073918 0 5.1263139e-05 4.4305203e-05 6.3369506e-05 9.4285714 - 69400 0.00010300942 0 5.312369e-05 4.9407563e-05 6.2971639e-05 9.4285714 - 69500 0.00010143661 0 4.9484624e-05 4.0749275e-05 5.8373181e-05 9.4285714 - 69600 9.5766951e-05 0 5.3182235e-05 3.9451127e-05 5.2956094e-05 9.4285714 - 69700 9.405894e-05 0 5.0889773e-05 5.2300193e-05 5.180931e-05 9.4285714 - 69800 9.155205e-05 0 4.5530419e-05 4.4750489e-05 4.7063405e-05 9.4285714 - 69900 8.3575059e-05 0 5.1875899e-05 4.5141456e-05 4.4792127e-05 9.4285714 - 70000 8.0849168e-05 0 5.0510582e-05 4.2408643e-05 4.3239916e-05 9.4285714 - 70100 7.9858942e-05 0 4.8451567e-05 3.8982149e-05 4.1476956e-05 9.4285714 - 70200 7.8446618e-05 0 4.9559105e-05 4.6017946e-05 3.5209068e-05 9.4285714 - 70300 7.6228967e-05 0 4.7433543e-05 4.3268345e-05 2.7621423e-05 9.4285714 - 70400 7.5535961e-05 0 4.7847776e-05 4.0413247e-05 2.6006838e-05 9.4285714 - 70500 7.2914033e-05 0 4.3404817e-05 3.9523798e-05 2.4762482e-05 9.4285714 - 70600 7.001623e-05 0 3.9124987e-05 3.5339131e-05 2.3946554e-05 9.4285714 - 70700 6.9345352e-05 0 3.8804511e-05 3.6473219e-05 2.3502972e-05 9.4285714 - 70800 6.7381899e-05 0 3.5778441e-05 3.276663e-05 2.1027252e-05 9.4285714 - 70900 6.673365e-05 0 3.5855151e-05 2.8077966e-05 2.0184825e-05 9.4285714 - 71000 6.4393975e-05 0 3.3009782e-05 2.7699989e-05 1.8237771e-05 9.4285714 - 71100 6.1555918e-05 0 2.8624835e-05 2.576401e-05 1.8960569e-05 9.4285714 - 71200 6.1429325e-05 0 3.0464999e-05 2.6188175e-05 2.0334819e-05 9.4285714 - 71300 5.8364826e-05 0 2.8291632e-05 2.3606625e-05 1.9246418e-05 9.4285714 - 71400 5.3846239e-05 0 2.6414313e-05 2.1759211e-05 2.1300148e-05 9.4285714 - 71500 5.3386791e-05 0 2.5737816e-05 2.6710408e-05 2.1834767e-05 9.4285714 - 71600 5.2112201e-05 0 2.1997188e-05 2.1884657e-05 1.9589075e-05 9.4285714 - 71700 4.916249e-05 0 2.2918375e-05 2.1297948e-05 2.0672761e-05 9.4285714 - 71800 4.8669983e-05 0 2.4730445e-05 2.4511543e-05 2.0440236e-05 9.4285714 - 71900 4.7395793e-05 0 2.3453111e-05 2.0652588e-05 1.9998911e-05 9.4285714 - 72000 4.4713447e-05 0 2.2119599e-05 2.2138141e-05 2.2079011e-05 9.4285714 - 72100 4.3022032e-05 0 1.8471121e-05 2.4818397e-05 1.9810872e-05 9.4285714 - 72200 4.1819469e-05 0 1.7361261e-05 2.3170878e-05 1.7396464e-05 9.4285714 - 72300 4.1569642e-05 0 1.7188696e-05 2.2677614e-05 1.7473342e-05 9.4285714 - 72400 4.1455667e-05 0 1.5934592e-05 1.8779856e-05 1.6337526e-05 9.4285714 - 72500 3.8515638e-05 0 1.7547874e-05 1.716531e-05 1.6885439e-05 9.4285714 - 72600 3.7079221e-05 0 1.6548905e-05 1.8511957e-05 1.6952109e-05 9.4285714 - 72700 3.7528089e-05 0 1.4246302e-05 1.5867495e-05 1.6161381e-05 9.4285714 - 72800 3.6049364e-05 0 1.8833776e-05 1.7179469e-05 1.5973306e-05 9.4285714 - 72900 3.4591506e-05 0 1.9956377e-05 1.8701776e-05 1.3709089e-05 9.4285714 - 73000 3.4970032e-05 0 1.8075313e-05 1.4532012e-05 1.2838392e-05 9.4285714 - 73100 3.327333e-05 0 2.0377402e-05 1.4746802e-05 1.3174848e-05 9.4285714 - 73200 3.0281514e-05 0 2.1176452e-05 1.6279637e-05 1.2969012e-05 9.4285714 - 73300 2.879307e-05 0 2.0115434e-05 1.8148456e-05 1.4477019e-05 9.4285714 - 73400 2.8447528e-05 0 1.9106581e-05 1.8624285e-05 1.6277835e-05 9.4285714 - 73500 2.8615374e-05 0 1.6724941e-05 1.6782518e-05 1.6898605e-05 9.4285714 - 73600 2.9026224e-05 0 1.6437383e-05 1.6260007e-05 1.6848848e-05 9.4285714 - 73700 2.7975895e-05 0 1.5671211e-05 1.7419391e-05 1.6924342e-05 9.4285714 - 73800 2.7350029e-05 0 1.4519367e-05 1.8731887e-05 1.8856029e-05 9.4285714 - 73900 2.7431161e-05 0 1.490756e-05 1.7069783e-05 1.9473746e-05 9.4285714 - 74000 2.5856587e-05 0 1.556091e-05 1.6738345e-05 1.988592e-05 9.4285714 - 74100 2.4029451e-05 0 1.8493847e-05 1.972869e-05 2.1803916e-05 9.4285714 - 74200 2.3269039e-05 0 2.0487994e-05 1.9033504e-05 2.2472082e-05 9.4285714 - 74300 2.3162218e-05 0 1.9277527e-05 1.697003e-05 2.2756976e-05 9.4285714 - 74400 2.3049943e-05 0 1.846898e-05 1.7752958e-05 2.4781843e-05 9.4285714 - 74500 2.2761406e-05 0 1.7509804e-05 1.8174651e-05 2.6663831e-05 9.4285714 - 74600 2.2252277e-05 0 1.6713289e-05 1.9523723e-05 2.7825587e-05 9.4285714 - 74700 2.1705652e-05 0 1.6875501e-05 2.1777677e-05 2.7519983e-05 9.4285714 - 74800 2.0873837e-05 0 1.7085358e-05 2.3229265e-05 2.6672146e-05 9.4285714 - 74900 1.9872481e-05 0 1.7027531e-05 2.1292304e-05 2.6803e-05 9.4285714 - 75000 1.9762066e-05 0 1.6216075e-05 1.8536763e-05 2.6939852e-05 9.4285714 - 75100 2.0098758e-05 0 1.6400035e-05 1.9019963e-05 2.6158196e-05 9.4285714 - 75200 1.9426569e-05 0 1.780149e-05 2.0405573e-05 2.505744e-05 9.4285714 - 75300 1.917251e-05 0 1.7713161e-05 2.1994264e-05 2.4545388e-05 9.4285714 - 75400 1.8766917e-05 0 1.7379831e-05 2.1971358e-05 2.5001618e-05 9.4285714 - 75500 1.7887889e-05 0 1.786967e-05 2.1939442e-05 2.5400409e-05 9.4285714 - 75600 1.8303322e-05 0 1.6977953e-05 2.3193804e-05 2.5400433e-05 9.4285714 - 75700 1.9082517e-05 0 1.7229534e-05 2.1958941e-05 2.5230497e-05 9.4285714 - 75800 1.9485569e-05 0 1.7619186e-05 1.9983256e-05 2.4308542e-05 9.4285714 - 75900 1.8706506e-05 0 1.7152735e-05 2.0208405e-05 2.4370657e-05 9.4285714 - 76000 1.7796264e-05 0 1.6180567e-05 1.9162625e-05 2.4508438e-05 9.4285714 - 76100 1.7704752e-05 0 1.7147485e-05 1.8780835e-05 2.411906e-05 9.4285714 - 76200 1.7337087e-05 0 1.7066664e-05 1.9037755e-05 2.4885279e-05 9.4285714 - 76300 1.7006364e-05 0 1.5657859e-05 1.9993234e-05 2.5187476e-05 9.4285714 - 76400 1.7669688e-05 0 1.7303569e-05 2.1460675e-05 2.4359878e-05 9.4285714 - 76500 1.8256507e-05 0 1.7721232e-05 2.0044166e-05 2.355598e-05 9.4285714 - 76600 1.7751511e-05 0 1.7307193e-05 2.0330753e-05 2.3681577e-05 9.4285714 - 76700 1.7640861e-05 0 1.7470398e-05 2.0464662e-05 2.4300443e-05 9.4285714 - 76800 1.8237528e-05 0 1.5306195e-05 1.7485864e-05 2.3821137e-05 9.4285714 - 76900 1.8559968e-05 0 1.4312772e-05 1.7346668e-05 2.2561587e-05 9.4285714 - 77000 1.8183149e-05 0 1.5262962e-05 1.7837843e-05 2.1884382e-05 9.4285714 - 77100 1.7069042e-05 0 1.4601499e-05 1.829281e-05 2.2565978e-05 9.4285714 - 77200 1.6390254e-05 0 1.4955984e-05 1.9369399e-05 2.3709371e-05 9.4285714 - 77300 1.6643218e-05 0 1.5638971e-05 1.8295309e-05 2.5074229e-05 9.4285714 - 77400 1.6518811e-05 0 1.5400737e-05 1.7604452e-05 2.6591759e-05 9.4285714 - 77500 1.6152548e-05 0 1.6583097e-05 1.7792754e-05 2.8143492e-05 9.4285714 - 77600 1.7459415e-05 0 1.623967e-05 1.6730063e-05 2.8067496e-05 9.4285714 - 77700 1.818602e-05 0 1.5762413e-05 1.7153058e-05 2.7587967e-05 9.4285714 - 77800 1.7735287e-05 0 1.7191859e-05 1.8830012e-05 2.8173949e-05 9.4285714 - 77900 1.768324e-05 0 1.7202961e-05 1.9238865e-05 2.9209791e-05 9.4285714 - 78000 1.7995393e-05 0 1.7039881e-05 2.035006e-05 3.020306e-05 9.4285714 - 78100 1.7914043e-05 0 1.7891516e-05 2.2362325e-05 3.0800062e-05 9.4285714 - 78200 1.7544427e-05 0 1.7535007e-05 2.2936844e-05 3.0476136e-05 9.4285714 - 78300 1.7882361e-05 0 1.6816555e-05 2.2842657e-05 3.1506572e-05 9.4285714 - 78400 1.7797947e-05 0 1.7345526e-05 2.3528118e-05 3.3510861e-05 9.4285714 - 78500 1.6889982e-05 0 1.746546e-05 2.467755e-05 3.4176651e-05 9.4285714 - 78600 1.6527531e-05 0 1.7449464e-05 2.4381906e-05 3.4332003e-05 9.4285714 - 78700 1.7017292e-05 0 1.7247297e-05 2.2114433e-05 3.3981671e-05 9.4285714 - 78800 1.7671938e-05 0 1.6820676e-05 1.9968128e-05 3.332308e-05 9.4285714 - 78900 1.7924346e-05 0 1.7369249e-05 1.8663831e-05 3.2896227e-05 9.4285714 - 79000 1.7423145e-05 0 1.7927282e-05 1.8294211e-05 3.2984144e-05 9.4285714 - 79100 1.6963265e-05 0 1.7470957e-05 1.922162e-05 3.3182581e-05 9.4285714 - 79200 1.6505832e-05 0 1.7400086e-05 1.9975905e-05 3.3106108e-05 9.4285714 - 79300 1.5726279e-05 0 1.8791334e-05 2.1322452e-05 3.4461225e-05 9.4285714 - 79400 1.5594021e-05 0 2.0887345e-05 2.2687613e-05 3.4362179e-05 9.4285714 - 79500 1.5907072e-05 0 2.0890931e-05 2.2270309e-05 3.2242966e-05 9.4285714 - 79600 1.6091341e-05 0 1.9023313e-05 2.2134246e-05 3.1080998e-05 9.4285714 - 79700 1.6609821e-05 0 1.8293936e-05 2.2380186e-05 2.8726937e-05 9.4285714 - 79800 1.6569905e-05 0 1.8301928e-05 2.165699e-05 2.6991613e-05 9.4285714 - 79900 1.6068388e-05 0 1.8467561e-05 2.1476835e-05 2.7925917e-05 9.4285714 - 80000 1.5910921e-05 0 1.8920566e-05 2.0939671e-05 2.7480548e-05 9.4285714 - 80100 1.5734317e-05 0 1.9339594e-05 2.1057886e-05 2.7047234e-05 9.4285714 - 80200 1.4926813e-05 0 1.9878949e-05 2.1090643e-05 2.8171816e-05 9.4285714 - 80300 1.3783112e-05 0 2.0246239e-05 1.9792868e-05 2.8848561e-05 9.4285714 - 80400 1.3610254e-05 0 1.9985684e-05 2.0000467e-05 2.8884255e-05 9.4285714 - 80500 1.3989108e-05 0 1.9501011e-05 2.0577095e-05 2.7781763e-05 9.4285714 - 80600 1.4186107e-05 0 1.9725118e-05 1.9615411e-05 2.6259747e-05 9.4285714 - 80700 1.4068548e-05 0 2.0361245e-05 2.0088354e-05 2.5466152e-05 9.4285714 - 80800 1.3605892e-05 0 2.2025912e-05 2.0956019e-05 2.5715033e-05 9.4285714 - 80900 1.3474842e-05 0 2.3145996e-05 2.1570348e-05 2.7589345e-05 9.4285714 - 81000 1.2797245e-05 0 2.1131492e-05 2.2391141e-05 2.8857371e-05 9.4285714 - 81100 1.2111671e-05 0 1.9570648e-05 2.297832e-05 2.9547386e-05 9.4285714 - 81200 1.2503716e-05 0 1.8975163e-05 2.2542497e-05 2.9590019e-05 9.4285714 - 81300 1.2859283e-05 0 1.6903598e-05 2.1579533e-05 2.8467761e-05 9.4285714 - 81400 1.2693841e-05 0 1.67322e-05 2.2270293e-05 2.7700769e-05 9.4285714 - 81500 1.2453307e-05 0 1.759208e-05 2.2414998e-05 2.6982571e-05 9.4285714 - 81600 1.2452531e-05 0 1.8556552e-05 2.2274468e-05 2.6461568e-05 9.4285714 - 81700 1.2446125e-05 0 1.9644544e-05 2.2358194e-05 2.6749742e-05 9.4285714 - 81800 1.2163166e-05 0 1.9357956e-05 2.2110998e-05 2.7638592e-05 9.4285714 - 81900 1.2465826e-05 0 1.8922778e-05 2.189582e-05 2.7698008e-05 9.4285714 - 82000 1.2925088e-05 0 1.906024e-05 2.1498087e-05 2.7024139e-05 9.4285714 - 82100 1.2728333e-05 0 1.9243525e-05 2.0579426e-05 2.6809164e-05 9.4285714 - 82200 1.2335093e-05 0 1.963964e-05 2.0312761e-05 2.759139e-05 9.4285714 - 82300 1.1933277e-05 0 2.0641527e-05 2.0428921e-05 2.8218766e-05 9.4285714 - 82400 1.2009506e-05 0 2.0561735e-05 2.1040496e-05 2.795312e-05 9.4285714 - 82500 1.1733615e-05 0 1.9357593e-05 2.1527976e-05 2.7186852e-05 9.4285714 - 82600 1.1532561e-05 0 1.9923004e-05 2.0870361e-05 2.6440559e-05 9.4285714 - 82700 1.1827976e-05 0 2.0835067e-05 2.0670966e-05 2.5788333e-05 9.4285714 - 82800 1.184935e-05 0 2.1182444e-05 2.1182423e-05 2.6266551e-05 9.4285714 - 82900 1.1682778e-05 0 2.1813617e-05 2.2135635e-05 2.8436608e-05 9.4285714 - 83000 1.1619346e-05 0 2.1384423e-05 2.2752934e-05 2.950742e-05 9.4285714 - 83100 1.1016956e-05 0 2.0671019e-05 2.3277308e-05 3.064537e-05 9.4285714 - 83200 1.032127e-05 0 2.0124129e-05 2.3596651e-05 3.2160911e-05 9.4285714 - 83300 1.0127831e-05 0 1.9244913e-05 2.184731e-05 3.2859693e-05 9.4285714 - 83400 9.8386687e-06 0 1.9476381e-05 2.1605263e-05 3.4090261e-05 9.4285714 - 83500 9.1250766e-06 0 1.9883376e-05 2.2816311e-05 3.4043926e-05 9.4285714 - 83600 9.3232966e-06 0 1.9291021e-05 2.2085339e-05 3.1998949e-05 9.4285714 - 83700 9.6051945e-06 0 1.861147e-05 2.1797856e-05 3.024079e-05 9.4285714 - 83800 9.7047054e-06 0 1.8556585e-05 2.1529e-05 2.8842836e-05 9.4285714 - 83900 9.5519797e-06 0 1.9451371e-05 2.147397e-05 2.8218569e-05 9.4285714 - 84000 8.9765645e-06 0 2.1248852e-05 2.2900978e-05 2.8523886e-05 9.4285714 - 84100 8.8401475e-06 0 2.1813454e-05 2.3217945e-05 2.8203956e-05 9.4285714 - 84200 9.1081598e-06 0 2.0841493e-05 2.2640456e-05 2.8507967e-05 9.4285714 - 84300 9.133309e-06 0 2.0350405e-05 2.2313282e-05 2.9163429e-05 9.4285714 - 84400 9.0232336e-06 0 1.9869412e-05 2.1747862e-05 2.891624e-05 9.4285714 - 84500 9.0150135e-06 0 1.9669642e-05 2.1292995e-05 2.8884265e-05 9.4285714 - 84600 8.7504119e-06 0 1.9098291e-05 2.1117708e-05 2.9200315e-05 9.4285714 - 84700 7.7738787e-06 0 1.8566837e-05 2.1793757e-05 3.0190079e-05 9.4285714 - 84800 7.3443767e-06 0 1.8217822e-05 2.2484608e-05 2.9667101e-05 9.4285714 - 84900 7.6801643e-06 0 1.78525e-05 2.2877485e-05 2.832008e-05 9.4285714 - 85000 7.7195643e-06 0 1.800592e-05 2.3068248e-05 2.7915486e-05 9.4285714 - 85100 7.6499144e-06 0 1.8530442e-05 2.2898047e-05 2.8227078e-05 9.4285714 - 85200 7.32082e-06 0 1.9116444e-05 2.2906818e-05 2.7936188e-05 9.4285714 - 85300 7.1428279e-06 0 1.943214e-05 2.2867713e-05 2.7178667e-05 9.4285714 - 85400 6.9909138e-06 0 1.9200984e-05 2.28646e-05 2.6991324e-05 9.4285714 - 85500 6.884213e-06 0 1.9100717e-05 2.3013486e-05 2.6873435e-05 9.4285714 - 85600 6.7202361e-06 0 1.9526136e-05 2.3798531e-05 2.6888726e-05 9.4285714 - 85700 5.9758383e-06 0 2.045899e-05 2.4666306e-05 2.7257045e-05 9.4285714 - 85800 5.0096659e-06 0 2.0246158e-05 2.5355108e-05 2.8233262e-05 9.4285714 - 85900 4.5280067e-06 0 1.9707385e-05 2.5784389e-05 2.8855408e-05 9.4285714 - 86000 4.4772165e-06 0 1.921428e-05 2.5140915e-05 2.8714319e-05 9.4285714 - 86100 4.5351652e-06 0 1.924609e-05 2.4846555e-05 2.8007203e-05 9.4285714 - 86200 4.513446e-06 0 1.9920375e-05 2.4535727e-05 2.7780126e-05 9.4285714 - 86300 4.3055665e-06 0 2.0846388e-05 2.3758795e-05 2.7427779e-05 9.4285714 - 86400 4.2716968e-06 0 2.1353493e-05 2.3371464e-05 2.683057e-05 9.4285714 - 86500 4.2116921e-06 0 2.1134644e-05 2.3609037e-05 2.6799178e-05 9.4285714 - 86600 4.0128801e-06 0 2.1174e-05 2.3766447e-05 2.667212e-05 9.4285714 - 86700 4.1389561e-06 0 2.0750284e-05 2.3884837e-05 2.6517752e-05 9.4285714 - 86800 4.1881267e-06 0 1.9884415e-05 2.404381e-05 2.692584e-05 9.4285714 - 86900 3.9364494e-06 0 1.9517858e-05 2.3729685e-05 2.7122115e-05 9.4285714 - 87000 3.8839998e-06 0 1.9058007e-05 2.3177165e-05 2.7145809e-05 9.4285714 - 87100 3.853393e-06 0 1.9045357e-05 2.3041034e-05 2.7686016e-05 9.4285714 - 87200 3.6787772e-06 0 1.9355987e-05 2.3027685e-05 2.8072243e-05 9.4285714 - 87300 3.5766377e-06 0 1.9682253e-05 2.302215e-05 2.7817335e-05 9.4285714 - 87400 3.5075159e-06 0 1.989737e-05 2.3236677e-05 2.7298161e-05 9.4285714 - 87500 3.4900915e-06 0 1.9981654e-05 2.2924327e-05 2.6621041e-05 9.4285714 - 87600 3.5749174e-06 0 2.0142749e-05 2.2288497e-05 2.631543e-05 9.4285714 - 87700 3.545282e-06 0 2.00507e-05 2.1963235e-05 2.6240158e-05 9.4285714 - 87800 3.4612528e-06 0 1.9815216e-05 2.2121027e-05 2.6274717e-05 9.4285714 - 87900 3.4086212e-06 0 1.990072e-05 2.271949e-05 2.6730622e-05 9.4285714 - 88000 3.278284e-06 0 1.9650403e-05 2.3066277e-05 2.6973038e-05 9.4285714 - 88100 3.1997643e-06 0 1.919048e-05 2.3081334e-05 2.6947187e-05 9.4285714 - 88200 3.2624358e-06 0 1.8973985e-05 2.2906477e-05 2.6892086e-05 9.4285714 - 88300 3.3028659e-06 0 1.8752751e-05 2.266086e-05 2.6579262e-05 9.4285714 - 88400 3.2647999e-06 0 1.8770468e-05 2.2485793e-05 2.6586544e-05 9.4285714 - 88500 3.2137586e-06 0 1.9037269e-05 2.2328608e-05 2.6742029e-05 9.4285714 - 88600 3.2293896e-06 0 1.9222047e-05 2.2383294e-05 2.6620011e-05 9.4285714 - 88700 3.3400536e-06 0 1.888424e-05 2.2433025e-05 2.6490047e-05 9.4285714 - 88800 3.5028811e-06 0 1.823889e-05 2.2206966e-05 2.6031108e-05 9.4285714 - 88900 3.6626472e-06 0 1.7903656e-05 2.1911498e-05 2.5333618e-05 9.4285714 - 89000 3.7951908e-06 0 1.7988475e-05 2.1636822e-05 2.4914335e-05 9.4285714 - 89100 3.8810219e-06 0 1.8101467e-05 2.155905e-05 2.4596941e-05 9.4285714 - 89200 3.894077e-06 0 1.8336389e-05 2.1836116e-05 2.4575669e-05 9.4285714 - 89300 3.8931426e-06 0 1.8625676e-05 2.1981098e-05 2.4694483e-05 9.4285714 - 89400 3.8817963e-06 0 1.8971752e-05 2.1735872e-05 2.4588005e-05 9.4285714 - 89500 3.8639803e-06 0 1.9001381e-05 2.1209383e-05 2.4389848e-05 9.4285714 - 89600 3.9144586e-06 0 1.8747776e-05 2.0721312e-05 2.4222564e-05 9.4285714 - 89700 3.9129514e-06 0 1.8325344e-05 2.0471643e-05 2.4183077e-05 9.4285714 - 89800 3.7950695e-06 0 1.7998801e-05 2.0839569e-05 2.4353111e-05 9.4285714 - 89900 3.6663436e-06 0 1.7964905e-05 2.1624148e-05 2.4826112e-05 9.4285714 - 90000 3.5927353e-06 0 1.801633e-05 2.2048976e-05 2.4975196e-05 9.4285714 - 90100 3.6742798e-06 0 1.8129296e-05 2.2272958e-05 2.5014266e-05 9.4285714 - 90200 3.8196011e-06 0 1.8331029e-05 2.2181403e-05 2.4974527e-05 9.4285714 - 90300 3.8593906e-06 0 1.8550247e-05 2.2456259e-05 2.4906423e-05 9.4285714 - 90400 3.8238761e-06 0 1.8776214e-05 2.27429e-05 2.5362061e-05 9.4285714 - 90500 3.8375645e-06 0 1.8735064e-05 2.288521e-05 2.5931468e-05 9.4285714 - 90600 3.871899e-06 0 1.8598154e-05 2.342248e-05 2.6213633e-05 9.4285714 - 90700 3.8600363e-06 0 1.8556115e-05 2.353577e-05 2.6446203e-05 9.4285714 - 90800 3.8414152e-06 0 1.8554966e-05 2.3337777e-05 2.6580207e-05 9.4285714 - 90900 3.8154503e-06 0 1.890433e-05 2.2945653e-05 2.6879013e-05 9.4285714 - 91000 3.8511411e-06 0 1.9073005e-05 2.2336708e-05 2.7339501e-05 9.4285714 - 91100 3.9255325e-06 0 1.8914868e-05 2.2082842e-05 2.7574868e-05 9.4285714 - 91200 3.9297568e-06 0 1.8888208e-05 2.2010365e-05 2.7638604e-05 9.4285714 - 91300 3.9376913e-06 0 1.8874023e-05 2.2167459e-05 2.7740522e-05 9.4285714 - 91400 3.9192344e-06 0 1.9042767e-05 2.2717308e-05 2.7767191e-05 9.4285714 - 91500 3.8937727e-06 0 1.9634969e-05 2.3006426e-05 2.781538e-05 9.4285714 - 91600 3.921792e-06 0 1.9908826e-05 2.3188912e-05 2.7914222e-05 9.4285714 - 91700 3.8385848e-06 0 2.0213988e-05 2.344425e-05 2.8264386e-05 9.4285714 - 91800 3.6627259e-06 0 2.0497775e-05 2.3459994e-05 2.851886e-05 9.4285714 - 91900 3.5557229e-06 0 2.0136408e-05 2.3401237e-05 2.8798841e-05 9.4285714 - 92000 3.4183571e-06 0 2.0062255e-05 2.3649732e-05 2.9017732e-05 9.4285714 - 92100 3.286238e-06 0 2.02647e-05 2.3418325e-05 2.9155509e-05 9.4285714 - 92200 3.2252379e-06 0 2.0123472e-05 2.3636953e-05 2.9499923e-05 9.4285714 - 92300 3.2079641e-06 0 2.0275237e-05 2.3497334e-05 2.9647567e-05 9.4285714 - 92400 3.2259153e-06 0 2.0708703e-05 2.3099328e-05 2.9725269e-05 9.4285714 - 92500 3.3176983e-06 0 2.0438928e-05 2.3152393e-05 2.9592355e-05 9.4285714 - 92600 3.4754655e-06 0 2.0050115e-05 2.2662299e-05 2.9029002e-05 9.4285714 - 92700 3.5547985e-06 0 1.9798732e-05 2.2652731e-05 2.8413585e-05 9.4285714 - 92800 3.5217221e-06 0 1.988581e-05 2.3242446e-05 2.7864789e-05 9.4285714 - 92900 3.4830557e-06 0 2.0344291e-05 2.3437444e-05 2.7433339e-05 9.4285714 - 93000 3.5067848e-06 0 2.0026148e-05 2.3432841e-05 2.7260475e-05 9.4285714 - 93100 3.5613504e-06 0 1.9577789e-05 2.3350015e-05 2.7083996e-05 9.4285714 - 93200 3.5908192e-06 0 1.9144805e-05 2.2948321e-05 2.681918e-05 9.4285714 - 93300 3.6740418e-06 0 1.8487647e-05 2.2653173e-05 2.663755e-05 9.4285714 - 93400 3.7748516e-06 0 1.8488145e-05 2.2206179e-05 2.6480609e-05 9.4285714 - 93500 3.778067e-06 0 1.8380908e-05 2.1922993e-05 2.6390489e-05 9.4285714 - 93600 3.7950568e-06 0 1.8060505e-05 2.1818583e-05 2.6190461e-05 9.4285714 - 93700 3.902705e-06 0 1.8237874e-05 2.1387385e-05 2.580064e-05 9.4285714 - 93800 4.0019776e-06 0 1.8164284e-05 2.1231985e-05 2.5433884e-05 9.4285714 - 93900 4.058159e-06 0 1.8377519e-05 2.1116447e-05 2.5137932e-05 9.4285714 - 94000 4.1283039e-06 0 1.8691191e-05 2.0876996e-05 2.4948455e-05 9.4285714 - 94100 4.2352778e-06 0 1.8843744e-05 2.099217e-05 2.4821732e-05 9.4285714 - 94200 4.3082247e-06 0 1.9170735e-05 2.1187718e-05 2.4694007e-05 9.4285714 - 94300 4.357307e-06 0 1.9318899e-05 2.1165729e-05 2.4530933e-05 9.4285714 - 94400 4.4732817e-06 0 1.9379988e-05 2.1186172e-05 2.4309742e-05 9.4285714 - 94500 4.6143854e-06 0 1.9558025e-05 2.1010424e-05 2.4038303e-05 9.4285714 - 94600 4.739653e-06 0 1.9432883e-05 2.0885805e-05 2.3708797e-05 9.4285714 - 94700 4.8269276e-06 0 1.9225637e-05 2.0882097e-05 2.3615952e-05 9.4285714 - 94800 4.857571e-06 0 1.8648603e-05 2.0623127e-05 2.3843756e-05 9.4285714 - 94900 4.8387125e-06 0 1.7910494e-05 2.0653984e-05 2.4297454e-05 9.4285714 - 95000 4.7464338e-06 0 1.7524663e-05 2.1137372e-05 2.487821e-05 9.4285714 - 95100 4.4415589e-06 0 1.7540549e-05 2.1418891e-05 2.5499867e-05 9.4285714 - 95200 4.0268314e-06 0 1.7679307e-05 2.1403088e-05 2.5993178e-05 9.4285714 - 95300 3.7118025e-06 0 1.7925499e-05 2.1371139e-05 2.6377462e-05 9.4285714 - 95400 3.5288195e-06 0 1.8250412e-05 2.1387355e-05 2.6738319e-05 9.4285714 - 95500 3.4810828e-06 0 1.86484e-05 2.1399182e-05 2.7164649e-05 9.4285714 - 95600 3.5067551e-06 0 1.8915884e-05 2.1279427e-05 2.7470424e-05 9.4285714 - 95700 3.5278226e-06 0 1.9125631e-05 2.1219557e-05 2.7511986e-05 9.4285714 - 95800 3.5358542e-06 0 1.950961e-05 2.137663e-05 2.7601212e-05 9.4285714 - 95900 3.4501042e-06 0 1.9911824e-05 2.1777137e-05 2.7767027e-05 9.4285714 - 96000 3.331983e-06 0 1.9929882e-05 2.1659572e-05 2.7990694e-05 9.4285714 - 96100 3.2445136e-06 0 1.9787703e-05 2.1336326e-05 2.8200624e-05 9.4285714 - 96200 3.2599723e-06 0 1.9512823e-05 2.1402652e-05 2.8362702e-05 9.4285714 - 96300 3.3524759e-06 0 1.938361e-05 2.1219971e-05 2.8324964e-05 9.4285714 - 96400 3.4049862e-06 0 1.9566809e-05 2.1188455e-05 2.8344235e-05 9.4285714 - 96500 3.4560149e-06 0 1.9931983e-05 2.146743e-05 2.8486867e-05 9.4285714 - 96600 3.5377003e-06 0 2.0127624e-05 2.1453131e-05 2.8502924e-05 9.4285714 - 96700 3.5789688e-06 0 2.0205767e-05 2.1634778e-05 2.8535866e-05 9.4285714 - 96800 3.6009525e-06 0 2.0265564e-05 2.2163095e-05 2.8519643e-05 9.4285714 - 96900 3.6398358e-06 0 2.0186048e-05 2.2344187e-05 2.8242524e-05 9.4285714 - 97000 3.6926637e-06 0 2.0170213e-05 2.2358775e-05 2.7911553e-05 9.4285714 - 97100 3.7577286e-06 0 1.9995042e-05 2.2293935e-05 2.7592964e-05 9.4285714 - 97200 3.7951338e-06 0 1.972518e-05 2.2500533e-05 2.7324564e-05 9.4285714 - 97300 3.7915088e-06 0 1.9577123e-05 2.3151642e-05 2.7299762e-05 9.4285714 - 97400 3.7485224e-06 0 1.9324456e-05 2.30806e-05 2.7089915e-05 9.4285714 - 97500 3.7004488e-06 0 1.9219566e-05 2.2917658e-05 2.6888759e-05 9.4285714 - 97600 3.5146189e-06 0 1.9216453e-05 2.3350177e-05 2.6561724e-05 9.4285714 - 97700 3.2092658e-06 0 1.9210005e-05 2.3618954e-05 2.6020575e-05 9.4285714 - 97800 3.0741264e-06 0 1.8785442e-05 2.3901093e-05 2.5609259e-05 9.4285714 - 97900 3.2689032e-06 0 1.8332069e-05 2.3813462e-05 2.5281581e-05 9.4285714 - 98000 3.4879184e-06 0 1.7639391e-05 2.3233496e-05 2.5115654e-05 9.4285714 - 98100 3.0702391e-06 0 1.7345936e-05 2.36305e-05 2.524874e-05 9.4285714 - 98200 2.9214268e-06 0 1.7751691e-05 2.3810696e-05 2.5038638e-05 9.4285714 - 98300 2.9373287e-06 0 1.7414606e-05 2.3325178e-05 2.4758312e-05 9.4285714 - 98400 2.879615e-06 0 1.8218541e-05 2.3403674e-05 2.4845847e-05 9.4285714 - 98500 2.848204e-06 0 1.9008342e-05 2.3138169e-05 2.481977e-05 9.4285714 - 98600 2.7263423e-06 0 1.8559461e-05 2.2912112e-05 2.4778725e-05 9.4285714 - 98700 2.6065427e-06 0 1.8899571e-05 2.2936881e-05 2.4788275e-05 9.4285714 - 98800 2.4965223e-06 0 1.812463e-05 2.2777276e-05 2.4817472e-05 9.4285714 - 98900 2.5312476e-06 0 1.7188063e-05 2.2549286e-05 2.4758508e-05 9.4285714 - 99000 2.6511883e-06 0 1.7634415e-05 2.2369995e-05 2.4688578e-05 9.4285714 - 99100 2.7173422e-06 0 1.7730299e-05 2.1958527e-05 2.4725265e-05 9.4285714 - 99200 2.7416008e-06 0 1.7354475e-05 2.1383708e-05 2.4972238e-05 9.4285714 - 99300 2.7403492e-06 0 1.7710033e-05 2.0999817e-05 2.5194177e-05 9.4285714 - 99400 2.6759704e-06 0 1.7805932e-05 2.0887012e-05 2.5239724e-05 9.4285714 - 99500 2.7350974e-06 0 1.7591419e-05 2.1055636e-05 2.5010401e-05 9.4285714 - 99600 2.8807532e-06 0 1.7598054e-05 2.1135294e-05 2.4759587e-05 9.4285714 - 99700 2.9230897e-06 0 1.7610982e-05 2.1212426e-05 2.4583469e-05 9.4285714 - 99800 2.9159336e-06 0 1.7740095e-05 2.1476279e-05 2.4546909e-05 9.4285714 - 99900 2.8532894e-06 0 1.7977152e-05 2.14971e-05 2.4856973e-05 9.4285714 - 100000 2.7133352e-06 0 1.8003971e-05 2.1327905e-05 2.5243646e-05 9.4285714 -Loop time of 183.342 on 4 procs for 100000 steps with 2520 atoms - -Performance: 2356254.720 tau/day, 545.429 timesteps/s, 1.374 Matom-step/s -99.8% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.025623 | 1.0356 | 3.8189 | 158.0 | 0.56 -Bond | 2.5126 | 46.913 | 155.81 | 920.8 | 25.59 -Neigh | 2.6046 | 2.623 | 2.6318 | 0.7 | 1.43 -Comm | 2.0083 | 41.613 | 149.8 | 970.4 | 22.70 -Output | 0.12287 | 0.90946 | 1.6958 | 80.6 | 0.50 -Modify | 0.52882 | 5.0973 | 16.247 | 286.1 | 2.78 -Other | | 85.15 | | | 46.44 - -Nlocal: 630 ave 2514 max 0 min -Histogram: 3 0 0 0 0 0 0 0 0 1 -Nghost: 49.75 ave 193 max 0 min -Histogram: 3 0 0 0 0 0 0 0 0 1 -Neighs: 2476 ave 9897 max 0 min -Histogram: 3 0 0 0 0 0 0 0 0 1 - -Total # of neighbors = 9904 -Ave neighs/atom = 3.9301587 -Ave special neighs/atom = 36.31746 -Neighbor list builds = 4880 -Dangerous builds = 0 -Total wall time: 0:03:03 diff --git a/examples/python/README.fix_python_move b/examples/python/README.fix_python_move index 95730d327c..bcad36b413 100644 --- a/examples/python/README.fix_python_move +++ b/examples/python/README.fix_python_move @@ -11,6 +11,11 @@ access to memory owned by the C++ code, allows easy manipulation through numpy operations and avoids unnecessary copies. in.fix_python_move_nve_melt_opt: -This version of melt example uses NVE_Opt instead of NVE. While this Python +This version of the melt example uses NVE_Opt instead of NVE. While this Python implementation is still much slower than the native version, it shows that simple code transformations can lead to speedups. + +in.fix_python_move_nve_melt_group: +This version of the melt example uses NVE_Group instead of NVE. In this case +the nve time integration is supposed to be only applied to a subset of the +system determined by the group "half". diff --git a/examples/python/in.fix_python_move_nve_melt b/examples/python/in.fix_python_move_nve_melt index 0bcba36f67..01e0fba1aa 100644 --- a/examples/python/in.fix_python_move_nve_melt +++ b/examples/python/in.fix_python_move_nve_melt @@ -9,7 +9,7 @@ create_box 1 box create_atoms 1 box mass * 1.0 -velocity all create 3.0 87287 +velocity all create 3.0 87287 loop geom pair_style lj/cut 2.5 pair_coeff 1 1 1.0 1.0 2.5 diff --git a/examples/python/in.fix_python_move_nve_melt_group b/examples/python/in.fix_python_move_nve_melt_group new file mode 100644 index 0000000000..faf070ebac --- /dev/null +++ b/examples/python/in.fix_python_move_nve_melt_group @@ -0,0 +1,26 @@ +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +region box block 0 10 0 10 0 10 +create_box 1 box +create_atoms 1 box +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +region half block 0 5 0 10 0 10 +group half region half + +fix 1 all python/move py_nve.NVE_Group + +thermo 50 +run 250 diff --git a/examples/python/in.fix_python_move_nve_melt_opt b/examples/python/in.fix_python_move_nve_melt_opt index 426b4f4a70..4e57f32c00 100644 --- a/examples/python/in.fix_python_move_nve_melt_opt +++ b/examples/python/in.fix_python_move_nve_melt_opt @@ -9,7 +9,7 @@ create_box 1 box create_atoms 1 box mass * 1.0 -velocity all create 3.0 87287 +velocity all create 3.0 87287 loop geom pair_style lj/cut 2.5 pair_coeff 1 1 1.0 1.0 2.5 diff --git a/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.1 b/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.1 deleted file mode 100644 index 414ac69747..0000000000 --- a/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.1 +++ /dev/null @@ -1,77 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 3d Lennard-Jones melt - -units lj -atom_style atomic - -lattice fcc 0.8442 -Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 -region box block 0 10 0 10 0 10 -create_box 1 box -Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 4000 atoms - Time spent = 0.000658989 secs -mass * 1.0 - -velocity all create 3.0 87287 - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 2.5 - -neighbor 0.3 bin -neigh_modify every 20 delay 0 check no - -fix 1 all python/move py_nve.NVE - -thermo 50 -run 250 -Neighbor list info ... - update every 20 steps, delay 0 steps, check no - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 12 12 12 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.221 | 3.221 | 3.221 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3 -6.7733681 0 -2.2744931 -3.7033504 - 50 1.6758903 -4.7955425 0 -2.2823355 5.670064 - 100 1.6458363 -4.7492704 0 -2.2811332 5.8691042 - 150 1.6324555 -4.7286791 0 -2.280608 5.9589514 - 200 1.6630725 -4.7750988 0 -2.2811136 5.7364886 - 250 1.6275257 -4.7224992 0 -2.281821 5.9567365 -Loop time of 12.0574 on 1 procs for 250 steps with 4000 atoms - -Performance: 8957.186 tau/day, 20.734 timesteps/s -98.0% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.61686 | 0.61686 | 0.61686 | 0.0 | 5.12 -Neigh | 0.094026 | 0.094026 | 0.094026 | 0.0 | 0.78 -Comm | 0.015743 | 0.015743 | 0.015743 | 0.0 | 0.13 -Output | 0.00021815 | 0.00021815 | 0.00021815 | 0.0 | 0.00 -Modify | 11.328 | 11.328 | 11.328 | 0.0 | 93.95 -Other | | 0.002812 | | | 0.02 - -Nlocal: 4000 ave 4000 max 4000 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 5499 ave 5499 max 5499 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 151513 ave 151513 max 151513 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 151513 -Ave neighs/atom = 37.8783 -Neighbor list builds = 12 -Dangerous builds not checked -Total wall time: 0:00:12 diff --git a/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.4 b/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.4 deleted file mode 100644 index 8a8f4e4f33..0000000000 --- a/examples/python/log.27Nov18.fix_python_move_nve_melt.g++.4 +++ /dev/null @@ -1,77 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 3d Lennard-Jones melt - -units lj -atom_style atomic - -lattice fcc 0.8442 -Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 -region box block 0 10 0 10 0 10 -create_box 1 box -Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 4000 atoms - Time spent = 0.00041604 secs -mass * 1.0 - -velocity all create 3.0 87287 - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 2.5 - -neighbor 0.3 bin -neigh_modify every 20 delay 0 check no - -fix 1 all python/move py_nve.NVE - -thermo 50 -run 250 -Neighbor list info ... - update every 20 steps, delay 0 steps, check no - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 12 12 12 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 2.705 | 2.705 | 2.705 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3 -6.7733681 0 -2.2744931 -3.7033504 - 50 1.6754119 -4.7947589 0 -2.2822693 5.6615925 - 100 1.6503357 -4.756014 0 -2.2811293 5.8050524 - 150 1.6596605 -4.7699432 0 -2.2810749 5.7830138 - 200 1.6371874 -4.7365462 0 -2.2813789 5.9246674 - 250 1.6323462 -4.7292021 0 -2.2812949 5.9762238 -Loop time of 3.60532 on 4 procs for 250 steps with 4000 atoms - -Performance: 29955.711 tau/day, 69.342 timesteps/s -95.1% 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.15953 | 0.16556 | 0.16945 | 0.9 | 4.59 -Neigh | 0.024014 | 0.024431 | 0.024704 | 0.2 | 0.68 -Comm | 0.10837 | 0.26844 | 0.38063 | 19.1 | 7.45 -Output | 0.00021553 | 0.0063262 | 0.0088348 | 4.5 | 0.18 -Modify | 3.0299 | 3.138 | 3.3038 | 5.7 | 87.04 -Other | | 0.002585 | | | 0.07 - -Nlocal: 1000 ave 1010 max 982 min -Histogram: 1 0 0 0 0 0 1 0 0 2 -Nghost: 2703.75 ave 2713 max 2689 min -Histogram: 1 0 0 0 0 0 0 2 0 1 -Neighs: 37915.5 ave 39239 max 36193 min -Histogram: 1 0 0 0 0 1 1 0 0 1 - -Total # of neighbors = 151662 -Ave neighs/atom = 37.9155 -Neighbor list builds = 12 -Dangerous builds not checked -Total wall time: 0:00:03 diff --git a/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.1 b/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.1 deleted file mode 100644 index e3c9ee4aa2..0000000000 --- a/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.1 +++ /dev/null @@ -1,77 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 3d Lennard-Jones melt - -units lj -atom_style atomic - -lattice fcc 0.8442 -Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 -region box block 0 10 0 10 0 10 -create_box 1 box -Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 4000 atoms - Time spent = 0.000703096 secs -mass * 1.0 - -velocity all create 3.0 87287 - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 2.5 - -neighbor 0.3 bin -neigh_modify every 20 delay 0 check no - -fix 1 all python/move py_nve.NVE_Opt - -thermo 50 -run 250 -Neighbor list info ... - update every 20 steps, delay 0 steps, check no - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 12 12 12 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.221 | 3.221 | 3.221 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3 -6.7733681 0 -2.2744931 -3.7033504 - 50 1.6758903 -4.7955425 0 -2.2823355 5.670064 - 100 1.6458363 -4.7492704 0 -2.2811332 5.8691042 - 150 1.6324555 -4.7286791 0 -2.280608 5.9589514 - 200 1.6630725 -4.7750988 0 -2.2811136 5.7364886 - 250 1.6275257 -4.7224992 0 -2.281821 5.9567365 -Loop time of 0.806998 on 1 procs for 250 steps with 4000 atoms - -Performance: 133829.286 tau/day, 309.790 timesteps/s -95.2% 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.60639 | 0.60639 | 0.60639 | 0.0 | 75.14 -Neigh | 0.092807 | 0.092807 | 0.092807 | 0.0 | 11.50 -Comm | 0.013782 | 0.013782 | 0.013782 | 0.0 | 1.71 -Output | 0.00021243 | 0.00021243 | 0.00021243 | 0.0 | 0.03 -Modify | 0.091672 | 0.091672 | 0.091672 | 0.0 | 11.36 -Other | | 0.00213 | | | 0.26 - -Nlocal: 4000 ave 4000 max 4000 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 5499 ave 5499 max 5499 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 151513 ave 151513 max 151513 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 151513 -Ave neighs/atom = 37.8783 -Neighbor list builds = 12 -Dangerous builds not checked -Total wall time: 0:00:00 diff --git a/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.4 b/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.4 deleted file mode 100644 index b4fbdcbc44..0000000000 --- a/examples/python/log.27Nov18.fix_python_move_nve_melt_opt.g++.4 +++ /dev/null @@ -1,77 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 3d Lennard-Jones melt - -units lj -atom_style atomic - -lattice fcc 0.8442 -Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 -region box block 0 10 0 10 0 10 -create_box 1 box -Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 4000 atoms - Time spent = 0.000407457 secs -mass * 1.0 - -velocity all create 3.0 87287 - -pair_style lj/cut 2.5 -pair_coeff 1 1 1.0 1.0 2.5 - -neighbor 0.3 bin -neigh_modify every 20 delay 0 check no - -fix 1 all python/move py_nve.NVE_Opt - -thermo 50 -run 250 -Neighbor list info ... - update every 20 steps, delay 0 steps, check no - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 12 12 12 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 2.705 | 2.705 | 2.705 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 3 -6.7733681 0 -2.2744931 -3.7033504 - 50 1.6754119 -4.7947589 0 -2.2822693 5.6615925 - 100 1.6503357 -4.756014 0 -2.2811293 5.8050524 - 150 1.6596605 -4.7699432 0 -2.2810749 5.7830138 - 200 1.6371874 -4.7365462 0 -2.2813789 5.9246674 - 250 1.6323462 -4.7292021 0 -2.2812949 5.9762238 -Loop time of 0.283796 on 4 procs for 250 steps with 4000 atoms - -Performance: 380554.630 tau/day, 880.913 timesteps/s -93.1% 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.16068 | 0.16297 | 0.167 | 0.6 | 57.42 -Neigh | 0.024281 | 0.02511 | 0.027018 | 0.7 | 8.85 -Comm | 0.033199 | 0.035637 | 0.03814 | 1.3 | 12.56 -Output | 0.00044489 | 0.00057381 | 0.00065589 | 0.0 | 0.20 -Modify | 0.056902 | 0.058489 | 0.06128 | 0.7 | 20.61 -Other | | 0.001018 | | | 0.36 - -Nlocal: 1000 ave 1010 max 982 min -Histogram: 1 0 0 0 0 0 1 0 0 2 -Nghost: 2703.75 ave 2713 max 2689 min -Histogram: 1 0 0 0 0 0 0 2 0 1 -Neighs: 37915.5 ave 39239 max 36193 min -Histogram: 1 0 0 0 0 1 1 0 0 1 - -Total # of neighbors = 151662 -Ave neighs/atom = 37.9155 -Neighbor list builds = 12 -Dangerous builds not checked -Total wall time: 0:00:00 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.1 b/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.1 new file mode 100644 index 0000000000..c4ad9aff59 --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.1 @@ -0,0 +1,79 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.000 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +fix 1 all python/move py_nve.NVE + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.222 | 3.222 | 3.222 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 1.6842865 -4.8082494 0 -2.2824513 5.5666131 + 100 1.6712577 -4.7875609 0 -2.281301 5.6613913 + 150 1.6444751 -4.7471034 0 -2.2810074 5.8614211 + 200 1.6471542 -4.7509053 0 -2.2807916 5.8805431 + 250 1.6645597 -4.7774327 0 -2.2812174 5.7526089 +Loop time of 3.66146 on 1 procs for 250 steps with 4000 atoms + +Performance: 29496.440 tau/day, 68.279 timesteps/s, 273.115 katom-step/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 | 0.23729 | 0.23729 | 0.23729 | 0.0 | 6.48 +Neigh | 0.040622 | 0.040622 | 0.040622 | 0.0 | 1.11 +Comm | 0.0039322 | 0.0039322 | 0.0039322 | 0.0 | 0.11 +Output | 0.00012494 | 0.00012494 | 0.00012494 | 0.0 | 0.00 +Modify | 3.3786 | 3.3786 | 3.3786 | 0.0 | 92.28 +Other | | 0.0008607 | | | 0.02 + +Nlocal: 4000 ave 4000 max 4000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5506 ave 5506 max 5506 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 151788 ave 151788 max 151788 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 151788 +Ave neighs/atom = 37.947 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:03 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.4 b/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.4 new file mode 100644 index 0000000000..00ac0ed0ce --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt.g++.4 @@ -0,0 +1,79 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.001 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +fix 1 all python/move py_nve.NVE + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.706 | 2.706 | 2.706 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 1.6842865 -4.8082494 0 -2.2824513 5.5666131 + 100 1.6712577 -4.7875609 0 -2.281301 5.6613913 + 150 1.6444751 -4.7471034 0 -2.2810074 5.8614211 + 200 1.6471542 -4.7509053 0 -2.2807916 5.8805431 + 250 1.6645597 -4.7774327 0 -2.2812174 5.7526089 +Loop time of 0.972696 on 4 procs for 250 steps with 4000 atoms + +Performance: 111031.629 tau/day, 257.018 timesteps/s, 1.028 Matom-step/s +99.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 | 0.05346 | 0.054577 | 0.055266 | 0.3 | 5.61 +Neigh | 0.010978 | 0.011104 | 0.011217 | 0.1 | 1.14 +Comm | 0.0084783 | 0.02972 | 0.04158 | 7.5 | 3.06 +Output | 0.00010274 | 0.00023062 | 0.0003223 | 0.0 | 0.02 +Modify | 0.86601 | 0.8767 | 0.89813 | 1.4 | 90.13 +Other | | 0.0003663 | | | 0.04 + +Nlocal: 1000 ave 1008 max 987 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 2711.25 ave 2728 max 2693 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Neighs: 37947 ave 38966 max 37338 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 151788 +Ave neighs/atom = 37.947 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:01 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.1 b/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.1 new file mode 100644 index 0000000000..614416f949 --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.1 @@ -0,0 +1,83 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.000 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +region half block 0 5 0 10 0 10 +group half region half +2200 atoms in group half + +fix 1 all python/move py_nve.NVE_Group + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.222 | 3.222 | 3.222 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 2.2803754 -5.6981497 0 -2.2784418 1.4026309 + 100 2.2571714 -5.6629932 0 -2.2780826 1.5883697 + 150 2.2437702 -5.6429595 0 -2.2781456 1.6923128 + 200 2.2521243 -5.6556289 0 -2.2782869 1.6180165 + 250 2.2557075 -5.6609797 0 -2.2782644 1.6293141 +Loop time of 2.31373 on 1 procs for 250 steps with 4000 atoms + +Performance: 46677.830 tau/day, 108.051 timesteps/s, 432.202 katom-step/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 | 0.21054 | 0.21054 | 0.21054 | 0.0 | 9.10 +Neigh | 0.037366 | 0.037366 | 0.037366 | 0.0 | 1.61 +Comm | 0.003807 | 0.003807 | 0.003807 | 0.0 | 0.16 +Output | 0.00011988 | 0.00011988 | 0.00011988 | 0.0 | 0.01 +Modify | 2.061 | 2.061 | 2.061 | 0.0 | 89.08 +Other | | 0.0008617 | | | 0.04 + +Nlocal: 4000 ave 4000 max 4000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5696 ave 5696 max 5696 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 153353 ave 153353 max 153353 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 153353 +Ave neighs/atom = 38.33825 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:02 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.4 b/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.4 new file mode 100644 index 0000000000..ee48bdfbc6 --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt_group.g++.4 @@ -0,0 +1,83 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.000 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +region half block 0 5 0 10 0 10 +group half region half +2200 atoms in group half + +fix 1 all python/move py_nve.NVE_Group + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.706 | 2.706 | 2.706 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 2.2803754 -5.6981497 0 -2.2784418 1.4026309 + 100 2.2571714 -5.6629932 0 -2.2780826 1.5883697 + 150 2.2437702 -5.6429595 0 -2.2781456 1.6923128 + 200 2.2521243 -5.6556289 0 -2.2782869 1.6180165 + 250 2.2557075 -5.6609797 0 -2.2782644 1.6293141 +Loop time of 0.620903 on 4 procs for 250 steps with 4000 atoms + +Performance: 173940.341 tau/day, 402.640 timesteps/s, 1.611 Matom-step/s +99.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 | 0.04498 | 0.045341 | 0.045709 | 0.1 | 7.30 +Neigh | 0.0099384 | 0.010015 | 0.01007 | 0.1 | 1.61 +Comm | 0.01063 | 0.022131 | 0.030917 | 5.9 | 3.56 +Output | 0.00012828 | 0.0002673 | 0.00040041 | 0.0 | 0.04 +Modify | 0.53425 | 0.54277 | 0.5538 | 1.2 | 87.42 +Other | | 0.0003805 | | | 0.06 + +Nlocal: 1000 ave 1016 max 986 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +Nghost: 2814.75 ave 2822 max 2801 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Neighs: 38338.2 ave 38813 max 37431 min +Histogram: 1 0 0 0 0 0 0 1 1 1 + +Total # of neighbors = 153353 +Ave neighs/atom = 38.33825 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.1 b/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.1 new file mode 100644 index 0000000000..83a5166c89 --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.1 @@ -0,0 +1,79 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.000 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +fix 1 all python/move py_nve.NVE_Opt + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.222 | 3.222 | 3.222 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 1.6842865 -4.8082494 0 -2.2824513 5.5666131 + 100 1.6712577 -4.7875609 0 -2.281301 5.6613913 + 150 1.6444751 -4.7471034 0 -2.2810074 5.8614211 + 200 1.6471542 -4.7509053 0 -2.2807916 5.8805431 + 250 1.6645597 -4.7774327 0 -2.2812174 5.7526089 +Loop time of 0.316923 on 1 procs for 250 steps with 4000 atoms + +Performance: 340776.880 tau/day, 788.835 timesteps/s, 3.155 Matom-step/s +98.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 | 0.24498 | 0.24498 | 0.24498 | 0.0 | 77.30 +Neigh | 0.041376 | 0.041376 | 0.041376 | 0.0 | 13.06 +Comm | 0.0040989 | 0.0040989 | 0.0040989 | 0.0 | 1.29 +Output | 8.871e-05 | 8.871e-05 | 8.871e-05 | 0.0 | 0.03 +Modify | 0.025643 | 0.025643 | 0.025643 | 0.0 | 8.09 +Other | | 0.0007382 | | | 0.23 + +Nlocal: 4000 ave 4000 max 4000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5506 ave 5506 max 5506 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 151788 ave 151788 max 151788 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 151788 +Ave neighs/atom = 37.947 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.4 b/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.4 new file mode 100644 index 0000000000..b0f0e3d9a6 --- /dev/null +++ b/examples/python/log.7Aug25.fix_python_move_nve_melt_opt.g++.4 @@ -0,0 +1,79 @@ +LAMMPS (22 Jul 2025 - Development - patch_22Jul2025-66-g83ae9bedbd-modified) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt + +units lj +atom_style atomic + +lattice fcc 0.8442 +Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962 +region box block 0 10 0 10 0 10 +create_box 1 box +Created orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 4000 atoms + using lattice units in orthogonal box = (0 0 0) to (16.795962 16.795962 16.795962) + create_atoms CPU = 0.000 seconds +mass * 1.0 + +velocity all create 3.0 87287 loop geom + +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 2.5 + +neighbor 0.3 bin +neigh_modify every 20 delay 0 check no + +fix 1 all python/move py_nve.NVE_Opt + +thermo 50 +run 250 +Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 20 steps, delay = 0 steps, check = no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.706 | 2.706 | 2.706 Mbytes + Step Temp E_pair E_mol TotEng Press + 0 3 -6.7733681 0 -2.2744931 -3.7033504 + 50 1.6842865 -4.8082494 0 -2.2824513 5.5666131 + 100 1.6712577 -4.7875609 0 -2.281301 5.6613913 + 150 1.6444751 -4.7471034 0 -2.2810074 5.8614211 + 200 1.6471542 -4.7509053 0 -2.2807916 5.8805431 + 250 1.6645597 -4.7774327 0 -2.2812174 5.7526089 +Loop time of 0.0915541 on 4 procs for 250 steps with 4000 atoms + +Performance: 1179630.379 tau/day, 2730.626 timesteps/s, 10.923 Matom-step/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 | 0.049528 | 0.050132 | 0.051311 | 0.3 | 54.76 +Neigh | 0.011154 | 0.01133 | 0.011566 | 0.2 | 12.38 +Comm | 0.0096986 | 0.01105 | 0.012323 | 0.9 | 12.07 +Output | 8.1376e-05 | 9.442e-05 | 0.00012098 | 0.0 | 0.10 +Modify | 0.018126 | 0.018619 | 0.018872 | 0.2 | 20.34 +Other | | 0.0003286 | | | 0.36 + +Nlocal: 1000 ave 1008 max 987 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 2711.25 ave 2728 max 2693 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Neighs: 37947 ave 38966 max 37338 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 151788 +Ave neighs/atom = 37.947 +Neighbor list builds = 12 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/python/py_nve.py b/examples/python/py_nve.py index 740668b850..c241b586c0 100644 --- a/examples/python/py_nve.py +++ b/examples/python/py_nve.py @@ -33,7 +33,7 @@ def reset_dt(self): class NVE(LAMMPSFixMove): """ Python implementation of fix/nve """ def __init__(self, ptr, group_name="all"): - super(NVE, self).__init__(ptr) + super(NVE, self).__init__(ptr, group_name) assert(self.group_name == "all") def init(self): @@ -49,8 +49,9 @@ def initial_integrate(self, vflag): x = self.lmp.numpy.extract_atom("x") v = self.lmp.numpy.extract_atom("v") f = self.lmp.numpy.extract_atom("f") + nlocal = self.lmp.extract_setting("nlocal") - for i in range(x.shape[0]): + for i in range(nlocal): dtfm = self.dtf / mass[int(atype[i])] v[i,:]+= dtfm * f[i,:] x[i,:] += self.dtv * v[i,:] @@ -60,8 +61,9 @@ def final_integrate(self): atype = self.lmp.numpy.extract_atom("type") v = self.lmp.numpy.extract_atom("v") f = self.lmp.numpy.extract_atom("f") + nlocal = self.lmp.extract_setting("nlocal") - for i in range(v.shape[0]): + for i in range(nlocal): dtfm = self.dtf / mass[int(atype[i])] v[i,:] += dtfm * f[i,:] @@ -69,7 +71,7 @@ def final_integrate(self): class NVE_Opt(LAMMPSFixMove): """ Performance-optimized Python implementation of fix/nve """ def __init__(self, ptr, group_name="all"): - super(NVE_Opt, self).__init__(ptr) + super(NVE_Opt, self).__init__(ptr, group_name) assert(self.group_name == "all") def init(self): @@ -79,29 +81,77 @@ def init(self): self.dtv = dt self.dtf = 0.5 * dt * ftm2v - def initial_integrate(self, vflag): + def initial_integrate(self, vflag): + nlocal = self.lmp.extract_setting("nlocal") mass = self.lmp.numpy.extract_atom("mass") atype = self.lmp.numpy.extract_atom("type") - x = self.lmp.numpy.extract_atom("x") - v = self.lmp.numpy.extract_atom("v") - f = self.lmp.numpy.extract_atom("f") + x = self.lmp.numpy.extract_atom("x")[:nlocal,:] + v = self.lmp.numpy.extract_atom("v")[:nlocal,:] + f = self.lmp.numpy.extract_atom("f")[:nlocal,:] dtf = self.dtf dtv = self.dtv - dtfm = dtf / np.take(mass, atype) + dtfm = dtf / np.take(mass, atype[:nlocal]) for d in range(x.shape[1]): v[:,d] += dtfm * f[:,d] x[:,d] += dtv * v[:,d] def final_integrate(self): + nlocal = self.lmp.extract_setting("nlocal") mass = self.lmp.numpy.extract_atom("mass") atype = self.lmp.numpy.extract_atom("type") - v = self.lmp.numpy.extract_atom("v") - f = self.lmp.numpy.extract_atom("f") - dtf = self.dtf + v = self.lmp.numpy.extract_atom("v")[:nlocal,:] + f = self.lmp.numpy.extract_atom("f")[:nlocal,:] - dtfm = dtf / np.take(mass, atype) + dtf = self.dtf + dtfm = dtf / np.take(mass, atype[:nlocal]) for d in range(v.shape[1]): v[:,d] += dtfm * f[:,d] + +class NVE_Group(LAMMPSFixMove): + """ Python implementation of fix/nve with group""" + def __init__(self, ptr, group_name="half"): + super(NVE_Group, self).__init__(ptr, group_name) + assert(self.group_name == "half") + + def init(self): + dt = self.lmp.extract_global("dt") + ftm2v = self.lmp.extract_global("ftm2v") + self.ntypes = self.lmp.extract_global("ntypes") + self.dtv = dt + self.dtf = 0.5 * dt * ftm2v + group_index = self.lmp.available_ids("group").index(self.group_name) + self.group_mask = 1 << group_index + + def initial_integrate(self, vflag): + mass = self.lmp.numpy.extract_atom("mass") + atype = self.lmp.numpy.extract_atom("type") + mask = self.lmp.numpy.extract_atom("mask") + x = self.lmp.numpy.extract_atom("x") + v = self.lmp.numpy.extract_atom("v") + f = self.lmp.numpy.extract_atom("f") + nlocal = self.lmp.extract_setting("nlocal") + + for i in range(nlocal): + if mask[i] & self.group_mask: + dtfm = self.dtf / mass[int(atype[i])] + v[i,:]+= dtfm * f[i,:] + x[i,:] += self.dtv * v[i,:] + + def final_integrate(self): + mass = self.lmp.numpy.extract_atom("mass") + mask = self.lmp.numpy.extract_atom("mask") + atype = self.lmp.numpy.extract_atom("type") + v = self.lmp.numpy.extract_atom("v") + f = self.lmp.numpy.extract_atom("f") + nlocal = self.lmp.extract_setting("nlocal") + + for i in range(nlocal): + if mask[i] & self.group_mask: + dtfm = self.dtf / mass[int(atype[i])] + v[i,:] += dtfm * f[i,:] + + + diff --git a/examples/rheo/oxidation/log.22Jul2025.oxidation.g++.4 b/examples/rheo/oxidation/log.22Jul2025.oxidation.g++.4 new file mode 100644 index 0000000000..31c22dbaf6 --- /dev/null +++ b/examples/rheo/oxidation/log.22Jul2025.oxidation.g++.4 @@ -0,0 +1,507 @@ +LAMMPS (22 Jul 2025 - Development - patch_2Apr2025-1550-g1d846f7d16-modified) +# ------ 2D oxidizing bar ------ # + +dimension 2 +units lj +atom_style hybrid rheo/thermal bond +boundary m m p +comm_modify vel yes +newton off + +region box block -60 60 0 80 -0.01 0.01 units box +create_box 3 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50 +Created orthogonal box = (-60 0 -0.01) to (60 80 0.01) + 2 by 2 by 1 MPI processor grid + +region lbar block -15 0 3 80 EDGE EDGE units box +region rbar block 0 15 3 80 EDGE EDGE units box +region bar union 2 lbar rbar +region floor block EDGE EDGE EDGE 3.0 EDGE EDGE units box + +lattice hex 1.0 +Lattice spacing in x,y,z = 1.0745699 1.8612097 1.0745699 +create_atoms 1 region bar +Created 2255 atoms + using lattice units in orthogonal box = (-60 0 -0.01) to (60 80 0.01) + create_atoms CPU = 0.001 seconds +create_atoms 3 region floor +Created 446 atoms + using lattice units in orthogonal box = (-60 0 -0.01) to (60 80 0.01) + create_atoms CPU = 0.000 seconds + +set region rbar type 2 +Setting atom values ... + 1148 settings made for type +group bar type 1 2 +2255 atoms in group bar +group rbar type 2 +1148 atoms in group rbar +group floor type 3 +446 atoms in group floor + +set group all sph/e 0.0 +Setting atom values ... + 2701 settings made for sph/e +set group all rheo/status 1 +Setting atom values ... + 2701 settings made for rheo/status + +# ------ Model parameters ------# + +variable cut equal 3.0 +variable n equal 1.0 +variable rho0 equal 1.0 +variable cs equal 1.0 +variable mp equal ${rho0}/${n} +variable mp equal 1/${n} +variable mp equal 1/1 +variable zeta equal 0.05 +variable kappa equal 0.1*${rho0}/${mp} +variable kappa equal 0.1*1/${mp} +variable kappa equal 0.1*1/1 +variable dt_max equal 0.1*${cut}/${cs}/3 +variable dt_max equal 0.1*3/${cs}/3 +variable dt_max equal 0.1*3/1/3 +variable eta equal 0.05 +variable Cv equal 1.0 +variable L equal 0.1 +variable Tf equal 1.0 + +mass * ${mp} +mass * 1 +timestep 0.1 + +pair_style hybrid/overlay rheo ${cut} artificial/visc ${zeta} rheo/solid +pair_style hybrid/overlay rheo 3 artificial/visc ${zeta} rheo/solid +pair_style hybrid/overlay rheo 3 artificial/visc 0.05 rheo/solid +pair_coeff * * rheo +pair_coeff * * rheo/solid 1.0 1.0 1.0 + +special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 0 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.000 seconds +create_bonds many bar bar 1 0 1.5 +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.3 + ghost atom cutoff = 3.3 + binsize = 1.65, bins = 73 49 1 + 3 neighbor lists, perpetual/occasional/extra = 2 1 0 + (1) command create_bonds, occasional + attributes: full, newton off + pair build: full/bin + stencil: full/bin/2d + bin: standard + (2) pair rheo, perpetual + attributes: half, newton off, cut 3.3 + pair build: half/bin/newtoff + stencil: full/bin/2d + bin: standard + (3) pair rheo/solid, perpetual, copy from (2) + attributes: half, newton off + pair build: copy + stencil: none + bin: none +WARNING: Create_bonds max distance > minimum neighbor cutoff (../create_bonds.cpp:194) +Added 6547 bonds, new total = 6547 +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 1 1 + 6 = max # of 1-2 neighbors + 101 = max # of special neighbors + special bonds CPU = 0.000 seconds +special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 + +bond_style hybrid bpm/spring rheo/shell t/form 100 +bond_coeff 1 bpm/spring 1.0 1.0 1.0 +bond_coeff 2 rheo/shell 0.2 0.2 0.1 + +# ------ Apply dynamics ------# + +# Note: surface detection is not performed on solid bodies, so cannot use surface property +compute coord all rheo/property/atom coordination +variable surf atom c_coord<22 +group surf dynamic all var surf every 10 +dynamic group surf defined + +fix 1 all rheo ${cut} quintic 0 thermal shift surface/detection coordination 22 8 +fix 1 all rheo 3 quintic 0 thermal shift surface/detection coordination 22 8 +fix 2 all rheo/viscosity * constant ${eta} +fix 2 all rheo/viscosity * constant 0.05 +fix 3 all rheo/pressure * linear +fix 4 all rheo/thermal conductivity * constant ${kappa} specific/heat * constant ${Cv} Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 +fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant ${Cv} Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 +fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 +fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant 1 latent/heat * constant ${L} react 1.5 1 +fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant 1 latent/heat * constant 0.1 react 1.5 1 + +fix 5 rbar rheo/oxidation 1.5 2 1.0 +fix 6 all wall/harmonic ylo EDGE 2.0 1.0 1.0 +fix 7 all gravity 5e-5 vector 0 -1 0 +fix 8 floor setforce 0.0 0.0 0.0 +fix 9 surf add/heat linear 1.1 0.5 +fix 10 floor add/heat constant 0 overwrite yes # fix the temperature of the floor +fix 11 all enforce2d + +compute surf all rheo/property/atom surface +compute rho all rheo/property/atom rho +compute phase all rheo/property/atom phase +compute temp all rheo/property/atom temperature +compute eng all rheo/property/atom energy +compute nbond_shell all rheo/property/atom nbond/shell +compute nbond_solid all nbond/atom bond/type 1 + +# ------ Output & Run ------ # + +thermo 200 +thermo_style custom step time ke press atoms + +dump 1 all custom 200 atomDump id type x y vx vy fx fy c_phase c_temp c_eng c_nbond_solid c_nbond_shell c_rho c_surf + +run 40000 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- BPM bond style: doi:10.1039/D3SM01373A + +@Article{Clemmer2024, + author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, + title = {A soft departure from jamming: the compaction of deformable + granular matter under high pressures}, + journal = {Soft Matter}, + year = 2024, + volume = 20, + number = 8, + pages = {1702--1718} +} + +- RHEO package: doi:10.1063/5.0228823 + +@article{Palermo2024, + journal = {Physics of Fluids}, + title = {Reproducing hydrodynamics and elastic objects: A hybrid mesh-free model framework for dynamic multi-phase flows}, + volume = {36}, + number = {11}, + pages = {113337}, + year = {2024}, + issn = {1070-6631}, + doi = {https://doi.org/10.1063/5.0228823}, + author = {Palermo, Eric T. and Wolf, Ki T. and Clemmer, Joel T. and O'Connor, Thomas C.}, +} + +- @article{ApplMathModel.130.310, + title = {A hybrid smoothed-particle hydrodynamics model of oxide skins on molten aluminum}, + journal = {Applied Mathematical Modelling}, + volume = {130}, + pages = {310-326}, + year = {2024}, + issn = {0307-904X}, + doi = {https://doi.org/10.1016/j.apm.2024.02.027}, + author = {Joel T. Clemmer and Flint Pierce and Thomas C. O'Connor and Thomas D. Nevins and Elizabeth M.C. Jones and Jeremy B. Lechman and John Tencer}, +} + +- RHEO oxidation: doi:10.1016/j.apm.2024.02.027 + +@article{ApplMathModel.130.310, + title = {A hybrid smoothed-particle hydrodynamics model of oxide skins on molten aluminum}, + journal = {Applied Mathematical Modelling}, + volume = {130}, + pages = {310-326}, + year = {2024}, + issn = {0307-904X}, + doi = {https://doi.org/10.1016/j.apm.2024.02.027}, + author = {Joel T. Clemmer and Flint Pierce and Thomas C. O'Connor and Thomas D. Nevins and Elizabeth M.C. Jones and Jeremy B. Lechman and John Tencer}, +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.3 + ghost atom cutoff = 3.3 + binsize = 1.65, bins = 73 49 1 + 8 neighbor lists, perpetual/occasional/extra = 7 1 0 + (1) pair rheo, perpetual, half/full from (3) + attributes: half, newton off, cut 3.3 + pair build: halffull/newtoff + stencil: none + bin: none + (2) pair rheo/solid, perpetual, copy from (1) + attributes: half, newton off + pair build: copy + stencil: none + bin: none + (3) compute RHEO/KERNEL, perpetual + attributes: full, newton off + pair build: full/bin + stencil: full/bin/2d + bin: standard + (4) compute RHEO/GRAD, perpetual, copy from (2) + attributes: half, newton off + pair build: copy + stencil: none + bin: none + (5) compute RHEO/VSHIFT, perpetual, copy from (2) + attributes: half, newton off + pair build: copy + stencil: none + bin: none + (6) compute RHEO/SURFACE, perpetual, copy from (2) + attributes: half, newton off + pair build: copy + stencil: none + bin: none + (7) fix rheo/thermal, occasional, trim from (1) + attributes: half, newton off, cut 3 + pair build: trim + stencil: none + bin: none + (8) fix rheo/oxidation, perpetual + attributes: full, newton off, cut 1.8 + pair build: full/bin + stencil: full/bin/2d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 25.73 | 25.73 | 25.73 Mbytes + Step Time KinEng Press Atoms + 0 0 0 0 2701 + 200 20 4.1743799e-07 1.1743617e-07 2701 + 400 40 1.6697519e-06 4.6974469e-07 2701 + 600 60 3.7127333e-06 1.0646825e-05 2701 + 800 80 4.6683656e-06 0.00015182605 2701 + 1000 100 4.7368707e-06 0.00028128761 2701 + 1200 120 3.4384322e-06 0.00045913378 2701 + 1400 140 1.4119866e-06 0.00055627091 2701 + 1600 160 4.4114517e-07 0.00058247308 2701 + 1800 180 4.8289229e-07 0.0005510948 2701 + 2000 200 1.8494183e-06 0.00048386222 2701 + 2200 220 3.3319816e-06 0.00037903264 2701 + 2400 240 3.8128922e-06 0.00024115906 2701 + 2600 260 3.1943401e-06 9.727407e-05 2701 + 2800 280 1.6172816e-06 -2.632162e-05 2701 + 3000 300 3.6100709e-07 -8.5761867e-05 2701 + 3200 320 1.4745502e-07 -5.9204127e-05 2701 + 3400 340 8.3369782e-07 8.8312464e-07 2701 + 3600 360 2.0484052e-06 5.8521477e-05 2701 + 3800 380 3.1639387e-06 0.0001685663 2701 + 4000 400 3.1692907e-06 0.00026875988 2701 + 4200 420 2.391933e-06 0.00038621787 2701 + 4400 440 1.1964404e-06 0.00048901286 2701 + 4600 460 4.0508824e-07 0.00051863639 2701 + 4800 480 5.4908507e-07 0.00049263754 2701 + 5000 500 1.3139665e-06 0.00041984264 2701 + 5200 520 2.1939161e-06 0.00033095351 2701 + 5400 540 2.3687031e-06 0.00022422981 2701 + 5600 560 1.8280882e-06 0.00011544328 2701 + 5800 580 8.8610517e-07 2.9307791e-05 2701 + 6000 600 2.0989359e-07 -1.7340941e-05 2701 + 6200 620 2.8658301e-07 -8.1237835e-06 2701 + 6400 640 9.7636239e-07 4.3755922e-05 2701 + 6600 660 1.891303e-06 0.0001185719 2701 + 6800 680 2.4149904e-06 0.00020830273 2701 + 7000 700 2.3174953e-06 0.00030114767 2701 + 7200 720 1.7918612e-06 0.00037821537 2701 + 7400 740 1.2114987e-06 0.0004233475 2701 + 7600 760 9.9661553e-07 0.00042958263 2701 + 7800 780 1.1552559e-06 0.00039944618 2701 + 8000 800 1.5249138e-06 0.00034034478 2701 + 8200 820 1.7453861e-06 0.00026826463 2701 + 8400 840 1.6259021e-06 0.00019131768 2701 + 8600 860 1.2612805e-06 0.0001162957 2701 + 8800 880 8.6964518e-07 7.1771506e-05 2701 + 9000 900 7.6892472e-07 5.6170687e-05 2701 + 9200 920 1.0780045e-06 7.1925995e-05 2701 + 9400 940 1.6514902e-06 0.00011635293 2701 + 9600 960 2.1891377e-06 0.00017599885 2701 + 9800 980 2.4551701e-06 0.00024127934 2701 + 10000 1000 2.4277051e-06 0.00029918622 2701 + 10200 1020 2.2655987e-06 0.00034067996 2701 + 10400 1040 2.1767207e-06 0.00035598133 2701 + 10600 1060 2.2796719e-06 0.00034359076 2701 + 10800 1080 2.4884225e-06 0.00030749714 2701 + 11000 1100 2.6387215e-06 0.00025725198 2701 + 11200 1120 2.5968908e-06 0.00020170699 2701 + 11400 1140 2.4108931e-06 0.00015185858 2701 + 11600 1160 2.2375166e-06 0.00011800349 2701 + 11800 1180 2.2407196e-06 0.00010646971 2701 + 12000 1200 2.4845263e-06 0.00011817498 2701 + 12200 1220 2.8733204e-06 0.00015013186 2701 + 12400 1240 3.2437087e-06 0.00019211975 2701 + 12600 1260 3.4732728e-06 0.00023620276 2701 + 12800 1280 3.5836611e-06 0.00027352269 2701 + 13000 1300 3.6592211e-06 0.00029533734 2701 + 13200 1320 3.782506e-06 0.00030032559 2701 + 13400 1340 3.9807086e-06 0.00028395722 2701 + 13600 1360 4.2023176e-06 0.00025390325 2701 + 13800 1380 4.3559781e-06 0.00021794236 2701 + 14000 1400 4.4273371e-06 0.00018026034 2701 + 14200 1420 4.49867e-06 0.0001526569 2701 + 14400 1440 4.6591574e-06 0.00013707051 2701 + 14600 1460 4.9589583e-06 0.00013803875 2701 + 14800 1480 5.3859375e-06 0.00015455425 2701 + 15000 1500 5.8639557e-06 0.00017954785 2701 + 15200 1520 6.3075561e-06 0.0002084257 2701 + 15400 1540 6.7022179e-06 0.0002347669 2701 + 15600 1560 7.0789688e-06 0.00025020766 2701 + 15800 1580 7.4734777e-06 0.00025394845 2701 + 16000 1600 7.8884743e-06 0.00024571725 2701 + 16200 1620 8.3224059e-06 0.00022706648 2701 + 16400 1640 8.7337783e-06 0.00020320706 2701 + 16600 1660 9.1454649e-06 0.00017824346 2701 + 16800 1680 9.5948793e-06 0.00015961835 2701 + 17000 1700 1.0106407e-05 0.00015135471 2701 + 17200 1720 1.0707273e-05 0.00015166884 2701 + 17400 1740 1.1392597e-05 0.0001645916 2701 + 17600 1760 1.2118829e-05 0.00018119729 2701 + 17800 1780 1.2846056e-05 0.0002003616 2701 + 18000 1800 1.3555288e-05 0.00021585952 2701 + 18200 1820 1.4301024e-05 0.00022290158 2701 + 18400 1840 1.5089217e-05 0.00021970192 2701 + 18600 1860 1.5902351e-05 0.00020911128 2701 + 18800 1880 1.6753175e-05 0.00019278718 2701 + 19000 1900 1.7602996e-05 0.00017584076 2701 + 19200 1920 1.8479378e-05 0.00016206226 2701 + 19400 1940 1.9421603e-05 0.00015575677 2701 + 19600 1960 2.0477421e-05 0.00015687558 2701 + 19800 1980 2.1617288e-05 0.00016424998 2701 + 20000 2000 2.2814347e-05 0.00017466664 2701 + 20200 2020 2.4029097e-05 0.00018647149 2701 + 20400 2040 2.5255953e-05 0.00019516077 2701 + 20600 2060 2.649418e-05 0.00019906384 2701 + 20800 2080 2.7755897e-05 0.00019630586 2701 + 21000 2100 2.9067854e-05 0.00018674721 2701 + 21200 2120 3.0396477e-05 0.0001758048 2701 + 21400 2140 3.1759719e-05 0.00016782801 2701 + 21600 2160 3.3193597e-05 0.00016324138 2701 + 21800 2180 3.4729384e-05 0.00016124274 2701 + 22000 2200 3.6367594e-05 0.00016437457 2701 + 22200 2220 3.8095131e-05 0.00017015573 2701 + 22400 2240 3.9867003e-05 0.00017649465 2701 + 22600 2260 4.169511e-05 0.00018111374 2701 + 22800 2280 4.3566134e-05 0.00018104136 2701 + 23000 2300 4.5461538e-05 0.00017822707 2701 + 23200 2320 4.7377333e-05 0.00017285066 2701 + 23400 2340 4.9354403e-05 0.00016826524 2701 + 23600 2360 5.1399791e-05 0.00016517913 2701 + 23800 2380 5.3510931e-05 0.00016299649 2701 + 24000 2400 5.5681048e-05 0.00016256674 2701 + 24200 2420 5.7902429e-05 0.00016513449 2701 + 24400 2440 6.0216049e-05 0.00016895109 2701 + 24600 2460 6.270982e-05 0.00016946227 2701 + 24800 2480 6.5390117e-05 0.00016589426 2701 + 25000 2500 6.8121899e-05 0.00016241676 2701 + 25200 2520 7.0947331e-05 0.00015624292 2701 + 25400 2540 7.4304148e-05 0.0001449537 2701 + 25600 2560 7.7745077e-05 0.00013179658 2701 + 25800 2580 8.0739829e-05 0.00013098838 2701 + 26000 2600 8.3827874e-05 0.00014278841 2701 + 26200 2620 8.7060677e-05 0.00015381649 2701 + 26400 2640 9.0266508e-05 0.00016130999 2701 + 26600 2660 9.3339049e-05 0.00016908268 2701 + 26800 2680 9.6347013e-05 0.00016771087 2701 + 27000 2700 9.9294711e-05 0.00016577315 2701 + 27200 2720 0.00010230007 0.0001670893 2701 + 27400 2740 0.00010547172 0.00016569077 2701 + 27600 2760 0.00010872426 0.00016506303 2701 + 27800 2780 0.00011201844 0.00016482702 2701 + 28000 2800 0.00011532129 0.00016694886 2701 + 28200 2820 0.00011869854 0.00016163005 2701 + 28400 2840 0.00012209747 0.00015339281 2701 + 28600 2860 0.00012549322 0.00014765883 2701 + 28800 2880 0.00012898685 0.00014241765 2701 + 29000 2900 0.00013259039 0.00014215724 2701 + 29200 2920 0.00013628209 0.00014881155 2701 + 29400 2940 0.00014001213 0.00015671333 2701 + 29600 2960 0.00014379216 0.00016446215 2701 + 29800 2980 0.00014764687 0.0001639602 2701 + 30000 3000 0.00015142301 0.00015664816 2701 + 30200 3020 0.00015496407 0.00015545099 2701 + 30400 3040 0.00015797338 0.00015368625 2701 + 30600 3060 0.00016042141 0.00015679918 2701 + 30800 3080 0.00016244716 0.00016093678 2701 + 31000 3100 0.00016202247 0.00016066954 2701 + 31200 3120 0.0001613312 0.00015932059 2701 + 31400 3140 0.00016274961 0.00015988567 2701 + 31600 3160 0.00016541518 0.00015724809 2701 + 31800 3180 0.00016809362 0.00015498827 2701 + 32000 3200 0.00017067801 0.00014830489 2701 + 32200 3220 0.00017333906 0.00014371345 2701 + 32400 3240 0.0001759011 0.00014421259 2701 + 32600 3260 0.00017849952 0.00014228443 2701 + 32800 3280 0.00017801812 0.00014117391 2701 + 33000 3300 0.00017718857 0.00014644675 2701 + 33200 3320 0.00017833666 0.0001291286 2701 + 33400 3340 0.000178576 0.00014878558 2701 + 33600 3360 0.00017846711 0.00013905481 2701 + 33800 3380 0.00017822937 0.00015535996 2701 + 34000 3400 0.00017899663 0.00016094303 2701 + 34200 3420 0.00017924661 0.00015017553 2701 + 34400 3440 0.00018024855 0.00014723549 2701 + 34600 3460 0.00018143865 0.00013903131 2701 + 34800 3480 0.00018258173 0.00013722112 2701 + 35000 3500 0.00018404873 0.00014675949 2701 + 35200 3520 0.00018538521 0.00015108242 2701 + 35400 3540 0.00018669649 0.00014564852 2701 + 35600 3560 0.00018814608 0.00013762161 2701 + 35800 3580 0.00018967415 0.00014602307 2701 + 36000 3600 0.00019146735 0.000126909 2701 + 36200 3620 0.00019414036 0.00012384379 2701 + 36400 3640 0.00019613057 0.00011059573 2701 + 36600 3660 0.00019897104 0.00013621801 2701 + 36800 3680 0.00020169688 0.00013665462 2701 + 37000 3700 0.00020447655 0.00013929258 2701 + 37200 3720 0.00020711105 0.0001363895 2701 + 37400 3740 0.00021077854 0.00013610672 2701 + 37600 3760 0.00021303084 0.00015051235 2701 + 37800 3780 0.00021619561 0.000126648 2701 + 38000 3800 0.0002194018 0.00012808247 2701 + 38200 3820 0.00022242646 0.0001360174 2701 + 38400 3840 0.00022531568 0.00013311221 2701 + 38600 3860 0.00022821731 0.00013523939 2701 + 38800 3880 0.000231228 0.00014090695 2701 + 39000 3900 0.00023404038 0.00013661835 2701 + 39200 3920 0.00023755044 0.00013659469 2701 + 39400 3940 0.00024009059 0.00012097907 2701 + 39600 3960 0.0002432098 9.7877874e-05 2701 + 39800 3980 0.00024475294 0.0001164688 2701 + 40000 4000 0.00024171274 0.00012432219 2701 +Loop time of 166.704 on 4 procs for 40000 steps with 2701 atoms + +Performance: 2073134.967 tau/day, 239.946 timesteps/s, 648.095 katom-step/s +99.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 14.535 | 21.174 | 26.859 | 112.7 | 12.70 +Bond | 3.0198 | 8.7223 | 15.391 | 176.2 | 5.23 +Neigh | 33.281 | 33.38 | 33.476 | 1.3 | 20.02 +Comm | 1.204 | 1.2956 | 1.4021 | 6.9 | 0.78 +Output | 0.69411 | 0.70346 | 0.71209 | 0.9 | 0.42 +Modify | 100.68 | 100.84 | 101 | 1.5 | 60.49 +Other | | 0.5873 | | | 0.35 + +Nlocal: 675.25 ave 1373 max 7 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 103 ave 163 max 50 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 10509 ave 21592 max 126 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +FullNghs: 20367 ave 41981 max 141 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 81468 +Ave neighs/atom = 30.162162 +Ave special neighs/atom = 1.6593854 +Neighbor list builds = 39932 +Dangerous builds = 0 +Total wall time: 0:02:46 diff --git a/examples/rheo/oxidation/log.27Jun2024.oxidation.g++.4 b/examples/rheo/oxidation/log.27Jun2024.oxidation.g++.4 deleted file mode 100644 index b6b8fab6dc..0000000000 --- a/examples/rheo/oxidation/log.27Jun2024.oxidation.g++.4 +++ /dev/null @@ -1,486 +0,0 @@ -LAMMPS (27 Jun 2024) -# ------ 2D oxidizing bar ------ # - -dimension 2 -units lj -atom_style hybrid rheo/thermal bond -boundary m m p -comm_modify vel yes -newton off - -region box block -60 60 0 80 -0.01 0.01 units box -create_box 3 box bond/types 2 extra/bond/per/atom 20 extra/special/per/atom 50 -Created orthogonal box = (-60 0 -0.01) to (60 80 0.01) - 2 by 2 by 1 MPI processor grid - -region lbar block -15 0 3 80 EDGE EDGE units box -region rbar block 0 15 3 80 EDGE EDGE units box -region bar union 2 lbar rbar -region floor block EDGE EDGE EDGE 3.0 EDGE EDGE units box - -lattice hex 1.0 -Lattice spacing in x,y,z = 1.0745699 1.8612097 1.0745699 -create_atoms 1 region bar -Created 2255 atoms - using lattice units in orthogonal box = (-60 0 -0.01) to (60 80 0.01) - create_atoms CPU = 0.004 seconds -create_atoms 3 region floor -Created 446 atoms - using lattice units in orthogonal box = (-60 0 -0.01) to (60 80 0.01) - create_atoms CPU = 0.000 seconds - -set region rbar type 2 -Setting atom values ... - 1148 settings made for type -group bar type 1 2 -2255 atoms in group bar -group rbar type 2 -1148 atoms in group rbar -group floor type 3 -446 atoms in group floor - -set group all sph/e 0.0 -Setting atom values ... - 2701 settings made for sph/e -set group all rheo/status 1 -Setting atom values ... - 2701 settings made for rheo/status - -# ------ Model parameters ------# - -variable cut equal 3.0 -variable n equal 1.0 -variable rho0 equal 1.0 -variable cs equal 1.0 -variable mp equal ${rho0}/${n} -variable mp equal 1/${n} -variable mp equal 1/1 -variable zeta equal 0.05 -variable kappa equal 0.1*${rho0}/${mp} -variable kappa equal 0.1*1/${mp} -variable kappa equal 0.1*1/1 -variable dt_max equal 0.1*${cut}/${cs}/3 -variable dt_max equal 0.1*3/${cs}/3 -variable dt_max equal 0.1*3/1/3 -variable eta equal 0.05 -variable Cv equal 1.0 -variable L equal 0.1 -variable Tf equal 1.0 - -mass * ${mp} -mass * 1 -timestep 0.1 - -pair_style hybrid/overlay rheo ${cut} artificial/visc ${zeta} rheo/solid -pair_style hybrid/overlay rheo 3 artificial/visc ${zeta} rheo/solid -pair_style hybrid/overlay rheo 3 artificial/visc 0.05 rheo/solid -pair_coeff * * rheo -pair_coeff * * rheo/solid 1.0 1.0 1.0 - -special_bonds lj 0.0 1.0 1.0 coul 0.0 1.0 1.0 -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 1 1 - special bond factors coul: 0 1 1 - 0 = max # of 1-2 neighbors - 101 = max # of special neighbors - special bonds CPU = 0.000 seconds -create_bonds many bar bar 1 0 1.5 -Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.3 - ghost atom cutoff = 3.3 - binsize = 1.65, bins = 73 49 1 - 3 neighbor lists, perpetual/occasional/extra = 2 1 0 - (1) command create_bonds, occasional - attributes: full, newton off - pair build: full/bin - stencil: full/bin/2d - bin: standard - (2) pair rheo, perpetual - attributes: half, newton off - pair build: half/bin/newtoff - stencil: full/bin/2d - bin: standard - (3) pair rheo/solid, perpetual, trim from (2) - attributes: half, newton off, cut 1.3 - pair build: trim - stencil: none - bin: none -Added 6547 bonds, new total = 6547 -Finding 1-2 1-3 1-4 neighbors ... - special bond factors lj: 0 1 1 - special bond factors coul: 0 1 1 - 6 = max # of 1-2 neighbors - 101 = max # of special neighbors - special bonds CPU = 0.000 seconds -special_bonds lj 0.0 1.0 1.0 coul 1.0 1.0 1.0 - -bond_style hybrid bpm/spring rheo/shell t/form 100 -bond_coeff 1 bpm/spring 1.0 1.0 1.0 -bond_coeff 2 rheo/shell 0.2 0.2 0.1 - -# ------ Apply dynamics ------# - -# Note: surface detection is not performed on solid bodies, so cannot use surface property -compute coord all rheo/property/atom coordination -variable surf atom c_coord<22 -group surf dynamic all var surf every 10 -dynamic group surf defined - -fix 1 all rheo ${cut} quintic 0 thermal shift surface/detection coordination 22 8 -fix 1 all rheo 3 quintic 0 thermal shift surface/detection coordination 22 8 -fix 2 all rheo/viscosity * constant ${eta} -fix 2 all rheo/viscosity * constant 0.05 -fix 3 all rheo/pressure * linear -fix 4 all rheo/thermal conductivity * constant ${kappa} specific/heat * constant ${Cv} Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 -fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant ${Cv} Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 -fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant ${Tf} latent/heat * constant ${L} react 1.5 1 -fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant 1 latent/heat * constant ${L} react 1.5 1 -fix 4 all rheo/thermal conductivity * constant 0.1 specific/heat * constant 1 Tfreeze * constant 1 latent/heat * constant 0.1 react 1.5 1 - -fix 5 rbar rheo/oxidation 1.5 2 1.0 -fix 6 all wall/harmonic ylo EDGE 2.0 1.0 1.0 -fix 7 all gravity 5e-5 vector 0 -1 0 -fix 8 floor setforce 0.0 0.0 0.0 -fix 9 surf add/heat linear 1.1 0.5 -fix 10 floor add/heat constant 0 overwrite yes # fix the temperature of the floor -fix 11 all enforce2d - -compute surf all rheo/property/atom surface -compute rho all rheo/property/atom rho -compute phase all rheo/property/atom phase -compute temp all rheo/property/atom temperature -compute eng all rheo/property/atom energy -compute nbond_shell all rheo/property/atom nbond/shell -compute nbond_solid all nbond/atom bond/type 1 - -# ------ Output & Run ------ # - -thermo 200 -thermo_style custom step time ke press atoms - -#dump 1 all custom 200 atomDump id type x y vx vy fx fy c_phase c_temp c_eng c_nbond_solid c_nbond_shell c_rho c_surf - -run 40000 - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Your simulation uses code contributions which should be cited: - -- BPM bond style: doi:10.1039/D3SM01373A - -@Article{Clemmer2024, - author = {Clemmer, Joel T. and Monti, Joseph M. and Lechman, Jeremy B.}, - title = {A soft departure from jamming: the compaction of deformable - granular matter under high pressures}, - journal = {Soft Matter}, - year = 2024, - volume = 20, - number = 8, - pages = {1702--1718} -} - -- @article{PalermoInPrep, - journal = {in prep}, - title = {RHEO: A Hybrid Mesh-Free Model Framework for Dynamic Multi-Phase Flows}, - year = {2024}, - author = {Eric T. Palermo and Ki T. Wolf and Joel T. Clemmer and Thomas C. O'Connor}, -} - -- @article{ApplMathModel.130.310, - title = {A hybrid smoothed-particle hydrodynamics model of oxide skins on molten aluminum}, - journal = {Applied Mathematical Modelling}, - volume = {130}, - pages = {310-326}, - year = {2024}, - issn = {0307-904X}, - doi = {https://doi.org/10.1016/j.apm.2024.02.027}, - author = {Joel T. Clemmer and Flint Pierce and Thomas C. O'Connor and Thomas D. Nevins and Elizabeth M.C. Jones and Jeremy B. Lechman and John Tencer}, -} - -CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE - -Generated 0 of 3 mixed pair_coeff terms from geometric mixing rule -Neighbor list info ... - update: every = 1 steps, delay = 0 steps, check = yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 3.3 - ghost atom cutoff = 3.3 - binsize = 1.65, bins = 73 49 1 - 8 neighbor lists, perpetual/occasional/extra = 7 1 0 - (1) pair rheo, perpetual, half/full from (3) - attributes: half, newton off - pair build: halffull/newtoff - stencil: none - bin: none - (2) pair rheo/solid, perpetual, trim from (4) - attributes: half, newton off, cut 1.3 - pair build: trim - stencil: none - bin: none - (3) compute RHEO/KERNEL, perpetual - attributes: full, newton off - pair build: full/bin - stencil: full/bin/2d - bin: standard - (4) compute RHEO/GRAD, perpetual, copy from (1) - attributes: half, newton off - pair build: copy - stencil: none - bin: none - (5) compute RHEO/VSHIFT, perpetual, copy from (1) - attributes: half, newton off - pair build: copy - stencil: none - bin: none - (6) compute RHEO/SURFACE, perpetual, copy from (1) - attributes: half, newton off - pair build: copy - stencil: none - bin: none - (7) fix rheo/thermal, occasional, trim from (4) - attributes: half, newton off, cut 3 - pair build: trim - stencil: none - bin: none - (8) fix rheo/oxidation, perpetual, trim from (3) - attributes: full, newton off, cut 1.8 - pair build: trim - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 25.96 | 25.96 | 25.96 Mbytes - Step Time KinEng Press Atoms - 0 0 0 0 2701 - 200 20 4.1737457e-07 1.298459e-07 2701 - 400 40 1.6692448e-06 4.9223021e-07 2701 - 600 60 3.7115752e-06 1.0476692e-05 2701 - 800 80 4.678922e-06 0.00015017477 2701 - 1000 100 4.7534549e-06 0.00027967322 2701 - 1200 120 3.4532974e-06 0.00045908503 2701 - 1400 140 1.4159611e-06 0.00055855688 2701 - 1600 160 4.5151976e-07 0.00058351591 2701 - 1800 180 5.1656107e-07 0.00055163637 2701 - 2000 200 1.882995e-06 0.00048349046 2701 - 2200 220 3.3481991e-06 0.00037790487 2701 - 2400 240 3.8173347e-06 0.00023972848 2701 - 2600 260 3.1832818e-06 9.5696995e-05 2701 - 2800 280 1.5994934e-06 -2.7484809e-05 2701 - 3000 300 3.573403e-07 -8.56391e-05 2701 - 3200 320 1.6485893e-07 -5.6974248e-05 2701 - 3400 340 8.5665044e-07 3.473389e-06 2701 - 3600 360 2.0801421e-06 5.7938582e-05 2701 - 3800 380 3.1934959e-06 0.00016746888 2701 - 4000 400 3.2540476e-06 0.00026471904 2701 - 4200 420 2.5603544e-06 0.00037699521 2701 - 4400 440 1.4309318e-06 0.00047456272 2701 - 4600 460 6.5231009e-07 0.00050551979 2701 - 4800 480 6.9010626e-07 0.00048100816 2701 - 5000 500 1.2663499e-06 0.00042166061 2701 - 5200 520 2.0653769e-06 0.00033547376 2701 - 5400 540 2.2709253e-06 0.00023015884 2701 - 5600 560 1.7864994e-06 0.00013378564 2701 - 5800 580 9.5638493e-07 4.4666688e-05 2701 - 6000 600 3.0331342e-07 -1.884252e-06 2701 - 6200 620 3.451498e-07 8.3090163e-07 2701 - 6400 640 9.5098597e-07 4.7759688e-05 2701 - 6600 660 1.8169765e-06 0.00011801205 2701 - 6800 680 2.3723951e-06 0.00019823562 2701 - 7000 700 2.3542553e-06 0.00028873701 2701 - 7200 720 1.9132157e-06 0.00036386547 2701 - 7400 740 1.4123115e-06 0.00040731263 2701 - 7600 760 1.2422941e-06 0.00041151319 2701 - 7800 780 1.4355275e-06 0.00038364583 2701 - 8000 800 1.7835754e-06 0.00032724239 2701 - 8200 820 1.961321e-06 0.00025932051 2701 - 8400 840 1.8005786e-06 0.00018763659 2701 - 8600 860 1.4274768e-06 0.00012392727 2701 - 8800 880 1.075959e-06 8.1241673e-05 2701 - 9000 900 1.014674e-06 7.0104531e-05 2701 - 9200 920 1.3155353e-06 8.7991534e-05 2701 - 9400 940 1.815649e-06 0.00012975516 2701 - 9600 960 2.2699387e-06 0.0001861001 2701 - 9800 980 2.4916284e-06 0.00024375475 2701 - 10000 1000 2.4741893e-06 0.00029466715 2701 - 10200 1020 2.3835838e-06 0.00032733587 2701 - 10400 1040 2.3816351e-06 0.00033659466 2701 - 10600 1060 2.5177605e-06 0.00032136429 2701 - 10800 1080 2.6973866e-06 0.00028678114 2701 - 11000 1100 2.8219278e-06 0.00023889501 2701 - 11200 1120 2.794743e-06 0.00019226876 2701 - 11400 1140 2.667182e-06 0.00015100316 2701 - 11600 1160 2.5918212e-06 0.00012484649 2701 - 11800 1180 2.6802845e-06 0.00011912201 2701 - 12000 1200 2.9620111e-06 0.00013336302 2701 - 12200 1220 3.3281225e-06 0.00016262605 2701 - 12400 1240 3.6587842e-06 0.00020175308 2701 - 12600 1260 3.8696418e-06 0.00023984351 2701 - 12800 1280 3.9774608e-06 0.00026981166 2701 - 13000 1300 4.0621923e-06 0.00028706126 2701 - 13200 1320 4.2118368e-06 0.00028639136 2701 - 13400 1340 4.4229032e-06 0.00026844105 2701 - 13600 1360 4.6415059e-06 0.00023789752 2701 - 13800 1380 4.8106868e-06 0.00020524655 2701 - 14000 1400 4.9343741e-06 0.00017392428 2701 - 14200 1420 5.0835921e-06 0.00015013775 2701 - 14400 1440 5.3365604e-06 0.0001413941 2701 - 14600 1460 5.7248817e-06 0.00014521418 2701 - 14800 1480 6.2145391e-06 0.00016109563 2701 - 15000 1500 6.7347576e-06 0.00018481456 2701 - 15200 1520 7.221694e-06 0.00020956545 2701 - 15400 1540 7.6762698e-06 0.0002293694 2701 - 15600 1560 8.1313425e-06 0.00024058679 2701 - 15800 1580 8.6053324e-06 0.00024015877 2701 - 16000 1600 9.1091988e-06 0.00022927412 2701 - 16200 1620 9.6165964e-06 0.00021035982 2701 - 16400 1640 1.0093906e-05 0.00018782673 2701 - 16600 1660 1.0561165e-05 0.00016863993 2701 - 16800 1680 1.1066274e-05 0.00015693261 2701 - 17000 1700 1.1661861e-05 0.00015221008 2701 - 17200 1720 1.236148e-05 0.00015781879 2701 - 17400 1740 1.3124872e-05 0.00017008789 2701 - 17600 1760 1.3924606e-05 0.00018628888 2701 - 17800 1780 1.4733479e-05 0.0002011741 2701 - 18000 1800 1.5558838e-05 0.00021115187 2701 - 18200 1820 1.6415631e-05 0.00021314897 2701 - 18400 1840 1.7287377e-05 0.00020793654 2701 - 18600 1860 1.8202577e-05 0.00019550685 2701 - 18800 1880 1.9126239e-05 0.00018102715 2701 - 19000 1900 2.0074716e-05 0.0001684831 2701 - 19200 1920 2.1090982e-05 0.00015956926 2701 - 19400 1940 2.2180303e-05 0.00015805759 2701 - 19600 1960 2.3330404e-05 0.00016157807 2701 - 19800 1980 2.4557652e-05 0.00017047221 2701 - 20000 2000 2.5841568e-05 0.00018216972 2701 - 20200 2020 2.7188233e-05 0.00018953358 2701 - 20400 2040 2.8576958e-05 0.00019304182 2701 - 20600 2060 2.999218e-05 0.00019239757 2701 - 20800 2080 3.1437794e-05 0.00018759619 2701 - 21000 2100 3.2938831e-05 0.00017863274 2701 - 21200 2120 3.4506515e-05 0.00016911647 2701 - 21400 2140 3.6126713e-05 0.00016161126 2701 - 21600 2160 3.7812343e-05 0.0001583968 2701 - 21800 2180 3.9564996e-05 0.00016178647 2701 - 22000 2200 4.1406387e-05 0.00016872633 2701 - 22200 2220 4.3340255e-05 0.00017435061 2701 - 22400 2240 4.5333317e-05 0.00017910049 2701 - 22600 2260 4.7311785e-05 0.0001800877 2701 - 22800 2280 4.9303605e-05 0.00017728464 2701 - 23000 2300 5.1334424e-05 0.00017486007 2701 - 23200 2320 5.3402091e-05 0.00016867905 2701 - 23400 2340 5.5505853e-05 0.00016402807 2701 - 23600 2360 5.7679415e-05 0.00016343865 2701 - 23800 2380 5.9920078e-05 0.00016623374 2701 - 24000 2400 6.2239328e-05 0.00017028032 2701 - 24200 2420 6.4624902e-05 0.00017371561 2701 - 24400 2440 6.7054046e-05 0.00017565916 2701 - 24600 2460 6.9522453e-05 0.00017545566 2701 - 24800 2480 7.2079202e-05 0.00017437049 2701 - 25000 2500 7.4716585e-05 0.00017043497 2701 - 25200 2520 7.7415627e-05 0.00016579093 2701 - 25400 2540 8.0169507e-05 0.00016268419 2701 - 25600 2560 8.3001779e-05 0.00016233687 2701 - 25800 2580 8.5921287e-05 0.00016275719 2701 - 26000 2600 8.8880908e-05 0.00016425339 2701 - 26200 2620 9.1881788e-05 0.00016478504 2701 - 26400 2640 9.4969348e-05 0.00016371806 2701 - 26600 2660 9.817611e-05 0.00016339555 2701 - 26800 2680 0.00010146396 0.00015937569 2701 - 27000 2700 0.00010485972 0.0001562082 2701 - 27200 2720 0.00010837565 0.00015181198 2701 - 27400 2740 0.00011187666 0.00015162336 2701 - 27600 2760 0.00011543324 0.0001606148 2701 - 27800 2780 0.00011905739 0.00016161123 2701 - 28000 2800 0.00012280117 0.00016267347 2701 - 28200 2820 0.00012665753 0.00016393863 2701 - 28400 2840 0.00013061568 0.00016168097 2701 - 28600 2860 0.00013469542 0.00015439793 2701 - 28800 2880 0.00013889392 0.00014870639 2701 - 29000 2900 0.00014307887 0.00015020156 2701 - 29200 2920 0.00014714875 0.00015727801 2701 - 29400 2940 0.0001510796 0.00016230922 2701 - 29600 2960 0.0001551489 0.00016725059 2701 - 29800 2980 0.00015918695 0.0001556229 2701 - 30000 3000 0.00016145717 0.00015704562 2701 - 30200 3020 0.00016164704 0.00015902669 2701 - 30400 3040 0.00016250791 0.00017587854 2701 - 30600 3060 0.0001639094 0.00016958759 2701 - 30800 3080 0.00016479103 0.00016810892 2701 - 31000 3100 0.00016521873 0.00016027053 2701 - 31200 3120 0.00016540216 0.00015397865 2701 - 31400 3140 0.00016690063 0.00015955009 2701 - 31600 3160 0.00016832002 0.00015593907 2701 - 31800 3180 0.00016948949 0.00015690982 2701 - 32000 3200 0.0001700061 0.00016199222 2701 - 32200 3220 0.00017122936 0.00016220019 2701 - 32400 3240 0.00017198531 0.00015194229 2701 - 32600 3260 0.00017286097 0.00014880433 2701 - 32800 3280 0.00017395847 0.00014887179 2701 - 33000 3300 0.00017527125 0.00015338612 2701 - 33200 3320 0.00017667877 0.00014965389 2701 - 33400 3340 0.00017944144 0.00014195087 2701 - 33600 3360 0.0001807053 0.00014509998 2701 - 33800 3380 0.00018242869 0.00014683629 2701 - 34000 3400 0.00018415985 0.00014295872 2701 - 34200 3420 0.00018635902 0.00013823794 2701 - 34400 3440 0.00018885401 0.00013629126 2701 - 34600 3460 0.00019106836 0.000138816 2701 - 34800 3480 0.00019256787 0.00014358744 2701 - 35000 3500 0.00019410016 0.0001420669 2701 - 35200 3520 0.00019563657 0.0001340349 2701 - 35400 3540 0.00019734994 0.00012994197 2701 - 35600 3560 0.00019880477 0.00013331695 2701 - 35800 3580 0.00020014422 0.00013848097 2701 - 36000 3600 0.00020165626 0.00013796434 2701 - 36200 3620 0.00020297057 0.0001346407 2701 - 36400 3640 0.00020432584 0.00012838525 2701 - 36600 3660 0.00020530152 0.00012848442 2701 - 36800 3680 0.00020709012 0.0001296875 2701 - 37000 3700 0.00020939979 0.00017016832 2701 - 37200 3720 0.00021026158 0.00017388254 2701 - 37400 3740 0.00021203076 0.00012169741 2701 - 37600 3760 0.00021407912 0.00012467048 2701 - 37800 3780 0.00021652866 0.000129545 2701 - 38000 3800 0.00021927979 0.00013537464 2701 - 38200 3820 0.00022175274 0.00014124275 2701 - 38400 3840 0.00022431717 0.0001456533 2701 - 38600 3860 0.00022586947 0.00015646735 2701 - 38800 3880 0.00021974508 0.0001467496 2701 - 39000 3900 0.00021270891 0.0001291023 2701 - 39200 3920 0.00020709839 0.00014468038 2701 - 39400 3940 0.00020138943 0.000156103 2701 - 39600 3960 0.00019579027 0.00015207179 2701 - 39800 3980 0.00019219602 0.0001548601 2701 - 40000 4000 0.00018931715 0.00013543387 2701 -Loop time of 169.513 on 4 procs for 40000 steps with 2701 atoms - -Performance: 2038784.562 tau/day, 235.970 timesteps/s, 637.356 katom-step/s -99.7% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 16.279 | 22.828 | 28 | 98.9 | 13.47 -Bond | 0.88503 | 1.4645 | 2.0916 | 36.3 | 0.86 -Neigh | 29.832 | 29.954 | 30.069 | 1.5 | 17.67 -Comm | 1.2274 | 1.3406 | 1.4623 | 7.3 | 0.79 -Output | 0.0041506 | 0.0054325 | 0.0062685 | 1.1 | 0.00 -Modify | 107.8 | 113.27 | 120.23 | 47.8 | 66.82 -Other | | 0.6549 | | | 0.39 - -Nlocal: 675.25 ave 1362 max 1 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 94.75 ave 154 max 45 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Neighs: 10485 ave 21200 max 18 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -FullNghs: 20408.5 ave 41306 max 18 min -Histogram: 2 0 0 0 0 0 0 0 0 2 - -Total # of neighbors = 81634 -Ave neighs/atom = 30.223621 -Ave special neighs/atom = 1.7304702 -Neighbor list builds = 39994 -Dangerous builds = 0 -Total wall time: 0:02:50 diff --git a/lib/colvars/colvarbias_meta.cpp b/lib/colvars/colvarbias_meta.cpp index 1131c88ec5..13abefda4e 100644 --- a/lib/colvars/colvarbias_meta.cpp +++ b/lib/colvars/colvarbias_meta.cpp @@ -564,7 +564,27 @@ int colvarbias_meta::update_bias() cvm::real hills_energy_sum_here = 0.0; if (use_grids) { std::vector curr_bin = hills_energy->get_colvars_index(); - hills_energy_sum_here = hills_energy->value(curr_bin); + const bool index_ok = hills_energy->index_ok(curr_bin); + if (index_ok) { + // TODO: Should I sum the energies from other replicas? + hills_energy_sum_here = hills_energy->value(curr_bin); + } else { + if (!keep_hills) { + // TODO: Should I sum the off-grid hills from other replicas? + calc_hills(hills_off_grid.begin(), + hills_off_grid.end(), + hills_energy_sum_here, + &colvar_values); + } else { + // TODO: Is it better to compute the energy from all historic hills + // when keepHills is on? + calc_hills(hills.begin(), + hills.end(), + hills_energy_sum_here, + &colvar_values); + } + // cvm::log("WARNING: computing bias factor for off-grid hills. Hills energy: " + cvm::to_str(hills_energy_sum_here) + "\n"); + } } else { calc_hills(new_hills_begin, hills.end(), hills_energy_sum_here, NULL); } diff --git a/lib/colvars/colvarcomp_coordnums.cpp b/lib/colvars/colvarcomp_coordnums.cpp index 63418050d0..3169ac5070 100644 --- a/lib/colvars/colvarcomp_coordnums.cpp +++ b/lib/colvars/colvarcomp_coordnums.cpp @@ -54,7 +54,14 @@ cvm::real colvar::coordnum::switching_function(cvm::real const &r0, cvm::real const xn = cvm::integer_power(l2, en2); cvm::real const xd = cvm::integer_power(l2, ed2); //The subtraction and division stretches the function back to the range of [0,1] from [pairlist_tol,1] - cvm::real const func = (((1.0-xn)/(1.0-xd)) - pairlist_tol) / (1.0-pairlist_tol); + cvm::real const func_no_pairlist = (1.0-xn)/(1.0-xd); + cvm::real func, inv_one_pairlist_tol; + if (flags & ef_use_pairlist) { + inv_one_pairlist_tol = 1 / (1.0-pairlist_tol); + func = (func_no_pairlist - pairlist_tol) * inv_one_pairlist_tol; + } else { + func = func_no_pairlist; + } if (flags & ef_rebuild_pairlist) { //Particles just outside of the cutoff also are considered if they come near. @@ -74,7 +81,12 @@ cvm::real colvar::coordnum::switching_function(cvm::real const &r0, // func*ed2*(xd/l2))*(-1.0); //Recognizing that func = (1.0-xn)/(1.0-xd), we can group together the "func" and get a version of dFdl2 that is 0 //when func=0, which lets us skip this gradient calculation when func=0. - cvm::real const dFdl2 = func * ((ed2*xd/((1.0-xd)*l2)) - (en2*xn/((1.0-xn)*l2))); + cvm::real dFdl2; + if (flags & ef_use_pairlist) { + dFdl2 = func_no_pairlist * inv_one_pairlist_tol * ((ed2*xd/((1.0-xd)*l2)) - (en2*xn/((1.0-xn)*l2))); + } else { + dFdl2 = func * ((ed2*xd/((1.0-xd)*l2)) - (en2*xn/((1.0-xn)*l2))); + } cvm::rvector const dl2dx((2.0/((flags & ef_anisotropic) ? r0sq_vec.x : r0*r0)) * diff.x, (2.0/((flags & ef_anisotropic) ? r0sq_vec.y : @@ -167,12 +179,14 @@ int colvar::coordnum::init(std::string const &conf) COLVARS_INPUT_ERROR); // return and do not allocate the pairlists below } + size_t n; if (b_group2_center_only) { - pairlist = new bool[group1->size()]; - } - else { - pairlist = new bool[group1->size() * group2->size()]; + n = group1->size(); + } else { + n = group1->size() * group2->size(); } + pairlist = new bool[n]; + for (size_t i = 0; i < n; i++) pairlist[i] = true; } init_scalar_boundaries(0.0, b_group2_center_only ? @@ -424,7 +438,9 @@ int colvar::selfcoordnum::init(std::string const &conf) error_code |= cvm::error("Error: non-positive pairlistfrequency provided.\n", COLVARS_INPUT_ERROR); } - pairlist = new bool[(group1->size()-1) * (group1->size()-1)]; + size_t n = (group1->size()-1) * (group1->size()-1); + pairlist = new bool[n]; + for (size_t i = 0; i < n; i++) pairlist[i] = true; } init_scalar_boundaries(0.0, static_cast((group1->size()-1) * diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index 6de68264c3..cd333cf32d 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -192,25 +192,23 @@ int colvar::distance_z::init(std::string const &conf) void colvar::distance_z::calc_value() { + cvm::rvector const M = main->center_of_mass(); + cvm::rvector const R1 = ref1->center_of_mass(); if (fixed_axis) { if (!is_enabled(f_cvc_pbc_minimum_image)) { - dist_v = main->center_of_mass() - ref1->center_of_mass(); + dist_v = M - R1; } else { - dist_v = cvm::position_distance(ref1->center_of_mass(), - main->center_of_mass()); + dist_v = cvm::position_distance(R1, M); } } else { - + cvm::rvector const R2 = ref2->center_of_mass(); + cvm::rvector const C = 0.5 * (R1 + R2); if (!is_enabled(f_cvc_pbc_minimum_image)) { - dist_v = main->center_of_mass() - - (0.5 * (ref1->center_of_mass() + ref2->center_of_mass())); - axis = ref2->center_of_mass() - ref1->center_of_mass(); + dist_v = M - C; + axis = R2 - R1; } else { - dist_v = cvm::position_distance(0.5 * (ref1->center_of_mass() + - ref2->center_of_mass()), - main->center_of_mass()); - axis = cvm::position_distance(ref1->center_of_mass(), - ref2->center_of_mass()); + dist_v = cvm::position_distance(C, M); + axis = cvm::position_distance(R1, R2); } axis_norm = axis.norm(); axis = axis.unit(); @@ -227,21 +225,14 @@ void colvar::distance_z::calc_gradients() if (fixed_axis) { ref1->set_weighted_gradient(-1.0 * axis); } else { - if (!is_enabled(f_cvc_pbc_minimum_image)) { - ref1->set_weighted_gradient( 1.0 / axis_norm * - (main->center_of_mass() - ref2->center_of_mass() - - x.real_value * axis )); - ref2->set_weighted_gradient( 1.0 / axis_norm * - (ref1->center_of_mass() - main->center_of_mass() + - x.real_value * axis )); - } else { - ref1->set_weighted_gradient( 1.0 / axis_norm * ( - cvm::position_distance(ref2->center_of_mass(), - main->center_of_mass()) - x.real_value * axis )); - ref2->set_weighted_gradient( 1.0 / axis_norm * ( - cvm::position_distance(main->center_of_mass(), - ref1->center_of_mass()) + x.real_value * axis )); - } + // Perpendicular term: (M - C) - Â(·(M - C)) = (M - C) -  x + cvm::rvector const perp_term = dist_v - axis * x.real_value; + // ∂x/∂R₁ = -common_term/‖A‖ - (1/2) + cvm::rvector const grad_R1 = -perp_term / axis_norm - 0.5 * axis; + // ∂x/∂R₂ = common_term/‖A‖ - (1/2) + cvm::rvector const grad_R2 = perp_term / axis_norm - 0.5 * axis; + ref1->set_weighted_gradient(grad_R1); + ref2->set_weighted_gradient(grad_R2); } } @@ -1132,7 +1123,7 @@ int colvar::eigenvector::init(std::string const &conf) atoms->enable(f_ag_rotate); atoms->ref_pos = ref_pos; atoms->center_ref_pos(); - atoms->disable(f_ag_fit_gradients); // cancel out if group is fitted on itself + atoms->enable(f_ag_fit_gradients); // cancel out if group is fitted on itself // and cvc is translationally invariant } atoms->setup_rotation_derivative(); diff --git a/lib/colvars/colvarcomp_rotations.cpp b/lib/colvars/colvarcomp_rotations.cpp index 766a0870d1..3a7ee49af9 100644 --- a/lib/colvars/colvarcomp_rotations.cpp +++ b/lib/colvars/colvarcomp_rotations.cpp @@ -135,15 +135,16 @@ void colvar::orientation::apply_force(colvarvalue const &force) cvm::quaternion const &FQ = force.quaternion_value; if (!atoms->noforce) { + const cvm::real sign = (rot.q).inner(ref_quat) >= 0.0 ? 1.0 : -1.0; rot_deriv_impl->prepare_derivative(rotation_derivative_dldq::use_dq); cvm::vector1d dq0_2; auto ag_force = atoms->get_group_force_object(); for (size_t ia = 0; ia < atoms->size(); ia++) { rot_deriv_impl->calc_derivative_wrt_group2(ia, nullptr, &dq0_2); - const auto f_ia = FQ[0] * dq0_2[0] + + const auto f_ia = sign * (FQ[0] * dq0_2[0] + FQ[1] * dq0_2[1] + FQ[2] * dq0_2[2] + - FQ[3] * dq0_2[3]; + FQ[3] * dq0_2[3]); ag_force.add_atom_force(ia, f_ia); } } @@ -200,8 +201,9 @@ void colvar::orientation_angle::calc_value() void colvar::orientation_angle::calc_gradients() { + const cvm::real sign = (rot.q).q0 >= 0.0 ? 1.0 : -1.0; cvm::real const dxdq0 = - ( ((rot.q).q0 * (rot.q).q0 < 1.0) ? + sign * ( ((rot.q).q0 * (rot.q).q0 < 1.0) ? ((180.0 / PI) * (-2.0) / cvm::sqrt(1.0 - ((rot.q).q0 * (rot.q).q0))) : 0.0 ); diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index 5f042767dc..31edecdea5 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -89,7 +89,7 @@ class colvarmodule { int version_int = 0; /// Patch version number (non-zero in patch releases of other packages) - int patch_version_int = 0; + int patch_version_int = 1; public: diff --git a/lib/colvars/colvartypes.h b/lib/colvars/colvartypes.h index db5827990b..9b7a2e0032 100644 --- a/lib/colvars/colvartypes.h +++ b/lib/colvars/colvartypes.h @@ -957,11 +957,6 @@ class colvarmodule::quaternion { cvm::real q0, q1, q2, q3; - /// Constructor from a 3-d vector - inline quaternion(cvm::real x, cvm::real y, cvm::real z) - : q0(0.0), q1(x), q2(y), q3(z) - {} - /// Constructor component by component inline quaternion(cvm::real const qv[4]) : q0(qv[0]), q1(qv[1]), q2(qv[2]), q3(qv[3]) @@ -979,50 +974,16 @@ class colvarmodule::quaternion { : q0(v[0]), q1(v[1]), q2(v[2]), q3(v[3]) {} - /// "Constructor" after Euler angles (in radians) - /// - /// http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles - inline void set_from_euler_angles(cvm::real phi_in, - cvm::real theta_in, - cvm::real psi_in) - { - q0 = ( (cvm::cos(phi_in/2.0)) * (cvm::cos(theta_in/2.0)) * (cvm::cos(psi_in/2.0)) + - (cvm::sin(phi_in/2.0)) * (cvm::sin(theta_in/2.0)) * (cvm::sin(psi_in/2.0)) ); - - q1 = ( (cvm::sin(phi_in/2.0)) * (cvm::cos(theta_in/2.0)) * (cvm::cos(psi_in/2.0)) - - (cvm::cos(phi_in/2.0)) * (cvm::sin(theta_in/2.0)) * (cvm::sin(psi_in/2.0)) ); - - q2 = ( (cvm::cos(phi_in/2.0)) * (cvm::sin(theta_in/2.0)) * (cvm::cos(psi_in/2.0)) + - (cvm::sin(phi_in/2.0)) * (cvm::cos(theta_in/2.0)) * (cvm::sin(psi_in/2.0)) ); - - q3 = ( (cvm::cos(phi_in/2.0)) * (cvm::cos(theta_in/2.0)) * (cvm::sin(psi_in/2.0)) - - (cvm::sin(phi_in/2.0)) * (cvm::sin(theta_in/2.0)) * (cvm::cos(psi_in/2.0)) ); - } - /// \brief Default constructor inline quaternion() { reset(); } - /// \brief Set all components to a scalar - inline void set(cvm::real value) - { - q0 = q1 = q2 = q3 = value; - } - /// \brief Set all components to zero (null quaternion) inline void reset() { - set(0.0); - } - - /// \brief Set the q0 component to 1 and the others to 0 (quaternion - /// representing no rotation) - inline void reset_rotation() - { - q0 = 1.0; - q1 = q2 = q3 = 0.0; + q0 = q1 = q2 = q3 = 0.0; } /// Tell the number of characters required to print a quaternion, given that of a real number @@ -1378,7 +1339,7 @@ class colvarmodule::rotation bool b_debug_gradients; /// \brief The rotation itself (implemented as a quaternion) - cvm::quaternion q; + cvm::quaternion q{1.0, 0.0, 0.0, 0.0}; template friend struct rotation_derivative; diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 7cbc9f0e76..6b477909a9 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -19,7 +19,7 @@ # Note: must also adjust check for supported API versions in # fix_plumed.cpp when version changes from v2.n.x to v2.n+1.y -version = "2.9.3" +version = "2.9.4" mode = "static" # help message @@ -45,14 +45,10 @@ '2.5.7' : '1ca36226fdb8110b1009aa61d615d4e5', \ '2.6.6' : '6b470dcdce04c221ea42d8500b03c49b', \ '2.7.6' : 'fb8c0ec10f97a9353eb123a5c4c35aa6', \ - '2.8.1' : '6bfe72ebdae63dc38a9ca27d9b0e08f8', \ - '2.8.2' : '599092b6a0aa6fff992612537ad98994', \ - '2.8.3' : '76d23cd394eba9e6530316ed1184e219', \ '2.8.4' : '9f59c4f9bda86fe5bef19543c295a981', \ - '2.9.0' : '661eabeebee05cf84bbf9dc23d7d5f46', \ - '2.9.1' : 'c3b2d31479c1e9ce211719d40e9efbd7', \ - '2.9.2' : '04862602a372c1013bdfee2d6d03bace', \ '2.9.3' : 'ee1249805fe94bccee17d10610d3f6f1', \ + '2.9.4' : 'e540bf5132e3270e843398a6080d00c7', \ + '2.10.0' : '6219b635162c4f0ba03a84958ea43e25', \ } # parse and process arguments diff --git a/python/lammps/constants.py b/python/lammps/constants.py index b7496b4751..718f8a3f0d 100644 --- a/python/lammps/constants.py +++ b/python/lammps/constants.py @@ -54,6 +54,7 @@ # default buffer size for string buffers LMP_BUFSIZE = 1024 +LMP_MAX_GROUP = 32 # ------------------------------------------------------------------------- def get_ctypes_int(size): diff --git a/python/lammps/core.py b/python/lammps/core.py index d7316dce32..f8f23ff061 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -30,7 +30,7 @@ LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, \ LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS, \ LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING, \ - LMP_BUFSIZE, get_ctypes_int + LMP_BUFSIZE, get_ctypes_int, LMP_MAX_GROUP from lammps.data import NeighList @@ -2476,8 +2476,8 @@ def has_style(self, category, name): def available_styles(self, category): """Returns a list of styles available for a given category - This is a wrapper around the functions :cpp:func:`lammps_style_count()` - and :cpp:func:`lammps_style_name()` of the library interface. + This is a wrapper around the functions :cpp:func:`lammps_style_count` + and :cpp:func:`lammps_style_name` of the library interface. :param category: name of category :type category: string @@ -2527,8 +2527,17 @@ def available_ids(self, category): .. versionadded:: 9Oct2020 - This is a wrapper around the functions :cpp:func:`lammps_id_count()` - and :cpp:func:`lammps_id_name()` of the library interface. + This is a wrapper around the functions :cpp:func:`lammps_id_count` + and :cpp:func:`lammps_id_name` of the library interface. + + .. versionchanged:: 22Jul2025 + + This function has a different behavior for the "group" category: rather than + only listing the available groups, it will return a full list with LMP_MAX_GROUP + elements. This is because the list may have "holes" when groups are deleted. + The returned list has either the name of the group or "None" for empty entries. + This way, the value of 1 << idx is the groupbit that can be compared to the + per-atom "mask" property to determine if an atom is member of a group. :param category: name of category :type category: string @@ -2537,14 +2546,21 @@ def available_ids(self, category): :rtype: list """ - categories = ['compute','dump','fix','group','molecule','region','variable'] + categories = ['compute','dump','fix','molecule','region','variable'] available_ids = [] + sb = create_string_buffer(LMP_BUFSIZE) if category in categories: num = self.lib.lammps_id_count(self.lmp, category.encode()) - sb = create_string_buffer(LMP_BUFSIZE) for idx in range(num): self.lib.lammps_id_name(self.lmp, category.encode(), idx, sb, LMP_BUFSIZE) available_ids.append(sb.value.decode()) + elif category == 'group': + for idx in range(LMP_MAX_GROUP): + if self.lib.lammps_id_name(self.lmp, category.encode(), idx, sb, LMP_BUFSIZE): + available_ids.append(sb.value.decode()) + else: + available_ids.append(None) + return available_ids # ------------------------------------------------------------------------- @@ -2554,8 +2570,8 @@ def available_plugins(self, category=None): .. versionadded:: 10Mar2021 - This is a wrapper around the functions :cpp:func:`lammps_plugin_count()` - and :cpp:func:`lammps_plugin_name()` of the library interface. + This is a wrapper around the functions :cpp:func:`lammps_plugin_count` + and :cpp:func:`lammps_plugin_name` of the library interface. :return: list of style/name pairs of loaded plugins :rtype: list diff --git a/src/BPM/README b/src/BPM/README new file mode 100644 index 0000000000..cff2de6fb5 --- /dev/null +++ b/src/BPM/README @@ -0,0 +1,6 @@ +BPM or Bonded Particle Models is a package to model solid mechanical systems. +The packaged is authored by Joel Clemmer (jtclemm@sandia.gov). + +Please see the relevant how to page in the LAMMPS documentation, +https://docs.lammps.org/Howto_bpm.html +for more background and details on what's included in the package. diff --git a/src/BPM/bond_bpm.cpp b/src/BPM/bond_bpm.cpp index 08ae010666..f28b76785e 100644 --- a/src/BPM/bond_bpm.cpp +++ b/src/BPM/bond_bpm.cpp @@ -58,9 +58,9 @@ BondBPM::BondBPM(LAMMPS *_lmp) : fix_update_special_bonds(nullptr), pack_choice(nullptr), output_data(nullptr) { overlay_flag = 0; - ignore_special_flag = 0; property_atom_flag = 0; break_flag = 1; + ignore_special_flag = 0; nvalues = 0; writedata = 0; @@ -120,14 +120,19 @@ void BondBPM::init_style() fix_store_local->nvalues = nvalues; } - if (!ignore_special_flag) { + if (overlay_flag) { + // With break no, overlay/pair doesn't really do anything + // Only double checks that special weights are unity + if (force->special_lj[1] != 1.0 || force->special_lj[2] != 1.0 || + force->special_lj[3] != 1.0 || force->special_coul[1] != 1.0 || + force->special_coul[2] != 1.0 || force->special_coul[3] != 1.0) + error->all(FLERR, + "With overlay/pair yes, BPM bond styles require a value of 1.0 for all " + "special_bonds weights"); + } + + if (!ignore_special_flag && break_flag) { if (overlay_flag) { - if (force->special_lj[1] != 1.0 || force->special_lj[2] != 1.0 || - force->special_lj[3] != 1.0 || force->special_coul[1] != 1.0 || - force->special_coul[2] != 1.0 || force->special_coul[3] != 1.0) - error->all(FLERR, - "With overlay/pair yes, BPM bond styles require a value of 1.0 for all " - "special_bonds weights"); if (id_fix_update_special_bonds) { modify->delete_fix(id_fix_update_special_bonds); delete[] id_fix_update_special_bonds; @@ -135,24 +140,23 @@ void BondBPM::init_style() } } else { // Require atoms know about all of their bonds and if they break - if (force->newton_bond && break_flag) + if (force->newton_bond) error->all(FLERR, - "With overlay/pair no, or break yes, BPM bond styles require Newton bond off"); + "With overlay/pair no and break yes, BPM bond styles require Newton bond off"); // special lj must be 0 1 1 to censor pair forces between bonded particles if (force->special_lj[1] != 0.0 || force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0) error->all(FLERR, "With overlay/pair no, BPM bond styles require special LJ weights = 0,1,1"); - // if bonds can break, special coulomb must be 1 1 1 to ensure all pairs are included in the + // special coulomb must be 1 1 1 to ensure all pairs are included in the // neighbor list and 1-3 and 1-4 special bond lists are skipped - if (break_flag && - (force->special_coul[1] != 1.0 || force->special_coul[2] != 1.0 || - force->special_coul[3] != 1.0)) + if (force->special_coul[1] != 1.0 || force->special_coul[2] != 1.0 || + force->special_coul[3] != 1.0) error->all(FLERR, - "With overlay/pair no, and break yes, BPM bond styles requires special Coulomb " + "With overlay/pair no and break yes, BPM bond styles requires special Coulomb " "weights = 1,1,1"); - if (id_fix_dummy_special && break_flag) { + if (id_fix_dummy_special) { // check if an update fix already exists, if so use it auto fixes = modify->get_fix_by_style("UPDATE_SPECIAL_BONDS"); if (fixes.size() > 0 ) { @@ -173,13 +177,17 @@ void BondBPM::init_style() if (force->special_lj[2] != 1.0 || force->special_lj[3] != 1.0 || force->special_coul[2] != 1.0 || force->special_coul[3] != 1.0) error->all(FLERR, "Bond style bpm requires 1-3 and 1-4 special weights of 1.0"); - } - if (break_flag) { if (force->angle || force->dihedral || force->improper) error->all(FLERR, "Bond style bpm cannot break with 3,4-body interactions"); if (atom->molecular == 2) error->all(FLERR, "Bond style bpm cannot break with atom style template"); + } else { + if (id_fix_update_special_bonds) { + modify->delete_fix(id_fix_update_special_bonds); + delete[] id_fix_update_special_bonds; + id_fix_update_special_bonds = nullptr; + } } // find all instances of bond history to delete/shift data @@ -330,6 +338,10 @@ void BondBPM::settings(int narg, char **arg) delete[] id_fix_dummy_history; id_fix_dummy_history = nullptr; } + + // If bonds don't break and there's no overlay, can ignore special requirements + if (break_flag == 0 && overlay_flag == 0) + ignore_special_flag = 1; } /* ---------------------------------------------------------------------- @@ -417,17 +429,21 @@ void BondBPM::read_restart(FILE *fp) MPI_Bcast(&break_flag, 1, MPI_INT, 0, world); } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + delete and process a given bond +------------------------------------------------------------------------- */ void BondBPM::process_broken(int i, int j) { if (!break_flag) error->one(FLERR, "BPM bond broke with break no option"); int nlocal = atom->nlocal; - if (fix_store_local) { - // If newton off, bond can break on two procs so only record if proc owns lower tag - // (BPM bond styles should sort so i -> atom with lower tag) - if (force->newton_bond || (i < nlocal)) { + // Only performed once per bond + // If newton off, bond can break on two procs so only record if proc owns lower tag + // (BPM bond styles should sort so i -> atom with lower tag) + if (force->newton_bond || (i < nlocal)) { + nbroken += 1; + if (fix_store_local) { for (int n = 0; n < nvalues; n++) (this->*pack_choice[n])(n, i, j); fix_store_local->add_data(output_data, i, j); } @@ -488,6 +504,65 @@ void BondBPM::process_broken(int i, int j) } } +/* ---------------------------------------------------------------------- + copy bondstore array data into atom arrays for a new bond +------------------------------------------------------------------------- */ + +void BondBPM::process_new(int n, int i, int j) +{ + int m, a; + tagint *tag = atom->tag; + int *num_bond = atom->num_bond; + tagint **bond_atom = atom->bond_atom; + double **bondstore = fix_bond_history->bondstore; + + if (i < atom->nlocal) + for (m = 0; m < num_bond[i]; m++) + if (bond_atom[i][m] == tag[j]) + for (a = 0; a < nhistory; a++) + fix_bond_history->update_atom_value(i, m, a, bondstore[n][a]); + + if (j < atom->nlocal) + for (m = 0; m < num_bond[j]; m++) + if (bond_atom[j][m] == tag[i]) + for (a = 0; a < nhistory; a++) + fix_bond_history->update_atom_value(j, m, a, bondstore[n][a]); +} + +/* ---------------------------------------------------------------------- + standard processes performed prior to substyle's compute method +------------------------------------------------------------------------- */ + +void BondBPM::pre_compute() +{ + if (!fix_bond_history->stored_flag) { + fix_bond_history->stored_flag = true; + + // Calculate substyle-specific bond history data and save to atom arrays + store_data(); + + // Rebuild bondstore array + fix_bond_history->post_neighbor(); + } + + if (hybrid_flag) fix_bond_history->compress_history(); + + nbroken = 0; +} + +/* ---------------------------------------------------------------------- + standard processes performed after substyle's compute method +------------------------------------------------------------------------- */ + +void BondBPM::post_compute() +{ + if (hybrid_flag) fix_bond_history->uncompress_history(); + + int nbroken_total; + MPI_Allreduce(&nbroken, &nbroken_total, 1, MPI_INT,MPI_SUM, world); + atom->nbonds -= nbroken_total; +} + /* ---------------------------------------------------------------------- one method for every keyword bond bpm can output the atom property is packed into array or vector diff --git a/src/BPM/bond_bpm.h b/src/BPM/bond_bpm.h index c130ddfc4a..ade790869f 100644 --- a/src/BPM/bond_bpm.h +++ b/src/BPM/bond_bpm.h @@ -47,7 +47,13 @@ class BondBPM : public Bond { class FixBondHistory *fix_bond_history; class FixUpdateSpecialBonds *fix_update_special_bonds; + int nbroken; + + virtual void store_data() = 0; + void pre_compute(); + void post_compute(); void process_broken(int, int); + void process_new(int, int, int); using FnPtrPack = void (BondBPM::*)(int, int, int); FnPtrPack *pack_choice; // ptrs to pack functions double *output_data; diff --git a/src/BPM/bond_bpm_rotational.cpp b/src/BPM/bond_bpm_rotational.cpp index 0e5d5112d3..608030df18 100644 --- a/src/BPM/bond_bpm_rotational.cpp +++ b/src/BPM/bond_bpm_rotational.cpp @@ -88,61 +88,7 @@ BondBPMRotational::~BondBPMRotational() } /* ---------------------------------------------------------------------- - Store data for a single bond - if bond added after LAMMPS init (e.g. pour) -------------------------------------------------------------------------- */ - -double BondBPMRotational::store_bond(int n, int i, int j) -{ - double delx, dely, delz, r, rinv; - double **x = atom->x; - tagint *tag = atom->tag; - double **bondstore = fix_bond_history->bondstore; - - if (tag[i] < tag[j]) { - delx = x[i][0] - x[j][0]; - dely = x[i][1] - x[j][1]; - delz = x[i][2] - x[j][2]; - } else { - delx = x[j][0] - x[i][0]; - dely = x[j][1] - x[i][1]; - delz = x[j][2] - x[i][2]; - } - - r = sqrt(delx * delx + dely * dely + delz * delz); - rinv = 1.0 / r; - - bondstore[n][0] = r; - bondstore[n][1] = delx * rinv; - bondstore[n][2] = dely * rinv; - bondstore[n][3] = delz * rinv; - - if (i < atom->nlocal) { - for (int m = 0; m < atom->num_bond[i]; m++) { - if (atom->bond_atom[i][m] == tag[j]) { - fix_bond_history->update_atom_value(i, m, 0, r); - fix_bond_history->update_atom_value(i, m, 1, delx * rinv); - fix_bond_history->update_atom_value(i, m, 2, dely * rinv); - fix_bond_history->update_atom_value(i, m, 3, delz * rinv); - } - } - } - - if (j < atom->nlocal) { - for (int m = 0; m < atom->num_bond[j]; m++) { - if (atom->bond_atom[j][m] == tag[i]) { - fix_bond_history->update_atom_value(j, m, 0, r); - fix_bond_history->update_atom_value(j, m, 1, delx * rinv); - fix_bond_history->update_atom_value(j, m, 2, dely * rinv); - fix_bond_history->update_atom_value(j, m, 3, delz * rinv); - } - } - } - - return r; -} - -/* ---------------------------------------------------------------------- - Store data for all bonds called once + Store data for all bonds, called once ------------------------------------------------------------------------- */ void BondBPMRotational::store_data() @@ -186,8 +132,6 @@ void BondBPMRotational::store_data() fix_bond_history->update_atom_value(i, m, 3, delz * rinv); } } - - fix_bond_history->post_neighbor(); } /* ---------------------------------------------------------------------- @@ -458,12 +402,7 @@ void BondBPMRotational::damping_forces(int i1, int i2, int type, double *rhat, d void BondBPMRotational::compute(int eflag, int vflag) { - if (!fix_bond_history->stored_flag) { - fix_bond_history->stored_flag = true; - store_data(); - } - - if (hybrid_flag) fix_bond_history->compress_history(); + pre_compute(); int i1, i2, itmp, n, type; double r[3], r0[3], rhat[3]; @@ -493,7 +432,6 @@ void BondBPMRotational::compute(int eflag, int vflag) i1 = bondlist[n][0]; i2 = bondlist[n][1]; type = bondlist[n][2]; - r0_mag = bondstore[n][0]; // Ensure pair is always ordered such that r0 points in // a consistent direction and to ensure numerical operations @@ -505,14 +443,6 @@ void BondBPMRotational::compute(int eflag, int vflag) i2 = itmp; } - // If bond hasn't been set - should be initialized to zero - if (r0_mag < EPSILON || std::isnan(r0_mag)) r0_mag = store_bond(n, i1, i2); - - r0[0] = bondstore[n][1]; - r0[1] = bondstore[n][2]; - r0[2] = bondstore[n][3]; - MathExtra::scale3(r0_mag, r0); - // Note this is the reverse of Mora & Wang MathExtra::sub3(x[i1], x[i2], r); @@ -521,6 +451,21 @@ void BondBPMRotational::compute(int eflag, int vflag) r_mag_inv = 1.0 / r_mag; MathExtra::scale3(r_mag_inv, r, rhat); + // If bond hasn't been set (should be initialized to zero) + r0_mag = bondstore[n][0]; + if (r0_mag < EPSILON || std::isnan(r0_mag)) { + r0_mag = bondstore[n][0] = r_mag; + bondstore[n][1] = rhat[0]; + bondstore[n][2] = rhat[1]; + bondstore[n][3] = rhat[2]; + process_new(n, i1, i2); + } + r0[0] = bondstore[n][1]; + r0[1] = bondstore[n][2]; + r0[2] = bondstore[n][3]; + + MathExtra::scale3(r0_mag, r0); + // ------------------------------------------------------// // Calculate forces, check if bond breaks // ------------------------------------------------------// @@ -576,7 +521,7 @@ void BondBPMRotational::compute(int eflag, int vflag) -force1on2[2], r[0], r[1], r[2]); } - if (hybrid_flag) fix_bond_history->uncompress_history(); + post_compute(); } /* ---------------------------------------------------------------------- */ diff --git a/src/BPM/bond_bpm_rotational.h b/src/BPM/bond_bpm_rotational.h index 9fdc418d2d..9d8be54071 100644 --- a/src/BPM/bond_bpm_rotational.h +++ b/src/BPM/bond_bpm_rotational.h @@ -48,8 +48,7 @@ class BondBPMRotational : public BondBPM { void damping_forces(int, int, int, double *, double *, double *, double *, double *); void allocate(); - void store_data(); - double store_bond(int, int, int); + void store_data() override; }; } // namespace LAMMPS_NS diff --git a/src/BPM/bond_bpm_spring.cpp b/src/BPM/bond_bpm_spring.cpp index 5a9c601234..edd98c18ef 100644 --- a/src/BPM/bond_bpm_spring.cpp +++ b/src/BPM/bond_bpm_spring.cpp @@ -35,11 +35,13 @@ static constexpr double EPSILON = 1e-10; using namespace LAMMPS_NS; +enum {VOL, VOL0, DVOL0}; + /* ---------------------------------------------------------------------- */ BondBPMSpring::BondBPMSpring(LAMMPS *_lmp) : BondBPM(_lmp), k(nullptr), av(nullptr), ecrit(nullptr), gamma(nullptr), - id_fix_property_bond(nullptr), vol_current(nullptr), dvol0(nullptr) + id_fix_property_bond(nullptr), dvol0(nullptr) { partial_flag = 1; smooth_flag = 1; @@ -47,6 +49,8 @@ BondBPMSpring::BondBPMSpring(LAMMPS *_lmp) : volume_flag = 0; writedata = 0; + vol0_calculated = 0; + nhistory = 1; id_fix_bond_history = utils::strdup("HISTORY_BPM_SPRING"); @@ -81,40 +85,7 @@ BondBPMSpring::~BondBPMSpring() } /* ---------------------------------------------------------------------- - Store data for a single bond - if bond added after LAMMPS init (e.g. pour) -------------------------------------------------------------------------- */ - -double BondBPMSpring::store_bond(int n, int i, int j) -{ - double delx, dely, delz, r; - double **x = atom->x; - double **bondstore = fix_bond_history->bondstore; - tagint *tag = atom->tag; - - delx = x[i][0] - x[j][0]; - dely = x[i][1] - x[j][1]; - delz = x[i][2] - x[j][2]; - - r = sqrt(delx * delx + dely * dely + delz * delz); - bondstore[n][0] = r; - - if (i < atom->nlocal) { - for (int m = 0; m < atom->num_bond[i]; m++) { - if (atom->bond_atom[i][m] == tag[j]) { fix_bond_history->update_atom_value(i, m, 0, r); } - } - } - - if (j < atom->nlocal) { - for (int m = 0; m < atom->num_bond[j]; m++) { - if (atom->bond_atom[j][m] == tag[i]) { fix_bond_history->update_atom_value(j, m, 0, r); } - } - } - - return r; -} - -/* ---------------------------------------------------------------------- - Store data for all bonds called once + Store data for all bonds, called once ------------------------------------------------------------------------- */ void BondBPMSpring::store_data() @@ -146,14 +117,14 @@ void BondBPMSpring::store_data() fix_bond_history->update_atom_value(i, m, 0, r); } } - - fix_bond_history->post_neighbor(); } /* ---------------------------------------------------------------------- */ void BondBPMSpring::compute(int eflag, int vflag) { + pre_compute(); + int bond_change_flag = 0; double *vol0, *vol; @@ -167,38 +138,18 @@ void BondBPMSpring::compute(int eflag, int vflag) memory->create(dvol0, nmax, "bond/bpm/spring:dvol0"); for (int i = 0; i < nmax; i++) dvol0[i] = 0.0; } - } - if (!fix_bond_history->stored_flag) { - fix_bond_history->stored_flag = true; - store_data(); - - if (volume_flag) { - vol_current = vol0; - bond_change_flag = calculate_vol(); - - // zero dvol0, not needed since vol0 just calculated - for (int i = 0; i < nmax; i++) dvol0[i] = 0.0; - } - } - - if (volume_flag) { - vol_current = vol; bond_change_flag = calculate_vol(); - // Update vol0 to account for any new bonds - if (bond_change_flag) { + if (!vol0_calculated) { + for (int i = 0; i < nmax; i++) vol0[i] = vol[i]; + vol0_calculated = 1; + } else if (bond_change_flag) { update_vol0(); - - // forward new vol0 to ghosts before force calculation - vol_current = vol0; - comm->forward_comm(this); - - bond_change_flag = 0; } - } - if (hybrid_flag) fix_bond_history->compress_history(); + bond_change_flag = 0; + } int i1, i2, itmp, n, type; double delx, dely, delz, delvx, delvy, delvz; @@ -229,7 +180,6 @@ void BondBPMSpring::compute(int eflag, int vflag) i1 = bondlist[n][0]; i2 = bondlist[n][1]; type = bondlist[n][2]; - r0 = bondstore[n][0]; // Ensure pair is always ordered to ensure numerical operations // are identical to minimize the possibility that a bond straddling @@ -240,15 +190,20 @@ void BondBPMSpring::compute(int eflag, int vflag) i2 = itmp; } - // If bond hasn't been set - should be initialized to zero - if (r0 < EPSILON || std::isnan(r0)) r0 = store_bond(n, i1, i2); - delx = x[i1][0] - x[i2][0]; dely = x[i1][1] - x[i2][1]; delz = x[i1][2] - x[i2][2]; rsq = delx * delx + dely * dely + delz * delz; r = sqrt(rsq); + + // If bond hasn't been set (should be initialized to zero) + r0 = bondstore[n][0]; + if (r0 < EPSILON || std::isnan(r0)) { + r0 = bondstore[n][0] = r; + process_new(n, i1, i2); + } + e = (r - r0) / r0; if ((fabs(e) > ecrit[type]) && allow_breaks) { @@ -312,9 +267,9 @@ void BondBPMSpring::compute(int eflag, int vflag) } // Update vol0 to account for any broken bonds - if (volume_flag && bond_change_flag) update_vol0(); + if (bond_change_flag) update_vol0(); - if (hybrid_flag) fix_bond_history->uncompress_history(); + post_compute(); } /* ---------------------------------------------------------------------- */ @@ -330,11 +285,12 @@ int BondBPMSpring::calculate_vol() int dim = domain->dimension; double **x = atom->x; + double *vol = atom->dvector[index_vol]; int **bondlist = neighbor->bondlist; int nbondlist = neighbor->nbondlist; double **bondstore = fix_bond_history->bondstore; - for (n = 0; n < ntotal; n++) vol_current[n] = 0.0; + for (n = 0; n < ntotal; n++) vol[n] = 0.0; int bond_change_flag = 0; @@ -352,8 +308,8 @@ int BondBPMSpring::calculate_vol() vol_temp = rsq; if (dim == 3) vol_temp *= sqrt(rsq); - if (newton_bond || i1 < nlocal) vol_current[i1] += vol_temp; - if (newton_bond || i2 < nlocal) vol_current[i2] += vol_temp; + if (newton_bond || i1 < nlocal) vol[i1] += vol_temp; + if (newton_bond || i2 < nlocal) vol[i2] += vol_temp; // If bond hasn't been set - increment dvol0 too to update vol0 if (r0 < EPSILON || std::isnan(r0)) { @@ -363,6 +319,7 @@ int BondBPMSpring::calculate_vol() } } + comm_stage = VOL; if (newton_bond) comm->reverse_comm(this); comm->forward_comm(this); @@ -374,12 +331,16 @@ int BondBPMSpring::calculate_vol() void BondBPMSpring::update_vol0() { // accumulate changes in vol0 from ghosts - vol_current = dvol0; + comm_stage = DVOL0; if (force->newton_bond) comm->reverse_comm(this); double *vol0 = atom->dvector[index_vol0]; for (int i = 0; i < atom->nlocal; i++) vol0[i] += dvol0[i]; + // send updated vol0 to ghosts + comm_stage = VOL0; + comm->forward_comm(this); + // zero dvol0 for next change for (int i = 0; i < nmax; i++) dvol0[i] = 0.0; } @@ -546,6 +507,7 @@ void BondBPMSpring::write_restart_settings(FILE *fp) fwrite(&smooth_flag, sizeof(int), 1, fp); fwrite(&normalize_flag, sizeof(int), 1, fp); fwrite(&volume_flag, sizeof(int), 1, fp); + fwrite(&vol0_calculated, sizeof(int), 1, fp); } /* ---------------------------------------------------------------------- @@ -558,10 +520,12 @@ void BondBPMSpring::read_restart_settings(FILE *fp) utils::sfread(FLERR, &smooth_flag, sizeof(int), 1, fp, nullptr, error); utils::sfread(FLERR, &normalize_flag, sizeof(int), 1, fp, nullptr, error); utils::sfread(FLERR, &volume_flag, sizeof(int), 1, fp, nullptr, error); + utils::sfread(FLERR, &vol0_calculated, sizeof(int), 1, fp, nullptr, error); } MPI_Bcast(&smooth_flag, 1, MPI_INT, 0, world); MPI_Bcast(&normalize_flag, 1, MPI_INT, 0, world); MPI_Bcast(&volume_flag, 1, MPI_INT, 0, world); + MPI_Bcast(&vol0_calculated, 1, MPI_INT, 0, world); } /* ---------------------------------------------------------------------- */ @@ -628,8 +592,15 @@ double BondBPMSpring::single(int type, double rsq, int i, int j, double &fforce) int BondBPMSpring::pack_reverse_comm(int n, int first, double *buf) { int m = 0; + double *vol = atom->dvector[index_vol]; int last = first + n; - for (int i = first; i < last; i++) buf[m++] = vol_current[i]; + for (int i = first; i < last; i++) { + if (comm_stage == VOL) { + buf[m++] = vol[i]; + } else { + buf[m++] = dvol0[i]; + } + } return m; } @@ -638,9 +609,14 @@ int BondBPMSpring::pack_reverse_comm(int n, int first, double *buf) void BondBPMSpring::unpack_reverse_comm(int n, int *list, double *buf) { int m = 0; + double *vol = atom->dvector[index_vol]; for (int i = 0; i < n; i++) { int j = list[i]; - vol_current[j] += buf[m++]; + if (comm_stage == VOL) { + vol[j] += buf[m++]; + } else { + dvol0[j] += buf[m++]; + } } } @@ -649,9 +625,15 @@ void BondBPMSpring::unpack_reverse_comm(int n, int *list, double *buf) int BondBPMSpring::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int * /*pbc*/) { int m = 0; + double *vol = atom->dvector[index_vol]; + double *vol0 = atom->dvector[index_vol0]; for (int i = 0; i < n; i++) { int j = list[i]; - buf[m++] = vol_current[j]; + if (comm_stage == VOL) { + buf[m++] = vol[j]; + } else { + buf[m++] = vol0[j]; + } } return m; } @@ -661,6 +643,14 @@ int BondBPMSpring::pack_forward_comm(int n, int *list, double *buf, int /*pbc_fl void BondBPMSpring::unpack_forward_comm(int n, int first, double *buf) { int m = 0; + double *vol = atom->dvector[index_vol]; + double *vol0 = atom->dvector[index_vol0]; int last = first + n; - for (int i = first; i < last; i++) vol_current[i] = buf[m++]; + for (int i = first; i < last; i++) { + if (comm_stage == VOL) { + vol[i] = buf[m++]; + } else { + vol0[i] = buf[m++]; + } + } } diff --git a/src/BPM/bond_bpm_spring.h b/src/BPM/bond_bpm_spring.h index 8e5a80229d..2198a8da9a 100644 --- a/src/BPM/bond_bpm_spring.h +++ b/src/BPM/bond_bpm_spring.h @@ -46,13 +46,12 @@ class BondBPMSpring : public BondBPM { double *k, *av, *ecrit, *gamma; int smooth_flag, normalize_flag, volume_flag; - int index_vol, index_vol0, nmax; + int index_vol, index_vol0, vol0_calculated, comm_stage, nmax; char *id_fix_property_bond; - double *vol_current, *dvol0; + double *dvol0; void allocate(); - void store_data(); - double store_bond(int, int, int); + void store_data() override; int calculate_vol(); void update_vol0(); }; diff --git a/src/BPM/bond_bpm_spring_plastic.cpp b/src/BPM/bond_bpm_spring_plastic.cpp index 8ef8ef63c7..8351b74273 100644 --- a/src/BPM/bond_bpm_spring_plastic.cpp +++ b/src/BPM/bond_bpm_spring_plastic.cpp @@ -83,46 +83,7 @@ BondBPMSpringPlastic::~BondBPMSpringPlastic() } /* ---------------------------------------------------------------------- - Store data for a single bond - if bond added after LAMMPS init (e.g. pour) -------------------------------------------------------------------------- */ - -double BondBPMSpringPlastic::store_bond(int n, int i, int j) -{ - double delx, dely, delz, r; - double **x = atom->x; - double **bondstore = fix_bond_history->bondstore; - tagint *tag = atom->tag; - - delx = x[i][0] - x[j][0]; - dely = x[i][1] - x[j][1]; - delz = x[i][2] - x[j][2]; - - r = sqrt(delx * delx + dely * dely + delz * delz); - bondstore[n][0] = r; - - if (i < atom->nlocal) { - for (int m = 0; m < atom->num_bond[i]; m++) { - if (atom->bond_atom[i][m] == tag[j]) { - fix_bond_history->update_atom_value(i, m, 0, r); - fix_bond_history->update_atom_value(i, m, 1, 0); - } - } - } - - if (j < atom->nlocal) { - for (int m = 0; m < atom->num_bond[j]; m++) { - if (atom->bond_atom[j][m] == tag[i]) { - fix_bond_history->update_atom_value(j, m, 0, r); - fix_bond_history->update_atom_value(j, m, 1, 0); - } - } - } - - return r; -} - -/* ---------------------------------------------------------------------- - Store data for all bonds called once + Store data for all bonds, called once ------------------------------------------------------------------------- */ void BondBPMSpringPlastic::store_data() @@ -155,20 +116,13 @@ void BondBPMSpringPlastic::store_data() fix_bond_history->update_atom_value(i, m, 1, 0); } } - - fix_bond_history->post_neighbor(); } /* ---------------------------------------------------------------------- */ void BondBPMSpringPlastic::compute(int eflag, int vflag) { - if (!fix_bond_history->stored_flag) { - fix_bond_history->stored_flag = true; - store_data(); - } - - if (hybrid_flag) fix_bond_history->compress_history(); + pre_compute(); int i1, i2, itmp, n, type; double delx, dely, delz, delvx, delvy, delvz; @@ -196,8 +150,6 @@ void BondBPMSpringPlastic::compute(int eflag, int vflag) i1 = bondlist[n][0]; i2 = bondlist[n][1]; type = bondlist[n][2]; - r0 = bondstore[n][0]; - ep = bondstore[n][1]; // Ensure pair is always ordered to ensure numerical operations // are identical to minimize the possibility that a bond straddling @@ -208,15 +160,22 @@ void BondBPMSpringPlastic::compute(int eflag, int vflag) i2 = itmp; } - // If bond hasn't been set - should be initialized to zero - if (r0 < EPSILON || std::isnan(r0)) r0 = store_bond(n, i1, i2); - delx = x[i1][0] - x[i2][0]; dely = x[i1][1] - x[i2][1]; delz = x[i1][2] - x[i2][2]; rsq = delx * delx + dely * dely + delz * delz; r = sqrt(rsq); + + // If bond hasn't been set (should be initialized to zero) + r0 = bondstore[n][0]; + if (r0 < EPSILON || std::isnan(r0)) { + r0 = bondstore[n][0] = r; + bondstore[n][1] = 0.0; + process_new(n, i1, i2); + } + ep = bondstore[n][1]; + e = (r - r0) / r0; if ((fabs(e) > ecrit[type]) && allow_breaks) { @@ -272,7 +231,7 @@ void BondBPMSpringPlastic::compute(int eflag, int vflag) if (evflag) ev_tally(i1, i2, nlocal, newton_bond, 0.0, fbond, delx, dely, delz); } - if (hybrid_flag) fix_bond_history->uncompress_history(); + post_compute(); } /* ---------------------------------------------------------------------- */ @@ -432,11 +391,24 @@ double BondBPMSpringPlastic::single(int type, double rsq, int i, int j, double & { if (type <= 0) return 0.0; + // ep can be updated, so search bondlist vs. fix_bond_history->get_atom_value() + // slower than other bpm/bond styles' single method + tagint *tag = atom->tag; + int **bondlist = neighbor->bondlist; + int nbondlist = neighbor->nbondlist; + double **bondstore = fix_bond_history->bondstore; + + tagint tagi = tag[i]; + tagint tagj = tag[j]; + tagint tag1, tag2; double r0 = 0.0, ep = 0.0; - for (int n = 0; n < atom->num_bond[i]; n++) { - if (atom->bond_atom[i][n] == atom->tag[j]) { - r0 = fix_bond_history->get_atom_value(i, n, 0); - ep = fix_bond_history->get_atom_value(i, n, 1); + for (int n = 0; n < nbondlist; n++) { + tag1 = tag[bondlist[n][0]]; + tag2 = tag[bondlist[n][1]]; + if ((tag1 == tagi && tag2 == tagj) || (tag1 == tagj && tag2 == tagi)) { + r0 = bondstore[n][0]; + ep = bondstore[n][1]; + break; } } diff --git a/src/BPM/bond_bpm_spring_plastic.h b/src/BPM/bond_bpm_spring_plastic.h index 0565d5ce01..3b92d3ea6c 100644 --- a/src/BPM/bond_bpm_spring_plastic.h +++ b/src/BPM/bond_bpm_spring_plastic.h @@ -43,8 +43,7 @@ class BondBPMSpringPlastic : public BondBPM { int smooth_flag, normalize_flag; void allocate(); - void store_data(); - double store_bond(int, int, int); + void store_data() override; }; } // namespace LAMMPS_NS diff --git a/src/GPU/fix_gpu.cpp b/src/GPU/fix_gpu.cpp index 7bb34af4df..6478e1db85 100644 --- a/src/GPU/fix_gpu.cpp +++ b/src/GPU/fix_gpu.cpp @@ -301,14 +301,15 @@ void FixGPU::setup(int vflag) if (force->pair_match("gpu",0)) overlap_topo = 1; } } - if (overlap_topo) neighbor->set_overlap_topo(1); if (_gpu_mode == GPU_NEIGH || _gpu_mode == GPU_HYB_NEIGH) if (neighbor->exclude_setting() != 0) error->all(FLERR, "Cannot use neigh_modify exclude with GPU neighbor builds"); - if (utils::strmatch(update->integrate_style,"^verlet")) post_force(vflag); - else { + if (utils::strmatch(update->integrate_style,"^verlet")) { + if (overlap_topo) neighbor->set_overlap_topo(1); + post_force(vflag); + } else { // In setup only, all forces calculated on GPU are put in the outer level (dynamic_cast(update->integrate))->copy_flevel_f(_nlevels_respa-1); post_force(vflag); diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index b80d283b62..60e6edf4d9 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -807,23 +807,3 @@ double PairGranHookeHistory::memory_usage() double bytes = (double) nmax * sizeof(double); return bytes; } - -/* ---------------------------------------------------------------------- - self-interaction range of particle -------------------------------------------------------------------------- */ - -double PairGranHookeHistory::atom2cut(int i) -{ - double cut = atom->radius[i] * 2; - return cut; -} - -/* ---------------------------------------------------------------------- - maximum interaction range for two finite particles -------------------------------------------------------------------------- */ - -double PairGranHookeHistory::radii2cut(double r1, double r2) -{ - double cut = r1 + r2; - return cut; -} diff --git a/src/GRANULAR/pair_gran_hooke_history.h b/src/GRANULAR/pair_gran_hooke_history.h index 54491147e8..90b5e312bb 100644 --- a/src/GRANULAR/pair_gran_hooke_history.h +++ b/src/GRANULAR/pair_gran_hooke_history.h @@ -42,8 +42,6 @@ class PairGranHookeHistory : public Pair { int pack_forward_comm(int, int *, double *, int, int *) override; void unpack_forward_comm(int, int, double *) override; double memory_usage() override; - double atom2cut(int) override; - double radii2cut(double, double) override; protected: double kn, kt, gamman, gammat, xmu; diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index fc90e1221b..a28139df46 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -470,8 +470,10 @@ void PairGranular::init_style() } } - if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE|NeighConst::REQ_HISTORY); - else neighbor->add_request(this, NeighConst::REQ_SIZE); + int req_flags = NeighConst::REQ_DEFAULT; + if (!beyond_contact) req_flags |= NeighConst::REQ_SIZE; + if (use_history) req_flags |= NeighConst::REQ_HISTORY; + neighbor->add_request(this, req_flags); // if history is stored and first init, create Fix to store history // it replaces FixDummy, created in the constructor @@ -616,7 +618,7 @@ double PairGranular::init_one(int i, int j) cutoff = MAX(cutoff, maxrad_frozen[i] + maxrad_dynamic[j] + pulloff); pulloff = model->pulloff_distance(maxrad_dynamic[i], maxrad_frozen[j]); - cutoff = MAX(cutoff,maxrad_dynamic[i] + maxrad_frozen[j] + pulloff); + cutoff = MAX(cutoff, maxrad_dynamic[i] + maxrad_frozen[j] + pulloff); } } else { // radius info about either i or j does not exist @@ -878,56 +880,6 @@ void PairGranular::transfer_history(double* source, double* target, int itype, i } } -/* ---------------------------------------------------------------------- - self-interaction range of particle -------------------------------------------------------------------------- */ - -double PairGranular::atom2cut(int i) -{ - double cut; - - cut = atom->radius[i] * 2; - if (beyond_contact) { - int itype = atom->type[i]; - class GranularModel* model = models_list[types_indices[itype][itype]]; - if (model->beyond_contact) { - cut += model->pulloff_distance(cut, cut); - } - } - - return cut; -} - -/* ---------------------------------------------------------------------- - maximum interaction range for two finite particles -------------------------------------------------------------------------- */ - -double PairGranular::radii2cut(double r1, double r2) -{ - double cut = 0.0; - - if (beyond_contact) { - int n = atom->ntypes; - double temp; - - // Check all combinations of i and j to find theoretical maximum pull off distance - class GranularModel* model; - for (int i = 1; i <= n; i++) { - for (int j = 1; j <= n; j++) { - model = models_list[types_indices[i][j]]; - if (model->beyond_contact) { - temp = model->pulloff_distance(r1, r2); - if (temp > cut) cut = temp; - } - } - } - } - - cut += r1 + r2; - - return cut; -} - /* ---------------------------------------------------------------------- remove unused models ------------------------------------------------------------------------- */ diff --git a/src/GRANULAR/pair_granular.h b/src/GRANULAR/pair_granular.h index b3b8d350f0..24408de810 100644 --- a/src/GRANULAR/pair_granular.h +++ b/src/GRANULAR/pair_granular.h @@ -44,8 +44,6 @@ class PairGranular : public Pair { int pack_forward_comm(int, int *, double *, int, int *) override; void unpack_forward_comm(int, int, double *) override; double memory_usage() override; - double atom2cut(int) override; - double radii2cut(double, double) override; int get_size_history() const { return size_history; } // granular models diff --git a/src/MC/fix_neighbor_swap.cpp b/src/MC/fix_neighbor_swap.cpp index 64ecf225da..625d00a321 100644 --- a/src/MC/fix_neighbor_swap.cpp +++ b/src/MC/fix_neighbor_swap.cpp @@ -103,7 +103,7 @@ FixNeighborSwap::FixNeighborSwap(LAMMPS *lmp, int narg, char **arg) : if (temperature <= 0.0) error->all(FLERR, 6, "Illegal fix neighbor/swap command temperature value: {}", temperature); - double r_0 = utils::inumeric(FLERR, arg[7], false, lmp); + double r_0 = utils::numeric(FLERR, arg[7], false, lmp); if (r_0 <= 0.0) error->all(FLERR, 7, "Illegal fix neighbor/swap command R0 value: {}", r_0); beta = 1.0 / (force->boltz * temperature); diff --git a/src/MISC/pair_tracker.cpp b/src/MISC/pair_tracker.cpp index 43a576d963..4113131497 100644 --- a/src/MISC/pair_tracker.cpp +++ b/src/MISC/pair_tracker.cpp @@ -519,26 +519,6 @@ void PairTracker::transfer_history(double *source, double *target, int /*itype*/ for (int i = 0; i < size_history; i++) target[i] = source[i]; } -/* ---------------------------------------------------------------------- - self-interaction range of particle if finite particles -------------------------------------------------------------------------- */ - -double PairTracker::atom2cut(int i) -{ - double cut = atom->radius[i] * 2; - return cut; -} - -/* ---------------------------------------------------------------------- - maximum interaction range for two finite particles -------------------------------------------------------------------------- */ - -double PairTracker::radii2cut(double r1, double r2) -{ - double cut = r1 + r2; - return cut; -} - /* ---------------------------------------------------------------------- */ void PairTracker::process_data(int i, int j, double *input_data) diff --git a/src/MISC/pair_tracker.h b/src/MISC/pair_tracker.h index ada3aa7d20..47b148fa6e 100644 --- a/src/MISC/pair_tracker.h +++ b/src/MISC/pair_tracker.h @@ -38,8 +38,6 @@ class PairTracker : public Pair { void write_restart_settings(FILE *) override; void read_restart_settings(FILE *) override; double single(int, int, int, int, double, double, double, double &) override; - double atom2cut(int) override; - double radii2cut(double, double) override; void transfer_history(double *, double *, int, int) override; protected: diff --git a/src/PLUMED/fix_plumed.cpp b/src/PLUMED/fix_plumed.cpp index a38c677341..17747482a5 100644 --- a/src/PLUMED/fix_plumed.cpp +++ b/src/PLUMED/fix_plumed.cpp @@ -69,10 +69,10 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : int api_version = 0; p->cmd("getApiVersion", &api_version); - if ((api_version < 5) || (api_version > 10)) + if ((api_version < 5) || (api_version > 11)) error->all(FLERR, "Incompatible API version for PLUMED in fix plumed. " - "Only Plumed 2.4.x, 2.5.x, 2.6.x, 2.7.x, 2.8.x, 2.9.x are tested and supported."); + "Only Plumed 2.4.x, 2.5.x, 2.6.x, 2.7.x, 2.8.x, 2.9.x, 2.10.x are tested and supported."); #if !defined(MPI_STUBS) // If the -partition option is activated then enable diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index f47418a14d..3181b0f392 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -2446,10 +2446,12 @@ double FixBondReact::rxnfunction(const std::string& rxnfunc, const std::string& for (int i = 0; i < onemol->natoms; i++) { if (onemol->fragmentmask[ifrag][i]) { aset.insert(glove[i][1]); - nsum++; + if (ibonding[i] == 1 || jbonding[i] == 1) nsum++; } } - if (nsum != 2) error->one(FLERR,"Bond/react: Molecule fragment of reaction special function 'rxnbond' " + if (nsum == 0) error->one(FLERR, "Bond/react: When using reaction special function 'rxnbond', " + "at least one atom in molecule fragment must be an initiator atom"); + if (aset.size() != 2) error->one(FLERR,"Bond/react: Molecule fragment of reaction special function 'rxnbond' " "must contain exactly two atoms"); if (cperbond->invoked_local != lmp->update->ntimestep) @@ -4204,11 +4206,16 @@ void FixBondReact::Equivalences(char *line, int myrxn) reverse_equiv[tmp1-1][1][myrxn] = tmp2; } // sanity check for one-to-one mapping for equivalences - for (int i = 0; i < twomol->natoms; i++) - for (int j = i+1; j < twomol->natoms; j++) + for (int i = 0; i < twomol->natoms; i++) { + if (create_atoms[i][myrxn] == 1) continue; + for (int j = i+1; j < twomol->natoms; j++) { + if (create_atoms[i][myrxn] == 1) continue; if (equivalences[i][0][myrxn] == equivalences[j][0][myrxn] || - equivalences[i][1][myrxn] == equivalences[j][1][myrxn]) + equivalences[i][1][myrxn] == equivalences[j][1][myrxn]) { error->one(FLERR,"Fix bond/react: Repeated atoms IDs in Equivalences section"); + } + } + } } void FixBondReact::DeleteAtoms(char *line, int myrxn) diff --git a/src/RHEO/README b/src/RHEO/README index 15b642442a..5200fd941a 100644 --- a/src/RHEO/README +++ b/src/RHEO/README @@ -1,6 +1,10 @@ RHEO or Reproducing Hydrodynamics and Elastic Objects is a package to model -multiphase fluid systems. The authors include Joel Clemmer (Sandia), Thomas -O'Connor (Carnegie Mellon), and Eric Palermo (Carnegie Mellon). +multiphase fluid systems. The authors include Joel Clemmer (Sandia, jtclemm@sandia.gov), +Thomas O'Connor (Carnegie Mellon), and Eric Palermo (Carnegie Mellon). + +Please see the relevant how to page in the LAMMPS documentation, +https://docs.lammps.org/Howto_rheo.html +for more background and details on what's included in the package. Bond style rheo/shell, compute style rheo/property/atom, and fix style rheo/temperature depend on the BPM package, so it is required to install diff --git a/src/RHEO/bond_rheo_shell.cpp b/src/RHEO/bond_rheo_shell.cpp index 98c850791d..877514241f 100644 --- a/src/RHEO/bond_rheo_shell.cpp +++ b/src/RHEO/bond_rheo_shell.cpp @@ -95,40 +95,7 @@ BondRHEOShell::~BondRHEOShell() } /* ---------------------------------------------------------------------- - Store data for a single bond - if bond added after LAMMPS init (e.g. pour) -------------------------------------------------------------------------- */ - -double BondRHEOShell::store_bond(int n, int i, int j) -{ - double **bondstore = fix_bond_history->bondstore; - tagint *tag = atom->tag; - - bondstore[n][0] = 0.0; - bondstore[n][1] = 0.0; - - if (i < atom->nlocal) { - for (int m = 0; m < atom->num_bond[i]; m++) { - if (atom->bond_atom[i][m] == tag[j]) { - fix_bond_history->update_atom_value(i, m, 0, 0.0); - fix_bond_history->update_atom_value(i, m, 1, 0.0); - } - } - } - - if (j < atom->nlocal) { - for (int m = 0; m < atom->num_bond[j]; m++) { - if (atom->bond_atom[j][m] == tag[i]) { - fix_bond_history->update_atom_value(j, m, 0, 0.0); - fix_bond_history->update_atom_value(j, m, 1, 0.0); - } - } - } - - return 0.0; -} - -/* ---------------------------------------------------------------------- - Store data for all bonds called once + Store data for all bonds, called once ------------------------------------------------------------------------- */ void BondRHEOShell::store_data() @@ -160,12 +127,7 @@ void BondRHEOShell::store_data() void BondRHEOShell::compute(int eflag, int vflag) { - if (!fix_bond_history->stored_flag) { - fix_bond_history->stored_flag = true; - store_data(); - } - - if (hybrid_flag) fix_bond_history->compress_history(); + pre_compute(); int i1, i2, itmp, n, type; double delx, dely, delz, delvx, delvy, delvz; @@ -204,8 +166,6 @@ void BondRHEOShell::compute(int eflag, int vflag) i1 = bondlist[n][0]; i2 = bondlist[n][1]; type = bondlist[n][2]; - r0 = bondstore[n][0]; - t = bondstore[n][1]; // Ensure pair is always ordered to ensure numerical operations // are identical to minimize the possibility that a bond straddling @@ -216,8 +176,16 @@ void BondRHEOShell::compute(int eflag, int vflag) i2 = itmp; } - // If bond hasn't been set - zero data - if (t < EPSILON || std::isnan(t)) t = store_bond(n, i1, i2); + // If bond hasn't been set (should be initialized to zero) + // t will grow, so won't stay at zero + t = bondstore[n][1]; + if (t < EPSILON || std::isnan(t)) { + t = bondstore[n][1] = 0.0; + bondstore[n][0] = 0.0; + process_new(n, i1, i2); + } + + r0 = bondstore[n][0]; delx = x[i1][0] - x[i2][0]; dely = x[i1][1] - x[i2][1]; @@ -294,7 +262,7 @@ void BondRHEOShell::compute(int eflag, int vflag) if (nbond[i] != 0) status[i] |= STATUS_NO_SHIFT; } - if (hybrid_flag) fix_bond_history->uncompress_history(); + post_compute(); } /* ---------------------------------------------------------------------- */ diff --git a/src/RHEO/bond_rheo_shell.h b/src/RHEO/bond_rheo_shell.h index 6640cab2ad..68b5efaf58 100644 --- a/src/RHEO/bond_rheo_shell.h +++ b/src/RHEO/bond_rheo_shell.h @@ -53,8 +53,7 @@ class BondRHEOShell : public BondBPM { void process_ineligibility(int, int); void allocate(); - void store_data(); - double store_bond(int, int, int); + void store_data() override; }; } // namespace LAMMPS_NS diff --git a/src/RHEO/fix_rheo_oxidation.cpp b/src/RHEO/fix_rheo_oxidation.cpp index 859a501f34..e2380cfd02 100644 --- a/src/RHEO/fix_rheo_oxidation.cpp +++ b/src/RHEO/fix_rheo_oxidation.cpp @@ -236,6 +236,7 @@ void FixRHEOOxidation::post_integrate() int added_bonds_all; MPI_Allreduce(&added_bonds, &added_bonds_all, 1, MPI_INT, MPI_SUM, world); + atom->nbonds += added_bonds_all; if (added_bonds_all > 0) next_reneighbor = update->ntimestep; } diff --git a/src/RHEO/fix_rheo_thermal.cpp b/src/RHEO/fix_rheo_thermal.cpp index 24b803a398..648370694e 100644 --- a/src/RHEO/fix_rheo_thermal.cpp +++ b/src/RHEO/fix_rheo_thermal.cpp @@ -569,6 +569,7 @@ void FixRHEOThermal::break_bonds() } // Update bond list and break solid-melted bonds + int deleted_bonds = 0; for (n = 0; n < nbondlist; n++) { // skip bond if not correct type @@ -582,6 +583,7 @@ void FixRHEOThermal::break_bonds() if (!melti && !meltj) continue; bondlist[n][2] = 0; + deleted_bonds += 1; // Delete bonds for non-melted local atoms (shifting) if (i < nlocal && !melti) { @@ -628,6 +630,10 @@ void FixRHEOThermal::break_bonds() if (((i >= nlocal) && melti) || ((j >= nlocal) && meltj)) fix_update_special_bonds->add_broken_bond(i, j); } + + int deleted_bonds_all; + MPI_Allreduce(&deleted_bonds, &deleted_bonds_all, 1, MPI_INT, MPI_SUM, world); + atom->nbonds -= deleted_bonds_all; } /* ---------------------------------------------------------------------- */ @@ -648,6 +654,10 @@ void FixRHEOThermal::create_bonds() int *num_bond = atom->num_bond; double **x = atom->x; + // acquire updated ghost atom positions & build nlist + // necessary b/c are calling this after integrate, but before Verlet comm + + comm->forward_comm(); neighbor->build_one(list); inum = list->inum; @@ -655,6 +665,8 @@ void FixRHEOThermal::create_bonds() numneigh = list->numneigh; firstneigh = list->firstneigh; + int added_bonds = 0; + // loop over neighbors of my atoms // might be faster to do a full list and just act on the atom that freezes for (ii = 0; ii < inum; ii++) { @@ -686,6 +698,8 @@ void FixRHEOThermal::create_bonds() rsq = delx * delx + dely * dely + delz * delz; if (rsq > cutsq_bond) continue; + added_bonds += 1; + // Add bonds to owned atoms // If newton bond off, add to both, otherwise add to whichever has a smaller tag if ((i < nlocal) && (!newton_bond || (tag[i] < tag[j]))) { @@ -707,6 +721,10 @@ void FixRHEOThermal::create_bonds() if (fix_update_special_bonds) fix_update_special_bonds->add_created_bond(i, j); } } + + int added_bonds_all; + MPI_Allreduce(&added_bonds, &added_bonds_all, 1, MPI_INT, MPI_SUM, world); + atom->nbonds += added_bonds_all; } /* ---------------------------------------------------------------------- */ diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index 6c96410cfa..dcbd20939f 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -193,7 +193,7 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : // parse optional args onemols = nullptr; - kbond = 1.0e6*force->boltz; + kbond = 1.0e9*force->boltz; int iarg = next; while (iarg < narg) { @@ -383,7 +383,7 @@ void FixShake::init() if ((comm->me == 0) && (update->whichflag == 2)) error->warning(FLERR,"Using fix {} with minimization.\n Substituting constraints with " - "harmonic restraint forces using kbond={:.4g}", style, kbond); + "harmonic restraint forces using kbond={:.8g}", style, kbond); // error if a fix changing the box comes before shake fix bool boxflag = false; @@ -746,42 +746,242 @@ void FixShake::min_pre_reverse(int eflag, int /*vflag*/) void FixShake::min_post_force(int vflag) { - if (output_every) { - bigint ntimestep = update->ntimestep; - if (next_output == ntimestep) stats(); - - next_output = ntimestep + output_every; - if (ntimestep % output_every != 0) - next_output = (ntimestep/output_every)*output_every + output_every; - } else next_output = -1; - - int eflag = eflag_pre_reverse; - ev_init(eflag, vflag); + // update local pointers of per-atom quantities x = atom->x; + v = atom->v; f = atom->f; + mass = atom->mass; + rmass = atom->rmass; + type = atom->type; nlocal = atom->nlocal; + + int atom1,atom2,atom3,atom4; + int eflag = eflag_pre_reverse; + ev_init(eflag, vflag); ebond = 0.0; - // loop over shake clusters to add restraint forces + // zero out accumulators for statistics - for (int i = 0; i < nlist; i++) { - int m = list[i]; - if (shake_flag[m] == 2) { - bond_force(closest_list[i][0], closest_list[i][1], bond_distance[shake_type[m][0]]); - } else if (shake_flag[m] == 3) { - bond_force(closest_list[i][0], closest_list[i][1], bond_distance[shake_type[m][0]]); - bond_force(closest_list[i][0], closest_list[i][2], bond_distance[shake_type[m][1]]); - } else if (shake_flag[m] == 4) { - bond_force(closest_list[i][0], closest_list[i][1], bond_distance[shake_type[m][0]]); - bond_force(closest_list[i][0], closest_list[i][2], bond_distance[shake_type[m][1]]); - bond_force(closest_list[i][0], closest_list[i][3], bond_distance[shake_type[m][2]]); - } else { - bond_force(closest_list[i][0], closest_list[i][1], bond_distance[shake_type[m][0]]); - bond_force(closest_list[i][0], closest_list[i][2], bond_distance[shake_type[m][1]]); - bond_force(closest_list[i][1], closest_list[i][2], angle_distance[shake_type[m][2]]); + int nb = atom->nbondtypes + 1; + int na = atom->nangletypes + 1; + + for (int i = 0; i < nb; i++) { + b_count[i] = 0; + b_ave[i] = b_max[i] = 0.0; + b_min[i] = BIG; + } + for (int i = 0; i < na; i++) { + a_count[i] = 0; + a_ave[i] = a_max[i] = 0.0; + a_min[i] = BIG; + } + + // loop over local shake clusters to add restraint forces + + for (int i = 0; i < nlocal; i++) { + if (shake_flag[i]) { + if (shake_flag[i] == 2) { + atom1 = atom->map(shake_atom[i][0]); + atom2 = atom->map(shake_atom[i][1]); + if (atom1 == -1 || atom2 == -1) + error->one(FLERR,"Shake atoms {} {} missing on proc {} at step {}{}",shake_atom[i][0], + shake_atom[i][1],comm->me,update->ntimestep,utils::errorurl(5)); + atom1 = domain->closest_image(i, atom1); + atom2 = domain->closest_image(i, atom2); + if (i <= atom1 && i <= atom2) { + int m = shake_type[i][0]; + double r = bond_force(atom1, atom2, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom2 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + } + } else if (shake_flag[i] == 3) { + atom1 = atom->map(shake_atom[i][0]); + atom2 = atom->map(shake_atom[i][1]); + atom3 = atom->map(shake_atom[i][2]); + if (atom1 == -1 || atom2 == -1 || atom3 == -1) + error->one(FLERR,"Shake atoms {} {} {} missing on proc {} at step {}{}",shake_atom[i][0], + shake_atom[i][1],shake_atom[i][2],comm->me,update->ntimestep, + utils::errorurl(5)); + atom1 = domain->closest_image(i, atom1); + atom2 = domain->closest_image(i, atom2); + atom3 = domain->closest_image(i, atom3); + if (i <= atom1 && i <= atom2 && i <= atom3) { + int m = shake_type[i][0]; + double r = bond_force(atom1, atom2, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom2 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + m = shake_type[i][1]; + r = bond_force(atom1, atom3, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom3 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + } + } else if (shake_flag[i] == 4) { + atom1 = atom->map(shake_atom[i][0]); + atom2 = atom->map(shake_atom[i][1]); + atom3 = atom->map(shake_atom[i][2]); + atom4 = atom->map(shake_atom[i][3]); + if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) + error->one(FLERR,"Shake atoms {} {} {} {} missing on proc {} at step {}{}", + shake_atom[i][0],shake_atom[i][1],shake_atom[i][2],shake_atom[i][3], + comm->me,update->ntimestep,utils::errorurl(5)); + atom1 = domain->closest_image(i, atom1); + atom2 = domain->closest_image(i, atom2); + atom3 = domain->closest_image(i, atom3); + atom4 = domain->closest_image(i, atom4); + if (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4) { + int m = shake_type[i][0]; + double r = bond_force(atom1, atom2, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom2 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + m = shake_type[i][1]; + r = bond_force(atom1, atom3, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom3 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + m = shake_type[i][2]; + r = bond_force(atom1, atom4, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + if (atom4 < nlocal) { + b_count[m]++; + b_ave[m] += r; + } + b_max[m] = MAX(b_max[m], r); + b_min[m] = MIN(b_min[m], r); + } + } else { // shake_flag[i] == 1 + atom1 = atom->map(shake_atom[i][0]); + atom2 = atom->map(shake_atom[i][1]); + atom3 = atom->map(shake_atom[i][2]); + if (atom1 == -1 || atom2 == -1 || atom3 == -1) + error->one(FLERR,"Shake atoms {} {} {} missing on proc {} at step {}{}", + shake_atom[i][0],shake_atom[i][1],shake_atom[i][2], + comm->me,update->ntimestep,utils::errorurl(5)); + atom1 = domain->closest_image(i, atom1); + atom2 = domain->closest_image(i, atom2); + atom3 = domain->closest_image(i, atom3); + if (i <= atom1 && i <= atom2 && i <= atom3) { + int m = shake_type[i][0]; + double r1 = bond_force(atom1, atom2, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r1; + } + if (atom2 < nlocal) { + b_count[m]++; + b_ave[m] += r1; + } + b_max[m] = MAX(b_max[m], r1); + b_min[m] = MIN(b_min[m], r1); + m = shake_type[i][1]; + double r2 = bond_force(atom1, atom3, bond_distance[m]); + if (atom1 < nlocal) { + b_count[m]++; + b_ave[m] += r2; + } + if (atom3 < nlocal) { + b_count[m]++; + b_ave[m] += r2; + } + b_max[m] = MAX(b_max[m], r2); + b_min[m] = MIN(b_min[m], r2); + m = shake_type[i][2]; + double r3 = bond_force(atom2, atom3, angle_distance[m]); + double angle = acos((r1*r1 + r2*r2 - r3*r3) / (2.0*r1*r2)); + angle *= 180.0/MY_PI; + if (atom2 < nlocal) { + a_count[m]++; + a_ave[m] += angle; + } + if (atom3 < nlocal) { + a_count[m]++; + a_ave[m] += angle; + } + a_max[m] = MAX(a_max[m],angle); + a_min[m] = MIN(a_min[m],angle); + } + } } } + + if (output_every) { + bigint ntimestep = update->ntimestep; + if (next_output == ntimestep) { + // sum collected data across all procs + MPI_Allreduce(b_count,b_count_all,nb,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(b_ave,b_ave_all,nb,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(b_max,b_max_all,nb,MPI_DOUBLE,MPI_MAX,world); + MPI_Allreduce(b_min,b_min_all,nb,MPI_DOUBLE,MPI_MIN,world); + + MPI_Allreduce(a_count,a_count_all,na,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(a_ave,a_ave_all,na,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(a_max,a_max_all,na,MPI_DOUBLE,MPI_MAX,world); + MPI_Allreduce(a_min,a_min_all,na,MPI_DOUBLE,MPI_MIN,world); + if (comm->me == 0) { + const int width = (int) log10((double)(MAX(MAX(1,nb),na))) + 2; + auto mesg = fmt::format("{} stats (type/ave/delta/count) on step {}\n", + utils::uppercase(style), update->ntimestep); + for (int i = 1; i < nb; i++) { + const auto bcnt = b_count_all[i]; + if (bcnt) + mesg += fmt::format("Bond: {:>{}d} {:<9.6} {:<11.6} {:>8d}\n",i,width, + b_ave_all[i]/bcnt,b_max_all[i]-b_min_all[i],bcnt/2); + } + for (int i = 1; i < na; i++) { + const auto acnt = a_count_all[i]; + if (acnt) + mesg += fmt::format("Angle: {:>{}d} {:<9.6} {:<11.6} {:>8d}\n",i,width, + a_ave_all[i]/acnt,a_max_all[i]-a_min_all[i],acnt/2); + } + utils::logmesg(lmp,mesg); + } + } + next_output = ntimestep + output_every; + if (ntimestep % output_every != 0) + next_output = (ntimestep/output_every)*output_every + output_every; + } else next_output = -1; } /* ---------------------------------------------------------------------- @@ -1307,6 +1507,11 @@ void FixShake::partner_info(int *npartner, tagint **partner_tag, for (m = 0; m < nreturn; m++) { i = atom->map(outbuf[m].atomID); + // Expected partner atom is not found locally. This can happen when deleting + // atoms that are part of a molecule without also deleting the topology and all + // other atoms in the molecule (i.e. not using "bond yes mol yes" with delete_atoms) + if (i < 0) + error->one(FLERR, "Inconsistent topology for atom {} in fix {}", outbuf[m].atomID, style); for (j = 0; j < npartner[i]; j++) if (partner_tag[i][j] == outbuf[m].partnerID) break; partner_mask[i][j] = outbuf[m].mask; @@ -2576,34 +2781,38 @@ void FixShake::shake3angle(int ilist) apply bond force for minimization between atom indices i1 and i2 ------------------------------------------------------------------------- */ -void FixShake::bond_force(int i1, int i2, double length) +double FixShake::bond_force(int i1, int i2, double length) { - if ((i1 < 0) || (i2 < 0)) return; - - // distance vec between atoms, with PBC + if ((i1 < 0) || (i2 < 0)) return -1.0; double delx = x[i1][0] - x[i2][0]; double dely = x[i1][1] - x[i2][1]; double delz = x[i1][2] - x[i2][2]; + domain->minimum_image(FLERR, delx, dely, delz); + + // get canonical local atom indices + i1 = atom->map(atom->tag[i1]); + i2 = atom->map(atom->tag[i2]); // compute and apply force const double r = sqrt(delx * delx + dely * dely + delz * delz); const double dr = r - length; + const double rk = kbond * dr; const double fbond = (r > 0.0) ? -2.0 * rk / r : 0.0; const double eb = rk*dr; int atomlist[2]; int count = 0; - if (i1 < nlocal) { + if ((i1 >= 0) && (i1 < nlocal)) { f[i1][0] += delx * fbond; f[i1][1] += dely * fbond; f[i1][2] += delz * fbond; atomlist[count++] = i1; ebond += 0.5*eb; } - if (i2 < nlocal) { + if ((i2 >= 0) && (i2 < nlocal)) { f[i2][0] -= delx * fbond; f[i2][1] -= dely * fbond; f[i2][2] -= delz * fbond; @@ -2620,6 +2829,7 @@ void FixShake::bond_force(int i1, int i2, double length) v[5] = 0.5 * dely * delz * fbond; ev_tally(count, atomlist, 2.0, eb, v); } + return r; } /* ---------------------------------------------------------------------- @@ -3193,15 +3403,6 @@ double FixShake::compute_scalar() return all; } -/* ---------------------------------------------------------------------- - print shake stats at the end of a minimization -------------------------------------------------------------------------- */ -void FixShake::post_run() -{ - if ((update->whichflag == 2) && (output_every > 0)) stats(); -} - - /* ---------------------------------------------------------------------- add coordinate constraining forces this method is called at the end of a timestep diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index d02fdd784a..11f60ffa6b 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -41,7 +41,6 @@ class FixShake : public Fix { void post_force_respa(int, int, int) override; void min_pre_reverse(int, int) override; void min_post_force(int) override; - void post_run() override; double memory_usage() override; void grow_arrays(int) override; @@ -141,7 +140,7 @@ class FixShake : public Fix { void shake3(int); void shake4(int); void shake3angle(int); - void bond_force(int, int, double); + double bond_force(int, int, double); virtual void stats(); int bondtype_findset(int, tagint, tagint, int); int angletype_findset(int, tagint, tagint, int); diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp index 2b9bdbebc8..214e3cc466 100644 --- a/src/compute_rdf.cpp +++ b/src/compute_rdf.cpp @@ -190,7 +190,7 @@ void ComputeRDF::init() "range {} - use comm_modify cutoff command to increase it", mycutneigh, cutghost); delr = cutoff_user / nbin; - } delr = force->pair->cutforce / nbin; + } else delr = force->pair->cutforce / nbin; delrinv = 1.0/delr; diff --git a/src/lammps.cpp b/src/lammps.cpp index 2c3fbf0192..3595b5dc68 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -1490,14 +1490,15 @@ void LAMMPS::print_config(FILE *fp) fputs("\n\n",fp); } -/** Create vector of argv string pointers including terminating nullptr element +/** Create vector of argv char pointers including terminating nullptr element * * \param args list of arguments + * \return vector of argument pointers */ -std::vector LAMMPS::argv_pointers(argv & args){ +std::vector LAMMPS::argv_pointers(argv &args){ std::vector r; r.reserve(args.size()+1); - for(auto & a : args) { + for(auto &a : args) { r.push_back((char*)a.data()); } r.push_back(nullptr); diff --git a/src/library.cpp b/src/library.cpp index 898d0d960e..3aeb0dfef5 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -71,6 +71,9 @@ /// string buffer for error messages of global errors static std::string lammps_last_global_errormessage; +/// maximum number of groups +static constexpr int LMP_MAX_GROUP = 32; + using namespace LAMMPS_NS; // for printing the non-null pointer argument warning only once @@ -1621,7 +1624,9 @@ int lammps_extract_setting(void *handle, const char *keyword) if (strcmp(keyword,"peri_flag") == 0) return lmp->atom->peri_flag; if (strcmp(keyword,"thermo_every") == 0) return lmp->output->thermo_every; - if (strcmp(keyword,"thermo_norm") == 0) return lmp->output->thermo->normflag; + if (lmp->output->thermo) { + if (strcmp(keyword,"thermo_norm") == 0) return lmp->output->thermo->normflag; + } return -1; } @@ -2227,6 +2232,11 @@ Get length of lists with :ref:`lammps_extract_setting() update || !lmp->atom || !lmp->force || !lmp->domain || !lmp->domain->lattice || !lmp->update->integrate) { @@ -2258,11 +2268,6 @@ void *lammps_extract_global(void *handle, const char *name) if (strcmp(name,"respa_dt") == 0) return (void *) respa->step; } - if (strcmp(name,"git_commit") == 0) return (void *)LAMMPS::git_commit; - if (strcmp(name,"git_branch") == 0) return (void *)LAMMPS::git_branch; - if (strcmp(name,"git_descriptor") == 0) return (void *)LAMMPS::git_descriptor; - if (strcmp(name,"lammps_version") == 0) return (void *)LAMMPS_VERSION; - if (strcmp(name,"boxlo") == 0) return (void *) lmp->domain->boxlo; if (strcmp(name,"boxhi") == 0) return (void *) lmp->domain->boxhi; if (strcmp(name,"sublo") == 0) return (void *) lmp->domain->sublo; @@ -6240,7 +6245,7 @@ as a C-style string instead of reading it from a file. * * \param handle pointer to a previously created LAMMPS instance * \param id molecule-ID - * \param json molecule data in JSON format as C-style string */ + * \param jsonstr molecule data in JSON format as C-style string */ void lammps_create_molecule(void *handle, const char *id, const char *jsonstr) { @@ -7168,9 +7173,15 @@ int lammps_id_name(void *handle, const char *category, int idx, char *buffer, in return 1; } } else if (strcmp(category,"group") == 0) { - if ((idx >= 0) && (idx < lmp->group->ngroup)) { - strncpy(buffer, lmp->group->names[idx], buf_size); - return 1; + // the list of groups may have "holes". So the available range is always 0 to 32 + if ((idx >= 0) && (idx < LMP_MAX_GROUP)) { + if (lmp->group->names[idx]) { + strncpy(buffer, lmp->group->names[idx], buf_size); + return 1; + } else { + buffer[0] = '\0'; + return 0; + } } } else if (strcmp(category,"molecule") == 0) { if ((idx >= 0) && (idx < lmp->atom->nmolecule)) { diff --git a/src/modify.cpp b/src/modify.cpp index b5174cf76c..5a125d7cc6 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -130,8 +130,9 @@ Modify::~Modify() memory->destroy(fmask); // delete all computes + // do it via delete_compute() for clean deletion of computes that have created other computes - for (int i = 0; i < ncompute; i++) delete compute[i]; + while (ncompute) delete_compute(0); memory->sfree(compute); delete[] list_initial_integrate; diff --git a/src/neighbor.cpp b/src/neighbor.cpp index ba782f05cb..35cec67d6b 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -454,7 +454,7 @@ void Neighbor::init() ri = collection2cut[i]*0.5; for (j = 0; j < ncollections; j++){ rj = collection2cut[j]*0.5; - tmp = force->pair->radii2cut(ri, rj) + skin; + tmp = ri + rj + skin; cutcollectionsq[i][j] = tmp*tmp; } } @@ -2974,9 +2974,10 @@ void Neighbor::build_collection(int istart) if (finite_cut_flag) { double cut; + double *radius = atom->radius; int icollection; for (int i = istart; i < nmax; i++){ - cut = force->pair->atom2cut(i); + cut = 2 * radius[i]; collection[i] = -1; for (icollection = 0; icollection < ncollections; icollection++){ diff --git a/src/pair.h b/src/pair.h index f2f56aa578..0a5d2bc3b3 100644 --- a/src/pair.h +++ b/src/pair.h @@ -228,8 +228,6 @@ class Pair : protected Pointers { virtual void min_xf_get(int) {} virtual void min_x_set(int) {} virtual void transfer_history(double *, double *, int, int) {} - virtual double atom2cut(int) { return 0.0; } - virtual double radii2cut(double, double) { return 0.0; } // management of callbacks to be run from ev_tally() diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 02a1b37124..a75ff52057 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -1179,42 +1179,6 @@ int PairHybrid::check_ijtype(int itype, int jtype, char *substyle) return 0; } -/* ---------------------------------------------------------------------- - check if substyles calculate self-interaction range of particle -------------------------------------------------------------------------- */ - -double PairHybrid::atom2cut(int i) -{ - double temp, cut; - - cut = 0.0; - for (int m = 0; m < nstyles; m++) { - if (styles[m]->finitecutflag) { - temp = styles[m]->atom2cut(i); - if (temp > cut) cut = temp; - } - } - return cut; -} - -/* ---------------------------------------------------------------------- - check if substyles calculate maximum interaction range for two finite particles -------------------------------------------------------------------------- */ - -double PairHybrid::radii2cut(double r1, double r2) -{ - double temp, cut; - - cut = 0.0; - for (int m = 0; m < nstyles; m++) { - if (styles[m]->finitecutflag) { - temp = styles[m]->radii2cut(r1,r2); - if (temp > cut) cut = temp; - } - } - return cut; -} - /* ---------------------------------------------------------------------- memory usage of each sub-style ------------------------------------------------------------------------- */ diff --git a/src/pair_hybrid.h b/src/pair_hybrid.h index 995de37e59..d7ef6163fb 100644 --- a/src/pair_hybrid.h +++ b/src/pair_hybrid.h @@ -68,8 +68,6 @@ class PairHybrid : public Pair { void add_tally_callback(class Compute *) override; void del_tally_callback(class Compute *) override; - double atom2cut(int) override; - double radii2cut(double, double) override; protected: int nstyles; // # of sub-styles diff --git a/src/utils.h b/src/utils.h index d57395d6d8..5ad6785a57 100644 --- a/src/utils.h +++ b/src/utils.h @@ -166,7 +166,9 @@ output are compressed to a single blank by calling :cpp:func:`strcompress()` * * Print to stdout without specifying the FILE pointer. * - * \param mesg string with message to be printed */ + * \param format format string of message to be printed + * \param args arguments to format string + */ template void print(const std::string &format, Args &&...args) { fmtargs_print(stdout, format, fmt::make_format_args(args...)); diff --git a/src/version.h b/src/version.h index 67d7688dd3..6fac7f8841 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1,2 @@ #define LAMMPS_VERSION "22 Jul 2025" +#define LAMMPS_UPDATE "Update 1" diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index eeaaaff5c2..5a9b152794 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.7.0 LANGUAGES CXX) +project(lammps-gui VERSION 1.7.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 757e29a7df..e4afff233d 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -153,7 +153,7 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : row2->addWidget(units); row2->addWidget(new QLabel("Norm:")); norm = new QCheckBox(""); - norm->setChecked(Qt::Unchecked); + norm->setCheckState(Qt::Unchecked); norm->setEnabled(false); row2->addWidget(norm); xrange = new RangeSlider; @@ -277,7 +277,7 @@ void ChartWindow::set_units(const QString &_units) void ChartWindow::set_norm(bool _norm) { - norm->setChecked(_norm ? Qt::Checked : Qt::Unchecked); + norm->setChecked(_norm); } void ChartWindow::quit() @@ -353,9 +353,8 @@ void ChartWindow::update_yrange(int low, int high) { for (auto &c : charts) { if (c->isVisible()) { - constexpr double fraction = 1.0 / (double)SLIDER_RANGE; - auto axes = c->get_axes(); - auto ranges = c->get_minmax(); + auto axes = c->get_axes(); + auto ranges = c->get_minmax(); double ymin = ranges.bottom() - (double)low * SLIDER_FRACTION * ranges.height(); double ymax = ranges.bottom() - (double)high * SLIDER_FRACTION * ranges.height(); axes[1]->setRange(ymin, ymax); @@ -634,7 +633,7 @@ QRectF ChartViewer::get_minmax() const } } - return QRectF(xmin, ymax, xmax - xmin, ymin - ymax); + return {xmin, ymax, xmax - xmin, ymin - ymax}; } /* -------------------------------------------------------------------- */ @@ -694,10 +693,10 @@ using float_vect = std::vector; using int_vect = std::vector; // forward declaration -float_vect sg_smooth(const float_vect &v, const int w, const int deg); +float_vect sg_smooth(const float_vect &v, const std::size_t w, const int deg); // savitzky golay smoothing. -QList calc_sgsmooth(const QList &input, int window, int order) +QList calc_sgsmooth(const QList &input, std::size_t window, int order) { const std::size_t ndat = input.count(); if (ndat < ((2 * window) + 2)) window = (ndat / 2) - 1; @@ -706,12 +705,12 @@ QList calc_sgsmooth(const QList &input, int window, int order) float_vect in(ndat); QList rv(input); - for (int i = 0; i < ndat; ++i) + for (std::size_t i = 0; i < ndat; ++i) in[i] = input[i].y(); float_vect out = sg_smooth(in, window, order); - for (int i = 0; i < ndat; ++i) + for (std::size_t i = 0; i < ndat; ++i) rv[i].setY(out[i]); return rv; @@ -792,16 +791,16 @@ void permute(float_mat &A, int_vect &idx) { int_vect i(idx.size()); - for (int j = 0; j < A.nr_rows(); ++j) { + for (std::size_t j = 0; j < A.nr_rows(); ++j) { i[j] = j; } // loop over permuted indices - for (int j = 0; j < A.nr_rows(); ++j) { + for (std::size_t j = 0; j < A.nr_rows(); ++j) { if (i[j] != idx[j]) { // search only the remaining indices - for (int k = j + 1; k < A.nr_rows(); ++k) { + for (std::size_t k = j + 1; k < A.nr_rows(); ++k) { if (i[k] == idx[j]) { std::swap(A[j], A[k]); // swap the rows and i[k] = i[j]; // the elements of @@ -863,12 +862,12 @@ void lu_backsubst(float_mat &A, float_mat &a, bool diag = false) { for (int r = (A.nr_rows() - 1); r >= 0; --r) { for (int c = (A.nr_cols() - 1); c > r; --c) { - for (int k = 0; k < A.nr_cols(); ++k) { + for (std::size_t k = 0; k < A.nr_cols(); ++k) { a[r][k] -= A[r][c] * a[c][k]; } } if (!diag) { - for (int k = 0; k < A.nr_cols(); ++k) { + for (std::size_t k = 0; k < A.nr_cols(); ++k) { a[r][k] /= A[r][r]; } } @@ -884,14 +883,14 @@ void lu_backsubst(float_mat &A, float_mat &a, bool diag = false) * place. A is not modified, and the solution, b, is returned in a. */ void lu_forwsubst(float_mat &A, float_mat &a, bool diag = true) { - for (int r = 0; r < A.nr_rows(); ++r) { + for (int r = 0; r < (int)A.nr_rows(); ++r) { for (int c = 0; c < r; ++c) { - for (int k = 0; k < A.nr_cols(); ++k) { + for (std::size_t k = 0; k < A.nr_cols(); ++k) { a[r][k] -= A[r][c] * a[c][k]; } } if (!diag) { - for (int k = 0; k < A.nr_cols(); ++k) { + for (std::size_t k = 0; k < A.nr_cols(); ++k) { a[r][k] /= A[r][r]; } } @@ -908,9 +907,9 @@ void lu_forwsubst(float_mat &A, float_mat &a, bool diag = true) int lu_factorize(float_mat &A, int_vect &idx) { float_vect scale(A.nr_rows()); // implicit pivot scaling - for (int i = 0; i < A.nr_rows(); ++i) { + for (std::size_t i = 0; i < A.nr_rows(); ++i) { double maxval = 0.0; - for (int j = 0; j < A.nr_cols(); ++j) { + for (std::size_t j = 0; j < A.nr_cols(); ++j) { maxval = std::max(fabs(A[i][j]), maxval); } if (maxval == 0.0) { @@ -920,11 +919,11 @@ int lu_factorize(float_mat &A, int_vect &idx) } int swapNum = 1; - for (int c = 0; c < A.nr_cols(); ++c) { // loop over columns - swapNum *= partial_pivot(A, c, c, scale, idx); // bring pivot to diagonal - for (int r = 0; r < A.nr_rows(); ++r) { // loop over rows - int lim = (r < c) ? r : c; - for (int j = 0; j < lim; ++j) { + for (std::size_t c = 0; c < A.nr_cols(); ++c) { // loop over columns + swapNum *= partial_pivot(A, c, c, scale, idx); // bring pivot to diagonal + for (std::size_t r = 0; r < A.nr_rows(); ++r) { // loop over rows + std::size_t lim = (r < c) ? r : c; + for (std::size_t j = 0; j < lim; ++j) { A[idx[r]][c] -= A[idx[r]][j] * A[idx[j]][c]; } if (r > c) A[idx[r]][c] /= A[idx[c]][c]; @@ -943,7 +942,7 @@ float_mat lin_solve(const float_mat &A, const float_mat &a) float_mat b(a); int_vect idx(B.nr_rows()); - for (int j = 0; j < B.nr_rows(); ++j) { + for (std::size_t j = 0; j < B.nr_rows(); ++j) { idx[j] = j; // init row swap label array } lu_factorize(B, idx); // get the lu-decomp. @@ -1034,19 +1033,19 @@ float_vect sg_coeff(const float_vect &b, const std::size_t deg) * vector of size 2w+1, e.g. for w=2 b=(0,0,1,0,0). evaluating the polynome * yields the sg-coefficients. at the border non symmectric vectors b are * used. */ -float_vect sg_smooth(const float_vect &v, const int width, const int deg) +float_vect sg_smooth(const float_vect &v, const std::size_t width, const int deg) { float_vect res(v.size(), 0.0); - const int window = (2 * width) + 1; - const int endidx = v.size() - 1; + const std::size_t window = (2 * (std::size_t)width) + 1; + const int endidx = v.size() - 1; // do a regular sliding window average if (deg == 0) { // handle border cases first because we need different coefficients - for (int i = 0; i < width; ++i) { + for (std::size_t i = 0; i < width; ++i) { const double scale = 1.0 / double(i + 1); const float_vect c1(width, scale); - for (int j = 0; j <= i; ++j) { + for (std::size_t j = 0; j <= i; ++j) { res[i] += c1[j] * v[j]; res[endidx - i] += c1[j] * v[endidx - j]; } @@ -1059,7 +1058,7 @@ float_vect sg_smooth(const float_vect &v, const int width, const int deg) #pragma omp parallel for schedule(static) #endif for (std::size_t i = 0; i <= (v.size() - window); ++i) { - for (int j = 0; j < window; ++j) { + for (std::size_t j = 0; j < window; ++j) { res[i + width] += c2[j] * v[i + j]; } } @@ -1067,12 +1066,12 @@ float_vect sg_smooth(const float_vect &v, const int width, const int deg) } // handle border cases first because we need different coefficients - for (int i = 0; i < width; ++i) { + for (std::size_t i = 0; i < width; ++i) { float_vect b1(window, 0.0); b1[i] = 1.0; const float_vect c1(sg_coeff(b1, deg)); - for (int j = 0; j < window; ++j) { + for (std::size_t j = 0; j < window; ++j) { res[i] += c1[j] * v[j]; res[endidx - i] += c1[j] * v[endidx - j]; } @@ -1084,7 +1083,7 @@ float_vect sg_smooth(const float_vect &v, const int width, const int deg) const float_vect c2(sg_coeff(b2, deg)); for (std::size_t i = 0; i <= (v.size() - window); ++i) { - for (int j = 0; j < window; ++j) { + for (std::size_t j = 0; j < window; ++j) { res[i + width] += c2[j] * v[i + j]; } } diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index 53447c2ca4..c0d5c81b0f 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -16,6 +16,7 @@ #include "lammpsgui.h" #include "lammpswrapper.h" #include "linenumberarea.h" +#include "helpers.h" #include #include @@ -23,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -49,89 +51,6 @@ #include #include -// Convert string into words on whitespace while handling single and double -// quotes. Adapted from LAMMPS_NS::utils::split_words() to preserve quotes. - -static std::vector split_line(const std::string &text) -{ - std::vector list; - const char *buf = text.c_str(); - std::size_t beg = 0; - std::size_t len = 0; - std::size_t add = 0; - - char c = *buf; - while (c) { // leading whitespace - if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') { - c = *++buf; - ++beg; - continue; - }; - len = 0; - - // handle escaped/quoted text. - quoted: - - if (c == '\'') { // handle single quote - add = 0; - len = 1; - c = *++buf; - while (((c != '\'') && (c != '\0')) || ((c == '\\') && (buf[1] == '\''))) { - if ((c == '\\') && (buf[1] == '\'')) { - ++buf; - ++len; - } - c = *++buf; - ++len; - } - ++len; - c = *++buf; - - // handle triple double quotation marks - } else if ((c == '"') && (buf[1] == '"') && (buf[2] == '"') && (buf[3] != '"')) { - len = 3; - add = 1; - buf += 3; - c = *buf; - - } else if (c == '"') { // handle double quote - add = 0; - len = 1; - c = *++buf; - while (((c != '"') && (c != '\0')) || ((c == '\\') && (buf[1] == '"'))) { - if ((c == '\\') && (buf[1] == '"')) { - ++buf; - ++len; - } - c = *++buf; - ++len; - } - ++len; - c = *++buf; - } - - while (true) { // unquoted - if ((c == '\'') || (c == '"')) goto quoted; - // skip escaped quote - if ((c == '\\') && ((buf[1] == '\'') || (buf[1] == '"'))) { - ++buf; - ++len; - c = *++buf; - ++len; - } - if ((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n') || (c == '\f') || - (c == '\0')) { - if (beg < text.size()) list.push_back(text.substr(beg, len)); - beg += len + add; - break; - } - c = *++buf; - ++len; - } - } - return list; -} - CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent), current_comp(nullptr), command_comp(new QCompleter(this)), fix_comp(new QCompleter(this)), compute_comp(new QCompleter(this)), @@ -632,9 +551,16 @@ void CodeEditor::dragEnterEvent(QDragEnterEvent *event) event->acceptProposedAction(); } +void CodeEditor::dragLeaveEvent(QDragLeaveEvent *event) +{ + event->accept(); + cut(); + QPlainTextEdit::dragLeaveEvent(event); +} + bool CodeEditor::canInsertFromMimeData(const QMimeData *source) const { - return source->hasUrls(); // || source->hasText(); + return source->hasUrls() || source->hasText(); } void CodeEditor::dropEvent(QDropEvent *event) @@ -647,10 +573,26 @@ void CodeEditor::dropEvent(QDropEvent *event) moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); gui->open_file(file); } + // properly handle drop event in base class, but set editor + // buffer readonly to prevent undesired changes + setReadOnly(true); + QPlainTextEdit::dropEvent(event); + setReadOnly(false); } else if (event->mimeData()->hasText()) { event->accept(); - fprintf(stderr, "Drag - Drop for text block not yet implemented: text=%s\n", - event->mimeData()->text().toStdString().c_str()); + // cut selected text to clipboard before we reposition + // the cursor and re-insert the text with drag-n-drop + cut(); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + cursorForPosition(event->pos()).insertText(event->mimeData()->text()); +#else + cursorForPosition(event->position().toPoint()).insertText(event->mimeData()->text()); +#endif + // properly handle drop event in base class, but set editor + // buffer readonly to prevent undesired changes + setReadOnly(true); + QPlainTextEdit::dropEvent(event); + setReadOnly(false); } else event->ignore(); } @@ -803,7 +745,12 @@ void CodeEditor::contextMenuEvent(QContextMenuEvent *event) } } - auto *action = menu->addAction(QString("LAMMPS Manual")); + auto *action = menu->addAction(QString("LAMMPS Commands Overview")); + action->setIcon(QIcon(":/icons/help-browser.png")); + action->setData(QString("/Commands_all.html")); + connect(action, &QAction::triggered, this, &CodeEditor::open_help); + + action = menu->addAction(QString("LAMMPS Manual")); action->setIcon(QIcon(":/icons/help-browser.png")); action->setData(QString()); connect(action, &QAction::triggered, this, &CodeEditor::open_help); diff --git a/tools/lammps-gui/codeeditor.h b/tools/lammps-gui/codeeditor.h index 2fdc411d5f..bb0c3b5e71 100644 --- a/tools/lammps-gui/codeeditor.h +++ b/tools/lammps-gui/codeeditor.h @@ -22,6 +22,7 @@ class QCompleter; class QContextMenuEvent; class QDragEnterEvent; +class QDragLeaveEvent; class QDropEvent; class QFont; class QKeyEvent; @@ -81,8 +82,9 @@ class CodeEditor : public QPlainTextEdit { protected: void resizeEvent(QResizeEvent *event) override; - void dragEnterEvent(QDragEnterEvent *event) override; bool canInsertFromMimeData(const QMimeData *source) const override; + void dragEnterEvent(QDragEnterEvent *event) override; + void dragLeaveEvent(QDragLeaveEvent *event) override; void dropEvent(QDropEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override; void keyPressEvent(QKeyEvent *event) override; diff --git a/tools/lammps-gui/helpers.cpp b/tools/lammps-gui/helpers.cpp index 56d56d80a5..ed97de5a82 100644 --- a/tools/lammps-gui/helpers.cpp +++ b/tools/lammps-gui/helpers.cpp @@ -24,6 +24,11 @@ #include #include +namespace { +const QStringList months({"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", + "Nov", "Dec"}); +} + // duplicate string, STL version char *mystrdup(const std::string &text) { @@ -44,6 +49,124 @@ char *mystrdup(const QString &text) return mystrdup(text.toStdString()); } +// compare two date strings return -1 if first is older than second, 0 if same, or 1 if +// otherwise + +int date_compare(const QString &one, const QString &two) +{ + if (one == two) return 0; + + // split string into words and check each of them + auto onelist = one.split(" ", Qt::SkipEmptyParts); + auto twolist = two.split(" ", Qt::SkipEmptyParts); + if (onelist.size() != 3) return -1; + if (twolist.size() != 3) return 1; + + if (onelist[2].toInt() < twolist[2].toInt()) { + return -1; + } else if (onelist[2].toInt() > twolist[2].toInt()) { + return 1; + } + + onelist[1].truncate(3); + twolist[1].truncate(3); + if (months.indexOf(onelist[1]) < months.indexOf(twolist[1])) { + return -1; + } else if (months.indexOf(onelist[1]) > months.indexOf(twolist[1])) { + return 1; + } + + if (onelist[0].toInt() < twolist[0].toInt()) { + return -1; + } else if (onelist[0].toInt() > twolist[0].toInt()) { + return 1; + } + return 0; +} + +// Convert string into words on whitespace while handling single and double +// quotes. Adapted from LAMMPS_NS::utils::split_words() to preserve quotes. + +std::vector split_line(const std::string &text) +{ + std::vector list; + const char *buf = text.c_str(); + std::size_t beg = 0; + std::size_t len = 0; + std::size_t add = 0; + + char c = *buf; + while (c) { // leading whitespace + if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') { + c = *++buf; + ++beg; + continue; + }; + len = 0; + + // handle escaped/quoted text. + quoted: + + if (c == '\'') { // handle single quote + add = 0; + len = 1; + c = *++buf; + while (((c != '\'') && (c != '\0')) || ((c == '\\') && (buf[1] == '\''))) { + if ((c == '\\') && (buf[1] == '\'')) { + ++buf; + ++len; + } + c = *++buf; + ++len; + } + ++len; + c = *++buf; + + // handle triple double quotation marks + } else if ((c == '"') && (buf[1] == '"') && (buf[2] == '"') && (buf[3] != '"')) { + len = 3; + add = 1; + buf += 3; + c = *buf; + + } else if (c == '"') { // handle double quote + add = 0; + len = 1; + c = *++buf; + while (((c != '"') && (c != '\0')) || ((c == '\\') && (buf[1] == '"'))) { + if ((c == '\\') && (buf[1] == '"')) { + ++buf; + ++len; + } + c = *++buf; + ++len; + } + ++len; + c = *++buf; + } + + while (true) { // unquoted + if ((c == '\'') || (c == '"')) goto quoted; + // skip escaped quote + if ((c == '\\') && ((buf[1] == '\'') || (buf[1] == '"'))) { + ++buf; + ++len; + c = *++buf; + ++len; + } + if ((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n') || (c == '\f') || + (c == '\0')) { + if (beg < text.size()) list.push_back(text.substr(beg, len)); + beg += len + add; + break; + } + c = *++buf; + ++len; + } + } + return list; +} + // get pointer to LAMMPS-GUI main widget QWidget *get_main_widget() diff --git a/tools/lammps-gui/helpers.h b/tools/lammps-gui/helpers.h index bc8ebd0fa8..a4f4c12f1a 100644 --- a/tools/lammps-gui/helpers.h +++ b/tools/lammps-gui/helpers.h @@ -16,12 +16,19 @@ #include #include +#include // duplicate string extern char *mystrdup(const std::string &text); extern char *mystrdup(const char *text); extern char *mystrdup(const QString &text); +// compare date strings +extern int date_compare(const QString &one, const QString &two); + +// split string into words while respecting quotes +extern std::vector split_line(const std::string &text); + // get pointer to LAMMPS-GUI main widget extern class QWidget *get_main_widget(); diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 43e57a2aef..e91ba3e565 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -525,23 +525,31 @@ void ImageViewer::do_recenter() void ImageViewer::cmd_to_clipboard() { - auto words = last_dump_cmd.split(" "); - QString blank = QStringLiteral(" "); - int modidx = words.indexOf("modify"); - int maxidx = words.size(); + auto words = split_line(last_dump_cmd.toStdString()); + int modidx = 0; + int maxidx = words.size(); + for (int i = 0; i < maxidx; ++i) { + if (words[i] == "modify") { + modidx = i; + break; + } + } - QString dumpcmd = "dump viz "; - dumpcmd += words[1] + " image 100 myimage-*.ppm"; + std::string dumpcmd = "dump viz "; + dumpcmd += words[1]; + dumpcmd += " image 100 myimage-*.ppm"; for (int i = 4; i < modidx; ++i) - if (words[i] != "noinit") dumpcmd += blank + words[i]; + if (words[i] != "noinit") dumpcmd += " " + words[i]; dumpcmd += '\n'; dumpcmd += "dump_modify viz pad 9"; for (int i = modidx + 1; i < maxidx; ++i) - dumpcmd += blank + words[i]; + dumpcmd += " " + words[i]; dumpcmd += '\n'; #if QT_CONFIG(clipboard) - QGuiApplication::clipboard()->setText(dumpcmd); + QGuiApplication::clipboard()->setText(dumpcmd.c_str()); +#else + fprintf(stderr, "# customized dump image command:\n%s", dumpcmd.c_str()) #endif } diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 83a80aa30b..20007e7e9e 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -55,11 +55,22 @@ + + + Fix bugs when using filenames or paths with blanks. + Add action to editor context menu to open the Commands_all.html manual page + Change color selections for dump image to text fields with completion and validation. + Update minimum required LAMMPS version. + Fix frozen cursor on drag-n-drop bug + Implement drag and drop of text blocks + + Reset minor version number for upcoming stable release and tutorial session. - refactor chartviewer title line to have two rows and add display of units and normalization - replace rubberband-zoom feature and button to reset zoom with two range sliders + Refactor chartviewer title line to have two rows and add display of units and normalization + Replace rubberband-zoom feature and button to reset zoom with two range sliders + Update minimum required LAMMPS version. diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index f3b758a2b1..904e4ddcf9 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -67,6 +67,16 @@ #include #endif +#if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#define execl(exe, arg0, arg1) _execl(exe, arg0, arg1) +#else +#include +#endif + namespace { constexpr int DEFAULT_BUFLEN = 1024; @@ -111,31 +121,80 @@ LammpsGui::LammpsGui(QWidget *parent, const QString &filename) : QSettings settings; #if defined(LAMMPS_GUI_USE_PLUGIN) - plugin_path = - QFileInfo(settings.value("plugin_path", "liblammps.so").toString()).canonicalFilePath(); - if (!lammps.load_lib(plugin_path.toStdString().c_str())) { - // fall back to defaults - for (const char *libfile : - {"./liblammps.so", "liblammps.dylib", "./liblammps.dylib", "liblammps.dll"}) { - if (lammps.load_lib(libfile)) { - plugin_path = QFileInfo(libfile).canonicalFilePath(); - settings.setValue("plugin_path", plugin_path); - break; - } else { - plugin_path.clear(); - } - } + plugin_path = settings.value("plugin_path", "").toString(); + if (!plugin_path.isEmpty()) { + // make canonical and try loading; reset to empty string if loading failed + plugin_path = QFileInfo(plugin_path).canonicalFilePath(); + if (!lammps.load_lib(plugin_path)) plugin_path.clear(); } if (plugin_path.isEmpty()) { - // none of the plugin paths could load, remove key + // no plugin configured or could not load successfully: remove any setting, if present settings.remove("plugin_path"); - QMessageBox::critical( - this, "Error", - QString("Cannot open LAMMPS shared library file: %1.\n\n") - .arg(settings.value("plugin_path", "liblammps.so").toString()) + - "Use -p command line flag to specify a path to the library."); - exit(1); + + // construct list of possible standard choices for the shared library file: + // we prefer the current directory, then the dynamic library path, then system folders + + QStringList dirlist{"."}; +#ifdef Q_OS_MACOS + QStringList filter("liblammps*.dylib"); + dirlist.append( + QString::fromLocal8Bit(qgetenv("DYLD_LIBRARY_PATH")).split(":", Qt::SkipEmptyParts)); + dirlist.append({"/Applications/LAMMPS.app/Contents/Frameworks", + "/Applications/LAMMPS-GUI.app/Contents/Frameworks"}); +#elif Q_OS_WIN32 + QStringList filter("liblammps*.dll"); + dirlist.append(QString::fromLocal8Bit(qgetenv("PATH")).split(";", Qt::SkipEmptyParts)); +#else + QStringList filter("liblammps*.so*"); + dirlist.append( + QString::fromLocal8Bit(qgetenv("LD_LIBRARY_PATH")).split(":", Qt::SkipEmptyParts)); +#endif + dirlist.append({"/usr/lib", "/usr/lib64", "/usr/local/lib", "/usr/local/lib64"}); + + // construct list of matching files + QFileInfoList entries; + for (const auto &dir : dirlist) + entries.append(QDir(dir).entryInfoList(filter)); + + // convert list of paths to list of canonical file names + QStringList choices; + for (const auto &fn : entries) + choices.append(fn.canonicalFilePath()); + choices.removeDuplicates(); + QString lmpversion; + for (const auto &libpath : choices) { + if (lammps.load_lib(libpath)) { + auto *ptr = (const char *)lammps.extract_global("lammps_version"); + if (ptr) lmpversion = ptr; + + // found a suitable version + if (!lmpversion.isEmpty() && (date_compare(lmpversion, "22 July 2025") >= 0)) { + plugin_path = libpath; + settings.setValue("plugin_path", plugin_path); + settings.sync(); + break; + } + } + } + + if (plugin_path.isEmpty()) { + // none of the plugin paths could load, remove key + settings.remove("plugin_path"); + QMessageBox::critical( + this, "Error", + "Cannot open LAMMPS shared library file or provided path has an incompatible " + "version.\n\nPlease try again and use the -p command line flag to specify a " + "path to a suitable LAMMPS shared library file."); + exit(1); + } + + // must re-launch LAMMPS-GUI to cleanly load the new plugin without overlaps from others. + const char *path = mystrdup(QCoreApplication::applicationFilePath()); + const char *arg0 = mystrdup(QCoreApplication::arguments().at(0)); + execl(path, arg0, (char *)nullptr); + // cannot continue without a path to the LAMMPS library + if (plugin_path.isEmpty()) exit(1); } #endif @@ -713,6 +772,9 @@ void LammpsGui::update_variables() // open file and switch CWD to path of file void LammpsGui::open_file(const QString &fileName) { + // do nothing, if no file name is provided. preserves current buffer and working directory. + if (fileName.isEmpty()) return; + if (lammps.is_running()) { stop_run(); runner->wait(); @@ -1442,7 +1504,7 @@ void LammpsGui::do_run(bool use_buffer) QString("LAMMPS-GUI - Charts - %2 - Run %3").arg(current_file).arg(run_counter)); chartwindow->setWindowIcon(QIcon(":/icons/lammps-icon-128x128.png")); chartwindow->setMinimumSize(400, 300); - auto *unitptr = (const char *)lammps.extract_global("units"); + const auto *unitptr = (const char *)lammps.extract_global("units"); if (unitptr) chartwindow->set_units(QString("Units: %1").arg(unitptr)); auto normflag = lammps.extract_setting("thermo_norm"); chartwindow->set_norm(normflag != 0); @@ -1752,13 +1814,14 @@ QWizardPage *LammpsGui::tutorial_intro(const int ntutorial, const QString &infot page->setPixmap(QWizard::WatermarkPixmap, QPixmap(QString(":/icons/tutorial%1-logo.png").arg(ntutorial))); - // XXX TODO: update URL to published tutorial DOI + // TBD: TODO: update URL to published tutorial DOI auto *label = new QLabel( QString("

This dialog will help you to select and populate a folder with materials " "required to work through tutorial ") + QString::number(ntutorial) + - QString(" from the LAMMPS tutorials article by Simon Gravelle, Jake Gissinger, and Axel " - "Kohlmeyer.

The materials for this tutorial are downloaded from:
" + "

The materials for this tutorial are downloaded from:
https://" "github.com/lammpstutorials/lammpstutorials-article

") + infotext); @@ -2015,9 +2078,7 @@ void LammpsGui::start_tutorial8() void LammpsGui::howto() { - if (docver.isEmpty()) setDocver(); - QDesktopServices::openUrl( - QUrl(QString("https://docs.lammps.org%1Howto_lammps_gui.html").arg(docver))); + QDesktopServices::openUrl(QUrl("https://lammps-gui.lammps.org/")); } void LammpsGui::defaults() @@ -2218,12 +2279,15 @@ void LammpsGui::start_lammps() lammps.open(narg, args); lammpsstatus->show(); - // must have a version newer than the 29 August 2024 release of LAMMPS - // TODO: must update this check before next feature release - if (lammps.version() < 20240829) { + // Must have a LAMMPS version that was released after the 22 July 2025 version + /* + .. versionchanged:: TBD + must update this check before next feature release + */ + if (lammps.version() < 20250722) { QMessageBox::critical(this, "Incompatible LAMMPS Version", "LAMMPS-GUI version " LAMMPS_GUI_VERSION " requires\n" - "a LAMMPS version of at least 29 August 2024"); + "a LAMMPS version of at least 22 July 2025"); exit(1); } @@ -2311,7 +2375,7 @@ void LammpsGui::setup_tutorial(int tutno, const QString &dir, bool purgedir, boo start_lammps(); lammps.command("clear"); - lammps.command(QString("shell cd " + dir)); + lammps.command(QString("shell cd '%1'").arg(dir)); // apply https proxy setting: prefer environment variable or fall back to preferences value auto https_proxy = QString::fromLocal8Bit(qgetenv("https_proxy")); diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 061b0d1276..d92e09094a 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -579,7 +579,7 @@ - LAMMPS-&GUI Howto + LAMMPS-&GUI Documentation Ctrl+Shift+G diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 5b9afb6e4a..4fb9406ae4 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -66,13 +66,11 @@ int LammpsWrapper::extract_setting(const char *keyword) void *LammpsWrapper::extract_global(const char *keyword) { void *val = nullptr; - if (lammps_handle) { #if defined(LAMMPS_GUI_USE_PLUGIN) - val = ((liblammpsplugin_t *)plugin_handle)->extract_global(lammps_handle, keyword); + val = ((liblammpsplugin_t *)plugin_handle)->extract_global(lammps_handle, keyword); #else - val = lammps_extract_global(lammps_handle, keyword); + val = lammps_extract_global(lammps_handle, keyword); #endif - } return val; } @@ -135,6 +133,19 @@ int LammpsWrapper::id_count(const char *idtype) return val; } +int LammpsWrapper::has_id(const char *idtype, const char *id) +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->has_id(lammps_handle, idtype, id); +#else + val = lammps_has_id(lammps_handle, idtype, id); +#endif + } + return val; +} + int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int len) { int val = 0; @@ -303,7 +314,7 @@ void LammpsWrapper::finalize() { #if defined(LAMMPS_GUI_USE_PLUGIN) if (lammps_handle) { - liblammpsplugin_t *lammps = (liblammpsplugin_t *)plugin_handle; + auto *lammps = (liblammpsplugin_t *)plugin_handle; lammps->close(lammps_handle); lammps->mpi_finalize(); lammps->kokkos_finalize(); diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index 8c5d343f81..9ae15a5576 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -51,6 +51,7 @@ class LammpsWrapper { void *extract_atom(const char *keyword); double extract_variable(const char *keyword); + int has_id(const char *idtype, const char *id); int id_count(const char *idtype); int id_name(const char *idtype, int idx, char *buf, int buflen); int style_count(const char *keyword); @@ -71,6 +72,7 @@ class LammpsWrapper { bool config_has_curl_support() const; bool has_gpu_device() const; + bool load_lib(const QString &fname) { return load_lib(fname.toStdString().c_str()); } bool load_lib(const char *lammpslib); bool has_plugin() const; diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index 343de2e43c..b12a63bcc2 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -50,18 +50,24 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QCoreApplication::setOrganizationName("The LAMMPS Developers"); QCoreApplication::setOrganizationDomain("lammps.org"); - QCoreApplication::setApplicationName("LAMMPS-GUI - QT" stringify(QT_VERSION_MAJOR)); + QCoreApplication::setApplicationName("LAMMPS-GUI (QT" stringify(QT_VERSION_MAJOR) ")"); QCoreApplication::setApplicationVersion(LAMMPS_GUI_VERSION); QCommandLineParser parser; - parser.setApplicationDescription( + QString description( "\nThis is LAMMPS-GUI v" LAMMPS_GUI_VERSION "\n" "\nA graphical editor for LAMMPS input files with syntax highlighting and\n" "auto-completion that can run LAMMPS directly. It has built-in capabilities\n" "for monitoring, visualization, plotting, and capturing console output."); +#if defined(LAMMPS_GUI_USE_PLUGIN) + description += QString("\n\nCurrent LAMMPS plugin path setting:\n %1") + .arg(QSettings().value("plugin_path", "").toString()); +#endif + parser.setApplicationDescription(description); + #if defined(LAMMPS_GUI_USE_PLUGIN) QCommandLineOption plugindir(QStringList() << "p" << "pluginpath", - "Path to LAMMPS shared library", "path"); + "Set path to LAMMPS shared library", "path"); parser.addOption(plugindir); #endif diff --git a/tools/lammps-gui/org.lammps.lammps-gui.yml b/tools/lammps-gui/org.lammps.lammps-gui.yml index 81c3b99dfa..810913a81e 100644 --- a/tools/lammps-gui/org.lammps.lammps-gui.yml +++ b/tools/lammps-gui/org.lammps.lammps-gui.yml @@ -111,4 +111,4 @@ modules: sources: - type: git url: https://github.com/lammps/lammps.git - branch: release + branch: stable diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 395ba5f23e..4fde5b3588 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -441,15 +441,32 @@ void GeneralTab::newtextfont() void GeneralTab::pluginpath() { auto *field = findChild("pluginedit"); - QString pluginfile = - QFileDialog::getOpenFileName(this, "Select Shared LAMMPS Library to Load", field->text(), - "Shared Objects (*.so *.dll *.dylib)"); - if (!pluginfile.isEmpty() && pluginfile.contains("liblammps", Qt::CaseSensitive)) { - auto canonical = QFileInfo(pluginfile).canonicalFilePath(); - field->setText(pluginfile); - settings->setValue("plugin_path", canonical); - // ugly hack - qobject_cast(parent()->parent()->parent())->set_relaunch(true); +#ifdef Q_OS_MACOS + const QString pattern = "LAMMPS shared library (liblammps*.dylib)"; +#elif Q_OS_WIN32 + const QString pattern = "LAMMPS shared library (liblammps*.dll)"; +#else + const QString pattern = "LAMMPS shared library (liblammps*.so*)"; +#endif + if (field) { + auto libdir = QFileInfo(".").absoluteDir(); + const auto &path = field->text(); + if (!path.isEmpty()) { + libdir = QFileInfo(path).absoluteDir(); + } + QString pluginfile = QFileDialog::getOpenFileName( + this, "Select LAMMPS shared library", libdir.canonicalPath(), pattern, nullptr, + QFileDialog::DontResolveSymlinks | QFileDialog::ReadOnly); + + if (!pluginfile.isEmpty() && pluginfile.contains("liblammps", Qt::CaseSensitive)) { + auto canonical = QFileInfo(pluginfile).canonicalFilePath(); + settings->setValue("plugin_path", canonical); + field->setText(canonical); + settings->sync(); + + // ugly hack + qobject_cast(parent()->parent()->parent())->set_relaunch(true); + } } } diff --git a/unittest/python/python-capabilities.py b/unittest/python/python-capabilities.py index be38a9f090..8578548dd8 100644 --- a/unittest/python/python-capabilities.py +++ b/unittest/python/python-capabilities.py @@ -1,5 +1,6 @@ import sys,os,unittest from lammps import lammps +from lammps.constants import LMP_MAX_GROUP class PythonCapabilities(unittest.TestCase): def setUp(self): @@ -112,7 +113,7 @@ def test_available_id(self): self.assertEqual(len(ids),1) ids = self.lmp.available_ids('group') self.assertIn('none', ids) - self.assertEqual(len(ids),2) + self.assertEqual(len(ids),LMP_MAX_GROUP) ids = self.lmp.available_ids('molecule') self.assertEqual(len(ids),0) ids = self.lmp.available_ids('region') diff --git a/unittest/python/python-pylammps.py b/unittest/python/python-pylammps.py index d4f7e8b2a3..d65ad16f2d 100644 --- a/unittest/python/python-pylammps.py +++ b/unittest/python/python-pylammps.py @@ -1,5 +1,6 @@ import os,unittest from lammps import PyLammps +from lammps.constants import LMP_MAX_GROUP try: import numpy @@ -140,7 +141,7 @@ def test_info_queries(self): self.assertEqual(self.pylmp.fixes[0]['style'], 'nve') self.assertEqual(self.pylmp.fixes[0]['group'], 'all') self.pylmp.group('none','empty') - self.assertEqual(len(self.pylmp.groups),2) + self.assertEqual(len(self.pylmp.groups),LMP_MAX_GROUP) self.pylmp.comm_style('tiled') self.pylmp.mass('*',1.0) self.pylmp.run('0','post','no')