diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index f6f822676e..9b3125f04b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -381,19 +381,10 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) endif() if(PKG_PYTHON) - find_package(PythonInterp REQUIRED) find_package(PythonLibs REQUIRED) add_definitions(-DLMP_PYTHON) include_directories(${PYTHON_INCLUDE_DIR}) list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY}) - if(BUILD_LIB AND BUILD_SHARED_LIBS) - if(NOT PYTHON_INSTDIR) - execute_process(COMMAND ${PYTHON_EXECUTABLE} - -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))" - OUTPUT_VARIABLE PYTHON_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py DESTINATION ${PYTHON_INSTDIR}) - endif() endif() find_package(JPEG QUIET) @@ -613,8 +604,9 @@ if(PKG_USER-PLUMED) endif() if(PKG_USER-MOLFILE) + set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") add_library(molfile INTERFACE) - target_include_directories(molfile INTERFACE ${LAMMPS_LIB_SOURCE_DIR}/molfile) + target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS}) list(APPEND LAMMPS_LINK_LIBS molfile) endif() @@ -626,7 +618,6 @@ if(PKG_USER-NETCDF) add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020) endif() - if(PKG_USER-SMD) option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" OFF) if(DOWNLOAD_EIGEN3) @@ -670,6 +661,12 @@ if(PKG_USER-VTK) endif() if(PKG_KIM) + find_package(CURL) + if(CURL_FOUND) + include_directories(${CURL_INCLUDE_DIRS}) + list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES}) + add_definitions(-DLMP_KIM_CURL) + endif() option(DOWNLOAD_KIM "Download KIM-API v2 from OpenKIM instead of using an already installed one" OFF) if(DOWNLOAD_KIM) message(STATUS "KIM-API v2 download requested - we will build our own") @@ -1331,36 +1328,14 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HE ###################################### # Generate lmpgitversion.h ###################################### -set(temp "#ifndef LMP_GIT_VERSION_H\n#define LMP_GIT_VERSION_H\n") -set(temp_git_commit "(unknown)") -set(temp_git_branch "(unknown)") -set(temp_git_describe "(unknown)") -set(temp_git_info "false") -if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) - set(temp_git_info "true") - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/../.git rev-parse HEAD - OUTPUT_VARIABLE temp_git_commit - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/../.git rev-parse --abbrev-ref HEAD - OUTPUT_VARIABLE temp_git_branch - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/../.git describe --dirty=-modified - OUTPUT_VARIABLE temp_git_describe - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -set(temp "${temp}const bool LAMMPS_NS::LAMMPS::has_git_info = ${temp_git_info};\n") -set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_commit[] = \"${temp_git_commit}\";\n") -set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_branch[] = \"${temp_git_branch}\";\n") -set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"${temp_git_describe}\";\n") -set(temp "${temp}#endif\n\n") - -message(STATUS "Generating lmpgitversion.h...") -file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" ) -execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h") +add_custom_target(gitversion COMMAND ${CMAKE_COMMAND} + -DCMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" + -DGIT_EXECUTABLE="${GIT_EXECUTABLE}" + -DGIT_FOUND="${GIT_FOUND}" + -DLAMMPS_STYLE_HEADERS_DIR="${LAMMPS_STYLE_HEADERS_DIR}" + -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/generate_lmpgitversion.cmake) +set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${LAMMPS_STYLE_HEADERS_DIR}/gitversion.h) +list(APPEND LAMMPS_DEPS gitversion) ########################################### # Actually add executable and lib to build @@ -1483,6 +1458,49 @@ install( DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/profile.d ) +############################################################################### +# Install LAMMPS lib and python module into site-packages folder with +# "install-python" target. Behaves exactly like "make install-python" for +# conventional build. Only available, if a shared library is built. +# This is primarily for people that only want to use the Python wrapper. +############################################################################### +if(BUILD_LIB AND BUILD_SHARED_LIBS) + find_package(PythonInterp) + if (PYTHONINTERP_FOUND) + add_custom_target( + install-python + ${PYTHON_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h + -m ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py + -l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../python + COMMENT "Installing LAMMPS Python module") + else() + add_custom_target( + install-python + ${CMAKE_COMMAND} -E echo "Must have Python installed to install the LAMMPS Python module") + endif() +else() + add_custom_target( + install-python + ${CMAKE_COMMAND} -E echo "Must build LAMMPS as a shared library to use the Python module") +endif() + +############################################################################### +# Add LAMMPS python module to "install" target. This is taylored for building +# LAMMPS for package managers and with different prefix settings. +# This requires either a shared library or that the PYTHON package is included. +############################################################################### +if((BUILD_LIB AND BUILD_SHARED_LIBS) OR (PKG_PYTHON)) + find_package(PythonInterp) + if (PYTHONINTERP_FOUND) + execute_process(COMMAND ${PYTHON_EXECUTABLE} + -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))" + OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE) + set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module") + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py DESTINATION ${PYTHON_INSTDIR}) + endif() +endif() + ############################################################################### # Testing # diff --git a/cmake/Modules/generate_lmpgitversion.cmake b/cmake/Modules/generate_lmpgitversion.cmake new file mode 100644 index 0000000000..a4aa59b262 --- /dev/null +++ b/cmake/Modules/generate_lmpgitversion.cmake @@ -0,0 +1,30 @@ +set(temp "#ifndef LMP_GIT_VERSION_H\n#define LMP_GIT_VERSION_H\n") +set(temp_git_commit "(unknown)") +set(temp_git_branch "(unknown)") +set(temp_git_describe "(unknown)") +set(temp_git_info "false") +if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) + set(temp_git_info "true") + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse HEAD + OUTPUT_VARIABLE temp_git_commit + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse --abbrev-ref HEAD + OUTPUT_VARIABLE temp_git_branch + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. describe --dirty=-modified + OUTPUT_VARIABLE temp_git_describe + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +set(temp "${temp}const bool LAMMPS_NS::LAMMPS::has_git_info = ${temp_git_info};\n") +set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_commit[] = \"${temp_git_commit}\";\n") +set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_branch[] = \"${temp_git_branch}\";\n") +set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"${temp_git_describe}\";\n") +set(temp "${temp}#endif\n\n") + +message(STATUS "Generating lmpgitversion.h...") +file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" ) +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h") diff --git a/doc/Makefile b/doc/Makefile index 044e358bd5..5c679440b8 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -116,6 +116,13 @@ mobi: epub @echo "Conversion finished. The MOBI manual file is created." pdf: $(OBJECTS) $(ANCHORCHECK) + @(\ + cd src/Developer; \ + pdflatex developer; \ + pdflatex developer; \ + mv developer.pdf ../../Developer.pdf; \ + cd ../../; \ + ) @(\ . $(VENV)/bin/activate ;\ cp -r src/* $(RSTDIR)/ ;\ @@ -135,14 +142,7 @@ pdf: $(OBJECTS) $(ANCHORCHECK) make && \ make && \ mv LAMMPS.pdf ../Manual.pdf && \ - cd ../; - @(\ - cd src/Developer; \ - pdflatex developer; \ - pdflatex developer; \ - mv developer.pdf ../../Developer.pdf; \ - cd ../../; \ - ) + cd ../; @rm -rf latex/_sources @rm -rf latex/PDF @rm -rf latex/USER diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt index cbbd9db2f3..65a05c267e 100644 --- a/doc/src/Build_extras.txt +++ b/doc/src/Build_extras.txt @@ -169,16 +169,18 @@ used to build the GPU library. KIM package :h4,link(kim) -To build with this package, the KIM library must be downloaded and -built on your system. It must include the KIM models that you want to -use with LAMMPS. +To build with this package, the KIM library with API v2 must be downloaded +and built on your system. It must include the KIM models that you want to +use with LAMMPS. If you want to use the "kim_query"_kim_query.html +command, you also need to have libcurl installed with the matching +development headers and the curl-config tool. Note that in LAMMPS lingo, a KIM model driver is a pair style (e.g. EAM or Tersoff). A KIM model is a pair style for a particular element or alloy and set of parameters, e.g. EAM for Cu with a -specific EAM potential file. Also note that installing the KIM API -library with all its models, may take around 30 min to build. Of -course you only need to do that once. +specific EAM potential file. Also note that downloading and installing +the KIM API library with all its models, may take a long time (10s of +minutes to hours) to build. Of course you only need to do that once. See the list of KIM model drivers here: https://openkim.org/browse/model-drivers/alphabetical @@ -893,7 +895,17 @@ USER-MOLFILE package :h4,link(user-molfile) [CMake build]: -No additional settings are needed besides "-D PKG_USER-MOLFILE=yes". +-D MOLFILE_INCLUDE_DIRS=path # (optional) path where VMD molfile plugin headers are installed +-D PKG_USER-MOLFILE=yes :pre + + +Using "-D PKG_USER-MOLFILE=yes" enables the package, and setting +"-D MOLFILE_INCLUDE DIRS" allows to provide a custom location for +the molfile plugin header files. These should match the ABI of the +plugin files used, and thus one typically sets them to include +folder of the local VMD installation in use. LAMMPS ships with a +couple of default header files that correspond to a popular VMD +version, usually the latest release. [Traditional make]: @@ -902,7 +914,11 @@ loading library libdl.a that is typically present on all systems. It is required for LAMMPS to link with this package. If the setting is not valid for your system, you will need to edit the Makefile.lammps file. See lib/molfile/README and lib/molfile/Makefile.lammps for -details. +details. It is also possible to configure a different folder with +the VMD molfile plugin header files. LAMMPS ships with a couple of +default headers, but these are not compatible with all VMD versions, +so it is often best to change this setting to the location of the +same include files of the local VMD installation in use. :line diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt index 155b56ace8..66c348ee30 100644 --- a/doc/src/Commands_all.txt +++ b/doc/src/Commands_all.txt @@ -68,6 +68,7 @@ An alphabetic list of all general LAMMPS commands. "improper_style"_improper_style.html, "include"_include.html, "jump"_jump.html, +"kim_query"_kim_query.html, "kspace_modify"_kspace_modify.html, "kspace_style"_kspace_style.html, "label"_label.html, @@ -78,6 +79,7 @@ An alphabetic list of all general LAMMPS commands. "minimize"_minimize.html, "min_modify"_min_modify.html, "min_style"_min_style.html, +"min_style spin"_min_spin.html, "molecule"_molecule.html, "ndx2group"_group2ndx.html, "neb"_neb.html, diff --git a/doc/src/Eqs/min_spin_damping.jpg b/doc/src/Eqs/min_spin_damping.jpg new file mode 100644 index 0000000000..0c700cc678 Binary files /dev/null and b/doc/src/Eqs/min_spin_damping.jpg differ diff --git a/doc/src/Eqs/min_spin_damping.tex b/doc/src/Eqs/min_spin_damping.tex new file mode 100644 index 0000000000..88b05447d3 --- /dev/null +++ b/doc/src/Eqs/min_spin_damping.tex @@ -0,0 +1,13 @@ +\documentclass[preview]{standalone} +\usepackage{varwidth} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath, amssymb, graphics, setspace} + +\begin{document} +\begin{varwidth}{50in} + \begin{equation} + \frac{d \vec{s}_{i}}{dt} = \lambda\, \vec{s}_{i} \times\left( \vec{\omega}_{i} \times\vec{s}_{i} \right) + \nonumber + \end{equation} +\end{varwidth} +\end{document} diff --git a/doc/src/Eqs/min_spin_timestep.jpg b/doc/src/Eqs/min_spin_timestep.jpg new file mode 100644 index 0000000000..0d8f8d07f9 Binary files /dev/null and b/doc/src/Eqs/min_spin_timestep.jpg differ diff --git a/doc/src/Eqs/min_spin_timestep.tex b/doc/src/Eqs/min_spin_timestep.tex new file mode 100644 index 0000000000..b0f6e68e4d --- /dev/null +++ b/doc/src/Eqs/min_spin_timestep.tex @@ -0,0 +1,14 @@ +\documentclass[preview]{standalone} +\usepackage{varwidth} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath, amssymb, graphics, setspace} + +\begin{document} +\begin{varwidth}{50in} + \begin{equation} + {\Delta t}_{\rm max} = \frac{2\pi}{\kappa + \left|\vec{\omega}_{\rm max} \right|} + \nonumber + \end{equation} +\end{varwidth} +\end{document} diff --git a/doc/src/Howto_pylammps.txt b/doc/src/Howto_pylammps.txt index b731a8e31a..54f17d912a 100644 --- a/doc/src/Howto_pylammps.txt +++ b/doc/src/Howto_pylammps.txt @@ -57,6 +57,17 @@ library is then loaded by the Python interface. In this example we enable the MOLECULE package and compile LAMMPS with C++ exceptions, PNG, JPEG and FFMPEG output support enabled. +Step 1a: For the CMake based build system, the steps are: + +mkdir $LAMMPS_DIR/build-shared +cd $LAMMPS_DIR/build-shared :pre + +# MPI, PNG, Jpeg, FFMPEG are auto-detected +cmake ../cmake -DPKG_MOLECULE=yes -DLAMMPS_EXCEPTIONS=yes -DBUILD_LIB=yes -DBUILD_SHARED_LIBS=yes +make :pre + +Step 1b: For the legacy, make based build system, the steps are: + cd $LAMMPS_DIR/src :pre # add packages if necessary @@ -68,10 +79,9 @@ make mpi mode=shlib LMP_INC="-DLAMMPS_PNG -DLAMMPS_JPEG -DLAMMPS_FFMPEG -DLAMMPS Step 2: Installing the LAMMPS Python package :h6 PyLammps is part of the lammps Python package. To install it simply install -that package into your current Python installation. +that package into your current Python installation with: -cd $LAMMPS_DIR/python -python install.py :pre +make install-python :pre NOTE: Recompiling the shared library requires re-installing the Python package @@ -94,14 +104,21 @@ apt-get install python-virtualenv :pre Creating a virtualenv with lammps installed :h6 -# create virtualenv name 'testing' :pre +# create virtualenv named 'testing' +virtualenv $HOME/python/testing :pre # activate 'testing' environment -source testing/bin/activate :pre +source $HOME/python/testing/bin/activate :pre + +Now configure and compile the LAMMPS shared library as outlined above. +When using CMake and the shared library has already been build, you +need to re-run CMake to update the location of the python executable +to the location in the virtual environment with: + +cmake . -DPYTHON_EXECUTABLE=$(which python) :pre # install LAMMPS package in virtualenv -(testing) cd $LAMMPS_DIR/python -(testing) python install.py :pre +(testing) make install-python :pre # install other useful packages (testing) pip install matplotlib jupyter mpi4py :pre diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 3a362a23d0..0ab1b5e4fd 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -341,6 +341,8 @@ KIM package :link(PKG-KIM),h4 A "pair_style kim"_pair_kim.html command which is a wrapper on the Knowledge Base for Interatomic Models (KIM) repository of interatomic potentials, enabling any of them to be used in LAMMPS simulations. +Also a "kim_query"_kim_query.html command, which allows to query +the OpenKIM database for stored properties. To use this package you must have the KIM library available on your system. diff --git a/doc/src/Python_install.txt b/doc/src/Python_install.txt index 97f6bf3c3a..2c134974f5 100644 --- a/doc/src/Python_install.txt +++ b/doc/src/Python_install.txt @@ -12,16 +12,23 @@ Installing LAMMPS in Python :h3 For Python to invoke LAMMPS, there are 2 files it needs to know about: python/lammps.py -src/liblammps.so :ul +liblammps.so or liblammps.dylib :ul -Lammps.py is the Python wrapper on the LAMMPS library interface. -Liblammps.so is the shared LAMMPS library that Python loads, as -described above. +The python source code in lammps.py is the Python wrapper on the +LAMMPS library interface. The liblammps.so or liblammps.dylib file +is the shared LAMMPS library that Python loads dynamically. -You can insure Python can find these files in one of two ways: +You can achieve that Python can find these files in one of two ways: -set two environment variables -run the python/install.py script :ul +set two environment variables pointing to the location in the source tree +run "make install-python" or run the python/install.py script explicitly :ul + +When calling "make install-python" LAMMPS will try to install the +python module and the shared library into the python site-packages folders; +either the system-wide ones, or the local users ones (in case of insufficient +permissions for the global install). Python will then find the module +and shared library file automatically. The exact location of these folders +depends on your python version and your operating system. If you set the paths to these files as environment variables, you only have to do it once. For the csh or tcsh shells, add something like @@ -30,42 +37,28 @@ this to your ~/.cshrc file, one line for each of the two files: setenv PYTHONPATH $\{PYTHONPATH\}:/home/sjplimp/lammps/python setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre -If you use the python/install.py script, you need to invoke it every -time you rebuild LAMMPS (as a shared library) or make changes to the -python/lammps.py file. +On MacOSX you may also need to set DYLD_LIBRARY_PATH accordingly. +For Bourne/Korn shells accordingly into the corresponding files using +the "export" shell builtin. -You can invoke install.py from the python directory as +If you use "make install-python" or the python/install.py script, you need +to invoke it every time you rebuild LAMMPS (as a shared library) or +make changes to the python/lammps.py file, so that the site-packages +files are updated with the new version. -% python install.py \[libdir\] \[pydir\] :pre +If the default settings of "make install-python" are not what you want, +you can invoke install.py from the python directory manually as -The optional libdir is where to copy the LAMMPS shared library to; the -default is /usr/local/lib. The optional pydir is where to copy the -lammps.py file to; the default is the site-packages directory of the -version of Python that is running the install script. +% python install.py -m \ -l -v \[-d \\] :pre -Note that libdir must be a location that is in your default -LD_LIBRARY_PATH, like /usr/local/lib or /usr/lib. And pydir must be a -location that Python looks in by default for imported modules, like -its site-packages dir. If you want to copy these files to -non-standard locations, such as within your own user space, you will -need to set your PYTHONPATH and LD_LIBRARY_PATH environment variables -accordingly, as above. +The -m flag points to the lammps.py python module file to be installed, +the -l flag points to the LAMMPS shared library file to be installed, +the -v flag points to the version.h file in the LAMMPS source +and the optional -d flag to a custom (legacy) installation folder :ul -If the install.py script does not allow you to copy files into system -directories, prefix the python command with "sudo". If you do this, -make sure that the Python that root runs is the same as the Python you -run. E.g. you may need to do something like - -% sudo /usr/local/bin/python install.py \[libdir\] \[pydir\] :pre - -You can also invoke install.py from the make command in the src -directory as - -% make install-python :pre - -In this mode you cannot append optional arguments. Again, you may -need to prefix this with "sudo". In this mode you cannot control -which Python is invoked by root. +If you use a legacy installation folder, you will need to set your +PYTHONPATH and LD_LIBRARY_PATH (and/or DYLD_LIBRARY_PATH) environment +variables accordingly, as described above. Note that if you want Python to be able to load different versions of the LAMMPS shared library (see "this section"_Python_shlib.html), you will diff --git a/doc/src/Python_overview.txt b/doc/src/Python_overview.txt index a5d6a469ff..0195ec2b20 100644 --- a/doc/src/Python_overview.txt +++ b/doc/src/Python_overview.txt @@ -13,11 +13,11 @@ Overview of Python and LAMMPS :h3 LAMMPS can work together with Python in three ways. First, Python can wrap LAMMPS through the its "library interface"_Howto_library.html, so that a Python script can create one or more instances of LAMMPS and -launch one or more simulations. In Python lingo, this is "extending" -Python with LAMMPS. +launch one or more simulations. In Python lingo, this is called +"extending" Python with a LAMMPS module. Second, a lower-level Python interface can be used indirectly through -provided PyLammps and IPyLammps wrapper classes, written in Python. +the provided PyLammps and IPyLammps wrapper classes, written in Python. These wrappers try to simplify the usage of LAMMPS in Python by providing an object-based interface to common LAMMPS functionality. They also reduces the amount of code necessary to parameterize LAMMPS @@ -25,11 +25,12 @@ scripts through Python and make variables and computes directly accessible. Third, LAMMPS can use the Python interpreter, so that a LAMMPS -input script can invoke Python code directly, and pass information -back-and-forth between the input script and Python functions you -write. This Python code can also callback to LAMMPS to query or change -its attributes. In Python lingo, this is "embedding" Python in -LAMMPS. When used in this mode, Python can perform operations that -the simple LAMMPS input script syntax cannot. +input script or styles can invoke Python code directly, and pass +information back-and-forth between the input script and Python +functions you write. This Python code can also callback to LAMMPS +to query or change its attributes through the LAMMPS Python module +mentioned above. In Python lingo, this is "embedding" Python in +LAMMPS. When used in this mode, Python can perform script operations +that the simple LAMMPS input script syntax can not. diff --git a/doc/src/commands_list.txt b/doc/src/commands_list.txt index 27e0906b5f..6f90d9c93a 100644 --- a/doc/src/commands_list.txt +++ b/doc/src/commands_list.txt @@ -53,6 +53,7 @@ Commands :h1 include info jump + kim_query kspace_modify kspace_style label @@ -61,6 +62,7 @@ Commands :h1 mass message min_modify + min_spin min_style minimize molecule diff --git a/doc/src/compute.txt b/doc/src/compute.txt index 4886e73ab6..87dbee57d6 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -54,9 +54,10 @@ local quantities have the word "local" in their style, e.g. {bond/local}. Styles with neither "atom" or "local" in their style produce global quantities. -Note that a single compute produces either global or per-atom or local -quantities, but never more than one of these (with only a few -exceptions, as documented by individual compute commands). +Note that a single compute can produce either global or per-atom or +local quantities, but not both global and per-atom. It can produce +local quantities in tandem with global or per-atom quantities. The +compute doc page will explain. Global, per-atom, and local quantities each come in three kinds: a single scalar value, a vector of values, or a 2d array of values. The diff --git a/doc/src/fix.txt b/doc/src/fix.txt index 395f2ad7a9..9b48ee13bf 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -83,8 +83,10 @@ not in the specified fix group. Local quantities are calculated by each processor based on the atoms it owns, but there may be zero or more per atoms. -Note that a single fix may produces either global or per-atom or local -quantities (or none at all), but never more than one of these. +Note that a single fix can produce either global or per-atom or local +quantities (or none at all), but not both global and per-atom. It can +produce local quantities in tandem with global or per-atom quantities. +The fix doc page will explain. Global, per-atom, and local quantities each come in three kinds: a single scalar value, a vector of values, or a 2d array of values. The diff --git a/doc/src/fix_ave_histo.txt b/doc/src/fix_ave_histo.txt index 79f4d53481..0a17813d21 100644 --- a/doc/src/fix_ave_histo.txt +++ b/doc/src/fix_ave_histo.txt @@ -35,6 +35,7 @@ keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {ti {mode} arg = {scalar} or {vector} scalar = all input values are scalars vector = all input values are vectors + {kind} arg = {global} or {peratom} or {local} {file} arg = filename filename = name of file to output histogram(s) to {ave} args = {one} or {running} or {window} @@ -92,7 +93,8 @@ either all global, all per-atom, or all local quantities. Inputs of different kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are per-atom vector values. See the doc page for individual "compute" and "fix" commands to see what kinds of -quantities they generate. +quantities they generate. See the optional {kind} keyword below for +how to force the fix ave/histo command to disambiguate if necessary. Note that the output of this command is a single histogram for all input values combined together, not one histogram per input value. @@ -231,6 +233,14 @@ keyword is set to {vector}, then all input values must be global or per-atom or local vectors, or columns of global or per-atom or local arrays. +The {kind} keyword only needs to be set if a compute or fix produces +more than one kind of output (global, per-atom, local). If this is +not the case, then LAMMPS will determine what kind of input is +provided and whether all the input arguments are consistent. If a +compute or fix produces more than one kind of output, the {kind} +keyword should be used to specify which output will be used. The +remaining input arguments must still be consistent. + The {beyond} keyword determines how input values that fall outside the {lo} to {hi} bounds are treated. Values such that {lo} <= value <= {hi} are assigned to one bin. Values on a bin boundary are assigned @@ -240,7 +250,7 @@ If {beyond} is set to {end} then values < {lo} are counted in the first bin and values > {hi} are counted in the last bin. If {beyond} is set to {extend} then two extra bins are created, so that there are Nbins+2 total bins. Values < {lo} are counted in the first bin and -values > {hi} are counted in the last bin (Nbins+1). Values between +values > {hi} are counted in the last bin (Nbins+2). Values between {lo} and {hi} (inclusive) are counted in bins 2 through Nbins+1. The "coordinate" stored and printed for these two extra bins is {lo} and {hi}. @@ -354,5 +364,6 @@ ave/chunk"_fix_ave_chunk.html, "fix ave/time"_fix_ave_time.html, [Default:] none -The option defaults are mode = scalar, ave = one, start = 0, no file -output, beyond = ignore, and title 1,2,3 = strings as described above. +The option defaults are mode = scalar, kind = figured out from input +arguments, ave = one, start = 0, no file output, beyond = ignore, and +title 1,2,3 = strings as described above. diff --git a/doc/src/fix_hyper_global.txt b/doc/src/fix_hyper_global.txt index a7a938b144..81404ac6a2 100644 --- a/doc/src/fix_hyper_global.txt +++ b/doc/src/fix_hyper_global.txt @@ -102,7 +102,7 @@ Bi = exp(beta * Vij(max)) :pre where beta = 1/kTequil, and {Tequil} is the temperature of the system and an argument to this fix. Note that Bi >= 1 at every step. -NOTE: To run GHD, the input script must also use the "fix +NOTE: To run a GHD simulation, the input script must also use the "fix langevin"_fix_langevin.html command to thermostat the atoms at the same {Tequil} as specified by this fix, so that the system is running constant-temperature (NVT) dynamics. LAMMPS does not check that this @@ -166,9 +166,9 @@ correctly. There will just be fewer events because the hyper time NOTE: If you have no physical intuition as to the smallest barrier height in your system, a reasonable strategy to determine the largest -{Vmax} you can use for an LHD model, is to run a sequence of +{Vmax} you can use for a GHD model, is to run a sequence of simulations with smaller and smaller {Vmax} values, until the event -rate does not change. +rate does not change (as a function of hyper time). The {Tequil} argument is the temperature at which the system is simulated; see the comment above about the "fix @@ -177,7 +177,8 @@ beta term in the exponential factor that determines how much boost is achieved as a function of the bias potential. In general, the lower the value of {Tequil} and the higher the value -of {Vmax}, the more boost will be achievable by the GHD algorithm. +of {Vmax}, the more time boost will be achievable by the GHD +algorithm. :line @@ -190,41 +191,43 @@ The "fix_modify"_fix_modify.html {energy} option is supported by this fix to add the energy of the bias potential to the the system's potential energy as part of "thermodynamic output"_thermo_style.html. -This fix computes a global scalar and global vector of length 11, which +This fix computes a global scalar and global vector of length 12, which can be accessed by various "output commands"_Howto_output.html. The scalar is the magnitude of the bias potential (energy units) applied on the current timestep. The vector stores the following quantities: 1 = boost factor on this step (unitless) -2 = max strain Eij of any bond on this step (unitless) +2 = max strain Eij of any bond on this step (absolute value, unitless) 3 = ID of first atom in the max-strain bond 4 = ID of second atom in the max-strain bond 5 = average # of bonds/atom on this step :ul -6 = fraction of timesteps with bias = 0.0 during this run -7 = max drift distance of any atom during this run (distance units) -8 = max bond length during this run (distance units) :ul +6 = fraction of timesteps where the biased bond has bias = 0.0 during this run +7 = fraction of timesteps where the biased bond has negative strain during this run +8 = max drift distance of any atom during this run (distance units) +9 = max bond length during this run (distance units) :ul -9 = cumulative hyper time since fix was defined (time units) -10 = cumulative count of event timesteps since fix was defined -11 = cumulative count of atoms in events since fix was defined :ul +10 = cumulative hyper time since fix was defined (time units) +11 = cumulative count of event timesteps since fix was defined +12 = cumulative count of atoms in events since fix was defined :ul -The first 5 quantities are for the current timestep. Quantities 6-8 -are for the current hyper run. Quantities 9-11 are cumulative across -multiple runs (since the fix was defined in the input script). +The first 5 quantities are for the current timestep. Quantities 6-9 +are for the current hyper run. They are reset each time a new hyper +run is performed. Quantities 19-12 are cumulative across multiple +runs (since the point in the input script the fix was defined). -For value 7, drift is the distance an atom moves between timesteps -when the bond list is reset, i.e. between events. Atoms involved in -an event will typically move the greatest distance since others are -typically oscillating around their lattice site. +For value 8, drift is the distance an atom moves between two quenched +states when the second quench determines an event has occurred. Atoms +involved in an event will typically move the greatest distance since +others typically remain near their original quenched position. -For value 10, events are checked for by the "hyper"_hyper.html command +For value 11, events are checked for by the "hyper"_hyper.html command once every {Nevent} timesteps. This value is the count of those timesteps on which one (or more) events was detected. It is NOT the number of distinct events, since more than one event may occur in the same {Nevent} time window. -For value 11, each time the "hyper"_hyper.html command checks for an +For value 12, each time the "hyper"_hyper.html command checks for an event, it invokes a compute to flag zero or more atoms as participating in one or more events. E.g. atoms that have displaced more than some distance from the previous quench state. Value 11 is diff --git a/doc/src/fix_hyper_local.txt b/doc/src/fix_hyper_local.txt index c34b9ba7da..185fa8f20b 100644 --- a/doc/src/fix_hyper_local.txt +++ b/doc/src/fix_hyper_local.txt @@ -22,10 +22,9 @@ Dcut = minimum distance between boosted bonds (distance units) :l alpha = boostostat relaxation time (time units) :l Btarget = desired time boost factor (unitless) :l zero or more keyword/value pairs may be appended :l -keyword = {lost} or {check/bias} or {check/coeff} - {lostbond} value = error/warn/ignore - {check/bias} values = Nevery error/warn/ignore - {check/coeff} values = Nevery error/warn/ignore :pre +keyword = {check/ghost} or {check/bias} :l + {check/ghost} values = none + {check/bias} values = Nevery error/warn/ignore :pre :ule [Examples:] @@ -65,8 +64,8 @@ To understand this description, you should first read the description of the GHD algorithm on the "fix hyper/global"_fix_hyper_global.html doc page. This description of LHD builds on the GHD description. -The definition of bonds, Eij, and Emax are the same for GHD and LHD. -The formulas for Vij(max) and Fij(max) are also the same except for a +The definition of bonds and Eij are the same for GHD and LHD. The +formulas for Vij(max) and Fij(max) are also the same except for a pre-factor Cij, explained below. The bias energy Vij applied to a bond IJ with maximum strain is @@ -117,11 +116,11 @@ where Vkl(max) is the bias energy of the maxstrain bond KL within bond IJ's neighborhood, beta = 1/kTequil, and {Tequil} is the temperature of the system and an argument to this fix. -NOTE: To run LHD, the input script must also use the "fix -langevin"_fix_langevin.html command to thermostat the atoms at the -same {Tequil} as specified by this fix, so that the system is running -constant-temperature (NVT) dynamics. LAMMPS does not check that this -is done. +NOTE: To run an LHD simulation, the input script must also use the +"fix langevin"_fix_langevin.html command to thermostat the atoms at +the same {Tequil} as specified by this fix, so that the system is +running constant-temperature (NVT) dynamics. LAMMPS does not check +that this is done. Note that if IJ = KL, then bond IJ is a biased bond on that timestep, otherwise it is not. But regardless, the boost factor Bij can be @@ -216,20 +215,20 @@ each pair. E.g. something like 2x the cutoff of the interatomic potential. In practice a {Dcut} value of ~10 Angstroms seems to work well for many solid-state systems. -NOTE: You must also insure that ghost atom communication is performed -for a distance of at least {Dcut} + {cutevent} where {cutevent} = the -distance one or more atoms move (between quenched states) to be -considered an "event". It is an argument to the "compute -event/displace" command used to detect events. By default the ghost -communication distance is set by the pair_style cutoff, which will -typically be < {Dcut}. The "comm_modify cutoff"_comm_modify.html -command can be used to set the ghost cutoff explicitly, e.g. +NOTE: You should insure that ghost atom communication is performed for +a distance of at least {Dcut} + {cutevent} = the distance one or more +atoms move (between quenched states) to be considered an "event". It +is an argument to the "compute event/displace" command used to detect +events. By default the ghost communication distance is set by the +pair_style cutoff, which will typically be < {Dcut}. The "comm_modify +cutoff"_comm_modify.html command should be used to override the ghost +cutoff explicitly, e.g. comm_modify cutoff 12.0 :pre -This fix does not know the {cutevent} parameter, but uses half the -bond length as an estimate to warn if the ghost cutoff is not long -enough. +Note that this fix does not know the {cutevent} parameter, but uses +half the {cutbond} parameter as an estimate to warn if the ghost +cutoff is not long enough. As described above the {alpha} argument is a pre-factor in the boostostat update equation for each bond's Cij prefactor. {Alpha} is @@ -269,7 +268,30 @@ NOTE: If you have no physical intuition as to the smallest barrier height in your system, a reasonable strategy to determine the largest {Btarget} you can use for an LHD model, is to run a sequence of simulations with smaller and smaller {Btarget} values, until the event -rate does not change. +rate does not change (as a function of hyper time). + +:line + +Here is additional information on the optional keywords for this fix. + +The {check/ghost} keyword turns on extra computation each timestep to +compute statistics about ghost atoms used to determine which bonds to +bias. The output of these stats are the vector values 14 and 15, +described below. If this keyword is not enabled, the output +of the stats will be zero. + +The {check/bias} keyword turns on extra computation and communication +to check if any biased bonds are closer than {Dcut} to each other, +which should not be the case if LHD is operating correctly. Thus it +is a debugging check. The {Nevery} setting determines how often the +check is made. The {error}, {warn}, or {ignore} setting determines +what is done if the count of too-close bonds is not zero. Either the +code will exit, or issue a warning, or silently tally the count. The +count can be output as vector value 17, as described below. If this +keyword is not enabled, the output of that statistic will be 0. + +Note that both of these computations are costly, hence they are only +enabled by these keywords. :line @@ -282,95 +304,120 @@ The "fix_modify"_fix_modify.html {energy} option is supported by this fix to add the energy of the bias potential to the the system's potential energy as part of "thermodynamic output"_thermo_style.html. -This fix computes a global scalar and global vector of length 23, -which can be accessed by various "output -commands"_Howto_output.html. The scalar is the magnitude of -the bias potential (energy units) applied on the current timestep, -summed over all biased bonds. The vector stores the following -quantities: +This fix computes a global scalar and global vector of length 21, +which can be accessed by various "output commands"_Howto_output.html. +The scalar is the magnitude of the bias potential (energy units) +applied on the current timestep, summed over all biased bonds. The +vector stores the following quantities: 1 = # of biased bonds on this step -2 = max strain Eij of any bond on this step (unitless) -3 = average bias potential for all biased bonds on this step (energy units) +2 = max strain Eij of any bond on this step (absolute value, unitless) +3 = average bias coeff for all bonds on this step (unitless) 4 = average # of bonds/atom on this step 5 = average neighbor bonds/bond on this step within {Dcut} :ul -6 = fraction of steps and bonds with no bias during this run -7 = max drift distance of any atom during this run (distance units) -8 = max bond length during this run (distance units) -9 = average # of biased bonds/step during this run -10 = average bias potential for all biased bonds during this run (energy units) -11 = max bias potential for any biased bond during this run (energy units) -12 = min bias potential for any biased bond during this run (energy units) -13 = max distance from my sub-box of any ghost atom with maxstrain < qfactor during this run (distance units) -14 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units) -15 = count of ghost neighbor atoms not found on reneighbor steps during this run -16 = count of lost bond partners during this run -17 = average bias coeff for lost bond partners during this run -18 = count of bias overlaps found during this run -19 = count of non-matching bias coefficients found during this run :ul +6 = max bond length during this run (distance units) +7 = average # of biased bonds/step during this run +8 = fraction of biased bonds with no bias during this run +9 = fraction of biased bonds with negative strain during this run +10 = average bias coeff for all bonds during this run (unitless) +11 = min bias coeff for any bond during this run (unitless) +12 = max bias coeff for any bond during this run (unitless) -20 = cumulative hyper time since fix created (time units) -21 = cumulative count of event timesteps since fix created -22 = cumulative count of atoms in events since fix created -23 = cumulative # of new bonds since fix created :ul +13 = max drift distance of any bond atom during this run (distance units) +14 = max distance from proc subbox of any ghost atom with maxstrain < qfactor during this run (distance units) +15 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units) +16 = count of ghost atoms that could not be found on reneighbor steps during this run +17 = count of bias overlaps (< Dcut) found during this run + +18 = cumulative hyper time since fix created (time units) +19 = cumulative count of event timesteps since fix created +20 = cumulative count of atoms in events since fix created +21 = cumulative # of new bonds formed since fix created :ul The first quantities (1-5) are for the current timestep. Quantities -6-19 are for the current hyper run. They are reset each time a new -hyper run is performed. Quantities 20-23 are cumulative across -multiple runs (since the fix was defined in the input script). +6-17 are for the current hyper run. They are reset each time a new +hyper run is performed. Quantities 18-21 are cumulative across +multiple runs (since the point in the input script the fix was +defined). -For value 6, the numerator is a count of all biased bonds on every +For value 8, the numerator is a count of all biased bonds on each timestep whose bias energy = 0.0 due to Eij >= {qfactor}. The denominator is the count of all biased bonds on all timesteps. -For value 7, drift is the distance an atom moves between timesteps -when the bond list is reset, i.e. between events. Atoms involved in -an event will typically move the greatest distance since others are -typically oscillating around their lattice site. +For value 9, the numerator is a count of all biased bonds on each +timestep with negative strain. The denominator is the count of all +biased bonds on all timesteps. -For values 13 and 14, the maxstrain of a ghost atom is the maxstrain -of any bond it is part of, and it is checked for ghost atoms within -the bond neighbor cutoff. +Values 13-17 are mostly useful for debugging and diagnostic purposes. -Values 15-19 are mostly useful for debugging and diagnostic purposes. +For value 13, drift is the distance an atom moves between two quenched +states when the second quench determines an event has occurred. Atoms +involved in an event will typically move the greatest distance since +others typically remain near their original quenched position. -For values 15-17, it is possible that a ghost atom owned by another -processor will move far enough (e.g. as part of an event-in-progress) -that it will no longer be within the communication cutoff distance for -acquiring ghost atoms. Likewise it may be a ghost atom bond partner -that cannot be found because it has moved too far. These values count -those occurrences. Because they typically involve atoms that are part -of events, they do not usually indicate bad dynamics. Value 16 is the -average bias coefficient for bonds where a partner atom was lost. +For values 14-16, neighbor atoms in the full neighbor list with cutoff +{Dcut} may be ghost atoms outside a processor's sub-box. Before the +next event occurs they may move further than {Dcut} away from the +sub-box boundary. Value 14 is the furthest (from the sub-box) any +ghost atom in the neighbor list with maxstrain < {qfactor} was +accessed during the run. Value 15 is the same except that the ghost +atom's maxstrain may be >= {qfactor}, which may mean it is about to +participate in an event. Value 16 is a count of how many ghost atoms +could not be found on reneighbor steps, presumably because they moved +too far away due to their participation in an event (which will likely +be detected at the next quench). -For value 18, no two bonds should be biased if they are within a +Typical values for 14 and 15 should be slightly larger than {Dcut}, +which accounts for ghost atoms initially at a {Dcut} distance moving +thermally before the next event takes place. + +Note that for values 14 and 15 to be computed, the optional keyword +{check/ghost} must be specified. Otherwise these values will be zero. +This is because computing them incurs overhead, so the values are only +computed if requested. + +Value 16 should be zero or small. As explained above a small count +likely means some ghost atoms were participating in their own events +and moved a longer distance. If the value is large, it likely means +the communication cutoff for ghosts is too close to {Dcut} leading to +many not-found ghost atoms before the next event. This may lead to a +reduced number of bonds being selected for biasing, since the code +assumes those atoms are part of highly strained bonds. As explained +above, the "comm_modify cutoff"_comm_modify.html command can be used +to set a longer cutoff. + +For value 17, no two bonds should be biased if they are within a {Dcut} distance of each other. This value should be zero, indicating -that no pair of bonds "overlap", meaning they are closer than {Dcut} -from each other. +that no pair of biased bonds are closer than {Dcut} from each other. -For value 19, the same bias coefficient is stored by both atoms in an -IJ bond. This value should be zero, indicating that for all bonds, -each atom in the bond stores the a bias coefficient with the same -value. +Note that for values 17 to be computed, the optional keyword +{check/bias} must be specified and it determines how often this check +is performed. This is because performing the check incurs overhead, +so if only computed as often as requested. -Value 20 is simply the specified {boost} factor times the number of -timestep times the timestep size. +The result at the end of the run is the cumulative total from every +timestep the check was made. Note that the value is a count of atoms +in bonds which found other atoms in bonds too close, so it is almost +always an over-count of the number of too-close bonds. -For value 21, events are checked for by the "hyper"_hyper.html command +Value 18 is simply the specified {boost} factor times the number of +timesteps times the timestep size. + +For value 19, events are checked for by the "hyper"_hyper.html command once every {Nevent} timesteps. This value is the count of those timesteps on which one (or more) events was detected. It is NOT the number of distinct events, since more than one event may occur in the same {Nevent} time window. -For value 22, each time the "hyper"_hyper.html command checks for an +For value 20, each time the "hyper"_hyper.html command checks for an event, it invokes a compute to flag zero or more atoms as participating in one or more events. E.g. atoms that have displaced -more than some distance from the previous quench state. Value 22 is +more than some distance from the previous quench state. Value 20 is the cumulative count of the number of atoms participating in any of the events that were found. -Value 23 tallies the number of new bonds created by the bond reset +Value 21 tallies the number of new bonds created by the bond reset operation. Bonds between a specific I,J pair of atoms may persist for the entire hyperdynamics simulation if neither I or J are involved in an event. @@ -378,6 +425,16 @@ an event. The scalar and vector values calculated by this fix are all "intensive". +This fix also computes a local vector of length the number of bonds +currently in the system. The value for each bond is its Cij prefactor +(bias coefficient). These values can be can be accessed by various +"output commands"_Howto_output.html. A particularly useful one is the +"fix ave/histo"_fix_ave_histo.html command which can be used to +histogram the Cij values to see if they are distributed reasonably +close to 1.0, which indicates a good choice of {Vmax}. + +The local values calculated by this fix are unitless. + No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. @@ -392,7 +449,9 @@ doc page for more info. "hyper"_hyper.html, "fix hyper/global"_fix_hyper_global.html -[Default:] None +[Default:] + +The check/ghost and check/bias keywords are not enabled by default. :line diff --git a/doc/src/kim_query.txt b/doc/src/kim_query.txt new file mode 100644 index 0000000000..be46783d82 --- /dev/null +++ b/doc/src/kim_query.txt @@ -0,0 +1,45 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +kim_query command :h3 + +[Syntax:] + +kim_query variable query_function web_query_flags :pre + +variable = name of a (string style) variable where the result of the query is stored +query_function = name of the OpenKIM web API query function to be used +web_query_flags = a series of keyword=value pairs that represent the web query; supported keywords depend on query function :ul + +[Examples:] + +kim_query latconst get_test_result test=TE_156715955670 model=MO_800509458712 & + prop=structure-cubic-crystal-npt species=\["Al"\] keys=\["a"\] units=\["angstrom"\] :pre + +[Description:] + +The kim_query command allows to retrieve properties from the OpenKIM +through a web query. The result is stored in a string style +"variable"_variable.html, the name of which must be given as the first +argument of the kim_query command. The second required argument is the +name of the actual query function (e.g. {get_test_result}). All following +arguments are parameters handed over to the web query in the format +{keyword=value}. This list of supported keywords and the type of how +the value has to be encoded depends on the query function used. +For more details on this, please refer to the OpenKIM homepage. + +[Restrictions:] + +This command is part of the KIM package. It is only enabled if +LAMMPS was built with that package. Furthermore, its correct +functioning depends on compiling LAMMPS with libcurl support. +See the "Build package"_Build_package.html doc page for more info. + +[Related commands:] + +"pair_style kim"_pair_kim.html, "variable"_variable.html diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 8165c9d743..4e64446ec1 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -167,6 +167,7 @@ if.html include.html info.html jump.html +kim_query.html label.html lattice.html log.html @@ -174,6 +175,7 @@ mass.html message.html min_modify.html min_style.html +min_spin.html minimize.html molecule.html neb.html diff --git a/doc/src/min_modify.txt b/doc/src/min_modify.txt index 9408eea167..d342e8bf01 100644 --- a/doc/src/min_modify.txt +++ b/doc/src/min_modify.txt @@ -13,11 +13,15 @@ min_modify command :h3 min_modify keyword values ... :pre one or more keyword/value pairs may be listed :ulb,l -keyword = {dmax} or {line} +keyword = {dmax} or {line} or {alpha_damp} or {discrete_factor} {dmax} value = max max = maximum distance for line search to move (distance units) {line} value = {backtrack} or {quadratic} or {forcezero} - backtrack,quadratic,forcezero = style of linesearch to use :pre + backtrack,quadratic,forcezero = style of linesearch to use + {alpha_damp} value = damping + damping = fictitious Gilbert damping for spin minimization (adim) + {discrete_factor} value = factor + factor = discretization factor for adaptive spin timestep (adim) :pre :ule [Examples:] @@ -65,6 +69,17 @@ difference of two large values (energy before and energy after) and that difference may be smaller than machine epsilon even if atoms could move in the gradient direction to reduce forces further. +Keywords {alpha_damp} and {discrete_factor} only make sense when +a "min_spin"_min_spin.html command is declared. +Keyword {alpha_damp} defines an analog of a magnetic Gilbert +damping. It defines a relaxation rate toward an equilibrium for +a given magnetic system. +Keyword {discrete_factor} defines a discretization factor for the +adaptive timestep used in the {spin} minimization. +See "min_spin"_min_spin.html for more information about those +quantities. +Default values are {alpha_damp} = 1.0 and {discrete_factor} = 10.0. + [Restrictions:] none [Related commands:] diff --git a/doc/src/min_spin.txt b/doc/src/min_spin.txt new file mode 100644 index 0000000000..890e324aca --- /dev/null +++ b/doc/src/min_spin.txt @@ -0,0 +1,65 @@ +"LAMMPS WWW Page"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) +:line + +min_style spin command :h3 + +[Syntax:] + +min_style spin :pre + +[Examples:] + +min_style spin :pre + +[Description:] + +Apply a minimization algorithm to use when a "minimize"_minimize.html +command is performed. + +Style {spin} defines a damped spin dynamics with an adaptive +timestep, according to: + +:c,image(Eqs/min_spin_damping.jpg) + +with lambda a damping coefficient (similar to a Gilbert +damping). +Lambda can be defined by setting the {alpha_damp} keyword with the +"min_modify"_min_modify.html command. + +The minimization procedure solves this equation using an +adaptive timestep. The value of this timestep is defined +by the largest precession frequency that has to be solved in the +system: + +:c,image(Eqs/min_spin_timestep.jpg) + +with {|omega|_{max}} the norm of the largest precession frequency +in the system (across all processes, and across all replicas if a +spin/neb calculation is performed). + +Kappa defines a discretization factor {discrete_factor} for the +definition of this timestep. +{discrete_factor} can be defined with the "min_modify"_min_modify.html +command. + +NOTE: The {spin} style replaces the force tolerance by a torque +tolerance. See "minimize"_minimize.html for more explanation. + +[Restrictions:] + +This minimization procedure is only applied to spin degrees of +freedom for a frozen lattice configuration. + +[Related commands:] + +"min_style"_min_style.html, "minimize"_minimize.html, +"min_modify"_min_modify.html + +[Default:] + +The option defaults are {alpha_damp} = 1.0 and {discrete_factor} = +10.0. diff --git a/doc/src/min_style.txt b/doc/src/min_style.txt index 4948a34864..c46c1492b4 100644 --- a/doc/src/min_style.txt +++ b/doc/src/min_style.txt @@ -11,11 +11,12 @@ min_style command :h3 min_style style :pre -style = {cg} or {hftn} or {sd} or {quickmin} or {fire} :ul +style = {cg} or {hftn} or {sd} or {quickmin} or {fire} or {spin} :ul [Examples:] min_style cg +min_style spin min_style fire :pre [Description:] @@ -61,6 +62,10 @@ the velocity non-parallel to the current force vector. The velocity of each atom is initialized to 0.0 by this style, at the beginning of a minimization. +Style {spin} is a damped spin dynamics with an adaptive +timestep. +See the "min/spin"_min_spin.html doc page for more information. + Either the {quickmin} and {fire} styles are useful in the context of nudged elastic band (NEB) calculations via the "neb"_neb.html command. diff --git a/doc/src/minimize.txt b/doc/src/minimize.txt index 00de86c5f5..ecf1ad0fcf 100644 --- a/doc/src/minimize.txt +++ b/doc/src/minimize.txt @@ -103,6 +103,13 @@ the line search fails because the step distance backtracks to 0.0 the number of outer iterations or timesteps exceeds {maxiter} the number of total force evaluations exceeds {maxeval} :ul +NOTE: the "minimization style"_min_style.html {spin} replaces +the force tolerance {ftol} by a torque tolerance. +The minimization procedure stops if the 2-norm (length) of the +global torque vector (defined as the cross product between the +spins and their precession vectors omega) is less than {ftol}, +or if any of the other criteria are met. + NOTE: You can also use the "fix halt"_fix_halt.html command to specify a general criterion for exiting a minimization, that is a calculation performed on the state of the current system, as defined by an diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt index c5d42403e3..a415ac606b 100644 --- a/doc/src/pair_kim.txt +++ b/doc/src/pair_kim.txt @@ -42,12 +42,9 @@ section of the "Packages details"_Packages_details.html doc page has instructions on how to do this with a simple make command, when building LAMMPS. -See the examples/kim dir for an input script that uses a KIM model (potential) -for Lennard-Jones. Note, for this example input script, the example models -shipped with with kim-api package must be installed. See the "Build -package"_Build_package.html section and the ./lib/kim/README for details -on how to build LAMMSPS with the kim-api and how to install the example models. - +See the examples/kim dir for an input script that uses a KIM model +(potential) for Lennard-Jones. + :line The argument {model} is the name of the KIM model for a specific diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index a2785b89c2..91477986bf 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -252,6 +252,7 @@ Boresch Botero Botu Bouguet +Bourne boxcolor bp bpls @@ -634,6 +635,7 @@ dVx dW dx dy +dylib dyn dyne dynes @@ -1308,6 +1310,7 @@ Kondor konglt Koning Kooser +Korn Koskinen Koster Kosztin @@ -1392,6 +1395,7 @@ libAtoms libawpmd libch libcolvars +libcurl libdir libdl libfftw diff --git a/examples/SPIN/spinmin/in.spinmin.bfo b/examples/SPIN/spinmin/in.spinmin.bfo new file mode 100644 index 0000000000..5ebc9e0afe --- /dev/null +++ b/examples/SPIN/spinmin/in.spinmin.bfo @@ -0,0 +1,55 @@ +# bfo in a 3d periodic box + +units metal +dimension 3 +boundary p p f +atom_style spin + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice sc 3.96 +region box block 0.0 34.0 0.0 34.0 0.0 1.0 +create_box 1 box +create_atoms 1 box + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 1.0 +set group all spin/random 11 2.50 + +pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5 +pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 +#pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 +pair_coeff * * spin/magelec magelec 4.5 0.00109 1.0 1.0 1.0 +pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +#fix 1 all precession/spin zeeman 0.001 0.0 0.0 1.0 anisotropy 0.01 1.0 0.0 0.0 +fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 +fix_modify 1 energy yes + +timestep 0.0001 + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo 50 +thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo_modify format float %20.15g + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +min_style spin +min_modify alpha_damp 1.0 discrete_factor 10.0 +minimize 1.0e-10 0.0 1000 100 diff --git a/examples/SPIN/spinmin/in.spinmin.iron b/examples/SPIN/spinmin/in.spinmin.iron new file mode 100644 index 0000000000..ebbd229b89 --- /dev/null +++ b/examples/SPIN/spinmin/in.spinmin.iron @@ -0,0 +1,55 @@ +# bcc iron in a 3d periodic box + +units metal +dimension 3 +boundary p p f +atom_style spin + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +region box block 0.0 4.0 0.0 4.0 0.0 4.0 +create_box 1 box +create_atoms 1 box + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 +set group all spin/random 31 2.2 +#set group all spin 2.2 1.0 1.0 -1.0 + +pair_style spin/exchange 3.5 +pair_coeff * * exchange 3.4 0.02726 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +#fix 1 all precession/spin zeeman 0.001 0.0 0.0 1.0 anisotropy 0.01 1.0 0.0 0.0 +fix 1 all precession/spin anisotropy 0.0001 0.0 0.0 1.0 +fix_modify 1 energy yes + +timestep 0.0001 + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magx equal c_out_mag[1] +variable magy equal c_out_mag[2] +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo 100 +thermo_style custom step time v_magx v_magz v_magnorm v_tmag etotal +thermo_modify format float %20.15g + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +min_style spin +min_modify alpha_damp 1.0 discrete_factor 10.0 +minimize 1.0e-10 1.0e-10 100000 1000 diff --git a/examples/hyper/global.000000.jpg b/examples/hyper/global.000000.jpg new file mode 100644 index 0000000000..3064ece7f1 Binary files /dev/null and b/examples/hyper/global.000000.jpg differ diff --git a/examples/hyper/global.041000.jpg b/examples/hyper/global.041000.jpg new file mode 100644 index 0000000000..1f5253865e Binary files /dev/null and b/examples/hyper/global.041000.jpg differ diff --git a/examples/hyper/global.045000.jpg b/examples/hyper/global.045000.jpg new file mode 100644 index 0000000000..fb545052cb Binary files /dev/null and b/examples/hyper/global.045000.jpg differ diff --git a/examples/hyper/global.048000.jpg b/examples/hyper/global.048000.jpg new file mode 100644 index 0000000000..506ea4a4bb Binary files /dev/null and b/examples/hyper/global.048000.jpg differ diff --git a/examples/hyper/global.089000.jpg b/examples/hyper/global.089000.jpg new file mode 100644 index 0000000000..094e8b5328 Binary files /dev/null and b/examples/hyper/global.089000.jpg differ diff --git a/examples/hyper/global.10Oct18.000000.jpg b/examples/hyper/global.10Oct18.000000.jpg deleted file mode 100644 index b462983f6a..0000000000 Binary files a/examples/hyper/global.10Oct18.000000.jpg and /dev/null differ diff --git a/examples/hyper/global.10Oct18.003000.jpg b/examples/hyper/global.10Oct18.003000.jpg deleted file mode 100644 index ef28d78d78..0000000000 Binary files a/examples/hyper/global.10Oct18.003000.jpg and /dev/null differ diff --git a/examples/hyper/global.10Oct18.038000.jpg b/examples/hyper/global.10Oct18.038000.jpg deleted file mode 100644 index 444531312b..0000000000 Binary files a/examples/hyper/global.10Oct18.038000.jpg and /dev/null differ diff --git a/examples/hyper/global.10Oct18.059000.jpg b/examples/hyper/global.10Oct18.059000.jpg deleted file mode 100644 index b77a9e3454..0000000000 Binary files a/examples/hyper/global.10Oct18.059000.jpg and /dev/null differ diff --git a/examples/hyper/in.hyper.global b/examples/hyper/in.hyper.global index 22b3b4251b..eba5c7bf89 100644 --- a/examples/hyper/in.hyper.global +++ b/examples/hyper/in.hyper.global @@ -12,6 +12,8 @@ variable cutevent index 1.1 variable steps index 100000 variable nevent index 1000 variable zoom index 1.8 +variable seed index 826626413 +variable tol index 1.0e-15 units metal atom_style atomic @@ -45,7 +47,7 @@ neighbor 0.5 bin neigh_modify every 1 delay 5 check yes fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 858872873 zero yes +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes timestep 0.005 @@ -92,4 +94,4 @@ dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green # run -hyper ${steps} ${nevent} HG event min 1.0e-6 1.0e-6 100 100 dump 1 +hyper ${steps} ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 diff --git a/examples/hyper/in.hyper.local b/examples/hyper/in.hyper.local index ef8ed4d042..cdf478ac38 100644 --- a/examples/hyper/in.hyper.local +++ b/examples/hyper/in.hyper.local @@ -107,6 +107,12 @@ dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 & zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green +# test of histogramming and dump output of bias coeffs + +#fix histo all ave/histo 10 100 1000 0.9 1.1 100 f_HL & +# mode vector kind local file tmp.histo +#dump 2 all local 1000 tmp.local f_HL + # run hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 diff --git a/examples/hyper/local.10Oct18.000000.jpg b/examples/hyper/local.000000.jpg similarity index 100% rename from examples/hyper/local.10Oct18.000000.jpg rename to examples/hyper/local.000000.jpg diff --git a/examples/hyper/local.001200.jpg b/examples/hyper/local.001200.jpg new file mode 100644 index 0000000000..36bc9cd7bc Binary files /dev/null and b/examples/hyper/local.001200.jpg differ diff --git a/examples/hyper/local.10Oct18.000700.jpg b/examples/hyper/local.10Oct18.000700.jpg deleted file mode 100644 index e1e61dd6aa..0000000000 Binary files a/examples/hyper/local.10Oct18.000700.jpg and /dev/null differ diff --git a/examples/hyper/local.10Oct18.000800.jpg b/examples/hyper/local.10Oct18.000800.jpg deleted file mode 100644 index a1e2fbc66a..0000000000 Binary files a/examples/hyper/local.10Oct18.000800.jpg and /dev/null differ diff --git a/examples/hyper/local.10Oct18.001100.jpg b/examples/hyper/local.10Oct18.001100.jpg deleted file mode 100644 index dea7fd4eaf..0000000000 Binary files a/examples/hyper/local.10Oct18.001100.jpg and /dev/null differ diff --git a/examples/hyper/log.10Oct18.hyper.global.g++.4 b/examples/hyper/log.10Oct18.hyper.global.g++.4 deleted file mode 100644 index de08541583..0000000000 --- a/examples/hyper/log.10Oct18.hyper.global.g++.4 +++ /dev/null @@ -1,1243 +0,0 @@ -LAMMPS (10 Oct 2018) -# 3d EAM surface for global HD - -# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 -# hop event on (100) surface is same distance -# exchange event is 2 atoms moving same distance - -variable Tequil index 500.0 -variable Vmax index 0.5 -variable qfactor index 0.3 -variable cutbond index 3.2 -variable cutevent index 1.1 -variable steps index 100000 -variable nevent index 1000 -variable zoom index 1.8 - -units metal -atom_style atomic -atom_modify map array -boundary p p p - -lattice fcc 3.92 -Lattice spacing in x,y,z = 3.92 3.92 3.92 -region box block 0 6 0 6 0 4 -create_box 3 box -Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) - 2 by 2 by 1 MPI processor grid -create_atoms 1 box -Created 576 atoms - Time spent = 0.000782013 secs - -mass * 1.0 - -change_box all z final -0.1 5.0 boundary p p f - orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) -create_atoms 2 single 3.5 3.5 4 -Created 1 atoms - Time spent = 4.69685e-05 secs - -# define frozen substrate and mobile atoms - -group adatom type 2 -1 atoms in group adatom -region base block INF INF INF INF 0 1.8 -set region base type 3 - 288 settings made for type -group base type 3 -288 atoms in group base -group mobile type 1 2 -289 atoms in group mobile - -# pair style - -pair_style eam/alloy -pair_coeff * * ptvoterlammps.eam Pt Pt Pt - -neighbor 0.5 bin -neigh_modify every 1 delay 5 check yes - -fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 858872873 zero yes -fix 2 mobile langevin 500.0 ${Tequil} 1.0 858872873 zero yes -fix 2 mobile langevin 500.0 500.0 1.0 858872873 zero yes - -timestep 0.005 - -compute tmobile mobile temp - -thermo 100 -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488) - -# thermal equilibration - -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 6.07583 - binsize = 3.03792, bins = 8 8 7 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair eam/alloy, 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.327 | 3.327 | 3.327 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 -3213.9136 0 -3213.9136 -51843.125 - 100 211.06271 -3209.3285 0 -3201.4713 -27323.825 - 200 320.80707 -3205.3715 0 -3193.4289 -39370.402 - 300 393.66139 -3202.607 0 -3187.9522 -32163.403 - 400 401.11987 -3200.2795 0 -3185.347 -35961.543 - 500 472.27798 -3200.7267 0 -3183.1452 -33044.974 - 600 485.16253 -3199.818 0 -3181.7569 -34242.615 - 700 464.85129 -3199.865 0 -3182.56 -35327.179 - 800 518.91236 -3199.4098 0 -3180.0923 -32088.2 - 900 502.76061 -3199.3972 0 -3180.681 -36944.263 - 1000 522.64479 -3200.0627 0 -3180.6063 -32801.856 -Loop time of 0.333434 on 4 procs for 1000 steps with 577 atoms - -Performance: 1295.607 ns/day, 0.019 hours/ns, 2999.091 timesteps/s -99.5% 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.25639 | 0.2636 | 0.2708 | 1.0 | 79.06 -Neigh | 0.017381 | 0.017991 | 0.018988 | 0.4 | 5.40 -Comm | 0.026086 | 0.034315 | 0.042505 | 3.2 | 10.29 -Output | 0.00022078 | 0.00023323 | 0.00026107 | 0.0 | 0.07 -Modify | 0.013295 | 0.013709 | 0.014107 | 0.2 | 4.11 -Other | | 0.003584 | | | 1.07 - -Nlocal: 144.25 ave 149 max 139 min -Histogram: 1 0 0 1 0 0 0 0 1 1 -Nghost: 530.5 ave 536 max 526 min -Histogram: 1 1 0 0 0 0 0 1 0 1 -Neighs: 3471.75 ave 3626 max 3292 min -Histogram: 1 0 0 0 1 0 1 0 0 1 - -Total # of neighbors = 13887 -Ave neighs/atom = 24.0676 -Neighbor list builds = 88 -Dangerous builds = 0 -reset_timestep 0 - -# pin base so will not move during quenches - -fix freeze base setforce 0.0 0.0 0.0 - -# event detection - -compute event all event/displace ${cutevent} -compute event all event/displace 1.1 - -# hyper/global - -fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 ${qfactor} ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 0.3 ${Vmax} ${Tequil} -fix HG mobile hyper/global 3.2 0.3 0.5 ${Tequil} -fix HG mobile hyper/global 3.2 0.3 0.5 500.0 - -# thermo output - -thermo_style custom step temp pe f_HG f_HG[*] -WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:705) - -thermo_modify lost ignore -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488) - -thermo ${nevent} -thermo 1000 - -# dump output options - -region substrate block INF INF INF INF 1.8 3.8 -region adatoms block INF INF INF INF 3.8 INF -variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) - -dump 1 all image 1000000 global.*.jpg v_acolor type zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump 1 all image 1000000 global.*.jpg v_acolor type zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green - -# run - -hyper ${steps} ${nevent} HG event min 1.0e-6 1.0e-6 100 100 dump 1 -hyper 100000 ${nevent} HG event min 1.0e-6 1.0e-6 100 100 dump 1 -hyper 100000 1000 HG event min 1.0e-6 1.0e-6 100 100 dump 1 -WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:133) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 6.07583 - binsize = 3.03792, bins = 8 8 7 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix hyper/global, occasional, copy from (1) - attributes: half, newton on - pair build: copy - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 6.015 | 6.015 | 6.015 Mbytes -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 0 522.64479 -3200.0627 0 0 0 0 0 0 0 0 0 0 0 0 - 13 522.64479 -3217.9151 0 0 0 0 0 0 0 0 0 0 0 0 -Loop time of 0.0106812 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 0 522.64479 -3200.0627 0.39402008 9365.7631 0.13811729 429 426 6.0069324 0 0.36151295 3.1652084 0 0 0 - 1000 512.35059 -3198.5556 0.32845525 2044.9347 0.17572153 257 259 6.0069324 0.137 0.77425934 3.8913771 5302.7599 0 0 -Loop time of 0.314234 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 1000 512.35059 -3198.5556 0.32845525 2044.9347 0.17572153 257 259 6.0069324 0.137 0.77425934 3.8913771 5302.7599 0 0 - 1014 512.35059 -3217.9161 0.32845525 2044.9347 0.17572153 257 259 6.0069324 0.13510848 0.77425934 3.8913771 5302.7599 0 0 -Loop time of 0.0071606 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 1000 512.35059 -3198.5556 0.32845525 2044.9347 0.17572153 257 259 6.0069324 0.137 0.77425934 3.8913771 5302.7599 0 0 - 2000 502.60215 -3197.7892 0.01351505 1.3684394 0.29591771 116 127 6.0069324 0.103 0.77425934 3.8913771 11603.458 0 0 -Loop time of 0.33185 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 2000 502.60215 -3197.7892 0.01351505 1.3684394 0.29591771 116 127 6.0069324 0.103 0.77425934 3.8913771 11603.458 0 0 - 2015 502.60215 -3217.9155 0.01351505 1.3684394 0.29591771 116 127 6.0069324 0.10223325 0.77425934 3.8913771 11603.458 0 0 -Loop time of 0.00889879 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 2000 502.60215 -3197.7892 0.01351505 1.3684394 0.29591771 116 127 6.0069324 0.103 0.77425934 3.8913771 11603.458 0 0 - 3000 481.01481 -3199.1324 0 1 1.0289113 542 544 6.0069324 0.212 2.8308749 5.5814852 12488.613 0 0 -Loop time of 0.334598 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 3000 481.01481 -3199.1324 0 1 1.0289113 542 544 6.0069324 0.212 2.8308749 5.5814852 12488.613 0 0 - 3014 481.01481 -3217.916 0 1 1.0289113 542 544 6.0069324 0.21101526 2.8308749 5.5814852 12488.613 0 0 -Loop time of 0.0103227 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 3000 481.01481 -3199.1324 0.25134819 341.56656 0.21155927 277 539 6.0069324 0.212 2.8308749 5.5814852 12488.613 1 2 - 4000 474.51721 -3197.9082 0.26384891 456.53799 0.20617274 361 83 6.0069324 0.18325 2.8308749 5.5814852 22776.39 1 2 -Loop time of 0.302547 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 4000 474.51721 -3197.9082 0.26384891 456.53799 0.20617274 361 83 6.0069324 0.18325 2.8308749 5.5814852 22776.39 1 2 - 4014 474.51721 -3217.9172 0.26384891 456.53799 0.20617274 361 83 6.0069324 0.18261086 2.8308749 5.5814852 22776.39 1 2 -Loop time of 0.00868511 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 4000 474.51721 -3197.9082 0.26384891 456.53799 0.20617274 361 83 6.0069324 0.18325 2.8308749 5.5814852 22776.39 1 2 - 5000 478.08772 -3199.6792 0.043886568 2.7692147 0.2865317 275 577 6.0069324 0.1586 2.8308749 5.5814852 35085.309 1 2 -Loop time of 0.300419 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 5000 478.08772 -3199.6792 0.043886568 2.7692147 0.2865317 275 577 6.0069324 0.1586 2.8308749 5.5814852 35085.309 1 2 - 5015 478.08772 -3217.9131 0.043886568 2.7692147 0.2865317 275 577 6.0069324 0.15812562 2.8308749 5.5814852 35085.309 1 2 -Loop time of 0.00705171 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 5000 478.08772 -3199.6792 0.043886568 2.7692147 0.2865317 275 577 6.0069324 0.1586 2.8308749 5.5814852 35085.309 1 2 - 6000 458.77612 -3197.8588 0.27710376 620.98321 0.20030308 511 546 6.0069324 0.171 2.8308749 5.5814852 38747.284 1 2 -Loop time of 0.287999 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 6000 458.77612 -3197.8588 0.27710376 620.98321 0.20030308 511 546 6.0069324 0.171 2.8308749 5.5814852 38747.284 1 2 - 6015 458.77612 -3217.9165 0.27710376 620.98321 0.20030308 511 546 6.0069324 0.17057357 2.8308749 5.5814852 38747.284 1 2 -Loop time of 0.00888014 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 6000 458.77612 -3197.8588 0.27710376 620.98321 0.20030308 511 546 6.0069324 0.171 2.8308749 5.5814852 38747.284 1 2 - 7000 476.88452 -3198.3269 0.0828164 6.8352063 0.27403111 264 275 6.0069324 0.17714286 2.8308749 5.5814852 45612.389 1 2 -Loop time of 0.29168 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 7000 476.88452 -3198.3269 0.0828164 6.8352063 0.27403111 264 275 6.0069324 0.17714286 2.8308749 5.5814852 45612.389 1 2 - 7015 476.88452 -3217.9146 0.0828164 6.8352063 0.27403111 264 275 6.0069324 0.17676408 2.8308749 5.5814852 45612.389 1 2 -Loop time of 0.00871038 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 7000 476.88452 -3198.3269 0.0828164 6.8352063 0.27403111 264 275 6.0069324 0.17714286 2.8308749 5.5814852 45612.389 1 2 - 8000 521.60584 -3199.0138 0.22715857 194.82964 0.22161105 419 124 6.0069324 0.191875 2.8308749 5.5814852 46748.053 1 2 -Loop time of 0.284021 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 8000 521.60584 -3199.0138 0.22715857 194.82964 0.22161105 419 124 6.0069324 0.191875 2.8308749 5.5814852 46748.053 1 2 - 8015 521.60584 -3217.9163 0.22715857 194.82964 0.22161105 419 124 6.0069324 0.19151591 2.8308749 5.5814852 46748.053 1 2 -Loop time of 0.00697637 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 8000 521.60584 -3199.0138 0.22715857 194.82964 0.22161105 419 124 6.0069324 0.191875 2.8308749 5.5814852 46748.053 1 2 - 9000 496.87475 -3198.4928 0.13677449 23.912479 0.25569629 264 275 6.0069324 0.18388889 2.8308749 5.5814852 49596.596 1 2 -Loop time of 0.238759 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 9000 496.87475 -3198.4928 0.13677449 23.912479 0.25569629 264 275 6.0069324 0.18388889 2.8308749 5.5814852 49596.596 1 2 - 9014 496.87475 -3217.9149 0.13677449 23.912479 0.25569629 264 275 6.0069324 0.18360328 2.8308749 5.5814852 49596.596 1 2 -Loop time of 0.00677681 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 9000 496.87475 -3198.4928 0.13677449 23.912479 0.25569629 264 275 6.0069324 0.18388889 2.8308749 5.5814852 49596.596 1 2 - 10000 478.6826 -3199.6673 0.37406677 5894.1727 0.1505589 127 132 6.0069324 0.1982 2.8308749 5.5814852 54170.476 1 2 -Loop time of 0.23881 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 10000 478.6826 -3199.6673 0.37406677 5894.1727 0.1505589 127 132 6.0069324 0.1982 2.8308749 5.5814852 54170.476 1 2 - 10013 478.6826 -3217.9144 0.37406677 5894.1727 0.1505589 127 132 6.0069324 0.19794267 2.8308749 5.5814852 54170.476 1 2 -Loop time of 0.00627023 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 10000 478.6826 -3199.6673 0.37406677 5894.1727 0.1505589 127 132 6.0069324 0.1982 2.8308749 5.5814852 54170.476 1 2 - 11000 518.40222 -3199.3332 0.34753231 3183.9595 0.16566286 383 418 6.0069324 0.18809091 2.8308749 5.5814852 58304.709 1 2 -Loop time of 0.238288 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 11000 518.40222 -3199.3332 0.34753231 3183.9595 0.16566286 383 418 6.0069324 0.18809091 2.8308749 5.5814852 58304.709 1 2 - 11013 518.40222 -3217.915 0.34753231 3183.9595 0.16566286 383 418 6.0069324 0.18786888 2.8308749 5.5814852 58304.709 1 2 -Loop time of 0.00599569 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 11000 518.40222 -3199.3332 0.34753231 3183.9595 0.16566286 383 418 6.0069324 0.18809091 2.8308749 5.5814852 58304.709 1 2 - 12000 552.07348 -3197.6675 0.0063435549 1.1586177 0.29809086 144 143 6.0069324 0.18016667 2.8308749 5.5814852 66990.451 1 2 -Loop time of 0.23842 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 12000 552.07348 -3197.6675 0.0063435549 1.1586177 0.29809086 144 143 6.0069324 0.18016667 2.8308749 5.5814852 66990.451 1 2 - 12013 552.07348 -3217.9165 0.0063435549 1.1586177 0.29809086 144 143 6.0069324 0.1799717 2.8308749 5.5814852 66990.451 1 2 -Loop time of 0.00602174 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 12000 552.07348 -3197.6675 0.0063435549 1.1586177 0.29809086 144 143 6.0069324 0.18016667 2.8308749 5.5814852 66990.451 1 2 - 13000 471.13412 -3198.1314 0.30918747 1307.5821 0.18532743 116 123 6.0069324 0.17338462 2.8308749 5.5814852 74345.114 1 2 -Loop time of 0.237671 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 13000 471.13412 -3198.1314 0.30918747 1307.5821 0.18532743 116 123 6.0069324 0.17338462 2.8308749 5.5814852 74345.114 1 2 - 13014 471.13412 -3217.9158 0.30918747 1307.5821 0.18532743 116 123 6.0069324 0.17319809 2.8308749 5.5814852 74345.114 1 2 -Loop time of 0.00647223 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 13000 471.13412 -3198.1314 0.30918747 1307.5821 0.18532743 116 123 6.0069324 0.17338462 2.8308749 5.5814852 74345.114 1 2 - 14000 470.81692 -3198.8871 0.10763953 12.160669 0.26575343 275 577 6.0069324 0.18235714 2.8308749 5.5814852 76252.748 1 2 -Loop time of 0.238789 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 14000 470.81692 -3198.8871 0.10763953 12.160669 0.26575343 275 577 6.0069324 0.18235714 2.8308749 5.5814852 76252.748 1 2 - 14015 470.81692 -3217.9147 0.10763953 12.160669 0.26575343 275 577 6.0069324 0.18216197 2.8308749 5.5814852 76252.748 1 2 -Loop time of 0.00651169 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 14000 470.81692 -3198.8871 0.10763953 12.160669 0.26575343 275 577 6.0069324 0.18235714 2.8308749 5.5814852 76252.748 1 2 - 15000 473.2435 -3199.0907 0.20712247 122.37713 0.22960391 569 570 6.0069324 0.18553333 2.8308749 5.5814852 81659.641 1 2 -Loop time of 0.23755 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 15000 473.2435 -3199.0907 0.20712247 122.37713 0.22960391 569 570 6.0069324 0.18553333 2.8308749 5.5814852 81659.641 1 2 - 15014 473.2435 -3217.9161 0.20712247 122.37713 0.22960391 569 570 6.0069324 0.18536033 2.8308749 5.5814852 81659.641 1 2 -Loop time of 0.00644851 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 15000 473.2435 -3199.0907 0.20712247 122.37713 0.22960391 569 570 6.0069324 0.18553333 2.8308749 5.5814852 81659.641 1 2 - 16000 504.33627 -3199.1713 0.036898146 2.3545967 0.28871843 264 275 6.0069324 0.199875 2.8308749 5.5814852 82224.366 1 2 -Loop time of 0.240195 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 16000 504.33627 -3199.1713 0.036898146 2.3545967 0.28871843 264 275 6.0069324 0.199875 2.8308749 5.5814852 82224.366 1 2 - 16015 504.33627 -3217.9137 0.036898146 2.3545967 0.28871843 264 275 6.0069324 0.19968779 2.8308749 5.5814852 82224.366 1 2 -Loop time of 0.00684911 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 16000 504.33627 -3199.1713 0.036898146 2.3545967 0.28871843 264 275 6.0069324 0.199875 2.8308749 5.5814852 82224.366 1 2 - 17000 497.60607 -3198.212 0.0067178767 1.1687272 0.29797782 264 275 6.0069324 0.217 2.8308749 5.5814852 82242.51 1 2 -Loop time of 0.240567 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 17000 497.60607 -3198.212 0.0067178767 1.1687272 0.29797782 264 275 6.0069324 0.217 2.8308749 5.5814852 82242.51 1 2 - 17016 497.60607 -3217.9161 0.0067178767 1.1687272 0.29797782 264 275 6.0069324 0.21679596 2.8308749 5.5814852 82242.51 1 2 -Loop time of 0.00708336 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 17000 497.60607 -3198.212 0.0067178767 1.1687272 0.29797782 264 275 6.0069324 0.217 2.8308749 5.5814852 82242.51 1 2 - 18000 523.92168 -3199.831 0.21046671 132.25396 0.22828927 264 275 6.0069324 0.22444444 2.8308749 5.5814852 82304.143 1 2 -Loop time of 0.240636 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 18000 523.92168 -3199.831 0.21046671 132.25396 0.22828927 264 275 6.0069324 0.22444444 2.8308749 5.5814852 82304.143 1 2 - 18014 523.92168 -3217.9153 0.21046671 132.25396 0.22828927 264 275 6.0069324 0.22427001 2.8308749 5.5814852 82304.143 1 2 -Loop time of 0.00646216 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 18000 523.92168 -3199.831 0.21046671 132.25396 0.22828927 264 275 6.0069324 0.22444444 2.8308749 5.5814852 82304.143 1 2 - 19000 538.76557 -3198.7203 0.036295998 2.3219194 0.28890608 397 400 6.0069324 0.228 2.8308749 5.5814852 83487.232 1 2 -Loop time of 0.239259 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 19000 538.76557 -3198.7203 0.036295998 2.3219194 0.28890608 397 400 6.0069324 0.228 2.8308749 5.5814852 83487.232 1 2 - 19014 538.76557 -3217.9141 0.036295998 2.3219194 0.28890608 397 400 6.0069324 0.22783212 2.8308749 5.5814852 83487.232 1 2 -Loop time of 0.0061307 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 19000 538.76557 -3198.7203 0.036295998 2.3219194 0.28890608 397 400 6.0069324 0.228 2.8308749 5.5814852 83487.232 1 2 - 20000 483.9598 -3198.1166 0.13750177 24.319538 0.25544017 400 131 6.0069324 0.2187 2.8308749 5.5814852 91177.618 1 2 -Loop time of 0.241751 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 20000 483.9598 -3198.1166 0.13750177 24.319538 0.25544017 400 131 6.0069324 0.2187 2.8308749 5.5814852 91177.618 1 2 - 20014 483.9598 -3217.9137 0.13750177 24.319538 0.25544017 400 131 6.0069324 0.21854702 2.8308749 5.5814852 91177.618 1 2 -Loop time of 0.00646776 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 20000 483.9598 -3198.1166 0.13750177 24.319538 0.25544017 400 131 6.0069324 0.2187 2.8308749 5.5814852 91177.618 1 2 - 21000 518.44073 -3199.7932 0.30241436 1117.3756 0.18858795 553 577 6.0069324 0.21271429 2.8308749 5.5814852 99740.17 1 2 -Loop time of 0.239403 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 21000 518.44073 -3199.7932 0.30241436 1117.3756 0.18858795 553 577 6.0069324 0.21271429 2.8308749 5.5814852 99740.17 1 2 - 21014 518.44073 -3217.9126 0.30241436 1117.3756 0.18858795 553 577 6.0069324 0.21257257 2.8308749 5.5814852 99740.17 1 2 -Loop time of 0.00643963 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 21000 518.44073 -3199.7932 0.30241436 1117.3756 0.18858795 553 577 6.0069324 0.21271429 2.8308749 5.5814852 99740.17 1 2 - 22000 518.95823 -3198.6693 0 1 0.4887755 262 263 6.0069324 0.22327273 2.8308749 5.5814852 103304.87 1 2 -Loop time of 0.241227 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 22000 518.95823 -3198.6693 0 1 0.4887755 262 263 6.0069324 0.22327273 2.8308749 5.5814852 103304.87 1 2 - 22033 518.95823 -3217.916 0 1 0.4887755 262 263 6.0069324 0.22293832 2.8308749 5.5814852 103304.87 1 2 -Loop time of 0.015579 on 4 procs for 33 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 22000 518.95823 -3198.6693 0 1 0.4887755 262 263 6.0069324 0.22327273 2.8308749 5.5814852 103304.87 1 2 - 23000 534.01428 -3197.6551 0.10264812 10.830446 0.26743848 136 431 6.0069324 0.22469565 2.8308749 5.5814852 108159.84 1 2 -Loop time of 0.240257 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 23000 534.01428 -3197.6551 0.10264812 10.830446 0.26743848 136 431 6.0069324 0.22469565 2.8308749 5.5814852 108159.84 1 2 - 23015 534.01428 -3217.9147 0.10264812 10.830446 0.26743848 136 431 6.0069324 0.22454921 2.8308749 5.5814852 108159.84 1 2 -Loop time of 0.0067718 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 23000 534.01428 -3197.6551 0.10264812 10.830446 0.26743848 136 431 6.0069324 0.22469565 2.8308749 5.5814852 108159.84 1 2 - 24000 502.61915 -3198.9796 0.22019457 165.75289 0.22442143 132 143 6.0069324 0.21883333 2.8308749 5.5814852 115124.63 1 2 -Loop time of 0.241014 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 24000 502.61915 -3198.9796 0.22019457 165.75289 0.22442143 132 143 6.0069324 0.21883333 2.8308749 5.5814852 115124.63 1 2 - 24014 502.61915 -3217.9149 0.22019457 165.75289 0.22442143 132 143 6.0069324 0.21870575 2.8308749 5.5814852 115124.63 1 2 -Loop time of 0.006706 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 24000 502.61915 -3198.9796 0.22019457 165.75289 0.22442143 132 143 6.0069324 0.21883333 2.8308749 5.5814852 115124.63 1 2 - 25000 510.27664 -3200.7431 0.34609419 3079.4414 0.16644232 120 119 6.0069324 0.21512 2.8308749 5.5814852 118042.99 1 2 -Loop time of 0.239452 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 25000 510.27664 -3200.7431 0.34609419 3079.4414 0.16644232 120 119 6.0069324 0.21512 2.8308749 5.5814852 118042.99 1 2 - 25013 510.27664 -3217.9127 0.34609419 3079.4414 0.16644232 120 119 6.0069324 0.2150082 2.8308749 5.5814852 118042.99 1 2 -Loop time of 0.00622821 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 25000 510.27664 -3200.7431 0.34609419 3079.4414 0.16644232 120 119 6.0069324 0.21512 2.8308749 5.5814852 118042.99 1 2 - 26000 511.79717 -3198.2999 0.19492582 92.206933 0.23433598 263 577 6.0069324 0.21273077 2.8308749 5.5814852 124902.88 1 2 -Loop time of 0.271219 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 26000 511.79717 -3198.2999 0.19492582 92.206933 0.23433598 263 577 6.0069324 0.21273077 2.8308749 5.5814852 124902.88 1 2 - 26015 511.79717 -3217.9147 0.19492582 92.206933 0.23433598 263 577 6.0069324 0.21260811 2.8308749 5.5814852 124902.88 1 2 -Loop time of 0.0105773 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 26000 511.79717 -3198.2999 0.19492582 92.206933 0.23433598 263 577 6.0069324 0.21273077 2.8308749 5.5814852 124902.88 1 2 - 27000 487.73368 -3197.4904 0.19560731 93.67693 0.2340741 401 572 6.0069324 0.20814815 2.8308749 5.5814852 130713.79 1 2 -Loop time of 0.293879 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 27000 487.73368 -3197.4904 0.19560731 93.67693 0.2340741 401 572 6.0069324 0.20814815 2.8308749 5.5814852 130713.79 1 2 - 27015 487.73368 -3217.9161 0.19560731 93.67693 0.2340741 401 572 6.0069324 0.20803257 2.8308749 5.5814852 130713.79 1 2 -Loop time of 0.00895333 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 27000 487.73368 -3197.4904 0.19560731 93.67693 0.2340741 401 572 6.0069324 0.20814815 2.8308749 5.5814852 130713.79 1 2 - 28000 468.95408 -3198.4177 0.3457758 3056.7694 0.1666144 549 515 6.0069324 0.204 2.8308749 5.5814852 135376.2 1 2 -Loop time of 0.286141 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 28000 468.95408 -3198.4177 0.3457758 3056.7694 0.1666144 549 515 6.0069324 0.204 2.8308749 5.5814852 135376.2 1 2 - 28014 468.95408 -3217.9167 0.3457758 3056.7694 0.1666144 549 515 6.0069324 0.20389805 2.8308749 5.5814852 135376.2 1 2 -Loop time of 0.00648469 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 28000 468.95408 -3198.4177 0.3457758 3056.7694 0.1666144 549 515 6.0069324 0.204 2.8308749 5.5814852 135376.2 1 2 - 29000 518.03534 -3198.1622 0.029706116 1.9926184 0.29095171 267 260 6.0069324 0.20031034 2.8308749 5.5814852 143604.35 1 2 -Loop time of 0.24066 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 29000 518.03534 -3198.1622 0.029706116 1.9926184 0.29095171 267 260 6.0069324 0.20031034 2.8308749 5.5814852 143604.35 1 2 - 29014 518.03534 -3217.9137 0.029706116 1.9926184 0.29095171 267 260 6.0069324 0.20021369 2.8308749 5.5814852 143604.35 1 2 -Loop time of 0.0063417 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 29000 518.03534 -3198.1622 0.029706116 1.9926184 0.29095171 267 260 6.0069324 0.20031034 2.8308749 5.5814852 143604.35 1 2 - 30000 535.78782 -3198.3125 0.33831746 2570.9054 0.17059559 122 124 6.0069324 0.19596667 2.8308749 5.5814852 150106.09 1 2 -Loop time of 0.259515 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 30000 535.78782 -3198.3125 0.33831746 2570.9054 0.17059559 122 124 6.0069324 0.19596667 2.8308749 5.5814852 150106.09 1 2 - 30014 535.78782 -3217.9119 0.33831746 2570.9054 0.17059559 122 124 6.0069324 0.19587526 2.8308749 5.5814852 150106.09 1 2 -Loop time of 0.0123347 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 30000 535.78782 -3198.3125 0.33831746 2570.9054 0.17059559 122 124 6.0069324 0.19596667 2.8308749 5.5814852 150106.09 1 2 - 31000 547.06872 -3198.3217 0.21707776 154.18603 0.22566791 275 577 6.0069324 0.19987097 2.8308749 5.5814852 151076.53 1 2 -Loop time of 0.321976 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 31000 547.06872 -3198.3217 0.21707776 154.18603 0.22566791 275 577 6.0069324 0.19987097 2.8308749 5.5814852 151076.53 1 2 - 31014 547.06872 -3217.9165 0.21707776 154.18603 0.22566791 275 577 6.0069324 0.19978074 2.8308749 5.5814852 151076.53 1 2 -Loop time of 0.00811768 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 31000 547.06872 -3198.3217 0.21707776 154.18603 0.22566791 275 577 6.0069324 0.19987097 2.8308749 5.5814852 151076.53 1 2 - 32000 469.53603 -3199.325 0.35776457 4037.4217 0.16000743 563 268 6.0069324 0.20171875 2.8308749 5.5814852 152526.06 1 2 -Loop time of 0.290834 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 32000 469.53603 -3199.325 0.35776457 4037.4217 0.16000743 563 268 6.0069324 0.20171875 2.8308749 5.5814852 152526.06 1 2 - 32013 469.53603 -3217.9147 0.35776457 4037.4217 0.16000743 563 268 6.0069324 0.20163684 2.8308749 5.5814852 152526.06 1 2 -Loop time of 0.00746775 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 32000 469.53603 -3199.325 0.35776457 4037.4217 0.16000743 563 268 6.0069324 0.20171875 2.8308749 5.5814852 152526.06 1 2 - 33000 491.33889 -3199.1986 0.32620326 1940.7983 0.17687118 258 228 6.0069324 0.19833333 2.8308749 5.5814852 156385.66 1 2 -Loop time of 0.243351 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 33000 491.33889 -3199.1986 0.32620326 1940.7983 0.17687118 258 228 6.0069324 0.19833333 2.8308749 5.5814852 156385.66 1 2 - 33014 491.33889 -3217.9155 0.32620326 1940.7983 0.17687118 258 228 6.0069324 0.19824923 2.8308749 5.5814852 156385.66 1 2 -Loop time of 0.00658584 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 33000 491.33889 -3199.1986 0.32620326 1940.7983 0.17687118 258 228 6.0069324 0.19833333 2.8308749 5.5814852 156385.66 1 2 - 34000 503.19322 -3198.8767 0.050333006 3.2161315 0.28449966 275 577 6.0069324 0.19794118 2.8308749 5.5814852 161964.99 1 2 -Loop time of 0.238415 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 34000 503.19322 -3198.8767 0.050333006 3.2161315 0.28449966 275 577 6.0069324 0.19794118 2.8308749 5.5814852 161964.99 1 2 - 34016 503.19322 -3217.9158 0.050333006 3.2161315 0.28449966 275 577 6.0069324 0.19784807 2.8308749 5.5814852 161964.99 1 2 -Loop time of 0.00771642 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 34000 503.19322 -3198.8767 0.050333006 3.2161315 0.28449966 275 577 6.0069324 0.19794118 2.8308749 5.5814852 161964.99 1 2 - 35000 513.68037 -3197.8169 0.26004762 417.98593 0.20782548 264 275 6.0069324 0.199 2.8308749 5.5814852 164995.25 1 2 -Loop time of 0.240164 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 35000 513.68037 -3197.8169 0.26004762 417.98593 0.20782548 264 275 6.0069324 0.199 2.8308749 5.5814852 164995.25 1 2 - 35015 513.68037 -3217.9147 0.26004762 417.98593 0.20782548 264 275 6.0069324 0.19891475 2.8308749 5.5814852 164995.25 1 2 -Loop time of 0.00711012 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 35000 513.68037 -3197.8169 0.26004762 417.98593 0.20782548 264 275 6.0069324 0.199 2.8308749 5.5814852 164995.25 1 2 - 36000 508.23462 -3199.0337 0.009260286 1.2397653 0.29720893 563 564 6.0069324 0.20069444 2.8308749 5.5814852 167465.14 1 2 -Loop time of 0.240289 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 36000 508.23462 -3199.0337 0.009260286 1.2397653 0.29720893 563 564 6.0069324 0.20069444 2.8308749 5.5814852 167465.14 1 2 - 36014 508.23462 -3217.9163 0.009260286 1.2397653 0.29720893 563 564 6.0069324 0.20061643 2.8308749 5.5814852 167465.14 1 2 -Loop time of 0.00642586 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 36000 508.23462 -3199.0337 0.009260286 1.2397653 0.29720893 563 564 6.0069324 0.20069444 2.8308749 5.5814852 167465.14 1 2 - 37000 500.95069 -3199.7129 0.024475083 1.764809 0.29256535 275 577 6.0069324 0.19783784 2.8308749 5.5814852 169290.01 1 2 -Loop time of 0.239462 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 37000 500.95069 -3199.7129 0.024475083 1.764809 0.29256535 275 577 6.0069324 0.19783784 2.8308749 5.5814852 169290.01 1 2 - 37015 500.95069 -3217.916 0.024475083 1.764809 0.29256535 275 577 6.0069324 0.19775767 2.8308749 5.5814852 169290.01 1 2 -Loop time of 0.00713468 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 37000 500.95069 -3199.7129 0.024475083 1.764809 0.29256535 275 577 6.0069324 0.19783784 2.8308749 5.5814852 169290.01 1 2 - 38000 495.41803 -3199.6385 0 1 1.0152866 262 275 6.0069324 0.21794737 2.8308749 5.5814852 169297.9 1 2 -Loop time of 0.239667 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 38000 495.41803 -3199.6385 0 1 1.0152866 262 275 6.0069324 0.21794737 2.8308749 5.5814852 169297.9 1 2 - 38013 495.41803 -3217.9157 0 1 1.0152866 262 275 6.0069324 0.21787283 2.8308749 5.5814852 169297.9 1 2 -Loop time of 0.00627661 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 38000 495.41803 -3199.6385 0.39298625 9143.7129 0.13878932 430 431 6.0069324 0.21794737 2.8308749 5.5814852 169297.9 2 4 - 39000 469.05202 -3196.0515 0.10638057 11.810485 0.26617945 408 415 6.0069324 0.21410256 2.8308749 5.5814852 175842.05 2 4 -Loop time of 0.238329 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 39000 469.05202 -3196.0515 0.10638057 11.810485 0.26617945 408 415 6.0069324 0.21410256 2.8308749 5.5814852 175842.05 2 4 - 39015 469.05202 -3217.917 0.10638057 11.810485 0.26617945 408 415 6.0069324 0.21402025 2.8308749 5.5814852 175842.05 2 4 -Loop time of 0.00683451 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 39000 469.05202 -3196.0515 0.10638057 11.810485 0.26617945 408 415 6.0069324 0.21410256 2.8308749 5.5814852 175842.05 2 4 - 40000 542.78328 -3198.4918 0.18612218 75.166934 0.2376931 567 560 6.0069324 0.214275 2.8308749 5.5814852 179412.45 2 4 -Loop time of 0.23954 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 40000 542.78328 -3198.4918 0.18612218 75.166934 0.2376931 567 560 6.0069324 0.214275 2.8308749 5.5814852 179412.45 2 4 - 40014 542.78328 -3217.9148 0.18612218 75.166934 0.2376931 567 560 6.0069324 0.21420003 2.8308749 5.5814852 179412.45 2 4 -Loop time of 0.00652599 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 40000 542.78328 -3198.4918 0.18612218 75.166934 0.2376931 567 560 6.0069324 0.214275 2.8308749 5.5814852 179412.45 2 4 - 41000 548.99015 -3197.5893 0.30318345 1137.4995 0.18822056 124 135 6.0069324 0.21114634 2.8308749 5.5814852 184564.49 2 4 -Loop time of 0.239863 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 41000 548.99015 -3197.5893 0.30318345 1137.4995 0.18822056 124 135 6.0069324 0.21114634 2.8308749 5.5814852 184564.49 2 4 - 41014 548.99015 -3217.9174 0.30318345 1137.4995 0.18822056 124 135 6.0069324 0.21107427 2.8308749 5.5814852 184564.49 2 4 -Loop time of 0.00668764 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 41000 548.99015 -3197.5893 0.30318345 1137.4995 0.18822056 124 135 6.0069324 0.21114634 2.8308749 5.5814852 184564.49 2 4 - 42000 492.4929 -3198.0535 0.31406773 1464.4003 0.18294209 262 264 6.0069324 0.20954762 2.8308749 5.5814852 187620.86 2 4 -Loop time of 0.238458 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 42000 492.4929 -3198.0535 0.31406773 1464.4003 0.18294209 262 264 6.0069324 0.20954762 2.8308749 5.5814852 187620.86 2 4 - 42014 492.4929 -3217.9154 0.31406773 1464.4003 0.18294209 262 264 6.0069324 0.20947779 2.8308749 5.5814852 187620.86 2 4 -Loop time of 0.00658375 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 42000 492.4929 -3198.0535 0.31406773 1464.4003 0.18294209 262 264 6.0069324 0.20954762 2.8308749 5.5814852 187620.86 2 4 - 43000 524.32334 -3199.9723 0.171134 53.082676 0.24330204 287 276 6.0069324 0.20893023 2.8308749 5.5814852 189618.98 2 4 -Loop time of 0.240476 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 43000 524.32334 -3199.9723 0.171134 53.082676 0.24330204 287 276 6.0069324 0.20893023 2.8308749 5.5814852 189618.98 2 4 - 43015 524.32334 -3217.9151 0.171134 53.082676 0.24330204 287 276 6.0069324 0.20885738 2.8308749 5.5814852 189618.98 2 4 -Loop time of 0.00655174 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 43000 524.32334 -3199.9723 0.171134 53.082676 0.24330204 287 276 6.0069324 0.20893023 2.8308749 5.5814852 189618.98 2 4 - 44000 490.60365 -3198.9839 0.12604882 18.642955 0.25944404 544 276 6.0069324 0.21018182 2.8308749 5.5814852 193452.76 2 4 -Loop time of 0.240179 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 44000 490.60365 -3198.9839 0.12604882 18.642955 0.25944404 544 276 6.0069324 0.21018182 2.8308749 5.5814852 193452.76 2 4 - 44015 490.60365 -3217.9148 0.12604882 18.642955 0.25944404 544 276 6.0069324 0.21011019 2.8308749 5.5814852 193452.76 2 4 -Loop time of 0.00717342 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 44000 490.60365 -3198.9839 0.12604882 18.642955 0.25944404 544 276 6.0069324 0.21018182 2.8308749 5.5814852 193452.76 2 4 - 45000 516.91704 -3198.746 0.30358614 1148.1804 0.18802791 114 120 6.0069324 0.2092 2.8308749 5.5814852 194591.87 2 4 -Loop time of 0.24121 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 45000 516.91704 -3198.746 0.30358614 1148.1804 0.18802791 114 120 6.0069324 0.2092 2.8308749 5.5814852 194591.87 2 4 - 45013 516.91704 -3217.9155 0.30358614 1148.1804 0.18802791 114 120 6.0069324 0.20913958 2.8308749 5.5814852 194591.87 2 4 -Loop time of 0.00649601 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 45000 516.91704 -3198.746 0.30358614 1148.1804 0.18802791 114 120 6.0069324 0.2092 2.8308749 5.5814852 194591.87 2 4 - 46000 511.1774 -3196.9369 0.25070338 336.49294 0.21183341 138 259 6.0069324 0.20769565 2.8308749 5.5814852 199937.52 2 4 -Loop time of 0.239441 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 46000 511.1774 -3196.9369 0.25070338 336.49294 0.21183341 138 259 6.0069324 0.20769565 2.8308749 5.5814852 199937.52 2 4 - 46015 511.1774 -3217.9159 0.25070338 336.49294 0.21183341 138 259 6.0069324 0.20762795 2.8308749 5.5814852 199937.52 2 4 -Loop time of 0.00681973 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 46000 511.1774 -3196.9369 0.25070338 336.49294 0.21183341 138 259 6.0069324 0.20769565 2.8308749 5.5814852 199937.52 2 4 - 47000 480.5069 -3198.8501 0.071646863 5.2743358 0.27767529 544 556 6.0069324 0.20602128 2.8308749 5.5814852 202107.88 2 4 -Loop time of 0.24022 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 47000 480.5069 -3198.8501 0.071646863 5.2743358 0.27767529 544 556 6.0069324 0.20602128 2.8308749 5.5814852 202107.88 2 4 - 47016 480.5069 -3217.9167 0.071646863 5.2743358 0.27767529 544 556 6.0069324 0.20595117 2.8308749 5.5814852 202107.88 2 4 -Loop time of 0.007438 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 47000 480.5069 -3198.8501 0.071646863 5.2743358 0.27767529 544 556 6.0069324 0.20602128 2.8308749 5.5814852 202107.88 2 4 - 48000 540.51895 -3198.5792 0.04754734 3.0147795 0.28537953 544 556 6.0069324 0.2085 2.8308749 5.5814852 202899.91 2 4 -Loop time of 0.241529 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 48000 540.51895 -3198.5792 0.04754734 3.0147795 0.28537953 544 556 6.0069324 0.2085 2.8308749 5.5814852 202899.91 2 4 - 48015 540.51895 -3217.9148 0.04754734 3.0147795 0.28537953 544 556 6.0069324 0.20843486 2.8308749 5.5814852 202899.91 2 4 -Loop time of 0.00695753 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 48000 540.51895 -3198.5792 0.04754734 3.0147795 0.28537953 544 556 6.0069324 0.2085 2.8308749 5.5814852 202899.91 2 4 - 49000 527.63013 -3199.0384 0.28400417 728.84104 0.19717822 544 577 6.0069324 0.20961224 2.8308749 5.5814852 210926.93 2 4 -Loop time of 0.241009 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 49000 527.63013 -3199.0384 0.28400417 728.84104 0.19717822 544 577 6.0069324 0.20961224 2.8308749 5.5814852 210926.93 2 4 - 49013 527.63013 -3217.9157 0.28400417 728.84104 0.19717822 544 577 6.0069324 0.20955665 2.8308749 5.5814852 210926.93 2 4 -Loop time of 0.00608408 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 49000 527.63013 -3199.0384 0.28400417 728.84104 0.19717822 544 577 6.0069324 0.20961224 2.8308749 5.5814852 210926.93 2 4 - 50000 516.69962 -3198.3346 0.35295929 3611.3455 0.16268782 266 243 6.0069324 0.20898 2.8308749 5.5814852 215664.98 2 4 -Loop time of 0.239941 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 50000 516.69962 -3198.3346 0.35295929 3611.3455 0.16268782 266 243 6.0069324 0.20898 2.8308749 5.5814852 215664.98 2 4 - 50013 516.69962 -3217.9156 0.35295929 3611.3455 0.16268782 266 243 6.0069324 0.20892568 2.8308749 5.5814852 215664.98 2 4 -Loop time of 0.00602353 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 50000 516.69962 -3198.3346 0.35295929 3611.3455 0.16268782 266 243 6.0069324 0.20898 2.8308749 5.5814852 215664.98 2 4 - 51000 533.05598 -3198.0432 0.17474232 57.719563 0.2419636 123 128 6.0069324 0.2065098 2.8308749 5.5814852 221609.1 2 4 -Loop time of 0.240274 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 51000 533.05598 -3198.0432 0.17474232 57.719563 0.2419636 123 128 6.0069324 0.2065098 2.8308749 5.5814852 221609.1 2 4 - 51015 533.05598 -3217.9143 0.17474232 57.719563 0.2419636 123 128 6.0069324 0.20644908 2.8308749 5.5814852 221609.1 2 4 -Loop time of 0.00743866 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 51000 533.05598 -3198.0432 0.17474232 57.719563 0.2419636 123 128 6.0069324 0.2065098 2.8308749 5.5814852 221609.1 2 4 - 52000 545.98999 -3198.2633 0 1 0.30964409 287 276 6.0069324 0.20332692 2.8308749 5.5814852 230246.21 2 4 -Loop time of 0.239709 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 52000 545.98999 -3198.2633 0 1 0.30964409 287 276 6.0069324 0.20332692 2.8308749 5.5814852 230246.21 2 4 - 52017 545.98999 -3217.9153 0 1 0.30964409 287 276 6.0069324 0.20326047 2.8308749 5.5814852 230246.21 2 4 -Loop time of 0.00786757 on 4 procs for 17 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 52000 545.98999 -3198.2633 0 1 0.30964409 287 276 6.0069324 0.20332692 2.8308749 5.5814852 230246.21 2 4 - 53000 453.58658 -3199.3577 0.23959479 260.0198 0.21650159 278 279 6.0069324 0.20366038 2.8308749 5.5814852 233492.88 2 4 -Loop time of 0.240351 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 53000 453.58658 -3199.3577 0.23959479 260.0198 0.21650159 278 279 6.0069324 0.20366038 2.8308749 5.5814852 233492.88 2 4 - 53014 453.58658 -3217.9131 0.23959479 260.0198 0.21650159 278 279 6.0069324 0.20360659 2.8308749 5.5814852 233492.88 2 4 -Loop time of 0.0067966 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 53000 453.58658 -3199.3577 0.23959479 260.0198 0.21650159 278 279 6.0069324 0.20366038 2.8308749 5.5814852 233492.88 2 4 - 54000 502.12681 -3199.1712 0.28827435 804.7747 0.19521941 550 563 6.0069324 0.20264815 2.8308749 5.5814852 239627.25 2 4 -Loop time of 0.238634 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 54000 502.12681 -3199.1712 0.28827435 804.7747 0.19521941 550 563 6.0069324 0.20264815 2.8308749 5.5814852 239627.25 2 4 - 54014 502.12681 -3217.9165 0.28827435 804.7747 0.19521941 550 563 6.0069324 0.20259562 2.8308749 5.5814852 239627.25 2 4 -Loop time of 0.00671387 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 54000 502.12681 -3199.1712 0.28827435 804.7747 0.19521941 550 563 6.0069324 0.20264815 2.8308749 5.5814852 239627.25 2 4 - 55000 470.7967 -3197.4136 0.31075641 1356.0734 0.18456394 285 283 6.0069324 0.20041818 2.8308749 5.5814852 246248.56 2 4 -Loop time of 0.240888 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 55000 470.7967 -3197.4136 0.31075641 1356.0734 0.18456394 285 283 6.0069324 0.20041818 2.8308749 5.5814852 246248.56 2 4 - 55013 470.7967 -3217.9136 0.31075641 1356.0734 0.18456394 285 283 6.0069324 0.20037082 2.8308749 5.5814852 246248.56 2 4 -Loop time of 0.00596166 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 55000 470.7967 -3197.4136 0.31075641 1356.0734 0.18456394 285 283 6.0069324 0.20041818 2.8308749 5.5814852 246248.56 2 4 - 56000 533.34641 -3198.1323 0.16761369 48.918113 0.24460077 287 276 6.0069324 0.19926786 2.8308749 5.5814852 252499.61 2 4 -Loop time of 0.239487 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 56000 533.34641 -3198.1323 0.16761369 48.918113 0.24460077 287 276 6.0069324 0.19926786 2.8308749 5.5814852 252499.61 2 4 - 56014 533.34641 -3217.9162 0.16761369 48.918113 0.24460077 287 276 6.0069324 0.19921805 2.8308749 5.5814852 252499.61 2 4 -Loop time of 0.00619745 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 56000 533.34641 -3198.1323 0.16761369 48.918113 0.24460077 287 276 6.0069324 0.19926786 2.8308749 5.5814852 252499.61 2 4 - 57000 516.06876 -3197.7671 0 1 0.33139119 287 276 6.0069324 0.19807018 2.8308749 5.5814852 255923.67 2 4 -Loop time of 0.241093 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 57000 516.06876 -3197.7671 0 1 0.33139119 287 276 6.0069324 0.19807018 2.8308749 5.5814852 255923.67 2 4 - 57016 516.06876 -3217.9146 0 1 0.33139119 287 276 6.0069324 0.19801459 2.8308749 5.5814852 255923.67 2 4 -Loop time of 0.00772929 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 57000 516.06876 -3197.7671 0 1 0.33139119 287 276 6.0069324 0.19807018 2.8308749 5.5814852 255923.67 2 4 - 58000 489.18902 -3198.6347 0.20937806 128.95422 0.22871806 544 276 6.0069324 0.20094828 2.8308749 5.5814852 256132.07 2 4 -Loop time of 0.239761 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 58000 489.18902 -3198.6347 0.20937806 128.95422 0.22871806 544 276 6.0069324 0.20094828 2.8308749 5.5814852 256132.07 2 4 - 58014 489.18902 -3217.9165 0.20937806 128.95422 0.22871806 544 276 6.0069324 0.20089978 2.8308749 5.5814852 256132.07 2 4 -Loop time of 0.00660753 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 58000 489.18902 -3198.6347 0.20937806 128.95422 0.22871806 544 276 6.0069324 0.20094828 2.8308749 5.5814852 256132.07 2 4 - 59000 522.75445 -3197.4454 0 1 0.91317104 274 556 6.0069324 0.20305085 2.8308749 5.5814852 259828.37 2 4 -Loop time of 0.241627 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 59000 522.75445 -3197.4454 0 1 0.91317104 274 556 6.0069324 0.20305085 2.8308749 5.5814852 259828.37 2 4 - 59013 522.75445 -3217.9138 0 1 0.91317104 274 556 6.0069324 0.20300612 2.8308749 5.5814852 259828.37 2 4 -Loop time of 0.00618345 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 59000 522.75445 -3197.4454 0.40114631 11050.253 0.1333929 547 548 6.0069324 0.20305085 2.8308749 5.5814852 259828.37 3 6 - 60000 552.18712 -3197.1906 0.21473769 146.03543 0.22659924 559 564 6.0069324 0.20126667 2.8308749 5.5814852 263208.58 3 6 -Loop time of 0.239681 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 60000 552.18712 -3197.1906 0.21473769 146.03543 0.22659924 559 564 6.0069324 0.20126667 2.8308749 5.5814852 263208.58 3 6 - 60015 552.18712 -3217.9157 0.21473769 146.03543 0.22659924 559 564 6.0069324 0.20121636 2.8308749 5.5814852 263208.58 3 6 -Loop time of 0.00685382 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 60000 552.18712 -3197.1906 0.21473769 146.03543 0.22659924 559 564 6.0069324 0.20126667 2.8308749 5.5814852 263208.58 3 6 - 61000 450.24979 -3197.259 0.20870055 126.94235 0.2289845 412 411 6.0069324 0.20103279 2.8308749 5.5814852 267126.63 3 6 -Loop time of 0.239598 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 61000 450.24979 -3197.259 0.20870055 126.94235 0.2289845 412 411 6.0069324 0.20103279 2.8308749 5.5814852 267126.63 3 6 - 61014 450.24979 -3217.9146 0.20870055 126.94235 0.2289845 412 411 6.0069324 0.20098666 2.8308749 5.5814852 267126.63 3 6 -Loop time of 0.00683248 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 61000 450.24979 -3197.259 0.20870055 126.94235 0.2289845 412 411 6.0069324 0.20103279 2.8308749 5.5814852 267126.63 3 6 - 62000 506.89399 -3197.4659 0.20762728 123.81933 0.22940595 256 267 6.0069324 0.20074194 2.8308749 5.5814852 270687.24 3 6 -Loop time of 0.238224 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 62000 506.89399 -3197.4659 0.20762728 123.81933 0.22940595 256 267 6.0069324 0.20074194 2.8308749 5.5814852 270687.24 3 6 - 62014 506.89399 -3217.9156 0.20762728 123.81933 0.22940595 256 267 6.0069324 0.20069662 2.8308749 5.5814852 270687.24 3 6 -Loop time of 0.00685287 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 62000 506.89399 -3197.4659 0.20762728 123.81933 0.22940595 256 267 6.0069324 0.20074194 2.8308749 5.5814852 270687.24 3 6 - 63000 510.04068 -3196.8255 0.063053561 4.320671 0.28044671 112 123 6.0069324 0.19930159 2.8308749 5.5814852 274694.1 3 6 -Loop time of 0.238676 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 63000 510.04068 -3196.8255 0.063053561 4.320671 0.28044671 112 123 6.0069324 0.19930159 2.8308749 5.5814852 274694.1 3 6 - 63014 510.04068 -3217.9141 0.063053561 4.320671 0.28044671 112 123 6.0069324 0.19925731 2.8308749 5.5814852 274694.1 3 6 -Loop time of 0.00670481 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 63000 510.04068 -3196.8255 0.063053561 4.320671 0.28044671 112 123 6.0069324 0.19930159 2.8308749 5.5814852 274694.1 3 6 - 64000 501.25574 -3197.7101 0.083024533 6.8683042 0.27396274 286 119 6.0069324 0.2 2.8308749 5.5814852 276114.67 3 6 -Loop time of 0.238342 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 64000 501.25574 -3197.7101 0.083024533 6.8683042 0.27396274 286 119 6.0069324 0.2 2.8308749 5.5814852 276114.67 3 6 - 64014 501.25574 -3217.9141 0.083024533 6.8683042 0.27396274 286 119 6.0069324 0.19995626 2.8308749 5.5814852 276114.67 3 6 -Loop time of 0.00604939 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 64000 501.25574 -3197.7101 0.083024533 6.8683042 0.27396274 286 119 6.0069324 0.2 2.8308749 5.5814852 276114.67 3 6 - 65000 476.31749 -3199.3383 0.15323867 35.04097 0.24983402 267 260 6.0069324 0.19838462 2.8308749 5.5814852 282281.34 3 6 -Loop time of 0.239458 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 65000 476.31749 -3199.3383 0.15323867 35.04097 0.24983402 267 260 6.0069324 0.19838462 2.8308749 5.5814852 282281.34 3 6 - 65014 476.31749 -3217.913 0.15323867 35.04097 0.24983402 267 260 6.0069324 0.1983419 2.8308749 5.5814852 282281.34 3 6 -Loop time of 0.00661784 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 65000 476.31749 -3199.3383 0.15323867 35.04097 0.24983402 267 260 6.0069324 0.19838462 2.8308749 5.5814852 282281.34 3 6 - 66000 515.81365 -3198.7056 0.21680106 153.19903 0.22577823 416 415 6.0069324 0.19919697 2.8308749 5.5814852 284618.61 3 6 -Loop time of 0.239712 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 66000 515.81365 -3198.7056 0.21680106 153.19903 0.22577823 416 415 6.0069324 0.19919697 2.8308749 5.5814852 284618.61 3 6 - 66014 515.81365 -3217.9165 0.21680106 153.19903 0.22577823 416 415 6.0069324 0.19915472 2.8308749 5.5814852 284618.61 3 6 -Loop time of 0.00680089 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 66000 515.81365 -3198.7056 0.21680106 153.19903 0.22577823 416 415 6.0069324 0.19919697 2.8308749 5.5814852 284618.61 3 6 - 67000 484.31519 -3197.7852 0.13298902 21.901246 0.25702524 275 567 6.0069324 0.19846269 2.8308749 5.5814852 289586.09 3 6 -Loop time of 0.239938 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 67000 484.31519 -3197.7852 0.13298902 21.901246 0.25702524 275 567 6.0069324 0.19846269 2.8308749 5.5814852 289586.09 3 6 - 67014 484.31519 -3217.9146 0.13298902 21.901246 0.25702524 275 567 6.0069324 0.19842123 2.8308749 5.5814852 289586.09 3 6 -Loop time of 0.00659657 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 67000 484.31519 -3197.7852 0.13298902 21.901246 0.25702524 275 567 6.0069324 0.19846269 2.8308749 5.5814852 289586.09 3 6 - 68000 484.02912 -3199.084 0.23443259 230.66083 0.21863699 412 423 6.0069324 0.19722059 2.8308749 5.5814852 298036.66 3 6 -Loop time of 0.240483 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 68000 484.02912 -3199.084 0.23443259 230.66083 0.21863699 412 423 6.0069324 0.19722059 2.8308749 5.5814852 298036.66 3 6 - 68014 484.02912 -3217.9156 0.23443259 230.66083 0.21863699 412 423 6.0069324 0.19717999 2.8308749 5.5814852 298036.66 3 6 -Loop time of 0.00666052 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 68000 484.02912 -3199.084 0.23443259 230.66083 0.21863699 412 423 6.0069324 0.19722059 2.8308749 5.5814852 298036.66 3 6 - 69000 516.84151 -3198.3447 0.20394137 113.66746 0.23084747 119 400 6.0069324 0.19605797 2.8308749 5.5814852 302894.58 3 6 -Loop time of 0.23984 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 69000 516.84151 -3198.3447 0.20394137 113.66746 0.23084747 119 400 6.0069324 0.19605797 2.8308749 5.5814852 302894.58 3 6 - 69015 516.84151 -3217.9163 0.20394137 113.66746 0.23084747 119 400 6.0069324 0.19601536 2.8308749 5.5814852 302894.58 3 6 -Loop time of 0.0070501 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 69000 516.84151 -3198.3447 0.20394137 113.66746 0.23084747 119 400 6.0069324 0.19605797 2.8308749 5.5814852 302894.58 3 6 - 70000 521.52008 -3198.1925 0.26533657 472.57625 0.2055223 128 139 6.0069324 0.19471429 2.8308749 5.5814852 308489.53 3 6 -Loop time of 0.240016 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 70000 521.52008 -3198.1925 0.26533657 472.57625 0.2055223 128 139 6.0069324 0.19471429 2.8308749 5.5814852 308489.53 3 6 - 70014 521.52008 -3217.9145 0.26533657 472.57625 0.2055223 128 139 6.0069324 0.19467535 2.8308749 5.5814852 308489.53 3 6 -Loop time of 0.00656152 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 70000 521.52008 -3198.1925 0.26533657 472.57625 0.2055223 128 139 6.0069324 0.19471429 2.8308749 5.5814852 308489.53 3 6 - 71000 456.91639 -3199.2364 0.030609593 2.0348424 0.29067211 555 275 6.0069324 0.19753521 2.8308749 5.5814852 308872.53 3 6 -Loop time of 0.238921 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 71000 456.91639 -3199.2364 0.030609593 2.0348424 0.29067211 555 275 6.0069324 0.19753521 2.8308749 5.5814852 308872.53 3 6 - 71016 456.91639 -3217.9154 0.030609593 2.0348424 0.29067211 555 275 6.0069324 0.19749071 2.8308749 5.5814852 308872.53 3 6 -Loop time of 0.00665921 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 71000 456.91639 -3199.2364 0.030609593 2.0348424 0.29067211 555 275 6.0069324 0.19753521 2.8308749 5.5814852 308872.53 3 6 - 72000 505.77427 -3198.8053 0.011213996 1.2972748 0.29661672 275 567 6.0069324 0.20022222 2.8308749 5.5814852 308922.44 3 6 -Loop time of 0.238494 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 72000 505.77427 -3198.8053 0.011213996 1.2972748 0.29661672 275 567 6.0069324 0.20022222 2.8308749 5.5814852 308922.44 3 6 - 72014 505.77427 -3217.9154 0.011213996 1.2972748 0.29661672 275 567 6.0069324 0.2001833 2.8308749 5.5814852 308922.44 3 6 -Loop time of 0.00666285 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 72000 505.77427 -3198.8053 0.011213996 1.2972748 0.29661672 275 567 6.0069324 0.20022222 2.8308749 5.5814852 308922.44 3 6 - 73000 505.42011 -3198.5745 0.241922 274.45031 0.21553199 262 544 6.0069324 0.19989041 2.8308749 5.5814852 312318.94 3 6 -Loop time of 0.240884 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 73000 505.42011 -3198.5745 0.241922 274.45031 0.21553199 262 544 6.0069324 0.19989041 2.8308749 5.5814852 312318.94 3 6 - 73014 505.42011 -3217.9145 0.241922 274.45031 0.21553199 262 544 6.0069324 0.19985208 2.8308749 5.5814852 312318.94 3 6 -Loop time of 0.00641418 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 73000 505.42011 -3198.5745 0.241922 274.45031 0.21553199 262 544 6.0069324 0.19989041 2.8308749 5.5814852 312318.94 3 6 - 74000 525.14325 -3197.1366 0.091100202 8.2841621 0.27129682 403 404 6.0069324 0.19893243 2.8308749 5.5814852 316054.12 3 6 -Loop time of 0.239838 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 74000 525.14325 -3197.1366 0.091100202 8.2841621 0.27129682 403 404 6.0069324 0.19893243 2.8308749 5.5814852 316054.12 3 6 - 74014 525.14325 -3217.9164 0.091100202 8.2841621 0.27129682 403 404 6.0069324 0.1988948 2.8308749 5.5814852 316054.12 3 6 -Loop time of 0.00640178 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 74000 525.14325 -3197.1366 0.091100202 8.2841621 0.27129682 403 404 6.0069324 0.19893243 2.8308749 5.5814852 316054.12 3 6 - 75000 529.75357 -3196.8628 0.27468673 587.107 0.20138617 262 553 6.0069324 0.1974 2.8308749 5.5814852 320757.39 3 6 -Loop time of 0.241485 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 75000 529.75357 -3196.8628 0.27468673 587.107 0.20138617 262 553 6.0069324 0.1974 2.8308749 5.5814852 320757.39 3 6 - 75015 529.75357 -3217.9131 0.27468673 587.107 0.20138617 262 553 6.0069324 0.19736053 2.8308749 5.5814852 320757.39 3 6 -Loop time of 0.00727272 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 75000 529.75357 -3196.8628 0.27468673 587.107 0.20138617 262 553 6.0069324 0.1974 2.8308749 5.5814852 320757.39 3 6 - 76000 494.67435 -3197.324 0.026840032 1.8643837 0.29183693 555 275 6.0069324 0.19744737 2.8308749 5.5814852 321584.51 3 6 -Loop time of 0.246189 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 76000 494.67435 -3197.324 0.026840032 1.8643837 0.29183693 555 275 6.0069324 0.19744737 2.8308749 5.5814852 321584.51 3 6 - 76015 494.67435 -3217.9124 0.026840032 1.8643837 0.29183693 555 275 6.0069324 0.19740841 2.8308749 5.5814852 321584.51 3 6 -Loop time of 0.00856209 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 76000 494.67435 -3197.324 0.026840032 1.8643837 0.29183693 555 275 6.0069324 0.19744737 2.8308749 5.5814852 321584.51 3 6 - 77000 478.4265 -3198.3778 0.099536255 10.075814 0.26848366 283 272 6.0069324 0.19802597 2.8308749 5.5814852 323214.67 3 6 -Loop time of 0.244489 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 77000 478.4265 -3198.3778 0.099536255 10.075814 0.26848366 283 272 6.0069324 0.19802597 2.8308749 5.5814852 323214.67 3 6 - 77014 478.4265 -3217.9158 0.099536255 10.075814 0.26848366 283 272 6.0069324 0.19798998 2.8308749 5.5814852 323214.67 3 6 -Loop time of 0.00662231 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 77000 478.4265 -3198.3778 0.099536255 10.075814 0.26848366 283 272 6.0069324 0.19802597 2.8308749 5.5814852 323214.67 3 6 - 78000 501.53059 -3199.1386 0.013408722 1.3650665 0.29595005 420 431 6.0069324 0.19646154 2.8308749 5.5814852 328321.34 3 6 -Loop time of 0.238902 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 78000 501.53059 -3199.1386 0.013408722 1.3650665 0.29595005 420 431 6.0069324 0.19646154 2.8308749 5.5814852 328321.34 3 6 - 78014 501.53059 -3217.9148 0.013408722 1.3650665 0.29595005 420 431 6.0069324 0.19642628 2.8308749 5.5814852 328321.34 3 6 -Loop time of 0.00632596 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 78000 501.53059 -3199.1386 0.013408722 1.3650665 0.29595005 420 431 6.0069324 0.19646154 2.8308749 5.5814852 328321.34 3 6 - 79000 500.93975 -3198.0923 0.116093 14.796691 0.26287499 428 543 6.0069324 0.19506329 2.8308749 5.5814852 333018.93 3 6 -Loop time of 0.238987 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 79000 500.93975 -3198.0923 0.116093 14.796691 0.26287499 428 543 6.0069324 0.19506329 2.8308749 5.5814852 333018.93 3 6 - 79014 500.93975 -3217.9148 0.116093 14.796691 0.26287499 428 543 6.0069324 0.19502873 2.8308749 5.5814852 333018.93 3 6 -Loop time of 0.00644779 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 79000 500.93975 -3198.0923 0.116093 14.796691 0.26287499 428 543 6.0069324 0.19506329 2.8308749 5.5814852 333018.93 3 6 - 80000 521.43512 -3199.0487 0.15540998 36.852069 0.2490506 253 136 6.0069324 0.193625 2.8308749 5.5814852 337716.24 3 6 -Loop time of 0.238806 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 80000 521.43512 -3199.0487 0.15540998 36.852069 0.2490506 253 136 6.0069324 0.193625 2.8308749 5.5814852 337716.24 3 6 - 80014 521.43512 -3217.9164 0.15540998 36.852069 0.2490506 253 136 6.0069324 0.19359112 2.8308749 5.5814852 337716.24 3 6 -Loop time of 0.00644064 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 80000 521.43512 -3199.0487 0.15540998 36.852069 0.2490506 253 136 6.0069324 0.193625 2.8308749 5.5814852 337716.24 3 6 - 81000 533.69561 -3197.1168 0.24520241 296.1616 0.21415781 575 280 6.0069324 0.19222222 2.8308749 5.5814852 343062.81 3 6 -Loop time of 0.240714 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 81000 533.69561 -3197.1168 0.24520241 296.1616 0.21415781 575 280 6.0069324 0.19222222 2.8308749 5.5814852 343062.81 3 6 - 81015 533.69561 -3217.9142 0.24520241 296.1616 0.21415781 575 280 6.0069324 0.19218663 2.8308749 5.5814852 343062.81 3 6 -Loop time of 0.00675607 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 81000 533.69561 -3197.1168 0.24520241 296.1616 0.21415781 575 280 6.0069324 0.19222222 2.8308749 5.5814852 343062.81 3 6 - 82000 522.58314 -3197.6951 0.34607713 3078.2225 0.16645154 569 570 6.0069324 0.19130488 2.8308749 5.5814852 347897.31 3 6 -Loop time of 0.239094 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 82000 522.58314 -3197.6951 0.34607713 3078.2225 0.16645154 569 570 6.0069324 0.19130488 2.8308749 5.5814852 347897.31 3 6 - 82014 522.58314 -3217.917 0.34607713 3078.2225 0.16645154 569 570 6.0069324 0.19127222 2.8308749 5.5814852 347897.31 3 6 -Loop time of 0.00662041 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 82000 522.58314 -3197.6951 0.34607713 3078.2225 0.16645154 569 570 6.0069324 0.19130488 2.8308749 5.5814852 347897.31 3 6 - 83000 518.24081 -3196.6457 0.27556929 599.25687 0.20099136 512 523 6.0069324 0.18978313 2.8308749 5.5814852 355870.51 3 6 -Loop time of 0.240335 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 83000 518.24081 -3196.6457 0.27556929 599.25687 0.20099136 512 523 6.0069324 0.18978313 2.8308749 5.5814852 355870.51 3 6 - 83015 518.24081 -3217.9151 0.27556929 599.25687 0.20099136 512 523 6.0069324 0.18974884 2.8308749 5.5814852 355870.51 3 6 -Loop time of 0.00710487 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 83000 518.24081 -3196.6457 0.27556929 599.25687 0.20099136 512 523 6.0069324 0.18978313 2.8308749 5.5814852 355870.51 3 6 - 84000 524.77376 -3198.1195 0.32714869 1983.8549 0.17638944 275 567 6.0069324 0.189 2.8308749 5.5814852 358623.76 3 6 -Loop time of 0.239069 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 84000 524.77376 -3198.1195 0.32714869 1983.8549 0.17638944 275 567 6.0069324 0.189 2.8308749 5.5814852 358623.76 3 6 - 84014 524.77376 -3217.9145 0.32714869 1983.8549 0.17638944 275 567 6.0069324 0.18896851 2.8308749 5.5814852 358623.76 3 6 -Loop time of 0.00662088 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 84000 524.77376 -3198.1195 0.32714869 1983.8549 0.17638944 275 567 6.0069324 0.189 2.8308749 5.5814852 358623.76 3 6 - 85000 485.77334 -3199.2545 0.0027767134 1.0665667 0.29916583 275 567 6.0069324 0.19102353 2.8308749 5.5814852 362933.93 3 6 -Loop time of 0.240117 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 85000 485.77334 -3199.2545 0.0027767134 1.0665667 0.29916583 275 567 6.0069324 0.19102353 2.8308749 5.5814852 362933.93 3 6 - 85014 485.77334 -3217.9148 0.0027767134 1.0665667 0.29916583 275 567 6.0069324 0.19099207 2.8308749 5.5814852 362933.93 3 6 -Loop time of 0.00642967 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 85000 485.77334 -3199.2545 0.0027767134 1.0665667 0.29916583 275 567 6.0069324 0.19102353 2.8308749 5.5814852 362933.93 3 6 - 86000 520.32504 -3197.8586 0.34074416 2719.857 0.16931052 572 403 6.0069324 0.19181395 2.8308749 5.5814852 366756.98 3 6 -Loop time of 0.23899 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 86000 520.32504 -3197.8586 0.34074416 2719.857 0.16931052 572 403 6.0069324 0.19181395 2.8308749 5.5814852 366756.98 3 6 - 86014 520.32504 -3217.9156 0.34074416 2719.857 0.16931052 572 403 6.0069324 0.19178273 2.8308749 5.5814852 366756.98 3 6 -Loop time of 0.00667548 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 86000 520.32504 -3197.8586 0.34074416 2719.857 0.16931052 572 403 6.0069324 0.19181395 2.8308749 5.5814852 366756.98 3 6 - 87000 492.06505 -3198.9245 0.35508545 3794.0215 0.16150733 282 284 6.0069324 0.19096552 2.8308749 5.5814852 370757.69 3 6 -Loop time of 0.241176 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 87000 492.06505 -3198.9245 0.35508545 3794.0215 0.16150733 282 284 6.0069324 0.19096552 2.8308749 5.5814852 370757.69 3 6 - 87014 492.06505 -3217.9141 0.35508545 3794.0215 0.16150733 282 284 6.0069324 0.19093479 2.8308749 5.5814852 370757.69 3 6 -Loop time of 0.00634283 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 87000 492.06505 -3198.9245 0.35508545 3794.0215 0.16150733 282 284 6.0069324 0.19096552 2.8308749 5.5814852 370757.69 3 6 - 88000 519.1972 -3199.3527 0.27684477 617.26171 0.20041941 411 416 6.0069324 0.19025 2.8308749 5.5814852 375119.46 3 6 -Loop time of 0.239888 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 88000 519.1972 -3199.3527 0.27684477 617.26171 0.20041941 411 416 6.0069324 0.19025 2.8308749 5.5814852 375119.46 3 6 - 88014 519.1972 -3217.9152 0.27684477 617.26171 0.20041941 411 416 6.0069324 0.19021974 2.8308749 5.5814852 375119.46 3 6 -Loop time of 0.00669366 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 88000 519.1972 -3199.3527 0.27684477 617.26171 0.20041941 411 416 6.0069324 0.19025 2.8308749 5.5814852 375119.46 3 6 - 89000 524.26014 -3198.5355 0.3001416 1059.9631 0.18966948 432 431 6.0069324 0.19220225 2.8308749 5.5814852 375708.76 3 6 -Loop time of 0.241238 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 89000 524.26014 -3198.5355 0.3001416 1059.9631 0.18966948 432 431 6.0069324 0.19220225 2.8308749 5.5814852 375708.76 3 6 - 89014 524.26014 -3217.9158 0.3001416 1059.9631 0.18966948 432 431 6.0069324 0.19217202 2.8308749 5.5814852 375708.76 3 6 -Loop time of 0.00632095 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 89000 524.26014 -3198.5355 0.3001416 1059.9631 0.18966948 432 431 6.0069324 0.19220225 2.8308749 5.5814852 375708.76 3 6 - 90000 498.11952 -3200.0434 0.2737435 574.39407 0.20180726 96 141 6.0069324 0.19212222 2.8308749 5.5814852 380021.68 3 6 -Loop time of 0.240092 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 90000 498.11952 -3200.0434 0.2737435 574.39407 0.20180726 96 141 6.0069324 0.19212222 2.8308749 5.5814852 380021.68 3 6 - 90013 498.11952 -3217.9105 0.2737435 574.39407 0.20180726 96 141 6.0069324 0.19209448 2.8308749 5.5814852 380021.68 3 6 -Loop time of 0.00614023 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 90000 498.11952 -3200.0434 0.2737435 574.39407 0.20180726 96 141 6.0069324 0.19212222 2.8308749 5.5814852 380021.68 3 6 - 91000 518.719 -3198.4974 0 1 0.38452588 128 139 6.0069324 0.19137363 2.8308749 5.5814852 386325.64 3 6 -Loop time of 0.240887 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 91000 518.719 -3198.4974 0 1 0.38452588 128 139 6.0069324 0.19137363 2.8308749 5.5814852 386325.64 3 6 - 91015 518.719 -3217.9166 0 1 0.38452588 128 139 6.0069324 0.19134209 2.8308749 5.5814852 386325.64 3 6 -Loop time of 0.00709724 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 91000 518.719 -3198.4974 0 1 0.38452588 128 139 6.0069324 0.19137363 2.8308749 5.5814852 386325.64 3 6 - 92000 489.88256 -3197.3306 0.22381505 180.28261 0.22296478 554 556 6.0069324 0.19186957 2.8308749 5.5814852 387621.28 3 6 -Loop time of 0.241415 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 92000 489.88256 -3197.3306 0.22381505 180.28261 0.22296478 554 556 6.0069324 0.19186957 2.8308749 5.5814852 387621.28 3 6 - 92014 489.88256 -3217.9165 0.22381505 180.28261 0.22296478 554 556 6.0069324 0.19184037 2.8308749 5.5814852 387621.28 3 6 -Loop time of 0.00761282 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 92000 489.88256 -3197.3306 0.22381505 180.28261 0.22296478 554 556 6.0069324 0.19186957 2.8308749 5.5814852 387621.28 3 6 - 93000 470.86218 -3199.1842 0 1 0.35506745 275 567 6.0069324 0.19339785 2.8308749 5.5814852 388253.6 3 6 -Loop time of 0.242326 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 93000 470.86218 -3199.1842 0 1 0.35506745 275 567 6.0069324 0.19339785 2.8308749 5.5814852 388253.6 3 6 - 93015 470.86218 -3217.9141 0 1 0.35506745 275 567 6.0069324 0.19336666 2.8308749 5.5814852 388253.6 3 6 -Loop time of 0.006814 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 93000 470.86218 -3199.1842 0 1 0.35506745 275 567 6.0069324 0.19339785 2.8308749 5.5814852 388253.6 3 6 - 94000 500.15102 -3200.7696 0.21997392 164.90621 0.2245099 547 552 6.0069324 0.19425532 2.8308749 5.5814852 390879.44 3 6 -Loop time of 0.239427 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 94000 500.15102 -3200.7696 0.21997392 164.90621 0.2245099 547 552 6.0069324 0.19425532 2.8308749 5.5814852 390879.44 3 6 - 94014 500.15102 -3217.9143 0.21997392 164.90621 0.2245099 547 552 6.0069324 0.19422639 2.8308749 5.5814852 390879.44 3 6 -Loop time of 0.00671053 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 94000 500.15102 -3200.7696 0.21997392 164.90621 0.2245099 547 552 6.0069324 0.19425532 2.8308749 5.5814852 390879.44 3 6 - 95000 490.13908 -3196.2455 0.24009629 263.06397 0.21629301 404 411 6.0069324 0.19329474 2.8308749 5.5814852 393723.55 3 6 -Loop time of 0.240334 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 95000 490.13908 -3196.2455 0.24009629 263.06397 0.21629301 404 411 6.0069324 0.19329474 2.8308749 5.5814852 393723.55 3 6 - 95014 490.13908 -3217.9156 0.24009629 263.06397 0.21629301 404 411 6.0069324 0.19326626 2.8308749 5.5814852 393723.55 3 6 -Loop time of 0.00659347 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 95000 490.13908 -3196.2455 0.24009629 263.06397 0.21629301 404 411 6.0069324 0.19329474 2.8308749 5.5814852 393723.55 3 6 - 96000 487.33226 -3198.9357 0 1 0.37635306 275 567 6.0069324 0.19283333 2.8308749 5.5814852 397503.57 3 6 -Loop time of 0.239501 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 96000 487.33226 -3198.9357 0 1 0.37635306 275 567 6.0069324 0.19283333 2.8308749 5.5814852 397503.57 3 6 - 96016 487.33226 -3217.9155 0 1 0.37635306 275 567 6.0069324 0.1928012 2.8308749 5.5814852 397503.57 3 6 -Loop time of 0.00752759 on 4 procs for 16 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 96000 487.33226 -3198.9357 0 1 0.37635306 275 567 6.0069324 0.19283333 2.8308749 5.5814852 397503.57 3 6 - 97000 474.12539 -3199.8196 0.35035926 3399.8667 0.16411988 543 577 6.0069324 0.19291753 2.8308749 5.5814852 402607.83 3 6 -Loop time of 0.241445 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 97000 474.12539 -3199.8196 0.35035926 3399.8667 0.16411988 543 577 6.0069324 0.19291753 2.8308749 5.5814852 402607.83 3 6 - 97014 474.12539 -3217.9109 0.35035926 3399.8667 0.16411988 543 577 6.0069324 0.19288969 2.8308749 5.5814852 402607.83 3 6 -Loop time of 0.00657606 on 4 procs for 14 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 97000 474.12539 -3199.8196 0.35035926 3399.8667 0.16411988 543 577 6.0069324 0.19291753 2.8308749 5.5814852 402607.83 3 6 - 98000 529.81368 -3198.9595 0.31966379 1667.4989 0.18016803 219 257 6.0069324 0.19226531 2.8308749 5.5814852 408103.05 3 6 -Loop time of 0.239002 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 98000 529.81368 -3198.9595 0.31966379 1667.4989 0.18016803 219 257 6.0069324 0.19226531 2.8308749 5.5814852 408103.05 3 6 - 98013 529.81368 -3217.9152 0.31966379 1667.4989 0.18016803 219 257 6.0069324 0.1922398 2.8308749 5.5814852 408103.05 3 6 -Loop time of 0.00612688 on 4 procs for 13 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 98000 529.81368 -3198.9595 0.31966379 1667.4989 0.18016803 219 257 6.0069324 0.19226531 2.8308749 5.5814852 408103.05 3 6 - 99000 521.70465 -3199.4429 0.069318452 4.9968747 0.27842895 404 399 6.0069324 0.19121212 2.8308749 5.5814852 410506.47 3 6 -Loop time of 0.239787 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 99000 521.70465 -3199.4429 0.069318452 4.9968747 0.27842895 404 399 6.0069324 0.19121212 2.8308749 5.5814852 410506.47 3 6 - 99015 521.70465 -3217.9162 0.069318452 4.9968747 0.27842895 404 399 6.0069324 0.19118315 2.8308749 5.5814852 410506.47 3 6 -Loop time of 0.00708294 on 4 procs for 15 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 99000 521.70465 -3199.4429 0.069318452 4.9968747 0.27842895 404 399 6.0069324 0.19121212 2.8308749 5.5814852 410506.47 3 6 - 100000 513.67972 -3199.6382 0.37912459 6628.3181 0.14750449 554 556 6.0069324 0.19018 2.8308749 5.5814852 415873.98 3 6 -Loop time of 0.239291 on 4 procs for 1000 steps with 577 atoms - -Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] - 100000 513.67972 -3199.6382 0.37912459 6628.3181 0.14750449 554 556 6.0069324 0.19018 2.8308749 5.5814852 415873.98 3 6 - 100015 513.67972 -3217.9139 0.37912459 6628.3181 0.14750449 554 556 6.0069324 0.19015148 2.8308749 5.5814852 415873.98 3 6 -Loop time of 0.00685054 on 4 procs for 15 steps with 577 atoms - -Final hyper stats ... - -Cummulative quantities for fix hyper: - hyper time = 415874 - event timesteps = 3 - # of atoms in events = 6 -Quantities for this hyper run: - event timesteps = 3 - # of atoms in events = 6 - max length of any bond = 5.58149 - max drift distance of any atom = 2.83087 - fraction of steps & bonds with zero bias = 0.19018 -Current quantities: - ave bonds/atom = 6.00693 - -Loop time of 25.9832 on 4 procs for 100000 steps with 577 atoms - -Performance: 1662.613 ns/day, 0.014 hours/ns, 3848.641 timesteps/s -100.4% CPU use with 4 MPI tasks x no OpenMP threads - -Hyper stats: - Dynamics time (%) = 24.8121 (95.4928) - Quench time (%) = 0.715868 (2.75512) - Other time (%) = 0.879782 (3.38596) - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 17.954 | 18.433 | 18.794 | 8.4 | 70.94 -Neigh | 1.4147 | 1.4662 | 1.5092 | 2.9 | 5.64 -Comm | 2.0975 | 2.2026 | 2.3076 | 5.6 | 8.48 -Output | 0.0030999 | 0.0031937 | 0.003444 | 0.3 | 0.01 -Modify | 2.6366 | 2.9984 | 3.4835 | 19.3 | 11.54 -Other | | 0.8798 | | | 3.39 - -Nlocal: 144.25 ave 150 max 139 min -Histogram: 1 0 1 0 0 0 1 0 0 1 -Nghost: 533.25 ave 538 max 527 min -Histogram: 1 0 0 0 1 0 0 0 1 1 -Neighs: 3359.25 ave 3495 max 3245 min -Histogram: 1 0 1 0 0 1 0 0 0 1 - -Total # of neighbors = 13437 -Ave neighs/atom = 23.2877 -Neighbor list builds = 10069 -Dangerous builds = 0 -Total wall time: 0:00:26 diff --git a/examples/hyper/log.10Oct18.hyper.local.g++.16 b/examples/hyper/log.10Oct18.hyper.local.g++.16 deleted file mode 100644 index 480fcf0248..0000000000 --- a/examples/hyper/log.10Oct18.hyper.local.g++.16 +++ /dev/null @@ -1,993 +0,0 @@ -LAMMPS (10 Oct 2018) -# 3d EAM surface for local HD - -# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 -# hop event on (100) surface is same distance -# exchange event is 2 atoms moving same distance - -variable Tequil index 400.0 -variable Vmax index 0.4 -variable qfactor index 0.3 -variable cutbond index 3.2 -variable Dcut index 10.0 -variable cutevent index 1.1 -variable alpha index 200.0 -variable boost index 4000.0 -variable ghostcut index 12.0 -variable steps index 1500 -variable nevent index 100 -variable nx index 8 -variable ny index 8 -variable zoom index 1.8 -variable seed index 826626413 -variable tol index 1.0e-15 -variable add index 37K - -units metal -atom_style atomic -atom_modify map array -boundary p p p -comm_modify cutoff ${ghostcut} -comm_modify cutoff 12.0 - -lattice fcc 3.92 -Lattice spacing in x,y,z = 3.92 3.92 3.92 -region box block 0 6 0 6 0 4 -create_box 2 box -Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) - 2 by 4 by 2 MPI processor grid -create_atoms 1 box -Created 576 atoms - Time spent = 0.00108504 secs - -mass * 1.0 - -change_box all z final -0.1 5.0 boundary p p f - orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) - -# replicate in xy - -replicate ${nx} ${ny} 1 -replicate 8 ${ny} 1 -replicate 8 8 1 - orthogonal box = (0 0 -0.392) to (188.16 188.16 19.6) - 4 by 4 by 1 MPI processor grid - 36864 atoms - Time spent = 0.0028758 secs - -# add adatoms - -include adatoms.list.${add} -include adatoms.list.37K -create_atoms 1 single 27.5 9.5 4 -Created 1 atoms - Time spent = 0.000183105 secs -create_atoms 1 single 16 9 4 -Created 1 atoms - Time spent = 0.000178099 secs -create_atoms 1 single 10 12 4 -Created 1 atoms - Time spent = 0.000179768 secs -create_atoms 1 single 31 44 4 -Created 1 atoms - Time spent = 0.000184059 secs -create_atoms 1 single 13 17 4 -Created 1 atoms - Time spent = 0.000173807 secs -create_atoms 1 single 8.5 28.5 4 -Created 1 atoms - Time spent = 0.000167847 secs -create_atoms 1 single 23 26 4 -Created 1 atoms - Time spent = 0.000179052 secs -create_atoms 1 single 38 27 4 -Created 1 atoms - Time spent = 0.000169992 secs -create_atoms 1 single 37.5 4.5 4 -Created 1 atoms - Time spent = 0.000166178 secs -create_atoms 1 single 41.5 47.5 4 -Created 1 atoms - Time spent = 0.000172138 secs -create_atoms 1 single 20.5 37.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 5 8 4 -Created 1 atoms - Time spent = 0.00018096 secs -create_atoms 1 single 2.5 16.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 38.5 45.5 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 9 0 4 -Created 1 atoms - Time spent = 0.000168085 secs -create_atoms 1 single 39 32 4 -Created 1 atoms - Time spent = 0.000170946 secs -create_atoms 1 single 45.5 11.5 4 -Created 1 atoms - Time spent = 0.00018096 secs -create_atoms 1 single 40 0 4 -Created 1 atoms - Time spent = 0.000168085 secs -create_atoms 1 single 44.5 2.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 4.5 44.5 4 -Created 1 atoms - Time spent = 0.000168085 secs -create_atoms 1 single 24.5 13.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 47.5 23.5 4 -Created 1 atoms - Time spent = 0.00018096 secs -create_atoms 1 single 1 20 4 -Created 1 atoms - Time spent = 0.000166893 secs -create_atoms 1 single 38.5 31.5 4 -Created 1 atoms - Time spent = 0.000168085 secs -create_atoms 1 single 12.5 12.5 4 -Created 1 atoms - Time spent = 0.000169992 secs -create_atoms 1 single 2 27 4 -Created 1 atoms - Time spent = 0.000188828 secs -create_atoms 1 single 21 5 4 -Created 1 atoms - Time spent = 0.000174999 secs -create_atoms 1 single 47 12 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 32.5 46.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 9.5 40.5 4 -Created 1 atoms - Time spent = 0.000166893 secs -create_atoms 1 single 8.5 2.5 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 41.5 22.5 4 -Created 1 atoms - Time spent = 0.000174046 secs -create_atoms 1 single 29 11 4 -Created 1 atoms - Time spent = 0.000166893 secs -create_atoms 1 single 3.5 3.5 4 -Created 1 atoms - Time spent = 0.000165224 secs -create_atoms 1 single 5 21 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 46.5 31.5 4 -Created 1 atoms - Time spent = 0.000166178 secs -create_atoms 1 single 35 46 4 -Created 1 atoms - Time spent = 0.000183105 secs -create_atoms 1 single 40.5 41.5 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 10 22 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 43.5 14.5 4 -Created 1 atoms - Time spent = 0.000169992 secs -create_atoms 1 single 42 42 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 4 26 4 -Created 1 atoms - Time spent = 0.000174999 secs -create_atoms 1 single 19 34 4 -Created 1 atoms - Time spent = 0.000163078 secs -create_atoms 1 single 33 9 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 0.5 45.5 4 -Created 1 atoms - Time spent = 0.000163078 secs -create_atoms 1 single 30.5 32.5 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 25.5 5.5 4 -Created 1 atoms - Time spent = 0.000178099 secs -create_atoms 1 single 47.5 39.5 4 -Created 1 atoms - Time spent = 0.000165939 secs -create_atoms 1 single 15 13 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 21 21 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 14 28 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 9 34 4 -Created 1 atoms - Time spent = 0.000174999 secs -create_atoms 1 single 7 38 4 -Created 1 atoms - Time spent = 0.000175953 secs -create_atoms 1 single 11 35 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 20.5 45.5 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 30.5 31.5 4 -Created 1 atoms - Time spent = 0.000159979 secs -create_atoms 1 single 32.5 2.5 4 -Created 1 atoms - Time spent = 0.000166178 secs -create_atoms 1 single 21.5 3.5 4 -Created 1 atoms - Time spent = 0.000157833 secs -create_atoms 1 single 23 12 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 4.5 33.5 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 46 43 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 42.5 45.5 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 4.5 10.5 4 -Created 1 atoms - Time spent = 0.000158072 secs -create_atoms 1 single 33.5 15.5 4 -Created 1 atoms - Time spent = 0.000157833 secs -create_atoms 1 single 24 5 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 13 16 4 -Created 1 atoms - Time spent = 0.000158072 secs -create_atoms 1 single 16.5 23.5 4 -Created 1 atoms - Time spent = 0.000156164 secs -create_atoms 1 single 45.5 28.5 4 -Created 1 atoms - Time spent = 0.000247002 secs -create_atoms 1 single 44.5 5.5 4 -Created 1 atoms - Time spent = 0.000156164 secs -create_atoms 1 single 27.5 46.5 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 44.5 12.5 4 -Created 1 atoms - Time spent = 0.000157833 secs -create_atoms 1 single 12 41 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 6 4 4 -Created 1 atoms - Time spent = 0.0001688 secs -create_atoms 1 single 31.5 10.5 4 -Created 1 atoms - Time spent = 0.00015521 secs -create_atoms 1 single 1 44 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 31 4 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 21 33 4 -Created 1 atoms - Time spent = 0.000156879 secs -create_atoms 1 single 3 33 4 -Created 1 atoms - Time spent = 0.000164032 secs -create_atoms 1 single 15 10 4 -Created 1 atoms - Time spent = 0.0001719 secs -create_atoms 1 single 28.5 22.5 4 -Created 1 atoms - Time spent = 0.000153065 secs -create_atoms 1 single 43 1 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 3.5 0.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 41 37 4 -Created 1 atoms - Time spent = 0.000153065 secs -create_atoms 1 single 18.5 43.5 4 -Created 1 atoms - Time spent = 0.000213146 secs -create_atoms 1 single 17 27 4 -Created 1 atoms - Time spent = 0.000159979 secs -create_atoms 1 single 3 5 4 -Created 1 atoms - Time spent = 0.000153065 secs -create_atoms 1 single 18.5 23.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 31.5 14.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 41 31 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 22 3 4 -Created 1 atoms - Time spent = 0.00015521 secs -create_atoms 1 single 14.5 40.5 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 9 38 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 36 42 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 33 22 4 -Created 1 atoms - Time spent = 0.000163078 secs -create_atoms 1 single 15.5 47.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 3 0 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 25.5 27.5 4 -Created 1 atoms - Time spent = 0.000176907 secs -create_atoms 1 single 2.5 28.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 29.5 28.5 4 -Created 1 atoms - Time spent = 0.000162125 secs -create_atoms 1 single 44.5 18.5 4 -Created 1 atoms - Time spent = 0.000152826 secs -create_atoms 1 single 26 40 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 41 27 4 -Created 1 atoms - Time spent = 0.000158072 secs -create_atoms 1 single 39.5 5.5 4 -Created 1 atoms - Time spent = 0.000155926 secs -create_atoms 1 single 3 38 4 -Created 1 atoms - Time spent = 0.000152826 secs -create_atoms 1 single 35 29 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 11 19 4 -Created 1 atoms - Time spent = 0.000164986 secs -create_atoms 1 single 18 1 4 -Created 1 atoms - Time spent = 0.000146866 secs -create_atoms 1 single 39.5 40.5 4 -Created 1 atoms - Time spent = 0.000146866 secs -create_atoms 1 single 46 17 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 1.5 23.5 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 28.5 23.5 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 10 28 4 -Created 1 atoms - Time spent = 0.000159979 secs -create_atoms 1 single 19 47 4 -Created 1 atoms - Time spent = 0.000148058 secs -create_atoms 1 single 10.5 16.5 4 -Created 1 atoms - Time spent = 0.000147104 secs -create_atoms 1 single 38 45 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 42.5 41.5 4 -Created 1 atoms - Time spent = 0.000161886 secs -create_atoms 1 single 47.5 42.5 4 -Created 1 atoms - Time spent = 0.000147104 secs -create_atoms 1 single 38 7 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 10 44 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 29.5 27.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 45 30 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 3 9 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 8.5 35.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 24 44 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 47 4 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 7.5 8.5 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 32.5 41.5 4 -Created 1 atoms - Time spent = 0.000157833 secs -create_atoms 1 single 0.5 34.5 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 11 8 4 -Created 1 atoms - Time spent = 0.000147104 secs -create_atoms 1 single 2 40 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 25 24 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 47.5 6.5 4 -Created 1 atoms - Time spent = 0.000147104 secs -create_atoms 1 single 39.5 28.5 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 17 21 4 -Created 1 atoms - Time spent = 0.000164032 secs -create_atoms 1 single 32 43 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 16.5 29.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 34 34 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 11.5 3.5 4 -Created 1 atoms - Time spent = 0.000154018 secs -create_atoms 1 single 39 22 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 24.5 36.5 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 33 31 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 35.5 35.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 14.5 34.5 4 -Created 1 atoms - Time spent = 0.000146866 secs -create_atoms 1 single 34 28 4 -Created 1 atoms - Time spent = 0.000153065 secs -create_atoms 1 single 37 41 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 33 46 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 27.5 28.5 4 -Created 1 atoms - Time spent = 0.000145197 secs -create_atoms 1 single 40.5 22.5 4 -Created 1 atoms - Time spent = 0.000150919 secs -create_atoms 1 single 27.5 1.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 12 2 4 -Created 1 atoms - Time spent = 0.000151873 secs -create_atoms 1 single 36 43 4 -Created 1 atoms - Time spent = 0.000144005 secs -create_atoms 1 single 28.5 9.5 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 20.5 25.5 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 3 3 4 -Created 1 atoms - Time spent = 0.000144005 secs -create_atoms 1 single 38 33 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 3 20 4 -Created 1 atoms - Time spent = 0.000154972 secs -create_atoms 1 single 35 11 4 -Created 1 atoms - Time spent = 0.000145912 secs -create_atoms 1 single 5 25 4 -Created 1 atoms - Time spent = 0.000144005 secs -create_atoms 1 single 36.5 6.5 4 -Created 1 atoms - Time spent = 0.000144005 secs -create_atoms 1 single 19.5 24.5 4 -Created 1 atoms - Time spent = 0.000236988 secs -create_atoms 1 single 27 41 4 -Created 1 atoms - Time spent = 0.000169992 secs -create_atoms 1 single 39.5 11.5 4 -Created 1 atoms - Time spent = 0.000138998 secs -create_atoms 1 single 21.5 2.5 4 -Created 1 atoms - Time spent = 0.000136852 secs -create_atoms 1 single 46.5 15.5 4 -Created 1 atoms - Time spent = 0.000138998 secs -create_atoms 1 single 13 24 4 -Created 1 atoms - Time spent = 0.000137091 secs -create_atoms 1 single 11 37 4 -Created 1 atoms - Time spent = 0.000144005 secs -create_atoms 1 single 11.5 31.5 4 -Created 1 atoms - Time spent = 0.000144958 secs -create_atoms 1 single 47 0 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 25.5 17.5 4 -Created 1 atoms - Time spent = 0.00014019 secs -create_atoms 1 single 32 11 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 8 17 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 27.5 12.5 4 -Created 1 atoms - Time spent = 0.000137806 secs -create_atoms 1 single 25 7 4 -Created 1 atoms - Time spent = 0.000146151 secs -create_atoms 1 single 25.5 37.5 4 -Created 1 atoms - Time spent = 0.000139952 secs -create_atoms 1 single 12 15 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 1 7 4 -Created 1 atoms - Time spent = 0.000138998 secs -create_atoms 1 single 18.5 47.5 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 5 38 4 -Created 1 atoms - Time spent = 0.000136852 secs -create_atoms 1 single 42 19 4 -Created 1 atoms - Time spent = 0.000149012 secs -create_atoms 1 single 30.5 7.5 4 -Created 1 atoms - Time spent = 0.000138044 secs -create_atoms 1 single 42.5 7.5 4 -Created 1 atoms - Time spent = 0.000138998 secs -create_atoms 1 single 26.5 18.5 4 -Created 1 atoms - Time spent = 0.000153065 secs -create_atoms 1 single 18.5 1.5 4 -Created 1 atoms - Time spent = 0.000137091 secs -create_atoms 1 single 41.5 10.5 4 -Created 1 atoms - Time spent = 0.000140905 secs - -# define frozen substrate and mobile atoms - -region base block INF INF INF INF 0 1.8 -set region base type 2 - 18432 settings made for type -group base type 2 -18432 atoms in group base -group mobile type 1 -18616 atoms in group mobile - -# pair style - -pair_style eam/alloy -pair_coeff * * ptvoterlammps.eam Pt Pt - -neighbor 0.5 bin -neigh_modify every 1 delay 5 check yes - -fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes -fix 2 mobile langevin 400.0 400.0 1.0 826626413 zero yes - -timestep 0.005 - -compute tmobile mobile temp - -thermo 100 -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488) - -# thermal equilibration - -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 12 - binsize = 3.03792, bins = 62 62 7 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair eam/alloy, 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.359 | 3.359 | 3.36 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 -206220.22 0 -206220.22 -52155.664 - 100 188.18127 -206044.43 0 -205591.63 -25068.83 - 200 274.34464 -205860.78 0 -205200.66 -40191.797 - 300 325.66286 -205750.01 0 -204966.4 -31510.222 - 400 352.48242 -205675.42 0 -204827.28 -35058.064 - 500 370.88571 -205619.66 0 -204727.25 -32735.022 - 600 388.62129 -205592.87 0 -204657.78 -33904.556 - 700 389.54874 -205579.73 0 -204642.4 -32769.852 - 800 395.56074 -205576.82 0 -204625.03 -33755.948 - 900 398.03458 -205564.48 0 -204606.74 -32777.103 - 1000 401.24089 -205562.85 0 -204597.4 -33785.341 -Loop time of 4.3687 on 16 procs for 1000 steps with 37048 atoms - -Performance: 98.885 ns/day, 0.243 hours/ns, 228.901 timesteps/s -98.4% CPU use with 16 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 3.2988 | 3.3828 | 3.4667 | 2.3 | 77.43 -Neigh | 0.20856 | 0.23127 | 0.24382 | 1.9 | 5.29 -Comm | 0.33313 | 0.45075 | 0.55485 | 9.2 | 10.32 -Output | 0.00042987 | 0.00044042 | 0.00049591 | 0.0 | 0.01 -Modify | 0.18811 | 0.28363 | 0.36798 | 9.7 | 6.49 -Other | | 0.01983 | | | 0.45 - -Nlocal: 2315.5 ave 2332 max 2297 min -Histogram: 2 0 0 3 4 0 2 1 2 2 -Nghost: 3186.31 ave 3205 max 3170 min -Histogram: 2 1 3 0 2 3 2 1 0 2 -Neighs: 55590.9 ave 56174 max 55103 min -Histogram: 2 2 1 1 4 1 3 0 0 2 - -Total # of neighbors = 889454 -Ave neighs/atom = 24.0082 -Neighbor list builds = 105 -Dangerous builds = 0 -reset_timestep 0 - -# pin base so will not move during quenches - -fix freeze base setforce 0.0 0.0 0.0 - -# event detection - -compute event all event/displace ${cutevent} -compute event all event/displace 1.1 - -# hyper/local - -fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost} -fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0 - -# thermo output - -thermo_style custom step temp pe f_HL f_HL[*] -WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:705) - -thermo_modify lost ignore -thermo_modify temp tmobile -WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488) - -thermo ${nevent} -thermo 100 - -# dump - -region substrate block INF INF INF INF 1.8 3.8 -region adatoms block INF INF INF INF 3.8 INF -variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) - -dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green - -# run - -hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 1500 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 1500 100 HL event min ${tol} ${tol} 1000 1000 dump 1 -hyper 1500 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1 -hyper 1500 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1 -WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:133) -Neighbor list info ... - update every 1 steps, delay 0 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.07583 - ghost atom cutoff = 12 - binsize = 3.03792, bins = 62 62 7 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) pair eam/alloy, perpetual - attributes: half, newton on - pair build: half/bin/atomonly/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix hyper/local, occasional - attributes: full, newton on, cut 10 - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.566 | 7.567 | 7.567 Mbytes -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 0 401.24089 -205562.85 0 0 0 1 0 0 0 0 0 0 0 0 4e+19 0 0 0 0 0 0 0 0 0 0 0 - 77 401.24089 -206534.96 0 0 0 1 0 0 0 0 0 0 0 0 4e+19 0 0 0 0 0 0 0 1540 0 0 0 -Loop time of 0.540347 on 16 procs for 77 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 0 401.24089 -205562.85 23.271302 74 0.18753621 1 6.0138739 703.62325 0 0.55802338 3.5350432 0 0 0 4e+19 10.115141 10.115141 0 0 0 0 0 0 0 0 0 - 100 399.15639 -205546.21 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0 -Loop time of 0.579085 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 100 399.15639 -205546.21 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0 - 184 399.15639 -206534.96 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 49.934783 0.21714886 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 3680 0 0 0 -Loop time of 0.556056 on 16 procs for 84 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 100 399.15639 -205546.21 22.903938 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0 - 200 403.01717 -205543.17 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0 -Loop time of 0.581214 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 200 403.01717 -205543.17 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0 - 275 403.01717 -206534.96 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 66.145455 0.29040418 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 5500 0 0 0 -Loop time of 0.481812 on 16 procs for 75 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 200 403.01717 -205543.17 21.115577 91 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0 - 300 399.01963 -205541.46 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0 -Loop time of 0.5757 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 300 399.01963 -205541.46 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0 - 377 399.01963 -206534.96 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 73.225464 0.31760598 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 7540 0 0 0 -Loop time of 0.514907 on 16 procs for 77 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 300 399.01963 -205541.46 19.137003 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0 - 400 398.15351 -205544.87 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0 -Loop time of 0.577371 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 400 398.15351 -205544.87 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0 - 471 398.15351 -206534.96 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 78.163482 0.33881076 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 9420 0 0 0 -Loop time of 0.465473 on 16 procs for 71 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 400 398.15351 -205544.87 20.470689 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0 - 500 400.29399 -205544.98 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0907861 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0 -Loop time of 0.579188 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 500 400.29399 -205544.98 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0907861 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0 - 577 400.29399 -206534.96 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0910651 4.0779385 79.710572 0.3455768 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 11540 0 0 0 -Loop time of 0.502193 on 16 procs for 77 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 500 400.29399 -205544.98 17.051107 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0910651 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0 - 600 400.96099 -205544.56 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0 -Loop time of 0.694955 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 600 400.96099 -205544.56 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0 - 680 400.96099 -206534.96 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 81.188235 0.35174818 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 13600 0 0 0 -Loop time of 0.529041 on 16 procs for 80 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 600 400.96099 -205544.56 20.904088 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0 - 700 397.78618 -205534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 1.1853748 4.1995704 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 0 0 0 -Loop time of 0.590093 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 700 397.78618 -205534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 1.2139704 4.1995704 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 0 0 0 - 790 397.78618 -206534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 2.2107138 4.1995704 81.625316 0.35310868 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 15800 0 0 0 -Loop time of 0.594281 on 16 procs for 90 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 700 397.78618 -205534.96 20.236364 94 0.51088027 0.39757442 6.0138739 703.62325 0.061146951 2.2107138 4.205089 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 1 2 6 - 800 399.66919 -205547.44 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.2107138 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 1 2 6 -Loop time of 0.583824 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 800 399.66919 -205547.44 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.2107138 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 1 2 6 - 872 399.66919 -206535.54 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.3177682 4.3041291 84.739679 0.36548679 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 17440 1 2 6 -Loop time of 0.46886 on 16 procs for 72 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 800 399.66919 -205547.44 21.2852 94 0.44964213 0.39739855 6.0138739 703.62325 0.06556778 2.3177682 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 2 4 13 - 900 401.5853 -205544.22 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13 -Loop time of 0.585137 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 900 401.5853 -205544.22 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13 - 975 401.5853 -206535.54 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 84.939487 0.36762438 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 19500 2 4 13 -Loop time of 0.502012 on 16 procs for 75 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 900 401.5853 -205544.22 19.307938 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13 - 1000 395.06218 -205526.35 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13 -Loop time of 0.588597 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1000 395.06218 -205526.35 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13 - 1083 395.06218 -206535.54 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 85.421053 0.36763584 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 21660 2 4 13 -Loop time of 0.543222 on 16 procs for 83 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1000 395.06218 -205526.35 17.514191 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13 - 1100 400.04484 -205545.92 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 2 4 13 -Loop time of 0.590075 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1100 400.04484 -205545.92 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 2 4 13 - 1177 400.04484 -206535.53 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 86.464741 0.37201529 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 23540 2 4 13 -Loop time of 0.500839 on 16 procs for 77 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1100 400.04484 -205545.92 19.518413 89 0.429675 0.39705701 6.0137119 703.6043 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 3 6 19 - 1200 400.7462 -205543.2 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19 -Loop time of 0.583971 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1200 400.7462 -205543.2 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19 - 1277 400.7462 -206535.53 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 86.806578 0.37396584 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 25540 3 6 19 -Loop time of 0.509118 on 16 procs for 77 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1200 400.7462 -205543.2 21.169281 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19 - 1300 398.53702 -205539.33 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19 -Loop time of 0.587306 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1300 398.53702 -205539.33 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19 - 1375 398.53702 -206535.53 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 87.455273 0.37616341 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 27500 3 6 19 -Loop time of 0.483781 on 16 procs for 75 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1300 398.53702 -205539.33 21.35787 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19 - 1400 402.80537 -205549.3 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19 -Loop time of 0.586411 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1400 402.80537 -205549.3 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19 - 1471 402.80537 -206535.53 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 88.193746 0.37856948 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 29420 3 6 19 -Loop time of 0.473799 on 16 procs for 71 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1400 402.80537 -205549.3 19.481632 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19 - 1500 402.0803 -205537.7 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 92.857333 0.39767858 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 30000 3 6 19 -Loop time of 0.587342 on 16 procs for 100 steps with 37048 atoms - -Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23] - 1500 402.0803 -205537.7 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 92.857333 0.39767858 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 30000 3 6 19 - 1574 402.0803 -206535.53 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 88.491741 0.37898213 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 31480 3 6 19 -Loop time of 0.493982 on 16 procs for 74 steps with 37048 atoms - -Final hyper stats ... - -Cummulative quantities for fix hyper: - hyper time = 30000 - event timesteps = 3 - # of atoms in events = 6 -Quantities for this hyper run: - event timesteps = 3 - # of atoms in events = 6 - max length of any bond = 4.4266 - max drift distance of any atom = 2.31777 - fraction of steps & bonds with zero bias = 0.0704091 -Current quantities: - ave bonds/atom = 6.01371 -Cummulative quantities specific tofix hyper/local: - # of new bonds formed = 19 - max bonds/atom = 13 -Quantities for this hyper run specific to fix hyper/local: - ave boosted bonds/step = 92.8573 - ave boost coeff of all bonds = 0.397679 - max boost coeff of any bond = 0.414894 - min boost coeff of any bond = 0.383728 - max dist from my box of any non-maxstrain bond ghost atom = 10.333 - max dist from my box of any bond ghost atom = 10.3858 - count of ghost bond neighbors not found on reneighbor steps = 0 - lost bond partners = 0 - ave bias coeff for lost bond partners = 0 - bias overlaps = 0 - non-matching bias coeffs = 0 - CPU time for bond builds = 0.044807 -Current quantities specific to fix hyper/local: - neighbor bonds/bond = 703.604 - ave boost coeff for all bonds = 0.396356 - -Loop time of 17.9972 on 16 procs for 1500 steps with 37048 atoms - -Performance: 36.006 ns/day, 0.667 hours/ns, 83.346 timesteps/s -120.7% CPU use with 16 MPI tasks x no OpenMP threads - -Hyper stats: - Dynamics time (%) = 8.87027 (49.2869) - Quench time (%) = 8.15972 (45.3388) - Other time (%) = 1.2212 (6.78552) - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 11.6 | 11.848 | 12.043 | 3.9 | 65.83 -Neigh | 0.50025 | 0.52638 | 0.55163 | 2.1 | 2.92 -Comm | 0.34528 | 0.49905 | 0.66742 | 13.3 | 2.77 -Output | 0.0021305 | 0.0021461 | 0.0022686 | 0.1 | 0.01 -Modify | 3.7498 | 3.9009 | 3.9786 | 2.8 | 21.67 -Other | | 1.221 | | | 6.79 - -Nlocal: 2315.5 ave 2361 max 2267 min -Histogram: 1 1 0 4 2 1 3 3 0 1 -Nghost: 3187.88 ave 3236 max 3141 min -Histogram: 1 0 3 2 2 1 4 1 1 1 -Neighs: 53950.6 ave 54989 max 53049 min -Histogram: 2 0 3 2 1 2 4 1 0 1 -FullNghs: 542951 ave 554654 max 533224 min -Histogram: 1 2 3 1 2 2 2 2 0 1 - -Total # of neighbors = 8687214 -Ave neighs/atom = 234.485 -Neighbor list builds = 165 -Dangerous builds = 0 -Total wall time: 0:00:22 diff --git a/examples/hyper/log.25Mar19.hyper.global.g++.4 b/examples/hyper/log.25Mar19.hyper.global.g++.4 new file mode 100644 index 0000000000..6a066d0d66 --- /dev/null +++ b/examples/hyper/log.25Mar19.hyper.global.g++.4 @@ -0,0 +1,1250 @@ +LAMMPS (28 Feb 2019) +# 3d EAM surface for global HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 500.0 +variable Vmax index 0.5 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable cutevent index 1.1 +variable steps index 100000 +variable nevent index 1000 +variable zoom index 1.8 +variable seed index 826626413 +variable tol index 1.0e-15 + +units metal +atom_style atomic +atom_modify map array +boundary p p p + +lattice fcc 3.92 +Lattice spacing in x,y,z = 3.92 3.92 3.92 +region box block 0 6 0 6 0 4 +create_box 3 box +Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 576 atoms + Time spent = 0.000785828 secs + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f + orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) +create_atoms 2 single 3.5 3.5 4 +Created 1 atoms + Time spent = 5.79357e-05 secs + +# define frozen substrate and mobile atoms + +group adatom type 2 +1 atoms in group adatom +region base block INF INF INF INF 0 1.8 +set region base type 3 + 288 settings made for type +group base type 3 +288 atoms in group base +group mobile type 1 2 +289 atoms in group mobile + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 500.0 1.0 ${seed} zero yes +fix 2 mobile langevin 500.0 500.0 1.0 826626413 zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:487) + +# thermal equilibration + +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 6.07583 + binsize = 3.03792, bins = 8 8 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair eam/alloy, 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.327 | 3.327 | 3.327 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -3213.9136 0 -3213.9136 -51843.125 + 100 223.70164 -3209.0653 0 -3200.7375 -26575.84 + 200 345.18355 -3206.1371 0 -3193.2869 -42327.268 + 300 411.05681 -3203.8465 0 -3188.5442 -32455.226 + 400 446.05938 -3202.2976 0 -3185.6922 -35377.683 + 500 435.52439 -3200.2131 0 -3183.9999 -31477.028 + 600 474.70282 -3199.4049 0 -3181.7332 -34761.287 + 700 492.00191 -3201.1592 0 -3182.8435 -33036.989 + 800 440.88631 -3198.37 0 -3181.9572 -34669.762 + 900 475.14414 -3198.5845 0 -3180.8964 -31191.883 + 1000 476.87852 -3197.3442 0 -3179.5914 -33731.074 +Loop time of 0.339602 on 4 procs for 1000 steps with 577 atoms + +Performance: 1272.077 ns/day, 0.019 hours/ns, 2944.623 timesteps/s +98.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.25294 | 0.26196 | 0.27409 | 1.5 | 77.14 +Neigh | 0.017554 | 0.018856 | 0.020498 | 0.8 | 5.55 +Comm | 0.027196 | 0.040838 | 0.050409 | 4.2 | 12.03 +Output | 0.00025296 | 0.0002721 | 0.00030828 | 0.0 | 0.08 +Modify | 0.013425 | 0.014212 | 0.014999 | 0.5 | 4.18 +Other | | 0.00346 | | | 1.02 + +Nlocal: 144.25 ave 147 max 141 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Nghost: 527.5 ave 533 max 523 min +Histogram: 1 0 0 0 2 0 0 0 0 1 +Neighs: 3477.25 ave 3585 max 3399 min +Histogram: 1 0 1 0 1 0 0 0 0 1 + +Total # of neighbors = 13909 +Ave neighs/atom = 24.1057 +Neighbor list builds = 91 +Dangerous builds = 0 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} +compute event all event/displace 1.1 + +# hyper/global + +fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 ${qfactor} ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 0.3 ${Vmax} ${Tequil} +fix HG mobile hyper/global 3.2 0.3 0.5 ${Tequil} +fix HG mobile hyper/global 3.2 0.3 0.5 500.0 + +# thermo output + +thermo_style custom step temp pe f_HG f_HG[*] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:705) + +thermo_modify lost ignore +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:487) + +thermo ${nevent} +thermo 1000 + +# dump output options + +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) + +dump 1 all image 1000000 global.*.jpg v_acolor type zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump 1 all image 1000000 global.*.jpg v_acolor type zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green + +# run + +hyper ${steps} ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 ${nevent} HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min ${tol} ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min 1.0e-15 ${tol} 1000 1000 dump 1 +hyper 100000 1000 HG event min 1.0e-15 1.0e-15 1000 1000 dump 1 +WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:133) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 6.07583 + binsize = 3.03792, bins = 8 8 7 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix hyper/global, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.015 | 6.015 | 6.015 Mbytes +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 0 476.87852 -3197.3442 0 0 0 0 0 0 0 0 0 0 0 0 0 + 53 476.87852 -3217.9192 0 0 0 0 0 0 0 0 0 0 0 0 0 +Loop time of 0.0358047 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 0 476.87852 -3197.3442 0.33187212 2213.7063 0.17396269 129 131 6.0069324 0 0 0 3.3552688 0 0 0 + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 6.0069324 0.165 0 0 3.9974111 6134.6092 0 0 +Loop time of 0.342707 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 6.0069324 0.165 0 0 3.9974111 6134.6092 0 0 + 1059 487.34979 -3217.9192 0.19401776 90.283981 0.23468448 543 548 6.0069324 0.15580737 0 0 3.9974111 6134.6092 0 0 +Loop time of 0.0359111 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 1000 487.34979 -3198.3697 0.19401776 90.283981 0.23468448 543 548 6.0069324 0.165 0 0 3.9974111 6134.6092 0 0 + 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 6.0069324 0.1645 0 0 4.0370436 10213.644 0 0 +Loop time of 0.305975 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 6.0069324 0.1645 0 0 4.0370436 10213.644 0 0 + 2057 522.93873 -3217.9192 0.1540961 35.745265 0.24952495 120 131 6.0069324 0.15994166 0 0 4.0370436 10213.644 0 0 +Loop time of 0.0335248 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 2000 522.93873 -3197.4748 0.1540961 35.745265 0.24952495 120 131 6.0069324 0.1645 0 0 4.0370436 10213.644 0 0 + 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 6.0069324 0.145 0 0 4.0370436 13331.739 0 0 +Loop time of 0.269706 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 6.0069324 0.145 0 0 4.0370436 13331.739 0 0 + 3059 485.3853 -3217.9192 0.081070047 6.563707 0.27460406 120 131 6.0069324 0.14220333 0 0 4.0370436 13331.739 0 0 +Loop time of 0.0265908 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 3000 485.3853 -3198.0446 0.081070047 6.563707 0.27460406 120 131 6.0069324 0.145 0 0 4.0370436 13331.739 0 0 + 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 6.0069324 0.17575 0 0 4.0370436 14355.723 0 0 +Loop time of 0.229504 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 6.0069324 0.17575 0 0 4.0370436 14355.723 0 0 + 4060 522.88476 -3217.9192 0.020170911 1.5970319 0.29388643 548 555 6.0069324 0.17315271 0 0 4.0370436 14355.723 0 0 +Loop time of 0.0280094 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 4000 522.88476 -3199.0496 0.020170911 1.5970319 0.29388643 548 555 6.0069324 0.17575 0 0 4.0370436 14355.723 0 0 + 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 6.0069324 0.1664 0 0 4.0370436 19342.466 0 0 +Loop time of 0.234847 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 6.0069324 0.1664 0 0 4.0370436 19342.466 0 0 + 5054 462.24647 -3217.9192 0.11575138 14.679837 0.26299192 130 132 6.0069324 0.16462208 0 0 4.0370436 19342.466 0 0 +Loop time of 0.026547 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 5000 462.24647 -3197.3076 0.11575138 14.679837 0.26299192 130 132 6.0069324 0.1664 0 0 4.0370436 19342.466 0 0 + 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 6.0069324 0.15583333 0 0 4.0370436 22854.021 0 0 +Loop time of 0.244725 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 6.0069324 0.15583333 0 0 4.0370436 22854.021 0 0 + 6054 463.33022 -3217.9192 0.37378421 5855.6457 0.15072771 122 123 6.0069324 0.15444334 0 0 4.0370436 22854.021 0 0 +Loop time of 0.0267512 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 6000 463.33022 -3196.1897 0.37378421 5855.6457 0.15072771 122 123 6.0069324 0.15583333 0 0 4.0370436 22854.021 0 0 + 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 6.0069324 0.14885714 0 0 4.1079381 27854.511 0 0 +Loop time of 0.229727 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 6.0069324 0.14885714 0 0 4.1079381 27854.511 0 0 + 7055 496.34089 -3217.9192 0.29031005 843.70994 0.19427864 547 552 6.0069324 0.14769667 0 0 4.1079381 27854.511 0 0 +Loop time of 0.0260235 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 7000 496.34089 -3198.1795 0.29031005 843.70994 0.19427864 547 552 6.0069324 0.14885714 0 0 4.1079381 27854.511 0 0 + 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 6.0069324 0.14075 0.00175 0 4.1079381 31930.231 0 0 +Loop time of 0.230083 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 6.0069324 0.14075 0.00175 0 4.1079381 31930.231 0 0 + 8056 468.63017 -3217.9192 0 1 0.31412476 275 556 6.0069324 0.1397716 0.0017378352 0 4.1079381 31930.231 0 0 +Loop time of 0.0261552 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 8000 468.63017 -3197.6685 0 1 0.31412476 275 556 6.0069324 0.14075 0.00175 0 4.1079381 31930.231 0 0 + 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 6.0069324 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 +Loop time of 0.22948 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 6.0069324 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 + 9051 467.53307 -3217.9192 0 1 0.3075376 543 544 6.0069324 0.14804994 0.0015467904 0 4.1079381 35292.432 0 0 +Loop time of 0.0240657 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 9000 467.53307 -3198.3982 0 1 0.3075376 543 544 6.0069324 0.14888889 0.0015555556 0 4.1079381 35292.432 0 0 + 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 6.0069324 0.1531 0.0014 0 4.1079381 40303.236 0 0 +Loop time of 0.237951 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 6.0069324 0.1531 0.0014 0 4.1079381 40303.236 0 0 + 10061 496.73768 -3217.9192 0.11921512 15.908682 0.26180389 543 548 6.0069324 0.15217175 0.0013915118 0 4.1079381 40303.236 0 0 +Loop time of 0.0275102 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 10000 496.73768 -3197.9106 0.11921512 15.908682 0.26180389 543 548 6.0069324 0.1531 0.0014 0 4.1079381 40303.236 0 0 + 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 6.0069324 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 +Loop time of 0.226262 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 6.0069324 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 + 11058 526.76049 -3217.9192 0.24399827 287.99939 0.21466325 408 419 6.0069324 0.15861819 0.0012660517 0 4.1079381 42710.668 0 0 +Loop time of 0.0257103 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 11000 526.76049 -3199.3263 0.24399827 287.99939 0.21466325 408 419 6.0069324 0.15945455 0.0012727273 0 4.1079381 42710.668 0 0 + 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 6.0069324 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 +Loop time of 0.226415 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 6.0069324 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 + 12053 488.24107 -3217.9192 0.34073209 2719.0951 0.16931693 409 400 6.0069324 0.1548992 0.0011615365 0 4.1079381 47154.117 0 0 +Loop time of 0.0232868 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 12000 488.24107 -3198.2441 0.34073209 2719.0951 0.16931693 409 400 6.0069324 0.15558333 0.0011666667 0 4.1079381 47154.117 0 0 + 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 6.0069324 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 +Loop time of 0.234386 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 6.0069324 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 + 13055 467.87203 -3217.9192 0 1 0.32542353 275 556 6.0069324 0.14806588 0.0015319801 0 4.1079381 54700.864 0 0 +Loop time of 0.0268174 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 13000 467.87203 -3197.0681 0 1 0.32542353 275 556 6.0069324 0.14869231 0.0015384615 0 4.1079381 54700.864 0 0 + 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 6.0069324 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 +Loop time of 0.236772 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 6.0069324 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 + 14059 494.97859 -3217.9192 0.061678009 4.1849114 0.2808878 544 555 6.0069324 0.16814852 0.0014225763 0 4.1079381 55284.212 0 0 +Loop time of 0.0262685 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 14000 494.97859 -3197.9767 0.061678009 4.1849114 0.2808878 544 555 6.0069324 0.16885714 0.0014285714 0 4.1079381 55284.212 0 0 + 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 6.0069324 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 +Loop time of 0.228132 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 6.0069324 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 + 15056 487.47593 -3217.9192 0 1 0.30681413 124 135 6.0069324 0.16465197 0.0013283741 0 4.1079381 58845.637 0 0 +Loop time of 0.0253892 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 15000 487.47593 -3196.3193 0 1 0.30681413 124 135 6.0069324 0.16526667 0.0013333333 0 4.1079381 58845.637 0 0 + 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 6.0069324 0.160375 0.00125 0 4.1079381 65959.225 0 0 +Loop time of 0.226636 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 6.0069324 0.160375 0.00125 0 4.1079381 65959.225 0 0 + 16057 514.29619 -3217.9192 0.15192442 33.988268 0.25030702 287 568 6.0069324 0.15980569 0.0012455627 0 4.1079381 65959.225 0 0 +Loop time of 0.0258105 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 16000 514.29619 -3198.6976 0.15192442 33.988268 0.25030702 287 568 6.0069324 0.160375 0.00125 0 4.1079381 65959.225 0 0 + 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 6.0069324 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 +Loop time of 0.233751 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 6.0069324 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 + 17052 518.58789 -3217.9192 0.1333678 22.094631 0.25689258 116 123 6.0069324 0.16039174 0.0011728829 0 4.1079381 70525.413 0 0 +Loop time of 0.0248473 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 17000 518.58789 -3197.5021 0.1333678 22.094631 0.25689258 116 123 6.0069324 0.16088235 0.0011764706 0 4.1079381 70525.413 0 0 + 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 6.0069324 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 +Loop time of 0.240134 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 6.0069324 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 + 18056 505.83228 -3217.9192 0.08205079 6.7148239 0.27428244 552 563 6.0069324 0.15595924 0.001107665 0 4.1079381 73252.823 0 0 +Loop time of 0.0243995 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 18000 505.83228 -3198.9838 0.08205079 6.7148239 0.27428244 552 563 6.0069324 0.15644444 0.0011111111 0 4.1079381 73252.823 0 0 + 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 6.0069324 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 +Loop time of 0.22821 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 6.0069324 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 + 19052 527.41862 -3217.9192 0.040305357 2.5483534 0.28765437 424 263 6.0069324 0.15546924 0.0010497586 0 4.1079381 75984.28 0 0 +Loop time of 0.0237539 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 19000 527.41862 -3198.5008 0.040305357 2.5483534 0.28765437 424 263 6.0069324 0.15589474 0.0010526316 0 4.1079381 75984.28 0 0 + 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 6.0069324 0.15125 0.001 0 4.1079381 81688.471 0 0 +Loop time of 0.226179 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 6.0069324 0.15125 0.001 0 4.1079381 81688.471 0 0 + 20053 451.64207 -3217.9192 0.047092391 2.9831142 0.28552298 570 403 6.0069324 0.15085025 0.000997357 0 4.1079381 81688.471 0 0 +Loop time of 0.0244102 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 20000 451.64207 -3198.7796 0.047092391 2.9831142 0.28552298 570 403 6.0069324 0.15125 0.001 0 4.1079381 81688.471 0 0 + 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 6.0069324 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 +Loop time of 0.234504 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 6.0069324 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 + 21050 469.69339 -3217.9192 0 1 0.3308786 267 268 6.0069324 0.14817102 0.00095011876 0 4.1079381 87660.496 0 0 +Loop time of 0.0231035 on 4 procs for 50 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 21000 469.69339 -3200.6427 0 1 0.3308786 267 268 6.0069324 0.14852381 0.00095238095 0 4.1079381 87660.496 0 0 + 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 6.0069324 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 +Loop time of 0.235723 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 6.0069324 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 + 22054 473.26326 -3217.9192 0 1 0.31249141 544 555 6.0069324 0.14750159 0.00090686497 0 4.1079381 91920.285 0 0 +Loop time of 0.024776 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 22000 473.26326 -3199.3284 0 1 0.31249141 544 555 6.0069324 0.14786364 0.00090909091 0 4.1079381 91920.285 0 0 + 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 6.0069324 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 +Loop time of 0.229916 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 6.0069324 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 + 23056 496.07543 -3217.9192 0.30577111 1207.9075 0.18697914 572 403 6.0069324 0.15627169 0.0011276891 0 4.1079381 92558.536 0 0 +Loop time of 0.0252325 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 23000 496.07543 -3198.2605 0.30577111 1207.9075 0.18697914 572 403 6.0069324 0.15665217 0.0011304348 0 4.1079381 92558.536 0 0 + 24000 465.43821 -3199.468 0 1 0.31415739 543 544 6.0069324 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 +Loop time of 0.231022 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 24000 465.43821 -3199.468 0 1 0.31415739 543 544 6.0069324 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 + 24054 465.43821 -3217.9192 0 1 0.31415739 543 544 6.0069324 0.15431945 0.0010809013 0 4.1079381 97530.178 0 0 +Loop time of 0.0246248 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 24000 465.43821 -3199.468 0 1 0.31415739 543 544 6.0069324 0.15466667 0.0010833333 0 4.1079381 97530.178 0 0 + 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 6.0069324 0.15368 0.00104 0 4.1079381 103216.01 0 0 +Loop time of 0.239562 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 6.0069324 0.15368 0.00104 0 4.1079381 103216.01 0 0 + 25060 489.80528 -3217.9192 0.25812453 399.74019 0.20865662 543 544 6.0069324 0.15331205 0.00103751 0 4.1079381 103216.01 0 0 +Loop time of 0.0290521 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 25000 489.80528 -3200.439 0.25812453 399.74019 0.20865662 543 544 6.0069324 0.15368 0.00104 0 4.1079381 103216.01 0 0 + 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 6.0069324 0.15788462 0.001 0 4.1079381 106857.47 0 0 +Loop time of 0.231679 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 6.0069324 0.15788462 0.001 0 4.1079381 106857.47 0 0 + 26053 454.33199 -3217.9192 0.15449017 36.073692 0.24938278 283 272 6.0069324 0.15756343 0.00099796569 0 4.1079381 106857.47 0 0 +Loop time of 0.0229361 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 26000 454.33199 -3197.9264 0.15449017 36.073692 0.24938278 283 272 6.0069324 0.15788462 0.001 0 4.1079381 106857.47 0 0 + 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 6.0069324 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 +Loop time of 0.228356 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 6.0069324 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 + 27056 493.26662 -3217.9192 0.17523126 58.378293 0.24178166 260 271 6.0069324 0.15357037 0.00096096984 0 4.1079381 114287.4 0 0 +Loop time of 0.0249045 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 27000 493.26662 -3198.8515 0.17523126 58.378293 0.24178166 260 271 6.0069324 0.15388889 0.00096296296 0 4.1079381 114287.4 0 0 + 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 6.0069324 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 +Loop time of 0.226666 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 6.0069324 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 + 28054 516.59709 -3217.9192 0.017083929 1.486614 0.29483028 543 548 6.0069324 0.15249162 0.00092678406 0 4.1079381 117735.24 0 0 +Loop time of 0.0245788 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 28000 516.59709 -3198.7939 0.017083929 1.486614 0.29483028 543 548 6.0069324 0.15278571 0.00092857143 0 4.1079381 117735.24 0 0 + 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 6.0069324 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 +Loop time of 0.239195 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 6.0069324 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 + 29059 498.78313 -3217.9192 0 1 0.43523955 543 544 6.0069324 0.15616504 0.00089473141 0 4.3557073 122569.32 0 0 +Loop time of 0.0290976 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 29000 498.78313 -3197.7551 0 1 0.43523955 543 544 6.0069324 0.15648276 0.00089655172 0 4.3557073 122569.32 0 0 + 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 6.0069324 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 +Loop time of 0.232616 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 6.0069324 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 + 30059 466.86137 -3217.9192 0.23621441 240.39961 0.21790229 126 127 6.0069324 0.15725739 0.00086496557 0 4.3557073 127229.34 0 0 +Loop time of 0.0269623 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 30000 466.86137 -3199.5233 0.23621441 240.39961 0.21790229 126 127 6.0069324 0.15756667 0.00086666667 0 4.3557073 127229.34 0 0 + 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 6.0069324 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 +Loop time of 0.229214 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 6.0069324 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 + 31053 471.12992 -3217.9192 0 1 0.30984418 567 572 6.0069324 0.15515409 0.00086948121 0 4.3557073 131258.9 0 0 +Loop time of 0.0240388 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 31000 471.12992 -3199.7598 0 1 0.30984418 567 572 6.0069324 0.15541935 0.00087096774 0 4.3557073 131258.9 0 0 + 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 6.0069324 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 +Loop time of 0.230157 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 6.0069324 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 + 32057 510.4372 -3217.9192 0.38770138 8088.2308 0.14217507 511 546 6.0069324 0.1530087 0.00084224974 0 4.3557073 136077.46 0 0 +Loop time of 0.0259738 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 32000 510.4372 -3198.4263 0.38770138 8088.2308 0.14217507 511 546 6.0069324 0.15328125 0.00084375 0 4.3557073 136077.46 0 0 + 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 6.0069324 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 +Loop time of 0.240719 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 6.0069324 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 + 33055 517.9664 -3217.9192 0.065094278 4.5302347 0.27979105 136 255 6.0069324 0.1518681 0.00081682045 0 4.3557073 140653.16 0 0 +Loop time of 0.0254009 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 33000 517.9664 -3198.8477 0.065094278 4.5302347 0.27979105 136 255 6.0069324 0.15212121 0.00081818182 0 4.3557073 140653.16 0 0 + 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 6.0069324 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 +Loop time of 0.228472 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 6.0069324 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 + 34053 539.21923 -3217.9192 0.10137745 10.515709 0.26786575 119 400 6.0069324 0.15064752 0.00079288168 0 4.3557073 146106.36 0 0 +Loop time of 0.0239374 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 34000 539.21923 -3197.9619 0.10137745 10.515709 0.26786575 119 400 6.0069324 0.15088235 0.00079411765 0 4.3557073 146106.36 0 0 + 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 6.0069324 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 +Loop time of 0.227014 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 6.0069324 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 + 35061 495.28481 -3217.9192 0.03728079 2.3756005 0.28859913 543 544 6.0069324 0.14856964 0.00077008642 0 4.3557073 152132.21 0 0 +Loop time of 0.0271087 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 35000 495.28481 -3198.2101 0.03728079 2.3756005 0.28859913 543 544 6.0069324 0.14882857 0.00077142857 0 4.3557073 152132.21 0 0 + 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 6.0069324 0.14975 0.00075 0 4.3557073 155779.35 0 0 +Loop time of 0.230395 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 6.0069324 0.14975 0.00075 0 4.3557073 155779.35 0 0 + 36058 522.02047 -3217.9192 0.023049198 1.7073613 0.29300366 132 139 6.0069324 0.14950912 0.00074879361 0 4.3557073 155779.35 0 0 +Loop time of 0.0274341 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 36000 522.02047 -3197.5464 0.023049198 1.7073613 0.29300366 132 139 6.0069324 0.14975 0.00075 0 4.3557073 155779.35 0 0 + 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 6.0069324 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 +Loop time of 0.239665 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 6.0069324 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 + 37055 493.66881 -3217.9192 0.29065621 850.51576 0.19411822 110 121 6.0069324 0.14761841 0.00072864661 0 4.3557073 159446.9 0 0 +Loop time of 0.0258739 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 37000 493.66881 -3198.2972 0.29065621 850.51576 0.19411822 110 121 6.0069324 0.14783784 0.00072972973 0 4.3557073 159446.9 0 0 + 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 6.0069324 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 +Loop time of 0.231827 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 6.0069324 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 + 38050 471.56021 -3217.9192 0.21390468 143.23918 0.22692985 546 559 6.0069324 0.15030223 0.00070959264 0 4.3557073 161793.64 0 0 +Loop time of 0.0234141 on 4 procs for 50 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 38000 471.56021 -3200.0689 0.21390468 143.23918 0.22692985 546 559 6.0069324 0.1505 0.00071052632 0 4.3557073 161793.64 0 0 + 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 6.0069324 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 +Loop time of 0.227483 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 6.0069324 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 + 39062 488.60708 -3217.9192 0.29546108 950.85261 0.19187758 410 412 6.0069324 0.1486099 0.00069120885 0 4.3557073 167145.63 0 0 +Loop time of 0.028059 on 4 procs for 62 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 39000 488.60708 -3198.2279 0.29546108 950.85261 0.19187758 410 412 6.0069324 0.14884615 0.00069230769 0 4.3557073 167145.63 0 0 + 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 6.0069324 0.15095 0.000675 0 4.3557073 171194.28 0 0 +Loop time of 0.231293 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 6.0069324 0.15095 0.000675 0 4.3557073 171194.28 0 0 + 40064 507.73002 -3217.9192 0.012490865 1.3362947 0.29622904 543 544 6.0069324 0.15070887 0.00067392173 0 4.3557073 171194.28 0 0 +Loop time of 0.0308156 on 4 procs for 64 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 40000 507.73002 -3196.8491 0.012490865 1.3362947 0.29622904 543 544 6.0069324 0.15095 0.000675 0 4.3557073 171194.28 0 0 + 41000 479.11448 -3200.241 0 1 0.94094448 542 544 6.0069324 0.16480488 0.00065853659 0 5.4178316 171224.32 0 0 +Loop time of 0.239781 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 41000 479.11448 -3200.241 0 1 0.94094448 542 544 6.0069324 0.16480488 0.00065853659 0 5.4178316 171224.32 0 0 + 41055 479.11448 -3217.9192 0 1 0.94094448 542 544 6.0069324 0.16458409 0.00065765437 0 5.4178316 171224.32 0 0 +Loop time of 0.0248787 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 41000 479.11448 -3200.241 0.31626598 1541.0515 0.18185743 398 404 6.0069324 0.16480488 0.00065853659 2.3326665 5.4178316 171224.32 1 2 + 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 6.0069324 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 +Loop time of 0.226913 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 6.0069324 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 + 42056 495.84675 -3217.9192 0.1729929 55.422961 0.24261343 275 264 6.0069324 0.16901274 0.0011175575 2.3326665 5.4178316 174484.67 1 2 +Loop time of 0.0239749 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 42000 495.84675 -3198.6432 0.1729929 55.422961 0.24261343 275 264 6.0069324 0.1692381 0.0011190476 2.3326665 5.4178316 174484.67 1 2 + 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 6.0069324 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 +Loop time of 0.224798 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 6.0069324 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 + 43054 533.30453 -3217.9192 0 1 0.34377427 263 577 6.0069324 0.17624379 0.0010916523 2.3326665 5.4178316 175038.14 1 2 +Loop time of 0.0243425 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 43000 533.30453 -3198.6415 0 1 0.34377427 263 577 6.0069324 0.17646512 0.0010930233 2.3326665 5.4178316 175038.14 1 2 + 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 6.0069324 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 +Loop time of 0.23413 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 6.0069324 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 + 44056 497.19886 -3217.9192 0 1 0.32411085 262 264 6.0069324 0.17924914 0.001066824 2.3326665 5.4178316 175732.69 1 2 +Loop time of 0.0264681 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 44000 497.19886 -3199.3252 0 1 0.32411085 262 264 6.0069324 0.17947727 0.0010681818 2.3326665 5.4178316 175732.69 1 2 + 45000 501.66497 -3198.3133 0 1 0.89133337 262 264 6.0069324 0.18806667 0.0010444444 2.3326665 5.4178316 175885.32 1 2 +Loop time of 0.233324 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 45000 501.66497 -3198.3133 0 1 0.89133337 262 264 6.0069324 0.18806667 0.0010444444 2.3326665 5.4178316 175885.32 1 2 + 45053 501.66497 -3217.9192 0 1 0.89133337 262 264 6.0069324 0.18784543 0.0010432158 2.3326665 5.4178316 175885.32 1 2 +Loop time of 0.0239007 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 45000 501.66497 -3198.3133 0.31380779 1455.5922 0.18306993 549 547 6.0069324 0.18806667 0.0010444444 2.332667 5.4178316 175885.32 2 4 + 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 6.0069324 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 +Loop time of 0.227399 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 6.0069324 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 + 46058 512.99827 -3217.9192 0.30973921 1324.4339 0.18505929 547 552 6.0069324 0.18522298 0.0010204525 2.332667 5.4178316 180703.66 2 4 +Loop time of 0.025696 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 46000 512.99827 -3198.7869 0.30973921 1324.4339 0.18505929 547 552 6.0069324 0.18545652 0.0010217391 2.332667 5.4178316 180703.66 2 4 + 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 6.0069324 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 +Loop time of 0.232521 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 6.0069324 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 + 47062 508.06284 -3217.9192 0.17828926 62.67216 0.24064067 271 544 6.0069324 0.18380009 0.00099868259 2.332667 5.4178316 186245.92 2 4 +Loop time of 0.0288792 on 4 procs for 62 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 47000 508.06284 -3198.0819 0.17828926 62.67216 0.24064067 271 544 6.0069324 0.18404255 0.001 2.332667 5.4178316 186245.92 2 4 + 48000 512.83356 -3200.0643 0 1 0.96810224 258 544 6.0069324 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 2 4 +Loop time of 0.241704 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 48000 512.83356 -3200.0643 0 1 0.96810224 258 544 6.0069324 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 2 4 + 48051 512.83356 -3217.9192 0 1 0.96810224 258 544 6.0069324 0.19198352 0.00097812741 2.332667 5.5485401 188226.87 2 4 +Loop time of 0.0259903 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 48000 512.83356 -3200.0643 0.36239559 4495.5483 0.15738105 280 407 6.0069324 0.1921875 0.00097916667 2.332667 5.5485401 188226.87 3 6 + 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 6.0069324 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 +Loop time of 0.22826 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 6.0069324 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 + 49054 490.9639 -3217.9192 0.21113624 134.32512 0.22802517 114 115 6.0069324 0.18972969 0.00095812778 2.332667 5.5485401 191519.1 3 6 +Loop time of 0.024157 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 49000 490.9639 -3198.6936 0.21113624 134.32512 0.22802517 114 115 6.0069324 0.18993878 0.00095918367 2.332667 5.5485401 191519.1 3 6 + 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 6.0069324 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 +Loop time of 0.226578 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 6.0069324 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 + 50059 502.62206 -3217.9192 0.22799901 198.66723 0.22126947 119 400 6.0069324 0.18827783 0.00093889211 2.332667 5.5485401 195910.67 3 6 +Loop time of 0.0268276 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 50000 502.62206 -3199.7905 0.22799901 198.66723 0.22126947 119 400 6.0069324 0.1885 0.00094 2.332667 5.5485401 195910.67 3 6 + 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 6.0069324 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 +Loop time of 0.23022 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 6.0069324 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 + 51055 508.29336 -3217.9192 0.14109933 26.437299 0.25416947 264 275 6.0069324 0.18887474 0.00092057585 2.332667 5.5485401 199067.94 3 6 +Loop time of 0.0267057 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 51000 508.29336 -3198.9059 0.14109933 26.437299 0.25416947 264 275 6.0069324 0.18907843 0.00092156863 2.332667 5.5485401 199067.94 3 6 + 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 6.0069324 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 +Loop time of 0.248939 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 6.0069324 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 + 52061 506.84322 -3217.9192 0 1 0.35895473 264 275 6.0069324 0.19346536 0.00090278712 2.332667 5.5485401 199119.85 3 6 +Loop time of 0.0283017 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 52000 506.84322 -3198.7391 0 1 0.35895473 264 275 6.0069324 0.19369231 0.00090384615 2.332667 5.5485401 199119.85 3 6 + 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 6.0069324 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 +Loop time of 0.226147 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 6.0069324 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 + 53056 477.74415 -3217.9192 0 1 0.31797782 264 275 6.0069324 0.19584967 0.00088585645 2.332667 5.5485401 200597.61 3 6 +Loop time of 0.0249364 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 53000 477.74415 -3199.3706 0 1 0.31797782 264 275 6.0069324 0.1960566 0.00088679245 2.332667 5.5485401 200597.61 3 6 + 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 6.0069324 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 +Loop time of 0.242983 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 6.0069324 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 + 54051 467.64603 -3217.9192 0.12868765 19.820426 0.25852702 575 280 6.0069324 0.19596307 0.00086954913 2.332667 5.5485401 203111.2 3 6 +Loop time of 0.0256515 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 54000 467.64603 -3198.6476 0.12868765 19.820426 0.25852702 575 280 6.0069324 0.19614815 0.00087037037 2.332667 5.5485401 203111.2 3 6 + 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 6.0069324 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 +Loop time of 0.243744 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 6.0069324 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 + 55057 504.56378 -3217.9192 0.01979034 1.582988 0.29400296 556 567 6.0069324 0.19319977 0.00085366075 2.332667 5.5485401 209967.08 3 6 +Loop time of 0.0273646 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 55000 504.56378 -3198.2318 0.01979034 1.582988 0.29400296 556 567 6.0069324 0.1934 0.00085454545 2.332667 5.5485401 209967.08 3 6 + 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 6.0069324 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 +Loop time of 0.238614 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 6.0069324 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 + 56052 564.45428 -3217.9192 0.20223936 109.26492 0.23151007 78 91 6.0069324 0.19228573 0.0008385071 2.332667 5.5485401 215831.27 3 6 +Loop time of 0.0241504 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 56000 564.45428 -3198.7813 0.20223936 109.26492 0.23151007 78 91 6.0069324 0.19246429 0.00083928571 2.332667 5.5485401 215831.27 3 6 + 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 6.0069324 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 +Loop time of 0.30046 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 6.0069324 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 + 57059 515.72168 -3217.9192 0.31159686 1382.7848 0.18415364 544 577 6.0069324 0.19190662 0.00082370879 2.332667 5.5485401 222695.11 3 6 +Loop time of 0.0361512 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 57000 515.72168 -3198.6584 0.31159686 1382.7848 0.18415364 544 577 6.0069324 0.19210526 0.0008245614 2.332667 5.5485401 222695.11 3 6 + 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 6.0069324 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 +Loop time of 0.304723 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 6.0069324 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 + 58055 493.40021 -3217.9192 0 1 0.30931038 275 577 6.0069324 0.18971665 0.00080957713 2.332667 5.5485401 225894.02 3 6 +Loop time of 0.034838 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 58000 493.40021 -3198.8621 0 1 0.30931038 275 577 6.0069324 0.18989655 0.00081034483 2.332667 5.5485401 225894.02 3 6 + 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 6.0069324 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 +Loop time of 0.267864 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 6.0069324 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 + 59052 459.13337 -3217.9192 0.32299123 1801.3772 0.17849812 117 288 6.0069324 0.18883357 0.00079590869 2.332667 5.5485401 232785.62 3 6 +Loop time of 0.0229472 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 59000 459.13337 -3198.423 0.32299123 1801.3772 0.17849812 117 288 6.0069324 0.189 0.00079661017 2.332667 5.5485401 232785.62 3 6 + 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 6.0069324 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 +Loop time of 0.224423 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 6.0069324 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 + 60051 491.26878 -3217.9192 0.28012983 666.16416 0.19893876 560 567 6.0069324 0.1866247 0.00078266807 2.332667 5.5485401 236949.88 3 6 +Loop time of 0.0231369 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 60000 491.26878 -3198.9291 0.28012983 666.16416 0.19893876 560 567 6.0069324 0.18678333 0.00078333333 2.332667 5.5485401 236949.88 3 6 + 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 6.0069324 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 +Loop time of 0.228656 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 6.0069324 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 + 61053 469.65564 -3217.9192 0.086199081 7.3934564 0.27291787 562 564 6.0069324 0.18429889 0.00076982294 2.332667 5.5485401 245720.88 3 6 +Loop time of 0.0245876 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 61000 469.65564 -3198.3735 0.086199081 7.3934564 0.27291787 562 564 6.0069324 0.18445902 0.0007704918 2.332667 5.5485401 245720.88 3 6 + 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 6.0069324 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 +Loop time of 0.232165 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 6.0069324 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 + 62056 520.14843 -3217.9192 0.35275062 3593.8982 0.16280322 116 123 6.0069324 0.18296377 0.00075738043 2.332667 5.5485401 250136.37 3 6 +Loop time of 0.0275648 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 62000 520.14843 -3198.5458 0.35275062 3593.8982 0.16280322 116 123 6.0069324 0.18312903 0.00075806452 2.332667 5.5485401 250136.37 3 6 + 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 6.0069324 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 +Loop time of 0.236446 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 6.0069324 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 + 63059 506.90141 -3217.9192 0.019630501 1.5771264 0.29405188 577 555 6.0069324 0.18173457 0.00074533374 2.332667 5.5485401 257004.48 3 6 +Loop time of 0.0258729 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 63000 506.90141 -3196.9575 0.019630501 1.5771264 0.29405188 577 555 6.0069324 0.18190476 0.00074603175 2.332667 5.5485401 257004.48 3 6 + 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 6.0069324 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 +Loop time of 0.224694 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 6.0069324 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 + 64053 435.29185 -3217.9192 0.08981574 8.0408468 0.27172259 266 267 6.0069324 0.18045993 0.00073376735 2.332667 5.5485401 261196.79 3 6 +Loop time of 0.023932 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 64000 435.29185 -3197.3025 0.08981574 8.0408468 0.27172259 266 267 6.0069324 0.18060937 0.000734375 2.332667 5.5485401 261196.79 3 6 + 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 6.0069324 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 +Loop time of 0.225038 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 6.0069324 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 + 65053 484.45338 -3217.9192 0.27900382 648.98038 0.19944752 85 87 6.0069324 0.17940756 0.00072248782 2.332667 5.5485401 267611.45 3 6 +Loop time of 0.0248089 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 65000 484.45338 -3198.1013 0.27900382 648.98038 0.19944752 85 87 6.0069324 0.17955385 0.00072307692 2.332667 5.5485401 267611.45 3 6 + 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 6.0069324 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 +Loop time of 0.233376 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 6.0069324 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 + 66058 497.23553 -3217.9192 0.25525209 373.95984 0.20989193 412 411 6.0069324 0.17788913 0.00071149596 2.332667 5.5485401 274383.49 3 6 +Loop time of 0.0279601 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 66000 497.23553 -3199.036 0.25525209 373.95984 0.20989193 412 411 6.0069324 0.17804545 0.00071212121 2.332667 5.5485401 274383.49 3 6 + 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 6.0069324 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 +Loop time of 0.237521 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 6.0069324 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 + 67055 488.34684 -3217.9192 0.27967841 659.2212 0.19914288 264 275 6.0069324 0.1792111 0.00070091716 2.332667 5.5485401 274635.62 3 6 +Loop time of 0.0262208 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 67000 488.34684 -3198.7152 0.27967841 659.2212 0.19914288 264 275 6.0069324 0.17935821 0.00070149254 2.332667 5.5485401 274635.62 3 6 + 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 6.0069324 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 +Loop time of 0.224043 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 6.0069324 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 + 68060 547.06201 -3217.9192 0.11427629 14.185774 0.26349624 261 263 6.0069324 0.17866588 0.00069056715 2.332667 5.5485401 277575.99 3 6 +Loop time of 0.0288572 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 68000 547.06201 -3198.7151 0.11427629 14.185774 0.26349624 261 263 6.0069324 0.17882353 0.00069117647 2.332667 5.5485401 277575.99 3 6 + 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 6.0069324 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 +Loop time of 0.227692 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 6.0069324 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 + 69056 508.94771 -3217.9192 0.10069537 10.350552 0.26809482 264 275 6.0069324 0.18080978 0.00068060704 2.332667 5.5485401 279847.52 3 6 +Loop time of 0.0247979 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 69000 508.94771 -3198.9475 0.10069537 10.350552 0.26809482 264 275 6.0069324 0.18095652 0.00068115942 2.332667 5.5485401 279847.52 3 6 + 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 6.0069324 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 +Loop time of 0.232204 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 6.0069324 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 + 70054 499.92534 -3217.9192 0.3528879 3605.3669 0.16272731 283 288 6.0069324 0.18128872 0.00072800982 2.332667 5.5485401 281504.52 3 6 +Loop time of 0.0249009 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 70000 499.92534 -3198.5636 0.3528879 3605.3669 0.16272731 283 288 6.0069324 0.18142857 0.00072857143 2.332667 5.5485401 281504.52 3 6 + 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 6.0069324 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 +Loop time of 0.229025 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 6.0069324 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 + 71059 506.70688 -3217.9192 0.082678879 6.813425 0.27407627 541 543 6.0069324 0.18035717 0.00071771345 2.332667 5.5485401 286003.61 3 6 +Loop time of 0.0265949 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 71000 506.70688 -3197.313 0.082678879 6.813425 0.27407627 541 543 6.0069324 0.18050704 0.00071830986 2.332667 5.5485401 286003.61 3 6 + 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 6.0069324 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 +Loop time of 0.228346 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 6.0069324 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 + 72053 464.23294 -3217.9192 0 1 0.31542276 275 577 6.0069324 0.1825323 0.0007078123 2.332667 5.5485401 286734.83 3 6 +Loop time of 0.026114 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 72000 464.23294 -3197.7357 0 1 0.31542276 275 577 6.0069324 0.18266667 0.00070833333 2.332667 5.5485401 286734.83 3 6 + 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 6.0069324 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 +Loop time of 0.229123 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 6.0069324 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 + 73054 529.30216 -3217.9192 0.1005148 10.307265 0.26815543 411 416 6.0069324 0.18380924 0.00069811372 2.332667 5.5485401 287872.93 3 6 +Loop time of 0.0243089 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 73000 529.30216 -3198.1231 0.1005148 10.307265 0.26815543 411 416 6.0069324 0.18394521 0.00069863014 2.332667 5.5485401 287872.93 3 6 + 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 6.0069324 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 +Loop time of 0.236133 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 6.0069324 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 + 74055 490.65557 -3217.9192 0.14904687 31.792497 0.25133954 111 116 6.0069324 0.18309365 0.00068867733 2.332667 5.5485401 294766.16 3 6 +Loop time of 0.0264881 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 74000 490.65557 -3199.6766 0.14904687 31.792497 0.25133954 111 116 6.0069324 0.18322973 0.00068918919 2.332667 5.5485401 294766.16 3 6 + 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 6.0069324 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 +Loop time of 0.228974 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 6.0069324 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 + 75053 475.22638 -3217.9192 0.37341486 5805.6632 0.15094809 563 564 6.0069324 0.18199139 0.00073281548 2.332667 5.5485401 302150.54 3 6 +Loop time of 0.0246332 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 75000 475.22638 -3198.1558 0.37341486 5805.6632 0.15094809 563 564 6.0069324 0.18212 0.00073333333 2.332667 5.5485401 302150.54 3 6 + 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 6.0069324 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 +Loop time of 0.223991 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 6.0069324 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 + 76058 523.91803 -3217.9192 0.038679316 2.4539737 0.28816267 263 264 6.0069324 0.18272897 0.00072313235 2.332667 5.5485401 304160.3 3 6 +Loop time of 0.0268497 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 76000 523.91803 -3198.8966 0.038679316 2.4539737 0.28816267 263 264 6.0069324 0.18286842 0.00072368421 2.332667 5.5485401 304160.3 3 6 + 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 6.0069324 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 +Loop time of 0.226324 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 6.0069324 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 + 77059 511.16512 -3217.9192 0 1 0.31251901 264 275 6.0069324 0.18776522 0.00071373882 2.332667 5.5485401 304174.43 3 6 +Loop time of 0.026314 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 77000 511.16512 -3199.1926 0 1 0.31251901 264 275 6.0069324 0.18790909 0.00071428571 2.332667 5.5485401 304174.43 3 6 + 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 6.0069324 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 +Loop time of 0.234504 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 6.0069324 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 + 78062 554.58169 -3217.9192 0.022175428 1.6730858 0.29327193 263 264 6.0069324 0.19022059 0.00094796444 2.332667 5.5485401 304438.98 3 6 +Loop time of 0.0297351 on 4 procs for 62 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 78000 554.58169 -3199.0107 0.022175428 1.6730858 0.29327193 263 264 6.0069324 0.19037179 0.00094871795 2.332667 5.5485401 304438.98 3 6 + 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 6.0069324 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 +Loop time of 0.228044 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 6.0069324 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 + 79057 523.97176 -3217.9192 0.1672356 48.490735 0.24473985 556 567 6.0069324 0.1900401 0.00093603349 2.332667 5.5485401 306076.23 3 6 +Loop time of 0.026444 on 4 procs for 57 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 79000 523.97176 -3198.2366 0.1672356 48.490735 0.24473985 556 567 6.0069324 0.19017722 0.00093670886 2.332667 5.5485401 306076.23 3 6 + 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 6.0069324 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 +Loop time of 0.224854 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 6.0069324 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 + 80059 479.09781 -3217.9192 0 1 0.30854872 263 577 6.0069324 0.19007232 0.00092431832 2.332667 5.5485401 308522.09 3 6 +Loop time of 0.0272751 on 4 procs for 59 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 80000 479.09781 -3197.6134 0 1 0.30854872 263 577 6.0069324 0.1902125 0.000925 2.332667 5.5485401 308522.09 3 6 + 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 6.0069324 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 +Loop time of 0.226269 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 6.0069324 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 + 81056 517.52613 -3217.9192 0.29863857 1023.6251 0.19038135 254 256 6.0069324 0.18983172 0.00091294907 2.332667 5.5485401 311171.12 3 6 +Loop time of 0.0258186 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 81000 517.52613 -3198.2236 0.29863857 1023.6251 0.19038135 254 256 6.0069324 0.18996296 0.00091358025 2.332667 5.5485401 311171.12 3 6 + 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 6.0069324 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 +Loop time of 0.235559 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 6.0069324 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 + 82055 503.95678 -3217.9192 0.091495497 8.3605139 0.27116565 263 264 6.0069324 0.18849552 0.0010358906 2.332667 5.5485401 315319.38 3 6 +Loop time of 0.0261242 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 82000 503.95678 -3197.7481 0.091495497 8.3605139 0.27116565 263 264 6.0069324 0.18862195 0.0010365854 2.332667 5.5485401 315319.38 3 6 + 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 6.0069324 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 +Loop time of 0.227873 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 6.0069324 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 + 83064 537.67639 -3217.9192 0 1 0.32414276 263 264 6.0069324 0.18955263 0.0010233073 2.332667 5.5485401 316613.84 3 6 +Loop time of 0.0301323 on 4 procs for 64 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 83000 537.67639 -3197.6886 0 1 0.32414276 263 264 6.0069324 0.1896988 0.0010240964 2.332667 5.5485401 316613.84 3 6 + 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 6.0069324 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 +Loop time of 0.228573 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 6.0069324 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 + 84052 510.26841 -3217.9192 0.23554832 236.71181 0.21817723 142 424 6.0069324 0.18988245 0.0010112787 2.332667 5.5485401 318598.08 3 6 +Loop time of 0.0254717 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 84000 510.26841 -3199.5428 0.23554832 236.71181 0.21817723 142 424 6.0069324 0.19 0.0010119048 2.332667 5.5485401 318598.08 3 6 + 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 6.0069324 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 +Loop time of 0.231174 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 6.0069324 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 + 85055 472.16876 -3217.9192 0 1 0.34247044 264 275 6.0069324 0.18958321 0.00099935336 2.332667 5.5485401 323882.61 3 6 +Loop time of 0.0253472 on 4 procs for 55 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 85000 472.16876 -3197.5248 0 1 0.34247044 264 275 6.0069324 0.18970588 0.001 2.332667 5.5485401 323882.61 3 6 + 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 6.0069324 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 +Loop time of 0.241364 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 6.0069324 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 + 86053 509.30024 -3217.9192 0.20619306 119.76563 0.22996793 275 276 6.0069324 0.19098695 0.00098776336 2.332667 5.5485401 325788.44 3 6 +Loop time of 0.0262635 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 86000 509.30024 -3198.3226 0.20619306 119.76563 0.22996793 275 276 6.0069324 0.19110465 0.00098837209 2.332667 5.5485401 325788.44 3 6 + 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 6.0069324 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 +Loop time of 0.230381 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 6.0069324 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 + 87058 478.57944 -3217.9192 0.19192384 86.001287 0.23548611 260 271 6.0069324 0.18966666 0.00097636059 2.332667 5.5485401 330047.59 3 6 +Loop time of 0.0275965 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 87000 478.57944 -3199.3497 0.19192384 86.001287 0.23548611 260 271 6.0069324 0.1897931 0.00097701149 2.332667 5.5485401 330047.59 3 6 + 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 6.0069324 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 +Loop time of 0.229339 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 6.0069324 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 + 88050 515.63138 -3217.9192 0.35491784 3779.2911 0.16160071 543 577 6.0069324 0.18816581 0.00096536059 2.332667 5.5485401 337304.34 3 6 +Loop time of 0.0253522 on 4 procs for 50 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 88000 515.63138 -3198.9629 0.35491784 3779.2911 0.16160071 543 577 6.0069324 0.18827273 0.00096590909 2.332667 5.5485401 337304.34 3 6 + 89000 520.37063 -3197.8234 0 1 0.92013924 262 275 6.0069324 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 3 6 +Loop time of 0.234048 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 89000 520.37063 -3197.8234 0 1 0.92013924 262 275 6.0069324 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 3 6 + 89052 520.37063 -3217.9192 0 1 0.92013924 262 275 6.0069324 0.19137133 0.00111171 2.332667 5.5485401 339909.57 3 6 +Loop time of 0.0242915 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 89000 520.37063 -3197.8234 0.34652166 3110.1454 0.16621101 111 112 6.0069324 0.19148315 0.0011123596 2.332667 5.5485401 339909.57 4 8 + 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 6.0069324 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 +Loop time of 0.239736 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 6.0069324 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 + 90058 455.69218 -3217.9192 0.30521336 1192.3721 0.18724742 416 415 6.0069324 0.19037731 0.0010992916 2.332667 5.5485401 345606.41 4 8 +Loop time of 0.027481 on 4 procs for 58 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 90000 455.69218 -3197.8262 0.30521336 1192.3721 0.18724742 416 415 6.0069324 0.1905 0.0011 2.332667 5.5485401 345606.41 4 8 + 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 6.0069324 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 +Loop time of 0.23396 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 6.0069324 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 + 91051 506.17768 -3217.9192 0.035696451 2.2898339 0.28909279 547 548 6.0069324 0.18972883 0.0010873027 2.332667 5.5485401 350825.27 4 8 +Loop time of 0.0249534 on 4 procs for 51 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 91000 506.17768 -3197.1344 0.035696451 2.2898339 0.28909279 547 548 6.0069324 0.18983516 0.0010879121 2.332667 5.5485401 350825.27 4 8 + 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 6.0069324 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 +Loop time of 0.233376 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 6.0069324 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 + 92060 478.3025 -3217.9192 0 1 0.30393958 544 556 6.0069324 0.19184228 0.0010753856 2.332667 5.5485401 352816.62 4 8 +Loop time of 0.0286014 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 92000 478.3025 -3197.9483 0 1 0.30393958 544 556 6.0069324 0.19196739 0.001076087 2.332667 5.5485401 352816.62 4 8 + 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 6.0069324 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 +Loop time of 0.234626 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 6.0069324 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 + 93056 485.23153 -3217.9192 0.16699022 48.215364 0.24483006 544 556 6.0069324 0.19408743 0.0010638755 2.332667 5.5485401 354391.05 4 8 +Loop time of 0.0261769 on 4 procs for 56 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 93000 485.23153 -3199.9299 0.16699022 48.215364 0.24483006 544 556 6.0069324 0.1942043 0.0010645161 2.332667 5.5485401 354391.05 4 8 + 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 6.0069324 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 +Loop time of 0.229448 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 6.0069324 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 + 94061 499.72991 -3217.9192 0 1 0.30394408 544 556 6.0069324 0.19431008 0.0010525085 2.332667 5.5485401 360147.54 4 8 +Loop time of 0.0281783 on 4 procs for 61 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 94000 499.72991 -3199.3195 0 1 0.30394408 544 556 6.0069324 0.19443617 0.0010531915 2.332667 5.5485401 360147.54 4 8 + 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 6.0069324 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 +Loop time of 0.224206 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 6.0069324 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 + 95060 509.83941 -3217.9192 0.078854869 6.234781 0.27532912 555 556 6.0069324 0.1966863 0.0010414475 2.332667 5.5485401 360599.28 4 8 +Loop time of 0.027992 on 4 procs for 60 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 95000 509.83941 -3199.0903 0.078854869 6.234781 0.27532912 555 556 6.0069324 0.19681053 0.0010421053 2.332667 5.5485401 360599.28 4 8 + 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 6.0069324 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 +Loop time of 0.228167 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 6.0069324 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 + 96053 486.83779 -3217.9192 0.31070799 1354.5503 0.18458755 136 431 6.0069324 0.19610007 0.001030681 2.332667 5.5485401 365489.89 4 8 +Loop time of 0.024569 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 96000 486.83779 -3197.2106 0.31070799 1354.5503 0.18458755 136 431 6.0069324 0.19620833 0.00103125 2.332667 5.5485401 365489.89 4 8 + 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 6.0069324 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 +Loop time of 0.23889 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 6.0069324 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 + 97052 499.91835 -3217.9192 0.2280334 198.82589 0.22125548 280 111 6.0069324 0.19481309 0.0010200717 2.332667 5.5485401 372336.45 4 8 +Loop time of 0.0262206 on 4 procs for 52 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 97000 499.91835 -3199.2446 0.2280334 198.82589 0.22125548 280 111 6.0069324 0.19491753 0.0010206186 2.332667 5.5485401 372336.45 4 8 + 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 6.0069324 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 +Loop time of 0.239305 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 6.0069324 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 + 98054 547.56456 -3217.9192 0.27848637 641.23302 0.19968088 430 136 6.0069324 0.1956371 0.0010096477 2.332667 5.5485401 377711.41 4 8 +Loop time of 0.0272166 on 4 procs for 54 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 98000 547.56456 -3197.2191 0.27848637 641.23302 0.19968088 430 136 6.0069324 0.1957449 0.0010102041 2.332667 5.5485401 377711.41 4 8 + 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 6.0069324 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 +Loop time of 0.235176 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 6.0069324 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 + 99053 504.19627 -3217.9192 0 1 0.33814873 287 276 6.0069324 0.19506729 0.00099946493 2.332667 5.5485401 381676.19 4 8 +Loop time of 0.0249114 on 4 procs for 53 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 99000 504.19627 -3196.6567 0 1 0.33814873 287 276 6.0069324 0.19517172 0.001 2.332667 5.5485401 381676.19 4 8 + 100000 542.04702 -3198.2211 0.37630331 6208.2061 0.14921597 563 564 6.0069324 0.19442 0.00099 2.332667 5.5485401 385211.4 4 8 +Loop time of 0.226452 on 4 procs for 1000 steps with 577 atoms + +Step Temp PotEng f_HG f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] f_HG[12] + 100000 542.04702 -3198.2211 0.37630331 6208.2061 0.14921597 563 564 6.0069324 0.19442 0.00099 2.332667 5.5485401 385211.4 4 8 + 100060 542.04702 -3217.9192 0.37630331 6208.2061 0.14921597 563 564 6.0069324 0.19430342 0.00098940636 2.332667 5.5485401 385211.4 4 8 +Loop time of 0.0303354 on 4 procs for 60 steps with 577 atoms + +Final hyper stats ... + +Cummulative quantities for fix hyper: + hyper time = 385211 + time boost factor = 770.423 + event timesteps = 4 + # of atoms in events = 8 +Quantities for this hyper run: + event timesteps = 4 + # of atoms in events = 8 + max length of any bond = 5.54854 + max drift distance of any atom = 2.33267 + fraction of biased bonds with zero bias = 0.19442 + fraction of biased bonds with negative strain = 0.00099 +Current quantities: + ave bonds/atom = 6.00693 + +Loop time of 26.6054 on 4 procs for 100000 steps with 577 atoms + +Performance: 1623.732 ns/day, 0.015 hours/ns, 3758.639 timesteps/s +100.6% CPU use with 4 MPI tasks x no OpenMP threads + +Hyper stats: + Dynamics time (%) = 23.5897 (88.665) + Quench time (%) = 2.6357 (9.90664) + Other time (%) = 0.875172 (3.28945) + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.942 | 19.435 | 20.026 | 10.1 | 73.05 +Neigh | 1.3021 | 1.3833 | 1.4611 | 6.2 | 5.20 +Comm | 2.1376 | 2.1725 | 2.2239 | 2.2 | 8.17 +Output | 0.0033467 | 0.0034443 | 0.0037186 | 0.3 | 0.01 +Modify | 2.0693 | 2.7356 | 3.2627 | 30.2 | 10.28 +Other | | 0.8752 | | | 3.29 + +Nlocal: 144.25 ave 152 max 139 min +Histogram: 1 1 0 0 1 0 0 0 0 1 +Nghost: 533.25 ave 538 max 526 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Neighs: 3368.25 ave 3528 max 3240 min +Histogram: 1 1 0 0 0 0 1 0 0 1 + +Total # of neighbors = 13473 +Ave neighs/atom = 23.3501 +Neighbor list builds = 10072 +Dangerous builds = 0 +Total wall time: 0:00:27 diff --git a/examples/hyper/log.25Mar19.hyper.local.g++.16 b/examples/hyper/log.25Mar19.hyper.local.g++.16 new file mode 100644 index 0000000000..b56406f963 --- /dev/null +++ b/examples/hyper/log.25Mar19.hyper.local.g++.16 @@ -0,0 +1,1002 @@ +LAMMPS (28 Feb 2019) +# 3d EAM surface for local HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 400.0 +variable Vmax index 0.4 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable Dcut index 10.0 +variable cutevent index 1.1 +variable alpha index 200.0 +variable boost index 4000.0 +variable ghostcut index 12.0 +variable steps index 1500 +variable nevent index 100 +variable nx index 8 +variable ny index 8 +variable zoom index 1.8 +variable seed index 826626413 +variable tol index 1.0e-15 +variable add index 37K + +units metal +atom_style atomic +atom_modify map array +boundary p p p +comm_modify cutoff ${ghostcut} +comm_modify cutoff 12.0 + +lattice fcc 3.92 +Lattice spacing in x,y,z = 3.92 3.92 3.92 +region box block 0 6 0 6 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (23.52 23.52 15.68) + 2 by 4 by 2 MPI processor grid +create_atoms 1 box +Created 576 atoms + Time spent = 0.00110102 secs + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f + orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6) + +# replicate in xy + +replicate ${nx} ${ny} 1 +replicate 8 ${ny} 1 +replicate 8 8 1 + orthogonal box = (0 0 -0.392) to (188.16 188.16 19.6) + 4 by 4 by 1 MPI processor grid + 36864 atoms + Time spent = 0.00289989 secs + +# add adatoms + +include adatoms.list.${add} +include adatoms.list.37K +create_atoms 1 single 27.5 9.5 4 +Created 1 atoms + Time spent = 0.000200033 secs +create_atoms 1 single 16 9 4 +Created 1 atoms + Time spent = 0.000183105 secs +create_atoms 1 single 10 12 4 +Created 1 atoms + Time spent = 0.000180006 secs +create_atoms 1 single 31 44 4 +Created 1 atoms + Time spent = 0.000190973 secs +create_atoms 1 single 13 17 4 +Created 1 atoms + Time spent = 0.000185013 secs +create_atoms 1 single 8.5 28.5 4 +Created 1 atoms + Time spent = 0.00018692 secs +create_atoms 1 single 23 26 4 +Created 1 atoms + Time spent = 0.000179052 secs +create_atoms 1 single 38 27 4 +Created 1 atoms + Time spent = 0.000191927 secs +create_atoms 1 single 37.5 4.5 4 +Created 1 atoms + Time spent = 0.000238895 secs +create_atoms 1 single 41.5 47.5 4 +Created 1 atoms + Time spent = 0.000191927 secs +create_atoms 1 single 20.5 37.5 4 +Created 1 atoms + Time spent = 0.000185966 secs +create_atoms 1 single 5 8 4 +Created 1 atoms + Time spent = 0.000170946 secs +create_atoms 1 single 2.5 16.5 4 +Created 1 atoms + Time spent = 0.000174046 secs +create_atoms 1 single 38.5 45.5 4 +Created 1 atoms + Time spent = 0.000172853 secs +create_atoms 1 single 9 0 4 +Created 1 atoms + Time spent = 0.000187159 secs +create_atoms 1 single 39 32 4 +Created 1 atoms + Time spent = 0.000180006 secs +create_atoms 1 single 45.5 11.5 4 +Created 1 atoms + Time spent = 0.000189066 secs +create_atoms 1 single 40 0 4 +Created 1 atoms + Time spent = 0.000170946 secs +create_atoms 1 single 44.5 2.5 4 +Created 1 atoms + Time spent = 0.000191927 secs +create_atoms 1 single 4.5 44.5 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 24.5 13.5 4 +Created 1 atoms + Time spent = 0.000166893 secs +create_atoms 1 single 47.5 23.5 4 +Created 1 atoms + Time spent = 0.000181913 secs +create_atoms 1 single 1 20 4 +Created 1 atoms + Time spent = 0.000167131 secs +create_atoms 1 single 38.5 31.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 12.5 12.5 4 +Created 1 atoms + Time spent = 0.000165939 secs +create_atoms 1 single 2 27 4 +Created 1 atoms + Time spent = 0.000170231 secs +create_atoms 1 single 21 5 4 +Created 1 atoms + Time spent = 0.00018096 secs +create_atoms 1 single 47 12 4 +Created 1 atoms + Time spent = 0.000166178 secs +create_atoms 1 single 32.5 46.5 4 +Created 1 atoms + Time spent = 0.000166893 secs +create_atoms 1 single 9.5 40.5 4 +Created 1 atoms + Time spent = 0.000165939 secs +create_atoms 1 single 8.5 2.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 41.5 22.5 4 +Created 1 atoms + Time spent = 0.000175953 secs +create_atoms 1 single 29 11 4 +Created 1 atoms + Time spent = 0.000165939 secs +create_atoms 1 single 3.5 3.5 4 +Created 1 atoms + Time spent = 0.000174999 secs +create_atoms 1 single 5 21 4 +Created 1 atoms + Time spent = 0.0001719 secs +create_atoms 1 single 46.5 31.5 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 35 46 4 +Created 1 atoms + Time spent = 0.000178099 secs +create_atoms 1 single 40.5 41.5 4 +Created 1 atoms + Time spent = 0.000168085 secs +create_atoms 1 single 10 22 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 43.5 14.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 42 42 4 +Created 1 atoms + Time spent = 0.000184059 secs +create_atoms 1 single 4 26 4 +Created 1 atoms + Time spent = 0.000178814 secs +create_atoms 1 single 19 34 4 +Created 1 atoms + Time spent = 0.0001688 secs +create_atoms 1 single 33 9 4 +Created 1 atoms + Time spent = 0.000168085 secs +create_atoms 1 single 0.5 45.5 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 30.5 32.5 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 25.5 5.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 47.5 39.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 15 13 4 +Created 1 atoms + Time spent = 0.000174046 secs +create_atoms 1 single 21 21 4 +Created 1 atoms + Time spent = 0.000166893 secs +create_atoms 1 single 14 28 4 +Created 1 atoms + Time spent = 0.000170946 secs +create_atoms 1 single 9 34 4 +Created 1 atoms + Time spent = 0.000174999 secs +create_atoms 1 single 7 38 4 +Created 1 atoms + Time spent = 0.000167847 secs +create_atoms 1 single 11 35 4 +Created 1 atoms + Time spent = 0.000168085 secs +create_atoms 1 single 20.5 45.5 4 +Created 1 atoms + Time spent = 0.000177145 secs +create_atoms 1 single 30.5 31.5 4 +Created 1 atoms + Time spent = 0.000167131 secs +create_atoms 1 single 32.5 2.5 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 21.5 3.5 4 +Created 1 atoms + Time spent = 0.000166893 secs +create_atoms 1 single 23 12 4 +Created 1 atoms + Time spent = 0.000169039 secs +create_atoms 1 single 4.5 33.5 4 +Created 1 atoms + Time spent = 0.000178099 secs +create_atoms 1 single 46 43 4 +Created 1 atoms + Time spent = 0.000175953 secs +create_atoms 1 single 42.5 45.5 4 +Created 1 atoms + Time spent = 0.000169992 secs +create_atoms 1 single 4.5 10.5 4 +Created 1 atoms + Time spent = 0.000175953 secs +create_atoms 1 single 33.5 15.5 4 +Created 1 atoms + Time spent = 0.000158787 secs +create_atoms 1 single 24 5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 13 16 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 16.5 23.5 4 +Created 1 atoms + Time spent = 0.000160933 secs +create_atoms 1 single 45.5 28.5 4 +Created 1 atoms + Time spent = 0.000159025 secs +create_atoms 1 single 44.5 5.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 27.5 46.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 44.5 12.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 12 41 4 +Created 1 atoms + Time spent = 0.000166893 secs +create_atoms 1 single 6 4 4 +Created 1 atoms + Time spent = 0.0001688 secs +create_atoms 1 single 31.5 10.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 1 44 4 +Created 1 atoms + Time spent = 0.000157833 secs +create_atoms 1 single 31 4 4 +Created 1 atoms + Time spent = 0.000156879 secs +create_atoms 1 single 21 33 4 +Created 1 atoms + Time spent = 0.000172138 secs +create_atoms 1 single 3 33 4 +Created 1 atoms + Time spent = 0.000156879 secs +create_atoms 1 single 15 10 4 +Created 1 atoms + Time spent = 0.000156879 secs +create_atoms 1 single 28.5 22.5 4 +Created 1 atoms + Time spent = 0.000161886 secs +create_atoms 1 single 43 1 4 +Created 1 atoms + Time spent = 0.000166178 secs +create_atoms 1 single 3.5 0.5 4 +Created 1 atoms + Time spent = 0.000164986 secs +create_atoms 1 single 41 37 4 +Created 1 atoms + Time spent = 0.000160933 secs +create_atoms 1 single 18.5 43.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 17 27 4 +Created 1 atoms + Time spent = 0.000159025 secs +create_atoms 1 single 3 5 4 +Created 1 atoms + Time spent = 0.000161171 secs +create_atoms 1 single 18.5 23.5 4 +Created 1 atoms + Time spent = 0.000164986 secs +create_atoms 1 single 31.5 14.5 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 41 31 4 +Created 1 atoms + Time spent = 0.000159979 secs +create_atoms 1 single 22 3 4 +Created 1 atoms + Time spent = 0.000158787 secs +create_atoms 1 single 14.5 40.5 4 +Created 1 atoms + Time spent = 0.000156879 secs +create_atoms 1 single 9 38 4 +Created 1 atoms + Time spent = 0.000155926 secs +create_atoms 1 single 36 42 4 +Created 1 atoms + Time spent = 0.000170231 secs +create_atoms 1 single 33 22 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 15.5 47.5 4 +Created 1 atoms + Time spent = 0.000162125 secs +create_atoms 1 single 3 0 4 +Created 1 atoms + Time spent = 0.000157118 secs +create_atoms 1 single 25.5 27.5 4 +Created 1 atoms + Time spent = 0.000159025 secs +create_atoms 1 single 2.5 28.5 4 +Created 1 atoms + Time spent = 0.000166178 secs +create_atoms 1 single 29.5 28.5 4 +Created 1 atoms + Time spent = 0.000160933 secs +create_atoms 1 single 44.5 18.5 4 +Created 1 atoms + Time spent = 0.000155926 secs +create_atoms 1 single 26 40 4 +Created 1 atoms + Time spent = 0.000157833 secs +create_atoms 1 single 41 27 4 +Created 1 atoms + Time spent = 0.000156879 secs +create_atoms 1 single 39.5 5.5 4 +Created 1 atoms + Time spent = 0.000167847 secs +create_atoms 1 single 3 38 4 +Created 1 atoms + Time spent = 0.000156164 secs +create_atoms 1 single 35 29 4 +Created 1 atoms + Time spent = 0.000154018 secs +create_atoms 1 single 11 19 4 +Created 1 atoms + Time spent = 0.000164032 secs +create_atoms 1 single 18 1 4 +Created 1 atoms + Time spent = 0.000154972 secs +create_atoms 1 single 39.5 40.5 4 +Created 1 atoms + Time spent = 0.000157118 secs +create_atoms 1 single 46 17 4 +Created 1 atoms + Time spent = 0.000164986 secs +create_atoms 1 single 1.5 23.5 4 +Created 1 atoms + Time spent = 0.00015521 secs +create_atoms 1 single 28.5 23.5 4 +Created 1 atoms + Time spent = 0.000153065 secs +create_atoms 1 single 10 28 4 +Created 1 atoms + Time spent = 0.000154018 secs +create_atoms 1 single 19 47 4 +Created 1 atoms + Time spent = 0.000159979 secs +create_atoms 1 single 10.5 16.5 4 +Created 1 atoms + Time spent = 0.000163078 secs +create_atoms 1 single 38 45 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 42.5 41.5 4 +Created 1 atoms + Time spent = 0.000159025 secs +create_atoms 1 single 47.5 42.5 4 +Created 1 atoms + Time spent = 0.000155926 secs +create_atoms 1 single 38 7 4 +Created 1 atoms + Time spent = 0.000154018 secs +create_atoms 1 single 10 44 4 +Created 1 atoms + Time spent = 0.000158072 secs +create_atoms 1 single 29.5 27.5 4 +Created 1 atoms + Time spent = 0.000159025 secs +create_atoms 1 single 45 30 4 +Created 1 atoms + Time spent = 0.000172138 secs +create_atoms 1 single 3 9 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 8.5 35.5 4 +Created 1 atoms + Time spent = 0.000148058 secs +create_atoms 1 single 24 44 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 47 4 4 +Created 1 atoms + Time spent = 0.000155926 secs +create_atoms 1 single 7.5 8.5 4 +Created 1 atoms + Time spent = 0.000146866 secs +create_atoms 1 single 32.5 41.5 4 +Created 1 atoms + Time spent = 0.000146151 secs +create_atoms 1 single 0.5 34.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 11 8 4 +Created 1 atoms + Time spent = 0.000146866 secs +create_atoms 1 single 2 40 4 +Created 1 atoms + Time spent = 0.000148058 secs +create_atoms 1 single 25 24 4 +Created 1 atoms + Time spent = 0.000154018 secs +create_atoms 1 single 47.5 6.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 39.5 28.5 4 +Created 1 atoms + Time spent = 0.000147104 secs +create_atoms 1 single 17 21 4 +Created 1 atoms + Time spent = 0.000150919 secs +create_atoms 1 single 32 43 4 +Created 1 atoms + Time spent = 0.000149012 secs +create_atoms 1 single 16.5 29.5 4 +Created 1 atoms + Time spent = 0.000154972 secs +create_atoms 1 single 34 34 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 11.5 3.5 4 +Created 1 atoms + Time spent = 0.000148058 secs +create_atoms 1 single 39 22 4 +Created 1 atoms + Time spent = 0.000148058 secs +create_atoms 1 single 24.5 36.5 4 +Created 1 atoms + Time spent = 0.000146151 secs +create_atoms 1 single 33 31 4 +Created 1 atoms + Time spent = 0.000149965 secs +create_atoms 1 single 35.5 35.5 4 +Created 1 atoms + Time spent = 0.000185966 secs +create_atoms 1 single 14.5 34.5 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 34 28 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 37 41 4 +Created 1 atoms + Time spent = 0.000146866 secs +create_atoms 1 single 33 46 4 +Created 1 atoms + Time spent = 0.000149965 secs +create_atoms 1 single 27.5 28.5 4 +Created 1 atoms + Time spent = 0.000149965 secs +create_atoms 1 single 40.5 22.5 4 +Created 1 atoms + Time spent = 0.000148773 secs +create_atoms 1 single 27.5 1.5 4 +Created 1 atoms + Time spent = 0.00014782 secs +create_atoms 1 single 12 2 4 +Created 1 atoms + Time spent = 0.000146151 secs +create_atoms 1 single 36 43 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 28.5 9.5 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 20.5 25.5 4 +Created 1 atoms + Time spent = 0.000154972 secs +create_atoms 1 single 3 3 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 38 33 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 3 20 4 +Created 1 atoms + Time spent = 0.000149012 secs +create_atoms 1 single 35 11 4 +Created 1 atoms + Time spent = 0.000154018 secs +create_atoms 1 single 5 25 4 +Created 1 atoms + Time spent = 0.00014782 secs +create_atoms 1 single 36.5 6.5 4 +Created 1 atoms + Time spent = 0.000152111 secs +create_atoms 1 single 19.5 24.5 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 27 41 4 +Created 1 atoms + Time spent = 0.000147104 secs +create_atoms 1 single 39.5 11.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 21.5 2.5 4 +Created 1 atoms + Time spent = 0.000152111 secs +create_atoms 1 single 46.5 15.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 13 24 4 +Created 1 atoms + Time spent = 0.000153065 secs +create_atoms 1 single 11 37 4 +Created 1 atoms + Time spent = 0.000146866 secs +create_atoms 1 single 11.5 31.5 4 +Created 1 atoms + Time spent = 0.000158787 secs +create_atoms 1 single 47 0 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 25.5 17.5 4 +Created 1 atoms + Time spent = 0.000144005 secs +create_atoms 1 single 32 11 4 +Created 1 atoms + Time spent = 0.000149012 secs +create_atoms 1 single 8 17 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 27.5 12.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 25 7 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 25.5 37.5 4 +Created 1 atoms + Time spent = 0.000161886 secs +create_atoms 1 single 12 15 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 1 7 4 +Created 1 atoms + Time spent = 0.000154972 secs +create_atoms 1 single 18.5 47.5 4 +Created 1 atoms + Time spent = 0.000162125 secs +create_atoms 1 single 5 38 4 +Created 1 atoms + Time spent = 0.000145197 secs +create_atoms 1 single 42 19 4 +Created 1 atoms + Time spent = 0.000147104 secs +create_atoms 1 single 30.5 7.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 42.5 7.5 4 +Created 1 atoms + Time spent = 0.000145912 secs +create_atoms 1 single 26.5 18.5 4 +Created 1 atoms + Time spent = 0.000150919 secs +create_atoms 1 single 18.5 1.5 4 +Created 1 atoms + Time spent = 0.000144958 secs +create_atoms 1 single 41.5 10.5 4 +Created 1 atoms + Time spent = 0.000151873 secs + +# define frozen substrate and mobile atoms + +region base block INF INF INF INF 0 1.8 +set region base type 2 + 18432 settings made for type +group base type 2 +18432 atoms in group base +group mobile type 1 +18616 atoms in group mobile + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes +fix 2 mobile langevin 400.0 400.0 1.0 826626413 zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:487) + +# thermal equilibration + +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 12 + binsize = 3.03792, bins = 62 62 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair eam/alloy, 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.359 | 3.359 | 3.36 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -206220.22 0 -206220.22 -52155.664 + 100 188.18127 -206044.43 0 -205591.63 -25068.83 + 200 274.34464 -205860.78 0 -205200.66 -40191.797 + 300 325.66286 -205750.01 0 -204966.4 -31510.222 + 400 352.48242 -205675.42 0 -204827.28 -35058.064 + 500 370.88571 -205619.66 0 -204727.25 -32735.022 + 600 388.62129 -205592.87 0 -204657.78 -33904.556 + 700 389.54874 -205579.73 0 -204642.4 -32769.852 + 800 395.56074 -205576.82 0 -204625.03 -33755.948 + 900 398.03458 -205564.48 0 -204606.74 -32777.103 + 1000 401.24089 -205562.85 0 -204597.4 -33785.341 +Loop time of 4.22555 on 16 procs for 1000 steps with 37048 atoms + +Performance: 102.235 ns/day, 0.235 hours/ns, 236.655 timesteps/s +98.5% CPU use with 16 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.2988 | 3.3283 | 3.3788 | 1.5 | 78.77 +Neigh | 0.22391 | 0.23756 | 0.28119 | 2.7 | 5.62 +Comm | 0.31341 | 0.3888 | 0.49372 | 8.0 | 9.20 +Output | 0.00041842 | 0.00042947 | 0.00048399 | 0.0 | 0.01 +Modify | 0.17166 | 0.2512 | 0.35242 | 9.5 | 5.94 +Other | | 0.0193 | | | 0.46 + +Nlocal: 2315.5 ave 2332 max 2297 min +Histogram: 2 0 0 3 4 0 2 1 2 2 +Nghost: 3186.31 ave 3205 max 3170 min +Histogram: 2 1 3 0 2 3 2 1 0 2 +Neighs: 55590.9 ave 56174 max 55103 min +Histogram: 2 2 1 1 4 1 3 0 0 2 + +Total # of neighbors = 889454 +Ave neighs/atom = 24.0082 +Neighbor list builds = 105 +Dangerous builds = 0 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} +compute event all event/displace 1.1 + +# hyper/local + +fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost} +fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0 + +# thermo output + +thermo_style custom step temp pe f_HL f_HL[*] +WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:705) + +thermo_modify lost ignore +thermo_modify temp tmobile +WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:487) + +thermo ${nevent} +thermo 100 + +# dump + +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) + +dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green + +# test of histogramming and dump output of bias coeffs + +#fix histo all ave/histo 10 100 1000 0.9 1.1 100 f_HL # mode vector kind local file tmp.histo +#dump 2 all local 1000 tmp.local f_HL + +# run + +hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 1500 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 1500 100 HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper 1500 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1 +hyper 1500 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1 +WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:133) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.07583 + ghost atom cutoff = 12 + binsize = 3.03792, bins = 62 62 7 + 3 neighbor lists, perpetual/occasional/extra = 1 2 0 + (1) pair eam/alloy, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix hyper/local, occasional + attributes: full, newton on, cut 10 + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (3) fix hyper/local, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.941 | 6.942 | 6.942 Mbytes +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 0 401.24089 -205562.85 0 0 0 1 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 + 77 401.24089 -206534.96 0 0 0 1 0 0 0 0 0 0 0 1e+20 0 0 0 0 0 0 1540 0 0 0 +Loop time of 0.51152 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 0 401.24089 -205562.85 24.755808 79 0.18753621 0 6.0138739 705.15041 3.5350432 0 0 0 0 1e+20 0 0 0 0 0 0 0 0 0 0 + 100 400.6027 -205547.79 21.854739 92 0.43709939 0.99825259 6.0138739 705.15041 4.230764 92.74 0.03245633 0.0067931852 0.99890138 0.98969319 1.0024404 0 0 0 0 0 2000 0 0 0 +Loop time of 0.453073 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 100 400.6027 -205547.79 21.854739 92 0.43709939 0.99825259 6.0138739 705.15041 4.230764 92.74 0.03245633 0.0067931852 0.99890138 0.98969319 1.0024404 0 0 0 0 0 2000 0 0 0 + 177 400.6027 -206534.96 21.854739 92 0.43709939 0.99825259 6.0138739 705.15041 4.230764 52.39548 0.03245633 0.0067931852 0.56435106 0.98969319 1.0024404 0 0 0 0 0 3540 0 0 0 +Loop time of 0.494676 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 100 400.6027 -205547.79 21.854339 92 0.43709939 0.99825259 6.0138739 705.15041 4.230764 92.74 0.03245633 0.0067931852 0.99890138 0.98969319 1.0024404 0 0 0 0 0 2000 0 0 0 + 200 400.46944 -205544.7 23.349576 97 0.33740983 0.99723256 6.0138739 705.15041 4.230764 92.525 0.040097271 0.0058362605 0.99830632 0.98259113 1.0048777 0 0 0 0 0 4000 0 0 0 +Loop time of 0.450918 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 200 400.46944 -205544.7 23.349576 97 0.33740983 0.99723256 6.0138739 705.15041 4.230764 92.525 0.040097271 0.0058362605 0.99830632 0.98259113 1.0048777 0 0 0 0 0 4000 0 0 0 + 273 400.46944 -206534.96 23.349576 97 0.33740983 0.99723256 6.0138739 705.15041 4.230764 67.783883 0.040097271 0.0058362605 0.73135994 0.98259113 1.0048777 0 0 0 0 0 5460 0 0 0 +Loop time of 0.488918 on 16 procs for 73 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 200 400.46944 -205544.7 23.349184 97 0.33740983 0.99723256 6.0138739 705.15041 4.230764 92.525 0.040097271 0.0058362605 0.99830632 0.98259113 1.0048777 0 0 0 0 0 4000 0 0 0 + 300 396.89568 -205540.38 19.394419 94 0.35022551 0.99673595 6.0138739 705.15041 4.230764 93.376667 0.047799236 0.0063898904 0.99785232 0.97756247 1.0073497 0 0 0 0 0 6000 0 0 0 +Loop time of 0.45579 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 300 396.89568 -205540.38 19.394419 94 0.35022551 0.99673595 6.0138739 705.15041 4.230764 93.376667 0.047799236 0.0063898904 0.99785232 0.97756247 1.0073497 0 0 0 0 0 6000 0 0 0 + 373 396.89568 -206534.96 19.394419 94 0.35022551 0.99673595 6.0138739 705.15041 4.230764 75.101877 0.047799236 0.0063898904 0.80256219 0.97756247 1.0073497 0 0 0 0 0 7460 0 0 0 +Loop time of 0.49254 on 16 procs for 73 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 300 396.89568 -205540.38 19.394206 94 0.35022551 0.99673595 6.0138739 705.15041 4.230764 93.376667 0.047799236 0.0063898904 0.99785232 0.97756247 1.0073497 0 0 0 0 0 6000 0 0 0 + 400 399.1218 -205541.68 18.990804 94 0.3505205 0.99638391 6.0138739 705.15041 4.230764 93.3775 0.055982437 0.0068271264 0.99752641 0.97044214 1.0098482 0 0 0 0 0 8000 0 0 0 +Loop time of 0.452751 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 400 399.1218 -205541.68 18.990804 94 0.3505205 0.99638391 6.0138739 705.15041 4.230764 93.3775 0.055982437 0.0068271264 0.99752641 0.97044214 1.0098482 0 0 0 0 0 8000 0 0 0 + 475 399.1218 -206534.96 18.990804 94 0.3505205 0.99638391 6.0138739 705.15041 4.230764 78.633684 0.055982437 0.0068271264 0.84002224 0.97044214 1.0098482 0 0 0 0 0 9500 0 0 0 +Loop time of 0.4963 on 16 procs for 75 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 400 399.1218 -205541.68 18.990689 94 0.3505205 0.99638391 6.0138739 705.15041 4.230764 93.3775 0.055982437 0.0068271264 0.99752641 0.97044214 1.0098482 0 0 0 0 0 8000 0 0 0 + 500 399.61667 -205539.79 19.794362 99 0.33740217 0.99633812 6.0138739 705.15041 4.230764 93.222 0.063096694 0.0076591363 0.99729174 0.96745199 1.0123163 0 0 0 0 0 10000 0 0 0 +Loop time of 0.45226 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 500 399.61667 -205539.79 19.794362 99 0.33740217 0.99633812 6.0138739 705.15041 4.230764 93.222 0.063096694 0.0076591363 0.99729174 0.96745199 1.0123163 0 0 0 0 0 10000 0 0 0 + 577 399.61667 -206534.96 19.794362 99 0.33740217 0.99633812 6.0138739 705.15041 4.230764 80.781629 0.063096694 0.0076591363 0.86420428 0.96745199 1.0123163 0 0 0 0 0 11540 0 0 0 +Loop time of 0.518479 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 500 399.61667 -205539.79 19.79402 99 0.33740217 0.99633812 6.0138739 705.15041 4.230764 93.222 0.063096694 0.0076591363 0.99729174 0.96745199 1.0123163 0 0 0 0 0 10000 0 0 0 + 600 397.41676 -205529.51 20.336863 99 0.35185916 0.99625666 6.0138739 705.15041 4.230764 93.621667 0.066686842 0.0091859078 0.99712746 0.96713729 1.0148143 0 0 0 0 0 12000 0 0 0 +Loop time of 0.452059 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 600 397.41676 -205529.51 20.336863 99 0.35185916 0.99625666 6.0138739 705.15041 4.230764 93.621667 0.066686842 0.0091859078 0.99712746 0.96713729 1.0148143 0 0 0 0 0 12000 0 0 0 + 677 397.41676 -206534.96 20.336863 99 0.35185916 0.99625666 6.0138739 705.15041 4.230764 82.973412 0.066686842 0.0091859078 0.8837171 0.96713729 1.0148143 0 0 0 0 0 13540 0 0 0 +Loop time of 0.5171 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 600 397.41676 -205529.51 20.336526 99 0.35185916 0.99625666 6.0138739 705.15041 4.230764 93.621667 0.066686842 0.0091859078 0.99712746 0.96713729 1.0148143 0 0 0 0 0 12000 0 0 0 + 700 403.33442 -205550.89 18.955866 93 0.42542334 0.99592297 6.0138739 705.15041 4.230764 94.135714 0.068078003 0.0094089081 0.99698101 0.9641519 1.0173022 0 0 0 0 0 14000 0 0 0 +Loop time of 0.450117 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 700 403.33442 -205550.89 18.955866 93 0.42542334 0.99592297 6.0138739 705.15041 4.230764 94.135714 0.068078003 0.0094089081 0.99698101 0.9641519 1.0173022 0 0 0 0 0 14000 0 0 0 + 783 403.33442 -206534.96 18.955866 93 0.42542334 0.99592297 6.0138739 705.15041 4.230764 84.157088 0.068078003 0.0094089081 0.89129847 0.9641519 1.0173022 0 0 0 0 0 15660 0 0 0 +Loop time of 0.541959 on 16 procs for 83 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 700 403.33442 -205550.89 18.955589 93 0.42542334 0.99592297 6.0138739 705.15041 4.230764 94.135714 0.068078003 0.0094089081 0.99698101 0.9641519 1.0173022 0 0 0 0 0 14000 0 0 0 + 800 397.5897 -205530.58 19.298375 97 0.42432974 0.99573055 6.0138739 705.15041 4.2562861 94.69125 0.070492258 0.0098477948 0.99683461 0.96199283 1.0198015 0 0 0 0 0 16000 0 0 0 +Loop time of 0.454322 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 800 397.5897 -205530.58 19.298375 97 0.42432974 0.99573055 6.0138739 705.15041 4.2562861 94.69125 0.070492258 0.0098477948 0.99683461 0.96199283 1.0198015 0 0 0 0 0 16000 0 0 0 + 877 397.5897 -206534.96 19.298375 97 0.42432974 0.99573055 6.0138739 705.15041 4.2562861 86.377423 0.070492258 0.0098477948 0.90931322 0.96199283 1.0198015 0 0 0 0 0 17540 0 0 0 +Loop time of 0.502899 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 800 397.5897 -205530.58 19.29822 97 0.42432974 0.99573055 6.0138739 705.15041 4.2562861 94.69125 0.070492258 0.0098477948 0.99683461 0.96199283 1.0198015 0 0 0 0 0 16000 0 0 0 + 900 402.04231 -205545.55 18.434766 91 0.34927854 0.99563819 6.0138739 705.15041 4.2562861 94.956667 0.072594517 0.0091737752 0.99670822 0.95723843 1.0223007 0 0 0 0 0 18000 0 0 0 +Loop time of 0.451618 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 900 402.04231 -205545.55 18.434766 91 0.34927854 0.99563819 6.0138739 705.15041 4.2562861 94.956667 0.072594517 0.0091737752 0.99670822 0.95723843 1.0223007 0 0 0 0 0 18000 0 0 0 + 976 402.04231 -206534.96 18.434766 91 0.34927854 0.99563819 6.0138739 705.15041 4.2562861 87.5625 0.072594517 0.0091737752 0.91909569 0.95723843 1.0223007 0 0 0 0 0 19520 0 0 0 +Loop time of 0.493429 on 16 procs for 76 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 900 402.04231 -205545.55 18.434576 91 0.34927854 0.99563819 6.0138739 705.15041 4.2562861 94.956667 0.072594517 0.0091737752 0.99670822 0.95723843 1.0223007 0 0 0 0 0 18000 0 0 0 + 1000 403.13682 -205538.62 20.371378 100 0.36854432 0.99555559 6.0138739 705.15041 4.2562861 94.973 0.075589904 0.0088025018 0.99659567 0.95567008 1.0247999 0 0 0 0 0 20000 0 0 0 +Loop time of 0.452482 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1000 403.13682 -205538.62 20.371378 100 0.36854432 0.99555559 6.0138739 705.15041 4.2562861 94.973 0.075589904 0.0088025018 0.99659567 0.95567008 1.0247999 0 0 0 0 0 20000 0 0 0 + 1081 403.13682 -206534.96 20.371378 100 0.36854432 0.99555559 6.0138739 705.15041 4.2562861 87.856614 0.075589904 0.0088025018 0.92192014 0.95567008 1.0247999 0 0 0 0 0 21620 0 0 0 +Loop time of 0.521678 on 16 procs for 81 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1000 403.13682 -205538.62 20.371013 100 0.36854432 0.99555559 6.0138739 705.15041 4.2562861 94.973 0.075589904 0.0088025018 0.99659567 0.95567008 1.0247999 0 0 0 0 0 20000 0 0 0 + 1100 401.64961 -205531.15 16.838899 93 0.37998317 0.99541314 6.0138739 705.15041 4.2562861 95.323636 0.077697032 0.0088979171 0.99649521 0.95206312 1.0272987 0 0 0 0 0 22000 0 0 0 +Loop time of 0.452415 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1100 401.64961 -205531.15 16.838899 93 0.37998317 0.99541314 6.0138739 705.15041 4.2562861 95.323636 0.077697032 0.0088979171 0.99649521 0.95206312 1.0272987 0 0 0 0 0 22000 0 0 0 + 1179 401.64961 -206534.96 16.838899 93 0.37998317 0.99541314 6.0138739 705.15041 4.2562861 88.936387 0.077697032 0.0088979171 0.92972412 0.95206312 1.0272987 0 0 0 0 0 23580 0 0 0 +Loop time of 0.50337 on 16 procs for 79 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1100 401.64961 -205531.15 16.838708 93 0.37998317 0.99541314 6.0138739 705.15041 4.2562861 95.323636 0.077697032 0.0088979171 0.99649521 0.95206312 1.0272987 0 0 0 0 0 22000 0 0 0 + 1200 400.40964 -205539.37 19.135216 99 0.67128843 0.99558682 6.0138739 705.15041 4.6317552 95.505 0.080458266 0.0085684868 0.99641317 0.95050066 1.029798 0 0 0 0 0 24000 0 0 0 +Loop time of 0.44891 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1200 400.40964 -205539.37 19.135216 99 0.67128843 0.99558682 6.0138739 705.15041 4.6317552 95.505 0.080458266 0.0085684868 0.99641317 0.95050066 1.029798 0 0 0 0 0 24000 0 0 0 + 1276 400.40964 -206534.97 19.135216 99 0.67128843 0.99558682 6.0138739 705.15041 4.6317552 89.816614 0.080458266 0.0085684868 0.93706567 0.95050066 1.029798 0 0 0 0 0 25520 0 0 0 +Loop time of 0.508519 on 16 procs for 76 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1200 400.40964 -205539.37 19.448471 100 0.41040038 0.99558682 6.0138739 705.141 4.6317552 95.505 0.080458266 0.0085684868 0.99641317 0.95050066 1.029798 2.2953088 0 0 0 0 24000 1 2 6 + 1300 401.71843 -205549 19.86411 94 0.31328255 0.99531422 6.0138739 705.141 4.6317552 95.636923 0.080786307 0.0080834567 0.99634504 0.95016182 1.0314365 2.2953088 0 0 0 0 26000 1 2 6 +Loop time of 0.453256 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1300 401.71843 -205549 19.86411 94 0.31328255 0.99531422 6.0138739 705.141 4.6317552 95.636923 0.080786307 0.0080834567 0.99634504 0.95016182 1.0314365 2.2953088 0 0 0 0 26000 1 2 6 + 1376 401.71843 -206534.97 19.86411 94 0.31328255 0.99531422 6.0138739 705.141 4.6317552 90.354651 0.080786307 0.0080834567 0.94131435 0.95016182 1.0314365 2.2953088 0 0 0 0 27520 1 2 6 +Loop time of 0.502886 on 16 procs for 76 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1300 401.71843 -205549 19.863856 94 0.31328255 0.99531422 6.0138739 705.141 4.6317552 95.636923 0.080786307 0.0080834567 0.99634504 0.95016182 1.0314365 2.2953088 0 0 0 0 26000 1 2 6 + 1400 397.79762 -205534.95 19.064761 90 0.33635396 0.99488167 6.0138739 705.141 4.6317552 95.55 0.080145025 0.0081557898 0.99625782 0.94925079 1.0339117 2.2953088 0 0 0 0 28000 1 2 6 +Loop time of 0.453094 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1400 397.79762 -205534.95 19.064761 90 0.33635396 0.99488167 6.0138739 705.141 4.6317552 95.55 0.080145025 0.0081557898 0.99625782 0.94925079 1.0339117 2.2953088 0 0 0 0 28000 1 2 6 + 1477 397.79762 -206534.97 19.064761 90 0.33635396 0.99488167 6.0138739 705.141 4.6317552 90.56872 0.080145025 0.0081557898 0.94432021 0.94925079 1.0339117 2.2953088 0 0 0 0 29540 1 2 6 +Loop time of 0.515217 on 16 procs for 77 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1400 397.79762 -205534.95 19.064345 90 0.33635396 0.99488167 6.0138739 705.141 4.6317552 95.55 0.080145025 0.0081557898 0.99625782 0.94925079 1.0339117 2.2953088 0 0 0 0 28000 1 2 6 + 1500 400.56079 -205539.86 18.860257 93 0.35488977 0.99467946 6.0138739 705.141 4.6317552 95.578667 0.080575861 0.0083561185 0.99615829 0.94636637 1.0355154 2.2953088 0 0 0 0 30000 1 2 6 +Loop time of 0.450111 on 16 procs for 100 steps with 37048 atoms + +Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] + 1500 400.56079 -205539.86 18.860257 93 0.35488977 0.99467946 6.0138739 705.141 4.6317552 95.578667 0.080575861 0.0083561185 0.99615829 0.94636637 1.0355154 2.2953088 0 0 0 0 30000 1 2 6 + 1584 400.56079 -206534.97 18.860257 93 0.35488977 0.99467946 6.0138739 705.141 4.6317552 90.510101 0.080575861 0.0083561185 0.94333171 0.94636637 1.0355154 2.2953088 0 0 0 0 31680 1 2 6 +Loop time of 0.566455 on 16 procs for 84 steps with 37048 atoms + +Final hyper stats ... + +Cummulative quantities for fix hyper: + hyper time = 30000 + time boost factor = 4000 + event timesteps = 1 + # of atoms in events = 2 +Quantities for this hyper run: + event timesteps = 1 + # of atoms in events = 2 + max length of any bond = 4.63176 + max drift distance of any atom = 2.29531 + fraction of biased bonds with zero bias = 0.0805759 + fraction of biased bonds with negative strain = 0.00835612 +Current quantities: + ave bonds/atom = 6.01387 +Cummulative quantities specific to fix hyper/local: + # of new bonds formed = 6 + max bonds/atom = 13 +Quantities for this hyper run specific to fix hyper/local: + ave biased bonds/step = 95.5787 + ave bias coeff of all bonds = 0.996158 + min bias coeff of any bond = 0.946366 + max bias coeff of any bond = 1.03552 + max dist from my subbox of any non-maxstrain bond ghost atom = 0 + max dist from my box of any bond ghost atom = 0 + count of bond ghost neighbors not found on reneighbor steps = 0 + bias overlaps = 0 + CPU time for bond builds = 0.0147002 +Current quantities specific to fix hyper/local: + neighbor bonds/bond = 705.141 + ave boost coeff for all bonds = 0.994679 + +Loop time of 14.9193 on 16 procs for 1500 steps with 37048 atoms + +Performance: 43.434 ns/day, 0.553 hours/ns, 100.541 timesteps/s +128.3% CPU use with 16 MPI tasks x no OpenMP threads + +Hyper stats: + Dynamics time (%) = 6.78318 (45.4657) + Quench time (%) = 7.66443 (51.3725) + Other time (%) = 0.189889 (1.27277) + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 11.726 | 11.881 | 12.051 | 2.6 | 79.64 +Neigh | 0.49995 | 0.52243 | 0.54427 | 1.9 | 3.50 +Comm | 0.34477 | 0.51495 | 0.62326 | 10.4 | 3.45 +Output | 0.0017493 | 0.0017652 | 0.0018535 | 0.1 | 0.01 +Modify | 1.7669 | 1.8088 | 1.8523 | 1.7 | 12.12 +Other | | 0.1899 | | | 1.27 + +Nlocal: 2315.5 ave 2353 max 2275 min +Histogram: 1 1 1 3 0 2 5 2 0 1 +Nghost: 3187.62 ave 3228 max 3148 min +Histogram: 1 0 2 4 2 2 1 3 0 1 +Neighs: 54002.8 ave 54567 max 53263 min +Histogram: 1 0 2 1 3 2 2 1 1 3 +FullNghs: 542996 ave 554820 max 527895 min +Histogram: 1 0 0 4 1 3 3 2 0 2 + +Total # of neighbors = 8687932 +Ave neighs/atom = 234.505 +Neighbor list builds = 166 +Dangerous builds = 0 +Total wall time: 0:00:19 diff --git a/examples/kim/in.query b/examples/kim/in.query new file mode 100644 index 0000000000..33272dc298 --- /dev/null +++ b/examples/kim/in.query @@ -0,0 +1,11 @@ + +# example for performing a query to the OpenKIM test database to retrieve +# a parameter to be used in the input. here it requests the aluminium +# lattice constant for a specific test used for a specific model and then +# assigns it to the variable 'latconst' + +units metal +info variables out log +kim_query latconst get_test_result test=TE_156715955670 species=["Al"] model=MO_800509458712 prop=structure-cubic-crystal-npt keys=["a"] units=["angstrom"] +info variables out log +lattice fcc ${latconst} diff --git a/examples/kim/log.22Mar2019.query.g++.1 b/examples/kim/log.22Mar2019.query.g++.1 new file mode 100644 index 0000000000..034bb13bba --- /dev/null +++ b/examples/kim/log.22Mar2019.query.g++.1 @@ -0,0 +1,34 @@ +LAMMPS (28 Feb 2019) + +# example for performing a query to the OpenKIM test database to retrieve +# a parameter to be used in the input. here it requests the aluminium +# lattice constant for a specific test used for a specific model and then +# assigns it to the variable 'latconst' + +units metal +info variables out log + +Info-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info +Printed on Fri Mar 22 20:00:56 2019 + + +Variable information: + +Info-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info + +kim_query latconst get_test_result test=TE_156715955670 species=["Al"] model=MO_800509458712 prop=structure-cubic-crystal-npt keys=["a"] units=["angstrom"] +info variables out log + +Info-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info +Printed on Fri Mar 22 20:00:57 2019 + + +Variable information: +Variable[ 0]: latconst , style = string , def = 4.03208274841 + +Info-Info-Info-Info-Info-Info-Info-Info-Info-Info-Info + +lattice fcc ${latconst} +lattice fcc 4.03208274841 +Lattice spacing in x,y,z = 4.03208 4.03208 4.03208 +Total wall time: 0:00:00 diff --git a/examples/micelle/data.micelle b/examples/micelle/data.micelle index e4805bceee..5ff6196bc6 100644 --- a/examples/micelle/data.micelle +++ b/examples/micelle/data.micelle @@ -49,7 +49,7 @@ 22 0 1 25.100 0.000 0.000 23 0 1 26.295 0.000 0.000 24 110 2 27.490 0.000 0.000 - 25 128 2 28.685 0.000 0.000 + 25 128 2 28.685 35.85686 0.000 26 0 1 29.881 0.000 0.000 27 0 1 31.076 0.000 0.000 28 0 1 32.271 0.000 0.000 @@ -175,7 +175,7 @@ 148 0 1 32.271 4.781 0.000 149 0 1 33.466 4.781 0.000 150 0 1 34.662 4.781 0.000 - 151 53 2 0.000 5.976 0.000 + 151 53 2 35.85686 5.976 0.000 152 0 1 1.195 5.976 0.000 153 0 1 2.390 5.976 0.000 154 0 1 3.586 5.976 0.000 @@ -655,7 +655,7 @@ 628 0 1 32.271 23.905 0.000 629 0 1 33.466 23.905 0.000 630 0 1 34.662 23.905 0.000 - 631 148 2 0.000 25.100 0.000 + 631 148 2 35.85686 25.100 0.000 632 0 1 1.195 25.100 0.000 633 0 1 2.390 25.100 0.000 634 0 1 3.586 25.100 0.000 @@ -976,7 +976,7 @@ 949 25 3 0.677 33.143 0.000 950 25 4 1.353 32.819 0.000 951 26 3 35.071 18.557 0.000 - 952 26 4 35.480 19.186 0.000 + 952 26 4 35.48000 19.186 0.000 953 27 3 29.131 15.504 0.000 954 27 4 28.382 15.470 0.000 955 28 3 23.456 33.395 0.000 @@ -1096,7 +1096,7 @@ 1069 85 3 33.021 33.461 0.000 1070 85 4 33.771 33.455 0.000 1071 86 3 0.552 18.315 0.000 - 1072 86 4 35.766 18.701 0.000 + 1072 86 4 -0.09086 18.701 0.000 1073 87 3 28.026 32.796 0.000 1074 87 4 28.562 33.321 0.000 1075 88 3 24.351 29.925 0.000 @@ -1112,7 +1112,7 @@ 1085 93 3 26.170 16.278 0.000 1086 93 4 26.046 17.017 0.000 1087 94 3 10.380 0.547 0.000 - 1088 94 4 10.003 35.755 0.000 + 1088 94 4 10.003 -0.10186 0.000 1089 95 3 0.419 29.308 0.000 1090 95 4 0.837 29.930 0.000 1091 96 3 13.712 28.191 0.000 diff --git a/examples/micelle/in.micelle.rigid b/examples/micelle/in.micelle.rigid new file mode 100644 index 0000000000..47d2f74950 --- /dev/null +++ b/examples/micelle/in.micelle.rigid @@ -0,0 +1,86 @@ +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle +special_bonds fene + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 1000 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 1000 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +group solvent molecule 0 +group solute subtract all solvent +unfix 1 +unfix 2 +unfix 4 +fix 1 solvent nve +fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 +fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 +fix 4 all enforce2d +run 20000 +unfix 5 +unfix 4 +fix 5 solute rigid/small molecule langevin 0.45 0.45 0.5 112211 +fix 4 all enforce2d +run 20000 diff --git a/examples/micelle/log.27Nov18.micelle.g++.1 b/examples/micelle/log.27Nov18.micelle.g++.1 deleted file mode 100644 index 30a965e041..0000000000 --- a/examples/micelle/log.27Nov18.micelle.g++.1 +++ /dev/null @@ -1,255 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 2d micelle simulation - -dimension 2 - -neighbor 0.3 bin -neigh_modify delay 5 - -atom_style bond - -# Soft potential push-off - -read_data data.micelle - orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 1200 atoms - scanning bonds ... - 1 = max bonds/atom - reading bonds ... - 300 bonds - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors -special_bonds fene - 2 = max # of 1-2 neighbors - 2 = max # of special neighbors - -pair_style soft 1.12246 -pair_coeff * * 0.0 1.12246 - -bond_style harmonic -bond_coeff 1 50.0 0.75 - -velocity all create 0.45 2349852 - -variable prefactor equal ramp(1.0,20.0) - -fix 1 all nve -fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 -fix 3 all adapt 1 pair soft a * * v_prefactor -fix 4 all enforce2d - -thermo 50 -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.42246 - ghost atom cutoff = 1.42246 - binsize = 0.71123, bins = 51 51 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair soft, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.799 | 3.799 | 3.799 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 - 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 - 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 - 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 - 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 - 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 - 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 - 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 - 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 - 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 - 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 - 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 - 600 0.45 0.58193041 0.088386617 1.119942 5.131481 - 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 - 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 - 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 - 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 - 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 - 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 - 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 - 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 -Loop time of 0.167265 on 1 procs for 1000 steps with 1200 atoms - -Performance: 2582728.958 tau/day, 5978.539 timesteps/s -99.1% 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.096171 | 0.096171 | 0.096171 | 0.0 | 57.50 -Bond | 0.006212 | 0.006212 | 0.006212 | 0.0 | 3.71 -Neigh | 0.024826 | 0.024826 | 0.024826 | 0.0 | 14.84 -Comm | 0.0047672 | 0.0047672 | 0.0047672 | 0.0 | 2.85 -Output | 0.00029063 | 0.00029063 | 0.00029063 | 0.0 | 0.17 -Modify | 0.028771 | 0.028771 | 0.028771 | 0.0 | 17.20 -Other | | 0.006227 | | | 3.72 - -Nlocal: 1200 ave 1200 max 1200 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 195 ave 195 max 195 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 3136 ave 3136 max 3136 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 3136 -Ave neighs/atom = 2.61333 -Ave special neighs/atom = 0.5 -Neighbor list builds = 92 -Dangerous builds = 0 - -unfix 3 - -# Main run - -pair_style lj/cut 2.5 - -# solvent/head - full-size and long-range - -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 2 2 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 2.5 - -# tail/tail - size-averaged and long-range - -pair_coeff 3 3 1.0 0.75 2.5 -pair_coeff 4 4 1.0 0.50 2.5 -pair_coeff 3 4 1.0 0.67 2.5 - -# solvent/tail - full-size and repulsive - -pair_coeff 1 3 1.0 1.0 1.12246 -pair_coeff 1 4 1.0 1.0 1.12246 - -# head/tail - size-averaged and repulsive - -pair_coeff 2 3 1.0 0.88 1.12246 -pair_coeff 2 4 1.0 0.75 1.12246 - -thermo 1000 - -#dump 1 all atom 2000 dump.micelle - -#dump 2 all image 2000 image.*.jpg type type zoom 1.6 -#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -#dump 3 all movie 2000 movie.mpg type type zoom 1.6 -#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -reset_timestep 0 -run 60000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 26 26 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 4.024 | 4.024 | 4.024 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 -1.7056163 0.08808163 -1.1679097 3.9431686 - 1000 0.45 -1.9727655 0.058608715 -1.4645318 1.9982298 - 2000 0.46465361 -1.9897467 0.067008449 -1.4584719 1.5873463 - 3000 0.46175071 -2.0129279 0.057865385 -1.4936966 1.41269 - 4000 0.44386154 -2.0280304 0.067167835 -1.5173709 1.4022093 - 5000 0.46127582 -2.0556041 0.068318674 -1.526394 1.1416711 - 6000 0.45354052 -2.0463246 0.05461954 -1.5385425 1.1650258 - 7000 0.44082313 -2.040263 0.060218047 -1.5395891 1.3258681 - 8000 0.44353466 -2.0423792 0.061769402 -1.5374447 1.2696989 - 9000 0.46192977 -2.0761348 0.064999109 -1.5495908 0.9205826 - 10000 0.45278646 -2.0589872 0.059623919 -1.5469542 1.075581 - 11000 0.45583355 -2.0661957 0.058197558 -1.5525445 1.127643 - 12000 0.45881198 -2.0921508 0.066937896 -1.5667833 0.98383574 - 13000 0.45339481 -2.079088 0.06292782 -1.5631432 1.0188637 - 14000 0.43601312 -2.0624084 0.057999616 -1.568759 1.1452177 - 15000 0.45941503 -2.0746606 0.062523373 -1.553105 0.86928343 - 16000 0.45 -2.0743162 0.05517924 -1.569512 0.86849848 - 17000 0.45603004 -2.0657683 0.058711872 -1.5514064 0.95544551 - 18000 0.45320383 -2.1009711 0.060716634 -1.5874283 0.8343521 - 19000 0.44072983 -2.0846408 0.062893297 -1.581385 0.90776246 - 20000 0.44452441 -2.0921415 0.060341571 -1.587646 0.98180005 - 21000 0.45964557 -2.0837047 0.054459432 -1.5699827 1.0213779 - 22000 0.46351849 -2.1053613 0.058392027 -1.5838371 0.81579487 - 23000 0.45576065 -2.1001888 0.057646538 -1.5871614 0.76090085 - 24000 0.44671746 -2.0848717 0.058192801 -1.5803337 0.77003809 - 25000 0.44371239 -2.0870872 0.054804981 -1.5889396 0.92295746 - 26000 0.45381188 -2.097021 0.057195346 -1.586392 0.7743058 - 27000 0.46158533 -2.1071056 0.061289644 -1.5846153 0.78981802 - 28000 0.46534671 -2.1056151 0.054934755 -1.5857214 0.80778664 - 29000 0.4505804 -2.0949318 0.065503451 -1.5792234 0.78274755 - 30000 0.45730883 -2.1029161 0.063461968 -1.5825264 0.82507857 - 31000 0.4620071 -2.1124989 0.059980378 -1.5908964 0.78583986 - 32000 0.46934619 -2.1107818 0.056442616 -1.5853842 0.70535653 - 33000 0.45800203 -2.1062502 0.054317859 -1.594312 0.726293 - 34000 0.44634295 -2.110401 0.057764968 -1.606665 0.85401059 - 35000 0.4431929 -2.1274759 0.062048133 -1.6226042 0.64243758 - 36000 0.46049645 -2.1300979 0.068463634 -1.6015216 0.57252544 - 37000 0.45366344 -2.0977407 0.053788554 -1.5906668 0.78046879 - 38000 0.44155077 -2.1166674 0.056888683 -1.6185959 0.53429042 - 39000 0.45631012 -2.096949 0.04860872 -1.5924104 0.86494908 - 40000 0.44684402 -2.1229137 0.067190397 -1.6092516 0.65110818 - 41000 0.4479377 -2.1105264 0.059375259 -1.6035867 0.79092862 - 42000 0.46143191 -2.1174539 0.057418393 -1.5989882 0.69762908 - 43000 0.4356786 -2.085826 0.056534028 -1.5939764 0.89541946 - 44000 0.45806826 -2.126423 0.060905733 -1.6078307 0.66389027 - 45000 0.44343688 -2.1116384 0.065870114 -1.602701 0.83947585 - 46000 0.43844672 -2.1096265 0.064158652 -1.6073865 0.77278902 - 47000 0.45794928 -2.1142786 0.058919562 -1.5977914 0.62611933 - 48000 0.45412335 -2.1106058 0.059153304 -1.5977076 0.66190677 - 49000 0.45927883 -2.1197656 0.068354598 -1.5925149 0.56008845 - 50000 0.44117285 -2.1020783 0.064763249 -1.5965099 0.85935147 - 51000 0.45325398 -2.1125154 0.062295387 -1.5973438 0.80951782 - 52000 0.43896579 -2.1039004 0.057475908 -1.6078245 0.84753768 - 53000 0.45180671 -2.1092446 0.063528598 -1.5942857 0.67065038 - 54000 0.4554341 -2.1185135 0.059603337 -1.6038556 0.76399618 - 55000 0.43861159 -2.0986406 0.057733879 -1.6026606 0.77334084 - 56000 0.45522991 -2.1207166 0.063287543 -1.6025785 0.78669598 - 57000 0.46125513 -2.1150202 0.06026261 -1.5938868 0.78148646 - 58000 0.45236938 -2.1088894 0.062678374 -1.5942186 0.75643518 - 59000 0.43927269 -2.1274165 0.055355076 -1.6331548 0.63495311 - 60000 0.45331102 -2.1336193 0.051244399 -1.6294416 0.56706921 -Loop time of 13.9361 on 1 procs for 60000 steps with 1200 atoms - -Performance: 1859917.639 tau/day, 4305.365 timesteps/s -99.8% CPU use with 1 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 9.2211 | 9.2211 | 9.2211 | 0.0 | 66.17 -Bond | 0.33763 | 0.33763 | 0.33763 | 0.0 | 2.42 -Neigh | 2.3772 | 2.3772 | 2.3772 | 0.0 | 17.06 -Comm | 0.37693 | 0.37693 | 0.37693 | 0.0 | 2.70 -Output | 0.0011795 | 0.0011795 | 0.0011795 | 0.0 | 0.01 -Modify | 1.2727 | 1.2727 | 1.2727 | 0.0 | 9.13 -Other | | 0.3493 | | | 2.51 - -Nlocal: 1200 ave 1200 max 1200 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 405 ave 405 max 405 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 9565 ave 9565 max 9565 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 9565 -Ave neighs/atom = 7.97083 -Ave special neighs/atom = 0.5 -Neighbor list builds = 4876 -Dangerous builds = 0 -Total wall time: 0:00:14 diff --git a/examples/micelle/log.27Nov18.micelle.g++.4 b/examples/micelle/log.27Nov18.micelle.g++.4 deleted file mode 100644 index c9509df4b2..0000000000 --- a/examples/micelle/log.27Nov18.micelle.g++.4 +++ /dev/null @@ -1,255 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 2d micelle simulation - -dimension 2 - -neighbor 0.3 bin -neigh_modify delay 5 - -atom_style bond - -# Soft potential push-off - -read_data data.micelle - orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) - 2 by 2 by 1 MPI processor grid - reading atoms ... - 1200 atoms - scanning bonds ... - 1 = max bonds/atom - reading bonds ... - 300 bonds - 2 = max # of 1-2 neighbors - 1 = max # of 1-3 neighbors - 1 = max # of 1-4 neighbors - 2 = max # of special neighbors -special_bonds fene - 2 = max # of 1-2 neighbors - 2 = max # of special neighbors - -pair_style soft 1.12246 -pair_coeff * * 0.0 1.12246 - -bond_style harmonic -bond_coeff 1 50.0 0.75 - -velocity all create 0.45 2349852 - -variable prefactor equal ramp(1.0,20.0) - -fix 1 all nve -fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 -fix 3 all adapt 1 pair soft a * * v_prefactor -fix 4 all enforce2d - -thermo 50 -run 1000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 1.42246 - ghost atom cutoff = 1.42246 - binsize = 0.71123, bins = 51 51 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair soft, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 3.758 | 3.85 | 4.126 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 - 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 - 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 - 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 - 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 - 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 - 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 - 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 - 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 - 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 - 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 - 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 - 600 0.45 0.58193041 0.088386617 1.119942 5.131481 - 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 - 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 - 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 - 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 - 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 - 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 - 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 - 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 -Loop time of 0.0641922 on 4 procs for 1000 steps with 1200 atoms - -Performance: 6729792.131 tau/day, 15578.223 timesteps/s -90.9% CPU use with 4 MPI tasks x 1 OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.020663 | 0.021445 | 0.022477 | 0.5 | 33.41 -Bond | 0.0014422 | 0.0015128 | 0.001569 | 0.1 | 2.36 -Neigh | 0.0067129 | 0.0067645 | 0.0068202 | 0.1 | 10.54 -Comm | 0.018454 | 0.019275 | 0.020386 | 0.5 | 30.03 -Output | 0.00038171 | 0.00040019 | 0.00044632 | 0.0 | 0.62 -Modify | 0.010561 | 0.010904 | 0.011309 | 0.3 | 16.99 -Other | | 0.003891 | | | 6.06 - -Nlocal: 300 ave 305 max 292 min -Histogram: 1 0 0 0 0 0 1 0 1 1 -Nghost: 100.25 ave 108 max 93 min -Histogram: 1 0 1 0 0 0 1 0 0 1 -Neighs: 784 ave 815 max 739 min -Histogram: 1 0 0 0 0 0 1 1 0 1 - -Total # of neighbors = 3136 -Ave neighs/atom = 2.61333 -Ave special neighs/atom = 0.5 -Neighbor list builds = 92 -Dangerous builds = 0 - -unfix 3 - -# Main run - -pair_style lj/cut 2.5 - -# solvent/head - full-size and long-range - -pair_coeff 1 1 1.0 1.0 2.5 -pair_coeff 2 2 1.0 1.0 2.5 -pair_coeff 1 2 1.0 1.0 2.5 - -# tail/tail - size-averaged and long-range - -pair_coeff 3 3 1.0 0.75 2.5 -pair_coeff 4 4 1.0 0.50 2.5 -pair_coeff 3 4 1.0 0.67 2.5 - -# solvent/tail - full-size and repulsive - -pair_coeff 1 3 1.0 1.0 1.12246 -pair_coeff 1 4 1.0 1.0 1.12246 - -# head/tail - size-averaged and repulsive - -pair_coeff 2 3 1.0 0.88 1.12246 -pair_coeff 2 4 1.0 0.75 1.12246 - -thermo 1000 - -#dump 1 all atom 2000 dump.micelle - -#dump 2 all image 2000 image.*.jpg type type zoom 1.6 -#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -#dump 3 all movie 2000 movie.mpg type type zoom 1.6 -#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 - -reset_timestep 0 -run 60000 -Neighbor list info ... - update every 1 steps, delay 5 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 2.8 - ghost atom cutoff = 2.8 - binsize = 1.4, bins = 26 26 1 - 1 neighbor lists, perpetual/occasional/extra = 1 0 0 - (1) pair lj/cut, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/2d/newton - bin: standard -Per MPI rank memory allocation (min/avg/max) = 4.001 | 4.032 | 4.124 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0.45 -1.7056163 0.08808163 -1.1679097 3.9431686 - 1000 0.45 -1.9727661 0.05860859 -1.4645325 1.9982402 - 2000 0.45146247 -1.9766043 0.059408886 -1.4661092 1.7398826 - 3000 0.43338517 -2.0028125 0.059884381 -1.5099041 1.4716488 - 4000 0.46674519 -2.0200954 0.066548679 -1.4871905 1.2506693 - 5000 0.45 -2.0207125 0.055926205 -1.5151613 1.3047457 - 6000 0.45447759 -2.0585234 0.068004883 -1.5364197 1.1859762 - 7000 0.43183018 -2.0170545 0.060800296 -1.5247839 1.3074223 - 8000 0.46657547 -2.053224 0.063224367 -1.523813 1.1785643 - 9000 0.45 -2.0691221 0.054959029 -1.564538 1.1833657 - 10000 0.4428252 -2.0473987 0.054306905 -1.5506356 1.181794 - 11000 0.45407036 -2.0746151 0.065849667 -1.5550734 1.1008545 - 12000 0.46061944 -2.0580809 0.063129643 -1.5347156 1.0206491 - 13000 0.45159068 -2.0640832 0.060059758 -1.5528091 1.0813494 - 14000 0.44141594 -2.0467255 0.062785088 -1.5428923 1.1465772 - 15000 0.454361 -2.0908595 0.057471037 -1.5794061 0.84297781 - 16000 0.44061091 -2.0521452 0.064644196 -1.5472573 1.1478647 - 17000 0.45118383 -2.081348 0.058660999 -1.5718791 1.0101404 - 18000 0.44664866 -2.0845745 0.060435731 -1.5778623 0.96142277 - 19000 0.45515339 -2.0914006 0.062174016 -1.5744525 0.87623323 - 20000 0.45624408 -2.0837697 0.059263054 -1.5686428 0.92810644 - 21000 0.46791657 -2.1062007 0.067355929 -1.5713181 0.88318793 - 22000 0.43907391 -2.1005271 0.065885144 -1.5959339 0.77211644 - 23000 0.43967354 -2.0723459 0.057613471 -1.5754253 1.0371548 - 24000 0.45716384 -2.0987126 0.055157377 -1.5867723 0.89670061 - 25000 0.45828285 -2.1041616 0.057736138 -1.5885245 0.79952286 - 26000 0.45 -2.0743463 0.072455519 -1.5522658 0.88260204 - 27000 0.46581599 -2.0804974 0.058113258 -1.5569564 0.93053891 - 28000 0.46904194 -2.0920124 0.059748792 -1.5636125 0.79359618 - 29000 0.46093196 -2.118556 0.063942334 -1.5940659 0.67707604 - 30000 0.45733724 -2.1197827 0.066939064 -1.5958875 0.66886075 - 31000 0.44580762 -2.0977175 0.056969121 -1.5953123 0.81042562 - 32000 0.44403029 -2.1032264 0.063465127 -1.596101 0.71796412 - 33000 0.45834072 -2.0934132 0.066035391 -1.569419 0.77873998 - 34000 0.44981563 -2.0910902 0.07138738 -1.5702621 0.75679805 - 35000 0.45383392 -2.0926654 0.067553478 -1.5716562 0.9064517 - 36000 0.44447198 -2.1107114 0.062718917 -1.6038909 0.8538349 - 37000 0.45838527 -2.1166464 0.062442606 -1.5962005 0.7300635 - 38000 0.45014075 -2.1096258 0.059293718 -1.6005665 0.73988246 - 39000 0.44377026 -2.080309 0.063545781 -1.5733628 0.99775641 - 40000 0.44577324 -2.1134607 0.065271179 -1.6027878 0.64113168 - 41000 0.45 -2.0937983 0.060881377 -1.5832919 0.78849829 - 42000 0.46866695 -2.1142283 0.056417605 -1.5895343 0.73788436 - 43000 0.43211727 -2.0819893 0.061463358 -1.5887688 0.95853724 - 44000 0.44138397 -2.0921314 0.059643895 -1.5914713 0.89486208 - 45000 0.45 -2.117209 0.054804331 -1.6127797 0.78564885 - 46000 0.44285245 -2.1090975 0.057629006 -1.6089851 0.64549424 - 47000 0.45537009 -2.1164296 0.068582324 -1.5928567 0.73629413 - 48000 0.45046732 -2.1006362 0.057249591 -1.5932947 0.74317593 - 49000 0.45425966 -2.1191703 0.064247719 -1.6010414 0.70962368 - 50000 0.45506149 -2.1184671 0.064911797 -1.5988731 0.69958156 - 51000 0.46047417 -2.1019719 0.058468259 -1.5834132 0.87219271 - 52000 0.43808317 -2.092294 0.057280941 -1.597295 0.84156893 - 53000 0.45012337 -2.1175234 0.064002667 -1.6037725 0.64562439 - 54000 0.43854679 -2.1236444 0.061316257 -1.6241468 0.72478117 - 55000 0.46382438 -2.1016563 0.060724666 -1.5774938 0.83311209 - 56000 0.44951533 -2.0946157 0.055075217 -1.5903998 0.90066109 - 57000 0.45937401 -2.0983442 0.061558996 -1.577794 0.58606161 - 58000 0.446669 -2.1146838 0.062385166 -1.6060019 0.73443388 - 59000 0.43847747 -2.1197461 0.060460257 -1.6211738 0.7230937 - 60000 0.45294215 -2.1258513 0.061895006 -1.6113915 0.70722168 -Loop time of 4.56226 on 4 procs for 60000 steps with 1200 atoms - -Performance: 5681397.232 tau/day, 13151.382 timesteps/s -97.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 | 2.2114 | 2.2527 | 2.3592 | 4.1 | 49.38 -Bond | 0.083713 | 0.09234 | 0.10244 | 2.3 | 2.02 -Neigh | 0.72491 | 0.7277 | 0.72957 | 0.2 | 15.95 -Comm | 0.79464 | 0.90036 | 0.94957 | 6.5 | 19.74 -Output | 0.0014119 | 0.0024976 | 0.0057502 | 3.8 | 0.05 -Modify | 0.33757 | 0.35202 | 0.36946 | 2.1 | 7.72 -Other | | 0.2346 | | | 5.14 - -Nlocal: 300 ave 306 max 289 min -Histogram: 1 0 0 0 0 0 0 1 1 1 -Nghost: 227.25 ave 250 max 216 min -Histogram: 2 0 1 0 0 0 0 0 0 1 -Neighs: 2373.25 ave 2489 max 2283 min -Histogram: 1 1 0 0 0 1 0 0 0 1 - -Total # of neighbors = 9493 -Ave neighs/atom = 7.91083 -Ave special neighs/atom = 0.5 -Neighbor list builds = 4888 -Dangerous builds = 0 -Total wall time: 0:00:04 diff --git a/examples/micelle/log.28Feb2019.micelle.g++.1 b/examples/micelle/log.28Feb2019.micelle.g++.1 new file mode 100644 index 0000000000..c2bbc7cde4 --- /dev/null +++ b/examples/micelle/log.28Feb2019.micelle.g++.1 @@ -0,0 +1,259 @@ +LAMMPS (28 Feb 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle + orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000394821 secs + read_data CPU = 0.00212336 secs +special_bonds fene + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.00018549 secs + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.799 | 3.799 | 3.799 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 + 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 + 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 + 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 + 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 + 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 + 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 + 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 + 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 + 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 + 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 + 600 0.45 0.58193041 0.088386617 1.119942 5.131481 + 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 + 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 + 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 + 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 + 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 + 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 + 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 + 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 +Loop time of 0.113919 on 1 procs for 1000 steps with 1200 atoms + +Performance: 3792167.464 tau/day, 8778.165 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.076825 | 0.076825 | 0.076825 | 0.0 | 67.44 +Bond | 0.0041864 | 0.0041864 | 0.0041864 | 0.0 | 3.67 +Neigh | 0.017061 | 0.017061 | 0.017061 | 0.0 | 14.98 +Comm | 0.0019042 | 0.0019042 | 0.0019042 | 0.0 | 1.67 +Output | 0.00017285 | 0.00017285 | 0.00017285 | 0.0 | 0.15 +Modify | 0.011218 | 0.011218 | 0.011218 | 0.0 | 9.85 +Other | | 0.002551 | | | 2.24 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 195 ave 195 max 195 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3136 ave 3136 max 3136 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3136 +Ave neighs/atom = 2.61333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 92 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 1000 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +run 60000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.024 | 4.024 | 4.024 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 -1.7056163 0.08808163 -1.1679097 3.9431686 + 1000 0.45 -1.9727644 0.05860769 -1.4645317 1.9982326 + 2000 0.46143408 -1.9889684 0.058103225 -1.4698156 1.7806269 + 3000 0.44459291 -1.9997961 0.068724164 -1.4868496 1.4369618 + 4000 0.46939549 -2.0330437 0.073499424 -1.4905399 1.3780016 + 5000 0.44411088 -2.0339936 0.05862049 -1.5316323 1.2544164 + 6000 0.44034597 -2.0265475 0.066481992 -1.5200864 1.2362891 + 7000 0.45097378 -2.0331083 0.058467565 -1.5240428 1.2762333 + 8000 0.45797632 -2.0330255 0.060048036 -1.5153828 1.3862396 + 9000 0.45297811 -2.0383417 0.067056519 -1.5186845 1.2762554 + 10000 0.45 -2.0628269 0.065650067 -1.5475518 1.0566213 + 11000 0.44466757 -2.0593977 0.06190999 -1.5531907 1.1452469 + 12000 0.46743534 -2.0684295 0.061056278 -1.5403274 1.0824225 + 13000 0.45601091 -2.0689708 0.054868536 -1.5584713 0.96703283 + 14000 0.44111882 -2.0553174 0.058249816 -1.5563164 1.0986427 + 15000 0.43894405 -2.0866829 0.064117804 -1.5839869 0.90031836 + 16000 0.43856814 -2.0879319 0.056024166 -1.593705 0.96387323 + 17000 0.45977841 -2.103188 0.058097306 -1.5856955 0.83352919 + 18000 0.43423341 -2.0813151 0.066623991 -1.5808196 0.98157638 + 19000 0.44245939 -2.0851261 0.057637655 -1.5853978 0.84228341 + 20000 0.43144678 -2.0895403 0.06536727 -1.5930858 0.88177768 + 21000 0.45014968 -2.106686 0.059137572 -1.5977739 0.89408935 + 22000 0.4575126 -2.1024115 0.063013023 -1.5822672 0.84886734 + 23000 0.45 -2.10897 0.06724784 -1.5920971 0.66205013 + 24000 0.43055602 -2.0894725 0.061566464 -1.5977089 0.81764789 + 25000 0.4366384 -2.0926743 0.059609321 -1.5967905 0.85549875 + 26000 0.4521714 -2.0963996 0.062031863 -1.5825731 0.80137118 + 27000 0.45734834 -2.1060987 0.061712636 -1.5874188 0.82899415 + 28000 0.44803467 -2.0859226 0.061871856 -1.5763894 0.97007526 + 29000 0.45 -2.1106243 0.063825481 -1.5971738 0.63798376 + 30000 0.44932806 -2.1006036 0.053053934 -1.598596 0.63907113 + 31000 0.44713779 -2.1096164 0.066470416 -1.5963808 0.66832708 + 32000 0.4373357 -2.0941237 0.058871613 -1.5982808 0.78176106 + 33000 0.44030485 -2.105644 0.058804306 -1.6069017 0.66286458 + 34000 0.43781175 -2.1233209 0.064611206 -1.6212628 0.56342584 + 35000 0.45670132 -2.1059408 0.053049584 -1.5965705 0.73992396 + 36000 0.45555427 -2.1149877 0.057627709 -1.6021854 0.85854939 + 37000 0.44134236 -2.1106202 0.064444306 -1.6052013 0.74674603 + 38000 0.44812623 -2.1003681 0.057266258 -1.5953491 0.78239359 + 39000 0.44167062 -2.11141 0.055354 -1.6147534 0.7066385 + 40000 0.46103176 -2.1166687 0.062155412 -1.5938657 0.73620955 + 41000 0.44537102 -2.0993898 0.05631213 -1.5980778 0.87348756 + 42000 0.44752506 -2.1115212 0.057506521 -1.6068625 0.72999561 + 43000 0.4483886 -2.1184719 0.066943915 -1.6035131 0.78112063 + 44000 0.45944897 -2.0916657 0.055242781 -1.5773568 0.98660473 + 45000 0.46238513 -2.1163075 0.0530031 -1.6013046 0.74416054 + 46000 0.45979064 -2.1165545 0.060657581 -1.5964895 0.63516974 + 47000 0.45936546 -2.1140678 0.049931919 -1.6051532 0.76425182 + 48000 0.45424613 -2.1122681 0.061885599 -1.5965149 0.71981142 + 49000 0.44449524 -2.1147361 0.06626748 -1.6043438 0.78720467 + 50000 0.4641185 -2.1114668 0.055104874 -1.5926302 0.70195865 + 51000 0.44220655 -2.1075773 0.0589109 -1.6068283 0.73806859 + 52000 0.43097906 -2.1189493 0.061502241 -1.6268271 0.69622593 + 53000 0.45 -2.137688 0.053631829 -1.6344311 0.48269158 + 54000 0.43777118 -2.1089246 0.047098534 -1.6244197 0.70423814 + 55000 0.46061985 -2.1129502 0.062520353 -1.5901938 0.72492307 + 56000 0.4524841 -2.1195648 0.06580089 -1.6016569 0.52709892 + 57000 0.44914574 -2.1041993 0.061040876 -1.594387 0.7979988 + 58000 0.46446286 -2.1181238 0.055741995 -1.598306 0.51009146 + 59000 0.4632674 -2.1169321 0.050672678 -1.6033781 0.83110911 + 60000 0.46340478 -2.122846 0.058485209 -1.6013422 0.69966471 +Loop time of 8.01683 on 1 procs for 60000 steps with 1200 atoms + +Performance: 3233199.903 tau/day, 7484.259 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.4027 | 5.4027 | 5.4027 | 0.0 | 67.39 +Bond | 0.23585 | 0.23585 | 0.23585 | 0.0 | 2.94 +Neigh | 1.5188 | 1.5188 | 1.5188 | 0.0 | 18.95 +Comm | 0.14452 | 0.14452 | 0.14452 | 0.0 | 1.80 +Output | 0.00060487 | 0.00060487 | 0.00060487 | 0.0 | 0.01 +Modify | 0.56352 | 0.56352 | 0.56352 | 0.0 | 7.03 +Other | | 0.1508 | | | 1.88 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 395 ave 395 max 395 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 9652 ave 9652 max 9652 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 9652 +Ave neighs/atom = 8.04333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 4886 +Dangerous builds = 0 +Total wall time: 0:00:08 diff --git a/examples/micelle/log.28Feb2019.micelle.g++.4 b/examples/micelle/log.28Feb2019.micelle.g++.4 new file mode 100644 index 0000000000..6af9051ed2 --- /dev/null +++ b/examples/micelle/log.28Feb2019.micelle.g++.4 @@ -0,0 +1,259 @@ +LAMMPS (28 Feb 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle + orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000130415 secs + read_data CPU = 0.00132132 secs +special_bonds fene + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 4.76837e-05 secs + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.758 | 3.85 | 4.126 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 + 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 + 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 + 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 + 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 + 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 + 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 + 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 + 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 + 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 + 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 + 600 0.45 0.58193041 0.088386617 1.119942 5.131481 + 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 + 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 + 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 + 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 + 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 + 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 + 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 + 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 +Loop time of 0.0377742 on 4 procs for 1000 steps with 1200 atoms + +Performance: 11436375.633 tau/day, 26473.092 timesteps/s +96.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.016871 | 0.017299 | 0.018185 | 0.4 | 45.80 +Bond | 0.0010128 | 0.0010633 | 0.001116 | 0.1 | 2.81 +Neigh | 0.004832 | 0.0048565 | 0.0048807 | 0.0 | 12.86 +Comm | 0.0066509 | 0.0077528 | 0.0084352 | 0.8 | 20.52 +Output | 0.00022054 | 0.00028259 | 0.00046587 | 0.0 | 0.75 +Modify | 0.0035386 | 0.0036086 | 0.0036943 | 0.1 | 9.55 +Other | | 0.002912 | | | 7.71 + +Nlocal: 300 ave 305 max 292 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 100.25 ave 108 max 93 min +Histogram: 1 0 1 0 0 0 1 0 0 1 +Neighs: 784 ave 815 max 739 min +Histogram: 1 0 0 0 0 0 1 1 0 1 + +Total # of neighbors = 3136 +Ave neighs/atom = 2.61333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 92 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 1000 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +run 60000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.001 | 4.032 | 4.124 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 -1.7056163 0.08808163 -1.1679097 3.9431686 + 1000 0.45 -1.9727652 0.058608073 -1.4645321 1.9982444 + 2000 0.44428815 -1.9902282 0.064240544 -1.4820698 1.7051263 + 3000 0.46641766 -1.9856844 0.065017468 -1.4546379 1.6939772 + 4000 0.45734058 -2.0242583 0.070494626 -1.4968042 1.3474276 + 5000 0.44904747 -2.0086954 0.058801142 -1.501221 1.4632351 + 6000 0.44961405 -2.0334509 0.05721299 -1.5269985 1.3093586 + 7000 0.45474928 -2.0453645 0.064725006 -1.5262692 1.1581035 + 8000 0.44274767 -2.0375379 0.062216035 -1.5329431 1.312914 + 9000 0.46176571 -2.0473031 0.065581966 -1.5203402 1.2013868 + 10000 0.45046977 -2.0540466 0.065402724 -1.5385495 0.95819581 + 11000 0.45016671 -2.0610028 0.056993955 -1.5542172 1.0433435 + 12000 0.43823039 -2.073155 0.065171939 -1.5701178 1.1400059 + 13000 0.44482161 -2.0678338 0.063901045 -1.5594819 0.97993813 + 14000 0.45 -2.0892562 0.061753632 -1.5778776 0.89841778 + 15000 0.44328626 -2.0859346 0.059956258 -1.5830615 0.90664821 + 16000 0.45666508 -2.0859262 0.059582346 -1.5700593 0.9702235 + 17000 0.44832038 -2.0762124 0.059153394 -1.5691122 0.93020504 + 18000 0.4555831 -2.0844959 0.057986324 -1.5713062 0.87398232 + 19000 0.45257867 -2.0671736 0.062190389 -1.5527816 0.89208496 + 20000 0.44010419 -2.1020944 0.062053708 -1.6003033 0.84140973 + 21000 0.45239369 -2.0820308 0.060981799 -1.5690323 0.98502522 + 22000 0.44607468 -2.0820602 0.051731316 -1.5846259 0.86120529 + 23000 0.45088473 -2.0865286 0.05727778 -1.5787418 1.1479844 + 24000 0.45526919 -2.1086678 0.057378327 -1.5963997 0.86944138 + 25000 0.46536624 -2.1055425 0.05665328 -1.5839108 0.72895438 + 26000 0.46716668 -2.1035267 0.057498747 -1.5792505 0.85105386 + 27000 0.44374699 -2.0932213 0.060937242 -1.5889069 0.93200759 + 28000 0.45944001 -2.0968869 0.053052954 -1.5847768 0.78909249 + 29000 0.4543632 -2.10493 0.061511018 -1.5894345 0.85862527 + 30000 0.44987776 -2.0942536 0.062431086 -1.5823197 0.7349894 + 31000 0.43829016 -2.0951259 0.060245682 -1.5969553 0.86702973 + 32000 0.45416601 -2.0991679 0.055978905 -1.5894015 0.75777153 + 33000 0.4605079 -2.1118364 0.058205688 -1.5935066 0.86041104 + 34000 0.43638213 -2.0925345 0.067533519 -1.5889825 0.85100425 + 35000 0.46912252 -2.1082718 0.051646432 -1.5878938 0.73613751 + 36000 0.45 -2.0966442 0.052507159 -1.5945121 0.88722487 + 37000 0.44970507 -2.1029685 0.065454263 -1.588184 0.76033821 + 38000 0.44910233 -2.097751 0.05767009 -1.5913528 0.95830923 + 39000 0.4322161 -2.1060426 0.062453704 -1.611733 0.74681695 + 40000 0.46143858 -2.1328575 0.057333011 -1.6144704 0.58326322 + 41000 0.43180549 -2.1070656 0.064150563 -1.6114694 0.82842684 + 42000 0.46738909 -2.1067947 0.058017036 -1.5817781 0.73292362 + 43000 0.43699124 -2.1171964 0.062817262 -1.6177521 0.73354741 + 44000 0.45262916 -2.1281307 0.055228619 -1.6206502 0.64167946 + 45000 0.43905419 -2.088789 0.055597999 -1.5945027 0.8002542 + 46000 0.44485569 -2.1035061 0.067828181 -1.5911929 0.71861494 + 47000 0.44496824 -2.0968296 0.0632326 -1.5889996 0.75202899 + 48000 0.46567244 -2.1235948 0.061032118 -1.5972783 0.64094556 + 49000 0.43202506 -2.0986097 0.053464022 -1.6134806 0.83857984 + 50000 0.45454698 -2.1263344 0.058119708 -1.6140465 0.67030037 + 51000 0.43702766 -2.1292347 0.074047424 -1.6185238 0.52896462 + 52000 0.46367081 -2.1177288 0.06726625 -1.5871781 0.74343227 + 53000 0.45 -2.1341074 0.062769314 -1.6217131 0.51130365 + 54000 0.44862492 -2.1272108 0.057723381 -1.6212364 0.54735429 + 55000 0.44926027 -2.1350444 0.066186625 -1.6199719 0.66821299 + 56000 0.4544227 -2.1325537 0.065298628 -1.6132111 0.63597556 + 57000 0.45697003 -2.1323238 0.053312855 -1.6224218 0.55572633 + 58000 0.45698902 -2.1043208 0.055835989 -1.5918766 0.63502658 + 59000 0.4425306 -2.1120353 0.056617261 -1.6132563 0.65681272 + 60000 0.44319296 -2.1171981 0.058330294 -1.6160442 0.63602511 +Loop time of 2.63918 on 4 procs for 60000 steps with 1200 atoms + +Performance: 9821248.084 tau/day, 22734.371 timesteps/s +97.3% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.1742 | 1.278 | 1.3471 | 5.9 | 48.43 +Bond | 0.046621 | 0.06565 | 0.081322 | 5.1 | 2.49 +Neigh | 0.46642 | 0.46917 | 0.47105 | 0.3 | 17.78 +Comm | 0.47295 | 0.55928 | 0.67758 | 10.5 | 21.19 +Output | 0.00073624 | 0.00173 | 0.0047016 | 4.1 | 0.07 +Modify | 0.14511 | 0.15226 | 0.15887 | 1.5 | 5.77 +Other | | 0.1131 | | | 4.28 + +Nlocal: 300 ave 309 max 281 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Nghost: 232.75 ave 234 max 231 min +Histogram: 1 0 0 1 0 0 0 0 0 2 +Neighs: 2450.25 ave 2576 max 2179 min +Histogram: 1 0 0 0 0 0 0 0 1 2 + +Total # of neighbors = 9801 +Ave neighs/atom = 8.1675 +Ave special neighs/atom = 0.5 +Neighbor list builds = 4887 +Dangerous builds = 0 +Total wall time: 0:00:02 diff --git a/examples/micelle/log.28Feb2019.micelle.rigid.g++.1 b/examples/micelle/log.28Feb2019.micelle.rigid.g++.1 new file mode 100644 index 0000000000..ec0079818d --- /dev/null +++ b/examples/micelle/log.28Feb2019.micelle.rigid.g++.1 @@ -0,0 +1,290 @@ +LAMMPS (28 Feb 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle + orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000271559 secs + read_data CPU = 0.00115585 secs +special_bonds fene + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 8.39233e-05 secs + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.799 | 3.799 | 3.799 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 + 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 + 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 + 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 + 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 + 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 + 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 + 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 + 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 + 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 + 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 + 600 0.45 0.58193041 0.088386617 1.119942 5.131481 + 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 + 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 + 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 + 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 + 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 + 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 + 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 + 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 +Loop time of 0.107201 on 1 procs for 1000 steps with 1200 atoms + +Performance: 4029800.456 tau/day, 9328.242 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.072035 | 0.072035 | 0.072035 | 0.0 | 67.20 +Bond | 0.0039918 | 0.0039918 | 0.0039918 | 0.0 | 3.72 +Neigh | 0.016078 | 0.016078 | 0.016078 | 0.0 | 15.00 +Comm | 0.0018375 | 0.0018375 | 0.0018375 | 0.0 | 1.71 +Output | 0.00016379 | 0.00016379 | 0.00016379 | 0.0 | 0.15 +Modify | 0.010665 | 0.010665 | 0.010665 | 0.0 | 9.95 +Other | | 0.002429 | | | 2.27 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 195 ave 195 max 195 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3136 ave 3136 max 3136 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3136 +Ave neighs/atom = 2.61333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 92 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 1000 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +group solvent molecule 0 +750 atoms in group solvent +group solute subtract all solvent +450 atoms in group solute +unfix 1 +unfix 2 +unfix 4 +fix 1 solvent nve +fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 +fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 +150 rigid bodies with 450 atoms +fix 4 all enforce2d +run 20000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.274 | 5.274 | 5.274 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.44603578 -1.7056163 0.08808163 -1.2555023 3.4039736 + 1000 0.46008168 -1.9040837 0.08808163 -1.4425691 0.93225457 + 2000 0.44520658 -1.9317253 0.08808163 -1.4822843 3.8192896 + 3000 0.43988556 -1.945898 0.08808163 -1.5007759 3.0371634 + 4000 0.4646519 -1.9753553 0.08808163 -1.5101312 -1.8041178 + 5000 0.4362993 -1.9763715 0.08808163 -1.5341603 1.5037284 + 6000 0.47007384 -1.9833154 0.08808163 -1.5136905 2.1227653 + 7000 0.44854623 -1.9914288 0.08808163 -1.5392772 3.9458099 + 8000 0.43841372 -1.9779603 0.08808163 -1.5340328 -4.5429769 + 9000 0.4518303 -1.9834387 0.08808163 -1.5286215 4.4230447 + 10000 0.43562904 -2.001471 0.08808163 -1.5598038 1.8919582 + 11000 0.44014575 -1.9820611 0.08808163 -1.5367278 -2.1189418 + 12000 0.44466956 -2.0134014 0.08808163 -1.5643963 -2.5218497 + 13000 0.45274369 -2.021443 0.08808163 -1.5658844 2.4795173 + 14000 0.44742645 -2.011108 0.08808163 -1.5598653 -0.74697767 + 15000 0.4674843 -2.024737 0.08808163 -1.5572139 -1.9539999 + 16000 0.45610154 -2.0401029 0.08808163 -1.5818189 -0.53082066 + 17000 0.44679292 -2.0365577 0.08808163 -1.5858291 -6.5040295 + 18000 0.44279107 -2.0500326 0.08808163 -1.6025522 -0.051597102 + 19000 0.45603993 -2.0306289 0.08808163 -1.5723948 1.0986608 + 20000 0.44519606 -2.0412229 0.08808163 -1.5917904 -1.0406746 +Loop time of 3.68102 on 1 procs for 20000 steps with 1200 atoms + +Performance: 2347175.802 tau/day, 5433.277 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.7349 | 1.7349 | 1.7349 | 0.0 | 47.13 +Bond | 0.079483 | 0.079483 | 0.079483 | 0.0 | 2.16 +Neigh | 0.49063 | 0.49063 | 0.49063 | 0.0 | 13.33 +Comm | 0.049093 | 0.049093 | 0.049093 | 0.0 | 1.33 +Output | 0.00022578 | 0.00022578 | 0.00022578 | 0.0 | 0.01 +Modify | 1.273 | 1.273 | 1.273 | 0.0 | 34.58 +Other | | 0.05369 | | | 1.46 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 395 ave 395 max 395 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 8915 ave 8915 max 8915 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 8915 +Ave neighs/atom = 7.42917 +Ave special neighs/atom = 0.5 +Neighbor list builds = 1580 +Dangerous builds = 0 +unfix 5 +unfix 4 +fix 5 solute rigid/small molecule langevin 0.45 0.45 0.5 112211 + create bodies CPU = 0.00012517 secs +150 rigid bodies with 450 atoms + 1.04536 = max distance from body owner to body atom +fix 4 all enforce2d +run 20000 +Per MPI rank memory allocation (min/avg/max) = 8.633 | 8.633 | 8.633 Mbytes +Step Temp E_pair E_mol TotEng Press + 20000 0.44519606 -2.0412229 0.08808163 -1.5917904 1.3058893 + 21000 0.4353376 -2.0483342 0.08808163 -1.6069035 0.53023317 + 22000 0.44034324 -2.0416876 0.08808163 -1.5961941 4.0327077 + 23000 0.4685403 -2.05295 0.08808163 -1.5845698 3.6792349 + 24000 0.44872075 -2.0320623 0.08808163 -1.579769 -2.0476923 + 25000 0.46829594 -2.0671408 0.08808163 -1.5989589 2.180811 + 26000 0.45257544 -2.0418792 0.08808163 -1.5864572 3.3924018 + 27000 0.44269664 -2.0409905 0.08808163 -1.5935868 -0.17012673 + 28000 0.46961216 -2.0552479 0.08808163 -1.5859978 -7.2870888 + 29000 0.46683129 -2.0438334 0.08808163 -1.5768404 3.0583141 + 30000 0.44262228 -2.036737 0.08808163 -1.5893937 0.087520915 + 31000 0.43517227 -2.0479672 0.08808163 -1.6066708 -0.3426009 + 32000 0.44543779 -2.0538031 0.08808163 -1.6041744 -0.2093148 + 33000 0.44629079 -2.0409901 0.08808163 -1.5906691 3.310113 + 34000 0.43058831 -2.0713827 0.08808163 -1.6338069 0.14128843 + 35000 0.44546512 -2.0427068 0.08808163 -1.593056 -3.1386697 + 36000 0.42971129 -2.0527435 0.08808163 -1.6158795 -2.7334963 + 37000 0.44707969 -2.0461803 0.08808163 -1.595219 -3.8777678 + 38000 0.43150818 -2.0435276 0.08808163 -1.6052052 0.2905487 + 39000 0.44463343 -2.0522113 0.08808163 -1.6032355 3.543123 + 40000 0.44582593 -2.052213 0.08808163 -1.6022693 1.1486536 +Loop time of 3.69012 on 1 procs for 20000 steps with 1200 atoms + +Performance: 2341388.948 tau/day, 5419.882 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.756 | 1.756 | 1.756 | 0.0 | 47.59 +Bond | 0.079221 | 0.079221 | 0.079221 | 0.0 | 2.15 +Neigh | 0.49085 | 0.49085 | 0.49085 | 0.0 | 13.30 +Comm | 0.048317 | 0.048317 | 0.048317 | 0.0 | 1.31 +Output | 0.0002315 | 0.0002315 | 0.0002315 | 0.0 | 0.01 +Modify | 1.2616 | 1.2616 | 1.2616 | 0.0 | 34.19 +Other | | 0.05386 | | | 1.46 + +Nlocal: 1200 ave 1200 max 1200 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 393 ave 393 max 393 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 9091 ave 9091 max 9091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 9091 +Ave neighs/atom = 7.57583 +Ave special neighs/atom = 0.5 +Neighbor list builds = 1582 +Dangerous builds = 0 +Total wall time: 0:00:07 diff --git a/examples/micelle/log.28Feb2019.micelle.rigid.g++.4 b/examples/micelle/log.28Feb2019.micelle.rigid.g++.4 new file mode 100644 index 0000000000..a6687a3c00 --- /dev/null +++ b/examples/micelle/log.28Feb2019.micelle.rigid.g++.4 @@ -0,0 +1,290 @@ +LAMMPS (28 Feb 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# 2d micelle simulation + +dimension 2 + +neighbor 0.3 bin +neigh_modify delay 5 + +atom_style bond + +# Soft potential push-off + +read_data data.micelle + orthogonal box = (0 0 -0.1) to (35.8569 35.8569 0.1) + 2 by 2 by 1 MPI processor grid + reading atoms ... + 1200 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 300 bonds + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000175714 secs + read_data CPU = 0.00145626 secs +special_bonds fene + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors + special bonds CPU = 7.22408e-05 secs + +pair_style soft 1.12246 +pair_coeff * * 0.0 1.12246 + +bond_style harmonic +bond_coeff 1 50.0 0.75 + +velocity all create 0.45 2349852 + +variable prefactor equal ramp(1.0,20.0) + +fix 1 all nve +fix 2 all temp/rescale 100 0.45 0.45 0.02 1.0 +fix 3 all adapt 1 pair soft a * * v_prefactor +fix 4 all enforce2d + +thermo 50 +run 1000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.42246 + ghost atom cutoff = 1.42246 + binsize = 0.71123, bins = 51 51 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair soft, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.758 | 3.85 | 4.126 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.45 0.40003481 2.2200223e-06 0.84966203 0.78952518 + 50 0.47411013 0.67721272 0.057404514 1.2083323 1.3375852 + 100 0.45 0.73046745 0.054836584 1.234929 2.3196516 + 150 0.67521742 0.72402001 0.043490075 1.4421648 2.8744416 + 200 0.45 0.78481891 0.076931503 1.3113754 3.0412388 + 250 0.66479018 0.69790602 0.081075564 1.4432178 3.6917024 + 300 0.45 0.76820218 0.066727591 1.2845548 3.7861054 + 350 0.67619136 0.625715 0.072722727 1.3740656 4.2861621 + 400 0.45 0.68527759 0.090724527 1.2256271 4.4725214 + 450 0.56702844 0.64402767 0.080555563 1.2911391 4.7402211 + 500 0.45 0.64883009 0.078376672 1.1768318 4.7919294 + 550 0.564664 0.58260368 0.080779475 1.2275766 4.9855705 + 600 0.45 0.58193041 0.088386617 1.119942 5.131481 + 650 0.52110993 0.5415273 0.097683746 1.1598867 5.2500294 + 700 0.45 0.50856787 0.088471208 1.0466641 5.2550165 + 750 0.51510855 0.47441291 0.089429375 1.0785216 5.375763 + 800 0.45 0.49926696 0.085958476 1.0348504 5.4665914 + 850 0.50688494 0.46614429 0.088962292 1.0615691 5.556932 + 900 0.45 0.47785593 0.10150857 1.0289895 5.7765975 + 950 0.49590559 0.46050477 0.096404887 1.052402 5.8649245 + 1000 0.45 0.47691182 0.08808163 1.0146185 6.0177568 +Loop time of 0.0389124 on 4 procs for 1000 steps with 1200 atoms + +Performance: 11101855.138 tau/day, 25698.739 timesteps/s +95.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.016776 | 0.017405 | 0.018435 | 0.5 | 44.73 +Bond | 0.0010033 | 0.0011995 | 0.0015519 | 0.6 | 3.08 +Neigh | 0.0044944 | 0.0045093 | 0.0045218 | 0.0 | 11.59 +Comm | 0.0080328 | 0.0093863 | 0.010242 | 0.9 | 24.12 +Output | 0.00021577 | 0.00027579 | 0.00045323 | 0.0 | 0.71 +Modify | 0.0034575 | 0.0036355 | 0.0040002 | 0.4 | 9.34 +Other | | 0.002501 | | | 6.43 + +Nlocal: 300 ave 305 max 292 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 100.25 ave 108 max 93 min +Histogram: 1 0 1 0 0 0 1 0 0 1 +Neighs: 784 ave 815 max 739 min +Histogram: 1 0 0 0 0 0 1 1 0 1 + +Total # of neighbors = 3136 +Ave neighs/atom = 2.61333 +Ave special neighs/atom = 0.5 +Neighbor list builds = 92 +Dangerous builds = 0 + +unfix 3 + +# Main run + +pair_style lj/cut 2.5 + +# solvent/head - full-size and long-range + +pair_coeff 1 1 1.0 1.0 2.5 +pair_coeff 2 2 1.0 1.0 2.5 +pair_coeff 1 2 1.0 1.0 2.5 + +# tail/tail - size-averaged and long-range + +pair_coeff 3 3 1.0 0.75 2.5 +pair_coeff 4 4 1.0 0.50 2.5 +pair_coeff 3 4 1.0 0.67 2.5 + +# solvent/tail - full-size and repulsive + +pair_coeff 1 3 1.0 1.0 1.12246 +pair_coeff 1 4 1.0 1.0 1.12246 + +# head/tail - size-averaged and repulsive + +pair_coeff 2 3 1.0 0.88 1.12246 +pair_coeff 2 4 1.0 0.75 1.12246 + +thermo 1000 + +#dump 1 all atom 2000 dump.micelle + +#dump 2 all image 2000 image.*.jpg type type zoom 1.6 +#dump_modify 2 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +#dump 3 all movie 2000 movie.mpg type type zoom 1.6 +#dump_modify 3 pad 5 adiam 1 0.5 adiam 2 1.5 adiam 3 1.0 adiam 4 0.75 + +reset_timestep 0 +group solvent molecule 0 +750 atoms in group solvent +group solute subtract all solvent +450 atoms in group solute +unfix 1 +unfix 2 +unfix 4 +fix 1 solvent nve +fix 2 solvent temp/rescale 100 0.45 0.45 0.02 1.0 +fix 5 solute rigid molecule langevin 0.45 0.45 0.5 112211 +150 rigid bodies with 450 atoms +fix 4 all enforce2d +run 20000 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 26 26 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.251 | 5.282 | 5.374 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.44603578 -1.7056163 0.08808163 -1.2555023 3.4039736 + 1000 0.46008163 -1.9040835 0.08808163 -1.4425689 0.93225869 + 2000 0.44943348 -1.9355135 0.08808163 -1.4826417 3.8399671 + 3000 0.4448437 -1.9480307 0.08808163 -1.4988842 2.5506553 + 4000 0.46013872 -1.9783821 0.08808163 -1.5168212 -1.8963215 + 5000 0.45520233 -1.9659462 0.08808163 -1.5083921 1.9238897 + 6000 0.44942049 -1.9663403 0.08808163 -1.513479 3.0633512 + 7000 0.45975758 -1.988462 0.08808163 -1.5272105 4.8267309 + 8000 0.45125238 -1.9913522 0.08808163 -1.5370041 -4.6644852 + 9000 0.45863606 -1.9792375 0.08808163 -1.5188962 4.3655071 + 10000 0.46264541 -1.9864611 0.08808163 -1.5228656 2.2176464 + 11000 0.45048361 -1.9907235 0.08808163 -1.5369994 -0.055360699 + 12000 0.44536719 -2.012875 0.08808163 -1.5633037 -0.2583823 + 13000 0.44212663 -2.0060111 0.08808163 -1.55907 3.3616171 + 14000 0.44984353 -2.0335408 0.08808163 -1.5803361 -0.21585645 + 15000 0.44896672 -2.0385265 0.08808163 -1.5860335 -4.6186206 + 16000 0.46694997 -2.032795 0.08808163 -1.5657056 0.53443281 + 17000 0.43208201 -2.0272255 0.08808163 -1.5884373 -6.5239975 + 18000 0.43281873 -2.0331268 0.08808163 -1.5937406 -0.048319943 + 19000 0.44704527 -2.0286742 0.08808163 -1.5777408 1.6356417 + 20000 0.44279735 -2.0443561 0.08808163 -1.5968706 -3.8337952 +Loop time of 1.71924 on 4 procs for 20000 steps with 1200 atoms + +Performance: 5025468.853 tau/day, 11633.030 timesteps/s +98.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.39864 | 0.40873 | 0.42192 | 1.6 | 23.77 +Bond | 0.02118 | 0.021816 | 0.022785 | 0.4 | 1.27 +Neigh | 0.13931 | 0.14031 | 0.14117 | 0.2 | 8.16 +Comm | 0.13974 | 0.15328 | 0.16884 | 3.3 | 8.92 +Output | 0.00026131 | 0.00044435 | 0.00099206 | 0.0 | 0.03 +Modify | 0.93275 | 0.94138 | 0.95072 | 0.7 | 54.76 +Other | | 0.05327 | | | 3.10 + +Nlocal: 300 ave 303 max 298 min +Histogram: 1 0 1 0 1 0 0 0 0 1 +Nghost: 218.5 ave 226 max 215 min +Histogram: 2 1 0 0 0 0 0 0 0 1 +Neighs: 2258.75 ave 2283 max 2216 min +Histogram: 1 0 0 0 0 0 1 0 1 1 + +Total # of neighbors = 9035 +Ave neighs/atom = 7.52917 +Ave special neighs/atom = 0.5 +Neighbor list builds = 1580 +Dangerous builds = 0 +unfix 5 +unfix 4 +fix 5 solute rigid/small molecule langevin 0.45 0.45 0.5 112211 + create bodies CPU = 5.43594e-05 secs +150 rigid bodies with 450 atoms + 0.916597 = max distance from body owner to body atom +fix 4 all enforce2d +run 20000 +Per MPI rank memory allocation (min/avg/max) = 8.568 | 8.6 | 8.691 Mbytes +Step Temp E_pair E_mol TotEng Press + 20000 0.44279735 -2.0443561 0.08808163 -1.5968706 -1.033643 + 21000 0.4529129 -2.049461 0.08808163 -1.5937651 0.93160285 + 22000 0.45039188 -2.0530092 0.08808163 -1.5993595 -0.10608965 + 23000 0.45261583 -2.0336042 0.08808163 -1.5781494 -2.5769871 + 24000 0.4608331 -2.0404645 0.08808163 -1.57834 3.1931675 + 25000 0.43479001 -2.0617104 0.08808163 -1.6207242 2.8190122 + 26000 0.47009651 -2.0754873 0.08808163 -1.605844 -0.9158501 + 27000 0.45002704 -2.0782104 0.08808163 -1.6248568 0.98629661 + 28000 0.45126136 -2.0592619 0.08808163 -1.6049065 0.03305448 + 29000 0.44355328 -2.0572858 0.08808163 -1.6091868 -6.0797989 + 30000 0.45053899 -2.0530953 0.08808163 -1.5993261 0.38382951 + 31000 0.46931923 -2.0718827 0.08808163 -1.6028703 2.2346891 + 32000 0.45348857 -2.0744024 0.08808163 -1.6182393 4.5028966 + 33000 0.44767742 -2.0597127 0.08808163 -1.6082662 -2.8021641 + 34000 0.45287544 -2.0857303 0.08808163 -1.6300648 -5.384091 + 35000 0.44743898 -2.0927246 0.08808163 -1.6414717 1.4800508 + 36000 0.45627028 -2.0720546 0.08808163 -1.6136336 -2.9961696 + 37000 0.4641334 -2.0701098 0.08808163 -1.6053065 8.4186854 + 38000 0.45922901 -2.0962331 0.08808163 -1.6354106 0.38361763 + 39000 0.4692834 -2.0573815 0.08808163 -1.5883982 -2.2177345 + 40000 0.46206931 -2.057851 0.08808163 -1.5947231 -1.0405727 +Loop time of 1.25476 on 4 procs for 20000 steps with 1200 atoms + +Performance: 6885775.862 tau/day, 15939.296 timesteps/s +98.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.40627 | 0.43037 | 0.45515 | 2.6 | 34.30 +Bond | 0.020504 | 0.021573 | 0.022739 | 0.5 | 1.72 +Neigh | 0.14337 | 0.14438 | 0.1453 | 0.2 | 11.51 +Comm | 0.13776 | 0.16647 | 0.19351 | 5.0 | 13.27 +Output | 0.00025082 | 0.00052994 | 0.0013635 | 0.0 | 0.04 +Modify | 0.45467 | 0.45822 | 0.46259 | 0.5 | 36.52 +Other | | 0.03321 | | | 2.65 + +Nlocal: 300 ave 304 max 293 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Nghost: 215.25 ave 217 max 213 min +Histogram: 1 0 0 0 0 1 0 1 0 1 +Neighs: 2340 ave 2378 max 2290 min +Histogram: 1 0 0 1 0 0 0 0 0 2 + +Total # of neighbors = 9360 +Ave neighs/atom = 7.8 +Ave special neighs/atom = 0.5 +Neighbor list builds = 1579 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 6b4d0ab2a5..9397f3c6c5 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -237,7 +237,7 @@ int DeviceT::set_ocl_params(char *ocl_vendor) { " -DBLOCK_CELL_ID="+params[11]+ " -DMAX_BIO_SHARED_TYPES="+params[12]; } - _ocl_compile_string="-cl-fast-relaxed-math -cl-mad-enable "+std::string(OCL_INT_TYPE)+" "+ + _ocl_compile_string="-cl-std=CL1.2 -cl-fast-relaxed-math -cl-mad-enable "+std::string(OCL_INT_TYPE)+" "+ std::string(OCL_PRECISION_COMPILE)+" "+_ocl_vendor_string; #endif return 0; diff --git a/lib/kim/Makefile.lammps b/lib/kim/Makefile.lammps index 7c9fc7c5f7..492b9ddfc6 100644 --- a/lib/kim/Makefile.lammps +++ b/lib/kim/Makefile.lammps @@ -17,13 +17,18 @@ ifeq ($(strip $(shell pkg-config --version)),) $(error 'pkg-config' not found, but is required to configure the KIM API) endif - kim_PREFIX := $(shell cat ../../lib/kim/kim-prefix.txt 2> /dev/null) kim_PREFIX := $(if $(kim_PREFIX),$(kim_PREFIX)/lib/pkgconfig,) kim_PREFIX := $(if $(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX):$(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX)) +# there is no usable libcurl installation +ifeq ($(shell curl-config --version 2> /dev/null),) kim_SYSINC := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --cflags libkim-api-v2 2> /dev/null) kim_SYSLIB := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --libs libkim-api-v2 2> /dev/null) +else +kim_SYSINC := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --cflags libkim-api-v2 2> /dev/null) $(shell curl-config --cflags) -DLMP_KIM_CURL +kim_SYSLIB := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --libs libkim-api-v2 2> /dev/null) $(shell curl-config --libs) +endif ifeq ($(strip $(kim_SYSINC)),) $(error 'pkg-config' could not find an installed KIM API library.) diff --git a/lib/kim/README b/lib/kim/README index 0e51a30870..493758561d 100644 --- a/lib/kim/README +++ b/lib/kim/README @@ -13,6 +13,12 @@ do the same thing by typing "python Install.py" from within this directory, or you can do it manually by following the instructions below. +As of KIM API version 2, the KIM package also provides a LAMMPS command +to perform queries through the OpenKIM web API. This feature requires +that the CURL library (libcurl) development package and its configuration +query tool, curl-config, are installed. The provided Makefile.lammps +is set up to automatically detect this. + ----------------- Instructions: diff --git a/python/README b/python/README index 6b13959f4d..204ca2c28d 100644 --- a/python/README +++ b/python/README @@ -9,12 +9,12 @@ doc/Section_python.html and in doc/Section_start.html#start_5. Basically you need to follow these steps in the src directory: % make g++ mode=shlib # build for whatever machine target you wish -% make install-python # may need to do this via sudo +% make install-python # install into site-packages folder You can replace the last step by a one-time setting of environment variables in your shell script. Or you can run the python/install.py script directly to give you more control over where the two relevant -files are installed. See doc/Section_python.html for details. +files are installed. See doc/Python_install.html for details. You should then be able to launch Python and instantiate an instance of LAMMPS: diff --git a/python/install.py b/python/install.py index 9308506fd2..7f7062103a 100644 --- a/python/install.py +++ b/python/install.py @@ -1,56 +1,96 @@ #!/usr/bin/env python -# copy LAMMPS src/liblammps.so and lammps.py to system dirs - -from __future__ import print_function - -instructions = """ -Syntax: python install.py [-h] [pydir] - pydir = target dir for lammps.py and liblammps.so - default = Python site-packages dir +""" +Installer script to install the LAMMPS python module and the corresponding +shared library into either the system-wide site-packages tree, or - failing +that - into the corresponding user tree. Called from the 'install-python' +build target in the conventional and CMake based build systems """ +# copy LAMMPS shared library and lammps.py to system dirs + +from __future__ import print_function import sys,os,shutil +from argparse import ArgumentParser -if (len(sys.argv) > 1 and sys.argv[1] == "-h") or len(sys.argv) > 2: - print(instructions) - sys.exit() +parser = ArgumentParser(prog='install.py', + description='LAMMPS python module installer script') -if len(sys.argv) == 2: pydir = sys.argv[1] -else: pydir = "" +parser.add_argument("-m", "--module", required=True, + help="path to the source of the LAMMPS Python module") +parser.add_argument("-l", "--lib", required=True, + help="path to the compiled LAMMPS shared library") +parser.add_argument("-v", "--version", required=True, + help="path to the LAMMPS version.h header file") -# copy lammps.py to pydir if it exists -# if pydir not specified, install in site-packages via distutils setup() +parser.add_argument("-d","--dir", + help="Legacy custom installation folder selection for module and library") -if pydir: - if not os.path.isdir(pydir): - print( "ERROR: pydir %s does not exist" % pydir) - sys.exit() - str = "cp ../python/lammps.py %s" % pydir - print(str) +args = parser.parse_args() + +# validate arguments and make paths absolute + +if args.module: + if not os.path.exists(args.module): + print( "ERROR: LAMMPS module file %s does not exist" % args.module) + parser.print_help() + sys.exit(1) + else: + args.module = os.path.abspath(args.module) + +if args.lib: + if not os.path.exists(args.lib): + print( "ERROR: LAMMPS shared library %s does not exist" % args.lib) + parser.print_help() + sys.exit(1) + else: + args.lib = os.path.abspath(args.lib) + +if args.version: + if not os.path.exists(args.version): + print( "ERROR: LAMMPS version header file %s does not exist" % args.version) + parser.print_help() + sys.exit(1) + else: + args.version = os.path.abspath(args.version) + +if args.dir: + if not os.path.isdir(args.dir): + print( "ERROR: Installation folder %s does not exist" % args.dir) + parser.print_help() + sys.exit(1) + else: + args.dir = os.path.abspath(args.dir) + +# if a custom directory is given, we copy the files directly +# without any special processing or additional steps to that folder + +if args.dir: + print("Copying LAMMPS Python module to custom folder %s" % args.dir) try: - shutil.copyfile("../python/lammps.py", os.path.join(pydir,'lammps.py') ) + shutil.copyfile(args.module, os.path.join(args.dir,'lammps.py')) except shutil.Error: - pass # source and destination are identical + pass # fail silently - str = "cp ../src/liblammps.so %s" % pydir - print(str) + print("Copying LAMMPS shared library to custom folder %s" % args.dir) try: - shutil.copyfile("../src/liblammps.so", os.path.join(pydir,"liblammps.so") ) + shutil.copyfile(args.lib, os.path.join(args.dir,os.path.basename(args.lib))) except shutil.Error: - pass # source and destination are identical - sys.exit() - -print("installing lammps.py in Python site-packages dir") + pass # fail silently -os.chdir('../python') # in case invoked via make in src dir + sys.exit() # extract version string from header -fp = open('../src/version.h','r') +fp = open(args.version,'r') txt=fp.read().split('"')[1].split() verstr=txt[0]+txt[1]+txt[2] fp.close() +print("Installing LAMMPS Python module version %s into site-packages folder" % verstr) + +# we need to switch to the folder of the python module +os.chdir(os.path.dirname(args.module)) + from distutils.core import setup from distutils.sysconfig import get_python_lib import site @@ -62,28 +102,26 @@ try: version = verstr, author = "Steve Plimpton", author_email = "sjplimp@sandia.gov", - url = "http://lammps.sandia.gov", - description = "LAMMPS molecular dynamics library", + url = "https://lammps.sandia.gov", + description = "LAMMPS Molecular Dynamics Python module", + license = "GPL", py_modules = ["lammps"], - data_files = [(get_python_lib(), ["../src/liblammps.so"])]) + data_files = [(get_python_lib(), [args.lib])]) except: tryuser=True - print ("Installation into global site-packages dir failed.\nTrying user site dir %s now." % site.USER_SITE) - + print ("Installation into global site-packages folder failed.\nTrying user folder %s now." % site.USER_SITE) if tryuser: try: sys.argv = ["setup.py","install","--user"] # as if had run "python setup.py install --user" setup(name = "lammps", - version = verstr, - author = "Steve Plimpton", - author_email = "sjplimp@sandia.gov", - url = "http://lammps.sandia.gov", - description = "LAMMPS molecular dynamics library", - py_modules = ["lammps"], - data_files = [(site.USER_SITE, ["../src/liblammps.so"])]) - except: - print("Installation into user site package dir failed.\nGo to ../python and install manually.") - - - + version = verstr, + author = "Steve Plimpton", + author_email = "sjplimp@sandia.gov", + url = "https://lammps.sandia.gov", + description = "LAMMPS Molecular Dynamics Python module", + license = "GPL", + py_modules = ["lammps"], + data_files = [(site.USER_SITE, [args.lib])]) + except: + print("Installation into user site package folder failed.") diff --git a/src/.gitignore b/src/.gitignore index d405cb209e..27f4f8a64c 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -26,6 +26,11 @@ /*_ssa.h /*_ssa.cpp +/kim_query.cpp +/kim_query.h +/pair_kim.cpp +/pair_kim.h + /kokkos.cpp /kokkos.h /kokkos_type.h @@ -818,8 +823,6 @@ /pair_hbond_dreiding_morse.h /pair_ilp_graphene_hbn.cpp /pair_ilp_graphene_hbn.h -/pair_kim.cpp -/pair_kim.h /pair_kolmogorov_crespi_full.cpp /pair_kolmogorov_crespi_full.h /pair_kolmogorov_crespi_z.cpp diff --git a/src/ASPHERE/pair_gayberne.cpp b/src/ASPHERE/pair_gayberne.cpp index 857541957e..3d4ed3f183 100644 --- a/src/ASPHERE/pair_gayberne.cpp +++ b/src/ASPHERE/pair_gayberne.cpp @@ -94,8 +94,7 @@ void PairGayBerne::compute(int eflag, int vflag) double *iquat,*jquat; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); AtomVecEllipsoid::Bonus *bonus = avec->bonus; int *ellipsoid = atom->ellipsoid; diff --git a/src/ASPHERE/pair_line_lj.cpp b/src/ASPHERE/pair_line_lj.cpp index 963ff985c4..4873b44dc4 100644 --- a/src/ASPHERE/pair_line_lj.cpp +++ b/src/ASPHERE/pair_line_lj.cpp @@ -77,8 +77,7 @@ void PairLineLJ::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/ASPHERE/pair_resquared.cpp b/src/ASPHERE/pair_resquared.cpp index c477b1b8cf..b100a5f184 100644 --- a/src/ASPHERE/pair_resquared.cpp +++ b/src/ASPHERE/pair_resquared.cpp @@ -85,8 +85,7 @@ void PairRESquared::compute(int eflag, int vflag) RE2Vars wi,wj; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/ASPHERE/pair_tri_lj.cpp b/src/ASPHERE/pair_tri_lj.cpp index 142caf3764..cefd73f976 100644 --- a/src/ASPHERE/pair_tri_lj.cpp +++ b/src/ASPHERE/pair_tri_lj.cpp @@ -77,8 +77,7 @@ void PairTriLJ::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); AtomVecTri::Bonus *bonus = avec->bonus; double **x = atom->x; diff --git a/src/BODY/pair_body_nparticle.cpp b/src/BODY/pair_body_nparticle.cpp index 80b45beb4e..f2eb2aa520 100644 --- a/src/BODY/pair_body_nparticle.cpp +++ b/src/BODY/pair_body_nparticle.cpp @@ -77,8 +77,7 @@ void PairBodyNparticle::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp index b6dcab29ae..69495ea57f 100644 --- a/src/BODY/pair_body_rounded_polygon.cpp +++ b/src/BODY/pair_body_rounded_polygon.cpp @@ -111,8 +111,7 @@ void PairBodyRoundedPolygon::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp index 1a4653ce53..60f6df3582 100644 --- a/src/BODY/pair_body_rounded_polyhedron.cpp +++ b/src/BODY/pair_body_rounded_polyhedron.cpp @@ -127,8 +127,7 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/CLASS2/angle_class2.cpp b/src/CLASS2/angle_class2.cpp index 24f41bfd58..d550767e5e 100644 --- a/src/CLASS2/angle_class2.cpp +++ b/src/CLASS2/angle_class2.cpp @@ -78,8 +78,7 @@ void AngleClass2::compute(int eflag, int vflag) double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index af20313e0a..26c4e63a4d 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -56,8 +56,7 @@ void BondClass2::compute(int eflag, int vflag) double rsq,r,dr,dr2,dr3,dr4,de_bond; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CLASS2/dihedral_class2.cpp b/src/CLASS2/dihedral_class2.cpp index c6360dd846..c471b1f353 100644 --- a/src/CLASS2/dihedral_class2.cpp +++ b/src/CLASS2/dihedral_class2.cpp @@ -118,8 +118,7 @@ void DihedralClass2::compute(int eflag, int vflag) double fabcd[4][3]; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CLASS2/improper_class2.cpp b/src/CLASS2/improper_class2.cpp index 77f594af9d..ccb81aebd9 100644 --- a/src/CLASS2/improper_class2.cpp +++ b/src/CLASS2/improper_class2.cpp @@ -90,8 +90,7 @@ void ImproperClass2::compute(int eflag, int vflag) double fabcd[4][3]; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) diff --git a/src/CLASS2/pair_lj_class2.cpp b/src/CLASS2/pair_lj_class2.cpp index e6546b1acc..f2eef55290 100644 --- a/src/CLASS2/pair_lj_class2.cpp +++ b/src/CLASS2/pair_lj_class2.cpp @@ -38,20 +38,20 @@ PairLJClass2::PairLJClass2(LAMMPS *lmp) : Pair(lmp) PairLJClass2::~PairLJClass2() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } } @@ -65,8 +65,7 @@ void PairLJClass2::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CLASS2/pair_lj_class2_coul_cut.cpp b/src/CLASS2/pair_lj_class2_coul_cut.cpp index 49242ecb43..dafa83c8fd 100644 --- a/src/CLASS2/pair_lj_class2_coul_cut.cpp +++ b/src/CLASS2/pair_lj_class2_coul_cut.cpp @@ -39,23 +39,23 @@ PairLJClass2CoulCut::PairLJClass2CoulCut(LAMMPS *lmp) : Pair(lmp) PairLJClass2CoulCut::~PairLJClass2CoulCut() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(cut_coul); - memory->destroy(cut_coulsq); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(cut_coul); + memory->destroy(cut_coulsq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } } @@ -70,8 +70,7 @@ void PairLJClass2CoulCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CLASS2/pair_lj_class2_coul_long.cpp b/src/CLASS2/pair_lj_class2_coul_long.cpp index bbea2ade6e..85fe0152e2 100644 --- a/src/CLASS2/pair_lj_class2_coul_long.cpp +++ b/src/CLASS2/pair_lj_class2_coul_long.cpp @@ -50,21 +50,21 @@ PairLJClass2CoulLong::PairLJClass2CoulLong(LAMMPS *lmp) : Pair(lmp) PairLJClass2CoulLong::~PairLJClass2CoulLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } if (ftable) free_tables(); } @@ -82,8 +82,7 @@ void PairLJClass2CoulLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/COLLOID/pair_brownian.cpp b/src/COLLOID/pair_brownian.cpp index e532c06c86..aefa96b1fb 100644 --- a/src/COLLOID/pair_brownian.cpp +++ b/src/COLLOID/pair_brownian.cpp @@ -80,8 +80,7 @@ void PairBrownian::compute(int eflag, int vflag) double rsq,r,h_sep,radi; int *ilist,*jlist,*numneigh,**firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/COLLOID/pair_brownian_poly.cpp b/src/COLLOID/pair_brownian_poly.cpp index c6d5def2fa..389ae084b7 100644 --- a/src/COLLOID/pair_brownian_poly.cpp +++ b/src/COLLOID/pair_brownian_poly.cpp @@ -66,8 +66,7 @@ void PairBrownianPoly::compute(int eflag, int vflag) double rsq,r,h_sep,beta0,beta1,radi,radj; int *ilist,*jlist,*numneigh,**firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/COLLOID/pair_colloid.cpp b/src/COLLOID/pair_colloid.cpp index c16dbf41af..04c35a7c00 100644 --- a/src/COLLOID/pair_colloid.cpp +++ b/src/COLLOID/pair_colloid.cpp @@ -78,8 +78,7 @@ void PairColloid::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/COLLOID/pair_lubricate.cpp b/src/COLLOID/pair_lubricate.cpp index de53d91818..4e629bd442 100644 --- a/src/COLLOID/pair_lubricate.cpp +++ b/src/COLLOID/pair_lubricate.cpp @@ -88,8 +88,7 @@ void PairLubricate::compute(int eflag, int vflag) double vxmu2f = force->vxmu2f; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/COLLOID/pair_lubricateU.cpp b/src/COLLOID/pair_lubricateU.cpp index 35fe33c84e..3ea3d4fe4a 100644 --- a/src/COLLOID/pair_lubricateU.cpp +++ b/src/COLLOID/pair_lubricateU.cpp @@ -116,8 +116,7 @@ void PairLubricateU::compute(int eflag, int vflag) int nghost = atom->nghost; int nall = nlocal + nghost; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // skip compute() if called from integrate::setup() // this is b/c do not want compute() to update velocities twice on a restart diff --git a/src/COLLOID/pair_lubricateU_poly.cpp b/src/COLLOID/pair_lubricateU_poly.cpp index 90ac848d26..4fec95dcd8 100644 --- a/src/COLLOID/pair_lubricateU_poly.cpp +++ b/src/COLLOID/pair_lubricateU_poly.cpp @@ -78,8 +78,7 @@ void PairLubricateUPoly::compute(int eflag, int vflag) double **f = atom->f; double **torque = atom->torque; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // grow per-atom arrays if necessary // need to be atom->nmax in length diff --git a/src/COLLOID/pair_lubricate_poly.cpp b/src/COLLOID/pair_lubricate_poly.cpp index 5e52933364..ffbe7fce3c 100644 --- a/src/COLLOID/pair_lubricate_poly.cpp +++ b/src/COLLOID/pair_lubricate_poly.cpp @@ -72,8 +72,7 @@ void PairLubricatePoly::compute(int eflag, int vflag) double vxmu2f = force->vxmu2f; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/COLLOID/pair_yukawa_colloid.cpp b/src/COLLOID/pair_yukawa_colloid.cpp index d21bc43524..ab7d088508 100644 --- a/src/COLLOID/pair_yukawa_colloid.cpp +++ b/src/COLLOID/pair_yukawa_colloid.cpp @@ -46,8 +46,7 @@ void PairYukawaColloid::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_born_coul_dsf_cs.cpp b/src/CORESHELL/pair_born_coul_dsf_cs.cpp index 549c7c0348..f4d7447ade 100644 --- a/src/CORESHELL/pair_born_coul_dsf_cs.cpp +++ b/src/CORESHELL/pair_born_coul_dsf_cs.cpp @@ -57,8 +57,7 @@ void PairBornCoulDSFCS::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_born_coul_long_cs.cpp b/src/CORESHELL/pair_born_coul_long_cs.cpp index 76f6eb387d..a19f8c34a8 100644 --- a/src/CORESHELL/pair_born_coul_long_cs.cpp +++ b/src/CORESHELL/pair_born_coul_long_cs.cpp @@ -68,8 +68,7 @@ void PairBornCoulLongCS::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_born_coul_wolf_cs.cpp b/src/CORESHELL/pair_born_coul_wolf_cs.cpp index 84179ce50a..7b52c28664 100644 --- a/src/CORESHELL/pair_born_coul_wolf_cs.cpp +++ b/src/CORESHELL/pair_born_coul_wolf_cs.cpp @@ -53,8 +53,7 @@ void PairBornCoulWolfCS::compute(int eflag, int vflag) double erfcc,erfcd,v_sh,dvdrr,e_self,e_shift,f_shift,qisq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_buck_coul_long_cs.cpp b/src/CORESHELL/pair_buck_coul_long_cs.cpp index ea072d44a1..8df91f39a3 100644 --- a/src/CORESHELL/pair_buck_coul_long_cs.cpp +++ b/src/CORESHELL/pair_buck_coul_long_cs.cpp @@ -68,8 +68,7 @@ void PairBuckCoulLongCS::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_coul_long_cs.cpp b/src/CORESHELL/pair_coul_long_cs.cpp index b214653841..c8c8387d6d 100644 --- a/src/CORESHELL/pair_coul_long_cs.cpp +++ b/src/CORESHELL/pair_coul_long_cs.cpp @@ -69,8 +69,7 @@ void PairCoulLongCS::compute(int eflag, int vflag) double rsq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_coul_wolf_cs.cpp b/src/CORESHELL/pair_coul_wolf_cs.cpp index b50f14833e..36e037bfc8 100644 --- a/src/CORESHELL/pair_coul_wolf_cs.cpp +++ b/src/CORESHELL/pair_coul_wolf_cs.cpp @@ -53,8 +53,7 @@ void PairCoulWolfCS::compute(int eflag, int vflag) double erfcc,erfcd,v_sh,dvdrr,e_self,e_shift,f_shift,qisq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp index 8caefc0e66..56c75f0f5d 100644 --- a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp @@ -74,8 +74,7 @@ void PairLJCutCoulLongCS::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -399,8 +398,7 @@ void PairLJCutCoulLongCS::compute_outer(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/DIPOLE/pair_lj_cut_dipole_cut.cpp b/src/DIPOLE/pair_lj_cut_dipole_cut.cpp index 6af9b45724..18b78c55e0 100644 --- a/src/DIPOLE/pair_lj_cut_dipole_cut.cpp +++ b/src/DIPOLE/pair_lj_cut_dipole_cut.cpp @@ -69,8 +69,7 @@ void PairLJCutDipoleCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/DIPOLE/pair_lj_cut_dipole_long.cpp b/src/DIPOLE/pair_lj_cut_dipole_long.cpp index 817a120e3d..0806d1ee73 100644 --- a/src/DIPOLE/pair_lj_cut_dipole_long.cpp +++ b/src/DIPOLE/pair_lj_cut_dipole_long.cpp @@ -90,8 +90,7 @@ void PairLJCutDipoleLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/DIPOLE/pair_lj_long_dipole_long.cpp b/src/DIPOLE/pair_lj_long_dipole_long.cpp index 21fc035854..fbdc47a15b 100644 --- a/src/DIPOLE/pair_lj_long_dipole_long.cpp +++ b/src/DIPOLE/pair_lj_long_dipole_long.cpp @@ -405,8 +405,7 @@ void PairLJLongDipoleLong::compute(int eflag, int vflag) double evdwl,ecoul,fpair; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; double **mu = atom->mu, *mu0 = mu[0], *imu, *jmu; diff --git a/src/GPU/pair_beck_gpu.cpp b/src/GPU/pair_beck_gpu.cpp index e65c53d194..9f76975ef1 100644 --- a/src/GPU/pair_beck_gpu.cpp +++ b/src/GPU/pair_beck_gpu.cpp @@ -84,8 +84,7 @@ PairBeckGPU::~PairBeckGPU() void PairBeckGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_born_coul_long_cs_gpu.cpp b/src/GPU/pair_born_coul_long_cs_gpu.cpp index 587c7b5215..291ad8ad1f 100644 --- a/src/GPU/pair_born_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_long_cs_gpu.cpp @@ -106,8 +106,7 @@ PairBornCoulLongCSGPU::~PairBornCoulLongCSGPU() void PairBornCoulLongCSGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index 1549ed79af..eb204691c7 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -101,8 +101,7 @@ PairBornCoulLongGPU::~PairBornCoulLongGPU() void PairBornCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp index bf23007bca..4877a442b5 100644 --- a/src/GPU/pair_born_coul_wolf_cs_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_cs_gpu.cpp @@ -94,8 +94,7 @@ PairBornCoulWolfCSGPU::~PairBornCoulWolfCSGPU() void PairBornCoulWolfCSGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_born_coul_wolf_gpu.cpp b/src/GPU/pair_born_coul_wolf_gpu.cpp index 06a2769e10..851174988b 100644 --- a/src/GPU/pair_born_coul_wolf_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_gpu.cpp @@ -92,8 +92,7 @@ PairBornCoulWolfGPU::~PairBornCoulWolfGPU() void PairBornCoulWolfGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_born_gpu.cpp b/src/GPU/pair_born_gpu.cpp index 01e91a9c0b..253d2d7282 100644 --- a/src/GPU/pair_born_gpu.cpp +++ b/src/GPU/pair_born_gpu.cpp @@ -87,8 +87,7 @@ PairBornGPU::~PairBornGPU() void PairBornGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_buck_coul_cut_gpu.cpp b/src/GPU/pair_buck_coul_cut_gpu.cpp index ce71e9ac41..ed602f9cab 100644 --- a/src/GPU/pair_buck_coul_cut_gpu.cpp +++ b/src/GPU/pair_buck_coul_cut_gpu.cpp @@ -88,8 +88,7 @@ PairBuckCoulCutGPU::~PairBuckCoulCutGPU() void PairBuckCoulCutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_buck_coul_long_gpu.cpp b/src/GPU/pair_buck_coul_long_gpu.cpp index a2d14ea25f..d6b9e53282 100644 --- a/src/GPU/pair_buck_coul_long_gpu.cpp +++ b/src/GPU/pair_buck_coul_long_gpu.cpp @@ -97,8 +97,7 @@ PairBuckCoulLongGPU::~PairBuckCoulLongGPU() void PairBuckCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_buck_gpu.cpp b/src/GPU/pair_buck_gpu.cpp index e6479e46e8..8c85407e6e 100644 --- a/src/GPU/pair_buck_gpu.cpp +++ b/src/GPU/pair_buck_gpu.cpp @@ -85,8 +85,7 @@ PairBuckGPU::~PairBuckGPU() void PairBuckGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_colloid_gpu.cpp b/src/GPU/pair_colloid_gpu.cpp index 03e5aac5d5..0ee8708b5b 100644 --- a/src/GPU/pair_colloid_gpu.cpp +++ b/src/GPU/pair_colloid_gpu.cpp @@ -85,8 +85,7 @@ PairColloidGPU::~PairColloidGPU() void PairColloidGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_coul_cut_gpu.cpp b/src/GPU/pair_coul_cut_gpu.cpp index 436d26fb54..fb50c446b1 100644 --- a/src/GPU/pair_coul_cut_gpu.cpp +++ b/src/GPU/pair_coul_cut_gpu.cpp @@ -85,8 +85,7 @@ PairCoulCutGPU::~PairCoulCutGPU() void PairCoulCutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_coul_debye_gpu.cpp b/src/GPU/pair_coul_debye_gpu.cpp index c17e21f41f..ec771a9935 100644 --- a/src/GPU/pair_coul_debye_gpu.cpp +++ b/src/GPU/pair_coul_debye_gpu.cpp @@ -86,8 +86,7 @@ PairCoulDebyeGPU::~PairCoulDebyeGPU() void PairCoulDebyeGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_coul_dsf_gpu.cpp b/src/GPU/pair_coul_dsf_gpu.cpp index 15a15660dd..1753b8a91c 100644 --- a/src/GPU/pair_coul_dsf_gpu.cpp +++ b/src/GPU/pair_coul_dsf_gpu.cpp @@ -97,8 +97,7 @@ PairCoulDSFGPU::~PairCoulDSFGPU() void PairCoulDSFGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_coul_long_cs_gpu.cpp b/src/GPU/pair_coul_long_cs_gpu.cpp index be2a090786..6ca00d6361 100644 --- a/src/GPU/pair_coul_long_cs_gpu.cpp +++ b/src/GPU/pair_coul_long_cs_gpu.cpp @@ -99,8 +99,7 @@ PairCoulLongCSGPU::~PairCoulLongCSGPU() void PairCoulLongCSGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_coul_long_gpu.cpp b/src/GPU/pair_coul_long_gpu.cpp index 684b0049c0..f75d10b6dd 100644 --- a/src/GPU/pair_coul_long_gpu.cpp +++ b/src/GPU/pair_coul_long_gpu.cpp @@ -94,8 +94,7 @@ PairCoulLongGPU::~PairCoulLongGPU() void PairCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_dpd_gpu.cpp b/src/GPU/pair_dpd_gpu.cpp index 7d56b47fe5..b1e45fbecd 100644 --- a/src/GPU/pair_dpd_gpu.cpp +++ b/src/GPU/pair_dpd_gpu.cpp @@ -225,8 +225,7 @@ PairDPDGPU::~PairDPDGPU() void PairDPDGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_dpd_tstat_gpu.cpp b/src/GPU/pair_dpd_tstat_gpu.cpp index f093c03a2d..0693a27344 100644 --- a/src/GPU/pair_dpd_tstat_gpu.cpp +++ b/src/GPU/pair_dpd_tstat_gpu.cpp @@ -228,8 +228,7 @@ PairDPDTstatGPU::~PairDPDTstatGPU() void PairDPDTstatGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // adjust sigma if target T is changing diff --git a/src/GPU/pair_eam_alloy_gpu.cpp b/src/GPU/pair_eam_alloy_gpu.cpp index c472b91fc8..9b3412d3d1 100644 --- a/src/GPU/pair_eam_alloy_gpu.cpp +++ b/src/GPU/pair_eam_alloy_gpu.cpp @@ -94,8 +94,7 @@ double PairEAMAlloyGPU::memory_usage() void PairEAMAlloyGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // compute density on each atom on GPU diff --git a/src/GPU/pair_eam_fs_gpu.cpp b/src/GPU/pair_eam_fs_gpu.cpp index 821bb1af1c..11ef28af3e 100644 --- a/src/GPU/pair_eam_fs_gpu.cpp +++ b/src/GPU/pair_eam_fs_gpu.cpp @@ -92,8 +92,7 @@ double PairEAMFSGPU::memory_usage() void PairEAMFSGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // compute density on each atom on GPU diff --git a/src/GPU/pair_eam_gpu.cpp b/src/GPU/pair_eam_gpu.cpp index 515a349ad2..4788a72417 100644 --- a/src/GPU/pair_eam_gpu.cpp +++ b/src/GPU/pair_eam_gpu.cpp @@ -95,8 +95,7 @@ double PairEAMGPU::memory_usage() void PairEAMGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // compute density on each atom on GPU diff --git a/src/GPU/pair_gauss_gpu.cpp b/src/GPU/pair_gauss_gpu.cpp index 71fb55f4d0..c596a9d644 100644 --- a/src/GPU/pair_gauss_gpu.cpp +++ b/src/GPU/pair_gauss_gpu.cpp @@ -82,8 +82,7 @@ PairGaussGPU::~PairGaussGPU() void PairGaussGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_gayberne_gpu.cpp b/src/GPU/pair_gayberne_gpu.cpp index 32b8b979cd..4ed2750e57 100644 --- a/src/GPU/pair_gayberne_gpu.cpp +++ b/src/GPU/pair_gayberne_gpu.cpp @@ -92,8 +92,7 @@ PairGayBerneGPU::~PairGayBerneGPU() void PairGayBerneGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj96_cut_gpu.cpp b/src/GPU/pair_lj96_cut_gpu.cpp index 707d632d9a..5bc30c809d 100644 --- a/src/GPU/pair_lj96_cut_gpu.cpp +++ b/src/GPU/pair_lj96_cut_gpu.cpp @@ -82,8 +82,7 @@ PairLJ96CutGPU::~PairLJ96CutGPU() void PairLJ96CutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp index ebc9f88943..134295c69f 100644 --- a/src/GPU/pair_lj_charmm_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_charmm_coul_long_gpu.cpp @@ -99,8 +99,7 @@ PairLJCharmmCoulLongGPU::~PairLJCharmmCoulLongGPU() void PairLJCharmmCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index 797680c032..fdffb06a8d 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -96,8 +96,7 @@ PairLJClass2CoulLongGPU::~PairLJClass2CoulLongGPU() void PairLJClass2CoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_class2_gpu.cpp b/src/GPU/pair_lj_class2_gpu.cpp index 8a9b2b31e8..bbb9168169 100644 --- a/src/GPU/pair_lj_class2_gpu.cpp +++ b/src/GPU/pair_lj_class2_gpu.cpp @@ -81,8 +81,7 @@ PairLJClass2GPU::~PairLJClass2GPU() void PairLJClass2GPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cubic_gpu.cpp b/src/GPU/pair_lj_cubic_gpu.cpp index 669eae4ee4..95eee6ae8f 100644 --- a/src/GPU/pair_lj_cubic_gpu.cpp +++ b/src/GPU/pair_lj_cubic_gpu.cpp @@ -86,8 +86,7 @@ PairLJCubicGPU::~PairLJCubicGPU() void PairLJCubicGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp index 99c7bb1c66..69fefbcdea 100644 --- a/src/GPU/pair_lj_cut_coul_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_cut_gpu.cpp @@ -87,8 +87,7 @@ PairLJCutCoulCutGPU::~PairLJCutCoulCutGPU() void PairLJCutCoulCutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_coul_debye_gpu.cpp b/src/GPU/pair_lj_cut_coul_debye_gpu.cpp index 450eca5c47..de86c58647 100644 --- a/src/GPU/pair_lj_cut_coul_debye_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_debye_gpu.cpp @@ -89,8 +89,7 @@ ljcd_gpu_clear(); void PairLJCutCoulDebyeGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp index abe7394a8c..87eac52749 100644 --- a/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_dsf_gpu.cpp @@ -98,8 +98,7 @@ PairLJCutCoulDSFGPU::~PairLJCutCoulDSFGPU() void PairLJCutCoulDSFGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_coul_long_gpu.cpp b/src/GPU/pair_lj_cut_coul_long_gpu.cpp index 943d12b0fe..c854dab83d 100644 --- a/src/GPU/pair_lj_cut_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_long_gpu.cpp @@ -99,8 +99,7 @@ PairLJCutCoulLongGPU::~PairLJCutCoulLongGPU() void PairLJCutCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_coul_msm_gpu.cpp b/src/GPU/pair_lj_cut_coul_msm_gpu.cpp index 46cf6f19bc..f87dc0ec91 100644 --- a/src/GPU/pair_lj_cut_coul_msm_gpu.cpp +++ b/src/GPU/pair_lj_cut_coul_msm_gpu.cpp @@ -88,8 +88,7 @@ PairLJCutCoulMSMGPU::~PairLJCutCoulMSMGPU() void PairLJCutCoulMSMGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp index 1f4528cb88..d2c925d950 100644 --- a/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_cut_gpu.cpp @@ -89,8 +89,7 @@ PairLJCutDipoleCutGPU::~PairLJCutDipoleCutGPU() void PairLJCutDipoleCutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; @@ -199,8 +198,7 @@ void PairLJCutDipoleCutGPU::cpu_compute(int start, int inum, int eflag, int vfla int *jlist; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp index b209fa0ee7..774ff2fae4 100644 --- a/src/GPU/pair_lj_cut_dipole_long_gpu.cpp +++ b/src/GPU/pair_lj_cut_dipole_long_gpu.cpp @@ -100,8 +100,7 @@ PairLJCutDipoleLongGPU::~PairLJCutDipoleLongGPU() void PairLJCutDipoleLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; @@ -228,8 +227,7 @@ void PairLJCutDipoleLongGPU::cpu_compute(int start, int inum, int eflag, int vfl int *jlist; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/GPU/pair_lj_cut_gpu.cpp b/src/GPU/pair_lj_cut_gpu.cpp index 9a6be3aab9..6dde9689f7 100644 --- a/src/GPU/pair_lj_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_gpu.cpp @@ -86,8 +86,7 @@ PairLJCutGPU::~PairLJCutGPU() void PairLJCutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_expand_coul_long_gpu.cpp b/src/GPU/pair_lj_expand_coul_long_gpu.cpp index 4161155980..31f4fd651c 100644 --- a/src/GPU/pair_lj_expand_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_expand_coul_long_gpu.cpp @@ -99,8 +99,7 @@ PairLJExpandCoulLongGPU::~PairLJExpandCoulLongGPU() void PairLJExpandCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_expand_gpu.cpp b/src/GPU/pair_lj_expand_gpu.cpp index 36378bf10e..a2e1cf54e3 100644 --- a/src/GPU/pair_lj_expand_gpu.cpp +++ b/src/GPU/pair_lj_expand_gpu.cpp @@ -85,8 +85,7 @@ PairLJExpandGPU::~PairLJExpandGPU() void PairLJExpandGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_gromacs_gpu.cpp b/src/GPU/pair_lj_gromacs_gpu.cpp index cc7010b295..e03f4b2e50 100644 --- a/src/GPU/pair_lj_gromacs_gpu.cpp +++ b/src/GPU/pair_lj_gromacs_gpu.cpp @@ -87,8 +87,7 @@ PairLJGromacsGPU::~PairLJGromacsGPU() void PairLJGromacsGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_sdk_coul_long_gpu.cpp b/src/GPU/pair_lj_sdk_coul_long_gpu.cpp index 4dbd8874d6..f5029df5dc 100644 --- a/src/GPU/pair_lj_sdk_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_sdk_coul_long_gpu.cpp @@ -102,8 +102,7 @@ PairLJSDKCoulLongGPU::~PairLJSDKCoulLongGPU() void PairLJSDKCoulLongGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_sdk_gpu.cpp b/src/GPU/pair_lj_sdk_gpu.cpp index 84d224a8c4..4797a34408 100644 --- a/src/GPU/pair_lj_sdk_gpu.cpp +++ b/src/GPU/pair_lj_sdk_gpu.cpp @@ -87,8 +87,7 @@ PairLJSDKGPU::~PairLJSDKGPU() void PairLJSDKGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp index a5ebb1dbc1..dd25a70eee 100644 --- a/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp +++ b/src/GPU/pair_lj_sf_dipole_sf_gpu.cpp @@ -88,8 +88,7 @@ PairLJSFDipoleSFGPU::~PairLJSFDipoleSFGPU() void PairLJSFDipoleSFGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; @@ -202,8 +201,7 @@ void PairLJSFDipoleSFGPU::cpu_compute(int start, int inum, int eflag, int vflag, int *jlist; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/GPU/pair_mie_cut_gpu.cpp b/src/GPU/pair_mie_cut_gpu.cpp index e52577ee4c..838d28033f 100644 --- a/src/GPU/pair_mie_cut_gpu.cpp +++ b/src/GPU/pair_mie_cut_gpu.cpp @@ -83,8 +83,7 @@ PairMIECutGPU::~PairMIECutGPU() void PairMIECutGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_morse_gpu.cpp b/src/GPU/pair_morse_gpu.cpp index 7abf78ff30..1f94643e3a 100644 --- a/src/GPU/pair_morse_gpu.cpp +++ b/src/GPU/pair_morse_gpu.cpp @@ -81,8 +81,7 @@ PairMorseGPU::~PairMorseGPU() void PairMorseGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_resquared_gpu.cpp b/src/GPU/pair_resquared_gpu.cpp index b6fada0897..5e90f788bf 100644 --- a/src/GPU/pair_resquared_gpu.cpp +++ b/src/GPU/pair_resquared_gpu.cpp @@ -94,8 +94,7 @@ PairRESquaredGPU::~PairRESquaredGPU() void PairRESquaredGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_soft_gpu.cpp b/src/GPU/pair_soft_gpu.cpp index eed1bd5db3..42adb02553 100644 --- a/src/GPU/pair_soft_gpu.cpp +++ b/src/GPU/pair_soft_gpu.cpp @@ -86,8 +86,7 @@ PairSoftGPU::~PairSoftGPU() void PairSoftGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_sw_gpu.cpp b/src/GPU/pair_sw_gpu.cpp index 5368bee959..0cc858e57d 100644 --- a/src/GPU/pair_sw_gpu.cpp +++ b/src/GPU/pair_sw_gpu.cpp @@ -93,8 +93,7 @@ PairSWGPU::~PairSWGPU() void PairSWGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_table_gpu.cpp b/src/GPU/pair_table_gpu.cpp index d0185b85e8..a0b6562e5e 100644 --- a/src/GPU/pair_table_gpu.cpp +++ b/src/GPU/pair_table_gpu.cpp @@ -89,8 +89,7 @@ PairTableGPU::~PairTableGPU() void PairTableGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_tersoff_gpu.cpp b/src/GPU/pair_tersoff_gpu.cpp index 535b56163e..cd0c5e6693 100644 --- a/src/GPU/pair_tersoff_gpu.cpp +++ b/src/GPU/pair_tersoff_gpu.cpp @@ -97,8 +97,7 @@ PairTersoffGPU::~PairTersoffGPU() void PairTersoffGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_tersoff_mod_gpu.cpp b/src/GPU/pair_tersoff_mod_gpu.cpp index f8b6c50db5..fd55ddc6e6 100644 --- a/src/GPU/pair_tersoff_mod_gpu.cpp +++ b/src/GPU/pair_tersoff_mod_gpu.cpp @@ -90,8 +90,7 @@ PairTersoffMODGPU::~PairTersoffMODGPU() void PairTersoffMODGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_tersoff_zbl_gpu.cpp b/src/GPU/pair_tersoff_zbl_gpu.cpp index b45503d759..d3828962e2 100644 --- a/src/GPU/pair_tersoff_zbl_gpu.cpp +++ b/src/GPU/pair_tersoff_zbl_gpu.cpp @@ -98,8 +98,7 @@ PairTersoffZBLGPU::~PairTersoffZBLGPU() void PairTersoffZBLGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_ufm_gpu.cpp b/src/GPU/pair_ufm_gpu.cpp index 688e3ef4dc..31422b0f4d 100644 --- a/src/GPU/pair_ufm_gpu.cpp +++ b/src/GPU/pair_ufm_gpu.cpp @@ -88,8 +88,7 @@ PairUFMGPU::~PairUFMGPU() void PairUFMGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_vashishta_gpu.cpp b/src/GPU/pair_vashishta_gpu.cpp index 84936f2c26..b496359b8a 100644 --- a/src/GPU/pair_vashishta_gpu.cpp +++ b/src/GPU/pair_vashishta_gpu.cpp @@ -94,8 +94,7 @@ PairVashishtaGPU::~PairVashishtaGPU() void PairVashishtaGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_yukawa_colloid_gpu.cpp b/src/GPU/pair_yukawa_colloid_gpu.cpp index 556dece7f8..3645f392a2 100644 --- a/src/GPU/pair_yukawa_colloid_gpu.cpp +++ b/src/GPU/pair_yukawa_colloid_gpu.cpp @@ -84,8 +84,7 @@ PairYukawaColloidGPU::~PairYukawaColloidGPU() void PairYukawaColloidGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_yukawa_gpu.cpp b/src/GPU/pair_yukawa_gpu.cpp index 9d3ea6f5a7..90317fea34 100644 --- a/src/GPU/pair_yukawa_gpu.cpp +++ b/src/GPU/pair_yukawa_gpu.cpp @@ -83,8 +83,7 @@ PairYukawaGPU::~PairYukawaGPU() void PairYukawaGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pair_zbl_gpu.cpp b/src/GPU/pair_zbl_gpu.cpp index c9b8dd75a1..99471cbe90 100644 --- a/src/GPU/pair_zbl_gpu.cpp +++ b/src/GPU/pair_zbl_gpu.cpp @@ -86,8 +86,7 @@ PairZBLGPU::~PairZBLGPU() void PairZBLGPU::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int nall = atom->nlocal + atom->nghost; int inum, host_start; diff --git a/src/GPU/pppm_gpu.cpp b/src/GPU/pppm_gpu.cpp index 4b460b1280..1bb1a39703 100644 --- a/src/GPU/pppm_gpu.cpp +++ b/src/GPU/pppm_gpu.cpp @@ -199,9 +199,7 @@ void PPPMGPU::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // If need per-atom energies/virials, allocate per-atom arrays here // so that particle map on host can be done concurrently with GPU calculations diff --git a/src/GRANULAR/pair_gran_hertz_history.cpp b/src/GRANULAR/pair_gran_hertz_history.cpp index d1f3c7bbe1..728491c17a 100644 --- a/src/GRANULAR/pair_gran_hertz_history.cpp +++ b/src/GRANULAR/pair_gran_hertz_history.cpp @@ -55,8 +55,7 @@ void PairGranHertzHistory::compute(int eflag, int vflag) int *touch,**firsttouch; double *shear,*allshear,**firstshear; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int shearupdate = 1; if (update->setupflag) shearupdate = 0; diff --git a/src/GRANULAR/pair_gran_hooke.cpp b/src/GRANULAR/pair_gran_hooke.cpp index 5244396ead..cfcc2743ba 100644 --- a/src/GRANULAR/pair_gran_hooke.cpp +++ b/src/GRANULAR/pair_gran_hooke.cpp @@ -51,8 +51,7 @@ void PairGranHooke::compute(int eflag, int vflag) double fn,fs,ft,fs1,fs2,fs3; int *ilist,*jlist,*numneigh,**firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // update rigid body info for owned & ghost atoms if using FixRigid masses // body[i] = which body atom I is in, -1 if none diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 27d2cf10a8..5a78b9d79a 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -103,8 +103,7 @@ void PairGranHookeHistory::compute(int eflag, int vflag) int *touch,**firsttouch; double *shear,*allshear,**firstshear; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int shearupdate = 1; if (update->setupflag) shearupdate = 0; diff --git a/src/KIM/kim_query.cpp b/src/KIM/kim_query.cpp new file mode 100644 index 0000000000..7480703ce8 --- /dev/null +++ b/src/KIM/kim_query.cpp @@ -0,0 +1,237 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program; if not, see . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-v2-2.0.0 (and newer) package +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "kim_query.h" +#include "comm.h" +#include "error.h" +#include "input.h" +#include "variable.h" + +#if defined(LMP_KIM_CURL) +#include +#include +#endif + +using namespace LAMMPS_NS; + +#if defined(LMP_KIM_CURL) + +struct WriteBuf { + char *dataptr; + size_t sizeleft; +}; + +static char *do_query(char *, int, char **, int, MPI_Comm); +static size_t write_callback(void *, size_t, size_t, void *); + +#endif + +/* ---------------------------------------------------------------------- */ + +void KimQuery::command(int narg, char **arg) +{ + char *varname, *function, *value; + + if (narg < 2) error->all(FLERR,"Illegal kim_query command"); + + varname = arg[0]; + function = arg[1]; + +#if defined(LMP_KIM_CURL) + + value = do_query(function, narg-2, arg+2, comm->me, world); + + // check for valid result + // on error the content of "value" is a '\0' byte + // as the first element, and then the error message + // that was returned by the web server + + if (0 == strlen(value)) { + char errmsg[512]; + + sprintf(errmsg,"OpenKIM query failed: %s",value+1); + error->all(FLERR,errmsg); + } + + char **varcmd = new char*[3]; + varcmd[0] = varname; + varcmd[1] = (char *) "string"; + varcmd[2] = value; + + input->variable->set(3,varcmd); + + delete[] varcmd; + delete[] value; +#else + error->all(FLERR,"Cannot use 'kim_query' command when KIM package " + "is compiled without support for libcurl"); +#endif +} + +#if defined(LMP_KIM_CURL) + +// copy data to the user provided data structure, optionally in increments + +size_t write_callback(void *data, size_t size, size_t nmemb, void *userp) +{ + struct WriteBuf *buf = (struct WriteBuf *)userp; + size_t buffer_size = size*nmemb; + + // copy chunks into the buffer for as long as there is space left + if (buf->sizeleft) { + size_t copy_this_much = buf->sizeleft; + if (copy_this_much > buffer_size) + copy_this_much = buffer_size; + memcpy(buf->dataptr, data, copy_this_much); + + buf->dataptr += copy_this_much; + buf->sizeleft -= copy_this_much; + return copy_this_much; + } + return 0; // done +} + +char *do_query(char *qfunction, int narg, char **arg, int rank, MPI_Comm comm) +{ + char value[512], *retval; + + // run the web query from rank 0 only + + if (rank == 0) { + CURL *handle; + CURLcode res; + + // set up and clear receive buffer + + struct WriteBuf buf; + buf.dataptr = value; + buf.sizeleft = 511; + memset(value,0,512); + + // create curl web query instance + curl_global_init(CURL_GLOBAL_DEFAULT); + handle = curl_easy_init(); + + if (handle) { + std::string url("https://query.openkim.org/api/"); + url += qfunction; + + std::string query(arg[0]); + for (int i=1; i < narg; ++i) { + query += '&'; + query += arg[i]; + } + +#if LMP_DEBUG_CURL + curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); +#endif + +#if defined(LMP_NO_SSL_CHECK) + // disable verifying SSL certificate and host name + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0L); +#endif + + curl_easy_setopt(handle, CURLOPT_URL, url.c_str()); + curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt(handle, CURLOPT_POSTFIELDS, query.c_str()); + + curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION,write_callback); + curl_easy_setopt(handle, CURLOPT_WRITEDATA,&buf); + + // perform OpenKIM query and check for errors + res = curl_easy_perform(handle); + if (res != CURLE_OK) { + // on error we return an "empty" string but add error message after it + value[0]= '\0'; + strcpy(value+1,curl_easy_strerror(res)); + } + curl_easy_cleanup(handle); + } + curl_global_cleanup(); + } + MPI_Bcast(value, 512, MPI_CHAR, 0, comm); + + // we must make a proper copy of the query, as the stack allocation + // for "value" will go out of scope. a valid query has a '[' as + // the first character. skip over it (and the last character ']', too) + // an error messages starts with a '\0' character. copy that and + // the remaining string, as that is the error message. + + if (value[0] == '[') { + int len = strlen(value)-1; + retval = new char[len]; + value[len] = '\0'; + strcpy(retval,value+1); + } else if (value[0] == '\0') { + int len = strlen(value+1)+2; + retval = new char[len]; + retval[0] = '\0'; + strcpy(retval+1,value+1); + } else { + // unknown response type. we should not get here. + // copy response without modifications. + int len = strlen(value)+1; + retval = new char[len]; + strcpy(retval,value); + } + return retval; +} +#endif diff --git a/src/KIM/kim_query.h b/src/KIM/kim_query.h new file mode 100644 index 0000000000..ed5a7c88f3 --- /dev/null +++ b/src/KIM/kim_query.h @@ -0,0 +1,85 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program; if not, see . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-v2-2.0.0 (and newer) package +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(kim_query,KimQuery) + +#else + +#ifndef LMP_KIM_QUERY_H +#define LMP_KIM_QUERY_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class KimQuery : protected Pointers { + public: + KimQuery(class LAMMPS *lmp) : Pointers(lmp) {}; + void command(int, char **); + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + + +*/ diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index a4517b848c..84842f87cc 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -191,10 +191,7 @@ void PairKIM::compute(int eflag , int vflag) { int kimerror; - if (eflag || vflag) - ev_setup(eflag,vflag); - else - ev_unset(); + ev_init(eflag,vflag); // grow kim_particleSpecies and kim_particleContributing array if necessary // needs to be atom->nmax in length diff --git a/src/KOKKOS/angle_charmm_kokkos.cpp b/src/KOKKOS/angle_charmm_kokkos.cpp index ec2955b28d..0f46c958d6 100644 --- a/src/KOKKOS/angle_charmm_kokkos.cpp +++ b/src/KOKKOS/angle_charmm_kokkos.cpp @@ -64,8 +64,7 @@ void AngleCharmmKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/angle_class2_kokkos.cpp b/src/KOKKOS/angle_class2_kokkos.cpp index fe5b1895fe..836714764d 100644 --- a/src/KOKKOS/angle_class2_kokkos.cpp +++ b/src/KOKKOS/angle_class2_kokkos.cpp @@ -64,8 +64,7 @@ void AngleClass2Kokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/angle_cosine_kokkos.cpp b/src/KOKKOS/angle_cosine_kokkos.cpp index 08faa254f4..4a4866948f 100644 --- a/src/KOKKOS/angle_cosine_kokkos.cpp +++ b/src/KOKKOS/angle_cosine_kokkos.cpp @@ -64,8 +64,7 @@ void AngleCosineKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/angle_harmonic_kokkos.cpp b/src/KOKKOS/angle_harmonic_kokkos.cpp index 8cdab2063a..dbe705800c 100644 --- a/src/KOKKOS/angle_harmonic_kokkos.cpp +++ b/src/KOKKOS/angle_harmonic_kokkos.cpp @@ -64,8 +64,7 @@ void AngleHarmonicKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/bond_class2_kokkos.cpp b/src/KOKKOS/bond_class2_kokkos.cpp index d84b3d390c..798fb41c92 100644 --- a/src/KOKKOS/bond_class2_kokkos.cpp +++ b/src/KOKKOS/bond_class2_kokkos.cpp @@ -60,8 +60,7 @@ void BondClass2Kokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/bond_fene_kokkos.cpp b/src/KOKKOS/bond_fene_kokkos.cpp index d37943ba82..b5cdc1a05a 100644 --- a/src/KOKKOS/bond_fene_kokkos.cpp +++ b/src/KOKKOS/bond_fene_kokkos.cpp @@ -69,8 +69,7 @@ void BondFENEKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/bond_harmonic_kokkos.cpp b/src/KOKKOS/bond_harmonic_kokkos.cpp index 6cdd4fe856..51a9fa4389 100644 --- a/src/KOKKOS/bond_harmonic_kokkos.cpp +++ b/src/KOKKOS/bond_harmonic_kokkos.cpp @@ -61,8 +61,7 @@ void BondHarmonicKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/dihedral_charmm_kokkos.cpp b/src/KOKKOS/dihedral_charmm_kokkos.cpp index 3931309dc1..61ddcc425a 100644 --- a/src/KOKKOS/dihedral_charmm_kokkos.cpp +++ b/src/KOKKOS/dihedral_charmm_kokkos.cpp @@ -69,8 +69,7 @@ void DihedralCharmmKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/KOKKOS/dihedral_class2_kokkos.cpp b/src/KOKKOS/dihedral_class2_kokkos.cpp index c7db07a6cb..98436bc696 100644 --- a/src/KOKKOS/dihedral_class2_kokkos.cpp +++ b/src/KOKKOS/dihedral_class2_kokkos.cpp @@ -69,8 +69,7 @@ void DihedralClass2Kokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/dihedral_opls_kokkos.cpp b/src/KOKKOS/dihedral_opls_kokkos.cpp index 9d01cf1a54..f50dea2c36 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.cpp +++ b/src/KOKKOS/dihedral_opls_kokkos.cpp @@ -69,8 +69,7 @@ void DihedralOPLSKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/improper_class2_kokkos.cpp b/src/KOKKOS/improper_class2_kokkos.cpp index e3af52b494..ad32e6da4e 100644 --- a/src/KOKKOS/improper_class2_kokkos.cpp +++ b/src/KOKKOS/improper_class2_kokkos.cpp @@ -71,8 +71,7 @@ void ImproperClass2Kokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/improper_harmonic_kokkos.cpp b/src/KOKKOS/improper_harmonic_kokkos.cpp index 4d41f3ef48..bb397a2c2f 100644 --- a/src/KOKKOS/improper_harmonic_kokkos.cpp +++ b/src/KOKKOS/improper_harmonic_kokkos.cpp @@ -71,8 +71,7 @@ void ImproperHarmonicKokkos::compute(int eflag_in, int vflag_in) eflag = eflag_in; vflag = vflag_in; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp index 18d09965be..57ac3a9c57 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp @@ -92,8 +92,7 @@ void PairBuckCoulCutKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp index 0b44a83ebb..349c4c0601 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp @@ -111,8 +111,7 @@ void PairBuckCoulLongKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_buck_kokkos.cpp b/src/KOKKOS/pair_buck_kokkos.cpp index 999aefe4c3..02c02c986e 100644 --- a/src/KOKKOS/pair_buck_kokkos.cpp +++ b/src/KOKKOS/pair_buck_kokkos.cpp @@ -81,8 +81,7 @@ void PairBuckKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_coul_cut_kokkos.cpp b/src/KOKKOS/pair_coul_cut_kokkos.cpp index 7d29adc625..54ba0b63ce 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_coul_cut_kokkos.cpp @@ -80,8 +80,7 @@ void PairCoulCutKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_coul_debye_kokkos.cpp b/src/KOKKOS/pair_coul_debye_kokkos.cpp index 3de83b5bc4..8966e30394 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_coul_debye_kokkos.cpp @@ -87,8 +87,7 @@ void PairCoulDebyeKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_coul_dsf_kokkos.cpp index 7d03ee4968..748fed71a7 100644 --- a/src/KOKKOS/pair_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_dsf_kokkos.cpp @@ -80,8 +80,7 @@ void PairCoulDSFKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_coul_long_kokkos.cpp b/src/KOKKOS/pair_coul_long_kokkos.cpp index 73b9521da0..a21cb050ff 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_coul_long_kokkos.cpp @@ -104,8 +104,7 @@ void PairCoulLongKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_coul_wolf_kokkos.cpp b/src/KOKKOS/pair_coul_wolf_kokkos.cpp index fe9c581cc1..20391d9530 100644 --- a/src/KOKKOS/pair_coul_wolf_kokkos.cpp +++ b/src/KOKKOS/pair_coul_wolf_kokkos.cpp @@ -75,8 +75,7 @@ void PairCoulWolfKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp index d2fcc81ea4..a44ef1790e 100644 --- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -165,8 +165,7 @@ void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index 6039282141..b580f00ed0 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -74,8 +74,7 @@ void PairEAMAlloyKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index 81d9ba8326..1b1ec5c31e 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -74,8 +74,7 @@ void PairEAMFSKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index 22383f57c5..d423f2c927 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -68,8 +68,7 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp index df24a5f4c7..fa10c6d30f 100644 --- a/src/KOKKOS/pair_exp6_rx_kokkos.cpp +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -147,8 +147,7 @@ void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_gran_hooke_history_kokkos.cpp b/src/KOKKOS/pair_gran_hooke_history_kokkos.cpp index 189407b541..068580b525 100644 --- a/src/KOKKOS/pair_gran_hooke_history_kokkos.cpp +++ b/src/KOKKOS/pair_gran_hooke_history_kokkos.cpp @@ -111,8 +111,7 @@ void PairGranHookeHistoryKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); int shearupdate = 1; if (update->setupflag) shearupdate = 0; diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index 03ad77c34a..00df4a8f3c 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -78,9 +78,7 @@ void PairHybridKokkos::compute(int eflag, int vflag) if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // check if global component of incoming vflag = 2 // if so, reset vflag passed to substyle as if it were 0 diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp index ce7df2bec1..510740112a 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -112,8 +112,7 @@ void PairLJCharmmCoulCharmmImplicitKokkos::compute(int eflag_in, int if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index b31282e595..51c96354f9 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -112,8 +112,7 @@ void PairLJCharmmCoulCharmmKokkos::compute(int eflag_in, int vflag_i if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 5d8a202aa4..22faa98935 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -112,8 +112,7 @@ void PairLJCharmmCoulLongKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp index 6eb3028101..60d480188b 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp @@ -89,8 +89,7 @@ void PairLJClass2CoulCutKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index a388694876..4c8aea8e92 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -97,8 +97,7 @@ void PairLJClass2CoulLongKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_class2_kokkos.cpp b/src/KOKKOS/pair_lj_class2_kokkos.cpp index 33d1477443..dd42baa4e0 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_kokkos.cpp @@ -89,8 +89,7 @@ void PairLJClass2Kokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index 6001fabbed..cb5ab96871 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -89,8 +89,7 @@ void PairLJCutCoulCutKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp index 10923bc5da..800092a09b 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp @@ -93,8 +93,7 @@ void PairLJCutCoulDebyeKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index 47aa2ea7cc..f793485b47 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -101,8 +101,7 @@ void PairLJCutCoulDSFKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index fa36cb1866..02150586f4 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -101,8 +101,7 @@ void PairLJCutCoulLongKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index 9b0ff902af..4ba8c00f88 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -89,8 +89,7 @@ void PairLJCutKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_expand_kokkos.cpp b/src/KOKKOS/pair_lj_expand_kokkos.cpp index 3b8b9343d8..5ea6c9e438 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_kokkos.cpp @@ -88,8 +88,7 @@ void PairLJExpandKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp index d06ad9b44e..2421d059da 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp @@ -103,8 +103,7 @@ void PairLJGromacsCoulGromacsKokkos::compute(int eflag_in, int vflag if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp index d447846333..09a0261ae1 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp @@ -100,8 +100,7 @@ void PairLJGromacsKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_sdk_kokkos.cpp index 990e464341..c2375fa7a8 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_sdk_kokkos.cpp @@ -88,8 +88,7 @@ void PairLJSDKKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_morse_kokkos.cpp b/src/KOKKOS/pair_morse_kokkos.cpp index ab5eb817a1..b308330ead 100644 --- a/src/KOKKOS/pair_morse_kokkos.cpp +++ b/src/KOKKOS/pair_morse_kokkos.cpp @@ -93,8 +93,7 @@ void PairMorseKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp index 5f19d73dfa..7d17ac3f43 100644 --- a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -148,8 +148,7 @@ void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in vflag = vflag_in; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_reaxc_kokkos.cpp b/src/KOKKOS/pair_reaxc_kokkos.cpp index 56d2ebd8aa..c6ee50c6ac 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.cpp +++ b/src/KOKKOS/pair_reaxc_kokkos.cpp @@ -677,8 +677,7 @@ void PairReaxCKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); atomKK->sync(execution_space,datamask_read); k_params_sing.template sync(); diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index 998e75fabe..569783f926 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -137,8 +137,7 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index 24022475ab..da4737a2c1 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -80,8 +80,7 @@ void PairSWKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp index 9522e94706..737d600d1e 100644 --- a/src/KOKKOS/pair_table_kokkos.cpp +++ b/src/KOKKOS/pair_table_kokkos.cpp @@ -86,8 +86,7 @@ void PairTableKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index 376984afa2..ec7a2ffb94 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -619,8 +619,7 @@ void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); if (eflag_atom) { memoryKK->destroy_kokkos(k_eatom,eatom); diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index a6668ca064..9252e3de52 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -164,8 +164,7 @@ void PairTersoffKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index 303d2bdfda..585074b128 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -164,8 +164,7 @@ void PairTersoffMODKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index ad4a2d444e..e1e2211ab5 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -178,8 +178,7 @@ void PairTersoffZBLKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_vashishta_kokkos.cpp b/src/KOKKOS/pair_vashishta_kokkos.cpp index 78ab8bfc85..4a1f291b17 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.cpp +++ b/src/KOKKOS/pair_vashishta_kokkos.cpp @@ -79,8 +79,7 @@ void PairVashishtaKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_yukawa_kokkos.cpp b/src/KOKKOS/pair_yukawa_kokkos.cpp index 951613a33e..27e18533a2 100644 --- a/src/KOKKOS/pair_yukawa_kokkos.cpp +++ b/src/KOKKOS/pair_yukawa_kokkos.cpp @@ -177,8 +177,7 @@ void PairYukawaKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pair_zbl_kokkos.cpp b/src/KOKKOS/pair_zbl_kokkos.cpp index bcf33b405d..06c84e5189 100644 --- a/src/KOKKOS/pair_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_zbl_kokkos.cpp @@ -129,8 +129,7 @@ void PairZBLKokkos::compute(int eflag_in, int vflag_in) if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag,0); // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index bcac29ba9b..c233ca6264 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -615,8 +615,7 @@ void PPPMKokkos::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag,0); - else evflag = evflag_atom = eflag_global = vflag_global = + ev_init(eflag,vflag,0); eflag_atom = vflag_atom = 0; // reallocate per-atom arrays if necessary diff --git a/src/KSPACE/ewald.cpp b/src/KSPACE/ewald.cpp index 283c672bad..ccbb3ed708 100644 --- a/src/KSPACE/ewald.cpp +++ b/src/KSPACE/ewald.cpp @@ -365,9 +365,7 @@ void Ewald::compute(int eflag, int vflag) // set energy/virial flags - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // if atom count has changed, update qsum and qsqsum diff --git a/src/KSPACE/ewald_disp.cpp b/src/KSPACE/ewald_disp.cpp index 4cbdf7b9cb..0603d68eb2 100644 --- a/src/KSPACE/ewald_disp.cpp +++ b/src/KSPACE/ewald_disp.cpp @@ -688,8 +688,7 @@ void EwaldDisp::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (!peratom_allocate_flag && (eflag_atom || vflag_atom)) { allocate_peratom(); diff --git a/src/KSPACE/msm.cpp b/src/KSPACE/msm.cpp index d8964ffa67..d7cc3f6876 100644 --- a/src/KSPACE/msm.cpp +++ b/src/KSPACE/msm.cpp @@ -454,9 +454,7 @@ void MSM::compute(int eflag, int vflag) // set energy/virial flags - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = eflag_either = vflag_either = 0; + ev_init(eflag,vflag); if (scalar_pressure_flag && vflag_either) { if (vflag_atom) diff --git a/src/KSPACE/msm_cg.cpp b/src/KSPACE/msm_cg.cpp index 55435e5a6e..c7896db50c 100644 --- a/src/KSPACE/msm_cg.cpp +++ b/src/KSPACE/msm_cg.cpp @@ -90,9 +90,7 @@ void MSMCG::compute(int eflag, int vflag) // set energy/virial flags - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = eflag_either = vflag_either = 0; + ev_init(eflag,vflag); // invoke allocate_peratom() if needed for first time diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp index d55a5a3afe..f12f5779d9 100644 --- a/src/KSPACE/pair_born_coul_long.cpp +++ b/src/KSPACE/pair_born_coul_long.cpp @@ -87,8 +87,7 @@ void PairBornCoulLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_born_coul_msm.cpp b/src/KSPACE/pair_born_coul_msm.cpp index 775d26df95..eaa1c116c1 100644 --- a/src/KSPACE/pair_born_coul_msm.cpp +++ b/src/KSPACE/pair_born_coul_msm.cpp @@ -82,8 +82,7 @@ void PairBornCoulMSM::compute(int eflag, int vflag) } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_buck_coul_long.cpp b/src/KSPACE/pair_buck_coul_long.cpp index a37e4ab4e9..0a1ec88da5 100644 --- a/src/KSPACE/pair_buck_coul_long.cpp +++ b/src/KSPACE/pair_buck_coul_long.cpp @@ -50,23 +50,23 @@ PairBuckCoulLong::PairBuckCoulLong(LAMMPS *lmp) : Pair(lmp) PairBuckCoulLong::~PairBuckCoulLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(a); - memory->destroy(rho); - memory->destroy(c); - memory->destroy(rhoinv); - memory->destroy(buck1); - memory->destroy(buck2); - memory->destroy(offset); - } - if (ftable) free_tables(); + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(a); + memory->destroy(rho); + memory->destroy(c); + memory->destroy(rhoinv); + memory->destroy(buck1); + memory->destroy(buck2); + memory->destroy(offset); } + if (ftable) free_tables(); } /* ---------------------------------------------------------------------- */ @@ -82,8 +82,7 @@ void PairBuckCoulLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_buck_coul_msm.cpp b/src/KSPACE/pair_buck_coul_msm.cpp index fc72f1a4d6..257d1b661f 100644 --- a/src/KSPACE/pair_buck_coul_msm.cpp +++ b/src/KSPACE/pair_buck_coul_msm.cpp @@ -79,8 +79,7 @@ void PairBuckCoulMSM::compute(int eflag, int vflag) } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index d5bb7b6c5b..c7a4a4b2f6 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -445,8 +445,7 @@ void PairBuckLongCoulLong::compute(int eflag, int vflag) double evdwl,ecoul,fpair; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; double **f = atom->f, *f0 = f[0], *fi = f0; @@ -785,8 +784,7 @@ void PairBuckLongCoulLong::compute_outer(int eflag, int vflag) { double evdwl,ecoul,fpair,fvirial; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; double **f = atom->f, *f0 = f[0], *fi = f0; diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp index 8db5979b39..ae268b9857 100644 --- a/src/KSPACE/pair_coul_long.cpp +++ b/src/KSPACE/pair_coul_long.cpp @@ -55,15 +55,15 @@ PairCoulLong::PairCoulLong(LAMMPS *lmp) : Pair(lmp) PairCoulLong::~PairCoulLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(scale); - } - if (ftable) free_tables(); + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(scale); } + if (ftable) free_tables(); } /* ---------------------------------------------------------------------- */ @@ -79,8 +79,7 @@ void PairCoulLong::compute(int eflag, int vflag) double rsq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_coul_msm.cpp b/src/KSPACE/pair_coul_msm.cpp index ab59dfa4c1..960505142c 100644 --- a/src/KSPACE/pair_coul_msm.cpp +++ b/src/KSPACE/pair_coul_msm.cpp @@ -67,8 +67,7 @@ void PairCoulMSM::compute(int eflag, int vflag) } ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp index 749d9657aa..b40eab244b 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp @@ -59,27 +59,27 @@ PairLJCharmmCoulLong::PairLJCharmmCoulLong(LAMMPS *lmp) : Pair(lmp) PairLJCharmmCoulLong::~PairLJCharmmCoulLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(eps14); - memory->destroy(sigma14); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(lj14_1); - memory->destroy(lj14_2); - memory->destroy(lj14_3); - memory->destroy(lj14_4); - memory->destroy(offset); - } - if (ftable) free_tables(); + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(eps14); + memory->destroy(sigma14); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(lj14_1); + memory->destroy(lj14_2); + memory->destroy(lj14_3); + memory->destroy(lj14_4); + memory->destroy(offset); } + if (ftable) free_tables(); } /* ---------------------------------------------------------------------- */ @@ -96,8 +96,7 @@ void PairLJCharmmCoulLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -404,8 +403,7 @@ void PairLJCharmmCoulLong::compute_outer(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_charmm_coul_msm.cpp b/src/KSPACE/pair_lj_charmm_coul_msm.cpp index aecadcf127..72a8e340bc 100644 --- a/src/KSPACE/pair_lj_charmm_coul_msm.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_msm.cpp @@ -87,8 +87,7 @@ void PairLJCharmmCoulMSM::compute(int eflag, int vflag) } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -265,8 +264,7 @@ void PairLJCharmmCoulMSM::compute_outer(int eflag, int vflag) "for rRESPA with kspace_style MSM"); evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp index 614980117e..4aecc8453a 100644 --- a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp @@ -77,27 +77,6 @@ PairLJCharmmfswCoulLong::PairLJCharmmfswCoulLong(LAMMPS *lmp) : Pair(lmp) PairLJCharmmfswCoulLong::~PairLJCharmmfswCoulLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(eps14); - memory->destroy(sigma14); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(lj14_1); - memory->destroy(lj14_2); - memory->destroy(lj14_3); - memory->destroy(lj14_4); - } - if (ftable) free_tables(); - } - // switch qqr2e back from CHARMM value to LAMMPS value if (update && strcmp(update->unit_style,"real") == 0) { @@ -106,6 +85,27 @@ PairLJCharmmfswCoulLong::~PairLJCharmmfswCoulLong() " conversion constant"); force->qqr2e = force->qqr2e_lammps_real; } + + if (copymode) return; + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(eps14); + memory->destroy(sigma14); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(lj14_1); + memory->destroy(lj14_2); + memory->destroy(lj14_3); + memory->destroy(lj14_4); + } + if (ftable) free_tables(); } /* ---------------------------------------------------------------------- */ @@ -121,8 +121,7 @@ void PairLJCharmmfswCoulLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -452,8 +451,7 @@ void PairLJCharmmfswCoulLong::compute_outer(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp index c9530fe157..fde7fa8e35 100644 --- a/src/KSPACE/pair_lj_cut_coul_long.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long.cpp @@ -90,8 +90,7 @@ void PairLJCutCoulLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -397,8 +396,7 @@ void PairLJCutCoulLong::compute_outer(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_cut_coul_msm.cpp b/src/KSPACE/pair_lj_cut_coul_msm.cpp index 78c364bd6a..c2e566a117 100644 --- a/src/KSPACE/pair_lj_cut_coul_msm.cpp +++ b/src/KSPACE/pair_lj_cut_coul_msm.cpp @@ -87,8 +87,7 @@ void PairLJCutCoulMSM::compute(int eflag, int vflag) } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -252,8 +251,7 @@ void PairLJCutCoulMSM::compute_outer(int eflag, int vflag) "for rRESPA with kspace_style MSM"); evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/KSPACE/pair_lj_cut_tip4p_long.cpp b/src/KSPACE/pair_lj_cut_tip4p_long.cpp index d622a83b39..f5889fd520 100644 --- a/src/KSPACE/pair_lj_cut_tip4p_long.cpp +++ b/src/KSPACE/pair_lj_cut_tip4p_long.cpp @@ -94,8 +94,7 @@ void PairLJCutTIP4PLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 2de527ab39..493866a895 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -441,8 +441,7 @@ void PairLJLongCoulLong::compute(int eflag, int vflag) { double evdwl,ecoul,fpair; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; double **f = atom->f, *f0 = f[0], *fi = f0; @@ -778,8 +777,7 @@ void PairLJLongCoulLong::compute_outer(int eflag, int vflag) { double evdwl,ecoul,fvirial,fpair; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x, *x0 = x[0]; double **f = atom->f, *f0 = f[0], *fi = f0; diff --git a/src/KSPACE/pair_lj_long_tip4p_long.cpp b/src/KSPACE/pair_lj_long_tip4p_long.cpp index a571e30fc3..3137b9d79a 100644 --- a/src/KSPACE/pair_lj_long_tip4p_long.cpp +++ b/src/KSPACE/pair_lj_long_tip4p_long.cpp @@ -92,8 +92,7 @@ void PairLJLongTIP4PLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred @@ -1004,8 +1003,7 @@ void PairLJLongTIP4PLong::compute_outer(int eflag, int vflag) int respa_flag; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/KSPACE/pair_tip4p_long.cpp b/src/KSPACE/pair_tip4p_long.cpp index ac428d483a..9419fdf196 100644 --- a/src/KSPACE/pair_tip4p_long.cpp +++ b/src/KSPACE/pair_tip4p_long.cpp @@ -90,8 +90,7 @@ void PairTIP4PLong::compute(int eflag, int vflag) double rsq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 8fd74d00dc..773305bb5e 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -630,9 +630,7 @@ void PPPM::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index fa73588363..3285dba21c 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -88,9 +88,7 @@ void PPPMCG::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp index 687ea0b3f9..45dce0895b 100644 --- a/src/KSPACE/pppm_disp.cpp +++ b/src/KSPACE/pppm_disp.cpp @@ -928,9 +928,7 @@ void PPPMDisp::compute(int eflag, int vflag) int i; // convert atoms from box to lamda coords - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/KSPACE/pppm_stagger.cpp b/src/KSPACE/pppm_stagger.cpp index ca369cf260..a5ed6de626 100644 --- a/src/KSPACE/pppm_stagger.cpp +++ b/src/KSPACE/pppm_stagger.cpp @@ -124,9 +124,7 @@ void PPPMStagger::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/LATTE/fix_latte.cpp b/src/LATTE/fix_latte.cpp index d1a96d32c6..645b298e09 100644 --- a/src/LATTE/fix_latte.cpp +++ b/src/LATTE/fix_latte.cpp @@ -239,8 +239,7 @@ void FixLatte::pre_reverse(int eflag, int /*vflag*/) void FixLatte::post_force(int vflag) { int eflag = eflag_caller; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // compute Coulombic potential = pe[i]/q[i] // invoke compute pe/atom diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp index 4fd19a36c4..68511b8709 100644 --- a/src/MANYBODY/pair_adp.cpp +++ b/src/MANYBODY/pair_adp.cpp @@ -133,8 +133,7 @@ void PairADP::compute(int eflag, int vflag) double sumlamxx,sumlamyy,sumlamzz,sumlamyz,sumlamxz,sumlamxy; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // grow local arrays if necessary // need to be atom->nmax in length diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp index f8221e6381..4502bd9a82 100644 --- a/src/MANYBODY/pair_airebo.cpp +++ b/src/MANYBODY/pair_airebo.cpp @@ -108,8 +108,7 @@ PairAIREBO::~PairAIREBO() void PairAIREBO::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); pvector[0] = pvector[1] = pvector[2] = 0.0; REBO_neigh(); diff --git a/src/MANYBODY/pair_atm.cpp b/src/MANYBODY/pair_atm.cpp index e3be72443e..c157e0763c 100644 --- a/src/MANYBODY/pair_atm.cpp +++ b/src/MANYBODY/pair_atm.cpp @@ -82,8 +82,7 @@ void PairATM::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 6540dedf98..ac157e071c 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -297,8 +297,7 @@ void PairBOP::compute(int eflag, int vflag) ilist = list->ilist; firstneigh = list->firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // BOP Neighbor lists must be updated every timestep maxnall=nall; diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp index 85ea4812bf..980aa84b2a 100644 --- a/src/MANYBODY/pair_comb.cpp +++ b/src/MANYBODY/pair_comb.cpp @@ -144,8 +144,7 @@ void PairComb::compute(int eflag, int vflag) int sht_jnum, *sht_jlist, nj; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); // Build short range neighbor list diff --git a/src/MANYBODY/pair_comb3.cpp b/src/MANYBODY/pair_comb3.cpp index d82f6dfed0..097f235ff2 100644 --- a/src/MANYBODY/pair_comb3.cpp +++ b/src/MANYBODY/pair_comb3.cpp @@ -987,8 +987,7 @@ void PairComb3::compute(int eflag, int vflag) evdwl = eng_tmp = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); // Build short range neighbor list Short_neigh(); diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index f4b4901075..b7957349b6 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -142,8 +142,7 @@ void PairEAM::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // grow energy and fp arrays if necessary // need to be atom->nmax in length diff --git a/src/MANYBODY/pair_eam_cd.cpp b/src/MANYBODY/pair_eam_cd.cpp index 8db1b6dd9a..c111c6d950 100644 --- a/src/MANYBODY/pair_eam_cd.cpp +++ b/src/MANYBODY/pair_eam_cd.cpp @@ -73,8 +73,7 @@ void PairEAMCD::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // Grow per-atom arrays if necessary diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp index b0fa1b1eef..f1c028ef38 100644 --- a/src/MANYBODY/pair_eim.cpp +++ b/src/MANYBODY/pair_eim.cpp @@ -113,8 +113,7 @@ void PairEIM::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); // grow energy array if necessary diff --git a/src/MANYBODY/pair_gw.cpp b/src/MANYBODY/pair_gw.cpp index 7649090a99..e4b74f7a29 100644 --- a/src/MANYBODY/pair_gw.cpp +++ b/src/MANYBODY/pair_gw.cpp @@ -87,8 +87,7 @@ void PairGW::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_lcbop.cpp b/src/MANYBODY/pair_lcbop.cpp index 0c8b3ef2a6..05cdea8055 100644 --- a/src/MANYBODY/pair_lcbop.cpp +++ b/src/MANYBODY/pair_lcbop.cpp @@ -87,8 +87,7 @@ PairLCBOP::~PairLCBOP() void PairLCBOP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); SR_neigh(); FSR(eflag,vflag); diff --git a/src/MANYBODY/pair_nb3b_harmonic.cpp b/src/MANYBODY/pair_nb3b_harmonic.cpp index ce449e4890..a61b403459 100644 --- a/src/MANYBODY/pair_nb3b_harmonic.cpp +++ b/src/MANYBODY/pair_nb3b_harmonic.cpp @@ -87,8 +87,7 @@ void PairNb3bHarmonic::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_polymorphic.cpp b/src/MANYBODY/pair_polymorphic.cpp index 41c5892d4e..d3aca4e889 100644 --- a/src/MANYBODY/pair_polymorphic.cpp +++ b/src/MANYBODY/pair_polymorphic.cpp @@ -117,8 +117,7 @@ void PairPolymorphic::compute(int eflag, int vflag) double emb; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp index 91e11b3d26..5a148fb152 100644 --- a/src/MANYBODY/pair_sw.cpp +++ b/src/MANYBODY/pair_sw.cpp @@ -91,8 +91,7 @@ void PairSW::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp index 54101aef9e..213b1037bb 100644 --- a/src/MANYBODY/pair_tersoff.cpp +++ b/src/MANYBODY/pair_tersoff.cpp @@ -93,8 +93,7 @@ void PairTersoff::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_vashishta.cpp b/src/MANYBODY/pair_vashishta.cpp index b4c3086ca8..3d4b1d900e 100644 --- a/src/MANYBODY/pair_vashishta.cpp +++ b/src/MANYBODY/pair_vashishta.cpp @@ -93,8 +93,7 @@ void PairVashishta::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MANYBODY/pair_vashishta_table.cpp b/src/MANYBODY/pair_vashishta_table.cpp index 1055db99fa..d4eaa59f1a 100644 --- a/src/MANYBODY/pair_vashishta_table.cpp +++ b/src/MANYBODY/pair_vashishta_table.cpp @@ -64,8 +64,7 @@ void PairVashishtaTable::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MISC/pair_nm_cut.cpp b/src/MISC/pair_nm_cut.cpp index 4b1611b137..124832b63e 100644 --- a/src/MISC/pair_nm_cut.cpp +++ b/src/MISC/pair_nm_cut.cpp @@ -70,8 +70,7 @@ void PairNMCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MISC/pair_nm_cut_coul_cut.cpp b/src/MISC/pair_nm_cut_coul_cut.cpp index 999fab1d6e..6a09d579b7 100644 --- a/src/MISC/pair_nm_cut_coul_cut.cpp +++ b/src/MISC/pair_nm_cut_coul_cut.cpp @@ -74,8 +74,7 @@ void PairNMCutCoulCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MISC/pair_nm_cut_coul_long.cpp b/src/MISC/pair_nm_cut_coul_long.cpp index fb82436dba..af21f02881 100644 --- a/src/MISC/pair_nm_cut_coul_long.cpp +++ b/src/MISC/pair_nm_cut_coul_long.cpp @@ -90,8 +90,7 @@ void PairNMCutCoulLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_charmm.cpp b/src/MOLECULE/angle_charmm.cpp index 3608601c1f..efd1c682f7 100644 --- a/src/MOLECULE/angle_charmm.cpp +++ b/src/MOLECULE/angle_charmm.cpp @@ -61,8 +61,7 @@ void AngleCharmm::compute(int eflag, int vflag) double delxUB,delyUB,delzUB,rsqUB,rUB,dr,rk,forceUB; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_cosine.cpp b/src/MOLECULE/angle_cosine.cpp index 18763e1b76..6e1b9fa2fb 100644 --- a/src/MOLECULE/angle_cosine.cpp +++ b/src/MOLECULE/angle_cosine.cpp @@ -52,8 +52,7 @@ void AngleCosine::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_cosine_delta.cpp b/src/MOLECULE/angle_cosine_delta.cpp index 6f4f5c20d7..eca10970f2 100644 --- a/src/MOLECULE/angle_cosine_delta.cpp +++ b/src/MOLECULE/angle_cosine_delta.cpp @@ -44,8 +44,7 @@ void AngleCosineDelta::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,a,cot,a11,a12,a22,b11,b12,b22,c0,s0,s; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_cosine_periodic.cpp b/src/MOLECULE/angle_cosine_periodic.cpp index e8dd970b3b..cb0a26871a 100644 --- a/src/MOLECULE/angle_cosine_periodic.cpp +++ b/src/MOLECULE/angle_cosine_periodic.cpp @@ -61,8 +61,7 @@ void AngleCosinePeriodic::compute(int eflag, int vflag) double tn,tn_1,tn_2,un,un_1,un_2; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_cosine_squared.cpp b/src/MOLECULE/angle_cosine_squared.cpp index c83ba90a60..28d63344a4 100644 --- a/src/MOLECULE/angle_cosine_squared.cpp +++ b/src/MOLECULE/angle_cosine_squared.cpp @@ -62,8 +62,7 @@ void AngleCosineSquared::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_harmonic.cpp b/src/MOLECULE/angle_harmonic.cpp index d28afd76d6..48b493d9b2 100644 --- a/src/MOLECULE/angle_harmonic.cpp +++ b/src/MOLECULE/angle_harmonic.cpp @@ -58,8 +58,7 @@ void AngleHarmonic::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp index 6c1af54dcf..7dd56ffb76 100644 --- a/src/MOLECULE/angle_table.cpp +++ b/src/MOLECULE/angle_table.cpp @@ -72,8 +72,7 @@ void AngleTable::compute(int eflag, int vflag) double theta,u,mdu; //mdu: minus du, -du/dx=f eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp index 671290b0ad..c023a7e81e 100644 --- a/src/MOLECULE/bond_fene.cpp +++ b/src/MOLECULE/bond_fene.cpp @@ -54,8 +54,7 @@ void BondFENE::compute(int eflag, int vflag) double rsq,r0sq,rlogarg,sr2,sr6; ebond = sr6 = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_fene_expand.cpp b/src/MOLECULE/bond_fene_expand.cpp index 3e191683fb..b1bfdc6a1b 100644 --- a/src/MOLECULE/bond_fene_expand.cpp +++ b/src/MOLECULE/bond_fene_expand.cpp @@ -56,8 +56,7 @@ void BondFENEExpand::compute(int eflag, int vflag) double r,rshift,rshiftsq; ebond = sr6 = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_gromos.cpp b/src/MOLECULE/bond_gromos.cpp index 57091903af..f65adeb2cb 100644 --- a/src/MOLECULE/bond_gromos.cpp +++ b/src/MOLECULE/bond_gromos.cpp @@ -55,8 +55,7 @@ void BondGromos::compute(int eflag, int vflag) double delx,dely,delz,ebond,fbond; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_harmonic.cpp b/src/MOLECULE/bond_harmonic.cpp index fb4581d0d6..cb8434ce6e 100644 --- a/src/MOLECULE/bond_harmonic.cpp +++ b/src/MOLECULE/bond_harmonic.cpp @@ -52,8 +52,7 @@ void BondHarmonic::compute(int eflag, int vflag) double rsq,r,dr,rk; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp index 06af28f2b0..91dd2dbc49 100644 --- a/src/MOLECULE/bond_morse.cpp +++ b/src/MOLECULE/bond_morse.cpp @@ -53,8 +53,7 @@ void BondMorse::compute(int eflag, int vflag) double rsq,r,dr,ralpha; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp index 645b081779..9999ead47f 100644 --- a/src/MOLECULE/bond_nonlinear.cpp +++ b/src/MOLECULE/bond_nonlinear.cpp @@ -49,8 +49,7 @@ void BondNonlinear::compute(int eflag, int vflag) double rsq,r,dr,drsq,lamdasq,denom,denomsq; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/bond_quartic.cpp b/src/MOLECULE/bond_quartic.cpp index f200030d6c..895202ff00 100644 --- a/src/MOLECULE/bond_quartic.cpp +++ b/src/MOLECULE/bond_quartic.cpp @@ -60,8 +60,7 @@ void BondQuartic::compute(int eflag, int vflag) double r,rsq,dr,r2,ra,rb,sr2,sr6; ebond = evdwl = sr6 = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp index c75779922a..94e843eb65 100644 --- a/src/MOLECULE/bond_table.cpp +++ b/src/MOLECULE/bond_table.cpp @@ -68,8 +68,7 @@ void BondTable::compute(int eflag, int vflag) double u,mdu; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/dihedral_charmm.cpp b/src/MOLECULE/dihedral_charmm.cpp index 2372fae38b..68c62eb4fd 100644 --- a/src/MOLECULE/dihedral_charmm.cpp +++ b/src/MOLECULE/dihedral_charmm.cpp @@ -76,8 +76,7 @@ void DihedralCharmm::compute(int eflag, int vflag) double forcecoul,forcelj,fpair,ecoul,evdwl; edihedral = evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/MOLECULE/dihedral_charmmfsw.cpp b/src/MOLECULE/dihedral_charmmfsw.cpp index 99a5333620..f65d01e9ed 100644 --- a/src/MOLECULE/dihedral_charmmfsw.cpp +++ b/src/MOLECULE/dihedral_charmmfsw.cpp @@ -79,8 +79,7 @@ void DihedralCharmmfsw::compute(int eflag, int vflag) double forcecoul,forcelj,fpair,ecoul,evdwl; edihedral = evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/MOLECULE/dihedral_harmonic.cpp b/src/MOLECULE/dihedral_harmonic.cpp index cb122f4bc2..ddb94dc571 100644 --- a/src/MOLECULE/dihedral_harmonic.cpp +++ b/src/MOLECULE/dihedral_harmonic.cpp @@ -67,8 +67,7 @@ void DihedralHarmonic::compute(int eflag, int vflag) double c,s,p,sx2,sy2,sz2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/dihedral_helix.cpp b/src/MOLECULE/dihedral_helix.cpp index ae23b77951..d19731c097 100644 --- a/src/MOLECULE/dihedral_helix.cpp +++ b/src/MOLECULE/dihedral_helix.cpp @@ -39,7 +39,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -DihedralHelix::DihedralHelix(LAMMPS *lmp) : Dihedral(lmp) {} +DihedralHelix::DihedralHelix(LAMMPS *lmp) : Dihedral(lmp) +{ + writedata = 1; +} /* ---------------------------------------------------------------------- */ @@ -67,8 +70,7 @@ void DihedralHelix::compute(int eflag, int vflag) double s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/dihedral_multi_harmonic.cpp b/src/MOLECULE/dihedral_multi_harmonic.cpp index f6461abb6e..04e7bbb627 100644 --- a/src/MOLECULE/dihedral_multi_harmonic.cpp +++ b/src/MOLECULE/dihedral_multi_harmonic.cpp @@ -34,7 +34,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -DihedralMultiHarmonic::DihedralMultiHarmonic(LAMMPS *lmp) : Dihedral(lmp) {} +DihedralMultiHarmonic::DihedralMultiHarmonic(LAMMPS *lmp) : Dihedral(lmp) +{ + writedata = 1; +} /* ---------------------------------------------------------------------- */ @@ -64,8 +67,7 @@ void DihedralMultiHarmonic::compute(int eflag, int vflag) double s2,sin2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/dihedral_opls.cpp b/src/MOLECULE/dihedral_opls.cpp index b5103413b2..293245e411 100644 --- a/src/MOLECULE/dihedral_opls.cpp +++ b/src/MOLECULE/dihedral_opls.cpp @@ -67,8 +67,7 @@ void DihedralOPLS::compute(int eflag, int vflag) double s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index ec2588e61b..3395c7ef14 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -341,8 +341,7 @@ void FixCMAP::post_force(int vflag) ecmap = 0.0; int eflag = eflag_caller; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); for (n = 0; n < ncrosstermlist; n++) { i1 = crosstermlist[n][0]; diff --git a/src/MOLECULE/improper_cvff.cpp b/src/MOLECULE/improper_cvff.cpp index 641eea74a8..01e9729e80 100644 --- a/src/MOLECULE/improper_cvff.cpp +++ b/src/MOLECULE/improper_cvff.cpp @@ -61,8 +61,7 @@ void ImproperCvff::compute(int eflag, int vflag) double a33,a12,a13,a23,sx2,sy2,sz2; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/improper_harmonic.cpp b/src/MOLECULE/improper_harmonic.cpp index 091bd46316..c5421fffdb 100644 --- a/src/MOLECULE/improper_harmonic.cpp +++ b/src/MOLECULE/improper_harmonic.cpp @@ -61,8 +61,7 @@ void ImproperHarmonic::compute(int eflag, int vflag) double sx2,sy2,sz2; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/improper_umbrella.cpp b/src/MOLECULE/improper_umbrella.cpp index 8ed3d3a84c..3de46df0f3 100644 --- a/src/MOLECULE/improper_umbrella.cpp +++ b/src/MOLECULE/improper_umbrella.cpp @@ -65,8 +65,7 @@ void ImproperUmbrella::compute(int eflag, int vflag) double ax,ay,az,ra2,rh2,ra,rh,rar,rhr,arx,ary,arz,hrx,hry,hrz; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.cpp b/src/MOLECULE/pair_hbond_dreiding_lj.cpp index c0c885d4d4..ddc1110081 100644 --- a/src/MOLECULE/pair_hbond_dreiding_lj.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_lj.cpp @@ -91,8 +91,7 @@ void PairHbondDreidingLJ::compute(int eflag, int vflag) tagint *klist; evdwl = ehbond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.cpp b/src/MOLECULE/pair_hbond_dreiding_morse.cpp index f464d2c621..055f0ed46b 100644 --- a/src/MOLECULE/pair_hbond_dreiding_morse.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_morse.cpp @@ -61,8 +61,7 @@ void PairHbondDreidingMorse::compute(int eflag, int vflag) tagint *klist; evdwl = ehbond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp index 688c675815..af4611e014 100644 --- a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp +++ b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp @@ -43,8 +43,9 @@ PairLJCharmmCoulCharmm::PairLJCharmmCoulCharmm(LAMMPS *lmp) : Pair(lmp) PairLJCharmmCoulCharmm::~PairLJCharmmCoulCharmm() { - if (!copymode) { - if (allocated) { + if (copymode) return; + + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -60,7 +61,6 @@ PairLJCharmmCoulCharmm::~PairLJCharmmCoulCharmm() memory->destroy(lj14_2); memory->destroy(lj14_3); memory->destroy(lj14_4); - } } } @@ -75,8 +75,7 @@ void PairLJCharmmCoulCharmm::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.cpp b/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.cpp index 6c083a49b0..d68d5e8f6d 100644 --- a/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.cpp +++ b/src/MOLECULE/pair_lj_charmm_coul_charmm_implicit.cpp @@ -39,8 +39,7 @@ void PairLJCharmmCoulCharmmImplicit::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_lj_charmmfsw_coul_charmmfsh.cpp b/src/MOLECULE/pair_lj_charmmfsw_coul_charmmfsh.cpp index 4b9147c169..0e1cbd85a5 100644 --- a/src/MOLECULE/pair_lj_charmmfsw_coul_charmmfsh.cpp +++ b/src/MOLECULE/pair_lj_charmmfsw_coul_charmmfsh.cpp @@ -62,26 +62,6 @@ PairLJCharmmfswCoulCharmmfsh::PairLJCharmmfswCoulCharmmfsh(LAMMPS *lmp) : PairLJCharmmfswCoulCharmmfsh::~PairLJCharmmfswCoulCharmmfsh() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(eps14); - memory->destroy(sigma14); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(lj14_1); - memory->destroy(lj14_2); - memory->destroy(lj14_3); - memory->destroy(lj14_4); - } - } - // switch qqr2e back from CHARMM value to LAMMPS value if (update && strcmp(update->unit_style,"real") == 0) { @@ -90,6 +70,26 @@ PairLJCharmmfswCoulCharmmfsh::~PairLJCharmmfswCoulCharmmfsh() " conversion constant"); force->qqr2e = force->qqr2e_lammps_real; } + + if (copymode) return; + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(eps14); + memory->destroy(sigma14); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(lj14_1); + memory->destroy(lj14_2); + memory->destroy(lj14_3); + memory->destroy(lj14_4); + } } /* ---------------------------------------------------------------------- */ @@ -103,8 +103,7 @@ void PairLJCharmmfswCoulCharmmfsh::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp b/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp index 92dead8435..2b3d2c60f5 100644 --- a/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp +++ b/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp @@ -91,8 +91,7 @@ void PairLJCutTIP4PCut::compute(int eflag, int vflag) double *x1,*x2,*xH1,*xH2; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/MOLECULE/pair_tip4p_cut.cpp b/src/MOLECULE/pair_tip4p_cut.cpp index 79dd79b180..e6fb9aab99 100644 --- a/src/MOLECULE/pair_tip4p_cut.cpp +++ b/src/MOLECULE/pair_tip4p_cut.cpp @@ -79,8 +79,7 @@ void PairTIP4PCut::compute(int eflag, int vflag) double *x1,*x2,*xH1,*xH2; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/Makefile b/src/Makefile index f1030ae08f..3be4e3e78f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -275,7 +275,8 @@ mpi-stubs: sinclude ../lib/python/Makefile.lammps install-python: - @$(PYTHON) ../python/install.py + @$(PYTHON) ../python/install.py -v ../src/version.h \ + -m ../python/lammps.py -l ../src/liblammps.so # Create a tarball of src dir and packages diff --git a/src/OPT/pair_eam_opt.cpp b/src/OPT/pair_eam_opt.cpp index 5345d7f8d6..fc2b6731ee 100644 --- a/src/OPT/pair_eam_opt.cpp +++ b/src/OPT/pair_eam_opt.cpp @@ -38,8 +38,7 @@ PairEAMOpt::PairEAMOpt(LAMMPS *lmp) : PairEAM(lmp) {} void PairEAMOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/OPT/pair_lj_charmm_coul_long_opt.cpp b/src/OPT/pair_lj_charmm_coul_long_opt.cpp index 43f4ba7f5a..d80d3d1ec4 100644 --- a/src/OPT/pair_lj_charmm_coul_long_opt.cpp +++ b/src/OPT/pair_lj_charmm_coul_long_opt.cpp @@ -44,8 +44,7 @@ PairLJCharmmCoulLongOpt::PairLJCharmmCoulLongOpt(LAMMPS *lmp) : void PairLJCharmmCoulLongOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/OPT/pair_lj_cut_coul_long_opt.cpp b/src/OPT/pair_lj_cut_coul_long_opt.cpp index 98683a67a4..a25010cf1f 100644 --- a/src/OPT/pair_lj_cut_coul_long_opt.cpp +++ b/src/OPT/pair_lj_cut_coul_long_opt.cpp @@ -38,8 +38,7 @@ PairLJCutCoulLongOpt::PairLJCutCoulLongOpt(LAMMPS *lmp) : PairLJCutCoulLong(lmp) void PairLJCutCoulLongOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (!ncoultablebits) { if (evflag) { diff --git a/src/OPT/pair_lj_cut_opt.cpp b/src/OPT/pair_lj_cut_opt.cpp index ed35178c1f..c6684461be 100644 --- a/src/OPT/pair_lj_cut_opt.cpp +++ b/src/OPT/pair_lj_cut_opt.cpp @@ -34,8 +34,7 @@ PairLJCutOpt::PairLJCutOpt(LAMMPS *lmp) : PairLJCut(lmp) {} void PairLJCutOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp index 4842cc4fc0..92facca43e 100644 --- a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp +++ b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp @@ -53,8 +53,7 @@ PairLJCutTIP4PLongOpt::PairLJCutTIP4PLongOpt(LAMMPS *lmp) : void PairLJCutTIP4PLongOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/OPT/pair_lj_long_coul_long_opt.cpp b/src/OPT/pair_lj_long_coul_long_opt.cpp index 6bd1e8cb96..243b64391f 100644 --- a/src/OPT/pair_lj_long_coul_long_opt.cpp +++ b/src/OPT/pair_lj_long_coul_long_opt.cpp @@ -44,8 +44,7 @@ PairLJLongCoulLongOpt::PairLJLongCoulLongOpt(LAMMPS *lmp) : PairLJLongCoulLong(l void PairLJLongCoulLongOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); if (order6) { @@ -290,8 +289,7 @@ void PairLJLongCoulLongOpt::compute(int eflag, int vflag) void PairLJLongCoulLongOpt::compute_outer(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); if (order6) { diff --git a/src/OPT/pair_morse_opt.cpp b/src/OPT/pair_morse_opt.cpp index 6299136f46..c9c6bba355 100644 --- a/src/OPT/pair_morse_opt.cpp +++ b/src/OPT/pair_morse_opt.cpp @@ -35,8 +35,7 @@ PairMorseOpt::PairMorseOpt(LAMMPS *lmp) : PairMorse(lmp) {} void PairMorseOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/OPT/pair_ufm_opt.cpp b/src/OPT/pair_ufm_opt.cpp index 85c76d624d..f463dac3f1 100644 --- a/src/OPT/pair_ufm_opt.cpp +++ b/src/OPT/pair_ufm_opt.cpp @@ -34,8 +34,7 @@ PairUFMOpt::PairUFMOpt(LAMMPS *lmp) : PairUFM(lmp) {} void PairUFMOpt::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/PERI/pair_peri_eps.cpp b/src/PERI/pair_peri_eps.cpp index 76267426c6..c00495ba4d 100644 --- a/src/PERI/pair_peri_eps.cpp +++ b/src/PERI/pair_peri_eps.cpp @@ -96,8 +96,7 @@ void PairPeriEPS::compute(int eflag, int vflag) double d_ij,delta,stretch; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); double **f = atom->f; double **x = atom->x; diff --git a/src/PERI/pair_peri_lps.cpp b/src/PERI/pair_peri_lps.cpp index 383b91c6f5..f0418c8c8d 100644 --- a/src/PERI/pair_peri_lps.cpp +++ b/src/PERI/pair_peri_lps.cpp @@ -93,8 +93,7 @@ void PairPeriLPS::compute(int eflag, int vflag) double d_ij,delta,stretch; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); double **f = atom->f; double **x = atom->x; diff --git a/src/PERI/pair_peri_pmb.cpp b/src/PERI/pair_peri_pmb.cpp index 772e47f2d6..ad2f3fb7c7 100644 --- a/src/PERI/pair_peri_pmb.cpp +++ b/src/PERI/pair_peri_pmb.cpp @@ -84,8 +84,7 @@ void PairPeriPMB::compute(int eflag, int vflag) double d_ij,delta,stretch; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **f = atom->f; double **x = atom->x; diff --git a/src/PERI/pair_peri_ves.cpp b/src/PERI/pair_peri_ves.cpp index 7590077f0e..24a9f92a97 100644 --- a/src/PERI/pair_peri_ves.cpp +++ b/src/PERI/pair_peri_ves.cpp @@ -98,8 +98,7 @@ void PairPeriVES::compute(int eflag, int vflag) double d_ij,delta,stretch; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); double **f = atom->f; double **x = atom->x; diff --git a/src/PYTHON/pair_python.cpp b/src/PYTHON/pair_python.cpp index 4899e5e2ef..2148fc67b8 100644 --- a/src/PYTHON/pair_python.cpp +++ b/src/PYTHON/pair_python.cpp @@ -82,8 +82,7 @@ void PairPython::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/REPLICA/fix_hyper_global.cpp b/src/REPLICA/fix_hyper_global.cpp index d235b06dc0..6924fe2d93 100644 --- a/src/REPLICA/fix_hyper_global.cpp +++ b/src/REPLICA/fix_hyper_global.cpp @@ -32,12 +32,12 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTA 16384 +#define DELTABOND 16384 #define VECLEN 5 -// NOTE: count/output # of timesteps on which bias is non-zero -// NOTE: should there be a virial contribution from boosted bond? -// NOTE: allow newton off? see Note in pre_reverse() +// possible enhancements +// should there be a virial contribution from boosted bond? +// allow newton off? /* ---------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ FixHyperGlobal::FixHyperGlobal(LAMMPS *lmp, int narg, char **arg) : hyperflag = 1; scalar_flag = 1; vector_flag = 1; - size_vector = 11; + size_vector = 12; global_freq = 1; extscalar = 0; extvector = 0; @@ -76,6 +76,7 @@ FixHyperGlobal::FixHyperGlobal(LAMMPS *lmp, int narg, char **arg) : maxold = 0; xold = NULL; tagold = NULL; + old2now = NULL; me = comm->me; firstflag = 1; @@ -94,6 +95,7 @@ FixHyperGlobal::~FixHyperGlobal() memory->sfree(blist); memory->destroy(xold); memory->destroy(tagold); + memory->destroy(old2now); } /* ---------------------------------------------------------------------- */ @@ -102,7 +104,6 @@ int FixHyperGlobal::setmask() { int mask = 0; mask |= PRE_NEIGHBOR; - mask |= PRE_FORCE; mask |= PRE_REVERSE; mask |= THERMO_ENERGY; return mask; @@ -115,6 +116,7 @@ void FixHyperGlobal::init_hyper() maxdriftsq = 0.0; maxbondlen = 0.0; nobias = 0; + negstrain = 0; } /* ---------------------------------------------------------------------- */ @@ -124,6 +126,10 @@ void FixHyperGlobal::init() if (force->newton_pair == 0) error->all(FLERR,"Hyper global requires newton pair on"); + if (atom->molecular && me == 0) + error->warning(FLERR,"Hyper global for molecular systems " + "requires care in defining hyperdynamic bonds"); + dt = update->dt; // need an occasional half neighbor list @@ -152,14 +158,16 @@ void FixHyperGlobal::setup_pre_neighbor() void FixHyperGlobal::setup_pre_reverse(int eflag, int vflag) { - // no increment in nobias or hyper time when pre-run forces are calculated + // no increment in these quantities when pre-run forces are calculated int nobias_hold = nobias; + int negstrain_hold = negstrain; double t_hyper_hold = t_hyper; pre_reverse(eflag,vflag); nobias = nobias_hold; + negstrain = negstrain_hold; t_hyper = t_hyper_hold; } @@ -167,35 +175,52 @@ void FixHyperGlobal::setup_pre_reverse(int eflag, int vflag) void FixHyperGlobal::pre_neighbor() { - int m,iold,jold,ilocal,jlocal; - double distsq; + int i,m,iold,jold,ilocal,jlocal; + // double distsq; - // reset local IDs for owned bond atoms, since atoms have migrated - // uses xold and tagold from when bonds were created + // reset local indices for owned bond atoms, since atoms have migrated // must be done after ghost atoms are setup via comm->borders() + // first time this is done for a particular I or J atom: + // use tagold and xold from when bonds were created + // atom->map() finds atom ID if it exists, owned index if possible + // closest current I or J atoms to old I may now be ghost atoms + // closest_image() returns the ghost atom index in that case + // also compute max drift of any atom in a bond + // drift = displacement from quenched coord while event has not yet occured + // NOTE: drift calc is now done in bond_build(), between 2 quenched states + + for (i = 0; i < nall_old; i++) old2now[i] = -1; double **x = atom->x; - int flag = 0; - for (m = 0; m < nblocal; m++) { iold = blist[m].iold; jold = blist[m].jold; - ilocal = atom->map(tagold[iold]); - jlocal = atom->map(tagold[jold]); - ilocal = domain->closest_image(xold[iold],ilocal); - jlocal = domain->closest_image(xold[iold],jlocal); + ilocal = old2now[iold]; + jlocal = old2now[jold]; + + if (ilocal < 0) { + ilocal = atom->map(tagold[iold]); + ilocal = domain->closest_image(xold[iold],ilocal); + if (ilocal < 0) + error->one(FLERR,"Fix hyper/global bond atom not found"); + old2now[iold] = ilocal; + //distsq = MathExtra::distsq3(x[ilocal],xold[iold]); + //maxdriftsq = MAX(distsq,maxdriftsq); + } + if (jlocal < 0) { + jlocal = atom->map(tagold[jold]); + jlocal = domain->closest_image(xold[iold],jlocal); // closest to iold + if (jlocal < 0) + error->one(FLERR,"Fix hyper/global bond atom not found"); + old2now[jold] = jlocal; + //distsq = MathExtra::distsq3(x[jlocal],xold[jold]); + //maxdriftsq = MAX(distsq,maxdriftsq); + } + blist[m].i = ilocal; blist[m].j = jlocal; - - if (ilocal < 0 || jlocal < 0) flag++; - else { - distsq = MathExtra::distsq3(x[ilocal],xold[iold]); - maxdriftsq = MAX(distsq,maxdriftsq); - } } - - if (flag) error->one(FLERR,"Fix hyper/global bond atom not found"); } /* ---------------------------------------------------------------------- */ @@ -204,15 +229,16 @@ void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */) { int i,j,m,imax,jmax; double delx,dely,delz; - double r,r0,estrain,rmax,r0max,emax,dt_boost; - double vbias,fbias,fbiasr; + double r,r0,estrain,rmax,r0max,dt_boost; + double ebias,vbias,fbias,fbiasr; // compute current strain of each owned bond - // emax = maximum strain of any bond I own + // emax = maximum abs value of strain of any bond I own // imax,jmax = local indices of my 2 atoms in that bond + // rmax,r0max = current and relaxed lengths of that bond double **x = atom->x; - emax = 0.0; + double emax = 0.0; for (m = 0; m < nblocal; m++) { i = blist[m].i; @@ -255,9 +281,15 @@ void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */) return; } - // I own the bond with max strain - // compute Vbias and apply force to atoms imax,jmax - // NOTE: logic would need to be different for newton off + // I own the bond with max absolute value of strain + // compute bias force on atoms imax,jmax if strain < q, else zero + // Ebias = current strain = (r-r0) / r0 + // Vbias = bias potential = Vmax (1 - Ebias^2/q^2) + // Fbias = bias force as function of strain + // = -dVbias/dEbias = 2 Vmax Ebias / q^2 + // Fix = x component of force on atom I + // = Fbias dEbias/dr dr/dxi, dEbias/dr = 1/r0, dr/dxi = delx/r + // dt_boost = time boost factor = exp(Vbias/kT) double **f = atom->f; @@ -265,15 +297,16 @@ void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */) dt_boost = 1.0; if (emax < qfactor) { - vbias = vmax * (1.0 - emax*emax*invqfactorsq); - fbias = 2.0 * vmax * emax / (qfactor*qfactor * r0max); + ebias = (rmax-r0max) / r0max; + vbias = vmax * (1.0 - ebias*ebias*invqfactorsq); + fbias = 2.0 * vmax * ebias * invqfactorsq; dt_boost = exp(beta*vbias); delx = x[imax][0] - x[jmax][0]; dely = x[imax][1] - x[jmax][1]; delz = x[imax][2] - x[jmax][2]; - fbiasr = fbias / rmax; + fbiasr = fbias / r0max / rmax; f[imax][0] += delx*fbiasr; f[imax][1] += dely*fbiasr; f[imax][2] += delz*fbiasr; @@ -281,6 +314,9 @@ void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */) f[jmax][0] -= delx*fbiasr; f[jmax][1] -= dely*fbiasr; f[jmax][2] -= delz*fbiasr; + + if (ebias < 0.0) negstrain++; + } else nobias++; // output quantities @@ -299,8 +335,8 @@ void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */) void FixHyperGlobal::build_bond_list(int natom) { - int i,j,ii,jj,inum,jnum; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int i,j,m,ii,jj,iold,jold,ilocal,jlocal,inum,jnum; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,distsq; int *ilist,*jlist,*numneigh,**firstneigh; if (natom) { @@ -308,6 +344,27 @@ void FixHyperGlobal::build_bond_list(int natom) nevent_atom += natom; } + // compute max distance any bond atom has moved between 2 quenched states + // xold[iold] = last quenched coord for iold + // x[ilocal] = current quenched coord for same atom + + double **x = atom->x; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + for (m = 0; m < nblocal; m++) { + iold = blist[m].iold; + ilocal = atom->map(tagold[iold]); + ilocal = domain->closest_image(xold[iold],ilocal); + distsq = MathExtra::distsq3(x[ilocal],xold[iold]); + maxdriftsq = MAX(distsq,maxdriftsq); + jold = blist[m].jold; + jlocal = atom->map(tagold[jold]); + jlocal = domain->closest_image(xold[iold],jlocal); + distsq = MathExtra::distsq3(x[jlocal],xold[jold]); + maxdriftsq = MAX(distsq,maxdriftsq); + } + // trigger neighbor list build neighbor->build_one(list); @@ -315,7 +372,6 @@ void FixHyperGlobal::build_bond_list(int natom) // identify bonds assigned to each owned atom // do not create a bond between two non-group atoms - double **x = atom->x; int *mask = atom->mask; inum = list->inum; @@ -358,26 +414,26 @@ void FixHyperGlobal::build_bond_list(int natom) } } - // store IDs and coords for owned+ghost atoms at time of bond creation - // realloc xold and tagold as needed + // store per-atom quantities for owned+ghost atoms at time of bond creation + // nall_old = value of nall at time bonds are built - if (atom->nmax > maxold) { + tagint *tag = atom->tag; + + if (nall > maxold) { memory->destroy(xold); memory->destroy(tagold); + memory->destroy(old2now); maxold = atom->nmax; memory->create(xold,maxold,3,"hyper/global:xold"); memory->create(tagold,maxold,"hyper/global:tagold"); + memory->create(old2now,maxold,"hyper/global:old2now"); } - tagint *tag = atom->tag; - int nall = atom->nlocal + atom->nghost; + memcpy(&xold[0][0],&x[0][0],3*nall*sizeof(double)); + for (i = 0; i < nall; i++) tagold[i] = tag[i]; - for (i = 0; i < nall; i++) { - xold[i][0] = x[i][0]; - xold[i][1] = x[i][1]; - xold[i][2] = x[i][2]; - tagold[i] = tag[i]; - } + nlocal_old = nlocal; + nall_old = nall; } /* ---------------------------------------------------------------------- @@ -386,14 +442,11 @@ void FixHyperGlobal::build_bond_list(int natom) void FixHyperGlobal::grow_bond() { - // NOTE: could add int arg to do initial large alloc: - // maxbond = maxbond/DELTA * DELTA; maxbond += DELTA; - - maxbond += DELTA; - if (maxbond < 0 || maxbond > MAXSMALLINT) - error->one(FLERR,"Fix hyper/local per-processor bond count is too big"); + if (maxbond + DELTABOND > MAXSMALLINT) + error->one(FLERR,"Fix hyper/global bond count is too big"); + maxbond += DELTABOND; blist = (OneBond *) - memory->srealloc(blist,maxbond*sizeof(OneBond),"hyper/local:blist"); + memory->srealloc(blist,maxbond*sizeof(OneBond),"hyper/global:blist"); } /* ---------------------------------------------------------------------- */ @@ -416,21 +469,22 @@ double FixHyperGlobal::compute_vector(int i) bcastflag = 0; } - // 11 vector outputs returned for i = 0-10 + // 12 vector outputs returned for i = 0-11 // i = 0 = boost factor on this step - // i = 1 = max strain of any bond on this step + // i = 1 = max strain of any bond on this step (positive or negative) // i = 2 = ID of atom I in max-strain bond on this step // i = 3 = ID of atom J in max-strain bond on this step // i = 4 = ave bonds/atom on this step - // i = 5 = fraction of steps with no bias during this run - // i = 6 = max drift of any atom during this run - // i = 7 = max bond length during this run + // i = 5 = fraction of steps where bond has no bias during this run + // i = 6 = fraction of steps where bond has negative strain during this run + // i = 7 = max drift distance of any atom during this run + // i = 8 = max bond length during this run - // i = 8 = cummulative hyper time since fix created - // i = 9 = cummulative # of event timesteps since fix created - // i = 10 = cummulative # of atoms in events since fix created + // i = 9 = cummulative hyper time since fix created + // i = 10 = cummulative # of event timesteps since fix created + // i = 11 = cummulative # of atoms in events since fix created if (i == 0) return outvec[1]; if (i == 1) return outvec[2]; @@ -438,8 +492,9 @@ double FixHyperGlobal::compute_vector(int i) if (i == 3) return outvec[4]; if (i == 4) { - int allbonds; // NOTE: bigint? - MPI_Allreduce(&nblocal,&allbonds,1,MPI_INT,MPI_SUM,world); + bigint mybonds = nblocal; + bigint allbonds; + MPI_Allreduce(&mybonds,&allbonds,1,MPI_LMP_BIGINT,MPI_SUM,world); return 2.0*allbonds/atom->natoms; } @@ -451,20 +506,27 @@ double FixHyperGlobal::compute_vector(int i) } if (i == 6) { + if (update->ntimestep == update->firststep) return 0.0; + int allnegstrain; + MPI_Allreduce(&negstrain,&allnegstrain,1,MPI_INT,MPI_SUM,world); + return 1.0*allnegstrain / (update->ntimestep - update->firststep); + } + + if (i == 7) { double alldriftsq; MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world); return sqrt(alldriftsq); } - if (i == 7) { + if (i == 8) { double allbondlen; MPI_Allreduce(&maxbondlen,&allbondlen,1,MPI_DOUBLE,MPI_MAX,world); return allbondlen; } - if (i == 8) return t_hyper; - if (i == 9) return (double) nevent; - if (i == 10) return (double) nevent_atom; + if (i == 9) return t_hyper; + if (i == 10) return (double) nevent; + if (i == 11) return (double) nevent_atom; return 0.0; } @@ -476,13 +538,14 @@ double FixHyperGlobal::compute_vector(int i) double FixHyperGlobal::query(int i) { - if (i == 1) return compute_vector(8); // cummulative hyper time - if (i == 2) return compute_vector(9); // nevent - if (i == 3) return compute_vector(10); // nevent_atom + if (i == 1) return compute_vector(9); // cummulative hyper time + if (i == 2) return compute_vector(10); // nevent + if (i == 3) return compute_vector(11); // nevent_atom if (i == 4) return compute_vector(4); // ave bonds/atom - if (i == 5) return compute_vector(6); // maxdrift - if (i == 6) return compute_vector(7); // maxbondlen + if (i == 5) return compute_vector(7); // maxdrift + if (i == 6) return compute_vector(8); // maxbondlen if (i == 7) return compute_vector(5); // fraction with zero bias + if (i == 8) return compute_vector(6); // fraction with negative strain error->all(FLERR,"Invalid query to fix hyper/global"); diff --git a/src/REPLICA/fix_hyper_global.h b/src/REPLICA/fix_hyper_global.h index d8b1cef425..a62f80b54a 100644 --- a/src/REPLICA/fix_hyper_global.h +++ b/src/REPLICA/fix_hyper_global.h @@ -56,6 +56,7 @@ class FixHyperGlobal : public FixHyper { double maxbondlen; // max length of any bond double maxdriftsq; // max distance any atom drifts from original pos int nobias; // # of steps when bias = 0, b/c bond too long + int negstrain; // # of steps when biased bond has negative strain class NeighList *list; @@ -70,16 +71,19 @@ class FixHyperGlobal : public FixHyper { double r0; // relaxed bond length }; - struct OneBond *blist; // list of owned bonds - int nblocal; // # of owned bonds + OneBond *blist; // list of owned bonds + int nblocal; // # of owned bonds // coords and IDs of owned+ghost atoms when bonds were formed // persists on a proc from one event until the next + int nlocal_old; // nlocal for old atoms + int nall_old; // nlocal+nghost for old atoms int maxold; // allocated size of old atoms double **xold; // coords of atoms when bonds were formed - tagint *tagold; // IDs of atoms when bonds were formed + tagint *tagold; // IDs of atoms when bonds were forme + int *old2now; // o2n[i] = current local index of old atom I // MPI data struct for finding bond with max strain via Allreduce diff --git a/src/REPLICA/fix_hyper_local.cpp b/src/REPLICA/fix_hyper_local.cpp index 60198f4ddf..dc7a0b94b9 100644 --- a/src/REPLICA/fix_hyper_local.cpp +++ b/src/REPLICA/fix_hyper_local.cpp @@ -1,4 +1,4 @@ -/* ---------------------------------------------------------------------- + /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov @@ -33,33 +33,28 @@ using namespace LAMMPS_NS; using namespace FixConst; -#define DELTABOOST 16 -#define BOOSTINIT 1.0 -#define COEFFMAX 1.2 +#define DELTABOND 16384 +#define DELTABIAS 16 +#define COEFFINIT 1.0 +#define FCCBONDS 12 #define BIG 1.0e20 -enum{STRAIN,STRAINREGION,BIASFLAG}; +enum{STRAIN,STRAINDOMAIN,BIASFLAG,BIASCOEFF}; enum{IGNORE,WARN,ERROR}; /* ---------------------------------------------------------------------- */ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : - FixHyper(lmp, narg, arg), old2now(NULL), xold(NULL), tagold(NULL), - bonds(NULL), numbond(NULL), maxstrain(NULL), maxstrain_region(NULL), - maxstrain_bondindex(NULL), biasflag(NULL), boost(NULL), - histo(NULL), allhisto(NULL) + FixHyper(lmp, narg, arg), blist(NULL), biascoeff(NULL), numbond(NULL), + maxhalf(NULL), eligible(NULL), maxhalfstrain(NULL), old2now(NULL), + tagold(NULL), xold(NULL), maxstrain(NULL), maxstrain_domain(NULL), + biasflag(NULL), bias(NULL), cpage(NULL), clist(NULL), numcoeff(NULL) { // error checks - // solution for tagint != int is to worry about storing - // local index vs global ID in same variable - // maybe need to declare them all tagint, not int if (atom->map_style == 0) error->all(FLERR,"Fix hyper/local command requires atom map"); - if (sizeof(tagint) != sizeof(int)) - error->all(FLERR,"Fix hyper/local requires tagint = int"); - // parse args if (narg < 10) error->all(FLERR,"Illegal fix hyper/local command"); @@ -67,7 +62,11 @@ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : hyperflag = 2; scalar_flag = 1; vector_flag = 1; - size_vector = 23; + size_vector = 21; + local_flag = 1; + size_local_rows = 0; + size_local_cols = 0; + local_freq = 1; global_freq = 1; extscalar = 0; @@ -79,10 +78,10 @@ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : tequil = force->numeric(FLERR,arg[6]); dcut = force->numeric(FLERR,arg[7]); alpha_user = force->numeric(FLERR,arg[8]); - boosttarget = force->numeric(FLERR,arg[9]); + boost_target = force->numeric(FLERR,arg[9]); if (cutbond < 0.0 || qfactor < 0.0 || vmax < 0.0 || - tequil <= 0.0 || dcut <= 0.0 || alpha_user <= 0.0 || boosttarget < 1.0) + tequil <= 0.0 || dcut <= 0.0 || alpha_user <= 0.0 || boost_target < 1.0) error->all(FLERR,"Illegal fix hyper/local command"); invqfactorsq = 1.0 / (qfactor*qfactor); @@ -92,35 +91,14 @@ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : // optional args - histoflag = 0; - lostbond = IGNORE; + checkghost = 0; checkbias = 0; - checkcoeff = 0; int iarg = 10; while (iarg < narg) { - /* NOTE: do not enable this yet, need to think about it differently - if (strcmp(arg[iarg],"histo") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix hyper/local command"); - histoflag = 1; - histo_every = force->inumeric(FLERR,arg[iarg+1]); - histo_count = force->inumeric(FLERR,arg[iarg+2]); - histo_delta = force->numeric(FLERR,arg[iarg+3]); - histo_print = force->inumeric(FLERR,arg[iarg+4]); - if (histo_every <= 0 || histo_count % 2 || - histo_delta <= 0.0 || histo_print <= 0) - error->all(FLERR,"Illegal fix hyper/local command"); - iarg += 5; - */ - - if (strcmp(arg[iarg],"lostbond") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix hyper/local command"); - if (strcmp(arg[iarg+1],"error") == 0) lostbond = ERROR; - else if (strcmp(arg[iarg+1],"warn") == 0) lostbond = WARN; - else if (strcmp(arg[iarg+1],"ignore") == 0) lostbond = IGNORE; - else error->all(FLERR,"Illegal fix hyper/local command"); - iarg += 2; - + if (strcmp(arg[iarg],"check/ghost") == 0) { + checkghost = 1; + iarg++; } else if (strcmp(arg[iarg],"check/bias") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix hyper/local command"); checkbias = 1; @@ -130,57 +108,59 @@ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg+2],"ignore") == 0) checkbias_flag = IGNORE; else error->all(FLERR,"Illegal fix hyper/local command"); iarg += 3; - - } else if (strcmp(arg[iarg],"check/coeff") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix hyper/local command"); - checkcoeff = 1; - checkcoeff_every = force->inumeric(FLERR,arg[iarg+1]); - if (strcmp(arg[iarg+2],"error") == 0) checkcoeff_flag = ERROR; - else if (strcmp(arg[iarg+2],"warn") == 0) checkcoeff_flag = WARN; - else if (strcmp(arg[iarg+2],"ignore") == 0) checkcoeff_flag = IGNORE; - else error->all(FLERR,"Illegal fix hyper/local command"); - iarg += 3; - } else error->all(FLERR,"Illegal fix hyper/local command"); } // per-atom data structs - maxbond = 0; - bonds = NULL; - numbond = NULL; + maxbond = nblocal = 0; + blist = NULL; + biascoeff = NULL; + allbonds = 0; + + maxatom = 0; maxstrain = NULL; - maxstrain_region = NULL; - maxstrain_bondindex = NULL; + maxstrain_domain = NULL; biasflag = NULL; - maxold = old_nall = 0; - old2now = NULL; - xold = NULL; // NOTE: don't really need except to monitor drift + maxlocal = nlocal_old = 0; + numbond = NULL; + maxhalf = NULL; + eligible = NULL; + maxhalfstrain = NULL; + + maxall = nall_old = 0; + xold = NULL; tagold = NULL; + old2now = NULL; - nboost = maxboost = 0; - boost = NULL; + nbias = maxbias = 0; + bias = NULL; + // data structs for persisting bias coeffs when bond list is reformed // maxbondperatom = max # of bonds any atom is part of - // will be reset in bond_build() - // set comm size needed by this fix + // FCCBONDS = 12 is a good estimate for fcc lattices + // will be reset in build_bond() if necessary + + maxcoeff = 0; + maxbondperatom = FCCBONDS; + numcoeff = NULL; + clist = NULL; + cpage = new MyPage; + cpage->init(maxbondperatom,1024*maxbondperatom,1); + + // set comm sizes needed by this fix + // reverse = 2 is for sending atom index + value, though total likely < 1 + // reverse comm for bias coeffs has variable size, so not tallied here - maxbondperatom = 1; comm_forward = 1; - comm_reverse = 1; - - // perform initial allocation of atom-based arrays - // register with Atom class - - grow_arrays(atom->nmax); - atom->add_callback(0); + comm_reverse = 2; me = comm->me; firstflag = 1; - allbonds = 0; - allboost = 0.0; + sumbiascoeff = 0.0; + avebiascoeff = 0.0; starttime = update->ntimestep; nostrainyet = 1; @@ -188,36 +168,33 @@ FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : nevent = 0; nevent_atom = 0; mybias = 0.0; - - histo = allhisto = NULL; - if (histoflag) { - invhisto_delta = 1.0 / histo_delta; - histo_lo = 1.0 - (histo_count/2 * histo_delta); - histo = new bigint[histo_count+2]; - allhisto = new bigint[histo_count+2]; - } } /* ---------------------------------------------------------------------- */ FixHyperLocal::~FixHyperLocal() { - memory->destroy(bonds); - memory->destroy(numbond); - - atom->delete_callback(id,0); + memory->destroy(blist); + memory->destroy(biascoeff); memory->destroy(maxstrain); - memory->destroy(maxstrain_region); - memory->destroy(maxstrain_bondindex); + memory->destroy(maxstrain_domain); memory->destroy(biasflag); - memory->destroy(old2now); + memory->destroy(numbond); + memory->destroy(maxhalf); + memory->destroy(eligible); + memory->destroy(maxhalfstrain); + memory->destroy(xold); memory->destroy(tagold); - memory->destroy(boost); - delete [] histo; - delete [] allhisto; + memory->destroy(old2now); + + memory->destroy(bias); + + memory->destroy(numcoeff); + memory->sfree(clist); + delete cpage; } /* ---------------------------------------------------------------------- */ @@ -237,24 +214,20 @@ int FixHyperLocal::setmask() void FixHyperLocal::init_hyper() { ghost_toofar = 0; - lostbond_partner = 0; - lostbond_coeff = 0.0; checkbias_count = 0; - checkcoeff_count = 0; maxdriftsq = 0.0; maxbondlen = 0.0; - maxboostcoeff = 0.0; - minboostcoeff = BIG; - sumboostcoeff = 0.0; - nboost_running = 0; + avebiascoeff = 0.0; + minbiascoeff = BIG; + maxbiascoeff = 0.0; + nbias_running = 0; nobias_running = 0; + negstrain_running = 0; rmaxever = 0.0; rmaxeverbig = 0.0; nbondbuild = 0; time_bondbuild = 0.0; - - if (histoflag) histo_steps = 0; } /* ---------------------------------------------------------------------- */ @@ -262,7 +235,7 @@ void FixHyperLocal::init_hyper() void FixHyperLocal::init() { // for newton off, bond force bias will not be applied correctly - // bonds that straddle 2 procs + // for bonds that straddle 2 procs // warn if molecular system, since near-neighbors may not appear in neigh list // user should not be including bonded atoms as hyper "bonds" @@ -271,7 +244,7 @@ void FixHyperLocal::init() if (atom->molecular && me == 0) error->warning(FLERR,"Hyper local for molecular systems " - "requires care in defining hyperdynamics bonds"); + "requires care in defining hyperdynamic bonds"); // cutghost = communication cutoff as calculated by Neighbor and Comm // error if cutghost is smaller than Dcut @@ -285,30 +258,43 @@ void FixHyperLocal::init() cutghost = comm->cutghostuser; if (cutghost < dcut) - error->all(FLERR,"Fix hyper/local bond cutoff exceeds ghost atom range - " + error->all(FLERR,"Fix hyper/local domain cutoff exceeds ghost atom range - " "use comm_modify cutoff command"); if (cutghost < dcut+cutbond/2.0 && me == 0) error->warning(FLERR,"Fix hyper/local ghost atom range " "may not allow for atom drift between events"); } - alpha = update->dt / alpha_user; - // need an occasional full neighbor list with cutoff = Dcut + // need occasional full neighbor list with cutoff = Dcut + // used for finding maxstrain of neighbor bonds out to Dcut // do not need to include neigh skin in cutoff, - // b/c this list will be built every time bond_build() is called + // b/c this list will be built every time build_bond() is called // NOTE: what if pair style list cutoff > Dcut // or what if neigh skin is huge? - int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->pair = 0; - neighbor->requests[irequest]->fix = 1; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full = 1; - neighbor->requests[irequest]->cut = 1; - neighbor->requests[irequest]->cutoff = dcut; - neighbor->requests[irequest]->occasional = 1; + int irequest_full = neighbor->request(this,instance_me); + neighbor->requests[irequest_full]->id = 1; + neighbor->requests[irequest_full]->pair = 0; + neighbor->requests[irequest_full]->fix = 1; + neighbor->requests[irequest_full]->half = 0; + neighbor->requests[irequest_full]->full = 1; + neighbor->requests[irequest_full]->cut = 1; + neighbor->requests[irequest_full]->cutoff = dcut; + neighbor->requests[irequest_full]->occasional = 1; + + // also need occasional half neighbor list derived from pair style + // used for building local bond list + // no specified cutoff, should be longer than cutbond + // this list will also be built (or derived/copied) + // every time build_bond() is called + + int irequest_half = neighbor->request(this,instance_me); + neighbor->requests[irequest_half]->id = 2; + neighbor->requests[irequest_half]->pair = 0; + neighbor->requests[irequest_half]->fix = 1; + neighbor->requests[irequest_half]->occasional = 1; // extra timing output @@ -318,16 +304,17 @@ void FixHyperLocal::init() /* ---------------------------------------------------------------------- */ -void FixHyperLocal::init_list(int /* id */, NeighList *ptr) +void FixHyperLocal::init_list(int id, NeighList *ptr) { - list = ptr; + if (id == 1) listfull = ptr; + else if (id == 2) listhalf = ptr; } /* ---------------------------------------------------------------------- */ void FixHyperLocal::setup_pre_neighbor() { - // called for dynamics and minimization NOTE: check if min is needed? + // called for dynamics and minimization pre_neighbor(); } @@ -337,8 +324,9 @@ void FixHyperLocal::setup_pre_neighbor() void FixHyperLocal::setup_pre_reverse(int eflag, int vflag) { // only called for dynamics, not minimization - // setupflag prevents boostostat update of boost coeffs in setup - // also prevents increments of nboost_running, nbias_running, sumboostcoeff + // setupflag prevents boostostat update of bias coeffs in setup + // also prevents increments of nbias_running, nobias_running, + // negstrain_running, sumbiascoeff setupflag = 1; pre_reverse(eflag,vflag); @@ -349,67 +337,68 @@ void FixHyperLocal::setup_pre_reverse(int eflag, int vflag) void FixHyperLocal::pre_neighbor() { - int i,m,n,ilocal,jlocal; + int i,m,iold,jold,ilocal,jlocal; + // double distsq; - // convert global ID bond partners back to local indices - // need to use closest_image() so can calculate bond lengths - // error flag should not happen for a well-behaved system - // b/c are only looking up bond partners inside or near my sub-domain + // reset local indices for owned bond atoms, since atoms have migrated + // must be done after ghost atoms are setup via comm->borders() + // first time this is done for a particular I or J atom: + // use tagold and xold from when bonds were created + // atom->map() finds atom ID if it exists, owned index if possible + // closest current I or J atoms to old I may now be ghost atoms + // closest_image() returns the ghost atom index in that case + // also compute max drift of any atom in a bond + // drift = displacement from quenched coord while event has not yet occured + // NOTE: drift calc is now done in bond_build(), between 2 quenched states + + for (i = 0; i < nall_old; i++) old2now[i] = -1; double **x = atom->x; - int nlocal = atom->nlocal; - int missing = 0; - double missing_coeff = 0.0; + for (m = 0; m < nblocal; m++) { + iold = blist[m].iold; + jold = blist[m].jold; + ilocal = old2now[iold]; + jlocal = old2now[jold]; - for (i = 0; i < nlocal; i++) { - n = numbond[i]; - for (m = 0; m < n; m++) { - jlocal = atom->map(bonds[i][m].jtag); - if (jlocal >= 0) bonds[i][m].j = domain->closest_image(i,jlocal); - else { - bonds[i][m].j = -1; - missing++; - missing_coeff += bonds[i][m].boostcoeff; - if (lostbond != IGNORE) { - char str[128]; - sprintf(str,"Fix hyper/local bond info missing for bond " - TAGINT_FORMAT "," TAGINT_FORMAT - " with coeff %g at step " BIGINT_FORMAT, - atom->tag[i],bonds[i][m].jtag,bonds[i][m].boostcoeff, - update->ntimestep); - if (lostbond == ERROR) error->one(FLERR,str); - if (lostbond == WARN) error->warning(FLERR,str); - } - } + if (ilocal < 0) { + ilocal = atom->map(tagold[iold]); + ilocal = domain->closest_image(xold[iold],ilocal); + if (ilocal < 0) + error->one(FLERR,"Fix hyper/local bond atom not found"); + old2now[iold] = ilocal; + //distsq = MathExtra::distsq3(x[ilocal],xold[iold]); + //maxdriftsq = MAX(distsq,maxdriftsq); } + if (jlocal < 0) { + jlocal = atom->map(tagold[jold]); + jlocal = domain->closest_image(xold[iold],jlocal); // close to I atom + if (jlocal < 0) + error->one(FLERR,"Fix hyper/local bond atom not found"); + old2now[jold] = jlocal; + //distsq = MathExtra::distsq3(x[jlocal],xold[jold]); + //maxdriftsq = MAX(distsq,maxdriftsq); + } + + blist[m].i = ilocal; + blist[m].j = jlocal; } - lostbond_partner += missing; - lostbond_coeff += missing_coeff; - - // set old2now to point to current local atom indices + // set remaining old2now values to point to current local atom indices + // if old2now >= 0, already set by bond loop above // only necessary for tagold entries > 0 // because if tagold = 0, atom is not active in Dcut neighbor list // must be done after atoms migrate and ghost atoms setup via comm->borders() - // does not matter if there are multiple ghost copies of a global ID - // since only need the ghost atom strain, not its coordinates - // NOTE: maybe need not use closest image, b/c old2now only used to access - // maxstrain values, which will be same for any copy of ghost atom ?? - // also need it to compute maxdriftsq correctly when a proc spans a PBC + // does not matter which atom (owned or ghost) that atom->map() finds + // b/c old2now is only used to access maxstrain() or biasflag() + // which will be identical for every copy of the same atom ID - double distsq; - - for (i = 0; i < old_nall; i++) { - if (tagold[i] == 0) continue; - ilocal = atom->map(tagold[i]); - ilocal = domain->closest_image(xold[i],ilocal); - old2now[i] = ilocal; - - if (ilocal >= 0) { - distsq = MathExtra::distsq3(x[ilocal],xold[i]); - maxdriftsq = MAX(distsq,maxdriftsq); - } else ghost_toofar++; + for (iold = 0; iold < nall_old; iold++) { + if (old2now[iold] >= 0) continue; + if (tagold[iold] == 0) continue; + ilocal = atom->map(tagold[iold]); + old2now[iold] = ilocal; + if (ilocal < 0) ghost_toofar++; } } @@ -417,223 +406,262 @@ void FixHyperLocal::pre_neighbor() void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) { - int i,j,m,ii,jj,inum,jnum,iold,jold,nbond,bondindex; - tagint itag,jtag; + int i,j,m,ii,jj,inum,jnum,iold,jold,ibond,nbond,ijhalf,ncount; double xtmp,ytmp,ztmp,delx,dely,delz; - double r,r0,estrain,emax,vbias,fbias,fbiasr,boostcoeff; + double r,r0,estrain,emax,ebias,vbias,fbias,fbiasr; + double halfstrain,selfstrain; int *ilist,*jlist,*numneigh,**firstneigh; //double time1,time2,time3,time4,time5,time6,time7,time8; //time1 = MPI_Wtime(); - // compute current maxstrain and maxstrain_bond for each owned atom - // use per-atom full bond list - // this is double-calculating for IJ and JI bonds - // could compute once, but would have to find/store index of JI bond - // order two I,J atoms consistently for IJ and JI calcs - // to insure no round-off issue when comparing maxstrain values of I,J - - double **x = atom->x; - tagint *tag = atom->tag; - int nlocal = atom->nlocal; - - int mybonds = 0; nostrainyet = 0; - for (i = 0; i < nlocal; i++) { - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - itag = tag[i]; - emax = 0.0; - bondindex = -1; - jtag = 0; + // reallocate per-atom maxstrain and biasflag vectors if necessary - nbond = numbond[i]; - mybonds += nbond; - for (m = 0; m < nbond; m++) { - j = bonds[i][m].j; - if (j < 0) continue; - jtag = bonds[i][m].jtag; - r0 = bonds[i][m].r0; - if (itag < jtag) { - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - } else { - delx = x[j][0] - xtmp; - dely = x[j][1] - ytmp; - delz = x[j][2] - ztmp;; - } + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + if (maxatom < nall) { + memory->destroy(maxstrain); + memory->destroy(maxstrain_domain); + if (checkbias) memory->destroy(biasflag); + maxatom = atom->nmax; + memory->create(maxstrain,maxatom,"hyper/local:maxstrain"); + memory->create(maxstrain_domain,maxatom,"hyper/local:maxstrain_domain"); + if (checkbias) memory->create(biasflag,maxatom,"hyper/local:biasflag"); + } + + // one max strain bond per old owned atom is eligible for biasing + + for (iold = 0; iold < nlocal_old; iold++) eligible[iold] = 1; + + // ------------------------------------------------------------- + // stage 1: + // maxstrain[i] = max abs value of strain of any bond atom I is part of + // reverse/forward comm so know it for all current owned and ghost atoms + // ------------------------------------------------------------- + + // compute estrain = current abs value strain of each owned bond + // blist = bondlist from last event + // mark atom I ineligible if it has no bonds + // also store: + // maxhalf = which owned bond is maxstrain for each old atom I + // maxhalfstrain = abs value strain of that bond for each old atom I + + for (i = 0; i < nall; i++) maxstrain[i] = 0.0; + + double **x = atom->x; + + m = 0; + for (iold = 0; iold < nlocal_old; iold++) { + nbond = numbond[iold]; + if (!nbond) { + eligible[iold] = 0; + continue; + } + halfstrain = 0.0; + for (ibond = 0; ibond < nbond; ibond++) { + i = blist[m].i; + j = blist[m].j; + 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); maxbondlen = MAX(r,maxbondlen); + r0 = blist[m].r0; estrain = fabs(r-r0) / r0; - if (estrain > emax) { - emax = estrain; - bondindex = m; + maxstrain[i] = MAX(maxstrain[i],estrain); + maxstrain[j] = MAX(maxstrain[j],estrain); + if (estrain > halfstrain) { + halfstrain = estrain; + ijhalf = m; } + m++; } - maxstrain[i] = emax; - maxstrain_bondindex[i] = bondindex; + maxhalf[iold] = ijhalf; + maxhalfstrain[iold] = halfstrain; } //time2 = MPI_Wtime(); - // forward comm to acquire maxstrain of all ghost atoms + // reverse comm acquires maxstrain of all current owned atoms + // needed b/c only saw half the bonds of each atom + // also needed b/c bond list may refer to old owned atoms that are now ghost + // forward comm acquires maxstrain of all current ghost atoms commflag = STRAIN; + comm->reverse_comm_fix(this); comm->forward_comm_fix(this); //time3 = MPI_Wtime(); - // use original Dcut neighbor list to check maxstrain of all neighbor atoms - // set maxstrain_region of I atoms = maxstrain of I and all J neighs - // neighbor list has old indices for IJ b/c reneighboring may have occurred + // ------------------------------------------------------------- + // stage 2: + // maxstrain_domain[i] = maxstrain of atom I and all its J neighs out to Dcut + // reverse/forward comm so know it for all current owned and ghost atoms + // ------------------------------------------------------------- + + // use full Dcut neighbor list to check maxstrain of all neighbor atoms + // neighlist is from last event + // has old indices for I,J (reneighboring may have occurred) // use old2now[] to convert to current indices - // if neighbor is not currently known (too far away), - // then assume it was part of an event and its strain = qfactor - // this double loop sets maxstrain_region of mostly owned atoms - // but possibly some ghost atoms as well + // if J is unknown (drifted ghost), + // assume it was part of an event and its strain = qfactor + // mark atom I ineligible for biasing if: + // its maxhalfstrain < maxstrain (J atom owns the IJ bond) + // its maxstrain < maxstrain_domain + // ncount > 1 (break tie by making all atoms with tie value ineligible) + // if ncount > 1, also flip sign of maxstrain_domain for atom I - int nall = nlocal + atom->nghost; - for (i = 0; i < nall; i++) maxstrain_region[i] = 0.0; + for (i = 0; i < nall; i++) maxstrain_domain[i] = 0.0; - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - - // find largest distance from subbox that a ghost atom is with strain < qfactor + inum = listfull->inum; + ilist = listfull->ilist; + numneigh = listfull->numneigh; + firstneigh = listfull->firstneigh; double rmax = rmaxever; double rmaxbig = rmaxeverbig; double *sublo = domain->sublo; double *subhi = domain->subhi; + // first two lines of outer loop should be identical to this: + // for (iold = 0; iold < nlocal_old; iold++) + for (ii = 0; ii < inum; ii++) { iold = ilist[ii]; + if (eligible[iold] == 0) continue; jlist = firstneigh[iold]; jnum = numneigh[iold]; - // I and J may be ghost atoms + // I or J may be ghost atoms // will always know I b/c atoms do not drift that far // but may no longer know J if hops outside cutghost // in that case, assume it performed an event, its strain = qfactor + // this assumes cutghost is sufficiently longer than Dcut i = old2now[iold]; - emax = maxstrain[i]; + emax = selfstrain = maxstrain[i]; + ncount = 0; for (jj = 0; jj < jnum; jj++) { jold = jlist[jj]; j = old2now[jold]; - if (j >= 0) emax = MAX(emax,maxstrain[j]); - else { + + // special case for missing (drifted) J atom + + if (j < 0) { emax = MAX(emax,qfactor); + if (selfstrain == qfactor) ncount++; continue; } - if (j >= nlocal) { - if (x[j][0] < sublo[0]) rmaxbig = MAX(rmaxbig,sublo[0]-x[j][0]); - if (x[j][1] < sublo[1]) rmaxbig = MAX(rmaxbig,sublo[1]-x[j][1]); - if (x[j][2] < sublo[2]) rmaxbig = MAX(rmaxbig,sublo[2]-x[j][2]); - if (x[j][0] > subhi[0]) rmaxbig = MAX(rmaxbig,x[j][0]-subhi[0]); - if (x[j][1] > subhi[1]) rmaxbig = MAX(rmaxbig,x[j][1]-subhi[1]); - if (x[j][2] > subhi[2]) rmaxbig = MAX(rmaxbig,x[j][2]-subhi[2]); - if (maxstrain[j] < qfactor) { - if (x[j][0] < sublo[0]) rmax = MAX(rmax,sublo[0]-x[j][0]); - if (x[j][1] < sublo[1]) rmax = MAX(rmax,sublo[1]-x[j][1]); - if (x[j][2] < sublo[2]) rmax = MAX(rmax,sublo[2]-x[j][2]); - if (x[j][0] > subhi[0]) rmax = MAX(rmax,x[j][0]-subhi[0]); - if (x[j][1] > subhi[1]) rmax = MAX(rmax,x[j][1]-subhi[1]); - if (x[j][2] > subhi[2]) rmax = MAX(rmax,x[j][2]-subhi[2]); + emax = MAX(emax,maxstrain[j]); + if (selfstrain == maxstrain[j]) ncount++; + + // optional diagnostic + // tally largest distance from subbox that a ghost atom is (rmaxbig) + // and the largest distance if strain < qfactor (rmax) + + if (checkghost) { + if (j >= nlocal) { + if (x[j][0] < sublo[0]) rmaxbig = MAX(rmaxbig,sublo[0]-x[j][0]); + if (x[j][1] < sublo[1]) rmaxbig = MAX(rmaxbig,sublo[1]-x[j][1]); + if (x[j][2] < sublo[2]) rmaxbig = MAX(rmaxbig,sublo[2]-x[j][2]); + if (x[j][0] > subhi[0]) rmaxbig = MAX(rmaxbig,x[j][0]-subhi[0]); + if (x[j][1] > subhi[1]) rmaxbig = MAX(rmaxbig,x[j][1]-subhi[1]); + if (x[j][2] > subhi[2]) rmaxbig = MAX(rmaxbig,x[j][2]-subhi[2]); + if (maxstrain[j] < qfactor) { + if (x[j][0] < sublo[0]) rmax = MAX(rmax,sublo[0]-x[j][0]); + if (x[j][1] < sublo[1]) rmax = MAX(rmax,sublo[1]-x[j][1]); + if (x[j][2] < sublo[2]) rmax = MAX(rmax,sublo[2]-x[j][2]); + if (x[j][0] > subhi[0]) rmax = MAX(rmax,x[j][0]-subhi[0]); + if (x[j][1] > subhi[1]) rmax = MAX(rmax,x[j][1]-subhi[1]); + if (x[j][2] > subhi[2]) rmax = MAX(rmax,x[j][2]-subhi[2]); + } } } } - maxstrain_region[i] = emax; + if (maxhalfstrain[iold] < selfstrain) eligible[iold] = 0; + if (selfstrain < emax) eligible[iold] = 0; + else if (ncount > 1) { + eligible[iold] = 0; + emax = -emax; + } + maxstrain_domain[i] = emax; } - double rmax2[2],rmax2all[2]; - rmax2[0] = rmax; - rmax2[1] = rmaxbig; - MPI_Allreduce(&rmax2,&rmax2all,2,MPI_DOUBLE,MPI_MAX,world); - rmaxever = rmax2all[0]; - rmaxeverbig = rmax2all[1]; - - MPI_Allreduce(&mybonds,&allbonds,1,MPI_INT,MPI_SUM,world); - //time4 = MPI_Wtime(); - // reverse comm to acquire maxstrain_region from ghost atoms - // needed b/c neighbor list referred to old owned atoms, - // so above loop may set maxstrain_region of ghost atoms - // forward comm to acquire maxstrain_region of all ghost atoms + // reverse comm to acquire maxstrain_domain from ghost atoms + // needed b/c neigh list may refer to old owned atoms that are now ghost + // forward comm acquires maxstrain_domain of all current ghost atoms - commflag = STRAINREGION; + commflag = STRAINDOMAIN; comm->reverse_comm_fix(this); comm->forward_comm_fix(this); //time5 = MPI_Wtime(); - // identify biased bonds and add to boost list - // for each max-strain bond IJ of atom I: - // bias this bond only if all these conditions hold: - // itag < jtag, so bond is only biased once - // maxstrain[i] = maxstrain_region[i] - // maxstrain[j] = maxstrain_region[j] - // NOTE: also need to check that maxstrain[i] = maxstrain[j] ?? - // don't think so, b/c maxstrain_region[i] includes maxstrain[i] + // ------------------------------------------------------------- + // stage 3: + // create bias = list of Nbias biased bonds this proc owns + // ------------------------------------------------------------- - nboost = 0; + // identify biased bonds and add to bias list + // bias the I,J maxhalf bond of atom I only if all these conditions hold: + // maxstrain[i] = maxstrain_domain[i] (checked in stage 2) + // maxstrain[j] = maxstrain_domain[j] (checked here) + // I is not part of an I,J bond with > strain owned by some J (checked in 2) + // no ties with other maxstrain bonds in atom I's domain (chedcked in 2) - for (i = 0; i < nlocal; i++) { - if (numbond[i] == 0) continue; - itag = tag[i]; - j = bonds[i][maxstrain_bondindex[i]].j; - jtag = tag[j]; - if (itag > jtag) continue; - - if (maxstrain[i] != maxstrain_region[i]) continue; - if (maxstrain[j] != maxstrain_region[j]) continue; - - if (nboost == maxboost) { - maxboost += DELTABOOST; - memory->grow(boost,maxboost,"hyper/local:boost"); + nbias = 0; + for (iold = 0; iold < nlocal_old; iold++) { + if (eligible[iold] == 0) continue; + j = blist[maxhalf[iold]].j; + if (maxstrain[j] != maxstrain_domain[j]) continue; + if (nbias == maxbias) { + maxbias += DELTABIAS; + memory->grow(bias,maxbias,"hyper/local:bias"); } - boost[nboost++] = i; + bias[nbias++] = maxhalf[iold]; } //time6 = MPI_Wtime(); - // apply boost force to bonds with locally max strain + // ------------------------------------------------------------- + // stage 4: + // apply bias force to bonds with locally max strain + // ------------------------------------------------------------- double **f = atom->f; int nobias = 0; + int negstrain = 0; mybias = 0.0; - for (int iboost = 0; iboost < nboost; iboost++) { - i = boost[iboost]; - emax = maxstrain[i]; - if (emax >= qfactor) { + for (int ibias = 0; ibias < nbias; ibias++) { + m = bias[ibias]; + i = blist[m].i; + j = blist[m].j; + + if (maxstrain[i] >= qfactor) { nobias++; continue; } - m = maxstrain_bondindex[i]; - j = bonds[i][m].j; - r0 = bonds[i][m].r0; - boostcoeff = bonds[i][m].boostcoeff; - - vbias = boostcoeff * vmax * (1.0 - emax*emax*invqfactorsq); - fbias = boostcoeff * 2.0 * vmax * emax / (qfactor*qfactor * r0); - 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); - fbiasr = fbias / r; + r0 = blist[m].r0; + ebias = (r-r0) / r0; + vbias = biascoeff[m] * vmax * (1.0 - ebias*ebias*invqfactorsq); + fbias = biascoeff[m] * 2.0 * vmax * ebias * invqfactorsq; + fbiasr = fbias / r0 / r; f[i][0] += delx*fbiasr; f[i][1] += dely*fbiasr; f[i][2] += delz*fbiasr; @@ -642,131 +670,102 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) f[j][1] -= dely*fbiasr; f[j][2] -= delz*fbiasr; + if (ebias < 0.0) negstrain++; mybias += vbias; } //time7 = MPI_Wtime(); - // no boostostat update of boost coeffs when pre_reverse called from setup() - // nboost_running, nobias_running, sumboostcoeff only incremented on run steps - // NOTE: maybe should also not bias any bonds on firststep of this fix + // ------------------------------------------------------------- + // apply boostostat to bias coeffs of all bonds I own + // ------------------------------------------------------------- + + // no boostostat update when pre_reverse called from setup() + // nbias_running, nobias_running, negstrain_running only incremented + // on run steps if (setupflag) return; - nboost_running += nboost; + nbias_running += nbias; nobias_running += nobias; + negstrain_running += negstrain; - // apply boostostat to boost coefficients of all bonds of all owned atoms - // use per-atom full bond list - // this is double-calculating for IJ and JI bonds - // should be identical for both, b/c emax is the same - // could compute once, but would have to find/store index of JI bond - // delta in boost coeff is function of maxboost_region vs target boost - // maxboost_region is function of two maxstrain_regions for I,J - // NOTE: if J is lost to I but not vice versa, then biascoeff IJ != JI + // loop over bonds I own to adjust bias coeff + // delta in boost coeff is function of maxboost_domain vs target boost + // maxboost_domain is function of two maxstrain_domains for I,J - double myboost = 0.0; - double emaxi,emaxj,maxboost_region; + double emaxi,emaxj,maxboost_domain,bc; + double mybiascoeff = 0.0; - for (i = 0; i < nlocal; i++) { - emaxi = maxstrain_region[i]; - nbond = numbond[i]; - for (m = 0; m < nbond; m++) { - j = bonds[i][m].j; - if (j < 0) continue; - emaxj = maxstrain_region[j]; - emax = MAX(emaxi,emaxj); - if (emax < qfactor) vbias = vmax * (1.0 - emax*emax*invqfactorsq); - else vbias = 0.0; - boostcoeff = bonds[i][m].boostcoeff; - maxboost_region = exp(beta * boostcoeff*vbias); - boostcoeff -= alpha * (maxboost_region-boosttarget) / boosttarget; - // COMMENT OUT for now - need better way to bound boostcoeff - //boostcoeff = MIN(boostcoeff,COEFFMAX); - myboost += boostcoeff; - maxboostcoeff = MAX(maxboostcoeff,boostcoeff); - minboostcoeff = MIN(minboostcoeff,boostcoeff); - bonds[i][m].boostcoeff = boostcoeff; - } + for (m = 0; m < nblocal; m++) { + i = blist[m].i; + j = blist[m].j; + emaxi = maxstrain_domain[i]; + emaxj = maxstrain_domain[j]; + emax = MAX(emaxi,emaxj); + if (emax < qfactor) vbias = vmax * (1.0 - emax*emax*invqfactorsq); + else vbias = 0.0; + + maxboost_domain = exp(beta * biascoeff[m]*vbias); + biascoeff[m] -= alpha * (maxboost_domain-boost_target) / boost_target; + + // stats + + bc = biascoeff[m]; + mybiascoeff += bc; + minbiascoeff = MIN(minbiascoeff,bc); + maxbiascoeff = MAX(maxbiascoeff,bc); } - // running stats + // ------------------------------------------------------------- + // diagnostics, some optional + // ------------------------------------------------------------- - MPI_Allreduce(&myboost,&allboost,1,MPI_DOUBLE,MPI_SUM,world); - if (allbonds) sumboostcoeff += allboost/allbonds; + MPI_Allreduce(&mybiascoeff,&sumbiascoeff,1,MPI_DOUBLE,MPI_SUM,world); + if (allbonds) avebiascoeff += sumbiascoeff/allbonds; - // histogram the bond coeffs and output as requested - // do not double count each bond + // if requested, monitor ghost distance from processor sub-boxes - if (histoflag && update->ntimestep % histo_every == 0) { - if (histo_steps == 0) - for (i = 0; i < histo_count+2; i++) histo[i] = 0; - histo_steps++; - - int ihisto; - for (i = 0; i < nlocal; i++) { - nbond = numbond[i]; - for (m = 0; m < nbond; m++) { - if (tag[i] > bonds[i][m].jtag) continue; - boostcoeff = bonds[i][m].boostcoeff; - if (boostcoeff < histo_lo) ihisto = -1; - else ihisto = static_cast ((boostcoeff-histo_lo) * invhisto_delta); - if (ihisto >= histo_count) ihisto = histo_count; - histo[ihisto+1]++; - } - } - - if (update->ntimestep % histo_print == 0) { - MPI_Allreduce(histo,allhisto,histo_count+2,MPI_LMP_BIGINT,MPI_SUM,world); - - bigint total = 0; - for (i = 0; i < histo_count+2; i++) total += allhisto[i]; - - if (me == 0) { - if (screen) { - fprintf(screen,"Histogram of bias coeffs:\n"); - for (i = 0; i < histo_count+2; i++) - fprintf(screen," %g",1.0*allhisto[i]/total); - fprintf(screen,"\n"); - } - if (logfile) { - fprintf(logfile,"Histogram of bias coeffs:\n"); - for (i = 0; i < histo_count+2; i++) - fprintf(logfile," %g",1.0*allhisto[i]/total); - fprintf(logfile,"\n"); - } - } - } + if (checkghost) { + double rmax2[2],rmax2all[2]; + rmax2[0] = rmax; + rmax2[1] = rmaxbig; + MPI_Allreduce(&rmax2,&rmax2all,2,MPI_DOUBLE,MPI_MAX,world); + rmaxever = rmax2all[0]; + rmaxeverbig = rmax2all[1]; } - // check for any biased bonds that are too close to each other + // if requsted, check for any biased bonds that are too close to each other // keep a running count for output + // requires 2 additional local comm operations if (checkbias && update->ntimestep % checkbias_every == 0) { // mark each atom in a biased bond with ID of partner - // nboost loop will mark some ghost atoms + // this may mark some ghost atoms for (i = 0; i < nall; i++) biasflag[i] = 0; - for (int iboost = 0; iboost < nboost; iboost++) { - i = boost[iboost]; - m = maxstrain_bondindex[i]; - j = bonds[i][m].j; + tagint *tag = atom->tag; + + for (int ibias = 0; ibias < nbias; ibias++) { + m = bias[ibias]; + i = blist[m].i; + j = blist[m].j; biasflag[i] = tag[j]; biasflag[j] = tag[i]; } // reverse comm to acquire biasflag from ghost atoms - // needed b/c above loop may set biasflag of ghost atoms - // forward comm to acquire biasflag of all ghost atoms + // forward comm to set biasflag for all ghost atoms commflag = BIASFLAG; comm->reverse_comm_fix(this); comm->forward_comm_fix(this); + // loop over Dcut full neighbor list // I and J may be ghost atoms // only continue if I is a biased atom - // if J is unknonw (drifted ghost) just ignore + // if J is unknown (drifted ghost) just ignore // if J is biased and is not bonded to I, then flag as too close for (ii = 0; ii < inum; ii++) { @@ -784,30 +783,17 @@ void FixHyperLocal::pre_reverse(int /* eflag */, int /* vflag */) if (biasflag[j] && biasflag[j] != tag[i]) checkbias_count++; } } - } - // check for any bond bias coeffcients that do not match - // cannot check unless both atoms IJ are owned by this proc - // keep a running count for output - - if (checkcoeff && update->ntimestep % checkcoeff_every == 0) { - int jb,jbonds; - - for (i = 0; i < nlocal; i++) { - nbond = numbond[i]; - for (m = 0; m < nbond; m++) { - if (tag[i] > bonds[i][m].jtag) continue; - j = bonds[i][m].j; - if (j < 0) continue; - if (j >= nlocal) continue; - itag = tag[i]; - jbonds = numbond[j]; - for (jb = 0; jb < jbonds; jb++) - if (bonds[j][jb].jtag == itag) break; - if (jb == jbonds) - error->one(FLERR,"Fix hyper/local could not find duplicate bond"); - if (bonds[i][m].boostcoeff != bonds[j][jb].boostcoeff) - checkcoeff_count++; + if (checkbias_flag != IGNORE) { + int allcount; + MPI_Allreduce(&checkbias_count,&allcount,1,MPI_INT,MPI_SUM,world); + if (allcount) { + char str[128]; + sprintf(str,"Fix hyper/local biased bonds too close: " + "cumulative atom count %d",allcount); + if (checkbias_flag == WARN) { + if (me == 0) error->warning(FLERR,str); + } else error->all(FLERR,str); } } } @@ -824,9 +810,9 @@ void FixHyperLocal::min_pre_neighbor() void FixHyperLocal::build_bond_list(int natom) { - int i,j,ii,jj,m,n,inum,jnum,nbond; + int i,j,ii,jj,m,n,iold,jold,ilocal,jlocal,inum,jnum,nbond; tagint itag,jtag; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq,oldcoeff; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,distsq,oldcoeff; int *ilist,*jlist,*numneigh,**firstneigh; double time1,time2; @@ -837,159 +823,261 @@ void FixHyperLocal::build_bond_list(int natom) nevent_atom += natom; } - // trigger Dcut neighbor list build - // NOTE: turn off special bonds in this Dcut neigh list? - - neighbor->build_one(list); - - // make copy of old bonds to preserve boostcoeffs for bonds that persist - // allocate new numbond - - OneBond **old_bonds = bonds; - int *old_numbond = numbond; - - int nmax = atom->nmax; - memory->create(numbond,nmax,"hyper/local:numbond"); - - // old_nall = value of nall at time bonds are built - // reallocate new xold and tagold if necessary - // initialize xold to current coords - // initialize tagold to zero, so atoms not in neighbor list will remain zero - - old_nall = atom->nlocal + atom->nghost; - - if (old_nall > maxold) { - memory->destroy(xold); - memory->destroy(tagold); - memory->destroy(old2now); - maxold = atom->nmax; - memory->create(xold,maxold,3,"hyper/local:xold"); - memory->create(tagold,maxold,"hyper/local:tagold"); - memory->create(old2now,maxold,"hyper/local:old2now"); - } + // compute max distance any bond atom has moved between 2 quenched states + // xold[iold] = last quenched coord for iold + // x[ilocal] = current quenched coord for same atom + // use of old2now calculates distsq only once per atom double **x = atom->x; - memcpy(&xold[0][0],&x[0][0],3*old_nall*sizeof(double)); - for (i = 0; i < old_nall; i++) tagold[i] = 0; + for (i = 0; i < nall_old; i++) old2now[i] = -1; - // create and populate new bonds data struct - // while loop allows maxbondperatom to increase once if necessary - // don't know new maxbondperatom value until end of loop - // in practice maxbondperatom will hardly ever increase - // since there is a physical max value - - tagint *tag = atom->tag; - int *mask = atom->mask; - int nlocal = atom->nlocal; - - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - - while (1) { - bonds = (OneBond **) memory->create(bonds,nmax,maxbondperatom, - "hyper/local:bonds"); - if (bonds) memset(bonds[0],0,nmax*sizeof(OneBond)); - for (i = 0; i < nlocal; i++) numbond[i] = 0; - - // identify bonds assigned to each owned atom - // do not create a bond between two non-group atoms - // set tagold = global ID for all I,J atoms used in neighbor list - // tagold remains 0 for unused atoms, skipped in pre_neighbor - - int nbondmax = 0; - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - itag = tag[i]; - tagold[i] = tag[i]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - nbond = 0; - - for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - jtag = tag[j]; - tagold[j] = jtag; - - // skip if neither atom I or J are in fix group - // order IJ to insure IJ and JI bonds are stored consistently - - if (!(mask[i] & groupbit) && !(mask[j] & groupbit)) continue; - - if (itag < jtag) { - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - } else { - delx = x[j][0] - xtmp; - dely = x[j][1] - ytmp; - delz = x[j][2] - ztmp; - } - - rsq = delx*delx + dely*dely + delz*delz; - - // NOTE: could create two bonds for IJ both owned from one calc? - // have to skip one of 2 bonds in that case - - if (rsq < cutbondsq) { - if (nbond >= maxbondperatom) { - nbond++; - continue; - } - - bonds[i][nbond].r0 = sqrt(rsq); - bonds[i][nbond].jtag = tag[j]; - bonds[i][nbond].j = j; - - if (firstflag) oldcoeff = 0.0; - else { - oldcoeff = 0.0; - jtag = tag[j]; - n = old_numbond[i]; - for (m = 0; m < n; m++) { - if (old_bonds[i][m].jtag == jtag) { - oldcoeff = old_bonds[i][m].boostcoeff; - break; - } - } - } - - if (oldcoeff > 0.0) bonds[i][nbond].boostcoeff = oldcoeff; - else { - bonds[i][nbond].boostcoeff = BOOSTINIT; - nnewbond++; - } - nbond++; - } - } - numbond[i] = nbond; - nbondmax = MAX(nbondmax,nbond); + for (m = 0; m < nblocal; m++) { + iold = blist[m].iold; + if (old2now[iold] < 0) { + ilocal = atom->map(tagold[iold]); + ilocal = domain->closest_image(xold[iold],ilocal); + if (ilocal < 0) error->one(FLERR,"Fix hyper/local bond atom not found"); + old2now[iold] = ilocal; + distsq = MathExtra::distsq3(x[ilocal],xold[iold]); + maxdriftsq = MAX(distsq,maxdriftsq); + } + jold = blist[m].jold; + if (old2now[jold] < 0) { + jold = blist[m].jold; + jlocal = atom->map(tagold[jold]); + jlocal = domain->closest_image(xold[iold],jlocal); // close to I atom + if (jlocal < 0) error->one(FLERR,"Fix hyper/local bond atom not found"); + old2now[jold] = jlocal; + distsq = MathExtra::distsq3(x[jlocal],xold[jold]); + maxdriftsq = MAX(distsq,maxdriftsq); } - - // maxbondperatom must increase uniformly on all procs - // since bonds are comunicated when atoms migrate - - int allnbondmax; - MPI_Allreduce(&nbondmax,&allnbondmax,1,MPI_INT,MPI_MAX,world); - if (allnbondmax <= maxbondperatom) break; - - maxbondperatom = allnbondmax; - memory->destroy(bonds); } - // deallocate old_bonds and old_numbond + // store old bond coeffs so can persist them in new blist + // while loop allows growing value of maxbondperatom + // will loop at most 2 times, stops when maxbondperatom is large enough + // requires reverse comm, no forward comm: + // b/c new coeff list is stored only by current owned atoms - memory->destroy(old_bonds); - memory->destroy(old_numbond); + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + int nall = nlocal + atom->nghost; + + if (maxcoeff < nall) { + memory->destroy(numcoeff); + memory->sfree(clist); + maxcoeff = atom->nmax; + memory->create(numcoeff,maxcoeff,"hyper/local:numcoeff"); + clist = (OneCoeff **) memory->smalloc(maxcoeff*sizeof(OneCoeff *), + "hyper/local:clist"); + } + + while (1) { + if (firstflag) break; + for (i = 0; i < nall; i++) numcoeff[i] = 0; + for (i = 0; i < nall; i++) clist[i] = NULL; + cpage->reset(); + + for (m = 0; m < nblocal; m++) { + i = blist[m].i; + j = blist[m].j; + + if (numcoeff[i] == 0) clist[i] = cpage->get(maxbondperatom); + if (numcoeff[j] == 0) clist[j] = cpage->get(maxbondperatom); + + if (numcoeff[i] < maxbondperatom) { + clist[i][numcoeff[i]].biascoeff = biascoeff[m]; + clist[i][numcoeff[i]].tag = tag[j]; + } + numcoeff[i]++; + + if (numcoeff[j] < maxbondperatom) { + clist[j][numcoeff[j]].biascoeff = biascoeff[m]; + clist[j][numcoeff[j]].tag = tag[i]; + } + numcoeff[j]++; + } + + int mymax = 0; + for (i = 0; i < nall; i++) mymax = MAX(mymax,numcoeff[i]); + int maxcoeffall; + MPI_Allreduce(&mymax,&maxcoeffall,1,MPI_INT,MPI_MAX,world); + + if (maxcoeffall > maxbondperatom) { + maxbondperatom = maxcoeffall; + cpage->init(maxbondperatom,1024*maxbondperatom,1); + continue; + } + + commflag = BIASCOEFF; + comm->reverse_comm_fix_variable(this); + + mymax = 0; + for (i = 0; i < nall; i++) mymax = MAX(mymax,numcoeff[i]); + MPI_Allreduce(&mymax,&maxcoeffall,1,MPI_INT,MPI_MAX,world); + if (maxcoeffall <= maxbondperatom) break; + + maxbondperatom = maxcoeffall; + cpage->init(maxbondperatom,1024*maxbondperatom,1); + } + + // reallocate vectors that are maxlocal and maxall length if necessary + + if (nlocal > maxlocal) { + memory->destroy(eligible); + memory->destroy(numbond); + memory->destroy(maxhalf); + memory->destroy(maxhalfstrain); + maxlocal = nlocal; + memory->create(eligible,maxlocal,"hyper/local:eligible"); + memory->create(numbond,maxlocal,"hyper/local:numbond"); + memory->create(maxhalf,maxlocal,"hyper/local:maxhalf"); + memory->create(maxhalfstrain,maxlocal,"hyper/local:maxhalfstrain"); + } + + if (nall > maxall) { + memory->destroy(xold); + memory->destroy(tagold); + memory->destroy(old2now); + maxall = atom->nmax; + memory->create(xold,maxall,3,"hyper/local:xold"); + memory->create(tagold,maxall,"hyper/local:tagold"); + memory->create(old2now,maxall,"hyper/local:old2now"); + } + + // nlocal_old = value of nlocal at time bonds are built + // nall_old = value of nall at time bonds are built + // archive current atom coords in xold + // tagold will be set to non-zero below for accessed atoms + // numbond will be set below + + nlocal_old = nlocal; + nall_old = nall; + + memcpy(&xold[0][0],&x[0][0],3*nall*sizeof(double)); + for (i = 0; i < nall; i++) tagold[i] = 0; + for (i = 0; i < nlocal; i++) numbond[i] = 0; + + // trigger neighbor list builds for both lists + // insure the I loops in both are from 1 to nlocal + + neighbor->build_one(listfull); + neighbor->build_one(listhalf); + + if (listfull->inum != nlocal || listhalf->inum != nlocal) + error->one(FLERR,"Invalid neighbor list in fix hyper/local bond build"); + + // set tagold = 1 for all J atoms used in full neighbor list + // tagold remains 0 for unused atoms, skipped in pre_neighbor + + inum = listfull->inum; + ilist = listfull->ilist; + numneigh = listfull->numneigh; + firstneigh = listfull->firstneigh; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + tagold[i] = tag[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + tagold[j] = tag[j]; + } + } + + // identify bonds assigned to each owned atom + // do not create a bond between two non-group atoms + + int *mask = atom->mask; + + inum = listhalf->inum; + ilist = listhalf->ilist; + numneigh = listhalf->numneigh; + firstneigh = listhalf->firstneigh; + + nblocal = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + itag = tag[i]; + tagold[i] = tag[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + nbond = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + jtag = tag[j]; + tagold[j] = jtag; + + // skip if neither atom I or J are in fix group + + if (!(mask[i] & groupbit) && !(mask[j] & groupbit)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutbondsq) { + nbond++; + + if (nblocal == maxbond) grow_bond(); + blist[nblocal].i = i; + blist[nblocal].j = j; + blist[nblocal].iold = i; + blist[nblocal].jold = j; + blist[nblocal].r0 = sqrt(rsq); + + // set biascoeff to old coeff for same I,J pair or to default + + if (firstflag) oldcoeff = 0.0; + else { + oldcoeff = 0.0; + jtag = tag[j]; + n = numcoeff[i]; + for (m = 0; m < n; m++) { + if (clist[i][m].tag == jtag) { + oldcoeff = clist[i][m].biascoeff; + break; + } + } + } + + if (oldcoeff > 0.0) biascoeff[nblocal] = oldcoeff; + else { + biascoeff[nblocal] = COEFFINIT; + nnewbond++; + } + + nblocal++; + } + } + + numbond[i] = nbond; + } + + // this fix allows access to biascoeffs as local data + + size_local_rows = nblocal; + + // allbonds = total # of bonds in system + + bigint bondcount = nblocal; + MPI_Allreduce(&bondcount,&allbonds,1,MPI_LMP_BIGINT,MPI_SUM,world); time2 = MPI_Wtime(); + if (firstflag) nnewbond = 0; else { time_bondbuild += time2-time1; @@ -1009,6 +1097,7 @@ int FixHyperLocal::pack_forward_comm(int n, int *list, double *buf, // STRAIN // pack maxstrain vector + // must send to all ghosts out to Dcut if (commflag == STRAIN) { for (i = 0; i < n; i++) { @@ -1016,17 +1105,20 @@ int FixHyperLocal::pack_forward_comm(int n, int *list, double *buf, buf[m++] = maxstrain[j]; } - // STRAINREGION - // pack maxstrain_region vector + // STRAINDOMAIN + // pack maxstrain_domain vector + // could just send to nearby ghosts in bonds + // don't see easy way to determine precisely which atoms that is - } else if (commflag == STRAINREGION) { + } else if (commflag == STRAINDOMAIN) { for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = maxstrain_region[j]; + buf[m++] = maxstrain_domain[j]; } // BIASFLAG // pack biasflag vector + // must send to all ghosts out to Dcut } else if (commflag == BIASFLAG) { for (i = 0; i < n; i++) { @@ -1056,11 +1148,11 @@ void FixHyperLocal::unpack_forward_comm(int n, int first, double *buf) } // STRAINREGION - // unpack maxstrain_region vector + // unpack maxstrain_domain vector - } else if (commflag == STRAINREGION) { + } else if (commflag == STRAINDOMAIN) { for (i = first; i < last; i++) { - maxstrain_region[i] = buf[m++]; + maxstrain_domain[i] = buf[m++]; } // BIASFLAG @@ -1077,46 +1169,136 @@ void FixHyperLocal::unpack_forward_comm(int n, int first, double *buf) int FixHyperLocal::pack_reverse_comm(int n, int first, double *buf) { - int i,m,last; + int i,j,m,last; m = 0; last = first + n; - // STRAINREGION - // pack maxstrain_region vector + // STRAIN + // pack maxstrain vector + // only pack for nonzero values - if (commflag == STRAINREGION) { + if (commflag == STRAIN) { + int nonzero = 0; + m++; // placeholder for count of atoms for (i = first; i < last; i++) { - buf[m++] = maxstrain_region[i]; + if (maxstrain[i] == 0.0) continue; + nonzero++; + buf[m++] = ubuf(i-first).d; // which atom is next + buf[m++] = maxstrain[i]; // value } + buf[0] = ubuf(nonzero).d; + + // STRAINDOMAIN + // pack maxstrain_domain vector + // only pack for nonzero values + + } else if (commflag == STRAINDOMAIN) { + int nonzero = 0; + m++; // placeholder for count of atoms + for (i = first; i < last; i++) { + if (maxstrain_domain[i] == 0.0) continue; + nonzero++; + buf[m++] = ubuf(i-first).d; // which atom is next + buf[m++] = maxstrain_domain[i]; // value + } + buf[0] = ubuf(nonzero).d; // BIASFLAG // pack biasflag vector + // could just pack for nonzero values, like STRAIN and STRAINDOMAIN } else if (commflag == BIASFLAG) { for (i = first; i < last; i++) { buf[m++] = ubuf(biasflag[i]).d; } + + // BIASCOEFF + // pack list of biascoeffs + // only pack for atoms with nonzero # of bias coeffs + // this will skip majority of ghost atoms + + } else if (commflag == BIASCOEFF) { + int ncoeff; + int nonzero = 0; + m++; // placeholder for count of atoms + for (i = first; i < last; i++) { + if (numcoeff[i] == 0) continue; + nonzero++; + ncoeff = numcoeff[i]; + buf[m++] = ubuf(i-first).d; // which atom is next + buf[m++] = ubuf(ncoeff).d; // # of bias coeffs + for (j = 0; j < ncoeff; j++) { + buf[m++] = clist[i][j].biascoeff; + buf[m++] = ubuf(clist[i][j].tag).d; + } + } + buf[0] = ubuf(nonzero).d; } return m; } +/* ---------------------------------------------------------------------- + callback by comm->reverse_comm_fix_variable() in build_bond() + same logic as BIASCOEFF option in pack_reverse_comm() + m = returned size of message +------------------------------------------------------------------------- */ + +int FixHyperLocal::pack_reverse_comm_size(int n, int first) +{ + int last = first + n; + int m = 1; + for (int i = first; i < last; i++) { + if (numcoeff[i]) m += 2 + 2*numcoeff[i]; + } + return m; +} + /* ---------------------------------------------------------------------- */ void FixHyperLocal::unpack_reverse_comm(int n, int *list, double *buf) { - int i,j,m; + int i,j,k,m; + + // return if n = 0 + // b/c if there are no atoms (n = 0), the message will not have + // been sent by Comm::reverse_comm_fix() or reverse_comm_fix_variable() + // so must not read nonzero from first buf location (would be zero anyway) + + if (n == 0) return; + + // STRAIN + // unpack maxstrain vector + // nonzero # of entries, each has offset to which atom in receiver's list + // use MAX, b/c want maximum abs value strain for each atom's bonds m = 0; - // STRAINREGION - // unpack maxstrain_region vector + if (commflag == STRAIN) { + int offset; + int nonzero = (int) ubuf(buf[m++]).i; // # of atoms with values - if (commflag == STRAINREGION) { - for (i = 0; i < n; i++) { - j = list[i]; - maxstrain_region[j] += buf[m++]; + for (int iatom = 0; iatom < nonzero; iatom++) { + offset = (int) ubuf(buf[m++]).i; // offset into list for which atom + j = list[offset]; + maxstrain[j] = MAX(maxstrain[j],buf[m]); + m++; + } + + // STRAINDOMAIN + // unpack maxstrain_domain vector + // use MAX, b/c want maximum abs value strain for each atom's domain + // could also use SUM, b/c exactly one ghost or owned value is non-zero + + } else if (commflag == STRAINDOMAIN) { + int offset; + int nonzero = (int) ubuf(buf[m++]).i; // # of atoms with values + for (int iatom = 0; iatom < nonzero; iatom++) { + offset = (int) ubuf(buf[m++]).i; // offset into list for which atom + j = list[offset]; + maxstrain_domain[j] = MAX(maxstrain_domain[j],buf[m]); + m++; } // BIASFLAG @@ -1127,84 +1309,45 @@ void FixHyperLocal::unpack_reverse_comm(int n, int *list, double *buf) j = list[i]; biasflag[j] = (tagint) ubuf(buf[m++]).i; } + + // BIASCOEFF + // unpack list of biascoeffs + // nonzero # of entries, each has offset to which atom in receiver's list + // protect against overflow of clist vector + // if that happens, caller will re-setup cpage and reverse comm again + + } else if (commflag == BIASCOEFF) { + int offset,ncoeff; + int nonzero = (int) ubuf(buf[m++]).i; // # of atoms with coeffs + for (int iatom = 0; iatom < nonzero; iatom++) { + offset = (int) ubuf(buf[m++]).i; // offset into list for which atom + j = list[offset]; + ncoeff = (int) ubuf(buf[m++]).i; // # of bias coeffs + for (k = 0; k < ncoeff; k++) { + if (numcoeff[j] == 0) clist[j] = cpage->get(maxbondperatom); + if (numcoeff[j] < maxbondperatom) { + clist[j][numcoeff[j]].biascoeff = buf[m++]; + clist[j][numcoeff[j]].tag = (tagint) ubuf(buf[m++]).i; + } else m += 2; + numcoeff[j]++; + } + } } } /* ---------------------------------------------------------------------- - allocate atom-based arrays + grow bond list and bias coeff vector by a chunk ------------------------------------------------------------------------- */ -void FixHyperLocal::grow_arrays(int nmax) +void FixHyperLocal::grow_bond() { - // NOTE: not all of these need to be Nmax in length, could allocate elsewhere - - memory->grow(maxstrain,nmax,"hyper/local:maxstrain"); - memory->grow(maxstrain_bondindex,nmax,"hyper/local:maxstrain_bondindex"); - memory->grow(maxstrain_region,nmax,"hyper/local:maxstrain_region"); - if (checkbias) memory->grow(biasflag,nmax,"hyper/local:biasflag"); - - memory->grow(numbond,nmax,"hyper/local:numbond"); - memory->grow(bonds,nmax,maxbondperatom,"hyper/local:bonds"); - - // zero so valgrind does not complain about memcpy() in copy() - // also so loops in pre_neighbor() are OK before - // bonds are setup for the first time - - if (bonds) { - memset(bonds[maxbond],0,(nmax-maxbond)*maxbondperatom*sizeof(OneBond)); - memset(&numbond[maxbond],0,(nmax-maxbond)*sizeof(int)); - maxbond = nmax; - } -} - -/* ---------------------------------------------------------------------- - copy values within local atom-based arrays -------------------------------------------------------------------------- */ - -void FixHyperLocal::copy_arrays(int i, int j, int /* delflag */) -{ - // avoid valgrind copy-to-self warning - - if (i != j) memcpy(bonds[j],bonds[i],numbond[i]*sizeof(OneBond)); - numbond[j] = numbond[i]; -} - -/* ---------------------------------------------------------------------- - pack values in local atom-based array for exchange with another proc -------------------------------------------------------------------------- */ - -int FixHyperLocal::pack_exchange(int i, double *buf) -{ - int m = 1; - int n = numbond[i]; - buf[m++] = ubuf(n).d; - for (int j = 0; j < n; j++) { - buf[m++] = bonds[i][j].r0; - buf[m++] = bonds[i][j].boostcoeff; - buf[m++] = ubuf(bonds[i][j].jtag).d; - buf[m++] = ubuf(bonds[i][j].j).d; - } - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack values in local atom-based array from exchange with another proc -------------------------------------------------------------------------- */ - -int FixHyperLocal::unpack_exchange(int nlocal, double *buf) -{ - int m = 1; - int n = numbond[nlocal] = (int) ubuf(buf[m++]).i; - for (int j = 0; j < n; j++) { - bonds[nlocal][j].r0 = buf[m++]; - bonds[nlocal][j].boostcoeff = buf[m++]; - bonds[nlocal][j].jtag = (tagint) ubuf(buf[m++]).i; - bonds[nlocal][j].j = (int) ubuf(buf[m++]).i; - } - - return m; + if (maxbond + DELTABOND > MAXSMALLINT) + error->one(FLERR,"Fix hyper/local bond count is too big"); + maxbond += DELTABOND; + blist = (OneBond *) + memory->srealloc(blist,maxbond*sizeof(OneBond),"hyper/local:blist"); + memory->grow(biascoeff,maxbond,"hyper/local:biascoeff"); + vector_local = biascoeff; } /* ---------------------------------------------------------------------- */ @@ -1220,41 +1363,40 @@ double FixHyperLocal::compute_scalar() double FixHyperLocal::compute_vector(int i) { - // 23 vector outputs returned for i = 0-22 + // 21 vector outputs returned for i = 0-20 - // i = 0 = # of boosted bonds on this step + // i = 0 = # of biased bonds on this step // i = 1 = max strain of any bond on this step - // i = 2 = average bias potential for all bonds on this step + // i = 2 = average bias coeff for all bonds on this step // i = 3 = ave bonds/atom on this step // i = 4 = ave neighbor bonds/bond on this step - // i = 5 = fraction of steps and bonds with no bias during this run - // i = 6 = max drift distance of any atom during this run - // i = 7 = max bond length during this run - // i = 8 = average # of boosted bonds/step during this run - // i = 9 = average bias potential for all bonds during this run - // i = 10 = max bias potential for any bond during this run - // i = 11 = min bias potential for any bond during this run - // i = 12 = max dist from my box of any ghost atom with - // maxstain < qfactor during this run - // i = 13 = max dist from my box of any ghost atom with - // any maxstrain during this run - // i = 14 = count of ghost atoms that could not be found - // by any proc at any reneighbor step during this run - // i = 15 = count of lost bond partners during this run - // i = 16 = average bias coeff for lost bond partners during this run - // i = 17 = count of bias overlaps found during this run - // i = 18 = count of non-matching bias coefficients found during this run + // i = 5 = max bond length during this run + // i = 6 = average # of biased bonds/step during this run + // i = 7 = fraction of biased bonds with no bias during this run + // i = 8 = fraction of biased bonds with negative strain during this run + // i = 9 = average bias coeff for all bonds during this run + // i = 10 = min bias coeff for any bond during this run + // i = 11 = max bias coeff for any bond during this run - // i = 19 = cummulative hyper time - // i = 20 = cummulative # of event timesteps since fix created - // i = 21 = cummulative # of atoms in events since fix created - // i = 22 = cummulative # of new bonds formed since fix created + // i = 12 = max drift distance of any atom during this run + // i = 13 = max distance from proc subbox of any ghost atom with + // maxstrain < qfactor during this run + // i = 14 = max distance from proc subbox of any ghost atom with + // any maxstrain during this run + // i = 15 = count of ghost atoms that could not be found + // on reneighbor steps during this run + // i = 16 = count of bias overlaps (< Dcut) found during this run + + // i = 17 = cumulative hyper time since fix created + // i = 18 = cumulative # of event timesteps since fix created + // i = 19 = cumulative # of atoms in events since fix created + // i = 20 = cumulative # of new bonds formed since fix created if (i == 0) { - int nboostall; - MPI_Allreduce(&nboost,&nboostall,1,MPI_INT,MPI_SUM,world); - return (double) nboostall; + int nbiasall; + MPI_Allreduce(&nbias,&nbiasall,1,MPI_INT,MPI_SUM,world); + return (double) nbiasall; } if (i == 1) { @@ -1269,119 +1411,104 @@ double FixHyperLocal::compute_vector(int i) } if (i == 2) { - if (allboost && allbonds) return allboost/allbonds * vmax; + if (allbonds) return sumbiascoeff/allbonds; return 1.0; } - if (i == 3) return 1.0*allbonds/atom->natoms; + if (i == 3) { + return 2.0*allbonds/atom->natoms; + } if (i == 4) { const int nlocal = atom->nlocal; - bigint nbonds = 0; - for (int j = 0; j < nlocal; j++) - nbonds += numbond[j]; - bigint allbonds; - MPI_Allreduce(&nbonds,&allbonds,1,MPI_LMP_BIGINT,MPI_SUM,world); bigint allneigh,thisneigh; - thisneigh = list->ipage->ndatum; + thisneigh = listfull->ipage->ndatum; MPI_Allreduce(&thisneigh,&allneigh,1,MPI_LMP_BIGINT,MPI_SUM,world); const double natoms = atom->natoms; const double neighsperatom = static_cast(allneigh)/natoms; - const double bondsperatom = 0.5*static_cast(allbonds)/natoms; + const double bondsperatom = static_cast(allbonds)/natoms; return neighsperatom * bondsperatom; } if (i == 5) { - int allboost_running,allnobias_running; - MPI_Allreduce(&nboost_running,&allboost_running,1,MPI_INT,MPI_SUM,world); - MPI_Allreduce(&nobias_running,&allnobias_running,1,MPI_INT,MPI_SUM,world); - if (allboost_running) return 1.0*allnobias_running / allboost_running; - return 0.0; - } - - if (i == 6) { - double alldriftsq; - MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world); - return (double) sqrt(alldriftsq); - } - - if (i == 7) { double allbondlen; MPI_Allreduce(&maxbondlen,&allbondlen,1,MPI_DOUBLE,MPI_MAX,world); return allbondlen; } - if (i == 8) { + if (i == 6) { if (update->ntimestep == update->firststep) return 0.0; - int allboost_running; - MPI_Allreduce(&nboost_running,&allboost_running,1,MPI_INT,MPI_SUM,world); - return 1.0*allboost_running / (update->ntimestep - update->firststep); + int allbias_running; + MPI_Allreduce(&nbias_running,&allbias_running,1,MPI_INT,MPI_SUM,world); + return 1.0*allbias_running / (update->ntimestep - update->firststep); + } + + if (i == 7) { + int allbias_running,allnobias_running; + MPI_Allreduce(&nbias_running,&allbias_running,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&nobias_running,&allnobias_running,1,MPI_INT,MPI_SUM,world); + if (allbias_running) return 1.0*allnobias_running / allbias_running; + return 0.0; + } + + if (i == 8) { + int allbias_running,allnegstrain_running; + MPI_Allreduce(&nbias_running,&allbias_running,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&negstrain_running,&allnegstrain_running,1,MPI_INT, + MPI_SUM,world); + if (allbias_running) return 1.0*allnegstrain_running / allbias_running; + return 0.0; } if (i == 9) { if (update->ntimestep == update->firststep) return 0.0; - return sumboostcoeff * vmax / (update->ntimestep - update->firststep); + return avebiascoeff / (update->ntimestep - update->firststep); } if (i == 10) { - double allboostcoeff; - MPI_Allreduce(&maxboostcoeff,&allboostcoeff,1,MPI_DOUBLE,MPI_MAX,world); - return allboostcoeff * vmax; + double biascoeff; + MPI_Allreduce(&minbiascoeff,&biascoeff,1,MPI_DOUBLE,MPI_MIN,world); + return biascoeff; } if (i == 11) { - double allboostcoeff; - MPI_Allreduce(&minboostcoeff,&allboostcoeff,1,MPI_DOUBLE,MPI_MAX,world); - return allboostcoeff * vmax; + double biascoeff; + MPI_Allreduce(&maxbiascoeff,&biascoeff,1,MPI_DOUBLE,MPI_MAX,world); + return biascoeff; } - if (i == 12) return rmaxever; - if (i == 13) return rmaxeverbig; + if (i == 12) { + double alldriftsq; + MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world); + return (double) sqrt(alldriftsq); + } - if (i == 14) { + if (i == 13) return rmaxever; + if (i == 14) return rmaxeverbig; + + if (i == 15) { int allghost_toofar; MPI_Allreduce(&ghost_toofar,&allghost_toofar,1,MPI_INT,MPI_SUM,world); return 1.0*allghost_toofar; } - if (i == 15) { - int alllost; - MPI_Allreduce(&lostbond_partner,&alllost,1,MPI_INT,MPI_SUM,world); - return 1.0*alllost; - } - if (i == 16) { - int alllost; - MPI_Allreduce(&lostbond_partner,&alllost,1,MPI_INT,MPI_SUM,world); - double allcoeff; - MPI_Allreduce(&lostbond_coeff,&allcoeff,1,MPI_DOUBLE,MPI_SUM,world); - if (alllost == 0) return 0; - return allcoeff/alllost; - } - - if (i == 17) { int allclose; MPI_Allreduce(&checkbias_count,&allclose,1,MPI_INT,MPI_SUM,world); return 1.0*allclose; } - if (i == 18) { - int allcoeff; - MPI_Allreduce(&checkcoeff_count,&allcoeff,1,MPI_INT,MPI_SUM,world); - return 1.0*allcoeff; + if (i == 17) { + return boost_target * update->dt * (update->ntimestep - starttime); } - if (i == 19) { - return boosttarget * update->dt * (update->ntimestep - starttime); - } + if (i == 18) return (double) nevent; + if (i == 19) return (double) nevent_atom; - if (i == 20) return (double) nevent; - if (i == 21) return (double) nevent_atom; - - if (i == 22) { - int allnew; - MPI_Allreduce(&nnewbond,&allnew,1,MPI_INT,MPI_SUM,world); - return (double) 0.5*allnew; + if (i == 20) { + int allnewbond; + MPI_Allreduce(&nnewbond,&allnewbond,1,MPI_INT,MPI_SUM,world); + return (double) allnewbond; } return 0.0; @@ -1394,32 +1521,30 @@ double FixHyperLocal::compute_vector(int i) double FixHyperLocal::query(int i) { - if (i == 1) return compute_vector(19); // cummulative hyper time - if (i == 2) return compute_vector(20); // nevent - if (i == 3) return compute_vector(21); // nevent_atom + if (i == 1) return compute_vector(17); // cummulative hyper time + if (i == 2) return compute_vector(18); // nevent + if (i == 3) return compute_vector(19); // nevent_atom if (i == 4) return compute_vector(3); // ave bonds/atom - if (i == 5) return compute_vector(6); // maxdrift - if (i == 6) return compute_vector(7); // maxbondlen - if (i == 7) return compute_vector(5); // fraction with zero bias + if (i == 5) return compute_vector(12); // maxdrift + if (i == 6) return compute_vector(5); // maxbondlen + if (i == 7) return compute_vector(7); // fraction with zero bias + if (i == 8) return compute_vector(8); // fraction with negative strain // unique to local hyper - if (i == 8) return compute_vector(22); // number of new bonds - if (i == 9) return 1.0*maxbondperatom; // max bonds/atom - if (i == 10) return compute_vector(8); // ave # of boosted bonds/step - if (i == 11) return compute_vector(9); // ave boost coeff over all bonds - if (i == 12) return compute_vector(10); // max boost cooef for any bond - if (i == 13) return compute_vector(11); // max boost cooef for any bond - if (i == 14) return compute_vector(4); // neighbor bonds/bond - if (i == 15) return compute_vector(2); // ave boost cooef now - if (i == 16) return time_bondbuild; // CPU time for bond_build calls - if (i == 17) return rmaxever; // ghost atom distance for < maxstrain - if (i == 18) return rmaxeverbig; // ghost atom distance for any strain - if (i == 19) return compute_vector(14); // count of ghost atoms not found - if (i == 20) return compute_vector(15); // count of lost bond partners - if (i == 21) return compute_vector(16); // ave bias coeff of long bonds - if (i == 22) return compute_vector(17); // count of bias overlaps - if (i == 23) return compute_vector(18); // count of non-matching bias coeffs + if (i == 9) return compute_vector(20); // number of new bonds + if (i == 10) return 1.0*maxbondperatom; // max bonds/atom + if (i == 11) return compute_vector(6); // ave # of biased bonds/step + if (i == 12) return compute_vector(9); // ave bias coeff over all bonds + if (i == 13) return compute_vector(10); // min bias cooef for any bond + if (i == 14) return compute_vector(11); // max bias cooef for any bond + if (i == 15) return compute_vector(4); // neighbor bonds/bond + if (i == 16) return compute_vector(2); // ave bias coeff now + if (i == 17) return time_bondbuild; // CPU time for build_bond calls + if (i == 18) return rmaxever; // ghost atom distance for < maxstrain + if (i == 19) return rmaxeverbig; // ghost atom distance for any strain + if (i == 20) return compute_vector(15); // count of ghost atoms not found + if (i == 21) return compute_vector(16); // count of bias overlaps error->all(FLERR,"Invalid query to fix hyper/local"); @@ -1427,17 +1552,22 @@ double FixHyperLocal::query(int i) } /* ---------------------------------------------------------------------- - memory usage of per-atom and per-bond arrays + memory usage of per-atom and per-bond data structs ------------------------------------------------------------------------- */ double FixHyperLocal::memory_usage() { - int nmax = atom->nmax; - double bytes = 2*nmax * sizeof(int); // numbond, maxstrain_bondindex - bytes = 2*nmax * sizeof(double); // maxstrain, maxstrain_region - bytes += maxbondperatom*nmax * sizeof(OneBond); // bonds - bytes += 3*maxold * sizeof(double); // xold - bytes += maxold * sizeof(tagint); // tagold - bytes += maxold * sizeof(int); // old2now + double bytes = maxbond * sizeof(OneBond); // blist + bytes = maxbond * sizeof(double); // per-bond bias coeffs + bytes += 3*maxlocal * sizeof(int); // numbond,maxhalf,eligible + bytes += maxlocal * sizeof(double); // maxhalfstrain + bytes += maxall * sizeof(int); // old2now + bytes += maxall * sizeof(tagint); // tagold + bytes += 3*maxall * sizeof(double); // xold + bytes += 2*maxall * sizeof(double); // maxstrain,maxstrain_domain + if (checkbias) bytes += maxall * sizeof(tagint); // biasflag + bytes += maxcoeff * sizeof(int); // numcoeff + bytes += maxcoeff * sizeof(OneCoeff *); // clist + bytes += maxlocal*maxbondperatom * sizeof(OneCoeff); // cpage estimate return bytes; } diff --git a/src/REPLICA/fix_hyper_local.h b/src/REPLICA/fix_hyper_local.h index 147e3ef1ef..6f13acb606 100644 --- a/src/REPLICA/fix_hyper_local.h +++ b/src/REPLICA/fix_hyper_local.h @@ -21,6 +21,7 @@ FixStyle(hyper/local,FixHyperLocal) #define LMP_FIX_HYPER_LOCAL_H #include "fix_hyper.h" +#include "my_page.h" namespace LAMMPS_NS { @@ -43,13 +44,9 @@ class FixHyperLocal : public FixHyper { int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); int pack_reverse_comm(int, int, double *); + int pack_reverse_comm_size(int, int); void unpack_reverse_comm(int, int *, double *); - void grow_arrays(int); - void copy_arrays(int, int, int); - int pack_exchange(int, double *); - int unpack_exchange(int, double *); - double memory_usage(); // extra methods visible to callers @@ -59,97 +56,133 @@ class FixHyperLocal : public FixHyper { private: int me; + + // inputs and derived quantities + double cutbond,qfactor,vmax,tequil,dcut; double alpha_user; // timescale to apply boostostat (time units) double alpha; // unitless dt/alpha_user - double boosttarget; // target value of boost - int histoflag; - int lostbond,lostbond_partner; - double lostbond_coeff; - int checkbias,checkbias_every,checkbias_flag,checkbias_count; - int checkcoeff,checkcoeff_every,checkcoeff_flag,checkcoeff_count; + double boost_target; // target value of boost + int checkghost,checkbias; // flags for optional stats + + double cutbondsq,dcutsq; + double beta,invqfactorsq; + + // flags int setupflag; // 1 during setup, 0 during run int firstflag; // set for first time bond_build takes place - int nostrainyet; // 1 until maxstrain is first computed - - int nboost_running,nobias_running; - int nbondbuild; - double time_bondbuild; - bigint starttime; - double sumboostcoeff; // sum of aveboost at every timestep - int allbonds; // sum of bond count on this step - double allboost; // sum of boostcoeff on all bonds on this step - - int nnewbond; // running tally of number of new bonds created - int maxbondperatom; // max # of bonds any atom ever has + int nostrainyet; // 1 until maxstrain is first compute + bigint starttime; // timestep when this fix was invoked int commflag; // flag for communication mode + + // stats + + int nbondbuild; // # of rebuilds of bond list + double time_bondbuild; // CPU time for bond builds + + bigint allbonds; // current total # of bonds + int nnewbond; // running tally of # of new bonds created + int maxbondperatom; // max # of bonds any atom ever has int nevent; // # of events that trigger bond rebuild int nevent_atom; // # of atoms that experienced an event - double cutbondsq,dcutsq; - double beta,invqfactorsq; - double mybias; + + int nbias_running; // running count of biased bonds + int nobias_running; // ditto for bonds with bias = 0, b/c too long + int negstrain_running; // ditto for bonds with negative strain + + double mybias; // sum of bias potentials for biased bonds double maxbondlen; // cummulative max length of any bond - double maxdriftsq; // max distance any atom drifts from original pos - double maxboostcoeff; // cummulative max boost coeff for any bond - double minboostcoeff; // cummulative min boost coeff for any bond + double maxdriftsq; // max distance any bond atom drifts from quenched x + + double sumbiascoeff; // sum of all bond bias coeffs at each timestep + double avebiascoeff; // cummulative sumbiascoeff/allbonds across steps + double minbiascoeff; // cummulative min bias coeff for any bond + double maxbiascoeff; // cummulative max bias coeff for any bond + double rmaxever,rmaxeverbig; - int ghost_toofar; + int ghost_toofar; // # of ghost atoms not found in Dcut neigh list + + int checkbias_every,checkbias_flag,checkbias_count; + + // 2 neighbor lists + + class NeighList *listfull; // full neigh list up to Dcut distance + class NeighList *listhalf; // half neigh list up to pair distance + // both created only when bonds are rebuilt + + // list of my owned bonds and bias coeffs + // persists on a proc from one event until the next + + struct OneBond { // single IJ bond, atom I is owner + int i,j; // current local indices of 2 bond atoms + int iold,jold; // local indices when bonds were formed + double r0; // relaxed bond length + }; + + OneBond *blist; // list of owned bonds + double *biascoeff; // biasing coefficient Cij for each bond + int nblocal; // # of owned bonds + int maxbond; // allocated size of blist + + // old data from last timestep bonds were formed + // persists on a proc from one event until the next + // first set of vectors are maxlocal in length + // second set of vectors are maxall in length + + int nlocal_old; // nlocal for old atoms + int nall_old; // nlocal+nghost for old atoms + int maxlocal; // allocated size of old local atom vecs + int maxall; // allocated size of old all atom vecs + + int *numbond; // # of bonds owned by old owned atoms + int *maxhalf; // bond index for maxstrain bond of old atoms + int *eligible; // 0/1 flag for bias on one of old atom's bonds + double *maxhalfstrain; // strain value for maxstrain bond of old atoms + + int *old2now; // o2n[i] = current local index of old atom I + // may be -1 if ghost atom has drifted + tagint *tagold; // IDs of atoms when bonds were formed + // 0 if a ghost atom is not in Dcut neigh list + double **xold; // coords of atoms when bonds were formed + + // vectors used to find maxstrain bonds within a local domain + + int maxatom; // size of these vectors, nlocal + nghost + + double *maxstrain; // max-strain of any bond atom I is part of + // for owned and ghost atoms + double *maxstrain_domain; // max-strain of any neighbor atom J of atom I + // for owned and ghost atoms + tagint *biasflag; // atoms in biased bonds marked with bond partner + // for owned and ghost atoms + + // list of biased bonds this proc owns + + int maxbias; // allocated size of bias list + int nbias; // # of biased bonds I own + int *bias; // index of biased bonds in my bond list + + // data structs for persisting bias coeffs when bond list is reformed + + struct OneCoeff { + double biascoeff; + tagint tag; + }; + + MyPage *cpage; // pages of OneCoeff datums for clist + OneCoeff **clist; // ptrs to vectors of bias coeffs for each atom + int *numcoeff; // # of bias coeffs per atom (one per bond) + int maxcoeff; // allocate sized of clist and numcoeff // extra timers //double timefirst,timesecond,timethird,timefourth; //double timefifth,timesixth,timeseventh,timetotal; - // data structs for per-atom and per-bond info - // all of these are for current owned and ghost atoms - // except list and old2now are for atom indices at time of last bond build + // private methods - class NeighList *list; // full neigh list up to Dcut distance - // created only when bonds are rebuilt - - int *old2now; // o2n[i] = current local index of old atom i - // stored for old owned and ghost atoms - // I = old index when bonds were last created - // old indices are stored in old neighbor list - - double **xold; // coords of owned+ghost atoms when bonds created - tagint *tagold; // global IDs of owned+ghost atoms when b created - - int maxold; // allocated size of old2now - int maxbond; // allocated size of bonds - int old_nall; // nlocal+nghost when old2now was last setup - - struct OneBond { // single IJ bond, atom I is owner - double r0; // original relaxed bond length - double boostcoeff; // boost coefficient - tagint jtag; // global index of J atom in bond IJ - int j; // local index of J atom in bond IJ - }; - - struct OneBond **bonds; // 2d array of bonds for owned atoms - int *numbond; // number of bonds for each owned atom - - double *maxstrain; // max-strain of any bond atom I is part of - // for owned and ghost atoms - double *maxstrain_region; // max-strain of any neighbor atom J of atom I - // for owned and ghost atoms - int *maxstrain_bondindex; // index of max-strain bond of each atom I - // just for owned atoms - tagint *biasflag; // atoms in biased bonds marked with bond partner - // for owned and ghost atoms - - // list of boosted bonds that this proc will bias - - int maxboost; // allocated size of boost list - int nboost; // # of boosted bonds I own - int *boost; // index of atom I in each boosted bond - - // histogramming of bond boost cooeficients - - int histo_every,histo_count,histo_print,histo_steps; - double histo_delta,invhisto_delta,histo_lo; - bigint *histo,*allhisto; + void grow_bond(); }; } diff --git a/src/REPLICA/hyper.cpp b/src/REPLICA/hyper.cpp index 22940de221..5d820b2e27 100644 --- a/src/REPLICA/hyper.cpp +++ b/src/REPLICA/hyper.cpp @@ -40,9 +40,7 @@ enum{NOHYPER,GLOBAL,LOCAL}; /* ---------------------------------------------------------------------- */ -Hyper::Hyper(LAMMPS *lmp) : - Pointers(lmp), dumplist(NULL) -{} +Hyper::Hyper(LAMMPS *lmp) : Pointers(lmp), dumplist(NULL) {} /* ---------------------------------------------------------------------- perform hyperdynamics simulation @@ -183,9 +181,6 @@ void Hyper::command(int narg, char **arg) if (hyperenable) fix_hyper->init_hyper(); - timer->barrier_start(); - time_start = timer->get_wall(Timer::TOTAL); - // perform initial minimization and bond list creation int nevent = 0; @@ -200,6 +195,14 @@ void Hyper::command(int narg, char **arg) if (hyperenable) fix_hyper->build_bond_list(0); fix_event->restore_state_quench(); + // reset stats and timers to skip HD setup + + nbuild = ndanger = 0; + time_dynamics = time_quench = 0.0; + + timer->barrier_start(); + time_start = timer->get_wall(Timer::TOTAL); + // main loop: dynamics, store state, quench, check event, restore state int ecount; @@ -260,11 +263,12 @@ void Hyper::command(int narg, char **arg) double maxdrift = 0.0; double maxbondlen = 0.0; double fraczero = 1.0; + double fracneg = 1.0; - double nnewbond,avenboost,aveboostcoeff,maxboostcoeff,minboostcoeff; - double maxbondperatom,neighbondperbond,aveboostnow; + double nnewbond,avenbias,avebiascoeff,minbiascoeff,maxbiascoeff; + double maxbondperatom,neighbondperbond,avebiasnow; double tbondbuild,rmaxever,rmaxeverbig,allghost_toofar; - double lostbond,lostbondcoeff,biasoverlap,nonmatchbiascoeff; + double lostbond,lostbondcoeff,biasoverlap; if (hyperenable) { t_hyper = fix_hyper->query(1); @@ -274,115 +278,70 @@ void Hyper::command(int narg, char **arg) maxdrift = fix_hyper->query(5); maxbondlen = fix_hyper->query(6); fraczero = fix_hyper->query(7); + fracneg = fix_hyper->query(8); if (hyperstyle == LOCAL) { - nnewbond = fix_hyper->query(8); - maxbondperatom = fix_hyper->query(9); - avenboost = fix_hyper->query(10); - aveboostcoeff = fix_hyper->query(11); - maxboostcoeff = fix_hyper->query(12); - minboostcoeff = fix_hyper->query(13); - neighbondperbond = fix_hyper->query(14); - aveboostnow = fix_hyper->query(15); - tbondbuild = fix_hyper->query(16); - rmaxever = fix_hyper->query(17); - rmaxeverbig = fix_hyper->query(18); - allghost_toofar = fix_hyper->query(19); - lostbond = fix_hyper->query(20); - lostbondcoeff = fix_hyper->query(21); - biasoverlap = fix_hyper->query(22); - nonmatchbiascoeff = fix_hyper->query(23); + nnewbond = fix_hyper->query(9); + maxbondperatom = fix_hyper->query(10); + avenbias = fix_hyper->query(11); + avebiascoeff = fix_hyper->query(12); + minbiascoeff = fix_hyper->query(13); + maxbiascoeff = fix_hyper->query(14); + neighbondperbond = fix_hyper->query(15); + avebiasnow = fix_hyper->query(16); + tbondbuild = fix_hyper->query(17); + rmaxever = fix_hyper->query(18); + rmaxeverbig = fix_hyper->query(19); + allghost_toofar = fix_hyper->query(20); + biasoverlap = fix_hyper->query(21); } } if (me == 0) { - if (screen) { - fprintf(screen,"Cummulative quantities for fix hyper:\n"); - fprintf(screen," hyper time = %g\n",t_hyper); - fprintf(screen," time boost factor = %g\n",t_hyper/(nsteps*update->dt)); - fprintf(screen," event timesteps = %d\n",nevent_running); - fprintf(screen," # of atoms in events = %d\n",nevent_atoms_running); - fprintf(screen,"Quantities for this hyper run:\n"); - fprintf(screen," event timesteps = %d\n",nevent); - fprintf(screen," # of atoms in events = %d\n",nevent_atoms); - fprintf(screen," max length of any bond = %g\n",maxbondlen); - fprintf(screen," max drift distance of any atom = %g\n",maxdrift); - fprintf(screen," fraction of steps & bonds with zero bias = %g\n", - fraczero); - fprintf(screen,"Current quantities:\n"); - fprintf(screen," ave bonds/atom = %g\n",avebonds); + FILE *out; + for (int iout = 0; iout < 2; iout++) { + if (iout == 0) out = screen; + if (iout == 1) out = logfile; + if (!out) continue; + fprintf(out,"Cummulative quantities for fix hyper:\n"); + fprintf(out," hyper time = %g\n",t_hyper); + fprintf(out," time boost factor = %g\n",t_hyper/(nsteps*update->dt)); + fprintf(out," event timesteps = %d\n",nevent_running); + fprintf(out," # of atoms in events = %d\n",nevent_atoms_running); + fprintf(out,"Quantities for this hyper run:\n"); + fprintf(out," event timesteps = %d\n",nevent); + fprintf(out," # of atoms in events = %d\n",nevent_atoms); + fprintf(out," max length of any bond = %g\n",maxbondlen); + fprintf(out," max drift distance of any atom = %g\n",maxdrift); + fprintf(out," fraction of biased bonds with zero bias = %g\n",fraczero); + fprintf(out," fraction of biased bonds with negative strain = %g\n", + fracneg); + fprintf(out,"Current quantities:\n"); + fprintf(out," ave bonds/atom = %g\n",avebonds); if (hyperstyle == LOCAL) { - fprintf(screen,"Cummulative quantities specific to fix hyper/local:\n"); - fprintf(screen," # of new bonds formed = %g\n",nnewbond); - fprintf(screen," max bonds/atom = %g\n",maxbondperatom); - fprintf(screen,"Quantities for this hyper run specific to " + fprintf(out,"Cummulative quantities specific to fix hyper/local:\n"); + fprintf(out," # of new bonds formed = %g\n",nnewbond); + fprintf(out," max bonds/atom = %g\n",maxbondperatom); + fprintf(out,"Quantities for this hyper run specific to " "fix hyper/local:\n"); - fprintf(screen," ave boosted bonds/step = %g\n",avenboost); - fprintf(screen," ave boost coeff of all bonds = %g\n",aveboostcoeff); - fprintf(screen," max boost coeff of any bond = %g\n",maxboostcoeff); - fprintf(screen," min boost coeff of any bond = %g\n",minboostcoeff); - fprintf(screen," max dist from my box of any " + fprintf(out," ave biased bonds/step = %g\n",avenbias); + fprintf(out," ave bias coeff of all bonds = %g\n",avebiascoeff); + fprintf(out," min bias coeff of any bond = %g\n",minbiascoeff); + fprintf(out," max bias coeff of any bond = %g\n",maxbiascoeff); + fprintf(out," max dist from my subbox of any " "non-maxstrain bond ghost atom = %g\n",rmaxever); - fprintf(screen," max dist from my box of any bond ghost atom = %g\n", + fprintf(out," max dist from my box of any bond ghost atom = %g\n", rmaxeverbig); - fprintf(screen," count of bond ghost neighbors " + fprintf(out," count of bond ghost neighbors " "not found on reneighbor steps = %g\n",allghost_toofar); - fprintf(screen," lost bond partners = %g\n",lostbond); - fprintf(screen," ave bias coeff for lost bond partners = %g\n", - lostbondcoeff); - fprintf(screen," bias overlaps = %g\n",biasoverlap); - fprintf(screen," non-matching bias coeffs = %g\n",nonmatchbiascoeff); - fprintf(screen," CPU time for bond builds = %g\n",tbondbuild); - fprintf(screen,"Current quantities specific to fix hyper/local:\n"); - fprintf(screen," neighbor bonds/bond = %g\n",neighbondperbond); - fprintf(screen," ave boost coeff for all bonds = %g\n",aveboostnow); + fprintf(out," bias overlaps = %g\n",biasoverlap); + fprintf(out," CPU time for bond builds = %g\n",tbondbuild); + fprintf(out,"Current quantities specific to fix hyper/local:\n"); + fprintf(out," neighbor bonds/bond = %g\n",neighbondperbond); + fprintf(out," ave boost coeff for all bonds = %g\n",avebiasnow); } - fprintf(screen,"\n"); - } - - if (logfile) { - fprintf(logfile,"Cummulative quantities for fix hyper:\n"); - fprintf(logfile," hyper time = %g\n",t_hyper); - fprintf(logfile," event timesteps = %d\n",nevent_running); - fprintf(logfile," # of atoms in events = %d\n",nevent_atoms_running); - fprintf(logfile,"Quantities for this hyper run:\n"); - fprintf(logfile," event timesteps = %d\n",nevent); - fprintf(logfile," # of atoms in events = %d\n",nevent_atoms); - fprintf(logfile," max length of any bond = %g\n",maxbondlen); - fprintf(logfile," max drift distance of any atom = %g\n",maxdrift); - fprintf(logfile," fraction of steps & bonds with zero bias = %g\n", - fraczero); - fprintf(logfile,"Current quantities:\n"); - fprintf(logfile," ave bonds/atom = %g\n",avebonds); - - if (hyperstyle == LOCAL) { - fprintf(logfile,"Cummulative quantities specific tofix hyper/local:\n"); - fprintf(logfile," # of new bonds formed = %g\n",nnewbond); - fprintf(logfile," max bonds/atom = %g\n",maxbondperatom); - fprintf(logfile,"Quantities for this hyper run specific to " - "fix hyper/local:\n"); - fprintf(logfile," ave boosted bonds/step = %g\n",avenboost); - fprintf(logfile," ave boost coeff of all bonds = %g\n",aveboostcoeff); - fprintf(logfile," max boost coeff of any bond = %g\n",maxboostcoeff); - fprintf(logfile," min boost coeff of any bond = %g\n",minboostcoeff); - fprintf(logfile," max dist from my box of any " - "non-maxstrain bond ghost atom = %g\n",rmaxever); - fprintf(logfile," max dist from my box of any bond ghost atom = %g\n", - rmaxeverbig); - fprintf(logfile," count of ghost bond neighbors " - "not found on reneighbor steps = %g\n",allghost_toofar); - fprintf(logfile," lost bond partners = %g\n",lostbond); - fprintf(logfile," ave bias coeff for lost bond partners = %g\n", - lostbondcoeff); - fprintf(logfile," bias overlaps = %g\n",biasoverlap); - fprintf(logfile," non-matching bias coeffs = %g\n",nonmatchbiascoeff); - fprintf(logfile," CPU time for bond builds = %g\n",tbondbuild); - fprintf(logfile,"Current quantities specific to fix hyper/local:\n"); - fprintf(logfile," neighbor bonds/bond = %g\n",neighbondperbond); - fprintf(logfile," ave boost coeff for all bonds = %g\n",aveboostnow); - } - fprintf(logfile,"\n"); + fprintf(out,"\n"); } } diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index fb185d7702..54fb83f0aa 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -28,12 +28,14 @@ #include "modify.h" #include "group.h" #include "comm.h" +#include "neighbor.h" #include "force.h" #include "input.h" #include "output.h" #include "variable.h" #include "random_mars.h" #include "math_const.h" +#include "hashlittle.h" #include "memory.h" #include "error.h" @@ -43,6 +45,8 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; +#define RVOUS 1 // 0 for irregular, 1 for all2all + #define MAXLINE 1024 #define CHUNK 1024 #define ATTRIBUTE_PERBODY 20 @@ -70,8 +74,7 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : xcmimage(NULL), displace(NULL), eflags(NULL), orient(NULL), dorient(NULL), avec_ellipsoid(NULL), avec_line(NULL), avec_tri(NULL), counts(NULL), itensor(NULL), mass_body(NULL), langextra(NULL), random(NULL), - id_dilate(NULL), onemols(NULL), hash(NULL), bbox(NULL), ctr(NULL), - idclose(NULL), rsqclose(NULL) + id_dilate(NULL), onemols(NULL) { int i; @@ -107,18 +110,18 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : // parse args for rigid body specification int *mask = atom->mask; - tagint *bodyid = NULL; + tagint *bodyID = NULL; int nlocal = atom->nlocal; if (narg < 4) error->all(FLERR,"Illegal fix rigid/small command"); if (strcmp(arg[3],"molecule") == 0) { if (atom->molecule_flag == 0) error->all(FLERR,"Fix rigid/small requires atom attribute molecule"); - bodyid = atom->molecule; + bodyID = atom->molecule; } else if (strcmp(arg[3],"custom") == 0) { if (narg < 5) error->all(FLERR,"Illegal fix rigid/small command"); - bodyid = new tagint[nlocal]; + bodyID = new tagint[nlocal]; customflag = 1; // determine whether atom-style variable or atom property is used. @@ -126,9 +129,11 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : int is_double=0; int custom_index = atom->find_custom(arg[4]+2,is_double); if (custom_index == -1) - error->all(FLERR,"Fix rigid/small custom requires previously defined property/atom"); + error->all(FLERR,"Fix rigid/small custom requires " + "previously defined property/atom"); else if (is_double) - error->all(FLERR,"Fix rigid/small custom requires integer-valued property/atom"); + error->all(FLERR,"Fix rigid/small custom requires " + "integer-valued property/atom"); int minval = INT_MAX; int *value = atom->ivector[custom_index]; @@ -139,15 +144,17 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) - bodyid[i] = (tagint)(value[i] - minval + 1); - else bodyid[i] = 0; + bodyID[i] = (tagint)(value[i] - minval + 1); + else bodyID[i] = 0; } else if (strstr(arg[4],"v_") == arg[4]) { int ivariable = input->variable->find(arg[4]+2); if (ivariable < 0) - error->all(FLERR,"Variable name for fix rigid/small custom does not exist"); + error->all(FLERR,"Variable name for fix rigid/small custom " + "does not exist"); if (input->variable->atomstyle(ivariable) == 0) - error->all(FLERR,"Fix rigid/small custom variable is no atom-style variable"); + error->all(FLERR,"Fix rigid/small custom variable is not " + "atom-style variable"); double *value = new double[nlocal]; input->variable->compute_atom(ivariable,0,value,1,0); int minval = INT_MAX; @@ -158,8 +165,8 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) - bodyid[i] = (tagint)((tagint)value[i] - minval + 1); - else bodyid[0] = 0; + bodyID[i] = (tagint)((tagint)value[i] - minval + 1); + else bodyID[0] = 0; delete[] value; } else error->all(FLERR,"Unsupported fix rigid custom property"); } else error->all(FLERR,"Illegal fix rigid/small command"); @@ -167,10 +174,11 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : if (atom->map_style == 0) error->all(FLERR,"Fix rigid/small requires an atom map, see atom_modify"); - // maxmol = largest bodyid # + // maxmol = largest bodyID # + maxmol = -1; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) maxmol = MAX(maxmol,bodyid[i]); + if (mask[i] & groupbit) maxmol = MAX(maxmol,bodyID[i]); tagint itmp; MPI_Allreduce(&maxmol,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); @@ -400,8 +408,19 @@ FixRigidSmall::FixRigidSmall(LAMMPS *lmp, int narg, char **arg) : // sets bodytag for owned atoms // body attributes are computed later by setup_bodies() - create_bodies(bodyid); - if (customflag) delete [] bodyid; + double time1 = MPI_Wtime(); + + create_bodies(bodyID); + if (customflag) delete [] bodyID; + + double time2 = MPI_Wtime(); + + if (comm->me == 0) { + if (screen) + fprintf(screen," create bodies CPU = %g secs\n",time2-time1); + if (logfile) + fprintf(logfile," create bodies CPU = %g secs\n",time2-time1); + } // set nlocal_body and allocate bodies I own @@ -569,7 +588,8 @@ void FixRigidSmall::init() if (rflag && (modify->fmask[i] & POST_FORCE) && !modify->fix[i]->rigid_flag) { char str[128]; - snprintf(str,128,"Fix %s alters forces after fix rigid",modify->fix[i]->id); + snprintf(str,128,"Fix %s alters forces after fix rigid", + modify->fix[i]->id); error->warning(FLERR,str); } } @@ -633,6 +653,16 @@ void FixRigidSmall::setup(int vflag) { int i,n,ibody; + // error if maxextent > comm->cutghost + // NOTE: could just warn if an override flag set + // NOTE: this could fail for comm multi mode if user sets a wrong cutoff + // for atom types in rigid bodies - need a more careful test + // must check here, not in init, b/c neigh/comm values set after fix init + + double cutghost = MAX(neighbor->cutneighmax,comm->cutghostuser); + if (maxextent > cutghost) + error->all(FLERR,"Rigid body extent > ghost cutoff - use comm_modify cutoff"); + //check(1); // sum fcm, torque across all rigid bodies @@ -1514,175 +1544,72 @@ void FixRigidSmall::set_v() set bodytag for all owned atoms ------------------------------------------------------------------------- */ -void FixRigidSmall::create_bodies(tagint *bodyid) +void FixRigidSmall::create_bodies(tagint *bodyID) { - int i,m,n; - double unwrap[3]; + int i,m; - // error check on image flags of atoms in rigid bodies + // allocate buffer for input to rendezvous comm + // ncount = # of my atoms in bodies - imageint *image = atom->image; int *mask = atom->mask; int nlocal = atom->nlocal; - int *periodicity = domain->periodicity; - int xbox,ybox,zbox; - - int flag = 0; - for (i = 0; i < nlocal; i++) { - if (!(mask[i] & groupbit)) continue; - xbox = (image[i] & IMGMASK) - IMGMAX; - ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; - zbox = (image[i] >> IMG2BITS) - IMGMAX; - if ((xbox && !periodicity[0]) || (ybox && !periodicity[1]) || - (zbox && !periodicity[2])) flag = 1; - } - - int flagall; - MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) error->all(FLERR,"Fix rigid/small atom has non-zero image flag " - "in a non-periodic dimension"); - - // allocate buffer for passing messages around ring of procs - // percount = max number of values to put in buffer for each of ncount - int ncount = 0; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) ncount++; - int percount = 5; - double *buf; - memory->create(buf,ncount*percount,"rigid/small:buf"); + int *proclist; + memory->create(proclist,ncount,"rigid/small:proclist"); + InRvous *inbuf = (InRvous *) + memory->smalloc(ncount*sizeof(InRvous),"rigid/small:inbuf"); - // create map hash for storing unique body IDs of my atoms - // key = body ID - // value = index into per-body data structure - // n = # of entries in hash - - hash = new std::map(); - hash->clear(); - - // setup hash - // key = body ID - // value = index into N-length data structure - // n = count of unique bodies my atoms are part of - - n = 0; - for (i = 0; i < nlocal; i++) { - if (!(mask[i] & groupbit)) continue; - if (hash->find(bodyid[i]) == hash->end()) (*hash)[bodyid[i]] = n++; - } - - // bbox = bounding box of each rigid body my atoms are part of - - memory->create(bbox,n,6,"rigid/small:bbox"); - - for (i = 0; i < n; i++) { - bbox[i][0] = bbox[i][2] = bbox[i][4] = BIG; - bbox[i][1] = bbox[i][3] = bbox[i][5] = -BIG; - } - - // pack my atoms into buffer as body ID, unwrapped coords + // setup buf to pass to rendezvous comm + // one BodyMsg datum for each constituent atom + // datum = me, local index of atom, atomID, bodyID, unwrapped coords + // owning proc for each datum = random hash of bodyID double **x = atom->x; - - m = 0; - for (i = 0; i < nlocal; i++) { - if (!(mask[i] & groupbit)) continue; - domain->unmap(x[i],image[i],unwrap); - buf[m++] = bodyid[i]; - buf[m++] = unwrap[0]; - buf[m++] = unwrap[1]; - buf[m++] = unwrap[2]; - } - - // pass buffer around ring of procs - // func = update bbox with atom coords from every proc - // when done, have full bbox for every rigid body my atoms are part of - - comm->ring(m,sizeof(double),buf,1,ring_bbox,NULL,(void *)this); - - // check if any bbox is size 0.0, meaning rigid body is a single particle - - flag = 0; - for (i = 0; i < n; i++) - if (bbox[i][0] == bbox[i][1] && bbox[i][2] == bbox[i][3] && - bbox[i][4] == bbox[i][5]) flag = 1; - MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall) - error->all(FLERR,"One or more rigid bodies are a single particle"); - - // ctr = center pt of each rigid body my atoms are part of - - memory->create(ctr,n,6,"rigid/small:bbox"); - - for (i = 0; i < n; i++) { - ctr[i][0] = 0.5 * (bbox[i][0] + bbox[i][1]); - ctr[i][1] = 0.5 * (bbox[i][2] + bbox[i][3]); - ctr[i][2] = 0.5 * (bbox[i][4] + bbox[i][5]); - } - - // idclose = ID of atom in body closest to center pt (smaller ID if tied) - // rsqclose = distance squared from idclose to center pt - - memory->create(idclose,n,"rigid/small:idclose"); - memory->create(rsqclose,n,"rigid/small:rsqclose"); - - for (i = 0; i < n; i++) rsqclose[i] = BIG; - - // pack my atoms into buffer as body ID, atom ID, unwrapped coords - tagint *tag = atom->tag; + imageint *image = atom->image; m = 0; for (i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; - domain->unmap(x[i],image[i],unwrap); - buf[m++] = bodyid[i]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = unwrap[0]; - buf[m++] = unwrap[1]; - buf[m++] = unwrap[2]; + proclist[m] = hashlittle(&bodyID[i],sizeof(tagint),0) % nprocs; + inbuf[m].me = me; + inbuf[m].ilocal = i; + inbuf[m].atomID = tag[i]; + inbuf[m].bodyID = bodyID[i]; + domain->unmap(x[i],image[i],inbuf[m].x); + m++; } - // pass buffer around ring of procs - // func = update idclose,rsqclose with atom IDs from every proc - // when done, have idclose for every rigid body my atoms are part of + // perform rendezvous operation + // each proc owns random subset of bodies + // receives all atoms in those bodies + // func = compute bbox of each body, find atom closest to geometric center - comm->ring(m,sizeof(double),buf,2,ring_nearest,NULL,(void *)this); + char *buf; + int nreturn = comm->rendezvous(RVOUS,ncount,(char *) inbuf,sizeof(InRvous), + 0,proclist, + rendezvous_body,0,buf,sizeof(OutRvous), + (void *) this); + OutRvous *outbuf = (OutRvous *) buf; - // set bodytag of all owned atoms, based on idclose - // find max value of rsqclose across all procs + memory->destroy(proclist); + memory->sfree(inbuf); - double rsqmax = 0.0; - for (i = 0; i < nlocal; i++) { - bodytag[i] = 0; - if (!(mask[i] & groupbit)) continue; - m = hash->find(bodyid[i])->second; - bodytag[i] = idclose[m]; - rsqmax = MAX(rsqmax,rsqclose[m]); - } + // set bodytag of all owned atoms based on outbuf info for constituent atoms - // pack my atoms into buffer as bodytag of owning atom, unwrapped coords + for (i = 0; i < nlocal; i++) + if (!(mask[i] & groupbit)) bodytag[i] = 0; - m = 0; - for (i = 0; i < nlocal; i++) { - if (!(mask[i] & groupbit)) continue; - domain->unmap(x[i],image[i],unwrap); - buf[m++] = ubuf(bodytag[i]).d; - buf[m++] = unwrap[0]; - buf[m++] = unwrap[1]; - buf[m++] = unwrap[2]; - } + for (m = 0; m < nreturn; m++) + bodytag[outbuf[m].ilocal] = outbuf[m].atomID; - // pass buffer around ring of procs - // func = update rsqfar for atoms belonging to bodies I own - // when done, have rsqfar for all atoms in bodies I own + memory->sfree(outbuf); - rsqfar = 0.0; - comm->ring(m,sizeof(double),buf,3,ring_farthest,NULL,(void *)this); - - // find maxextent of rsqfar across all procs + // maxextent = max of rsqfar across all procs // if defined, include molecule->maxextent MPI_Allreduce(&rsqfar,&maxextent,1,MPI_DOUBLE,MPI_MAX,world); @@ -1691,125 +1618,156 @@ void FixRigidSmall::create_bodies(tagint *bodyid) for (int i = 0; i < nmol; i++) maxextent = MAX(maxextent,onemols[i]->maxextent); } +} + +/* ---------------------------------------------------------------------- + process rigid bodies assigned to me + buf = list of N BodyMsg datums +------------------------------------------------------------------------- */ + +int FixRigidSmall::rendezvous_body(int n, char *inbuf, + int &rflag, int *&proclist, char *&outbuf, + void *ptr) +{ + int i,m; + double delx,dely,delz,rsq; + int *iclose; + tagint *idclose; + double *x,*xown,*rsqclose; + double **bbox,**ctr; + + FixRigidSmall *frsptr = (FixRigidSmall *) ptr; + Memory *memory = frsptr->memory; + Error *error = frsptr->error; + MPI_Comm world = frsptr->world; + + // setup hash + // use STL map instead of atom->map + // b/c know nothing about body ID values specified by user + // ncount = number of bodies assigned to me + // key = body ID + // value = index into Ncount-length data structure + + InRvous *in = (InRvous *) inbuf; + std::map hash; + tagint id; + + int ncount = 0; + for (i = 0; i < n; i++) { + id = in[i].bodyID; + if (hash.find(id) == hash.end()) hash[id] = ncount++; + } + + // bbox = bounding box of each rigid body + + memory->create(bbox,ncount,6,"rigid/small:bbox"); + + for (m = 0; m < ncount; m++) { + bbox[m][0] = bbox[m][2] = bbox[m][4] = BIG; + bbox[m][1] = bbox[m][3] = bbox[m][5] = -BIG; + } + + for (i = 0; i < n; i++) { + m = hash.find(in[i].bodyID)->second; + x = in[i].x; + bbox[m][0] = MIN(bbox[m][0],x[0]); + bbox[m][1] = MAX(bbox[m][1],x[0]); + bbox[m][2] = MIN(bbox[m][2],x[1]); + bbox[m][3] = MAX(bbox[m][3],x[1]); + bbox[m][4] = MIN(bbox[m][4],x[2]); + bbox[m][5] = MAX(bbox[m][5],x[2]); + } + + // check if any bbox is size 0.0, meaning rigid body is a single particle + + int flag = 0; + for (m = 0; m < ncount; m++) + if (bbox[m][0] == bbox[m][1] && bbox[m][2] == bbox[m][3] && + bbox[m][4] == bbox[m][5]) flag = 1; + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); // sync here? + if (flagall) + error->all(FLERR,"One or more rigid bodies are a single particle"); + + // ctr = geometric center pt of each rigid body + + memory->create(ctr,ncount,3,"rigid/small:bbox"); + + for (m = 0; m < ncount; m++) { + ctr[m][0] = 0.5 * (bbox[m][0] + bbox[m][1]); + ctr[m][1] = 0.5 * (bbox[m][2] + bbox[m][3]); + ctr[m][2] = 0.5 * (bbox[m][4] + bbox[m][5]); + } + + // idclose = atomID closest to center point of each body + + memory->create(idclose,ncount,"rigid/small:idclose"); + memory->create(iclose,ncount,"rigid/small:iclose"); + memory->create(rsqclose,ncount,"rigid/small:rsqclose"); + for (m = 0; m < ncount; m++) rsqclose[m] = BIG; + + for (i = 0; i < n; i++) { + m = hash.find(in[i].bodyID)->second; + x = in[i].x; + delx = x[0] - ctr[m][0]; + dely = x[1] - ctr[m][1]; + delz = x[2] - ctr[m][2]; + rsq = delx*delx + dely*dely + delz*delz; + if (rsq <= rsqclose[m]) { + if (rsq == rsqclose[m] && in[i].atomID > idclose[m]) continue; + iclose[m] = i; + idclose[m] = in[i].atomID; + rsqclose[m] = rsq; + } + } + + // compute rsqfar for all bodies I own + // set rsqfar back in caller + + double rsqfar = 0.0; + + for (int i = 0; i < n; i++) { + m = hash.find(in[i].bodyID)->second; + xown = in[iclose[m]].x; + x = in[i].x; + delx = x[0] - xown[0]; + dely = x[1] - xown[1]; + delz = x[2] - xown[2]; + rsq = delx*delx + dely*dely + delz*delz; + rsqfar = MAX(rsqfar,rsq); + } + + frsptr->rsqfar = rsqfar; + + // pass list of OutRvous datums back to comm->rendezvous + + int nout = n; + memory->create(proclist,nout,"rigid/small:proclist"); + OutRvous *out = (OutRvous *) + memory->smalloc(nout*sizeof(OutRvous),"rigid/small:out"); + + for (int i = 0; i < nout; i++) { + proclist[i] = in[i].me; + out[i].ilocal = in[i].ilocal; + m = hash.find(in[i].bodyID)->second; + out[i].atomID = idclose[m]; + } + + outbuf = (char *) out; // clean up + // Comm::rendezvous will delete proclist and out (outbuf) - delete hash; - memory->destroy(buf); memory->destroy(bbox); memory->destroy(ctr); memory->destroy(idclose); + memory->destroy(iclose); memory->destroy(rsqclose); -} -/* ---------------------------------------------------------------------- - process rigid body atoms from another proc - update bounding box for rigid bodies my atoms are part of -------------------------------------------------------------------------- */ + // flag = 2: new outbuf -void FixRigidSmall::ring_bbox(int n, char *cbuf, void *ptr) -{ - FixRigidSmall *frsptr = (FixRigidSmall *) ptr; - std::map *hash = frsptr->hash; - double **bbox = frsptr->bbox; - - double *buf = (double *) cbuf; - int ndatums = n/4; - - int j,imol; - double *x; - - int m = 0; - for (int i = 0; i < ndatums; i++, m += 4) { - imol = static_cast (buf[m]); - if (hash->find(imol) != hash->end()) { - j = hash->find(imol)->second; - x = &buf[m+1]; - bbox[j][0] = MIN(bbox[j][0],x[0]); - bbox[j][1] = MAX(bbox[j][1],x[0]); - bbox[j][2] = MIN(bbox[j][2],x[1]); - bbox[j][3] = MAX(bbox[j][3],x[1]); - bbox[j][4] = MIN(bbox[j][4],x[2]); - bbox[j][5] = MAX(bbox[j][5],x[2]); - } - } -} - -/* ---------------------------------------------------------------------- - process rigid body atoms from another proc - update nearest atom to body center for rigid bodies my atoms are part of -------------------------------------------------------------------------- */ - -void FixRigidSmall::ring_nearest(int n, char *cbuf, void *ptr) -{ - FixRigidSmall *frsptr = (FixRigidSmall *) ptr; - std::map *hash = frsptr->hash; - double **ctr = frsptr->ctr; - tagint *idclose = frsptr->idclose; - double *rsqclose = frsptr->rsqclose; - - double *buf = (double *) cbuf; - int ndatums = n/5; - - int j,imol; - tagint tag; - double delx,dely,delz,rsq; - double *x; - - int m = 0; - for (int i = 0; i < ndatums; i++, m += 5) { - imol = static_cast (buf[m]); - if (hash->find(imol) != hash->end()) { - j = hash->find(imol)->second; - tag = (tagint) ubuf(buf[m+1]).i; - x = &buf[m+2]; - delx = x[0] - ctr[j][0]; - dely = x[1] - ctr[j][1]; - delz = x[2] - ctr[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq <= rsqclose[j]) { - if (rsq == rsqclose[j] && tag > idclose[j]) continue; - idclose[j] = tag; - rsqclose[j] = rsq; - } - } - } -} - -/* ---------------------------------------------------------------------- - process rigid body atoms from another proc - update rsqfar = distance from owning atom to other atom -------------------------------------------------------------------------- */ - -void FixRigidSmall::ring_farthest(int n, char *cbuf, void *ptr) -{ - FixRigidSmall *frsptr = (FixRigidSmall *) ptr; - double **x = frsptr->atom->x; - imageint *image = frsptr->atom->image; - int nlocal = frsptr->atom->nlocal; - - double *buf = (double *) cbuf; - int ndatums = n/4; - - int iowner; - tagint tag; - double delx,dely,delz,rsq; - double *xx; - double unwrap[3]; - - int m = 0; - for (int i = 0; i < ndatums; i++, m += 4) { - tag = (tagint) ubuf(buf[m]).i; - iowner = frsptr->atom->map(tag); - if (iowner < 0 || iowner >= nlocal) continue; - frsptr->domain->unmap(x[iowner],image[iowner],unwrap); - xx = &buf[m+1]; - delx = xx[0] - unwrap[0]; - dely = xx[1] - unwrap[1]; - delz = xx[2] - unwrap[2]; - rsq = delx*delx + dely*dely + delz*delz; - frsptr->rsqfar = MAX(frsptr->rsqfar,rsq); - } + rflag = 2; + return nout; } /* ---------------------------------------------------------------------- @@ -2472,9 +2430,9 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) int nlocal = atom->nlocal; - hash = new std::map(); + std::map hash; for (i = 0; i < nlocal; i++) - if (bodyown[i] >= 0) (*hash)[atom->molecule[i]] = bodyown[i]; + if (bodyown[i] >= 0) hash[atom->molecule[i]] = bodyown[i]; // open file and read header @@ -2533,11 +2491,11 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) id = ATOTAGINT(values[0]); if (id <= 0 || id > maxmol) error->all(FLERR,"Invalid rigid body ID in fix rigid/small file"); - if (hash->find(id) == hash->end()) { + if (hash.find(id) == hash.end()) { buf = next + 1; continue; } - m = (*hash)[id]; + m = hash[id]; inbody[m] = 1; if (which == 0) { @@ -2576,7 +2534,6 @@ void FixRigidSmall::readfile(int which, double **array, int *inbody) delete [] buffer; delete [] values; - delete hash; } /* ---------------------------------------------------------------------- diff --git a/src/RIGID/fix_rigid_small.h b/src/RIGID/fix_rigid_small.h index 3f6826f9bb..b5a3d5208d 100644 --- a/src/RIGID/fix_rigid_small.h +++ b/src/RIGID/fix_rigid_small.h @@ -22,9 +22,6 @@ FixStyle(rigid/small,FixRigidSmall) #include "fix.h" -// replace this later -#include - namespace LAMMPS_NS { class FixRigidSmall : public Fix { @@ -180,13 +177,21 @@ class FixRigidSmall : public Fix { // class data used by ring communication callbacks - std::map *hash; - double **bbox; - double **ctr; - tagint *idclose; - double *rsqclose; double rsqfar; + struct InRvous { + int me,ilocal; + tagint atomID,bodyID; + double x[3]; + }; + + struct OutRvous { + int ilocal; + tagint atomID; + }; + + // local methods + void image_shift(); void set_xv(); void set_v(); @@ -199,11 +204,9 @@ class FixRigidSmall : public Fix { void grow_body(); void reset_atom2body(); - // callback functions for ring communication + // callback function for rendezvous communication - static void ring_bbox(int, char *, void *); - static void ring_nearest(int, char *, void *); - static void ring_farthest(int, char *, void *); + static int rendezvous_body(int, char *, int &, int *&, char *&, void *); // debug diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index e0d1bf132b..1e8414d321 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -39,6 +39,8 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; +#define RVOUS 1 // 0 for irregular, 1 for all2all + #define BIG 1.0e20 #define MASSDELTA 0.1 @@ -219,8 +221,19 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : // identify all SHAKE clusters + double time1 = MPI_Wtime(); + find_clusters(); + double time2 = MPI_Wtime(); + + if (comm->me == 0) { + if (screen) + fprintf(screen," find clusters CPU = %g secs\n",time2-time1); + if (logfile) + fprintf(logfile," find clusters CPU = %g secs\n",time2-time1); + } + // initialize list of SHAKE clusters to constrain maxlist = 0; @@ -681,10 +694,9 @@ int FixShake::dof(int igroup) void FixShake::find_clusters() { int i,j,m,n,imol,iatom; - int flag,flag_all,nbuf,size; + int flag,flag_all; tagint tagprev; double massone; - tagint *buf; if (me == 0 && screen) { if (!rattle) fprintf(screen,"Finding SHAKE clusters ...\n"); @@ -707,13 +719,6 @@ void FixShake::find_clusters() int nlocal = atom->nlocal; int angles_allow = atom->avec->angles_allow; - // setup ring of procs - - int next = me + 1; - int prev = me -1; - if (next == nprocs) next = 0; - if (prev < 0) prev = nprocs - 1; - // ----------------------------------------------------- // allocate arrays for self (1d) and bond partners (2d) // max = max # of bond partners for owned atoms = 2nd dim of partner arrays @@ -755,6 +760,10 @@ void FixShake::find_clusters() memory->create(partner_shake,nlocal,max,"shake:partner_shake"); memory->create(partner_nshake,nlocal,max,"shake:partner_nshake"); + // setup atomIDs and procowner vectors in rendezvous decomposition + + atom_owners(); + // ----------------------------------------------------- // set npartner and partner_tag from special arrays // ----------------------------------------------------- @@ -778,86 +787,13 @@ void FixShake::find_clusters() } // ----------------------------------------------------- - // set partner_mask, partner_type, partner_massflag, partner_bondtype - // for bonded partners - // requires communication for off-proc partners + // set partner_mask, partner_type, partner_massflag, + // partner_bondtype for all my bonded partners + // requires rendezvous communication for off-proc partners // ----------------------------------------------------- - // fill in mask, type, massflag, bondtype if own bond partner - // info to store in buf for each off-proc bond = nper = 6 - // 2 atoms IDs in bond, space for mask, type, massflag, bondtype - // nbufmax = largest buffer needed to hold info from any proc - - int nper = 6; - - nbuf = 0; - for (i = 0; i < nlocal; i++) { - for (j = 0; j < npartner[i]; j++) { - partner_mask[i][j] = 0; - partner_type[i][j] = 0; - partner_massflag[i][j] = 0; - partner_bondtype[i][j] = 0; - - m = atom->map(partner_tag[i][j]); - if (m >= 0 && m < nlocal) { - partner_mask[i][j] = mask[m]; - partner_type[i][j] = type[m]; - if (nmass) { - if (rmass) massone = rmass[m]; - else massone = mass[type[m]]; - partner_massflag[i][j] = masscheck(massone); - } - n = bondtype_findset(i,tag[i],partner_tag[i][j],0); - if (n) partner_bondtype[i][j] = n; - else { - n = bondtype_findset(m,tag[i],partner_tag[i][j],0); - if (n) partner_bondtype[i][j] = n; - } - } else nbuf += nper; - } - } - - memory->create(buf,nbuf,"shake:buf"); - - // fill buffer with info - - size = 0; - for (i = 0; i < nlocal; i++) { - for (j = 0; j < npartner[i]; j++) { - m = atom->map(partner_tag[i][j]); - if (m < 0 || m >= nlocal) { - buf[size] = tag[i]; - buf[size+1] = partner_tag[i][j]; - buf[size+2] = 0; - buf[size+3] = 0; - buf[size+4] = 0; - n = bondtype_findset(i,tag[i],partner_tag[i][j],0); - if (n) buf[size+5] = n; - else buf[size+5] = 0; - size += nper; - } - } - } - - // cycle buffer around ring of procs back to self - - comm->ring(size,sizeof(tagint),buf,1,ring_bonds,buf,(void *)this); - - // store partner info returned to me - - m = 0; - while (m < size) { - i = atom->map(buf[m]); - for (j = 0; j < npartner[i]; j++) - if (buf[m+1] == partner_tag[i][j]) break; - partner_mask[i][j] = buf[m+2]; - partner_type[i][j] = buf[m+3]; - partner_massflag[i][j] = buf[m+4]; - partner_bondtype[i][j] = buf[m+5]; - m += nper; - } - - memory->destroy(buf); + partner_info(npartner,partner_tag,partner_mask,partner_type, + partner_massflag,partner_bondtype); // error check for unfilled partner info // if partner_type not set, is an error @@ -868,12 +804,13 @@ void FixShake::find_clusters() // else it's an error flag = 0; + int flag2 = 0; for (i = 0; i < nlocal; i++) for (j = 0; j < npartner[i]; j++) { - if (partner_type[i][j] == 0) flag = 1; + if (partner_type[i][j] == 0) flag++; if (!(mask[i] & groupbit)) continue; if (!(partner_mask[i][j] & groupbit)) continue; - if (partner_bondtype[i][j] == 0) flag = 1; + if (partner_bondtype[i][j] == 0) flag2++; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); @@ -931,55 +868,10 @@ void FixShake::find_clusters() // ----------------------------------------------------- // set partner_nshake for bonded partners - // requires communication for off-proc partners + // requires rendezvous communication for off-proc partners // ----------------------------------------------------- - // fill in partner_nshake if own bond partner - // info to store in buf for each off-proc bond = - // 2 atoms IDs in bond, space for nshake value - // nbufmax = largest buffer needed to hold info from any proc - - nbuf = 0; - for (i = 0; i < nlocal; i++) { - for (j = 0; j < npartner[i]; j++) { - m = atom->map(partner_tag[i][j]); - if (m >= 0 && m < nlocal) partner_nshake[i][j] = nshake[m]; - else nbuf += 3; - } - } - - memory->create(buf,nbuf,"shake:buf"); - - // fill buffer with info - - size = 0; - for (i = 0; i < nlocal; i++) { - for (j = 0; j < npartner[i]; j++) { - m = atom->map(partner_tag[i][j]); - if (m < 0 || m >= nlocal) { - buf[size] = tag[i]; - buf[size+1] = partner_tag[i][j]; - size += 3; - } - } - } - - // cycle buffer around ring of procs back to self - - comm->ring(size,sizeof(tagint),buf,2,ring_nshake,buf,(void *)this); - - // store partner info returned to me - - m = 0; - while (m < size) { - i = atom->map(buf[m]); - for (j = 0; j < npartner[i]; j++) - if (buf[m+1] == partner_tag[i][j]) break; - partner_nshake[i][j] = buf[m+2]; - m += 3; - } - - memory->destroy(buf); + nshake_info(npartner,partner_tag,partner_nshake); // ----------------------------------------------------- // error checks @@ -988,7 +880,7 @@ void FixShake::find_clusters() // ----------------------------------------------------- flag = 0; - for (i = 0; i < nlocal; i++) if (nshake[i] > 3) flag = 1; + for (i = 0; i < nlocal; i++) if (nshake[i] > 3) flag++; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) error->all(FLERR,"Shake cluster of more than 4 atoms"); @@ -996,7 +888,7 @@ void FixShake::find_clusters() for (i = 0; i < nlocal; i++) { if (nshake[i] <= 1) continue; for (j = 0; j < npartner[i]; j++) - if (partner_shake[i][j] && partner_nshake[i][j] > 1) flag = 1; + if (partner_shake[i][j] && partner_nshake[i][j] > 1) flag++; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) error->all(FLERR,"Shake clusters are connected"); @@ -1064,68 +956,18 @@ void FixShake::find_clusters() // ----------------------------------------------------- // set shake_flag,shake_atom,shake_type for non-central atoms - // requires communication for off-proc atoms + // requires rendezvous communication for off-proc atoms // ----------------------------------------------------- - // fill in shake arrays for each bond partner I own - // info to store in buf for each off-proc bond = - // all values from shake_flag, shake_atom, shake_type - // nbufmax = largest buffer needed to hold info from any proc - - nbuf = 0; - for (i = 0; i < nlocal; i++) { - if (shake_flag[i] == 0) continue; - for (j = 0; j < npartner[i]; j++) { - if (partner_shake[i][j] == 0) continue; - m = atom->map(partner_tag[i][j]); - if (m >= 0 && m < nlocal) { - shake_flag[m] = shake_flag[i]; - shake_atom[m][0] = shake_atom[i][0]; - shake_atom[m][1] = shake_atom[i][1]; - shake_atom[m][2] = shake_atom[i][2]; - shake_atom[m][3] = shake_atom[i][3]; - shake_type[m][0] = shake_type[i][0]; - shake_type[m][1] = shake_type[i][1]; - shake_type[m][2] = shake_type[i][2]; - } else nbuf += 9; - } - } - - memory->create(buf,nbuf,"shake:buf"); - - // fill buffer with info - - size = 0; - for (i = 0; i < nlocal; i++) { - if (shake_flag[i] == 0) continue; - for (j = 0; j < npartner[i]; j++) { - if (partner_shake[i][j] == 0) continue; - m = atom->map(partner_tag[i][j]); - if (m < 0 || m >= nlocal) { - buf[size] = partner_tag[i][j]; - buf[size+1] = shake_flag[i]; - buf[size+2] = shake_atom[i][0]; - buf[size+3] = shake_atom[i][1]; - buf[size+4] = shake_atom[i][2]; - buf[size+5] = shake_atom[i][3]; - buf[size+6] = shake_type[i][0]; - buf[size+7] = shake_type[i][1]; - buf[size+8] = shake_type[i][2]; - size += 9; - } - } - } - - // cycle buffer around ring of procs back to self - - comm->ring(size,sizeof(tagint),buf,3,ring_shake,NULL,(void *)this); - - memory->destroy(buf); + shake_info(npartner,partner_tag,partner_shake); // ----------------------------------------------------- // free local memory // ----------------------------------------------------- + memory->destroy(atomIDs); + memory->destroy(procowner); + memory->destroy(npartner); memory->destroy(nshake); memory->destroy(partner_tag); @@ -1199,98 +1041,548 @@ void FixShake::find_clusters() } /* ---------------------------------------------------------------------- - when receive buffer, scan bond partner IDs for atoms I own - if I own partner: - fill in mask and type and massflag - search for bond with 1st atom and fill in bondtype + setup atomIDs and procowner ------------------------------------------------------------------------- */ -void FixShake::ring_bonds(int ndatum, char *cbuf, void *ptr) +void FixShake::atom_owners() { - FixShake *fsptr = (FixShake *)ptr; - Atom *atom = fsptr->atom; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + int *proclist; + memory->create(proclist,nlocal,"shake:proclist"); + IDRvous *idbuf = (IDRvous *) + memory->smalloc((bigint) nlocal*sizeof(IDRvous),"shake:idbuf"); + + // setup input buf to rendezvous comm + // input datums = pairs of bonded atoms + // owning proc for each datum = random hash of atomID + // one datum for each owned atom: datum = owning proc, atomID + + for (int i = 0; i < nlocal; i++) { + proclist[i] = tag[i] % nprocs; + idbuf[i].me = me; + idbuf[i].atomID = tag[i]; + } + + // perform rendezvous operation + // each proc assigned every 1/Pth atom + + char *buf; + comm->rendezvous(RVOUS,nlocal,(char *) idbuf,sizeof(IDRvous), + 0,proclist, + rendezvous_ids,0,buf,0,(void *) this); + + memory->destroy(proclist); + memory->sfree(idbuf); +} + +/* ---------------------------------------------------------------------- + setup partner_mask, partner_type, partner_massflag, partner_bondtype +------------------------------------------------------------------------- */ + +void FixShake::partner_info(int *npartner, tagint **partner_tag, + int **partner_mask, int **partner_type, + int **partner_massflag, int **partner_bondtype) +{ + int i,j,m,n; + int nlocal = atom->nlocal; + + // nsend = # of my datums to send + // one datum for every off-processor partner + + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < npartner[i]; j++) { + m = atom->map(partner_tag[i][j]); + if (m < 0 || m >= nlocal) nsend++; + } + } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PartnerInfo *inbuf = (PartnerInfo *) + memory->smalloc((bigint) nsend*sizeof(PartnerInfo),"special:inbuf"); + + // set values in 4 partner arrays for all partner atoms I own + // also setup input buf to rendezvous comm + // input datums = pair of bonded atoms where I do not own partner + // owning proc for each datum = partner_tag % nprocs + // datum: atomID = partner_tag (off-proc), partnerID = tag (on-proc) + // 4 values for my owned atom + double *rmass = atom->rmass; double *mass = atom->mass; - int *mask = atom->mask; int *type = atom->type; - int nlocal = atom->nlocal; - int nmass = fsptr->nmass; + int *mask = atom->mask; + tagint *tag = atom->tag; - tagint *buf = (tagint *) cbuf; - int m,n; double massone; - for (int i = 0; i < ndatum; i += 6) { - m = atom->map(buf[i+1]); - if (m >= 0 && m < nlocal) { - buf[i+2] = mask[m]; - buf[i+3] = type[m]; - if (nmass) { - if (rmass) massone = rmass[m]; - else massone = mass[type[m]]; - buf[i+4] = fsptr->masscheck(massone); - } - if (buf[i+5] == 0) { - n = fsptr->bondtype_findset(m,buf[i],buf[i+1],0); - if (n) buf[i+5] = n; + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < npartner[i]; j++) { + partner_mask[i][j] = 0; + partner_type[i][j] = 0; + partner_massflag[i][j] = 0; + partner_bondtype[i][j] = 0; + + m = atom->map(partner_tag[i][j]); + + if (m >= 0 && m < nlocal) { + partner_mask[i][j] = mask[m]; + partner_type[i][j] = type[m]; + if (nmass) { + if (rmass) massone = rmass[m]; + else massone = mass[type[m]]; + partner_massflag[i][j] = masscheck(massone); + } + n = bondtype_findset(i,tag[i],partner_tag[i][j],0); + if (n) partner_bondtype[i][j] = n; + else { + n = bondtype_findset(m,tag[i],partner_tag[i][j],0); + if (n) partner_bondtype[i][j] = n; + } + + } else { + proclist[nsend] = partner_tag[i][j] % nprocs; + inbuf[nsend].atomID = partner_tag[i][j]; + inbuf[nsend].partnerID = tag[i]; + inbuf[nsend].mask = mask[i]; + inbuf[nsend].type = type[i]; + if (nmass) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + inbuf[nsend].massflag = masscheck(massone); + } else inbuf[nsend].massflag = 0; + + // my atom may own bond, in which case set partner_bondtype + // else receiver of this datum will own the bond and return the value + + n = bondtype_findset(i,tag[i],partner_tag[i][j],0); + if (n) { + partner_bondtype[i][j] = n; + inbuf[nsend].bondtype = n; + } else inbuf[nsend].bondtype = 0; + + nsend++; } } } -} -/* ---------------------------------------------------------------------- - when receive buffer, scan bond partner IDs for atoms I own - if I own partner, fill in nshake value -------------------------------------------------------------------------- */ + // perform rendezvous operation + // each proc owns random subset of atoms + // receives all data needed to populate un-owned partner 4 values -void FixShake::ring_nshake(int ndatum, char *cbuf, void *ptr) -{ - FixShake *fsptr = (FixShake *)ptr; - Atom *atom = fsptr->atom; - int nlocal = atom->nlocal; + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PartnerInfo), + 0,proclist, + rendezvous_partners_info, + 0,buf,sizeof(PartnerInfo), + (void *) this); + PartnerInfo *outbuf = (PartnerInfo *) buf; - int *nshake = fsptr->nshake; + memory->destroy(proclist); + memory->sfree(inbuf); - tagint *buf = (tagint *) cbuf; - int m; + // set partner 4 values for un-onwed partners based on output info + // outbuf.atomID = my owned atom, outbuf.partnerID = partner the info is for - for (int i = 0; i < ndatum; i += 3) { - m = atom->map(buf[i+1]); - if (m >= 0 && m < nlocal) buf[i+2] = nshake[m]; + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + for (j = 0; j < npartner[i]; j++) + if (partner_tag[i][j] == outbuf[m].partnerID) break; + partner_mask[i][j] = outbuf[m].mask; + partner_type[i][j] = outbuf[m].type; + partner_massflag[i][j] = outbuf[m].massflag; + + // only set partner_bondtype if my atom did not set it + // when setting up rendezvous + // if this proc set it, then sender of this datum set outbuf.bondtype = 0 + + if (partner_bondtype[i][j] == 0) + partner_bondtype[i][j] = outbuf[m].bondtype; } + + memory->sfree(outbuf); } /* ---------------------------------------------------------------------- - when receive buffer, scan bond partner IDs for atoms I own - if I own partner, fill in nshake value + setup partner_nshake ------------------------------------------------------------------------- */ -void FixShake::ring_shake(int ndatum, char *cbuf, void *ptr) +void FixShake::nshake_info(int *npartner, tagint **partner_tag, + int **partner_nshake) { - FixShake *fsptr = (FixShake *)ptr; - Atom *atom = fsptr->atom; + int i,j,m; int nlocal = atom->nlocal; - int *shake_flag = fsptr->shake_flag; - tagint **shake_atom = fsptr->shake_atom; - int **shake_type = fsptr->shake_type; + // nsend = # of my datums to send + // one datum for every off-processor partner - tagint *buf = (tagint *) cbuf; - int m; - - for (int i = 0; i < ndatum; i += 9) { - m = atom->map(buf[i]); - if (m >= 0 && m < nlocal) { - shake_flag[m] = buf[i+1]; - shake_atom[m][0] = buf[i+2]; - shake_atom[m][1] = buf[i+3]; - shake_atom[m][2] = buf[i+4]; - shake_atom[m][3] = buf[i+5]; - shake_type[m][0] = buf[i+6]; - shake_type[m][1] = buf[i+7]; - shake_type[m][2] = buf[i+8]; + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < npartner[i]; j++) { + m = atom->map(partner_tag[i][j]); + if (m < 0 || m >= nlocal) nsend++; } } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + NShakeInfo *inbuf = (NShakeInfo *) + memory->smalloc((bigint) nsend*sizeof(NShakeInfo),"special:inbuf"); + + // set partner_nshake for all partner atoms I own + // also setup input buf to rendezvous comm + // input datums = pair of bonded atoms where I do not own partner + // owning proc for each datum = partner_tag % nprocs + // datum: atomID = partner_tag (off-proc), partnerID = tag (on-proc) + // nshake value for my owned atom + + tagint *tag = atom->tag; + + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < npartner[i]; j++) { + partner_nshake[i][j] = 0; + m = atom->map(partner_tag[i][j]); + if (m >= 0 && m < nlocal) { + partner_nshake[i][j] = nshake[m]; + } else { + proclist[nsend] = partner_tag[i][j] % nprocs; + inbuf[nsend].atomID = partner_tag[i][j]; + inbuf[nsend].partnerID = tag[i]; + inbuf[nsend].nshake = nshake[i]; + nsend++; + } + } + } + + // perform rendezvous operation + // each proc owns random subset of atoms + // receives all data needed to populate un-owned partner nshake + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(NShakeInfo), + 0,proclist, + rendezvous_nshake,0,buf,sizeof(NShakeInfo), + (void *) this); + NShakeInfo *outbuf = (NShakeInfo *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // set partner nshake for un-onwed partners based on output info + // outbuf.atomID = my owned atom, outbuf.partnerID = partner the info is for + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + for (j = 0; j < npartner[i]; j++) + if (partner_tag[i][j] == outbuf[m].partnerID) break; + partner_nshake[i][j] = outbuf[m].nshake; + } + + memory->sfree(outbuf); +} + +/* ---------------------------------------------------------------------- + setup shake_flag, shake_atom, shake_type +------------------------------------------------------------------------- */ + +void FixShake::shake_info(int *npartner, tagint **partner_tag, + int **partner_shake) +{ + int i,j,m; + int nlocal = atom->nlocal; + + // nsend = # of my datums to send + // one datum for every off-processor partner + + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < npartner[i]; j++) { + m = atom->map(partner_tag[i][j]); + if (m < 0 || m >= nlocal) nsend++; + } + } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + ShakeInfo *inbuf = (ShakeInfo *) + memory->smalloc((bigint) nsend*sizeof(ShakeInfo),"special:inbuf"); + + // set 3 shake arrays for all partner atoms I own + // also setup input buf to rendezvous comm + // input datums = partner atom where I do not own partner + // owning proc for each datum = partner_tag % nprocs + // datum: atomID = partner_tag (off-proc) + // values in 3 shake arrays + + nsend = 0; + for (i = 0; i < nlocal; i++) { + if (shake_flag[i] == 0) continue; + for (j = 0; j < npartner[i]; j++) { + if (partner_shake[i][j] == 0) continue; + m = atom->map(partner_tag[i][j]); + + if (m >= 0 && m < nlocal) { + shake_flag[m] = shake_flag[i]; + shake_atom[m][0] = shake_atom[i][0]; + shake_atom[m][1] = shake_atom[i][1]; + shake_atom[m][2] = shake_atom[i][2]; + shake_atom[m][3] = shake_atom[i][3]; + shake_type[m][0] = shake_type[i][0]; + shake_type[m][1] = shake_type[i][1]; + shake_type[m][2] = shake_type[i][2]; + + } else { + proclist[nsend] = partner_tag[i][j] % nprocs; + inbuf[nsend].atomID = partner_tag[i][j]; + inbuf[nsend].shake_flag = shake_flag[i]; + inbuf[nsend].shake_atom[0] = shake_atom[i][0]; + inbuf[nsend].shake_atom[1] = shake_atom[i][1]; + inbuf[nsend].shake_atom[2] = shake_atom[i][2]; + inbuf[nsend].shake_atom[3] = shake_atom[i][3]; + inbuf[nsend].shake_type[0] = shake_type[i][0]; + inbuf[nsend].shake_type[1] = shake_type[i][1]; + inbuf[nsend].shake_type[2] = shake_type[i][2]; + nsend++; + } + } + } + + // perform rendezvous operation + // each proc owns random subset of atoms + // receives all data needed to populate un-owned shake info + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(ShakeInfo), + 0,proclist, + rendezvous_shake,0,buf,sizeof(ShakeInfo), + (void *) this); + ShakeInfo *outbuf = (ShakeInfo *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // set shake info for un-onwed partners based on output info + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + shake_flag[i] = outbuf[m].shake_flag; + shake_atom[i][0] = outbuf[m].shake_atom[0]; + shake_atom[i][1] = outbuf[m].shake_atom[1]; + shake_atom[i][2] = outbuf[m].shake_atom[2]; + shake_atom[i][3] = outbuf[m].shake_atom[3]; + shake_type[i][0] = outbuf[m].shake_type[0]; + shake_type[i][1] = outbuf[m].shake_type[1]; + shake_type[i][2] = outbuf[m].shake_type[2]; + } + + memory->sfree(outbuf); +} + +/* ---------------------------------------------------------------------- + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N IDRvous datums + no outbuf +------------------------------------------------------------------------- */ + +int FixShake::rendezvous_ids(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) +{ + FixShake *fsptr = (FixShake *) ptr; + Memory *memory = fsptr->memory; + + tagint *atomIDs; + int *procowner; + + memory->create(atomIDs,n,"special:atomIDs"); + memory->create(procowner,n,"special:procowner"); + + IDRvous *in = (IDRvous *) inbuf; + + for (int i = 0; i < n; i++) { + atomIDs[i] = in[i].atomID; + procowner[i] = in[i].me; + } + + // store rendezvous data in FixShake class + + fsptr->nrvous = n; + fsptr->atomIDs = atomIDs; + fsptr->procowner = procowner; + + // flag = 0: no second comm needed in rendezvous + + flag = 0; + return 0; +} + +/* ---------------------------------------------------------------------- + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N PairRvous datums + outbuf = same list of N PairRvous datums, routed to different procs +------------------------------------------------------------------------- */ + +int FixShake::rendezvous_partners_info(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) +{ + int i,m; + + FixShake *fsptr = (FixShake *) ptr; + Atom *atom = fsptr->atom; + Memory *memory = fsptr->memory; + + // clear atom map so it can be here as a hash table + // faster than an STL map for large atom counts + + atom->map_clear(); + + // hash atom IDs stored in rendezvous decomposition + + int nrvous = fsptr->nrvous; + tagint *atomIDs = fsptr->atomIDs; + + for (i = 0; i < nrvous; i++) + atom->map_one(atomIDs[i],i); + + // proclist = owner of atomID in caller decomposition + // outbuf = info about owned atomID = 4 values + + PartnerInfo *in = (PartnerInfo *) inbuf; + int *procowner = fsptr->procowner; + memory->create(proclist,n,"shake:proclist"); + + for (i = 0; i < n; i++) { + m = atom->map(in[i].atomID); + proclist[i] = procowner[m]; + } + + outbuf = inbuf; + + // re-create atom map + + atom->map_init(0); + atom->nghost = 0; + atom->map_set(); + + // flag = 1: outbuf = inbuf + + flag = 1; + return n; +} + +/* ---------------------------------------------------------------------- + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N NShakeInfo datums + outbuf = same list of N NShakeInfo datums, routed to different procs +------------------------------------------------------------------------- */ + +int FixShake::rendezvous_nshake(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) +{ + int i,m; + + FixShake *fsptr = (FixShake *) ptr; + Atom *atom = fsptr->atom; + Memory *memory = fsptr->memory; + + // clear atom map so it can be here as a hash table + // faster than an STL map for large atom counts + + atom->map_clear(); + + // hash atom IDs stored in rendezvous decomposition + + int nrvous = fsptr->nrvous; + tagint *atomIDs = fsptr->atomIDs; + + for (i = 0; i < nrvous; i++) + atom->map_one(atomIDs[i],i); + + // proclist = owner of atomID in caller decomposition + // outbuf = info about owned atomID + + NShakeInfo *in = (NShakeInfo *) inbuf; + int *procowner = fsptr->procowner; + memory->create(proclist,n,"shake:proclist"); + + for (i = 0; i < n; i++) { + m = atom->map(in[i].atomID); + proclist[i] = procowner[m]; + } + + outbuf = inbuf; + + // re-create atom map + + atom->map_init(0); + atom->nghost = 0; + atom->map_set(); + + // flag = 1: outbuf = inbuf + + flag = 1; + return n; +} +/* ---------------------------------------------------------------------- + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N PairRvous datums + outbuf = same list of N PairRvous datums, routed to different procs +------------------------------------------------------------------------- */ + +int FixShake::rendezvous_shake(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) +{ + int i,m; + + FixShake *fsptr = (FixShake *) ptr; + Atom *atom = fsptr->atom; + Memory *memory = fsptr->memory; + + // clear atom map so it can be here as a hash table + // faster than an STL map for large atom counts + + atom->map_clear(); + + // hash atom IDs stored in rendezvous decomposition + + int nrvous = fsptr->nrvous; + tagint *atomIDs = fsptr->atomIDs; + + for (i = 0; i < nrvous; i++) + atom->map_one(atomIDs[i],i); + + // proclist = owner of atomID in caller decomposition + // outbuf = info about owned atomID + + ShakeInfo *in = (ShakeInfo *) inbuf; + int *procowner = fsptr->procowner; + memory->create(proclist,n,"shake:proclist"); + + for (i = 0; i < n; i++) { + m = atom->map(in[i].atomID); + proclist[i] = procowner[m]; + } + + outbuf = inbuf; + + // re-create atom map + + atom->map_init(0); + atom->nghost = 0; + atom->map_set(); + + // flag = 1: outbuf = inbuf; + + flag = 1; + return n; } /* ---------------------------------------------------------------------- diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index d4e7b85ec4..ee9f520fea 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -120,6 +120,11 @@ class FixShake : public Fix { int nmol; void find_clusters(); + void atom_owners(); + void partner_info(int *, tagint **, int **, int **, int **, int **); + void nshake_info(int *, tagint **, int **); + void shake_info(int *, tagint **, int **); + int masscheck(double); void unconstrained_update(); void unconstrained_update_respa(int); @@ -131,12 +136,40 @@ class FixShake : public Fix { int bondtype_findset(int, tagint, tagint, int); int angletype_findset(int, tagint, tagint, int); - // static variable for ring communication callback to access class data - // callback functions for ring communication + // data used by rendezvous callback methods - static void ring_bonds(int, char *, void *); - static void ring_nshake(int, char *, void *); - static void ring_shake(int, char *, void *); + int nrvous; + tagint *atomIDs; + int *procowner; + + struct IDRvous { + int me; + tagint atomID; + }; + + struct PartnerInfo { + tagint atomID,partnerID; + int mask,type,massflag,bondtype; + }; + + struct NShakeInfo { + tagint atomID,partnerID; + int nshake; + }; + + struct ShakeInfo { + tagint atomID; + tagint shake_atom[4]; + int shake_flag; + int shake_type[3]; + }; + + // callback functions for rendezvous communication + + static int rendezvous_ids(int, char *, int &, int *&, char *&, void *); + static int rendezvous_partners_info(int, char *, int &, int *&, char *&, void *); + static int rendezvous_nshake(int, char *, int &, int *&, char *&, void *); + static int rendezvous_shake(int, char *, int &, int *&, char *&, void *); }; } diff --git a/src/SNAP/pair_snap.cpp b/src/SNAP/pair_snap.cpp index 81c5e9f6d1..8b547e6e73 100644 --- a/src/SNAP/pair_snap.cpp +++ b/src/SNAP/pair_snap.cpp @@ -176,8 +176,7 @@ void PairSNAP::compute_regular(int eflag, int vflag) int *jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -486,8 +485,7 @@ void PairSNAP::compute_optimized(int eflag, int vflag) #pragma omp master #endif { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); } #if defined(_OPENMP) diff --git a/src/SPIN/README b/src/SPIN/README index e371e39767..53e456bacb 100644 --- a/src/SPIN/README +++ b/src/SPIN/README @@ -9,6 +9,7 @@ atom in the system * implementing magnetic pair interactions and magnetic forces * thermostating and applying a transverse damping to the magnetic spins * computing and outputing magnetic quantities +* minimizing the energy or total torque of a magnetic system The different options provided by this package are explained in the LAMMPS documentation. diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index dc16190c98..0a881e1de6 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -84,7 +84,7 @@ void ComputeSpin::compute_vector() invoked_vector = update->ntimestep; - countsp = countsptot = 0.0; + countsp = countsptot = 0.0; mag[0] = mag[1] = mag[2] = mag[3] = 0.0; magtot[0] = magtot[1] = magtot[2] = magtot[3] = 0.0; magenergy = magenergytot = 0.0; @@ -96,7 +96,7 @@ void ComputeSpin::compute_vector() double **sp = atom->sp; double **fm = atom->fm; double tx,ty,tz; - + int nlocal = atom->nlocal; // compute total magnetization and magnetic energy @@ -105,16 +105,16 @@ void ComputeSpin::compute_vector() for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { if (atom->sp_flag) { - mag[0] += sp[i][0]; - mag[1] += sp[i][1]; - mag[2] += sp[i][2]; - magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]); + mag[0] += sp[i][0]; + mag[1] += sp[i][1]; + mag[2] += sp[i][2]; + magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]); tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1]; ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2]; tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0]; tempnum += tx*tx+ty*ty+tz*tz; - tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2]; - countsp++; + tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2]; + countsp++; } } else error->all(FLERR,"Compute compute/spin requires atom/spin style"); diff --git a/src/SPIN/fix_langevin_spin.cpp b/src/SPIN/fix_langevin_spin.cpp index 55b4d8dfec..ec6f719a77 100644 --- a/src/SPIN/fix_langevin_spin.cpp +++ b/src/SPIN/fix_langevin_spin.cpp @@ -131,8 +131,8 @@ void FixLangevinSpin::init() gil_factor = 1.0/(1.0+(alpha_t)*(alpha_t)); dts = update->dt; - double hbar = force->hplanck/MY_2PI; // eV/(rad.THz) - double kb = force->boltz; // eV/K + double hbar = force->hplanck/MY_2PI; // eV/(rad.THz) + double kb = force->boltz; // eV/K D = (MY_2PI*alpha_t*gil_factor*kb*temp); D /= (hbar*dts); sigma = sqrt(2.0*D); @@ -158,7 +158,7 @@ void FixLangevinSpin::add_tdamping(double spi[3], double fmi[3]) double cpx = fmi[1]*spi[2] - fmi[2]*spi[1]; double cpy = fmi[2]*spi[0] - fmi[0]*spi[2]; double cpz = fmi[0]*spi[1] - fmi[1]*spi[0]; - + // adding the transverse damping fmi[0] -= alpha_t*cpx; diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp index 7d96aca6d4..8d549ed64a 100644 --- a/src/SPIN/fix_nve_spin.cpp +++ b/src/SPIN/fix_nve_spin.cpp @@ -183,7 +183,7 @@ void FixNVESpin::init() npairs = pair->instance_total; for (int i = 0; ipair_match("spin",0,i)) { - npairspin ++; + npairspin ++; } } } @@ -203,8 +203,8 @@ void FixNVESpin::init() } else if (npairspin > 1) { for (int i = 0; ipair_match("spin",0,i)) { - spin_pairs[count] = (PairSpin *) force->pair_match("spin",0,i); - count++; + spin_pairs[count] = (PairSpin *) force->pair_match("spin",0,i); + count++; } } } @@ -264,8 +264,8 @@ void FixNVESpin::init() void FixNVESpin::initial_integrate(int /*vflag*/) { double dtfm; - - double **x = atom->x; + + double **x = atom->x; double **v = atom->v; double **f = atom->f; double *rmass = atom->rmass; @@ -291,32 +291,32 @@ void FixNVESpin::initial_integrate(int /*vflag*/) // update half s for all atoms - if (sector_flag) { // sectoring seq. update - for (int j = 0; j < nsectors; j++) { // advance quarter s for nlocal + if (sector_flag) { // sectoring seq. update + for (int j = 0; j < nsectors; j++) { // advance quarter s for nlocal comm->forward_comm(); int i = stack_foot[j]; while (i >= 0) { ComputeInteractionsSpin(i); - AdvanceSingleSpin(i); - i = forward_stacks[i]; + AdvanceSingleSpin(i); + i = forward_stacks[i]; } } - for (int j = nsectors-1; j >= 0; j--) { // advance quarter s for nlocal + for (int j = nsectors-1; j >= 0; j--) { // advance quarter s for nlocal comm->forward_comm(); int i = stack_head[j]; while (i >= 0) { ComputeInteractionsSpin(i); - AdvanceSingleSpin(i); - i = backward_stacks[i]; + AdvanceSingleSpin(i); + i = backward_stacks[i]; } } - } else if (sector_flag == 0) { // serial seq. update - comm->forward_comm(); // comm. positions of ghost atoms - for (int i = 0; i < nlocal; i++){ // advance quarter s for nlocal + } else if (sector_flag == 0) { // serial seq. update + comm->forward_comm(); // comm. positions of ghost atoms + for (int i = 0; i < nlocal; i++){ // advance quarter s for nlocal ComputeInteractionsSpin(i); AdvanceSingleSpin(i); } - for (int i = nlocal-1; i >= 0; i--){ // advance quarter s for nlocal + for (int i = nlocal-1; i >= 0; i--){ // advance quarter s for nlocal ComputeInteractionsSpin(i); AdvanceSingleSpin(i); } @@ -336,32 +336,32 @@ void FixNVESpin::initial_integrate(int /*vflag*/) // update half s for all particles - if (sector_flag) { // sectoring seq. update - for (int j = 0; j < nsectors; j++) { // advance quarter s for nlocal + if (sector_flag) { // sectoring seq. update + for (int j = 0; j < nsectors; j++) { // advance quarter s for nlocal comm->forward_comm(); int i = stack_foot[j]; while (i >= 0) { ComputeInteractionsSpin(i); - AdvanceSingleSpin(i); - i = forward_stacks[i]; + AdvanceSingleSpin(i); + i = forward_stacks[i]; } } - for (int j = nsectors-1; j >= 0; j--) { // advance quarter s for nlocal + for (int j = nsectors-1; j >= 0; j--) { // advance quarter s for nlocal comm->forward_comm(); int i = stack_head[j]; while (i >= 0) { ComputeInteractionsSpin(i); - AdvanceSingleSpin(i); - i = backward_stacks[i]; + AdvanceSingleSpin(i); + i = backward_stacks[i]; } } - } else if (sector_flag == 0) { // serial seq. update - comm->forward_comm(); // comm. positions of ghost atoms - for (int i = 0; i < nlocal; i++){ // advance quarter s for nlocal-1 + } else if (sector_flag == 0) { // serial seq. update + comm->forward_comm(); // comm. positions of ghost atoms + for (int i = 0; i < nlocal; i++){ // advance quarter s for nlocal-1 ComputeInteractionsSpin(i); AdvanceSingleSpin(i); } - for (int i = nlocal-1; i >= 0; i--){ // advance quarter s for nlocal-1 + for (int i = nlocal-1; i >= 0; i--){ // advance quarter s for nlocal-1 ComputeInteractionsSpin(i); AdvanceSingleSpin(i); } @@ -384,10 +384,10 @@ void FixNVESpin::setup_pre_neighbor() void FixNVESpin::pre_neighbor() { - double **x = atom->x; + double **x = atom->x; int nlocal = atom->nlocal; - if (nlocal_max < nlocal) { // grow linked lists if necessary + if (nlocal_max < nlocal) { // grow linked lists if necessary nlocal_max = nlocal; backward_stacks = memory->grow(backward_stacks,nlocal_max,"NVE/spin:backward_stacks"); forward_stacks = memory->grow(forward_stacks,nlocal_max,"NVE/spin:forward_stacks"); @@ -399,7 +399,7 @@ void FixNVESpin::pre_neighbor() } int nseci; - for (int j = 0; j < nsectors; j++) { // stacking backward order + for (int j = 0; j < nsectors; j++) { // stacking backward order for (int i = 0; i < nlocal; i++) { nseci = coords2sector(x[i]); if (j != nseci) continue; @@ -407,7 +407,7 @@ void FixNVESpin::pre_neighbor() stack_head[j] = i; } } - for (int j = nsectors-1; j >= 0; j--) { // stacking forward order + for (int j = nsectors-1; j >= 0; j--) { // stacking forward order for (int i = nlocal-1; i >= 0; i--) { nseci = coords2sector(x[i]); if (j != nseci) continue; @@ -453,11 +453,11 @@ void FixNVESpin::ComputeInteractionsSpin(int i) // update langevin damping and random force - if (maglangevin_flag) { // mag. langevin - if (tdamp_flag) { // transverse damping + if (maglangevin_flag) { // mag. langevin + if (tdamp_flag) { // transverse damping locklangevinspin->add_tdamping(spi,fmi); } - if (temp_flag) { // spin temperature + if (temp_flag) { // spin temperature locklangevinspin->add_temperature(fmi); } } @@ -567,7 +567,7 @@ void FixNVESpin::AdvanceSingleSpin(int i) g[0] = g[1] = g[2] = 0.0; fm2 = (fm[i][0]*fm[i][0])+(fm[i][1]*fm[i][1])+(fm[i][2]*fm[i][2]); energy = (sp[i][0]*fm[i][0])+(sp[i][1]*fm[i][1])+(sp[i][2]*fm[i][2]); - dts2 = dts*dts; + dts2 = dts*dts; cp[0] = fm[i][1]*sp[i][2]-fm[i][2]*sp[i][1]; cp[1] = fm[i][2]*sp[i][0]-fm[i][0]*sp[i][2]; @@ -576,18 +576,18 @@ void FixNVESpin::AdvanceSingleSpin(int i) g[0] = sp[i][0]+cp[0]*dts; g[1] = sp[i][1]+cp[1]*dts; g[2] = sp[i][2]+cp[2]*dts; - + g[0] += (fm[i][0]*energy-0.5*sp[i][0]*fm2)*0.5*dts2; g[1] += (fm[i][1]*energy-0.5*sp[i][1]*fm2)*0.5*dts2; g[2] += (fm[i][2]*energy-0.5*sp[i][2]*fm2)*0.5*dts2; - + g[0] /= (1+0.25*fm2*dts2); g[1] /= (1+0.25*fm2*dts2); g[2] /= (1+0.25*fm2*dts2); - + sp[i][0] = g[0]; sp[i][1] = g[1]; - sp[i][2] = g[2]; + sp[i][2] = g[2]; // renormalization (check if necessary) @@ -616,9 +616,9 @@ void FixNVESpin::AdvanceSingleSpin(int i) /* ---------------------------------------------------------------------- */ void FixNVESpin::final_integrate() -{ +{ double dtfm; - + double **v = atom->v; double **f = atom->f; double *rmass = atom->rmass; diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index d3edb3ae8a..9ee691c227 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -115,6 +115,7 @@ int FixPrecessionSpin::setmask() { int mask = 0; mask |= POST_FORCE; + mask |= MIN_POST_FORCE; mask |= THERMO_ENERGY; mask |= POST_FORCE_RESPA; return mask; @@ -169,8 +170,16 @@ void FixPrecessionSpin::setup(int vflag) /* ---------------------------------------------------------------------- */ -void FixPrecessionSpin::post_force(int /*vflag*/) +void FixPrecessionSpin::min_setup(int vflag) { + post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixPrecessionSpin::post_force(int /* vflag */) +{ + // update mag field with time (potential improvement) if (varflag != CONSTANT) { @@ -200,7 +209,7 @@ void FixPrecessionSpin::post_force(int /*vflag*/) if (aniso_flag) { // compute magnetic anisotropy compute_anisotropy(spi,fmi); - emag -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + emag -= 0.5*(spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); } fm[i][0] += fmi[0]; @@ -228,9 +237,9 @@ void FixPrecessionSpin::compute_single_precession(int i, double spi[3], double f void FixPrecessionSpin::compute_zeeman(int i, double fmi[3]) { double **sp = atom->sp; - fmi[0] -= sp[i][3]*hx; - fmi[1] -= sp[i][3]*hy; - fmi[2] -= sp[i][3]*hz; + fmi[0] += sp[i][3]*hx; + fmi[1] += sp[i][3]*hy; + fmi[2] += sp[i][3]*hz; } /* ---------------------------------------------------------------------- */ @@ -280,3 +289,10 @@ double FixPrecessionSpin::compute_scalar() } return emag_all; } + +/* ---------------------------------------------------------------------- */ + +void FixPrecessionSpin::min_post_force(int vflag) +{ + post_force(vflag); +} diff --git a/src/SPIN/fix_precession_spin.h b/src/SPIN/fix_precession_spin.h index 53ae4ba124..1db4d32ae9 100644 --- a/src/SPIN/fix_precession_spin.h +++ b/src/SPIN/fix_precession_spin.h @@ -33,8 +33,10 @@ class FixPrecessionSpin : public Fix { int setmask(); void init(); void setup(int); - virtual void post_force(int); - virtual void post_force_respa(int, int, int); + void min_setup(int); + void post_force(int); + void post_force_respa(int, int, int); + void min_post_force(int); double compute_scalar(); int zeeman_flag, aniso_flag; diff --git a/src/SPIN/min_spin.cpp b/src/SPIN/min_spin.cpp new file mode 100644 index 0000000000..2bddc110e7 --- /dev/null +++ b/src/SPIN/min_spin.cpp @@ -0,0 +1,333 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------ + Contributing authors: Julien Tranchida (SNL) + + Please cite the related publication: +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "min_spin.h" +#include "universe.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "output.h" +#include "timer.h" +#include "error.h" +#include "modify.h" +#include "math_special.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +// EPS_ENERGY = minimum normalization for energy tolerance + +#define EPS_ENERGY 1.0e-8 + +#define DELAYSTEP 5 + +/* ---------------------------------------------------------------------- */ + +MinSpin::MinSpin(LAMMPS *lmp) : Min(lmp) {} + +/* ---------------------------------------------------------------------- */ + +void MinSpin::init() +{ + alpha_damp = 1.0; + discrete_factor = 10.0; + + Min::init(); + + dts = dt = update->dt; + last_negative = update->ntimestep; +} + +/* ---------------------------------------------------------------------- */ + +void MinSpin::setup_style() +{ + double **v = atom->v; + int nlocal = atom->nlocal; + + // check if the atom/spin style is defined + + if (!atom->sp_flag) + error->all(FLERR,"min/spin requires atom/spin style"); + + for (int i = 0; i < nlocal; i++) + v[i][0] = v[i][1] = v[i][2] = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +int MinSpin::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"alpha_damp") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + alpha_damp = force->numeric(FLERR,arg[1]); + return 2; + } + if (strcmp(arg[0],"discrete_factor") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + discrete_factor = force->numeric(FLERR,arg[1]); + return 2; + } + return 0; +} + +/* ---------------------------------------------------------------------- + set current vector lengths and pointers + called after atoms have migrated +------------------------------------------------------------------------- */ + +void MinSpin::reset_vectors() +{ + // atomic dof + + // size sp is 4N vector + nvec = 4 * atom->nlocal; + if (nvec) spvec = atom->sp[0]; + + nvec = 3 * atom->nlocal; + if (nvec) fmvec = atom->fm[0]; + + if (nvec) xvec = atom->x[0]; + if (nvec) fvec = atom->f[0]; +} + +/* ---------------------------------------------------------------------- + minimization via damped spin dynamics +------------------------------------------------------------------------- */ + +int MinSpin::iterate(int maxiter) +{ + bigint ntimestep; + double fmdotfm; + int flag,flagall; + + for (int iter = 0; iter < maxiter; iter++) { + + if (timer->check_timeout(niter)) + return TIMEOUT; + + ntimestep = ++update->ntimestep; + niter++; + + // optimize timestep accross processes / replicas + // need a force calculation for timestep optimization + + energy_force(0); + dts = evaluate_dt(); + + // apply damped precessional dynamics to the spins + + advance_spins(dts); + + eprevious = ecurrent; + ecurrent = energy_force(0); + neval++; + + //// energy tolerance criterion + //// only check after DELAYSTEP elapsed since velocties reset to 0 + //// sync across replicas if running multi-replica minimization + + if (update->etol > 0.0 && ntimestep-last_negative > DELAYSTEP) { + if (update->multireplica == 0) { + if (fabs(ecurrent-eprevious) < + update->etol * 0.5*(fabs(ecurrent) + fabs(eprevious) + EPS_ENERGY)) + return ETOL; + } else { + if (fabs(ecurrent-eprevious) < + update->etol * 0.5*(fabs(ecurrent) + fabs(eprevious) + EPS_ENERGY)) + flag = 0; + else flag = 1; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,universe->uworld); + if (flagall == 0) return ETOL; + } + } + + // magnetic torque tolerance criterion + // sync across replicas if running multi-replica minimization + + if (update->ftol > 0.0) { + fmdotfm = fmnorm_sqr(); + if (update->multireplica == 0) { + if (fmdotfm < update->ftol*update->ftol) return FTOL; + } else { + if (fmdotfm < update->ftol*update->ftol) flag = 0; + else flag = 1; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,universe->uworld); + if (flagall == 0) return FTOL; + } + } + + // output for thermo, dump, restart files + + if (output->next == ntimestep) { + timer->stamp(); + output->write(ntimestep); + timer->stamp(Timer::OUTPUT); + } + } + + return MAXITER; +} + +/* ---------------------------------------------------------------------- + evaluate max timestep +---------------------------------------------------------------------- */ + +double MinSpin::evaluate_dt() +{ + double dtmax; + double fmsq; + double fmaxsqone,fmaxsqloc,fmaxsqall; + int nlocal = atom->nlocal; + double **fm = atom->fm; + + // finding max fm on this proc. + + fmsq = fmaxsqone = fmaxsqloc = fmaxsqall = 0.0; + for (int i = 0; i < nlocal; i++) { + fmsq = fm[i][0]*fm[i][0]+fm[i][1]*fm[i][1]+fm[i][2]*fm[i][2]; + fmaxsqone = MAX(fmaxsqone,fmsq); + } + + // finding max fm on this replica + + fmaxsqloc = fmaxsqone; + MPI_Allreduce(&fmaxsqone,&fmaxsqloc,1,MPI_DOUBLE,MPI_MAX,world); + + // finding max fm over all replicas, if necessary + // this communicator would be invalid for multiprocess replicas + + fmaxsqall = fmaxsqloc; + if (update->multireplica == 1) { + fmaxsqall = fmaxsqloc; + MPI_Allreduce(&fmaxsqloc,&fmaxsqall,1,MPI_DOUBLE,MPI_MAX,universe->uworld); + } + + if (fmaxsqall == 0.0) + error->all(FLERR,"Incorrect fmaxsqall calculation"); + + // define max timestep by dividing by the + // inverse of max frequency by discrete_factor + + dtmax = MY_2PI/(discrete_factor*sqrt(fmaxsqall)); + + return dtmax; +} + +/* ---------------------------------------------------------------------- + geometric damped advance of spins +---------------------------------------------------------------------- */ + +void MinSpin::advance_spins(double dts) +{ + int nlocal = atom->nlocal; + double **sp = atom->sp; + double **fm = atom->fm; + double tdampx,tdampy,tdampz; + double msq,scale,fm2,energy,dts2; + double cp[3],g[3]; + + dts2 = dts*dts; + + // loop on all spins on proc. + + for (int i = 0; i < nlocal; i++) { + + // calc. damping torque + + tdampx = -alpha_damp*(fm[i][1]*sp[i][2] - fm[i][2]*sp[i][1]); + tdampy = -alpha_damp*(fm[i][2]*sp[i][0] - fm[i][0]*sp[i][2]); + tdampz = -alpha_damp*(fm[i][0]*sp[i][1] - fm[i][1]*sp[i][0]); + + // apply advance algorithm (geometric, norm preserving) + + fm2 = (tdampx*tdampx+tdampy*tdampy+tdampz*tdampz); + energy = (sp[i][0]*tdampx)+(sp[i][1]*tdampy)+(sp[i][2]*tdampz); + + cp[0] = tdampy*sp[i][2]-tdampz*sp[i][1]; + cp[1] = tdampz*sp[i][0]-tdampx*sp[i][2]; + cp[2] = tdampx*sp[i][1]-tdampy*sp[i][0]; + + g[0] = sp[i][0]+cp[0]*dts; + g[1] = sp[i][1]+cp[1]*dts; + g[2] = sp[i][2]+cp[2]*dts; + + g[0] += (tdampx*energy-0.5*sp[i][0]*fm2)*0.5*dts2; + g[1] += (tdampy*energy-0.5*sp[i][1]*fm2)*0.5*dts2; + g[2] += (tdampz*energy-0.5*sp[i][2]*fm2)*0.5*dts2; + + g[0] /= (1+0.25*fm2*dts2); + g[1] /= (1+0.25*fm2*dts2); + g[2] /= (1+0.25*fm2*dts2); + + sp[i][0] = g[0]; + sp[i][1] = g[1]; + sp[i][2] = g[2]; + + // renormalization (check if necessary) + + msq = g[0]*g[0] + g[1]*g[1] + g[2]*g[2]; + scale = 1.0/sqrt(msq); + sp[i][0] *= scale; + sp[i][1] *= scale; + sp[i][2] *= scale; + + // no comm. to atoms with same tag + // because no need for simplecticity + } +} + +/* ---------------------------------------------------------------------- + compute and return ||mag. torque||_2^2 +------------------------------------------------------------------------- */ + +double MinSpin::fmnorm_sqr() +{ + int nlocal = atom->nlocal; + double tx,ty,tz; + double **sp = atom->sp; + double **fm = atom->fm; + + // calc. magnetic torques + + double local_norm2_sqr = 0.0; + for (int i = 0; i < nlocal; i++) { + tx = (fm[i][1]*sp[i][2] - fm[i][2]*sp[i][1]); + ty = (fm[i][2]*sp[i][0] - fm[i][0]*sp[i][2]); + tz = (fm[i][0]*sp[i][1] - fm[i][1]*sp[i][0]); + + local_norm2_sqr += tx*tx + ty*ty + tz*tz; + } + + // no extra atom calc. for spins + + if (nextra_atom) + error->all(FLERR,"extra atom option not available yet"); + + double norm2_sqr = 0.0; + MPI_Allreduce(&local_norm2_sqr,&norm2_sqr,1,MPI_DOUBLE,MPI_SUM,world); + + return norm2_sqr; +} + diff --git a/src/SPIN/min_spin.h b/src/SPIN/min_spin.h new file mode 100644 index 0000000000..224d205000 --- /dev/null +++ b/src/SPIN/min_spin.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef MINIMIZE_CLASS + +MinimizeStyle(spin,MinSpin) + +#else + +#ifndef LMP_MIN_SPIN_H +#define LMP_MIN_SPIN_H + +#include "min.h" + +namespace LAMMPS_NS { + +class MinSpin : public Min { + public: + MinSpin(class LAMMPS *); + ~MinSpin() {} + void init(); + void setup_style(); + int modify_param(int, char **); + void reset_vectors(); + int iterate(int); + double evaluate_dt(); + void advance_spins(double); + double fmnorm_sqr(); + + private: + + // global and spin timesteps + + double dt; + double dts; + + double alpha_damp; // damping for spin minimization + double discrete_factor; // factor for spin timestep evaluation + + double *spvec; // variables for atomic dof, as 1d vector + double *fmvec; // variables for atomic dof, as 1d vector + + bigint last_negative; +}; + +} + +#endif +#endif diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 8496e40f99..d0506e972d 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -173,8 +173,8 @@ void PairSpinDmi::init_style() if (strcmp(modify->fix[ifix]->style,"nve/spin") == 0) break; ifix++; } - if (ifix == modify->nfix) - error->all(FLERR,"pair/spin style requires nve/spin"); + if ((ifix == modify->nfix) && (comm->me == 0)) + error->warning(FLERR,"Using pair/spin style without nve/spin"); // get the lattice_flag from nve/spin @@ -233,13 +233,12 @@ void PairSpinDmi::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; double **fm = atom->fm; - double **sp = atom->sp; + double **sp = atom->sp; int *type = atom->type; int nlocal = atom->nlocal; int newton_pair = force->newton_pair; @@ -296,32 +295,32 @@ void PairSpinDmi::compute(int eflag, int vflag) // compute dmi interaction if (rsq <= local_cut2) { - compute_dmi(i,j,eij,fmi,spj); - if (lattice_flag) { - compute_dmi_mech(i,j,rsq,eij,fi,spi,spj); - } + compute_dmi(i,j,eij,fmi,spj); + if (lattice_flag) { + compute_dmi_mech(i,j,rsq,eij,fi,spi,spj); + } } - f[i][0] += fi[0]; - f[i][1] += fi[1]; + f[i][0] += fi[0]; + f[i][1] += fi[1]; f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; f[j][2] -= fi[2]; } if (eflag) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= hbar; + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= hbar; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } } @@ -343,7 +342,7 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3]) double delx,dely,delz; double spj[3]; - int i,j,jnum,itype,jtype,ntypes; + int j,jnum,itype,jtype,ntypes; int k,locflag; int *jlist,*numneigh,**firstneigh; @@ -351,7 +350,7 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3]) numneigh = list->numneigh; firstneigh = list->firstneigh; - + // check if interaction applies to type of ii itype = type[ii]; @@ -361,20 +360,20 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3]) while (k <= ntypes) { if (k <= itype) { if (setflag[k][itype] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else if (k > itype) { if (setflag[itype][k] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else error->all(FLERR,"Wrong type number"); } - // if interaction applies to type ii, + // if interaction applies to type ii, // locflag = 1 and compute pair interaction //i = ilist[ii]; @@ -423,7 +422,7 @@ void PairSpinDmi::compute_dmi(int i, int j, double eij[3], double fmi[3], double { int *type = atom->type; int itype, jtype; - double dmix, dmiy, dmiz; + double dmix, dmiy, dmiz; itype = type[i]; jtype = type[j]; @@ -445,7 +444,7 @@ void PairSpinDmi::compute_dmi_mech(int i, int j, double rsq, double /*eij*/[3], { int *type = atom->type; int itype, jtype; - double dmix,dmiy,dmiz; + double dmix,dmiy,dmiz; itype = type[i]; jtype = type[j]; double csx,csy,csz,cdmx,cdmy,cdmz,irij; @@ -510,7 +509,7 @@ void PairSpinDmi::write_restart(FILE *fp) for (j = i; j <= atom->ntypes; j++) { fwrite(&setflag[i][j],sizeof(int),1,fp); if (setflag[i][j]) { - fwrite(&DM[i][j],sizeof(double),1,fp); + fwrite(&DM[i][j],sizeof(double),1,fp); fwrite(&v_dmx[i][j],sizeof(double),1,fp); fwrite(&v_dmy[i][j],sizeof(double),1,fp); fwrite(&v_dmz[i][j],sizeof(double),1,fp); diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index b2955aafb2..cb3242c711 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -160,8 +160,8 @@ void PairSpinExchange::init_style() if (strcmp(modify->fix[ifix]->style,"nve/spin") == 0) break; ifix++; } - if (ifix == modify->nfix) - error->all(FLERR,"pair/spin style requires nve/spin"); + if ((ifix == modify->nfix) && (comm->me == 0)) + error->warning(FLERR,"Using pair/spin style without nve/spin"); // get the lattice_flag from nve/spin @@ -218,13 +218,12 @@ void PairSpinExchange::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; double **fm = atom->fm; - double **sp = atom->sp; + double **sp = atom->sp; int *type = atom->type; int nlocal = atom->nlocal; int newton_pair = force->newton_pair; @@ -279,32 +278,32 @@ void PairSpinExchange::compute(int eflag, int vflag) // compute exchange interaction if (rsq <= local_cut2) { - compute_exchange(i,j,rsq,fmi,spj); + compute_exchange(i,j,rsq,fmi,spj); if (lattice_flag) { - compute_exchange_mech(i,j,rsq,eij,fi,spi,spj); - } + compute_exchange_mech(i,j,rsq,eij,fi,spi,spj); + } } - f[i][0] += fi[0]; - f[i][1] += fi[1]; + f[i][0] += fi[0]; + f[i][1] += fi[1]; f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; f[j][2] -= fi[2]; } if (eflag) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= hbar; + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= hbar; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } } @@ -326,7 +325,7 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3]) double delx,dely,delz; double spj[3]; - int i,j,jnum,itype,jtype,ntypes; + int j,jnum,itype,jtype,ntypes; int k,locflag; int *jlist,*numneigh,**firstneigh; @@ -344,24 +343,24 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3]) while (k <= ntypes) { if (k <= itype) { if (setflag[k][itype] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else if (k > itype) { if (setflag[itype][k] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else error->all(FLERR,"Wrong type number"); } - // if interaction applies to type ii, + // if interaction applies to type ii, // locflag = 1 and compute pair interaction if (locflag == 1) { - + xi[0] = x[ii][0]; xi[1] = x[ii][1]; xi[2] = x[ii][2]; @@ -389,7 +388,7 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3]) compute_exchange(ii,j,rsq,fmi,spj); } } - } + } } /* ---------------------------------------------------------------------- diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index a7357f61e3..6ff003521d 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -166,8 +166,8 @@ void PairSpinMagelec::init_style() if (strcmp(modify->fix[ifix]->style,"nve/spin") == 0) break; ifix++; } - if (ifix == modify->nfix) - error->all(FLERR,"pair/spin style requires nve/spin"); + if ((ifix == modify->nfix) && (comm->me == 0)) + error->warning(FLERR,"Using pair/spin style without nve/spin"); // get the lattice_flag from nve/spin @@ -225,8 +225,7 @@ void PairSpinMagelec::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -333,7 +332,7 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3]) double delx,dely,delz; double spj[3]; - int i,j,jnum,itype,jtype,ntypes; + int j,jnum,itype,jtype,ntypes; int k,locflag; int *jlist,*numneigh,**firstneigh; @@ -341,7 +340,7 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3]) numneigh = list->numneigh; firstneigh = list->firstneigh; - + // check if interaction applies to type of ii itype = type[ii]; @@ -351,42 +350,42 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3]) while (k <= ntypes) { if (k <= itype) { if (setflag[k][itype] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else if (k > itype) { if (setflag[itype][k] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else error->all(FLERR,"Wrong type number"); } - // if interaction applies to type ii, + // if interaction applies to type ii, // locflag = 1 and compute pair interaction if (locflag == 1) { - + xi[0] = x[ii][0]; xi[1] = x[ii][1]; xi[2] = x[ii][2]; - + jlist = firstneigh[ii]; jnum = numneigh[ii]; - + for (int jj = 0; jj < jnum; jj++) { - + j = jlist[jj]; j &= NEIGHMASK; jtype = type[j]; local_cut2 = cut_spin_magelec[itype][jtype]*cut_spin_magelec[itype][jtype]; - + spj[0] = sp[j][0]; spj[1] = sp[j][1]; spj[2] = sp[j][2]; - + delx = xi[0] - x[j][0]; dely = xi[1] - x[j][1]; delz = xi[2] - x[j][2]; @@ -395,7 +394,7 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3]) eij[0] = -inorm*delx; eij[1] = -inorm*dely; eij[2] = -inorm*delz; - + if (rsq <= local_cut2) { compute_magelec(ii,j,eij,fmi,spj); } diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index bd12832a8d..a39d6f3461 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -173,8 +173,8 @@ void PairSpinNeel::init_style() if (strcmp(modify->fix[ifix]->style,"nve/spin") == 0) break; ifix++; } - if (ifix == modify->nfix) - error->all(FLERR,"pair/spin style requires nve/spin"); + if ((ifix == modify->nfix) && (comm->me == 0)) + error->warning(FLERR,"Using pair/spin style without nve/spin"); // get the lattice_flag from nve/spin @@ -232,8 +232,7 @@ void PairSpinNeel::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -344,7 +343,7 @@ void PairSpinNeel::compute_single_pair(int ii, double fmi[3]) double xi[3], rij[3], eij[3]; double spi[3], spj[3]; - int i,j,jnum,itype,jtype,ntypes; + int j,jnum,itype,jtype,ntypes; int k,locflag; int *jlist,*numneigh,**firstneigh; @@ -352,7 +351,7 @@ void PairSpinNeel::compute_single_pair(int ii, double fmi[3]) numneigh = list->numneigh; firstneigh = list->firstneigh; - + // check if interaction applies to type of ii itype = type[ii]; @@ -362,20 +361,20 @@ void PairSpinNeel::compute_single_pair(int ii, double fmi[3]) while (k <= ntypes) { if (k <= itype) { if (setflag[k][itype] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else if (k > itype) { if (setflag[itype][k] == 1) { - locflag =1; - break; + locflag =1; + break; } k++; } else error->all(FLERR,"Wrong type number"); } - // if interaction applies to type ii, + // if interaction applies to type ii, // locflag = 1 and compute pair interaction if (locflag == 1) { diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp index 806e4f3a14..1b7bf35c28 100644 --- a/src/USER-AWPMD/pair_awpmd_cut.cpp +++ b/src/USER-AWPMD/pair_awpmd_cut.cpp @@ -108,10 +108,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) // pvector = [KE, Pauli, ecoul, radial_restraint] for (int i=0; i<4; i++) pvector[i] = 0.0; - if (eflag || vflag) - ev_setup(eflag,vflag); - else - evflag = vflag_fdotr = 0; //?? + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-CGDNA/bond_oxdna_fene.cpp b/src/USER-CGDNA/bond_oxdna_fene.cpp index 34a25a9b5a..8271668e3f 100644 --- a/src/USER-CGDNA/bond_oxdna_fene.cpp +++ b/src/USER-CGDNA/bond_oxdna_fene.cpp @@ -96,8 +96,7 @@ void BondOxdnaFene::compute(int eflag, int vflag) int newton_bond = force->newton_bond; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // loop over FENE bonds diff --git a/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp b/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp index 0b220a3275..f54197aea7 100644 --- a/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp +++ b/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp @@ -144,8 +144,7 @@ void PairOxdna2Coaxstk::compute(int eflag, int vflag) double df2,df4f6t1,df4t4,df4t5,df4t6,rsint; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGDNA/pair_oxdna2_dh.cpp b/src/USER-CGDNA/pair_oxdna2_dh.cpp index da6e1f8bbd..10e7121427 100644 --- a/src/USER-CGDNA/pair_oxdna2_dh.cpp +++ b/src/USER-CGDNA/pair_oxdna2_dh.cpp @@ -114,8 +114,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag) int a,b,ia,ib,anum,bnum,atype,btype; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGDNA/pair_oxdna_coaxstk.cpp b/src/USER-CGDNA/pair_oxdna_coaxstk.cpp index ef0ff16150..6d3061620d 100644 --- a/src/USER-CGDNA/pair_oxdna_coaxstk.cpp +++ b/src/USER-CGDNA/pair_oxdna_coaxstk.cpp @@ -156,8 +156,7 @@ void PairOxdnaCoaxstk::compute(int eflag, int vflag) double df2,df4t1,df4t4,df4t5,df4t6,df5c3,rsint; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGDNA/pair_oxdna_excv.cpp b/src/USER-CGDNA/pair_oxdna_excv.cpp index 719a63b5f4..82af5ed1c7 100644 --- a/src/USER-CGDNA/pair_oxdna_excv.cpp +++ b/src/USER-CGDNA/pair_oxdna_excv.cpp @@ -144,8 +144,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag) int a,b,ia,ib,anum,bnum,atype,btype; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGDNA/pair_oxdna_hbond.cpp b/src/USER-CGDNA/pair_oxdna_hbond.cpp index d8305e30de..d2aa236a05 100644 --- a/src/USER-CGDNA/pair_oxdna_hbond.cpp +++ b/src/USER-CGDNA/pair_oxdna_hbond.cpp @@ -161,8 +161,7 @@ void PairOxdnaHbond::compute(int eflag, int vflag) double df1,df4t1,df4t4,df4t2,df4t3,df4t7,df4t8; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGDNA/pair_oxdna_stk.cpp b/src/USER-CGDNA/pair_oxdna_stk.cpp index f713e4d27c..4cbc0317dd 100644 --- a/src/USER-CGDNA/pair_oxdna_stk.cpp +++ b/src/USER-CGDNA/pair_oxdna_stk.cpp @@ -154,8 +154,7 @@ void PairOxdnaStk::compute(int eflag, int vflag) double tptofp; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // loop over stacking interaction neighours using bond topology diff --git a/src/USER-CGDNA/pair_oxdna_xstk.cpp b/src/USER-CGDNA/pair_oxdna_xstk.cpp index a354a604fd..071886556c 100644 --- a/src/USER-CGDNA/pair_oxdna_xstk.cpp +++ b/src/USER-CGDNA/pair_oxdna_xstk.cpp @@ -153,8 +153,7 @@ void PairOxdnaXstk::compute(int eflag, int vflag) double df2,df4t1,df4t4,df4t2,df4t3,df4t7,df4t8,rsint; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); anum = list->inum; alist = list->ilist; diff --git a/src/USER-CGSDK/angle_sdk.cpp b/src/USER-CGSDK/angle_sdk.cpp index 6b8245b491..823c725e07 100644 --- a/src/USER-CGSDK/angle_sdk.cpp +++ b/src/USER-CGSDK/angle_sdk.cpp @@ -68,8 +68,7 @@ void AngleSDK::compute(int eflag, int vflag) double rsq1,rsq2,rsq3,r1,r2,c,s,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-CGSDK/pair_lj_sdk.cpp b/src/USER-CGSDK/pair_lj_sdk.cpp index 3404beb58a..7dd6c04436 100644 --- a/src/USER-CGSDK/pair_lj_sdk.cpp +++ b/src/USER-CGSDK/pair_lj_sdk.cpp @@ -78,9 +78,7 @@ PairLJSDK::~PairLJSDK() void PairLJSDK::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/USER-CGSDK/pair_lj_sdk_coul_long.cpp b/src/USER-CGSDK/pair_lj_sdk_coul_long.cpp index c51235518b..33a1659df9 100644 --- a/src/USER-CGSDK/pair_lj_sdk_coul_long.cpp +++ b/src/USER-CGSDK/pair_lj_sdk_coul_long.cpp @@ -90,9 +90,7 @@ PairLJSDKCoulLong::~PairLJSDKCoulLong() void PairLJSDKCoulLong::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/USER-CGSDK/pair_lj_sdk_coul_msm.cpp b/src/USER-CGSDK/pair_lj_sdk_coul_msm.cpp index c4882fdbdb..d26f8efcdc 100644 --- a/src/USER-CGSDK/pair_lj_sdk_coul_msm.cpp +++ b/src/USER-CGSDK/pair_lj_sdk_coul_msm.cpp @@ -57,9 +57,7 @@ void PairLJSDKCoulMSM::compute(int eflag, int vflag) if (force->kspace->scalar_pressure_flag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' with Pair style"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (evflag) { if (eflag) { diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index 12e6d9f257..07ef8190f0 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -76,8 +76,7 @@ void PairDPDfdt::compute(int eflag, int vflag) double gamma_ij; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 42c23e3ad2..12e6989c00 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -85,8 +85,7 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 0251f019c5..13521b52b1 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -121,8 +121,7 @@ void PairExp6rx::compute(int eflag, int vflag) evdwlOld = 0.0; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DPD/pair_multi_lucy.cpp b/src/USER-DPD/pair_multi_lucy.cpp index 19a4a02f0b..ffc1562f88 100644 --- a/src/USER-DPD/pair_multi_lucy.cpp +++ b/src/USER-DPD/pair_multi_lucy.cpp @@ -95,8 +95,7 @@ void PairMultiLucy::compute(int eflag, int vflag) int tlm1 = tablength - 1; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index f3ad86eb2f..801e8ff039 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -111,8 +111,7 @@ void PairMultiLucyRX::compute(int eflag, int vflag) evdwlOld = 0.0; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index 1e7bc440d1..f2d0d7b1fb 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -78,8 +78,7 @@ void PairTableRX::compute(int eflag, int vflag) evdwlOld = 0.0; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp index f9da40dfb9..1ebe4a4c2d 100644 --- a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp +++ b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp @@ -98,8 +98,7 @@ void PairLJCutTholeLong::compute(int eflag, int vflag) int di_closest; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DRUDE/pair_thole.cpp b/src/USER-DRUDE/pair_thole.cpp index 5a518d819b..1bb75af825 100644 --- a/src/USER-DRUDE/pair_thole.cpp +++ b/src/USER-DRUDE/pair_thole.cpp @@ -64,8 +64,7 @@ void PairThole::compute(int eflag, int vflag) double dcoul,asr,exp_asr; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-EFF/pair_eff_cut.cpp b/src/USER-EFF/pair_eff_cut.cpp index b4e9011e33..f566922ef7 100644 --- a/src/USER-EFF/pair_eff_cut.cpp +++ b/src/USER-EFF/pair_eff_cut.cpp @@ -81,8 +81,7 @@ void PairEffCut::compute(int eflag, int vflag) // pvector = [KE, Pauli, ecoul, radial_restraint] for (i=0; i<4; i++) pvector[i] = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_coul_cut_soft.cpp b/src/USER-FEP/pair_coul_cut_soft.cpp index 529ffe6b09..86a6d02819 100644 --- a/src/USER-FEP/pair_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_coul_cut_soft.cpp @@ -60,8 +60,7 @@ void PairCoulCutSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_coul_long_soft.cpp b/src/USER-FEP/pair_coul_long_soft.cpp index e45dbe72d6..9d3ffc0da1 100644 --- a/src/USER-FEP/pair_coul_long_soft.cpp +++ b/src/USER-FEP/pair_coul_long_soft.cpp @@ -78,8 +78,7 @@ void PairCoulLongSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp b/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp index 34758b159b..ac6f1e6384 100644 --- a/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp +++ b/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp @@ -92,8 +92,7 @@ void PairLJCharmmCoulLongSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -415,8 +414,7 @@ void PairLJCharmmCoulLongSoft::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp b/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp index 7970097cfe..ae79515488 100644 --- a/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp @@ -39,24 +39,24 @@ PairLJClass2CoulCutSoft::PairLJClass2CoulCutSoft(LAMMPS *lmp) : Pair(lmp) PairLJClass2CoulCutSoft::~PairLJClass2CoulCutSoft() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(cut_coul); - memory->destroy(cut_coulsq); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lambda); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(cut_coul); + memory->destroy(cut_coulsq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lambda); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } } @@ -72,8 +72,7 @@ void PairLJClass2CoulCutSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_class2_coul_long_soft.cpp b/src/USER-FEP/pair_lj_class2_coul_long_soft.cpp index 13096a64c6..6410f83fa1 100644 --- a/src/USER-FEP/pair_lj_class2_coul_long_soft.cpp +++ b/src/USER-FEP/pair_lj_class2_coul_long_soft.cpp @@ -49,22 +49,22 @@ PairLJClass2CoulLongSoft::PairLJClass2CoulLongSoft(LAMMPS *lmp) : Pair(lmp) PairLJClass2CoulLongSoft::~PairLJClass2CoulLongSoft() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lambda); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lambda); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } } @@ -82,8 +82,7 @@ void PairLJClass2CoulLongSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_class2_soft.cpp b/src/USER-FEP/pair_lj_class2_soft.cpp index b7f21fc59c..d22cd53883 100644 --- a/src/USER-FEP/pair_lj_class2_soft.cpp +++ b/src/USER-FEP/pair_lj_class2_soft.cpp @@ -32,28 +32,26 @@ using namespace MathConst; PairLJClass2Soft::PairLJClass2Soft(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - allocated = 0; } /* ---------------------------------------------------------------------- */ PairLJClass2Soft::~PairLJClass2Soft() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lambda); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(offset); - allocated=0; - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lambda); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(offset); } } @@ -68,8 +66,7 @@ void PairLJClass2Soft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp index fc887fbec5..35c9162dbc 100644 --- a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp @@ -73,8 +73,7 @@ void PairLJCutCoulCutSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp b/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp index a9032ab4d7..79253d2b9c 100644 --- a/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp @@ -89,8 +89,7 @@ void PairLJCutCoulLongSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -390,8 +389,7 @@ void PairLJCutCoulLongSoft::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_soft.cpp index 1322565473..4192d6546b 100644 --- a/src/USER-FEP/pair_lj_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_soft.cpp @@ -77,8 +77,7 @@ void PairLJCutSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -323,8 +322,7 @@ void PairLJCutSoft::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_lj_cut_tip4p_long_soft.cpp b/src/USER-FEP/pair_lj_cut_tip4p_long_soft.cpp index 8653800ee6..8ac28f9fa9 100644 --- a/src/USER-FEP/pair_lj_cut_tip4p_long_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_tip4p_long_soft.cpp @@ -92,8 +92,7 @@ void PairLJCutTIP4PLongSoft::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/USER-FEP/pair_morse_soft.cpp b/src/USER-FEP/pair_morse_soft.cpp index f4c5a4b910..21f616a082 100644 --- a/src/USER-FEP/pair_morse_soft.cpp +++ b/src/USER-FEP/pair_morse_soft.cpp @@ -53,8 +53,7 @@ void PairMorseSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-FEP/pair_tip4p_long_soft.cpp b/src/USER-FEP/pair_tip4p_long_soft.cpp index 5e8c5000f8..9b6a6841fe 100644 --- a/src/USER-FEP/pair_tip4p_long_soft.cpp +++ b/src/USER-FEP/pair_tip4p_long_soft.cpp @@ -91,8 +91,7 @@ void PairTIP4PLongSoft::compute(int eflag, int vflag) double rsq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh & newsite if necessary // initialize hneigh[0] to -1 on steps when reneighboring occurred diff --git a/src/USER-INTEL/angle_charmm_intel.cpp b/src/USER-INTEL/angle_charmm_intel.cpp index f2542fc0c7..c5ada951a5 100644 --- a/src/USER-INTEL/angle_charmm_intel.cpp +++ b/src/USER-INTEL/angle_charmm_intel.cpp @@ -78,8 +78,7 @@ void AngleCharmmIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/angle_harmonic_intel.cpp b/src/USER-INTEL/angle_harmonic_intel.cpp index 6d8901a5ee..aae6fcf0a2 100644 --- a/src/USER-INTEL/angle_harmonic_intel.cpp +++ b/src/USER-INTEL/angle_harmonic_intel.cpp @@ -78,8 +78,7 @@ void AngleHarmonicIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/bond_fene_intel.cpp b/src/USER-INTEL/bond_fene_intel.cpp index bff3722a44..bd8bc94c18 100644 --- a/src/USER-INTEL/bond_fene_intel.cpp +++ b/src/USER-INTEL/bond_fene_intel.cpp @@ -74,8 +74,7 @@ void BondFENEIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/bond_harmonic_intel.cpp b/src/USER-INTEL/bond_harmonic_intel.cpp index 65894efa05..4424b868eb 100644 --- a/src/USER-INTEL/bond_harmonic_intel.cpp +++ b/src/USER-INTEL/bond_harmonic_intel.cpp @@ -74,8 +74,7 @@ void BondHarmonicIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/dihedral_charmm_intel.cpp b/src/USER-INTEL/dihedral_charmm_intel.cpp index c9237e7309..4f4b091300 100644 --- a/src/USER-INTEL/dihedral_charmm_intel.cpp +++ b/src/USER-INTEL/dihedral_charmm_intel.cpp @@ -84,9 +84,7 @@ void DihedralCharmmIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/USER-INTEL/dihedral_fourier_intel.cpp b/src/USER-INTEL/dihedral_fourier_intel.cpp index 6ccc165c61..030d371e44 100644 --- a/src/USER-INTEL/dihedral_fourier_intel.cpp +++ b/src/USER-INTEL/dihedral_fourier_intel.cpp @@ -73,9 +73,7 @@ void DihedralFourierIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/dihedral_harmonic_intel.cpp b/src/USER-INTEL/dihedral_harmonic_intel.cpp index ae5eb914e7..d84db4f4ac 100644 --- a/src/USER-INTEL/dihedral_harmonic_intel.cpp +++ b/src/USER-INTEL/dihedral_harmonic_intel.cpp @@ -73,9 +73,7 @@ void DihedralHarmonicIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/dihedral_opls_intel.cpp b/src/USER-INTEL/dihedral_opls_intel.cpp index 7a60b62cae..eae796974b 100644 --- a/src/USER-INTEL/dihedral_opls_intel.cpp +++ b/src/USER-INTEL/dihedral_opls_intel.cpp @@ -77,9 +77,7 @@ void DihedralOPLSIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/improper_cvff_intel.cpp b/src/USER-INTEL/improper_cvff_intel.cpp index 03bd134b40..de316250c0 100644 --- a/src/USER-INTEL/improper_cvff_intel.cpp +++ b/src/USER-INTEL/improper_cvff_intel.cpp @@ -83,8 +83,7 @@ void ImproperCvffIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/improper_harmonic_intel.cpp b/src/USER-INTEL/improper_harmonic_intel.cpp index 167095150e..846c3cfbf9 100644 --- a/src/USER-INTEL/improper_harmonic_intel.cpp +++ b/src/USER-INTEL/improper_harmonic_intel.cpp @@ -84,8 +84,7 @@ void ImproperHarmonicIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); if (evflag) { if (vflag && !eflag) { diff --git a/src/USER-INTEL/pair_airebo_intel.cpp b/src/USER-INTEL/pair_airebo_intel.cpp index 198f8798fa..f330e3ec86 100644 --- a/src/USER-INTEL/pair_airebo_intel.cpp +++ b/src/USER-INTEL/pair_airebo_intel.cpp @@ -292,8 +292,7 @@ template void PairAIREBOIntel::compute( int eflag, int vflag, IntelBuffers * buffers ) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); pvector[0] = pvector[1] = pvector[2] = 0.0; const int inum = list->inum; diff --git a/src/USER-INTEL/pair_buck_coul_cut_intel.cpp b/src/USER-INTEL/pair_buck_coul_cut_intel.cpp index f82f4c1c7a..3f2d64fb93 100644 --- a/src/USER-INTEL/pair_buck_coul_cut_intel.cpp +++ b/src/USER-INTEL/pair_buck_coul_cut_intel.cpp @@ -73,9 +73,7 @@ void PairBuckCoulCutIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_buck_coul_long_intel.cpp b/src/USER-INTEL/pair_buck_coul_long_intel.cpp index 059413c3d9..2ddcd55663 100644 --- a/src/USER-INTEL/pair_buck_coul_long_intel.cpp +++ b/src/USER-INTEL/pair_buck_coul_long_intel.cpp @@ -73,9 +73,7 @@ void PairBuckCoulLongIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_buck_intel.cpp b/src/USER-INTEL/pair_buck_intel.cpp index 0e0bd0f56f..34af3462e2 100644 --- a/src/USER-INTEL/pair_buck_intel.cpp +++ b/src/USER-INTEL/pair_buck_intel.cpp @@ -66,9 +66,7 @@ void PairBuckIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_dpd_intel.cpp b/src/USER-INTEL/pair_dpd_intel.cpp index 5d67a60c4b..016f3b5ca0 100644 --- a/src/USER-INTEL/pair_dpd_intel.cpp +++ b/src/USER-INTEL/pair_dpd_intel.cpp @@ -82,9 +82,7 @@ void PairDPDIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_eam_intel.cpp b/src/USER-INTEL/pair_eam_intel.cpp index 95d0272d33..7f4806c87c 100644 --- a/src/USER-INTEL/pair_eam_intel.cpp +++ b/src/USER-INTEL/pair_eam_intel.cpp @@ -78,9 +78,7 @@ void PairEAMIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_gayberne_intel.cpp b/src/USER-INTEL/pair_gayberne_intel.cpp index 51524355d5..1d9ee7d4cd 100644 --- a/src/USER-INTEL/pair_gayberne_intel.cpp +++ b/src/USER-INTEL/pair_gayberne_intel.cpp @@ -72,9 +72,7 @@ void PairGayBerneIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); const int inum = list->inum; const int nall = atom->nlocal + atom->nghost; diff --git a/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp b/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp index 0b6ac3ffa5..9689c0bf50 100644 --- a/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp +++ b/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp @@ -66,9 +66,7 @@ void PairLJCharmmCoulCharmmIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp b/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp index 753a9afdd9..8de4ced549 100644 --- a/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp +++ b/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp @@ -70,9 +70,7 @@ void PairLJCharmmCoulLongIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp b/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp index 35ed9061ce..8ad1823d97 100644 --- a/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp +++ b/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp @@ -71,9 +71,7 @@ void PairLJCutCoulLongIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_lj_cut_intel.cpp b/src/USER-INTEL/pair_lj_cut_intel.cpp index 94133a7f47..74dae7e096 100644 --- a/src/USER-INTEL/pair_lj_cut_intel.cpp +++ b/src/USER-INTEL/pair_lj_cut_intel.cpp @@ -62,9 +62,7 @@ void PairLJCutIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_sw_intel.cpp b/src/USER-INTEL/pair_sw_intel.cpp index 9e00516087..8482895fb6 100644 --- a/src/USER-INTEL/pair_sw_intel.cpp +++ b/src/USER-INTEL/pair_sw_intel.cpp @@ -95,9 +95,7 @@ void PairSWIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pair_tersoff_intel.cpp b/src/USER-INTEL/pair_tersoff_intel.cpp index 5d4c5f2cb6..668cb0cf33 100644 --- a/src/USER-INTEL/pair_tersoff_intel.cpp +++ b/src/USER-INTEL/pair_tersoff_intel.cpp @@ -107,9 +107,7 @@ void PairTersoffIntel::compute(int eflag, int vflag, IntelBuffers *buffers, const ForceConst &fc) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int inum = list->inum; const int nthreads = comm->nthreads; diff --git a/src/USER-INTEL/pppm_disp_intel.cpp b/src/USER-INTEL/pppm_disp_intel.cpp index 795fe1a47d..9d075c78a1 100644 --- a/src/USER-INTEL/pppm_disp_intel.cpp +++ b/src/USER-INTEL/pppm_disp_intel.cpp @@ -174,9 +174,7 @@ void PPPMDispIntel::compute(int eflag, int vflag) int i; // convert atoms from box to lamda coords - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/USER-INTEL/pppm_intel.cpp b/src/USER-INTEL/pppm_intel.cpp index 59455bcf52..e3d1e7d4aa 100644 --- a/src/USER-INTEL/pppm_intel.cpp +++ b/src/USER-INTEL/pppm_intel.cpp @@ -161,9 +161,7 @@ void PPPMIntel::compute_first(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); if (evflag_atom && !peratom_allocate_flag) { allocate_peratom(); diff --git a/src/USER-MEAMC/pair_meamc.cpp b/src/USER-MEAMC/pair_meamc.cpp index b74416a46d..3a934694bf 100644 --- a/src/USER-MEAMC/pair_meamc.cpp +++ b/src/USER-MEAMC/pair_meamc.cpp @@ -93,9 +93,7 @@ void PairMEAMC::compute(int eflag, int vflag) int *ilist_half,*numneigh_half,**firstneigh_half; int *numneigh_full,**firstneigh_full; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // neighbor list info diff --git a/src/USER-MESO/pair_edpd.cpp b/src/USER-MESO/pair_edpd.cpp index 1f6222944a..e428b02822 100644 --- a/src/USER-MESO/pair_edpd.cpp +++ b/src/USER-MESO/pair_edpd.cpp @@ -99,8 +99,7 @@ PairEDPD::~PairEDPD() void PairEDPD::compute(int eflag, int vflag) { double evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/USER-MESO/pair_mdpd.cpp b/src/USER-MESO/pair_mdpd.cpp index f9acd3dbe1..4102499d46 100644 --- a/src/USER-MESO/pair_mdpd.cpp +++ b/src/USER-MESO/pair_mdpd.cpp @@ -88,8 +88,7 @@ void PairMDPD::compute(int eflag, int vflag) double rhoi, rhoj; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/USER-MESO/pair_mdpd_rhosum.cpp b/src/USER-MESO/pair_mdpd_rhosum.cpp index 806a63f898..2fd238088c 100644 --- a/src/USER-MESO/pair_mdpd_rhosum.cpp +++ b/src/USER-MESO/pair_mdpd_rhosum.cpp @@ -84,10 +84,7 @@ void PairMDPDRhoSum::compute(int eflag, int vflag) { // neighbor list variables int inum, *ilist, *numneigh, **firstneigh; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double *rho = atom->rho; diff --git a/src/USER-MESO/pair_tdpd.cpp b/src/USER-MESO/pair_tdpd.cpp index a41282c0d8..7df9d6d163 100644 --- a/src/USER-MESO/pair_tdpd.cpp +++ b/src/USER-MESO/pair_tdpd.cpp @@ -91,8 +91,7 @@ PairTDPD::~PairTDPD() void PairTDPD::compute(int eflag, int vflag) { double evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/USER-MGPT/pair_mgpt.cpp b/src/USER-MGPT/pair_mgpt.cpp index 347bc9cc69..91c624eec5 100644 --- a/src/USER-MGPT/pair_mgpt.cpp +++ b/src/USER-MGPT/pair_mgpt.cpp @@ -1673,8 +1673,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, void PairMGPT::compute(int eflag, int vflag) { - if(eflag || vflag) ev_setup(eflag, vflag); - else evflag = vflag_fdotr = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag, vflag); int newton_pair = force->newton_pair; double e_s,e_p,e_t,e_q; diff --git a/src/USER-MISC/angle_cosine_shift.cpp b/src/USER-MISC/angle_cosine_shift.cpp index a361db4970..18c87c81e3 100644 --- a/src/USER-MISC/angle_cosine_shift.cpp +++ b/src/USER-MISC/angle_cosine_shift.cpp @@ -62,8 +62,7 @@ void AngleCosineShift::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,s,cps,kcos,ksin,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/angle_cosine_shift_exp.cpp b/src/USER-MISC/angle_cosine_shift_exp.cpp index c87c73171a..8c6282de20 100644 --- a/src/USER-MISC/angle_cosine_shift_exp.cpp +++ b/src/USER-MISC/angle_cosine_shift_exp.cpp @@ -72,8 +72,7 @@ void AngleCosineShiftExp::compute(int eflag, int vflag) double exp2,aa,uumin,cccpsss,cssmscc; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/angle_dipole.cpp b/src/USER-MISC/angle_dipole.cpp index c4186da472..781da46869 100644 --- a/src/USER-MISC/angle_dipole.cpp +++ b/src/USER-MISC/angle_dipole.cpp @@ -59,8 +59,7 @@ void AngleDipole::compute(int eflag, int vflag) double r,cosGamma,deltaGamma,kdg,rmu; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; // position vector double **mu = atom->mu; // point-dipole components and moment magnitude diff --git a/src/USER-MISC/angle_fourier.cpp b/src/USER-MISC/angle_fourier.cpp index e6cc1f1a7e..8f5074ff5d 100644 --- a/src/USER-MISC/angle_fourier.cpp +++ b/src/USER-MISC/angle_fourier.cpp @@ -67,8 +67,7 @@ void AngleFourier::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,c2,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/angle_fourier_simple.cpp b/src/USER-MISC/angle_fourier_simple.cpp index 8464fe815c..615556bbe7 100644 --- a/src/USER-MISC/angle_fourier_simple.cpp +++ b/src/USER-MISC/angle_fourier_simple.cpp @@ -65,8 +65,7 @@ void AngleFourierSimple::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,cn,th,nth,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/angle_quartic.cpp b/src/USER-MISC/angle_quartic.cpp index 356f2df5d4..21a96100aa 100644 --- a/src/USER-MISC/angle_quartic.cpp +++ b/src/USER-MISC/angle_quartic.cpp @@ -61,8 +61,7 @@ void AngleQuartic::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/bond_harmonic_shift.cpp b/src/USER-MISC/bond_harmonic_shift.cpp index b34f71e888..c7e4444cce 100644 --- a/src/USER-MISC/bond_harmonic_shift.cpp +++ b/src/USER-MISC/bond_harmonic_shift.cpp @@ -53,8 +53,7 @@ void BondHarmonicShift::compute(int eflag, int vflag) double rsq,r,dr,rk; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/bond_harmonic_shift_cut.cpp b/src/USER-MISC/bond_harmonic_shift_cut.cpp index a58df70878..5b396f5d72 100644 --- a/src/USER-MISC/bond_harmonic_shift_cut.cpp +++ b/src/USER-MISC/bond_harmonic_shift_cut.cpp @@ -53,8 +53,7 @@ void BondHarmonicShiftCut::compute(int eflag, int vflag) double rsq,r,dr,rk; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/dihedral_cosine_shift_exp.cpp b/src/USER-MISC/dihedral_cosine_shift_exp.cpp index 82da173f8e..c411ea8150 100644 --- a/src/USER-MISC/dihedral_cosine_shift_exp.cpp +++ b/src/USER-MISC/dihedral_cosine_shift_exp.cpp @@ -36,7 +36,10 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -DihedralCosineShiftExp::DihedralCosineShiftExp(LAMMPS *lmp) : Dihedral(lmp) {} +DihedralCosineShiftExp::DihedralCosineShiftExp(LAMMPS *lmp) : Dihedral(lmp) +{ + writedata = 1; +} /* ---------------------------------------------------------------------- */ @@ -68,8 +71,7 @@ void DihedralCosineShiftExp::compute(int eflag, int vflag) double cccpsss,cssmscc,exp2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/dihedral_fourier.cpp b/src/USER-MISC/dihedral_fourier.cpp index 7c405ee28c..af86259c01 100644 --- a/src/USER-MISC/dihedral_fourier.cpp +++ b/src/USER-MISC/dihedral_fourier.cpp @@ -79,8 +79,7 @@ void DihedralFourier::compute(int eflag, int vflag) double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz; double c,s,p_,sx2,sy2,sz2; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/dihedral_nharmonic.cpp b/src/USER-MISC/dihedral_nharmonic.cpp index f8e8850680..ea2b76f415 100644 --- a/src/USER-MISC/dihedral_nharmonic.cpp +++ b/src/USER-MISC/dihedral_nharmonic.cpp @@ -35,7 +35,8 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -DihedralNHarmonic::DihedralNHarmonic(LAMMPS *lmp) : Dihedral(lmp) { +DihedralNHarmonic::DihedralNHarmonic(LAMMPS *lmp) : Dihedral(lmp) +{ writedata = 1; } @@ -66,8 +67,7 @@ void DihedralNHarmonic::compute(int eflag, int vflag) double s2,sin2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/dihedral_quadratic.cpp b/src/USER-MISC/dihedral_quadratic.cpp index 1b64b52faf..8436e73c5c 100644 --- a/src/USER-MISC/dihedral_quadratic.cpp +++ b/src/USER-MISC/dihedral_quadratic.cpp @@ -38,7 +38,10 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -DihedralQuadratic::DihedralQuadratic(LAMMPS *lmp) : Dihedral(lmp) {} +DihedralQuadratic::DihedralQuadratic(LAMMPS *lmp) : Dihedral(lmp) +{ + writedata = 1; +} /* ---------------------------------------------------------------------- */ @@ -65,8 +68,7 @@ void DihedralQuadratic::compute(int eflag, int vflag) double s2,cx,cy,cz,cmag,dx,phi,si,siinv,sin2; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/dihedral_spherical.cpp b/src/USER-MISC/dihedral_spherical.cpp index 77fa885b7a..3b30121551 100644 --- a/src/USER-MISC/dihedral_spherical.cpp +++ b/src/USER-MISC/dihedral_spherical.cpp @@ -41,7 +41,10 @@ using namespace MathExtra; /* ---------------------------------------------------------------------- */ -DihedralSpherical::DihedralSpherical(LAMMPS *lmp) : Dihedral(lmp) {} +DihedralSpherical::DihedralSpherical(LAMMPS *lmp) : Dihedral(lmp) +{ + writedata = 1; +} /* ---------------------------------------------------------------------- */ @@ -213,8 +216,7 @@ void DihedralSpherical::compute(int eflag, int vflag) // perp34on23[d] = v34[d] - proj34on23[d] edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); for (n = 0; n < ndihedrallist; n++) { @@ -817,10 +819,11 @@ void DihedralSpherical::write_data(FILE *fp) for (int i = 1; i <= atom->ndihedraltypes; i++) { fprintf(fp,"%d %d ", i , nterms[i]); for (int j = 0; j < nterms[i]; j++) { - fprintf(fp, "%g %g %g %g %g %g %g %g %g ", - phi_mult[i][j], phi_shift[i][j], phi_offset[i][j], - theta1_mult[i][j], theta1_shift[i][j], theta1_offset[i][j], - theta2_mult[i][j], theta2_shift[i][j], theta2_offset[i][j]); + fprintf(fp, "%g %g %g %g %g %g %g %g %g %g ", Ccoeff[i][j], + phi_mult[i][j], phi_shift[i][j]*180.0/MY_PI, phi_offset[i][j], + theta1_mult[i][j], theta1_shift[i][j]*180.0/MY_PI, + theta1_offset[i][j], theta2_mult[i][j], + theta2_shift[i][j]*180.0/MY_PI, theta2_offset[i][j]); } fprintf(fp,"\n"); } diff --git a/src/USER-MISC/dihedral_table.cpp b/src/USER-MISC/dihedral_table.cpp index e221a54a82..a97ae3649f 100644 --- a/src/USER-MISC/dihedral_table.cpp +++ b/src/USER-MISC/dihedral_table.cpp @@ -549,8 +549,7 @@ void DihedralTable::compute(int eflag, int vflag) edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); for (n = 0; n < ndihedrallist; n++) { diff --git a/src/USER-MISC/dihedral_table_cut.cpp b/src/USER-MISC/dihedral_table_cut.cpp index 6ebe094e50..18a645cd75 100644 --- a/src/USER-MISC/dihedral_table_cut.cpp +++ b/src/USER-MISC/dihedral_table_cut.cpp @@ -425,17 +425,6 @@ DihedralTableCut::DihedralTableCut(LAMMPS *lmp) : Dihedral(lmp) DihedralTableCut::~DihedralTableCut() { if (allocated) { - memory->destroy(setflag); - memory->destroy(setflag_d); - memory->destroy(setflag_aat); - - memory->destroy(k1); - memory->destroy(k2); - memory->destroy(k3); - memory->destroy(phi1); - memory->destroy(phi2); - memory->destroy(phi3); - memory->destroy(aat_k); memory->destroy(aat_theta0_1); memory->destroy(aat_theta0_2); @@ -472,8 +461,7 @@ void DihedralTableCut::compute(int eflag, int vflag) double fabcd[4][3]; edihedral = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -761,27 +749,15 @@ void DihedralTableCut::allocate() allocated = 1; int n = atom->ndihedraltypes; - memory->create(k1,n+1,"dihedral:k1"); - memory->create(k2,n+1,"dihedral:k2"); - memory->create(k3,n+1,"dihedral:k3"); - memory->create(phi1,n+1,"dihedral:phi1"); - memory->create(phi2,n+1,"dihedral:phi2"); - memory->create(phi3,n+1,"dihedral:phi3"); - memory->create(aat_k,n+1,"dihedral:aat_k"); memory->create(aat_theta0_1,n+1,"dihedral:aat_theta0_1"); memory->create(aat_theta0_2,n+1,"dihedral:aat_theta0_2"); - memory->create(setflag,n+1,"dihedral:setflag"); - memory->create(setflag_d,n+1,"dihedral:setflag_d"); - memory->create(setflag_aat,n+1,"dihedral:setflag_aat"); - memory->create(tabindex,n+1,"dihedral:tabindex"); - //memory->create(phi0,n+1,"dihedral:phi0"); <-equilibrium angles not supported memory->create(setflag,n+1,"dihedral:setflag"); for (int i = 1; i <= n; i++) - setflag[i] = setflag_d[i] = setflag_aat[i] = 0; + setflag[i] = 0; } void DihedralTableCut::settings(int narg, char **arg) @@ -824,9 +800,6 @@ void DihedralTableCut::coeff(int narg, char **arg) int ilo,ihi; force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi); - int count = 0; - - double k_one = force->numeric(FLERR,arg[2]); double theta0_1_one = force->numeric(FLERR,arg[3]); double theta0_2_one = force->numeric(FLERR,arg[4]); @@ -837,8 +810,6 @@ void DihedralTableCut::coeff(int narg, char **arg) aat_k[i] = k_one; aat_theta0_1[i] = theta0_1_one/180.0 * MY_PI; aat_theta0_2[i] = theta0_2_one/180.0 * MY_PI; - setflag_aat[i] = 1; - count++; } int me; @@ -998,8 +969,7 @@ void DihedralTableCut::coeff(int narg, char **arg) // To be nice and report something, I do the same thing here.) cyc_splintD(tb->phi, tb->e, tb->e2, tablength, MY_2PI,phi); f = -dU_dphi; - } - else + } else // Otherwise we calculated the tb->f[] array. Report its contents. f = tb->f[i]; if (tb->use_degrees) { @@ -1015,9 +985,8 @@ void DihedralTableCut::coeff(int narg, char **arg) } // if (me == 0) // store ptr to table in tabindex - count = 0; - for (int i = ilo; i <= ihi; i++) - { + int count = 0; + for (int i = ilo; i <= ihi; i++) { tabindex[i] = ntables; //phi0[i] = tb->phi0; <- equilibrium dihedral angles not supported setflag[i] = 1; @@ -1025,12 +994,7 @@ void DihedralTableCut::coeff(int narg, char **arg) } ntables++; - if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients"); - - for (int i = ilo; i <= ihi; i++) - if (setflag_d[i] == 1 && setflag_aat[i] == 1 ) - setflag[i] = 1; } /* ---------------------------------------------------------------------- @@ -1041,16 +1005,6 @@ void DihedralTableCut::write_restart(FILE *fp) { fwrite(&tabstyle,sizeof(int),1,fp); fwrite(&tablength,sizeof(int),1,fp); - fwrite(&k1[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&k2[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&k3[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&phi1[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&phi2[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&phi3[1],sizeof(double),atom->ndihedraltypes,fp); - - fwrite(&aat_k[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&aat_theta0_1[1],sizeof(double),atom->ndihedraltypes,fp); - fwrite(&aat_theta0_2[1],sizeof(double),atom->ndihedraltypes,fp); } /* ---------------------------------------------------------------------- @@ -1064,33 +1018,10 @@ void DihedralTableCut::read_restart(FILE *fp) if (comm->me == 0) { fread(&tabstyle,sizeof(int),1,fp); fread(&tablength,sizeof(int),1,fp); - fread(&k1[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&k2[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&k3[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&phi1[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&phi2[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&phi3[1],sizeof(double),atom->ndihedraltypes,fp); - - fread(&aat_k[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&aat_theta0_1[1],sizeof(double),atom->ndihedraltypes,fp); - fread(&aat_theta0_2[1],sizeof(double),atom->ndihedraltypes,fp); } - MPI_Bcast(&k1[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&k2[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&k3[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&phi1[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&phi2[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&phi3[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - - MPI_Bcast(&aat_k[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&aat_theta0_1[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); - MPI_Bcast(&aat_theta0_2[1],atom->ndihedraltypes,MPI_DOUBLE,0,world); MPI_Bcast(&tabstyle,1,MPI_INT,0,world); MPI_Bcast(&tablength,1,MPI_INT,0,world); - - allocate(); - for (int i = 1; i <= atom->ndihedraltypes; i++) setflag[i] = 1; } /* ---------------------------------------------------------------------- */ @@ -1474,22 +1405,3 @@ void DihedralTableCut::bcast_table(Table *tb) } - -/* ---------------------------------------------------------------------- - proc 0 writes to data file -------------------------------------------------------------------------- */ - -void DihedralTableCut::write_data(FILE *fp) -{ - for (int i = 1; i <= atom->ndihedraltypes; i++) - fprintf(fp,"%d %g %g %g %g %g %g\n",i, - k1[i],phi1[i]*180.0/MY_PI, - k2[i],phi2[i]*180.0/MY_PI, - k3[i],phi3[i]*180.0/MY_PI); - - fprintf(fp,"\nAngleAngleTorsion Coeffs\n\n"); - for (int i = 1; i <= atom->ndihedraltypes; i++) - fprintf(fp,"%d %g %g %g\n",i,aat_k[i], - aat_theta0_1[i]*180.0/MY_PI,aat_theta0_2[i]*180.0/MY_PI); - -} diff --git a/src/USER-MISC/dihedral_table_cut.h b/src/USER-MISC/dihedral_table_cut.h index d01903c88b..dd645bedda 100644 --- a/src/USER-MISC/dihedral_table_cut.h +++ b/src/USER-MISC/dihedral_table_cut.h @@ -20,7 +20,6 @@ DihedralStyle(table/cut,DihedralTableCut) #ifndef LMP_DIHEDRAL_TABLE_CUT_H #define LMP_DIHEDRAL_TABLE_CUT_H -#include #include "dihedral.h" namespace LAMMPS_NS { @@ -34,26 +33,18 @@ class DihedralTableCut : public Dihedral { void coeff(int, char **); void write_restart(FILE *); void read_restart(FILE *); - void write_data(FILE *); - double single(int type, int i1, int i2, int i3, int i4); protected: - double *k1,*k2,*k3; - double *phi1,*phi2,*phi3; double *aat_k,*aat_theta0_1,*aat_theta0_2; - int *setflag_d; - int *setflag_aat; void allocate(); int tabstyle,tablength; - // double *phi0; <- equilibrium angles not supported char *checkU_fname; char *checkF_fname; struct Table { int ninput; - //double phi0; <-equilibrium angles not supported int f_unspecified; // boolean (but MPI does not like type "bool") int use_degrees; // boolean (but MPI does not like type "bool") double *phifile,*efile,*ffile; diff --git a/src/USER-MISC/improper_cossq.cpp b/src/USER-MISC/improper_cossq.cpp index 2483840e42..c8eb0808fb 100644 --- a/src/USER-MISC/improper_cossq.cpp +++ b/src/USER-MISC/improper_cossq.cpp @@ -63,8 +63,7 @@ void ImproperCossq::compute(int eflag, int vflag) eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/improper_distance.cpp b/src/USER-MISC/improper_distance.cpp index 2edf37ec5c..50babcc84e 100644 --- a/src/USER-MISC/improper_distance.cpp +++ b/src/USER-MISC/improper_distance.cpp @@ -67,8 +67,7 @@ void ImproperDistance::compute(int eflag, int vflag) double domega,a; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/improper_fourier.cpp b/src/USER-MISC/improper_fourier.cpp index 927478fa1a..288d888d12 100644 --- a/src/USER-MISC/improper_fourier.cpp +++ b/src/USER-MISC/improper_fourier.cpp @@ -59,8 +59,7 @@ void ImproperFourier::compute(int eflag, int vflag) int i1,i2,i3,i4,n,type; double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; int **improperlist = neighbor->improperlist; diff --git a/src/USER-MISC/improper_ring.cpp b/src/USER-MISC/improper_ring.cpp index 70124b2ed1..36ba73af0f 100644 --- a/src/USER-MISC/improper_ring.cpp +++ b/src/USER-MISC/improper_ring.cpp @@ -95,8 +95,7 @@ void ImproperRing::compute(int eflag, int vflag) double cjiji, ckjji, ckjkj, fix, fiy, fiz, fjx, fjy, fjz, fkx, fky, fkz; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); /* References to simulation data. */ double **x = atom->x; diff --git a/src/USER-MISC/pair_agni.cpp b/src/USER-MISC/pair_agni.cpp index 0277969d15..21a6f1deee 100644 --- a/src/USER-MISC/pair_agni.cpp +++ b/src/USER-MISC/pair_agni.cpp @@ -136,8 +136,7 @@ void PairAGNI::compute(int eflag, int vflag) double rsq; int *ilist,*jlist,*numneigh,**firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_buck_mdf.cpp b/src/USER-MISC/pair_buck_mdf.cpp index 38de1c7c50..b5e81417ee 100644 --- a/src/USER-MISC/pair_buck_mdf.cpp +++ b/src/USER-MISC/pair_buck_mdf.cpp @@ -68,8 +68,7 @@ void PairBuckMDF::compute(int eflag, int vflag) double dp, d, tt, dt, dd; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_coul_diel.cpp b/src/USER-MISC/pair_coul_diel.cpp index 0154e89731..a86921d296 100644 --- a/src/USER-MISC/pair_coul_diel.cpp +++ b/src/USER-MISC/pair_coul_diel.cpp @@ -58,8 +58,7 @@ void PairCoulDiel::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_coul_shield.cpp b/src/USER-MISC/pair_coul_shield.cpp index 11df975c19..f74dcfe7d8 100644 --- a/src/USER-MISC/pair_coul_shield.cpp +++ b/src/USER-MISC/pair_coul_shield.cpp @@ -64,8 +64,7 @@ void PairCoulShield::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_edip.cpp b/src/USER-MISC/pair_edip.cpp index 491268567f..0b5220fdfd 100644 --- a/src/USER-MISC/pair_edip.cpp +++ b/src/USER-MISC/pair_edip.cpp @@ -149,8 +149,7 @@ void PairEDIP::compute(int eflag, int vflag) double potential2B_factor; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_edip_multi.cpp b/src/USER-MISC/pair_edip_multi.cpp index f56650d2f6..ab48fbaa73 100644 --- a/src/USER-MISC/pair_edip_multi.cpp +++ b/src/USER-MISC/pair_edip_multi.cpp @@ -118,8 +118,7 @@ void PairEDIPMulti::compute(int eflag, int vflag) // vflag != 0 means compute virial contributions in this step evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_extep.cpp b/src/USER-MISC/pair_extep.cpp index 364fd45016..132b857dde 100644 --- a/src/USER-MISC/pair_extep.cpp +++ b/src/USER-MISC/pair_extep.cpp @@ -190,8 +190,7 @@ void PairExTeP::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); SR_neigh(); diff --git a/src/USER-MISC/pair_gauss_cut.cpp b/src/USER-MISC/pair_gauss_cut.cpp index a000eff028..24d0b191d8 100644 --- a/src/USER-MISC/pair_gauss_cut.cpp +++ b/src/USER-MISC/pair_gauss_cut.cpp @@ -69,8 +69,7 @@ void PairGaussCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_ilp_graphene_hbn.cpp b/src/USER-MISC/pair_ilp_graphene_hbn.cpp index 6257c1d72b..d1b8a3be38 100644 --- a/src/USER-MISC/pair_ilp_graphene_hbn.cpp +++ b/src/USER-MISC/pair_ilp_graphene_hbn.cpp @@ -117,8 +117,7 @@ void PairILPGrapheneHBN::compute(int eflag, int vflag) int *ILP_neighs_i,*ILP_neighs_j; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_kolmogorov_crespi_full.cpp b/src/USER-MISC/pair_kolmogorov_crespi_full.cpp index cbcf6c7934..289ed19bd3 100644 --- a/src/USER-MISC/pair_kolmogorov_crespi_full.cpp +++ b/src/USER-MISC/pair_kolmogorov_crespi_full.cpp @@ -115,8 +115,7 @@ void PairKolmogorovCrespiFull::compute(int eflag, int vflag) int *KC_neighs_i,*KC_neighs_j; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_kolmogorov_crespi_z.cpp b/src/USER-MISC/pair_kolmogorov_crespi_z.cpp index e9583032fe..dcea990a3b 100644 --- a/src/USER-MISC/pair_kolmogorov_crespi_z.cpp +++ b/src/USER-MISC/pair_kolmogorov_crespi_z.cpp @@ -87,8 +87,7 @@ void PairKolmogorovCrespiZ::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_lebedeva_z.cpp b/src/USER-MISC/pair_lebedeva_z.cpp index 5153857c2f..0ab22e04c1 100644 --- a/src/USER-MISC/pair_lebedeva_z.cpp +++ b/src/USER-MISC/pair_lebedeva_z.cpp @@ -87,8 +87,7 @@ void PairLebedevaZ::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_lennard_mdf.cpp b/src/USER-MISC/pair_lennard_mdf.cpp index 4bc2da23f8..b51639e80e 100644 --- a/src/USER-MISC/pair_lennard_mdf.cpp +++ b/src/USER-MISC/pair_lennard_mdf.cpp @@ -65,8 +65,7 @@ void PairLJ_AB_MDF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_list.cpp b/src/USER-MISC/pair_list.cpp index aaeb586c1d..562a60aa99 100644 --- a/src/USER-MISC/pair_list.cpp +++ b/src/USER-MISC/pair_list.cpp @@ -80,9 +80,7 @@ PairList::~PairList() void PairList::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = - vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int newton_pair = force->newton_pair; diff --git a/src/USER-MISC/pair_lj_expand_coul_long.cpp b/src/USER-MISC/pair_lj_expand_coul_long.cpp index 79a3c2a497..fe21538f2d 100644 --- a/src/USER-MISC/pair_lj_expand_coul_long.cpp +++ b/src/USER-MISC/pair_lj_expand_coul_long.cpp @@ -91,8 +91,7 @@ void PairLJExpandCoulLong::compute(int eflag, int vflag) double rsq,rshift,rshiftsq,rshift2inv; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -412,8 +411,7 @@ void PairLJExpandCoulLong::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_lj_mdf.cpp b/src/USER-MISC/pair_lj_mdf.cpp index 4cd21b1dbe..ca0118ffb0 100644 --- a/src/USER-MISC/pair_lj_mdf.cpp +++ b/src/USER-MISC/pair_lj_mdf.cpp @@ -65,8 +65,7 @@ void PairLJMDF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp index 523b2ca71a..af7d23370d 100644 --- a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp +++ b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp @@ -79,8 +79,7 @@ void PairLJSFDipoleSF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_meam_spline.cpp b/src/USER-MISC/pair_meam_spline.cpp index 0300e2c7a2..f09919ce0f 100644 --- a/src/USER-MISC/pair_meam_spline.cpp +++ b/src/USER-MISC/pair_meam_spline.cpp @@ -103,12 +103,7 @@ void PairMEAMSpline::compute(int eflag, int vflag) double* const * const forces = atom->f; const int ntypes = atom->ntypes; - if (eflag || vflag) { - ev_setup(eflag, vflag); - } else { - evflag = vflag_fdotr = eflag_global = 0; - vflag_global = eflag_atom = vflag_atom = 0; - } + ev_init(eflag, vflag); // Grow per-atom array if necessary diff --git a/src/USER-MISC/pair_meam_sw_spline.cpp b/src/USER-MISC/pair_meam_sw_spline.cpp index e17c13865d..af1e8788bd 100644 --- a/src/USER-MISC/pair_meam_sw_spline.cpp +++ b/src/USER-MISC/pair_meam_sw_spline.cpp @@ -85,9 +85,7 @@ PairMEAMSWSpline::~PairMEAMSWSpline() void PairMEAMSWSpline::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag, vflag); - else evflag = vflag_fdotr = - eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag, vflag); double cutforcesq = cutoff*cutoff; diff --git a/src/USER-MISC/pair_momb.cpp b/src/USER-MISC/pair_momb.cpp index 927181ebf6..1716149a98 100644 --- a/src/USER-MISC/pair_momb.cpp +++ b/src/USER-MISC/pair_momb.cpp @@ -81,8 +81,7 @@ void PairMomb::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_morse_smooth_linear.cpp b/src/USER-MISC/pair_morse_smooth_linear.cpp index a88e7a1a27..7c7973f830 100644 --- a/src/USER-MISC/pair_morse_smooth_linear.cpp +++ b/src/USER-MISC/pair_morse_smooth_linear.cpp @@ -60,8 +60,7 @@ void PairMorseSmoothLinear::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_srp.cpp b/src/USER-MISC/pair_srp.cpp index 8f34e846c5..01deaf0fbe 100644 --- a/src/USER-MISC/pair_srp.cpp +++ b/src/USER-MISC/pair_srp.cpp @@ -143,10 +143,7 @@ void PairSRP::compute(int eflag, int vflag) { // setup energy and virial - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MISC/pair_tersoff_table.cpp b/src/USER-MISC/pair_tersoff_table.cpp index d1044cc336..e0985d1dce 100644 --- a/src/USER-MISC/pair_tersoff_table.cpp +++ b/src/USER-MISC/pair_tersoff_table.cpp @@ -117,8 +117,7 @@ void PairTersoffTable::compute(int eflag, int vflag) double evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MOFFF/angle_class2_p6.cpp b/src/USER-MOFFF/angle_class2_p6.cpp index d2a6e21e6b..e8e6f279de 100644 --- a/src/USER-MOFFF/angle_class2_p6.cpp +++ b/src/USER-MOFFF/angle_class2_p6.cpp @@ -79,8 +79,7 @@ void AngleClass2P6::compute(int eflag, int vflag) double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MOFFF/angle_cosine_buck6d.cpp b/src/USER-MOFFF/angle_cosine_buck6d.cpp index f358097802..3829d2b8dc 100644 --- a/src/USER-MOFFF/angle_cosine_buck6d.cpp +++ b/src/USER-MOFFF/angle_cosine_buck6d.cpp @@ -69,8 +69,7 @@ void AngleCosineBuck6d::compute(int eflag, int vflag) double rcu,rqu,sme,smf; eangle = evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-3 virial contribution diff --git a/src/USER-MOFFF/improper_inversion_harmonic.cpp b/src/USER-MOFFF/improper_inversion_harmonic.cpp index 8404984b53..3f1e61e54a 100644 --- a/src/USER-MOFFF/improper_inversion_harmonic.cpp +++ b/src/USER-MOFFF/improper_inversion_harmonic.cpp @@ -66,8 +66,7 @@ void ImproperInversionHarmonic::compute(int eflag, int vflag) double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z; double rrvb1,rrvb2,rrvb3,rr2vb1,rr2vb2,rr2vb3; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; int **improperlist = neighbor->improperlist; diff --git a/src/USER-MOFFF/pair_buck6d_coul_gauss_dsf.cpp b/src/USER-MOFFF/pair_buck6d_coul_gauss_dsf.cpp index 1fc4644420..282bb0c58f 100644 --- a/src/USER-MOFFF/pair_buck6d_coul_gauss_dsf.cpp +++ b/src/USER-MOFFF/pair_buck6d_coul_gauss_dsf.cpp @@ -48,29 +48,29 @@ PairBuck6dCoulGaussDSF::PairBuck6dCoulGaussDSF(LAMMPS *lmp) : Pair(lmp) PairBuck6dCoulGaussDSF::~PairBuck6dCoulGaussDSF() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(alpha_ij); - memory->destroy(f_shift_ij); - memory->destroy(e_shift_ij); - memory->destroy(buck6d1); - memory->destroy(buck6d2); - memory->destroy(buck6d3); - memory->destroy(buck6d4); - memory->destroy(c0); - memory->destroy(c1); - memory->destroy(c2); - memory->destroy(c3); - memory->destroy(c4); - memory->destroy(c5); - memory->destroy(rsmooth_sq); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(alpha_ij); + memory->destroy(f_shift_ij); + memory->destroy(e_shift_ij); + memory->destroy(buck6d1); + memory->destroy(buck6d2); + memory->destroy(buck6d3); + memory->destroy(buck6d4); + memory->destroy(c0); + memory->destroy(c1); + memory->destroy(c2); + memory->destroy(c3); + memory->destroy(c4); + memory->destroy(c5); + memory->destroy(rsmooth_sq); + memory->destroy(offset); } } @@ -87,8 +87,7 @@ void PairBuck6dCoulGaussDSF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-MOFFF/pair_buck6d_coul_gauss_long.cpp b/src/USER-MOFFF/pair_buck6d_coul_gauss_long.cpp index 1ca42d864e..d6a4121d21 100644 --- a/src/USER-MOFFF/pair_buck6d_coul_gauss_long.cpp +++ b/src/USER-MOFFF/pair_buck6d_coul_gauss_long.cpp @@ -51,27 +51,27 @@ PairBuck6dCoulGaussLong::PairBuck6dCoulGaussLong(LAMMPS *lmp) : Pair(lmp) PairBuck6dCoulGaussLong::~PairBuck6dCoulGaussLong() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(alpha_ij); - memory->destroy(buck6d1); - memory->destroy(buck6d2); - memory->destroy(buck6d3); - memory->destroy(buck6d4); - memory->destroy(c0); - memory->destroy(c1); - memory->destroy(c2); - memory->destroy(c3); - memory->destroy(c4); - memory->destroy(c5); - memory->destroy(rsmooth_sq); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(alpha_ij); + memory->destroy(buck6d1); + memory->destroy(buck6d2); + memory->destroy(buck6d3); + memory->destroy(buck6d4); + memory->destroy(c0); + memory->destroy(c1); + memory->destroy(c2); + memory->destroy(c3); + memory->destroy(c4); + memory->destroy(c5); + memory->destroy(rsmooth_sq); + memory->destroy(offset); } } @@ -89,8 +89,7 @@ void PairBuck6dCoulGaussLong::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-OMP/angle_charmm_omp.cpp b/src/USER-OMP/angle_charmm_omp.cpp index 1f24438df3..118ba00226 100644 --- a/src/USER-OMP/angle_charmm_omp.cpp +++ b/src/USER-OMP/angle_charmm_omp.cpp @@ -44,10 +44,7 @@ using namespace MathConst; void AngleCharmmOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_class2_omp.cpp b/src/USER-OMP/angle_class2_omp.cpp index bd13e20bcc..e072d136e1 100644 --- a/src/USER-OMP/angle_class2_omp.cpp +++ b/src/USER-OMP/angle_class2_omp.cpp @@ -44,10 +44,7 @@ AngleClass2OMP::AngleClass2OMP(class LAMMPS *lmp) void AngleClass2OMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_delta_omp.cpp b/src/USER-OMP/angle_cosine_delta_omp.cpp index b3bb3e1f8a..a6dfb20433 100644 --- a/src/USER-OMP/angle_cosine_delta_omp.cpp +++ b/src/USER-OMP/angle_cosine_delta_omp.cpp @@ -44,10 +44,7 @@ AngleCosineDeltaOMP::AngleCosineDeltaOMP(class LAMMPS *lmp) void AngleCosineDeltaOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_omp.cpp b/src/USER-OMP/angle_cosine_omp.cpp index 04b3870bc4..9097c8569c 100644 --- a/src/USER-OMP/angle_cosine_omp.cpp +++ b/src/USER-OMP/angle_cosine_omp.cpp @@ -44,10 +44,7 @@ AngleCosineOMP::AngleCosineOMP(class LAMMPS *lmp) void AngleCosineOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_periodic_omp.cpp b/src/USER-OMP/angle_cosine_periodic_omp.cpp index 8060ebec7b..3fcea7ad1d 100644 --- a/src/USER-OMP/angle_cosine_periodic_omp.cpp +++ b/src/USER-OMP/angle_cosine_periodic_omp.cpp @@ -46,10 +46,7 @@ AngleCosinePeriodicOMP::AngleCosinePeriodicOMP(class LAMMPS *lmp) void AngleCosinePeriodicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_shift_exp_omp.cpp b/src/USER-OMP/angle_cosine_shift_exp_omp.cpp index 3e00681ec9..6bd2feb023 100644 --- a/src/USER-OMP/angle_cosine_shift_exp_omp.cpp +++ b/src/USER-OMP/angle_cosine_shift_exp_omp.cpp @@ -44,10 +44,7 @@ AngleCosineShiftExpOMP::AngleCosineShiftExpOMP(class LAMMPS *lmp) void AngleCosineShiftExpOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_shift_omp.cpp b/src/USER-OMP/angle_cosine_shift_omp.cpp index 0ab3df4359..56486faac1 100644 --- a/src/USER-OMP/angle_cosine_shift_omp.cpp +++ b/src/USER-OMP/angle_cosine_shift_omp.cpp @@ -44,10 +44,7 @@ AngleCosineShiftOMP::AngleCosineShiftOMP(class LAMMPS *lmp) void AngleCosineShiftOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_cosine_squared_omp.cpp b/src/USER-OMP/angle_cosine_squared_omp.cpp index a1b1ffdf1a..6dd2a3bb3b 100644 --- a/src/USER-OMP/angle_cosine_squared_omp.cpp +++ b/src/USER-OMP/angle_cosine_squared_omp.cpp @@ -44,10 +44,7 @@ AngleCosineSquaredOMP::AngleCosineSquaredOMP(class LAMMPS *lmp) void AngleCosineSquaredOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_dipole_omp.cpp b/src/USER-OMP/angle_dipole_omp.cpp index 92a5ba092e..da2e819ee2 100644 --- a/src/USER-OMP/angle_dipole_omp.cpp +++ b/src/USER-OMP/angle_dipole_omp.cpp @@ -45,10 +45,7 @@ AngleDipoleOMP::AngleDipoleOMP(class LAMMPS *lmp) void AngleDipoleOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); if (!force->newton_bond) error->all(FLERR,"'newton' flag for bonded interactions must be 'on'"); diff --git a/src/USER-OMP/angle_fourier_omp.cpp b/src/USER-OMP/angle_fourier_omp.cpp index dfc713c372..b2f9b47e05 100644 --- a/src/USER-OMP/angle_fourier_omp.cpp +++ b/src/USER-OMP/angle_fourier_omp.cpp @@ -44,10 +44,7 @@ AngleFourierOMP::AngleFourierOMP(class LAMMPS *lmp) void AngleFourierOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_fourier_simple_omp.cpp b/src/USER-OMP/angle_fourier_simple_omp.cpp index dea7a88723..93532a30e5 100644 --- a/src/USER-OMP/angle_fourier_simple_omp.cpp +++ b/src/USER-OMP/angle_fourier_simple_omp.cpp @@ -44,10 +44,7 @@ AngleFourierSimpleOMP::AngleFourierSimpleOMP(class LAMMPS *lmp) void AngleFourierSimpleOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_harmonic_omp.cpp b/src/USER-OMP/angle_harmonic_omp.cpp index 0a71e5c9dd..824b254287 100644 --- a/src/USER-OMP/angle_harmonic_omp.cpp +++ b/src/USER-OMP/angle_harmonic_omp.cpp @@ -44,10 +44,7 @@ AngleHarmonicOMP::AngleHarmonicOMP(class LAMMPS *lmp) void AngleHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_quartic_omp.cpp b/src/USER-OMP/angle_quartic_omp.cpp index 97a9b14f1d..fff08ddb39 100644 --- a/src/USER-OMP/angle_quartic_omp.cpp +++ b/src/USER-OMP/angle_quartic_omp.cpp @@ -44,10 +44,7 @@ AngleQuarticOMP::AngleQuarticOMP(class LAMMPS *lmp) void AngleQuarticOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_sdk_omp.cpp b/src/USER-OMP/angle_sdk_omp.cpp index 9383a9af83..e8c762092c 100644 --- a/src/USER-OMP/angle_sdk_omp.cpp +++ b/src/USER-OMP/angle_sdk_omp.cpp @@ -46,10 +46,7 @@ AngleSDKOMP::AngleSDKOMP(class LAMMPS *lmp) void AngleSDKOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/angle_table_omp.cpp b/src/USER-OMP/angle_table_omp.cpp index c3d2307489..d9d80b744d 100644 --- a/src/USER-OMP/angle_table_omp.cpp +++ b/src/USER-OMP/angle_table_omp.cpp @@ -44,10 +44,7 @@ AngleTableOMP::AngleTableOMP(class LAMMPS *lmp) void AngleTableOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_class2_omp.cpp b/src/USER-OMP/bond_class2_omp.cpp index 1f9bcaa320..fdd73c20b0 100644 --- a/src/USER-OMP/bond_class2_omp.cpp +++ b/src/USER-OMP/bond_class2_omp.cpp @@ -40,10 +40,7 @@ BondClass2OMP::BondClass2OMP(class LAMMPS *lmp) void BondClass2OMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_fene_expand_omp.cpp b/src/USER-OMP/bond_fene_expand_omp.cpp index d002d454dd..a8eec11760 100644 --- a/src/USER-OMP/bond_fene_expand_omp.cpp +++ b/src/USER-OMP/bond_fene_expand_omp.cpp @@ -41,10 +41,7 @@ BondFENEExpandOMP::BondFENEExpandOMP(class LAMMPS *lmp) void BondFENEExpandOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_fene_omp.cpp b/src/USER-OMP/bond_fene_omp.cpp index ba958e1d6f..be7dcd4b49 100644 --- a/src/USER-OMP/bond_fene_omp.cpp +++ b/src/USER-OMP/bond_fene_omp.cpp @@ -41,10 +41,7 @@ BondFENEOMP::BondFENEOMP(class LAMMPS *lmp) void BondFENEOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_gromos_omp.cpp b/src/USER-OMP/bond_gromos_omp.cpp index bcfde436d5..8f0926c0e9 100644 --- a/src/USER-OMP/bond_gromos_omp.cpp +++ b/src/USER-OMP/bond_gromos_omp.cpp @@ -39,10 +39,7 @@ BondGromosOMP::BondGromosOMP(class LAMMPS *lmp) void BondGromosOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_harmonic_omp.cpp b/src/USER-OMP/bond_harmonic_omp.cpp index 46a93cbbdd..a3bb69c53c 100644 --- a/src/USER-OMP/bond_harmonic_omp.cpp +++ b/src/USER-OMP/bond_harmonic_omp.cpp @@ -39,10 +39,7 @@ BondHarmonicOMP::BondHarmonicOMP(class LAMMPS *lmp) void BondHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp b/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp index 5f39bb1b64..5c16e27a32 100644 --- a/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp +++ b/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp @@ -39,10 +39,7 @@ BondHarmonicShiftCutOMP::BondHarmonicShiftCutOMP(class LAMMPS *lmp) void BondHarmonicShiftCutOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_harmonic_shift_omp.cpp b/src/USER-OMP/bond_harmonic_shift_omp.cpp index 8c260bfc9b..39e957c137 100644 --- a/src/USER-OMP/bond_harmonic_shift_omp.cpp +++ b/src/USER-OMP/bond_harmonic_shift_omp.cpp @@ -39,10 +39,7 @@ BondHarmonicShiftOMP::BondHarmonicShiftOMP(class LAMMPS *lmp) void BondHarmonicShiftOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_morse_omp.cpp b/src/USER-OMP/bond_morse_omp.cpp index 0c3cded71a..c0203de0d6 100644 --- a/src/USER-OMP/bond_morse_omp.cpp +++ b/src/USER-OMP/bond_morse_omp.cpp @@ -39,10 +39,7 @@ BondMorseOMP::BondMorseOMP(class LAMMPS *lmp) void BondMorseOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_nonlinear_omp.cpp b/src/USER-OMP/bond_nonlinear_omp.cpp index cdc70eac8d..8fa3daf8ab 100644 --- a/src/USER-OMP/bond_nonlinear_omp.cpp +++ b/src/USER-OMP/bond_nonlinear_omp.cpp @@ -39,10 +39,7 @@ BondNonlinearOMP::BondNonlinearOMP(class LAMMPS *lmp) void BondNonlinearOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/bond_quartic_omp.cpp b/src/USER-OMP/bond_quartic_omp.cpp index b2b1696bb4..fd0ccaf79d 100644 --- a/src/USER-OMP/bond_quartic_omp.cpp +++ b/src/USER-OMP/bond_quartic_omp.cpp @@ -40,10 +40,7 @@ BondQuarticOMP::BondQuarticOMP(class LAMMPS *lmp) void BondQuarticOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/USER-OMP/bond_table_omp.cpp b/src/USER-OMP/bond_table_omp.cpp index 71dc237496..1616988385 100644 --- a/src/USER-OMP/bond_table_omp.cpp +++ b/src/USER-OMP/bond_table_omp.cpp @@ -39,10 +39,7 @@ BondTableOMP::BondTableOMP(class LAMMPS *lmp) void BondTableOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_charmm_omp.cpp b/src/USER-OMP/dihedral_charmm_omp.cpp index 1bed449774..b09863613e 100644 --- a/src/USER-OMP/dihedral_charmm_omp.cpp +++ b/src/USER-OMP/dihedral_charmm_omp.cpp @@ -45,10 +45,7 @@ DihedralCharmmOMP::DihedralCharmmOMP(class LAMMPS *lmp) void DihedralCharmmOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); // insure pair->ev_tally() will use 1-4 virial contribution diff --git a/src/USER-OMP/dihedral_class2_omp.cpp b/src/USER-OMP/dihedral_class2_omp.cpp index c7ae1572c7..03ac9d9bab 100644 --- a/src/USER-OMP/dihedral_class2_omp.cpp +++ b/src/USER-OMP/dihedral_class2_omp.cpp @@ -43,10 +43,7 @@ DihedralClass2OMP::DihedralClass2OMP(class LAMMPS *lmp) void DihedralClass2OMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp index c43b990028..c64cad9fc3 100644 --- a/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp +++ b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp @@ -43,10 +43,7 @@ DihedralCosineShiftExpOMP::DihedralCosineShiftExpOMP(class LAMMPS *lmp) void DihedralCosineShiftExpOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_fourier_omp.cpp b/src/USER-OMP/dihedral_fourier_omp.cpp index 319acb0beb..94bdae3795 100644 --- a/src/USER-OMP/dihedral_fourier_omp.cpp +++ b/src/USER-OMP/dihedral_fourier_omp.cpp @@ -44,10 +44,7 @@ DihedralFourierOMP::DihedralFourierOMP(class LAMMPS *lmp) void DihedralFourierOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_harmonic_omp.cpp b/src/USER-OMP/dihedral_harmonic_omp.cpp index bb659cf262..10ccbd3d9f 100644 --- a/src/USER-OMP/dihedral_harmonic_omp.cpp +++ b/src/USER-OMP/dihedral_harmonic_omp.cpp @@ -43,10 +43,7 @@ DihedralHarmonicOMP::DihedralHarmonicOMP(class LAMMPS *lmp) void DihedralHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_helix_omp.cpp b/src/USER-OMP/dihedral_helix_omp.cpp index e40f084e54..8c8e29cac0 100644 --- a/src/USER-OMP/dihedral_helix_omp.cpp +++ b/src/USER-OMP/dihedral_helix_omp.cpp @@ -46,10 +46,7 @@ DihedralHelixOMP::DihedralHelixOMP(class LAMMPS *lmp) void DihedralHelixOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_multi_harmonic_omp.cpp b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp index e10fc7b94a..38961e1746 100644 --- a/src/USER-OMP/dihedral_multi_harmonic_omp.cpp +++ b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp @@ -43,10 +43,7 @@ DihedralMultiHarmonicOMP::DihedralMultiHarmonicOMP(class LAMMPS *lmp) void DihedralMultiHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_nharmonic_omp.cpp b/src/USER-OMP/dihedral_nharmonic_omp.cpp index ad758fc892..e74238265d 100644 --- a/src/USER-OMP/dihedral_nharmonic_omp.cpp +++ b/src/USER-OMP/dihedral_nharmonic_omp.cpp @@ -43,10 +43,7 @@ DihedralNHarmonicOMP::DihedralNHarmonicOMP(class LAMMPS *lmp) void DihedralNHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_opls_omp.cpp b/src/USER-OMP/dihedral_opls_omp.cpp index 53fddf51cb..64eaffe6fe 100644 --- a/src/USER-OMP/dihedral_opls_omp.cpp +++ b/src/USER-OMP/dihedral_opls_omp.cpp @@ -44,10 +44,7 @@ DihedralOPLSOMP::DihedralOPLSOMP(class LAMMPS *lmp) void DihedralOPLSOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_quadratic_omp.cpp b/src/USER-OMP/dihedral_quadratic_omp.cpp index f6110cd505..8df622b847 100644 --- a/src/USER-OMP/dihedral_quadratic_omp.cpp +++ b/src/USER-OMP/dihedral_quadratic_omp.cpp @@ -44,10 +44,7 @@ DihedralQuadraticOMP::DihedralQuadraticOMP(class LAMMPS *lmp) void DihedralQuadraticOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/dihedral_table_omp.cpp b/src/USER-OMP/dihedral_table_omp.cpp index 1457f7b2bf..792ee90c26 100644 --- a/src/USER-OMP/dihedral_table_omp.cpp +++ b/src/USER-OMP/dihedral_table_omp.cpp @@ -111,10 +111,7 @@ DihedralTableOMP::DihedralTableOMP(class LAMMPS *lmp) void DihedralTableOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/ewald_omp.cpp b/src/USER-OMP/ewald_omp.cpp index 1fece5c31b..b56fc25142 100644 --- a/src/USER-OMP/ewald_omp.cpp +++ b/src/USER-OMP/ewald_omp.cpp @@ -61,9 +61,7 @@ void EwaldOMP::compute(int eflag, int vflag) { // set energy/virial flags - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // extend size of per-atom arrays if necessary diff --git a/src/USER-OMP/improper_class2_omp.cpp b/src/USER-OMP/improper_class2_omp.cpp index 7184cbeb69..c2b493f425 100644 --- a/src/USER-OMP/improper_class2_omp.cpp +++ b/src/USER-OMP/improper_class2_omp.cpp @@ -43,10 +43,7 @@ ImproperClass2OMP::ImproperClass2OMP(class LAMMPS *lmp) void ImproperClass2OMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_cossq_omp.cpp b/src/USER-OMP/improper_cossq_omp.cpp index 022cfa6adf..3b328e5b78 100644 --- a/src/USER-OMP/improper_cossq_omp.cpp +++ b/src/USER-OMP/improper_cossq_omp.cpp @@ -43,10 +43,7 @@ ImproperCossqOMP::ImproperCossqOMP(class LAMMPS *lmp) void ImproperCossqOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_cvff_omp.cpp b/src/USER-OMP/improper_cvff_omp.cpp index 78c5a55e05..fe1fc45bec 100644 --- a/src/USER-OMP/improper_cvff_omp.cpp +++ b/src/USER-OMP/improper_cvff_omp.cpp @@ -43,10 +43,7 @@ ImproperCvffOMP::ImproperCvffOMP(class LAMMPS *lmp) void ImproperCvffOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_fourier_omp.cpp b/src/USER-OMP/improper_fourier_omp.cpp index 77dd36b64f..b5af428cb9 100644 --- a/src/USER-OMP/improper_fourier_omp.cpp +++ b/src/USER-OMP/improper_fourier_omp.cpp @@ -43,10 +43,7 @@ ImproperFourierOMP::ImproperFourierOMP(class LAMMPS *lmp) void ImproperFourierOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_harmonic_omp.cpp b/src/USER-OMP/improper_harmonic_omp.cpp index 3f1895142d..6e02d0968e 100644 --- a/src/USER-OMP/improper_harmonic_omp.cpp +++ b/src/USER-OMP/improper_harmonic_omp.cpp @@ -43,10 +43,7 @@ ImproperHarmonicOMP::ImproperHarmonicOMP(class LAMMPS *lmp) void ImproperHarmonicOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_ring_omp.cpp b/src/USER-OMP/improper_ring_omp.cpp index 7970de3839..e198b99337 100644 --- a/src/USER-OMP/improper_ring_omp.cpp +++ b/src/USER-OMP/improper_ring_omp.cpp @@ -45,10 +45,7 @@ ImproperRingOMP::ImproperRingOMP(class LAMMPS *lmp) void ImproperRingOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/improper_umbrella_omp.cpp b/src/USER-OMP/improper_umbrella_omp.cpp index 69d41176c6..ceaca35074 100644 --- a/src/USER-OMP/improper_umbrella_omp.cpp +++ b/src/USER-OMP/improper_umbrella_omp.cpp @@ -43,10 +43,7 @@ ImproperUmbrellaOMP::ImproperUmbrellaOMP(class LAMMPS *lmp) void ImproperUmbrellaOMP::compute(int eflag, int vflag) { - - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/msm_cg_omp.cpp b/src/USER-OMP/msm_cg_omp.cpp index dee9fd85b6..8a920e05d5 100644 --- a/src/USER-OMP/msm_cg_omp.cpp +++ b/src/USER-OMP/msm_cg_omp.cpp @@ -90,9 +90,7 @@ void MSMCGOMP::compute(int eflag, int vflag) // set energy/virial flags - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = eflag_either = vflag_either = 0; + ev_init(eflag,vflag); // invoke allocate_peratom() if needed for first time diff --git a/src/USER-OMP/pair_adp_omp.cpp b/src/USER-OMP/pair_adp_omp.cpp index 264169773b..645d697994 100644 --- a/src/USER-OMP/pair_adp_omp.cpp +++ b/src/USER-OMP/pair_adp_omp.cpp @@ -39,9 +39,7 @@ PairADPOMP::PairADPOMP(LAMMPS *lmp) : void PairADPOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_agni_omp.cpp b/src/USER-OMP/pair_agni_omp.cpp index e8f003ea88..854bcbebf3 100644 --- a/src/USER-OMP/pair_agni_omp.cpp +++ b/src/USER-OMP/pair_agni_omp.cpp @@ -42,9 +42,7 @@ PairAGNIOMP::PairAGNIOMP(LAMMPS *lmp) : void PairAGNIOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_airebo_omp.cpp b/src/USER-OMP/pair_airebo_omp.cpp index ec5c02d727..bed6c81ee4 100644 --- a/src/USER-OMP/pair_airebo_omp.cpp +++ b/src/USER-OMP/pair_airebo_omp.cpp @@ -49,9 +49,7 @@ void PairAIREBOOMP::compute(int eflag, int vflag) { double pv0=0.0,pv1=0.0,pv2=0.0; - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); REBO_neigh_thr(); diff --git a/src/USER-OMP/pair_beck_omp.cpp b/src/USER-OMP/pair_beck_omp.cpp index 1494ec2987..90c3777932 100644 --- a/src/USER-OMP/pair_beck_omp.cpp +++ b/src/USER-OMP/pair_beck_omp.cpp @@ -38,9 +38,7 @@ PairBeckOMP::PairBeckOMP(LAMMPS *lmp) : void PairBeckOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_born_coul_long_omp.cpp b/src/USER-OMP/pair_born_coul_long_omp.cpp index f198184406..a5df8f8182 100644 --- a/src/USER-OMP/pair_born_coul_long_omp.cpp +++ b/src/USER-OMP/pair_born_coul_long_omp.cpp @@ -44,9 +44,7 @@ PairBornCoulLongOMP::PairBornCoulLongOMP(LAMMPS *lmp) : void PairBornCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_born_coul_msm_omp.cpp b/src/USER-OMP/pair_born_coul_msm_omp.cpp index 1b4757359f..ad1e5e63cd 100644 --- a/src/USER-OMP/pair_born_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_born_coul_msm_omp.cpp @@ -41,9 +41,7 @@ void PairBornCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " "with OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_born_coul_wolf_omp.cpp b/src/USER-OMP/pair_born_coul_wolf_omp.cpp index 7904181ba5..567eddc9cb 100644 --- a/src/USER-OMP/pair_born_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_born_coul_wolf_omp.cpp @@ -38,9 +38,7 @@ PairBornCoulWolfOMP::PairBornCoulWolfOMP(LAMMPS *lmp) : void PairBornCoulWolfOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_born_omp.cpp b/src/USER-OMP/pair_born_omp.cpp index f75d4b9f35..fce2013745 100644 --- a/src/USER-OMP/pair_born_omp.cpp +++ b/src/USER-OMP/pair_born_omp.cpp @@ -36,9 +36,7 @@ PairBornOMP::PairBornOMP(LAMMPS *lmp) : void PairBornOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_brownian_omp.cpp b/src/USER-OMP/pair_brownian_omp.cpp index b1af821bba..cef9fb0955 100644 --- a/src/USER-OMP/pair_brownian_omp.cpp +++ b/src/USER-OMP/pair_brownian_omp.cpp @@ -68,9 +68,7 @@ PairBrownianOMP::~PairBrownianOMP() void PairBrownianOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/USER-OMP/pair_brownian_poly_omp.cpp b/src/USER-OMP/pair_brownian_poly_omp.cpp index 2e677ed535..239a820242 100644 --- a/src/USER-OMP/pair_brownian_poly_omp.cpp +++ b/src/USER-OMP/pair_brownian_poly_omp.cpp @@ -68,9 +68,7 @@ PairBrownianPolyOMP::~PairBrownianPolyOMP() void PairBrownianPolyOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/USER-OMP/pair_buck_coul_cut_omp.cpp b/src/USER-OMP/pair_buck_coul_cut_omp.cpp index 8fa6be06b2..b9b77dc2b6 100644 --- a/src/USER-OMP/pair_buck_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_cut_omp.cpp @@ -36,9 +36,7 @@ PairBuckCoulCutOMP::PairBuckCoulCutOMP(LAMMPS *lmp) : void PairBuckCoulCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_buck_coul_long_omp.cpp b/src/USER-OMP/pair_buck_coul_long_omp.cpp index 4d30eb3e82..951ba0688c 100644 --- a/src/USER-OMP/pair_buck_coul_long_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_long_omp.cpp @@ -44,9 +44,7 @@ PairBuckCoulLongOMP::PairBuckCoulLongOMP(LAMMPS *lmp) : void PairBuckCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_buck_coul_msm_omp.cpp b/src/USER-OMP/pair_buck_coul_msm_omp.cpp index a8bca36394..6226191627 100644 --- a/src/USER-OMP/pair_buck_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_msm_omp.cpp @@ -41,9 +41,7 @@ void PairBuckCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " "with OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_buck_long_coul_long_omp.cpp b/src/USER-OMP/pair_buck_long_coul_long_omp.cpp index acb95ab76c..20d380a464 100644 --- a/src/USER-OMP/pair_buck_long_coul_long_omp.cpp +++ b/src/USER-OMP/pair_buck_long_coul_long_omp.cpp @@ -46,9 +46,8 @@ PairBuckLongCoulLongOMP::PairBuckLongCoulLongOMP(LAMMPS *lmp) : void PairBuckLongCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); + const int order1 = ewald_order&(1<<1); const int order6 = ewald_order&(1<<6); diff --git a/src/USER-OMP/pair_buck_omp.cpp b/src/USER-OMP/pair_buck_omp.cpp index f3fa32a5ea..cc7e81b9c5 100644 --- a/src/USER-OMP/pair_buck_omp.cpp +++ b/src/USER-OMP/pair_buck_omp.cpp @@ -36,9 +36,7 @@ PairBuckOMP::PairBuckOMP(LAMMPS *lmp) : void PairBuckOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_colloid_omp.cpp b/src/USER-OMP/pair_colloid_omp.cpp index 536b7644bd..64613cb31d 100644 --- a/src/USER-OMP/pair_colloid_omp.cpp +++ b/src/USER-OMP/pair_colloid_omp.cpp @@ -39,9 +39,7 @@ PairColloidOMP::PairColloidOMP(LAMMPS *lmp) : void PairColloidOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_comb_omp.cpp b/src/USER-OMP/pair_comb_omp.cpp index 8a77ab955f..be641dd0b9 100644 --- a/src/USER-OMP/pair_comb_omp.cpp +++ b/src/USER-OMP/pair_comb_omp.cpp @@ -41,9 +41,7 @@ PairCombOMP::PairCombOMP(LAMMPS *lmp) : void PairCombOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_cut_omp.cpp b/src/USER-OMP/pair_coul_cut_omp.cpp index b9ac72421e..056daf210a 100644 --- a/src/USER-OMP/pair_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_coul_cut_omp.cpp @@ -36,9 +36,7 @@ PairCoulCutOMP::PairCoulCutOMP(LAMMPS *lmp) : void PairCoulCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_cut_soft_omp.cpp b/src/USER-OMP/pair_coul_cut_soft_omp.cpp index c7e8c5e560..70997da62b 100644 --- a/src/USER-OMP/pair_coul_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_coul_cut_soft_omp.cpp @@ -36,9 +36,7 @@ PairCoulCutSoftOMP::PairCoulCutSoftOMP(LAMMPS *lmp) : void PairCoulCutSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_debye_omp.cpp b/src/USER-OMP/pair_coul_debye_omp.cpp index cb7a9025ce..d202e314bf 100644 --- a/src/USER-OMP/pair_coul_debye_omp.cpp +++ b/src/USER-OMP/pair_coul_debye_omp.cpp @@ -36,9 +36,7 @@ PairCoulDebyeOMP::PairCoulDebyeOMP(LAMMPS *lmp) : void PairCoulDebyeOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_diel_omp.cpp b/src/USER-OMP/pair_coul_diel_omp.cpp index c75e36b55e..f2bb6a46bf 100644 --- a/src/USER-OMP/pair_coul_diel_omp.cpp +++ b/src/USER-OMP/pair_coul_diel_omp.cpp @@ -36,9 +36,7 @@ PairCoulDielOMP::PairCoulDielOMP(LAMMPS *lmp) : void PairCoulDielOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_dsf_omp.cpp b/src/USER-OMP/pair_coul_dsf_omp.cpp index 740e3242ad..217fb844c3 100644 --- a/src/USER-OMP/pair_coul_dsf_omp.cpp +++ b/src/USER-OMP/pair_coul_dsf_omp.cpp @@ -46,9 +46,7 @@ PairCoulDSFOMP::PairCoulDSFOMP(LAMMPS *lmp) : void PairCoulDSFOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_long_omp.cpp b/src/USER-OMP/pair_coul_long_omp.cpp index eb74bb9615..1e3170c73c 100644 --- a/src/USER-OMP/pair_coul_long_omp.cpp +++ b/src/USER-OMP/pair_coul_long_omp.cpp @@ -45,9 +45,7 @@ PairCoulLongOMP::PairCoulLongOMP(LAMMPS *lmp) : void PairCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_long_soft_omp.cpp b/src/USER-OMP/pair_coul_long_soft_omp.cpp index 4e65483a17..dd1fc1030d 100644 --- a/src/USER-OMP/pair_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_coul_long_soft_omp.cpp @@ -44,9 +44,7 @@ PairCoulLongSoftOMP::PairCoulLongSoftOMP(LAMMPS *lmp) : void PairCoulLongSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_msm_omp.cpp b/src/USER-OMP/pair_coul_msm_omp.cpp index f4bc279532..9b50b86954 100644 --- a/src/USER-OMP/pair_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_coul_msm_omp.cpp @@ -42,9 +42,7 @@ void PairCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' with " "OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_coul_wolf_omp.cpp b/src/USER-OMP/pair_coul_wolf_omp.cpp index bc86cdbf5d..0913a2b188 100644 --- a/src/USER-OMP/pair_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_coul_wolf_omp.cpp @@ -38,9 +38,7 @@ PairCoulWolfOMP::PairCoulWolfOMP(LAMMPS *lmp) : void PairCoulWolfOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_dpd_omp.cpp b/src/USER-OMP/pair_dpd_omp.cpp index 29b5568def..77db3d9183 100644 --- a/src/USER-OMP/pair_dpd_omp.cpp +++ b/src/USER-OMP/pair_dpd_omp.cpp @@ -55,9 +55,7 @@ PairDPDOMP::~PairDPDOMP() void PairDPDOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/USER-OMP/pair_dpd_tstat_omp.cpp b/src/USER-OMP/pair_dpd_tstat_omp.cpp index 0a9e96fa0c..d7233a16c5 100644 --- a/src/USER-OMP/pair_dpd_tstat_omp.cpp +++ b/src/USER-OMP/pair_dpd_tstat_omp.cpp @@ -55,9 +55,7 @@ PairDPDTstatOMP::~PairDPDTstatOMP() void PairDPDTstatOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int inum = list->inum; diff --git a/src/USER-OMP/pair_eam_cd_omp.cpp b/src/USER-OMP/pair_eam_cd_omp.cpp index 68c01c83d2..51b83f3bf5 100644 --- a/src/USER-OMP/pair_eam_cd_omp.cpp +++ b/src/USER-OMP/pair_eam_cd_omp.cpp @@ -55,9 +55,7 @@ PairEAMCDOMP::PairEAMCDOMP(LAMMPS *lmp, int _cdeamVersion) : void PairEAMCDOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_eam_omp.cpp b/src/USER-OMP/pair_eam_omp.cpp index 492ff79769..99417f27da 100644 --- a/src/USER-OMP/pair_eam_omp.cpp +++ b/src/USER-OMP/pair_eam_omp.cpp @@ -39,9 +39,7 @@ PairEAMOMP::PairEAMOMP(LAMMPS *lmp) : void PairEAMOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_edip_omp.cpp b/src/USER-OMP/pair_edip_omp.cpp index 3392160d92..144d893c1c 100644 --- a/src/USER-OMP/pair_edip_omp.cpp +++ b/src/USER-OMP/pair_edip_omp.cpp @@ -43,9 +43,7 @@ PairEDIPOMP::PairEDIPOMP(LAMMPS *lmp) : void PairEDIPOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_eim_omp.cpp b/src/USER-OMP/pair_eim_omp.cpp index 6a3e0bc529..2ecd6f8ec7 100644 --- a/src/USER-OMP/pair_eim_omp.cpp +++ b/src/USER-OMP/pair_eim_omp.cpp @@ -39,9 +39,7 @@ PairEIMOMP::PairEIMOMP(LAMMPS *lmp) : void PairEIMOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_gauss_cut_omp.cpp b/src/USER-OMP/pair_gauss_cut_omp.cpp index 9a41dcc87e..928312240b 100644 --- a/src/USER-OMP/pair_gauss_cut_omp.cpp +++ b/src/USER-OMP/pair_gauss_cut_omp.cpp @@ -36,9 +36,7 @@ PairGaussCutOMP::PairGaussCutOMP(LAMMPS *lmp) : void PairGaussCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_gauss_omp.cpp b/src/USER-OMP/pair_gauss_omp.cpp index 059c77c677..159f1c3e31 100644 --- a/src/USER-OMP/pair_gauss_omp.cpp +++ b/src/USER-OMP/pair_gauss_omp.cpp @@ -37,9 +37,7 @@ PairGaussOMP::PairGaussOMP(LAMMPS *lmp) : void PairGaussOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_gayberne_omp.cpp b/src/USER-OMP/pair_gayberne_omp.cpp index 5b0ff67afe..cfa05745ff 100644 --- a/src/USER-OMP/pair_gayberne_omp.cpp +++ b/src/USER-OMP/pair_gayberne_omp.cpp @@ -38,9 +38,7 @@ PairGayBerneOMP::PairGayBerneOMP(LAMMPS *lmp) : void PairGayBerneOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_gran_hertz_history_omp.cpp b/src/USER-OMP/pair_gran_hertz_history_omp.cpp index 9854b8f9ff..271c70e9b9 100644 --- a/src/USER-OMP/pair_gran_hertz_history_omp.cpp +++ b/src/USER-OMP/pair_gran_hertz_history_omp.cpp @@ -40,9 +40,7 @@ PairGranHertzHistoryOMP::PairGranHertzHistoryOMP(LAMMPS *lmp) : void PairGranHertzHistoryOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_gran_hooke_history_omp.cpp b/src/USER-OMP/pair_gran_hooke_history_omp.cpp index 2327fc815a..9a0e8aab76 100644 --- a/src/USER-OMP/pair_gran_hooke_history_omp.cpp +++ b/src/USER-OMP/pair_gran_hooke_history_omp.cpp @@ -41,9 +41,7 @@ PairGranHookeHistoryOMP::PairGranHookeHistoryOMP(LAMMPS *lmp) : void PairGranHookeHistoryOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int shearupdate = (update->setupflag) ? 0 : 1; diff --git a/src/USER-OMP/pair_gran_hooke_omp.cpp b/src/USER-OMP/pair_gran_hooke_omp.cpp index 876fe9c4de..d226ceaa14 100644 --- a/src/USER-OMP/pair_gran_hooke_omp.cpp +++ b/src/USER-OMP/pair_gran_hooke_omp.cpp @@ -38,9 +38,7 @@ PairGranHookeOMP::PairGranHookeOMP(LAMMPS *lmp) : void PairGranHookeOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp index ec9da78b16..ea56ff51b5 100644 --- a/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp +++ b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp @@ -57,9 +57,7 @@ PairHbondDreidingLJOMP::~PairHbondDreidingLJOMP() void PairHbondDreidingLJOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp index 4965be43b8..1cff2de3b2 100644 --- a/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp +++ b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp @@ -57,9 +57,7 @@ PairHbondDreidingMorseOMP::~PairHbondDreidingMorseOMP() void PairHbondDreidingMorseOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj96_cut_omp.cpp b/src/USER-OMP/pair_lj96_cut_omp.cpp index 1cca674369..9ba8e09a54 100644 --- a/src/USER-OMP/pair_lj96_cut_omp.cpp +++ b/src/USER-OMP/pair_lj96_cut_omp.cpp @@ -37,9 +37,7 @@ PairLJ96CutOMP::PairLJ96CutOMP(LAMMPS *lmp) : void PairLJ96CutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp index 2f72f3851e..3dc9b77c0f 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp @@ -36,9 +36,7 @@ PairLJCharmmCoulCharmmImplicitOMP::PairLJCharmmCoulCharmmImplicitOMP(LAMMPS *lmp void PairLJCharmmCoulCharmmImplicitOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp index b61a80a178..f9230996f0 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp @@ -36,9 +36,7 @@ PairLJCharmmCoulCharmmOMP::PairLJCharmmCoulCharmmOMP(LAMMPS *lmp) : void PairLJCharmmCoulCharmmOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp index 5351ab9aea..4bdaa3519f 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp @@ -37,9 +37,7 @@ PairLJCharmmCoulLongOMP::PairLJCharmmCoulLongOMP(LAMMPS *lmp) : void PairLJCharmmCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp index ea5d739e49..1f6daf052c 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp @@ -37,9 +37,7 @@ PairLJCharmmCoulLongSoftOMP::PairLJCharmmCoulLongSoftOMP(LAMMPS *lmp) : void PairLJCharmmCoulLongSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp index 3baa9597a8..eab62d919e 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp @@ -42,9 +42,7 @@ void PairLJCharmmCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " "with OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp index 38390918c7..b9ffad134b 100644 --- a/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp @@ -36,9 +36,7 @@ PairLJClass2CoulCutOMP::PairLJClass2CoulCutOMP(LAMMPS *lmp) : void PairLJClass2CoulCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp index f47672c9bc..e5995363ad 100644 --- a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp @@ -44,9 +44,7 @@ PairLJClass2CoulLongOMP::PairLJClass2CoulLongOMP(LAMMPS *lmp) : void PairLJClass2CoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_class2_omp.cpp b/src/USER-OMP/pair_lj_class2_omp.cpp index 7ab4626c3e..67715572ae 100644 --- a/src/USER-OMP/pair_lj_class2_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_omp.cpp @@ -36,9 +36,7 @@ PairLJClass2OMP::PairLJClass2OMP(LAMMPS *lmp) : void PairLJClass2OMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cubic_omp.cpp b/src/USER-OMP/pair_lj_cubic_omp.cpp index 3e8adb33b8..5fa4f92f45 100644 --- a/src/USER-OMP/pair_lj_cubic_omp.cpp +++ b/src/USER-OMP/pair_lj_cubic_omp.cpp @@ -37,9 +37,7 @@ PairLJCubicOMP::PairLJCubicOMP(LAMMPS *lmp) : void PairLJCubicOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp index ea560a09bf..69cc2d3042 100644 --- a/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp @@ -36,9 +36,7 @@ PairLJCutCoulCutOMP::PairLJCutCoulCutOMP(LAMMPS *lmp) : void PairLJCutCoulCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp index 4ef12bb1bb..5dfa414bd4 100644 --- a/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp @@ -36,9 +36,7 @@ PairLJCutCoulCutSoftOMP::PairLJCutCoulCutSoftOMP(LAMMPS *lmp) : void PairLJCutCoulCutSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp index 9163e98edd..4644e565a7 100644 --- a/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp @@ -36,9 +36,7 @@ PairLJCutCoulDebyeOMP::PairLJCutCoulDebyeOMP(LAMMPS *lmp) : void PairLJCutCoulDebyeOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp index 9d9c098f87..13d877ec07 100644 --- a/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp @@ -46,9 +46,7 @@ PairLJCutCoulDSFOMP::PairLJCutCoulDSFOMP(LAMMPS *lmp) : void PairLJCutCoulDSFOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp index d2eaae4ca4..d4fe5fd2a7 100644 --- a/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp @@ -45,9 +45,7 @@ PairLJCutCoulLongOMP::PairLJCutCoulLongOMP(LAMMPS *lmp) : void PairLJCutCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp index 725bfe4724..4a0ef73f60 100644 --- a/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp @@ -45,9 +45,7 @@ PairLJCutCoulLongSoftOMP::PairLJCutCoulLongSoftOMP(LAMMPS *lmp) : void PairLJCutCoulLongSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp index 234204af93..4c34b73622 100644 --- a/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp @@ -42,9 +42,7 @@ void PairLJCutCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " "with OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp index 36ef9d54f9..052be0a2fa 100644 --- a/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp @@ -38,9 +38,7 @@ PairLJCutCoulWolfOMP::PairLJCutCoulWolfOMP(LAMMPS *lmp) : void PairLJCutCoulWolfOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp index d4145d9835..55359db3be 100644 --- a/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp @@ -36,9 +36,7 @@ PairLJCutDipoleCutOMP::PairLJCutDipoleCutOMP(LAMMPS *lmp) : void PairLJCutDipoleCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_omp.cpp index 319257b56b..34068185d2 100644 --- a/src/USER-OMP/pair_lj_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_omp.cpp @@ -37,9 +37,7 @@ PairLJCutOMP::PairLJCutOMP(LAMMPS *lmp) : void PairLJCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_soft_omp.cpp index 7698f19b95..9bbe58146c 100644 --- a/src/USER-OMP/pair_lj_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_soft_omp.cpp @@ -37,9 +37,7 @@ PairLJCutSoftOMP::PairLJCutSoftOMP(LAMMPS *lmp) : void PairLJCutSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp b/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp index 536d5bcb86..85cab4fe7b 100644 --- a/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp @@ -57,9 +57,7 @@ PairLJCutTholeLongOMP::PairLJCutTholeLongOMP(LAMMPS *lmp) : void PairLJCutTholeLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp index 619e970bb0..288724cd77 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp @@ -62,8 +62,7 @@ PairLJCutTIP4PCutOMP::~PairLJCutTIP4PCutOMP() void PairLJCutTIP4PCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp index ca8f450dc6..e2c1da1a89 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp @@ -62,8 +62,7 @@ PairLJCutTIP4PLongOMP::~PairLJCutTIP4PLongOMP() void PairLJCutTIP4PLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp index 80b17fba96..6baba8aec4 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp @@ -62,8 +62,7 @@ PairLJCutTIP4PLongSoftOMP::~PairLJCutTIP4PLongSoftOMP() void PairLJCutTIP4PLongSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_lj_expand_omp.cpp b/src/USER-OMP/pair_lj_expand_omp.cpp index 064ea97809..6c6ddb045e 100644 --- a/src/USER-OMP/pair_lj_expand_omp.cpp +++ b/src/USER-OMP/pair_lj_expand_omp.cpp @@ -36,9 +36,7 @@ PairLJExpandOMP::PairLJExpandOMP(LAMMPS *lmp) : void PairLJExpandOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp index c87f369d11..77c5bc0da0 100644 --- a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp +++ b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp @@ -36,9 +36,7 @@ PairLJGromacsCoulGromacsOMP::PairLJGromacsCoulGromacsOMP(LAMMPS *lmp) : void PairLJGromacsCoulGromacsOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_omp.cpp index 1d7cec5eef..15bcb08eed 100644 --- a/src/USER-OMP/pair_lj_gromacs_omp.cpp +++ b/src/USER-OMP/pair_lj_gromacs_omp.cpp @@ -36,9 +36,7 @@ PairLJGromacsOMP::PairLJGromacsOMP(LAMMPS *lmp) : void PairLJGromacsOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_long_coul_long_omp.cpp b/src/USER-OMP/pair_lj_long_coul_long_omp.cpp index 391840285b..c9edc087b6 100644 --- a/src/USER-OMP/pair_lj_long_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_long_coul_long_omp.cpp @@ -46,9 +46,8 @@ PairLJLongCoulLongOMP::PairLJLongCoulLongOMP(LAMMPS *lmp) : void PairLJLongCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); + const int order1 = ewald_order&(1<<1); const int order6 = ewald_order&(1<<6); diff --git a/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp b/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp index 19278d19bb..6d7c5b5638 100644 --- a/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp @@ -63,9 +63,7 @@ PairLJLongTIP4PLongOMP::~PairLJLongTIP4PLongOMP() void PairLJLongTIP4PLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // reallocate hneigh_thr & newsite_thr if necessary // initialize hneigh_thr[0] to -1 on steps when reneighboring occured diff --git a/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp b/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp index c87f26204e..16c87d5ed4 100644 --- a/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp @@ -38,9 +38,7 @@ PairLJSDKCoulLongOMP::PairLJSDKCoulLongOMP(LAMMPS *lmp) : void PairLJSDKCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp index 8ff0cfe921..1002cc193e 100644 --- a/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp @@ -44,9 +44,7 @@ void PairLJSDKCoulMSMOMP::compute(int eflag, int vflag) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " "with OMP MSM Pair styles"); - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_sdk_omp.cpp b/src/USER-OMP/pair_lj_sdk_omp.cpp index e107399316..1e64973cbb 100644 --- a/src/USER-OMP/pair_lj_sdk_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_omp.cpp @@ -40,9 +40,7 @@ PairLJSDKOMP::PairLJSDKOMP(LAMMPS *lmp) : void PairLJSDKOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp b/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp index 250f6ff272..aea22fc4df 100644 --- a/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp +++ b/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp @@ -36,9 +36,7 @@ PairLJSFDipoleSFOMP::PairLJSFDipoleSFOMP(LAMMPS *lmp) : void PairLJSFDipoleSFOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_smooth_linear_omp.cpp b/src/USER-OMP/pair_lj_smooth_linear_omp.cpp index b06de641f5..420c55b0ed 100644 --- a/src/USER-OMP/pair_lj_smooth_linear_omp.cpp +++ b/src/USER-OMP/pair_lj_smooth_linear_omp.cpp @@ -36,9 +36,7 @@ PairLJSmoothLinearOMP::PairLJSmoothLinearOMP(LAMMPS *lmp) : void PairLJSmoothLinearOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lj_smooth_omp.cpp b/src/USER-OMP/pair_lj_smooth_omp.cpp index 36935616bf..d61dc19ff1 100644 --- a/src/USER-OMP/pair_lj_smooth_omp.cpp +++ b/src/USER-OMP/pair_lj_smooth_omp.cpp @@ -36,9 +36,7 @@ PairLJSmoothOMP::PairLJSmoothOMP(LAMMPS *lmp) : void PairLJSmoothOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lubricate_omp.cpp b/src/USER-OMP/pair_lubricate_omp.cpp index a7f9fc65b5..132dbc575e 100644 --- a/src/USER-OMP/pair_lubricate_omp.cpp +++ b/src/USER-OMP/pair_lubricate_omp.cpp @@ -54,9 +54,7 @@ PairLubricateOMP::~PairLubricateOMP() void PairLubricateOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_lubricate_poly_omp.cpp b/src/USER-OMP/pair_lubricate_poly_omp.cpp index 3f0ef1dba6..3a5f03364d 100644 --- a/src/USER-OMP/pair_lubricate_poly_omp.cpp +++ b/src/USER-OMP/pair_lubricate_poly_omp.cpp @@ -54,9 +54,7 @@ PairLubricatePolyOMP::~PairLubricatePolyOMP() void PairLubricatePolyOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_meam_spline_omp.cpp b/src/USER-OMP/pair_meam_spline_omp.cpp index dfc3b978a2..e9307c8666 100644 --- a/src/USER-OMP/pair_meam_spline_omp.cpp +++ b/src/USER-OMP/pair_meam_spline_omp.cpp @@ -39,9 +39,7 @@ PairMEAMSplineOMP::PairMEAMSplineOMP(LAMMPS *lmp) : void PairMEAMSplineOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_morse_omp.cpp b/src/USER-OMP/pair_morse_omp.cpp index 922b67b463..bf57019f11 100644 --- a/src/USER-OMP/pair_morse_omp.cpp +++ b/src/USER-OMP/pair_morse_omp.cpp @@ -36,9 +36,7 @@ PairMorseOMP::PairMorseOMP(LAMMPS *lmp) : void PairMorseOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_morse_smooth_linear_omp.cpp b/src/USER-OMP/pair_morse_smooth_linear_omp.cpp index 61cef69c37..5ba6acb439 100644 --- a/src/USER-OMP/pair_morse_smooth_linear_omp.cpp +++ b/src/USER-OMP/pair_morse_smooth_linear_omp.cpp @@ -40,9 +40,7 @@ PairMorseSmoothLinearOMP::PairMorseSmoothLinearOMP(LAMMPS *lmp) : void PairMorseSmoothLinearOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp b/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp index fcbf5dbabb..d62b4e5c62 100644 --- a/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp @@ -36,9 +36,7 @@ PairNMCutCoulCutOMP::PairNMCutCoulCutOMP(LAMMPS *lmp) : void PairNMCutCoulCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp b/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp index b31387dbfe..a8696c74a1 100644 --- a/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp @@ -44,9 +44,7 @@ PairNMCutCoulLongOMP::PairNMCutCoulLongOMP(LAMMPS *lmp) : void PairNMCutCoulLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_nm_cut_omp.cpp b/src/USER-OMP/pair_nm_cut_omp.cpp index 79cd046311..9304b10ef0 100644 --- a/src/USER-OMP/pair_nm_cut_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_omp.cpp @@ -36,9 +36,7 @@ PairNMCutOMP::PairNMCutOMP(LAMMPS *lmp) : void PairNMCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_peri_lps_omp.cpp b/src/USER-OMP/pair_peri_lps_omp.cpp index 7b174face7..61db45363e 100644 --- a/src/USER-OMP/pair_peri_lps_omp.cpp +++ b/src/USER-OMP/pair_peri_lps_omp.cpp @@ -45,9 +45,7 @@ PairPeriLPSOMP::PairPeriLPSOMP(LAMMPS *lmp) : void PairPeriLPSOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_peri_pmb_omp.cpp b/src/USER-OMP/pair_peri_pmb_omp.cpp index 8199d8aa47..b1816e4052 100644 --- a/src/USER-OMP/pair_peri_pmb_omp.cpp +++ b/src/USER-OMP/pair_peri_pmb_omp.cpp @@ -43,9 +43,7 @@ PairPeriPMBOMP::PairPeriPMBOMP(LAMMPS *lmp) : void PairPeriPMBOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_reaxc_omp.cpp b/src/USER-OMP/pair_reaxc_omp.cpp index 63beb61be6..7f2db420bf 100644 --- a/src/USER-OMP/pair_reaxc_omp.cpp +++ b/src/USER-OMP/pair_reaxc_omp.cpp @@ -191,8 +191,7 @@ void PairReaxCOMP::compute(int eflag, int vflag) int *num_hbonds = fix_reax->num_hbonds; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else ev_unset(); + ev_init(eflag,vflag); if (vflag_global) control->virial = 1; else control->virial = 0; diff --git a/src/USER-OMP/pair_resquared_omp.cpp b/src/USER-OMP/pair_resquared_omp.cpp index 1736e794f5..d9e0059a9f 100644 --- a/src/USER-OMP/pair_resquared_omp.cpp +++ b/src/USER-OMP/pair_resquared_omp.cpp @@ -38,9 +38,7 @@ PairRESquaredOMP::PairRESquaredOMP(LAMMPS *lmp) : void PairRESquaredOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_soft_omp.cpp b/src/USER-OMP/pair_soft_omp.cpp index a860ad97d9..eb151bc0df 100644 --- a/src/USER-OMP/pair_soft_omp.cpp +++ b/src/USER-OMP/pair_soft_omp.cpp @@ -40,9 +40,7 @@ PairSoftOMP::PairSoftOMP(LAMMPS *lmp) : void PairSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_sw_omp.cpp b/src/USER-OMP/pair_sw_omp.cpp index e323fc4c37..745b3a1f04 100644 --- a/src/USER-OMP/pair_sw_omp.cpp +++ b/src/USER-OMP/pair_sw_omp.cpp @@ -37,9 +37,7 @@ PairSWOMP::PairSWOMP(LAMMPS *lmp) : void PairSWOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_table_omp.cpp b/src/USER-OMP/pair_table_omp.cpp index d27456e1b5..b55817e75c 100644 --- a/src/USER-OMP/pair_table_omp.cpp +++ b/src/USER-OMP/pair_table_omp.cpp @@ -37,9 +37,7 @@ PairTableOMP::PairTableOMP(LAMMPS *lmp) : void PairTableOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_tersoff_mod_c_omp.cpp b/src/USER-OMP/pair_tersoff_mod_c_omp.cpp index fad077ca12..a11bd87640 100644 --- a/src/USER-OMP/pair_tersoff_mod_c_omp.cpp +++ b/src/USER-OMP/pair_tersoff_mod_c_omp.cpp @@ -36,9 +36,7 @@ PairTersoffMODCOMP::PairTersoffMODCOMP(LAMMPS *lmp) : void PairTersoffMODCOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_tersoff_mod_omp.cpp b/src/USER-OMP/pair_tersoff_mod_omp.cpp index 04e54c6e69..da22110c1c 100644 --- a/src/USER-OMP/pair_tersoff_mod_omp.cpp +++ b/src/USER-OMP/pair_tersoff_mod_omp.cpp @@ -36,9 +36,7 @@ PairTersoffMODOMP::PairTersoffMODOMP(LAMMPS *lmp) : void PairTersoffMODOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_tersoff_omp.cpp b/src/USER-OMP/pair_tersoff_omp.cpp index a5afdc7509..661f15d64d 100644 --- a/src/USER-OMP/pair_tersoff_omp.cpp +++ b/src/USER-OMP/pair_tersoff_omp.cpp @@ -37,9 +37,7 @@ PairTersoffOMP::PairTersoffOMP(LAMMPS *lmp) : void PairTersoffOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_tersoff_table_omp.cpp b/src/USER-OMP/pair_tersoff_table_omp.cpp index de045f9c62..7e83814f95 100644 --- a/src/USER-OMP/pair_tersoff_table_omp.cpp +++ b/src/USER-OMP/pair_tersoff_table_omp.cpp @@ -61,9 +61,7 @@ PairTersoffTableOMP::~PairTersoffTableOMP() void PairTersoffTableOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_tip4p_cut_omp.cpp b/src/USER-OMP/pair_tip4p_cut_omp.cpp index 85589cf043..1900ed4394 100644 --- a/src/USER-OMP/pair_tip4p_cut_omp.cpp +++ b/src/USER-OMP/pair_tip4p_cut_omp.cpp @@ -62,8 +62,7 @@ PairTIP4PCutOMP::~PairTIP4PCutOMP() void PairTIP4PCutOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_tip4p_long_omp.cpp b/src/USER-OMP/pair_tip4p_long_omp.cpp index c6c4bfe5fc..ee65937c46 100644 --- a/src/USER-OMP/pair_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_tip4p_long_omp.cpp @@ -62,8 +62,7 @@ PairTIP4PLongOMP::~PairTIP4PLongOMP() void PairTIP4PLongOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_tip4p_long_soft_omp.cpp b/src/USER-OMP/pair_tip4p_long_soft_omp.cpp index 7e9d3b6dff..adb984a2cd 100644 --- a/src/USER-OMP/pair_tip4p_long_soft_omp.cpp +++ b/src/USER-OMP/pair_tip4p_long_soft_omp.cpp @@ -62,8 +62,7 @@ PairTIP4PLongSoftOMP::~PairTIP4PLongSoftOMP() void PairTIP4PLongSoftOMP::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nlocal = atom->nlocal; const int nall = nlocal + atom->nghost; diff --git a/src/USER-OMP/pair_ufm_omp.cpp b/src/USER-OMP/pair_ufm_omp.cpp index ff258b5b3b..08d8cc15f9 100644 --- a/src/USER-OMP/pair_ufm_omp.cpp +++ b/src/USER-OMP/pair_ufm_omp.cpp @@ -38,9 +38,7 @@ PairUFMOMP::PairUFMOMP(LAMMPS *lmp) : void PairUFMOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_vashishta_omp.cpp b/src/USER-OMP/pair_vashishta_omp.cpp index 194a3e2d86..28104013f0 100644 --- a/src/USER-OMP/pair_vashishta_omp.cpp +++ b/src/USER-OMP/pair_vashishta_omp.cpp @@ -37,9 +37,7 @@ PairVashishtaOMP::PairVashishtaOMP(LAMMPS *lmp) : void PairVashishtaOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_vashishta_table_omp.cpp b/src/USER-OMP/pair_vashishta_table_omp.cpp index e0d96d8bb6..b044902ebe 100644 --- a/src/USER-OMP/pair_vashishta_table_omp.cpp +++ b/src/USER-OMP/pair_vashishta_table_omp.cpp @@ -37,9 +37,7 @@ PairVashishtaTableOMP::PairVashishtaTableOMP(LAMMPS *lmp) : void PairVashishtaTableOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_yukawa_colloid_omp.cpp b/src/USER-OMP/pair_yukawa_colloid_omp.cpp index c1d2133a1c..86314ce7b8 100644 --- a/src/USER-OMP/pair_yukawa_colloid_omp.cpp +++ b/src/USER-OMP/pair_yukawa_colloid_omp.cpp @@ -36,9 +36,7 @@ PairYukawaColloidOMP::PairYukawaColloidOMP(LAMMPS *lmp) : void PairYukawaColloidOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_yukawa_omp.cpp b/src/USER-OMP/pair_yukawa_omp.cpp index cbfd627f97..add81e9b04 100644 --- a/src/USER-OMP/pair_yukawa_omp.cpp +++ b/src/USER-OMP/pair_yukawa_omp.cpp @@ -36,9 +36,7 @@ PairYukawaOMP::PairYukawaOMP(LAMMPS *lmp) : void PairYukawaOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-OMP/pair_zbl_omp.cpp b/src/USER-OMP/pair_zbl_omp.cpp index 788679434b..f6856c4fa0 100644 --- a/src/USER-OMP/pair_zbl_omp.cpp +++ b/src/USER-OMP/pair_zbl_omp.cpp @@ -37,9 +37,7 @@ PairZBLOMP::PairZBLOMP(LAMMPS *lmp) : void PairZBLOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; diff --git a/src/USER-PHONON/dynamical_matrix.cpp b/src/USER-PHONON/dynamical_matrix.cpp index 372f4e4e31..d94bd11a80 100644 --- a/src/USER-PHONON/dynamical_matrix.cpp +++ b/src/USER-PHONON/dynamical_matrix.cpp @@ -138,6 +138,9 @@ void DynamicalMatrix::command(int narg, char **arg) else if (style == ESKM) options(narg-3,&arg[3]); //COME BACK else if (comm->me == 0 && screen) fprintf(screen,"Illegal Dynamical Matrix command\n"); + if (atom->map_style == 0) + error->all(FLERR,"Dynamical_matrix command requires an atom map, see atom_modify"); + // move atoms by 3-vector or specified variable(s) if (style == REGULAR) { @@ -240,7 +243,7 @@ void DynamicalMatrix::calculateMatrix() int nlocal = atom->nlocal; bigint natoms = atom->natoms; int *type = atom->type; - int *gm = groupmap; + bigint *gm = groupmap; double imass; // dynamical matrix element double *m = atom->mass; double **f = atom->f; @@ -256,20 +259,30 @@ void DynamicalMatrix::calculateMatrix() //initialize dynmat to all zeros dynmat_clear(dynmat); - if (comm->me == 0 && screen) fprintf(screen,"Calculating Dynamical Matrix...\n"); + if (comm->me == 0 && screen) { + fprintf(screen,"Calculating Dynamical Matrix ...\n"); + fprintf(screen," Total # of atoms = " BIGINT_FORMAT "\n", natoms); + fprintf(screen," Atoms in group = " BIGINT_FORMAT "\n", gcount); + fprintf(screen," Total dynamical matrix elements = " BIGINT_FORMAT "\n", (dynlen*dynlen) ); + } + + // emit dynlen rows of dimalpha*dynlen*dimbeta elements update->nsteps = 0; + int prog = 0; for (bigint i=1; i<=natoms; i++){ local_idx = atom->map(i); + if (gm[i-1] < 0) + continue; for (bigint alpha=0; alpha<3; alpha++){ displace_atom(local_idx, alpha, 1); update_force(); for (bigint j=1; j<=natoms; j++){ local_jdx = atom->map(j); if (local_idx >= 0 && local_jdx >= 0 && local_jdx < nlocal - && gm[i-1] >= 0 && gm[j-1] >= 0){ + && gm[j-1] >= 0){ for (int beta=0; beta<3; beta++){ - dynmat[alpha][(gm[j-1])*3+beta] -= f[local_jdx][beta]; + dynmat[alpha][gm[j-1]*3+beta] -= f[local_jdx][beta]; } } } @@ -278,15 +291,15 @@ void DynamicalMatrix::calculateMatrix() for (bigint j=1; j<=natoms; j++){ local_jdx = atom->map(j); if (local_idx >= 0 && local_jdx >= 0 && local_jdx < nlocal - && gm[i-1] >= 0 && gm[j-1] >= 0){ + && gm[j-1] >= 0){ for (bigint beta=0; beta<3; beta++){ if (atom->rmass_flag == 1) imass = sqrt(m[local_idx] * m[local_jdx]); else imass = sqrt(m[type[local_idx]] * m[type[local_jdx]]); - dynmat[alpha][(gm[j-1])*3+beta] -= -f[local_jdx][beta]; - dynmat[alpha][(gm[j-1])*3+beta] /= (2 * del * imass); - dynmat[alpha][(gm[j-1])*3+beta] *= conversion; + dynmat[alpha][gm[j-1]*3+beta] -= -f[local_jdx][beta]; + dynmat[alpha][gm[j-1]*3+beta] /= (2 * del * imass); + dynmat[alpha][gm[j-1]*3+beta] *= conversion; } } } @@ -297,7 +310,16 @@ void DynamicalMatrix::calculateMatrix() if (me == 0) writeMatrix(fdynmat); dynmat_clear(dynmat); + if (comm->me == 0 && screen) { + int p = 10 * gm[i-1] / gcount; + if (p > prog) { + prog = p; + fprintf(screen," %d%%",p*10); + fflush(screen); + } + } } + if (comm->me == 0 && screen) fprintf(screen,"\n"); for (int i=0; i < 3; i++) delete [] dynmat[i]; @@ -316,27 +338,24 @@ void DynamicalMatrix::calculateMatrix() void DynamicalMatrix::writeMatrix(double **dynmat) { - if (me != 0 || fp == NULL) return; + if (me != 0 || !fp) + return; - // print file comment lines - - if (!binaryflag && fp) { - clearerr(fp); + clearerr(fp); + if (binaryflag) { + for (int i=0; i<3; i++) + fwrite(dynmat[i], sizeof(double), dynlen, fp); + if (ferror(fp)) + error->one(FLERR, "Error writing to binary file"); + } else { for (int i = 0; i < 3; i++) { for (bigint j = 0; j < dynlen; j++) { if ((j+1)%3==0) fprintf(fp, "%4.8f\n", dynmat[i][j]); else fprintf(fp, "%4.8f ",dynmat[i][j]); } } - } - if (ferror(fp)) - error->one(FLERR,"Error writing to file"); - - if (binaryflag && fp) { - clearerr(fp); - fwrite(&dynmat[0], sizeof(double), 3 * dynlen, fp); if (ferror(fp)) - error->one(FLERR, "Error writing to binary file"); + error->one(FLERR,"Error writing to file"); } } @@ -490,6 +509,7 @@ void DynamicalMatrix::convert_units(const char *style) void DynamicalMatrix::create_groupmap() { //Create a group map which maps atom order onto group + // groupmap[global atom index-1] = output column/row int local_idx; // local index int gid = 0; //group index @@ -498,7 +518,7 @@ void DynamicalMatrix::create_groupmap() bigint natoms = atom->natoms; int *recv = new int[comm->nprocs]; int *displs = new int[comm->nprocs]; - int *temp_groupmap = new int[natoms]; + bigint *temp_groupmap = new bigint[natoms]; //find number of local atoms in the group (final_gid) for (bigint i=1; i<=natoms; i++){ @@ -507,7 +527,7 @@ void DynamicalMatrix::create_groupmap() gid += 1; // gid at the end of loop is final_Gid } //create an array of length final_gid - int *sub_groupmap = new int[gid]; + bigint *sub_groupmap = new bigint[gid]; gid = 0; //create a map between global atom id and group atom id for each proc @@ -524,7 +544,7 @@ void DynamicalMatrix::create_groupmap() recv[i] = 0; } recv[comm->me] = gid; - MPI_Allreduce(recv,displs,4,MPI_INT,MPI_SUM,world); + MPI_Allreduce(recv,displs,comm->nprocs,MPI_INT,MPI_SUM,world); for (int i=0; inprocs; i++){ recv[i]=displs[i]; if (i>0) displs[i] = displs[i-1]+recv[i-1]; @@ -532,15 +552,17 @@ void DynamicalMatrix::create_groupmap() } //combine subgroup maps into total temporary groupmap - MPI_Allgatherv(sub_groupmap,gid,MPI_INT,temp_groupmap,recv,displs,MPI_INT,world); + MPI_Allgatherv(sub_groupmap,gid,MPI_LMP_BIGINT,temp_groupmap,recv,displs,MPI_LMP_BIGINT,world); std::sort(temp_groupmap,temp_groupmap+gcount); //populate member groupmap based on temp groupmap - for (bigint i=0; iinum; ilist = list->ilist; diff --git a/src/USER-REAXC/pair_reaxc.cpp b/src/USER-REAXC/pair_reaxc.cpp index b68e0d0779..b9d488d8cf 100644 --- a/src/USER-REAXC/pair_reaxc.cpp +++ b/src/USER-REAXC/pair_reaxc.cpp @@ -497,8 +497,7 @@ void PairReaxC::compute(int eflag, int vflag) int *num_hbonds = fix_reax->num_hbonds; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else ev_unset(); + ev_init(eflag,vflag); if (vflag_global) control->virial = 1; else control->virial = 0; diff --git a/src/USER-SCAFACOS/scafacos.cpp b/src/USER-SCAFACOS/scafacos.cpp index 4b8e10123c..497442fbe8 100644 --- a/src/USER-SCAFACOS/scafacos.cpp +++ b/src/USER-SCAFACOS/scafacos.cpp @@ -197,12 +197,7 @@ void Scafacos::compute(int eflag, int vflag) fcs_set_redistribute((FCS)fcs,0); } - if (eflag || vflag) ev_setup(eflag,vflag); - else - { - eflag_atom = 0; - vflag_global = 0; - } + ev_init(eflag,vflag); // grow xpbc, epot, efield if necessary diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index 7cfc950eff..db80debe51 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -71,8 +71,7 @@ void PairSDPDTaitwaterIsothermal::compute (int eflag, int vflag) { double rsq, tmp, wfd, delVdotDelR; double prefactor, wiener[3][3], f_random[3]; - if (eflag || vflag) ev_setup (eflag, vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **v = atom->vest; double **x = atom->x; diff --git a/src/USER-SMD/pair_smd_hertz.cpp b/src/USER-SMD/pair_smd_hertz.cpp index 13f48e995e..541be9f05c 100644 --- a/src/USER-SMD/pair_smd_hertz.cpp +++ b/src/USER-SMD/pair_smd_hertz.cpp @@ -87,10 +87,7 @@ void PairHertz::compute(int eflag, int vflag) { double *rmass = atom->rmass; evdwl = 0.0; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **f = atom->f; double **x = atom->x; diff --git a/src/USER-SMD/pair_smd_tlsph.cpp b/src/USER-SMD/pair_smd_tlsph.cpp index ab6b7d2785..ac67a3279a 100644 --- a/src/USER-SMD/pair_smd_tlsph.cpp +++ b/src/USER-SMD/pair_smd_tlsph.cpp @@ -448,10 +448,7 @@ void PairTlsph::ComputeForces(int eflag, int vflag) { Matrix3d eye; eye.setIdentity(); - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); /* * iterate over pairs of particles i, j and assign forces using PK1 stress tensor diff --git a/src/USER-SMD/pair_smd_triangulated_surface.cpp b/src/USER-SMD/pair_smd_triangulated_surface.cpp index e40c876ec3..d3a4983379 100644 --- a/src/USER-SMD/pair_smd_triangulated_surface.cpp +++ b/src/USER-SMD/pair_smd_triangulated_surface.cpp @@ -96,10 +96,7 @@ void PairTriSurf::compute(int eflag, int vflag) { Vector2d w2d, rhs; evdwl = 0.0; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); tagint *mol = atom->molecule; double **f = atom->f; diff --git a/src/USER-SMD/pair_smd_ulsph.cpp b/src/USER-SMD/pair_smd_ulsph.cpp index 50af6e2356..2c4a2de989 100644 --- a/src/USER-SMD/pair_smd_ulsph.cpp +++ b/src/USER-SMD/pair_smd_ulsph.cpp @@ -386,10 +386,7 @@ void PairULSPH::compute(int eflag, int vflag) { int k; SelfAdjointEigenSolver < Matrix3d > es; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { //printf("... allocating in compute with nmax = %d\n", atom->nmax); diff --git a/src/USER-SMTBQ/README b/src/USER-SMTBQ/README index 74b621eef1..e778c65be2 100644 --- a/src/USER-SMTBQ/README +++ b/src/USER-SMTBQ/README @@ -2,9 +2,11 @@ This package implements the Second Moment Tight Binding - QEq (SMTB-Q) potential for the description of ionocovalent bonds in oxides. Authors: Nicolas Salles, Emile Maras, Olivier Politano, Robert Tetot -at LAAS-CNRS in France. +at ICB, Universite de Bourgogne and ICMMO, Universite Paris-Sud. -Contact emails: lammps@u-bourgogne.fr, nsalles@laas.fr +Contact emails: lammps@u-bourgogne.fr, nsalles33@gmail.com + +This package is occasionally maintained. See the doc page for the pair_style smtbq command to get started. diff --git a/src/USER-SMTBQ/pair_smtbq.cpp b/src/USER-SMTBQ/pair_smtbq.cpp index 5c3189fc31..ba7f8eb88c 100644 --- a/src/USER-SMTBQ/pair_smtbq.cpp +++ b/src/USER-SMTBQ/pair_smtbq.cpp @@ -899,8 +899,7 @@ void PairSMTBQ::compute(int eflag, int vflag) evdwl = ecoul = ecovtot = ErepOO = ErepMO = Eion = 0.0; Eself = 0.0; - if (eflag || vflag) { ev_setup(eflag,vflag); } - else { evflag = vflag_fdotr = vflag_atom = 0; } + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-SPH/pair_sph_heatconduction.cpp b/src/USER-SPH/pair_sph_heatconduction.cpp index c93e8040b2..bafa26be89 100644 --- a/src/USER-SPH/pair_sph_heatconduction.cpp +++ b/src/USER-SPH/pair_sph_heatconduction.cpp @@ -52,10 +52,7 @@ void PairSPHHeatConduction::compute(int eflag, int vflag) { double imass, jmass, h, ih, ihsq; double rsq, wfd, D, deltaE; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double *e = atom->e; diff --git a/src/USER-SPH/pair_sph_idealgas.cpp b/src/USER-SPH/pair_sph_idealgas.cpp index d12ee06736..db5ec964bc 100644 --- a/src/USER-SPH/pair_sph_idealgas.cpp +++ b/src/USER-SPH/pair_sph_idealgas.cpp @@ -53,10 +53,7 @@ void PairSPHIdealGas::compute(int eflag, int vflag) { double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq; double rsq, wfd, delVdotDelR, mu, deltaE, ci, cj; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **v = atom->vest; double **x = atom->x; diff --git a/src/USER-SPH/pair_sph_lj.cpp b/src/USER-SPH/pair_sph_lj.cpp index 3a30ecb5fa..7d315c975c 100644 --- a/src/USER-SPH/pair_sph_lj.cpp +++ b/src/USER-SPH/pair_sph_lj.cpp @@ -53,10 +53,7 @@ void PairSPHLJ::compute(int eflag, int vflag) { double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq, ihcub; double rsq, wfd, delVdotDelR, mu, deltaE, ci, cj, lrc; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **v = atom->vest; double **x = atom->x; diff --git a/src/USER-SPH/pair_sph_rhosum.cpp b/src/USER-SPH/pair_sph_rhosum.cpp index 896a422782..842dddc744 100644 --- a/src/USER-SPH/pair_sph_rhosum.cpp +++ b/src/USER-SPH/pair_sph_rhosum.cpp @@ -72,10 +72,7 @@ void PairSPHRhoSum::compute(int eflag, int vflag) { // neighbor list variables int inum, *ilist, *numneigh, **firstneigh; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double *rho = atom->rho; diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp index 9d5a417e5b..cf3c0e914b 100644 --- a/src/USER-SPH/pair_sph_taitwater.cpp +++ b/src/USER-SPH/pair_sph_taitwater.cpp @@ -58,10 +58,7 @@ void PairSPHTaitwater::compute(int eflag, int vflag) { double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq; double rsq, tmp, wfd, delVdotDelR, mu, deltaE; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **v = atom->vest; double **x = atom->x; diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp index fb745ac7da..5cbaa5959f 100644 --- a/src/USER-SPH/pair_sph_taitwater_morris.cpp +++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp @@ -58,10 +58,7 @@ void PairSPHTaitwaterMorris::compute(int eflag, int vflag) { double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc, h, ih, ihsq, velx, vely, velz; double rsq, tmp, wfd, delVdotDelR, deltaE; - if (eflag || vflag) - ev_setup(eflag, vflag); - else - evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **v = atom->vest; double **x = atom->x; diff --git a/src/USER-YAFF/angle_cross.cpp b/src/USER-YAFF/angle_cross.cpp index 6333c2f035..2e6731f494 100644 --- a/src/USER-YAFF/angle_cross.cpp +++ b/src/USER-YAFF/angle_cross.cpp @@ -67,8 +67,7 @@ void AngleCross::compute(int eflag, int vflag) double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/angle_mm3.cpp b/src/USER-YAFF/angle_mm3.cpp index 4e44f10408..53cb11b5df 100644 --- a/src/USER-YAFF/angle_mm3.cpp +++ b/src/USER-YAFF/angle_mm3.cpp @@ -61,8 +61,7 @@ void AngleMM3::compute(int eflag, int vflag) double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22; eangle = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/bond_mm3.cpp b/src/USER-YAFF/bond_mm3.cpp index 1c464ff895..ee1ebcdd61 100644 --- a/src/USER-YAFF/bond_mm3.cpp +++ b/src/USER-YAFF/bond_mm3.cpp @@ -54,8 +54,7 @@ void BondMM3::compute(int eflag, int vflag) double rsq,r,dr,dr2,de_bond,K3,K4; ebond = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/improper_distharm.cpp b/src/USER-YAFF/improper_distharm.cpp index 9a54afed9a..b45087a9ab 100644 --- a/src/USER-YAFF/improper_distharm.cpp +++ b/src/USER-YAFF/improper_distharm.cpp @@ -67,8 +67,7 @@ void ImproperDistHarm::compute(int eflag, int vflag) double domega,a; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/improper_sqdistharm.cpp b/src/USER-YAFF/improper_sqdistharm.cpp index 763d82f1c5..ae702820cb 100644 --- a/src/USER-YAFF/improper_sqdistharm.cpp +++ b/src/USER-YAFF/improper_sqdistharm.cpp @@ -67,8 +67,7 @@ void ImproperSQDistHarm::compute(int eflag, int vflag) double domega,a; eimproper = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp index 91c75d6945..f37dcc3ed1 100644 --- a/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp +++ b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp @@ -91,8 +91,7 @@ void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp index aa656e5b2d..931ed1d116 100644 --- a/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp +++ b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp @@ -91,8 +91,7 @@ void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag) double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/angle.h b/src/angle.h index 0247fa0ff8..3d8371242e 100644 --- a/src/angle.h +++ b/src/angle.h @@ -58,6 +58,10 @@ class Angle : protected Pointers { int vflag_either,vflag_global,vflag_atom; int maxeatom,maxvatom; + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int, int alloc = 1); void ev_tally(int, int, int, int, int, double, double *, double *, double, double, double, double, double, double); diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index c29eaac2ae..6afa7413b2 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -103,8 +103,7 @@ void AngleHybrid::compute(int eflag, int vflag) // set neighbor->anglelist to sub-style anglelist before call // accumulate sub-style global/peratom energy/virial in hybrid - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); for (m = 0; m < nstyles; m++) { neighbor->nanglelist = nanglelist[m]; diff --git a/src/angle_zero.cpp b/src/angle_zero.cpp index d7b7c9cdb5..6eb127fa58 100644 --- a/src/angle_zero.cpp +++ b/src/angle_zero.cpp @@ -47,8 +47,7 @@ AngleZero::~AngleZero() void AngleZero::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/bond.h b/src/bond.h index 9c353a1a6d..8fb7040832 100644 --- a/src/bond.h +++ b/src/bond.h @@ -64,6 +64,10 @@ class Bond : protected Pointers { int vflag_either,vflag_global,vflag_atom; int maxeatom,maxvatom; + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int, int alloc = 1); void ev_tally(int, int, int, int, double, double, double, double, double); }; diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index 4e5a26f731..65609b4b6e 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -103,8 +103,7 @@ void BondHybrid::compute(int eflag, int vflag) // set neighbor->bondlist to sub-style bondlist before call // accumulate sub-style global/peratom energy/virial in hybrid - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); for (m = 0; m < nstyles; m++) { neighbor->nbondlist = nbondlist[m]; diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp index 9fcf300b21..0847cf9e6b 100644 --- a/src/bond_zero.cpp +++ b/src/bond_zero.cpp @@ -45,8 +45,7 @@ BondZero::~BondZero() void BondZero::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/comm.cpp b/src/comm.cpp index f355a562fc..8389e4993d 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -28,6 +28,7 @@ #include "dump.h" #include "group.h" #include "procmap.h" +#include "irregular.h" #include "accelerator_kokkos.h" #include "memory.h" #include "error.h" @@ -725,6 +726,429 @@ void Comm::ring(int n, int nper, void *inbuf, int messtag, memory->destroy(bufcopy); } +/* ---------------------------------------------------------------------- + rendezvous communication operation + three stages: + first comm sends inbuf from caller decomp to rvous decomp + callback operates on data in rendevous decomp + second comm sends outbuf from rvous decomp back to caller decomp + inputs: + which = perform (0) irregular or (1) MPI_All2allv communication + n = # of datums in inbuf + inbuf = vector of input datums + insize = byte size of each input datum + inorder = 0 for inbuf in random proc order, 1 for datums ordered by proc + procs: inorder 0 = proc to send each datum to, 1 = # of datums/proc, + callback = caller function to invoke in rendezvous decomposition + takes input datums, returns output datums + outorder = same as inorder, but for datums returned by callback() + ptr = pointer to caller class, passed to callback() + outputs: + nout = # of output datums (function return) + outbuf = vector of output datums + outsize = byte size of each output datum + callback inputs: + nrvous = # of rvous decomp datums in inbuf_rvous + inbuf_rvous = vector of rvous decomp input datums + ptr = pointer to caller class + callback outputs: + nrvous_out = # of rvous decomp output datums (function return) + flag = 0 for no second comm, 1 for outbuf_rvous = inbuf_rvous, + 2 for second comm with new outbuf_rvous + procs_rvous = outorder 0 = proc to send each datum to, 1 = # of datums/proc + allocated + outbuf_rvous = vector of rvous decomp output datums + NOTE: could use MPI_INT or MPI_DOUBLE insead of MPI_CHAR + to avoid checked-for overflow in MPI_Alltoallv? +------------------------------------------------------------------------- */ + +int Comm:: +rendezvous(int which, int n, char *inbuf, int insize, + int inorder, int *procs, + int (*callback)(int, char *, int &, int *&, char *&, void *), + int outorder, char *&outbuf, int outsize, void *ptr, int statflag) +{ + if (which == 0) + return rendezvous_irregular(n,inbuf,insize,inorder,procs,callback, + outorder,outbuf,outsize,ptr,statflag); + else + return rendezvous_all2all(n,inbuf,insize,inorder,procs,callback, + outorder,outbuf,outsize,ptr,statflag); +} + +/* ---------------------------------------------------------------------- */ + +int Comm:: +rendezvous_irregular(int n, char *inbuf, int insize, int inorder, int *procs, + int (*callback)(int, char *, int &, int *&, char *&, void *), + int outorder, char *&outbuf, + int outsize, void *ptr, int statflag) +{ + // irregular comm of inbuf from caller decomp to rendezvous decomp + + Irregular *irregular = new Irregular(lmp); + + int nrvous; + if (inorder) nrvous = irregular->create_data_grouped(n,procs); + else nrvous = irregular->create_data(n,procs); + + char *inbuf_rvous = (char *) memory->smalloc((bigint) nrvous*insize, + "rendezvous:inbuf"); + irregular->exchange_data(inbuf,insize,inbuf_rvous); + + bigint irregular1_bytes = irregular->memory_usage(); + irregular->destroy_data(); + delete irregular; + + // peform rendezvous computation via callback() + // callback() allocates/populates proclist_rvous and outbuf_rvous + + int flag; + int *procs_rvous; + char *outbuf_rvous; + int nrvous_out = callback(nrvous,inbuf_rvous,flag, + procs_rvous,outbuf_rvous,ptr); + + if (flag != 1) memory->sfree(inbuf_rvous); // outbuf_rvous = inbuf_vous + if (flag == 0) { + if (statflag) rendezvous_stats(n,0,nrvous,nrvous_out,insize,outsize, + (bigint) nrvous_out*sizeof(int) + + irregular1_bytes); + return 0; // all nout_rvous are 0, no 2nd comm stage + } + + // irregular comm of outbuf from rendezvous decomp back to caller decomp + // caller will free outbuf + + irregular = new Irregular(lmp); + + int nout; + if (outorder) + nout = irregular->create_data_grouped(nrvous_out,procs_rvous); + else nout = irregular->create_data(nrvous_out,procs_rvous); + + outbuf = (char *) memory->smalloc((bigint) nout*outsize, + "rendezvous:outbuf"); + irregular->exchange_data(outbuf_rvous,outsize,outbuf); + + bigint irregular2_bytes = irregular->memory_usage(); + irregular->destroy_data(); + delete irregular; + + memory->destroy(procs_rvous); + memory->sfree(outbuf_rvous); + + // return number of output datums + // last arg to stats() = memory for procs_rvous + irregular comm + + if (statflag) rendezvous_stats(n,nout,nrvous,nrvous_out,insize,outsize, + (bigint) nrvous_out*sizeof(int) + + MAX(irregular1_bytes,irregular2_bytes)); + return nout; +} + +/* ---------------------------------------------------------------------- */ + +int Comm:: +rendezvous_all2all(int n, char *inbuf, int insize, int inorder, int *procs, + int (*callback)(int, char *, int &, int *&, char *&, void *), + int outorder, char *&outbuf, int outsize, void *ptr, + int statflag) +{ + int iproc; + bigint all2all1_bytes,all2all2_bytes; + int *sendcount,*sdispls,*recvcount,*rdispls; + int *procs_a2a; + bigint *offsets; + char *inbuf_a2a,*outbuf_a2a; + + // create procs and inbuf for All2all if necesary + + if (!inorder) { + memory->create(procs_a2a,nprocs,"rendezvous:procs"); + inbuf_a2a = (char *) memory->smalloc((bigint) n*insize, + "rendezvous:inbuf"); + memory->create(offsets,nprocs,"rendezvous:offsets"); + + for (int i = 0; i < nprocs; i++) procs_a2a[i] = 0; + for (int i = 0; i < n; i++) procs_a2a[procs[i]]++; + + offsets[0] = 0; + for (int i = 1; i < nprocs; i++) + offsets[i] = offsets[i-1] + insize*procs_a2a[i-1]; + + bigint offset = 0; + for (int i = 0; i < n; i++) { + iproc = procs[i]; + memcpy(&inbuf_a2a[offsets[iproc]],&inbuf[offset],insize); + offsets[iproc] += insize; + offset += insize; + } + + all2all1_bytes = nprocs*sizeof(int) + nprocs*sizeof(bigint) + n*insize; + + } else { + procs_a2a = procs; + inbuf_a2a = inbuf; + all2all1_bytes = 0; + } + + // create args for MPI_Alltoallv() on input data + + memory->create(sendcount,nprocs,"rendezvous:sendcount"); + memcpy(sendcount,procs_a2a,nprocs*sizeof(int)); + + memory->create(recvcount,nprocs,"rendezvous:recvcount"); + MPI_Alltoall(sendcount,1,MPI_INT,recvcount,1,MPI_INT,world); + + memory->create(sdispls,nprocs,"rendezvous:sdispls"); + memory->create(rdispls,nprocs,"rendezvous:rdispls"); + sdispls[0] = rdispls[0] = 0; + for (int i = 1; i < nprocs; i++) { + sdispls[i] = sdispls[i-1] + sendcount[i-1]; + rdispls[i] = rdispls[i-1] + recvcount[i-1]; + } + int nrvous = rdispls[nprocs-1] + recvcount[nprocs-1]; + + // test for overflow of input data due to imbalance or insize + // means that individual sdispls or rdispls values overflow + + int overflow = 0; + if ((bigint) n*insize > MAXSMALLINT) overflow = 1; + if ((bigint) nrvous*insize > MAXSMALLINT) overflow = 1; + int overflowall; + MPI_Allreduce(&overflow,&overflowall,1,MPI_INT,MPI_MAX,world); + if (overflowall) error->all(FLERR,"Overflow input size in rendezvous_a2a"); + + for (int i = 0; i < nprocs; i++) { + sendcount[i] *= insize; + sdispls[i] *= insize; + recvcount[i] *= insize; + rdispls[i] *= insize; + } + + // all2all comm of inbuf from caller decomp to rendezvous decomp + + char *inbuf_rvous = (char *) memory->smalloc((bigint) nrvous*insize, + "rendezvous:inbuf"); + + MPI_Alltoallv(inbuf_a2a,sendcount,sdispls,MPI_CHAR, + inbuf_rvous,recvcount,rdispls,MPI_CHAR,world); + + if (!inorder) { + memory->destroy(procs_a2a); + memory->sfree(inbuf_a2a); + memory->destroy(offsets); + } + + // peform rendezvous computation via callback() + // callback() allocates/populates proclist_rvous and outbuf_rvous + + int flag; + int *procs_rvous; + char *outbuf_rvous; + + int nrvous_out = callback(nrvous,inbuf_rvous,flag, + procs_rvous,outbuf_rvous,ptr); + + if (flag != 1) memory->sfree(inbuf_rvous); // outbuf_rvous = inbuf_vous + if (flag == 0) { + memory->destroy(sendcount); + memory->destroy(recvcount); + memory->destroy(sdispls); + memory->destroy(rdispls); + if (statflag) rendezvous_stats(n,0,nrvous,nrvous_out,insize,outsize, + (bigint) nrvous_out*sizeof(int) + + 4*nprocs*sizeof(int) + all2all1_bytes); + return 0; // all nout_rvous are 0, no 2nd irregular + } + + + + + + + // create procs and outbuf for All2all if necesary + + if (!outorder) { + memory->create(procs_a2a,nprocs,"rendezvous_a2a:procs"); + + outbuf_a2a = (char *) memory->smalloc((bigint) nrvous_out*outsize, + "rendezvous:outbuf"); + memory->create(offsets,nprocs,"rendezvous:offsets"); + + for (int i = 0; i < nprocs; i++) procs_a2a[i] = 0; + for (int i = 0; i < nrvous_out; i++) procs_a2a[procs_rvous[i]]++; + + offsets[0] = 0; + for (int i = 1; i < nprocs; i++) + offsets[i] = offsets[i-1] + outsize*procs_a2a[i-1]; + + bigint offset = 0; + for (int i = 0; i < nrvous_out; i++) { + iproc = procs_rvous[i]; + memcpy(&outbuf_a2a[offsets[iproc]],&outbuf_rvous[offset],outsize); + offsets[iproc] += outsize; + offset += outsize; + } + + all2all2_bytes = nprocs*sizeof(int) + nprocs*sizeof(bigint) + + nrvous_out*outsize; + + } else { + procs_a2a = procs_rvous; + outbuf_a2a = outbuf_rvous; + all2all2_bytes = 0; + } + + // comm outbuf from rendezvous decomposition back to caller + + memcpy(sendcount,procs_a2a,nprocs*sizeof(int)); + + MPI_Alltoall(sendcount,1,MPI_INT,recvcount,1,MPI_INT,world); + + sdispls[0] = rdispls[0] = 0; + for (int i = 1; i < nprocs; i++) { + sdispls[i] = sdispls[i-1] + sendcount[i-1]; + rdispls[i] = rdispls[i-1] + recvcount[i-1]; + } + int nout = rdispls[nprocs-1] + recvcount[nprocs-1]; + + // test for overflow of outbuf due to imbalance or outsize + // means that individual sdispls or rdispls values overflow + + overflow = 0; + if ((bigint) nrvous*outsize > MAXSMALLINT) overflow = 1; + if ((bigint) nout*outsize > MAXSMALLINT) overflow = 1; + MPI_Allreduce(&overflow,&overflowall,1,MPI_INT,MPI_MAX,world); + if (overflowall) error->all(FLERR,"Overflow output in rendezvous_a2a"); + + for (int i = 0; i < nprocs; i++) { + sendcount[i] *= outsize; + sdispls[i] *= outsize; + recvcount[i] *= outsize; + rdispls[i] *= outsize; + } + + // all2all comm of outbuf from rendezvous decomp back to caller decomp + // caller will free outbuf + + outbuf = (char *) memory->smalloc((bigint) nout*outsize,"rendezvous:outbuf"); + + MPI_Alltoallv(outbuf_a2a,sendcount,sdispls,MPI_CHAR, + outbuf,recvcount,rdispls,MPI_CHAR,world); + + memory->destroy(procs_rvous); + memory->sfree(outbuf_rvous); + + if (!outorder) { + memory->destroy(procs_a2a); + memory->sfree(outbuf_a2a); + memory->destroy(offsets); + } + + // clean up + + memory->destroy(sendcount); + memory->destroy(recvcount); + memory->destroy(sdispls); + memory->destroy(rdispls); + + // return number of output datums + // last arg to stats() = mem for procs_rvous + per-proc vecs + reordering ops + + if (statflag) rendezvous_stats(n,nout,nrvous,nrvous_out,insize,outsize, + (bigint) nrvous_out*sizeof(int) + + 4*nprocs*sizeof(int) + + MAX(all2all1_bytes,all2all2_bytes)); + return nout; +} + +/* ---------------------------------------------------------------------- + print balance and memory info for rendezvous operation + useful for debugging +------------------------------------------------------------------------- */ + +void Comm::rendezvous_stats(int n, int nout, int nrvous, int nrvous_out, + int insize, int outsize, bigint commsize) +{ + bigint size_in_all,size_in_max,size_in_min; + bigint size_out_all,size_out_max,size_out_min; + bigint size_inrvous_all,size_inrvous_max,size_inrvous_min; + bigint size_outrvous_all,size_outrvous_max,size_outrvous_min; + bigint size_comm_all,size_comm_max,size_comm_min; + + bigint size = (bigint) n*insize; + MPI_Allreduce(&size,&size_in_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(&size,&size_in_max,1,MPI_LMP_BIGINT,MPI_MAX,world); + MPI_Allreduce(&size,&size_in_min,1,MPI_LMP_BIGINT,MPI_MIN,world); + + size = (bigint) nout*outsize; + MPI_Allreduce(&size,&size_out_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(&size,&size_out_max,1,MPI_LMP_BIGINT,MPI_MAX,world); + MPI_Allreduce(&size,&size_out_min,1,MPI_LMP_BIGINT,MPI_MIN,world); + + size = (bigint) nrvous*insize; + MPI_Allreduce(&size,&size_inrvous_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(&size,&size_inrvous_max,1,MPI_LMP_BIGINT,MPI_MAX,world); + MPI_Allreduce(&size,&size_inrvous_min,1,MPI_LMP_BIGINT,MPI_MIN,world); + + size = (bigint) nrvous_out*insize; + MPI_Allreduce(&size,&size_outrvous_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(&size,&size_outrvous_max,1,MPI_LMP_BIGINT,MPI_MAX,world); + MPI_Allreduce(&size,&size_outrvous_min,1,MPI_LMP_BIGINT,MPI_MIN,world); + + size = commsize; + MPI_Allreduce(&size,&size_comm_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + MPI_Allreduce(&size,&size_comm_max,1,MPI_LMP_BIGINT,MPI_MAX,world); + MPI_Allreduce(&size,&size_comm_min,1,MPI_LMP_BIGINT,MPI_MIN,world); + + int mbytes = 1024*1024; + + if (me == 0) { + if (screen) { + fprintf(screen,"Rendezvous balance and memory info: (tot,ave,max,min) \n"); + fprintf(screen," input datum count: " + BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", + size_in_all/insize,1.0*size_in_all/nprocs/insize, + size_in_max/insize,size_in_min/insize); + fprintf(screen," input data (MB): %g %g %g %g\n", + 1.0*size_in_all/mbytes,1.0*size_in_all/nprocs/mbytes, + 1.0*size_in_max/mbytes,1.0*size_in_min/mbytes); + if (outsize) + fprintf(screen," output datum count: " + BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", + size_out_all/outsize,1.0*size_out_all/nprocs/outsize, + size_out_max/outsize,size_out_min/outsize); + else + fprintf(screen," output datum count: %d %g %d %d\n",0,0.0,0,0); + fprintf(screen," output data (MB): %g %g %g %g\n", + 1.0*size_out_all/mbytes,1.0*size_out_all/nprocs/mbytes, + 1.0*size_out_max/mbytes,1.0*size_out_min/mbytes); + fprintf(screen," input rvous datum count: " + BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", + size_inrvous_all/insize,1.0*size_inrvous_all/nprocs/insize, + size_inrvous_max/insize,size_inrvous_min/insize); + fprintf(screen," input rvous data (MB): %g %g %g %g\n", + 1.0*size_inrvous_all/mbytes,1.0*size_inrvous_all/nprocs/mbytes, + 1.0*size_inrvous_max/mbytes,1.0*size_inrvous_min/mbytes); + if (outsize) + fprintf(screen," output rvous datum count: " + BIGINT_FORMAT " %g " BIGINT_FORMAT " " BIGINT_FORMAT "\n", + size_outrvous_all/outsize,1.0*size_outrvous_all/nprocs/outsize, + size_outrvous_max/outsize,size_outrvous_min/outsize); + else + fprintf(screen," output rvous datum count: %d %g %d %d\n",0,0.0,0,0); + fprintf(screen," output rvous data (MB): %g %g %g %g\n", + 1.0*size_outrvous_all/mbytes,1.0*size_outrvous_all/nprocs/mbytes, + 1.0*size_outrvous_max/mbytes,1.0*size_outrvous_min/mbytes); + fprintf(screen," rvous comm (MB): %g %g %g %g\n", + 1.0*size_comm_all/mbytes,1.0*size_comm_all/nprocs/mbytes, + 1.0*size_comm_max/mbytes,1.0*size_comm_min/mbytes); + } + } +} + /* ---------------------------------------------------------------------- proc 0 reads Nlines from file into buf and bcasts buf to all procs caller allocates buf to max size needed diff --git a/src/comm.h b/src/comm.h index 2579f9b283..30360b1059 100644 --- a/src/comm.h +++ b/src/comm.h @@ -109,6 +109,10 @@ class Comm : protected Pointers { void ring(int, int, void *, int, void (*)(int, char *, void *), void *, void *, int self = 1); + int rendezvous(int, int, char *, int, int, int *, + int (*)(int, char *, int &, int *&, char *&, void *), + int, char *&, int, void *, int statflag=0); + int read_lines_from_file(FILE *, int, int, char *); int read_lines_from_file_universe(FILE *, int, int, char *); @@ -142,6 +146,15 @@ class Comm : protected Pointers { int ncores; // # of cores per node int coregrid[3]; // 3d grid of cores within a node int user_coregrid[3]; // user request for cores in each dim + + int rendezvous_irregular(int, char *, int, int, int *, + int (*)(int, char *, int &, int *&, char *&, void *), + int, char *&, int, void *, int); + int rendezvous_all2all(int, char *, int, int, int *, + int (*)(int, char *, int &, int *&, char *&, void *), + int, char *&, int, void *, int); + void rendezvous_stats(int, int, int, int, int, int, bigint); + public: enum{MULTIPLE}; }; diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index bf7f3e2f8f..330551aaed 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -1069,6 +1069,7 @@ void CommBrick::reverse_comm_fix_variable(Fix *fix) MPI_Sendrecv(&nsend,1,MPI_INT,recvproc[iswap],0, &nrecv,1,MPI_INT,sendproc[iswap],0,world, MPI_STATUS_IGNORE); + if (sendnum[iswap]) { if (nrecv > maxrecv) grow_recv(nrecv); MPI_Irecv(buf_recv,maxrecv,MPI_DOUBLE,sendproc[iswap],0, diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index cb0da42970..52e4256fca 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -514,9 +514,6 @@ void CreateAtoms::command(int narg, char **arg) if (domain->triclinic) domain->lamda2x(atom->nlocal); } - MPI_Barrier(world); - double time2 = MPI_Wtime(); - // clean up delete ranmol; @@ -526,21 +523,6 @@ void CreateAtoms::command(int narg, char **arg) delete [] ystr; delete [] zstr; - // print status - - if (comm->me == 0) { - if (screen) { - fprintf(screen,"Created " BIGINT_FORMAT " atoms\n", - atom->natoms-natoms_previous); - fprintf(screen," Time spent = %g secs\n",time2-time1); - } - if (logfile) { - fprintf(logfile,"Created " BIGINT_FORMAT " atoms\n", - atom->natoms-natoms_previous); - fprintf(logfile," Time spent = %g secs\n",time2-time1); - } - } - // for MOLECULE mode: // create special bond lists for molecular systems, // but not for atom style template @@ -550,6 +532,25 @@ void CreateAtoms::command(int narg, char **arg) if (atom->molecular == 1 && onemol->bondflag && !onemol->specialflag) { Special special(lmp); special.build(); + + } + } + + // print status + + MPI_Barrier(world); + double time2 = MPI_Wtime(); + + if (comm->me == 0) { + if (screen) { + fprintf(screen,"Created " BIGINT_FORMAT " atoms\n", + atom->natoms-natoms_previous); + fprintf(screen," create_atoms CPU = %g secs\n",time2-time1); + } + if (logfile) { + fprintf(logfile,"Created " BIGINT_FORMAT " atoms\n", + atom->natoms-natoms_previous); + fprintf(logfile," create_atoms CPU = %g secs\n",time2-time1); } } } diff --git a/src/dihedral.h b/src/dihedral.h index 627104871b..f1b42008bf 100644 --- a/src/dihedral.h +++ b/src/dihedral.h @@ -56,6 +56,10 @@ class Dihedral : protected Pointers { int vflag_either,vflag_global,vflag_atom; int maxeatom,maxvatom; + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int, int alloc = 1); void ev_tally(int, int, int, int, int, int, double, double *, double *, double *, double, double, double, diff --git a/src/dihedral_hybrid.cpp b/src/dihedral_hybrid.cpp index b9107ac874..f3e4823d53 100644 --- a/src/dihedral_hybrid.cpp +++ b/src/dihedral_hybrid.cpp @@ -104,8 +104,7 @@ void DihedralHybrid::compute(int eflag, int vflag) // set neighbor->dihedrallist to sub-style dihedrallist before call // accumulate sub-style global/peratom energy/virial in hybrid - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); for (m = 0; m < nstyles; m++) { neighbor->ndihedrallist = ndihedrallist[m]; diff --git a/src/dihedral_zero.cpp b/src/dihedral_zero.cpp index 46facdb6db..8145d5f32d 100644 --- a/src/dihedral_zero.cpp +++ b/src/dihedral_zero.cpp @@ -44,8 +44,7 @@ DihedralZero::~DihedralZero() void DihedralZero::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/domain.cpp b/src/domain.cpp index beaf5fc08e..86c4eb2c02 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -763,9 +763,9 @@ void Domain::image_check() continue; } - delx = unwrap[i][0] - unwrap[k][0]; - dely = unwrap[i][1] - unwrap[k][1]; - delz = unwrap[i][2] - unwrap[k][2]; + delx = fabs(unwrap[i][0] - unwrap[k][0]); + dely = fabs(unwrap[i][1] - unwrap[k][1]); + delz = fabs(unwrap[i][2] - unwrap[k][2]); if (xperiodic && delx > xprd_half) flag = 1; if (yperiodic && dely > yprd_half) flag = 1; diff --git a/src/dump.cpp b/src/dump.cpp index 7cd80dcf71..8fa07a9cb2 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -423,7 +423,12 @@ void Dump::write() atom->x = xpbc; atom->v = vpbc; atom->image = imagepbc; + + // for triclinic, PBC is applied in lamda coordinates + + if (domain->triclinic) domain->x2lamda(nlocal); domain->pbc(); + if (domain->triclinic) domain->lamda2x(nlocal); } // pack my data into buf diff --git a/src/fix.h b/src/fix.h index 21dfc955a8..7eaff38bd3 100644 --- a/src/fix.h +++ b/src/fix.h @@ -223,6 +223,10 @@ class Fix : protected Pointers { int dynamic; // recount atoms for temperature computes + void ev_init(int eflag, int vflag) { + if (eflag||vflag) ev_setup(eflag, vflag); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int); void ev_tally(int, int *, double, double, double *); void v_setup(int); diff --git a/src/fix_ave_histo.cpp b/src/fix_ave_histo.cpp index a5bf8db557..d60fe7af14 100644 --- a/src/fix_ave_histo.cpp +++ b/src/fix_ave_histo.cpp @@ -32,7 +32,7 @@ using namespace FixConst; enum{X,V,F,COMPUTE,FIX,VARIABLE}; enum{ONE,RUNNING}; enum{SCALAR,VECTOR,WINDOW}; -enum{GLOBAL,PERATOM,LOCAL}; +enum{DEFAULT,GLOBAL,PERATOM,LOCAL}; enum{IGNORE,END,EXTRA}; #define INVOKED_SCALAR 1 @@ -46,8 +46,10 @@ enum{IGNORE,END,EXTRA}; FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), - nvalues(0), which(NULL), argindex(NULL), value2index(NULL), ids(NULL), fp(NULL), stats_list(NULL), - bin(NULL), bin_total(NULL), bin_all(NULL), bin_list(NULL), coord(NULL), vector(NULL) + nvalues(0), which(NULL), argindex(NULL), value2index(NULL), + ids(NULL), fp(NULL), stats_list(NULL), + bin(NULL), bin_total(NULL), bin_all(NULL), bin_list(NULL), + coord(NULL), vector(NULL) { if (narg < 10) error->all(FLERR,"Illegal fix ave/histo command"); @@ -188,9 +190,8 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : memory->sfree(earg); } - // setup and error check - // kind = inputs are all global, or all per-atom, or all local - // for fix inputs, check that fix frequency is acceptable + // check input args for kind consistency + // all inputs must all be global, per-atom, or local if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) error->all(FLERR,"Illegal fix ave/histo command"); @@ -201,40 +202,65 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : if (ave != RUNNING && overwrite) error->all(FLERR,"Illegal fix ave/histo command"); - int kindflag; + int kindglobal,kindperatom,kindlocal; + for (int i = 0; i < nvalues; i++) { - if (which[i] == X || which[i] == V || which[i] == F) kindflag = PERATOM; - else if (which[i] == COMPUTE) { + kindglobal = kindperatom = kindlocal = 0; + + if (which[i] == X || which[i] == V || which[i] == F) { + kindperatom = 1; + + } else if (which[i] == COMPUTE) { int c_id = modify->find_compute(ids[i]); if (c_id < 0) error->all(FLERR,"Fix ave/histo input is invalid compute"); Compute *compute = modify->compute[c_id]; + // computes can produce multiple kinds of output if (compute->scalar_flag || compute->vector_flag || compute->array_flag) - kindflag = GLOBAL; - else if (compute->peratom_flag) kindflag = PERATOM; - else if (compute->local_flag) kindflag = LOCAL; - else error->all(FLERR,"Fix ave/histo input is invalid compute"); + kindglobal = 1; + if (compute->peratom_flag) kindperatom = 1; + if (compute->local_flag) kindlocal = 1; + } else if (which[i] == FIX) { int f_id = modify->find_fix(ids[i]); if (f_id < 0) error->all(FLERR,"Fix ave/histo input is invalid fix"); Fix *fix = modify->fix[f_id]; + // fixes can produce multiple kinds of output if (fix->scalar_flag || fix->vector_flag || fix->array_flag) - kindflag = GLOBAL; - else if (fix->peratom_flag) kindflag = PERATOM; - else if (fix->local_flag) kindflag = LOCAL; - else error->all(FLERR,"Fix ave/histo input is invalid fix"); + kindglobal = 1; + if (fix->peratom_flag) kindperatom = 1; + if (fix->local_flag) kindlocal = 1; + } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); - if (ivariable < 0) error->all(FLERR,"Fix ave/histo input is invalid variable"); - if (input->variable->equalstyle(ivariable)) kindflag = GLOBAL; - else if (input->variable->atomstyle(ivariable)) kindflag = PERATOM; - else error->all(FLERR,"Fix ave/histo input is invalid variable"); + if (ivariable < 0) + error->all(FLERR,"Fix ave/histo input is invalid variable"); + // variables only produce one kind of output + if (input->variable->equalstyle(ivariable)) kindglobal = 1; + else if (input->variable->atomstyle(ivariable)) kindperatom = 1; + else error->all(FLERR,"Fix ave/histo input is invalid kind of variable"); + } + + if (kind == DEFAULT) { + if (kindglobal + kindperatom + kindlocal > 1) + error->all(FLERR,"Fix ave/histo input kind is ambiguous"); + if (kindglobal) kind = GLOBAL; + if (kindperatom) kind = PERATOM; + if (kindlocal) kind = LOCAL; + } else if (kind == GLOBAL) { + if (!kindglobal) + error->all(FLERR,"Fix ave/histo input kind is invalid"); + } else if (kind == PERATOM) { + if (!kindperatom) + error->all(FLERR,"Fix ave/histo input kind is invalid"); + } else if (kind == LOCAL) { + if (!kindlocal) + error->all(FLERR,"Fix ave/histo input kind is invalid"); } - if (i == 0) kind = kindflag; - else if (kindflag != kind) - error->all(FLERR, - "Fix ave/histo inputs are not all global, peratom, or local"); } + // more error checks + // for fix inputs, check that fix frequency is acceptable + if (kind == PERATOM && mode == SCALAR) error->all(FLERR, "Fix ave/histo cannot input per-atom values in scalar mode"); @@ -919,6 +945,7 @@ void FixAveHisto::options(int iarg, int narg, char **arg) // option defaults fp = NULL; + kind = DEFAULT; ave = ONE; startstep = 0; mode = SCALAR; @@ -942,6 +969,13 @@ void FixAveHisto::options(int iarg, int narg, char **arg) } } iarg += 2; + } else if (strcmp(arg[iarg],"kind") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); + if (strcmp(arg[iarg+1],"global") == 0) kind = GLOBAL; + else if (strcmp(arg[iarg+1],"peratom") == 0) kind = PERATOM; + else if (strcmp(arg[iarg+1],"local") == 0) kind = LOCAL; + else error->all(FLERR,"Illegal fix ave/histo command"); + iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; diff --git a/src/fix_external.cpp b/src/fix_external.cpp index 5ac9206e7f..b1ffa65e49 100644 --- a/src/fix_external.cpp +++ b/src/fix_external.cpp @@ -141,8 +141,7 @@ void FixExternal::post_force(int vflag) bigint ntimestep = update->ntimestep; int eflag = eflag_caller; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); // invoke the callback in driver program // it will fill fexternal with forces diff --git a/src/hashlittle.cpp b/src/hashlittle.cpp new file mode 100644 index 0000000000..0abcd2bcc5 --- /dev/null +++ b/src/hashlittle.cpp @@ -0,0 +1,348 @@ +// Hash function hashlittle() +// from lookup3.c, by Bob Jenkins, May 2006, Public Domain +// bob_jenkins@burtleburtle.net + +#include +#include +#include + +// if the system defines the __BYTE_ORDER__ define, +// we use it instead of guessing the platform + +#if defined(__BYTE_ORDER__) +# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define HASH_LITTLE_ENDIAN 1 +# else +# define HASH_LITTLE_ENDIAN 0 +# endif +#else // heuristic platform guess +# if defined(__bg__) +# define HASH_LITTLE_ENDIAN 0 // IBM BlueGene is big endian +# else +# define HASH_LITTLE_ENDIAN 1 // Intel and AMD x86 are little endian +# endif +#endif + +#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) + +/* +------------------------------------------------------------------------------- +mix -- mix 3 32-bit values reversibly. + +This is reversible, so any information in (a,b,c) before mix() is +still in (a,b,c) after mix(). + +If four pairs of (a,b,c) inputs are run through mix(), or through +mix() in reverse, there are at least 32 bits of the output that +are sometimes the same for one pair and different for another pair. +This was tested for: +* pairs that differed by one bit, by two bits, in any combination + of top bits of (a,b,c), or in any combination of bottom bits of + (a,b,c). +* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed + the output delta to a Gray code (a^(a>>1)) so a string of 1's (as + is commonly produced by subtraction) look like a single 1-bit + difference. +* the base values were pseudorandom, all zero but one bit set, or + all zero plus a counter that starts at zero. + +Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that +satisfy this are + 4 6 8 16 19 4 + 9 15 3 18 27 15 + 14 9 3 7 17 3 +Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing +for "differ" defined as + with a one-bit base and a two-bit delta. I +used http://burtleburtle.net/bob/hash/avalanche.html to choose +the operations, constants, and arrangements of the variables. + +This does not achieve avalanche. There are input bits of (a,b,c) +that fail to affect some output bits of (a,b,c), especially of a. The +most thoroughly mixed value is c, but it doesn't really even achieve +avalanche in c. + +This allows some parallelism. Read-after-writes are good at doubling +the number of bits affected, so the goal of mixing pulls in the opposite +direction as the goal of parallelism. I did what I could. Rotates +seem to cost as much as shifts on every machine I could lay my hands +on, and rotates are much kinder to the top and bottom bits, so I used +rotates. +------------------------------------------------------------------------------- +*/ +#define mix(a,b,c) \ +{ \ + a -= c; a ^= rot(c, 4); c += b; \ + b -= a; b ^= rot(a, 6); a += c; \ + c -= b; c ^= rot(b, 8); b += a; \ + a -= c; a ^= rot(c,16); c += b; \ + b -= a; b ^= rot(a,19); a += c; \ + c -= b; c ^= rot(b, 4); b += a; \ +} + +/* +------------------------------------------------------------------------------- +final -- final mixing of 3 32-bit values (a,b,c) into c + +Pairs of (a,b,c) values differing in only a few bits will usually +produce values of c that look totally different. This was tested for +* pairs that differed by one bit, by two bits, in any combination + of top bits of (a,b,c), or in any combination of bottom bits of + (a,b,c). +* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed + the output delta to a Gray code (a^(a>>1)) so a string of 1's (as + is commonly produced by subtraction) look like a single 1-bit + difference. +* the base values were pseudorandom, all zero but one bit set, or + all zero plus a counter that starts at zero. + +These constants passed: + 14 11 25 16 4 14 24 + 12 14 25 16 4 14 24 +and these came close: + 4 8 15 26 3 22 24 + 10 8 15 26 3 22 24 + 11 8 15 26 3 22 24 +------------------------------------------------------------------------------- +*/ +#define final(a,b,c) \ +{ \ + c ^= b; c -= rot(b,14); \ + a ^= c; a -= rot(c,11); \ + b ^= a; b -= rot(a,25); \ + c ^= b; c -= rot(b,16); \ + a ^= c; a -= rot(c,4); \ + b ^= a; b -= rot(a,14); \ + c ^= b; c -= rot(b,24); \ +} + +/* +------------------------------------------------------------------------------- +hashlittle() -- hash a variable-length key into a 32-bit value + k : the key (the unaligned variable-length array of bytes) + length : the length of the key, counting by bytes + initval : can be any 4-byte value +Returns a 32-bit value. Every bit of the key affects every bit of +the return value. Two keys differing by one or two bits will have +totally different hash values. + +The best hash table sizes are powers of 2. There is no need to do +mod a prime (mod is sooo slow!). If you need less than 32 bits, +use a bitmask. For example, if you need only 10 bits, do + h = (h & hashmask(10)); +In which case, the hash table should have hashsize(10) elements. + +If you are hashing n strings (uint8_t **)k, do it like this: + for (i=0, h=0; i 12) + { + a += k[0]; + b += k[1]; + c += k[2]; + mix(a,b,c); + length -= 12; + k += 3; + } + + /*----------------------------- handle the last (probably partial) block */ + /* + * "k[2]&0xffffff" actually reads beyond the end of the string, but + * then masks off the part it's not allowed to read. Because the + * string is aligned, the masked-off tail is in the same word as the + * rest of the string. Every machine with memory protection I've seen + * does it on word boundaries, so is OK with this. But VALGRIND will + * still catch it and complain. The masking trick does make the hash + * noticably faster for short strings (like English words). + */ +#ifndef VALGRIND + + switch(length) + { + case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; + case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break; + case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break; + case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break; + case 8 : b+=k[1]; a+=k[0]; break; + case 7 : b+=k[1]&0xffffff; a+=k[0]; break; + case 6 : b+=k[1]&0xffff; a+=k[0]; break; + case 5 : b+=k[1]&0xff; a+=k[0]; break; + case 4 : a+=k[0]; break; + case 3 : a+=k[0]&0xffffff; break; + case 2 : a+=k[0]&0xffff; break; + case 1 : a+=k[0]&0xff; break; + case 0 : return c; /* zero length strings require no mixing */ + } + +#else /* make valgrind happy */ + + const uint8_t *k8 = (const uint8_t *)k; + switch(length) + { + case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; + case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ + case 10: c+=((uint32_t)k8[9])<<8; /* fall through */ + case 9 : c+=k8[8]; /* fall through */ + case 8 : b+=k[1]; a+=k[0]; break; + case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ + case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */ + case 5 : b+=k8[4]; /* fall through */ + case 4 : a+=k[0]; break; + case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ + case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */ + case 1 : a+=k8[0]; break; + case 0 : return c; + } + +#endif /* !valgrind */ + + } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) { + const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */ + const uint8_t *k8; + + /*--------------- all but last block: aligned reads and different mixing */ + while (length > 12) + { + a += k[0] + (((uint32_t)k[1])<<16); + b += k[2] + (((uint32_t)k[3])<<16); + c += k[4] + (((uint32_t)k[5])<<16); + mix(a,b,c); + length -= 12; + k += 6; + } + + /*----------------------------- handle the last (probably partial) block */ + k8 = (const uint8_t *)k; + switch(length) + { + case 12: c+=k[4]+(((uint32_t)k[5])<<16); + b+=k[2]+(((uint32_t)k[3])<<16); + a+=k[0]+(((uint32_t)k[1])<<16); + break; + case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ + case 10: c+=k[4]; + b+=k[2]+(((uint32_t)k[3])<<16); + a+=k[0]+(((uint32_t)k[1])<<16); + break; + case 9 : c+=k8[8]; /* fall through */ + case 8 : b+=k[2]+(((uint32_t)k[3])<<16); + a+=k[0]+(((uint32_t)k[1])<<16); + break; + case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ + case 6 : b+=k[2]; + a+=k[0]+(((uint32_t)k[1])<<16); + break; + case 5 : b+=k8[4]; /* fall through */ + case 4 : a+=k[0]+(((uint32_t)k[1])<<16); + break; + case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ + case 2 : a+=k[0]; + break; + case 1 : a+=k8[0]; + break; + case 0 : return c; /* zero length requires no mixing */ + } + + } else { /* need to read the key one byte at a time */ + const uint8_t *k = (const uint8_t *)key; + + /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ + while (length > 12) + { + a += k[0]; + a += ((uint32_t)k[1])<<8; + a += ((uint32_t)k[2])<<16; + a += ((uint32_t)k[3])<<24; + b += k[4]; + b += ((uint32_t)k[5])<<8; + b += ((uint32_t)k[6])<<16; + b += ((uint32_t)k[7])<<24; + c += k[8]; + c += ((uint32_t)k[9])<<8; + c += ((uint32_t)k[10])<<16; + c += ((uint32_t)k[11])<<24; + mix(a,b,c); + length -= 12; + k += 12; + } + + /*-------------------------------- last block: affect all 32 bits of (c) */ + switch(length) /* all the case statements fall through */ + { + case 12: c+=((uint32_t)k[11])<<24; + case 11: c+=((uint32_t)k[10])<<16; + case 10: c+=((uint32_t)k[9])<<8; + case 9 : c+=k[8]; + case 8 : b+=((uint32_t)k[7])<<24; + case 7 : b+=((uint32_t)k[6])<<16; + case 6 : b+=((uint32_t)k[5])<<8; + case 5 : b+=k[4]; + case 4 : a+=((uint32_t)k[3])<<24; + case 3 : a+=((uint32_t)k[2])<<16; + case 2 : a+=((uint32_t)k[1])<<8; + case 1 : a+=k[0]; + break; + case 0 : return c; + } + } + + final(a,b,c); + return c; + +#else /* PURIFY_HATES_HASHLITTLE */ +/* I don't know what it is about Jenkins' hashlittle function, but + * it drives purify insane, even with VALGRIND defined. It makes + * purify unusable!! The code execution doesn't even make sense. + * Below is a (probably) weaker hash function that at least allows + * testing with purify. + */ +#define MAXINT_DIV_PHI 11400714819323198485U + + uint32_t h, rest, *p, bytes, num_bytes; + char *byteptr; + + num_bytes = length; + + /* First hash the uint32_t-sized portions of the key */ + h = 0; + for (p = (uint32_t *)key, bytes=num_bytes; + bytes >= (uint32_t) sizeof(uint32_t); + bytes-=sizeof(uint32_t), p++){ + h = (h^(*p))*MAXINT_DIV_PHI; + } + + /* Then take care of the remaining bytes, if any */ + rest = 0; + for (byteptr = (char *)p; bytes > 0; bytes--, byteptr++){ + rest = (rest<<8) | (*byteptr); + } + + /* If extra bytes, merge the two parts */ + if (rest) + h = (h^rest)*MAXINT_DIV_PHI; + + return h; +#endif /* PURIFY_HATES_HASHLITTLE */ +} diff --git a/src/hashlittle.h b/src/hashlittle.h new file mode 100644 index 0000000000..7b57a35c80 --- /dev/null +++ b/src/hashlittle.h @@ -0,0 +1,5 @@ +// Hash function hashlittle() +// from lookup3.c, by Bob Jenkins, May 2006, Public Domain +// bob_jenkins@burtleburtle.net + +uint32_t hashlittle(const void *key, size_t length, uint32_t); diff --git a/src/improper.h b/src/improper.h index adcf6d29c8..d940b43a13 100644 --- a/src/improper.h +++ b/src/improper.h @@ -56,6 +56,10 @@ class Improper : protected Pointers { int vflag_either,vflag_global,vflag_atom; int maxeatom,maxvatom; + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int, int alloc = 1); void ev_tally(int, int, int, int, int, int, double, double *, double *, double *, double, double, double, diff --git a/src/improper_hybrid.cpp b/src/improper_hybrid.cpp index 3c17e42eaf..5fdcb42a96 100644 --- a/src/improper_hybrid.cpp +++ b/src/improper_hybrid.cpp @@ -104,8 +104,7 @@ void ImproperHybrid::compute(int eflag, int vflag) // set neighbor->improperlist to sub-style improperlist before call // accumulate sub-style global/peratom energy/virial in hybrid - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = eflag_global = vflag_global = eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); for (m = 0; m < nstyles; m++) { neighbor->nimproperlist = nimproperlist[m]; diff --git a/src/improper_zero.cpp b/src/improper_zero.cpp index 8a1fa529c6..747dd57919 100644 --- a/src/improper_zero.cpp +++ b/src/improper_zero.cpp @@ -44,8 +44,7 @@ ImproperZero::~ImproperZero() void ImproperZero::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/irregular.cpp b/src/irregular.cpp index 9c15f135d0..848d853f2a 100644 --- a/src/irregular.cpp +++ b/src/irregular.cpp @@ -501,7 +501,8 @@ int compare_standalone(const int i, const int j, void *ptr) void Irregular::exchange_atom(double *sendbuf, int *sizes, double *recvbuf) { - int i,m,n,offset,count; + int i,m,n,count; + bigint offset; // post all receives @@ -621,6 +622,7 @@ int Irregular::create_data(int n, int *proclist, int sortflag) num_send = new int[nsend_proc]; index_send = new int[n-work1[me]]; index_self = new int[work1[me]]; + maxindex = n; // proc_send = procs I send to // num_send = # of datums I send to each proc @@ -678,8 +680,182 @@ int Irregular::create_data(int n, int *proclist, int sortflag) // receive incoming messages // proc_recv = procs I recv from - // num_recv = total size of message each proc sends me - // nrecvdatum = total size of data I recv + // num_recv = # of datums each proc sends me + // nrecvdatum = total # of datums I recv + + int nrecvdatum = 0; + for (i = 0; i < nrecv_proc; i++) { + MPI_Recv(&num_recv[i],1,MPI_INT,MPI_ANY_SOURCE,0,world,status); + proc_recv[i] = status->MPI_SOURCE; + nrecvdatum += num_recv[i]; + } + nrecvdatum += num_self; + + // sort proc_recv and num_recv by proc ID if requested + // useful for debugging to insure reproducible ordering of received datums + + if (sortflag) { + int *order = new int[nrecv_proc]; + int *proc_recv_ordered = new int[nrecv_proc]; + int *num_recv_ordered = new int[nrecv_proc]; + + for (i = 0; i < nrecv_proc; i++) order[i] = i; + +#if defined(LMP_QSORT) + proc_recv_copy = proc_recv; + qsort(order,nrecv_proc,sizeof(int),compare_standalone); +#else + merge_sort(order,nrecv_proc,(void *)proc_recv,compare_standalone); +#endif + + int j; + for (i = 0; i < nrecv_proc; i++) { + j = order[i]; + proc_recv_ordered[i] = proc_recv[j]; + num_recv_ordered[i] = num_recv[j]; + } + + memcpy(proc_recv,proc_recv_ordered,nrecv_proc*sizeof(int)); + memcpy(num_recv,num_recv_ordered,nrecv_proc*sizeof(int)); + delete [] order; + delete [] proc_recv_ordered; + delete [] num_recv_ordered; + } + + // barrier to insure all MPI_ANY_SOURCE messages are received + // else another proc could proceed to exchange_data() and send to me + + MPI_Barrier(world); + + // return # of datums I will receive + + return nrecvdatum; +} + +/* ---------------------------------------------------------------------- + create communication plan based on list of datums of uniform size + n = # of datums to send + procs = how many datums to send to each proc, must include self + sort = flag for sorting order of received messages by proc ID + return total # of datums I will recv, including any to self +------------------------------------------------------------------------- */ + +int Irregular::create_data_grouped(int n, int *procs, int sortflag) +{ + int i,j,k,m; + + // setup for collective comm + // work1 = # of datums I send to each proc, set self to 0 + // work2 = 1 for all procs, used for ReduceScatter + + for (i = 0; i < nprocs; i++) { + work1[i] = procs[i]; + work2[i] = 1; + } + work1[me] = 0; + + // nrecv_proc = # of procs I receive messages from, not including self + // options for performing ReduceScatter operation + // some are more efficient on some machines at big sizes + +#ifdef LAMMPS_RS_ALLREDUCE_INPLACE + MPI_Allreduce(MPI_IN_PLACE,work1,nprocs,MPI_INT,MPI_SUM,world); + nrecv_proc = work1[me]; +#else +#ifdef LAMMPS_RS_ALLREDUCE + MPI_Allreduce(work1,work2,nprocs,MPI_INT,MPI_SUM,world); + nrecv_proc = work2[me]; +#else + MPI_Reduce_scatter(work1,&nrecv_proc,work2,MPI_INT,MPI_SUM,world); +#endif +#endif + + // allocate receive arrays + + proc_recv = new int[nrecv_proc]; + num_recv = new int[nrecv_proc]; + request = new MPI_Request[nrecv_proc]; + status = new MPI_Status[nrecv_proc]; + + // work1 = # of datums I send to each proc, including self + // nsend_proc = # of procs I send messages to, not including self + + for (i = 0; i < nprocs; i++) work1[i] = procs[i]; + + nsend_proc = 0; + for (i = 0; i < nprocs; i++) + if (work1[i]) nsend_proc++; + if (work1[me]) nsend_proc--; + + // allocate send and self arrays + + proc_send = new int[nsend_proc]; + num_send = new int[nsend_proc]; + index_send = new int[n-work1[me]]; + index_self = new int[work1[me]]; + maxindex = n; + + // proc_send = procs I send to + // num_send = # of datums I send to each proc + // num_self = # of datums I copy to self + // to balance pattern of send messages: + // each proc begins with iproc > me, continues until iproc = me + // reset work1 to store which send message each proc corresponds to + + int iproc = me; + int isend = 0; + for (i = 0; i < nprocs; i++) { + iproc++; + if (iproc == nprocs) iproc = 0; + if (iproc == me) { + num_self = work1[iproc]; + work1[iproc] = 0; + } else if (work1[iproc] > 0) { + proc_send[isend] = iproc; + num_send[isend] = work1[iproc]; + work1[iproc] = isend; + isend++; + } + } + + // work2 = offsets into index_send for each proc I send to + // m = ptr into index_self + // index_send = list of which datums to send to each proc + // 1st N1 values are datum indices for 1st proc, + // next N2 values are datum indices for 2nd proc, etc + // index_self = list of which datums to copy to self + + work2[0] = 0; + for (i = 1; i < nsend_proc; i++) work2[i] = work2[i-1] + num_send[i-1]; + + m = 0; + i = 0; + for (iproc = 0; iproc < nprocs; iproc++) { + k = procs[iproc]; + for (j = 0; j < k; j++) { + if (iproc == me) index_self[m++] = i++; + else { + isend = work1[iproc]; + index_send[work2[isend]++] = i++; + } + } + } + + // tell receivers how much data I send + // sendmax_proc = largest # of datums I send in a single message + + sendmax_proc = 0; + for (i = 0; i < nsend_proc; i++) { + MPI_Request tmpReq; // Use non-blocking send to avoid possible deadlock + MPI_Isend(&num_send[i],1,MPI_INT,proc_send[i],0,world,&tmpReq); + MPI_Request_free(&tmpReq); // the MPI_Barrier below marks completion + sendmax_proc = MAX(sendmax_proc,num_send[i]); + } + + // receive incoming messages + // proc_recv = procs I recv from + // num_recv = # of datums each proc sends me + // nrecvdatum = total # of datums I recv int nrecvdatum = 0; for (i = 0; i < nrecv_proc; i++) { @@ -739,11 +915,13 @@ int Irregular::create_data(int n, int *proclist, int sortflag) void Irregular::exchange_data(char *sendbuf, int nbytes, char *recvbuf) { - int i,m,n,offset,count; + int i,n,count; + bigint m; // these 2 lines enable send/recv buf to be larger than 2 GB + char *dest; // post all receives, starting after self copies - offset = num_self*nbytes; + bigint offset = num_self*nbytes; for (int irecv = 0; irecv < nrecv_proc; irecv++) { MPI_Irecv(&recvbuf[offset],num_recv[irecv]*nbytes,MPI_CHAR, proc_recv[irecv],0,world,&request[irecv]); @@ -765,23 +943,34 @@ void Irregular::exchange_data(char *sendbuf, int nbytes, char *recvbuf) n = 0; for (int isend = 0; isend < nsend_proc; isend++) { count = num_send[isend]; + dest = buf; for (i = 0; i < count; i++) { m = index_send[n++]; - memcpy(&buf[i*nbytes],&sendbuf[m*nbytes],nbytes); + memcpy(dest,&sendbuf[m*nbytes],nbytes); + dest += nbytes; } MPI_Send(buf,count*nbytes,MPI_CHAR,proc_send[isend],0,world); } // copy datums to self, put at beginning of recvbuf + dest = recvbuf; for (i = 0; i < num_self; i++) { m = index_self[i]; - memcpy(&recvbuf[i*nbytes],&sendbuf[m*nbytes],nbytes); + memcpy(dest,&sendbuf[m*nbytes],nbytes); + dest += nbytes; } // wait on all incoming messages if (nrecv_proc) MPI_Waitall(nrecv_proc,request,status); + + // approximate memory tally + // DEBUG lines + + //bigint irregular_bytes = 2*nprocs*sizeof(int); + //irregular_bytes += maxindex*sizeof(int); + //irregular_bytes += maxbuf; } /* ---------------------------------------------------------------------- diff --git a/src/irregular.h b/src/irregular.h index 1f74fe801b..d56bcb253d 100644 --- a/src/irregular.h +++ b/src/irregular.h @@ -33,6 +33,7 @@ class Irregular : protected Pointers { int *procassign = NULL); int migrate_check(); int create_data(int, int *, int sortflag = 0); + int create_data_grouped(int, int *, int sortflag = 0); void exchange_data(char *, int, char *); void destroy_data(); bigint memory_usage(); @@ -48,6 +49,7 @@ class Irregular : protected Pointers { double *dbuf; // double buf for largest single atom send int maxbuf; // size of char buf in bytes char *buf; // char buf for largest single data send + int maxindex; // combined size of index_send + index_self int *mproclist,*msizes; // persistent vectors in migrate_atoms int maxlocal; // allocated size of mproclist and msizes diff --git a/src/kspace.cpp b/src/kspace.cpp index 25491cd964..0144ea59a3 100644 --- a/src/kspace.cpp +++ b/src/kspace.cpp @@ -168,9 +168,7 @@ void KSpace::triclinic_check() void KSpace::compute_dummy(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- diff --git a/src/kspace.h b/src/kspace.h index f29659d0e8..2345cebf24 100644 --- a/src/kspace.h +++ b/src/kspace.h @@ -194,6 +194,10 @@ class KSpace : protected Pointers { int kx_ewald,ky_ewald,kz_ewald; // kspace settings for Ewald sum void pair_check(); + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else evflag = eflag_either = eflag_global = eflag_atom = vflag_either = vflag_global = vflag_atom = 0; + } void ev_setup(int, int, int alloc = 1); double estimate_table_accuracy(double, double); }; diff --git a/src/min.cpp b/src/min.cpp index cd9253f8d3..2a42a444a0 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -655,7 +655,11 @@ void Min::modify_params(int narg, char **arg) else if (strcmp(arg[iarg+1],"forcezero") == 0) linestyle = 2; else error->all(FLERR,"Illegal min_modify command"); iarg += 2; - } else error->all(FLERR,"Illegal min_modify command"); + } else { + int n = modify_param(narg-iarg,&arg[iarg]); + if (n == 0) error->all(FLERR,"Illegal fix_modify command"); + iarg += n; + } } } diff --git a/src/min.h b/src/min.h index 92da97c664..a63254231c 100644 --- a/src/min.h +++ b/src/min.h @@ -38,6 +38,7 @@ class Min : protected Pointers { int request(class Pair *, int, double); virtual bigint memory_usage() {return 0;} void modify_params(int, char **); + virtual int modify_param(int, char **) {return 0;} double fnorm_sqr(); double fnorm_inf(); diff --git a/src/modify.cpp b/src/modify.cpp index 0a03bb6804..7f43f035d2 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -28,6 +28,7 @@ #include "variable.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -1058,7 +1059,7 @@ int Modify::check_rigid_group_overlap(int groupbit) int n = 0; for (int ifix = 0; ifix < nfix; ifix++) { - if (strncmp("rigid",fix[ifix]->style,5) == 0) { + if (utils::strmatch(fix[ifix]->style,"^rigid")) { const int * const body = (const int *)fix[ifix]->extract("body",dim); if ((body == NULL) || (dim != 1)) break; diff --git a/src/pair.cpp b/src/pair.cpp index bce70af2a3..20bc35fb01 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -72,6 +72,9 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp) single_extra = 0; svector = NULL; + setflag = NULL; + cutsq = NULL; + ewaldflag = pppmflag = msmflag = dispersionflag = tip4pflag = dipoleflag = 0; reinitflag = 1; @@ -691,8 +694,7 @@ double Pair::mix_distance(double sig1, double sig2) void Pair::compute_dummy(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); } /* ---------------------------------------------------------------------- */ diff --git a/src/pair.h b/src/pair.h index 035ebc8773..d766a20ef4 100644 --- a/src/pair.h +++ b/src/pair.h @@ -222,6 +222,10 @@ class Pair : protected Pointers { int copymode; // if set, do not deallocate during destruction // required when classes are used as functors by Kokkos + void ev_init(int eflag, int vflag, int alloc = 1) { + if (eflag||vflag) ev_setup(eflag, vflag, alloc); + else ev_unset(); + } virtual void ev_setup(int, int, int alloc = 1); void ev_unset(); void ev_tally_full(int, double, double, double, double, double, double); diff --git a/src/pair_beck.cpp b/src/pair_beck.cpp index d9c0fb902c..17731ebf0b 100644 --- a/src/pair_beck.cpp +++ b/src/pair_beck.cpp @@ -63,8 +63,7 @@ void PairBeck::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_born.cpp b/src/pair_born.cpp index 1a1db9dd90..78434c91f8 100644 --- a/src/pair_born.cpp +++ b/src/pair_born.cpp @@ -71,8 +71,7 @@ void PairBorn::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_born_coul_dsf.cpp b/src/pair_born_coul_dsf.cpp index be7f41ca2b..2e565897b5 100644 --- a/src/pair_born_coul_dsf.cpp +++ b/src/pair_born_coul_dsf.cpp @@ -77,8 +77,7 @@ void PairBornCoulDSF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_born_coul_wolf.cpp b/src/pair_born_coul_wolf.cpp index 22dcfa9f2d..3bb0e39e57 100644 --- a/src/pair_born_coul_wolf.cpp +++ b/src/pair_born_coul_wolf.cpp @@ -76,8 +76,7 @@ void PairBornCoulWolf::compute(int eflag, int vflag) double erfcc,erfcd,v_sh,dvdrr,e_self,e_shift,f_shift,qisq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_buck.cpp b/src/pair_buck.cpp index 8b6d79234b..a3cf1a38d6 100644 --- a/src/pair_buck.cpp +++ b/src/pair_buck.cpp @@ -66,8 +66,7 @@ void PairBuck::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_buck_coul_cut.cpp b/src/pair_buck_coul_cut.cpp index 7eecb62121..094797694c 100644 --- a/src/pair_buck_coul_cut.cpp +++ b/src/pair_buck_coul_cut.cpp @@ -42,7 +42,9 @@ PairBuckCoulCut::PairBuckCoulCut(LAMMPS *lmp) : Pair(lmp) PairBuckCoulCut::~PairBuckCoulCut() { - if (!copymode) { + if (copymode) return; + + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -71,8 +73,7 @@ void PairBuckCoulCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index 8741abdb89..e7c0e0aabb 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -53,8 +53,7 @@ void PairCoulCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_coul_debye.cpp b/src/pair_coul_debye.cpp index 432a015598..c8afdabb93 100644 --- a/src/pair_coul_debye.cpp +++ b/src/pair_coul_debye.cpp @@ -40,8 +40,7 @@ void PairCoulDebye::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_coul_dsf.cpp b/src/pair_coul_dsf.cpp index 8cd5f7fece..e487ff171c 100644 --- a/src/pair_coul_dsf.cpp +++ b/src/pair_coul_dsf.cpp @@ -68,8 +68,7 @@ void PairCoulDSF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_coul_streitz.cpp b/src/pair_coul_streitz.cpp index 920770ed7f..244dccda12 100644 --- a/src/pair_coul_streitz.cpp +++ b/src/pair_coul_streitz.cpp @@ -412,8 +412,7 @@ void PairCoulStreitz::compute(int eflag, int vflag) ci_jfi = ci_fifj = dci_jfi = dci_fifj = 0.0; forcecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = vflag_atom = 0; + ev_init(eflag,vflag); inum = list->inum; ilist = list->ilist; diff --git a/src/pair_coul_wolf.cpp b/src/pair_coul_wolf.cpp index 762491166e..dbf21b8bee 100644 --- a/src/pair_coul_wolf.cpp +++ b/src/pair_coul_wolf.cpp @@ -64,8 +64,7 @@ void PairCoulWolf::compute(int eflag, int vflag) double erfcc,erfcd,v_sh,dvdrr,e_self,e_shift,f_shift,qisq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_dpd.cpp b/src/pair_dpd.cpp index 5c5fc4254b..914b4aee17 100644 --- a/src/pair_dpd.cpp +++ b/src/pair_dpd.cpp @@ -70,8 +70,7 @@ void PairDPD::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **v = atom->v; diff --git a/src/pair_dpd_tstat.cpp b/src/pair_dpd_tstat.cpp index f2c0b157ea..1207c954eb 100644 --- a/src/pair_dpd_tstat.cpp +++ b/src/pair_dpd_tstat.cpp @@ -43,8 +43,7 @@ void PairDPDTstat::compute(int eflag, int vflag) double rsq,r,rinv,dot,wd,randnum,factor_dpd; int *ilist,*jlist,*numneigh,**firstneigh; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); // adjust sigma if target T is changing diff --git a/src/pair_gauss.cpp b/src/pair_gauss.cpp index 426389753b..2d157d6cac 100644 --- a/src/pair_gauss.cpp +++ b/src/pair_gauss.cpp @@ -68,8 +68,7 @@ void PairGauss::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); int occ = 0; double **x = atom->x; diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 2b2304718c..a1a6c81195 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -1,3 +1,4 @@ + /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories @@ -45,7 +46,7 @@ PairHybrid::PairHybrid(LAMMPS *lmp) : Pair(lmp), PairHybrid::~PairHybrid() { - if (nstyles) { + if (nstyles > 0) { for (int m = 0; m < nstyles; m++) { delete styles[m]; delete [] keywords[m]; @@ -95,9 +96,7 @@ void PairHybrid::compute(int eflag, int vflag) if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); // check if global component of incoming vflag = 2 // if so, reset vflag passed to substyle as if it were 0 @@ -243,11 +242,18 @@ void PairHybrid::settings(int narg, char **arg) // delete old lists, since cannot just change settings - if (nstyles) { - for (int m = 0; m < nstyles; m++) delete styles[m]; - delete [] styles; - for (int m = 0; m < nstyles; m++) delete [] keywords[m]; - delete [] keywords; + if (nstyles > 0) { + for (int m = 0; m < nstyles; m++) { + delete styles[m]; + delete [] keywords[m]; + if (special_lj[m]) delete [] special_lj[m]; + if (special_coul[m]) delete [] special_coul[m]; + } + delete[] styles; + delete[] keywords; + delete[] multiple; + delete[] special_lj; + delete[] special_coul; } if (allocated) { @@ -670,6 +676,12 @@ void PairHybrid::read_restart(FILE *fp) // allocate list of sub-styles + delete[] styles; + delete[] keywords; + delete[] multiple; + delete[] special_lj; + delete[] special_coul; + styles = new Pair*[nstyles]; keywords = new char*[nstyles]; multiple = new int[nstyles]; diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp index 457eba0e79..cefe9b87e0 100644 --- a/src/pair_lj96_cut.cpp +++ b/src/pair_lj96_cut.cpp @@ -73,8 +73,7 @@ void PairLJ96Cut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -308,8 +307,7 @@ void PairLJ96Cut::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cubic.cpp b/src/pair_lj_cubic.cpp index 770caa6359..fdbfca608f 100644 --- a/src/pair_lj_cubic.cpp +++ b/src/pair_lj_cubic.cpp @@ -67,8 +67,7 @@ void PairLJCubic::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cut.cpp b/src/pair_lj_cut.cpp index 13a546f5a5..2a0fcde3a5 100644 --- a/src/pair_lj_cut.cpp +++ b/src/pair_lj_cut.cpp @@ -73,8 +73,7 @@ void PairLJCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -305,8 +304,7 @@ void PairLJCut::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp index 15c06ab36a..6f2ba75309 100644 --- a/src/pair_lj_cut_coul_cut.cpp +++ b/src/pair_lj_cut_coul_cut.cpp @@ -67,8 +67,7 @@ void PairLJCutCoulCut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cut_coul_debye.cpp b/src/pair_lj_cut_coul_debye.cpp index dfd866ca7a..cc6e92b2e3 100644 --- a/src/pair_lj_cut_coul_debye.cpp +++ b/src/pair_lj_cut_coul_debye.cpp @@ -37,8 +37,7 @@ void PairLJCutCoulDebye::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cut_coul_dsf.cpp b/src/pair_lj_cut_coul_dsf.cpp index a49af13fb2..f114a5851f 100644 --- a/src/pair_lj_cut_coul_dsf.cpp +++ b/src/pair_lj_cut_coul_dsf.cpp @@ -52,21 +52,21 @@ PairLJCutCoulDSF::PairLJCutCoulDSF(LAMMPS *lmp) : Pair(lmp) PairLJCutCoulDSF::~PairLJCutCoulDSF() { - if (!copymode) { - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); + if (copymode) return; - memory->destroy(cut_lj); - memory->destroy(cut_ljsq); - memory->destroy(epsilon); - memory->destroy(sigma); - memory->destroy(lj1); - memory->destroy(lj2); - memory->destroy(lj3); - memory->destroy(lj4); - memory->destroy(offset); - } + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut_lj); + memory->destroy(cut_ljsq); + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(lj1); + memory->destroy(lj2); + memory->destroy(lj3); + memory->destroy(lj4); + memory->destroy(offset); } } @@ -81,8 +81,7 @@ void PairLJCutCoulDSF::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_cut_coul_wolf.cpp b/src/pair_lj_cut_coul_wolf.cpp index fc8a858ce1..2f796ded12 100644 --- a/src/pair_lj_cut_coul_wolf.cpp +++ b/src/pair_lj_cut_coul_wolf.cpp @@ -77,8 +77,7 @@ void PairLJCutCoulWolf::compute(int eflag, int vflag) evdwl = 0.0; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_expand.cpp b/src/pair_lj_expand.cpp index 9aa58b3b88..d5c0a40f2d 100644 --- a/src/pair_lj_expand.cpp +++ b/src/pair_lj_expand.cpp @@ -38,8 +38,9 @@ PairLJExpand::PairLJExpand(LAMMPS *lmp) : Pair(lmp) PairLJExpand::~PairLJExpand() { - if (!copymode) { - if (allocated) { + if (copymode) return; + + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -52,7 +53,6 @@ PairLJExpand::~PairLJExpand() memory->destroy(lj3); memory->destroy(lj4); memory->destroy(offset); - } } } @@ -67,8 +67,7 @@ void PairLJExpand::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_gromacs.cpp b/src/pair_lj_gromacs.cpp index 495e96c368..1fdaefebe9 100644 --- a/src/pair_lj_gromacs.cpp +++ b/src/pair_lj_gromacs.cpp @@ -41,8 +41,9 @@ PairLJGromacs::PairLJGromacs(LAMMPS *lmp) : Pair(lmp) PairLJGromacs::~PairLJGromacs() { - if (!copymode) { - if (allocated) { + if (copymode) return; + + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -60,7 +61,6 @@ PairLJGromacs::~PairLJGromacs() memory->destroy(ljsw3); memory->destroy(ljsw4); memory->destroy(ljsw5); - } } } @@ -75,8 +75,7 @@ void PairLJGromacs::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_gromacs_coul_gromacs.cpp b/src/pair_lj_gromacs_coul_gromacs.cpp index 414bfea92a..28dc8ec79b 100644 --- a/src/pair_lj_gromacs_coul_gromacs.cpp +++ b/src/pair_lj_gromacs_coul_gromacs.cpp @@ -41,8 +41,9 @@ PairLJGromacsCoulGromacs::PairLJGromacsCoulGromacs(LAMMPS *lmp) : Pair(lmp) PairLJGromacsCoulGromacs::~PairLJGromacsCoulGromacs() { - if (!copymode) { - if (allocated) { + if (copymode) return; + + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -57,7 +58,6 @@ PairLJGromacsCoulGromacs::~PairLJGromacsCoulGromacs() memory->destroy(ljsw3); memory->destroy(ljsw4); memory->destroy(ljsw5); - } } } @@ -72,8 +72,7 @@ void PairLJGromacsCoulGromacs::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_smooth.cpp b/src/pair_lj_smooth.cpp index a12046bb3b..ecacadbffa 100644 --- a/src/pair_lj_smooth.cpp +++ b/src/pair_lj_smooth.cpp @@ -72,8 +72,7 @@ void PairLJSmooth::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index 17c789bcee..265828c4cf 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -62,8 +62,7 @@ void PairLJSmoothLinear::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_mie_cut.cpp b/src/pair_mie_cut.cpp index c1e1c1ff50..231832dc48 100644 --- a/src/pair_mie_cut.cpp +++ b/src/pair_mie_cut.cpp @@ -75,8 +75,7 @@ void PairMIECut::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -310,8 +309,7 @@ void PairMIECut::compute_outer(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_morse.cpp b/src/pair_morse.cpp index c1031343e1..dca1834c14 100644 --- a/src/pair_morse.cpp +++ b/src/pair_morse.cpp @@ -59,8 +59,7 @@ void PairMorse::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_soft.cpp b/src/pair_soft.cpp index d1c51ac600..7602f7b925 100644 --- a/src/pair_soft.cpp +++ b/src/pair_soft.cpp @@ -58,8 +58,7 @@ void PairSoft::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_table.cpp b/src/pair_table.cpp index 04b1e4ceee..b1b6f45eda 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -74,8 +74,7 @@ void PairTable::compute(int eflag, int vflag) int tlm1 = tablength - 1; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; @@ -379,7 +378,7 @@ void PairTable::read_table(Table *tb, char *file, char *keyword) utils::sfgets(FLERR,line,MAXLINE,fp,file,error); // no match, skip section param_extract(tb,line); utils::sfgets(FLERR,line,MAXLINE,fp,file,error); - for (int i = 0; i < tb->ninput; i++) + for (int i = 0; i < tb->ninput; i++) utils::sfgets(FLERR,line,MAXLINE,fp,file,error); } diff --git a/src/pair_ufm.cpp b/src/pair_ufm.cpp index a9f076f504..226fb6e7d9 100644 --- a/src/pair_ufm.cpp +++ b/src/pair_ufm.cpp @@ -74,8 +74,7 @@ void PairUFM::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_yukawa.cpp b/src/pair_yukawa.cpp index af520fd3da..913afbd5a1 100644 --- a/src/pair_yukawa.cpp +++ b/src/pair_yukawa.cpp @@ -55,8 +55,7 @@ void PairYukawa::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_zbl.cpp b/src/pair_zbl.cpp index f23a1e5d56..254a82ea64 100644 --- a/src/pair_zbl.cpp +++ b/src/pair_zbl.cpp @@ -78,8 +78,7 @@ void PairZBL::compute(int eflag, int vflag) int *ilist,*jlist,*numneigh,**firstneigh; evdwl = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/pair_zero.cpp b/src/pair_zero.cpp index d423e196af..143808f598 100644 --- a/src/pair_zero.cpp +++ b/src/pair_zero.cpp @@ -50,8 +50,7 @@ PairZero::~PairZero() void PairZero::compute(int eflag, int vflag) { - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/read_data.cpp b/src/read_data.cpp index 2f4484010b..e2efbaaefa 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -120,6 +120,9 @@ void ReadData::command(int narg, char **arg) { if (narg < 1) error->all(FLERR,"Illegal read_data command"); + MPI_Barrier(world); + double time1 = MPI_Wtime(); + // optional args addflag = NONE; @@ -906,6 +909,18 @@ void ReadData::command(int narg, char **arg) force->kspace = saved_kspace; } + + // total time + + MPI_Barrier(world); + double time2 = MPI_Wtime(); + + if (comm->me == 0) { + if (screen) + fprintf(screen," read_data CPU = %g secs\n",time2-time1); + if (logfile) + fprintf(logfile," read_data CPU = %g secs\n",time2-time1); + } } /* ---------------------------------------------------------------------- diff --git a/src/read_dump.cpp b/src/read_dump.cpp index 551cc63c9e..7a05f4b1b5 100644 --- a/src/read_dump.cpp +++ b/src/read_dump.cpp @@ -94,7 +94,7 @@ ReadDump::~ReadDump() memory->destroy(fields); memory->destroy(buf); - + for (int i = 0; i < nreader; i++) delete readers[i]; delete [] readers; delete [] nsnapatoms; @@ -359,7 +359,7 @@ bigint ReadDump::seek(bigint nrequest, int exact) readers[i]->skip(); } - if (eofflag) + if (eofflag) error->one(FLERR,"Read dump parallel files " "do not all have same timestep"); } @@ -466,7 +466,7 @@ bigint ReadDump::next(bigint ncurrent, bigint nlast, int nevery, int nskip) readers[i]->skip(); } - if (eofflag) + if (eofflag) error->one(FLERR,"Read dump parallel files " "do not all have same timestep"); } @@ -724,7 +724,7 @@ void ReadDump::read_atoms() otherproc = 0; ofirst = (bigint) otherproc * nsnap/nprocs_cluster; olast = (bigint) (otherproc+1) * nsnap/nprocs_cluster; - if (olast-ofirst > MAXSMALLINT) + if (olast-ofirst > MAXSMALLINT) error->one(FLERR,"Read dump snapshot is too large for a proc"); nnew = static_cast (olast - ofirst); @@ -765,7 +765,7 @@ void ReadDump::read_atoms() } else { ofirst = (bigint) me_cluster * nsnap/nprocs_cluster; olast = (bigint) (me_cluster+1) * nsnap/nprocs_cluster; - if (olast-ofirst > MAXSMALLINT) + if (olast-ofirst > MAXSMALLINT) error->one(FLERR,"Read dump snapshot is too large for a proc"); nnew = static_cast (olast - ofirst); if (nnew > maxnew || maxnew == 0) { @@ -791,7 +791,7 @@ void ReadDump::read_atoms() bigint sum = 0; for (int i = 0; i < nreader; i++) sum += nsnapatoms[i]; - if (sum > MAXSMALLINT) + if (sum > MAXSMALLINT) error->one(FLERR,"Read dump snapshot is too large for a proc"); nnew = static_cast (sum); if (nnew > maxnew || maxnew == 0) { @@ -811,7 +811,7 @@ void ReadDump::read_atoms() } nnew += nsnap; } - } + } } /* ---------------------------------------------------------------------- @@ -943,7 +943,7 @@ void ReadDump::process_atoms() ntrim++; } else i++; } - + atom->nlocal = nlocal; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); diff --git a/src/read_dump.h b/src/read_dump.h index 73cb0a8995..de174c3df6 100644 --- a/src/read_dump.h +++ b/src/read_dump.h @@ -86,7 +86,7 @@ private: double xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz; // dump snapshot box params double xprd,yprd,zprd; - bigint *nsnapatoms; // # of atoms in one snapshot from + bigint *nsnapatoms; // # of atoms in one snapshot from // one (parallel) dump file // nreader-length vector b/c a reader proc // may read from multiple parallel dump files diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 73dc37f4cb..5aa4622a67 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -81,6 +81,9 @@ void ReadRestart::command(int narg, char **arg) if (domain->box_exist) error->all(FLERR,"Cannot read_restart after simulation box is defined"); + MPI_Barrier(world); + double time1 = MPI_Wtime(); + MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); @@ -562,6 +565,18 @@ void ReadRestart::command(int narg, char **arg) Special special(lmp); special.build(); } + + // total time + + MPI_Barrier(world); + double time2 = MPI_Wtime(); + + if (comm->me == 0) { + if (screen) + fprintf(screen," read_restart CPU = %g secs\n",time2-time1); + if (logfile) + fprintf(logfile," read_restart CPU = %g secs\n",time2-time1); + } } /* ---------------------------------------------------------------------- diff --git a/src/replicate.cpp b/src/replicate.cpp index cdadf1fd1f..3c8f4a8aee 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -76,7 +76,7 @@ void Replicate::command(int narg, char **arg) if (atom->nextra_grow || atom->nextra_restart || atom->nextra_store) error->all(FLERR,"Cannot replicate with fixes that store atom quantities"); - // Record wall time for atom replication + // record wall time for atom replication MPI_Barrier(world); double time1 = MPI_Wtime(); @@ -762,15 +762,15 @@ void Replicate::command(int narg, char **arg) special.build(); } - // Wall time + // total time MPI_Barrier(world); double time2 = MPI_Wtime(); if (me == 0) { if (screen) - fprintf(screen," Time spent = %g secs\n",time2-time1); + fprintf(screen," replicate CPU = %g secs\n",time2-time1); if (logfile) - fprintf(logfile," Time spent = %g secs\n",time2-time1); + fprintf(logfile," replicate CPU = %g secs\n",time2-time1); } } diff --git a/src/special.cpp b/src/special.cpp index fccc930353..22022519a2 100644 --- a/src/special.cpp +++ b/src/special.cpp @@ -21,12 +21,14 @@ #include "modify.h" #include "fix.h" #include "accelerator_kokkos.h" +#include "atom_masks.h" #include "memory.h" #include "error.h" -#include "atom_masks.h" using namespace LAMMPS_NS; +#define RVOUS 1 // 0 for irregular, 1 for all2all + /* ---------------------------------------------------------------------- */ Special::Special(LAMMPS *lmp) : Pointers(lmp) @@ -54,18 +56,8 @@ Special::~Special() void Special::build() { - int i,j,k,size; - int max,maxall,nbuf; - tagint *buf; - MPI_Barrier(world); - - int nlocal = atom->nlocal; - - tagint *tag = atom->tag; - int *num_bond = atom->num_bond; - tagint **bond_atom = atom->bond_atom; - int **nspecial = atom->nspecial; + double time1 = MPI_Wtime(); if (me == 0 && screen) { const double * const special_lj = force->special_lj; @@ -79,224 +71,57 @@ void Special::build() // initialize nspecial counters to 0 - for (i = 0; i < nlocal; i++) { + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { nspecial[i][0] = 0; nspecial[i][1] = 0; nspecial[i][2] = 0; } - // ----------------------------------------------------- - // compute nspecial[i][0] = # of 1-2 neighbors of atom i - // ----------------------------------------------------- + // setup atomIDs and procowner vectors in rendezvous decomposition - // bond partners stored by atom itself + atom_owners(); - for (i = 0; i < nlocal; i++) nspecial[i][0] = num_bond[i]; - - // if newton_bond off, then done - // else only counted 1/2 of all bonds, so count other half - - if (force->newton_bond) { - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = global tag of 2nd atom in each bond - - nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += num_bond[i]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with global tags of bond partners of my atoms - - size = 0; - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_bond[i]; j++) - buf[size++] = bond_atom[i][j]; - - // cycle buffer around ring of procs back to self - // when receive buffer, scan tags for atoms I own - // when find one, increment nspecial count for that atom - - comm->ring(size,sizeof(tagint),buf,1,ring_one,NULL,(void *)this); - - memory->destroy(buf); - } - - // ---------------------------------------------------- + // tally nspecial[i][0] = # of 1-2 neighbors of atom i // create onetwo[i] = list of 1-2 neighbors for atom i - // ---------------------------------------------------- - max = 0; - for (i = 0; i < nlocal; i++) max = MAX(max,nspecial[i][0]); + if (force->newton_bond) onetwo_build_newton(); + else onetwo_build_newton_off(); - MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + // print max # of 1-2 neighbors if (me == 0) { if (screen) fprintf(screen," %d = max # of 1-2 neighbors\n",maxall); if (logfile) fprintf(logfile," %d = max # of 1-2 neighbors\n",maxall); } - memory->create(onetwo,nlocal,maxall,"special:onetwo"); - - // count = accumulating counter - - memory->create(count,nlocal,"special:count"); - for (i = 0; i < nlocal; i++) count[i] = 0; - - // add bond partners stored by atom to onetwo list - - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_bond[i]; j++) - onetwo[i][count[i]++] = bond_atom[i][j]; - - // if newton_bond off, then done - // else only stored 1/2 of all bonds, so store other half - - if (force->newton_bond) { - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = 2 global tags in each bond - - nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 2*num_bond[i]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with global tags of both atoms in bond - - size = 0; - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_bond[i]; j++) { - buf[size++] = tag[i]; - buf[size++] = bond_atom[i][j]; - } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan 2nd-atom tags for atoms I own - // when find one, add 1st-atom tag to onetwo list for 2nd atom - - comm->ring(size,sizeof(tagint),buf,2,ring_two,NULL,(void *)this); - - memory->destroy(buf); - } - - memory->destroy(count); - - // ----------------------------------------------------- // done if special_bond weights for 1-3, 1-4 are set to 1.0 - // ----------------------------------------------------- if (force->special_lj[2] == 1.0 && force->special_coul[2] == 1.0 && force->special_lj[3] == 1.0 && force->special_coul[3] == 1.0) { dedup(); combine(); fix_alteration(); + memory->destroy(procowner); + memory->destroy(atomIDs); + timer_output(time1); return; } - // ----------------------------------------------------- - // compute nspecial[i][1] = # of 1-3 neighbors of atom i - // ----------------------------------------------------- - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = 2 scalars + list of 1-2 neighbors - - nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 2 + nspecial[i][0]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with: - // (1) = counter for 1-3 neighbors, initialized to 0 - // (2) = # of 1-2 neighbors - // (3:N) = list of 1-2 neighbors - - size = 0; - for (i = 0; i < nlocal; i++) { - buf[size++] = 0; - buf[size++] = nspecial[i][0]; - for (j = 0; j < nspecial[i][0]; j++) buf[size++] = onetwo[i][j]; - } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1-2 neighbors for atoms I own - // when find one, increment 1-3 count by # of 1-2 neighbors of my atom, - // subtracting one since my list will contain original atom - - comm->ring(size,sizeof(tagint),buf,3,ring_three,buf,(void *)this); - - // extract count from buffer that has cycled back to me - // nspecial[i][1] = # of 1-3 neighbors of atom i - - j = 0; - for (i = 0; i < nlocal; i++) { - nspecial[i][1] = buf[j]; - j += 2 + nspecial[i][0]; - } - - memory->destroy(buf); - - // ---------------------------------------------------- + // tally nspecial[i][1] = # of 1-3 neighbors of atom i // create onethree[i] = list of 1-3 neighbors for atom i - // ---------------------------------------------------- - max = 0; - for (i = 0; i < nlocal; i++) max = MAX(max,nspecial[i][1]); - MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + onethree_build(); + + // print max # of 1-3 neighbors if (me == 0) { if (screen) fprintf(screen," %d = max # of 1-3 neighbors\n",maxall); if (logfile) fprintf(logfile," %d = max # of 1-3 neighbors\n",maxall); } - memory->create(onethree,nlocal,maxall,"special:onethree"); - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = 4 scalars + list of 1-2 neighs + list of 1-3 neighs - - nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 4 + nspecial[i][0] + nspecial[i][1]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with: - // (1) = global tag of original atom - // (2) = # of 1-2 neighbors - // (3) = # of 1-3 neighbors - // (4) = counter for 1-3 neighbors, initialized to 0 - // (5:N) = list of 1-2 neighbors - // (N+1:2N) space for list of 1-3 neighbors - - size = 0; - for (i = 0; i < nlocal; i++) { - buf[size++] = tag[i]; - buf[size++] = nspecial[i][0]; - buf[size++] = nspecial[i][1]; - buf[size++] = 0; - for (j = 0; j < nspecial[i][0]; j++) buf[size++] = onetwo[i][j]; - size += nspecial[i][1]; - } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1-2 neighbors for atoms I own - // when find one, add its neighbors to 1-3 list - // increment the count in buf(i+4) - // exclude the atom whose tag = original - // this process may include duplicates but they will be culled later - - comm->ring(size,sizeof(tagint),buf,4,ring_four,buf,(void *)this); - - // fill onethree with buffer values that have been returned to me - // sanity check: accumulated buf[i+3] count should equal - // nspecial[i][1] for each atom - - j = 0; - for (i = 0; i < nlocal; i++) { - if (buf[j+3] != nspecial[i][1]) - error->one(FLERR,"1-3 bond count is inconsistent"); - j += 4 + nspecial[i][0]; - for (k = 0; k < nspecial[i][1]; k++) - onethree[i][k] = buf[j++]; - } - - memory->destroy(buf); - // done if special_bond weights for 1-4 are set to 1.0 if (force->special_lj[3] == 1.0 && force->special_coul[3] == 1.0) { @@ -304,117 +129,408 @@ void Special::build() if (force->special_angle) angle_trim(); combine(); fix_alteration(); + memory->destroy(procowner); + memory->destroy(atomIDs); + timer_output(time1); return; } - // ----------------------------------------------------- - // compute nspecial[i][2] = # of 1-4 neighbors of atom i - // ----------------------------------------------------- - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = 2 scalars + list of 1-3 neighbors - - nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 2 + nspecial[i][1]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with: - // (1) = counter for 1-4 neighbors, initialized to 0 - // (2) = # of 1-3 neighbors - // (3:N) = list of 1-3 neighbors - - size = 0; - for (i = 0; i < nlocal; i++) { - buf[size++] = 0; - buf[size++] = nspecial[i][1]; - for (j = 0; j < nspecial[i][1]; j++) buf[size++] = onethree[i][j]; - } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1-3 neighbors for atoms I own - // when find one, increment 1-4 count by # of 1-2 neighbors of my atom - // may include duplicates and original atom but they will be culled later - - comm->ring(size,sizeof(tagint),buf,5,ring_five,buf,(void *)this); - - // extract count from buffer that has cycled back to me - // nspecial[i][2] = # of 1-4 neighbors of atom i - - j = 0; - for (i = 0; i < nlocal; i++) { - nspecial[i][2] = buf[j]; - j += 2 + nspecial[i][1]; - } - - memory->destroy(buf); - - // ---------------------------------------------------- + // tally nspecial[i][2] = # of 1-4 neighbors of atom i // create onefour[i] = list of 1-4 neighbors for atom i - // ---------------------------------------------------- - max = 0; - for (i = 0; i < nlocal; i++) max = MAX(max,nspecial[i][2]); - MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + onefour_build(); + + // print max # of 1-4 neighbors if (me == 0) { if (screen) fprintf(screen," %d = max # of 1-4 neighbors\n",maxall); if (logfile) fprintf(logfile," %d = max # of 1-4 neighbors\n",maxall); } - memory->create(onefour,nlocal,maxall,"special:onefour"); - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = 3 scalars + list of 1-3 neighs + list of 1-4 neighs - - nbuf = 0; - for (i = 0; i < nlocal; i++) - nbuf += 3 + nspecial[i][1] + nspecial[i][2]; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with: - // (1) = # of 1-3 neighbors - // (2) = # of 1-4 neighbors - // (3) = counter for 1-4 neighbors, initialized to 0 - // (4:N) = list of 1-3 neighbors - // (N+1:2N) space for list of 1-4 neighbors - - size = 0; - for (i = 0; i < nlocal; i++) { - buf[size++] = nspecial[i][1]; - buf[size++] = nspecial[i][2]; - buf[size++] = 0; - for (j = 0; j < nspecial[i][1]; j++) buf[size++] = onethree[i][j]; - size += nspecial[i][2]; - } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1-3 neighbors for atoms I own - // when find one, add its neighbors to 1-4 list - // incrementing the count in buf(i+4) - // this process may include duplicates but they will be culled later - - comm->ring(size,sizeof(tagint),buf,6,ring_six,buf,(void *)this); - - // fill onefour with buffer values that have been returned to me - // sanity check: accumulated buf[i+2] count should equal - // nspecial[i][2] for each atom - - j = 0; - for (i = 0; i < nlocal; i++) { - if (buf[j+2] != nspecial[i][2]) - error->one(FLERR,"1-4 bond count is inconsistent"); - j += 3 + nspecial[i][1]; - for (k = 0; k < nspecial[i][2]; k++) - onefour[i][k] = buf[j++]; - } - - memory->destroy(buf); + // finish processing the onetwo, onethree, onefour lists dedup(); if (force->special_angle) angle_trim(); if (force->special_dihedral) dihedral_trim(); combine(); fix_alteration(); + memory->destroy(procowner); + memory->destroy(atomIDs); + + timer_output(time1); +} + +/* ---------------------------------------------------------------------- + setup atomIDs and procowner +------------------------------------------------------------------------- */ + +void Special::atom_owners() +{ + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + int *proclist; + memory->create(proclist,nlocal,"special:proclist"); + IDRvous *idbuf = (IDRvous *) + memory->smalloc((bigint) nlocal*sizeof(IDRvous),"special:idbuf"); + + // setup input buf for rendezvous comm + // one datum for each owned atom: datum = owning proc, atomID + // each proc assigned every 1/Pth atom + + for (int i = 0; i < nlocal; i++) { + proclist[i] = tag[i] % nprocs; + idbuf[i].me = me; + idbuf[i].atomID = tag[i]; + } + + // perform rendezvous operation + + char *buf; + comm->rendezvous(RVOUS,nlocal,(char *) idbuf,sizeof(IDRvous),0,proclist, + rendezvous_ids,0,buf,0,(void *) this); + + memory->destroy(proclist); + memory->sfree(idbuf); +} + +/* ---------------------------------------------------------------------- + onetwo build when newton_bond flag on + uses rendezvous comm +------------------------------------------------------------------------- */ + +void Special::onetwo_build_newton() +{ + int i,j,m; + + tagint *tag = atom->tag; + int *num_bond = atom->num_bond; + tagint **bond_atom = atom->bond_atom; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + + // nsend = # of my datums to send + + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_bond[i]; j++) { + m = atom->map(bond_atom[i][j]); + if (m < 0 || m >= nlocal) nsend++; + } + } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PairRvous *inbuf = (PairRvous *) + memory->smalloc((bigint) nsend*sizeof(PairRvous),"special:inbuf"); + + // setup input buf to rendezvous comm + // one datum for each unowned bond partner: bond partner ID, atomID + // owning proc for each datum = bond partner ID % nprocs + + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_bond[i]; j++) { + m = atom->map(bond_atom[i][j]); + if (m >= 0 && m < nlocal) continue; + proclist[nsend] = bond_atom[i][j] % nprocs; + inbuf[nsend].atomID = bond_atom[i][j]; + inbuf[nsend].partnerID = tag[i]; + nsend++; + } + } + + // perform rendezvous operation + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PairRvous), + 0,proclist, + rendezvous_pairs,0,buf,sizeof(PairRvous), + (void *) this); + PairRvous *outbuf = (PairRvous *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // set nspecial[0] and onetwo for all owned atoms + // based on owned info plus rendezvous output info + // output datums = pairs of atoms that are 1-2 neighbors + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_bond[i]; j++) { + nspecial[i][0]++; + m = atom->map(bond_atom[i][j]); + if (m >= 0 && m < nlocal) nspecial[m][0]++; + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + nspecial[i][0]++; + } + + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,nspecial[i][0]); + + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + memory->create(onetwo,nlocal,maxall,"special:onetwo"); + + for (i = 0; i < nlocal; i++) nspecial[i][0] = 0; + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_bond[i]; j++) { + onetwo[i][nspecial[i][0]++] = bond_atom[i][j]; + m = atom->map(bond_atom[i][j]); + if (m >= 0 && m < nlocal) onetwo[m][nspecial[m][0]++] = tag[i]; + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + onetwo[i][nspecial[i][0]++] = outbuf[m].partnerID; + } + + memory->sfree(outbuf); +} + +/* ---------------------------------------------------------------------- + onetwo build with newton_bond flag off + no need for rendezvous comm +------------------------------------------------------------------------- */ + +void Special::onetwo_build_newton_off() +{ + int i,j; + + int *num_bond = atom->num_bond; + tagint **bond_atom = atom->bond_atom; + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,num_bond[i]); + + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + memory->create(onetwo,nlocal,maxall,"special:onetwo"); + + // nsend = # of my datums to send + // include nlocal datums with owner of each atom + + for (i = 0; i < nlocal; i++) { + nspecial[i][0] = num_bond[i]; + for (j = 0; j < num_bond[i]; j++) + onetwo[i][j] = bond_atom[i][j]; + } +} + +/* ---------------------------------------------------------------------- + onethree build + uses rendezvous comm +------------------------------------------------------------------------- */ + +void Special::onethree_build() +{ + int i,j,k,m,proc; + + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + + // nsend = # of my datums to send + + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][0]; j++) { + m = atom->map(onetwo[i][j]); + if (m < 0 || m >= nlocal) nsend += nspecial[i][0]-1; + } + } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PairRvous *inbuf = (PairRvous *) + memory->smalloc((bigint) nsend*sizeof(PairRvous),"special:inbuf"); + + // setup input buf to rendezvous comm + // datums = pairs of onetwo partners where either is unknown + // these pairs are onethree neighbors + // datum = onetwo ID, onetwo ID + // owning proc for each datum = onetwo ID % nprocs + + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][0]; j++) { + m = atom->map(onetwo[i][j]); + if (m >= 0 && m < nlocal) continue; + proc = onetwo[i][j] % nprocs; + for (k = 0; k < nspecial[i][0]; k++) { + if (j == k) continue; + proclist[nsend] = proc; + inbuf[nsend].atomID = onetwo[i][j]; + inbuf[nsend].partnerID = onetwo[i][k]; + nsend++; + } + } + } + + // perform rendezvous operation + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PairRvous), + 0,proclist, + rendezvous_pairs,0,buf,sizeof(PairRvous), + (void *) this); + PairRvous *outbuf = (PairRvous *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // set nspecial[1] and onethree for all owned atoms + // based on owned info plus rendezvous output info + // output datums = pairs of atoms that are 1-3 neighbors + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][0]; j++) { + m = atom->map(onetwo[i][j]); + if (m >= 0 && m < nlocal) nspecial[m][1] += nspecial[i][0]-1; + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + nspecial[i][1]++; + } + + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,nspecial[i][1]); + + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + memory->create(onethree,nlocal,maxall,"special:onethree"); + + for (i = 0; i < nlocal; i++) nspecial[i][1] = 0; + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][0]; j++) { + m = atom->map(onetwo[i][j]); + if (m < 0 || m >= nlocal) continue; + for (k = 0; k < nspecial[i][0]; k++) { + if (j == k) continue; + onethree[m][nspecial[m][1]++] = onetwo[i][k]; + } + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + onethree[i][nspecial[i][1]++] = outbuf[m].partnerID; + } + + memory->sfree(outbuf); +} + +/* ---------------------------------------------------------------------- + onefour build + uses rendezvous comm +------------------------------------------------------------------------- */ + +void Special::onefour_build() +{ + int i,j,k,m,proc; + + int **nspecial = atom->nspecial; + int nlocal = atom->nlocal; + + // nsend = # of my datums to send + + int nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][1]; j++) { + m = atom->map(onethree[i][j]); + if (m < 0 || m >= nlocal) nsend += nspecial[i][0]; + } + } + + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PairRvous *inbuf = (PairRvous *) + memory->smalloc((bigint) nsend*sizeof(PairRvous),"special:inbuf"); + + // setup input buf to rendezvous comm + // datums = pairs of onethree and onetwo partners where onethree is unknown + // these pairs are onefour neighbors + // datum = onetwo ID, onetwo ID + // owning proc for each datum = onethree ID % nprocs + + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][1]; j++) { + m = atom->map(onethree[i][j]); + if (m >= 0 && m < nlocal) continue; + proc = onethree[i][j] % nprocs; + for (k = 0; k < nspecial[i][0]; k++) { + proclist[nsend] = proc; + inbuf[nsend].atomID = onethree[i][j]; + inbuf[nsend].partnerID = onetwo[i][k]; + nsend++; + } + } + } + + // perform rendezvous operation + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PairRvous), + 0,proclist, + rendezvous_pairs,0,buf,sizeof(PairRvous), + (void *) this); + PairRvous *outbuf = (PairRvous *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // set nspecial[2] and onefour for all owned atoms + // based on owned info plus rendezvous output info + // output datums = pairs of atoms that are 1-4 neighbors + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][1]; j++) { + m = atom->map(onethree[i][j]); + if (m >= 0 && m < nlocal) nspecial[m][2] += nspecial[i][0]; + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + nspecial[i][2]++; + } + + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,nspecial[i][2]); + + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + memory->create(onefour,nlocal,maxall,"special:onefour"); + + for (i = 0; i < nlocal; i++) nspecial[i][2] = 0; + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < nspecial[i][1]; j++) { + m = atom->map(onethree[i][j]); + if (m < 0 || m >= nlocal) continue; + for (k = 0; k < nspecial[i][0]; k++) { + onefour[m][nspecial[m][2]++] = onetwo[i][k]; + } + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + onefour[i][nspecial[i][2]++] = outbuf[m].partnerID; + } + + memory->sfree(outbuf); } /* ---------------------------------------------------------------------- @@ -659,21 +775,24 @@ void Special::combine() trim list of 1-3 neighbors by checking defined angles delete a 1-3 neigh if they are not end atoms of a defined angle and if they are not 1,3 or 2,4 atoms of a defined dihedral + uses rendezvous comm ------------------------------------------------------------------------- */ void Special::angle_trim() { - int i,j,m,n; + int i,j,k,m;; int *num_angle = atom->num_angle; int *num_dihedral = atom->num_dihedral; tagint **angle_atom1 = atom->angle_atom1; + tagint **angle_atom2 = atom->angle_atom2; tagint **angle_atom3 = atom->angle_atom3; tagint **dihedral_atom1 = atom->dihedral_atom1; tagint **dihedral_atom2 = atom->dihedral_atom2; tagint **dihedral_atom3 = atom->dihedral_atom3; tagint **dihedral_atom4 = atom->dihedral_atom4; int **nspecial = atom->nspecial; + tagint *tag = atom->tag; int nlocal = atom->nlocal; // stats on old 1-3 neighbor counts @@ -692,73 +811,206 @@ void Special::angle_trim() " %g = # of 1-3 neighbors before angle trim\n",allcount); } - // if angles or dihedrals are defined, - // flag each 1-3 neigh if it appears in an angle or dihedral + // if angles or dihedrals are defined + // rendezvous angle 1-3 and dihedral 1-3,2-4 pairs if ((num_angle && atom->nangles) || (num_dihedral && atom->ndihedrals)) { - // dflag = flag for 1-3 neighs of all owned atoms - - int maxcount = 0; - for (i = 0; i < nlocal; i++) maxcount = MAX(maxcount,nspecial[i][1]); - memory->create(dflag,nlocal,maxcount,"special::dflag"); + // nsend = # of my datums to send + // latter is only for angles or dihedrlas where I own atom2 (newton bond off) + int nsend = 0; for (i = 0; i < nlocal; i++) { - n = nspecial[i][1]; - for (j = 0; j < n; j++) dflag[i][j] = 0; + for (j = 0; j < num_angle[i]; j++) { + if (tag[i] != angle_atom2[i][j]) continue; + m = atom->map(angle_atom1[i][j]); + if (m < 0 || m >= nlocal) nsend++; + m = atom->map(angle_atom3[i][j]); + if (m < 0 || m >= nlocal) nsend++; + } + for (j = 0; j < num_dihedral[i]; j++) { + if (tag[i] != dihedral_atom2[i][j]) continue; + m = atom->map(dihedral_atom1[i][j]); + if (m < 0 || m >= nlocal) nsend++; + m = atom->map(dihedral_atom3[i][j]); + if (m < 0 || m >= nlocal) nsend++; + m = atom->map(dihedral_atom4[i][j]); + if (m < 0 || m >= nlocal) nsend++; + } } - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = list of 1,3 atoms in each angle stored by atom - // and list of 1,3 and 2,4 atoms in each dihedral stored by atom + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PairRvous *inbuf = (PairRvous *) + memory->smalloc((bigint) nsend*sizeof(PairRvous),"special:inbuf"); - int nbuf = 0; + // setup input buf to rendezvous comm + // datums = pairs of onetwo partners where either is unknown + // these pairs are onethree neighbors + // datum = onetwo ID, onetwo ID + // owning proc for each datum = onetwo ID % nprocs + + nsend = 0; for (i = 0; i < nlocal; i++) { - if (num_angle && atom->nangles) nbuf += 2*num_angle[i]; - if (num_dihedral && atom->ndihedrals) nbuf += 2*2*num_dihedral[i]; + for (j = 0; j < num_angle[i]; j++) { + if (tag[i] != angle_atom2[i][j]) continue; + + m = atom->map(angle_atom1[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = angle_atom1[i][j] % nprocs; + inbuf[nsend].atomID = angle_atom1[i][j]; + inbuf[nsend].partnerID = angle_atom3[i][j]; + nsend++; + } + + m = atom->map(angle_atom3[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = angle_atom3[i][j] % nprocs; + inbuf[nsend].atomID = angle_atom3[i][j]; + inbuf[nsend].partnerID = angle_atom1[i][j]; + nsend++; + } + } + + for (j = 0; j < num_dihedral[i]; j++) { + if (tag[i] != dihedral_atom2[i][j]) continue; + + m = atom->map(dihedral_atom1[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = dihedral_atom1[i][j] % nprocs; + inbuf[nsend].atomID = dihedral_atom1[i][j]; + inbuf[nsend].partnerID = dihedral_atom3[i][j]; + nsend++; + } + + m = atom->map(dihedral_atom3[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = dihedral_atom3[i][j] % nprocs; + inbuf[nsend].atomID = dihedral_atom3[i][j]; + inbuf[nsend].partnerID = dihedral_atom1[i][j]; + nsend++; + } + + m = atom->map(dihedral_atom4[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = dihedral_atom4[i][j] % nprocs; + inbuf[nsend].atomID = dihedral_atom4[i][j]; + inbuf[nsend].partnerID = dihedral_atom2[i][j]; + nsend++; + } + } } - int *buf; - memory->create(buf,nbuf,"special:buf"); - // fill buffer with list of 1,3 atoms in each angle - // and with list of 1,3 and 2,4 atoms in each dihedral + // perform rendezvous operation - int size = 0; - if (num_angle && atom->nangles) - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_angle[i]; j++) { - buf[size++] = angle_atom1[i][j]; - buf[size++] = angle_atom3[i][j]; - } + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PairRvous), + 0,proclist, + rendezvous_pairs,0,buf,sizeof(PairRvous), + (void *) this); + PairRvous *outbuf = (PairRvous *) buf; - if (num_dihedral && atom->ndihedrals) - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_dihedral[i]; j++) { - buf[size++] = dihedral_atom1[i][j]; - buf[size++] = dihedral_atom3[i][j]; - buf[size++] = dihedral_atom2[i][j]; - buf[size++] = dihedral_atom4[i][j]; - } + memory->destroy(proclist); + memory->sfree(inbuf); - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1,3 atoms looking for atoms I own - // when find one, scan its 1-3 neigh list and mark I,J as in an angle + // flag all onethree atoms to keep - comm->ring(size,sizeof(tagint),buf,7,ring_seven,NULL,(void *)this); + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,nspecial[i][1]); + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); - // delete 1-3 neighbors if they are not flagged in dflag + int **flag; + memory->create(flag,nlocal,maxall,"special:flag"); - for (i = 0; i < nlocal; i++) { - m = 0; + for (i = 0; i < nlocal; i++) for (j = 0; j < nspecial[i][1]; j++) - if (dflag[i][j]) onethree[i][m++] = onethree[i][j]; - nspecial[i][1] = m; + flag[i][j] = 0; + + // reset nspecial[1] and onethree for all owned atoms based on output info + // based on owned info plus rendezvous output info + // output datums = pairs of atoms that are 1-3 neighbors + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_angle[i]; j++) { + if (tag[i] != angle_atom2[i][j]) continue; + + m = atom->map(angle_atom1[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][1]; k++) + if (onethree[m][k] == angle_atom3[i][j]) { + flag[m][k] = 1; + break; + } + } + + m = atom->map(angle_atom3[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][1]; k++) + if (onethree[m][k] == angle_atom1[i][j]) { + flag[m][k] = 1; + break; + } + } + } + + for (j = 0; j < num_dihedral[i]; j++) { + if (tag[i] != dihedral_atom2[i][j]) continue; + + m = atom->map(dihedral_atom1[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][1]; k++) + if (onethree[m][k] == dihedral_atom3[i][j]) { + flag[m][k] = 1; + break; + } + } + + m = atom->map(dihedral_atom3[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][1]; k++) + if (onethree[m][k] == dihedral_atom1[i][j]) { + flag[m][k] = 1; + break; + } + } + + m = atom->map(dihedral_atom4[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][1]; k++) + if (onethree[m][k] == dihedral_atom2[i][j]) { + flag[m][k] = 1; + break; + } + } + } } - // clean up + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + for (k = 0; k < nspecial[i][1]; k++) + if (onethree[i][k] == outbuf[m].partnerID) { + flag[i][k] = 1; + break; + } + } + + memory->destroy(outbuf); - memory->destroy(dflag); - memory->destroy(buf); + // use flag values to compress onefour list for each atom + + for (i = 0; i < nlocal; i++) { + j = 0; + while (j < nspecial[i][1]) { + if (flag[i][j] == 0) { + onethree[i][j] = onethree[i][nspecial[i][1]-1]; + flag[i][j] = flag[i][nspecial[i][1]-1]; + nspecial[i][1]--; + } else j++; + } + } + + memory->destroy(flag); // if no angles or dihedrals are defined, delete all 1-3 neighs @@ -783,18 +1035,21 @@ void Special::angle_trim() } /* ---------------------------------------------------------------------- - trim list of 1-4 neighbors by checking defined dihedrals + trim list of 1-4 neighbors by checking all defined dihedrals delete a 1-4 neigh if they are not end atoms of a defined dihedral + uses rendezvous comm ------------------------------------------------------------------------- */ void Special::dihedral_trim() { - int i,j,m,n; + int i,j,k,m; int *num_dihedral = atom->num_dihedral; tagint **dihedral_atom1 = atom->dihedral_atom1; + tagint **dihedral_atom2 = atom->dihedral_atom2; tagint **dihedral_atom4 = atom->dihedral_atom4; int **nspecial = atom->nspecial; + tagint *tag = atom->tag; int nlocal = atom->nlocal; // stats on old 1-4 neighbor counts @@ -813,57 +1068,133 @@ void Special::dihedral_trim() " %g = # of 1-4 neighbors before dihedral trim\n",allcount); } - // if dihedrals are defined, flag each 1-4 neigh if it appears in a dihedral + // if dihedrals are defined, rendezvous the dihedral 1-4 pairs if (num_dihedral && atom->ndihedrals) { - // dflag = flag for 1-4 neighs of all owned atoms - - int maxcount = 0; - for (i = 0; i < nlocal; i++) maxcount = MAX(maxcount,nspecial[i][2]); - memory->create(dflag,nlocal,maxcount,"special::dflag"); + // nsend = # of my datums to send + int nsend = 0; for (i = 0; i < nlocal; i++) { - n = nspecial[i][2]; - for (j = 0; j < n; j++) dflag[i][j] = 0; - } - - // nbufmax = largest buffer needed to hold info from any proc - // info for each atom = list of 1,4 atoms in each dihedral stored by atom - - int nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 2*num_dihedral[i]; - int *buf; - memory->create(buf,nbuf,"special:buf"); - - // fill buffer with list of 1,4 atoms in each dihedral - - int size = 0; - for (i = 0; i < nlocal; i++) for (j = 0; j < num_dihedral[i]; j++) { - buf[size++] = dihedral_atom1[i][j]; - buf[size++] = dihedral_atom4[i][j]; + if (tag[i] != dihedral_atom2[i][j]) continue; + m = atom->map(dihedral_atom1[i][j]); + if (m < 0 || m >= nlocal) nsend++; + m = atom->map(dihedral_atom4[i][j]); + if (m < 0 || m >= nlocal) nsend++; } - - // cycle buffer around ring of procs back to self - // when receive buffer, scan list of 1,4 atoms looking for atoms I own - // when find one, scan its 1-4 neigh list and mark I,J as in a dihedral - - comm->ring(size,sizeof(tagint),buf,8,ring_eight,NULL,(void *)this); - - // delete 1-4 neighbors if they are not flagged in dflag - - for (i = 0; i < nlocal; i++) { - m = 0; - for (j = 0; j < nspecial[i][2]; j++) - if (dflag[i][j]) onefour[i][m++] = onefour[i][j]; - nspecial[i][2] = m; } - // clean up + int *proclist; + memory->create(proclist,nsend,"special:proclist"); + PairRvous *inbuf = (PairRvous *) + memory->smalloc((bigint) nsend*sizeof(PairRvous),"special:inbuf"); - memory->destroy(dflag); - memory->destroy(buf); + // setup input buf to rendezvous comm + // datums = pairs of onefour atom IDs in a dihedral defined for my atoms + // only dihedrals where I own atom2 (in case newton_bond off) + // datum = atom1 ID and atom4 ID + // send the datum twice, to owner of atom1 ID and atom4 ID + // owning procs for each datum = atom1 or atom4 ID % nprocs + + nsend = 0; + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_dihedral[i]; j++) { + if (tag[i] != dihedral_atom2[i][j]) continue; + + m = atom->map(dihedral_atom1[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = dihedral_atom1[i][j] % nprocs; + inbuf[nsend].atomID = dihedral_atom1[i][j]; + inbuf[nsend].partnerID = dihedral_atom4[i][j]; + nsend++; + } + + m = atom->map(dihedral_atom4[i][j]); + if (m < 0 || m >= nlocal) { + proclist[nsend] = dihedral_atom4[i][j] % nprocs; + inbuf[nsend].atomID = dihedral_atom4[i][j]; + inbuf[nsend].partnerID = dihedral_atom1[i][j]; + nsend++; + } + } + } + + // perform rendezvous operation + + char *buf; + int nreturn = comm->rendezvous(RVOUS,nsend,(char *) inbuf,sizeof(PairRvous), + 0,proclist, + rendezvous_pairs,0,buf,sizeof(PairRvous), + (void *) this); + PairRvous *outbuf = (PairRvous *) buf; + + memory->destroy(proclist); + memory->sfree(inbuf); + + // flag all of my onefour IDs to keep + + int max = 0; + for (i = 0; i < nlocal; i++) + max = MAX(max,nspecial[i][2]); + MPI_Allreduce(&max,&maxall,1,MPI_INT,MPI_MAX,world); + + int **flag; + memory->create(flag,nlocal,maxall,"special:flag"); + + for (i = 0; i < nlocal; i++) + for (j = 0; j < nspecial[i][2]; j++) + flag[i][j] = 0; + + for (i = 0; i < nlocal; i++) { + for (j = 0; j < num_dihedral[i]; j++) { + if (tag[i] != dihedral_atom2[i][j]) continue; + + m = atom->map(dihedral_atom1[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][2]; k++) + if (onefour[m][k] == dihedral_atom4[i][j]) { + flag[m][k] = 1; + break; + } + } + + m = atom->map(dihedral_atom4[i][j]); + if (m >= 0 && m < nlocal) { + for (k = 0; k < nspecial[m][2]; k++) + if (onefour[m][k] == dihedral_atom1[i][j]) { + flag[m][k] = 1; + break; + } + } + } + } + + for (m = 0; m < nreturn; m++) { + i = atom->map(outbuf[m].atomID); + for (k = 0; k < nspecial[i][2]; k++) + if (onefour[i][k] == outbuf[m].partnerID) { + flag[i][k] = 1; + break; + } + } + + memory->destroy(outbuf); + + // use flag values to compress onefour list for each atom + + for (i = 0; i < nlocal; i++) { + j = 0; + while (j < nspecial[i][2]) { + if (flag[i][j] == 0) { + onefour[i][j] = onefour[i][nspecial[i][2]-1]; + flag[i][j] = flag[i][nspecial[i][2]-1]; + nspecial[i][2]--; + } else j++; + } + } + + memory->destroy(flag); // if no dihedrals are defined, delete all 1-4 neighs @@ -888,262 +1219,95 @@ void Special::dihedral_trim() } /* ---------------------------------------------------------------------- - when receive buffer, scan tags for atoms I own - when find one, increment nspecial count for that atom + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N IDRvous datums + no outbuf ------------------------------------------------------------------------- */ -void Special::ring_one(int ndatum, char *cbuf, void *ptr) +int Special::rendezvous_ids(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) +{ + Special *sptr = (Special *) ptr; + Memory *memory = sptr->memory; + + int *procowner; + tagint *atomIDs; + + memory->create(procowner,n,"special:procowner"); + memory->create(atomIDs,n,"special:atomIDs"); + + IDRvous *in = (IDRvous *) inbuf; + + for (int i = 0; i < n; i++) { + procowner[i] = in[i].me; + atomIDs[i] = in[i].atomID; + } + + // store rendezvous data in Special class + + sptr->nrvous = n; + sptr->procowner = procowner; + sptr->atomIDs = atomIDs; + + // flag = 0: no second comm needed in rendezvous + + flag = 0; + return 0; +} + + +/* ---------------------------------------------------------------------- + process data for atoms assigned to me in rendezvous decomposition + inbuf = list of N PairRvous datums + outbuf = same list of N PairRvous datums, routed to different procs +------------------------------------------------------------------------- */ + +int Special::rendezvous_pairs(int n, char *inbuf, + int &flag, int *&proclist, char *&outbuf, + void *ptr) { Special *sptr = (Special *) ptr; Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; + Memory *memory = sptr->memory; + + // clear atom map so it can be used here as a hash table + // faster than an STL map for large atom counts + + atom->map_clear(); + + // hash atom IDs stored in rendezvous decomposition + + int nrvous = sptr->nrvous; + tagint *atomIDs = sptr->atomIDs; + + for (int i = 0; i < nrvous; i++) + atom->map_one(atomIDs[i],i); + + // proclist = owner of atomID in caller decomposition + + PairRvous *in = (PairRvous *) inbuf; + int *procowner = sptr->procowner; + memory->create(proclist,n,"special:proclist"); - tagint *buf = (tagint *) cbuf; int m; - - for (int i = 0; i < ndatum; i++) { - m = atom->map(buf[i]); - if (m >= 0 && m < nlocal) nspecial[m][0]++; + for (int i = 0; i < n; i++) { + m = atom->map(in[i].atomID); + proclist[i] = procowner[m]; } -} -/* ---------------------------------------------------------------------- - when receive buffer, scan 2nd-atom tags for atoms I own - when find one, add 1st-atom tag to onetwo list for 2nd atom -------------------------------------------------------------------------- */ + outbuf = inbuf; -void Special::ring_two(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int nlocal = atom->nlocal; + // re-create atom map - tagint **onetwo = sptr->onetwo; - int *count = sptr->count; + atom->map_init(0); + atom->nghost = 0; + atom->map_set(); - tagint *buf = (tagint *) cbuf; - int m; + // flag = 1: outbuf = inbuf - for (int i = 1; i < ndatum; i += 2) { - m = atom->map(buf[i]); - if (m >= 0 && m < nlocal) onetwo[m][count[m]++] = buf[i-1]; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1-2 neighbors for atoms I own - when find one, increment 1-3 count by # of 1-2 neighbors of my atom, - subtracting one since my list will contain original atom -------------------------------------------------------------------------- */ - -void Special::ring_three(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint *buf = (tagint *) cbuf; - int i,j,m,n,num12; - - i = 0; - while (i < ndatum) { - n = buf[i]; - num12 = buf[i+1]; - for (j = 0; j < num12; j++) { - m = atom->map(buf[i+2+j]); - if (m >= 0 && m < nlocal) - n += nspecial[m][0] - 1; - } - buf[i] = n; - i += 2 + num12; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1-2 neighbors for atoms I own - when find one, add its neighbors to 1-3 list - increment the count in buf(i+4) - exclude the atom whose tag = original - this process may include duplicates but they will be culled later -------------------------------------------------------------------------- */ - -void Special::ring_four(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint **onetwo = sptr->onetwo; - - tagint *buf = (tagint *) cbuf; - tagint original; - int i,j,k,m,n,num12,num13; - - i = 0; - while (i < ndatum) { - original = buf[i]; - num12 = buf[i+1]; - num13 = buf[i+2]; - n = buf[i+3]; - for (j = 0; j < num12; j++) { - m = atom->map(buf[i+4+j]); - if (m >= 0 && m < nlocal) - for (k = 0; k < nspecial[m][0]; k++) - if (onetwo[m][k] != original) - buf[i+4+num12+(n++)] = onetwo[m][k]; - } - buf[i+3] = n; - i += 4 + num12 + num13; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1-3 neighbors for atoms I own - when find one, increment 1-4 count by # of 1-2 neighbors of my atom - may include duplicates and original atom but they will be culled later -------------------------------------------------------------------------- */ - -void Special::ring_five(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint *buf = (tagint *) cbuf; - int i,j,m,n,num13; - - i = 0; - while (i < ndatum) { - n = buf[i]; - num13 = buf[i+1]; - for (j = 0; j < num13; j++) { - m = atom->map(buf[i+2+j]); - if (m >= 0 && m < nlocal) n += nspecial[m][0]; - } - buf[i] = n; - i += 2 + num13; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1-3 neighbors for atoms I own - when find one, add its neighbors to 1-4 list - incrementing the count in buf(i+4) - this process may include duplicates but they will be culled later -------------------------------------------------------------------------- */ - -void Special::ring_six(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint **onetwo = sptr->onetwo; - - tagint *buf = (tagint *) cbuf; - int i,j,k,m,n,num13,num14; - - i = 0; - while (i < ndatum) { - num13 = buf[i]; - num14 = buf[i+1]; - n = buf[i+2]; - for (j = 0; j < num13; j++) { - m = atom->map(buf[i+3+j]); - if (m >= 0 && m < nlocal) - for (k = 0; k < nspecial[m][0]; k++) - buf[i+3+num13+(n++)] = onetwo[m][k]; - } - buf[i+2] = n; - i += 3 + num13 + num14; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1,3 atoms looking for atoms I own - when find one, scan its 1-3 neigh list and mark I,J as in an angle -------------------------------------------------------------------------- */ - -void Special::ring_seven(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint **onethree = sptr->onethree; - int **dflag = sptr->dflag; - - tagint *buf = (tagint *) cbuf; - tagint iglobal,jglobal; - int i,m,ilocal,jlocal; - - i = 0; - while (i < ndatum) { - iglobal = buf[i]; - jglobal = buf[i+1]; - ilocal = atom->map(iglobal); - jlocal = atom->map(jglobal); - if (ilocal >= 0 && ilocal < nlocal) - for (m = 0; m < nspecial[ilocal][1]; m++) - if (jglobal == onethree[ilocal][m]) { - dflag[ilocal][m] = 1; - break; - } - if (jlocal >= 0 && jlocal < nlocal) - for (m = 0; m < nspecial[jlocal][1]; m++) - if (iglobal == onethree[jlocal][m]) { - dflag[jlocal][m] = 1; - break; - } - i += 2; - } -} - -/* ---------------------------------------------------------------------- - when receive buffer, scan list of 1,4 atoms looking for atoms I own - when find one, scan its 1-4 neigh list and mark I,J as in a dihedral -------------------------------------------------------------------------- */ - -void Special::ring_eight(int ndatum, char *cbuf, void *ptr) -{ - Special *sptr = (Special *) ptr; - Atom *atom = sptr->atom; - int **nspecial = atom->nspecial; - int nlocal = atom->nlocal; - - tagint **onefour = sptr->onefour; - int **dflag = sptr->dflag; - - tagint *buf = (tagint *) cbuf; - tagint iglobal,jglobal; - int i,m,ilocal,jlocal; - - i = 0; - while (i < ndatum) { - iglobal = buf[i]; - jglobal = buf[i+1]; - ilocal = atom->map(iglobal); - jlocal = atom->map(jglobal); - if (ilocal >= 0 && ilocal < nlocal) - for (m = 0; m < nspecial[ilocal][2]; m++) - if (jglobal == onefour[ilocal][m]) { - dflag[ilocal][m] = 1; - break; - } - if (jlocal >= 0 && jlocal < nlocal) - for (m = 0; m < nspecial[jlocal][2]; m++) - if (iglobal == onefour[jlocal][m]) { - dflag[jlocal][m] = 1; - break; - } - i += 2; - } + flag = 1; + return n; } /* ---------------------------------------------------------------------- @@ -1159,3 +1323,15 @@ void Special::fix_alteration() modify->fix[ifix]->rebuild_special(); } +/* ---------------------------------------------------------------------- + print timing output +------------------------------------------------------------------------- */ + +void Special::timer_output(double time1) +{ + double time2 = MPI_Wtime(); + if (comm->me == 0) { + if (screen) fprintf(screen," special bonds CPU = %g secs\n",time2-time1); + if (logfile) fprintf(logfile," special bonds CPU = %g secs\n",time2-time1); + } +} diff --git a/src/special.h b/src/special.h index 9f25200336..10d2609536 100644 --- a/src/special.h +++ b/src/special.h @@ -26,29 +26,43 @@ class Special : protected Pointers { private: int me,nprocs; + int maxall; tagint **onetwo,**onethree,**onefour; - // data used by ring callback methods + // data used by rendezvous callback methods - int *count; - int **dflag; + int nrvous; + tagint *atomIDs; + int *procowner; + + struct IDRvous { + int me; + tagint atomID; + }; + + struct PairRvous { + tagint atomID,partnerID; + }; + + // private methods + + void atom_owners(); + void onetwo_build_newton(); + void onetwo_build_newton_off(); + void onethree_build(); + void onefour_build(); void dedup(); void angle_trim(); void dihedral_trim(); void combine(); void fix_alteration(); + void timer_output(double); - // callback functions for ring communication + // callback functions for rendezvous communication - static void ring_one(int, char *, void *); - static void ring_two(int, char *, void *); - static void ring_three(int, char *, void *); - static void ring_four(int, char *, void *); - static void ring_five(int, char *, void *); - static void ring_six(int, char *, void *); - static void ring_seven(int, char *, void *); - static void ring_eight(int, char *, void *); + static int rendezvous_ids(int, char *, int &, int *&, char *&, void *); + static int rendezvous_pairs(int, char *, int &, int *&, char *&, void *); }; } diff --git a/src/thermo.cpp b/src/thermo.cpp index ddbbd0f496..3e777edf82 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -380,9 +380,8 @@ void Thermo::compute(int flag) loc += sprintf(&line[loc],format[ifield],dvalue); else if (vtype[ifield] == INT) loc += sprintf(&line[loc],format[ifield],ivalue); - else if (vtype[ifield] == BIGINT) { + else if (vtype[ifield] == BIGINT) loc += sprintf(&line[loc],format[ifield],bivalue); - } } // print line to screen and logfile