diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5a67c547df..3ff672a05d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -68,7 +68,8 @@ How quickly your contribution will be integrated depends largely on how much eff Here is a checklist of steps you need to follow to submit a single file or user package for our consideration. Following these steps will save both you and us time. See existing files in packages in the source directory for examples. If you are uncertain, please ask on the lammps-users mailing list. * All source files you provide must compile with the most current version of LAMMPS with multiple configurations. In particular you need to test compiling LAMMPS from scratch with `-DLAMMPS_BIGBIG` set in addition to the default `-DLAMMPS_SMALLBIG` setting. Your code will need to work correctly in serial and in parallel using MPI. -* For consistency with the rest of LAMMPS and especially, if you want your contribution(s) to be added to main LAMMPS code or one of its standard packages, it needs to be written in a style compatible with other LAMMPS source files. This means: 2-character indentation per level, no tabs, no lines over 80 characters. I/O is done via the C-style stdio library, style class header files should not import any system headers outside of , STL containers should be avoided in headers, and forward declarations used where possible or needed. All added code should be placed into the LAMMPS_NS namespace or a sub-namespace; global or static variables should be avoided, as they conflict with the modular nature of LAMMPS and the C++ class structure. There MUST NOT be any "using namespace XXX;" statements in headers. In the implementation file (.cpp) system includes should be placed in angular brackets (<>) and for c-library functions the C++ style header files should be included ( instead of , or instead of ). This all is so the developers can more easily understand, integrate, and maintain your contribution and reduce conflicts with other parts of LAMMPS. This basically means that the code accesses data structures, performs its operations, and is formatted similar to other LAMMPS source files, including the use of the error class for error and warning messages. +* For consistency with the rest of LAMMPS and especially, if you want your contribution(s) to be added to main LAMMPS code or one of its standard packages, it needs to be written in a style compatible with other LAMMPS source files. This means: 2-character indentation per level, no tabs, no lines over 80 characters. I/O is done via the C-style stdio library, style class header files should not import any system headers, STL containers should be avoided in headers, and forward declarations used where possible or needed. All added code should be placed into the LAMMPS_NS namespace or a sub-namespace; global or static variables should be avoided, as they conflict with the modular nature of LAMMPS and the C++ class structure. There MUST NOT be any "using namespace XXX;" statements in headers. In the implementation file (.cpp) system includes should be placed in angular brackets (<>) and for c-library functions the C++ style header files should be included ( instead of , or instead of ). This all is so the developers can more easily understand, integrate, and maintain your contribution and reduce conflicts with other parts of LAMMPS. This basically means that the code accesses data structures, performs its operations, and is formatted similar to other LAMMPS source files, including the use of the error class for error and warning messages. +* Source, style name, and documentation file should follow the following naming convention: style names should be lowercase and words separated by a forward slash; for a new fix style 'foo/bar', the class should be named FixFooBar, the name of the source files should be 'fix_foo_bar.h' and 'fix_foo_bar.cpp' and the corresponding documentation should be in a file 'fix_foo_bar.txt'. * If you want your contribution to be added as a user-contributed feature, and it is a single file (actually a `.cpp` and `.h` file) it can be rapidly added to the USER-MISC directory. Include the one-line entry to add to the USER-MISC/README file in that directory, along with the 2 source files. You can do this multiple times if you wish to contribute several individual features. * If you want your contribution to be added as a user-contribution and it is several related features, it is probably best to make it a user package directory with a name like USER-FOO. In addition to your new files, the directory should contain a README text file. The README should contain your name and contact information and a brief description of what your new package does. If your files depend on other LAMMPS style files also being installed (e.g. because your file is a derived class from the other LAMMPS class), then an Install.sh file is also needed to check for those dependencies. See other README and Install.sh files in other USER directories as examples. Send us a tarball of this USER-FOO directory. * Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code. diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 91fb930be2..af782d28ae 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -52,10 +52,17 @@ check_for_autogen_files(${LAMMPS_SOURCE_DIR}) include(CheckCCompilerFlag) include(CheckIncludeFileCXX) -if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") +if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict") endif() +option(DISABLE_CXX11_REQUIREMENT "Disable check that requires C++11 for compiling LAMMPS" OFF) +if(DISABLE_CXX11_REQUIREMENT) + add_definitions(-DLAMMPS_CXX98) +else() + set(CMAKE_CXX_STANDARD 11) +endif() + # GNU compiler features if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") option(ENABLE_COVERAGE "Enable code coverage" OFF) @@ -315,13 +322,14 @@ endif() include(Packages/KSPACE) include(Packages/PYTHON) include(Packages/VORONOI) -include(Packages/USER-SCAFACOS) -include(Packages/USER-PLUMED) +include(Packages/USER-COLVARS) include(Packages/USER-MOLFILE) include(Packages/USER-NETCDF) -include(Packages/USER-SMD) -include(Packages/USER-QUIP) +include(Packages/USER-PLUMED) include(Packages/USER-QMMM) +include(Packages/USER-QUIP) +include(Packages/USER-SCAFACOS) +include(Packages/USER-SMD) include(Packages/USER-VTK) include(Packages/KIM) include(Packages/LATTE) @@ -411,8 +419,7 @@ endforeach() ############################################## # add lib sources of (simple) enabled packages ############################################ -foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-COLVARS USER-H5MD - USER-QMMM) +foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD USER-QMMM) if(PKG_${SIMPLE_LIB}) string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}") string(TOLOWER "${PKG_LIB}" PKG_LIB) @@ -426,10 +433,6 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-COLVARS USER-H5MD target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include) elseif(PKG_LIB STREQUAL h5md) target_include_directories(h5md PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/h5md/include ${HDF5_INCLUDE_DIRS}) - elseif(PKG_LIB STREQUAL colvars) - target_compile_options(colvars PRIVATE -DLEPTON) - target_include_directories(colvars PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton/include) - target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) else() target_include_directories(${PKG_LIB} PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}) endif() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index cc1e051629..428588ec9d 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -1,15 +1,24 @@ if(PKG_KOKKOS) - set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) - set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) + # TODO: this option needs to be documented when this works with a + # regular release version of KOKKOS, and a version compatibility check + # of external KOKKOS lib versus what the KOKKOS package needs is required. + option(EXTERNAL_KOKKOS "Build against external kokkos library") + if(EXTERNAL_KOKKOS) + find_package(Kokkos REQUIRED) + list(APPEND LAMMPS_LINK_LIBS Kokkos::kokkos) + else() + set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) + set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) + add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) + + set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src + ${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src + ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src + ${LAMMPS_LIB_KOKKOS_BIN_DIR}) + include_directories(${Kokkos_INCLUDE_DIRS}) + list(APPEND LAMMPS_LINK_LIBS kokkos) + endif() add_definitions(-DLMP_KOKKOS) - add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - - set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src - ${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src - ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src - ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - include_directories(${Kokkos_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS kokkos) set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS) set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake new file mode 100644 index 0000000000..b7fb91917c --- /dev/null +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -0,0 +1,42 @@ +if(PKG_USER-COLVARS) + + set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars) + + file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp) + + # Build Lepton by default + set(COLVARS_LEPTON_DEFAULT ON) + # but not if C++11 is disabled per user request + if(DEFINED DISABLE_CXX11_REQUIREMENT) + if(DISABLE_CXX11_REQUIREMENT) + set(COLVARS_LEPTON_DEFAULT OFF) + endif() + endif() + + option(COLVARS_LEPTON "Build and link the Lepton library" ${COLVARS_LEPTON_DEFAULT}) + + # Verify that the user's choice is consistent + if(DEFINED DISABLE_CXX11_REQUIREMENT) + if((DISABLE_CXX11_REQUIREMENT) AND (COLVARS_LEPTON)) + message(FATAL_ERROR "Building the Lepton library requires C++11 or later.") + endif() + endif() + + if(COLVARS_LEPTON) + set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) + file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) + add_library(lepton STATIC ${LEPTON_SOURCES}) + target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) + endif() + + add_library(colvars STATIC ${COLVARS_SOURCES}) + target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) + list(APPEND LAMMPS_LINK_LIBS colvars) + + if(COLVARS_LEPTON) + list(APPEND LAMMPS_LINK_LIBS lepton) + target_compile_options(colvars PRIVATE -DLEPTON) + target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include) + endif() + +endif() diff --git a/cmake/presets/most.cmake b/cmake/presets/most.cmake index 35ad7ba55c..2be17a1826 100644 --- a/cmake/presets/most.cmake +++ b/cmake/presets/most.cmake @@ -7,7 +7,7 @@ set(ALL_PACKAGES ASPHERE CLASS2 COLLOID CORESHELL DIPOLE PYTHON QEQ REPLICA RIGID SHOCK SRD VORONOI USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-FEP USER-MEAMC USER-MESO - USER-MISC USER-MOFFF USER-OMP USER-PLUMED USER-PHONON USER-REAXC + USER-MISC USER-MOFFF USER-OMP USER-PHONON USER-REAXC USER-SPH USER-SMD USER-UEF USER-YAFF) foreach(PKG ${ALL_PACKAGES}) diff --git a/doc/Makefile b/doc/Makefile index 5c679440b8..a702d5d169 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -69,6 +69,7 @@ html: $(OBJECTS) $(ANCHORCHECK) sphinx-build $(SPHINXEXTRA) -b html -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\ echo "############################################" ;\ doc_anchor_check src/*.txt ;\ + env LC_ALL=C grep -n '[^ -~]' src/*.txt ;\ echo "############################################" ;\ deactivate ;\ ) diff --git a/doc/lammps.1 b/doc/lammps.1 index ac19749dd6..f332a8a549 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "7 August 2019" "2019-08-07" +.TH LAMMPS "19 September 2019" "2019-09-19" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. diff --git a/doc/src/Build_development.txt b/doc/src/Build_development.txt index 16a3d3d20e..bd3897fba6 100644 --- a/doc/src/Build_development.txt +++ b/doc/src/Build_development.txt @@ -50,7 +50,7 @@ Code Coverage and Testing :h4,link(testing) We do extensive regression testing of the LAMMPS code base on a continuous basis. Some of the logic to do this has been added to the CMake build so -developers can run the tests directly on their workstation. +developers can run the tests directly on their workstation. NOTE: this is incomplete and only represents a small subset of tests that we run diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt index 287cd39ff6..c40a91d781 100644 --- a/doc/src/Build_settings.txt +++ b/doc/src/Build_settings.txt @@ -12,6 +12,7 @@ Optional build settings :h3 LAMMPS can be built with several optional settings. Each sub-section explain how to do this for building both with CMake and make. +"C++11 standard compliance test"_#cxx11 when building all of LAMMPS "FFT library"_#fft for use with the "kspace_style pppm"_kspace_style.html command "Size of LAMMPS data types"_#size "Read or write compressed files"_#gzip @@ -23,6 +24,28 @@ explain how to do this for building both with CMake and make. :line +C++11 standard compliance test :h4,link(cxx11) + +The LAMMPS developers plan to transition to make the C++11 standard the +minimum requirement for compiling LAMMPS. Currently this only applies to +some packages like KOKKOS while the rest aims to be compatible with the C++98 +standard. Most currently used compilers are compatible with C++11; some need +to set extra flags to switch. To determine the impact of requiring C++11, +we have added a simple compliance test to the source code, that will cause +the compilation to abort, if C++11 compliance is not available or enabled. +To bypass this check, you need to change a setting in the makefile or +when calling CMake. + +[CMake variable]: + +-D DISABLE_CXX11_REQUIREMENT=yes + +[Makefile.machine setting]: + +LMP_INC = -DLAMMPS_CXX98 + +:line + FFT library :h4,link(fft) When the KSPACE package is included in a LAMMPS build, the diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt index d0d7657c07..ecd21e42e7 100644 --- a/doc/src/Commands_all.txt +++ b/doc/src/Commands_all.txt @@ -124,6 +124,7 @@ An alphabetic list of all general LAMMPS commands. "thermo"_thermo.html, "thermo_modify"_thermo_modify.html, "thermo_style"_thermo_style.html, +"third_order"_third_order.html, "timer"_timer.html, "timestep"_timestep.html, "uncompute"_uncompute.html, diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt index 47d4c40d8e..e6ebd21987 100644 --- a/doc/src/Commands_pair.txt +++ b/doc/src/Commands_pair.txt @@ -166,6 +166,7 @@ OPT. "lj/smooth/linear (o)"_pair_lj_smooth_linear.html, "lj/switch3/coulgauss/long"_pair_lj_switch3_coulgauss.html, "lj96/cut (go)"_pair_lj96.html, +"local/density"_pair_local_density.html, "lubricate (o)"_pair_lubricate.html, "lubricate/poly (o)"_pair_lubricate.html, "lubricateU"_pair_lubricateU.html, diff --git a/doc/src/Eqs/norm_inf.jpg b/doc/src/Eqs/norm_inf.jpg new file mode 100644 index 0000000000..42a2afb3d2 Binary files /dev/null and b/doc/src/Eqs/norm_inf.jpg differ diff --git a/doc/src/Eqs/norm_inf.tex b/doc/src/Eqs/norm_inf.tex new file mode 100644 index 0000000000..b97a9f88f7 --- /dev/null +++ b/doc/src/Eqs/norm_inf.tex @@ -0,0 +1,15 @@ +\documentclass[preview]{standalone} +\usepackage{varwidth} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath, amssymb, graphics, setspace} + +\begin{document} +\begin{varwidth}{50in} + \begin{equation} + || \vec{F} ||_{inf} + = {\rm max}\left(|F_1^1|, |F_1^2|, |F_1^3| \cdots, + |F_N^1|, |F_N^2|, |F_N^3|\right) + \nonumber + \end{equation} +\end{varwidth} +\end{document} diff --git a/doc/src/Eqs/norm_max.jpg b/doc/src/Eqs/norm_max.jpg new file mode 100644 index 0000000000..c10db9a531 Binary files /dev/null and b/doc/src/Eqs/norm_max.jpg differ diff --git a/doc/src/Eqs/norm_max.tex b/doc/src/Eqs/norm_max.tex new file mode 100644 index 0000000000..3b2198bdf0 --- /dev/null +++ b/doc/src/Eqs/norm_max.tex @@ -0,0 +1,15 @@ +\documentclass[preview]{standalone} +\usepackage{varwidth} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath, amssymb, graphics, setspace} + +\begin{document} +\begin{varwidth}{50in} + \begin{equation} + % \left| \left| \vec{F} \right| \right|_2 + || \vec{F} ||_{max} + = {\rm max}\left(||\vec{F}_1||, \cdots, ||\vec{F}_N||\right) + \nonumber + \end{equation} +\end{varwidth} +\end{document} diff --git a/doc/src/Eqs/norm_two.jpg b/doc/src/Eqs/norm_two.jpg new file mode 100644 index 0000000000..5554de32f9 Binary files /dev/null and b/doc/src/Eqs/norm_two.jpg differ diff --git a/doc/src/Eqs/norm_two.tex b/doc/src/Eqs/norm_two.tex new file mode 100644 index 0000000000..d428081a49 --- /dev/null +++ b/doc/src/Eqs/norm_two.tex @@ -0,0 +1,15 @@ +\documentclass[preview]{standalone} +\usepackage{varwidth} +\usepackage[utf8x]{inputenc} +\usepackage{amsmath, amssymb, graphics, setspace} + +\begin{document} +\begin{varwidth}{50in} + \begin{equation} + % \left| \left| \vec{F} \right| \right|_2 + || \vec{F} ||_{2} + = \sqrt{\vec{F}_1+ \cdots + \vec{F}_N} + \nonumber + \end{equation} +\end{varwidth} +\end{document} diff --git a/doc/src/Eqs/pair_local_density_energy.jpg b/doc/src/Eqs/pair_local_density_energy.jpg new file mode 100644 index 0000000000..68e44ce9d9 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_energy.jpg differ diff --git a/doc/src/Eqs/pair_local_density_energy.tex b/doc/src/Eqs/pair_local_density_energy.tex new file mode 100644 index 0000000000..a77b513051 --- /dev/null +++ b/doc/src/Eqs/pair_local_density_energy.tex @@ -0,0 +1,11 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + U_{LD} = \sum_i F(\rho_i) +$$ + + +\end{document} +~ diff --git a/doc/src/Eqs/pair_local_density_energy_implement.jpg b/doc/src/Eqs/pair_local_density_energy_implement.jpg new file mode 100644 index 0000000000..bd1f65d542 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_energy_implement.jpg differ diff --git a/doc/src/Eqs/pair_local_density_energy_implement.tex b/doc/src/Eqs/pair_local_density_energy_implement.tex new file mode 100644 index 0000000000..4b1f1c3df2 --- /dev/null +++ b/doc/src/Eqs/pair_local_density_energy_implement.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ +U_{LD} = \sum_k U_{LD}^{(k)} = \sum_i \left[ \sum_k a_\alpha^{(k)} F^{(k)} \left(\rho_i^{(k)}\right) \right] +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_local_density_energy_multi.jpg b/doc/src/Eqs/pair_local_density_energy_multi.jpg new file mode 100644 index 0000000000..df9dbfa5c8 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_energy_multi.jpg differ diff --git a/doc/src/Eqs/pair_local_density_energy_multi.tex b/doc/src/Eqs/pair_local_density_energy_multi.tex new file mode 100644 index 0000000000..4ca0b7e8b9 --- /dev/null +++ b/doc/src/Eqs/pair_local_density_energy_multi.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ +U_{LD} = \sum_i a_\alpha F(\rho_i) +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_local_density_indicator_func.jpg b/doc/src/Eqs/pair_local_density_indicator_func.jpg new file mode 100644 index 0000000000..e038b2884d Binary files /dev/null and b/doc/src/Eqs/pair_local_density_indicator_func.jpg differ diff --git a/doc/src/Eqs/pair_local_density_indicator_func.tex b/doc/src/Eqs/pair_local_density_indicator_func.tex new file mode 100644 index 0000000000..aa595c96dc --- /dev/null +++ b/doc/src/Eqs/pair_local_density_indicator_func.tex @@ -0,0 +1,16 @@ +\documentclass[12pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{amsfonts} + +\begin{document} +\[ + \varphi(r) = + \begin{cases} + 1 & r \le R_1 \\ + c_0 + c_2r^2 + c_4r^4 + c_6r^6 & r \in (R_1, R_2) \\ + 0 & r \ge R_2 + \end{cases} +\] + +\end{document} diff --git a/doc/src/Eqs/pair_local_density_ld.jpg b/doc/src/Eqs/pair_local_density_ld.jpg new file mode 100644 index 0000000000..9e6a8e1b72 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_ld.jpg differ diff --git a/doc/src/Eqs/pair_local_density_ld.tex b/doc/src/Eqs/pair_local_density_ld.tex new file mode 100644 index 0000000000..1affa67cd3 --- /dev/null +++ b/doc/src/Eqs/pair_local_density_ld.tex @@ -0,0 +1,10 @@ +\documentclass[12pt]{article} + +\begin{document} + + +$$ +\rho_i = \sum_{j \neq i} \varphi(r_{ij}) +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_local_density_ld_implement.jpg b/doc/src/Eqs/pair_local_density_ld_implement.jpg new file mode 100644 index 0000000000..e8b98125a2 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_ld_implement.jpg differ diff --git a/doc/src/Eqs/pair_local_density_ld_implement.tex b/doc/src/Eqs/pair_local_density_ld_implement.tex new file mode 100644 index 0000000000..85ee8bad21 --- /dev/null +++ b/doc/src/Eqs/pair_local_density_ld_implement.tex @@ -0,0 +1,10 @@ +\documentstyle[12pt]{article} + +\begin{document} + + +$$ +\rho_i^{(k)} = \sum_j b_\beta^{(k)} \varphi^{(k)} (r_{ij}) +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_local_density_ld_multi.jpg b/doc/src/Eqs/pair_local_density_ld_multi.jpg new file mode 100644 index 0000000000..feef991d49 Binary files /dev/null and b/doc/src/Eqs/pair_local_density_ld_multi.jpg differ diff --git a/doc/src/Eqs/pair_local_density_ld_multi.tex b/doc/src/Eqs/pair_local_density_ld_multi.tex new file mode 100644 index 0000000000..c441288c5d --- /dev/null +++ b/doc/src/Eqs/pair_local_density_ld_multi.tex @@ -0,0 +1,10 @@ +\documentclass[12pt]{article} + +\begin{document} + + +$$ +\rho_i = \sum_{j \neq i} b_\beta \varphi(r_{ij}) +$$ + +\end{document} diff --git a/doc/src/Errors_messages.txt b/doc/src/Errors_messages.txt index c131b10ec6..33593d4d53 100644 --- a/doc/src/Errors_messages.txt +++ b/doc/src/Errors_messages.txt @@ -4791,6 +4791,22 @@ Self-explanatory. :dd This fix option cannot be used with point particles. :dd +{Fix langevin gjf and respa are not compatible} :dt + +Self-explanatory. :dd + +{Fix langevin gjf cannot have period equal to dt/2} :dt + +If the period is equal to dt/2 then division by zero will happen. :dd + +{Fix langevin gjf should come before fix nve} :dt + +Self-explanatory. :dd + +{Fix langevin gjf with tbias is not yet implemented with kokkos} :dt + +This option is not yet available. :dd + {Fix langevin omega is not yet implemented with kokkos} :dt This option is not yet available. :dd diff --git a/doc/src/Errors_warnings.txt b/doc/src/Errors_warnings.txt index 9f346ba8c1..749731fc4f 100644 --- a/doc/src/Errors_warnings.txt +++ b/doc/src/Errors_warnings.txt @@ -47,6 +47,11 @@ too far away. :dd Self-explanatory. :dd +{Angles are defined but no angle style is set} :dt + +The topology contains angles, but there are no angle forces computed +since there was no angle_style command. :dd + {Atom style in data file differs from currently defined atom style} :dt Self-explanatory. :dd @@ -73,6 +78,11 @@ short or the bond has blown apart and an atom is too far away. :dd Self-explanatory. :dd +{Bonds are defined but no bond style is set} :dt + +The topology contains bonds, but there are no bond forces computed +since there was no bond_style command. :dd + {Bond/angle/dihedral extent > half of periodic box length} :dt This is a restriction because LAMMPS can be confused about which image @@ -186,6 +196,11 @@ to check your simulation geometry. :dd Self-explanatory. :dd +{Dihedrals are defined but no dihedral style is set} :dt + +The topology contains dihedrals, but there are no dihedral forces computed +since there was no dihedral_style command. :dd + {Dump dcd/xtc timestamp may be wrong with fix dt/reset} :dt If the fix changes the timestep, the dump dcd file will not @@ -248,6 +263,10 @@ included one or more of the following: kspace, triclinic, a hybrid pair style, an eam pair style, or no "single" function for the pair style. :dd +{Fix langevin gjf using random gaussians is not implemented with kokkos} :dt + +This will most likely cause errors in kinetic fluctuations. + {Fix property/atom mol or charge w/out ghost communication} :dt A model typically needs these properties defined for ghost atoms. :dd @@ -348,6 +367,11 @@ to check your simulation geometry. :dd Self-explanatory. :dd +{Impropers are defined but no improper style is set} :dt + +The topology contains impropers, but there are no improper forces computed +since there was no improper_style command. :dd + {Inconsistent image flags} :dt The image flags for a pair on bonded atoms appear to be inconsistent. @@ -403,6 +427,30 @@ This library function cannot be used if atom IDs are not defined or are not consecutively numbered, or if no atom map is defined. See the atom_modify command for details about atom maps. :dd +{Likewise 1-2 special neighbor interactions != 1.0} :dt + +The topology contains bonds, but there is no bond style defined +and a 1-2 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the bond style. :dd + +{Likewise 1-3 special neighbor interactions != 1.0} :dt + +The topology contains angles, but there is no angle style defined +and a 1-3 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the angle style. :dd + +{Likewise 1-4 special neighbor interactions != 1.0} :dt + +The topology contains dihedrals, but there is no dihedral style defined +and a 1-4 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the dihedral style. :dd + {Lost atoms via change_box: original %ld current %ld} :dt The command options you have used caused atoms to be lost. :dd diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt index 36d0ac86f9..86617e13df 100644 --- a/doc/src/Examples.txt +++ b/doc/src/Examples.txt @@ -141,6 +141,7 @@ HEAT: compute thermal conductivity for LJ and water via fix ehex KAPPA: compute thermal conductivity via several methods MC: using LAMMPS in a Monte Carlo mode to relax the energy of a system SPIN: examples for features of the SPIN package +UNITS: examples that run the same simulation in lj, real, metal units USER: examples for USER packages and USER-contributed commands VISCOSITY: compute viscosity via several methods :tb(s=:) diff --git a/doc/src/Howto_spins.txt b/doc/src/Howto_spins.txt index 80b2a54fe4..c4bdc502ce 100644 --- a/doc/src/Howto_spins.txt +++ b/doc/src/Howto_spins.txt @@ -43,19 +43,19 @@ langevin/spin"_fix_langevin_spin.html. It allows to either dissipate the thermal energy of the Langevin thermostat, or to perform a relaxation of the magnetic configuration toward an equilibrium state. -The command "fix setforce/spin"_fix_setforce.html allows to set the -components of the magnetic precession vectors (while erasing and -replacing the previously computed magnetic precession vectors on -the atom). -This command can be used to freeze the magnetic moment of certain -atoms in the simulation by zeroing their precession vector. +The command "fix setforce/spin"_fix_setforce.html allows to set the +components of the magnetic precession vectors (while erasing and +replacing the previously computed magnetic precession vectors on +the atom). +This command can be used to freeze the magnetic moment of certain +atoms in the simulation by zeroing their precession vector. The command "fix nve/spin"_fix_nve_spin.html can be used to -perform a symplectic integration of the combined dynamics of spins +perform a symplectic integration of the combined dynamics of spins and atomic motions. The minimization style "min/spin"_min_spin.html can be applied -to the spins to perform a minimization of the spin configuration. +to the spins to perform a minimization of the spin configuration. All the computed magnetic properties can be output by two main diff --git a/doc/src/Howto_viscosity.txt b/doc/src/Howto_viscosity.txt index ee070eba58..c87c8a3b84 100644 --- a/doc/src/Howto_viscosity.txt +++ b/doc/src/Howto_viscosity.txt @@ -83,7 +83,7 @@ variable d equal $p*$s # dump interval :pre # convert from LAMMPS real units to SI :pre -variable kB equal 1.3806504e-23 # \[J/K/] Boltzmann +variable kB equal 1.3806504e-23 # \[J/K\] Boltzmann variable atm2Pa equal 101325.0 variable A2m equal 1.0e-10 variable fs2s equal 1.0e-15 diff --git a/doc/src/JPG/dynamical_matrix_dynmat.jpg b/doc/src/JPG/dynamical_matrix_dynmat.jpg new file mode 100644 index 0000000000..6c6adae72c Binary files /dev/null and b/doc/src/JPG/dynamical_matrix_dynmat.jpg differ diff --git a/doc/src/JPG/dynamical_matrix_force_constant.jpg b/doc/src/JPG/dynamical_matrix_force_constant.jpg new file mode 100644 index 0000000000..e1a0e50d14 Binary files /dev/null and b/doc/src/JPG/dynamical_matrix_force_constant.jpg differ diff --git a/doc/src/JPG/dynamical_matrix_phonons.jpg b/doc/src/JPG/dynamical_matrix_phonons.jpg new file mode 100644 index 0000000000..2a6d3a36d7 Binary files /dev/null and b/doc/src/JPG/dynamical_matrix_phonons.jpg differ diff --git a/doc/src/JPG/third_order_force_constant.png b/doc/src/JPG/third_order_force_constant.png new file mode 100644 index 0000000000..f6171ccf09 Binary files /dev/null and b/doc/src/JPG/third_order_force_constant.png differ diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt index c63137ef6f..95f1ffe4bb 100644 --- a/doc/src/Manual.txt +++ b/doc/src/Manual.txt @@ -1,7 +1,7 @@ LAMMPS Users Manual - + @@ -21,7 +21,7 @@ :line LAMMPS Documentation :c,h1 -7 Aug 2019 version :c,h2 +19 Sep 2019 version :c,h2 "What is a LAMMPS version?"_Manual_version.html diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index eead133add..fc30c045cf 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -1746,11 +1746,12 @@ USER-PHONON package :link(PKG-USER-PHONON),h4 A "fix phonon"_fix_phonon.html command that calculates dynamical matrices, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations. -And a "dynamical_matrix" command to compute the dynamical matrix -from finite differences. +And a "dynamical_matrix"_dynamical_matrix.html as well as a +"third_order"_third_order.html command to compute the dynamical matrix +and third order tensor from finite differences. [Authors:] Ling-Ti Kong (Shanghai Jiao Tong University) for "fix phonon" -and Charlie Sievers (UC Davis) for "dynamical_matrix" +and Charlie Sievers (UC Davis) for "dynamical_matrix" and "third_order" [Supporting info:] @@ -1759,6 +1760,7 @@ src/USER-PHONON: filenames -> commands src/USER-PHONON/README "fix phonon"_fix_phonon.html "dynamical_matrix"_dynamical_matrix.html +"third_order"_third_order.html examples/USER/phonon :ul :line diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt index 99d29864dc..66f8fab8d9 100644 --- a/doc/src/Speed_kokkos.txt +++ b/doc/src/Speed_kokkos.txt @@ -46,14 +46,14 @@ software version 7.5 or later must be installed on your system. See the discussion for the "GPU package"_Speed_gpu.html for details of how to check and do this. -NOTE: Kokkos with CUDA currently implicitly assumes that the MPI library -is CUDA-aware. This is not always the case, especially when using -pre-compiled MPI libraries provided by a Linux distribution. This is not -a problem when using only a single GPU with a single MPI rank. When -running with multiple MPI ranks, you may see segmentation faults without -CUDA-aware MPI support. These can be avoided by adding the flags "-pk -kokkos cuda/aware off"_Run_options.html to the LAMMPS command line or by -using the command "package kokkos cuda/aware off"_package.html in the +NOTE: Kokkos with CUDA currently implicitly assumes that the MPI library +is CUDA-aware. This is not always the case, especially when using +pre-compiled MPI libraries provided by a Linux distribution. This is not +a problem when using only a single GPU with a single MPI rank. When +running with multiple MPI ranks, you may see segmentation faults without +CUDA-aware MPI support. These can be avoided by adding the flags "-pk +kokkos cuda/aware off"_Run_options.html to the LAMMPS command line or by +using the command "package kokkos cuda/aware off"_package.html in the input file. [Building LAMMPS with the KOKKOS package:] @@ -110,10 +110,10 @@ Makefile.kokkos_mpi_only) will give better performance than the OpenMP back end (i.e. Makefile.kokkos_omp) because some of the overhead to make the code thread-safe is removed. -NOTE: Use the "-pk kokkos" "command-line switch"_Run_options.html to -change the default "package kokkos"_package.html options. See its doc -page for details and default settings. Experimenting with its options -can provide a speed-up for specific calculations. For example: +NOTE: Use the "-pk kokkos" "command-line switch"_Run_options.html to +change the default "package kokkos"_package.html options. See its doc +page for details and default settings. Experimenting with its options +can provide a speed-up for specific calculations. For example: mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre @@ -183,15 +183,15 @@ tasks/node. The "-k on t Nt" command-line switch sets the number of threads/task as Nt. The product of these two values should be N, i.e. 256 or 264. -NOTE: The default for the "package kokkos"_package.html command when -running on KNL is to use "half" neighbor lists and set the Newton flag -to "on" for both pairwise and bonded interactions. This will typically -be best for many-body potentials. For simpler pair-wise potentials, it -may be faster to use a "full" neighbor list with Newton flag to "off". -Use the "-pk kokkos" "command-line switch"_Run_options.html to change -the default "package kokkos"_package.html options. See its doc page for -details and default settings. Experimenting with its options can provide -a speed-up for specific calculations. For example: +NOTE: The default for the "package kokkos"_package.html command when +running on KNL is to use "half" neighbor lists and set the Newton flag +to "on" for both pairwise and bonded interactions. This will typically +be best for many-body potentials. For simpler pair-wise potentials, it +may be faster to use a "full" neighbor list with Newton flag to "off". +Use the "-pk kokkos" "command-line switch"_Run_options.html to change +the default "package kokkos"_package.html options. See its doc page for +details and default settings. Experimenting with its options can provide +a speed-up for specific calculations. For example: mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax # Newton on, half neighbor list, threaded comm mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton off neigh full comm no -in in.lj # Newton off, full neighbor list, non-threaded comm :pre @@ -206,19 +206,19 @@ supports. [Running on GPUs:] -Use the "-k" "command-line switch"_Run_options.html to specify the -number of GPUs per node. Typically the -np setting of the mpirun command -should set the number of MPI tasks/node to be equal to the number of -physical GPUs on the node. You can assign multiple MPI tasks to the same -GPU with the KOKKOS package, but this is usually only faster if some -portions of the input script have not been ported to use Kokkos. In this -case, also packing/unpacking communication buffers on the host may give -speedup (see the KOKKOS "package"_package.html command). Using CUDA MPS +Use the "-k" "command-line switch"_Run_options.html to specify the +number of GPUs per node. Typically the -np setting of the mpirun command +should set the number of MPI tasks/node to be equal to the number of +physical GPUs on the node. You can assign multiple MPI tasks to the same +GPU with the KOKKOS package, but this is usually only faster if some +portions of the input script have not been ported to use Kokkos. In this +case, also packing/unpacking communication buffers on the host may give +speedup (see the KOKKOS "package"_package.html command). Using CUDA MPS is recommended in this scenario. -Using a CUDA-aware MPI library is highly recommended. CUDA-aware MPI use can be -avoided by using "-pk kokkos cuda/aware no"_package.html. As above for -multi-core CPUs (and no GPU), if N is the number of physical cores/node, +Using a CUDA-aware MPI library is highly recommended. CUDA-aware MPI use can be +avoided by using "-pk kokkos cuda/aware no"_package.html. As above for +multi-core CPUs (and no GPU), if N is the number of physical cores/node, then the number of MPI tasks/node should not exceed N. -k on g Ng :pre @@ -229,18 +229,18 @@ one or more nodes, each with two GPUs: mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre -NOTE: The default for the "package kokkos"_package.html command when -running on GPUs is to use "full" neighbor lists and set the Newton flag -to "off" for both pairwise and bonded interactions, along with threaded -communication. When running on Maxwell or Kepler GPUs, this will -typically be best. For Pascal GPUs, using "half" neighbor lists and -setting the Newton flag to "on" may be faster. For many pair styles, -setting the neighbor binsize equal to twice the CPU default value will -give speedup, which is the default when running on GPUs. Use the "-pk -kokkos" "command-line switch"_Run_options.html to change the default -"package kokkos"_package.html options. See its doc page for details and -default settings. Experimenting with its options can provide a speed-up -for specific calculations. For example: +NOTE: The default for the "package kokkos"_package.html command when +running on GPUs is to use "full" neighbor lists and set the Newton flag +to "off" for both pairwise and bonded interactions, along with threaded +communication. When running on Maxwell or Kepler GPUs, this will +typically be best. For Pascal GPUs, using "half" neighbor lists and +setting the Newton flag to "on" may be faster. For many pair styles, +setting the neighbor binsize equal to twice the CPU default value will +give speedup, which is the default when running on GPUs. Use the "-pk +kokkos" "command-line switch"_Run_options.html to change the default +"package kokkos"_package.html options. See its doc page for details and +default settings. Experimenting with its options can provide a speed-up +for specific calculations. For example: mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt index 90f598890f..dccdf77dee 100644 --- a/doc/src/Tools.txt +++ b/doc/src/Tools.txt @@ -87,6 +87,7 @@ Miscellaneous tools :h3 "emacs"_#emacs, "i-pi"_#ipi, "kate"_#kate, +"singularity"_#singularity_tool, "vim"_#vim :tb(c=5,ea=c,a=l) :line @@ -531,17 +532,26 @@ Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). spin tool :h4,link(spin) The spin sub-directory contains a C file interpolate.c which can -be compiled and used to perform a cubic polynomial interpolation of +be compiled and used to perform a cubic polynomial interpolation of the MEP following a GNEB calculation. See the README file in tools/spin/interpolate_gneb for more details. This tool was written by the SPIN package author, Julien -Tranchida at Sandia National Labs (jtranch at sandia.gov, and by Aleksei +Tranchida at Sandia National Labs (jtranch at sandia.gov, and by Aleksei Ivanov, at University of Iceland (ali5 at hi.is). :line +singularity tool :h4,link(singularity_tool) + +The singularity sub-directory contains container definitions files +that can be used to build container images for building and testing +LAMMPS on specific OS variants using the "Singularity"_https://sylabs.io +container software. Contributions for additional variants are welcome. + +:line + vim tool :h4,link(vim) The files in the tools/vim directory are add-ons to the VIM editor diff --git a/doc/src/commands_list.txt b/doc/src/commands_list.txt index a5c9b568ed..714aedefed 100644 --- a/doc/src/commands_list.txt +++ b/doc/src/commands_list.txt @@ -108,6 +108,7 @@ Commands :h1 thermo thermo_modify thermo_style + third_order timer timestep uncompute diff --git a/doc/src/compute.txt b/doc/src/compute.txt index 214fbdefc4..b54d2d2e7b 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -244,7 +244,7 @@ compute"_Commands_compute.html doc page are followed by one or more of "plasticity/atom"_compute_plasticity_atom.html - Peridynamic plasticity for each atom "pressure"_compute_pressure.html - total pressure and pressure tensor "pressure/cylinder"_compute_pressure_cylinder.html - pressure tensor in cylindrical coordinates -"pressure/uef"_compute_pressure_uef.html - pressure tensor in the reference frame of an applied flow field +"pressure/uef"_compute_pressure_uef.html - pressure tensor in the reference frame of an applied flow field "property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays "property/chunk"_compute_property_chunk.html - extract various per-chunk attributes "property/local"_compute_property_local.html - convert local attributes to localvectors/arrays @@ -284,7 +284,7 @@ compute"_Commands_compute.html doc page are followed by one or more of "stress/mop"_compute_stress_mop.html - normal components of the local stress tensor using the method of planes "stress/mop/profile"_compute_stress_mop.html - profile of the normal components of the local stress tensor using the method of planes "stress/tally"_compute_tally.html - -"tdpd/cc/atom"_compute_tdpd_cc_atom.html - per-atom chemical concentration of a specified species for each tDPD particle +"tdpd/cc/atom"_compute_tdpd_cc_atom.html - per-atom chemical concentration of a specified species for each tDPD particle "temp"_compute_temp.html - temperature of group of atoms "temp/asphere"_compute_temp_asphere.html - temperature of aspherical particles "temp/body"_compute_temp_body.html - temperature of body particles diff --git a/doc/src/compute_coord_atom.txt b/doc/src/compute_coord_atom.txt index af0be4be56..e4d57a5dc5 100644 --- a/doc/src/compute_coord_atom.txt +++ b/doc/src/compute_coord_atom.txt @@ -47,7 +47,7 @@ neighboring atoms, unless selected by type, type range, or group option, are included in the coordination number tally. The optional {group} keyword allows to specify from which group atoms -contribute to the coordination number. Default setting is group 'all'. +contribute to the coordination number. Default setting is group 'all'. The {typeN} keywords allow specification of which atom types contribute to each coordination number. One coordination number is diff --git a/doc/src/compute_gyration_shape.txt b/doc/src/compute_gyration_shape.txt index 7c428aea8a..c16dfc02c4 100644 --- a/doc/src/compute_gyration_shape.txt +++ b/doc/src/compute_gyration_shape.txt @@ -84,3 +84,6 @@ package"_Build_package.html doc page for more info. :link(Theodorou) [(Theodorou)] Theodorou, Suter, Macromolecules, 18, 1206 (1985). +:link(Mattice) +[(Mattice)] Mattice, Suter, Conformational Theory of Large Molecules, Wiley, New York, 1994. + diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index 4ab355abd7..289138eaa8 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -34,7 +34,7 @@ compute 2 all hma 1 u cv :pre Define a computation that calculates the properties of a solid (potential energy, pressure or heat capacity), using the harmonically-mapped averaging -(HMA) method. +(HMA) method. This command yields much higher precision than the equivalent compute commands ("compute pe"_compute_pe.html, "compute pressure"_compute_pressure.html, etc.) commands during a canonical simulation of an atomic crystal. Specifically, @@ -52,7 +52,7 @@ restricted to simulations in the NVT ensemble. While this compute may be used with any potential in LAMMPS, it will provide inaccurate results for potentials that do not go to 0 at the truncation distance; "pair_lj_smooth_linear"_pair_lj_smooth_linear.html and Ewald summation should -work fine, while "pair_lj"_pair_lj.html will perform poorly unless +work fine, while "pair_lj"_pair_lj.html will perform poorly unless the potential is shifted (via "pair_modify"_pair_modify.html shift) or the cutoff is large. Furthermore, computation of the heat capacity with this compute is restricted to those that implement the single_hessian method in Pair. Implementing single_hessian in additional pair styles is simple. @@ -64,8 +64,8 @@ the list of pair styles that currently implement pair_hessian: :ule In this method, the analytically known harmonic behavior of a crystal is removed from the traditional ensemble -averages, which leads to an accurate and precise measurement of the anharmonic contributions without contamination -by noise produced by the already-known harmonic behavior. +averages, which leads to an accurate and precise measurement of the anharmonic contributions without contamination +by noise produced by the already-known harmonic behavior. A detailed description of this method can be found in ("Moustafa"_#hma-Moustafa). The potential energy is computed by the formula: \begin\{equation\} @@ -74,9 +74,9 @@ A detailed description of this method can be found in ("Moustafa"_#hma-Moustafa) where \(N\) is the number of atoms in the system, \(k_B\) is Boltzmann's constant, \(T\) is the temperature, \(d\) is the -dimensionality of the system (2 or 3 for 2d/3d), \(F\bullet\Delta r\) is the sum of dot products of the -atomic force vectors and displacement (from lattice sites) vectors, and \(U\) is the sum of -pair, bond, angle, dihedral, improper, kspace (long-range), and fix energies. +dimensionality of the system (2 or 3 for 2d/3d), \(F\bullet\Delta r\) is the sum of dot products of the +atomic force vectors and displacement (from lattice sites) vectors, and \(U\) is the sum of +pair, bond, angle, dihedral, improper, kspace (long-range), and fix energies. The pressure is computed by the formula: @@ -118,30 +118,30 @@ When using this keyword, the compute must be first active (it must be included via a "thermo_style custom"_thermo_style.html command) while the atoms are still at their lattice sites (before equilibration). -The temp-ID specified with compute hma command should be same as the fix-ID of Nose-Hoover ("fix nvt"_fix_nh.html) or -Berendsen ("fix temp/berendsen"_fix_temp_berendsen.html) thermostat used for the simulation. While using this command, Langevin thermostat -("fix langevin"_fix_langevin.html) -should be avoided as its extra forces interfere with the HMA implementation. +The temp-ID specified with compute hma command should be same as the fix-ID of Nose-Hoover ("fix nvt"_fix_nh.html) or +Berendsen ("fix temp/berendsen"_fix_temp_berendsen.html) thermostat used for the simulation. While using this command, Langevin thermostat +("fix langevin"_fix_langevin.html) +should be avoided as its extra forces interfere with the HMA implementation. - -NOTE: Compute hma command should be used right after the energy minimization, when the atoms are at their lattice sites. + +NOTE: Compute hma command should be used right after the energy minimization, when the atoms are at their lattice sites. The simulation should not be started before this command has been used in the input script. The following example illustrates the placement of this command in the input script: -min_style cg -minimize 1e-35 1e-15 50000 500000 +min_style cg +minimize 1e-35 1e-15 50000 500000 compute 1 all hma thermostatid u -fix thermostatid all nvt temp 600.0 600.0 100.0 :pre +fix thermostatid all nvt temp 600.0 600.0 100.0 :pre NOTE: Compute hma should be used when the atoms of the solid do not diffuse. Diffusion will reduce the precision in the potential energy computation. - + NOTE: The "fix_modify energy yes"_fix_modify.html command must also be specified if a fix is to contribute potential energy to this command. An example input script that uses this compute is included in @@ -180,5 +180,5 @@ this compute. :line :link(hma-Moustafa) -[(Moustafa)] Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, {Very fast averaging of thermal properties of crystals by molecular simulation}, +[(Moustafa)] Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, {Very fast averaging of thermal properties of crystals by molecular simulation}, "Phys. Rev. E \[92\], 043303 (2015)"_https://link.aps.org/doi/10.1103/PhysRevE.92.043303 diff --git a/doc/src/compute_orientorder_atom.txt b/doc/src/compute_orientorder_atom.txt index da14c866bd..d59033f179 100644 --- a/doc/src/compute_orientorder_atom.txt +++ b/doc/src/compute_orientorder_atom.txt @@ -76,14 +76,14 @@ parameters up to {Q}12 for a range of commonly encountered high-symmetry structures are given in Table I of "Mickel et al."_#Mickel, and these can be reproduced with this compute -The optional keyword {wl} will output the third-order invariants {Wl} +The optional keyword {wl} will output the third-order invariants {Wl} (see Eq. 1.4 in "Steinhardt"_#Steinhardt) for the same degrees as for the {Ql} parameters. For the FCC crystal with {nnn} =12, {W}4 = -sqrt(14/143).(49/4096)/Pi^1.5 = -0.0006722136... -The optional keyword {wl/hat} will output the normalized third-order -invariants {Wlhat} (see Eq. 2.2 in "Steinhardt"_#Steinhardt) -for the same degrees as for the {Ql} parameters. For the FCC crystal +The optional keyword {wl/hat} will output the normalized third-order +invariants {Wlhat} (see Eq. 2.2 in "Steinhardt"_#Steinhardt) +for the same degrees as for the {Ql} parameters. For the FCC crystal with {nnn} =12, {W}4hat = -7/3*sqrt(2/429) = -0.159317...The numerical values of {Wlhat} for a range of commonly encountered high-symmetry structures are given in Table I of "Steinhardt"_#Steinhardt, and these @@ -127,9 +127,9 @@ range 0 <= {Ql} <= 1. If the keyword {wl} is set to yes, then the {Wl} values for each atom will be added to the output array, which are real numbers. -If the keyword {wl/hat} is set to yes, then the {Wl_hat} +If the keyword {wl/hat} is set to yes, then the {Wl_hat} values for each atom will be added to the output array, which are real numbers. - + If the keyword {components} is set, then the real and imaginary parts of each component of (normalized) {Ybar_lm} will be added to the output array in the following order: Re({Ybar_-m}) Im({Ybar_-m}) diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt index 518d28aec9..eab32d8757 100644 --- a/doc/src/compute_sna_atom.txt +++ b/doc/src/compute_sna_atom.txt @@ -196,7 +196,7 @@ for j1 in range(0,twojmax+1): if (j>=j1): print j1/2.,j2/2.,j/2. :pre NOTE: the {diagonal} keyword allowing other possible choices -for the number of bispectrum components was removed in 2019, +for the number of bispectrum components was removed in 2019, since all potentials use the value of 3, corresponding to the above set of bispectrum components. diff --git a/doc/src/compute_spin.txt b/doc/src/compute_spin.txt index d27e402972..0824a70dd0 100644 --- a/doc/src/compute_spin.txt +++ b/doc/src/compute_spin.txt @@ -40,14 +40,14 @@ The simplest way to output the results of the compute spin calculation is to define some of the quantities as variables, and to use the thermo and thermo_style commands, for example: -compute out_mag all spin :pre +compute out_mag all spin :pre -variable mag_z equal c_out_mag\[3\] -variable mag_norm equal c_out_mag\[4\] -variable temp_mag equal c_out_mag\[6\] :pre +variable mag_z equal c_out_mag\[3\] +variable mag_norm equal c_out_mag\[4\] +variable temp_mag equal c_out_mag\[6\] :pre -thermo 10 -thermo_style custom step v_mag_z v_mag_norm v_temp_mag :pre +thermo 10 +thermo_style custom step v_mag_z v_mag_norm v_temp_mag :pre This series of commands evaluates the total magnetization along z, the norm of the total magnetization, and the magnetic temperature. Three variables are diff --git a/doc/src/create_bonds.txt b/doc/src/create_bonds.txt index abd1959e81..9c073b6c55 100644 --- a/doc/src/create_bonds.txt +++ b/doc/src/create_bonds.txt @@ -23,11 +23,14 @@ style = {many} or {single/bond} or {single/angle} or {single/dihedral} :ule,l btype = bond type of new bond batom1,batom2 = atom IDs for two atoms in bond {single/angle} args = atype aatom1 aatom2 aatom3 - atype = bond type of new angle + atype = angle type of new angle aatom1,aatom2,aatom3 = atom IDs for three atoms in angle {single/dihedral} args = dtype datom1 datom2 datom3 datom4 - dtype = bond type of new dihedral - datom1,datom2,datom3,datom4 = atom IDs for four atoms in dihedral :pre + dtype = dihedral type of new dihedral + datom1,datom2,datom3,datom4 = atom IDs for four atoms in dihedral + {single/improper} args = itype iatom1 iatom2 iatom3 iatom4 + itype = improper type of new improper + iatom1,iatom2,iatom3,iatom4 = atom IDs for four atoms in improper :pre zero or more keyword/value pairs may be appended :l keyword = {special} :l {special} value = {yes} or {no} :pre @@ -38,51 +41,54 @@ keyword = {special} :l create_bonds many all all 1 1.0 1.2 create_bonds many surf solvent 3 2.0 2.4 create_bonds single/bond 1 1 2 -create_bonds single/angle 5 52 98 107 special no :pre +create_bonds single/angle 5 52 98 107 special no +create_bonds single/dihedral 2 4 19 27 101 +create_bonds single/improper 3 23 26 31 57 :pre [Description:] Create bonds between pairs of atoms that meet a specified distance -criteria. Or create a single bond, angle, or dihedral between 2, 3, +criteria. Or create a single bond, angle, dihedral or improper between 2, 3, or 4 specified atoms. -The new bond (angle, dihedral) interactions will then be computed -during a simulation by the bond (angle, dihedral) potential defined by +The new bond (angle, dihedral, improper) interactions will then be computed +during a simulation by the bond (angle, dihedral, improper) potential defined by the "bond_style"_bond_style.html, "bond_coeff"_bond_coeff.html, "angle_style"_angle_style.html, "angle_coeff"_angle_coeff.html, "dihedral_style"_dihedral_style.html, -"dihedral_coeff"_dihedral_coeff.html commands. +"dihedral_coeff"_dihedral_coeff.html, "improper_style"_improper_style.html, +"improper_coeff"_improper_coeff.html commands. The {many} style is useful for adding bonds to a system, e.g. between nearest neighbors in a lattice of atoms, without having to enumerate all the bonds in the data file read by the "read_data"_read_data.html command. -The {single} styles are useful for adding bonds, angles, dihedrals +The {single} styles are useful for adding bonds, angles, dihedrals, impropers to a system incrementally, then continuing a simulation. -Note that this command does not auto-create any angle or dihedral +Note that this command does not auto-create any angle, dihedral or improper interactions when a bond is added. Nor does it auto-create any bonds -when an angle or dihedral is added. Or auto-create any angles when a -dihedral is added. Thus the flexibility of this command is limited. +when an angle, dihedral or improper is added. Or auto-create any angles when a +dihedral or improper is added. Thus the flexibility of this command is limited. It can be used several times to create different types of bond at different distances. But it cannot typically auto-create all the -bonds or angles or dihedral that would normally be defined in a data -file for a complex system of molecules. +bonds or angles or dihedrals or impropers that would normally be defined in a +data file for a complex system of molecules. -NOTE: If the system has no bonds (angles, dihedrals) to begin with, or -if more bonds per atom are being added than currently exist, then you +NOTE: If the system has no bonds (angles, dihedrals, impropers) to begin with, +or if more bonds per atom are being added than currently exist, then you must insure that the number of bond types and the maximum number of bonds per atom are set to large enough values. And similarly for -angles and dihedrals. Otherwise an error may occur when too many -bonds (angles, dihedrals) are added to an atom. If the +angles, dihedrals and impropers. Otherwise an error may occur when too many +bonds (angles, dihedrals, impropers) are added to an atom. If the "read_data"_read_data.html command is used to define the system, these parameters can be set via the "bond types" and "extra bond per atom" fields in the header section of the data file. If the "create_box"_create_box.html command is used to define the system, these 2 parameters can be set via its optional "bond/types" and -"extra/bond/per/atom" arguments. And similarly for angles and -dihedrals. See the doc pages for these 2 commands for details. +"extra/bond/per/atom" arguments. And similarly for angles, dihedrals and +impropers. See the doc pages for these 2 commands for details. :line @@ -137,18 +143,25 @@ ordered linearly within the angle; the central atom is {aatom2}. {Atype} must be a value between 1 and the number of angle types defined. -The {single/dihedral} style creates a single dihedral of type {btype} -between two atoms with IDs {batom1} and {batom2}. The ordering of the -atoms is the same as in the {Dihedrals} section of a data file read by -the "read_data"_read_data.html command. I.e. the 4 atoms are ordered -linearly within the dihedral. {Dtype} must be a value between 1 and +The {single/dihedral} style creates a single dihedral of type {dtype} +between four atoms with IDs {datom1}, {datom2}, {datom3}, and {datom4}. The +ordering of the atoms is the same as in the {Dihedrals} section of a data file +read by the "read_data"_read_data.html command. I.e. the 4 atoms are ordered +linearly within the dihedral. {dtype} must be a value between 1 and the number of dihedral types defined. +The {single/improper} style creates a single improper of type {itype} +between four atoms with IDs {iatom1}, {iatom2}, {iatom3}, and {iatom4}. The +ordering of the atoms is the same as in the {Impropers} section of a data file +read by the "read_data"_read_data.html command. I.e. the 4 atoms are ordered +linearly within the improper. {itype} must be a value between 1 and +the number of improper types defined. + :line The keyword {special} controls whether an internal list of special -bonds is created after one or more bonds, or a single angle or -dihedral is added to the system. +bonds is created after one or more bonds, or a single angle, dihedral or +improper is added to the system. The default value is {yes}. A value of {no} cannot be used with the {many} style. @@ -161,16 +174,16 @@ see the "special_bonds"_special_bonds.html command for details. Thus if you are adding a few bonds or a large list of angles all at the same time, by using this command repeatedly, it is more efficient to only trigger the internal list to be created once, after the last -bond (or angle, or dihedral) is added: +bond (or angle, or dihedral, or improper) is added: create_bonds single/bond 5 52 98 special no -create_bonds single/bond 5 73 74 special no +create_bonds single/bond 5 73 74 special no ... create_bonds single/bond 5 17 386 special no create_bonds single/bond 4 112 183 special yes :pre Note that you MUST insure the internal list is re-built after the last -bond (angle, dihedral) is added, before performing a simulation. +bond (angle, dihedral, improper) is added, before performing a simulation. Otherwise pairwise interactions will not be properly excluded or weighted. LAMMPS does NOT check that you have done this correctly. diff --git a/doc/src/dump.txt b/doc/src/dump.txt index ff1b2dc3a6..0d08fdf471 100644 --- a/doc/src/dump.txt +++ b/doc/src/dump.txt @@ -21,7 +21,8 @@ dump ID group-ID style N file args :pre ID = user-assigned name for the dump :ulb,l group-ID = ID of the group of atoms to be dumped :l -style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l +style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or +{cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or {local} or {local/gz} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l N = dump every this many timesteps :l file = name of file to write dump info to :l args = list of arguments for a particular style :l diff --git a/doc/src/dump_modify.txt b/doc/src/dump_modify.txt index 6be0d26463..63a3476d30 100644 --- a/doc/src/dump_modify.txt +++ b/doc/src/dump_modify.txt @@ -15,7 +15,7 @@ dump_modify dump-ID keyword values ... :pre dump-ID = ID of dump to modify :ulb,l one or more keyword/value pairs may be appended :l these keywords apply to various dump styles :l -keyword = {append} or {at} or {buffer} or {delay} or {element} or {every} or {fileper} or {first} or {flush} or {format} or {image} or {label} or {maxfiles} or {nfile} or {pad} or {precision} or {region} or {scale} or {sort} or {thresh} or {unwrap} :l +keyword = {append} or {at} or {buffer} or {delay} or {element} or {every} or {fileper} or {first} or {flush} or {format} or {image} or {label} or {maxfiles} or {nfile} or {pad} or {pbc} or {precision} or {region} or {refresh} or {scale} or {sfactor} or {sort} or {tfactor} or {thermo} or {thresh} or {time} or {units} or {unwrap} :l {append} arg = {yes} or {no} {at} arg = N N = index of frame written upon first dump @@ -30,10 +30,10 @@ keyword = {append} or {at} or {buffer} or {delay} or {element} or {every} or {fi {fileper} arg = Np Np = write one file for every this many processors {first} arg = {yes} or {no} + {flush} arg = {yes} or {no} {format} args = {line} string, {int} string, {float} string, M string, or {none} string = C-style format string M = integer from 1 to N, where N = # of per-atom quantities being output - {flush} arg = {yes} or {no} {image} arg = {yes} or {no} {label} arg = string string = character string (e.g. BONDS) to use in header of dump local file @@ -48,18 +48,20 @@ keyword = {append} or {at} or {buffer} or {delay} or {element} or {every} or {fi {refresh} arg = c_ID = compute ID that supports a refresh operation {scale} arg = {yes} or {no} {sfactor} arg = coordinate scaling factor (> 0.0) - {thermo} arg = {yes} or {no} - {tfactor} arg = time scaling factor (> 0.0) {sort} arg = {off} or {id} or N or -N off = no sorting of per-atom lines within a snapshot id = sort per-atom lines by atom ID N = sort per-atom lines in ascending order by the Nth column -N = sort per-atom lines in descending order by the Nth column + {tfactor} arg = time scaling factor (> 0.0) + {thermo} arg = {yes} or {no} + {time} arg = {yes} or {no} {thresh} args = attribute operator value attribute = same attributes (x,fy,etotal,sxx,etc) used by dump custom style operator = "<" or "<=" or ">" or ">=" or "==" or "!=" or "|^" value = numeric value to compare to, or LAST these 3 args can be replaced by the word "none" to turn off thresholding + {units} arg = {yes} or {no} {unwrap} arg = {yes} or {no} :pre these keywords apply only to the {image} and {movie} "styles"_dump_image.html :l keyword = {acolor} or {adiam} or {amap} or {backcolor} or {bcolor} or {bdiam} or {boxcolor} or {color} or {bitrate} or {framerate} :l @@ -620,6 +622,37 @@ threshold criterion is met. Otherwise it is not met. :line +The {time} keyword only applies to the dump {atom}, {custom}, and +{local} styles (and their COMPRESS package versions {atom/gz}, +{custom/gz} and {local/gz}). If set to {yes}, each frame will will +contain two extra lines before the "ITEM: TIMESTEP" entry: + +ITEM: TIME +\ :pre + +This will output the current elapsed simulation time in current +time units equivalent to the "thermo keyword"_thermo_style.html {time}. +This is to simplify post-processing of trajectories using a variable time +step, e.g. when using "fix dt/reset"_fix_dt_reset.html. +The default setting is {no}. + +:line + +The {units} keyword only applies to the dump {atom}, {custom}, and +{local} styles (and their COMPRESS package versions {atom/gz}, +{custom/gz} and {local/gz}). If set to {yes}, each individual dump +file will contain two extra lines at the very beginning with: + +ITEM: UNITS +\ :pre + +This will output the current selected "units"_units.html style +to the dump file and thus allows visualization and post-processing +tools to determine the choice of units of the data in the dump file. +The default setting is {no}. + +:line + The {unwrap} keyword only applies to the dump {dcd} and {xtc} styles. If set to {yes}, coordinates will be written "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed through @@ -924,6 +957,7 @@ scale = yes sort = off for dump styles {atom}, {custom}, {cfg}, and {local} sort = id for dump styles {dcd}, {xtc}, and {xyz} thresh = none +units = no unwrap = no :ul acolor = * red/green/blue/yellow/aqua/cyan diff --git a/doc/src/dynamical_matrix.txt b/doc/src/dynamical_matrix.txt index 6291bdec52..2d9b256694 100644 --- a/doc/src/dynamical_matrix.txt +++ b/doc/src/dynamical_matrix.txt @@ -30,14 +30,29 @@ dynamical_matrix 5 eskm 0.00000001 file dynamical.dat binary yes :pre [Description:] -Calculate the dynamical matrix of the selected group. +Calculate the dynamical matrix by finite difference of the selected group, + +:c,image(JPG/dynamical_matrix_dynmat.jpg) + +where D is the dynamical matrix and Phi is the force constant matrix defined by + +:c,image(JPG/dynamical_matrix_force_constant.jpg). + +The output for the dynamical matrix is printed three elements at a time. The +three elements are the three beta elements for a respective i/alpha/j combination. +Each line is printed in order of j increasing first, alpha second, and i last. + +If the style eskm is selected, the dynamical matrix will be in units of inverse squared +femtoseconds. These units will then conveniently leave frequencies in THz, where +frequencies, represented as omega, can be calculated from + +:c, image(Eqs/dynamical_matrix_phonons.jpg) [Restrictions:] -The command collects the entire dynamical matrix a single MPI rank, -so the memory requirements can be very significant for large systems. - -This command assumes a periodic system. +The command collects an array of nine times the number of atoms in a group +on every single MPI rank, so the memory requirements can be very significant +for large systems. This command is part of the USER-PHONON package. It is only enabled if LAMMPS was built with that package. See the "Build @@ -52,4 +67,4 @@ provided by Pair's single_hessian. [Default:] -The default settings are file = "dynmat.dyn", binary = no +The default settings are file = "dynmat.dyn", binary = no diff --git a/doc/src/fix.txt b/doc/src/fix.txt index 1dd9cc9f1b..fd281bce83 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -188,7 +188,7 @@ accelerated styles exist. "box/relax"_fix_box_relax.html - relax box size during energy minimization "client/md"_fix_client_md.html - MD client for client/server simulations "cmap"_fix_cmap.html - enables CMAP cross-terms of the CHARMM force field -"colvars"_fix_colvars.html - interface to the collective variables “Colvars” library +"colvars"_fix_colvars.html - interface to the collective variables "Colvars" library "controller"_fix_controller.html - apply control loop feedback mechanism "deform"_fix_deform.html - change the simulation box size/shape "deposit"_fix_deposit.html - add new atoms above a surface @@ -221,7 +221,7 @@ accelerated styles exist. "heat"_fix_heat.html - add/subtract momentum-conserving heat "hyper/global"_fix_hyper_global.html - global hyperdynamics "hyper/local"_fix_hyper_local.html - local hyperdynamics -"imd"_fix_imd.html - implements the “Interactive MD” (IMD) protocol +"imd"_fix_imd.html - implements the "Interactive MD" (IMD) protocol "indent"_fix_indent.html - impose force due to an indenter "ipi"_fix_ipi.html - enable LAMMPS to run as a client for i-PI path-integral simulations "langevin"_fix_langevin.html - Langevin temperature control @@ -327,7 +327,7 @@ accelerated styles exist. "rigid/nvt/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration "rigid/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVE integration "rx"_fix_rx.html - -"saed/vtk"_fix_saed_vtk.html - +"saed/vtk"_fix_saed_vtk.html - "setforce"_fix_setforce.html - set the force on each atom "shake"_fix_shake.html - SHAKE constraints on bonds and/or angles "shardlow"_fix_shardlow.html - integration of DPD equations of motion using the Shardlow splitting diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index 3f428e2103..fb8ed95afb 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -186,20 +186,25 @@ reacting atoms. Some atoms in the pre-reacted template that are not reacting may have missing topology with respect to the simulation. For example, the -pre-reacted template may contain an atom that would connect to the -rest of a long polymer chain. These are referred to as edge atoms, and -are also specified in the map file. When the pre-reaction template -contains edge atoms, not all atoms, bonds, charges, etc. specified in -the reaction templates will be updated. Specifically, topology that -involves only atoms that are 'too near' to template edges will not be -updated. The definition of 'too near the edge' depends on which -interactions are defined in the simulation. If the simulation has -defined dihedrals, atoms within two bonds of edge atoms are considered -'too near the edge.' If the simulation defines angles, but not -dihedrals, atoms within one bond of edge atoms are considered 'too -near the edge.' If just bonds are defined, only edge atoms are +pre-reacted template may contain an atom that, in the simulation, is +currently connected to the rest of a long polymer chain. These are +referred to as edge atoms, and are also specified in the map file. All +pre-reaction template atoms should be linked to a bonding atom, via at +least one path that does not involve edge atoms. When the pre-reaction +template contains edge atoms, not all atoms, bonds, charges, etc. +specified in the reaction templates will be updated. Specifically, +topology that involves only atoms that are 'too near' to template +edges will not be updated. The definition of 'too near the edge' +depends on which interactions are defined in the simulation. If the +simulation has defined dihedrals, atoms within two bonds of edge atoms +are considered 'too near the edge.' If the simulation defines angles, +but not dihedrals, atoms within one bond of edge atoms are considered +'too near the edge.' If just bonds are defined, only edge atoms are considered 'too near the edge.' +NOTE: Small molecules, i.e. ones that have all their atoms contained +within the reaction templates, never have edge atoms. + Note that some care must be taken when a building a molecule template for a given simulation. All atom types in the pre-reacted template must be the same as those of a potential reaction site in the @@ -261,7 +266,7 @@ either 'none' or 'charges.' Further details are provided in the discussion of the 'update_edges' keyword. The fourth optional section begins with the keyword 'Constraints' and lists additional criteria that must be satisfied in order for the reaction to occur. Currently, -there is one type of constraint available, as discussed below. +there are two types of constraints available, as discussed below. A sample map file is given below: @@ -295,14 +300,23 @@ Equivalences :pre :line Any number of additional constraints may be specified in the -Constraints section of the map file. Currently there is one type of -additional constraint, of type 'distance', whose syntax is as follows: +Constraints section of the map file. The constraint of type 'distance' +has syntax as follows: distance {ID1} {ID2} {rmin} {rmax} :pre where 'distance' is the required keyword, {ID1} and {ID2} are pre-reaction atom IDs, and these two atoms must be separated by a -distance between {rmin} and {rmax} for the reaction to occur. This +distance between {rmin} and {rmax} for the reaction to occur. + +The constraint of type 'angle' has the following syntax: + +angle {ID1} {ID2} {ID3} {amin} {amax} :pre + +where 'angle' is the required keyword, {ID1}, {ID2} and {ID3} are +pre-reaction atom IDs, and these three atoms must form an angle +between {amin} and {amax} for the reaction to occur (where {ID2} is +the central atom). Angles must be specified in degrees. This constraint can be used to enforce a certain orientation between reacting molecules. @@ -392,10 +406,11 @@ local command. [Restart, fix_modify, output, run start/stop, minimize info:] -No information about this fix is written to "binary restart -files"_restart.html, aside from internally-created per-atom -properties. None of the "fix_modify"_fix_modify.html options are -relevant to this fix. +Cumulative reaction counts for each reaction are written to "binary +restart files"_restart.html. These values are associated with the +reaction name (react-ID). Additionally, internally-created per-atom +properties are stored to allow for smooth restarts. None of the +"fix_modify"_fix_modify.html options are relevant to this fix. This fix computes one statistic for each {react} argument that it stores in a global vector, of length 'number of react arguments', that @@ -406,8 +421,8 @@ These is 1 quantity for each react argument: (1) cumulative # of reactions occurred :ul -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 +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. When fix bond/react is 'unfixed,' all internally-created groups are @@ -417,18 +432,20 @@ all other fixes that use any group created by fix bond/react. [Restrictions:] This fix is part of the USER-MISC package. It is only enabled if -LAMMPS was built with that package. See the "Build -package"_Build_package.html doc page for more info. +LAMMPS was built with that package. See the +"Build package"_Build_package.html doc page for more info. [Related commands:] -"fix bond/create"_fix_bond_create.html, "fix -bond/break"_fix_bond_break.html, "fix bond/swap"_fix_bond_swap.html, +"fix bond/create"_fix_bond_create.html, +"fix bond/break"_fix_bond_break.html, +"fix bond/swap"_fix_bond_swap.html, "dump local"_dump.html, "special_bonds"_special_bonds.html [Default:] -The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60, update_edges = none +The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60, +update_edges = none :line diff --git a/doc/src/fix_controller.txt b/doc/src/fix_controller.txt index 7458f1bcfa..45eb646b8e 100644 --- a/doc/src/fix_controller.txt +++ b/doc/src/fix_controller.txt @@ -31,7 +31,6 @@ cvar = name of control variable :l [Examples:] - fix 1 all controller 100 1.0 0.5 0.0 0.0 c_thermo_temp 1.5 tcontrol fix 1 all controller 100 0.2 0.5 0 100.0 v_pxxwall 1.01325 xwall fix 1 all controller 10000 0.2 0.5 0 2000 v_avpe -3.785 tcontrol :pre diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt index 861eed4a6f..49ecf96ff6 100644 --- a/doc/src/fix_langevin.txt +++ b/doc/src/fix_langevin.txt @@ -24,9 +24,10 @@ keyword = {angmom} or {omega} or {scale} or {tally} or {zero} :l {angmom} value = {no} or factor {no} = do not thermostat rotational degrees of freedom via the angular momentum factor = do thermostat rotational degrees of freedom via the angular momentum and apply numeric scale factor as discussed below - {gjf} value = {no} or {yes} + {gjf} value = {no} or {vfull} or {vhalf} {no} = use standard formulation - {yes} = use Gronbech-Jensen/Farago formulation + {vfull} = use Gronbech-Jensen/Farago formulation + {vhalf} = use 2GJ formulation {omega} value = {no} or {yes} {no} = do not thermostat rotational degrees of freedom via the angular velocity {yes} = do thermostat rotational degrees of freedom via the angular velocity @@ -217,6 +218,10 @@ the particles. As described below, this energy can then be printed out or added to the potential energy of the system to monitor energy conservation. +NOTE: this accumulated energy does NOT include kinetic energy removed +by the {zero} flag. LAMMPS will print a warning when both options are +active. + The keyword {zero} can be used to eliminate drift due to the thermostat. Because the random forces on different atoms are independent, they do not sum exactly to zero. As a result, this fix @@ -232,29 +237,24 @@ The keyword {gjf} can be used to run the "Gronbech-Jensen/Farago described in the papers cited below, the purpose of this method is to enable longer timesteps to be used (up to the numerical stability limit of the integrator), while still producing the correct Boltzmann -distribution of atom positions. It is implemented within LAMMPS, by -changing how the random force is applied so that it is composed of -the average of two random forces representing half-contributions from -the previous and current time intervals. +distribution of atom positions. -In common with all methods based on Verlet integration, the -discretized velocities generated by this method in conjunction with -velocity-Verlet time integration are not exactly conjugate to the -positions. As a result the temperature (computed from the discretized -velocities) will be systematically lower than the target temperature, -by a small amount which grows with the timestep. Nonetheless, the -distribution of atom positions will still be consistent with the +The current implementation provides the user with the option to output +the velocity in one of two forms: {vfull} or {vhalf}, which replaces +the outdated option {yes}. The {gjf} option {vfull} outputs the on-site +velocity given in "Gronbech-Jensen/Farago"_#Gronbech-Jensen; this velocity +is shown to be systematically lower than the target temperature by a small +amount, which grows quadratically with the timestep. +The {gjf} option {vhalf} outputs the 2GJ half-step velocity given in +"Gronbech Jensen/Gronbech-Jensen"_#2Gronbech-Jensen; for linear systems, +this velocity is shown to not have any statistical errors for any stable time step. +An overview of statistically correct Boltzmann and Maxwell-Boltzmann +sampling of true on-site and true half-step velocities is given in +"Gronbech-Jensen"_#1Gronbech-Jensen. +Regardless of the choice of output velocity, the sampling of the configurational +distribution of atom positions is the same, and linearly consistent with the target temperature. -As an example of using the {gjf} keyword, for molecules containing C-H -bonds, configurational properties generated with dt = 2.5 fs and tdamp -= 100 fs are indistinguishable from dt = 0.5 fs. Because the velocity -distribution systematically decreases with increasing timestep, the -method should not be used to generate properties that depend on the -velocity distribution, such as the velocity auto-correlation function -(VACF). In this example, the velocity distribution at dt = 2.5fs -generates an average temperature of 220 K, instead of 300 K. - :line Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are @@ -312,7 +312,10 @@ This fix can ramp its target temperature over multiple runs, using the This fix is not invoked during "energy minimization"_minimize.html. -[Restrictions:] none +[Restrictions:] + +For {gjf} do not choose damp=dt/2. {gjf} is not compatible +with run_style respa. [Related commands:] @@ -335,5 +338,10 @@ types, tally = no, zero = no, gjf = no. :link(Gronbech-Jensen) [(Gronbech-Jensen)] Gronbech-Jensen and Farago, Mol Phys, 111, 983 -(2013); Gronbech-Jensen, Hayre, and Farago, Comp Phys Comm, -185, 524 (2014) +(2013); Gronbech-Jensen, Hayre, and Farago, Comp Phys Comm, 185, 524 (2014) + +:link(2Gronbech-Jensen) +[(Gronbech-Jensen)] Gronbech Jensen and Gronbech-Jensen, Mol Phys, 117, 2511 (2019) + +:link(1Gronbech-Jensen) +[(Gronbech-Jensen)] Gronbech-Jensen, Mol Phys (2019); https://doi.org/10.1080/00268976.2019.1662506 diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt index e4065adad5..e5dccc5e57 100644 --- a/doc/src/fix_langevin_spin.txt +++ b/doc/src/fix_langevin_spin.txt @@ -50,7 +50,7 @@ As an example: fix 1 all precession/spin zeeman 0.01 0.0 0.0 1.0 fix 2 all langevin/spin 300.0 0.01 21 -fix 3 all nve/spin lattice yes :pre +fix 3 all nve/spin lattice moving :pre is correct, but defining a force/spin command after the langevin/spin command would give an error message. diff --git a/doc/src/fix_neb_spin.txt b/doc/src/fix_neb_spin.txt index 89420f451c..e62d297270 100644 --- a/doc/src/fix_neb_spin.txt +++ b/doc/src/fix_neb_spin.txt @@ -24,18 +24,18 @@ fix 1 active neb/spin 1.0 [Description:] Add nudging forces to spins in the group for a multi-replica -simulation run via the "neb/spin"_neb_spin.html command to perform a -geodesic nudged elastic band (GNEB) calculation for finding the +simulation run via the "neb/spin"_neb_spin.html command to perform a +geodesic nudged elastic band (GNEB) calculation for finding the transition state. -Hi-level explanations of GNEB are given with the -"neb/spin"_neb_spin.html command and on the -"Howto replica"_Howto_replica.html doc page. -The fix neb/spin command must be used with the "neb/spin" command and -defines how inter-replica nudging forces are computed. A GNEB -calculation is divided in two stages. In the first stage n replicas -are relaxed toward a MEP until convergence. In the second stage, the -climbing image scheme is enabled, so that the replica having the highest -energy relaxes toward the saddle point (i.e. the point of highest energy +Hi-level explanations of GNEB are given with the +"neb/spin"_neb_spin.html command and on the +"Howto replica"_Howto_replica.html doc page. +The fix neb/spin command must be used with the "neb/spin" command and +defines how inter-replica nudging forces are computed. A GNEB +calculation is divided in two stages. In the first stage n replicas +are relaxed toward a MEP until convergence. In the second stage, the +climbing image scheme is enabled, so that the replica having the highest +energy relaxes toward the saddle point (i.e. the point of highest energy along the MEP), and a second relaxation is performed. The nudging forces are calculated as explained in diff --git a/doc/src/fix_nve_spin.txt b/doc/src/fix_nve_spin.txt index 7b382bb6ad..8e6284639b 100644 --- a/doc/src/fix_nve_spin.txt +++ b/doc/src/fix_nve_spin.txt @@ -15,22 +15,26 @@ fix ID group-ID nve/spin keyword values :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l nve/spin = style name of this fix command :l keyword = {lattice} :l - {lattice} value = {no} or {yes} :pre + {lattice} value = {moving} or {frozen} + moving = integrate both spin and atomic degress of freedom + frozen = integrate spins on a fixed lattice :pre :ule [Examples:] -fix 3 all nve/spin lattice yes -fix 1 all nve/spin lattice no :pre +fix 3 all nve/spin lattice moving +fix 1 all nve/spin lattice frozen :pre [Description:] Perform a symplectic integration for the spin or spin-lattice system. The {lattice} keyword defines if the spins are integrated on a lattice -of fixed atoms (lattice = no), or if atoms are moving (lattice = yes). - -By default (lattice = yes), a spin-lattice integration is performed. +of fixed atoms (lattice = frozen), or if atoms are moving +(lattice = moving). +The first case corresponds to a spin dynamics calculation, and +the second to a spin-lattice calculation. +By default a spin-lattice integration is performed (lattice = moving). The {nve/spin} fix applies a Suzuki-Trotter decomposition to the equations of motion of the spin lattice system, following the scheme: @@ -63,7 +67,9 @@ instead of "array" is also valid. "atom_style spin"_atom_style.html, "fix nve"_fix_nve.html -[Default:] none +[Default:] + +The option default is lattice = moving. :line diff --git a/doc/src/fix_precession_spin.txt b/doc/src/fix_precession_spin.txt index 708b2bd7aa..040a3086d3 100644 --- a/doc/src/fix_precession_spin.txt +++ b/doc/src/fix_precession_spin.txt @@ -21,7 +21,7 @@ style = {zeeman} or {anisotropy} or {cubic} :l {anisotropy} args = K x y z K = intensity of the magnetic anisotropy (in eV) x y z = vector direction of the anisotropy :pre - {cubic} args = K1 K2c n1x n1y n1x n2x n2y n2z n3x n3y n3z + {cubic} args = K1 K2c n1x n1y n1x n2x n2y n2z n3x n3y n3z K1 and K2c = intensity of the magnetic anisotropy (in eV) n1x to n3z = three direction vectors of the cubic anisotropy :pre :ule @@ -55,24 +55,24 @@ with n defining the direction of the anisotropy, and K (in eV) its intensity. If K>0, an easy axis is defined, and if K<0, an easy plane is defined. Style {cubic} is used to simulate a cubic anisotropy, with three -possible easy axis for the magnetic spins in the defined group: +possible easy axis for the magnetic spins in the defined group: :c,image(Eqs/fix_spin_cubic.jpg) -with K1 and K2c (in eV) the intensity coefficients and +with K1 and K2c (in eV) the intensity coefficients and n1, n2 and n3 defining the three anisotropic directions -defined by the command (from n1x to n3z). -For n1 = (100), n2 = (010), and n3 = (001), K1 < 0 defines an +defined by the command (from n1x to n3z). +For n1 = (100), n2 = (010), and n3 = (001), K1 < 0 defines an iron type anisotropy (easy axis along the (001)-type cube edges), and K1 > 0 defines a nickel type anisotropy (easy axis -along the (111)-type cube diagonals). +along the (111)-type cube diagonals). K2^c > 0 also defines easy axis along the (111)-type cube diagonals. See chapter 2 of "(Skomski)"_#Skomski1 for more details on cubic anisotropies. In all cases, the choice of (x y z) only imposes the vector -directions for the forces. Only the direction of the vector is +directions for the forces. Only the direction of the vector is important; it's length is ignored (the entered vectors are normalized). diff --git a/doc/src/fix_rigid_meso.txt b/doc/src/fix_rigid_meso.txt index 0819fdb2fb..a9c68b2c04 100644 --- a/doc/src/fix_rigid_meso.txt +++ b/doc/src/fix_rigid_meso.txt @@ -44,7 +44,7 @@ fix 1 rods rigid/meso molecule fix 1 spheres rigid/meso single force 1 off off on fix 1 particles rigid/meso molecule force 1*5 off off off force 6*10 off off on fix 2 spheres rigid/meso group 3 sphere1 sphere2 sphere3 torque * off off off :pre - + [Description:] Treat one or more sets of mesoscopic SPH/SDPD particles as independent diff --git a/doc/src/fix_setforce.txt b/doc/src/fix_setforce.txt index 63713d87c2..5ee289ec5c 100644 --- a/doc/src/fix_setforce.txt +++ b/doc/src/fix_setforce.txt @@ -67,15 +67,15 @@ to it. :line -Style {spin} suffix sets the components of the magnetic precession -vectors instead of the mechanical forces. This also erases all -previously computed magnetic precession vectors on the atom, though +Style {spin} suffix sets the components of the magnetic precession +vectors instead of the mechanical forces. This also erases all +previously computed magnetic precession vectors on the atom, though additional magnetic fixes could add new forces. -This command can be used to freeze the magnetic moment of certain -atoms in the simulation by zeroing their precession vector. +This command can be used to freeze the magnetic moment of certain +atoms in the simulation by zeroing their precession vector. -All options defined above remain valid, they just apply to the magnetic +All options defined above remain valid, they just apply to the magnetic precession vectors instead of the forces. :line @@ -132,7 +132,7 @@ forces to any value besides zero when performing a minimization. Use the "fix addforce"_fix_addforce.html command if you want to apply a non-zero force to atoms during a minimization. -[Restrictions:] +[Restrictions:] The fix {setforce/spin} only makes sense when LAMMPS was built with the SPIN package. diff --git a/doc/src/improper_fourier.txt b/doc/src/improper_fourier.txt index 1b569b3894..f4f59ed636 100644 --- a/doc/src/improper_fourier.txt +++ b/doc/src/improper_fourier.txt @@ -16,7 +16,7 @@ improper_style fourier :pre [Examples:] improper_style fourier -improper_coeff 1 100.0 180.0 :pre +improper_coeff 1 100.0 0.0 1.0 0.5 1 :pre [Description:] @@ -24,12 +24,12 @@ The {fourier} improper style uses the following potential: :c,image(Eqs/improper_fourier.jpg) -where K is the force constant and omega is the angle between the IL -axis and the IJK plane: +where K is the force constant, C0, C1, C2 are dimensionless coefficients, +and omega is the angle between the IL axis and the IJK plane: :c,image(JPG/umbrella.jpg) -If all parameter (see bellow) is not zero, the all the three possible angles will taken in account. +If all parameter (see below) is not zero, the all the three possible angles will taken in account. The following coefficients must be defined for each improper type via the "improper_coeff"_improper_coeff.html command as in the example @@ -38,10 +38,10 @@ above, or in the data file or restart files read by the commands: K (energy) -C0 (real) -C1 (real) -C2 (real) -all (integer >= 0) :ul +C0 (unitless) +C1 (unitless) +C2 (unitless) +all (0 or 1, optional) :ul :line diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt index 98ec1e64e6..04b845acaa 100644 --- a/doc/src/kspace_style.txt +++ b/doc/src/kspace_style.txt @@ -116,10 +116,10 @@ used without a cutoff, i.e. they become full long-range potentials. The {ewald/disp} style can also be used with point-dipoles, see "(Toukmaji)"_#Toukmaji. -The {ewald/dipole} style adds long-range standard Ewald summations +The {ewald/dipole} style adds long-range standard Ewald summations for dipole-dipole interactions, see "(Toukmaji)"_#Toukmaji. -The {ewald/dipole/spin} style adds long-range standard Ewald +The {ewald/dipole/spin} style adds long-range standard Ewald summations for magnetic dipole-dipole interactions between magnetic spins. @@ -142,11 +142,11 @@ The optional {smallq} argument defines the cutoff for the absolute charge value which determines whether a particle is considered charged or not. Its default value is 1.0e-5. -The {pppm/dipole} style invokes a particle-particle particle-mesh solver +The {pppm/dipole} style invokes a particle-particle particle-mesh solver for dipole-dipole interactions, following the method of "(Cerda)"_#Cerda2008. -The {pppm/dipole/spin} style invokes a particle-particle particle-mesh solver -for magnetic dipole-dipole interactions between magnetic spins. +The {pppm/dipole/spin} style invokes a particle-particle particle-mesh solver +for magnetic dipole-dipole interactions between magnetic spins. The {pppm/tip4p} style is identical to the {pppm} style except that it adds a charge at the massless 4th site in each TIP4P water molecule. diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 3c856bde19..eec7520fdc 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -217,6 +217,7 @@ temper_npt.html thermo.html thermo_modify.html thermo_style.html +third_order.html timer.html timestep.html uncompute.html @@ -611,6 +612,7 @@ pair_lj_smooth.html pair_lj_smooth_linear.html pair_fep_soft.html pair_lj_switch3_coulgauss.html +pair_local_density.html pair_lubricate.html pair_lubricateU.html pair_mdf.html diff --git a/doc/src/min_modify.txt b/doc/src/min_modify.txt index f0edba53b6..fa15f18a50 100644 --- a/doc/src/min_modify.txt +++ b/doc/src/min_modify.txt @@ -13,18 +13,22 @@ min_modify command :h3 min_modify keyword values ... :pre one or more keyword/value pairs may be listed :ulb,l -keyword = {dmax} or {line} or {alpha_damp} or {discrete_factor} +keyword = {dmax} or {line} or {norm} 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 + {line} value = {backtrack} or {quadratic} or {forcezero} or {spin_cubic} or {spin_none} + backtrack,quadratic,forcezero,spin_cubic,spin_none = style of linesearch to use + {norm} value = {two} or {max} + two = Euclidean two-norm (length of 3N vector) + inf = max force component across all 3-vectors + max = max force norm across all 3-vectors {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 -these keywords apply only to the "min_style"_min_style.html {adaptglok} :ulb,l +these keywords apply only to the "min_style"_min_style.html {fire2} :ulb,l keyword = {integrator} or {tmax} or {tmin} or {delaystep} or {dtgrow} or {dtshrink} or {alpha0} or {alphashrink} or {halfstepback} or {initialdelay} or {vdfmax} {integrator} arg = {eulerimplicit} or {eulerexplicit} or {verlet} @@ -95,13 +99,56 @@ 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. -The style {adaptglok} has several parameters that can be tuned in order +The choice of a norm can be modified for the min styles {cg}, {sd}, +{quickmin}, {fire}, {spin}, {spin/cg} and {spin/lbfgs} using +the {norm} keyword. +The default {two} norm computes the 2-norm (Euclidean length) of the +global force vector: + +:c,image(Eqs/norm_two.jpg) + +The {max} norm computes the length of the 3-vector force +for each atom (2-norm), and takes the maximum value of those across +all atoms + +:c,image(Eqs/norm_max.jpg) + +The {inf} norm takes the maximum component across the forces of +all atoms in the system: + +:c,image(Eqs/norm_inf.jpg) + +For the min styles {spin}, {spin/cg} and {spin/lbfgs}, the force +norm is replaced by the spin-torque norm. + +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. + +The choice of a line search algorithm for the {spin/cg} and +{spin/lbfgs} styles can be specified via the {line} keyword. +The {spin_cubic} and {spin_none} only make sense when one of those +two minimization styles is declared. +The {spin_cubic} performs the line search based on a cubic interpolation +of the energy along the search direction. The {spin_none} keyword +deactivates the line search procedure. +The {spin_none} is a default value for {line} keyword for both {spin/lbfgs} +and {spin/cg}. Convergence of {spin/lbfgs} can be more robust if +{spin_cubic} line search is used. + +The style {fire2} has several parameters that can be tuned in order to optimize the relaxation: {integrator}, {tmax}, {tmin}, {delaystep}, {dtgrow}, {dtshrink}, {alpha0}, and {alphashrink}. Different Newton {integrator} can be selected: explicit Euler, semi-implicit Euler (= symplectic Euler) and velocity Verlet. The parameters {tmax} and {tmin} define the maximum and minimum timestep -allowed during an adaptglok minimization. Those are not in time unit, but are +allowed during an fire2 minimization. Those are not in time unit, but are multiplication factor applied to the "timestep"_timestep.html. Thus {tmax} = 10.0 in metal "units"_units.html means that the maximum value the timestep can be reached during the relaxation is 10 fs (with the default @@ -117,18 +164,11 @@ happen when the system comes to be stuck in a local basin of the phase space. For debugging purposes, it is possible to switch off the inertia correction ({halfstepback} = {no}) and the initial delay ({initialdelay} = {no}). -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:] -[Restrictions:] none +For magnetic GNEB calculations, only {spin_none} value for {line} keyword can be used +when styles {spin/cg} and {spin/lbfgs} are employed. +See "neb/spin"_neb_spin.html for more explanation. [Related commands:] @@ -136,7 +176,13 @@ Default values are {alpha_damp} = 1.0 and {discrete_factor} = 10.0. [Default:] -The option defaults are dmax = 0.1, line = quadratic, +The option defaults are dmax = 0.1, line = quadratic and norm = two. + +For the {spin}, {spin/cg} and {spin/lbfgs} styles, the +option defaults are alpha_damp = 1.0, discrete_factor = 10.0, +line = spin_none, and norm = euclidean. + +For the {fire2} style, the option defaults are integrator = eulerimplicit, tmax = 10.0, tmin = 0.02, delaystep = 20, dtgrow = 1.1, dtshrink = 0.5, alpha0 = 0.25, alphashrink = 0.99, -vdfmax = 2000, halfstepback = yes and initialdelay = yes. +vdfmax = 2000, halfstepback = yes and initialdelay = yes. \ No newline at end of file diff --git a/doc/src/min_spin.txt b/doc/src/min_spin.txt index 890e324aca..89766891c8 100644 --- a/doc/src/min_spin.txt +++ b/doc/src/min_spin.txt @@ -6,14 +6,19 @@ :line min_style spin command :h3 +min_style spin/cg command :h3 +min_style spin/lbfgs command :h3 [Syntax:] -min_style spin :pre +min_style spin +min_style spin/cg +min_style spin/lbfgs :pre [Examples:] -min_style spin :pre +min_style spin/lbfgs +min_modify line spin_cubic discrete_factor 10.0 :pre [Description:] @@ -27,28 +32,57 @@ timestep, according to: 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. +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 +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). +spin/neb calculation is performed). -Kappa defines a discretization factor {discrete_factor} for the -definition of this timestep. +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 +Style {spin/cg} defines an orthogonal spin optimization +(OSO) combined to a conjugate gradient (CG) algorithm. +The "min_modify"_min_modify.html command can be used to +couple the {spin/cg} to a line search procedure, and to modify the +discretization factor {discrete_factor}. +By default, style {spin/cg} does not employ the line search procedure +and uses the adaptive time-step technique in the same way as style {spin}. + +Style {spin/lbfgs} defines an orthogonal spin optimization +(OSO) combined to a limited-memory Broyden-Fletcher-Goldfarb-Shanno +(L-BFGS) algorithm. +By default, style {spin/lbfgs} does not employ line search procedure. +If the line search procedure is not used then the discrete factor defines +the maximum root mean squared rotation angle of spins by equation {pi/(5*Kappa)}. +The default value for Kappa is 10. +The {spin_cubic} line search can improve the convergence of the +{spin/lbfgs} algorithm. + +The "min_modify"_min_modify.html command can be used to +activate the line search procedure, and to modify the +discretization factor {discrete_factor}. + +For more information about styles {spin/cg} and {spin/lbfgs}, +see their implementation reported in "(Ivanov)"_#Ivanov1. + +NOTE: All the {spin} styles replace the force tolerance by a torque tolerance. See "minimize"_minimize.html for more explanation. +NOTE: The {spin/cg} and {spin/lbfgs} styles can be used +for magnetic NEB calculations only if the line search procedure +is deactivated. See "neb/spin"_neb_spin.html for more explanation. + [Restrictions:] This minimization procedure is only applied to spin degrees of @@ -56,10 +90,15 @@ freedom for a frozen lattice configuration. [Related commands:] -"min_style"_min_style.html, "minimize"_minimize.html, +"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. +The option defaults are {alpha_damp} = 1.0, {discrete_factor} = +10.0, {line} = spin_none and {norm} = euclidean. + +:line + +:link(Ivanov1) +[(Ivanov)] Ivanov, Uzdin, Jonsson. arXiv preprint arXiv:1904.02669, (2019). diff --git a/doc/src/min_style.txt b/doc/src/min_style.txt index 476db1f80a..b03c4b1efb 100644 --- a/doc/src/min_style.txt +++ b/doc/src/min_style.txt @@ -11,7 +11,7 @@ min_style command :h3 min_style style :pre -style = {cg} or {cg/kk} or {hftn} or {sd} or {quickmin} or {fire} or {spin} or {adaptglok} :ul +style = {cg} or {hftn} or {sd} or {quickmin} or {fire} or {fire2} or {spin} or {spin/cg} or {spin/lbfgs} :ul [Examples:] @@ -62,26 +62,40 @@ 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 {adaptglok} is a re-implementation of the style {fire} with +Style {fire2} is a re-implementation of the style {fire} with additional optimizations of the method described in "(Bitzek)"_#Bitzek, including different time integration schemes. -Style {spin} is a damped spin dynamics with an adaptive +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}, {fire} and {adaptglok} styles are useful in the context of +Style {spin/cg} uses an orthogonal spin optimization (OSO) +combined to a conjugate gradient (CG) approach to minimize spin +configurations. + +Style {spin/lbfgs} uses an orthogonal spin optimization (OSO) +combined to a limited-memory Broyden-Fletcher-Goldfarb-Shanno +(LBFGS) approach to minimize spin configurations. + +See the "min/spin"_min_spin.html doc page for more information +about the {spin}, {spin/cg} and {spin/lbfgs} styles. + +Either the {quickmin}, {fire} and {fire2} styles are useful in the context of nudged elastic band (NEB) calculations via the "neb"_neb.html command. +Either the {spin}, {spin/cg} and {spin/lbfgs} styles are useful +in the context of magnetic geodesic nudged elastic band (GNEB) calculations +via the "neb/spin"_neb_spin.html command. + NOTE: The damped dynamic minimizers use whatever timestep you have defined via the "timestep"_timestep.html command. Often they will converge more quickly if you use a timestep about 10x larger than you would normally use for dynamics simulations. -NOTE: The {quickmin}, {fire}, {hftn}, and {cg/kk} styles do not yet -support the use of the "fix box/relax"_fix_box_relax.html command or -minimizations involving the electron radius in "eFF"_pair_eff.html -models. +NOTE: The {quickmin}, {fire}, {hftn}, and {cg/kk} styles do not yet +support the use of the "fix box/relax"_fix_box_relax.html command or +minimizations involving the electron radius in "eFF"_pair_eff.html +models. :line diff --git a/doc/src/minimize.txt b/doc/src/minimize.txt index ad3dad75c6..44ce4d3edf 100644 --- a/doc/src/minimize.txt +++ b/doc/src/minimize.txt @@ -104,12 +104,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 +NOTE: the "minimization style"_min_style.html {spin}, +{spin/cg}, and {spin/lbfgs} replace 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. +The minimization procedure stops if the 2-norm (length) of the torque vector on atom +(defined as the cross product between the +atomic spin and its precession vectors omega) is less than {ftol}, +or if any of the other criteria are met. Torque have the same units as the energy. 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 diff --git a/doc/src/neb_spin.txt b/doc/src/neb_spin.txt index 7dbd924cd2..217606289f 100644 --- a/doc/src/neb_spin.txt +++ b/doc/src/neb_spin.txt @@ -45,7 +45,7 @@ and last are the end points of the transition path. GNEB is a method for finding both the spin configurations and height of the energy barrier associated with a transition state, e.g. spins to perform a collective rotation from one energy basin to -another. +another. The implementation in LAMMPS follows the discussion in the following paper: "(BessarabA)"_#BessarabA. @@ -59,35 +59,35 @@ performance speed-up you would see with one or more physical processors per replica. See the "Howto replica"_Howto_replica.html doc page for further discussion. -NOTE: As explained below, a GNEB calculation performs a damped dynamics -minimization across all the replicas. The "spin"_min_spin.html -style minimizer has to be defined in your input script. +NOTE: As explained below, a GNEB calculation performs a +minimization across all the replicas. One of the "spin"_min_spin.html +style minimizers has to be defined in your input script. When a GNEB calculation is performed, it is assumed that each replica is running the same system, though LAMMPS does not check for this. -I.e. the simulation domain, the number of magnetic atoms, the -interaction potentials, and the starting configuration when the neb +I.e. the simulation domain, the number of magnetic atoms, the +interaction potentials, and the starting configuration when the neb command is issued should be the same for every replica. In a GNEB calculation each replica is connected to other replicas by inter-replica nudging forces. These forces are imposed by the "fix -neb/spin"_fix_neb_spin.html command, which must be used in conjunction -with the neb command. +neb/spin"_fix_neb_spin.html command, which must be used in conjunction +with the neb command. The group used to define the fix neb/spin command defines the -GNEB magnetic atoms which are the only ones that inter-replica springs -are applied to. +GNEB magnetic atoms which are the only ones that inter-replica springs +are applied to. If the group does not include all magnetic atoms, then non-GNEB -magnetic atoms have no inter-replica springs and the torques they feel -and their precession motion is computed in the usual way due only -to other magnetic atoms within their replica. -Conceptually, the non-GNEB atoms provide a background force field for -the GNEB atoms. -Their magnetic spins can be allowed to evolve during the GNEB +magnetic atoms have no inter-replica springs and the torques they feel +and their precession motion is computed in the usual way due only +to other magnetic atoms within their replica. +Conceptually, the non-GNEB atoms provide a background force field for +the GNEB atoms. +Their magnetic spins can be allowed to evolve during the GNEB minimization procedure. The initial spin configuration for each of the replicas can be specified in different manners via the {file-style} setting, as -discussed below. Only atomic spins whose initial coordinates should +discussed below. Only atomic spins whose initial coordinates should differ from the current configuration need to be specified. Conceptually, the initial and final configurations for the first @@ -106,21 +106,21 @@ closer to the MEP and read them in. :line For a {file-style} setting of {final}, a filename is specified which -contains atomic and spin coordinates for zero or more atoms, in the -format described below. -For each atom that appears in the file, the new coordinates are -assigned to that atom in the final replica. Each intermediate replica -also assigns a new spin to that atom in an interpolated manner. -This is done by using the current direction of the spin at the starting -point and the read-in direction as the final point. -The "angular distance" between them is calculated, and the new direction +contains atomic and spin coordinates for zero or more atoms, in the +format described below. +For each atom that appears in the file, the new coordinates are +assigned to that atom in the final replica. Each intermediate replica +also assigns a new spin to that atom in an interpolated manner. +This is done by using the current direction of the spin at the starting +point and the read-in direction as the final point. +The "angular distance" between them is calculated, and the new direction is assigned to be a fraction of the angular distance. -NOTE: The "angular distance" between the starting and final point is -evaluated in the geodesic sense, as described in -"(BessarabA)"_#BessarabA. +NOTE: The "angular distance" between the starting and final point is +evaluated in the geodesic sense, as described in +"(BessarabA)"_#BessarabA. -NOTE: The angular interpolation between the starting and final point +NOTE: The angular interpolation between the starting and final point is achieved using Rodrigues formula: :c,image(Eqs/neb_spin_rodrigues_formula.jpg) @@ -130,7 +130,7 @@ omega_i^nu is a rotation angle defined as: :c,image(Eqs/neb_spin_angle.jpg) -with nu the image number, Q the total number of images, and +with nu the image number, Q the total number of images, and omega_i the total rotation between the initial and final spins. k_i defines a rotation axis such as: @@ -139,16 +139,16 @@ k_i defines a rotation axis such as: if the initial and final spins are not aligned. If the initial and final spins are aligned, then their cross product is null, and the expression above does not apply. -If they point toward the same direction, the intermediate images +If they point toward the same direction, the intermediate images conserve the same orientation. If the initial and final spins are aligned, but point toward opposite directions, an arbitrary rotation vector belonging to -the plane perpendicular to initial and final spins is chosen. +the plane perpendicular to initial and final spins is chosen. In this case, a warning message is displayed. For a {file-style} setting of {each}, a filename is specified which is -assumed to be unique to each replica. -See the "neb"_neb.html documentation page for more information about this +assumed to be unique to each replica. +See the "neb"_neb.html documentation page for more information about this option. For a {file-style} setting of {none}, no filename is specified. Each @@ -170,9 +170,10 @@ command is issued. :line A NEB calculation proceeds in two stages, each of which is a -minimization procedure, performed via damped dynamics. To enable -this, you must first define a damped spin dynamics -"min_style"_min_style.html, using the {spin} style (see +minimization procedure. To enable +this, you must first define a +"min_style"_min_style.html, using either the {spin}, +{spin/cg}, or {spin/lbfgs} style (see "min_spin"_min_spin.html for more information). The other styles cannot be used, since they relax the lattice degrees of freedom instead of the spins. @@ -195,9 +196,9 @@ damped dynamics is like a single timestep in a dynamics replica and its normalized distance along the reaction path (reaction coordinate RD) will be printed to the screen and log file every {Nevery} timesteps. The RD is 0 and 1 for the first and last replica. -For intermediate replicas, it is the cumulative angular distance -(normalized by the total cumulative angular distance) between adjacent -replicas, where "distance" is defined as the length of the 3N-vector of +For intermediate replicas, it is the cumulative angular distance +(normalized by the total cumulative angular distance) between adjacent +replicas, where "distance" is defined as the length of the 3N-vector of the geodesic distances in spin coordinates, with N the number of GNEB spins involved (see equation (13) in "(BessarabA)"_#BessarabA). These outputs allow you to monitor NEB's progress in @@ -207,11 +208,11 @@ of {Nevery}. In the first stage of GNEB, the set of replicas should converge toward a minimum energy path (MEP) of conformational states that transition over a barrier. The MEP for a transition is defined as a sequence of -3N-dimensional spin states, each of which has a potential energy -gradient parallel to the MEP itself. -The configuration of highest energy along a MEP corresponds to a saddle -point. The replica states will also be roughly equally spaced along -the MEP due to the inter-replica nudging force added by the +3N-dimensional spin states, each of which has a potential energy +gradient parallel to the MEP itself. +The configuration of highest energy along a MEP corresponds to a saddle +point. The replica states will also be roughly equally spaced along +the MEP due to the inter-replica nudging force added by the "fix neb"_fix_neb.html command. In the second stage of GNEB, the replica with the highest energy is @@ -234,12 +235,12 @@ An atom map must be defined which it is not by default for "atom_style atomic"_atom_style.html problems. The "atom_modify map"_atom_modify.html command can be used to do this. -An initial value can be defined for the timestep. Although, the {spin} -minimization algorithm is an adaptive timestep methodology, so that -this timestep is likely to evolve during the calculation. +An initial value can be defined for the timestep. Although, the {spin} +minimization algorithm is an adaptive timestep methodology, so that +this timestep is likely to evolve during the calculation. The minimizers in LAMMPS operate on all spins in your system, even -non-GNEB atoms, as defined above. +non-GNEB atoms, as defined above. :line @@ -257,7 +258,7 @@ ID2 g2 x2 y2 z2 sx2 sy2 sz2 ... IDN gN yN zN sxN syN szN :pre -The fields are the atom ID, the norm of the associated magnetic spin, +The fields are the atom ID, the norm of the associated magnetic spin, followed by the {x,y,z} coordinates and the {sx,sy,sz} spin coordinates. The lines can be listed in any order. Additional trailing information on the line is OK, such as a comment. @@ -290,22 +291,22 @@ reaction coordinate and potential energy of each replica. The "maximum torque per replica" is the two-norm of the 3N-length vector given by the cross product of a spin by its -precession vector omega, in each replica, maximized across replicas, +precession vector omega, in each replica, maximized across replicas, which is what the {ttol} setting is checking against. In this case, N is all the atoms in each replica. The "maximum torque per atom" is the maximum torque component of any atom in any replica. The potential -gradients are the two-norm of the 3N-length magnetic precession vector -solely due to the interaction potential i.e. without adding in -inter-replica forces, and projected along the path tangent (as detailed +gradients are the two-norm of the 3N-length magnetic precession vector +solely due to the interaction potential i.e. without adding in +inter-replica forces, and projected along the path tangent (as detailed in Appendix D of "(BessarabA)"_#BessarabA). The "reaction coordinate" (RD) for each replica is the two-norm of the 3N-length vector of geodesic distances between its spins and the preceding -replica's spins (see equation (13) of "(BessarabA)"_#BessarabA), added to -the RD of the preceding replica. The RD of the first replica RD1 = 0.0; -the RD of the final replica RDN = RDT, the total reaction coordinate. -The normalized RDs are divided by RDT, so that they form a monotonically -increasing sequence from zero to one. When computing RD, N only includes +replica's spins (see equation (13) of "(BessarabA)"_#BessarabA), added to +the RD of the preceding replica. The RD of the first replica RD1 = 0.0; +the RD of the final replica RDN = RDT, the total reaction coordinate. +The normalized RDs are divided by RDT, so that they form a monotonically +increasing sequence from zero to one. When computing RD, N only includes the spins being operated on by the fix neb/spin command. The forward (reverse) energy barrier is the potential energy of the @@ -313,17 +314,17 @@ highest replica minus the energy of the first (last) replica. Supplementary information for all replicas can be printed out to the screen and master log.lammps file by adding the verbose keyword. This -information include the following. -The "GradVidottan" are the projections of the potential gradient for -the replica i on its tangent vector (as detailed in Appendix D of +information include the following. +The "GradVidottan" are the projections of the potential gradient for +the replica i on its tangent vector (as detailed in Appendix D of "(BessarabA)"_#BessarabA). -The "DNi" are the non normalized geodesic distances (see equation (13) -of "(BessarabA)"_#BessarabA), between a replica i and the next replica +The "DNi" are the non normalized geodesic distances (see equation (13) +of "(BessarabA)"_#BessarabA), between a replica i and the next replica i+1. For the last replica, this distance is not defined and a "NAN" -value is the corresponding output. +value is the corresponding output. When a NEB calculation does not converge properly, the supplementary -information can help understanding what is going wrong. +information can help understanding what is going wrong. When running on multiple partitions, LAMMPS produces additional log files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a @@ -346,9 +347,9 @@ restart the calculation from an intermediate point with altered parameters. A c file script in provided in the tool/spin/interpolate_gneb -directory, that interpolates the MEP given the information provided +directory, that interpolates the MEP given the information provided by the verbose output option (as detailed in Appendix D of -"(BessarabA)"_#BessarabA). +"(BessarabA)"_#BessarabA). :line @@ -358,6 +359,9 @@ This command can only be used if LAMMPS was built with the SPIN package. See the "Build package"_Build_package.html doc page for more info. +For magnetic GNEB calculations, only {spin_none} value for {line} keyword can be used +when styles {spin/cg} and {spin/lbfgs} are employed. + :line [Related commands:] diff --git a/doc/src/package.txt b/doc/src/package.txt index edd409a842..4ecb5d96d0 100644 --- a/doc/src/package.txt +++ b/doc/src/package.txt @@ -423,115 +423,115 @@ processes/threads used for LAMMPS. :line -The {kokkos} style invokes settings associated with the use of the -KOKKOS package. +The {kokkos} style invokes settings associated with the use of the +KOKKOS package. -All of the settings are optional keyword/value pairs. Each has a default -value as listed below. +All of the settings are optional keyword/value pairs. Each has a default +value as listed below. -The {neigh} keyword determines how neighbor lists are built. A value of -{half} uses a thread-safe variant of half-neighbor lists, the same as -used by most pair styles in LAMMPS, which is the default when running on -CPUs (i.e. the Kokkos CUDA back end is not enabled). +The {neigh} keyword determines how neighbor lists are built. A value of +{half} uses a thread-safe variant of half-neighbor lists, the same as +used by most pair styles in LAMMPS, which is the default when running on +CPUs (i.e. the Kokkos CUDA back end is not enabled). -A value of {full} uses a full neighbor lists and is the default when -running on GPUs. This performs twice as much computation as the {half} -option, however that is often a win because it is thread-safe and -doesn't require atomic operations in the calculation of pair forces. For -that reason, {full} is the default setting for GPUs. However, when -running on CPUs, a {half} neighbor list is the default because it are -often faster, just as it is for non-accelerated pair styles. Similarly, -the {neigh/qeq} keyword determines how neighbor lists are built for "fix -qeq/reax/kk"_fix_qeq_reax.html. If not explicitly set, the value of +A value of {full} uses a full neighbor lists and is the default when +running on GPUs. This performs twice as much computation as the {half} +option, however that is often a win because it is thread-safe and +doesn't require atomic operations in the calculation of pair forces. For +that reason, {full} is the default setting for GPUs. However, when +running on CPUs, a {half} neighbor list is the default because it are +often faster, just as it is for non-accelerated pair styles. Similarly, +the {neigh/qeq} keyword determines how neighbor lists are built for "fix +qeq/reax/kk"_fix_qeq_reax.html. If not explicitly set, the value of {neigh/qeq} will match {neigh}. -If the {neigh/thread} keyword is set to {off}, then the KOKKOS package -threads only over atoms. However, for small systems, this may not expose -enough parallelism to keep a GPU busy. When this keyword is set to {on}, -the KOKKOS package threads over both atoms and neighbors of atoms. When -using {neigh/thread} {on}, a full neighbor list must also be used. Using -{neigh/thread} {on} may be slower for large systems, so this this option -is turned on by default only when there are 16K atoms or less owned by -an MPI rank and when using a full neighbor list. Not all KOKKOS-enabled -potentials support this keyword yet, and only thread over atoms. Many -simple pair-wise potentials such as Lennard-Jones do support threading +If the {neigh/thread} keyword is set to {off}, then the KOKKOS package +threads only over atoms. However, for small systems, this may not expose +enough parallelism to keep a GPU busy. When this keyword is set to {on}, +the KOKKOS package threads over both atoms and neighbors of atoms. When +using {neigh/thread} {on}, a full neighbor list must also be used. Using +{neigh/thread} {on} may be slower for large systems, so this this option +is turned on by default only when there are 16K atoms or less owned by +an MPI rank and when using a full neighbor list. Not all KOKKOS-enabled +potentials support this keyword yet, and only thread over atoms. Many +simple pair-wise potentials such as Lennard-Jones do support threading over both atoms and neighbors. -The {newton} keyword sets the Newton flags for pairwise and bonded -interactions to {off} or {on}, the same as the "newton"_newton.html -command allows. The default for GPUs is {off} because this will almost -always give better performance for the KOKKOS package. This means more -computation is done, but less communication. However, when running on -CPUs a value of {on} is the default since it can often be faster, just -as it is for non-accelerated pair styles +The {newton} keyword sets the Newton flags for pairwise and bonded +interactions to {off} or {on}, the same as the "newton"_newton.html +command allows. The default for GPUs is {off} because this will almost +always give better performance for the KOKKOS package. This means more +computation is done, but less communication. However, when running on +CPUs a value of {on} is the default since it can often be faster, just +as it is for non-accelerated pair styles -The {binsize} keyword sets the size of bins used to bin atoms in -neighbor list builds. The same value can be set by the "neigh_modify -binsize"_neigh_modify.html command. Making it an option in the package -kokkos command allows it to be set from the command line. The default -value for CPUs is 0.0, which means the LAMMPS default will be used, -which is bins = 1/2 the size of the pairwise cutoff + neighbor skin -distance. This is fine when neighbor lists are built on the CPU. For GPU -builds, a 2x larger binsize equal to the pairwise cutoff + neighbor skin -is often faster, which is the default. Note that if you use a -longer-than-usual pairwise cutoff, e.g. to allow for a smaller fraction -of KSpace work with a "long-range Coulombic solver"_kspace_style.html -because the GPU is faster at performing pairwise interactions, then this -rule of thumb may give too large a binsize and the default should be -overridden with a smaller value. +The {binsize} keyword sets the size of bins used to bin atoms in +neighbor list builds. The same value can be set by the "neigh_modify +binsize"_neigh_modify.html command. Making it an option in the package +kokkos command allows it to be set from the command line. The default +value for CPUs is 0.0, which means the LAMMPS default will be used, +which is bins = 1/2 the size of the pairwise cutoff + neighbor skin +distance. This is fine when neighbor lists are built on the CPU. For GPU +builds, a 2x larger binsize equal to the pairwise cutoff + neighbor skin +is often faster, which is the default. Note that if you use a +longer-than-usual pairwise cutoff, e.g. to allow for a smaller fraction +of KSpace work with a "long-range Coulombic solver"_kspace_style.html +because the GPU is faster at performing pairwise interactions, then this +rule of thumb may give too large a binsize and the default should be +overridden with a smaller value. -The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse} -keywords determine whether the host or device performs the packing and -unpacking of data when communicating per-atom data between processors. -"Exchange" communication happens only on timesteps that neighbor lists -are rebuilt. The data is only for atoms that migrate to new processors. -"Forward" communication happens every timestep. "Reverse" communication -happens every timestep if the {newton} option is on. The data is for -atom coordinates and any other atom properties that needs to be updated +The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse} +keywords determine whether the host or device performs the packing and +unpacking of data when communicating per-atom data between processors. +"Exchange" communication happens only on timesteps that neighbor lists +are rebuilt. The data is only for atoms that migrate to new processors. +"Forward" communication happens every timestep. "Reverse" communication +happens every timestep if the {newton} option is on. The data is for +atom coordinates and any other atom properties that needs to be updated for ghost atoms owned by each processor. -The {comm} keyword is simply a short-cut to set the same value for both +The {comm} keyword is simply a short-cut to set the same value for both the {comm/exchange} and {comm/forward} and {comm/reverse} keywords. -The value options for all 3 keywords are {no} or {host} or {device}. A -value of {no} means to use the standard non-KOKKOS method of -packing/unpacking data for the communication. A value of {host} means to -use the host, typically a multi-core CPU, and perform the -packing/unpacking in parallel with threads. A value of {device} means to -use the device, typically a GPU, to perform the packing/unpacking +The value options for all 3 keywords are {no} or {host} or {device}. A +value of {no} means to use the standard non-KOKKOS method of +packing/unpacking data for the communication. A value of {host} means to +use the host, typically a multi-core CPU, and perform the +packing/unpacking in parallel with threads. A value of {device} means to +use the device, typically a GPU, to perform the packing/unpacking operation. -The optimal choice for these keywords depends on the input script and -the hardware used. The {no} value is useful for verifying that the -Kokkos-based {host} and {device} values are working correctly. It is the +The optimal choice for these keywords depends on the input script and +the hardware used. The {no} value is useful for verifying that the +Kokkos-based {host} and {device} values are working correctly. It is the default when running on CPUs since it is usually the fastest. -When running on CPUs or Xeon Phi, the {host} and {device} values work -identically. When using GPUs, the {device} value is the default since it -will typically be optimal if all of your styles used in your input -script are supported by the KOKKOS package. In this case data can stay -on the GPU for many timesteps without being moved between the host and -GPU, if you use the {device} value. If your script uses styles (e.g. -fixes) which are not yet supported by the KOKKOS package, then data has -to be move between the host and device anyway, so it is typically faster -to let the host handle communication, by using the {host} value. Using -{host} instead of {no} will enable use of multiple threads to -pack/unpack communicated data. When running small systems on a GPU, -performing the exchange pack/unpack on the host CPU can give speedup +When running on CPUs or Xeon Phi, the {host} and {device} values work +identically. When using GPUs, the {device} value is the default since it +will typically be optimal if all of your styles used in your input +script are supported by the KOKKOS package. In this case data can stay +on the GPU for many timesteps without being moved between the host and +GPU, if you use the {device} value. If your script uses styles (e.g. +fixes) which are not yet supported by the KOKKOS package, then data has +to be move between the host and device anyway, so it is typically faster +to let the host handle communication, by using the {host} value. Using +{host} instead of {no} will enable use of multiple threads to +pack/unpack communicated data. When running small systems on a GPU, +performing the exchange pack/unpack on the host CPU can give speedup since it reduces the number of CUDA kernel launches. -The {cuda/aware} keyword chooses whether CUDA-aware MPI will be used. When -this keyword is set to {on}, buffers in GPU memory are passed directly -through MPI send/receive calls. This reduces overhead of first copying -the data to the host CPU. However CUDA-aware MPI is not supported on all -systems, which can lead to segmentation faults and would require using a -value of {off}. If LAMMPS can safely detect that CUDA-aware MPI is not -available (currently only possible with OpenMPI v2.0.0 or later), then -the {cuda/aware} keyword is automatically set to {off} by default. When -the {cuda/aware} keyword is set to {off} while any of the {comm} -keywords are set to {device}, the value for these {comm} keywords will -be automatically changed to {host}. This setting has no effect if not -running on GPUs. CUDA-aware MPI is available for OpenMPI 1.8 (or later +The {cuda/aware} keyword chooses whether CUDA-aware MPI will be used. When +this keyword is set to {on}, buffers in GPU memory are passed directly +through MPI send/receive calls. This reduces overhead of first copying +the data to the host CPU. However CUDA-aware MPI is not supported on all +systems, which can lead to segmentation faults and would require using a +value of {off}. If LAMMPS can safely detect that CUDA-aware MPI is not +available (currently only possible with OpenMPI v2.0.0 or later), then +the {cuda/aware} keyword is automatically set to {off} by default. When +the {cuda/aware} keyword is set to {off} while any of the {comm} +keywords are set to {device}, the value for these {comm} keywords will +be automatically changed to {host}. This setting has no effect if not +running on GPUs. CUDA-aware MPI is available for OpenMPI 1.8 (or later versions), Mvapich2 1.9 (or later) when the "MV2_USE_CUDA" environment variable is set to "1", CrayMPI, and IBM Spectrum MPI when the "-gpu" flag is used. @@ -641,16 +641,16 @@ not used, you must invoke the package intel command in your input script or via the "-pk intel" "command-line switch"_Run_options.html. -For the KOKKOS package, the option defaults for GPUs are neigh = full, -neigh/qeq = full, newton = off, binsize for GPUs = 2x LAMMPS default -value, comm = device, cuda/aware = on. When LAMMPS can safely detect -that CUDA-aware MPI is not available, the default value of cuda/aware -becomes "off". For CPUs or Xeon Phis, the option defaults are neigh = -half, neigh/qeq = half, newton = on, binsize = 0.0, and comm = no. The -option neigh/thread = on when there are 16K atoms or less on an MPI -rank, otherwise it is "off". These settings are made automatically by -the required "-k on" "command-line switch"_Run_options.html. You can -change them by using the package kokkos command in your input script or +For the KOKKOS package, the option defaults for GPUs are neigh = full, +neigh/qeq = full, newton = off, binsize for GPUs = 2x LAMMPS default +value, comm = device, cuda/aware = on. When LAMMPS can safely detect +that CUDA-aware MPI is not available, the default value of cuda/aware +becomes "off". For CPUs or Xeon Phis, the option defaults are neigh = +half, neigh/qeq = half, newton = on, binsize = 0.0, and comm = no. The +option neigh/thread = on when there are 16K atoms or less on an MPI +rank, otherwise it is "off". These settings are made automatically by +the required "-k on" "command-line switch"_Run_options.html. You can +change them by using the package kokkos command in your input script or via the "-pk kokkos command-line switch"_Run_options.html. For the OMP package, the default is Nthreads = 0 and the option diff --git a/doc/src/pair_e3b.txt b/doc/src/pair_e3b.txt index 6d1f992ca1..832b4719c3 100644 --- a/doc/src/pair_e3b.txt +++ b/doc/src/pair_e3b.txt @@ -20,8 +20,8 @@ If the {preset} keyword is given, no others are needed. Otherwise, all are mandatory except for {neigh}. The {neigh} keyword is always optional. :l {preset} arg = {2011} or {2015} = which set of predefined parameters to use - 2011 = use the potential parameters from "(Tainter 2011)"_#Tainter2011 - 2015 = use the potential parameters from "(Tainter 2015)"_#Tainter2015 + 2011 = use the potential parameters from "(Tainter 2011)"_#Tainter2011 + 2015 = use the potential parameters from "(Tainter 2015)"_#Tainter2015 {Ea} arg = three-body energy for type A hydrogen bonding interactions (energy units) {Eb} arg = three-body energy for type B hydrogen bonding interactions (energy units) {Ec} arg = three-body energy for type C hydrogen bonding interactions (energy units) diff --git a/doc/src/pair_granular.txt b/doc/src/pair_granular.txt index f16cd9fe0b..2091163e91 100644 --- a/doc/src/pair_granular.txt +++ b/doc/src/pair_granular.txt @@ -100,7 +100,7 @@ on particle {i} due to contact with particle {j} is given by: \mathbf\{F\}_\{ne, Hooke\} = k_N \delta_\{ij\} \mathbf\{n\} \end\{equation\} -Where \(\delta = R_i + R_j - \|\mathbf\{r\}_\{ij\}\|\) is the particle +Where \(\delta_\{ij\} = R_i + R_j - \|\mathbf\{r\}_\{ij\}\|\) is the particle overlap, \(R_i, R_j\) are the particle radii, \(\mathbf\{r\}_\{ij\} = \mathbf\{r\}_i - \mathbf\{r\}_j\) is the vector separating the two particle centers (note the i-j ordering so that \(F_\{ne\}\) is @@ -177,7 +177,7 @@ following general form: \end\{equation\} Here, \(\mathbf\{v\}_\{n,rel\} = (\mathbf\{v\}_j - \mathbf\{v\}_i) -\cdot \mathbf\{n\}\) is the component of relative velocity along +\cdot \mathbf\{n\} \mathbf\{n\}\) is the component of relative velocity along \(\mathbf\{n\}\). The optional {damping} keyword to the {pair_coeff} command followed by @@ -299,8 +299,8 @@ the normal damping \(\eta_n\) (see above): \eta_t = -x_\{\gamma,t\} \eta_n \end\{equation\} -The normal damping prefactor \(\eta_n\) is determined by the choice of -the {damping} keyword, as discussed above. Thus, the {damping} +The normal damping prefactor \(\eta_n\) is determined by the choice +of the {damping} keyword, as discussed above. Thus, the {damping} keyword also affects the tangential damping. The parameter \(x_\{\gamma,t\}\) is a scaling coefficient. Several works in the literature use \(x_\{\gamma,t\} = 1\) ("Marshall"_#Marshall2009, @@ -308,10 +308,10 @@ literature use \(x_\{\gamma,t\} = 1\) ("Marshall"_#Marshall2009, tangential velocity at the point of contact is given by \(\mathbf\{v\}_\{t, rel\} = \mathbf\{v\}_\{t\} - (R_i\Omega_i + R_j\Omega_j) \times \mathbf\{n\}\), where \(\mathbf\{v\}_\{t\} = -\mathbf\{v\}_r - \mathbf\{v\}_r\cdot\mathbf\{n\}\), \(\mathbf\{v\}_r = -\mathbf\{v\}_j - \mathbf\{v\}_i\). The direction of the applied force -is \(\mathbf\{t\} = -\mathbf\{v_\{t,rel\}\}/\|\mathbf\{v_\{t,rel\}\}\|\). +\mathbf\{v\}_r - \mathbf\{v\}_r\cdot\mathbf\{n\}\{n\}\), +\(\mathbf\{v\}_r = \mathbf\{v\}_j - \mathbf\{v\}_i\). +The direction of the applied force is \(\mathbf\{t\} = +\mathbf\{v_\{t,rel\}\}/\|\mathbf\{v_\{t,rel\}\}\|\) . The normal force value \(F_\{n0\}\) used to compute the critical force depends on the form of the contact model. For non-cohesive models @@ -411,8 +411,8 @@ option by an additional factor of {a}, the radius of the contact region. The tan \mathbf\{F\}_t = -min(\mu_t F_\{n0\}, \|-k_t a \mathbf\{\xi\} + \mathbf\{F\}_\mathrm\{t,damp\}\|) \mathbf\{t\} \end\{equation\} -Here, {a} is the radius of the contact region, given by \(a = \delta -R\) for all normal contact models, except for {jkr}, where it is given +Here, {a} is the radius of the contact region, given by \(a =\sqrt\{R\delta\}\) +for all normal contact models, except for {jkr}, where it is given implicitly by \(\delta = a^2/R - 2\sqrt\{\pi \gamma a/E\}\), see discussion above. To match the Mindlin solution, one should set \(k_t = 8G\), where \(G\) is the shear modulus, related to Young's modulus @@ -680,7 +680,7 @@ The single() function of these pair styles returns 0.0 for the energy of a pairwise interaction, since energy is not conserved in these dissipative potentials. It also returns only the normal component of the pairwise interaction force. However, the single() function also -calculates 10 extra pairwise quantities. The first 3 are the +calculates 12 extra pairwise quantities. The first 3 are the components of the tangential force between particles I and J, acting on particle I. The 4th is the magnitude of this tangential force. The next 3 (5-7) are the components of the rolling torque acting on @@ -790,4 +790,4 @@ alternative contact force models during inelastic collisions. Powder Technology, 233, 30-46. :link(WaltonPC) -[(Otis R. Walton)] Walton, O.R., Personal Communication +[(Otis R. Walton)] Walton, O.R., Personal Communication diff --git a/doc/src/pair_kolmogorov_crespi_full.txt b/doc/src/pair_kolmogorov_crespi_full.txt index 5a2623ed89..b42027aada 100644 --- a/doc/src/pair_kolmogorov_crespi_full.txt +++ b/doc/src/pair_kolmogorov_crespi_full.txt @@ -43,8 +43,8 @@ when the tapper function is turned off. The formula of taper function can be found in pair style "ilp/graphene/hbn"_pair_ilp_graphene_hbn.html. NOTE: This potential (ILP) is intended for interlayer interactions between two -different layers of graphene. To perform a realistic simulation, this potential -must be used in combination with intralayer potential, such as +different layers of graphene. To perform a realistic simulation, this potential +must be used in combination with intralayer potential, such as "AIREBO"_pair_airebo.html or "Tersoff"_pair_tersoff.html potential. To keep the intralayer properties unaffected, the interlayer interaction within the same layers should be avoided. Hence, each atom has to have a layer diff --git a/doc/src/pair_local_density.txt b/doc/src/pair_local_density.txt new file mode 100644 index 0000000000..4def63c5fc --- /dev/null +++ b/doc/src/pair_local_density.txt @@ -0,0 +1,207 @@ +"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 + +pair_style local/density command :h3 + +[Syntax:] + +pair_style style arg :pre + +style = {local/density} +arg = name of file containing tabulated values of local density and the potential :ul + +[Examples:] + +pair_style local/density benzene_water.localdensity.table :pre + +pair_style hybrid/overlay table spline 500 local/density +pair_coeff * * local/density benzene_water.localdensity.table :pre + +[Description:] + +The local density (LD) potential is a mean-field manybody potential, and, in some +sense,a generalization of embedded atom models (EAM). The name "local density +potential" arises from the fact that it assigns an energy to an atom depending +on the number of neighboring atoms of given type around it within a predefined +spherical volume (i.e., within a cutoff). The bottom-up coarse-graining (CG) +literature suggests that such potentials can be widely useful in capturing +effective multibody forces in a computationally efficient manner so as to +improve the quality of CG models of implicit solvation"(Sanyal1)"_#Sanyal1 and +phase-segregation in liquid mixtures"(Sanyal2)"_#Sanyal2, and provide guidelines +to determine the extent of manybody correlations present in a CG +model."(Rosenberger)"_#Rosenberger The LD potential in LAMMPS is primarily +intended to be used as a corrective potential over traditional pair potentials +in bottom-up CG models, i.e., as a hybrid pair style with +other explicit pair interaction terms (e.g., table spline, Lennard Jones, etc.). +Because the LD potential is not a pair potential per se, it is implemented +simply as a single auxiliary file with all specifications that will be read +upon initialization. + +NOTE: Thus when used as the only interaction in the system, there is no +corresponding pair_coeff command and when used with other pair styles using the +hybrid/overlay option, the corresponding pair_coeff command must be supplied +* * as placeholders for the atom types. + +:line + +[System with a single CG atom type:] + +A system of a single atom type (e.g., LJ argon) with a single local density (LD) +potential would have an energy given by: + +:c,image(Eqs/pair_local_density_energy.jpg) + +where rho_i is the LD at atom i and F(rho) is similar in spirit to the +embedding function used in EAM potentials. The LD at atom i is given by the sum + +:c,image(Eqs/pair_local_density_ld.jpg) + +where phi is an indicator function that is one at r=0 and zero beyond a cutoff +distance R2. The choice of the functional form of phi is somewhat arbitrary, +but the following piecewise cubic function has proven sufficiently general: +"(Sanyal1)"_#Sanyal1, "(Sanyal2)"_#Sanyal2 "(Rosenberger)"_#Rosenberger + +:c,image(Eqs/pair_local_density_indicator_func.jpg) + +The constants {c} are chosen so that the indicator function smoothly +interpolates between 1 and 0 between the distances R1 and R2, which are +called the inner and outer cutoffs, respectively. Thus phi satisfies +phi(R1) = 1, phi(R2) = dphi/dr @ (r=R1) = dphi/dr @ (r=R2) = 0. The embedding +function F(rho) may or may not have a closed-form expression. To maintain +generality, it is practically represented with a spline-interpolated table +over a predetermined range of rho. Outside of that range it simply adopts zero +values at the endpoints. + +It can be shown that the total force between two atoms due to the LD potential +takes the form of a pair force, which motivates its designation as a LAMMPS +pair style. Please see "(Sanyal1)"_#Sanyal1 for details of the derivation. + +:line + +[Systems with arbitrary numbers of atom types:] + +The potential is easily generalized to systems involving multiple atom types: + +:c,image(Eqs/pair_local_density_energy_multi.jpg) + +with the LD expressed as + +:c,image(Eqs/pair_local_density_ld_multi.jpg) + +where alpha gives the type of atom i, beta the type of atom j, and the +coefficients a and b filter for atom types as specified by the user. a is +called the central atom filter as it determines to which atoms the +potential applies; a_alpha = 1 if the LD potential applies to atom type alpha +else zero. On the other hand, b is called the neighbor atom filter because it +specifies which atom types to use in the calculation of the LD; b_beta = 1 if +atom type beta contributes to the LD and zero otherwise. + +NOTE: Note that the potentials need not be symmetric with respect to atom types, +which is the reason for two distinct sets of coefficients a and b. An atom type +may contribute to the LD but not the potential, or to the potential but not the +LD. Such decisions are made by the user and should (ideally) be motivated on +physical grounds for the problem at hand. + +:line + +[General form for implementation in LAMMPS:] + +Of course, a system with many atom types may have many different possible LD +potentials, each with their own atom type filters, cutoffs, and embedding +functions. The most general form of this potential as implemented in the +pair_style local/density is: + +:c,image(Eqs/pair_local_density_energy_implement.jpg) + +where, k is an index that spans the (arbitrary) number of applied LD potentials +N_LD. Each LD is calculated as before with: + +:c,image(Eqs/pair_local_density_ld_implement.jpg) + +The superscript on the indicator function phi simply indicates that it is +associated with specific values of the cutoff distances R1(k) and R2(k). In +summary, there may be N_LD distinct LD potentials. With each potential type (k), +one must specify: + +the inner and outer cutoffs as R1 and R2 +the central type filter a(k), where k = 1,2,...N_LD +the neighbor type filter b(k), where k = 1,2,...N_LD +the LD potential function F(k)(rho), typically as a table that is later spline-interpolated :ul + +:line + +[Tabulated input file format:] + +Line 1: comment or blank (ignored) +Line 2: comment or blank (ignored) +Line 3: N_LD N_rho (# of LD potentials and # of tabulated values, single space separated) +Line 4: blank (ignored) +Line 5: R1(k) R2(k) (lower and upper cutoffs, single space separated) +Line 6: central-types (central atom types, single space separated) +Line 7: neighbor-types (neighbor atom types single space separated) +Line 8: rho_min rho_max drho (min, max and diff. in tabulated rho values, single space separated) +Line 9: F(k)(rho_min + 0.drho) +Line 10: F(k)(rho_min + 1.drho) +Line 11: F(k)(rho_min + 2.drho) +... +Line 9+N_rho: F(k)(rho_min + N_rho . drho) +Line 10+N_rho: blank (ignored) :pre + +Block 2 :pre + +Block 3 :pre + +Block N_LD :pre + +Lines 5 to 9+N_rho constitute the first block. Thus the input file is separated +(by blank lines) into N_LD blocks each representing a separate LD potential and +each specifying its own upper and lower cutoffs, central and neighbor atoms, +and potential. In general, blank lines anywhere are ignored. + +:line + +[Mixing, shift, table, tail correction, restart, info]: +This pair style does not support automatic mixing. For atom type pairs alpha, +beta and alpha != beta, even if LD potentials of type (alpha, alpha) and +(beta, beta) are provided, you will need to explicitly provide LD potential +types (alpha, beta) and (beta, alpha) if need be (Here, the notation (alpha, +beta) means that alpha is the central atom to which the LD potential is applied +and beta is the neighbor atom which contributes to the LD potential on alpha). + +This pair style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +The local/density pair style does not write its information to "binary restart +files"_restart.html, since it is stored in tabulated potential files. +Thus, you need to re-specify the pair_style and pair_coeff commands in +an input script that reads a restart file. + +:line + +[Restrictions:] + +The local/density pair style is a part of the USER-MISC package. It is only +enabled if LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +[Related commands:] + +"pair_coeff"_pair_coeff.html + +[Default:] none + +:line + + +:link(Sanyal1) +[(Sanyal1)] Sanyal and Shell, Journal of Chemical Physics, 2016, 145 (3), 034109. +:link(Sanyal2) +[(Sanyal2)] Sanyal and Shell, Journal of Physical Chemistry B, 122 (21), 5678-5693. + +:link(Rosenberger) +[(Rosenberger)] Rosenberger, Sanyal, Shell and van der Vegt, Journal of Chemical Physics, 2019, 151 (4), 044111. diff --git a/doc/src/pair_mm3_switch3_coulgauss.txt b/doc/src/pair_mm3_switch3_coulgauss.txt index 3e0e24150e..86e6a0d1d9 100644 --- a/doc/src/pair_mm3_switch3_coulgauss.txt +++ b/doc/src/pair_mm3_switch3_coulgauss.txt @@ -68,7 +68,7 @@ gamma (distance) :ul [Mixing, shift, table, tail correction, restart, rRESPA info]: -Mixing rules are fixed for this style as defined above. +Mixing rules are fixed for this style as defined above. Shifting the potential energy is not necessary because the switching function ensures that the potential is zero at the cut-off. diff --git a/doc/src/pair_oxdna2.txt b/doc/src/pair_oxdna2.txt index 3e462f384d..35e59ac9f5 100644 --- a/doc/src/pair_oxdna2.txt +++ b/doc/src/pair_oxdna2.txt @@ -27,8 +27,8 @@ args = list of arguments for these particular styles :ul {oxdna2/stk} args = seq T xi kappa 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 seq = seqav (for average sequence stacking strength) or seqdep (for sequence-dependent stacking strength) T = temperature (oxDNA units, 0.1 = 300 K) - xi = temperature-independent coefficient in stacking strength - kappa = coefficient of linear temperature dependence in stacking strength + xi = temperature-independent coefficient in stacking strength + kappa = coefficient of linear temperature dependence in stacking strength {oxdna2/hbond} args = seq eps 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 seq = seqav (for average sequence base-pairing strength) or seqdep (for sequence-dependent base-pairing strength) eps = 1.0678 (between base pairs A-T and C-G) or 0 (all other pairs) diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt index 1fba74a188..37d1a1ed18 100644 --- a/doc/src/pair_snap.txt +++ b/doc/src/pair_snap.txt @@ -50,7 +50,7 @@ the SNAP potential files themselves. Only a single pair_coeff command is used with the {snap} style which specifies a SNAP coefficient file followed by a SNAP parameter file and then N additional arguments specifying the mapping of SNAP -elements to LAMMPS atom types, where N is the number of +elements to LAMMPS atom types, where N is the number of LAMMPS atom types: SNAP coefficient file @@ -79,7 +79,7 @@ The name of the SNAP coefficient file usually ends in the ".snapcoeff" extension. It may contain coefficients for many SNAP elements. The only requirement is that it contain at least those element names appearing in the -LAMMPS mapping list. +LAMMPS mapping list. The name of the SNAP parameter file usually ends in the ".snapparam" extension. It contains a small number of parameters that define the overall form of the SNAP potential. diff --git a/doc/src/pair_spin_dipole.txt b/doc/src/pair_spin_dipole.txt index 0d6471e07f..36bcd25d5e 100644 --- a/doc/src/pair_spin_dipole.txt +++ b/doc/src/pair_spin_dipole.txt @@ -11,7 +11,7 @@ pair_style spin/dipole/long command :h3 [Syntax:] -pair_style spin/dipole/cut cutoff +pair_style spin/dipole/cut cutoff pair_style spin/dipole/long cutoff :pre cutoff = global cutoff for magnetic dipole energy and forces @@ -21,35 +21,34 @@ cutoff = global cutoff for magnetic dipole energy and forces [Examples:] pair_style spin/dipole/cut 10.0 -pair_coeff * * 10.0 +pair_coeff * * 10.0 pair_coeff 2 3 8.0 :pre pair_style spin/dipole/long 9.0 -pair_coeff * * 1.0 1.0 -pair_coeff 2 3 1.0 1.0 2.5 4.0 scale 0.5 -pair_coeff 2 3 1.0 1.0 2.5 4.0 :pre +pair_coeff * * 10.0 +pair_coeff 2 3 6.0 :pre [Description:] Style {spin/dipole/cut} computes a short-range dipole-dipole -interaction between pairs of magnetic particles that each -have a magnetic spin. +interaction between pairs of magnetic particles that each +have a magnetic spin. The magnetic dipole-dipole interactions are computed by the -following formulas for the magnetic energy, magnetic precession +following formulas for the magnetic energy, magnetic precession vector omega and mechanical force between particles I and J. :c,image(Eqs/pair_spin_dipole.jpg) -where si and sj are the spin on two magnetic particles, -r is their separation distance, and the vector e = (Ri - Rj)/|Ri - Rj| -is the direction vector between the two particles. +where si and sj are the spin on two magnetic particles, +r is their separation distance, and the vector e = (Ri - Rj)/|Ri - Rj| +is the direction vector between the two particles. Style {spin/dipole/long} computes long-range magnetic dipole-dipole interaction. A "kspace_style"_kspace_style.html must be defined to -use this pair style. Currently, "kspace_style +use this pair style. Currently, "kspace_style ewald/dipole/spin"_kspace_style.html and "kspace_style -pppm/dipole/spin"_kspace_style.html support long-range magnetic +pppm/dipole/spin"_kspace_style.html support long-range magnetic dipole-dipole interactions. :line @@ -68,8 +67,8 @@ to be specified in an input script that reads a restart file. [Restrictions:] The {spin/dipole/cut} and {spin/dipole/long} styles are part of -the SPIN package. They are only enabled if LAMMPS was built with that -package. See the "Build package"_Build_package.html doc page for more +the SPIN package. They are only enabled if LAMMPS was built with that +package. See the "Build package"_Build_package.html doc page for more info. Using dipole/spin pair styles with {electron} "units"_units.html is not diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt index 9ddff8a8dc..cca20d1136 100644 --- a/doc/src/pair_spin_dmi.txt +++ b/doc/src/pair_spin_dmi.txt @@ -15,11 +15,11 @@ pair_style spin/dmi cutoff :pre cutoff = global cutoff pair (distance in metal units) :ulb,l :ule - + [Examples:] pair_style spin/dmi 4.0 -pair_coeff * * dmi 2.6 0.001 1.0 0.0 0.0 +pair_coeff * * dmi 2.6 0.001 1.0 0.0 0.0 pair_coeff 1 2 dmi 4.0 0.00109 0.0 0.0 1.0 :pre [Description:] diff --git a/doc/src/pair_spin_neel.txt b/doc/src/pair_spin_neel.txt index 009ef7947d..b255f23a09 100644 --- a/doc/src/pair_spin_neel.txt +++ b/doc/src/pair_spin_neel.txt @@ -15,7 +15,7 @@ pair_style spin/neel cutoff :pre cutoff = global cutoff pair (distance in metal units) :ulb,l :ule - + [Examples:] pair_style spin/neel 4.0 diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index 1b8e6d46ec..7ba982cd2d 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -228,6 +228,7 @@ accelerated styles exist. "lj/smooth/linear"_pair_lj_smooth_linear.html - linear smoothed LJ potential "lj/switch3/coulgauss"_pair_lj_switch3_coulgauss - smoothed LJ vdW potential with Gaussian electrostatics "lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential +"local/density"_pair_local_density.html - generalized basic local density potential "lubricate"_pair_lubricate.html - hydrodynamic lubrication forces "lubricate/poly"_pair_lubricate.html - hydrodynamic lubrication forces with polydispersity "lubricateU"_pair_lubricateU.html - hydrodynamic lubrication forces for Fast Lubrication Dynamics diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index f36a87dea3..1f8f130e48 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -66,6 +66,7 @@ Pair Styles :h1 pair_lj_smooth pair_lj_smooth_linear pair_lj_switch3_coulgauss + pair_local_density pair_lubricate pair_lubricateU pair_mdf diff --git a/doc/src/third_order.txt b/doc/src/third_order.txt new file mode 100644 index 0000000000..9636ec830e --- /dev/null +++ b/doc/src/third_order.txt @@ -0,0 +1,62 @@ +"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 + +third_order command :h3 + +[Syntax:] + +third_order group-ID style delta args keyword value ... :pre + +group-ID = ID of group of atoms to displace :ulb,l +style = {regular} or {eskm} :l +delta = finite different displacement length (distance units) :l +one or more keyword/arg pairs may be appended :l + keyword = {file} or {binary} + {file} name = name of output file for the third order tensor + {binary} arg = {yes} or {no} or {gzip} :pre +:ule + +[Examples:] + +third_order 1 regular 0.000001 +third_order 1 eskm 0.000001 +third_order 3 regular 0.00004 file third_order.dat +third_order 5 eskm 0.00000001 file third_order.dat binary yes :pre + +[Description:] + +Calculate the third order force constant tensor by finite difference of the selected group, + +:c,image(JPG/third_order_force_constant.png)) + +where Phi is the third order force constant tensor. + +The output of the command is the tensor, three elements at a time. The +three elements correspond to the three gamma elements for a specific i/alpha/j/beta/k. +The initial five numbers are i, alpha, j, beta, and k respectively. + +If the style eskm is selected, the tensor will be using energy units of 10 J/mol. +These units conform to eskm style from the dynamical_matrix command, which +will simplify operations using dynamical matrices with third order tensors. + +[Restrictions:] + +The command collects a 9 times the number of atoms in the group on every single MPI rank, +so the memory requirements can be very significant for large systems. + +This command is part of the USER-PHONON package. It is only enabled if +LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +[Related commands:] + +"fix phonon"_fix_phonon.html "dynamical_matrix"_dynamical_matrix.html + +[Default:] + +The default settings are file = "third_order.dat", binary = no diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 91a9d0ba39..37677f1507 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -276,6 +276,7 @@ Broadwell Broglie brownian brownw +Broyden Bryantsev Btarget btype @@ -306,6 +307,7 @@ Cavium Cawkwell cbecker ccache +ccachepiecewise ccmake ccNspecies CCu @@ -624,6 +626,7 @@ Doye dpd DPD dpdTheta +dphi DPhil dr dR @@ -782,6 +785,7 @@ erotate Ertas ervel Espanol +eskm esu esub esw @@ -991,6 +995,7 @@ gmask Gmask gneb GNEB +Goldfarb googlemail Gordan GPa @@ -1410,6 +1415,7 @@ Laupretre lavenderblush lawngreen lB +lbfgs lbl LBtype lcbop @@ -1583,6 +1589,7 @@ Materias mathbf matlab matplotlib +Mattice Mattox Mattson maxangle @@ -2046,6 +2053,7 @@ Orsi ortho orthonormal orthorhombic +oso ot Otype Ouldridge @@ -2130,6 +2138,7 @@ ph Phillpot phiphi phonon +phonons phophorous phosphide Phs @@ -2143,6 +2152,7 @@ picograms picosecond picoseconds pid +piecewise Pieniazek Pieter pimd @@ -2277,6 +2287,7 @@ qoffload qopenmp qoverride qtb +quadratically quadrupolar Quant quartic @@ -2427,6 +2438,7 @@ Rodrigues Rohart Ronchetti Rosati +Rosenberger Rossky rosybrown rotationally @@ -2491,6 +2503,7 @@ Scripta sdk sdpd SDPD +se seagreen Secor sectoring @@ -2517,6 +2530,7 @@ setvel sfftw Sg Shan +Shanno shapex shapey shapez @@ -2584,6 +2598,7 @@ Snodin Sodani Soderlind solvated +solvation Sorensen soundspeed Souza @@ -2946,6 +2961,7 @@ vectorial vectorization Vectorization vectorized +Vegt vel Verlag verlet diff --git a/examples/README b/examples/README index 46148aea8b..47463a85d8 100644 --- a/examples/README +++ b/examples/README @@ -76,6 +76,7 @@ ellipse: ellipsoidal particles in spherical solvent, 2d system flow: Couette and Poiseuille flow in a 2d channel friction: frictional contact of spherical asperities between 2d surfaces gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command +gjf: use of fix langevin Gronbech-Jensen/Farago option granregion: use of fix wall/region/gran as boundary on granular particles hugoniostat: Hugoniostat shock dynamics hyper: global and local hyperdynamics of diffusion on Pt surface @@ -99,12 +100,11 @@ pour: pouring of granular particles into a 3d box, then chute flow prd: parallel replica dynamics of vacancy diffusion in bulk Si python: use of PYTHON package to invoke Python code from input script qeq: use of QEQ package for charge equilibration -reax: RDX and TATB models using the ReaxFF +reax: RDX and TATB and several other models using ReaxFF rigid: rigid bodies modeled as independent or coupled shear: sideways shear applied to 2d solid, with and without a void -snap: use of SNAP potential for Ta +snap: examples for using several bundled SNAP potentials srd: stochastic rotation dynamics (SRD) particles as solvent -snap: NVE dynamics for BCC tantalum crystal using SNAP potential steinhardt: Steinhardt-Nelson Q_l and W_l parameters usng orientorder/atom streitz: Streitz-Mintmire potential for Al2O3 tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si @@ -164,6 +164,12 @@ The MC directory has an example script for using LAMMPS as an energy-evaluation engine in a iterative Monte Carlo energy-relaxation loop. +The UNITS directory contains examples of input scripts modeling the +same Lennard-Jones liquid model, written in 3 different unit systems: +lj, real, and metal. So that you can see how to scale/unscale input +and output values read/written by LAMMPS to verify you are performing +the same simulation in different unit systems. + The USER directory contains subdirectories of user-provided example scripts for ser packages. See the README files in those directories for more info. See the doc/Section_start.html file for more info diff --git a/examples/SPIN/bfo/in.spin.bfo b/examples/SPIN/bfo/in.spin.bfo index e3c88b0f06..2cd9200121 100644 --- a/examples/SPIN/bfo/in.spin.bfo +++ b/examples/SPIN/bfo/in.spin.bfo @@ -32,7 +32,7 @@ neigh_modify every 10 check yes delay 20 fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice no +fix 3 all nve/spin lattice frozen timestep 0.0002 diff --git a/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc b/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc index ea98eeba94..9193faa798 100644 --- a/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc +++ b/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc @@ -35,7 +35,7 @@ fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp index 3f34838553..b9ede5f09c 100644 --- a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp +++ b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp @@ -37,7 +37,7 @@ neigh_modify every 10 check yes delay 20 fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 #fix 2 all langevin/spin 0.0 0.0 21 fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 diff --git a/examples/SPIN/dipole_spin/in.spin.iron_dipole_cut b/examples/SPIN/dipole_spin/in.spin.iron_dipole_cut index a409fe0563..34f7fea0d3 100644 --- a/examples/SPIN/dipole_spin/in.spin.iron_dipole_cut +++ b/examples/SPIN/dipole_spin/in.spin.iron_dipole_cut @@ -33,7 +33,7 @@ fix 1 all precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1 fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/dipole_spin/in.spin.iron_dipole_ewald b/examples/SPIN/dipole_spin/in.spin.iron_dipole_ewald index 58b44b55fe..f694bc5ddc 100644 --- a/examples/SPIN/dipole_spin/in.spin.iron_dipole_ewald +++ b/examples/SPIN/dipole_spin/in.spin.iron_dipole_ewald @@ -35,7 +35,7 @@ fix 1 all precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1 fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/dipole_spin/in.spin.iron_dipole_pppm b/examples/SPIN/dipole_spin/in.spin.iron_dipole_pppm index 28d7e4a4bc..4175038ade 100644 --- a/examples/SPIN/dipole_spin/in.spin.iron_dipole_pppm +++ b/examples/SPIN/dipole_spin/in.spin.iron_dipole_pppm @@ -36,7 +36,7 @@ fix 1 all precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1 fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/iron/in.spin.iron b/examples/SPIN/iron/in.spin.iron index bb1b0e1b4d..3468575493 100644 --- a/examples/SPIN/iron/in.spin.iron +++ b/examples/SPIN/iron/in.spin.iron @@ -33,7 +33,7 @@ neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/iron/in.spin.iron_cubic b/examples/SPIN/iron/in.spin.iron_cubic index d4703a2959..859d9df0fa 100644 --- a/examples/SPIN/iron/in.spin.iron_cubic +++ b/examples/SPIN/iron/in.spin.iron_cubic @@ -31,7 +31,7 @@ fix 1 all precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1 fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/nickel/in.spin.nickel b/examples/SPIN/nickel/in.spin.nickel index 0ed2fac410..caa1c940ae 100644 --- a/examples/SPIN/nickel/in.spin.nickel +++ b/examples/SPIN/nickel/in.spin.nickel @@ -33,7 +33,7 @@ neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/nickel/in.spin.nickel_cubic b/examples/SPIN/nickel/in.spin.nickel_cubic index 3c97b284ae..76ea23689a 100644 --- a/examples/SPIN/nickel/in.spin.nickel_cubic +++ b/examples/SPIN/nickel/in.spin.nickel_cubic @@ -35,7 +35,7 @@ fix 1 all precession/spin cubic -0.0001 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1. fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # compute and output options diff --git a/examples/SPIN/read_restart/in.spin.read_data b/examples/SPIN/read_restart/in.spin.read_data index a450421699..e788ecf67e 100644 --- a/examples/SPIN/read_restart/in.spin.read_data +++ b/examples/SPIN/read_restart/in.spin.read_data @@ -20,7 +20,7 @@ neigh_modify every 1 check no delay 0 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # define outputs and computes diff --git a/examples/SPIN/read_restart/in.spin.restart b/examples/SPIN/read_restart/in.spin.restart index 39157fdac4..ccce25b254 100644 --- a/examples/SPIN/read_restart/in.spin.restart +++ b/examples/SPIN/read_restart/in.spin.restart @@ -24,7 +24,7 @@ neigh_modify every 1 check no delay 0 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice yes +fix 3 all nve/spin lattice moving timestep 0.0001 # define outputs diff --git a/examples/SPIN/read_restart/in.spin.write_restart b/examples/SPIN/read_restart/in.spin.write_restart index 42f07fd316..c127101093 100644 --- a/examples/SPIN/read_restart/in.spin.write_restart +++ b/examples/SPIN/read_restart/in.spin.write_restart @@ -29,7 +29,7 @@ neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 fix 2 all langevin/spin 100.0 0.01 21 -fix 3 all nve/spin lattice no +fix 3 all nve/spin lattice frozen timestep 0.0001 # compute and output options diff --git a/examples/SPIN/setforce_spin/in.spinmin.setforce b/examples/SPIN/setforce_spin/in.spinmin.setforce index 10d4df66ed..822768e0ef 100644 --- a/examples/SPIN/setforce_spin/in.spinmin.setforce +++ b/examples/SPIN/setforce_spin/in.spinmin.setforce @@ -35,7 +35,7 @@ fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 5e-05 0.0 0.0 1.0 fix_modify 1 energy yes fix 2 fixed_spin setforce/spin 0.0 0.0 0.0 fix 3 all langevin/spin 0.0 0.1 21 -fix 4 all nve/spin lattice no +fix 4 all nve/spin lattice frozen timestep 0.0001 diff --git a/examples/SPIN/spinmin/in.spinmin_cg.bfo b/examples/SPIN/spinmin/in.spinmin_cg.bfo new file mode 100644 index 0000000000..9d57399a56 --- /dev/null +++ b/examples/SPIN/spinmin/in.spinmin_cg.bfo @@ -0,0 +1,54 @@ +# 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 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 100 +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/cg +# min_modify line spin_none discrete_factor 10.0 +minimize 1.0e-10 1.0e-10 10000 10000 diff --git a/examples/SPIN/spinmin/in.spinmin_lbfgs.bfo b/examples/SPIN/spinmin/in.spinmin_lbfgs.bfo new file mode 100644 index 0000000000..56cd6b8fae --- /dev/null +++ b/examples/SPIN/spinmin/in.spinmin_lbfgs.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 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/lbfgs +# min_modify line spin_cubic discrete_factor 10.0 +min_modify norm max +minimize 1.0e-15 1.0e-10 10000 1000 diff --git a/examples/UNITS/README b/examples/UNITS/README new file mode 100644 index 0000000000..3980b38688 --- /dev/null +++ b/examples/UNITS/README @@ -0,0 +1,54 @@ +This directory has 3 scripts which show how to run the same problem +using the 3 most common units system used in LAMMPS: lj, real, and +metal units. As stated on the units command doc page: + +"Any simulation you perform for one choice of units can be duplicated +with any other unit setting LAMMPS supports. ... To perform the same +simulation in a different set of units you must change all the +unit-based input parameters in your input script and other input files +(data file, potential files, etc) correctly to the new units. And you +must correctly convert all output from the new units to the old units +when comparing to the original results. That is often not simple to +do." + +These examples are meant to illustrate how to do this for a simple +Lennard-Jones liquid (argon). All of the scripts have a set of +variables defined at the top which can be changed as command line +arguments (e.g. -v cutoff 3.0). All 3 scripts give identical output, +modulo round-offs due to the finite precision of the conversion +factors used, either internally in LAMMPS or in the scripts. If there +were run for a long time, the trajectories would diverge, but they +would still give statistically identical results. + +The LJ script is the simplest; it is similar to the bench/in.lj +script. + +The real and metal scripts each have a set of variables at the top +which define scale factors for converting quantities like distance, +energy, pressure from reduced LJ units to real or metal units. Once +these are defined the rest of the input script is very similar to the +LJ script. The approprate scale factor is applied to every input. +Output quantities are printed in both the native real/metal units and +unscaled back to LJ units. So that you can see the outputs are the +same if you examine the log files. Comments about this comparison +are at the bottom of the real and metal scripts. + +These 3 scripts are provided, because converting from lj reduced units +to physical units (e.g. real or metal) or vice versa is the trickiest +case. Converting input scripts between 2 sets of physical units +(e.g. reak <--> metal) is much easier. But you can use the same ideas +as in these scripts; just define a set of scale/unscale factors. + +See Allen & Tildesley's Computer Simulation of Liquids, Appendix B for +a nice discussion of reduced units. It will explain the conversion +formulas used in the real and metal scripts. + +Hopefully, if you study these scripts, you should be able to convert +an input script of your own, written in one set of units, to an +identical input script in an alternate set of units. Where +"identical" means it runs the same simulation in a statistical sense. + +You can find the full set of scale factors LAMMPS uses internally for +different unit systems it supports, at the top of the src/udpate.cpp +file. A couple of those values are used in the real and metal +scripts. diff --git a/examples/UNITS/in.ar.lj b/examples/UNITS/in.ar.lj new file mode 100644 index 0000000000..264ead8ab8 --- /dev/null +++ b/examples/UNITS/in.ar.lj @@ -0,0 +1,43 @@ +# Ar in lj units + +# simulation params in reduced units +# settable from command line +# epsilon = sigma = mass = 1.0 + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# script + +units lj +atom_style atomic + +lattice fcc ${rhostar} +region box block 0 $x 0 $y 0 $z +create_box 1 box +create_atoms 1 box +mass 1 1.0 + +velocity all create ${tinitial} 12345 + +pair_style lj/cut ${cutoff} +pair_coeff 1 1 1.0 1.0 + +neighbor ${skin} bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep ${dt} + +thermo 10 + +run 100 diff --git a/examples/UNITS/in.ar.metal b/examples/UNITS/in.ar.metal new file mode 100644 index 0000000000..50f105530e --- /dev/null +++ b/examples/UNITS/in.ar.metal @@ -0,0 +1,98 @@ +# Ar in metal units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 8.617343e-5 # kB in eV/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in metal units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in eV +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to eV +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to ps +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule), mass (kg/atom), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to bars +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to bars + +variable eVtoJoule index 1.602e-19 # convert eV to Joules +variable NtMtoAtm equal 1.0e-5 # convert Nt/meter^2 to bars + +variable tmpscale equal ${epskb} +variable epsilonJ equal ${epsilon}*${eVtoJoule} +variable massKgAtom equal ${mass}/1000.0/${avogadro} +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable tscale equal 1.0e12/sqrt(${epsilonJ}/${massKgAtom}/${sigmaMsq}) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsilonJ})) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable epair equal epair/${epsilon} +variable emol equal emol/${epsilon} +variable etotal equal etotal/${epsilon} +variable press equal press/${pscale} + +# same script as in.ar.lj + +units metal +atom_style atomic + +lattice fcc ${alat} +region box block 0 $x 0 $y 0 $z +create_box 1 box +create_atoms 1 box +mass 1 ${mass} + +velocity all create $(v_tinitial*v_epskb) 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_coeff 1 1 ${epsilon} ${sigma} + +neighbor $(v_skin*v_sigma) bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) + +# columns 2,3,4 = temp,pe,press in metal units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include metal unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} + +run ${nsteps} diff --git a/examples/UNITS/in.ar.real b/examples/UNITS/in.ar.real new file mode 100644 index 0000000000..ea9670e599 --- /dev/null +++ b/examples/UNITS/in.ar.real @@ -0,0 +1,98 @@ +# Ar in real units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 0.0019872067 # kB in Kcal/mole/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in real units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in Kcal/mole +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to Kcal/mole +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to fs +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule/mole), mass (kg/mole), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to atmospheres +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to atms + +variable KcaltoJoule index 4.1868e3 # convert Kcals to Joules +variable NtMtoAtm equal 1.0/1.0135e5 # convert Nt/meter^2 to Atmospheres + +variable tmpscale equal ${epskb} +variable epsJmole equal ${epsilon}*${KcaltoJoule} +variable massKgmole equal ${mass}/1000.0 +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable tscale equal 1.0e15/sqrt(${epsJmole}/${massKgmole}/${sigmaMsq}) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsJmole}/${avogadro})) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable epair equal epair/${epsilon} +variable emol equal emol/${epsilon} +variable etotal equal etotal/${epsilon} +variable press equal press/${pscale} + +# same script as in.ar.lj + +units real +atom_style atomic + +lattice fcc ${alat} +region box block 0 $x 0 $y 0 $z +create_box 1 box +create_atoms 1 box +mass 1 ${mass} + +velocity all create $(v_tinitial*v_epskb) 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_coeff 1 1 ${epsilon} ${sigma} + +neighbor $(v_skin*v_sigma) bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) + +# columns 2,3,4 = temp,pe,press in real units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include real unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} + +run ${nsteps} diff --git a/examples/UNITS/log.ar.lj.8Oct19.g++.1 b/examples/UNITS/log.ar.lj.8Oct19.g++.1 new file mode 100644 index 0000000000..39c3143cf5 --- /dev/null +++ b/examples/UNITS/log.ar.lj.8Oct19.g++.1 @@ -0,0 +1,109 @@ +LAMMPS (19 Sep 2019) +# Ar in lj units + +# simulation params in reduced units +# settable from command line +# epsilon = sigma = mass = 1.0 + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# script + +units lj +atom_style atomic + +lattice fcc ${rhostar} +lattice fcc 0.8842 +Lattice spacing in x,y,z = 1.65388 1.65388 1.65388 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (8.26938 8.26938 8.26938) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000547171 secs +mass 1 1.0 + +velocity all create ${tinitial} 12345 +velocity all create 1.0 12345 + +pair_style lj/cut ${cutoff} +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 + +neighbor ${skin} bin +neighbor 0.3 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep ${dt} +timestep 0.005 + +thermo 10 + +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.644 | 2.644 | 2.644 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -7.1026383 0 -5.6056383 -5.1224757 + 10 0.74213042 -6.7245488 0 -5.6135795 -3.1363153 + 20 0.36167746 -6.1681704 0 -5.6267393 -0.40461854 + 30 0.4684512 -6.3315744 0 -5.630303 -1.0390065 + 40 0.46774191 -6.3308002 0 -5.6305906 -1.077533 + 50 0.48323399 -6.3533122 0 -5.6299109 -1.1506287 + 60 0.49569105 -6.3711644 0 -5.6291149 -1.2296104 + 70 0.5208333 -6.4096336 0 -5.6299462 -1.4483636 + 80 0.53708431 -6.4345933 0 -5.6305781 -1.5945708 + 90 0.52618946 -6.4185937 0 -5.6308881 -1.5264055 + 100 0.52862701 -6.4231724 0 -5.6318178 -1.5714077 +Loop time of 0.065218 on 1 procs for 100 steps with 500 atoms + +Performance: 662394.104 tau/day, 1533.320 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.053584 | 0.053584 | 0.053584 | 0.0 | 82.16 +Neigh | 0.0075939 | 0.0075939 | 0.0075939 | 0.0 | 11.64 +Comm | 0.0022638 | 0.0022638 | 0.0022638 | 0.0 | 3.47 +Output | 0.00021172 | 0.00021172 | 0.00021172 | 0.0 | 0.32 +Modify | 0.0011077 | 0.0011077 | 0.0011077 | 0.0 | 1.70 +Other | | 0.0004568 | | | 0.70 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1946 ave 1946 max 1946 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19572 ave 19572 max 19572 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 19572 +Ave neighs/atom = 39.144 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/UNITS/log.ar.lj.8Oct19.g++.4 b/examples/UNITS/log.ar.lj.8Oct19.g++.4 new file mode 100644 index 0000000000..dba5ffb66a --- /dev/null +++ b/examples/UNITS/log.ar.lj.8Oct19.g++.4 @@ -0,0 +1,109 @@ +LAMMPS (19 Sep 2019) +# Ar in lj units + +# simulation params in reduced units +# settable from command line +# epsilon = sigma = mass = 1.0 + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# script + +units lj +atom_style atomic + +lattice fcc ${rhostar} +lattice fcc 0.8842 +Lattice spacing in x,y,z = 1.65388 1.65388 1.65388 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (8.26938 8.26938 8.26938) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000570774 secs +mass 1 1.0 + +velocity all create ${tinitial} 12345 +velocity all create 1.0 12345 + +pair_style lj/cut ${cutoff} +pair_style lj/cut 2.5 +pair_coeff 1 1 1.0 1.0 + +neighbor ${skin} bin +neighbor 0.3 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep ${dt} +timestep 0.005 + +thermo 10 + +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.609 | 2.609 | 2.609 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -7.1026383 0 -5.6056383 -5.1224757 + 10 0.73621446 -6.7154544 0 -5.6133413 -3.089257 + 20 0.35775263 -6.1618707 0 -5.626315 -0.37875949 + 30 0.47139877 -6.3359656 0 -5.6302816 -1.1018761 + 40 0.46337135 -6.3247084 0 -5.6310415 -1.0985336 + 50 0.48738877 -6.360393 0 -5.630772 -1.2274707 + 60 0.50832261 -6.3913892 0 -5.6304302 -1.374293 + 70 0.50988271 -6.3936997 0 -5.6304053 -1.4112286 + 80 0.53931444 -6.4367444 0 -5.6293906 -1.6484686 + 90 0.55277272 -6.4563334 0 -5.6288326 -1.760598 + 100 0.54916776 -6.4507537 0 -5.6286495 -1.728837 +Loop time of 0.0237499 on 4 procs for 100 steps with 500 atoms + +Performance: 1818955.951 tau/day, 4210.546 timesteps/s +97.1% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.0098808 | 0.011585 | 0.015043 | 1.9 | 48.78 +Neigh | 0.0015168 | 0.0017335 | 0.001997 | 0.4 | 7.30 +Comm | 0.005949 | 0.0097297 | 0.011739 | 2.3 | 40.97 +Output | 0.00019789 | 0.0002324 | 0.00032282 | 0.0 | 0.98 +Modify | 0.00021482 | 0.00025994 | 0.00031853 | 0.0 | 1.09 +Other | | 0.0002095 | | | 0.88 + +Nlocal: 125 ave 133 max 117 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 1099 ave 1107 max 1091 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Neighs: 4909 ave 5493 max 4644 min +Histogram: 1 2 0 0 0 0 0 0 0 1 + +Total # of neighbors = 19636 +Ave neighs/atom = 39.272 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/UNITS/log.ar.metal.8Oct19.g++.1 b/examples/UNITS/log.ar.metal.8Oct19.g++.1 new file mode 100644 index 0000000000..8bcf54f6ed --- /dev/null +++ b/examples/UNITS/log.ar.metal.8Oct19.g++.1 @@ -0,0 +1,197 @@ +LAMMPS (19 Sep 2019) +# Ar in metal units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 8.617343e-5 # kB in eV/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in metal units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in eV +variable epsilon equal 117.7*${kb} +variable epsilon equal 117.7*8.617343e-5 +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to eV +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to ps +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule), mass (kg/atom), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to bars +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to bars + +variable eVtoJoule index 1.602e-19 # convert eV to Joules +variable NtMtoAtm equal 1.0e-5 # convert Nt/meter^2 to bars + +variable tmpscale equal ${epskb} +variable tmpscale equal 117.7 +variable epsilonJ equal ${epsilon}*${eVtoJoule} +variable epsilonJ equal 0.010142612711*${eVtoJoule} +variable epsilonJ equal 0.010142612711*1.602e-19 +variable massKgAtom equal ${mass}/1000.0/${avogadro} +variable massKgAtom equal 39.95/1000.0/${avogadro} +variable massKgAtom equal 39.95/1000.0/6.02214129e23 +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaM equal 3.504/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable sigmaMsq equal 3.504e-10*${sigmaM} +variable sigmaMsq equal 3.504e-10*3.504e-10 +variable tscale equal 1.0e12/sqrt(${epsilonJ}/${massKgAtom}/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/${massKgAtom}/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/6.6338529895236e-26/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/6.6338529895236e-26/1.2278016e-19) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*3.504e-10 +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsilonJ})) +variable pscale equal 1e-05/(${sigmaM3}/(${epsilonJ})) +variable pscale equal 1e-05/(4.3022168064e-29/(${epsilonJ})) +variable pscale equal 1e-05/(4.3022168064e-29/(1.6248465563022e-21)) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/0.8842)^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable temp equal temp/117.7 +variable epair equal epair/${epsilon} +variable epair equal epair/0.010142612711 +variable emol equal emol/${epsilon} +variable emol equal emol/0.010142612711 +variable etotal equal etotal/${epsilon} +variable etotal equal etotal/0.010142612711 +variable press equal press/${pscale} +variable press equal press/377.676586146256 + +# same script as in.ar.lj + +units metal +atom_style atomic + +lattice fcc ${alat} +lattice fcc 5.79518437579763 +Lattice spacing in x,y,z = 5.79518 5.79518 5.79518 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (28.9759 28.9759 28.9759) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000549078 secs +mass 1 ${mass} +mass 1 39.95 + +velocity all create $(v_tinitial*v_epskb) 12345 +velocity all create 117.70000000000000284 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_style lj/cut 8.7599999999999997868 +pair_coeff 1 1 ${epsilon} ${sigma} +pair_coeff 1 1 0.010142612711 ${sigma} +pair_coeff 1 1 0.010142612711 3.504 + +neighbor $(v_skin*v_sigma) bin +neighbor 1.0511999999999999122 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) +timestep 0.011194658410003900315 + +# columns 2,3,4 = temp,pe,press in metal units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include metal unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} +thermo 10 + +run ${nsteps} +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 9.8112 + ghost atom cutoff = 9.8112 + binsize = 4.9056, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.644 | 2.644 | 2.644 Mbytes +Step Temp PotEng Press v_temp v_epair v_emol v_etotal v_press + 0 117.7 -0.07203931 -1934.8523 1 -7.1026383 0 -5.6056383 -5.12304 + 10 87.345225 -0.06820404 -1184.5618 0.74210047 -6.724504 0 -5.6135796 -3.1364449 + 20 42.569809 -0.062561408 -152.82812 0.36168062 -6.1681748 0 -5.6267389 -0.40465341 + 30 55.137637 -0.064219154 -392.49645 0.46845911 -6.3316185 0 -5.6303352 -1.0392396 + 40 55.053014 -0.064210828 -406.99941 0.46774014 -6.3307976 0 -5.6305906 -1.07764 + 50 56.87723 -0.064439241 -434.61958 0.483239 -6.3533177 0 -5.6299089 -1.1507718 + 60 58.344019 -0.064620383 -464.4684 0.4957011 -6.3711772 0 -5.6291126 -1.2298046 + 70 61.30301 -0.065010529 -547.09852 0.5208412 -6.4096433 0 -5.629944 -1.44859 + 80 63.214836 -0.065263563 -602.29599 0.53708442 -6.4345909 0 -5.6305755 -1.5947401 + 90 61.931826 -0.065101194 -576.5342 0.52618374 -6.4185823 0 -5.6308852 -1.5265288 + 100 62.221816 -0.065148028 -593.59878 0.52864755 -6.4231998 0 -5.6318144 -1.5717119 +Loop time of 0.04864 on 1 procs for 100 steps with 500 atoms + +Performance: 1988.524 ns/day, 0.012 hours/ns, 2055.921 timesteps/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.039802 | 0.039802 | 0.039802 | 0.0 | 81.83 +Neigh | 0.0057771 | 0.0057771 | 0.0057771 | 0.0 | 11.88 +Comm | 0.0015905 | 0.0015905 | 0.0015905 | 0.0 | 3.27 +Output | 0.00033736 | 0.00033736 | 0.00033736 | 0.0 | 0.69 +Modify | 0.00077343 | 0.00077343 | 0.00077343 | 0.0 | 1.59 +Other | | 0.0003595 | | | 0.74 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1946 ave 1946 max 1946 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19572 ave 19572 max 19572 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 19572 +Ave neighs/atom = 39.144 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/UNITS/log.ar.metal.8Oct19.g++.4 b/examples/UNITS/log.ar.metal.8Oct19.g++.4 new file mode 100644 index 0000000000..5a88231128 --- /dev/null +++ b/examples/UNITS/log.ar.metal.8Oct19.g++.4 @@ -0,0 +1,197 @@ +LAMMPS (19 Sep 2019) +# Ar in metal units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 8.617343e-5 # kB in eV/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in metal units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in eV +variable epsilon equal 117.7*${kb} +variable epsilon equal 117.7*8.617343e-5 +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to eV +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to ps +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule), mass (kg/atom), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to bars +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to bars + +variable eVtoJoule index 1.602e-19 # convert eV to Joules +variable NtMtoAtm equal 1.0e-5 # convert Nt/meter^2 to bars + +variable tmpscale equal ${epskb} +variable tmpscale equal 117.7 +variable epsilonJ equal ${epsilon}*${eVtoJoule} +variable epsilonJ equal 0.010142612711*${eVtoJoule} +variable epsilonJ equal 0.010142612711*1.602e-19 +variable massKgAtom equal ${mass}/1000.0/${avogadro} +variable massKgAtom equal 39.95/1000.0/${avogadro} +variable massKgAtom equal 39.95/1000.0/6.02214129e23 +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaM equal 3.504/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable sigmaMsq equal 3.504e-10*${sigmaM} +variable sigmaMsq equal 3.504e-10*3.504e-10 +variable tscale equal 1.0e12/sqrt(${epsilonJ}/${massKgAtom}/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/${massKgAtom}/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/6.6338529895236e-26/${sigmaMsq}) +variable tscale equal 1.0e12/sqrt(1.6248465563022e-21/6.6338529895236e-26/1.2278016e-19) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*3.504e-10 +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsilonJ})) +variable pscale equal 1e-05/(${sigmaM3}/(${epsilonJ})) +variable pscale equal 1e-05/(4.3022168064e-29/(${epsilonJ})) +variable pscale equal 1e-05/(4.3022168064e-29/(1.6248465563022e-21)) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/0.8842)^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable temp equal temp/117.7 +variable epair equal epair/${epsilon} +variable epair equal epair/0.010142612711 +variable emol equal emol/${epsilon} +variable emol equal emol/0.010142612711 +variable etotal equal etotal/${epsilon} +variable etotal equal etotal/0.010142612711 +variable press equal press/${pscale} +variable press equal press/377.676586146256 + +# same script as in.ar.lj + +units metal +atom_style atomic + +lattice fcc ${alat} +lattice fcc 5.79518437579763 +Lattice spacing in x,y,z = 5.79518 5.79518 5.79518 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (28.9759 28.9759 28.9759) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000674009 secs +mass 1 ${mass} +mass 1 39.95 + +velocity all create $(v_tinitial*v_epskb) 12345 +velocity all create 117.70000000000000284 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_style lj/cut 8.7599999999999997868 +pair_coeff 1 1 ${epsilon} ${sigma} +pair_coeff 1 1 0.010142612711 ${sigma} +pair_coeff 1 1 0.010142612711 3.504 + +neighbor $(v_skin*v_sigma) bin +neighbor 1.0511999999999999122 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) +timestep 0.011194658410003900315 + +# columns 2,3,4 = temp,pe,press in metal units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include metal unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} +thermo 10 + +run ${nsteps} +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 9.8112 + ghost atom cutoff = 9.8112 + binsize = 4.9056, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.609 | 2.609 | 2.609 Mbytes +Step Temp PotEng Press v_temp v_epair v_emol v_etotal v_press + 0 117.7 -0.07203931 -1934.8523 1 -7.1026383 0 -5.6056383 -5.12304 + 10 86.648851 -0.06811179 -1166.7855 0.73618395 -6.7154088 0 -5.6133414 -3.0893774 + 20 42.107954 -0.062497536 -143.06615 0.35775662 -6.1618774 0 -5.6263157 -0.37880598 + 30 55.484504 -0.064263032 -416.20245 0.47140615 -6.3359445 0 -5.6302495 -1.1020075 + 40 54.538222 -0.064148334 -414.88071 0.46336637 -6.3246361 0 -5.6309766 -1.0985079 + 50 57.367693 -0.064511259 -463.67683 0.48740606 -6.3604182 0 -5.6307714 -1.2277087 + 60 59.828794 -0.064824938 -519.05997 0.50831601 -6.3913451 0 -5.630396 -1.3743504 + 70 60.014616 -0.064848979 -533.07604 0.50989478 -6.3937154 0 -5.6304029 -1.4114617 + 80 63.47861 -0.065285885 -622.71073 0.53932549 -6.4367917 0 -5.6294215 -1.6487936 + 90 65.060881 -0.065484011 -664.99883 0.55276874 -6.4563257 0 -5.6288309 -1.7607627 + 100 64.637033 -0.065427467 -653.00765 0.54916765 -6.4507508 0 -5.6286468 -1.7290128 +Loop time of 0.0258265 on 4 procs for 100 steps with 500 atoms + +Performance: 3745.060 ns/day, 0.006 hours/ns, 3871.990 timesteps/s +99.6% 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.0090213 | 0.012419 | 0.015494 | 2.1 | 48.09 +Neigh | 0.0013709 | 0.0018765 | 0.0022483 | 0.7 | 7.27 +Comm | 0.0071132 | 0.010597 | 0.014538 | 2.6 | 41.03 +Output | 0.00039983 | 0.00042897 | 0.00049567 | 0.0 | 1.66 +Modify | 0.00024104 | 0.00028801 | 0.00031543 | 0.0 | 1.12 +Other | | 0.0002173 | | | 0.84 + +Nlocal: 125 ave 133 max 117 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 1099 ave 1107 max 1091 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Neighs: 4908.75 ave 5492 max 4644 min +Histogram: 1 2 0 0 0 0 0 0 0 1 + +Total # of neighbors = 19635 +Ave neighs/atom = 39.27 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/UNITS/log.ar.real.8Oct19.g++.1 b/examples/UNITS/log.ar.real.8Oct19.g++.1 new file mode 100644 index 0000000000..7c046ab965 --- /dev/null +++ b/examples/UNITS/log.ar.real.8Oct19.g++.1 @@ -0,0 +1,197 @@ +LAMMPS (19 Sep 2019) +# Ar in real units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 0.0019872067 # kB in Kcal/mole/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in real units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in Kcal/mole +variable epsilon equal 117.7*${kb} +variable epsilon equal 117.7*0.0019872067 +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to Kcal/mole +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to fs +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule/mole), mass (kg/mole), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to atmospheres +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to atms + +variable KcaltoJoule index 4.1868e3 # convert Kcals to Joules +variable NtMtoAtm equal 1.0/1.0135e5 # convert Nt/meter^2 to Atmospheres + +variable tmpscale equal ${epskb} +variable tmpscale equal 117.7 +variable epsJmole equal ${epsilon}*${KcaltoJoule} +variable epsJmole equal 0.23389422859*${KcaltoJoule} +variable epsJmole equal 0.23389422859*4.1868e3 +variable massKgmole equal ${mass}/1000.0 +variable massKgmole equal 39.95/1000.0 +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaM equal 3.504/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable sigmaMsq equal 3.504e-10*${sigmaM} +variable sigmaMsq equal 3.504e-10*3.504e-10 +variable tscale equal 1.0e15/sqrt(${epsJmole}/${massKgmole}/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/${massKgmole}/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/0.03995/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/0.03995/1.2278016e-19) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*3.504e-10 +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(${sigmaM3}/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(979.268356260612/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(979.268356260612/6.02214129e23)) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/0.8842)^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable temp equal temp/117.7 +variable epair equal epair/${epsilon} +variable epair equal epair/0.23389422859 +variable emol equal emol/${epsilon} +variable emol equal emol/0.23389422859 +variable etotal equal etotal/${epsilon} +variable etotal equal etotal/0.23389422859 +variable press equal press/${pscale} +variable press equal press/372.936366301003 + +# same script as in.ar.lj + +units real +atom_style atomic + +lattice fcc ${alat} +lattice fcc 5.79518437579763 +Lattice spacing in x,y,z = 5.79518 5.79518 5.79518 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (28.9759 28.9759 28.9759) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000550985 secs +mass 1 ${mass} +mass 1 39.95 + +velocity all create $(v_tinitial*v_epskb) 12345 +velocity all create 117.70000000000000284 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_style lj/cut 8.7599999999999997868 +pair_coeff 1 1 ${epsilon} ${sigma} +pair_coeff 1 1 0.23389422859 ${sigma} +pair_coeff 1 1 0.23389422859 3.504 + +neighbor $(v_skin*v_sigma) bin +neighbor 1.0511999999999999122 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) +timestep 11.190297512378050371 + +# columns 2,3,4 = temp,pe,press in real units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include real unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} +thermo 10 + +run ${nsteps} +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 9.8112 + ghost atom cutoff = 9.8112 + binsize = 4.9056, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.644 | 2.644 | 2.644 Mbytes +Step Temp PotEng Press v_temp v_epair v_emol v_etotal v_press + 0 117.7 -1.6612661 -1909.5509 1 -7.1026383 0 -5.6056383 -5.1203128 + 10 87.369977 -1.5728967 -1169.6414 0.74231077 -6.7248204 0 -5.6135812 -3.1363029 + 20 42.567295 -1.4427006 -150.87379 0.36165926 -6.1681752 0 -5.6267713 -0.40455638 + 30 55.130978 -1.480902 -387.17817 0.46840253 -6.3315028 0 -5.6303042 -1.0381883 + 40 55.054202 -1.4807485 -401.72653 0.46775023 -6.3308469 0 -5.6306248 -1.0771986 + 50 56.873955 -1.4860029 -428.9126 0.48321117 -6.3533113 0 -5.6299442 -1.1500959 + 60 58.33701 -1.490161 -458.23636 0.49564154 -6.3710892 0 -5.6291138 -1.2287253 + 70 61.29671 -1.4991528 -539.72484 0.52078768 -6.4095331 0 -5.629914 -1.4472304 + 80 63.214984 -1.504992 -594.34987 0.53708567 -6.4344983 0 -5.630481 -1.5937032 + 90 61.936907 -1.5013008 -569.13985 0.5262269 -6.4187169 0 -5.6309552 -1.5261045 + 100 62.20662 -1.5023046 -585.49121 0.52851844 -6.4230083 0 -5.6318162 -1.5699494 +Loop time of 0.047307 on 1 procs for 100 steps with 500 atoms + +Performance: 2043.760 ns/day, 0.012 hours/ns, 2113.851 timesteps/s +98.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.038646 | 0.038646 | 0.038646 | 0.0 | 81.69 +Neigh | 0.0056832 | 0.0056832 | 0.0056832 | 0.0 | 12.01 +Comm | 0.0015347 | 0.0015347 | 0.0015347 | 0.0 | 3.24 +Output | 0.0003581 | 0.0003581 | 0.0003581 | 0.0 | 0.76 +Modify | 0.00075364 | 0.00075364 | 0.00075364 | 0.0 | 1.59 +Other | | 0.0003314 | | | 0.70 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1946 ave 1946 max 1946 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19572 ave 19572 max 19572 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 19572 +Ave neighs/atom = 39.144 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/UNITS/log.ar.real.8Oct19.g++.4 b/examples/UNITS/log.ar.real.8Oct19.g++.4 new file mode 100644 index 0000000000..d5c01eb22d --- /dev/null +++ b/examples/UNITS/log.ar.real.8Oct19.g++.4 @@ -0,0 +1,197 @@ +LAMMPS (19 Sep 2019) +# Ar in real units + +# simulation params in reduced units +# settable from command line +# epsilon, sigma, mass set below + +variable x index 5 +variable y index 5 +variable z index 5 +variable rhostar index 0.8842 +variable dt index 0.005 +variable cutoff index 2.5 +variable skin index 0.3 +variable tinitial index 1.0 +variable nthermo index 10 +variable nsteps index 100 + +# physical constants from update.cpp + +variable kb index 0.0019872067 # kB in Kcal/mole/K +variable avogadro index 6.02214129e23 # Avogadro's number + +# Ar properties in real units + +variable epskb index 117.7 # LJ epsilon/kB in degrees K +variable sigma index 3.504 # LJ sigma in Angstroms +variable epsilon equal ${epskb}*${kb} # LJ epsilon in Kcal/mole +variable epsilon equal 117.7*${kb} +variable epsilon equal 117.7*0.0019872067 +variable mass index 39.95 # mass in g/mole + +# scale factors + +# sigma = scale factor on distance, converts reduced distance to Angs +# epsilon = scale factor on energy, converts reduced energy to Kcal/mole +# tmpscale = scale factor on temperature, converts reduced temp to degrees K +# tscale = scale factor on time, converts reduced time to fs +# formula is t = t* / sqrt(epsilon/mass/sigma^2), but need t in fs +# use epsilon (Joule/mole), mass (kg/mole), sigma (meter) to get t in seconds +# pscale = scale factor on pressure, converts reduced pressure to atmospheres +# formula is P = P* / (sigma^3/epsilon), but need P in atmospheres +# use sigma (meter), epsilon (Joule) to get P in nt/meter^2, convert to atms + +variable KcaltoJoule index 4.1868e3 # convert Kcals to Joules +variable NtMtoAtm equal 1.0/1.0135e5 # convert Nt/meter^2 to Atmospheres + +variable tmpscale equal ${epskb} +variable tmpscale equal 117.7 +variable epsJmole equal ${epsilon}*${KcaltoJoule} +variable epsJmole equal 0.23389422859*${KcaltoJoule} +variable epsJmole equal 0.23389422859*4.1868e3 +variable massKgmole equal ${mass}/1000.0 +variable massKgmole equal 39.95/1000.0 +variable sigmaM equal ${sigma}/1.0e10 +variable sigmaM equal 3.504/1.0e10 +variable sigmaMsq equal ${sigmaM}*${sigmaM} +variable sigmaMsq equal 3.504e-10*${sigmaM} +variable sigmaMsq equal 3.504e-10*3.504e-10 +variable tscale equal 1.0e15/sqrt(${epsJmole}/${massKgmole}/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/${massKgmole}/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/0.03995/${sigmaMsq}) +variable tscale equal 1.0e15/sqrt(979.268356260612/0.03995/1.2278016e-19) +variable sigmaM3 equal ${sigmaM}*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*${sigmaM}*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*${sigmaM} +variable sigmaM3 equal 3.504e-10*3.504e-10*3.504e-10 +variable pscale equal ${NtMtoAtm}/(${sigmaM3}/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(${sigmaM3}/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(${epsJmole}/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(979.268356260612/${avogadro})) +variable pscale equal 9.86679822397632e-06/(4.3022168064e-29/(979.268356260612/6.02214129e23)) + +# variables +# alat = lattice constant in Angs (at reduced density rhostar) +# temp = reduced temperature for output +# epair,emol,etotal = reduced epair,emol,etotal energies for output +# press = reduced pressure for output + +variable alat equal (4.0*${sigma}*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*${sigma}*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*${sigma}/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/${rhostar})^(1.0/3.0) +variable alat equal (4.0*3.504*3.504*3.504/0.8842)^(1.0/3.0) +variable temp equal temp/${tmpscale} +variable temp equal temp/117.7 +variable epair equal epair/${epsilon} +variable epair equal epair/0.23389422859 +variable emol equal emol/${epsilon} +variable emol equal emol/0.23389422859 +variable etotal equal etotal/${epsilon} +variable etotal equal etotal/0.23389422859 +variable press equal press/${pscale} +variable press equal press/372.936366301003 + +# same script as in.ar.lj + +units real +atom_style atomic + +lattice fcc ${alat} +lattice fcc 5.79518437579763 +Lattice spacing in x,y,z = 5.79518 5.79518 5.79518 +region box block 0 $x 0 $y 0 $z +region box block 0 5 0 $y 0 $z +region box block 0 5 0 5 0 $z +region box block 0 5 0 5 0 5 +create_box 1 box +Created orthogonal box = (0 0 0) to (28.9759 28.9759 28.9759) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000664949 secs +mass 1 ${mass} +mass 1 39.95 + +velocity all create $(v_tinitial*v_epskb) 12345 +velocity all create 117.70000000000000284 12345 + +pair_style lj/cut $(v_cutoff*v_sigma) +pair_style lj/cut 8.7599999999999997868 +pair_coeff 1 1 ${epsilon} ${sigma} +pair_coeff 1 1 0.23389422859 ${sigma} +pair_coeff 1 1 0.23389422859 3.504 + +neighbor $(v_skin*v_sigma) bin +neighbor 1.0511999999999999122 bin +neigh_modify delay 0 every 20 check no + +fix 1 all nve + +timestep $(v_dt*v_tscale) +timestep 11.190297512378050371 + +# columns 2,3,4 = temp,pe,press in real units +# columns 5-9 = temp,energy.press in reduced units, compare to in.ar.lj +# need to include real unit output to enable use of reduced variables + +thermo_style custom step temp pe press v_temp v_epair v_emol v_etotal v_press +thermo_modify norm yes +thermo ${nthermo} +thermo 10 + +run ${nsteps} +run 100 +Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 9.8112 + ghost atom cutoff = 9.8112 + binsize = 4.9056, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 2.609 | 2.609 | 2.609 Mbytes +Step Temp PotEng Press v_temp v_epair v_emol v_etotal v_press + 0 117.7 -1.6612661 -1909.5509 1 -7.1026383 0 -5.6056383 -5.1203128 + 10 86.674156 -1.5707707 -1152.1077 0.73639895 -6.715731 0 -5.6133417 -3.0892877 + 20 42.104452 -1.4412091 -141.16344 0.35772687 -6.1617986 0 -5.6262815 -0.37851883 + 30 55.478223 -1.4819221 -410.58592 0.47135278 -6.3358644 0 -5.6302493 -1.1009544 + 40 54.54231 -1.4793231 -409.58446 0.4634011 -6.3247524 0 -5.631041 -1.098269 + 50 57.354168 -1.4876242 -457.34719 0.48729115 -6.3602431 0 -5.6307682 -1.2263411 + 60 59.835295 -1.4949249 -512.38519 0.50837124 -6.391457 0 -5.6304252 -1.3739212 + 70 60.005554 -1.4954174 -525.858 0.50981779 -6.3935625 0 -5.6303653 -1.4100475 + 80 63.469566 -1.505493 -614.29111 0.53924865 -6.4366403 0 -5.6293851 -1.6471741 + 90 65.064012 -1.5100983 -656.32951 0.55279535 -6.4563301 0 -5.6287955 -1.7598968 + 100 64.63774 -1.5088033 -644.51211 0.54917366 -6.4507932 0 -5.6286803 -1.7282093 +Loop time of 0.0285767 on 4 procs for 100 steps with 500 atoms + +Performance: 3383.318 ns/day, 0.007 hours/ns, 3499.350 timesteps/s +99.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.012398 | 0.014826 | 0.016774 | 1.6 | 51.88 +Neigh | 0.001797 | 0.0021547 | 0.0025899 | 0.6 | 7.54 +Comm | 0.0079622 | 0.010444 | 0.013427 | 2.3 | 36.55 +Output | 0.00042987 | 0.00047708 | 0.00059676 | 0.0 | 1.67 +Modify | 0.00028896 | 0.00038844 | 0.00049448 | 0.0 | 1.36 +Other | | 0.0002864 | | | 1.00 + +Nlocal: 125 ave 133 max 117 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Nghost: 1099 ave 1107 max 1091 min +Histogram: 1 0 0 1 0 0 1 0 0 1 +Neighs: 4908.75 ave 5493 max 4644 min +Histogram: 1 2 0 0 0 0 0 0 0 1 + +Total # of neighbors = 19635 +Ave neighs/atom = 39.27 +Neighbor list builds = 5 +Dangerous builds not checked +Total wall time: 0:00:00 diff --git a/examples/USER/drude/toluene/data.toluene b/examples/USER/drude/toluene/data.toluene index 48d44016d7..d67af7c311 100644 --- a/examples/USER/drude/toluene/data.toluene +++ b/examples/USER/drude/toluene/data.toluene @@ -79,10 +79,10 @@ Dihedral Coeffs Improper Coeffs - 1 0.0000 2.1999 0.0000 0.0000 # CAO-CAO-CAT-CTT - 2 0.0000 2.1999 0.0000 0.0000 # CAT-CAM-CAO-HAT - 3 0.0000 2.1999 0.0000 0.0000 # CAO-CAP-CAM-HAT - 4 0.0000 2.1999 0.0000 0.0000 # CAM-CAM-CAP-HAT + 1 2.1999 0.0000 0.0000 -1.0000 0 # CAO-CAO-CAT-CTT + 2 2.1999 0.0000 0.0000 -1.0000 0 # CAT-CAM-CAO-HAT + 3 2.1999 0.0000 0.0000 -1.0000 0 # CAO-CAP-CAM-HAT + 4 2.1999 0.0000 0.0000 -1.0000 0 # CAM-CAM-CAP-HAT Atoms diff --git a/examples/USER/drude/toluene/in.toluene.lang b/examples/USER/drude/toluene/in.toluene.lang index 8f00c24a4b..ba40a3bcde 100644 --- a/examples/USER/drude/toluene/in.toluene.lang +++ b/examples/USER/drude/toluene/in.toluene.lang @@ -7,7 +7,7 @@ atom_style full bond_style harmonic angle_style harmonic dihedral_style opls -improper_style opls +improper_style fourier special_bonds lj/coul 0.0 0.0 0.5 pair_style lj/cut/thole/long 2.600 8.0 8.0 @@ -109,7 +109,7 @@ fix fNPH all nve compute cTEMP all temp/drude -thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] thermo 50 timestep 0.5 diff --git a/examples/USER/drude/toluene/in.toluene.nh b/examples/USER/drude/toluene/in.toluene.nh index 05b35ca919..7a5aecc579 100644 --- a/examples/USER/drude/toluene/in.toluene.nh +++ b/examples/USER/drude/toluene/in.toluene.nh @@ -7,7 +7,7 @@ atom_style full bond_style harmonic angle_style harmonic dihedral_style opls -improper_style opls +improper_style fourier special_bonds lj/coul 0.0 0.0 0.5 pair_style lj/cut/thole/long 2.600 8.0 8.0 @@ -115,7 +115,7 @@ fix fINVERSE all drude/transform/inverse fix fMOMENTUM all momentum 100 linear 1 1 1 -thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] thermo 50 timestep 0.5 diff --git a/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.1 b/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.1 deleted file mode 100644 index 08cc2f0f5c..0000000000 --- a/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.1 +++ /dev/null @@ -1,14 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 250 toluene system for drude polarizability example (Langevin) - -units real -boundary p p p - -atom_style full -bond_style harmonic -angle_style harmonic -dihedral_style opls -improper_style opls -ERROR: Unknown improper style opls (src/force.cpp:634) -Last command: improper_style opls diff --git a/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.4 b/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.4 deleted file mode 100644 index 08cc2f0f5c..0000000000 --- a/examples/USER/drude/toluene/log.27Nov18.toluene.lang.g++.4 +++ /dev/null @@ -1,14 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 250 toluene system for drude polarizability example (Langevin) - -units real -boundary p p p - -atom_style full -bond_style harmonic -angle_style harmonic -dihedral_style opls -improper_style opls -ERROR: Unknown improper style opls (src/force.cpp:634) -Last command: improper_style opls diff --git a/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.1 b/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.1 deleted file mode 100644 index a6807f8ee1..0000000000 --- a/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.1 +++ /dev/null @@ -1,14 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 250 toluene system for drude polarizability example (Nose-Hoover) - -units real -boundary p p p - -atom_style full -bond_style harmonic -angle_style harmonic -dihedral_style opls -improper_style opls -ERROR: Unknown improper style opls (src/force.cpp:634) -Last command: improper_style opls diff --git a/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.4 b/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.4 deleted file mode 100644 index a6807f8ee1..0000000000 --- a/examples/USER/drude/toluene/log.27Nov18.toluene.nh.g++.4 +++ /dev/null @@ -1,14 +0,0 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task -# 250 toluene system for drude polarizability example (Nose-Hoover) - -units real -boundary p p p - -atom_style full -bond_style harmonic -angle_style harmonic -dihedral_style opls -improper_style opls -ERROR: Unknown improper style opls (src/force.cpp:634) -Last command: improper_style opls diff --git a/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.1 b/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.1 new file mode 100644 index 0000000000..71ffdb0c8c --- /dev/null +++ b/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.1 @@ -0,0 +1,254 @@ +LAMMPS (7 Aug 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:93) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Langevin) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style fourier +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + special bonds CPU = 0.00199628 secs + read_data CPU = 0.0169649 secs + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + find clusters CPU = 0.000807762 secs + +fix fLANG all langevin/drude ${vTEMP} 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 1 20.0 260514 zero yes +fix fNPH all nve + +compute cTEMP all temp/drude + +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:323) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 103823 64000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 42.06 | 42.06 | 42.06 Mbytes +Step TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 11086.347 2910.7282 202.07402 8175.6191 6565.4851 20.333365 1.0706727e-06 -3299.85 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 4782.1702 4728.7435 328.28767 53.426722 1812.2203 685.37824 683.70917 -3277.1645 797.34329 1305983.2 -1306631.2 16874.358 48631.318 448.52419 116.25477 + 100 2906.0879 3699.8031 256.85465 -793.7152 978.15364 778.36908 862.30899 -3270.1722 468.44888 1306096.8 -1306707.6 15631.384 48631.318 382.26408 35.748403 + 150 2089.0918 3593.0499 249.44342 -1503.9581 751.32283 803.47802 668.4757 -3277.5983 128.17444 1306138.5 -1306716.3 15193.04 48631.318 384.75632 10.892446 + 200 1547.3302 3248.639 225.53309 -1701.3089 699.65977 814.31164 692.83227 -3276.3957 -66.671816 1306160.9 -1306725.9 13787.676 48631.318 351.28242 3.8458668 + 250 1177.9323 3095.949 214.93276 -1918.0167 688.87262 842.44531 615.89218 -3278.4465 -210.06178 1306154.3 -1306731 8808.5835 48631.318 335.8115 1.8330994 + 300 895.90313 2870.3451 199.27046 -1974.442 734.95873 858.58147 624.00862 -3278.6022 -342.01951 1306163.6 -1306735 3388.4841 48631.318 311.56815 1.2987715 + 350 669.25785 2764.9587 191.95413 -2095.7009 662.44028 860.79714 602.69567 -3278.776 -376.37081 1306172.3 -1306738.8 8494.9184 48631.318 300.19414 1.1358594 + 400 531.21609 2722.6775 189.01881 -2191.4614 684.34049 868.77818 576.86096 -3280.1649 -459.66591 1306160 -1306741.6 6726.3087 48631.318 295.59622 1.1315427 + 450 427.05425 2611.7588 181.3184 -2184.7046 719.2042 891.88178 591.2282 -3279.339 -534.65069 1306172.2 -1306745.2 2398.5394 48631.318 283.56126 1.0726045 + 500 310.44891 2556.0967 177.45412 -2245.6477 720.86526 841.50195 586.3417 -3279.3029 -539.81715 1306169.5 -1306744.8 3028.595 48631.318 277.52314 1.0406334 + 550 207.83114 2531.3051 175.73299 -2323.4739 674.71188 855.2132 555.53227 -3280.0378 -553.93222 1306171.9 -1306746.9 4609.4408 48631.318 274.80629 1.0748601 + 600 88.81557 2459.9059 170.77619 -2371.0903 692.4485 834.47484 550.85905 -3280.9086 -595.31802 1306171.4 -1306744 2107.9995 48631.318 267.06312 1.0301965 + 650 75.616307 2416.9747 167.79573 -2341.3584 703.57186 869.98959 564.81201 -3280.7522 -619.8016 1306168 -1306747.2 1236.4829 48631.318 262.3542 1.0968447 + 700 49.832719 2415.7344 167.70963 -2365.9017 683.61663 882.67915 555.23571 -3280.7778 -615.06862 1306159.9 -1306751.4 2985.7048 48631.318 262.23095 1.0762424 + 750 41.513638 2427.218 168.50687 -2385.7044 698.87619 863.2938 564.58197 -3280.0156 -637.29964 1306160.1 -1306755.3 1653.117 48631.318 263.49803 1.0451977 + 800 109.53032 2481.9041 172.30339 -2372.3738 697.22709 897.36555 561.28745 -3280.6784 -651.29564 1306155 -1306751.3 1219.8761 48631.318 269.43698 1.0647792 + 850 98.142203 2502.3132 173.72026 -2404.171 696.5382 878.83293 566.44302 -3280.2837 -663.94587 1306155.6 -1306757.4 1122.7487 48631.318 271.67716 1.030267 + 900 62.992675 2409.7324 167.29295 -2346.7397 722.00541 896.64662 560.66083 -3279.4915 -644.05458 1306153.6 -1306756.1 1604.295 48631.318 261.58656 1.0609836 + 950 5.6677468 2403.5067 166.86073 -2397.839 725.07222 891.00249 556.81977 -3279.7848 -672.66389 1306141 -1306759.2 1019.1694 48631.318 260.91187 1.0562387 + 1000 38.526968 2444.97 169.73928 -2406.4431 704.72993 920.68493 534.59035 -3281.2673 -667.78091 1306141.1 -1306758.5 486.79846 48631.318 265.39928 1.098473 + 1050 21.698026 2388.6306 165.82798 -2366.9326 712.15539 934.39244 546.92027 -3281.1469 -654.7449 1306137.4 -1306761.9 1556.1256 48631.318 259.28203 1.0760765 + 1100 -26.971225 2433.8428 168.96678 -2460.814 710.11081 881.19212 524.51547 -3281.7925 -667.53202 1306137.1 -1306764.4 1203.8971 48631.318 264.20441 1.0706085 + 1150 -49.171269 2375.9688 164.94895 -2425.14 729.78127 918.79575 518.21967 -3281.6542 -675.7239 1306130.4 -1306765 229.44016 48631.318 257.89845 1.086519 + 1200 -53.421342 2422.0091 168.14524 -2475.4304 710.67274 884.2589 523.32524 -3282.2275 -674.49333 1306130.9 -1306767.9 -131.09655 48631.318 262.91124 1.0804821 + 1250 -58.534776 2394.4031 166.22873 -2452.9378 680.27486 909.58096 532.81959 -3281.5551 -653.13731 1306127 -1306767.9 546.96357 48631.318 259.92916 1.0424914 + 1300 -24.151217 2431.9902 168.83817 -2456.1414 681.27127 919.39245 536.41899 -3281.3717 -661.90875 1306121.6 -1306771.5 1455.7512 48631.318 264.00712 1.0630558 + 1350 -38.973062 2438.6194 169.2984 -2477.5925 707.96118 912.62518 519.44533 -3281.6739 -687.67183 1306126.1 -1306774.4 -1470.4442 48631.318 264.70225 1.1091537 + 1400 11.896539 2384.5407 165.54404 -2372.6442 719.03374 950.93261 550.5639 -3280.4581 -663.4921 1306122 -1306771.3 465.12854 48631.318 258.83564 1.0785364 + 1450 -13.118691 2436.6246 169.15991 -2449.7433 661.04397 933.07103 561.29537 -3280.6997 -672.68495 1306123.9 -1306775.7 -108.46564 48631.318 264.50636 1.0718787 + 1500 -38.151755 2417.4849 167.83116 -2455.6367 688.81484 892.35701 565.29013 -3279.6716 -662.1817 1306116.9 -1306777.2 517.89634 48631.318 262.44549 1.0338083 + 1550 -71.663334 2405.7016 167.01311 -2477.3649 681.78925 876.31247 559.003 -3280.451 -649.16641 1306112.8 -1306777.7 925.49349 48631.318 261.148 1.0609731 + 1600 -13.900431 2419.481 167.96973 -2433.3814 718.46559 909.67964 559.06779 -3280.8163 -667.6092 1306108 -1306780.2 13.95808 48631.318 262.63632 1.080229 + 1650 -16.403222 2431.075 168.77464 -2447.4783 710.99509 907.65662 551.60307 -3279.8852 -661.52624 1306104.5 -1306780.8 726.89923 48631.318 263.91553 1.0489963 + 1700 -18.555086 2438.2062 169.26971 -2456.7613 665.90475 943.02217 542.86579 -3280.9017 -657.99229 1306108 -1306777.7 801.41078 48631.318 264.67663 1.0750708 + 1750 -6.9249446 2443.9707 169.6699 -2450.8956 733.23573 890.06857 560.83229 -3280.362 -670.93883 1306098.3 -1306782.1 47.037748 48631.318 265.30892 1.0661143 + 1800 -21.686222 2434.3375 169.00113 -2456.0237 729.35297 899.9733 561.59516 -3280.4727 -680.98901 1306096.5 -1306782 495.63617 48631.318 264.25723 1.0723683 + 1850 -72.916947 2408.8254 167.22998 -2481.7423 683.24984 904.13282 549.97726 -3279.6699 -652.63212 1306099.2 -1306786 -120.61674 48631.318 261.48504 1.0659808 + 1900 -55.4099 2415.455 167.69023 -2470.8649 700.4473 904.72264 565.5266 -3280.4533 -673.23082 1306099.6 -1306787.4 202.15936 48631.318 262.20353 1.0709756 + 1950 -79.877997 2409.2307 167.25812 -2489.1087 695.9536 894.4541 564.7034 -3279.3581 -680.33472 1306100.8 -1306785.3 213.72828 48631.318 261.52921 1.0658433 + 2000 -102.20457 2399.4263 166.57746 -2501.6309 689.67819 894.58596 565.53233 -3280.7595 -680.39032 1306096.4 -1306786.6 1113.7499 48631.318 260.46311 1.0647045 +Loop time of 68.4185 on 1 procs for 2000 steps with 5500 atoms + +Performance: 1.263 ns/day, 19.005 hours/ns, 29.232 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 48.825 | 48.825 | 48.825 | 0.0 | 71.36 +Bond | 2.8852 | 2.8852 | 2.8852 | 0.0 | 4.22 +Kspace | 13.795 | 13.795 | 13.795 | 0.0 | 20.16 +Neigh | 1.0731 | 1.0731 | 1.0731 | 0.0 | 1.57 +Comm | 0.27067 | 0.27067 | 0.27067 | 0.0 | 0.40 +Output | 0.0031168 | 0.0031168 | 0.0031168 | 0.0 | 0.00 +Modify | 1.5207 | 1.5207 | 1.5207 | 0.0 | 2.22 +Other | | 0.04541 | | | 0.07 + +Nlocal: 5500 ave 5500 max 5500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 13157 ave 13157 max 13157 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.33822e+06 ave 1.33822e+06 max 1.33822e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1338215 +Ave neighs/atom = 243.312 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 32 +Dangerous builds = 0 +Total wall time: 0:01:08 diff --git a/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.4 b/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.4 new file mode 100644 index 0000000000..df7d58ac88 --- /dev/null +++ b/examples/USER/drude/toluene/log.7Aug19.toluene.lang.g++.4 @@ -0,0 +1,254 @@ +LAMMPS (7 Aug 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:93) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Langevin) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style fourier +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 2 by 1 by 2 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + special bonds CPU = 0.000747919 secs + read_data CPU = 0.0168228 secs + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + find clusters CPU = 0.000355244 secs + +fix fLANG all langevin/drude ${vTEMP} 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 1 20.0 260514 zero yes +fix fNPH all nve + +compute cTEMP all temp/drude + +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:323) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 34263 16000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 18 | 18 | 18 Mbytes +Step TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 11086.347 2910.7282 202.07402 8175.6191 6565.4851 20.333365 1.0706727e-06 -3299.85 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 4712.9507 4669.1606 324.15119 43.790082 1798.561 670.61319 690.16967 -3276.9493 811.643 1305983.2 -1306633.5 17164.771 48631.318 442.24313 116.13094 + 100 2865.9139 3726.4166 258.70226 -860.50272 968.87546 749.70761 860.70151 -3270.7784 427.14745 1306104.7 -1306700.9 15017.273 48631.318 385.10628 35.845353 + 150 1982.6673 3535.974 245.481 -1553.3068 764.86116 768.15837 658.70182 -3278.7906 108.49859 1306136.5 -1306711.2 16495.352 48631.318 378.64023 10.723986 + 200 1440.0277 3240.5932 224.97452 -1800.5656 687.71813 791.29356 643.82915 -3276.9293 -99.549986 1306172.9 -1306719.8 13234.476 48631.318 350.46321 3.7468464 + 250 1103.2915 3018.496 209.55567 -1915.2045 677.97905 825.32748 642.78891 -3278.0801 -226.1853 1306168.5 -1306725.5 8774.9103 48631.318 327.36313 1.8722119 + 300 789.07159 2827.1716 196.27319 -2038.1 735.96101 852.72545 589.14167 -3280.0357 -374.66018 1306169 -1306730.2 2259.1028 48631.318 306.85585 1.3262598 + 350 599.10023 2732.3739 189.69197 -2133.2737 677.67006 863.22888 565.41674 -3280.5231 -403.28794 1306177.4 -1306733.2 7989.222 48631.318 296.64126 1.1534418 + 400 428.26436 2591.2884 179.89727 -2163.0241 676.18745 849.24505 612.34065 -3277.4703 -457.85799 1306173.6 -1306739.1 7282.1438 48631.318 281.34719 1.0502762 + 450 307.26859 2534.2468 175.93722 -2226.9782 712.17636 853.98862 578.01327 -3279.7731 -533.87422 1306179.7 -1306737.2 1897.9643 48631.318 275.11317 1.0980929 + 500 234.60959 2495.1082 173.22007 -2260.4987 707.43541 878.25753 547.08402 -3281.2756 -549.04991 1306176.5 -1306739.5 2683.0639 48631.318 270.85452 1.0984718 + 550 203.34751 2445.6535 169.78673 -2242.306 669.03724 892.85034 599.20664 -3279.0757 -559.81157 1306175.9 -1306740.4 4512.9992 48631.318 265.49465 1.0628812 + 600 205.63573 2526.5892 175.4056 -2320.9535 685.64073 887.97693 557.42296 -3280.0332 -597.34755 1306167.8 -1306742.5 2999.5823 48631.318 274.29935 1.064682 + 650 176.23031 2526.3124 175.38638 -2350.0821 714.15285 895.42115 540.39191 -3280.8567 -636.27783 1306165.7 -1306748.6 871.68316 48631.318 274.2807 1.0442089 + 700 106.97524 2441.1059 169.47101 -2334.1306 697.16018 905.51407 564.71847 -3279.6208 -631.62324 1306159.4 -1306749.6 1953.8241 48631.318 264.98935 1.0771037 + 750 76.695104 2435.6635 169.09318 -2358.9684 672.01039 934.63351 545.64024 -3281.1075 -629.89722 1306152.4 -1306752.6 3044.0155 48631.318 264.39002 1.0932471 + 800 57.614075 2456.928 170.56945 -2399.3139 720.76364 898.68013 534.10051 -3281.5897 -659.64354 1306145.5 -1306757.1 1691.9503 48631.318 266.72089 1.0622697 + 850 -44.931126 2390.0608 165.92727 -2434.9919 708.70192 888.26851 537.13087 -3281.355 -665.17283 1306137.8 -1306760.3 123.07165 48631.318 259.45151 1.0516426 + 900 -96.878205 2358.862 163.76133 -2455.7403 672.98976 868.41571 546.69492 -3280.6939 -636.80102 1306134.5 -1306760.9 1955.7005 48631.318 256.05598 1.05337 + 950 -80.012575 2374.4497 164.84349 -2454.4623 679.59722 880.35157 548.35372 -3280.6061 -643.44517 1306125.8 -1306764.5 1510.9809 48631.318 257.72442 1.1017392 + 1000 -21.440874 2440.6729 169.44096 -2462.1138 718.56593 868.65109 555.54643 -3279.8516 -686.71673 1306126.6 -1306765 -1148.6212 48631.318 264.92977 1.1019339 + 1050 16.46903 2382.6961 165.41598 -2366.2271 712.51245 913.35848 579.81678 -3280.0559 -657.12122 1306129.3 -1306764 1004.5778 48631.318 258.64076 1.0684155 + 1100 35.847247 2483.1985 172.39325 -2447.3513 685.05704 889.42278 553.73166 -3280.0177 -663.67201 1306134.3 -1306766.2 699.1824 48631.318 269.56773 1.0838094 + 1150 -4.9817843 2431.4725 168.80223 -2436.4543 720.51056 868.17547 569.09902 -3280.5829 -677.99865 1306133.1 -1306768.7 435.19118 48631.318 263.96966 1.0303202 + 1200 -23.907197 2443.6035 169.64441 -2467.5107 684.96437 887.58483 549.43666 -3280.3144 -679.46182 1306137.2 -1306766.9 367.11148 48631.318 265.28645 1.0344036 + 1250 -16.904671 2389.9447 165.91921 -2406.8494 722.06959 902.90076 568.35616 -3280.6829 -683.32029 1306132.9 -1306769.1 76.759445 48631.318 259.41697 1.0908431 + 1300 -1.7822102 2410.2768 167.33074 -2412.0591 706.98675 904.31941 551.23506 -3280.7552 -651.51211 1306127.3 -1306769.6 1659.1113 48631.318 261.64093 1.0701648 + 1350 -3.569473 2446.3901 169.83786 -2449.9595 686.13971 894.85839 558.36242 -3279.9941 -664.59508 1306129 -1306773.7 783.32881 48631.318 265.5696 1.0709072 + 1400 -33.385576 2400.262 166.63547 -2433.6476 709.5808 890.68408 571.13105 -3280.1428 -674.51247 1306123.4 -1306773.8 -751.38571 48631.318 260.54522 1.080234 + 1450 -11.215152 2405.5409 167.00196 -2416.756 703.72038 913.21131 552.64196 -3280.9831 -649.19774 1306120.3 -1306776.4 1817.2174 48631.318 261.14741 1.031193 + 1500 -25.974102 2435.8375 169.10527 -2461.8116 689.93174 900.70619 552.63711 -3280.1497 -671.17989 1306124 -1306777.8 -98.941796 48631.318 264.45069 1.0190784 + 1550 -76.496407 2394.8126 166.25716 -2471.309 706.96953 886.06919 549.9101 -3280.8434 -659.57745 1306105.9 -1306779.7 -7.0989994 48631.318 259.95403 1.0772144 + 1600 -79.549932 2395.1114 166.2779 -2474.6614 684.11692 888.93332 562.94522 -3280.1665 -665.21744 1306114.4 -1306779.6 320.58515 48631.318 260.00641 1.0425978 + 1650 -99.702003 2360.5652 163.87957 -2460.2672 706.21244 900.9253 540.36599 -3280.2308 -655.96077 1306109.7 -1306781.3 307.35487 48631.318 256.23383 1.0666637 + 1700 -69.422658 2372.1727 164.68541 -2441.5954 676.79347 913.90473 581.60658 -3279.997 -670.33218 1306115.7 -1306779.3 -204.22848 48631.318 257.50963 1.0434075 + 1750 -80.889897 2425.3592 168.37782 -2506.2491 672.88937 911.52373 523.74733 -3280.4796 -673.90027 1306122 -1306782 965.12568 48631.318 263.26491 1.1001595 + 1800 -82.419368 2361.798 163.96515 -2444.2173 716.51571 882.9729 577.92505 -3278.9279 -671.67438 1306111.6 -1306782.6 -44.954517 48631.318 256.36957 1.0636692 + 1850 -93.715705 2373.3359 164.76616 -2467.0516 713.02466 907.03621 563.38626 -3280.2576 -693.30963 1306104.6 -1306781.5 -979.95945 48631.318 257.62543 1.0628288 + 1900 -73.60945 2449.5873 170.05983 -2523.1967 683.65116 893.94251 539.90847 -3281.4318 -680.16358 1306108 -1306787.1 598.18213 48631.318 265.91405 1.0766352 + 1950 -66.068291 2437.3691 169.21159 -2503.4374 672.5168 877.42934 573.56499 -3279.885 -668.54185 1306109.2 -1306787.7 733.05074 48631.318 264.61409 1.0224258 + 2000 -91.043979 2374.4077 164.84057 -2465.4516 692.13299 909.46192 574.60109 -3279.837 -672.33599 1306102.4 -1306791.8 -665.61581 48631.318 257.76275 1.0263294 +Loop time of 23.7656 on 4 procs for 2000 steps with 5500 atoms + +Performance: 3.636 ns/day, 6.602 hours/ns, 84.155 timesteps/s +94.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 | 11.918 | 13.096 | 14.137 | 27.0 | 55.10 +Bond | 0.74012 | 0.76511 | 0.79225 | 2.9 | 3.22 +Kspace | 6.7821 | 7.8285 | 9.0172 | 35.4 | 32.94 +Neigh | 0.37249 | 0.37262 | 0.37278 | 0.0 | 1.57 +Comm | 0.70503 | 0.7188 | 0.72807 | 1.1 | 3.02 +Output | 0.0018752 | 0.0047592 | 0.013386 | 7.2 | 0.02 +Modify | 0.91164 | 0.91644 | 0.92123 | 0.5 | 3.86 +Other | | 0.06335 | | | 0.27 + +Nlocal: 1375 ave 1381 max 1368 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 7803.75 ave 7856 max 7755 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 334465 ave 349504 max 315867 min +Histogram: 1 0 0 1 0 0 0 0 1 1 + +Total # of neighbors = 1337859 +Ave neighs/atom = 243.247 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 32 +Dangerous builds = 0 +Total wall time: 0:00:23 diff --git a/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.1 b/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.1 new file mode 100644 index 0000000000..be5d856d1e --- /dev/null +++ b/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.1 @@ -0,0 +1,262 @@ +LAMMPS (7 Aug 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:93) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Nose-Hoover) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style fourier +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + special bonds CPU = 0.0019815 secs + read_data CPU = 0.0168803 secs + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + find clusters CPU = 0.000715256 secs + +compute cTEMP_CORE gCORES temp/com +compute cTEMP all temp/drude + +fix fDIRECT all drude/transform/direct +fix fNVT1 gCORES nvt temp ${vTEMP} ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 260 100.0 +fix fNVT2 gDRUDES nvt temp ${vTEMP_D} ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 1 20.0 +fix fINVERSE all drude/transform/inverse + +fix fMOMENTUM all momentum 100 linear 1 1 1 + +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:323) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 103823 64000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 42.06 | 42.06 | 42.06 Mbytes +Step TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 11086.347 2910.7282 202.07402 8175.6191 6565.4851 20.333365 1.0706727e-06 -3299.85 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 3563.3755 4630.6343 321.47655 -1067.2588 735.72049 604.78665 689.14827 -3277.411 815.58183 1306088.7 -1306723.8 17813.424 48631.318 503.827 0.0087118192 + 100 3327.4724 4395.1107 305.12559 -1067.6382 597.93176 651.62645 945.4151 -3267.2851 584.58833 1306135.9 -1306715.8 17407.337 48631.318 478.20171 0.0075985539 + 150 3036.9065 4740.2304 329.08513 -1703.3239 558.64983 619.91284 658.80687 -3278.7837 285.12462 1306173 -1306720 18448.248 48631.318 515.75286 0.0063215188 + 200 2697.958 4559.3445 316.52733 -1861.3864 522.09334 593.89129 754.61446 -3273.49 87.660461 1306183.9 -1306730 17888.936 48631.318 496.07143 0.0068706164 + 250 2348.7568 4410.585 306.19988 -2061.8283 506.05007 575.35171 715.55054 -3276.3261 -18.364473 1306177.3 -1306741.4 11592.05 48631.318 479.88562 0.0071741032 + 300 2019.8258 4040.1415 280.48226 -2020.3157 604.3077 641.66689 693.93801 -3278.5312 -115.73641 1306183.2 -1306749.1 3631.3628 48631.318 439.57995 0.0069886387 + 350 1699.5166 3944.9851 273.87613 -2245.4685 452.07416 638.0653 658.79117 -3279.6053 -157.07584 1306196.9 -1306754.6 13544.368 48631.318 429.22694 0.0062868111 + 400 1399.2929 3726.098 258.68014 -2326.8051 457.91943 621.44726 639.39903 -3279.2395 -188.85914 1306185.4 -1306762.8 10792.274 48631.318 405.41134 0.0059340078 + 450 1120.5249 3518.345 244.25712 -2397.8201 519.48856 584.65789 646.36689 -3278.6685 -289.59913 1306184.1 -1306764.2 2755.5598 48631.318 382.80716 0.0055707485 + 500 868.0166 3359.8794 233.25583 -2491.8628 460.7393 581.49563 581.01731 -3281.5544 -252.20169 1306184.3 -1306765.7 6120.3639 48631.318 365.56528 0.0058756154 + 550 637.01567 3214.9521 223.19441 -2577.9364 431.81483 578.87411 540.94047 -3281.5337 -266.36075 1306182.8 -1306764.5 8622.4334 48631.318 349.79661 0.0058589653 + 600 418.04086 3113.4064 216.14472 -2695.3655 430.45935 538.68157 522.24598 -3283.456 -311.87901 1306174.3 -1306765.8 7068.9273 48631.318 338.74797 0.0059567598 + 650 218.5966 2930.8439 203.47052 -2712.2473 514.47294 514.28379 551.52551 -3282.0904 -405.37401 1306164.5 -1306769.5 -13.553736 48631.318 318.88482 0.0052667842 + 700 45.22721 2830.1443 196.47956 -2784.917 451.11156 498.26423 541.18835 -3282.1427 -375.95313 1306157.1 -1306774.4 3947.6276 48631.318 307.92741 0.0068019029 + 750 -114.28621 2798.3153 194.26988 -2912.6016 412.753 503.2878 481.32173 -3284.3411 -393.53984 1306147 -1306779.1 7143.3414 48631.318 304.46466 0.0061596717 + 800 -263.63817 2694.8084 187.08403 -2958.4466 455.67914 487.49754 476.8659 -3284.3133 -451.9578 1306145 -1306787.2 1185.9502 48631.318 293.20288 0.0058203332 + 850 -397.71592 2559.1921 177.66902 -2956.9081 458.83317 481.2262 478.31241 -3284.068 -437.26503 1306138.6 -1306792.6 346.80209 48631.318 278.44745 0.0054921692 + 900 -515.1823 2544.8753 176.67509 -3060.0576 395.00163 457.58988 446.68352 -3285.485 -423.56221 1306145 -1306795.3 3712.8598 48631.318 276.88864 0.0074054008 + 950 -617.28259 2451.1723 170.16987 -3068.4549 383.64277 446.59877 434.4624 -3285.1348 -391.59344 1306142.3 -1306798.7 5429.2488 48631.318 266.69431 0.0057487316 + 1000 -703.15534 2334.837 162.09342 -3037.9923 424.34948 462.21112 451.80809 -3284.3803 -426.53369 1306133.9 -1306799.3 1137.6145 48631.318 254.03675 0.0053914731 + 1050 -771.1763 2303.837 159.94128 -3075.0133 426.21409 436.50718 435.09987 -3285.1939 -411.14054 1306125.6 -1306802.1 1636.9383 48631.318 250.66295 0.0069342505 + 1100 -822.72236 2283.4196 158.52382 -3106.142 376.67684 447.77729 418.45768 -3286.5919 -377.48204 1306118.9 -1306803.8 4760.5163 48631.318 248.44119 0.0074025012 + 1150 -857.06075 2259.0717 156.8335 -3116.1324 400.31523 431.65981 457.68066 -3285.1977 -430.47723 1306115.8 -1306805.9 3194.5161 48631.318 245.79223 0.007063589 + 1200 -875.50848 2238.2637 155.38893 -3113.7722 445.38524 460.97125 432.10511 -3285.4238 -472.46606 1306114.7 -1306809 -653.49784 48631.318 243.52819 0.0071448738 + 1250 -880.37572 2294.6889 159.30618 -3175.0646 411.35427 444.73793 420.06468 -3286.0366 -458.05371 1306104.4 -1306811.5 945.80793 48631.318 249.66481 0.011853487 + 1300 -871.31064 2284.2298 158.58007 -3155.5405 404.97412 441.75285 426.34477 -3285.4859 -424.79609 1306094.9 -1306813.2 4406.6196 48631.318 248.48563 0.084424118 + 1350 -816.70005 2325.9264 161.47481 -3142.6265 696.80296 442.50053 431.19923 -3285.7859 -450.2699 1305836.2 -1306813.3 593.8098 48631.318 251.40749 2.9297319 + 1400 -794.25335 2263.5101 157.14163 -3057.7635 645.65165 466.22086 446.22268 -3285.1821 -420.65317 1305903.7 -1306813.8 1386.3633 48631.318 245.20554 1.8916154 + 1450 -776.10866 2287.6575 158.81803 -3063.7661 427.03477 479.10627 439.67495 -3285.9537 -395.13186 1306087.6 -1306816.1 2936.7806 48631.318 248.87167 0.061343245 + 1500 -725.48181 2371.413 164.63266 -3096.8948 390.03204 464.30903 446.91959 -3284.7809 -393.16613 1306095.4 -1306815.6 3544.25 48631.318 258.01286 0.011586563 + 1550 -671.4904 2315.9297 160.7808 -2987.4201 457.04935 500.25282 464.76203 -3284.9311 -400.98103 1306091.7 -1306815.3 2052.6339 48631.318 251.97726 0.0094517862 + 1600 -618.83633 2449.0918 170.02543 -3067.9281 425.47487 474.65876 471.99171 -3284.3677 -430.32107 1306091.3 -1306816.6 441.15682 48631.318 266.46311 0.014260935 + 1650 -567.82245 2425.2238 168.36842 -2993.0462 421.01953 511.27133 463.22065 -3285.038 -377.24066 1306088.4 -1306814.7 5198.8565 48631.318 263.83185 0.074738268 + 1700 -502.4486 2441.8554 169.52305 -2944.304 642.39962 512.90234 490.38297 -3283.9751 -417.39288 1305929.1 -1306817.7 1141.4411 48631.318 264.52393 2.043674 + 1750 -459.52196 2499.0746 173.49543 -2958.5966 679.38259 505.31787 484.77659 -3284.6272 -384.27736 1305861.6 -1306820.8 1527.2046 48631.318 270.10074 3.1869342 + 1800 -471.14403 2476.2266 171.90923 -2947.3706 442.47741 530.45656 474.03057 -3284.0954 -371.95117 1306084.3 -1306822.6 3392.2533 48631.318 269.36446 0.10416401 + 1850 -462.80763 2536.7112 176.10831 -2999.5188 437.08241 525.07462 474.0838 -3283.7906 -422.23719 1306091.6 -1306821.3 1629.8629 48631.318 275.99502 0.016806806 + 1900 -469.89289 2468.9765 171.4059 -2938.8694 446.77624 531.61059 496.01046 -3284.2338 -395.15325 1306085.7 -1306819.6 3119.5402 48631.318 268.62645 0.014601992 + 1950 -491.08007 2445.5966 169.78278 -2936.6767 457.80452 527.23373 470.18125 -3283.9608 -391.86377 1306101.9 -1306818 1122.5275 48631.318 266.08018 0.018911601 + 2000 -518.40811 2418.7208 167.91696 -2937.1289 415.93135 536.5973 480.44651 -3283.7881 -363.72783 1306096.2 -1306818.7 4475.7317 48631.318 263.09007 0.13504326 +Loop time of 70.696 on 1 procs for 2000 steps with 5500 atoms + +Performance: 1.222 ns/day, 19.638 hours/ns, 28.290 timesteps/s +97.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 | 48.367 | 48.367 | 48.367 | 0.0 | 68.42 +Bond | 2.9191 | 2.9191 | 2.9191 | 0.0 | 4.13 +Kspace | 14.266 | 14.266 | 14.266 | 0.0 | 20.18 +Neigh | 1.5262 | 1.5262 | 1.5262 | 0.0 | 2.16 +Comm | 0.27841 | 0.27841 | 0.27841 | 0.0 | 0.39 +Output | 0.0035572 | 0.0035572 | 0.0035572 | 0.0 | 0.01 +Modify | 3.2856 | 3.2856 | 3.2856 | 0.0 | 4.65 +Other | | 0.05018 | | | 0.07 + +Nlocal: 5500 ave 5500 max 5500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 15317 ave 15317 max 15317 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.30285e+06 ave 1.30285e+06 max 1.30285e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1302849 +Ave neighs/atom = 236.882 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 44 +Dangerous builds = 0 +Total wall time: 0:01:10 diff --git a/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.4 b/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.4 new file mode 100644 index 0000000000..8d58260754 --- /dev/null +++ b/examples/USER/drude/toluene/log.7Aug19.toluene.nh.g++.4 @@ -0,0 +1,262 @@ +LAMMPS (7 Aug 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:93) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Nose-Hoover) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style fourier +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 2 by 1 by 2 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + special bonds CPU = 0.000718355 secs + read_data CPU = 0.0167146 secs + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + find clusters CPU = 0.000344038 secs + +compute cTEMP_CORE gCORES temp/com +compute cTEMP all temp/drude + +fix fDIRECT all drude/transform/direct +fix fNVT1 gCORES nvt temp ${vTEMP} ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 260 100.0 +fix fNVT2 gDRUDES nvt temp ${vTEMP_D} ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 1 20.0 +fix fINVERSE all drude/transform/inverse + +fix fMOMENTUM all momentum 100 linear 1 1 1 + +thermo_style custom step etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:323) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 34263 16000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 18 | 18 | 18 Mbytes +Step TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 11086.347 2910.7282 202.07402 8175.6191 6565.4851 20.333365 1.0706727e-06 -3299.85 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 3563.376 4630.6343 321.47655 -1067.2583 735.72048 604.78665 689.14826 -3277.411 815.58183 1306088.7 -1306723.8 17813.425 48631.318 503.827 0.0087118179 + 100 3327.4722 4395.1107 305.12559 -1067.6385 597.93175 651.62645 945.4151 -3267.2851 584.58833 1306135.9 -1306715.8 17407.335 48631.318 478.2017 0.0075985638 + 150 3036.9065 4740.2304 329.08513 -1703.3238 558.64983 619.91284 658.80686 -3278.7837 285.12462 1306173 -1306720 18448.248 48631.318 515.75286 0.0063215227 + 200 2697.9581 4559.3445 316.52734 -1861.3864 522.09335 593.8913 754.61446 -3273.49 87.660464 1306183.9 -1306730 17888.937 48631.318 496.07143 0.006870622 + 250 2348.7563 4410.585 306.19988 -2061.8288 506.05006 575.35172 715.55055 -3276.3261 -18.364482 1306177.3 -1306741.4 11592.049 48631.318 479.88562 0.0071741023 + 300 2019.8256 4040.1415 280.48225 -2020.3159 604.30771 641.66688 693.93802 -3278.5312 -115.73639 1306183.2 -1306749.1 3631.3625 48631.318 439.57995 0.0069886424 + 350 1699.5169 3944.9851 273.87613 -2245.4682 452.07416 638.06529 658.79116 -3279.6053 -157.07584 1306196.9 -1306754.6 13544.368 48631.318 429.22695 0.0062868216 + 400 1399.2927 3726.098 258.68014 -2326.8053 457.91943 621.44727 639.39905 -3279.2395 -188.85912 1306185.4 -1306762.8 10792.273 48631.318 405.41133 0.0059340084 + 450 1120.5246 3518.345 244.25712 -2397.8204 519.48859 584.6579 646.36688 -3278.6685 -289.59912 1306184.1 -1306764.2 2755.5597 48631.318 382.80717 0.005570751 + 500 868.01643 3359.8794 233.25583 -2491.863 460.73928 581.49568 581.01732 -3281.5544 -252.20168 1306184.3 -1306765.7 6120.364 48631.318 365.56528 0.0058756204 + 550 637.01646 3214.9521 223.19441 -2577.9356 431.81484 578.87415 540.94046 -3281.5337 -266.36074 1306182.8 -1306764.5 8622.4353 48631.318 349.79661 0.0058589476 + 600 418.04028 3113.4063 216.14471 -2695.3661 430.45936 538.68158 522.24597 -3283.456 -311.87897 1306174.3 -1306765.8 7068.9275 48631.318 338.74796 0.0059567639 + 650 218.59562 2930.8439 203.47052 -2712.2482 514.47296 514.2838 551.52551 -3282.0904 -405.37401 1306164.5 -1306769.5 -13.554086 48631.318 318.88481 0.0052667849 + 700 45.227739 2830.1443 196.47957 -2784.9165 451.11157 498.26426 541.18833 -3282.1427 -375.95321 1306157.1 -1306774.4 3947.6268 48631.318 307.92741 0.0068018884 + 750 -114.28676 2798.3154 194.26988 -2912.6022 412.75298 503.28782 481.32167 -3284.3411 -393.53987 1306147 -1306779.1 7143.3424 48631.318 304.46466 0.0061596613 + 800 -263.63827 2694.8085 187.08403 -2958.4468 455.67916 487.49754 476.86576 -3284.3133 -451.95784 1306145 -1306787.2 1185.9474 48631.318 293.20289 0.0058203323 + 850 -397.71592 2559.1922 177.66903 -2956.9082 458.83313 481.22619 478.31233 -3284.068 -437.26509 1306138.6 -1306792.6 346.80221 48631.318 278.44747 0.0054921238 + 900 -515.18134 2544.8753 176.67509 -3060.0567 395.0016 457.5898 446.68361 -3285.485 -423.56234 1306145.1 -1306795.3 3712.8594 48631.318 276.88864 0.0074054726 + 950 -617.28607 2451.1721 170.16985 -3068.4582 383.6428 446.59872 434.46241 -3285.1348 -391.59326 1306142.3 -1306798.7 5429.2191 48631.318 266.69429 0.0057487961 + 1000 -703.15541 2334.8366 162.09339 -3037.992 424.34957 462.21115 451.80811 -3284.3803 -426.53346 1306133.9 -1306799.3 1137.6144 48631.318 254.03671 0.0053915025 + 1050 -771.17572 2303.8364 159.94123 -3075.0121 426.21406 436.50744 435.10013 -3285.1938 -411.13999 1306125.6 -1306802.1 1636.9467 48631.318 250.66288 0.0069341736 + 1100 -822.72317 2283.421 158.52392 -3106.1442 376.67703 447.77728 418.45763 -3286.5919 -377.48075 1306118.9 -1306803.8 4760.4718 48631.318 248.44134 0.0074024122 + 1150 -857.06061 2259.0725 156.83355 -3116.1331 400.31517 431.65949 457.68078 -3285.1977 -430.47775 1306115.8 -1306805.9 3194.5159 48631.318 245.79231 0.007063706 + 1200 -875.50971 2238.2632 155.38889 -3113.7729 445.38534 460.97161 432.10511 -3285.4238 -472.46582 1306114.7 -1306809 -653.49627 48631.318 243.52813 0.0071446561 + 1250 -880.37609 2294.689 159.30619 -3175.0651 411.35498 444.73774 420.06429 -3286.0366 -458.05353 1306104.4 -1306811.5 945.79687 48631.318 249.66483 0.011854196 + 1300 -871.31122 2284.2295 158.58005 -3155.5407 404.97869 441.75305 426.34479 -3285.4859 -424.79602 1306094.8 -1306813.2 4406.6128 48631.318 248.4856 0.084411062 + 1350 -816.69657 2325.9211 161.47444 -3142.6176 696.85542 442.50059 431.19981 -3285.7859 -450.27129 1305836.1 -1306813.3 593.86622 48631.318 251.40736 2.9289249 + 1400 -794.25213 2263.5122 157.14177 -3057.7643 645.6531 466.2204 446.22253 -3285.1821 -420.65316 1305903.7 -1306813.8 1386.3481 48631.318 245.20568 1.8917548 + 1450 -776.1076 2287.6591 158.81814 -3063.7667 427.0331 479.10417 439.67675 -3285.9536 -395.13308 1306087.6 -1306816.1 2936.7117 48631.318 248.87185 0.061341392 + 1500 -725.48032 2371.4108 164.63251 -3096.8911 390.03135 464.30817 446.91941 -3284.7808 -393.16302 1306095.4 -1306815.6 3544.3635 48631.318 258.01262 0.011585228 + 1550 -671.48696 2315.9233 160.78035 -2987.4102 457.04771 500.26018 464.7623 -3284.931 -400.98142 1306091.7 -1306815.3 2052.6204 48631.318 251.97656 0.0094518433 + 1600 -618.82679 2449.0893 170.02525 -3067.9161 425.47171 474.66369 471.99137 -3284.3677 -430.3224 1306091.3 -1306816.6 441.31257 48631.318 266.46283 0.014263201 + 1650 -567.82233 2425.2281 168.36872 -2993.0504 421.02008 511.26686 463.22202 -3285.0378 -377.24205 1306088.4 -1306814.7 5198.6214 48631.318 263.83232 0.074728934 + 1700 -502.46013 2441.8437 169.52224 -2944.3039 642.39863 512.90005 490.39655 -3283.975 -417.39351 1305929.1 -1306817.7 1141.2401 48631.318 264.52268 2.0436397 + 1750 -459.52135 2499.0847 173.49613 -2958.606 679.34078 505.30943 484.78276 -3284.6269 -384.28217 1305861.7 -1306820.8 1527.0852 48631.318 270.10144 3.1876179 + 1800 -471.14322 2476.2445 171.91047 -2947.3877 442.48278 530.4566 474.0343 -3284.0957 -371.97492 1306084.3 -1306822.6 3392.0306 48631.318 269.36641 0.1041603 + 1850 -462.80151 2536.7173 176.10873 -2999.5188 437.07855 525.05914 474.07725 -3283.7908 -422.22641 1306091.6 -1306821.3 1630.1204 48631.318 275.99568 0.016808725 + 1900 -469.8785 2468.9596 171.40473 -2938.8381 446.7879 531.6128 496.02681 -3284.2335 -395.17163 1306085.7 -1306819.6 3119.2384 48631.318 268.62462 0.014603394 + 1950 -491.07182 2445.6794 169.78853 -2936.7512 457.80204 527.21208 470.1608 -3283.9622 -391.90163 1306101.9 -1306818 1122.0978 48631.318 266.08919 0.018903661 + 2000 -518.41243 2418.604 167.90885 -2937.0165 415.92605 536.62844 480.48912 -3283.7876 -363.72641 1306096.2 -1306818.7 4474.8778 48631.318 263.07743 0.13492637 +Loop time of 22.3198 on 4 procs for 2000 steps with 5500 atoms + +Performance: 3.871 ns/day, 6.200 hours/ns, 89.606 timesteps/s +98.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 | 11.452 | 12.249 | 12.556 | 13.2 | 54.88 +Bond | 0.71352 | 0.72923 | 0.74557 | 1.3 | 3.27 +Kspace | 5.7189 | 6.0293 | 6.8195 | 18.6 | 27.01 +Neigh | 0.44028 | 0.44044 | 0.44065 | 0.0 | 1.97 +Comm | 0.39667 | 0.40817 | 0.41558 | 1.1 | 1.83 +Output | 0.0019479 | 0.0032187 | 0.0068657 | 3.7 | 0.01 +Modify | 2.413 | 2.4256 | 2.4347 | 0.5 | 10.87 +Other | | 0.0349 | | | 0.16 + +Nlocal: 1375 ave 1407 max 1349 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Nghost: 8082.5 ave 8114 max 8047 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Neighs: 325715 ave 343636 max 314954 min +Histogram: 1 1 0 1 0 0 0 0 0 1 + +Total # of neighbors = 1302860 +Ave neighs/atom = 236.884 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 44 +Dangerous builds = 0 +Total wall time: 0:00:22 diff --git a/examples/USER/misc/local_density/benzene_water/benzene_water.data b/examples/USER/misc/local_density/benzene_water/benzene_water.data new file mode 100644 index 0000000000..96a969670e --- /dev/null +++ b/examples/USER/misc/local_density/benzene_water/benzene_water.data @@ -0,0 +1,1406 @@ +LAMMPS data file for 380 CG benzene, 1000 CG water particles + + 1380 atoms + 0 bonds + 0 angles + 0 dihedrals + 0 impropers + + 2 atom types + 0 bond types + 0 angle types + 0 dihedral types + 0 improper types + +-1.2865e+01 1.2865e+01 xlo xhi +-1.2865e+01 1.2865e+01 ylo yhi +-6.4829e+01 6.4829e+01 zlo zhi + +Masses + + 1 78.1100 + 2 18.0100 + +Atoms + + 1 1 1 1.13167e+01 1.36833e+00 3.59100e+01 + 2 2 1 -2.54005e+00 -6.77848e+00 6.31800e+01 + 3 3 1 3.45833e+00 2.99833e+00 1.77200e+01 + 4 4 1 -5.29338e+00 -3.98015e+00 1.79183e+01 + 5 5 1 3.53500e+00 1.13833e+01 4.63833e+01 + 6 6 1 7.65167e+00 -6.10150e-01 6.08133e+01 + 7 7 1 -3.04172e+00 -1.08435e+01 1.49817e+01 + 8 8 1 9.06000e+00 -6.93348e+00 4.72967e+01 + 9 9 1 1.24400e+01 1.15750e+01 2.26183e+01 + 10 10 1 1.03467e+01 1.12017e+01 5.86533e+01 + 11 11 1 -4.09672e+00 1.20333e+01 2.08300e+01 + 12 12 1 -3.49338e+00 -6.45682e+00 3.52333e+00 + 13 13 1 -3.49672e+00 -7.83515e+00 1.11433e+01 + 14 14 1 3.23833e+00 1.86500e+00 -5.10695e+01 + 15 15 1 -7.12672e+00 -1.15385e+01 9.44333e+00 + 16 16 1 1.28000e+00 1.09700e+01 -1.65118e+00 + 17 17 1 1.55667e+00 5.65000e-01 3.40117e+01 + 18 18 1 1.18500e+01 7.30667e+00 1.88083e+01 + 19 19 1 -4.35005e+00 7.33833e+00 3.27417e+01 + 20 20 1 -1.12884e+01 1.08583e+01 2.75500e+00 + 21 21 1 3.66167e+00 2.29500e+00 -5.68778e+01 + 22 22 1 5.64667e+00 6.78000e+00 4.53733e+01 + 23 23 1 -9.83384e-01 1.08800e+01 5.10883e+01 + 24 24 1 -1.24467e+01 5.65500e+00 -6.30578e+01 + 25 25 1 -4.58384e-01 -5.32848e+00 1.37250e+01 + 26 26 1 -1.17084e+01 -8.37515e+00 3.66933e+01 + 27 27 1 -1.12351e+01 7.00000e-01 4.80717e+01 + 28 28 1 1.93833e+00 1.73333e+00 1.49667e+00 + 29 29 1 1.50000e-02 5.44000e+00 3.67267e+01 + 30 30 1 8.41000e+00 8.69833e+00 3.12633e+01 + 31 31 1 8.89667e+00 2.18167e+00 -5.41712e+01 + 32 32 1 -1.19317e+01 -1.04301e+01 5.96933e+01 + 33 33 1 -7.92838e+00 6.11000e+00 5.62183e+01 + 34 34 1 2.62500e+00 8.58833e+00 2.83100e+01 + 35 35 1 9.49333e+00 -6.19682e+00 -5.17362e+01 + 36 36 1 5.28833e+00 -1.16185e+01 -4.91667e-01 + 37 37 1 -1.21617e+01 7.89333e+00 5.02417e+01 + 38 38 1 -6.30505e+00 9.31333e+00 -5.45045e+01 + 39 39 1 1.12983e+01 -1.00685e+01 5.51300e+01 + 40 40 1 2.81167e+00 3.13167e+00 4.17517e+01 + 41 41 1 -4.16838e+00 -9.73848e+00 4.89217e+01 + 42 42 1 1.22867e+01 -7.32515e+00 4.27650e+01 + 43 43 1 -7.50672e+00 2.53333e+00 1.66650e+01 + 44 44 1 -1.12217e+01 1.13417e+01 5.47200e+01 + 45 45 1 -9.60172e+00 -9.51682e+00 4.82750e+01 + 46 46 1 -1.18901e+01 -1.20668e+01 3.19283e+01 + 47 47 1 1.00783e+01 1.19033e+01 4.53333e-01 + 48 48 1 3.54167e+00 -6.03848e+00 -5.03478e+01 + 49 49 1 -2.29505e+00 -2.32015e+00 -6.16662e+01 + 50 50 1 7.35000e-01 -1.04018e+01 2.42833e+00 + 51 51 1 2.46616e-01 3.92500e+00 6.83667e+00 + 52 52 1 -1.05717e+01 2.61833e+00 2.64150e+01 + 53 53 1 -3.49838e+00 4.16833e+00 1.78833e+00 + 54 54 1 -2.40672e+00 6.29667e+00 1.09083e+01 + 55 55 1 -7.88838e+00 -5.84682e+00 1.22167e+01 + 56 56 1 1.55500e+00 9.39333e+00 3.31100e+01 + 57 57 1 -1.17101e+01 -1.28285e+01 4.31983e+01 + 58 58 1 1.21983e+01 1.27183e+01 -5.94678e+01 + 59 59 1 -7.46667e-01 -4.92182e+00 7.68167e+00 + 60 60 1 2.23667e+00 8.75000e+00 1.86100e+01 + 61 61 1 3.24833e+00 -7.14515e+00 -6.15512e+01 + 62 62 1 -7.86718e-01 6.28500e+00 -5.06795e+01 + 63 63 1 -6.28172e+00 -1.20368e+01 6.18483e+01 + 64 64 1 8.39949e-01 -4.31182e+00 2.17383e+01 + 65 65 1 3.80000e+00 -6.14515e+00 6.23500e+01 + 66 66 1 6.28167e+00 1.08817e+01 3.28833e+00 + 67 67 1 -1.27034e+01 -5.98182e+00 2.27400e+01 + 68 68 1 -1.21101e+01 -6.90182e+00 7.41667e+00 + 69 69 1 -1.03867e+01 -3.20182e+00 1.73550e+01 + 70 70 1 -1.42005e+00 1.09500e+00 3.86350e+01 + 71 71 1 -9.33005e+00 2.74833e+00 5.28317e+01 + 72 72 1 -9.21838e+00 -6.13848e+00 2.62017e+01 + 73 73 1 -1.19451e+01 -2.99015e+00 -5.66378e+01 + 74 74 1 1.75500e+00 1.11067e+01 2.39233e+01 + 75 75 1 1.58333e+00 -2.41848e+00 4.22083e+01 + 76 76 1 -5.46667e-01 -8.76848e+00 2.95750e+01 + 77 77 1 8.46667e+00 3.83000e+00 -5.95028e+01 + 78 78 1 6.73282e-01 -2.40515e+00 -5.34112e+01 + 79 79 1 3.56167e+00 4.83000e+00 2.25267e+01 + 80 80 1 -9.36172e+00 7.33667e+00 5.85500e+00 + 81 81 1 -1.02467e+01 5.32167e+00 4.56667e+01 + 82 82 1 9.01500e+00 -1.23868e+01 3.27317e+01 + 83 83 1 -7.55838e+00 8.65500e+00 3.66283e+01 + 84 84 1 8.31000e+00 1.27917e+01 -5.29962e+01 + 85 85 1 -3.28338e+00 3.13183e-01 2.05767e+01 + 86 86 1 -6.25838e+00 -1.15285e+01 3.60800e+01 + 87 87 1 -6.80172e+00 -2.18483e-01 3.76283e+01 + 88 88 1 -1.17067e+01 3.50000e-01 6.86500e+00 + 89 89 1 -7.09838e+00 1.20850e+01 1.55517e+01 + 90 90 1 -1.00534e+01 1.19750e+01 2.68033e+01 + 91 91 1 1.27950e+01 1.76167e+00 5.73433e+01 + 92 92 1 7.60500e+00 9.70333e+00 2.12967e+01 + 93 93 1 -7.38672e+00 5.61667e-01 -5.88578e+01 + 94 94 1 5.85333e+00 6.97000e+00 3.74850e+01 + 95 95 1 2.45000e+00 -5.00348e+00 2.80667e+00 + 96 96 1 -4.18333e-01 7.94850e-01 2.59500e+01 + 97 97 1 -3.78338e+00 7.33667e+00 5.61667e+00 + 98 98 1 7.72500e+00 1.59500e+00 2.01500e+01 + 99 99 1 8.74500e+00 9.07167e+00 -4.69278e+01 + 100 100 1 -2.94338e+00 2.91333e+00 5.77383e+01 + 101 101 1 -3.24338e+00 -3.33330e-02 -5.61162e+01 + 102 102 1 5.59833e+00 -4.42848e+00 5.76200e+01 + 103 103 1 1.04667e+00 -9.24515e+00 5.10550e+01 + 104 104 1 -4.37672e+00 7.81517e-01 6.34100e+01 + 105 105 1 -1.25034e+01 -6.78848e+00 5.11700e+01 + 106 106 1 2.33330e-02 -4.50182e+00 5.87117e+01 + 107 107 1 -1.24284e+01 1.16067e+01 1.57150e+01 + 108 108 1 1.43495e+00 -9.82848e+00 5.69350e+01 + 109 109 1 1.91333e+00 -5.52848e+00 3.47633e+01 + 110 110 1 2.61616e-01 -6.07848e+00 -5.67595e+01 + 111 111 1 6.13833e+00 -6.87015e+00 3.08283e+01 + 112 112 1 -7.20838e+00 6.06667e+00 -5.00228e+01 + 113 113 1 -7.28005e+00 -1.19602e+01 -5.05812e+01 + 114 114 1 -1.13534e+01 1.22733e+01 -5.41962e+01 + 115 115 1 1.06233e+01 -2.53682e+00 3.90083e+01 + 116 116 1 6.65833e+00 -4.72015e+00 7.56333e+00 + 117 117 1 -6.83005e+00 5.55667e+00 -6.42045e+01 + 118 118 1 -2.36672e+00 -1.22518e+01 -6.48178e+01 + 119 119 1 -5.24838e+00 -1.42667e+00 2.66817e+01 + 120 120 1 2.16167e+00 1.06000e+01 5.53217e+01 + 121 121 1 4.57333e+00 -2.99348e+00 1.17383e+01 + 122 122 1 6.76833e+00 2.61667e-01 4.27167e+01 + 123 123 1 -6.77838e+00 -4.25182e+00 5.03767e+01 + 124 124 1 1.24517e+01 -7.96817e-01 -5.15728e+01 + 125 125 1 2.84333e+00 -5.85182e+00 2.58333e+01 + 126 126 1 8.41667e+00 -9.71848e+00 3.96833e+01 + 127 127 1 6.57667e+00 -7.96515e+00 1.33400e+01 + 128 128 1 1.09900e+01 -4.06182e+00 5.68800e+01 + 129 129 1 -5.07838e+00 7.13667e+00 -1.98528e+01 + 130 130 1 2.58333e-01 -1.07068e+01 4.64467e+01 + 131 131 1 -8.13338e+00 -8.46817e-01 2.22617e+01 + 132 132 1 2.53167e+00 8.81167e+00 4.19650e+01 + 133 133 1 6.13333e+00 -9.78483e-01 2.48083e+01 + 134 134 1 7.60833e+00 -1.13718e+01 4.97700e+01 + 135 135 1 -6.00338e+00 4.18667e+00 4.08367e+01 + 136 136 1 -6.24505e+00 1.27683e+01 3.12800e+01 + 137 137 1 -1.03751e+01 9.64167e+00 1.05033e+01 + 138 138 1 1.03583e+01 -6.16015e+00 6.28883e+01 + 139 139 1 3.58167e+00 -1.01085e+01 -5.40362e+01 + 140 140 1 -9.88005e+00 8.06667e-01 -4.82545e+01 + 141 141 1 -2.32672e+00 -3.64682e+00 -7.49513e-01 + 142 142 1 -4.98333e-01 -2.78515e+00 2.95483e+01 + 143 143 1 1.14167e+00 6.22000e+00 5.85350e+01 + 144 144 1 -2.03505e+00 -8.84015e+00 1.96617e+01 + 145 145 1 1.10817e+01 -1.26682e+00 2.30250e+01 + 146 146 1 1.01333e+00 -1.09348e+00 1.69400e+01 + 147 147 1 -2.07505e+00 6.90667e+00 4.10650e+01 + 148 148 1 7.50500e+00 -6.81682e+00 3.53917e+01 + 149 149 1 3.66833e+00 -9.79515e+00 7.41500e+00 + 150 150 1 7.56333e+00 4.77333e+00 1.54983e+01 + 151 151 1 6.31333e+00 -1.07802e+01 -5.85278e+01 + 152 152 1 1.09167e+01 1.04850e+01 2.72550e+01 + 153 153 1 3.46667e+00 3.47500e+00 6.29217e+01 + 154 154 1 3.94167e+00 -6.31817e-01 6.43667e+00 + 155 155 1 -4.56338e+00 6.62833e+00 4.51317e+01 + 156 156 1 -1.03467e+01 -1.58015e+00 1.18817e+01 + 157 157 1 -2.38005e+00 -2.67515e+00 3.45367e+01 + 158 158 1 -3.91718e-01 4.89833e+00 3.10600e+01 + 159 159 1 -6.46338e+00 4.46500e+00 2.95883e+01 + 160 160 1 -9.10672e+00 -9.11682e+00 5.45550e+01 + 161 161 1 9.00333e+00 9.02167e+00 -4.21951e+00 + 162 162 1 -2.01338e+00 4.48667e+00 6.29967e+01 + 163 163 1 -1.19851e+01 -1.00935e+01 -6.46545e+01 + 164 164 1 -3.26505e+00 -5.20848e+00 3.97233e+01 + 165 165 1 -7.88384e-01 1.18817e+01 -5.17195e+01 + 166 166 1 -1.05584e+01 4.20167e+00 3.65000e+01 + 167 167 1 6.73667e+00 -5.37182e+00 2.17150e+01 + 168 168 1 9.24000e+00 -1.05015e+00 4.80400e+01 + 169 169 1 3.44833e+00 -6.55848e+00 1.72233e+01 + 170 170 1 1.13383e+01 3.78333e+00 9.67500e+00 + 171 171 1 -1.25551e+01 -1.10935e+01 5.13333e+00 + 172 172 1 2.19500e+00 -6.97348e+00 4.04667e+01 + 173 173 1 -1.27333e+00 -1.10385e+01 2.53350e+01 + 174 174 1 5.52167e+00 -1.32515e+00 3.14533e+01 + 175 175 1 8.07667e+00 -1.83348e+00 -5.80478e+01 + 176 176 1 8.67333e+00 -1.02018e+01 2.00083e+01 + 177 177 1 -1.59000e+00 5.92833e+00 2.66067e+01 + 178 178 1 -6.14838e+00 -1.06667e-01 3.13567e+01 + 179 179 1 -8.64505e+00 4.73500e+00 1.10800e+01 + 180 180 1 -8.68384e-01 1.22800e+01 5.99517e+01 + 181 181 1 -1.03967e+01 -2.55682e+00 2.96850e+01 + 182 182 1 -1.17784e+01 3.15167e+00 1.99750e+01 + 183 183 1 -8.21005e+00 -1.00568e+01 4.05383e+01 + 184 184 1 7.79000e+00 -9.15348e+00 3.68833e+00 + 185 185 1 7.55333e+00 -9.54182e+00 5.98867e+01 + 186 186 1 -1.11672e+00 1.51333e+00 4.74200e+01 + 187 187 1 -1.04284e+01 3.73000e+00 -1.90951e+00 + 188 188 1 -9.98672e+00 7.42333e+00 -5.88145e+01 + 189 189 1 1.14917e+01 1.69333e+00 5.24250e+01 + 190 190 1 9.18000e+00 4.07500e+00 4.02733e+01 + 191 191 1 -1.01167e+01 -4.44015e+00 4.04817e+01 + 192 192 1 2.08500e+00 -1.47182e+00 -5.95578e+01 + 193 193 1 1.17050e+01 6.66000e+00 1.31600e+01 + 194 194 1 -4.07172e+00 -1.16768e+01 5.46117e+01 + 195 195 1 -2.48838e+00 1.06033e+01 3.61717e+01 + 196 196 1 -1.08584e+01 -2.80848e+00 5.31700e+01 + 197 197 1 1.16333e+00 -1.16735e+01 -5.79945e+01 + 198 198 1 8.07000e+00 1.03083e+01 1.65617e+01 + 199 199 1 -1.09384e+01 7.82167e+00 3.11617e+01 + 200 200 1 -6.49172e+00 1.09500e+01 4.12067e+01 + 201 201 1 1.09100e+01 -1.15500e+00 2.98300e+01 + 202 202 1 2.23833e+00 -1.12552e+01 6.28117e+01 + 203 203 1 4.25667e+00 -1.13168e+01 3.41067e+01 + 204 204 1 -6.55838e+00 4.17000e+00 2.22950e+01 + 205 205 1 -1.22117e+01 -1.14485e+01 1.06617e+01 + 206 206 1 -9.55838e+00 9.14333e+00 6.09967e+01 + 207 207 1 1.19483e+01 1.00883e+01 6.40100e+01 + 208 208 1 9.67500e+00 -1.13501e+01 1.50117e+01 + 209 209 1 -2.24338e+00 9.01833e+00 1.57817e+01 + 210 210 1 9.67333e+00 1.06200e+01 8.67167e+00 + 211 211 1 5.55167e+00 7.27167e+00 -5.70878e+01 + 212 212 1 4.45500e+00 7.97833e+00 5.08950e+01 + 213 213 1 -6.90505e+00 -1.01318e+01 2.52033e+01 + 214 214 1 -1.36338e+00 -9.39848e+00 3.53433e+01 + 215 215 1 -1.05901e+01 4.32500e+00 -5.29012e+01 + 216 216 1 1.24717e+01 2.32833e+00 1.88667e+00 + 217 217 1 -3.94505e+00 8.05167e+00 6.02567e+01 + 218 218 1 1.28167e+01 4.57667e+00 6.12767e+01 + 219 219 1 -4.95172e+00 -5.78348e+00 2.97567e+01 + 220 220 1 1.25833e+00 1.00850e+01 6.88667e+00 + 221 221 1 -8.97338e+00 -7.86348e+00 3.21150e+01 + 222 222 1 7.88667e+00 5.52000e+00 7.05000e-01 + 223 223 1 1.27983e+01 8.15167e+00 -5.09212e+01 + 224 224 1 3.83333e+00 6.09167e+00 -4.79295e+01 + 225 225 1 -1.11667e-01 -4.16817e-01 1.03400e+01 + 226 226 1 1.07550e+01 7.84333e+00 3.53817e+01 + 227 227 1 -2.76838e+00 -6.56515e+00 5.41733e+01 + 228 228 1 8.26667e+00 9.40833e+00 -6.14178e+01 + 229 229 1 -7.21172e+00 1.13300e+01 5.11817e+01 + 230 230 1 -8.28838e+00 1.19667e+00 5.89717e+01 + 231 231 1 -2.09672e+00 -8.67682e+00 -5.22595e+01 + 232 232 1 -5.16838e+00 3.45000e+00 3.51083e+01 + 233 233 1 -5.17505e+00 4.76833e+00 -5.53045e+01 + 234 234 1 4.43167e+00 -4.74015e+00 4.74850e+01 + 235 235 1 3.95167e+00 -7.18170e-02 -2.84178e+01 + 236 236 1 3.85000e+00 3.06667e+00 2.82967e+01 + 237 237 1 -1.09784e+01 -2.53015e+00 3.50133e+01 + 238 238 1 3.62500e+00 6.34000e+00 -6.19212e+01 + 239 239 1 -1.06184e+01 -8.57348e+00 -5.71662e+01 + 240 240 1 6.00000e-01 -1.13335e+01 1.06100e+01 + 241 241 1 -8.44838e+00 7.62333e+00 1.64667e+01 + 242 242 1 -9.15672e+00 1.01167e+01 -6.37628e+01 + 243 243 1 -1.06505e+00 -2.52182e+00 -4.86678e+01 + 244 244 1 5.72833e+00 -5.72682e+00 -5.63145e+01 + 245 245 1 -6.58338e+00 -5.25015e+00 -5.87128e+01 + 246 246 1 7.71333e+00 -1.10068e+01 2.48433e+01 + 247 247 1 -2.44505e+00 1.11683e+01 4.52900e+01 + 248 248 1 -5.54172e+00 1.11900e+01 -2.25618e+00 + 249 249 1 1.17017e+01 5.46333e+00 2.39833e+01 + 250 250 1 -1.59500e+00 3.05167e+00 -6.08212e+01 + 251 251 1 7.33333e-01 8.61667e+00 6.36383e+01 + 252 252 1 2.23833e+00 3.36517e-01 5.79667e+01 + 253 253 1 -5.28172e+00 -4.06515e+00 -5.27795e+01 + 254 254 1 5.98333e-01 -7.68515e+00 -3.44951e+00 + 255 255 1 1.06717e+01 8.53167e+00 -5.61395e+01 + 256 256 1 -8.46505e+00 -9.96348e+00 -1.99785e+00 + 257 257 1 5.19333e+00 7.36500e+00 9.51667e+00 + 258 258 1 -5.94338e+00 -1.00101e+01 4.38000e+01 + 259 259 1 -8.62172e+00 -6.77515e+00 1.48167e+00 + 260 260 1 -1.09651e+01 -2.77682e+00 3.29833e+00 + 261 261 1 8.24333e+00 -1.05768e+01 -6.36662e+01 + 262 262 1 6.66833e+00 -1.73682e+00 -5.19778e+01 + 263 263 1 7.96333e+00 4.28167e+00 6.48033e+01 + 264 264 1 4.67000e+00 6.05000e-01 -6.28412e+01 + 265 265 1 3.20833e+00 7.52833e+00 1.41017e+01 + 266 266 1 8.49000e+00 -5.60348e+00 5.22600e+01 + 267 267 1 -6.09338e+00 -1.95682e+00 7.50833e+00 + 268 268 1 7.17167e+00 7.17500e+00 -5.15578e+01 + 269 269 1 -4.20672e+00 9.96333e+00 9.71333e+00 + 270 270 1 1.26950e+01 6.89167e+00 5.61933e+01 + 271 271 1 -4.09672e+00 2.40000e+00 5.24567e+01 + 272 272 1 1.10533e+01 -6.43348e+00 3.18467e+01 + 273 273 1 -8.97838e+00 1.10650e+01 2.09467e+01 + 274 274 1 -1.27505e+00 5.84833e+00 2.05150e+01 + 275 275 1 1.13717e+01 5.53333e-01 -6.22962e+01 + 276 276 1 7.04167e+00 -1.61348e+00 2.27833e+00 + 277 277 1 9.14500e+00 8.91500e+00 4.77283e+01 + 278 278 1 -1.07734e+01 -5.61348e+00 6.09833e+01 + 279 279 1 -9.55005e+00 9.78183e-01 4.21433e+01 + 280 280 1 6.32500e+00 -4.59682e+00 4.25767e+01 + 281 281 1 6.93167e+00 9.66333e+00 6.36833e+01 + 282 282 1 -4.51172e+00 2.25333e+00 8.89667e+00 + 283 283 1 -1.62505e+00 9.82333e+00 -5.69978e+01 + 284 284 1 9.66667e+00 -5.19182e+00 2.66767e+01 + 285 285 1 7.51500e+00 6.41333e+00 5.90400e+01 + 286 286 1 1.17567e+01 -2.47515e+00 4.43750e+01 + 287 287 1 3.52167e+00 2.86517e-01 5.17950e+01 + 288 288 1 2.56500e+00 1.18833e+01 3.76950e+01 + 289 289 1 4.74500e+00 4.52500e+00 5.53550e+01 + 290 290 1 9.29500e+00 1.02767e+01 5.32383e+01 + 291 291 1 9.82333e+00 -6.84182e+00 -6.04762e+01 + 292 292 1 4.22167e+00 -1.27585e+01 -4.91712e+01 + 293 293 1 3.87000e+00 6.36667e-01 4.66350e+01 + 294 294 1 5.22333e+00 -1.01318e+01 4.35450e+01 + 295 295 1 4.66333e+00 2.66167e+00 1.15517e+01 + 296 296 1 7.18500e+00 2.78500e+00 5.46833e+00 + 297 297 1 -1.18451e+01 8.21000e+00 3.99900e+01 + 298 298 1 6.81167e+00 7.91500e+00 2.58367e+01 + 299 299 1 8.34833e+00 9.49000e+00 4.07533e+01 + 300 300 1 -2.28005e+00 1.05200e+01 1.56667e+00 + 301 301 1 -8.17172e+00 1.09267e+01 4.66433e+01 + 302 302 1 -1.25601e+01 2.05667e+00 -5.71462e+01 + 303 303 1 -1.13001e+01 -9.11182e+00 1.54983e+01 + 304 304 1 -1.15301e+01 -4.64348e+00 -6.17728e+01 + 305 305 1 4.30000e+00 -1.12985e+01 2.85467e+01 + 306 306 1 9.61167e+00 3.30667e+00 -4.85445e+01 + 307 307 1 4.86000e+00 1.18850e+01 1.22533e+01 + 308 308 1 -1.09667e+00 1.83330e-02 -1.18012e+01 + 309 309 1 1.00683e+01 4.57333e+00 2.88000e+01 + 310 310 1 3.12833e+00 -1.24468e+01 1.67350e+01 + 311 311 1 3.05833e+00 1.16183e+01 -6.17128e+01 + 312 312 1 -2.86672e+00 -6.10182e+00 2.35583e+01 + 313 313 1 7.53500e+00 2.00000e-02 5.54433e+01 + 314 314 1 -1.41005e+00 1.18017e+01 3.03900e+01 + 315 315 1 -6.77005e+00 -6.68483e-01 1.35049e+00 + 316 316 1 1.15483e+01 -9.90682e+00 2.74800e+01 + 317 317 1 -6.81005e+00 1.46333e+00 4.77233e+01 + 318 318 1 -7.04505e+00 -4.14348e+00 6.47683e+01 + 319 319 1 -4.44172e+00 9.97000e+00 2.53533e+01 + 320 320 1 6.26167e+00 4.66670e-02 3.76633e+01 + 321 321 1 -7.18838e+00 -8.39015e+00 1.86550e+01 + 322 322 1 1.23800e+01 -1.23135e+01 4.93233e+01 + 323 323 1 -6.50510e-02 6.13833e+00 4.72633e+01 + 324 324 1 -1.09534e+01 -5.99682e+00 -5.09095e+01 + 325 325 1 -1.08917e+01 -9.63848e+00 2.19983e+01 + 326 326 1 -1.16505e+00 -1.31000e+00 5.40950e+01 + 327 327 1 8.61500e+00 5.27667e+00 5.23883e+01 + 328 328 1 2.62000e+00 6.57167e+00 2.86167e+00 + 329 329 1 -1.62172e+00 2.99833e+00 1.49850e+01 + 330 330 1 -4.20338e+00 1.43667e+00 -5.05678e+01 + 331 331 1 -1.63338e+00 -8.63483e-01 4.38667e+00 + 332 332 1 -2.99505e+00 -1.15952e+01 5.73833e+00 + 333 333 1 -8.51505e+00 7.22500e+00 2.58650e+01 + 334 334 1 1.00183e+01 -5.50182e+00 1.79333e+01 + 335 335 1 4.59000e+00 1.15700e+01 5.96317e+01 + 336 336 1 1.12150e+01 -4.89348e+00 1.17950e+01 + 337 337 1 -5.72172e+00 6.76500e+00 5.01783e+01 + 338 338 1 -8.14338e+00 3.48833e+00 3.82667e+00 + 339 339 1 -6.27672e+00 -2.42182e+00 5.54567e+01 + 340 340 1 -8.89005e+00 -4.91848e+00 4.48850e+01 + 341 341 1 1.07617e+01 -9.76182e+00 -5.52695e+01 + 342 342 1 -3.48672e+00 8.29833e+00 5.51450e+01 + 343 343 1 -6.81505e+00 7.57167e+00 7.86667e-01 + 344 344 1 3.36833e+00 -4.70015e+00 5.35033e+01 + 345 345 1 1.19017e+01 6.61517e-01 1.58133e+01 + 346 346 1 -6.74005e+00 -1.26752e+01 3.16167e+00 + 347 347 1 -7.87672e+00 1.25567e+01 5.74817e+01 + 348 348 1 -1.48338e+00 -5.62348e+00 4.49317e+01 + 349 349 1 -1.62833e+00 7.82000e+00 -6.08678e+01 + 350 350 1 -9.30005e+00 4.05000e-01 -6.37712e+01 + 351 351 1 -1.15751e+01 1.26117e+01 3.70600e+01 + 352 352 1 6.68167e+00 -1.15435e+01 5.50633e+01 + 353 353 1 -4.12172e+00 -1.37515e+00 4.25467e+01 + 354 354 1 1.13083e+01 6.89167e+00 4.68167e+00 + 355 355 1 -8.20005e+00 -9.47348e+00 -6.21212e+01 + 356 356 1 3.63500e+00 1.00733e+01 -5.40245e+01 + 357 357 1 -2.60005e+00 -8.37848e+00 -6.05162e+01 + 358 358 1 1.25900e+01 -1.51848e+00 6.28550e+01 + 359 359 1 8.73167e+00 -1.04252e+01 9.58833e+00 + 360 360 1 7.08667e+00 -2.11182e+00 1.61733e+01 + 361 361 1 -8.21005e+00 -6.48483e-01 -5.36795e+01 + 362 362 1 -1.16967e+01 2.42333e+00 3.17633e+01 + 363 363 1 6.76167e+00 -3.25015e+00 -6.34778e+01 + 364 364 1 -8.35000e-01 -3.41015e+00 4.92800e+01 + 365 365 1 -5.81838e+00 1.20017e+01 -6.03645e+01 + 366 366 1 9.25167e+00 -1.27385e+01 4.43900e+01 + 367 367 1 3.53667e+00 -1.03485e+01 2.17783e+01 + 368 368 1 -6.36505e+00 -5.73848e+00 3.58900e+01 + 369 369 1 -4.67005e+00 -1.07385e+01 -5.62328e+01 + 370 370 1 5.56000e+00 4.32833e+00 3.27267e+01 + 371 371 1 -4.15005e+00 -7.68182e+00 5.88083e+01 + 372 372 1 9.83833e+00 3.96167e+00 4.64567e+01 + 373 373 1 -6.84005e+00 -7.32182e+00 6.94667e+00 + 374 374 1 -4.53672e+00 -1.13000e+00 1.38617e+01 + 375 375 1 6.95000e-01 -1.69015e+00 6.39450e+01 + 376 376 1 3.63333e-01 5.22833e+00 -5.47112e+01 + 377 377 1 8.84000e+00 -4.84830e-02 1.13333e+01 + 378 378 1 -3.03172e+00 -9.20348e+00 -6.08333e-01 + 379 379 1 4.58333e-01 5.75167e+00 5.28617e+01 + 380 380 1 -2.17005e+00 -1.07718e+01 4.02383e+01 + 381 381 2 -1.02401e+01 -1.19015e+00 -1.80678e+01 + 382 382 2 1.18700e+01 -4.44015e+00 2.02154e-01 + 383 383 2 7.30000e+00 -2.06015e+00 -4.37478e+01 + 384 384 2 9.95000e+00 1.46000e+00 -4.43378e+01 + 385 385 2 -1.18801e+01 -1.24802e+01 -2.76578e+01 + 386 386 2 -6.80051e-01 9.39000e+00 -3.69778e+01 + 387 387 2 -8.28005e+00 2.09850e-01 -1.21578e+01 + 388 388 2 -2.45005e+00 -1.06901e+01 -2.57978e+01 + 389 389 2 -1.05501e+01 1.10200e+01 -3.73578e+01 + 390 390 2 -1.15801e+01 1.18700e+01 -1.38078e+01 + 391 391 2 9.62000e+00 -3.18015e+00 -3.03078e+01 + 392 392 2 8.11000e+00 -4.45015e+00 -4.69678e+01 + 393 393 2 9.05000e+00 1.22100e+01 -3.89378e+01 + 394 394 2 9.60000e-01 3.10000e+00 -4.21785e+00 + 395 395 2 1.08100e+01 4.27000e+00 -2.98378e+01 + 396 396 2 -1.22701e+01 -1.11202e+01 -1.15978e+01 + 397 397 2 -4.00005e+00 -1.15901e+01 -3.85878e+01 + 398 398 2 -8.06005e+00 6.25000e+00 -2.85378e+01 + 399 399 2 8.85000e+00 3.72000e+00 -2.46178e+01 + 400 400 2 7.00000e-01 9.29000e+00 -1.56378e+01 + 401 401 2 1.20200e+01 1.25000e+01 -1.54078e+01 + 402 402 2 5.53000e+00 1.21000e+00 -2.16978e+01 + 403 403 2 -1.03005e+00 -8.76015e+00 -4.32778e+01 + 404 404 2 6.74000e+00 -3.00150e-01 -4.71478e+01 + 405 405 2 6.26000e+00 -4.50150e-01 -1.13078e+01 + 406 406 2 2.20000e+00 -1.15302e+01 -2.55578e+01 + 407 407 2 2.51000e+00 8.13000e+00 -3.50578e+01 + 408 408 2 9.66000e+00 -5.00150e-01 -4.46785e+00 + 409 409 2 -7.00510e-02 -1.03102e+01 -8.19785e+00 + 410 410 2 -5.22005e+00 -2.46015e+00 -3.54878e+01 + 411 411 2 -3.00005e+00 5.00000e-01 -8.86785e+00 + 412 412 2 4.50000e+00 -6.97015e+00 -2.34178e+01 + 413 413 2 7.21000e+00 -2.67015e+00 -9.79785e+00 + 414 414 2 6.64000e+00 7.30000e-01 -1.68478e+01 + 415 415 2 5.07000e+00 -7.89015e+00 -4.75178e+01 + 416 416 2 -9.74005e+00 -6.40015e+00 -4.25378e+01 + 417 417 2 -4.11005e+00 7.84000e+00 -4.61278e+01 + 418 418 2 3.85000e+00 -1.70015e+00 -4.32778e+01 + 419 419 2 5.79000e+00 -2.86015e+00 -4.06785e+00 + 420 420 2 -4.76005e+00 1.16800e+01 -4.70378e+01 + 421 421 2 -6.68005e+00 -5.66015e+00 -2.77785e+00 + 422 422 2 -5.40051e-01 1.46000e+00 -7.06785e+00 + 423 423 2 8.80000e+00 1.26600e+01 -4.33578e+01 + 424 424 2 -4.34005e+00 1.36000e+00 -2.45078e+01 + 425 425 2 3.14000e+00 -7.38015e+00 -6.37785e+00 + 426 426 2 -3.12005e+00 6.33000e+00 -4.18478e+01 + 427 427 2 -5.80051e-01 8.01000e+00 -4.53878e+01 + 428 428 2 5.12000e+00 -2.50015e+00 -1.82578e+01 + 429 429 2 9.03000e+00 -2.18015e+00 -4.62178e+01 + 430 430 2 -2.10051e-01 -8.00015e+00 -4.92778e+01 + 431 431 2 1.15900e+01 -1.53015e+00 -3.57478e+01 + 432 432 2 2.39949e-01 7.50000e+00 -2.59378e+01 + 433 433 2 -1.60005e+00 6.63000e+00 -2.77785e+00 + 434 434 2 -1.25301e+01 -2.96015e+00 -2.55478e+01 + 435 435 2 8.62000e+00 -2.89015e+00 -2.06278e+01 + 436 436 2 4.57000e+00 8.15000e+00 -3.08778e+01 + 437 437 2 -8.50005e+00 1.06900e+01 -2.59678e+01 + 438 438 2 6.05000e+00 9.46000e+00 -7.65785e+00 + 439 439 2 8.38000e+00 -1.12802e+01 -3.71678e+01 + 440 440 2 -9.42005e+00 7.86000e+00 -1.77478e+01 + 441 441 2 -5.09005e+00 4.14000e+00 -4.29678e+01 + 442 442 2 5.73000e+00 -6.57015e+00 -1.60000e-01 + 443 443 2 1.03800e+01 -9.55015e+00 -3.29778e+01 + 444 444 2 8.68000e+00 -3.54015e+00 -3.51478e+01 + 445 445 2 -4.30051e-01 8.66000e+00 -8.42785e+00 + 446 446 2 -9.07005e+00 4.91000e+00 -1.08878e+01 + 447 447 2 -1.86005e+00 3.42000e+00 -2.34778e+01 + 448 448 2 9.43000e+00 -1.23802e+01 -1.31278e+01 + 449 449 2 5.28000e+00 9.97000e+00 -3.92178e+01 + 450 450 2 -4.80051e-01 7.00000e+00 -1.61578e+01 + 451 451 2 4.70000e-01 1.61000e+00 -4.71278e+01 + 452 452 2 1.15100e+01 1.17600e+01 -4.89878e+01 + 453 453 2 -7.41005e+00 -9.70150e-01 -1.63978e+01 + 454 454 2 -1.49005e+00 8.88000e+00 -4.25878e+01 + 455 455 2 -5.37005e+00 -1.14101e+01 -3.46378e+01 + 456 456 2 -1.18701e+01 1.08000e+00 -2.70278e+01 + 457 457 2 -6.47005e+00 -5.11015e+00 -7.43785e+00 + 458 458 2 7.03000e+00 7.11000e+00 -2.72078e+01 + 459 459 2 1.10000e+01 7.53000e+00 -1.49078e+01 + 460 460 2 -1.07005e+00 1.04100e+01 -4.65978e+01 + 461 461 2 -1.15201e+01 -8.59015e+00 -3.35178e+01 + 462 462 2 -5.20005e+00 2.88000e+00 -6.38785e+00 + 463 463 2 5.55000e+00 -5.10015e+00 -2.66078e+01 + 464 464 2 1.27700e+01 -1.09702e+01 -1.42678e+01 + 465 465 2 8.68000e+00 8.71000e+00 -1.45678e+01 + 466 466 2 5.20000e+00 -8.00150e-01 -2.55978e+01 + 467 467 2 1.15700e+01 -9.75015e+00 -5.44785e+00 + 468 468 2 -1.05801e+01 1.11600e+01 -9.07785e+00 + 469 469 2 2.18000e+00 -5.93015e+00 -3.15678e+01 + 470 470 2 4.14000e+00 5.64000e+00 -1.93578e+01 + 471 471 2 -1.13901e+01 9.20000e-01 -3.38078e+01 + 472 472 2 2.72000e+00 1.16400e+01 -7.09785e+00 + 473 473 2 -2.81005e+00 8.78000e+00 -9.77785e+00 + 474 474 2 1.70000e+00 6.18000e+00 -1.81278e+01 + 475 475 2 -5.05005e+00 5.20000e-01 -2.05478e+01 + 476 476 2 -6.93005e+00 -2.13015e+00 -8.39785e+00 + 477 477 2 2.92000e+00 3.99000e+00 -2.49378e+01 + 478 478 2 9.71000e+00 9.98000e+00 -2.88578e+01 + 479 479 2 -1.11001e+01 1.09600e+01 -2.64978e+01 + 480 480 2 9.31000e+00 -7.59015e+00 -1.97378e+01 + 481 481 2 -5.28005e+00 2.27000e+00 -3.52678e+01 + 482 482 2 -7.72005e+00 4.92000e+00 -4.35978e+01 + 483 483 2 -8.05005e+00 -6.37015e+00 -2.84178e+01 + 484 484 2 1.03200e+01 -7.74015e+00 -7.07785e+00 + 485 485 2 -5.72005e+00 -8.61015e+00 -2.02378e+01 + 486 486 2 -6.69005e+00 1.60000e+00 -2.56478e+01 + 487 487 2 -3.87005e+00 1.08500e+01 -2.98078e+01 + 488 488 2 9.28000e+00 -2.47015e+00 -2.45978e+01 + 489 489 2 1.19900e+01 7.50000e+00 -3.40078e+01 + 490 490 2 -5.56005e+00 1.20400e+01 -7.66785e+00 + 491 491 2 1.03900e+01 2.91000e+00 -3.20785e+00 + 492 492 2 1.10000e-01 1.28600e+01 -3.82278e+01 + 493 493 2 -4.63005e+00 -6.61015e+00 -4.37785e+00 + 494 494 2 6.90000e+00 3.45000e+00 -4.07778e+01 + 495 495 2 -6.37005e+00 -2.56015e+00 -4.10678e+01 + 496 496 2 -2.85005e+00 1.10700e+01 -2.23378e+01 + 497 497 2 5.43000e+00 -3.95015e+00 -4.26978e+01 + 498 498 2 -1.01601e+01 -2.33015e+00 -4.94785e+00 + 499 499 2 -2.95005e+00 8.48000e+00 -3.40878e+01 + 500 500 2 -1.22001e+01 7.83000e+00 -4.14878e+01 + 501 501 2 4.71000e+00 1.29000e+00 -4.80378e+01 + 502 502 2 1.17200e+01 -2.11015e+00 -1.28878e+01 + 503 503 2 1.27600e+01 -8.82015e+00 1.56000e+00 + 504 504 2 3.32000e+00 7.90000e-01 -3.13278e+01 + 505 505 2 -1.23901e+01 -1.04802e+01 -1.78678e+01 + 506 506 2 -3.10005e+00 -4.33015e+00 -3.52278e+01 + 507 507 2 2.74000e+00 7.60000e-01 -1.43778e+01 + 508 508 2 7.04000e+00 -1.01001e+01 -1.53678e+01 + 509 509 2 -3.70051e-01 -4.50015e+00 -4.33478e+01 + 510 510 2 -5.64005e+00 -4.24015e+00 -1.01078e+01 + 511 511 2 -5.51005e+00 -5.73015e+00 -2.35878e+01 + 512 512 2 -6.07005e+00 1.19600e+01 -2.83378e+01 + 513 513 2 5.23000e+00 -9.65015e+00 -2.77878e+01 + 514 514 2 -4.86005e+00 -4.43015e+00 -1.38178e+01 + 515 515 2 -9.23005e+00 -7.50015e+00 -3.28178e+01 + 516 516 2 -2.64005e+00 6.85000e+00 -3.89578e+01 + 517 517 2 7.41000e+00 8.35000e+00 -2.18478e+01 + 518 518 2 -1.21801e+01 -3.40150e-01 -2.50785e+00 + 519 519 2 1.04600e+01 -1.03602e+01 -9.28785e+00 + 520 520 2 1.23200e+01 3.38000e+00 -4.49778e+01 + 521 521 2 4.50000e-01 6.30000e+00 -3.54678e+01 + 522 522 2 1.10700e+01 8.86000e+00 -4.16678e+01 + 523 523 2 1.21700e+01 1.13400e+01 -4.44178e+01 + 524 524 2 -1.00301e+01 3.39000e+00 -2.36078e+01 + 525 525 2 -1.20601e+01 7.42000e+00 -4.59378e+01 + 526 526 2 -3.86005e+00 2.49850e-01 -2.71785e+00 + 527 527 2 -9.63005e+00 -2.27015e+00 -9.29785e+00 + 528 528 2 -5.66005e+00 7.33000e+00 -6.95785e+00 + 529 529 2 1.20500e+01 -5.85015e+00 -3.46578e+01 + 530 530 2 1.12900e+01 7.96000e+00 -6.60785e+00 + 531 531 2 1.01000e+00 -1.15201e+01 -1.08678e+01 + 532 532 2 -6.66005e+00 -1.22701e+01 -9.75785e+00 + 533 533 2 -7.33005e+00 -6.88015e+00 -5.25785e+00 + 534 534 2 1.57000e+00 3.16000e+00 -2.94278e+01 + 535 535 2 -1.21901e+01 1.18500e+01 -5.40785e+00 + 536 536 2 -1.19601e+01 9.12000e+00 -1.77378e+01 + 537 537 2 -9.90051e-01 5.90000e+00 -5.75785e+00 + 538 538 2 3.77000e+00 -3.80150e-01 -2.30978e+01 + 539 539 2 1.06000e+01 4.62000e+00 -4.24878e+01 + 540 540 2 -8.17005e+00 1.20000e-01 -7.74785e+00 + 541 541 2 2.22000e+00 -6.10150e-01 -1.80678e+01 + 542 542 2 -1.15201e+01 -8.19015e+00 -1.68478e+01 + 543 543 2 1.26900e+01 3.15000e+00 -8.55785e+00 + 544 544 2 -9.58005e+00 -1.09602e+01 -1.11978e+01 + 545 545 2 -1.23201e+01 -1.27501e+01 -1.30785e+00 + 546 546 2 -3.28005e+00 9.89000e+00 -4.48378e+01 + 547 547 2 7.10000e-01 -3.64015e+00 -1.29778e+01 + 548 548 2 -7.31005e+00 1.25000e+01 -1.33678e+01 + 549 549 2 6.30000e+00 4.32000e+00 -2.75478e+01 + 550 550 2 2.89000e+00 8.11000e+00 -2.19978e+01 + 551 551 2 7.55000e+00 2.34000e+00 -4.32278e+01 + 552 552 2 -1.21701e+01 -1.13501e+01 1.01000e+00 + 553 553 2 -1.27601e+01 3.82000e+00 -2.30478e+01 + 554 554 2 -1.20901e+01 -8.15015e+00 -9.79785e+00 + 555 555 2 -2.96005e+00 -1.25502e+01 -3.39578e+01 + 556 556 2 -9.18005e+00 9.07000e+00 -7.85785e+00 + 557 557 2 -7.59005e+00 8.80000e+00 -1.57878e+01 + 558 558 2 1.06500e+01 1.14900e+01 -2.64178e+01 + 559 559 2 9.34000e+00 1.79000e+00 -7.52785e+00 + 560 560 2 -1.09301e+01 -6.58015e+00 -2.95978e+01 + 561 561 2 2.58000e+00 -8.78015e+00 -4.64478e+01 + 562 562 2 -7.20005e+00 2.79000e+00 -1.08878e+01 + 563 563 2 7.20000e-01 1.09300e+01 -3.50578e+01 + 564 564 2 2.79000e+00 6.91000e+00 -3.93778e+01 + 565 565 2 -8.80051e-01 4.51000e+00 -2.94678e+01 + 566 566 2 -9.72005e+00 1.23400e+01 -4.31578e+01 + 567 567 2 9.10000e+00 1.01200e+01 -2.40378e+01 + 568 568 2 2.03000e+00 -8.77015e+00 -8.25785e+00 + 569 569 2 2.02000e+00 3.47000e+00 -1.71578e+01 + 570 570 2 5.03000e+00 5.90000e-01 -1.65785e+00 + 571 571 2 3.14000e+00 1.23700e+01 -4.44678e+01 + 572 572 2 -8.38005e+00 1.75000e+00 -5.17785e+00 + 573 573 2 -7.30005e+00 -6.94015e+00 -4.39378e+01 + 574 574 2 2.27000e+00 4.98000e+00 -9.04785e+00 + 575 575 2 7.60000e+00 -1.21001e+01 -2.85785e+00 + 576 576 2 1.08000e+01 7.32000e+00 -1.21878e+01 + 577 577 2 1.00700e+01 -9.64015e+00 -4.04978e+01 + 578 578 2 -6.48005e+00 5.91000e+00 -2.47078e+01 + 579 579 2 2.88000e+00 -6.88015e+00 -1.23778e+01 + 580 580 2 9.11000e+00 -5.79015e+00 -5.55785e+00 + 581 581 2 9.63000e+00 6.09000e+00 -2.57578e+01 + 582 582 2 7.96000e+00 3.77000e+00 -1.84178e+01 + 583 583 2 -1.53005e+00 -1.80150e-01 -4.56785e+00 + 584 584 2 -1.02601e+01 -6.04015e+00 -2.00078e+01 + 585 585 2 8.03000e+00 2.93000e+00 -3.03778e+01 + 586 586 2 6.30000e-01 1.79000e+00 -3.18078e+01 + 587 587 2 2.02000e+00 4.07000e+00 -3.35778e+01 + 588 588 2 6.45000e+00 7.77000e+00 -4.37678e+01 + 589 589 2 -2.30000e-01 5.55000e+00 -2.36278e+01 + 590 590 2 4.37000e+00 -4.19015e+00 -2.05278e+01 + 591 591 2 -1.17201e+01 9.47000e+00 -3.29378e+01 + 592 592 2 -9.60005e+00 3.94000e+00 -4.20078e+01 + 593 593 2 -9.29005e+00 7.65000e+00 -3.84378e+01 + 594 594 2 -3.06005e+00 -5.49015e+00 -2.83178e+01 + 595 595 2 -9.15005e+00 1.10500e+01 -1.78278e+01 + 596 596 2 3.24000e+00 5.36000e+00 -1.26178e+01 + 597 597 2 -7.20051e-01 6.48000e+00 -1.36278e+01 + 598 598 2 -6.00051e-01 -1.09201e+01 -1.91378e+01 + 599 599 2 2.52000e+00 4.33000e+00 -4.03778e+01 + 600 600 2 -4.49005e+00 -1.25101e+01 -2.27278e+01 + 601 601 2 7.37000e+00 4.90000e+00 -6.15785e+00 + 602 602 2 -1.19401e+01 7.11000e+00 -2.30278e+01 + 603 603 2 1.08300e+01 8.90000e-01 -3.94978e+01 + 604 604 2 -6.28005e+00 -1.86015e+00 -2.40678e+01 + 605 605 2 3.83000e+00 -9.94015e+00 -9.88785e+00 + 606 606 2 -1.20901e+01 1.07600e+01 -1.99178e+01 + 607 607 2 1.19000e+00 1.22200e+01 -2.84678e+01 + 608 608 2 9.01000e+00 -1.15602e+01 -2.31778e+01 + 609 609 2 3.50000e+00 7.86000e+00 -4.19378e+01 + 610 610 2 2.65000e+00 2.12000e+00 -8.10785e+00 + 611 611 2 -1.04005e+00 3.91000e+00 -4.63778e+01 + 612 612 2 6.18000e+00 4.80000e+00 -2.32078e+01 + 613 613 2 1.14100e+01 -1.01402e+01 -3.58178e+01 + 614 614 2 2.72000e+00 -4.66015e+00 -2.25578e+01 + 615 615 2 8.70000e+00 -5.46015e+00 3.04000e+00 + 616 616 2 2.33000e+00 -1.15701e+01 -1.87178e+01 + 617 617 2 -1.02501e+01 -7.67015e+00 -2.37785e+00 + 618 618 2 -7.88005e+00 5.97000e+00 -1.55678e+01 + 619 619 2 -1.16901e+01 -9.82015e+00 -4.29178e+01 + 620 620 2 -3.32005e+00 9.77000e+00 -4.82378e+01 + 621 621 2 -1.32005e+00 2.96000e+00 -3.71978e+01 + 622 622 2 6.33000e+00 -2.59015e+00 -2.19778e+01 + 623 623 2 -2.20005e+00 -1.19401e+01 -3.66278e+01 + 624 624 2 -1.87005e+00 2.94000e+00 -1.51178e+01 + 625 625 2 -2.30005e+00 5.61000e+00 -3.62678e+01 + 626 626 2 -2.33005e+00 5.10000e-01 -2.79178e+01 + 627 627 2 8.58000e+00 9.27000e+00 -1.83578e+01 + 628 628 2 5.96000e+00 -7.48015e+00 -7.07785e+00 + 629 629 2 9.85000e+00 1.16600e+01 -7.90785e+00 + 630 630 2 8.07000e+00 1.23300e+01 -2.57078e+01 + 631 631 2 -9.99005e+00 1.16300e+01 -1.15878e+01 + 632 632 2 -9.30005e+00 -8.81015e+00 -2.51778e+01 + 633 633 2 8.51000e+00 -8.90015e+00 -3.82878e+01 + 634 634 2 8.00000e-01 7.20000e-01 -4.30378e+01 + 635 635 2 1.22500e+01 1.08000e+01 -3.74878e+01 + 636 636 2 -2.84005e+00 -1.06701e+01 -4.09478e+01 + 637 637 2 -3.89005e+00 4.39000e+00 -4.01078e+01 + 638 638 2 2.29949e-01 -1.09015e+00 -2.49778e+01 + 639 639 2 5.00000e+00 6.95000e+00 -1.04678e+01 + 640 640 2 -1.15701e+01 -1.22902e+01 -7.52785e+00 + 641 641 2 7.02000e+00 -4.20150e-01 -1.96478e+01 + 642 642 2 -1.00301e+01 5.23000e+00 -1.87578e+01 + 643 643 2 -2.97005e+00 -1.23002e+01 -1.86978e+01 + 644 644 2 7.93000e+00 5.27000e+00 -4.37978e+01 + 645 645 2 -5.48005e+00 4.75000e+00 -4.51785e+00 + 646 646 2 -8.82005e+00 1.06000e+00 -2.82778e+01 + 647 647 2 -9.41005e+00 5.16000e+00 -3.96778e+01 + 648 648 2 4.60000e-01 -1.03702e+01 -4.58178e+01 + 649 649 2 6.96000e+00 -9.00000e-02 -3.29778e+01 + 650 650 2 6.64000e+00 -1.47015e+00 -2.11785e+00 + 651 651 2 -5.25005e+00 -2.20015e+00 -2.66878e+01 + 652 652 2 -2.59005e+00 2.66000e+00 -2.61378e+01 + 653 653 2 -9.07005e+00 7.51000e+00 -3.36785e+00 + 654 654 2 -9.16005e+00 -3.34015e+00 -2.84178e+01 + 655 655 2 6.03000e+00 -6.19015e+00 -1.97178e+01 + 656 656 2 1.17400e+01 -1.11302e+01 -3.02778e+01 + 657 657 2 9.60000e-01 -1.71015e+00 -3.95978e+01 + 658 658 2 6.73000e+00 -1.25201e+01 -1.38078e+01 + 659 659 2 7.33000e+00 6.32000e+00 -1.42178e+01 + 660 660 2 -4.75005e+00 -9.13015e+00 -4.77878e+01 + 661 661 2 7.23000e+00 9.68000e+00 -2.90978e+01 + 662 662 2 5.48000e+00 -1.19502e+01 -1.96878e+01 + 663 663 2 -7.24005e+00 3.12000e+00 -8.09785e+00 + 664 664 2 -5.98005e+00 6.25000e+00 -1.35478e+01 + 665 665 2 -1.14301e+01 -1.24401e+01 -3.88078e+01 + 666 666 2 6.07000e+00 1.07900e+01 -9.95785e+00 + 667 667 2 2.61000e+00 3.80000e-01 -4.62878e+01 + 668 668 2 -8.67005e+00 1.40000e-01 -1.99878e+01 + 669 669 2 3.14000e+00 -2.13015e+00 -3.74978e+01 + 670 670 2 -1.11201e+01 -9.32015e+00 -4.72978e+01 + 671 671 2 -9.30005e+00 -3.70015e+00 -1.29478e+01 + 672 672 2 8.48000e+00 -1.10801e+01 -3.40578e+01 + 673 673 2 -8.44005e+00 9.15000e+00 -2.02478e+01 + 674 674 2 2.37000e+00 -2.69015e+00 -2.45878e+01 + 675 675 2 -3.97005e+00 1.09500e+01 -3.52278e+01 + 676 676 2 1.28100e+01 -4.70150e-01 -1.86178e+01 + 677 677 2 9.96000e+00 -5.23015e+00 -2.47878e+01 + 678 678 2 -8.50051e-01 -7.20150e-01 -2.20178e+01 + 679 679 2 9.92000e+00 5.61000e+00 -6.68785e+00 + 680 680 2 2.42000e+00 -7.88015e+00 -1.72078e+01 + 681 681 2 -3.49005e+00 -4.03015e+00 -3.82478e+01 + 682 682 2 -1.22201e+01 -7.25015e+00 -1.34378e+01 + 683 683 2 -6.83005e+00 2.98000e+00 -3.06378e+01 + 684 684 2 -3.34005e+00 7.80000e-01 -3.68078e+01 + 685 685 2 -6.59005e+00 8.55000e+00 -2.74378e+01 + 686 686 2 7.10000e+00 6.20000e+00 -3.98978e+01 + 687 687 2 -1.70051e-01 -8.45015e+00 -2.37078e+01 + 688 688 2 2.24000e+00 1.20800e+01 -1.55578e+01 + 689 689 2 -8.98005e+00 1.21400e+01 -4.01678e+01 + 690 690 2 8.91000e+00 1.21300e+01 -1.76078e+01 + 691 691 2 -3.01005e+00 2.85000e+00 -3.16785e+00 + 692 692 2 5.26000e+00 9.91000e+00 -2.90785e+00 + 693 693 2 -5.15005e+00 -1.08301e+01 -1.85578e+01 + 694 694 2 -7.97005e+00 8.15000e+00 -5.65785e+00 + 695 695 2 -1.10501e+01 2.84000e+00 -3.79278e+01 + 696 696 2 2.69000e+00 -6.44015e+00 -3.78078e+01 + 697 697 2 5.02000e+00 -1.22202e+01 -2.24478e+01 + 698 698 2 -4.99005e+00 8.94000e+00 -5.03078e+01 + 699 699 2 3.48000e+00 5.17000e+00 -4.26785e+00 + 700 700 2 1.28600e+01 7.50000e+00 -4.42785e+00 + 701 701 2 -3.10005e+00 -7.26015e+00 -2.04078e+01 + 702 702 2 -6.65005e+00 -6.77015e+00 -3.06678e+01 + 703 703 2 7.00000e+00 2.51000e+00 -2.60478e+01 + 704 704 2 1.12400e+01 -1.05402e+01 -4.60678e+01 + 705 705 2 -3.08005e+00 -6.02015e+00 -4.00378e+01 + 706 706 2 -3.04005e+00 1.09400e+01 -1.94078e+01 + 707 707 2 -9.71005e+00 -1.79015e+00 -3.73978e+01 + 708 708 2 -8.50051e-01 -1.10801e+01 -3.25878e+01 + 709 709 2 -4.03005e+00 -1.26402e+01 -1.38178e+01 + 710 710 2 -9.22005e+00 -5.31015e+00 -3.25785e+00 + 711 711 2 -9.44005e+00 8.12000e+00 -1.12078e+01 + 712 712 2 3.47000e+00 9.01000e+00 -3.75778e+01 + 713 713 2 1.04600e+01 1.10000e+01 -1.05078e+01 + 714 714 2 -1.23501e+01 -7.88015e+00 -7.27846e-01 + 715 715 2 1.21100e+01 9.24000e+00 -2.20978e+01 + 716 716 2 -8.80005e+00 -8.25015e+00 -1.71778e+01 + 717 717 2 7.08000e+00 9.73000e+00 -2.56478e+01 + 718 718 2 5.51000e+00 1.11300e+01 -4.16778e+01 + 719 719 2 8.10000e+00 4.03000e+00 -1.57578e+01 + 720 720 2 8.01000e+00 2.00000e-01 -2.65878e+01 + 721 721 2 5.08000e+00 6.98000e+00 -1.56878e+01 + 722 722 2 6.43000e+00 -5.08015e+00 -8.45785e+00 + 723 723 2 1.20000e+01 7.06000e+00 -6.97846e-01 + 724 724 2 1.63000e+00 3.40000e+00 -2.26578e+01 + 725 725 2 1.28600e+01 -6.33015e+00 -2.59578e+01 + 726 726 2 1.27500e+01 -7.20150e-01 -2.30278e+01 + 727 727 2 6.13000e+00 2.62000e+00 -7.27785e+00 + 728 728 2 7.99000e+00 -1.16001e+01 -5.86785e+00 + 729 729 2 -1.70005e+00 3.16000e+00 -3.24778e+01 + 730 730 2 1.94000e+00 4.31000e+00 -3.65778e+01 + 731 731 2 -6.13005e+00 1.44000e+00 -4.29278e+01 + 732 732 2 -3.47005e+00 -6.59015e+00 -4.82478e+01 + 733 733 2 -8.05005e+00 3.96000e+00 -1.98578e+01 + 734 734 2 -1.06901e+01 -4.22015e+00 -4.02678e+01 + 735 735 2 -2.24005e+00 6.01000e+00 -3.25678e+01 + 736 736 2 -8.06005e+00 5.65000e+00 -7.65785e+00 + 737 737 2 -2.80005e+00 -1.05015e+00 -2.41578e+01 + 738 738 2 1.27700e+01 1.20000e+01 -3.05078e+01 + 739 739 2 1.14000e+01 -1.07002e+01 -2.40678e+01 + 740 740 2 -6.30005e+00 -9.66015e+00 -2.26978e+01 + 741 741 2 -1.12101e+01 -1.24015e+00 -4.09378e+01 + 742 742 2 6.13000e+00 -3.27015e+00 -3.65878e+01 + 743 743 2 6.32000e+00 -9.45015e+00 -1.95678e+01 + 744 744 2 -1.60051e-01 -1.15302e+01 -4.05178e+01 + 745 745 2 1.27900e+01 -1.01001e+01 -2.08178e+01 + 746 746 2 1.08400e+01 9.10000e+00 -3.59278e+01 + 747 747 2 -2.06005e+00 1.04300e+01 -5.77785e+00 + 748 748 2 1.62000e+00 1.08300e+01 -3.90078e+01 + 749 749 2 6.25000e+00 4.78000e+00 -3.80785e+00 + 750 750 2 2.81000e+00 1.17800e+01 -1.96678e+01 + 751 751 2 6.04000e+00 -5.27015e+00 -1.68778e+01 + 752 752 2 -6.79005e+00 -1.05701e+01 -7.19785e+00 + 753 753 2 -1.11401e+01 -4.56015e+00 -3.40778e+01 + 754 754 2 -1.18301e+01 2.02000e+00 -1.30578e+01 + 755 755 2 1.23800e+01 -2.53015e+00 -3.33785e+00 + 756 756 2 -8.15005e+00 1.76000e+00 -1.56378e+01 + 757 757 2 -1.11005e+00 6.80000e-01 -4.50278e+01 + 758 758 2 4.73000e+00 5.12000e+00 -4.18278e+01 + 759 759 2 -2.02005e+00 -1.72015e+00 -7.05785e+00 + 760 760 2 1.50000e-01 4.00000e+00 -7.44785e+00 + 761 761 2 1.06000e+01 2.02000e+00 -2.55078e+01 + 762 762 2 7.05000e+00 1.09100e+01 -2.11578e+01 + 763 763 2 -8.35005e+00 1.01400e+01 -2.30678e+01 + 764 764 2 4.99490e-02 8.79000e+00 -1.16078e+01 + 765 765 2 1.17900e+01 2.90000e-01 -9.09785e+00 + 766 766 2 -1.26001e+01 -6.16015e+00 -2.28978e+01 + 767 767 2 1.43000e+00 -3.64015e+00 -8.97785e+00 + 768 768 2 -1.21005e+00 -6.90015e+00 -4.58378e+01 + 769 769 2 -4.04005e+00 9.17000e+00 -3.94178e+01 + 770 770 2 5.08000e+00 1.06300e+01 -4.47878e+01 + 771 771 2 9.87000e+00 -7.72015e+00 -2.37878e+01 + 772 772 2 -7.38005e+00 1.23100e+01 -4.55678e+01 + 773 773 2 2.00000e-01 1.11600e+01 -4.26678e+01 + 774 774 2 -8.37005e+00 8.86000e+00 -3.42478e+01 + 775 775 2 6.17000e+00 -3.24015e+00 -2.49178e+01 + 776 776 2 1.36000e+00 -1.21402e+01 -5.64785e+00 + 777 777 2 3.67000e+00 -7.73015e+00 1.27000e+00 + 778 778 2 -9.19005e+00 1.09100e+01 -3.24578e+01 + 779 779 2 -2.78005e+00 8.95000e+00 -1.60078e+01 + 780 780 2 -8.90051e-01 -1.44015e+00 -3.71478e+01 + 781 781 2 -1.30005e+00 -1.03015e+00 -4.21178e+01 + 782 782 2 -1.23701e+01 5.71000e+00 -3.97578e+01 + 783 783 2 8.25000e+00 1.50000e+00 -1.45785e+00 + 784 784 2 -9.14005e+00 -1.08702e+01 -3.91478e+01 + 785 785 2 1.04300e+01 -1.23902e+01 -1.96978e+01 + 786 786 2 -4.73005e+00 4.30000e+00 -2.30178e+01 + 787 787 2 -2.74005e+00 -1.05001e+01 -1.26378e+01 + 788 788 2 7.75000e+00 -7.46015e+00 -4.72978e+01 + 789 789 2 -3.03005e+00 -7.99015e+00 -2.59178e+01 + 790 790 2 3.84000e+00 -4.20150e-01 -8.67785e+00 + 791 791 2 1.26400e+01 -3.81015e+00 -2.07378e+01 + 792 792 2 4.72000e+00 6.90000e+00 -3.37778e+01 + 793 793 2 -7.79005e+00 -3.59015e+00 -3.57778e+01 + 794 794 2 1.26300e+01 -1.01015e+00 -2.79678e+01 + 795 795 2 9.70000e+00 -1.19702e+01 -4.81878e+01 + 796 796 2 -1.00701e+01 -7.60015e+00 -3.69478e+01 + 797 797 2 -9.60051e-01 -8.36015e+00 -1.45878e+01 + 798 798 2 -8.08005e+00 -9.04015e+00 -4.69378e+01 + 799 799 2 1.27100e+01 5.83000e+00 -4.38678e+01 + 800 800 2 -4.50051e-01 -8.05015e+00 -2.09678e+01 + 801 801 2 3.01000e+00 1.26200e+01 -3.05578e+01 + 802 802 2 6.30000e+00 -1.17202e+01 -9.99785e+00 + 803 803 2 1.25500e+01 -6.49015e+00 -3.19785e+00 + 804 804 2 -2.21005e+00 -2.20015e+00 -1.54978e+01 + 805 805 2 -9.43005e+00 1.25500e+01 -2.88778e+01 + 806 806 2 3.69000e+00 1.01000e+00 -4.30178e+01 + 807 807 2 -4.56005e+00 -4.40015e+00 -4.19378e+01 + 808 808 2 -7.98005e+00 -9.66015e+00 -1.30278e+01 + 809 809 2 -7.92005e+00 -2.68015e+00 -4.48278e+01 + 810 810 2 -1.53005e+00 1.20400e+01 -2.99278e+01 + 811 811 2 -4.38005e+00 4.80000e+00 -2.86878e+01 + 812 812 2 2.96000e+00 -1.24502e+01 -3.46578e+01 + 813 813 2 -3.59005e+00 -4.98015e+00 -3.22878e+01 + 814 814 2 -5.10000e-05 -9.81015e+00 -3.02778e+01 + 815 815 2 4.00000e-01 7.06000e+00 -4.14878e+01 + 816 816 2 2.73000e+00 -9.17015e+00 -3.83278e+01 + 817 817 2 -6.80051e-01 -1.11102e+01 -1.42478e+01 + 818 818 2 1.95000e+00 1.11100e+01 -1.10478e+01 + 819 819 2 -1.17701e+01 -1.13201e+01 -3.29378e+01 + 820 820 2 -7.46005e+00 8.15000e+00 -4.11278e+01 + 821 821 2 1.14600e+01 2.16000e+00 -2.81678e+01 + 822 822 2 1.06400e+01 7.01000e+00 -3.76678e+01 + 823 823 2 6.58000e+00 -8.35015e+00 -9.55785e+00 + 824 824 2 1.15300e+01 -3.76015e+00 -3.27978e+01 + 825 825 2 -1.14101e+01 8.67000e+00 -3.55278e+01 + 826 826 2 7.66000e+00 -6.75015e+00 -3.67178e+01 + 827 827 2 2.67000e+00 -4.84015e+00 -2.62978e+01 + 828 828 2 1.05300e+01 -3.00015e+00 -5.10785e+00 + 829 829 2 -6.91005e+00 -1.27002e+01 -5.49785e+00 + 830 830 2 9.65000e+00 -2.01015e+00 -2.75178e+01 + 831 831 2 -6.01005e+00 1.04800e+01 -1.92878e+01 + 832 832 2 -1.00000e-02 -6.29015e+00 -3.64778e+01 + 833 833 2 -8.67005e+00 8.78000e+00 -4.62278e+01 + 834 834 2 1.14000e+01 1.12000e+01 -4.01878e+01 + 835 835 2 1.03300e+01 1.23000e+00 -1.58678e+01 + 836 836 2 -4.48005e+00 1.05000e+01 -4.18278e+01 + 837 837 2 9.81000e+00 7.99000e+00 -2.07478e+01 + 838 838 2 -3.68005e+00 3.80000e-01 -4.32378e+01 + 839 839 2 -4.05005e+00 -7.78015e+00 -3.11778e+01 + 840 840 2 8.21000e+00 4.10000e+00 -1.10478e+01 + 841 841 2 -1.25501e+01 -6.83015e+00 -3.90178e+01 + 842 842 2 9.30000e+00 7.50000e-01 -2.89078e+01 + 843 843 2 9.16000e+00 -5.87015e+00 -1.68478e+01 + 844 844 2 9.30000e-01 1.13800e+01 -1.76878e+01 + 845 845 2 3.99490e-02 -5.77015e+00 -2.57578e+01 + 846 846 2 -1.24301e+01 5.84000e+00 -2.91278e+01 + 847 847 2 2.19000e+00 2.20000e+00 -1.98678e+01 + 848 848 2 -6.86005e+00 3.31000e+00 -2.76578e+01 + 849 849 2 1.10000e+00 -6.56015e+00 -4.71878e+01 + 850 850 2 -1.27401e+01 -7.63015e+00 -3.61978e+01 + 851 851 2 -1.20501e+01 -1.26302e+01 -2.33878e+01 + 852 852 2 -2.60051e-01 -5.60150e-01 -3.31778e+01 + 853 853 2 -6.92005e+00 -4.20015e+00 -1.87878e+01 + 854 854 2 -5.40005e+00 -6.71015e+00 -2.62178e+01 + 855 855 2 8.15000e+00 1.64000e+00 -4.99785e+00 + 856 856 2 4.54000e+00 8.30000e+00 -2.76978e+01 + 857 857 2 8.66000e+00 -4.68015e+00 -3.25278e+01 + 858 858 2 -2.03005e+00 1.09400e+01 -1.12778e+01 + 859 859 2 8.89000e+00 -2.00150e-01 -4.18778e+01 + 860 860 2 -1.20901e+01 -3.23015e+00 -3.11978e+01 + 861 861 2 -7.00051e-01 -5.50015e+00 -2.99478e+01 + 862 862 2 -4.61005e+00 -1.14101e+01 -4.29878e+01 + 863 863 2 -5.63005e+00 -8.90015e+00 -1.47578e+01 + 864 864 2 -1.24301e+01 -4.10150e-01 -1.15678e+01 + 865 865 2 -5.87005e+00 -1.59015e+00 -4.35178e+01 + 866 866 2 -2.84005e+00 1.97000e+00 -2.13278e+01 + 867 867 2 4.68000e+00 9.45000e+00 -1.30678e+01 + 868 868 2 6.07000e+00 4.58000e+00 -1.26478e+01 + 869 869 2 -6.25005e+00 1.25100e+01 -3.86078e+01 + 870 870 2 1.22200e+01 1.19000e+00 -4.32785e+00 + 871 871 2 7.40000e+00 7.12000e+00 -3.44978e+01 + 872 872 2 1.97000e+00 -9.06015e+00 -2.00678e+01 + 873 873 2 9.82000e+00 -6.00015e+00 -2.90785e+00 + 874 874 2 2.06000e+00 1.85000e+00 -3.85178e+01 + 875 875 2 -1.07501e+01 -1.11202e+01 -2.52578e+01 + 876 876 2 -5.22005e+00 -1.05015e+00 -1.82478e+01 + 877 877 2 -1.17101e+01 -4.16015e+00 -2.10785e+00 + 878 878 2 1.28200e+01 -2.56015e+00 -3.80578e+01 + 879 879 2 1.21200e+01 -8.23015e+00 -4.18278e+01 + 880 880 2 -2.13005e+00 1.12600e+01 -1.46478e+01 + 881 881 2 -1.27301e+01 -5.60150e-01 -3.07178e+01 + 882 882 2 1.12900e+01 -3.57015e+00 -4.55378e+01 + 883 883 2 9.40000e-01 2.86000e+00 -2.65378e+01 + 884 884 2 9.10000e-01 2.58000e+00 -1.47378e+01 + 885 885 2 8.11000e+00 9.24000e+00 -1.15878e+01 + 886 886 2 5.44000e+00 -1.22102e+01 -4.28678e+01 + 887 887 2 -1.03801e+01 -1.20015e+00 -1.29678e+01 + 888 888 2 -1.05101e+01 5.12000e+00 -1.58278e+01 + 889 889 2 -8.91005e+00 -9.64015e+00 -8.87785e+00 + 890 890 2 1.27300e+01 1.07400e+01 -2.44778e+01 + 891 891 2 -6.96005e+00 2.40000e-01 -2.22778e+01 + 892 892 2 1.43000e+00 -8.06015e+00 -3.46778e+01 + 893 893 2 -1.28601e+01 -9.01015e+00 -2.89978e+01 + 894 894 2 4.39000e+00 -6.70015e+00 -4.51378e+01 + 895 895 2 6.22000e+00 8.14000e+00 -1.85178e+01 + 896 896 2 5.07000e+00 -1.81015e+00 -3.44078e+01 + 897 897 2 -1.83005e+00 1.18000e+00 -3.44078e+01 + 898 898 2 -4.00051e-01 -6.12015e+00 -4.07778e+01 + 899 899 2 9.24000e+00 1.57000e+00 -3.70478e+01 + 900 900 2 8.35000e+00 -1.02601e+01 -3.06978e+01 + 901 901 2 -6.83005e+00 -9.64015e+00 -4.26878e+01 + 902 902 2 1.00500e+01 1.97000e+00 -3.21878e+01 + 903 903 2 -6.39005e+00 1.23200e+01 -3.60778e+01 + 904 904 2 -4.32005e+00 -6.10015e+00 -1.15078e+01 + 905 905 2 -9.38005e+00 -1.03401e+01 -1.55778e+01 + 906 906 2 -9.78005e+00 -4.53015e+00 -4.59878e+01 + 907 907 2 6.63000e+00 -9.02015e+00 -4.33578e+01 + 908 908 2 -5.47005e+00 -1.11001e+01 -1.18378e+01 + 909 909 2 -4.23005e+00 -3.30150e-01 -1.50178e+01 + 910 910 2 -2.72005e+00 -1.80015e+00 -2.67778e+01 + 911 911 2 3.22000e+00 -6.21015e+00 -2.87578e+01 + 912 912 2 -3.01005e+00 -4.83015e+00 -4.43478e+01 + 913 913 2 -9.62005e+00 2.77000e+00 -3.02578e+01 + 914 914 2 -4.70051e-01 5.45000e+00 -1.04378e+01 + 915 915 2 -9.65005e+00 -1.23401e+01 -3.15278e+01 + 916 916 2 -8.23005e+00 -1.25001e+01 -1.92778e+01 + 917 917 2 -4.00000e-02 -2.91015e+00 -2.72778e+01 + 918 918 2 -4.21005e+00 7.16000e+00 -4.32785e+00 + 919 919 2 5.65000e+00 2.44000e+00 -3.19578e+01 + 920 920 2 -1.13005e+00 -4.74015e+00 -7.96785e+00 + 921 921 2 -5.99005e+00 -4.96015e+00 -3.85978e+01 + 922 922 2 6.67000e+00 -8.93015e+00 -4.50785e+00 + 923 923 2 1.03900e+01 -1.09602e+01 -4.35978e+01 + 924 924 2 7.40000e-01 -5.83015e+00 -1.76578e+01 + 925 925 2 1.10500e+01 5.22000e+00 -4.02785e+00 + 926 926 2 -4.67005e+00 6.76000e+00 -3.48578e+01 + 927 927 2 -4.06005e+00 -7.36015e+00 -3.59978e+01 + 928 928 2 -7.56005e+00 -1.09101e+01 -3.29778e+01 + 929 929 2 9.93000e+00 -6.33015e+00 -4.86578e+01 + 930 930 2 8.49000e+00 -7.14015e+00 -4.11078e+01 + 931 931 2 6.35000e+00 -5.46015e+00 -3.90978e+01 + 932 932 2 -4.37005e+00 2.49000e+00 -1.04578e+01 + 933 933 2 -1.35005e+00 4.67000e+00 -1.73078e+01 + 934 934 2 -9.18005e+00 -4.94015e+00 -1.04078e+01 + 935 935 2 -1.07101e+01 7.08000e+00 -2.57578e+01 + 936 936 2 -2.55005e+00 8.94000e+00 -2.43278e+01 + 937 937 2 -4.50005e+00 -7.45015e+00 -4.43778e+01 + 938 938 2 -1.16201e+01 -1.15701e+01 -4.55678e+01 + 939 939 2 -6.16005e+00 3.70000e-01 -2.87578e+01 + 940 940 2 5.89000e+00 1.28500e+01 -4.66078e+01 + 941 941 2 -4.83005e+00 -9.13015e+00 -9.38785e+00 + 942 942 2 -9.47005e+00 8.59000e+00 -2.92078e+01 + 943 943 2 2.77000e+00 -2.98015e+00 -2.46785e+00 + 944 944 2 7.66000e+00 -1.27401e+01 -2.93078e+01 + 945 945 2 1.39000e+00 -2.53015e+00 -4.22878e+01 + 946 946 2 7.71000e+00 -7.65015e+00 -2.27785e+00 + 947 947 2 2.82000e+00 1.15600e+01 -2.49278e+01 + 948 948 2 -3.37005e+00 -8.64015e+00 -2.27778e+01 + 949 949 2 -1.00601e+01 -6.51015e+00 -2.69378e+01 + 950 950 2 9.63000e+00 -9.00150e-01 -1.62785e+00 + 951 951 2 -7.22005e+00 -2.84015e+00 -1.44478e+01 + 952 952 2 -1.25801e+01 -6.22015e+00 -4.31278e+01 + 953 953 2 4.36000e+00 1.05000e+00 -1.82578e+01 + 954 954 2 7.00000e-02 -8.98015e+00 -3.88878e+01 + 955 955 2 1.15200e+01 7.68000e+00 -1.83078e+01 + 956 956 2 -1.16901e+01 3.75000e+00 -1.09578e+01 + 957 957 2 -6.34005e+00 -4.38015e+00 -2.76678e+01 + 958 958 2 -3.98005e+00 -1.57015e+00 -2.99878e+01 + 959 959 2 1.05000e+00 8.30000e+00 -1.98278e+01 + 960 960 2 1.27800e+01 -5.87015e+00 -1.64878e+01 + 961 961 2 -8.68005e+00 -1.27902e+01 -2.36778e+01 + 962 962 2 -5.28005e+00 7.20000e+00 -1.09378e+01 + 963 963 2 4.05000e+00 -3.07015e+00 -3.22978e+01 + 964 964 2 1.08000e+01 -8.53015e+00 -1.14078e+01 + 965 965 2 7.93000e+00 1.35000e+00 -1.02078e+01 + 966 966 2 4.58000e+00 1.10700e+01 -2.68578e+01 + 967 967 2 9.62000e+00 -9.25015e+00 -1.37778e+01 + 968 968 2 -7.58005e+00 -9.15015e+00 -3.10078e+01 + 969 969 2 -1.04601e+01 -7.89015e+00 -4.02578e+01 + 970 970 2 -6.66005e+00 7.36000e+00 -4.47778e+01 + 971 971 2 1.67000e+00 -1.00901e+01 -1.53178e+01 + 972 972 2 -2.82005e+00 -4.40015e+00 -1.95678e+01 + 973 973 2 1.27000e+01 1.26200e+01 -1.80078e+01 + 974 974 2 1.33000e+00 4.96000e+00 -4.40378e+01 + 975 975 2 -1.90005e+00 -1.21701e+01 -1.05778e+01 + 976 976 2 -5.54005e+00 9.34000e+00 -3.18078e+01 + 977 977 2 1.91000e+00 7.41000e+00 -4.42478e+01 + 978 978 2 1.99000e+00 -5.06015e+00 -4.50778e+01 + 979 979 2 1.17700e+01 -4.11015e+00 -2.89178e+01 + 980 980 2 -8.63005e+00 -6.07015e+00 -3.51578e+01 + 981 981 2 -1.16601e+01 -4.60150e-01 1.21540e-02 + 982 982 2 -5.00005e+00 -1.37015e+00 -3.30178e+01 + 983 983 2 3.30000e-01 1.12000e+00 -4.02878e+01 + 984 984 2 -3.85005e+00 3.72000e+00 -1.95178e+01 + 985 985 2 -3.54005e+00 -9.70150e-01 -7.00000e-02 + 986 986 2 4.20000e-01 1.24300e+01 -4.53478e+01 + 987 987 2 7.08000e+00 8.52000e+00 -4.13178e+01 + 988 988 2 -9.98005e+00 -4.13015e+00 -2.54578e+01 + 989 989 2 -7.37005e+00 1.75000e+00 -1.82378e+01 + 990 990 2 -1.41005e+00 -1.25901e+01 -7.03785e+00 + 991 991 2 2.74000e+00 -1.18702e+01 -3.75978e+01 + 992 992 2 -9.36005e+00 -4.60015e+00 -3.09878e+01 + 993 993 2 9.35000e+00 5.00000e-01 -4.71178e+01 + 994 994 2 -6.30051e-01 9.02000e+00 -2.89378e+01 + 995 995 2 1.03400e+01 -2.73015e+00 -3.90578e+01 + 996 996 2 6.01000e+00 -1.07302e+01 -2.45378e+01 + 997 997 2 -1.51005e+00 1.02200e+01 -2.67578e+01 + 998 998 2 2.08000e+00 8.18000e+00 -1.35678e+01 + 999 999 2 5.55000e+00 -7.76015e+00 -3.44178e+01 + 1000 1000 2 8.31000e+00 1.69000e+00 -2.04178e+01 + 1001 1001 2 -2.91005e+00 2.55000e+00 -2.97778e+01 + 1002 1002 2 -6.77005e+00 -7.46015e+00 -1.13278e+01 + 1003 1003 2 1.15000e+00 8.40000e-01 -2.33078e+01 + 1004 1004 2 3.18000e+00 7.08000e+00 -5.99785e+00 + 1005 1005 2 2.98000e+00 -1.11015e+00 -4.87846e-01 + 1006 1006 2 7.15000e+00 -7.78015e+00 -2.72578e+01 + 1007 1007 2 1.24200e+01 -1.26402e+01 -9.67785e+00 + 1008 1008 2 3.37000e+00 -1.00101e+01 -5.33785e+00 + 1009 1009 2 -6.43005e+00 -6.57015e+00 -3.65478e+01 + 1010 1010 2 -1.08005e+00 9.30000e+00 -1.83478e+01 + 1011 1011 2 8.58000e+00 6.30000e-01 -2.32778e+01 + 1012 1012 2 -7.16005e+00 -3.40015e+00 -3.25378e+01 + 1013 1013 2 8.62000e+00 -7.70150e-01 -3.55478e+01 + 1014 1014 2 -1.22101e+01 1.21700e+01 -4.15378e+01 + 1015 1015 2 1.14300e+01 5.08000e+00 -3.24678e+01 + 1016 1016 2 -3.49005e+00 4.98000e+00 -7.18785e+00 + 1017 1017 2 -7.44005e+00 2.90000e+00 -2.27978e+01 + 1018 1018 2 7.38000e+00 -9.39015e+00 -2.23278e+01 + 1019 1019 2 9.37000e+00 5.51000e+00 -1.97478e+01 + 1020 1020 2 4.52000e+00 -4.92015e+00 -1.04678e+01 + 1021 1021 2 8.72000e+00 -1.18002e+01 -4.09278e+01 + 1022 1022 2 6.08000e+00 1.27000e+01 -1.71478e+01 + 1023 1023 2 -6.33005e+00 -3.07015e+00 -2.50785e+00 + 1024 1024 2 -8.52005e+00 1.31000e+00 -4.15478e+01 + 1025 1025 2 5.08000e+00 1.04800e+01 -1.83978e+01 + 1026 1026 2 -4.56005e+00 7.99000e+00 -2.91778e+01 + 1027 1027 2 -8.84005e+00 -8.17015e+00 -2.27178e+01 + 1028 1028 2 1.20700e+01 -4.29015e+00 -4.14378e+01 + 1029 1029 2 1.26300e+01 1.00700e+01 -7.30785e+00 + 1030 1030 2 -7.65005e+00 4.16000e+00 -3.32278e+01 + 1031 1031 2 4.78000e+00 -5.28015e+00 -2.62785e+00 + 1032 1032 2 1.94000e+00 1.20600e+01 -2.23178e+01 + 1033 1033 2 -9.70005e+00 -1.01601e+01 -1.89678e+01 + 1034 1034 2 3.22000e+00 7.98500e-02 -3.42778e+01 + 1035 1035 2 -3.64005e+00 -1.03702e+01 -3.18678e+01 + 1036 1036 2 -4.18005e+00 -3.23015e+00 -2.31478e+01 + 1037 1037 2 1.01200e+01 -5.73015e+00 -2.73678e+01 + 1038 1038 2 2.79000e+00 9.32000e+00 -3.24878e+01 + 1039 1039 2 -3.78005e+00 -4.30015e+00 -5.36785e+00 + 1040 1040 2 5.24000e+00 3.20000e+00 -1.97878e+01 + 1041 1041 2 3.69000e+00 -9.14015e+00 -2.49378e+01 + 1042 1042 2 -1.01601e+01 2.90000e-01 -3.14878e+01 + 1043 1043 2 -6.30051e-01 3.77000e+00 -2.25785e+00 + 1044 1044 2 -8.43005e+00 4.49000e+00 -4.05785e+00 + 1045 1045 2 7.68000e+00 9.71000e+00 -3.36078e+01 + 1046 1046 2 2.81000e+00 -2.05015e+00 -1.06978e+01 + 1047 1047 2 -2.77005e+00 1.09800e+01 -3.77278e+01 + 1048 1048 2 6.80000e+00 -7.85015e+00 -2.46778e+01 + 1049 1049 2 2.05000e+00 -1.04002e+01 -3.32878e+01 + 1050 1050 2 1.01600e+01 -6.96015e+00 -3.19678e+01 + 1051 1051 2 1.27900e+01 -6.94015e+00 -3.15278e+01 + 1052 1052 2 -2.05005e+00 -8.86015e+00 -9.30785e+00 + 1053 1053 2 1.90000e-01 4.58000e+00 -3.88778e+01 + 1054 1054 2 -1.26801e+01 1.55000e+00 -2.43978e+01 + 1055 1055 2 -2.67005e+00 -4.99015e+00 -2.56178e+01 + 1056 1056 2 -1.14701e+01 -1.07015e+00 -1.54878e+01 + 1057 1057 2 8.07000e+00 -1.05201e+01 -8.31785e+00 + 1058 1058 2 -7.99005e+00 -7.19015e+00 -3.91778e+01 + 1059 1059 2 -1.12701e+01 -3.12015e+00 1.60000e-01 + 1060 1060 2 4.00000e-01 1.15300e+01 -1.32178e+01 + 1061 1061 2 -8.80005e+00 -3.04015e+00 -2.33078e+01 + 1062 1062 2 -3.06005e+00 -9.80015e+00 -4.50578e+01 + 1063 1063 2 4.20000e-01 -3.07015e+00 -3.41378e+01 + 1064 1064 2 -8.61005e+00 4.16000e+00 -4.62378e+01 + 1065 1065 2 1.26200e+01 -9.77015e+00 -2.81785e+00 + 1066 1066 2 -4.55005e+00 -1.90000e-01 -4.04678e+01 + 1067 1067 2 -6.48005e+00 -9.43015e+00 -2.65378e+01 + 1068 1068 2 -9.83005e+00 -7.96015e+00 -5.16785e+00 + 1069 1069 2 -4.91005e+00 2.67000e+00 -1.72978e+01 + 1070 1070 2 -4.20005e+00 9.96000e+00 -1.23978e+01 + 1071 1071 2 -1.12701e+01 2.22000e+00 -4.34178e+01 + 1072 1072 2 1.10100e+01 -1.15901e+01 -2.74678e+01 + 1073 1073 2 -1.04701e+01 5.56000e+00 -3.23778e+01 + 1074 1074 2 -1.17701e+01 -2.99015e+00 -4.50078e+01 + 1075 1075 2 -5.49005e+00 -8.12015e+00 -6.77785e+00 + 1076 1076 2 7.91000e+00 6.75000e+00 -1.01278e+01 + 1077 1077 2 8.49000e+00 -5.10150e-01 -1.32178e+01 + 1078 1078 2 -8.14005e+00 -7.00015e+00 -9.06785e+00 + 1079 1079 2 2.20000e+00 -7.65015e+00 -4.14578e+01 + 1080 1080 2 -1.01401e+01 5.40000e-01 -3.90078e+01 + 1081 1081 2 -2.80051e-01 8.31000e+00 -3.34378e+01 + 1082 1082 2 -1.15601e+01 3.85000e+00 -2.75978e+01 + 1083 1083 2 1.56000e+00 -1.30015e+00 -6.98785e+00 + 1084 1084 2 -5.71005e+00 -1.25001e+01 -3.14578e+01 + 1085 1085 2 -9.17005e+00 4.27000e+00 -3.67078e+01 + 1086 1086 2 7.41000e+00 1.11300e+01 -3.70878e+01 + 1087 1087 2 6.80000e+00 -2.40150e-01 -7.47785e+00 + 1088 1088 2 9.06000e+00 5.95000e+00 -2.85278e+01 + 1089 1089 2 1.06500e+01 -1.01502e+01 -1.81578e+01 + 1090 1090 2 1.00200e+01 -5.51015e+00 -3.66678e+01 + 1091 1091 2 3.99490e-02 -5.61015e+00 -2.28578e+01 + 1092 1092 2 9.72000e+00 1.12200e+01 -2.15078e+01 + 1093 1093 2 -2.21005e+00 6.87000e+00 -2.98178e+01 + 1094 1094 2 6.18000e+00 3.10000e+00 -1.44785e+00 + 1095 1095 2 -4.20051e-01 9.27000e+00 -3.84785e+00 + 1096 1096 2 -1.24501e+01 3.40000e+00 -3.34778e+01 + 1097 1097 2 -1.24601e+01 6.69000e+00 -3.71378e+01 + 1098 1098 2 -1.04301e+01 -4.22015e+00 -1.54278e+01 + 1099 1099 2 1.28300e+01 1.02500e+01 -1.14078e+01 + 1100 1100 2 8.23000e+00 4.15000e+00 -2.16678e+01 + 1101 1101 2 -2.18005e+00 -2.20015e+00 -3.21378e+01 + 1102 1102 2 5.11000e+00 1.08900e+01 -3.35978e+01 + 1103 1103 2 -5.55005e+00 -1.97015e+00 -5.71785e+00 + 1104 1104 2 -1.20301e+01 9.79000e+00 -2.89578e+01 + 1105 1105 2 9.79000e+00 -1.04401e+01 -2.58785e+00 + 1106 1106 2 -3.37005e+00 -6.63015e+00 -7.63785e+00 + 1107 1107 2 -1.09601e+01 -9.80015e+00 -7.11785e+00 + 1108 1108 2 -4.28005e+00 3.20000e-01 -6.24785e+00 + 1109 1109 2 2.84000e+00 1.05500e+01 -4.15078e+01 + 1110 1110 2 -5.60051e-01 1.23400e+01 -2.32178e+01 + 1111 1111 2 7.34000e+00 7.80000e+00 -3.12078e+01 + 1112 1112 2 1.02700e+01 8.30000e-01 -1.13778e+01 + 1113 1113 2 3.64000e+00 9.60000e+00 -9.75785e+00 + 1114 1114 2 -2.11005e+00 6.50000e+00 -4.75478e+01 + 1115 1115 2 -1.12501e+01 -5.70150e-01 -4.36178e+01 + 1116 1116 2 1.19600e+01 -8.26015e+00 -4.74978e+01 + 1117 1117 2 -1.11701e+01 -4.74015e+00 -3.74678e+01 + 1118 1118 2 -6.98005e+00 6.76000e+00 -3.31478e+01 + 1119 1119 2 -9.92005e+00 -4.97015e+00 -6.03785e+00 + 1120 1120 2 -8.02005e+00 7.10000e-01 -4.48078e+01 + 1121 1121 2 -1.01001e+01 1.24400e+01 -2.11978e+01 + 1122 1122 2 -6.31005e+00 5.71000e+00 -3.06578e+01 + 1123 1123 2 -7.32005e+00 3.10000e-01 -3.40578e+01 + 1124 1124 2 -8.78005e+00 1.27600e+01 -1.57278e+01 + 1125 1125 2 -1.16101e+01 8.41000e+00 -9.17785e+00 + 1126 1126 2 3.18000e+00 -4.59015e+00 -4.15378e+01 + 1127 1127 2 -9.44005e+00 1.12700e+01 -4.70785e+00 + 1128 1128 2 -5.88005e+00 -5.37015e+00 -1.63578e+01 + 1129 1129 2 2.80000e+00 9.60000e-01 -3.70785e+00 + 1130 1130 2 9.65000e+00 -2.18015e+00 -1.81778e+01 + 1131 1131 2 7.36000e+00 -1.04802e+01 -4.76578e+01 + 1132 1132 2 2.03000e+00 -3.68015e+00 -1.88478e+01 + 1133 1133 2 3.70000e-01 1.14100e+01 -8.54785e+00 + 1134 1134 2 -2.20051e-01 -7.72015e+00 -3.26078e+01 + 1135 1135 2 2.97000e+00 -2.37015e+00 -4.59478e+01 + 1136 1136 2 -5.10051e-01 4.37000e+00 -4.20478e+01 + 1137 1137 2 -3.46005e+00 -7.82015e+00 -1.35078e+01 + 1138 1138 2 1.17800e+01 1.18200e+01 -3.30278e+01 + 1139 1139 2 1.05800e+01 -5.78015e+00 -3.96778e+01 + 1140 1140 2 -7.71005e+00 -9.80150e-01 -4.34785e+00 + 1141 1141 2 -8.35005e+00 -3.20015e+00 -3.92678e+01 + 1142 1142 2 -2.25005e+00 -7.65015e+00 -3.79678e+01 + 1143 1143 2 -1.17201e+01 7.49000e+00 -3.11078e+01 + 1144 1144 2 -4.11005e+00 -8.31015e+00 -4.13378e+01 + 1145 1145 2 -1.07001e+01 1.09000e+01 -2.14785e+00 + 1146 1146 2 6.04000e+00 3.30000e-01 -4.43578e+01 + 1147 1147 2 -3.80005e+00 -1.16701e+01 -8.45785e+00 + 1148 1148 2 -5.57005e+00 -6.30150e-01 -4.66878e+01 + 1149 1149 2 3.59000e+00 -1.26302e+01 -9.33785e+00 + 1150 1150 2 -9.70051e-01 2.09850e-01 -1.90578e+01 + 1151 1151 2 9.07000e+00 -5.67015e+00 -1.21078e+01 + 1152 1152 2 -6.91005e+00 -1.20402e+01 -2.15278e+01 + 1153 1153 2 1.18200e+01 -6.17015e+00 -4.55878e+01 + 1154 1154 2 6.86000e+00 -9.62015e+00 -4.05178e+01 + 1155 1155 2 -6.63005e+00 9.75000e+00 -3.91578e+01 + 1156 1156 2 -5.20005e+00 -3.97015e+00 -3.00378e+01 + 1157 1157 2 -6.48005e+00 1.10400e+01 -1.12778e+01 + 1158 1158 2 -9.27005e+00 9.88000e+00 -1.37078e+01 + 1159 1159 2 4.33000e+00 4.60000e+00 -1.69178e+01 + 1160 1160 2 1.12500e+01 -6.43015e+00 2.29000e+00 + 1161 1161 2 1.11200e+01 2.43000e+00 -1.36878e+01 + 1162 1162 2 2.28000e+00 -4.94015e+00 -6.01785e+00 + 1163 1163 2 5.08000e+00 4.06000e+00 -3.41278e+01 + 1164 1164 2 4.96000e+00 2.79000e+00 -1.46078e+01 + 1165 1165 2 1.02700e+01 -9.74015e+00 -2.14278e+01 + 1166 1166 2 5.36000e+00 -1.12802e+01 -3.90478e+01 + 1167 1167 2 1.17000e+01 -4.50150e-01 -4.32178e+01 + 1168 1168 2 1.17800e+01 2.21000e+00 -4.15778e+01 + 1169 1169 2 -1.68005e+00 -9.77015e+00 -4.74678e+01 + 1170 1170 2 4.07000e+00 -1.16801e+01 -1.57978e+01 + 1171 1171 2 9.34000e+00 1.13100e+01 -3.50978e+01 + 1172 1172 2 -8.90051e-01 -5.39015e+00 -3.38878e+01 + 1173 1173 2 -5.80005e+00 -1.16001e+01 -1.58078e+01 + 1174 1174 2 1.21800e+01 5.74000e+00 -2.48078e+01 + 1175 1175 2 9.45000e+00 -3.94015e+00 -1.01785e+00 + 1176 1176 2 5.05000e+00 -6.65015e+00 -3.06478e+01 + 1177 1177 2 4.74000e+00 -1.20001e+01 -6.57785e+00 + 1178 1178 2 9.17000e+00 -5.24015e+00 -2.20178e+01 + 1179 1179 2 -4.99005e+00 -2.71015e+00 -2.04078e+01 + 1180 1180 2 5.55000e+00 -9.30150e-01 -3.77878e+01 + 1181 1181 2 4.31000e+00 1.87000e+00 -4.02478e+01 + 1182 1182 2 1.22100e+01 4.41000e+00 -3.56178e+01 + 1183 1183 2 5.39000e+00 -1.04602e+01 -1.21478e+01 + 1184 1184 2 -2.90005e+00 -9.10150e-01 -4.62178e+01 + 1185 1185 2 8.83000e+00 3.44000e+00 -3.89978e+01 + 1186 1186 2 3.74000e+00 9.80000e-01 -1.18778e+01 + 1187 1187 2 -1.17501e+01 6.50000e+00 -1.37478e+01 + 1188 1188 2 -8.12005e+00 -9.72015e+00 -3.68278e+01 + 1189 1189 2 6.79000e+00 5.28000e+00 -3.06178e+01 + 1190 1190 2 7.38000e+00 -4.65015e+00 8.60000e-01 + 1191 1191 2 1.62000e+00 9.24000e+00 -2.43778e+01 + 1192 1192 2 4.04000e+00 -4.11015e+00 -3.91378e+01 + 1193 1193 2 -5.89005e+00 -7.40150e-01 -1.29078e+01 + 1194 1194 2 -6.16005e+00 4.30000e-01 -3.14878e+01 + 1195 1195 2 6.25000e+00 -4.14015e+00 -3.08078e+01 + 1196 1196 2 1.03700e+01 -7.90150e-01 -2.17078e+01 + 1197 1197 2 3.93000e+00 2.71000e+00 -5.74785e+00 + 1198 1198 2 -1.99005e+00 3.41000e+00 -4.40178e+01 + 1199 1199 2 1.22800e+01 -9.61015e+00 -2.62478e+01 + 1200 1200 2 -3.81005e+00 9.46000e+00 -7.36785e+00 + 1201 1201 2 -7.51005e+00 1.02700e+01 -3.02278e+01 + 1202 1202 2 1.05600e+01 5.31000e+00 -1.60578e+01 + 1203 1203 2 -6.57005e+00 -3.28015e+00 -4.78478e+01 + 1204 1204 2 4.37000e+00 4.84000e+00 -3.72978e+01 + 1205 1205 2 7.88000e+00 6.40000e+00 -3.71178e+01 + 1206 1206 2 2.22000e+00 -6.26015e+00 -9.75785e+00 + 1207 1207 2 4.85000e+00 2.39000e+00 -2.42778e+01 + 1208 1208 2 -1.13501e+01 4.77000e+00 -4.62778e+01 + 1209 1209 2 1.26600e+01 -6.29015e+00 -7.86785e+00 + 1210 1210 2 4.69000e+00 4.00000e+00 -9.68785e+00 + 1211 1211 2 3.99000e+00 -8.63015e+00 -4.32778e+01 + 1212 1212 2 7.98000e+00 -8.36015e+00 -1.73778e+01 + 1213 1213 2 2.51000e+00 -4.42015e+00 -3.59478e+01 + 1214 1214 2 5.68000e+00 1.10600e+01 -2.35278e+01 + 1215 1215 2 -4.52005e+00 -7.48015e+00 -1.76978e+01 + 1216 1216 2 -1.03201e+01 -7.23015e+00 -4.57478e+01 + 1217 1217 2 -3.90051e-01 -9.95015e+00 -3.59978e+01 + 1218 1218 2 5.72000e+00 -1.04002e+01 -3.64478e+01 + 1219 1219 2 2.20000e-01 -1.32015e+00 -1.43878e+01 + 1220 1220 2 5.23000e+00 1.27000e+00 -3.60778e+01 + 1221 1221 2 -9.19005e+00 -1.06502e+01 -4.19378e+01 + 1222 1222 2 6.55000e+00 -6.27015e+00 -1.14978e+01 + 1223 1223 2 -2.72005e+00 -9.18015e+00 -3.43078e+01 + 1224 1224 2 -1.02501e+01 9.68000e+00 -4.08078e+01 + 1225 1225 2 -2.08005e+00 -9.04015e+00 -1.71978e+01 + 1226 1226 2 5.19000e+00 6.56000e+00 -7.65785e+00 + 1227 1227 2 -3.50051e-01 -6.16015e+00 -1.26578e+01 + 1228 1228 2 5.80000e-01 7.88000e+00 -6.00785e+00 + 1229 1229 2 -5.18005e+00 8.11000e+00 -4.26578e+01 + 1230 1230 2 -2.22005e+00 -4.89015e+00 -1.44978e+01 + 1231 1231 2 -9.07005e+00 -1.15502e+01 -4.63378e+01 + 1232 1232 2 1.24200e+01 1.95000e+00 -1.75978e+01 + 1233 1233 2 1.09800e+01 2.54000e+00 -2.14078e+01 + 1234 1234 2 -2.41005e+00 5.48000e+00 -2.65078e+01 + 1235 1235 2 7.17000e+00 1.18700e+01 -3.18178e+01 + 1236 1236 2 6.20000e-01 1.06500e+01 -3.09878e+01 + 1237 1237 2 7.90000e+00 -4.16015e+00 -4.09778e+01 + 1238 1238 2 -1.13701e+01 -1.62015e+00 -3.50378e+01 + 1239 1239 2 2.73000e+00 -1.08802e+01 -2.82178e+01 + 1240 1240 2 -2.52005e+00 -1.91015e+00 -3.96678e+01 + 1241 1241 2 -7.49005e+00 1.17000e+00 -3.91478e+01 + 1242 1242 2 2.32000e+00 -5.24015e+00 -1.45778e+01 + 1243 1243 2 9.11000e+00 -7.30150e-01 -3.12078e+01 + 1244 1244 2 4.66000e+00 -7.22015e+00 -1.56878e+01 + 1245 1245 2 5.32000e+00 -4.00150e-01 -5.00785e+00 + 1246 1246 2 -8.10051e-01 -2.62015e+00 -2.98778e+01 + 1247 1247 2 -1.08101e+01 7.68000e+00 -6.23785e+00 + 1248 1248 2 7.19000e+00 -7.80015e+00 -3.14078e+01 + 1249 1249 2 9.90000e+00 3.92000e+00 -8.91785e+00 + 1250 1250 2 -1.01005e+00 1.27600e+01 -2.62278e+01 + 1251 1251 2 -1.79005e+00 -5.91015e+00 -1.03678e+01 + 1252 1252 2 -1.61005e+00 -1.14201e+01 -2.87878e+01 + 1253 1253 2 -8.35005e+00 -1.69015e+00 -3.05978e+01 + 1254 1254 2 -1.01001e+01 -7.20015e+00 -1.16878e+01 + 1255 1255 2 1.12300e+01 -8.67015e+00 -1.58878e+01 + 1256 1256 2 7.40000e+00 -1.76015e+00 -1.65678e+01 + 1257 1257 2 -5.20005e+00 -1.09802e+01 -2.84278e+01 + 1258 1258 2 1.08800e+01 7.74000e+00 -2.96078e+01 + 1259 1259 2 4.80000e+00 -7.70015e+00 -3.99778e+01 + 1260 1260 2 1.49000e+00 -1.30150e-01 -3.65178e+01 + 1261 1261 2 -5.56005e+00 -9.87015e+00 -3.67178e+01 + 1262 1262 2 -9.83005e+00 -1.10602e+01 -3.49778e+01 + 1263 1263 2 -1.12001e+01 2.48000e+00 -1.58478e+01 + 1264 1264 2 -3.41005e+00 7.12000e+00 -1.40078e+01 + 1265 1265 2 1.17200e+01 4.81000e+00 -1.86578e+01 + 1266 1266 2 -1.22001e+01 2.82000e+00 -3.06378e+01 + 1267 1267 2 -9.60005e+00 1.10100e+01 -4.71878e+01 + 1268 1268 2 -9.04005e+00 5.10000e-01 -2.50878e+01 + 1269 1269 2 -5.96005e+00 -2.01500e-02 -3.72478e+01 + 1270 1270 2 1.27800e+01 -4.50015e+00 -1.37178e+01 + 1271 1271 2 9.00000e-02 7.49000e+00 -3.86678e+01 + 1272 1272 2 5.99000e+00 -8.09015e+00 -1.35178e+01 + 1273 1273 2 1.13100e+01 -5.61015e+00 -1.87778e+01 + 1274 1274 2 1.18700e+01 -1.06102e+01 -3.84478e+01 + 1275 1275 2 3.53000e+00 -6.05015e+00 -3.39678e+01 + 1276 1276 2 -6.20005e+00 3.51000e+00 -1.48878e+01 + 1277 1277 2 1.16400e+01 3.59000e+00 -3.85778e+01 + 1278 1278 2 1.14000e+01 -1.27701e+01 -3.58478e+01 + 1279 1279 2 -2.54005e+00 1.25300e+01 -4.23378e+01 + 1280 1280 2 -7.68005e+00 -6.93015e+00 -1.92678e+01 + 1281 1281 2 7.61000e+00 -1.63015e+00 -3.97078e+01 + 1282 1282 2 -3.45005e+00 3.35000e+00 -1.30978e+01 + 1283 1283 2 -4.44005e+00 -1.16402e+01 -4.82978e+01 + 1284 1284 2 -1.70000e-01 8.37000e+00 -2.26178e+01 + 1285 1285 2 9.78000e+00 6.78000e+00 -4.03278e+01 + 1286 1286 2 -6.58005e+00 3.79000e+00 -3.93778e+01 + 1287 1287 2 3.43000e+00 -1.06901e+01 -4.47078e+01 + 1288 1288 2 1.14100e+01 -1.26901e+01 -3.53785e+00 + 1289 1289 2 -2.10005e+00 -1.11701e+01 -2.25678e+01 + 1290 1290 2 -7.97005e+00 1.01400e+01 -3.68178e+01 + 1291 1291 2 -2.11005e+00 1.94000e+00 -3.94678e+01 + 1292 1292 2 4.75000e+00 1.07900e+01 -2.96878e+01 + 1293 1293 2 6.04000e+00 -1.28401e+01 -3.54278e+01 + 1294 1294 2 9.83000e+00 8.26000e+00 -3.22478e+01 + 1295 1295 2 9.44000e+00 -7.93015e+00 -2.88678e+01 + 1296 1296 2 1.16000e+01 -2.78015e+00 -7.80785e+00 + 1297 1297 2 1.06900e+01 -1.21402e+01 -5.94785e+00 + 1298 1298 2 3.51000e+00 9.25000e+00 -1.65078e+01 + 1299 1299 2 -8.50005e+00 4.88000e+00 -2.61678e+01 + 1300 1300 2 3.34000e+00 -1.03902e+01 -3.07978e+01 + 1301 1301 2 5.18000e+00 6.88000e+00 -2.16178e+01 + 1302 1302 2 -1.24001e+01 6.40000e+00 -1.09778e+01 + 1303 1303 2 -7.55005e+00 -6.93015e+00 -1.49378e+01 + 1304 1304 2 -1.18301e+01 8.58000e+00 -2.16785e+00 + 1305 1305 2 -1.11601e+01 4.20000e+00 -6.70785e+00 + 1306 1306 2 -7.07005e+00 8.69000e+00 -9.76785e+00 + 1307 1307 2 1.06600e+01 4.55000e+00 -1.20878e+01 + 1308 1308 2 2.64000e+00 -1.64015e+00 -1.54978e+01 + 1309 1309 2 2.99000e+00 2.74000e+00 -4.49278e+01 + 1310 1310 2 9.29000e+00 -7.03015e+00 -4.50078e+01 + 1311 1311 2 4.29000e+00 7.97000e+00 -4.54078e+01 + 1312 1312 2 -1.12701e+01 -8.00015e+00 -2.14078e+01 + 1313 1313 2 -8.40005e+00 -5.54015e+00 -2.24478e+01 + 1314 1314 2 -6.09005e+00 4.48000e+00 -3.67478e+01 + 1315 1315 2 9.15000e+00 5.23000e+00 -3.37778e+01 + 1316 1316 2 -4.68005e+00 -4.82015e+00 -4.66478e+01 + 1317 1317 2 7.52000e+00 1.57000e+00 -1.43878e+01 + 1318 1318 2 -2.77005e+00 1.19000e+00 -1.69778e+01 + 1319 1319 2 9.14000e+00 -1.53015e+00 -8.01785e+00 + 1320 1320 2 6.97000e+00 -3.24015e+00 -2.83078e+01 + 1321 1321 2 1.91000e+00 7.59000e+00 -9.15785e+00 + 1322 1322 2 6.85000e+00 4.06000e+00 -3.62578e+01 + 1323 1323 2 1.27000e+00 -3.27015e+00 -3.15078e+01 + 1324 1324 2 4.35000e+00 9.50000e+00 -5.44785e+00 + 1325 1325 2 -7.14005e+00 -6.48015e+00 -4.66478e+01 + 1326 1326 2 8.30000e-01 -1.06015e+00 -4.33785e+00 + 1327 1327 2 2.71000e+00 -1.11202e+01 -2.20978e+01 + 1328 1328 2 -9.59005e+00 -3.70015e+00 -1.81878e+01 + 1329 1329 2 -8.48005e+00 -1.03702e+01 -2.84678e+01 + 1330 1330 2 -9.11005e+00 9.59000e+00 -4.33878e+01 + 1331 1331 2 1.62000e+00 5.40000e+00 -1.84785e+00 + 1332 1332 2 -4.00051e-01 -3.22015e+00 -2.13578e+01 + 1333 1333 2 8.34000e+00 -3.06015e+00 -1.43378e+01 + 1334 1334 2 -8.45005e+00 7.58000e+00 -2.39178e+01 + 1335 1335 2 8.81000e+00 9.65000e+00 -4.30678e+01 + 1336 1336 2 2.17000e+00 -9.83015e+00 -1.26478e+01 + 1337 1337 2 -4.31005e+00 7.43000e+00 -2.58078e+01 + 1338 1338 2 8.92000e+00 8.37000e+00 -7.99785e+00 + 1339 1339 2 6.05000e+00 -3.75015e+00 -1.30278e+01 + 1340 1340 2 5.74000e+00 1.21100e+01 -4.43785e+00 + 1341 1341 2 3.20000e+00 5.57000e+00 -3.14378e+01 + 1342 1342 2 -5.08005e+00 -1.37015e+00 -1.01078e+01 + 1343 1343 2 -9.90051e-01 -1.26302e+01 -1.64878e+01 + 1344 1344 2 -1.15001e+01 -3.89015e+00 -8.07785e+00 + 1345 1345 2 -2.06005e+00 -5.76015e+00 -1.73478e+01 + 1346 1346 2 -1.24001e+01 1.08600e+01 -4.71578e+01 + 1347 1347 2 -3.59005e+00 5.39000e+00 -9.73785e+00 + 1348 1348 2 6.91000e+00 -4.28015e+00 -5.88785e+00 + 1349 1349 2 -9.64005e+00 6.56000e+00 -2.14178e+01 + 1350 1350 2 9.69000e+00 1.12200e+01 -1.51878e+01 + 1351 1351 2 1.14500e+01 -1.74015e+00 5.60000e-01 + 1352 1352 2 -6.61005e+00 1.20500e+01 -4.26078e+01 + 1353 1353 2 6.52000e+00 1.06600e+01 -1.45078e+01 + 1354 1354 2 1.03600e+01 -2.89015e+00 -4.28278e+01 + 1355 1355 2 9.30000e-01 -7.60015e+00 -2.89778e+01 + 1356 1356 2 7.04000e+00 -1.12002e+01 -4.48378e+01 + 1357 1357 2 7.40000e-01 4.14000e+00 -1.25878e+01 + 1358 1358 2 8.00000e-02 -4.35015e+00 -3.89678e+01 + 1359 1359 2 7.31000e+00 6.91000e+00 -2.43078e+01 + 1360 1360 2 -1.00401e+01 -3.51015e+00 -4.29978e+01 + 1361 1361 2 -1.75005e+00 -2.26015e+00 -1.81178e+01 + 1362 1362 2 1.12700e+01 -1.67015e+00 -1.57278e+01 + 1363 1363 2 1.01500e+01 2.95000e+00 -3.49478e+01 + 1364 1364 2 -1.22001e+01 9.13000e+00 -1.48778e+01 + 1365 1365 2 -9.12005e+00 2.42000e+00 -3.46778e+01 + 1366 1366 2 2.96000e+00 6.12000e+00 -2.66378e+01 + 1367 1367 2 -5.30005e+00 9.71000e+00 -1.68678e+01 + 1368 1368 2 9.84000e+00 -3.46015e+00 -1.09178e+01 + 1369 1369 2 3.99000e+00 4.59000e+00 -2.89778e+01 + 1370 1370 2 9.78000e+00 1.10400e+01 -3.14178e+01 + 1371 1371 2 1.03500e+01 -5.34015e+00 -1.44278e+01 + 1372 1372 2 -3.43005e+00 -9.17015e+00 -2.84178e+01 + 1373 1373 2 4.45000e+00 -3.71015e+00 -1.52778e+01 + 1374 1374 2 1.57000e+00 -7.99015e+00 -2.61278e+01 + 1375 1375 2 5.46000e+00 -2.57015e+00 -4.72978e+01 + 1376 1376 2 -1.14501e+01 1.47000e+00 -6.54785e+00 + 1377 1377 2 6.75000e+00 -5.59015e+00 -4.47678e+01 + 1378 1378 2 -5.04005e+00 -1.10502e+01 -2.49178e+01 + 1379 1379 2 -1.02401e+01 -9.00150e-01 -2.25278e+01 + 1380 1380 2 4.23000e+00 -7.94015e+00 -2.07378e+01 + diff --git a/examples/USER/misc/local_density/benzene_water/benzene_water.in b/examples/USER/misc/local_density/benzene_water/benzene_water.in new file mode 100644 index 0000000000..01fb3f27e5 --- /dev/null +++ b/examples/USER/misc/local_density/benzene_water/benzene_water.in @@ -0,0 +1,62 @@ +# LAMMPS input file for 26.5% benzene mole fraction solution +# with 380 benzene and 1000 water molecules, +# using all possible local density potentials +# between benzene and water +# +# Author: Tanmoy Sanyal, Shell Group, UC Santa Barbara +# +# Refer: Sanyal and Shell, JPC-B, 2018, 122 (21), 5678-5693 + + + +# Initialize simulation box +dimension 3 +boundary p p p +units real +atom_style molecular + +# Set potential styles +pair_style hybrid/overlay table spline 500 local/density + +# Read molecule data and set initial velocities +read_data benzene_water.data +velocity all create 3.0000e+02 16611 rot yes dist gaussian + +# Assign potentials +pair_coeff 1 1 table benzene_water.pair.table PairBB +pair_coeff 1 2 table benzene_water.pair.table PairWW +pair_coeff 2 2 table benzene_water.pair.table PairBW +pair_coeff * * local/density benzene_water.localdensity.table + +# Recentering during minimization and equilibration +fix recentering all recenter 0.0 0.0 0.0 units box + +# Thermostat & time integration +timestep 2.0 +thermo 100 +thermo_style custom temp ke pe etotal ebond eangle edihed evdwl + +# Minimization +minimize 1.e-4 0.0 10000 10000 + +# Set up integration parameters +fix timeintegration all nve +fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 81890 + +# Equilibration (for realistic results, run for 5000000 steps) +reset_timestep 0 +run 5000 + +# Turn off recentering during production phase +unfix recentering + +# Setup trajectory output +dump myDump all custom 100 benzene_water.lammpstrj.gz id type x y z element +dump_modify myDump element B W +dump_modify myDump sort id + +# Production (for realistic results, run for 10000000 steps) +reset_timestep 0 +run 1000 + + diff --git a/examples/USER/misc/local_density/benzene_water/benzene_water.localdensity.table b/examples/USER/misc/local_density/benzene_water/benzene_water.localdensity.table new file mode 100644 index 0000000000..b0d63dbbbf --- /dev/null +++ b/examples/USER/misc/local_density/benzene_water/benzene_water.localdensity.table @@ -0,0 +1,2024 @@ +# local density potentials: (B,B), (W,W), (B,W), (W,B) + +4 500 + + 6.5000000e+00 7.5000000e+00 +1 +1 + 0.0000000e+00 2.0000000e+01 4.0080160e-02 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5200000e+00 + 1.5199986e+00 + 1.5199680e+00 + 1.5198579e+00 + 1.5196169e+00 + 1.5191936e+00 + 1.5185367e+00 + 1.5175950e+00 + 1.5163171e+00 + 1.5146518e+00 + 1.5125477e+00 + 1.5099534e+00 + 1.5068178e+00 + 1.5030895e+00 + 1.4987171e+00 + 1.4936494e+00 + 1.4878351e+00 + 1.4812228e+00 + 1.4737622e+00 + 1.4654545e+00 + 1.4563786e+00 + 1.4466198e+00 + 1.4362633e+00 + 1.4253943e+00 + 1.4140983e+00 + 1.4024604e+00 + 1.3905658e+00 + 1.3785000e+00 + 1.3663480e+00 + 1.3541953e+00 + 1.3421270e+00 + 1.3302284e+00 + 1.3185849e+00 + 1.3072816e+00 + 1.2964039e+00 + 1.2860369e+00 + 1.2762309e+00 + 1.2669431e+00 + 1.2581156e+00 + 1.2496902e+00 + 1.2416089e+00 + 1.2338138e+00 + 1.2262466e+00 + 1.2188495e+00 + 1.2115643e+00 + 1.2043330e+00 + 1.1970976e+00 + 1.1898000e+00 + 1.1823821e+00 + 1.1747860e+00 + 1.1669536e+00 + 1.1588268e+00 + 1.1503476e+00 + 1.1414684e+00 + 1.1321937e+00 + 1.1225435e+00 + 1.1125380e+00 + 1.1021975e+00 + 1.0915422e+00 + 1.0805923e+00 + 1.0693679e+00 + 1.0578893e+00 + 1.0461766e+00 + 1.0342501e+00 + 1.0221300e+00 + 1.0098365e+00 + 9.9738976e-01 + 9.8481000e-01 + 9.7211742e-01 + 9.5933222e-01 + 9.4647351e-01 + 9.3354993e-01 + 9.2056435e-01 + 9.0751957e-01 + 8.9441841e-01 + 8.8126366e-01 + 8.6805815e-01 + 8.5480466e-01 + 8.4150602e-01 + 8.2816503e-01 + 8.1478448e-01 + 8.0136720e-01 + 7.8791599e-01 + 7.7443365e-01 + 7.6092300e-01 + 7.4738683e-01 + 7.3382796e-01 + 7.2024905e-01 + 7.0664998e-01 + 6.9302788e-01 + 6.7937983e-01 + 6.6570286e-01 + 6.5199403e-01 + 6.3825039e-01 + 6.2446900e-01 + 6.1064690e-01 + 5.9678114e-01 + 5.8286879e-01 + 5.6890688e-01 + 5.5489248e-01 + 5.4082263e-01 + 5.2669439e-01 + 5.1250480e-01 + 4.9825093e-01 + 4.8392987e-01 + 4.6954274e-01 + 4.5509728e-01 + 4.4060182e-01 + 4.2606471e-01 + 4.1149429e-01 + 3.9689892e-01 + 3.8228692e-01 + 3.6766665e-01 + 3.5304645e-01 + 3.3843467e-01 + 3.2383965e-01 + 3.0926972e-01 + 2.9473325e-01 + 2.8023857e-01 + 2.6579402e-01 + 2.5140795e-01 + 2.3708871e-01 + 2.2284155e-01 + 2.0866274e-01 + 1.9454685e-01 + 1.8048847e-01 + 1.6648220e-01 + 1.5252263e-01 + 1.3860435e-01 + 1.2472194e-01 + 1.1087000e-01 + 9.7043120e-02 + 8.3235888e-02 + 6.9442895e-02 + 5.5658731e-02 + 4.1877986e-02 + 2.8095251e-02 + 1.4305116e-02 + 5.0217173e-04 +-1.3318314e-02 +-2.7157364e-02 +-4.1014743e-02 +-5.4890212e-02 +-6.8783535e-02 +-8.2694474e-02 +-9.6622792e-02 +-1.1056825e-01 +-1.2453061e-01 +-1.3850964e-01 +-1.5250510e-01 +-1.6651674e-01 +-1.8054434e-01 +-1.9458766e-01 +-2.0864645e-01 +-2.2272049e-01 +-2.3680953e-01 +-2.5091268e-01 +-2.6502202e-01 +-2.7912541e-01 +-2.9321059e-01 +-3.0726536e-01 +-3.2127748e-01 +-3.3523473e-01 +-3.4912488e-01 +-3.6293570e-01 +-3.7665496e-01 +-3.9027045e-01 +-4.0376992e-01 +-4.1714117e-01 +-4.3037195e-01 +-4.4345004e-01 +-4.5636322e-01 +-4.6909926e-01 +-4.8164636e-01 +-4.9400348e-01 +-5.0618082e-01 +-5.1818912e-01 +-5.3003911e-01 +-5.4174151e-01 +-5.5330707e-01 +-5.6474652e-01 +-5.7607059e-01 +-5.8729001e-01 +-5.9841552e-01 +-6.0945785e-01 +-6.2042773e-01 +-6.3133589e-01 +-6.4219308e-01 +-6.5301001e-01 +-6.6379743e-01 +-6.7456590e-01 +-6.8531068e-01 +-6.9599928e-01 +-7.0659631e-01 +-7.1706635e-01 +-7.2737402e-01 +-7.3748391e-01 +-7.4736063e-01 +-7.5696876e-01 +-7.6627291e-01 +-7.7523768e-01 +-7.8382768e-01 +-7.9200749e-01 +-7.9974172e-01 +-8.0699496e-01 +-8.1373183e-01 +-8.1991691e-01 +-8.2551482e-01 +-8.3050467e-01 +-8.3491291e-01 +-8.3877558e-01 +-8.4212871e-01 +-8.4500834e-01 +-8.4745052e-01 +-8.4949128e-01 +-8.5116667e-01 +-8.5251273e-01 +-8.5356549e-01 +-8.5436100e-01 +-8.5493529e-01 +-8.5532441e-01 +-8.5556440e-01 +-8.5569130e-01 +-8.5574115e-01 +-8.5574998e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 +-8.5575000e-01 + + 2.5000000e+00 3.5000000e+00 +2 +2 + 0.0000000e+00 6.0000000e+00 1.2024048e-02 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0462000e+00 + 2.0460657e+00 + 2.0446594e+00 + 2.0403895e+00 + 2.0316620e+00 + 2.0168831e+00 + 1.9944587e+00 + 1.9627949e+00 + 1.9202980e+00 + 1.8654077e+00 + 1.7985181e+00 + 1.7230065e+00 + 1.6425015e+00 + 1.5606319e+00 + 1.4810262e+00 + 1.4073131e+00 + 1.3431214e+00 + 1.2920798e+00 + 1.2569864e+00 + 1.2358842e+00 + 1.2251262e+00 + 1.2210637e+00 + 1.2200475e+00 + 1.2184289e+00 + 1.2125589e+00 + 1.1987885e+00 + 1.1735526e+00 + 1.1361263e+00 + 1.0892520e+00 + 1.0358822e+00 + 9.7896980e-01 + 9.2146751e-01 + 8.6632806e-01 + 8.1650421e-01 + 7.7494869e-01 + 7.4388695e-01 + 7.2232357e-01 + 7.0837184e-01 + 7.0014504e-01 + 6.9575642e-01 + 6.9331925e-01 + 6.9094679e-01 + 6.8675230e-01 + 6.7890996e-01 + 6.6694075e-01 + 6.5168297e-01 + 6.3402998e-01 + 6.1487512e-01 + 5.9511173e-01 + 5.7563315e-01 + 5.5733272e-01 + 5.4110376e-01 + 5.2756220e-01 + 5.1637106e-01 + 5.0698887e-01 + 4.9887416e-01 + 4.9148546e-01 + 4.8428132e-01 + 4.7672025e-01 + 4.6826081e-01 + 4.5839485e-01 + 4.4712673e-01 + 4.3486244e-01 + 4.2201868e-01 + 4.0901218e-01 + 3.9625966e-01 + 3.8417784e-01 + 3.7318344e-01 + 3.6369286e-01 + 3.5593854e-01 + 3.4965997e-01 + 3.4451493e-01 + 3.4016124e-01 + 3.3625667e-01 + 3.3245903e-01 + 3.2842610e-01 + 3.2381569e-01 + 3.1831627e-01 + 3.1195884e-01 + 3.0498880e-01 + 2.9765482e-01 + 2.9020560e-01 + 2.8288981e-01 + 2.7595615e-01 + 2.6965328e-01 + 2.6422884e-01 + 2.5975489e-01 + 2.5593343e-01 + 2.5241954e-01 + 2.4886832e-01 + 2.4493489e-01 + 2.4027433e-01 + 2.3454175e-01 + 2.2739225e-01 + 2.1853384e-01 + 2.0811604e-01 + 1.9650791e-01 + 1.8408007e-01 + 1.7120316e-01 + 1.5824783e-01 + 1.4558470e-01 + 1.3358442e-01 + 1.2261513e-01 + 1.1286044e-01 + 1.0419542e-01 + 9.6465750e-02 + 8.9517133e-02 + 8.3195263e-02 + 7.7345836e-02 + 7.1814548e-02 + 6.6447095e-02 + 6.1107588e-02 + 5.5777274e-02 + 5.0483296e-02 + 4.5252904e-02 + 4.0113348e-02 + 3.5091878e-02 + 3.0215745e-02 + 2.5512199e-02 + 2.1008131e-02 + 1.6715617e-02 + 1.2626961e-02 + 8.7330951e-03 + 5.0249487e-03 + 1.4934524e-03 +-1.8704635e-03 +-5.0758685e-03 +-8.1318323e-03 +-1.1043079e-02 +-1.3793016e-02 +-1.6358529e-02 +-1.8716498e-02 +-2.0843807e-02 +-2.2717336e-02 +-2.4313969e-02 +-2.5610588e-02 +-2.6585188e-02 +-2.7244724e-02 +-2.7627095e-02 +-2.7771713e-02 +-2.7717987e-02 +-2.7505328e-02 +-2.7173148e-02 +-2.6760858e-02 +-2.6307867e-02 +-2.5841384e-02 +-2.5342224e-02 +-2.4780181e-02 +-2.4125047e-02 +-2.3346614e-02 +-2.2414676e-02 +-2.1299025e-02 +-1.9969454e-02 +-1.8398136e-02 +-1.6599321e-02 +-1.4623294e-02 +-1.2521505e-02 +-1.0345403e-02 +-8.1464389e-03 +-5.9760622e-03 +-3.8857229e-03 +-1.9268610e-03 +-1.3832164e-04 + 1.4782888e-03 + 2.9282133e-03 + 4.2166947e-03 + 5.3489760e-03 + 6.3303000e-03 + 7.1659097e-03 + 7.8610481e-03 + 8.4198995e-03 + 8.8332749e-03 + 9.0828227e-03 + 9.1500123e-03 + 9.0163131e-03 + 8.6631948e-03 + 8.0721268e-03 + 7.2245785e-03 + 6.1021765e-03 + 4.7263503e-03 + 3.2107872e-03 + 1.6822100e-03 + 2.6734188e-04 +-9.0709423e-04 +-1.7143753e-03 +-2.0277783e-03 +-1.7205802e-03 +-6.8297710e-04 + 1.0366865e-03 + 3.3037777e-03 + 5.9827919e-03 + 8.9382246e-03 + 1.2034571e-02 + 1.5136327e-02 + 1.8107989e-02 + 2.0814846e-02 + 2.3201015e-02 + 2.5355075e-02 + 2.7381061e-02 + 2.9383010e-02 + 3.1464956e-02 + 3.3730934e-02 + 3.6284981e-02 + 3.9231132e-02 + 4.2657484e-02 + 4.6539348e-02 + 5.0803371e-02 + 5.5376010e-02 + 6.0183720e-02 + 6.5152959e-02 + 7.0210181e-02 + 7.5281844e-02 + 8.0295485e-02 + 8.5234073e-02 + 9.0161482e-02 + 9.5147990e-02 + 1.0026387e-01 + 1.0557941e-01 + 1.1116488e-01 + 1.1709056e-01 + 1.2342672e-01 + 1.3023047e-01 + 1.3748721e-01 + 1.4515813e-01 + 1.5320437e-01 + 1.6158708e-01 + 1.7026744e-01 + 1.7920658e-01 + 1.8836566e-01 + 1.9770732e-01 + 2.0723997e-01 + 2.1702545e-01 + 2.2712865e-01 + 2.3761445e-01 + 2.4854771e-01 + 2.5999332e-01 + 2.7201616e-01 + 2.8468110e-01 + 2.9803349e-01 + 3.1203651e-01 + 3.2663170e-01 + 3.4176062e-01 + 3.5736482e-01 + 3.7338585e-01 + 3.8976527e-01 + 4.0644463e-01 + 4.2336952e-01 + 4.4056834e-01 + 4.5814698e-01 + 4.7621428e-01 + 4.9487913e-01 + 5.1425038e-01 + 5.3443688e-01 + 5.5554751e-01 + 5.7769109e-01 + 6.0087457e-01 + 6.2477197e-01 + 6.4898945e-01 + 6.7313316e-01 + 6.9680926e-01 + 7.1962391e-01 + 7.4118326e-01 + 7.6109347e-01 + 7.7900642e-01 + 7.9523128e-01 + 8.1056985e-01 + 8.2583586e-01 + 8.4184302e-01 + 8.5940505e-01 + 8.7933568e-01 + 9.0244863e-01 + 9.2955610e-01 + 9.6082471e-01 + 9.9477338e-01 + 1.0296620e+00 + 1.0637504e+00 + 1.0952986e+00 + 1.1225663e+00 + 1.1438135e+00 + 1.1573000e+00 + 1.1615947e+00 + 1.1585131e+00 + 1.1518130e+00 + 1.1452779e+00 + 1.1426915e+00 + 1.1478376e+00 + 1.1644998e+00 + 1.1964617e+00 + 1.2474884e+00 + 1.3187459e+00 + 1.4061740e+00 + 1.5050862e+00 + 1.6107957e+00 + 1.7186160e+00 + 1.8238603e+00 + 1.9218422e+00 + 2.0078748e+00 + 2.0778069e+00 + 2.1317113e+00 + 2.1716651e+00 + 2.1997574e+00 + 2.2180771e+00 + 2.2287133e+00 + 2.2337551e+00 + 2.2352915e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + 2.2354000e+00 + + 4.5000000e+00 5.5000000e+00 +1 +2 + 0.0000000e+00 2.0000000e+01 4.0080160e-02 +-4.5439333e-01 +-4.5217352e-01 +-4.4584312e-01 +-4.3589567e-01 +-4.2282471e-01 +-4.0712378e-01 +-3.8928644e-01 +-3.6980622e-01 +-3.4917666e-01 +-3.2789131e-01 +-3.0644372e-01 +-2.8532742e-01 +-2.6503595e-01 +-2.4606287e-01 +-2.2890171e-01 +-2.1404601e-01 +-2.0198933e-01 +-1.9322519e-01 +-1.8817750e-01 +-1.8674377e-01 +-1.8858102e-01 +-1.9334503e-01 +-2.0069158e-01 +-2.1027643e-01 +-2.2175537e-01 +-2.3478417e-01 +-2.4901861e-01 +-2.6411447e-01 +-2.7972752e-01 +-2.9551355e-01 +-3.1112832e-01 +-3.2622761e-01 +-3.4046720e-01 +-3.5350288e-01 +-3.6499040e-01 +-3.7460270e-01 +-3.8228379e-01 +-3.8819407e-01 +-3.9249997e-01 +-3.9536792e-01 +-3.9696436e-01 +-3.9745571e-01 +-3.9700841e-01 +-3.9578890e-01 +-3.9396360e-01 +-3.9169894e-01 +-3.8916137e-01 +-3.8651730e-01 +-3.8393317e-01 +-3.8157542e-01 +-3.7961047e-01 +-3.7820477e-01 +-3.7752265e-01 +-3.7763665e-01 +-3.7849337e-01 +-3.8003026e-01 +-3.8218478e-01 +-3.8489440e-01 +-3.8809657e-01 +-3.9172876e-01 +-3.9572843e-01 +-4.0003303e-01 +-4.0458004e-01 +-4.0930690e-01 +-4.1415108e-01 +-4.1905005e-01 +-4.2394126e-01 +-4.2876217e-01 +-4.3345025e-01 +-4.3794302e-01 +-4.4219923e-01 +-4.4622885e-01 +-4.5004938e-01 +-4.5367833e-01 +-4.5713320e-01 +-4.6043152e-01 +-4.6359079e-01 +-4.6662853e-01 +-4.6956224e-01 +-4.7240943e-01 +-4.7518762e-01 +-4.7791432e-01 +-4.8060703e-01 +-4.8328327e-01 +-4.8596055e-01 +-4.8865638e-01 +-4.9138828e-01 +-4.9417165e-01 +-4.9701271e-01 +-4.9991507e-01 +-5.0288236e-01 +-5.0591822e-01 +-5.0902626e-01 +-5.1221011e-01 +-5.1547341e-01 +-5.1881977e-01 +-5.2225283e-01 +-5.2577622e-01 +-5.2939355e-01 +-5.3310847e-01 +-5.3692459e-01 +-5.4084554e-01 +-5.4487496e-01 +-5.4901646e-01 +-5.5327164e-01 +-5.5762480e-01 +-5.6205157e-01 +-5.6652752e-01 +-5.7102819e-01 +-5.7552916e-01 +-5.8000598e-01 +-5.8443421e-01 +-5.8878941e-01 +-5.9304715e-01 +-5.9718298e-01 +-6.0117246e-01 +-6.0499116e-01 +-6.0861463e-01 +-6.1201843e-01 +-6.1517813e-01 +-6.1806928e-01 +-6.2066863e-01 +-6.2297441e-01 +-6.2500366e-01 +-6.2677405e-01 +-6.2830323e-01 +-6.2960887e-01 +-6.3070863e-01 +-6.3162019e-01 +-6.3236119e-01 +-6.3294931e-01 +-6.3340221e-01 +-6.3373756e-01 +-6.3397301e-01 +-6.3412623e-01 +-6.3421489e-01 +-6.3425665e-01 +-6.3426917e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 +-6.3427000e-01 + + 4.5000000e+00 5.5000000e+00 +2 +1 + 0.0000000e+00 2.0000000e+01 4.0080160e-02 +-6.9546667e-02 +-6.9188143e-02 +-6.8087841e-02 +-6.6208660e-02 +-6.3513504e-02 +-5.9965274e-02 +-5.5526872e-02 +-5.0161199e-02 +-4.3831156e-02 +-3.6499647e-02 +-2.8129571e-02 +-1.8683832e-02 +-8.1253303e-03 + 3.5830320e-03 + 1.6478353e-02 + 3.0597732e-02 + 4.5978266e-02 + 6.2657054e-02 + 8.0655930e-02 + 9.9881386e-02 + 1.2018721e-01 + 1.4142692e-01 + 1.6345403e-01 + 1.8612206e-01 + 2.0928452e-01 + 2.3279493e-01 + 2.5650681e-01 + 2.8027368e-01 + 3.0394904e-01 + 3.2738642e-01 + 3.5043934e-01 + 3.7296131e-01 + 3.9480584e-01 + 4.1582646e-01 + 4.3587668e-01 + 4.5481768e-01 + 4.7263181e-01 + 4.8939812e-01 + 5.0519838e-01 + 5.2011434e-01 + 5.3422776e-01 + 5.4762041e-01 + 5.6037402e-01 + 5.7257037e-01 + 5.8429121e-01 + 5.9561831e-01 + 6.0663340e-01 + 6.1741826e-01 + 6.2805465e-01 + 6.3862431e-01 + 6.4920901e-01 + 6.5989050e-01 + 6.7074956e-01 + 6.8182350e-01 + 6.9309002e-01 + 7.0452250e-01 + 7.1609432e-01 + 7.2777886e-01 + 7.3954950e-01 + 7.5137962e-01 + 7.6324259e-01 + 7.7511180e-01 + 7.8696063e-01 + 7.9876245e-01 + 8.1049065e-01 + 8.2211860e-01 + 8.3361969e-01 + 8.4496729e-01 + 8.5613478e-01 + 8.6709556e-01 + 8.7782560e-01 + 8.8830714e-01 + 8.9852336e-01 + 9.0845742e-01 + 9.1809248e-01 + 9.2741172e-01 + 9.3639829e-01 + 9.4503537e-01 + 9.5330612e-01 + 9.6119370e-01 + 9.6868129e-01 + 9.7575205e-01 + 9.8238915e-01 + 9.8857575e-01 + 9.9429502e-01 + 9.9953012e-01 + 1.0042642e+00 + 1.0084875e+00 + 1.0122215e+00 + 1.0154963e+00 + 1.0183421e+00 + 1.0207889e+00 + 1.0228669e+00 + 1.0246062e+00 + 1.0260369e+00 + 1.0271893e+00 + 1.0280933e+00 + 1.0287791e+00 + 1.0292770e+00 + 1.0296169e+00 + 1.0298290e+00 + 1.0299435e+00 + 1.0299904e+00 + 1.0299999e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + 1.0300000e+00 + diff --git a/examples/USER/misc/local_density/benzene_water/benzene_water.pair.table b/examples/USER/misc/local_density/benzene_water/benzene_water.pair.table new file mode 100644 index 0000000000..348bccfa0e --- /dev/null +++ b/examples/USER/misc/local_density/benzene_water/benzene_water.pair.table @@ -0,0 +1,2024 @@ + +PairBB +N 500 R 2.00000e-02 1.32500e+01 + +1 2.00000e-02 2.96754e+01 5.54271e+00 +2 4.65130e-02 2.95284e+01 5.54271e+00 +3 7.30261e-02 2.93814e+01 5.54271e+00 +4 9.95391e-02 2.92345e+01 5.54271e+00 +5 1.26052e-01 2.90875e+01 5.54271e+00 +6 1.52565e-01 2.89406e+01 5.54271e+00 +7 1.79078e-01 2.87936e+01 5.54271e+00 +8 2.05591e-01 2.86467e+01 5.54271e+00 +9 2.32104e-01 2.84997e+01 5.54271e+00 +10 2.58617e-01 2.83528e+01 5.54271e+00 +11 2.85130e-01 2.82058e+01 5.54271e+00 +12 3.11643e-01 2.80589e+01 5.54271e+00 +13 3.38156e-01 2.79119e+01 5.54271e+00 +14 3.64669e-01 2.77650e+01 5.54271e+00 +15 3.91182e-01 2.76180e+01 5.54271e+00 +16 4.17695e-01 2.74710e+01 5.54271e+00 +17 4.44208e-01 2.73241e+01 5.54271e+00 +18 4.70721e-01 2.71771e+01 5.54271e+00 +19 4.97234e-01 2.70302e+01 5.54271e+00 +20 5.23747e-01 2.68832e+01 5.54271e+00 +21 5.50261e-01 2.67363e+01 5.54271e+00 +22 5.76774e-01 2.65893e+01 5.54271e+00 +23 6.03287e-01 2.64424e+01 5.54271e+00 +24 6.29800e-01 2.62954e+01 5.54271e+00 +25 6.56313e-01 2.61485e+01 5.54271e+00 +26 6.82826e-01 2.60015e+01 5.54271e+00 +27 7.09339e-01 2.58546e+01 5.54271e+00 +28 7.35852e-01 2.57076e+01 5.54271e+00 +29 7.62365e-01 2.55606e+01 5.54271e+00 +30 7.88878e-01 2.54137e+01 5.54271e+00 +31 8.15391e-01 2.52667e+01 5.54271e+00 +32 8.41904e-01 2.51198e+01 5.54271e+00 +33 8.68417e-01 2.49728e+01 5.54271e+00 +34 8.94930e-01 2.48259e+01 5.54271e+00 +35 9.21443e-01 2.46789e+01 5.54271e+00 +36 9.47956e-01 2.45320e+01 5.54271e+00 +37 9.74469e-01 2.43850e+01 5.54271e+00 +38 1.00098e+00 2.42381e+01 5.54271e+00 +39 1.02749e+00 2.40911e+01 5.54271e+00 +40 1.05401e+00 2.39441e+01 5.54271e+00 +41 1.08052e+00 2.37972e+01 5.54271e+00 +42 1.10703e+00 2.36502e+01 5.54271e+00 +43 1.13355e+00 2.35033e+01 5.54271e+00 +44 1.16006e+00 2.33563e+01 5.54271e+00 +45 1.18657e+00 2.32094e+01 5.54271e+00 +46 1.21309e+00 2.30624e+01 5.54271e+00 +47 1.23960e+00 2.29155e+01 5.54271e+00 +48 1.26611e+00 2.27685e+01 5.54271e+00 +49 1.29263e+00 2.26216e+01 5.54271e+00 +50 1.31914e+00 2.24746e+01 5.54271e+00 +51 1.34565e+00 2.23277e+01 5.54271e+00 +52 1.37216e+00 2.21807e+01 5.54271e+00 +53 1.39868e+00 2.20337e+01 5.54271e+00 +54 1.42519e+00 2.18868e+01 5.54271e+00 +55 1.45170e+00 2.17398e+01 5.54271e+00 +56 1.47822e+00 2.15929e+01 5.54271e+00 +57 1.50473e+00 2.14459e+01 5.54271e+00 +58 1.53124e+00 2.12990e+01 5.54271e+00 +59 1.55776e+00 2.11520e+01 5.54271e+00 +60 1.58427e+00 2.10051e+01 5.54271e+00 +61 1.61078e+00 2.08581e+01 5.54271e+00 +62 1.63729e+00 2.07112e+01 5.54271e+00 +63 1.66381e+00 2.05642e+01 5.54271e+00 +64 1.69032e+00 2.04173e+01 5.54271e+00 +65 1.71683e+00 2.02703e+01 5.54271e+00 +66 1.74335e+00 2.01233e+01 5.54271e+00 +67 1.76986e+00 1.99764e+01 5.54271e+00 +68 1.79637e+00 1.98294e+01 5.54271e+00 +69 1.82289e+00 1.96825e+01 5.54271e+00 +70 1.84940e+00 1.95355e+01 5.54271e+00 +71 1.87591e+00 1.93886e+01 5.54271e+00 +72 1.90242e+00 1.92416e+01 5.54271e+00 +73 1.92894e+00 1.90947e+01 5.54271e+00 +74 1.95545e+00 1.89477e+01 5.54271e+00 +75 1.98196e+00 1.88008e+01 5.54271e+00 +76 2.00848e+00 1.86538e+01 5.54271e+00 +77 2.03499e+00 1.85069e+01 5.54271e+00 +78 2.06150e+00 1.83599e+01 5.54271e+00 +79 2.08802e+00 1.82129e+01 5.54271e+00 +80 2.11453e+00 1.80660e+01 5.54271e+00 +81 2.14104e+00 1.79190e+01 5.54271e+00 +82 2.16756e+00 1.77721e+01 5.54271e+00 +83 2.19407e+00 1.76251e+01 5.54271e+00 +84 2.22058e+00 1.74782e+01 5.54271e+00 +85 2.24709e+00 1.73312e+01 5.54271e+00 +86 2.27361e+00 1.71843e+01 5.54271e+00 +87 2.30012e+00 1.70373e+01 5.54271e+00 +88 2.32663e+00 1.68904e+01 5.54271e+00 +89 2.35315e+00 1.67434e+01 5.54271e+00 +90 2.37966e+00 1.65965e+01 5.54271e+00 +91 2.40617e+00 1.64495e+01 5.54271e+00 +92 2.43269e+00 1.63025e+01 5.54271e+00 +93 2.45920e+00 1.61556e+01 5.54271e+00 +94 2.48571e+00 1.60086e+01 5.54271e+00 +95 2.51222e+00 1.58617e+01 5.54271e+00 +96 2.53874e+00 1.57147e+01 5.54271e+00 +97 2.56525e+00 1.55678e+01 5.54271e+00 +98 2.59176e+00 1.54208e+01 5.54271e+00 +99 2.61828e+00 1.52739e+01 5.54271e+00 +100 2.64479e+00 1.51269e+01 5.54271e+00 +101 2.67130e+00 1.49800e+01 5.54271e+00 +102 2.69782e+00 1.48330e+01 5.54271e+00 +103 2.72433e+00 1.46861e+01 5.54271e+00 +104 2.75084e+00 1.45391e+01 5.54271e+00 +105 2.77735e+00 1.43921e+01 5.54271e+00 +106 2.80387e+00 1.42452e+01 5.54271e+00 +107 2.83038e+00 1.40982e+01 5.54271e+00 +108 2.85689e+00 1.39513e+01 5.54271e+00 +109 2.88341e+00 1.38043e+01 5.54271e+00 +110 2.90992e+00 1.36574e+01 5.54271e+00 +111 2.93643e+00 1.35104e+01 5.54271e+00 +112 2.96295e+00 1.33635e+01 5.54271e+00 +113 2.98946e+00 1.32165e+01 5.54271e+00 +114 3.01597e+00 1.30696e+01 5.54271e+00 +115 3.04248e+00 1.29226e+01 5.54271e+00 +116 3.06900e+00 1.27757e+01 5.54271e+00 +117 3.09551e+00 1.26287e+01 5.54271e+00 +118 3.12202e+00 1.24817e+01 5.54271e+00 +119 3.14854e+00 1.23348e+01 5.54271e+00 +120 3.17505e+00 1.21878e+01 5.54271e+00 +121 3.20156e+00 1.20409e+01 5.54271e+00 +122 3.22808e+00 1.18939e+01 5.54271e+00 +123 3.25459e+00 1.17470e+01 5.54273e+00 +124 3.28110e+00 1.16000e+01 5.54277e+00 +125 3.30762e+00 1.14531e+01 5.54280e+00 +126 3.33413e+00 1.13061e+01 5.54285e+00 +127 3.36064e+00 1.11591e+01 5.54289e+00 +128 3.38715e+00 1.10122e+01 5.54295e+00 +129 3.41367e+00 1.08652e+01 5.54300e+00 +130 3.44018e+00 1.07183e+01 5.54306e+00 +131 3.46669e+00 1.05713e+01 5.54313e+00 +132 3.49321e+00 1.04243e+01 5.54320e+00 +133 3.51972e+00 1.02774e+01 5.54328e+00 +134 3.54623e+00 1.01304e+01 5.54336e+00 +135 3.57275e+00 9.98342e+00 5.54343e+00 +136 3.59926e+00 9.83645e+00 5.54350e+00 +137 3.62577e+00 9.68947e+00 5.54356e+00 +138 3.65228e+00 9.54250e+00 5.54361e+00 +139 3.67880e+00 9.39552e+00 5.54366e+00 +140 3.70531e+00 9.24854e+00 5.54370e+00 +141 3.73182e+00 9.10156e+00 5.54373e+00 +142 3.75834e+00 8.95458e+00 5.54375e+00 +143 3.78485e+00 8.80759e+00 5.54376e+00 +144 3.81136e+00 8.66061e+00 5.54377e+00 +145 3.83788e+00 8.51363e+00 5.54377e+00 +146 3.86439e+00 8.36665e+00 5.54377e+00 +147 3.89090e+00 8.21967e+00 5.54375e+00 +148 3.91741e+00 8.07268e+00 5.54373e+00 +149 3.94393e+00 7.92570e+00 5.54370e+00 +150 3.97044e+00 7.77872e+00 5.54367e+00 +151 3.99695e+00 7.63175e+00 5.54363e+00 +152 4.02347e+00 7.48477e+00 5.54359e+00 +153 4.04998e+00 7.33779e+00 5.54356e+00 +154 4.07649e+00 7.19081e+00 5.54353e+00 +155 4.10301e+00 7.04384e+00 5.54350e+00 +156 4.12952e+00 6.89686e+00 5.54348e+00 +157 4.15603e+00 6.74989e+00 5.54346e+00 +158 4.18255e+00 6.60292e+00 5.54344e+00 +159 4.20906e+00 6.45594e+00 5.54343e+00 +160 4.23557e+00 6.30897e+00 5.54342e+00 +161 4.26208e+00 6.16200e+00 5.54341e+00 +162 4.28860e+00 6.01503e+00 5.54341e+00 +163 4.31511e+00 5.86805e+00 5.54341e+00 +164 4.34162e+00 5.72108e+00 5.54341e+00 +165 4.36814e+00 5.57411e+00 5.54341e+00 +166 4.39465e+00 5.42714e+00 5.54342e+00 +167 4.42116e+00 5.28016e+00 5.54323e+00 +168 4.44768e+00 5.13329e+00 5.53372e+00 +169 4.47419e+00 4.98686e+00 5.50998e+00 +170 4.50070e+00 4.84124e+00 5.47202e+00 +171 4.52721e+00 4.69682e+00 5.41984e+00 +172 4.55373e+00 4.55398e+00 5.35343e+00 +173 4.58024e+00 4.41308e+00 5.27279e+00 +174 4.60675e+00 4.27451e+00 5.17793e+00 +175 4.63327e+00 4.13864e+00 5.06884e+00 +176 4.65978e+00 4.00585e+00 4.94553e+00 +177 4.68629e+00 3.87652e+00 4.80799e+00 +178 4.71281e+00 3.75103e+00 4.65623e+00 +179 4.73932e+00 3.62975e+00 4.49024e+00 +180 4.76583e+00 3.51305e+00 4.31003e+00 +181 4.79234e+00 3.40133e+00 4.11559e+00 +182 4.81886e+00 3.29495e+00 3.90693e+00 +183 4.84537e+00 3.19429e+00 3.68404e+00 +184 4.87188e+00 3.09971e+00 3.45062e+00 +185 4.89840e+00 3.01120e+00 3.22791e+00 +186 4.92491e+00 2.92842e+00 3.01927e+00 +187 4.95142e+00 2.85098e+00 2.82473e+00 +188 4.97794e+00 2.77851e+00 2.64426e+00 +189 5.00445e+00 2.71064e+00 2.47788e+00 +190 5.03096e+00 2.64699e+00 2.32559e+00 +191 5.05747e+00 2.58720e+00 2.18738e+00 +192 5.08399e+00 2.53088e+00 2.06325e+00 +193 5.11050e+00 2.47767e+00 1.95321e+00 +194 5.13701e+00 2.42718e+00 1.85725e+00 +195 5.16353e+00 2.37906e+00 1.77537e+00 +196 5.19004e+00 2.33292e+00 1.70758e+00 +197 5.21655e+00 2.28839e+00 1.65387e+00 +198 5.24307e+00 2.24510e+00 1.61425e+00 +199 5.26958e+00 2.20267e+00 1.58871e+00 +200 5.29609e+00 2.16073e+00 1.57725e+00 +201 5.32261e+00 2.11895e+00 1.57397e+00 +202 5.34912e+00 2.07729e+00 1.56868e+00 +203 5.37563e+00 2.03579e+00 1.56122e+00 +204 5.40214e+00 1.99452e+00 1.55158e+00 +205 5.42866e+00 1.95354e+00 1.53975e+00 +206 5.45517e+00 1.91289e+00 1.52575e+00 +207 5.48168e+00 1.87265e+00 1.50957e+00 +208 5.50820e+00 1.83287e+00 1.49121e+00 +209 5.53471e+00 1.79360e+00 1.47067e+00 +210 5.56122e+00 1.75490e+00 1.44795e+00 +211 5.58774e+00 1.71684e+00 1.42305e+00 +212 5.61425e+00 1.67946e+00 1.39597e+00 +213 5.64076e+00 1.64283e+00 1.36671e+00 +214 5.66727e+00 1.60701e+00 1.33528e+00 +215 5.69379e+00 1.57205e+00 1.30166e+00 +216 5.72030e+00 1.53801e+00 1.26587e+00 +217 5.74681e+00 1.50494e+00 1.22792e+00 +218 5.77333e+00 1.47290e+00 1.18886e+00 +219 5.79984e+00 1.44191e+00 1.14919e+00 +220 5.82635e+00 1.41197e+00 1.10891e+00 +221 5.85287e+00 1.38311e+00 1.06803e+00 +222 5.87938e+00 1.35534e+00 1.02654e+00 +223 5.90589e+00 1.32868e+00 9.84442e-01 +224 5.93240e+00 1.30315e+00 9.41738e-01 +225 5.95892e+00 1.27875e+00 8.98427e-01 +226 5.98543e+00 1.25551e+00 8.54508e-01 +227 6.01194e+00 1.23345e+00 8.09983e-01 +228 6.03846e+00 1.21257e+00 7.64850e-01 +229 6.06497e+00 1.19290e+00 7.19111e-01 +230 6.09148e+00 1.17444e+00 6.72764e-01 +231 6.11800e+00 1.15723e+00 6.25811e-01 +232 6.14451e+00 1.14126e+00 5.78250e-01 +233 6.17102e+00 1.12657e+00 5.30082e-01 +234 6.19754e+00 1.11316e+00 4.82247e-01 +235 6.22405e+00 1.10095e+00 4.39648e-01 +236 6.25056e+00 1.08979e+00 4.02990e-01 +237 6.27707e+00 1.07953e+00 3.72273e-01 +238 6.30359e+00 1.07000e+00 3.47498e-01 +239 6.33010e+00 1.06105e+00 3.28665e-01 +240 6.35661e+00 1.05252e+00 3.15774e-01 +241 6.38313e+00 1.04425e+00 3.08824e-01 +242 6.40964e+00 1.03609e+00 3.07815e-01 +243 6.43615e+00 1.02788e+00 3.12748e-01 +244 6.46267e+00 1.01945e+00 3.23623e-01 +245 6.48918e+00 1.01066e+00 3.40440e-01 +246 6.51569e+00 1.00135e+00 3.63198e-01 +247 6.54220e+00 9.91353e-01 3.91897e-01 +248 6.56872e+00 9.80516e-01 4.26538e-01 +249 6.59523e+00 9.68683e-01 4.67121e-01 +250 6.62174e+00 9.55694e-01 5.13646e-01 +251 6.64826e+00 9.41422e-01 5.62501e-01 +252 6.67477e+00 9.25897e-01 6.07985e-01 +253 6.70128e+00 9.09213e-01 6.50027e-01 +254 6.72780e+00 8.91459e-01 6.88626e-01 +255 6.75431e+00 8.72728e-01 7.23783e-01 +256 6.78082e+00 8.53111e-01 7.55497e-01 +257 6.80733e+00 8.32698e-01 7.83768e-01 +258 6.83385e+00 8.11581e-01 8.08597e-01 +259 6.86036e+00 7.89851e-01 8.29984e-01 +260 6.88687e+00 7.67601e-01 8.47928e-01 +261 6.91339e+00 7.44920e-01 8.62429e-01 +262 6.93990e+00 7.21900e-01 8.73488e-01 +263 6.96641e+00 6.98632e-01 8.81104e-01 +264 6.99293e+00 6.75209e-01 8.85278e-01 +265 7.01944e+00 6.51720e-01 8.86010e-01 +266 7.04595e+00 6.28258e-01 8.83299e-01 +267 7.07246e+00 6.04913e-01 8.77168e-01 +268 7.09898e+00 5.81769e-01 8.68269e-01 +269 7.12549e+00 5.58894e-01 8.56896e-01 +270 7.15200e+00 5.36353e-01 8.43051e-01 +271 7.17852e+00 5.14212e-01 8.26732e-01 +272 7.20503e+00 4.92536e-01 8.07941e-01 +273 7.23154e+00 4.71392e-01 7.86676e-01 +274 7.25806e+00 4.50844e-01 7.62938e-01 +275 7.28457e+00 4.30958e-01 7.36728e-01 +276 7.31108e+00 4.11800e-01 7.08044e-01 +277 7.33760e+00 3.93435e-01 6.76887e-01 +278 7.36411e+00 3.75929e-01 6.43257e-01 +279 7.39062e+00 3.59347e-01 6.07154e-01 +280 7.41713e+00 3.43756e-01 5.68578e-01 +281 7.44365e+00 3.29220e-01 5.27528e-01 +282 7.47016e+00 3.15805e-01 4.84006e-01 +283 7.49667e+00 3.03577e-01 4.38011e-01 +284 7.52319e+00 2.92596e-01 3.90579e-01 +285 7.54970e+00 2.82832e-01 3.46637e-01 +286 7.57621e+00 2.74178e-01 3.06826e-01 +287 7.60273e+00 2.66526e-01 2.71144e-01 +288 7.62924e+00 2.59764e-01 2.39591e-01 +289 7.65575e+00 2.53785e-01 2.12169e-01 +290 7.68226e+00 2.48477e-01 1.88875e-01 +291 7.70878e+00 2.43733e-01 1.69712e-01 +292 7.73529e+00 2.39442e-01 1.54678e-01 +293 7.76180e+00 2.35494e-01 1.43773e-01 +294 7.78832e+00 2.31781e-01 1.36998e-01 +295 7.81483e+00 2.28193e-01 1.34353e-01 +296 7.84134e+00 2.24621e-01 1.35837e-01 +297 7.86786e+00 2.20954e-01 1.41451e-01 +298 7.89437e+00 2.17084e-01 1.51194e-01 +299 7.92088e+00 2.12900e-01 1.65067e-01 +300 7.94739e+00 2.08294e-01 1.83070e-01 +301 7.97391e+00 2.03177e-01 2.02650e-01 +302 8.00042e+00 1.97568e-01 2.20114e-01 +303 8.02693e+00 1.91524e-01 2.35430e-01 +304 8.05345e+00 1.85103e-01 2.48600e-01 +305 8.07996e+00 1.78361e-01 2.59623e-01 +306 8.10647e+00 1.71355e-01 2.68499e-01 +307 8.13299e+00 1.64142e-01 2.75228e-01 +308 8.15950e+00 1.56780e-01 2.79809e-01 +309 8.18601e+00 1.49324e-01 2.82244e-01 +310 8.21253e+00 1.41832e-01 2.82532e-01 +311 8.23904e+00 1.34361e-01 2.80673e-01 +312 8.26555e+00 1.26968e-01 2.76667e-01 +313 8.29206e+00 1.19710e-01 2.70514e-01 +314 8.31858e+00 1.12643e-01 2.62214e-01 +315 8.34509e+00 1.05825e-01 2.51767e-01 +316 8.37160e+00 9.93116e-02 2.39174e-01 +317 8.39812e+00 9.31609e-02 2.24523e-01 +318 8.42463e+00 8.74039e-02 2.09904e-01 +319 8.45114e+00 8.20225e-02 1.96191e-01 +320 8.47766e+00 7.69927e-02 1.83383e-01 +321 8.50417e+00 7.22904e-02 1.71481e-01 +322 8.53068e+00 6.78917e-02 1.60484e-01 +323 8.55719e+00 6.37726e-02 1.50393e-01 +324 8.58371e+00 5.99089e-02 1.41208e-01 +325 8.61022e+00 5.62769e-02 1.32928e-01 +326 8.63673e+00 5.28523e-02 1.25554e-01 +327 8.66325e+00 4.96112e-02 1.19085e-01 +328 8.68976e+00 4.65297e-02 1.13522e-01 +329 8.71627e+00 4.35836e-02 1.08865e-01 +330 8.74279e+00 4.07490e-02 1.05113e-01 +331 8.76930e+00 3.80019e-02 1.02266e-01 +332 8.79581e+00 3.53182e-02 1.00326e-01 +333 8.82232e+00 3.26740e-02 9.92905e-02 +334 8.84884e+00 3.00463e-02 9.89592e-02 +335 8.87535e+00 2.74286e-02 9.84553e-02 +336 8.90186e+00 2.48280e-02 9.76771e-02 +337 8.92838e+00 2.22516e-02 9.66246e-02 +338 8.95489e+00 1.97068e-02 9.52978e-02 +339 8.98140e+00 1.72008e-02 9.36967e-02 +340 9.00792e+00 1.47409e-02 9.18212e-02 +341 9.03443e+00 1.23343e-02 8.96715e-02 +342 9.06094e+00 9.98837e-03 8.72474e-02 +343 9.08745e+00 7.71034e-03 8.45490e-02 +344 9.11397e+00 5.50750e-03 8.15763e-02 +345 9.14048e+00 3.38710e-03 7.83293e-02 +346 9.16699e+00 1.35643e-03 7.48079e-02 +347 9.19351e+00 -5.77246e-04 7.10123e-02 +348 9.22002e+00 -2.40665e-03 6.69424e-02 +349 9.24653e+00 -4.12451e-03 6.25981e-02 +350 9.27305e+00 -5.72356e-03 5.79795e-02 +351 9.29956e+00 -7.19788e-03 5.32533e-02 +352 9.32607e+00 -8.54838e-03 4.86402e-02 +353 9.35259e+00 -9.77809e-03 4.41414e-02 +354 9.37910e+00 -1.08900e-02 3.97567e-02 +355 9.40561e+00 -1.18872e-02 3.54862e-02 +356 9.43212e+00 -1.27727e-02 3.13299e-02 +357 9.45864e+00 -1.35495e-02 2.72877e-02 +358 9.48515e+00 -1.42207e-02 2.33598e-02 +359 9.51166e+00 -1.47892e-02 1.95461e-02 +360 9.53818e+00 -1.52582e-02 1.58465e-02 +361 9.56469e+00 -1.56305e-02 1.22612e-02 +362 9.59120e+00 -1.59093e-02 8.79000e-03 +363 9.61772e+00 -1.60976e-02 5.43303e-03 +364 9.64423e+00 -1.61984e-02 2.19025e-03 +365 9.67074e+00 -1.62148e-02 -9.38343e-04 +366 9.69725e+00 -1.61497e-02 -3.95274e-03 +367 9.72377e+00 -1.60062e-02 -6.85619e-03 +368 9.75028e+00 -1.57865e-02 -9.71165e-03 +369 9.77679e+00 -1.54914e-02 -1.25433e-02 +370 9.80331e+00 -1.51216e-02 -1.53513e-02 +371 9.82982e+00 -1.46776e-02 -1.81355e-02 +372 9.85633e+00 -1.41601e-02 -2.08959e-02 +373 9.88285e+00 -1.35698e-02 -2.36326e-02 +374 9.90936e+00 -1.29072e-02 -2.63455e-02 +375 9.93587e+00 -1.21730e-02 -2.90347e-02 +376 9.96238e+00 -1.13678e-02 -3.17001e-02 +377 9.98890e+00 -1.04923e-02 -3.43417e-02 +378 1.00154e+01 -9.54702e-03 -3.69596e-02 +379 1.00419e+01 -8.53267e-03 -3.95538e-02 +380 1.00684e+01 -7.44985e-03 -4.21242e-02 +381 1.00949e+01 -6.29920e-03 -4.46708e-02 +382 1.01215e+01 -5.08134e-03 -4.71937e-02 +383 1.01480e+01 -3.79691e-03 -4.96928e-02 +384 1.01745e+01 -2.44682e-03 -5.21153e-02 +385 1.02010e+01 -1.03610e-03 -5.42507e-02 +386 1.02275e+01 4.27146e-04 -5.60773e-02 +387 1.02540e+01 1.93473e-03 -5.75952e-02 +388 1.02805e+01 3.47846e-03 -5.88043e-02 +389 1.03071e+01 5.05016e-03 -5.97046e-02 +390 1.03336e+01 6.64163e-03 -6.02961e-02 +391 1.03601e+01 8.24469e-03 -6.05788e-02 +392 1.03866e+01 9.85116e-03 -6.05528e-02 +393 1.04131e+01 1.14528e-02 -6.02180e-02 +394 1.04396e+01 1.30416e-02 -5.95744e-02 +395 1.04661e+01 1.46091e-02 -5.86220e-02 +396 1.04926e+01 1.61473e-02 -5.73609e-02 +397 1.05192e+01 1.76480e-02 -5.57909e-02 +398 1.05457e+01 1.91030e-02 -5.39122e-02 +399 1.05722e+01 2.05040e-02 -5.17248e-02 +400 1.05987e+01 2.18430e-02 -4.92285e-02 +401 1.06252e+01 2.31130e-02 -4.65786e-02 +402 1.06517e+01 2.43132e-02 -4.39628e-02 +403 1.06782e+01 2.54445e-02 -4.13815e-02 +404 1.07047e+01 2.65078e-02 -3.88346e-02 +405 1.07313e+01 2.75040e-02 -3.63222e-02 +406 1.07578e+01 2.84341e-02 -3.38442e-02 +407 1.07843e+01 2.92989e-02 -3.14008e-02 +408 1.08108e+01 3.00995e-02 -2.89918e-02 +409 1.08373e+01 3.08366e-02 -2.66173e-02 +410 1.08638e+01 3.15112e-02 -2.42772e-02 +411 1.08903e+01 3.21242e-02 -2.19716e-02 +412 1.09169e+01 3.26766e-02 -1.97005e-02 +413 1.09434e+01 3.31691e-02 -1.74639e-02 +414 1.09699e+01 3.36029e-02 -1.52617e-02 +415 1.09964e+01 3.39787e-02 -1.30940e-02 +416 1.10229e+01 3.42975e-02 -1.09607e-02 +417 1.10494e+01 3.45602e-02 -8.86038e-03 +418 1.10759e+01 3.47674e-02 -6.76636e-03 +419 1.11024e+01 3.49190e-02 -4.66929e-03 +420 1.11290e+01 3.50150e-02 -2.56919e-03 +421 1.11555e+01 3.50552e-02 -4.66037e-04 +422 1.11820e+01 3.50396e-02 1.64016e-03 +423 1.12085e+01 3.49682e-02 3.74939e-03 +424 1.12350e+01 3.48408e-02 5.86167e-03 +425 1.12615e+01 3.46574e-02 7.97700e-03 +426 1.12880e+01 3.44178e-02 1.00954e-02 +427 1.13145e+01 3.41220e-02 1.22168e-02 +428 1.13411e+01 3.37699e-02 1.43412e-02 +429 1.13676e+01 3.33615e-02 1.64687e-02 +430 1.13941e+01 3.28967e-02 1.85993e-02 +431 1.14206e+01 3.23753e-02 2.07328e-02 +432 1.14471e+01 3.17972e-02 2.28695e-02 +433 1.14736e+01 3.11625e-02 2.50091e-02 +434 1.15001e+01 3.04713e-02 2.71135e-02 +435 1.15267e+01 2.97264e-02 2.90428e-02 +436 1.15532e+01 2.89329e-02 3.07843e-02 +437 1.15797e+01 2.80957e-02 3.23380e-02 +438 1.16062e+01 2.72198e-02 3.37039e-02 +439 1.16327e+01 2.63102e-02 3.48820e-02 +440 1.16592e+01 2.53718e-02 3.58722e-02 +441 1.16857e+01 2.44097e-02 3.66746e-02 +442 1.17122e+01 2.34288e-02 3.72892e-02 +443 1.17388e+01 2.24341e-02 3.77159e-02 +444 1.17653e+01 2.14305e-02 3.79549e-02 +445 1.17918e+01 2.04231e-02 3.80060e-02 +446 1.18183e+01 1.94169e-02 3.78693e-02 +447 1.18448e+01 1.84167e-02 3.75448e-02 +448 1.18713e+01 1.74277e-02 3.70325e-02 +449 1.18978e+01 1.64547e-02 3.63323e-02 +450 1.19243e+01 1.55028e-02 3.54443e-02 +451 1.19509e+01 1.45756e-02 3.45225e-02 +452 1.19774e+01 1.36710e-02 3.37366e-02 +453 1.20039e+01 1.27854e-02 3.30865e-02 +454 1.20304e+01 1.19153e-02 3.25724e-02 +455 1.20569e+01 1.10571e-02 3.21942e-02 +456 1.20834e+01 1.02070e-02 3.19519e-02 +457 1.21099e+01 9.36157e-03 3.18455e-02 +458 1.21365e+01 8.51716e-03 3.18750e-02 +459 1.21630e+01 7.67016e-03 3.20405e-02 +460 1.21895e+01 6.81698e-03 3.23418e-02 +461 1.22160e+01 5.95400e-03 3.27791e-02 +462 1.22425e+01 5.07763e-03 3.33523e-02 +463 1.22690e+01 4.18426e-03 3.40614e-02 +464 1.22955e+01 3.27029e-03 3.49065e-02 +465 1.23220e+01 2.33211e-03 3.58874e-02 +466 1.23486e+01 1.36612e-03 3.70043e-02 +467 1.23751e+01 3.68802e-04 3.82258e-02 +468 1.24016e+01 -6.57430e-04 3.91065e-02 +469 1.24281e+01 -1.70057e-03 3.95013e-02 +470 1.24546e+01 -2.74773e-03 3.94102e-02 +471 1.24811e+01 -3.78604e-03 3.88331e-02 +472 1.25076e+01 -4.80261e-03 3.77702e-02 +473 1.25341e+01 -5.78455e-03 3.62213e-02 +474 1.25607e+01 -6.71899e-03 3.41866e-02 +475 1.25872e+01 -7.59304e-03 3.16659e-02 +476 1.26137e+01 -8.39381e-03 2.86593e-02 +477 1.26402e+01 -9.10843e-03 2.51668e-02 +478 1.26667e+01 -9.72401e-03 2.11883e-02 +479 1.26932e+01 -1.02277e-02 1.67240e-02 +480 1.27197e+01 -1.06065e-02 1.17738e-02 +481 1.27463e+01 -1.08477e-02 6.33760e-03 +482 1.27728e+01 -1.09383e-02 4.15532e-04 +483 1.27993e+01 -1.08654e-02 -5.99245e-03 +484 1.28258e+01 -1.06180e-02 -1.25906e-02 +485 1.28523e+01 -1.02053e-02 -1.83901e-02 +486 1.28788e+01 -9.65056e-03 -2.33115e-02 +487 1.29053e+01 -8.97697e-03 -2.73546e-02 +488 1.29318e+01 -8.20782e-03 -3.05195e-02 +489 1.29584e+01 -7.36640e-03 -3.28063e-02 +490 1.29849e+01 -6.47599e-03 -3.42149e-02 +491 1.30114e+01 -5.55988e-03 -3.47452e-02 +492 1.30379e+01 -4.64135e-03 -3.43974e-02 +493 1.30644e+01 -3.74368e-03 -3.31714e-02 +494 1.30909e+01 -2.89016e-03 -3.10672e-02 +495 1.31174e+01 -2.10407e-03 -2.80848e-02 +496 1.31439e+01 -1.40869e-03 -2.42242e-02 +497 1.31705e+01 -8.27316e-04 -1.94855e-02 +498 1.31970e+01 -3.83218e-04 -1.38685e-02 +499 1.32235e+01 -9.96852e-05 -7.37335e-03 +500 1.32500e+01 0.00000e+00 0.00000e+00 + + + +PairWW +N 500 R 2.00000e-02 1.01250e+01 + +1 2.00000e-02 8.94382e+01 2.97884e+01 +2 4.02505e-02 8.88350e+01 2.97884e+01 +3 6.05010e-02 8.82317e+01 2.97884e+01 +4 8.07515e-02 8.76285e+01 2.97884e+01 +5 1.01002e-01 8.70253e+01 2.97884e+01 +6 1.21253e-01 8.64220e+01 2.97884e+01 +7 1.41503e-01 8.58188e+01 2.97884e+01 +8 1.61754e-01 8.52156e+01 2.97884e+01 +9 1.82004e-01 8.46124e+01 2.97884e+01 +10 2.02255e-01 8.40091e+01 2.97884e+01 +11 2.22505e-01 8.34059e+01 2.97884e+01 +12 2.42756e-01 8.28027e+01 2.97884e+01 +13 2.63006e-01 8.21994e+01 2.97884e+01 +14 2.83257e-01 8.15962e+01 2.97884e+01 +15 3.03507e-01 8.09930e+01 2.97884e+01 +16 3.23758e-01 8.03898e+01 2.97884e+01 +17 3.44008e-01 7.97865e+01 2.97884e+01 +18 3.64259e-01 7.91833e+01 2.97884e+01 +19 3.84509e-01 7.85801e+01 2.97884e+01 +20 4.04760e-01 7.79768e+01 2.97884e+01 +21 4.25010e-01 7.73736e+01 2.97884e+01 +22 4.45261e-01 7.67704e+01 2.97884e+01 +23 4.65511e-01 7.61672e+01 2.97884e+01 +24 4.85762e-01 7.55639e+01 2.97884e+01 +25 5.06012e-01 7.49607e+01 2.97884e+01 +26 5.26263e-01 7.43575e+01 2.97884e+01 +27 5.46513e-01 7.37542e+01 2.97884e+01 +28 5.66764e-01 7.31510e+01 2.97884e+01 +29 5.87014e-01 7.25478e+01 2.97884e+01 +30 6.07265e-01 7.19446e+01 2.97884e+01 +31 6.27515e-01 7.13413e+01 2.97884e+01 +32 6.47766e-01 7.07381e+01 2.97884e+01 +33 6.68016e-01 7.01349e+01 2.97884e+01 +34 6.88267e-01 6.95316e+01 2.97884e+01 +35 7.08517e-01 6.89284e+01 2.97884e+01 +36 7.28768e-01 6.83252e+01 2.97884e+01 +37 7.49018e-01 6.77219e+01 2.97884e+01 +38 7.69269e-01 6.71187e+01 2.97884e+01 +39 7.89519e-01 6.65155e+01 2.97884e+01 +40 8.09770e-01 6.59123e+01 2.97884e+01 +41 8.30020e-01 6.53090e+01 2.97884e+01 +42 8.50271e-01 6.47058e+01 2.97884e+01 +43 8.70521e-01 6.41026e+01 2.97884e+01 +44 8.90772e-01 6.34993e+01 2.97884e+01 +45 9.11022e-01 6.28961e+01 2.97884e+01 +46 9.31273e-01 6.22929e+01 2.97884e+01 +47 9.51523e-01 6.16897e+01 2.97884e+01 +48 9.71774e-01 6.10864e+01 2.97884e+01 +49 9.92024e-01 6.04832e+01 2.97884e+01 +50 1.01227e+00 5.98800e+01 2.97884e+01 +51 1.03253e+00 5.92767e+01 2.97884e+01 +52 1.05278e+00 5.86735e+01 2.97884e+01 +53 1.07303e+00 5.80703e+01 2.97884e+01 +54 1.09328e+00 5.74671e+01 2.97884e+01 +55 1.11353e+00 5.68638e+01 2.97884e+01 +56 1.13378e+00 5.62606e+01 2.97884e+01 +57 1.15403e+00 5.56574e+01 2.97884e+01 +58 1.17428e+00 5.50541e+01 2.97884e+01 +59 1.19453e+00 5.44509e+01 2.97884e+01 +60 1.21478e+00 5.38477e+01 2.97884e+01 +61 1.23503e+00 5.32445e+01 2.97884e+01 +62 1.25528e+00 5.26412e+01 2.97884e+01 +63 1.27553e+00 5.20380e+01 2.97884e+01 +64 1.29578e+00 5.14348e+01 2.97884e+01 +65 1.31603e+00 5.08315e+01 2.97884e+01 +66 1.33628e+00 5.02283e+01 2.97884e+01 +67 1.35653e+00 4.96251e+01 2.97884e+01 +68 1.37678e+00 4.90218e+01 2.97884e+01 +69 1.39703e+00 4.84186e+01 2.97884e+01 +70 1.41728e+00 4.78154e+01 2.97884e+01 +71 1.43754e+00 4.72122e+01 2.97884e+01 +72 1.45779e+00 4.66089e+01 2.97884e+01 +73 1.47804e+00 4.60057e+01 2.97884e+01 +74 1.49829e+00 4.54025e+01 2.97884e+01 +75 1.51854e+00 4.47992e+01 2.97884e+01 +76 1.53879e+00 4.41960e+01 2.97884e+01 +77 1.55904e+00 4.35928e+01 2.97884e+01 +78 1.57929e+00 4.29896e+01 2.97884e+01 +79 1.59954e+00 4.23863e+01 2.97884e+01 +80 1.61979e+00 4.17831e+01 2.97884e+01 +81 1.64004e+00 4.11799e+01 2.97884e+01 +82 1.66029e+00 4.05766e+01 2.97884e+01 +83 1.68054e+00 3.99734e+01 2.97884e+01 +84 1.70079e+00 3.93702e+01 2.97884e+01 +85 1.72104e+00 3.87670e+01 2.97884e+01 +86 1.74129e+00 3.81637e+01 2.97884e+01 +87 1.76154e+00 3.75605e+01 2.97884e+01 +88 1.78179e+00 3.69573e+01 2.97884e+01 +89 1.80204e+00 3.63540e+01 2.97884e+01 +90 1.82229e+00 3.57508e+01 2.97884e+01 +91 1.84255e+00 3.51476e+01 2.97884e+01 +92 1.86280e+00 3.45444e+01 2.97884e+01 +93 1.88305e+00 3.39411e+01 2.97884e+01 +94 1.90330e+00 3.33379e+01 2.97884e+01 +95 1.92355e+00 3.27347e+01 2.97884e+01 +96 1.94380e+00 3.21314e+01 2.97884e+01 +97 1.96405e+00 3.15282e+01 2.97884e+01 +98 1.98430e+00 3.09250e+01 2.97884e+01 +99 2.00455e+00 3.03217e+01 2.97884e+01 +100 2.02480e+00 2.97185e+01 2.97884e+01 +101 2.04505e+00 2.91153e+01 2.97884e+01 +102 2.06530e+00 2.85121e+01 2.97884e+01 +103 2.08555e+00 2.79088e+01 2.97884e+01 +104 2.10580e+00 2.73056e+01 2.97884e+01 +105 2.12605e+00 2.67024e+01 2.97884e+01 +106 2.14630e+00 2.60991e+01 2.97884e+01 +107 2.16655e+00 2.54959e+01 2.97884e+01 +108 2.18680e+00 2.48927e+01 2.97884e+01 +109 2.20705e+00 2.42895e+01 2.97884e+01 +110 2.22730e+00 2.36862e+01 2.97884e+01 +111 2.24756e+00 2.30830e+01 2.97884e+01 +112 2.26781e+00 2.24798e+01 2.97884e+01 +113 2.28806e+00 2.18765e+01 2.97884e+01 +114 2.30831e+00 2.12733e+01 2.97884e+01 +115 2.32856e+00 2.06701e+01 2.97884e+01 +116 2.34881e+00 2.00669e+01 2.97884e+01 +117 2.36906e+00 1.94636e+01 2.97884e+01 +118 2.38931e+00 1.88604e+01 2.97884e+01 +119 2.40956e+00 1.82572e+01 2.97884e+01 +120 2.42981e+00 1.76539e+01 2.97884e+01 +121 2.45006e+00 1.70507e+01 2.97884e+01 +122 2.47031e+00 1.64475e+01 2.97884e+01 +123 2.49056e+00 1.58442e+01 2.97884e+01 +124 2.51081e+00 1.52410e+01 2.97884e+01 +125 2.53106e+00 1.46378e+01 2.97884e+01 +126 2.55131e+00 1.40346e+01 2.97884e+01 +127 2.57156e+00 1.34313e+01 2.97884e+01 +128 2.59181e+00 1.28281e+01 2.97884e+01 +129 2.61206e+00 1.22249e+01 2.97884e+01 +130 2.63231e+00 1.16216e+01 2.97884e+01 +131 2.65257e+00 1.10184e+01 2.97884e+01 +132 2.67282e+00 1.04152e+01 2.97884e+01 +133 2.69307e+00 9.81196e+00 2.97884e+01 +134 2.71332e+00 9.20886e+00 2.97593e+01 +135 2.73357e+00 8.60757e+00 2.96037e+01 +136 2.75382e+00 8.01079e+00 2.93137e+01 +137 2.77407e+00 7.42124e+00 2.88892e+01 +138 2.79432e+00 6.84165e+00 2.83304e+01 +139 2.81457e+00 6.27474e+00 2.76371e+01 +140 2.83482e+00 5.72323e+00 2.68094e+01 +141 2.85507e+00 5.18984e+00 2.58474e+01 +142 2.87532e+00 4.67729e+00 2.47509e+01 +143 2.89557e+00 4.18831e+00 2.35199e+01 +144 2.91582e+00 3.72562e+00 2.21546e+01 +145 2.93607e+00 3.29193e+00 2.06549e+01 +146 2.95632e+00 2.88998e+00 1.90207e+01 +147 2.97657e+00 2.52248e+00 1.72522e+01 +148 2.99682e+00 2.19216e+00 1.53492e+01 +149 3.01707e+00 1.90173e+00 1.33118e+01 +150 3.03732e+00 1.65393e+00 1.11400e+01 +151 3.05758e+00 1.45045e+00 8.98475e+00 +152 3.07783e+00 1.28887e+00 7.00237e+00 +153 3.09808e+00 1.16568e+00 5.19285e+00 +154 3.11833e+00 1.07738e+00 3.55619e+00 +155 3.13858e+00 1.02048e+00 2.09239e+00 +156 3.15883e+00 9.91473e-01 8.01457e-01 +157 3.17908e+00 9.86856e-01 -3.16620e-01 +158 3.19933e+00 1.00313e+00 -1.26184e+00 +159 3.21958e+00 1.03679e+00 -2.03419e+00 +160 3.23983e+00 1.08435e+00 -2.63368e+00 +161 3.26008e+00 1.14229e+00 -3.06031e+00 +162 3.28033e+00 1.20713e+00 -3.31409e+00 +163 3.30058e+00 1.27535e+00 -3.39500e+00 +164 3.32083e+00 1.34346e+00 -3.30305e+00 +165 3.34108e+00 1.40796e+00 -3.03823e+00 +166 3.36133e+00 1.46535e+00 -2.60056e+00 +167 3.38158e+00 1.51215e+00 -2.00188e+00 +168 3.40183e+00 1.54654e+00 -1.40352e+00 +169 3.42208e+00 1.56934e+00 -8.56575e-01 +170 3.44233e+00 1.58158e+00 -3.61034e-01 +171 3.46259e+00 1.58431e+00 8.31010e-02 +172 3.48284e+00 1.57856e+00 4.75829e-01 +173 3.50309e+00 1.56538e+00 8.17150e-01 +174 3.52334e+00 1.54581e+00 1.10706e+00 +175 3.54359e+00 1.52089e+00 1.34557e+00 +176 3.56384e+00 1.49166e+00 1.53267e+00 +177 3.58409e+00 1.45916e+00 1.66837e+00 +178 3.60434e+00 1.42444e+00 1.75266e+00 +179 3.62459e+00 1.38853e+00 1.78554e+00 +180 3.64484e+00 1.35247e+00 1.76701e+00 +181 3.66509e+00 1.31731e+00 1.69708e+00 +182 3.68534e+00 1.28408e+00 1.57574e+00 +183 3.70559e+00 1.25384e+00 1.40299e+00 +184 3.72584e+00 1.22753e+00 1.19517e+00 +185 3.74609e+00 1.20528e+00 1.00677e+00 +186 3.76634e+00 1.18660e+00 8.42197e-01 +187 3.78659e+00 1.17101e+00 7.01434e-01 +188 3.80684e+00 1.15803e+00 5.84485e-01 +189 3.82709e+00 1.14718e+00 4.91351e-01 +190 3.84734e+00 1.13797e+00 4.22030e-01 +191 3.86760e+00 1.12992e+00 3.76524e-01 +192 3.88785e+00 1.12256e+00 3.54831e-01 +193 3.90810e+00 1.11539e+00 3.56953e-01 +194 3.92835e+00 1.10794e+00 3.82889e-01 +195 3.94860e+00 1.09972e+00 4.32638e-01 +196 3.96885e+00 1.09026e+00 5.06202e-01 +197 3.98910e+00 1.07906e+00 6.03580e-01 +198 4.00935e+00 1.06565e+00 7.24772e-01 +199 4.02960e+00 1.04955e+00 8.69778e-01 +200 4.04985e+00 1.03026e+00 1.03860e+00 +201 4.07010e+00 1.00745e+00 1.21153e+00 +202 4.09035e+00 9.81304e-01 1.36829e+00 +203 4.11060e+00 9.52145e-01 1.50886e+00 +204 4.13085e+00 9.20303e-01 1.63325e+00 +205 4.15110e+00 8.86105e-01 1.74147e+00 +206 4.17135e+00 8.49881e-01 1.83350e+00 +207 4.19160e+00 8.11956e-01 1.90936e+00 +208 4.21185e+00 7.72659e-01 1.96903e+00 +209 4.23210e+00 7.32317e-01 2.01253e+00 +210 4.25235e+00 6.91259e-01 2.03984e+00 +211 4.27261e+00 6.49811e-01 2.05098e+00 +212 4.29286e+00 6.08301e-01 2.04593e+00 +213 4.31311e+00 5.67058e-01 2.02471e+00 +214 4.33336e+00 5.26408e-01 1.98730e+00 +215 4.35361e+00 4.86679e-01 1.93372e+00 +216 4.37386e+00 4.48200e-01 1.86395e+00 +217 4.39411e+00 4.11294e-01 1.77895e+00 +218 4.41436e+00 3.76159e-01 1.69136e+00 +219 4.43461e+00 3.42783e-01 1.60520e+00 +220 4.45486e+00 3.11137e-01 1.52046e+00 +221 4.47511e+00 2.81193e-01 1.43714e+00 +222 4.49536e+00 2.52922e-01 1.35524e+00 +223 4.51561e+00 2.26295e-01 1.27476e+00 +224 4.53586e+00 2.01283e-01 1.19571e+00 +225 4.55611e+00 1.77858e-01 1.11807e+00 +226 4.57636e+00 1.55991e-01 1.04185e+00 +227 4.59661e+00 1.35652e-01 9.67052e-01 +228 4.61686e+00 1.16814e-01 8.93674e-01 +229 4.63711e+00 9.94480e-02 8.21717e-01 +230 4.65736e+00 8.35245e-02 7.51181e-01 +231 4.67762e+00 6.90149e-02 6.82064e-01 +232 4.69787e+00 5.58906e-02 6.14369e-01 +233 4.71812e+00 4.41228e-02 5.48093e-01 +234 4.73837e+00 3.36825e-02 4.83277e-01 +235 4.75862e+00 2.45388e-02 4.20047e-01 +236 4.77887e+00 1.66594e-02 3.58416e-01 +237 4.79912e+00 1.00118e-02 2.98383e-01 +238 4.81937e+00 4.56379e-03 2.39947e-01 +239 4.83962e+00 2.82945e-04 1.83109e-01 +240 4.85987e+00 -2.86308e-03 1.27868e-01 +241 4.88012e+00 -4.90663e-03 7.42254e-02 +242 4.90037e+00 -5.88007e-03 2.21805e-02 +243 4.92062e+00 -5.81574e-03 -2.82668e-02 +244 4.94087e+00 -4.74602e-03 -7.71163e-02 +245 4.96112e+00 -2.70324e-03 -1.24368e-01 +246 4.98137e+00 2.80232e-04 -1.70022e-01 +247 5.00162e+00 4.17205e-03 -2.14079e-01 +248 5.02187e+00 8.93985e-03 -2.56537e-01 +249 5.04212e+00 1.45513e-02 -2.97398e-01 +250 5.06237e+00 2.09740e-02 -3.36661e-01 +251 5.08263e+00 2.81652e-02 -3.72774e-01 +252 5.10288e+00 3.60397e-02 -4.04144e-01 +253 5.12313e+00 4.45014e-02 -4.30773e-01 +254 5.14338e+00 5.34544e-02 -4.52658e-01 +255 5.16363e+00 6.28025e-02 -4.69802e-01 +256 5.18388e+00 7.24498e-02 -4.82203e-01 +257 5.20413e+00 8.23003e-02 -4.89862e-01 +258 5.22438e+00 9.22578e-02 -4.92779e-01 +259 5.24463e+00 1.02226e-01 -4.90954e-01 +260 5.26488e+00 1.12110e-01 -4.84386e-01 +261 5.28513e+00 1.21812e-01 -4.73076e-01 +262 5.30538e+00 1.31238e-01 -4.57024e-01 +263 5.32563e+00 1.40290e-01 -4.36230e-01 +264 5.34588e+00 1.48874e-01 -4.10693e-01 +265 5.36613e+00 1.56892e-01 -3.80414e-01 +266 5.38638e+00 1.64249e-01 -3.45393e-01 +267 5.40663e+00 1.70849e-01 -3.06021e-01 +268 5.42688e+00 1.76653e-01 -2.67562e-01 +269 5.44713e+00 1.81703e-01 -2.31667e-01 +270 5.46738e+00 1.86053e-01 -1.98335e-01 +271 5.48764e+00 1.89753e-01 -1.67568e-01 +272 5.50789e+00 1.92857e-01 -1.39366e-01 +273 5.52814e+00 1.95415e-01 -1.13727e-01 +274 5.54839e+00 1.97480e-01 -9.06523e-02 +275 5.56864e+00 1.99104e-01 -7.01418e-02 +276 5.58889e+00 2.00338e-01 -5.21954e-02 +277 5.60914e+00 2.01235e-01 -3.68132e-02 +278 5.62939e+00 2.01847e-01 -2.39950e-02 +279 5.64964e+00 2.02224e-01 -1.37410e-02 +280 5.66989e+00 2.02420e-01 -6.05108e-03 +281 5.69014e+00 2.02487e-01 -9.25278e-04 +282 5.71039e+00 2.02475e-01 1.63640e-03 +283 5.73064e+00 2.02438e-01 1.63397e-03 +284 5.75089e+00 2.02423e-01 -2.80048e-04 +285 5.77114e+00 2.02447e-01 -1.94516e-03 +286 5.79139e+00 2.02499e-01 -3.19019e-03 +287 5.81164e+00 2.02573e-01 -4.01515e-03 +288 5.83189e+00 2.02659e-01 -4.42003e-03 +289 5.85214e+00 2.02749e-01 -4.40484e-03 +290 5.87239e+00 2.02835e-01 -3.96958e-03 +291 5.89265e+00 2.02907e-01 -3.11424e-03 +292 5.91290e+00 2.02958e-01 -1.83883e-03 +293 5.93315e+00 2.02979e-01 -1.43346e-04 +294 5.95340e+00 2.02961e-01 1.97221e-03 +295 5.97365e+00 2.02896e-01 4.50785e-03 +296 5.99390e+00 2.02776e-01 7.46355e-03 +297 6.01415e+00 2.02591e-01 1.08393e-02 +298 6.03440e+00 2.02334e-01 1.46352e-02 +299 6.05465e+00 2.01995e-01 1.88511e-02 +300 6.07490e+00 2.01567e-01 2.34871e-02 +301 6.09515e+00 2.01043e-01 2.83464e-02 +302 6.11540e+00 2.00419e-01 3.32284e-02 +303 6.13565e+00 1.99697e-01 3.81329e-02 +304 6.15590e+00 1.98875e-01 4.30601e-02 +305 6.17615e+00 1.97953e-01 4.80098e-02 +306 6.19640e+00 1.96930e-01 5.29822e-02 +307 6.21665e+00 1.95807e-01 5.79772e-02 +308 6.23690e+00 1.94582e-01 6.29948e-02 +309 6.25715e+00 1.93255e-01 6.80351e-02 +310 6.27740e+00 1.91826e-01 7.30979e-02 +311 6.29766e+00 1.90294e-01 7.81834e-02 +312 6.31791e+00 1.88659e-01 8.32915e-02 +313 6.33816e+00 1.86921e-01 8.84221e-02 +314 6.35841e+00 1.85078e-01 9.35755e-02 +315 6.37866e+00 1.83131e-01 9.87514e-02 +316 6.39891e+00 1.81078e-01 1.03950e-01 +317 6.41916e+00 1.78921e-01 1.09153e-01 +318 6.43941e+00 1.76659e-01 1.14117e-01 +319 6.45966e+00 1.74301e-01 1.18766e-01 +320 6.47991e+00 1.71851e-01 1.23099e-01 +321 6.50016e+00 1.69317e-01 1.27118e-01 +322 6.52041e+00 1.66705e-01 1.30822e-01 +323 6.54066e+00 1.64021e-01 1.34210e-01 +324 6.56091e+00 1.61272e-01 1.37284e-01 +325 6.58116e+00 1.58463e-01 1.40042e-01 +326 6.60141e+00 1.55602e-01 1.42485e-01 +327 6.62166e+00 1.52694e-01 1.44614e-01 +328 6.64191e+00 1.49747e-01 1.46427e-01 +329 6.66216e+00 1.46766e-01 1.47925e-01 +330 6.68241e+00 1.43758e-01 1.49108e-01 +331 6.70267e+00 1.40729e-01 1.49976e-01 +332 6.72292e+00 1.37686e-01 1.50529e-01 +333 6.74317e+00 1.34635e-01 1.50767e-01 +334 6.76342e+00 1.31581e-01 1.50789e-01 +335 6.78367e+00 1.28527e-01 1.50921e-01 +336 6.80392e+00 1.25468e-01 1.51190e-01 +337 6.82417e+00 1.22402e-01 1.51595e-01 +338 6.84442e+00 1.19327e-01 1.52136e-01 +339 6.86467e+00 1.16240e-01 1.52814e-01 +340 6.88492e+00 1.13137e-01 1.53628e-01 +341 6.90517e+00 1.10017e-01 1.54578e-01 +342 6.92542e+00 1.06876e-01 1.55664e-01 +343 6.94567e+00 1.03711e-01 1.56887e-01 +344 6.96592e+00 1.00521e-01 1.58245e-01 +345 6.98617e+00 9.73014e-02 1.59740e-01 +346 7.00642e+00 9.40502e-02 1.61372e-01 +347 7.02667e+00 9.07647e-02 1.63139e-01 +348 7.04692e+00 8.74420e-02 1.65043e-01 +349 7.06717e+00 8.40794e-02 1.67083e-01 +350 7.08742e+00 8.06741e-02 1.69260e-01 +351 7.10768e+00 7.72249e-02 1.71336e-01 +352 7.12793e+00 7.37370e-02 1.73074e-01 +353 7.14818e+00 7.02175e-02 1.74472e-01 +354 7.16843e+00 6.66730e-02 1.75531e-01 +355 7.18868e+00 6.31106e-02 1.76250e-01 +356 7.20893e+00 5.95370e-02 1.76630e-01 +357 7.22918e+00 5.59592e-02 1.76671e-01 +358 7.24943e+00 5.23840e-02 1.76373e-01 +359 7.26968e+00 4.88182e-02 1.75735e-01 +360 7.28993e+00 4.52688e-02 1.74758e-01 +361 7.31018e+00 4.17426e-02 1.73442e-01 +362 7.33043e+00 3.82465e-02 1.71786e-01 +363 7.35068e+00 3.47874e-02 1.69791e-01 +364 7.37093e+00 3.13721e-02 1.67457e-01 +365 7.39118e+00 2.80075e-02 1.64784e-01 +366 7.41143e+00 2.47005e-02 1.61771e-01 +367 7.43168e+00 2.14578e-02 1.58440e-01 +368 7.45193e+00 1.82836e-02 1.55062e-01 +369 7.47218e+00 1.51774e-02 1.51721e-01 +370 7.49243e+00 1.21385e-02 1.48419e-01 +371 7.51269e+00 9.16606e-03 1.45155e-01 +372 7.53294e+00 6.25935e-03 1.41928e-01 +373 7.55319e+00 3.41758e-03 1.38740e-01 +374 7.57344e+00 6.40000e-04 1.35589e-01 +375 7.59369e+00 -2.07416e-03 1.32476e-01 +376 7.61394e+00 -4.72568e-03 1.29401e-01 +377 7.63419e+00 -7.31531e-03 1.26365e-01 +378 7.65444e+00 -9.84383e-03 1.23366e-01 +379 7.67469e+00 -1.23120e-02 1.20405e-01 +380 7.69494e+00 -1.47206e-02 1.17482e-01 +381 7.71519e+00 -1.70704e-02 1.14597e-01 +382 7.73544e+00 -1.93621e-02 1.11750e-01 +383 7.75569e+00 -2.15966e-02 1.08940e-01 +384 7.77594e+00 -2.37743e-02 1.06100e-01 +385 7.79619e+00 -2.58919e-02 1.03001e-01 +386 7.81644e+00 -2.79441e-02 9.96253e-02 +387 7.83669e+00 -2.99250e-02 9.59734e-02 +388 7.85694e+00 -3.18292e-02 9.20451e-02 +389 7.87719e+00 -3.36511e-02 8.78405e-02 +390 7.89744e+00 -3.53850e-02 8.33595e-02 +391 7.91770e+00 -3.70253e-02 7.86021e-02 +392 7.93795e+00 -3.85666e-02 7.35683e-02 +393 7.95820e+00 -4.00031e-02 6.82582e-02 +394 7.97845e+00 -4.13292e-02 6.26717e-02 +395 7.99870e+00 -4.25395e-02 5.68088e-02 +396 8.01895e+00 -4.36282e-02 5.06695e-02 +397 8.03920e+00 -4.45898e-02 4.42538e-02 +398 8.05945e+00 -4.54186e-02 3.75618e-02 +399 8.07970e+00 -4.61092e-02 3.05934e-02 +400 8.09995e+00 -4.66558e-02 2.33486e-02 +401 8.12020e+00 -4.70552e-02 1.61643e-02 +402 8.14045e+00 -4.73132e-02 9.38066e-03 +403 8.16070e+00 -4.74379e-02 2.99764e-03 +404 8.18095e+00 -4.74373e-02 -2.98473e-03 +405 8.20120e+00 -4.73197e-02 -8.56645e-03 +406 8.22145e+00 -4.70931e-02 -1.37475e-02 +407 8.24170e+00 -4.67656e-02 -1.85279e-02 +408 8.26195e+00 -4.63454e-02 -2.29077e-02 +409 8.28220e+00 -4.58405e-02 -2.68868e-02 +410 8.30245e+00 -4.52591e-02 -3.04653e-02 +411 8.32271e+00 -4.46093e-02 -3.36431e-02 +412 8.34296e+00 -4.38993e-02 -3.64203e-02 +413 8.36321e+00 -4.31370e-02 -3.87968e-02 +414 8.38346e+00 -4.23307e-02 -4.07727e-02 +415 8.40371e+00 -4.14884e-02 -4.23479e-02 +416 8.42396e+00 -4.06182e-02 -4.35225e-02 +417 8.44421e+00 -3.97283e-02 -4.43172e-02 +418 8.46446e+00 -3.88239e-02 -4.50049e-02 +419 8.48471e+00 -3.79057e-02 -4.56703e-02 +420 8.50496e+00 -3.69743e-02 -4.63133e-02 +421 8.52521e+00 -3.60301e-02 -4.69339e-02 +422 8.54546e+00 -3.50736e-02 -4.75322e-02 +423 8.56571e+00 -3.41052e-02 -4.81081e-02 +424 8.58596e+00 -3.31253e-02 -4.86616e-02 +425 8.60621e+00 -3.21345e-02 -4.91928e-02 +426 8.62646e+00 -3.11331e-02 -4.97016e-02 +427 8.64671e+00 -3.01217e-02 -5.01880e-02 +428 8.66696e+00 -2.91006e-02 -5.06520e-02 +429 8.68721e+00 -2.80704e-02 -5.10937e-02 +430 8.70746e+00 -2.70314e-02 -5.15130e-02 +431 8.72772e+00 -2.59842e-02 -5.19100e-02 +432 8.74797e+00 -2.49292e-02 -5.22846e-02 +433 8.76822e+00 -2.38668e-02 -5.26368e-02 +434 8.78847e+00 -2.27976e-02 -5.29357e-02 +435 8.80872e+00 -2.17239e-02 -5.30803e-02 +436 8.82897e+00 -2.06489e-02 -5.30626e-02 +437 8.84922e+00 -1.95759e-02 -5.28827e-02 +438 8.86947e+00 -1.85082e-02 -5.25406e-02 +439 8.88972e+00 -1.74490e-02 -5.20363e-02 +440 8.90997e+00 -1.64018e-02 -5.13697e-02 +441 8.93022e+00 -1.53696e-02 -5.05410e-02 +442 8.95047e+00 -1.43559e-02 -4.95500e-02 +443 8.97072e+00 -1.33639e-02 -4.83968e-02 +444 8.99097e+00 -1.23969e-02 -4.70814e-02 +445 9.01122e+00 -1.14581e-02 -4.56037e-02 +446 9.03147e+00 -1.05510e-02 -4.39639e-02 +447 9.05172e+00 -9.67866e-03 -4.21618e-02 +448 9.07197e+00 -8.84448e-03 -4.01975e-02 +449 9.09222e+00 -8.05171e-03 -3.80710e-02 +450 9.11247e+00 -7.30366e-03 -3.57822e-02 +451 9.13273e+00 -6.60234e-03 -3.35176e-02 +452 9.15298e+00 -5.94474e-03 -3.14642e-02 +453 9.17323e+00 -5.32658e-03 -2.96221e-02 +454 9.19348e+00 -4.74359e-03 -2.79913e-02 +455 9.21373e+00 -4.19148e-03 -2.65718e-02 +456 9.23398e+00 -3.66597e-03 -2.53636e-02 +457 9.25423e+00 -3.16280e-03 -2.43666e-02 +458 9.27448e+00 -2.67767e-03 -2.35810e-02 +459 9.29473e+00 -2.20632e-03 -2.30066e-02 +460 9.31498e+00 -1.74446e-03 -2.26435e-02 +461 9.33523e+00 -1.28781e-03 -2.24918e-02 +462 9.35548e+00 -8.32093e-04 -2.25513e-02 +463 9.37573e+00 -3.73033e-04 -2.28220e-02 +464 9.39598e+00 9.36493e-05 -2.33041e-02 +465 9.41623e+00 5.72233e-04 -2.39975e-02 +466 9.43648e+00 1.06700e-03 -2.49021e-02 +467 9.45673e+00 1.58215e-03 -2.59847e-02 +468 9.47698e+00 2.11737e-03 -2.68103e-02 +469 9.49723e+00 2.66535e-03 -2.72445e-02 +470 9.51748e+00 3.21816e-03 -2.72874e-02 +471 9.53774e+00 3.76787e-03 -2.69390e-02 +472 9.55799e+00 4.30657e-03 -2.61993e-02 +473 9.57824e+00 4.82633e-03 -2.50682e-02 +474 9.59849e+00 5.31922e-03 -2.35458e-02 +475 9.61874e+00 5.77732e-03 -2.16321e-02 +476 9.63899e+00 6.19270e-03 -1.93271e-02 +477 9.65924e+00 6.55744e-03 -1.66308e-02 +478 9.67949e+00 6.86362e-03 -1.35431e-02 +479 9.69974e+00 7.10331e-03 -1.00641e-02 +480 9.71999e+00 7.26859e-03 -6.19383e-03 +481 9.74024e+00 7.35153e-03 -1.93221e-03 +482 9.76049e+00 7.34420e-03 2.72074e-03 +483 9.78074e+00 7.23869e-03 7.76500e-03 +484 9.80099e+00 7.02817e-03 1.29555e-02 +485 9.82124e+00 6.71866e-03 1.74943e-02 +486 9.84149e+00 6.32445e-03 2.13200e-02 +487 9.86174e+00 5.85999e-03 2.44325e-02 +488 9.88199e+00 5.33972e-03 2.68319e-02 +489 9.90224e+00 4.77809e-03 2.85182e-02 +490 9.92249e+00 4.18952e-03 2.94913e-02 +491 9.94275e+00 3.58847e-03 2.97513e-02 +492 9.96300e+00 2.98938e-03 2.92982e-02 +493 9.98325e+00 2.40668e-03 2.81319e-02 +494 1.00035e+01 1.85482e-03 2.62525e-02 +495 1.00237e+01 1.34824e-03 2.36599e-02 +496 1.00440e+01 9.01386e-04 2.03542e-02 +497 1.00642e+01 5.28692e-04 1.63354e-02 +498 1.00845e+01 2.44602e-04 1.16034e-02 +499 1.01047e+01 6.35574e-05 6.15826e-03 +500 1.01250e+01 0.00000e+00 0.00000e+00 + + + +PairBW +N 500 R 2.00000e-02 7.00000e+00 + +1 2.00000e-02 7.51383e+01 2.97885e+01 +2 3.39880e-02 7.47216e+01 2.97885e+01 +3 4.79760e-02 7.43049e+01 2.97885e+01 +4 6.19639e-02 7.38882e+01 2.97885e+01 +5 7.59519e-02 7.34715e+01 2.97885e+01 +6 8.99399e-02 7.30549e+01 2.97885e+01 +7 1.03928e-01 7.26382e+01 2.97885e+01 +8 1.17916e-01 7.22215e+01 2.97885e+01 +9 1.31904e-01 7.18048e+01 2.97885e+01 +10 1.45892e-01 7.13881e+01 2.97885e+01 +11 1.59880e-01 7.09714e+01 2.97885e+01 +12 1.73868e-01 7.05548e+01 2.97885e+01 +13 1.87856e-01 7.01381e+01 2.97885e+01 +14 2.01844e-01 6.97214e+01 2.97885e+01 +15 2.15832e-01 6.93047e+01 2.97885e+01 +16 2.29820e-01 6.88880e+01 2.97885e+01 +17 2.43808e-01 6.84714e+01 2.97885e+01 +18 2.57796e-01 6.80547e+01 2.97885e+01 +19 2.71784e-01 6.76380e+01 2.97885e+01 +20 2.85772e-01 6.72213e+01 2.97885e+01 +21 2.99760e-01 6.68046e+01 2.97885e+01 +22 3.13747e-01 6.63879e+01 2.97885e+01 +23 3.27735e-01 6.59713e+01 2.97885e+01 +24 3.41723e-01 6.55546e+01 2.97885e+01 +25 3.55711e-01 6.51379e+01 2.97885e+01 +26 3.69699e-01 6.47212e+01 2.97885e+01 +27 3.83687e-01 6.43045e+01 2.97885e+01 +28 3.97675e-01 6.38879e+01 2.97885e+01 +29 4.11663e-01 6.34712e+01 2.97885e+01 +30 4.25651e-01 6.30545e+01 2.97885e+01 +31 4.39639e-01 6.26378e+01 2.97885e+01 +32 4.53627e-01 6.22211e+01 2.97885e+01 +33 4.67615e-01 6.18045e+01 2.97885e+01 +34 4.81603e-01 6.13878e+01 2.97885e+01 +35 4.95591e-01 6.09711e+01 2.97885e+01 +36 5.09579e-01 6.05544e+01 2.97885e+01 +37 5.23567e-01 6.01377e+01 2.97885e+01 +38 5.37555e-01 5.97210e+01 2.97885e+01 +39 5.51543e-01 5.93044e+01 2.97885e+01 +40 5.65531e-01 5.88877e+01 2.97885e+01 +41 5.79519e-01 5.84710e+01 2.97885e+01 +42 5.93507e-01 5.80543e+01 2.97885e+01 +43 6.07495e-01 5.76376e+01 2.97885e+01 +44 6.21483e-01 5.72210e+01 2.97885e+01 +45 6.35471e-01 5.68043e+01 2.97885e+01 +46 6.49459e-01 5.63876e+01 2.97885e+01 +47 6.63447e-01 5.59709e+01 2.97885e+01 +48 6.77435e-01 5.55542e+01 2.97885e+01 +49 6.91423e-01 5.51375e+01 2.97885e+01 +50 7.05411e-01 5.47209e+01 2.97885e+01 +51 7.19399e-01 5.43042e+01 2.97885e+01 +52 7.33387e-01 5.38875e+01 2.97885e+01 +53 7.47375e-01 5.34708e+01 2.97885e+01 +54 7.61363e-01 5.30541e+01 2.97885e+01 +55 7.75351e-01 5.26375e+01 2.97885e+01 +56 7.89339e-01 5.22208e+01 2.97885e+01 +57 8.03327e-01 5.18041e+01 2.97885e+01 +58 8.17315e-01 5.13874e+01 2.97885e+01 +59 8.31303e-01 5.09707e+01 2.97885e+01 +60 8.45291e-01 5.05540e+01 2.97885e+01 +61 8.59279e-01 5.01374e+01 2.97885e+01 +62 8.73267e-01 4.97207e+01 2.97885e+01 +63 8.87255e-01 4.93040e+01 2.97885e+01 +64 9.01242e-01 4.88873e+01 2.97885e+01 +65 9.15230e-01 4.84706e+01 2.97885e+01 +66 9.29218e-01 4.80540e+01 2.97885e+01 +67 9.43206e-01 4.76373e+01 2.97885e+01 +68 9.57194e-01 4.72206e+01 2.97885e+01 +69 9.71182e-01 4.68039e+01 2.97885e+01 +70 9.85170e-01 4.63872e+01 2.97885e+01 +71 9.99158e-01 4.59706e+01 2.97885e+01 +72 1.01315e+00 4.55539e+01 2.97885e+01 +73 1.02713e+00 4.51372e+01 2.97885e+01 +74 1.04112e+00 4.47205e+01 2.97885e+01 +75 1.05511e+00 4.43038e+01 2.97885e+01 +76 1.06910e+00 4.38871e+01 2.97885e+01 +77 1.08309e+00 4.34705e+01 2.97885e+01 +78 1.09707e+00 4.30538e+01 2.97885e+01 +79 1.11106e+00 4.26371e+01 2.97885e+01 +80 1.12505e+00 4.22204e+01 2.97885e+01 +81 1.13904e+00 4.18037e+01 2.97885e+01 +82 1.15303e+00 4.13871e+01 2.97885e+01 +83 1.16701e+00 4.09704e+01 2.97885e+01 +84 1.18100e+00 4.05537e+01 2.97885e+01 +85 1.19499e+00 4.01370e+01 2.97885e+01 +86 1.20898e+00 3.97203e+01 2.97885e+01 +87 1.22297e+00 3.93036e+01 2.97885e+01 +88 1.23695e+00 3.88870e+01 2.97885e+01 +89 1.25094e+00 3.84703e+01 2.97885e+01 +90 1.26493e+00 3.80536e+01 2.97885e+01 +91 1.27892e+00 3.76369e+01 2.97885e+01 +92 1.29291e+00 3.72202e+01 2.97885e+01 +93 1.30689e+00 3.68036e+01 2.97885e+01 +94 1.32088e+00 3.63869e+01 2.97885e+01 +95 1.33487e+00 3.59702e+01 2.97885e+01 +96 1.34886e+00 3.55535e+01 2.97885e+01 +97 1.36285e+00 3.51368e+01 2.97885e+01 +98 1.37683e+00 3.47202e+01 2.97885e+01 +99 1.39082e+00 3.43035e+01 2.97885e+01 +100 1.40481e+00 3.38868e+01 2.97885e+01 +101 1.41880e+00 3.34701e+01 2.97885e+01 +102 1.43279e+00 3.30534e+01 2.97885e+01 +103 1.44677e+00 3.26367e+01 2.97885e+01 +104 1.46076e+00 3.22201e+01 2.97885e+01 +105 1.47475e+00 3.18034e+01 2.97885e+01 +106 1.48874e+00 3.13867e+01 2.97885e+01 +107 1.50273e+00 3.09700e+01 2.97885e+01 +108 1.51671e+00 3.05533e+01 2.97885e+01 +109 1.53070e+00 3.01367e+01 2.97885e+01 +110 1.54469e+00 2.97200e+01 2.97885e+01 +111 1.55868e+00 2.93033e+01 2.97885e+01 +112 1.57267e+00 2.88866e+01 2.97885e+01 +113 1.58665e+00 2.84699e+01 2.97885e+01 +114 1.60064e+00 2.80532e+01 2.97885e+01 +115 1.61463e+00 2.76366e+01 2.97885e+01 +116 1.62862e+00 2.72199e+01 2.97885e+01 +117 1.64261e+00 2.68032e+01 2.97885e+01 +118 1.65659e+00 2.63865e+01 2.97885e+01 +119 1.67058e+00 2.59698e+01 2.97885e+01 +120 1.68457e+00 2.55532e+01 2.97885e+01 +121 1.69856e+00 2.51365e+01 2.97885e+01 +122 1.71255e+00 2.47198e+01 2.97885e+01 +123 1.72653e+00 2.43031e+01 2.97885e+01 +124 1.74052e+00 2.38864e+01 2.97885e+01 +125 1.75451e+00 2.34698e+01 2.97885e+01 +126 1.76850e+00 2.30531e+01 2.97885e+01 +127 1.78248e+00 2.26364e+01 2.97885e+01 +128 1.79647e+00 2.22197e+01 2.97885e+01 +129 1.81046e+00 2.18030e+01 2.97885e+01 +130 1.82445e+00 2.13863e+01 2.97885e+01 +131 1.83844e+00 2.09697e+01 2.97885e+01 +132 1.85242e+00 2.05530e+01 2.97885e+01 +133 1.86641e+00 2.01363e+01 2.97885e+01 +134 1.88040e+00 1.97196e+01 2.97885e+01 +135 1.89439e+00 1.93029e+01 2.97885e+01 +136 1.90838e+00 1.88863e+01 2.97885e+01 +137 1.92236e+00 1.84696e+01 2.97885e+01 +138 1.93635e+00 1.80529e+01 2.97885e+01 +139 1.95034e+00 1.76362e+01 2.97885e+01 +140 1.96433e+00 1.72195e+01 2.97885e+01 +141 1.97832e+00 1.68028e+01 2.97885e+01 +142 1.99230e+00 1.63862e+01 2.97885e+01 +143 2.00629e+00 1.59695e+01 2.97885e+01 +144 2.02028e+00 1.55528e+01 2.97885e+01 +145 2.03427e+00 1.51361e+01 2.97885e+01 +146 2.04826e+00 1.47194e+01 2.97885e+01 +147 2.06224e+00 1.43028e+01 2.97885e+01 +148 2.07623e+00 1.38861e+01 2.97885e+01 +149 2.09022e+00 1.34694e+01 2.97885e+01 +150 2.10421e+00 1.30527e+01 2.97885e+01 +151 2.11820e+00 1.26360e+01 2.97885e+01 +152 2.13218e+00 1.22193e+01 2.97885e+01 +153 2.14617e+00 1.18027e+01 2.97885e+01 +154 2.16016e+00 1.13860e+01 2.97885e+01 +155 2.17415e+00 1.09693e+01 2.97884e+01 +156 2.18814e+00 1.05526e+01 2.97883e+01 +157 2.20212e+00 1.01360e+01 2.97882e+01 +158 2.21611e+00 9.71928e+00 2.97881e+01 +159 2.23010e+00 9.30260e+00 2.97881e+01 +160 2.24409e+00 8.88593e+00 2.97880e+01 +161 2.25808e+00 8.46925e+00 2.97880e+01 +162 2.27206e+00 8.05258e+00 2.97880e+01 +163 2.28605e+00 7.63590e+00 2.97880e+01 +164 2.30004e+00 7.21923e+00 2.97879e+01 +165 2.31403e+00 6.80256e+00 2.97879e+01 +166 2.32802e+00 6.38588e+00 2.97879e+01 +167 2.34200e+00 5.96927e+00 2.97676e+01 +168 2.35599e+00 5.55359e+00 2.96489e+01 +169 2.36998e+00 5.14031e+00 2.94242e+01 +170 2.38397e+00 4.73091e+00 2.90935e+01 +171 2.39796e+00 4.32688e+00 2.86569e+01 +172 2.41194e+00 3.92970e+00 2.81142e+01 +173 2.42593e+00 3.54085e+00 2.74656e+01 +174 2.43992e+00 3.16182e+00 2.67109e+01 +175 2.45391e+00 2.79409e+00 2.58503e+01 +176 2.46790e+00 2.43913e+00 2.48837e+01 +177 2.48188e+00 2.09843e+00 2.38111e+01 +178 2.49587e+00 1.77349e+00 2.26325e+01 +179 2.50986e+00 1.46576e+00 2.13479e+01 +180 2.52385e+00 1.17675e+00 1.99573e+01 +181 2.53784e+00 9.07935e-01 1.84607e+01 +182 2.55182e+00 6.60792e-01 1.68581e+01 +183 2.56581e+00 4.36807e-01 1.51495e+01 +184 2.57980e+00 2.37080e-01 1.34226e+01 +185 2.59379e+00 6.08637e-02 1.17882e+01 +186 2.60778e+00 -9.31403e-02 1.02467e+01 +187 2.62176e+00 -2.26231e-01 8.79811e+00 +188 2.63575e+00 -3.39709e-01 7.44237e+00 +189 2.64974e+00 -4.34872e-01 6.17953e+00 +190 2.66373e+00 -5.13020e-01 5.00957e+00 +191 2.67772e+00 -5.75452e-01 3.93249e+00 +192 2.69170e+00 -6.23468e-01 2.94830e+00 +193 2.70569e+00 -6.58367e-01 2.05700e+00 +194 2.71968e+00 -6.81448e-01 1.25859e+00 +195 2.73367e+00 -6.94011e-01 5.53061e-01 +196 2.74766e+00 -6.97354e-01 -5.95806e-02 +197 2.76164e+00 -6.92777e-01 -5.79336e-01 +198 2.77563e+00 -6.81579e-01 -1.00620e+00 +199 2.78962e+00 -6.65060e-01 -1.34019e+00 +200 2.80361e+00 -6.44516e-01 -1.58367e+00 +201 2.81760e+00 -6.20923e-01 -1.78620e+00 +202 2.83158e+00 -5.94645e-01 -1.96751e+00 +203 2.84557e+00 -5.65979e-01 -2.12762e+00 +204 2.85956e+00 -5.35222e-01 -2.26652e+00 +205 2.87355e+00 -5.02670e-01 -2.38420e+00 +206 2.88754e+00 -4.68620e-01 -2.48067e+00 +207 2.90152e+00 -4.33369e-01 -2.55594e+00 +208 2.91551e+00 -3.97214e-01 -2.60998e+00 +209 2.92950e+00 -3.60452e-01 -2.64282e+00 +210 2.94349e+00 -3.23378e-01 -2.65445e+00 +211 2.95747e+00 -2.86290e-01 -2.64486e+00 +212 2.97146e+00 -2.49484e-01 -2.61407e+00 +213 2.98545e+00 -2.13258e-01 -2.56206e+00 +214 2.99944e+00 -1.77907e-01 -2.48884e+00 +215 3.01343e+00 -1.43729e-01 -2.39441e+00 +216 3.02741e+00 -1.11020e-01 -2.27877e+00 +217 3.04140e+00 -8.00665e-02 -2.14583e+00 +218 3.05539e+00 -5.09814e-02 -2.01314e+00 +219 3.06938e+00 -2.37360e-02 -1.88280e+00 +220 3.08337e+00 1.70256e-03 -1.75480e+00 +221 3.09735e+00 2.53672e-02 -1.62916e+00 +222 3.11134e+00 4.72908e-02 -1.50587e+00 +223 3.12533e+00 6.75062e-02 -1.38492e+00 +224 3.13932e+00 8.60463e-02 -1.26633e+00 +225 3.15331e+00 1.02944e-01 -1.15009e+00 +226 3.16729e+00 1.18232e-01 -1.03619e+00 +227 3.18128e+00 1.31943e-01 -9.24647e-01 +228 3.19527e+00 1.44111e-01 -8.15452e-01 +229 3.20926e+00 1.54767e-01 -7.08608e-01 +230 3.22325e+00 1.63946e-01 -6.04113e-01 +231 3.23723e+00 1.71679e-01 -5.01968e-01 +232 3.25122e+00 1.78000e-01 -4.02173e-01 +233 3.26521e+00 1.82941e-01 -3.04727e-01 +234 3.27920e+00 1.86541e-01 -2.10906e-01 +235 3.29319e+00 1.88867e-01 -1.22592e-01 +236 3.30717e+00 1.89996e-01 -3.98024e-02 +237 3.32116e+00 1.90006e-01 3.74622e-02 +238 3.33515e+00 1.88974e-01 1.09202e-01 +239 3.34914e+00 1.86977e-01 1.75417e-01 +240 3.36313e+00 1.84092e-01 2.36108e-01 +241 3.37711e+00 1.80398e-01 2.91274e-01 +242 3.39110e+00 1.75970e-01 3.40915e-01 +243 3.40509e+00 1.70886e-01 3.85032e-01 +244 3.41908e+00 1.65224e-01 4.23624e-01 +245 3.43307e+00 1.59060e-01 4.56691e-01 +246 3.44705e+00 1.52473e-01 4.84233e-01 +247 3.46104e+00 1.45539e-01 5.06251e-01 +248 3.47503e+00 1.38336e-01 5.22745e-01 +249 3.48902e+00 1.30941e-01 5.33713e-01 +250 3.50301e+00 1.23430e-01 5.39270e-01 +251 3.51699e+00 1.15863e-01 5.42677e-01 +252 3.53098e+00 1.08252e-01 5.45441e-01 +253 3.54497e+00 1.00606e-01 5.47559e-01 +254 3.55896e+00 9.29361e-02 5.49033e-01 +255 3.57295e+00 8.52497e-02 5.49863e-01 +256 3.58693e+00 7.75562e-02 5.50047e-01 +257 3.60092e+00 6.98646e-02 5.49587e-01 +258 3.61491e+00 6.21839e-02 5.48483e-01 +259 3.62890e+00 5.45233e-02 5.46734e-01 +260 3.64289e+00 4.68915e-02 5.44340e-01 +261 3.65687e+00 3.92978e-02 5.41301e-01 +262 3.67086e+00 3.17511e-02 5.37618e-01 +263 3.68485e+00 2.42605e-02 5.33290e-01 +264 3.69884e+00 1.68348e-02 5.28318e-01 +265 3.71283e+00 9.48329e-03 5.22701e-01 +266 3.72681e+00 2.21481e-03 5.16439e-01 +267 3.74080e+00 -4.96183e-03 5.09637e-01 +268 3.75479e+00 -1.20430e-02 5.02841e-01 +269 3.76878e+00 -1.90297e-02 4.96131e-01 +270 3.78277e+00 -2.59231e-02 4.89508e-01 +271 3.79675e+00 -3.27245e-02 4.82970e-01 +272 3.81074e+00 -3.94351e-02 4.76519e-01 +273 3.82473e+00 -4.60560e-02 4.70153e-01 +274 3.83872e+00 -5.25885e-02 4.63874e-01 +275 3.85271e+00 -5.90337e-02 4.57680e-01 +276 3.86669e+00 -6.53929e-02 4.51572e-01 +277 3.88068e+00 -7.16673e-02 4.45551e-01 +278 3.89467e+00 -7.78580e-02 4.39615e-01 +279 3.90866e+00 -8.39663e-02 4.33766e-01 +280 3.92265e+00 -8.99934e-02 4.28002e-01 +281 3.93663e+00 -9.59405e-02 4.22325e-01 +282 3.95062e+00 -1.01809e-01 4.16733e-01 +283 3.96461e+00 -1.07599e-01 4.11228e-01 +284 3.97860e+00 -1.13313e-01 4.05557e-01 +285 3.99259e+00 -1.18942e-01 3.99290e-01 +286 4.00657e+00 -1.24480e-01 3.92417e-01 +287 4.02056e+00 -1.29918e-01 3.84940e-01 +288 4.03455e+00 -1.35247e-01 3.76858e-01 +289 4.04854e+00 -1.40458e-01 3.68172e-01 +290 4.06253e+00 -1.45544e-01 3.58880e-01 +291 4.07651e+00 -1.50495e-01 3.48985e-01 +292 4.09050e+00 -1.55304e-01 3.38484e-01 +293 4.10449e+00 -1.59962e-01 3.27379e-01 +294 4.11848e+00 -1.64460e-01 3.15669e-01 +295 4.13246e+00 -1.68790e-01 3.03355e-01 +296 4.14645e+00 -1.72944e-01 2.90436e-01 +297 4.16044e+00 -1.76913e-01 2.76912e-01 +298 4.17443e+00 -1.80688e-01 2.62784e-01 +299 4.18842e+00 -1.84261e-01 2.48051e-01 +300 4.20240e+00 -1.87625e-01 2.32724e-01 +301 4.21639e+00 -1.90772e-01 2.17283e-01 +302 4.23038e+00 -1.93704e-01 2.01985e-01 +303 4.24437e+00 -1.96423e-01 1.86829e-01 +304 4.25836e+00 -1.98931e-01 1.71815e-01 +305 4.27234e+00 -2.01230e-01 1.56943e-01 +306 4.28633e+00 -2.03323e-01 1.42213e-01 +307 4.30032e+00 -2.05210e-01 1.27626e-01 +308 4.31431e+00 -2.06894e-01 1.13180e-01 +309 4.32830e+00 -2.08377e-01 9.88768e-02 +310 4.34228e+00 -2.09661e-01 8.47157e-02 +311 4.35627e+00 -2.10747e-01 7.06968e-02 +312 4.37026e+00 -2.11639e-01 5.68200e-02 +313 4.38425e+00 -2.12338e-01 4.30854e-02 +314 4.39824e+00 -2.12845e-01 2.94929e-02 +315 4.41222e+00 -2.13163e-01 1.60426e-02 +316 4.42621e+00 -2.13294e-01 2.73450e-03 +317 4.44020e+00 -2.13240e-01 -1.04284e-02 +318 4.45419e+00 -2.13004e-01 -2.34265e-02 +319 4.46818e+00 -2.12586e-01 -3.62567e-02 +320 4.48216e+00 -2.11990e-01 -4.89188e-02 +321 4.49615e+00 -2.11218e-01 -6.14128e-02 +322 4.51014e+00 -2.10273e-01 -7.37388e-02 +323 4.52413e+00 -2.09156e-01 -8.58968e-02 +324 4.53812e+00 -2.07870e-01 -9.78868e-02 +325 4.55210e+00 -2.06418e-01 -1.09709e-01 +326 4.56609e+00 -2.04802e-01 -1.21363e-01 +327 4.58008e+00 -2.03024e-01 -1.32848e-01 +328 4.59407e+00 -2.01086e-01 -1.44166e-01 +329 4.60806e+00 -1.98991e-01 -1.55316e-01 +330 4.62204e+00 -1.96742e-01 -1.66298e-01 +331 4.63603e+00 -1.94340e-01 -1.77111e-01 +332 4.65002e+00 -1.91788e-01 -1.87757e-01 +333 4.66401e+00 -1.89088e-01 -1.98235e-01 +334 4.67800e+00 -1.86243e-01 -2.08492e-01 +335 4.69198e+00 -1.83257e-01 -2.18424e-01 +336 4.70597e+00 -1.80134e-01 -2.28027e-01 +337 4.71996e+00 -1.76879e-01 -2.37302e-01 +338 4.73395e+00 -1.73497e-01 -2.46250e-01 +339 4.74794e+00 -1.69991e-01 -2.54869e-01 +340 4.76192e+00 -1.66368e-01 -2.63160e-01 +341 4.77591e+00 -1.62631e-01 -2.71122e-01 +342 4.78990e+00 -1.58785e-01 -2.78757e-01 +343 4.80389e+00 -1.54834e-01 -2.86063e-01 +344 4.81788e+00 -1.50783e-01 -2.93041e-01 +345 4.83186e+00 -1.46637e-01 -2.99691e-01 +346 4.84585e+00 -1.42401e-01 -3.06013e-01 +347 4.85984e+00 -1.38078e-01 -3.12006e-01 +348 4.87383e+00 -1.33674e-01 -3.17671e-01 +349 4.88782e+00 -1.29192e-01 -3.23008e-01 +350 4.90180e+00 -1.24639e-01 -3.28019e-01 +351 4.91579e+00 -1.20017e-01 -3.32802e-01 +352 4.92978e+00 -1.15329e-01 -3.37422e-01 +353 4.94377e+00 -1.10578e-01 -3.41876e-01 +354 4.95776e+00 -1.05765e-01 -3.46167e-01 +355 4.97174e+00 -1.00894e-01 -3.50292e-01 +356 4.98573e+00 -9.59664e-02 -3.54254e-01 +357 4.99972e+00 -9.09843e-02 -3.58050e-01 +358 5.01371e+00 -8.59503e-02 -3.61683e-01 +359 5.02770e+00 -8.08667e-02 -3.65150e-01 +360 5.04168e+00 -7.57357e-02 -3.68454e-01 +361 5.05567e+00 -7.05596e-02 -3.71592e-01 +362 5.06966e+00 -6.53408e-02 -3.74567e-01 +363 5.08365e+00 -6.00815e-02 -3.77377e-01 +364 5.09764e+00 -5.47841e-02 -3.80022e-01 +365 5.11162e+00 -4.94508e-02 -3.82503e-01 +366 5.12561e+00 -4.40840e-02 -3.84819e-01 +367 5.13960e+00 -3.86861e-02 -3.86857e-01 +368 5.15359e+00 -3.32669e-02 -3.87771e-01 +369 5.16758e+00 -2.78439e-02 -3.87387e-01 +370 5.18156e+00 -2.24354e-02 -3.85706e-01 +371 5.19555e+00 -1.70595e-02 -3.82729e-01 +372 5.20954e+00 -1.17343e-02 -3.78454e-01 +373 5.22353e+00 -6.47792e-03 -3.72882e-01 +374 5.23752e+00 -1.30859e-03 -3.66012e-01 +375 5.25150e+00 3.75557e-03 -3.57846e-01 +376 5.26549e+00 8.69644e-03 -3.48382e-01 +377 5.27948e+00 1.34959e-02 -3.37622e-01 +378 5.29347e+00 1.81357e-02 -3.25564e-01 +379 5.30745e+00 2.25978e-02 -3.12209e-01 +380 5.32144e+00 2.68640e-02 -2.97557e-01 +381 5.33543e+00 3.09161e-02 -2.81607e-01 +382 5.34942e+00 3.47361e-02 -2.64361e-01 +383 5.36341e+00 3.83058e-02 -2.45817e-01 +384 5.37739e+00 4.16089e-02 -2.26496e-01 +385 5.39138e+00 4.46444e-02 -2.07598e-01 +386 5.40537e+00 4.74189e-02 -1.89169e-01 +387 5.41936e+00 4.99388e-02 -1.71211e-01 +388 5.43335e+00 5.22108e-02 -1.53723e-01 +389 5.44733e+00 5.42415e-02 -1.36705e-01 +390 5.46132e+00 5.60375e-02 -1.20158e-01 +391 5.47531e+00 5.76053e-02 -1.04081e-01 +392 5.48930e+00 5.89514e-02 -8.84740e-02 +393 5.50329e+00 6.00826e-02 -7.33374e-02 +394 5.51727e+00 6.10053e-02 -5.86710e-02 +395 5.53126e+00 6.17262e-02 -4.44749e-02 +396 5.54525e+00 6.22517e-02 -3.07490e-02 +397 5.55924e+00 6.25886e-02 -1.74934e-02 +398 5.57323e+00 6.27433e-02 -4.70807e-03 +399 5.58721e+00 6.27225e-02 7.60702e-03 +400 5.60120e+00 6.25327e-02 1.94503e-02 +401 5.61519e+00 6.21817e-02 3.05831e-02 +402 5.62918e+00 6.16812e-02 4.08330e-02 +403 5.64317e+00 6.10435e-02 5.01999e-02 +404 5.65715e+00 6.02810e-02 5.86840e-02 +405 5.67114e+00 5.94059e-02 6.62851e-02 +406 5.68513e+00 5.84307e-02 7.30034e-02 +407 5.69912e+00 5.73677e-02 7.88387e-02 +408 5.71311e+00 5.62292e-02 8.37911e-02 +409 5.72709e+00 5.50277e-02 8.78606e-02 +410 5.74108e+00 5.37754e-02 9.10472e-02 +411 5.75507e+00 5.24846e-02 9.33509e-02 +412 5.76906e+00 5.11679e-02 9.47717e-02 +413 5.78305e+00 4.98374e-02 9.53096e-02 +414 5.79703e+00 4.85056e-02 9.49645e-02 +415 5.81102e+00 4.71848e-02 9.37366e-02 +416 5.82501e+00 4.58874e-02 9.16257e-02 +417 5.83900e+00 4.46255e-02 8.87199e-02 +418 5.85299e+00 4.34050e-02 8.58142e-02 +419 5.86697e+00 4.22238e-02 8.30983e-02 +420 5.88096e+00 4.10794e-02 8.05724e-02 +421 5.89495e+00 3.99689e-02 7.82364e-02 +422 5.90894e+00 3.88897e-02 7.60904e-02 +423 5.92293e+00 3.78393e-02 7.41343e-02 +424 5.93691e+00 3.68149e-02 7.23682e-02 +425 5.95090e+00 3.58138e-02 7.07920e-02 +426 5.96489e+00 3.48335e-02 6.94057e-02 +427 5.97888e+00 3.38712e-02 6.82094e-02 +428 5.99287e+00 3.29244e-02 6.72030e-02 +429 6.00685e+00 3.19903e-02 6.63865e-02 +430 6.02084e+00 3.10663e-02 6.57600e-02 +431 6.03483e+00 3.01497e-02 6.53234e-02 +432 6.04882e+00 2.92379e-02 6.50768e-02 +433 6.06281e+00 2.83282e-02 6.50201e-02 +434 6.07679e+00 2.74183e-02 6.50695e-02 +435 6.09078e+00 2.65085e-02 6.50011e-02 +436 6.10477e+00 2.56005e-02 6.48029e-02 +437 6.11876e+00 2.46961e-02 6.44747e-02 +438 6.13275e+00 2.37973e-02 6.40165e-02 +439 6.14673e+00 2.29058e-02 6.34285e-02 +440 6.16072e+00 2.20235e-02 6.27105e-02 +441 6.17471e+00 2.11520e-02 6.18626e-02 +442 6.18870e+00 2.02934e-02 6.08847e-02 +443 6.20269e+00 1.94493e-02 5.97769e-02 +444 6.21667e+00 1.86217e-02 5.85392e-02 +445 6.23066e+00 1.78123e-02 5.71716e-02 +446 6.24465e+00 1.70229e-02 5.56740e-02 +447 6.25864e+00 1.62553e-02 5.40465e-02 +448 6.27263e+00 1.55115e-02 5.22891e-02 +449 6.28661e+00 1.47931e-02 5.04017e-02 +450 6.30060e+00 1.41020e-02 4.83846e-02 +451 6.31459e+00 1.34396e-02 4.63409e-02 +452 6.32858e+00 1.28053e-02 4.43579e-02 +453 6.34257e+00 1.21984e-02 4.24357e-02 +454 6.35655e+00 1.16179e-02 4.05742e-02 +455 6.37054e+00 1.10630e-02 3.87735e-02 +456 6.38453e+00 1.05329e-02 3.70334e-02 +457 6.39852e+00 1.00266e-02 3.53541e-02 +458 6.41251e+00 9.54350e-03 3.37356e-02 +459 6.42649e+00 9.08258e-03 3.21778e-02 +460 6.44048e+00 8.64301e-03 3.06807e-02 +461 6.45447e+00 8.22397e-03 2.92443e-02 +462 6.46846e+00 7.82459e-03 2.78687e-02 +463 6.48244e+00 7.44403e-03 2.65539e-02 +464 6.49643e+00 7.08144e-03 2.52997e-02 +465 6.51042e+00 6.73597e-03 2.41063e-02 +466 6.52441e+00 6.40676e-03 2.29736e-02 +467 6.53840e+00 6.09297e-03 2.19024e-02 +468 6.55238e+00 5.79370e-03 2.08997e-02 +469 6.56637e+00 5.50795e-03 1.99677e-02 +470 6.58036e+00 5.23475e-03 1.91064e-02 +471 6.59435e+00 4.97310e-03 1.83158e-02 +472 6.60834e+00 4.72202e-03 1.75958e-02 +473 6.62232e+00 4.48051e-03 1.69465e-02 +474 6.63631e+00 4.24760e-03 1.63679e-02 +475 6.65030e+00 4.02228e-03 1.58599e-02 +476 6.66429e+00 3.80357e-03 1.54226e-02 +477 6.67828e+00 3.59048e-03 1.50560e-02 +478 6.69226e+00 3.38203e-03 1.47600e-02 +479 6.70625e+00 3.17723e-03 1.45348e-02 +480 6.72024e+00 2.97508e-03 1.43801e-02 +481 6.73423e+00 2.77460e-03 1.42962e-02 +482 6.74822e+00 2.57480e-03 1.42829e-02 +483 6.76220e+00 2.37469e-03 1.43403e-02 +484 6.77619e+00 2.17343e-03 1.44248e-02 +485 6.79018e+00 1.97168e-03 1.44017e-02 +486 6.80417e+00 1.77107e-03 1.42615e-02 +487 6.81816e+00 1.57325e-03 1.40041e-02 +488 6.83214e+00 1.37984e-03 1.36297e-02 +489 6.84613e+00 1.19249e-03 1.31381e-02 +490 6.86012e+00 1.01284e-03 1.25294e-02 +491 6.87411e+00 8.42516e-04 1.18035e-02 +492 6.88810e+00 6.83168e-04 1.09605e-02 +493 6.90208e+00 5.36431e-04 1.00004e-02 +494 6.91607e+00 4.03943e-04 8.92318e-03 +495 6.93006e+00 2.87343e-04 7.72880e-03 +496 6.94405e+00 1.88268e-04 6.41730e-03 +497 6.95804e+00 1.08359e-04 4.98867e-03 +498 6.97202e+00 4.92516e-05 3.44291e-03 +499 6.98601e+00 1.25860e-05 1.78002e-03 +500 7.00000e+00 0.00000e+00 0.00000e+00 + + + +NonBondNull +N 500 R 0.0000000001 10.0 + +1 0.0000e+00 0.0000e+00 0.0000e+00 +2 2.0040e-02 0.0000e+00 0.0000e+00 +3 4.0080e-02 0.0000e+00 0.0000e+00 +4 6.0120e-02 0.0000e+00 0.0000e+00 +5 8.0160e-02 0.0000e+00 0.0000e+00 +6 1.0020e-01 0.0000e+00 0.0000e+00 +7 1.2024e-01 0.0000e+00 0.0000e+00 +8 1.4028e-01 0.0000e+00 0.0000e+00 +9 1.6032e-01 0.0000e+00 0.0000e+00 +10 1.8036e-01 0.0000e+00 0.0000e+00 +11 2.0040e-01 0.0000e+00 0.0000e+00 +12 2.2044e-01 0.0000e+00 0.0000e+00 +13 2.4048e-01 0.0000e+00 0.0000e+00 +14 2.6052e-01 0.0000e+00 0.0000e+00 +15 2.8056e-01 0.0000e+00 0.0000e+00 +16 3.0060e-01 0.0000e+00 0.0000e+00 +17 3.2064e-01 0.0000e+00 0.0000e+00 +18 3.4068e-01 0.0000e+00 0.0000e+00 +19 3.6072e-01 0.0000e+00 0.0000e+00 +20 3.8076e-01 0.0000e+00 0.0000e+00 +21 4.0080e-01 0.0000e+00 0.0000e+00 +22 4.2084e-01 0.0000e+00 0.0000e+00 +23 4.4088e-01 0.0000e+00 0.0000e+00 +24 4.6092e-01 0.0000e+00 0.0000e+00 +25 4.8096e-01 0.0000e+00 0.0000e+00 +26 5.0100e-01 0.0000e+00 0.0000e+00 +27 5.2104e-01 0.0000e+00 0.0000e+00 +28 5.4108e-01 0.0000e+00 0.0000e+00 +29 5.6112e-01 0.0000e+00 0.0000e+00 +30 5.8116e-01 0.0000e+00 0.0000e+00 +31 6.0120e-01 0.0000e+00 0.0000e+00 +32 6.2124e-01 0.0000e+00 0.0000e+00 +33 6.4128e-01 0.0000e+00 0.0000e+00 +34 6.6132e-01 0.0000e+00 0.0000e+00 +35 6.8136e-01 0.0000e+00 0.0000e+00 +36 7.0140e-01 0.0000e+00 0.0000e+00 +37 7.2144e-01 0.0000e+00 0.0000e+00 +38 7.4148e-01 0.0000e+00 0.0000e+00 +39 7.6152e-01 0.0000e+00 0.0000e+00 +40 7.8156e-01 0.0000e+00 0.0000e+00 +41 8.0160e-01 0.0000e+00 0.0000e+00 +42 8.2164e-01 0.0000e+00 0.0000e+00 +43 8.4168e-01 0.0000e+00 0.0000e+00 +44 8.6172e-01 0.0000e+00 0.0000e+00 +45 8.8176e-01 0.0000e+00 0.0000e+00 +46 9.0180e-01 0.0000e+00 0.0000e+00 +47 9.2184e-01 0.0000e+00 0.0000e+00 +48 9.4188e-01 0.0000e+00 0.0000e+00 +49 9.6192e-01 0.0000e+00 0.0000e+00 +50 9.8196e-01 0.0000e+00 0.0000e+00 +51 1.0020e+00 0.0000e+00 0.0000e+00 +52 1.0220e+00 0.0000e+00 0.0000e+00 +53 1.0421e+00 0.0000e+00 0.0000e+00 +54 1.0621e+00 0.0000e+00 0.0000e+00 +55 1.0822e+00 0.0000e+00 0.0000e+00 +56 1.1022e+00 0.0000e+00 0.0000e+00 +57 1.1222e+00 0.0000e+00 0.0000e+00 +58 1.1423e+00 0.0000e+00 0.0000e+00 +59 1.1623e+00 0.0000e+00 0.0000e+00 +60 1.1824e+00 0.0000e+00 0.0000e+00 +61 1.2024e+00 0.0000e+00 0.0000e+00 +62 1.2224e+00 0.0000e+00 0.0000e+00 +63 1.2425e+00 0.0000e+00 0.0000e+00 +64 1.2625e+00 0.0000e+00 0.0000e+00 +65 1.2826e+00 0.0000e+00 0.0000e+00 +66 1.3026e+00 0.0000e+00 0.0000e+00 +67 1.3226e+00 0.0000e+00 0.0000e+00 +68 1.3427e+00 0.0000e+00 0.0000e+00 +69 1.3627e+00 0.0000e+00 0.0000e+00 +70 1.3828e+00 0.0000e+00 0.0000e+00 +71 1.4028e+00 0.0000e+00 0.0000e+00 +72 1.4228e+00 0.0000e+00 0.0000e+00 +73 1.4429e+00 0.0000e+00 0.0000e+00 +74 1.4629e+00 0.0000e+00 0.0000e+00 +75 1.4830e+00 0.0000e+00 0.0000e+00 +76 1.5030e+00 0.0000e+00 0.0000e+00 +77 1.5230e+00 0.0000e+00 0.0000e+00 +78 1.5431e+00 0.0000e+00 0.0000e+00 +79 1.5631e+00 0.0000e+00 0.0000e+00 +80 1.5832e+00 0.0000e+00 0.0000e+00 +81 1.6032e+00 0.0000e+00 0.0000e+00 +82 1.6232e+00 0.0000e+00 0.0000e+00 +83 1.6433e+00 0.0000e+00 0.0000e+00 +84 1.6633e+00 0.0000e+00 0.0000e+00 +85 1.6834e+00 0.0000e+00 0.0000e+00 +86 1.7034e+00 0.0000e+00 0.0000e+00 +87 1.7234e+00 0.0000e+00 0.0000e+00 +88 1.7435e+00 0.0000e+00 0.0000e+00 +89 1.7635e+00 0.0000e+00 0.0000e+00 +90 1.7836e+00 0.0000e+00 0.0000e+00 +91 1.8036e+00 0.0000e+00 0.0000e+00 +92 1.8236e+00 0.0000e+00 0.0000e+00 +93 1.8437e+00 0.0000e+00 0.0000e+00 +94 1.8637e+00 0.0000e+00 0.0000e+00 +95 1.8838e+00 0.0000e+00 0.0000e+00 +96 1.9038e+00 0.0000e+00 0.0000e+00 +97 1.9238e+00 0.0000e+00 0.0000e+00 +98 1.9439e+00 0.0000e+00 0.0000e+00 +99 1.9639e+00 0.0000e+00 0.0000e+00 +100 1.9840e+00 0.0000e+00 0.0000e+00 +101 2.0040e+00 0.0000e+00 0.0000e+00 +102 2.0240e+00 0.0000e+00 0.0000e+00 +103 2.0441e+00 0.0000e+00 0.0000e+00 +104 2.0641e+00 0.0000e+00 0.0000e+00 +105 2.0842e+00 0.0000e+00 0.0000e+00 +106 2.1042e+00 0.0000e+00 0.0000e+00 +107 2.1242e+00 0.0000e+00 0.0000e+00 +108 2.1443e+00 0.0000e+00 0.0000e+00 +109 2.1643e+00 0.0000e+00 0.0000e+00 +110 2.1844e+00 0.0000e+00 0.0000e+00 +111 2.2044e+00 0.0000e+00 0.0000e+00 +112 2.2244e+00 0.0000e+00 0.0000e+00 +113 2.2445e+00 0.0000e+00 0.0000e+00 +114 2.2645e+00 0.0000e+00 0.0000e+00 +115 2.2846e+00 0.0000e+00 0.0000e+00 +116 2.3046e+00 0.0000e+00 0.0000e+00 +117 2.3246e+00 0.0000e+00 0.0000e+00 +118 2.3447e+00 0.0000e+00 0.0000e+00 +119 2.3647e+00 0.0000e+00 0.0000e+00 +120 2.3848e+00 0.0000e+00 0.0000e+00 +121 2.4048e+00 0.0000e+00 0.0000e+00 +122 2.4248e+00 0.0000e+00 0.0000e+00 +123 2.4449e+00 0.0000e+00 0.0000e+00 +124 2.4649e+00 0.0000e+00 0.0000e+00 +125 2.4850e+00 0.0000e+00 0.0000e+00 +126 2.5050e+00 0.0000e+00 0.0000e+00 +127 2.5251e+00 0.0000e+00 0.0000e+00 +128 2.5451e+00 0.0000e+00 0.0000e+00 +129 2.5651e+00 0.0000e+00 0.0000e+00 +130 2.5852e+00 0.0000e+00 0.0000e+00 +131 2.6052e+00 0.0000e+00 0.0000e+00 +132 2.6253e+00 0.0000e+00 0.0000e+00 +133 2.6453e+00 0.0000e+00 0.0000e+00 +134 2.6653e+00 0.0000e+00 0.0000e+00 +135 2.6854e+00 0.0000e+00 0.0000e+00 +136 2.7054e+00 0.0000e+00 0.0000e+00 +137 2.7255e+00 0.0000e+00 0.0000e+00 +138 2.7455e+00 0.0000e+00 0.0000e+00 +139 2.7655e+00 0.0000e+00 0.0000e+00 +140 2.7856e+00 0.0000e+00 0.0000e+00 +141 2.8056e+00 0.0000e+00 0.0000e+00 +142 2.8257e+00 0.0000e+00 0.0000e+00 +143 2.8457e+00 0.0000e+00 0.0000e+00 +144 2.8657e+00 0.0000e+00 0.0000e+00 +145 2.8858e+00 0.0000e+00 0.0000e+00 +146 2.9058e+00 0.0000e+00 0.0000e+00 +147 2.9259e+00 0.0000e+00 0.0000e+00 +148 2.9459e+00 0.0000e+00 0.0000e+00 +149 2.9659e+00 0.0000e+00 0.0000e+00 +150 2.9860e+00 0.0000e+00 0.0000e+00 +151 3.0060e+00 0.0000e+00 0.0000e+00 +152 3.0261e+00 0.0000e+00 0.0000e+00 +153 3.0461e+00 0.0000e+00 0.0000e+00 +154 3.0661e+00 0.0000e+00 0.0000e+00 +155 3.0862e+00 0.0000e+00 0.0000e+00 +156 3.1062e+00 0.0000e+00 0.0000e+00 +157 3.1263e+00 0.0000e+00 0.0000e+00 +158 3.1463e+00 0.0000e+00 0.0000e+00 +159 3.1663e+00 0.0000e+00 0.0000e+00 +160 3.1864e+00 0.0000e+00 0.0000e+00 +161 3.2064e+00 0.0000e+00 0.0000e+00 +162 3.2265e+00 0.0000e+00 0.0000e+00 +163 3.2465e+00 0.0000e+00 0.0000e+00 +164 3.2665e+00 0.0000e+00 0.0000e+00 +165 3.2866e+00 0.0000e+00 0.0000e+00 +166 3.3066e+00 0.0000e+00 0.0000e+00 +167 3.3267e+00 0.0000e+00 0.0000e+00 +168 3.3467e+00 0.0000e+00 0.0000e+00 +169 3.3667e+00 0.0000e+00 0.0000e+00 +170 3.3868e+00 0.0000e+00 0.0000e+00 +171 3.4068e+00 0.0000e+00 0.0000e+00 +172 3.4269e+00 0.0000e+00 0.0000e+00 +173 3.4469e+00 0.0000e+00 0.0000e+00 +174 3.4669e+00 0.0000e+00 0.0000e+00 +175 3.4870e+00 0.0000e+00 0.0000e+00 +176 3.5070e+00 0.0000e+00 0.0000e+00 +177 3.5271e+00 0.0000e+00 0.0000e+00 +178 3.5471e+00 0.0000e+00 0.0000e+00 +179 3.5671e+00 0.0000e+00 0.0000e+00 +180 3.5872e+00 0.0000e+00 0.0000e+00 +181 3.6072e+00 0.0000e+00 0.0000e+00 +182 3.6273e+00 0.0000e+00 0.0000e+00 +183 3.6473e+00 0.0000e+00 0.0000e+00 +184 3.6673e+00 0.0000e+00 0.0000e+00 +185 3.6874e+00 0.0000e+00 0.0000e+00 +186 3.7074e+00 0.0000e+00 0.0000e+00 +187 3.7275e+00 0.0000e+00 0.0000e+00 +188 3.7475e+00 0.0000e+00 0.0000e+00 +189 3.7675e+00 0.0000e+00 0.0000e+00 +190 3.7876e+00 0.0000e+00 0.0000e+00 +191 3.8076e+00 0.0000e+00 0.0000e+00 +192 3.8277e+00 0.0000e+00 0.0000e+00 +193 3.8477e+00 0.0000e+00 0.0000e+00 +194 3.8677e+00 0.0000e+00 0.0000e+00 +195 3.8878e+00 0.0000e+00 0.0000e+00 +196 3.9078e+00 0.0000e+00 0.0000e+00 +197 3.9279e+00 0.0000e+00 0.0000e+00 +198 3.9479e+00 0.0000e+00 0.0000e+00 +199 3.9679e+00 0.0000e+00 0.0000e+00 +200 3.9880e+00 0.0000e+00 0.0000e+00 +201 4.0080e+00 0.0000e+00 0.0000e+00 +202 4.0281e+00 0.0000e+00 0.0000e+00 +203 4.0481e+00 0.0000e+00 0.0000e+00 +204 4.0681e+00 0.0000e+00 0.0000e+00 +205 4.0882e+00 0.0000e+00 0.0000e+00 +206 4.1082e+00 0.0000e+00 0.0000e+00 +207 4.1283e+00 0.0000e+00 0.0000e+00 +208 4.1483e+00 0.0000e+00 0.0000e+00 +209 4.1683e+00 0.0000e+00 0.0000e+00 +210 4.1884e+00 0.0000e+00 0.0000e+00 +211 4.2084e+00 0.0000e+00 0.0000e+00 +212 4.2285e+00 0.0000e+00 0.0000e+00 +213 4.2485e+00 0.0000e+00 0.0000e+00 +214 4.2685e+00 0.0000e+00 0.0000e+00 +215 4.2886e+00 0.0000e+00 0.0000e+00 +216 4.3086e+00 0.0000e+00 0.0000e+00 +217 4.3287e+00 0.0000e+00 0.0000e+00 +218 4.3487e+00 0.0000e+00 0.0000e+00 +219 4.3687e+00 0.0000e+00 0.0000e+00 +220 4.3888e+00 0.0000e+00 0.0000e+00 +221 4.4088e+00 0.0000e+00 0.0000e+00 +222 4.4289e+00 0.0000e+00 0.0000e+00 +223 4.4489e+00 0.0000e+00 0.0000e+00 +224 4.4689e+00 0.0000e+00 0.0000e+00 +225 4.4890e+00 0.0000e+00 0.0000e+00 +226 4.5090e+00 0.0000e+00 0.0000e+00 +227 4.5291e+00 0.0000e+00 0.0000e+00 +228 4.5491e+00 0.0000e+00 0.0000e+00 +229 4.5691e+00 0.0000e+00 0.0000e+00 +230 4.5892e+00 0.0000e+00 0.0000e+00 +231 4.6092e+00 0.0000e+00 0.0000e+00 +232 4.6293e+00 0.0000e+00 0.0000e+00 +233 4.6493e+00 0.0000e+00 0.0000e+00 +234 4.6693e+00 0.0000e+00 0.0000e+00 +235 4.6894e+00 0.0000e+00 0.0000e+00 +236 4.7094e+00 0.0000e+00 0.0000e+00 +237 4.7295e+00 0.0000e+00 0.0000e+00 +238 4.7495e+00 0.0000e+00 0.0000e+00 +239 4.7695e+00 0.0000e+00 0.0000e+00 +240 4.7896e+00 0.0000e+00 0.0000e+00 +241 4.8096e+00 0.0000e+00 0.0000e+00 +242 4.8297e+00 0.0000e+00 0.0000e+00 +243 4.8497e+00 0.0000e+00 0.0000e+00 +244 4.8697e+00 0.0000e+00 0.0000e+00 +245 4.8898e+00 0.0000e+00 0.0000e+00 +246 4.9098e+00 0.0000e+00 0.0000e+00 +247 4.9299e+00 0.0000e+00 0.0000e+00 +248 4.9499e+00 0.0000e+00 0.0000e+00 +249 4.9699e+00 0.0000e+00 0.0000e+00 +250 4.9900e+00 0.0000e+00 0.0000e+00 +251 5.0100e+00 0.0000e+00 0.0000e+00 +252 5.0301e+00 0.0000e+00 0.0000e+00 +253 5.0501e+00 0.0000e+00 0.0000e+00 +254 5.0701e+00 0.0000e+00 0.0000e+00 +255 5.0902e+00 0.0000e+00 0.0000e+00 +256 5.1102e+00 0.0000e+00 0.0000e+00 +257 5.1303e+00 0.0000e+00 0.0000e+00 +258 5.1503e+00 0.0000e+00 0.0000e+00 +259 5.1703e+00 0.0000e+00 0.0000e+00 +260 5.1904e+00 0.0000e+00 0.0000e+00 +261 5.2104e+00 0.0000e+00 0.0000e+00 +262 5.2305e+00 0.0000e+00 0.0000e+00 +263 5.2505e+00 0.0000e+00 0.0000e+00 +264 5.2705e+00 0.0000e+00 0.0000e+00 +265 5.2906e+00 0.0000e+00 0.0000e+00 +266 5.3106e+00 0.0000e+00 0.0000e+00 +267 5.3307e+00 0.0000e+00 0.0000e+00 +268 5.3507e+00 0.0000e+00 0.0000e+00 +269 5.3707e+00 0.0000e+00 0.0000e+00 +270 5.3908e+00 0.0000e+00 0.0000e+00 +271 5.4108e+00 0.0000e+00 0.0000e+00 +272 5.4309e+00 0.0000e+00 0.0000e+00 +273 5.4509e+00 0.0000e+00 0.0000e+00 +274 5.4709e+00 0.0000e+00 0.0000e+00 +275 5.4910e+00 0.0000e+00 0.0000e+00 +276 5.5110e+00 0.0000e+00 0.0000e+00 +277 5.5311e+00 0.0000e+00 0.0000e+00 +278 5.5511e+00 0.0000e+00 0.0000e+00 +279 5.5711e+00 0.0000e+00 0.0000e+00 +280 5.5912e+00 0.0000e+00 0.0000e+00 +281 5.6112e+00 0.0000e+00 0.0000e+00 +282 5.6313e+00 0.0000e+00 0.0000e+00 +283 5.6513e+00 0.0000e+00 0.0000e+00 +284 5.6713e+00 0.0000e+00 0.0000e+00 +285 5.6914e+00 0.0000e+00 0.0000e+00 +286 5.7114e+00 0.0000e+00 0.0000e+00 +287 5.7315e+00 0.0000e+00 0.0000e+00 +288 5.7515e+00 0.0000e+00 0.0000e+00 +289 5.7715e+00 0.0000e+00 0.0000e+00 +290 5.7916e+00 0.0000e+00 0.0000e+00 +291 5.8116e+00 0.0000e+00 0.0000e+00 +292 5.8317e+00 0.0000e+00 0.0000e+00 +293 5.8517e+00 0.0000e+00 0.0000e+00 +294 5.8717e+00 0.0000e+00 0.0000e+00 +295 5.8918e+00 0.0000e+00 0.0000e+00 +296 5.9118e+00 0.0000e+00 0.0000e+00 +297 5.9319e+00 0.0000e+00 0.0000e+00 +298 5.9519e+00 0.0000e+00 0.0000e+00 +299 5.9719e+00 0.0000e+00 0.0000e+00 +300 5.9920e+00 0.0000e+00 0.0000e+00 +301 6.0120e+00 0.0000e+00 0.0000e+00 +302 6.0321e+00 0.0000e+00 0.0000e+00 +303 6.0521e+00 0.0000e+00 0.0000e+00 +304 6.0721e+00 0.0000e+00 0.0000e+00 +305 6.0922e+00 0.0000e+00 0.0000e+00 +306 6.1122e+00 0.0000e+00 0.0000e+00 +307 6.1323e+00 0.0000e+00 0.0000e+00 +308 6.1523e+00 0.0000e+00 0.0000e+00 +309 6.1723e+00 0.0000e+00 0.0000e+00 +310 6.1924e+00 0.0000e+00 0.0000e+00 +311 6.2124e+00 0.0000e+00 0.0000e+00 +312 6.2325e+00 0.0000e+00 0.0000e+00 +313 6.2525e+00 0.0000e+00 0.0000e+00 +314 6.2725e+00 0.0000e+00 0.0000e+00 +315 6.2926e+00 0.0000e+00 0.0000e+00 +316 6.3126e+00 0.0000e+00 0.0000e+00 +317 6.3327e+00 0.0000e+00 0.0000e+00 +318 6.3527e+00 0.0000e+00 0.0000e+00 +319 6.3727e+00 0.0000e+00 0.0000e+00 +320 6.3928e+00 0.0000e+00 0.0000e+00 +321 6.4128e+00 0.0000e+00 0.0000e+00 +322 6.4329e+00 0.0000e+00 0.0000e+00 +323 6.4529e+00 0.0000e+00 0.0000e+00 +324 6.4729e+00 0.0000e+00 0.0000e+00 +325 6.4930e+00 0.0000e+00 0.0000e+00 +326 6.5130e+00 0.0000e+00 0.0000e+00 +327 6.5331e+00 0.0000e+00 0.0000e+00 +328 6.5531e+00 0.0000e+00 0.0000e+00 +329 6.5731e+00 0.0000e+00 0.0000e+00 +330 6.5932e+00 0.0000e+00 0.0000e+00 +331 6.6132e+00 0.0000e+00 0.0000e+00 +332 6.6333e+00 0.0000e+00 0.0000e+00 +333 6.6533e+00 0.0000e+00 0.0000e+00 +334 6.6733e+00 0.0000e+00 0.0000e+00 +335 6.6934e+00 0.0000e+00 0.0000e+00 +336 6.7134e+00 0.0000e+00 0.0000e+00 +337 6.7335e+00 0.0000e+00 0.0000e+00 +338 6.7535e+00 0.0000e+00 0.0000e+00 +339 6.7735e+00 0.0000e+00 0.0000e+00 +340 6.7936e+00 0.0000e+00 0.0000e+00 +341 6.8136e+00 0.0000e+00 0.0000e+00 +342 6.8337e+00 0.0000e+00 0.0000e+00 +343 6.8537e+00 0.0000e+00 0.0000e+00 +344 6.8737e+00 0.0000e+00 0.0000e+00 +345 6.8938e+00 0.0000e+00 0.0000e+00 +346 6.9138e+00 0.0000e+00 0.0000e+00 +347 6.9339e+00 0.0000e+00 0.0000e+00 +348 6.9539e+00 0.0000e+00 0.0000e+00 +349 6.9739e+00 0.0000e+00 0.0000e+00 +350 6.9940e+00 0.0000e+00 0.0000e+00 +351 7.0140e+00 0.0000e+00 0.0000e+00 +352 7.0341e+00 0.0000e+00 0.0000e+00 +353 7.0541e+00 0.0000e+00 0.0000e+00 +354 7.0741e+00 0.0000e+00 0.0000e+00 +355 7.0942e+00 0.0000e+00 0.0000e+00 +356 7.1142e+00 0.0000e+00 0.0000e+00 +357 7.1343e+00 0.0000e+00 0.0000e+00 +358 7.1543e+00 0.0000e+00 0.0000e+00 +359 7.1743e+00 0.0000e+00 0.0000e+00 +360 7.1944e+00 0.0000e+00 0.0000e+00 +361 7.2144e+00 0.0000e+00 0.0000e+00 +362 7.2345e+00 0.0000e+00 0.0000e+00 +363 7.2545e+00 0.0000e+00 0.0000e+00 +364 7.2745e+00 0.0000e+00 0.0000e+00 +365 7.2946e+00 0.0000e+00 0.0000e+00 +366 7.3146e+00 0.0000e+00 0.0000e+00 +367 7.3347e+00 0.0000e+00 0.0000e+00 +368 7.3547e+00 0.0000e+00 0.0000e+00 +369 7.3747e+00 0.0000e+00 0.0000e+00 +370 7.3948e+00 0.0000e+00 0.0000e+00 +371 7.4148e+00 0.0000e+00 0.0000e+00 +372 7.4349e+00 0.0000e+00 0.0000e+00 +373 7.4549e+00 0.0000e+00 0.0000e+00 +374 7.4749e+00 0.0000e+00 0.0000e+00 +375 7.4950e+00 0.0000e+00 0.0000e+00 +376 7.5150e+00 0.0000e+00 0.0000e+00 +377 7.5351e+00 0.0000e+00 0.0000e+00 +378 7.5551e+00 0.0000e+00 0.0000e+00 +379 7.5752e+00 0.0000e+00 0.0000e+00 +380 7.5952e+00 0.0000e+00 0.0000e+00 +381 7.6152e+00 0.0000e+00 0.0000e+00 +382 7.6353e+00 0.0000e+00 0.0000e+00 +383 7.6553e+00 0.0000e+00 0.0000e+00 +384 7.6754e+00 0.0000e+00 0.0000e+00 +385 7.6954e+00 0.0000e+00 0.0000e+00 +386 7.7154e+00 0.0000e+00 0.0000e+00 +387 7.7355e+00 0.0000e+00 0.0000e+00 +388 7.7555e+00 0.0000e+00 0.0000e+00 +389 7.7756e+00 0.0000e+00 0.0000e+00 +390 7.7956e+00 0.0000e+00 0.0000e+00 +391 7.8156e+00 0.0000e+00 0.0000e+00 +392 7.8357e+00 0.0000e+00 0.0000e+00 +393 7.8557e+00 0.0000e+00 0.0000e+00 +394 7.8758e+00 0.0000e+00 0.0000e+00 +395 7.8958e+00 0.0000e+00 0.0000e+00 +396 7.9158e+00 0.0000e+00 0.0000e+00 +397 7.9359e+00 0.0000e+00 0.0000e+00 +398 7.9559e+00 0.0000e+00 0.0000e+00 +399 7.9760e+00 0.0000e+00 0.0000e+00 +400 7.9960e+00 0.0000e+00 0.0000e+00 +401 8.0160e+00 0.0000e+00 0.0000e+00 +402 8.0361e+00 0.0000e+00 0.0000e+00 +403 8.0561e+00 0.0000e+00 0.0000e+00 +404 8.0762e+00 0.0000e+00 0.0000e+00 +405 8.0962e+00 0.0000e+00 0.0000e+00 +406 8.1162e+00 0.0000e+00 0.0000e+00 +407 8.1363e+00 0.0000e+00 0.0000e+00 +408 8.1563e+00 0.0000e+00 0.0000e+00 +409 8.1764e+00 0.0000e+00 0.0000e+00 +410 8.1964e+00 0.0000e+00 0.0000e+00 +411 8.2164e+00 0.0000e+00 0.0000e+00 +412 8.2365e+00 0.0000e+00 0.0000e+00 +413 8.2565e+00 0.0000e+00 0.0000e+00 +414 8.2766e+00 0.0000e+00 0.0000e+00 +415 8.2966e+00 0.0000e+00 0.0000e+00 +416 8.3166e+00 0.0000e+00 0.0000e+00 +417 8.3367e+00 0.0000e+00 0.0000e+00 +418 8.3567e+00 0.0000e+00 0.0000e+00 +419 8.3768e+00 0.0000e+00 0.0000e+00 +420 8.3968e+00 0.0000e+00 0.0000e+00 +421 8.4168e+00 0.0000e+00 0.0000e+00 +422 8.4369e+00 0.0000e+00 0.0000e+00 +423 8.4569e+00 0.0000e+00 0.0000e+00 +424 8.4770e+00 0.0000e+00 0.0000e+00 +425 8.4970e+00 0.0000e+00 0.0000e+00 +426 8.5170e+00 0.0000e+00 0.0000e+00 +427 8.5371e+00 0.0000e+00 0.0000e+00 +428 8.5571e+00 0.0000e+00 0.0000e+00 +429 8.5772e+00 0.0000e+00 0.0000e+00 +430 8.5972e+00 0.0000e+00 0.0000e+00 +431 8.6172e+00 0.0000e+00 0.0000e+00 +432 8.6373e+00 0.0000e+00 0.0000e+00 +433 8.6573e+00 0.0000e+00 0.0000e+00 +434 8.6774e+00 0.0000e+00 0.0000e+00 +435 8.6974e+00 0.0000e+00 0.0000e+00 +436 8.7174e+00 0.0000e+00 0.0000e+00 +437 8.7375e+00 0.0000e+00 0.0000e+00 +438 8.7575e+00 0.0000e+00 0.0000e+00 +439 8.7776e+00 0.0000e+00 0.0000e+00 +440 8.7976e+00 0.0000e+00 0.0000e+00 +441 8.8176e+00 0.0000e+00 0.0000e+00 +442 8.8377e+00 0.0000e+00 0.0000e+00 +443 8.8577e+00 0.0000e+00 0.0000e+00 +444 8.8778e+00 0.0000e+00 0.0000e+00 +445 8.8978e+00 0.0000e+00 0.0000e+00 +446 8.9178e+00 0.0000e+00 0.0000e+00 +447 8.9379e+00 0.0000e+00 0.0000e+00 +448 8.9579e+00 0.0000e+00 0.0000e+00 +449 8.9780e+00 0.0000e+00 0.0000e+00 +450 8.9980e+00 0.0000e+00 0.0000e+00 +451 9.0180e+00 0.0000e+00 0.0000e+00 +452 9.0381e+00 0.0000e+00 0.0000e+00 +453 9.0581e+00 0.0000e+00 0.0000e+00 +454 9.0782e+00 0.0000e+00 0.0000e+00 +455 9.0982e+00 0.0000e+00 0.0000e+00 +456 9.1182e+00 0.0000e+00 0.0000e+00 +457 9.1383e+00 0.0000e+00 0.0000e+00 +458 9.1583e+00 0.0000e+00 0.0000e+00 +459 9.1784e+00 0.0000e+00 0.0000e+00 +460 9.1984e+00 0.0000e+00 0.0000e+00 +461 9.2184e+00 0.0000e+00 0.0000e+00 +462 9.2385e+00 0.0000e+00 0.0000e+00 +463 9.2585e+00 0.0000e+00 0.0000e+00 +464 9.2786e+00 0.0000e+00 0.0000e+00 +465 9.2986e+00 0.0000e+00 0.0000e+00 +466 9.3186e+00 0.0000e+00 0.0000e+00 +467 9.3387e+00 0.0000e+00 0.0000e+00 +468 9.3587e+00 0.0000e+00 0.0000e+00 +469 9.3788e+00 0.0000e+00 0.0000e+00 +470 9.3988e+00 0.0000e+00 0.0000e+00 +471 9.4188e+00 0.0000e+00 0.0000e+00 +472 9.4389e+00 0.0000e+00 0.0000e+00 +473 9.4589e+00 0.0000e+00 0.0000e+00 +474 9.4790e+00 0.0000e+00 0.0000e+00 +475 9.4990e+00 0.0000e+00 0.0000e+00 +476 9.5190e+00 0.0000e+00 0.0000e+00 +477 9.5391e+00 0.0000e+00 0.0000e+00 +478 9.5591e+00 0.0000e+00 0.0000e+00 +479 9.5792e+00 0.0000e+00 0.0000e+00 +480 9.5992e+00 0.0000e+00 0.0000e+00 +481 9.6192e+00 0.0000e+00 0.0000e+00 +482 9.6393e+00 0.0000e+00 0.0000e+00 +483 9.6593e+00 0.0000e+00 0.0000e+00 +484 9.6794e+00 0.0000e+00 0.0000e+00 +485 9.6994e+00 0.0000e+00 0.0000e+00 +486 9.7194e+00 0.0000e+00 0.0000e+00 +487 9.7395e+00 0.0000e+00 0.0000e+00 +488 9.7595e+00 0.0000e+00 0.0000e+00 +489 9.7796e+00 0.0000e+00 0.0000e+00 +490 9.7996e+00 0.0000e+00 0.0000e+00 +491 9.8196e+00 0.0000e+00 0.0000e+00 +492 9.8397e+00 0.0000e+00 0.0000e+00 +493 9.8597e+00 0.0000e+00 0.0000e+00 +494 9.8798e+00 0.0000e+00 0.0000e+00 +495 9.8998e+00 0.0000e+00 0.0000e+00 +496 9.9198e+00 0.0000e+00 0.0000e+00 +497 9.9399e+00 0.0000e+00 0.0000e+00 +498 9.9599e+00 0.0000e+00 0.0000e+00 +499 9.9800e+00 0.0000e+00 0.0000e+00 +500 1.0000e+01 0.0000e+00 0.0000e+00 + + diff --git a/examples/USER/misc/local_density/benzene_water/log.04Sep19.g++.1 b/examples/USER/misc/local_density/benzene_water/log.04Sep19.g++.1 new file mode 100644 index 0000000000..928906edbd --- /dev/null +++ b/examples/USER/misc/local_density/benzene_water/log.04Sep19.g++.1 @@ -0,0 +1,267 @@ +LAMMPS (7 Aug 2019) +# LAMMPS input file for 26.5% benzene mole fraction solution +# with 380 benzene and 1000 water molecules, +# using all possible local density potentials +# between benzene and water +# +# Author: Tanmoy Sanyal, Shell Group, UC Santa Barbara +# +# Refer: Sanyal and Shell, JPC-B, 2018, 122 (21), 5678-5693 + + + +# Initialize simulation box +dimension 3 +boundary p p p +units real +atom_style molecular + +# Set potential styles +pair_style hybrid/overlay table spline 500 local/density + +# Read molecule data and set initial velocities +read_data benzene_water.data + orthogonal box = (-12.865 -12.865 -64.829) to (12.865 12.865 64.829) + 1 by 1 by 8 MPI processor grid + reading atoms ... + 1380 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000566959 secs + read_data CPU = 0.00661397 secs +velocity all create 3.0000e+02 16611 rot yes dist gaussian + +# Assign potentials +pair_coeff 1 1 table benzene_water.pair.table PairBB +WARNING: 33 of 500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:483) +WARNING: 150 of 500 distance values in table with relative error + over 1e-06 to re-computed values (../pair_table.cpp:492) +pair_coeff 1 2 table benzene_water.pair.table PairWW +WARNING: 61 of 500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:483) +WARNING: 90 of 500 distance values in table with relative error + over 1e-06 to re-computed values (../pair_table.cpp:492) +pair_coeff 2 2 table benzene_water.pair.table PairBW +WARNING: 108 of 500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:483) +WARNING: 135 of 500 distance values in table with relative error + over 1e-06 to re-computed values (../pair_table.cpp:492) +pair_coeff * * local/density benzene_water.localdensity.table + +# Recentering during minimization and equilibration +fix recentering all recenter 0.0 0.0 0.0 units box + +# Thermostat & time integration +timestep 2.0 +thermo 100 +thermo_style custom temp ke pe etotal ebond eangle edihed evdwl + +# Minimization +minimize 1.e-4 0.0 10000 10000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 15.25 + ghost atom cutoff = 15.25 + binsize = 7.625, bins = 4 4 18 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair table, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) pair local/density, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 8.061 | 8.32 | 8.674 Mbytes +Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl + 300 1233.1611 4162.3053 5395.4665 0 0 0 4162.3053 + 300 1233.1611 2275.526 3508.6871 0 0 0 2275.526 +Loop time of 0.352822 on 8 procs for 40 steps with 1380 atoms + +71.3% CPU use with 8 MPI tasks x no OpenMP threads + +Minimization stats: + Stopping criterion = linesearch alpha is zero + Energy initial, next-to-last, final = + 4162.30533361 2208.86525108 2275.52597861 + Force two-norm initial, final = 259.364 69.3915 + Force max component initial, final = 22.2077 8.31436 + Final line search alpha, max atom move = 2.90022e-12 2.41135e-11 + Iterations, force evaluations = 40 110 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.053192 | 0.23903 | 0.32779 | 17.2 | 67.75 +Bond | 9.0599e-06 | 1.6302e-05 | 2.5272e-05 | 0.0 | 0.00 +Neigh | 0.00044513 | 0.0023614 | 0.0063851 | 5.1 | 0.67 +Comm | 0.015469 | 0.090432 | 0.20295 | 20.0 | 25.63 +Output | 0 | 0 | 0 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.02098 | | | 5.95 + +Nlocal: 172.5 ave 348 max 72 min +Histogram: 5 0 0 0 0 0 0 0 1 2 +Nghost: 2193.62 ave 4352 max 932 min +Histogram: 3 0 0 2 0 0 2 0 0 1 +Neighs: 9700.5 ave 20535 max 3685 min +Histogram: 5 0 0 0 0 0 0 1 0 2 + +Total # of neighbors = 77604 +Ave neighs/atom = 56.2348 +Ave special neighs/atom = 0 +Neighbor list builds = 2 +Dangerous builds = 0 + +# Set up integration parameters +fix timeintegration all nve +fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 81890 + +# Equilibration (for realistic results, run for 5000000 steps) +reset_timestep 0 +run 5000 +WARNING: Fix recenter should come after all other integration fixes (../fix_recenter.cpp:131) +Per MPI rank memory allocation (min/avg/max) = 6.936 | 7.195 | 7.552 Mbytes +Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl + 300 1233.1611 2866.9109 4100.0721 0 0 0 2866.9109 + 273.33541 1123.5553 3983.2007 5106.756 0 0 0 3983.2007 + 293.68078 1207.1857 3319.6601 4526.8458 0 0 0 3319.6601 + 314.21462 1291.5908 3389.2178 4680.8086 0 0 0 3389.2178 + 323.77563 1330.8917 3332.9828 4663.8745 0 0 0 3332.9828 + 302.5902 1243.8082 3461.7692 4705.5774 0 0 0 3461.7692 + 295.39324 1214.2249 3411.5727 4625.7976 0 0 0 3411.5727 + 320.52341 1317.5234 3453.1931 4770.7164 0 0 0 3453.1931 + 312.00777 1282.5195 3403.3443 4685.8638 0 0 0 3403.3443 + 307.96774 1265.9128 3429.7809 4695.6937 0 0 0 3429.7809 + 294.75922 1211.6187 3388.8404 4600.4591 0 0 0 3388.8404 + 311.24567 1279.3869 3514.9603 4794.3472 0 0 0 3514.9603 + 306.6152 1260.3531 3447.2011 4707.5542 0 0 0 3447.2011 + 305.23306 1254.6718 3375.5092 4630.181 0 0 0 3375.5092 + 321.62889 1322.0675 3460.2581 4782.3256 0 0 0 3460.2581 + 316.37725 1300.4804 3437.0312 4737.5116 0 0 0 3437.0312 + 322.90522 1327.3139 3389.1262 4716.44 0 0 0 3389.1262 + 307.57893 1264.3146 3359.8491 4624.1637 0 0 0 3359.8491 + 302.22607 1242.3115 3406.1711 4648.4826 0 0 0 3406.1711 + 302.73997 1244.4239 3220.2582 4464.6821 0 0 0 3220.2582 + 303.66194 1248.2137 3318.4629 4566.6765 0 0 0 3318.4629 + 308.73862 1269.0815 3369.5894 4638.671 0 0 0 3369.5894 + 315.60294 1297.2976 3411.2405 4708.5381 0 0 0 3411.2405 + 310.0113 1274.3129 3360.1054 4634.4183 0 0 0 3360.1054 + 302.36229 1242.8714 3326.9845 4569.8559 0 0 0 3326.9845 + 317.78659 1306.2735 3355.4976 4661.7711 0 0 0 3355.4976 + 302.50479 1243.4571 3317.6846 4561.1417 0 0 0 3317.6846 + 304.29249 1250.8056 3423.5068 4674.3124 0 0 0 3423.5068 + 305.99948 1257.8222 3432.9395 4690.7617 0 0 0 3432.9395 + 309.93363 1273.9937 3393.657 4667.6506 0 0 0 3393.657 + 316.14884 1299.5415 3463.0636 4762.6051 0 0 0 3463.0636 + 300.38817 1234.7567 3309.2495 4544.0062 0 0 0 3309.2495 + 311.05735 1278.6128 3304.4418 4583.0546 0 0 0 3304.4418 + 311.11872 1278.865 3291.1891 4570.0542 0 0 0 3291.1891 + 315.74338 1297.8749 3341.3063 4639.1812 0 0 0 3341.3063 + 297.5658 1223.1552 3316.3862 4539.5414 0 0 0 3316.3862 + 311.79033 1281.6257 3357.4556 4639.0813 0 0 0 3357.4556 + 310.93666 1278.1167 3414.7694 4692.8861 0 0 0 3414.7694 + 307.37298 1263.468 3337.3889 4600.8569 0 0 0 3337.3889 + 298.84185 1228.4005 3329.6173 4558.0178 0 0 0 3329.6173 + 310.54684 1276.5143 3351.0852 4627.5995 0 0 0 3351.0852 + 300.0871 1233.5191 3302.2315 4535.7506 0 0 0 3302.2315 + 304.69078 1252.4427 3324.2508 4576.6935 0 0 0 3324.2508 + 313.50714 1288.6827 3330.4088 4619.0915 0 0 0 3330.4088 + 329.80018 1355.6559 3301.86 4657.5159 0 0 0 3301.86 + 304.57609 1251.9713 3365.2938 4617.2652 0 0 0 3365.2938 + 308.73584 1269.0701 3344.4155 4613.4856 0 0 0 3344.4155 + 306.90951 1261.5629 3304.4698 4566.0327 0 0 0 3304.4698 + 308.85761 1269.5707 3392.1511 4661.7218 0 0 0 3392.1511 + 302.78788 1244.6208 3317.0849 4561.7057 0 0 0 3317.0849 + 321.68092 1322.2813 3321.5755 4643.8568 0 0 0 3321.5755 +Loop time of 16.3061 on 8 procs for 5000 steps with 1380 atoms + +Performance: 52.986 ns/day, 0.453 hours/ns, 306.634 timesteps/s +69.6% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.1872 | 10.542 | 14.607 | 116.7 | 64.65 +Bond | 0.00044084 | 0.00069669 | 0.00095081 | 0.0 | 0.00 +Neigh | 0.026948 | 0.15225 | 0.44344 | 42.0 | 0.93 +Comm | 0.63452 | 4.2953 | 9.49 | 133.9 | 26.34 +Output | 0.0016391 | 0.012378 | 0.050919 | 13.9 | 0.08 +Modify | 0.45894 | 1.2107 | 4.4629 | 116.4 | 7.42 +Other | | 0.09292 | | | 0.57 + +Nlocal: 172.5 ave 380 max 70 min +Histogram: 5 0 0 0 0 0 0 1 1 1 +Nghost: 2213 ave 4440 max 903 min +Histogram: 3 0 0 2 0 0 2 0 0 1 +Neighs: 10042.5 ave 24051 max 3500 min +Histogram: 5 0 0 0 0 0 0 1 1 1 + +Total # of neighbors = 80340 +Ave neighs/atom = 58.2174 +Ave special neighs/atom = 0 +Neighbor list builds = 123 +Dangerous builds = 1 + +# Turn off recentering during production phase +unfix recentering + +# Setup trajectory output +dump myDump all custom 100 benzene_water.lammpstrj.gz id type x y z element +dump_modify myDump element B W +dump_modify myDump sort id + +# Production (for realistic results, run for 10000000 steps) +reset_timestep 0 +run 1000 +Per MPI rank memory allocation (min/avg/max) = 8.232 | 8.492 | 8.851 Mbytes +Temp KinEng PotEng TotEng E_bond E_angle E_dihed E_vdwl + 321.68092 1322.2813 3784.0834 5106.3647 0 0 0 3784.0834 + 310.59763 1276.7231 3318.3283 4595.0513 0 0 0 3318.3283 + 303.39445 1247.1141 3324.1191 4571.2332 0 0 0 3324.1191 + 311.37275 1279.9092 3305.0901 4584.9993 0 0 0 3305.0901 + 311.29071 1279.572 3248.216 4527.788 0 0 0 3248.216 + 314.53456 1292.906 3283.4563 4576.3623 0 0 0 3283.4563 + 316.52595 1301.0916 3258.9171 4560.0087 0 0 0 3258.9171 + 318.92447 1310.9509 3235.6256 4546.5765 0 0 0 3235.6256 + 311.79212 1281.6331 3308.099 4589.7321 0 0 0 3308.099 + 305.52477 1255.8709 3267.6907 4523.5616 0 0 0 3267.6907 + 301.07457 1237.5782 3206.3997 4443.9779 0 0 0 3206.3997 +Loop time of 4.44139 on 8 procs for 1000 steps with 1380 atoms + +Performance: 38.907 ns/day, 0.617 hours/ns, 225.155 timesteps/s +60.8% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.656 | 2.5078 | 3.5775 | 57.7 | 56.46 +Bond | 0.00013375 | 0.0001854 | 0.0002377 | 0.0 | 0.00 +Neigh | 0.0048757 | 0.029188 | 0.090432 | 18.9 | 0.66 +Comm | 0.51836 | 1.4427 | 2.6285 | 56.9 | 32.48 +Output | 0.083084 | 0.089199 | 0.10333 | 2.3 | 2.01 +Modify | 0.0087376 | 0.019705 | 0.038437 | 8.4 | 0.44 +Other | | 0.3526 | | | 7.94 + +Nlocal: 172.5 ave 388 max 69 min +Histogram: 5 0 0 0 0 0 0 2 0 1 +Nghost: 2207.88 ave 4429 max 896 min +Histogram: 3 0 0 2 0 0 2 0 0 1 +Neighs: 10094.1 ave 24847 max 3403 min +Histogram: 5 0 0 0 0 0 1 1 0 1 + +Total # of neighbors = 80753 +Ave neighs/atom = 58.5167 +Ave special neighs/atom = 0 +Neighbor list builds = 23 +Dangerous builds = 0 + + +Total wall time: 0:00:21 diff --git a/examples/USER/misc/local_density/methanol_implicit_water/log.04Sep19.g++.1 b/examples/USER/misc/local_density/methanol_implicit_water/log.04Sep19.g++.1 new file mode 100644 index 0000000000..618e994946 --- /dev/null +++ b/examples/USER/misc/local_density/methanol_implicit_water/log.04Sep19.g++.1 @@ -0,0 +1,226 @@ +LAMMPS (7 Aug 2019) +# LAMMPS input file for 50.0% methanol mole fraction solution +# with 2500 methanol molecules in implicit water. +# +# +# Author: David Rosenberger, van der Vegt Group, TU Darmstadt +# +# Refer: Rosenberger, Sanyal, Shell, van der Vegt, J. Chem. Theory Comput. 15, 2881-2895 (2019) + + +# Initialize simulation box +dimension 3 +boundary p p p +units real +atom_style molecular + +# Set potential styles +pair_style hybrid/overlay table spline 500 local/density + +# Read molecule data and set initial velocities +read_data methanol_implicit_water.data + orthogonal box = (-31.123 -31.123 -31.123) to (31.123 31.123 31.123) + 2 by 2 by 2 MPI processor grid + reading atoms ... + 2500 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.00063014 secs + read_data CPU = 0.00599909 secs +velocity all create 3.0000e+02 12142 rot yes dist gaussian + +# Assign potentials +pair_coeff 1 1 table methanol_implicit_water.pair.table PairMM +WARNING: 93 of 500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:483) +WARNING: 254 of 500 distance values in table with relative error + over 1e-06 to re-computed values (../pair_table.cpp:492) +pair_coeff * * local/density methanol_implicit_water.localdensity.table + + + + +#Recentering during minimization and equilibration +fix recentering all recenter 0.0 0.0 0.0 units box + +#Thermostat & time integration +timestep 1.0 +thermo 100 +thermo_style custom etotal ke pe temp evdwl + +#minimization +minimize 1.e-4 0.0 1000 1000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17 + ghost atom cutoff = 17 + binsize = 8.5, bins = 8 8 8 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair table, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) pair local/density, perpetual, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 7.411 | 7.411 | 7.412 Mbytes +TotEng KinEng PotEng Temp E_vdwl + 1470.3564 2234.7133 -764.35689 300 -764.35689 + 46.496766 2234.7133 -2188.2165 300 -2188.2165 + 7.9030246 2234.7133 -2226.8103 300 -2226.8103 +Loop time of 0.463996 on 8 procs for 121 steps with 2500 atoms + +91.4% CPU use with 8 MPI tasks x no OpenMP threads + +Minimization stats: + Stopping criterion = linesearch alpha is zero + Energy initial, next-to-last, final = + -764.356892369 -2227.85589084 -2226.81026984 + Force two-norm initial, final = 134.911 3.83896 + Force max component initial, final = 14.1117 1.07422 + Final line search alpha, max atom move = 5.06747e-10 5.44356e-10 + Iterations, force evaluations = 121 154 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.41442 | 0.41976 | 0.42434 | 0.5 | 90.47 +Bond | 1.1683e-05 | 2.0713e-05 | 3.5048e-05 | 0.0 | 0.00 +Neigh | 0.0084722 | 0.0090862 | 0.010038 | 0.5 | 1.96 +Comm | 0.022712 | 0.028157 | 0.034072 | 1.9 | 6.07 +Output | 3.1948e-05 | 3.6925e-05 | 6.6996e-05 | 0.0 | 0.01 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.006937 | | | 1.50 + +Nlocal: 312.5 ave 333 max 299 min +Histogram: 2 2 0 0 1 0 2 0 0 1 +Nghost: 2546 ave 2580 max 2517 min +Histogram: 1 1 0 3 0 1 0 0 0 2 +Neighs: 33215.4 ave 37251 max 29183 min +Histogram: 1 0 0 1 2 2 0 1 0 1 + +Total # of neighbors = 265723 +Ave neighs/atom = 106.289 +Ave special neighs/atom = 0 +Neighbor list builds = 6 +Dangerous builds = 0 + +#set up integration parameters +fix timeintegration all nve +fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 59915 + +#Equilibration (for realistic results, run for 2000000 steps) +reset_timestep 0 +thermo 200 +thermo_style custom etotal ke pe temp evdwl + +#run equilibration +run 2000 +WARNING: Fix recenter should come after all other integration fixes (../fix_recenter.cpp:131) +Per MPI rank memory allocation (min/avg/max) = 6.286 | 6.286 | 6.287 Mbytes +TotEng KinEng PotEng Temp E_vdwl + 177.26822 2234.7133 -2057.4451 300 -2057.4451 + 736.24287 2151.2608 -1415.0179 288.79688 -1415.0179 + 963.07617 2090.6433 -1127.5671 280.65926 -1127.5671 + 1148.9049 2173.1327 -1024.2279 291.73309 -1024.2279 + 1303.6409 2279.8586 -976.21767 306.06055 -976.21767 + 1355.42 2281.0383 -925.61826 306.21892 -925.61826 + 1394.5206 2276.2093 -881.68863 305.57064 -881.68863 + 1346.9764 2215.2973 -868.32091 297.3935 -868.32091 + 1381.3654 2248.8061 -867.44063 301.89189 -867.44063 + 1315.8059 2189.3193 -873.51332 293.90606 -873.51332 + 1314.4456 2209.7431 -895.29752 296.64787 -895.29752 +Loop time of 6.38989 on 8 procs for 2000 steps with 2500 atoms + +Performance: 27.043 ns/day, 0.887 hours/ns, 312.994 timesteps/s +80.5% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.2693 | 5.3572 | 5.457 | 2.1 | 83.84 +Bond | 0.00028825 | 0.00033835 | 0.00039148 | 0.0 | 0.01 +Neigh | 0.0296 | 0.032337 | 0.035071 | 0.9 | 0.51 +Comm | 0.64679 | 0.73397 | 0.80847 | 5.2 | 11.49 +Output | 0.00033498 | 0.00051582 | 0.0015228 | 0.0 | 0.01 +Modify | 0.16395 | 0.18919 | 0.21056 | 3.9 | 2.96 +Other | | 0.07636 | | | 1.19 + +Nlocal: 312.5 ave 337 max 295 min +Histogram: 2 2 0 1 0 0 0 1 1 1 +Nghost: 2551.62 ave 2582 max 2525 min +Histogram: 2 1 0 0 1 1 1 0 1 1 +Neighs: 33241.8 ave 37659 max 29705 min +Histogram: 2 0 0 2 2 0 0 0 1 1 + +Total # of neighbors = 265934 +Ave neighs/atom = 106.374 +Ave special neighs/atom = 0 +Neighbor list builds = 21 +Dangerous builds = 0 + +#turn off recentering during production run +unfix recentering + + +#setup trajectory output +dump myDump all custom 100 methanol_implicit_water.lammpstrj.gz id type x y z element +dump_modify myDump element M +dump_modify myDump sort id + +#run production (for realistic results, run for 10000000 steps) +reset_timestep 0 +thermo 1000 +thermo_style custom etotal ke pe temp evdwl +run 10000 +Per MPI rank memory allocation (min/avg/max) = 7.588 | 7.589 | 7.589 Mbytes +TotEng KinEng PotEng Temp E_vdwl + 1442.5428 2209.7431 -767.20027 296.64787 -767.20027 + 1391.8624 2262.6889 -870.82656 303.7556 -870.82656 + 1375.914 2244.6176 -868.7036 301.3296 -868.7036 + 1345.9064 2227.2324 -881.32599 298.99573 -881.32599 + 1379.2334 2278.1156 -898.88222 305.82657 -898.88222 + 1389.7928 2255.8062 -866.01341 302.83163 -866.01341 + 1380.4549 2258.2108 -877.75582 303.15443 -877.75582 + 1380.8489 2256.9432 -876.09428 302.98426 -876.09428 + 1326.5151 2225.7408 -899.22577 298.79549 -899.22577 + 1376.6025 2253.0128 -876.41028 302.45662 -876.41028 + 1331.0008 2218.1033 -887.10258 297.77019 -887.10258 +Loop time of 25.4591 on 8 procs for 10000 steps with 2500 atoms + +Performance: 33.937 ns/day, 0.707 hours/ns, 392.787 timesteps/s +89.3% CPU use with 8 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 21.635 | 21.916 | 22.237 | 3.9 | 86.08 +Bond | 0.0011308 | 0.0013149 | 0.0016932 | 0.5 | 0.01 +Neigh | 0.14593 | 0.15675 | 0.16667 | 1.9 | 0.62 +Comm | 1.3789 | 1.7502 | 1.9558 | 13.7 | 6.87 +Output | 0.34664 | 0.82927 | 1.2013 | 32.8 | 3.26 +Modify | 0.24904 | 0.25842 | 0.26907 | 1.2 | 1.02 +Other | | 0.5475 | | | 2.15 + +Nlocal: 312.5 ave 327 max 298 min +Histogram: 2 0 0 1 1 0 1 1 1 1 +Nghost: 2575 ave 2601 max 2559 min +Histogram: 2 0 3 1 0 0 0 0 1 1 +Neighs: 33223.2 ave 35920 max 30303 min +Histogram: 1 1 1 1 0 1 0 0 0 3 + +Total # of neighbors = 265786 +Ave neighs/atom = 106.314 +Ave special neighs/atom = 0 +Neighbor list builds = 103 +Dangerous builds = 0 + + +Total wall time: 0:00:32 diff --git a/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.data b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.data new file mode 100644 index 0000000000..1dd9eccc7c --- /dev/null +++ b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.data @@ -0,0 +1,2525 @@ +LAMMPS Description + + 2500 atoms + 0 bonds + 0 angles + 0 dihedrals + 0 impropers + + 1 atom types + 0 bond types + 0 angle types + 0 dihedral types + 0 improper types + +-3.1123e+01 3.1123e+01 xlo xhi +-3.1123e+01 3.1123e+01 ylo yhi +-3.1123e+01 3.1123e+01 zlo zhi + +Masses + + 1 32.0000 + +Atoms + + 1 1 1 -1.20055e+01 1.00800e+01 5.26000e+00 + 2 2 1 -5.60545e+00 2.34700e+01 3.10400e+01 + 3 3 1 1.33900e+01 1.50700e+01 -1.56654e+01 + 4 4 1 -3.57545e+00 -1.71754e+01 -7.17545e+00 + 5 5 1 1.09000e+01 1.67100e+01 -2.57554e+01 + 6 6 1 1.96400e+01 -6.07545e+00 -2.72454e+01 + 7 7 1 -7.56545e+00 -1.92354e+01 -2.37154e+01 + 8 8 1 -5.72545e+00 -2.45654e+01 -2.34154e+01 + 9 9 1 -1.71655e+01 2.46700e+01 1.76300e+01 + 10 10 1 8.06000e+00 4.73000e+00 -7.34545e+00 + 11 11 1 2.32300e+01 -2.01054e+01 1.78600e+01 + 12 12 1 -2.05955e+01 1.44500e+01 -6.35545e+00 + 13 13 1 1.80700e+01 2.19800e+01 -4.22545e+00 + 14 14 1 -1.26355e+01 -2.92545e+00 -2.09154e+01 + 15 15 1 -2.05255e+01 -2.12254e+01 -2.21454e+01 + 16 16 1 6.69000e+00 2.60700e+01 1.22700e+01 + 17 17 1 1.08600e+01 -2.00054e+01 -2.82854e+01 + 18 18 1 -1.89255e+01 3.30000e-01 1.15200e+01 + 19 19 1 1.85400e+01 1.31900e+01 -7.98545e+00 + 20 20 1 -1.49055e+01 1.45900e+01 -2.19354e+01 + 21 21 1 1.91400e+01 -2.43054e+01 -2.54454e+01 + 22 22 1 1.04200e+01 -2.94954e+01 -2.95654e+01 + 23 23 1 -7.37545e+00 2.08500e+01 2.58700e+01 + 24 24 1 1.25600e+01 2.80000e-01 -1.38054e+01 + 25 25 1 -2.11055e+01 1.01500e+01 3.10000e+01 + 26 26 1 2.78800e+01 -1.10254e+01 1.86300e+01 + 27 27 1 2.17000e+00 -3.01454e+01 1.67700e+01 + 28 28 1 2.76700e+01 1.44600e+01 -1.37954e+01 + 29 29 1 2.15200e+01 -3.45545e+00 4.45000e+00 + 30 30 1 -8.15545e+00 1.89500e+01 -2.73954e+01 + 31 31 1 -5.89545e+00 -1.45954e+01 2.62100e+01 + 32 32 1 2.29600e+01 -1.23154e+01 2.91800e+01 + 33 33 1 4.87000e+00 -2.65754e+01 8.54000e+00 + 34 34 1 1.93000e+00 -1.43554e+01 1.85200e+01 + 35 35 1 -2.78355e+01 -2.84754e+01 -2.38454e+01 + 36 36 1 3.08000e+00 -2.54354e+01 1.99500e+01 + 37 37 1 2.12700e+01 -6.71545e+00 1.28000e+00 + 38 38 1 -3.45545e+00 -2.41754e+01 1.49600e+01 + 39 39 1 2.54700e+01 1.63000e+01 6.99000e+00 + 40 40 1 -1.80855e+01 2.44800e+01 4.97000e+00 + 41 41 1 1.28400e+01 -1.15446e-01 -2.87954e+01 + 42 42 1 -7.86545e+00 2.17000e+00 1.67100e+01 + 43 43 1 2.42300e+01 -8.29545e+00 2.04200e+01 + 44 44 1 -4.35545e+00 4.68000e+00 2.66200e+01 + 45 45 1 -1.53655e+01 -1.15154e+01 1.35000e+00 + 46 46 1 -2.67255e+01 -2.33054e+01 -3.01254e+01 + 47 47 1 1.13800e+01 -3.05554e+01 -2.18054e+01 + 48 48 1 2.05100e+01 1.55100e+01 -6.31545e+00 + 49 49 1 -7.45545e+00 2.28000e+00 -2.04754e+01 + 50 50 1 -6.11545e+00 2.97900e+01 -2.21154e+01 + 51 51 1 -1.21355e+01 2.64200e+01 1.95100e+01 + 52 52 1 1.78800e+01 1.04000e+00 2.19500e+01 + 53 53 1 -1.64755e+01 1.01300e+01 1.40700e+01 + 54 54 1 -1.92955e+01 -2.53654e+01 -2.21754e+01 + 55 55 1 2.55800e+01 -2.55154e+01 3.60000e-01 + 56 56 1 1.79800e+01 1.51100e+01 2.99700e+01 + 57 57 1 2.65400e+01 2.17200e+01 2.76100e+01 + 58 58 1 -3.43545e+00 9.65000e+00 2.66700e+01 + 59 59 1 -1.77455e+01 3.02400e+01 1.95100e+01 + 60 60 1 2.93400e+01 3.01500e+01 -7.77545e+00 + 61 61 1 1.95600e+01 -1.14354e+01 -2.76154e+01 + 62 62 1 2.69600e+01 -1.91054e+01 1.92300e+01 + 63 63 1 -2.29855e+01 1.28800e+01 2.24600e+01 + 64 64 1 2.91000e+01 -9.55446e-01 1.35600e+01 + 65 65 1 2.06800e+01 -1.73545e+00 -1.27454e+01 + 66 66 1 -5.86545e+00 -1.14854e+01 1.16000e+01 + 67 67 1 2.67700e+01 -2.98654e+01 -1.12545e+00 + 68 68 1 -1.23655e+01 -2.27554e+01 -2.15654e+01 + 69 69 1 -4.60545e+00 2.12800e+01 -7.00000e-02 + 70 70 1 -5.55450e-01 -7.06545e+00 1.73000e+01 + 71 71 1 -5.79545e+00 -1.63354e+01 -2.29654e+01 + 72 72 1 4.00000e-02 1.56000e+00 1.93200e+01 + 73 73 1 3.02400e+01 -1.67854e+01 -2.48154e+01 + 74 74 1 -3.09355e+01 1.86700e+01 -1.22454e+01 + 75 75 1 -1.19955e+01 -8.34545e+00 2.04400e+01 + 76 76 1 3.89000e+00 -2.16854e+01 1.56300e+01 + 77 77 1 2.14900e+01 -1.14254e+01 8.10000e-01 + 78 78 1 2.74400e+01 1.13900e+01 -2.49545e+00 + 79 79 1 -2.99545e+00 -1.55154e+01 -1.94554e+01 + 80 80 1 2.07000e+00 9.21000e+00 -1.05154e+01 + 81 81 1 6.50000e-01 2.59100e+01 -2.39854e+01 + 82 82 1 -1.04255e+01 1.96100e+01 8.64000e+00 + 83 83 1 8.40000e+00 -1.56954e+01 8.10000e-01 + 84 84 1 7.39000e+00 -2.82254e+01 -4.90545e+00 + 85 85 1 1.14500e+01 -1.95054e+01 -7.24545e+00 + 86 86 1 2.47300e+01 -4.21545e+00 -1.81254e+01 + 87 87 1 1.06900e+01 1.46200e+01 -1.34754e+01 + 88 88 1 6.61000e+00 2.26100e+01 -1.62454e+01 + 89 89 1 1.64000e+01 2.74400e+01 8.31000e+00 + 90 90 1 -6.37545e+00 -4.54457e-02 -4.79545e+00 + 91 91 1 2.96500e+01 -2.74154e+01 -1.73854e+01 + 92 92 1 1.20600e+01 9.85000e+00 -6.06545e+00 + 93 93 1 2.11300e+01 4.90000e-01 9.35000e+00 + 94 94 1 -2.94255e+01 -2.17554e+01 -1.88354e+01 + 95 95 1 9.67000e+00 -1.47154e+01 -1.30854e+01 + 96 96 1 -1.04355e+01 1.95200e+01 3.58000e+00 + 97 97 1 1.39600e+01 -7.77545e+00 2.75700e+01 + 98 98 1 1.22700e+01 4.36000e+00 -7.43545e+00 + 99 99 1 -3.38545e+00 1.87500e+01 2.47000e+01 + 100 100 1 -1.34055e+01 -2.84054e+01 -2.52554e+01 + 101 101 1 1.13900e+01 -7.85545e+00 1.70300e+01 + 102 102 1 -4.00000e-01 2.16200e+01 -1.14954e+01 + 103 103 1 6.01000e+00 -5.74545e+00 -3.00854e+01 + 104 104 1 -1.96655e+01 -1.18854e+01 -2.29854e+01 + 105 105 1 2.12000e+00 -2.43654e+01 2.36400e+01 + 106 106 1 -2.53545e+00 -2.06554e+01 2.50000e+00 + 107 107 1 -3.06555e+01 -1.93654e+01 2.53600e+01 + 108 108 1 2.62600e+01 1.55000e+01 -3.03054e+01 + 109 109 1 -1.65055e+01 -5.86545e+00 -5.13545e+00 + 110 110 1 -1.66055e+01 -2.46754e+01 -1.04554e+01 + 111 111 1 -2.04545e+00 2.36200e+01 3.02600e+01 + 112 112 1 7.06000e+00 2.82900e+01 -2.83545e+00 + 113 113 1 2.48200e+01 -2.12545e+00 -2.29854e+01 + 114 114 1 -2.89655e+01 2.78300e+01 6.81000e+00 + 115 115 1 1.70900e+01 1.87200e+01 1.21000e+01 + 116 116 1 -1.67855e+01 4.83000e+00 1.19600e+01 + 117 117 1 2.31900e+01 -2.17554e+01 -2.28054e+01 + 118 118 1 1.88400e+01 1.95000e+01 2.83400e+01 + 119 119 1 -9.95545e+00 1.46300e+01 -3.17545e+00 + 120 120 1 1.72000e+01 -2.67354e+01 -2.82654e+01 + 121 121 1 2.95000e+00 -1.74354e+01 1.54900e+01 + 122 122 1 8.31000e+00 -3.22545e+00 -2.01254e+01 + 123 123 1 2.75400e+01 6.82000e+00 1.73800e+01 + 124 124 1 2.94000e+01 2.36900e+01 2.82500e+01 + 125 125 1 1.44600e+01 -4.81545e+00 5.55000e+00 + 126 126 1 -2.36545e+00 3.55000e+00 -1.71154e+01 + 127 127 1 1.93600e+01 1.67700e+01 2.56200e+01 + 128 128 1 -9.42545e+00 2.30900e+01 -1.49154e+01 + 129 129 1 3.28000e+00 -2.20454e+01 -7.81545e+00 + 130 130 1 -9.65545e+00 1.68700e+01 -8.51545e+00 + 131 131 1 -2.03155e+01 2.34000e+01 -1.09754e+01 + 132 132 1 2.63100e+01 -8.29545e+00 -4.80545e+00 + 133 133 1 1.92100e+01 -2.67954e+01 1.41700e+01 + 134 134 1 4.99000e+00 1.44600e+01 2.29400e+01 + 135 135 1 4.54000e+00 1.01600e+01 3.10900e+01 + 136 136 1 -2.98255e+01 -1.41354e+01 6.76000e+00 + 137 137 1 -1.96355e+01 9.70000e+00 -1.20254e+01 + 138 138 1 4.51000e+00 -2.61354e+01 4.06000e+00 + 139 139 1 2.83500e+01 -9.33545e+00 2.76000e+00 + 140 140 1 1.62900e+01 -2.42454e+01 -9.21545e+00 + 141 141 1 1.90800e+01 6.11000e+00 3.07600e+01 + 142 142 1 6.91000e+00 1.34300e+01 -1.55654e+01 + 143 143 1 -1.40455e+01 6.54000e+00 -1.42654e+01 + 144 144 1 -2.58055e+01 -1.85754e+01 -5.04545e+00 + 145 145 1 -1.53545e+00 -6.00000e-02 -1.42154e+01 + 146 146 1 2.66500e+01 -1.94754e+01 2.72900e+01 + 147 147 1 2.43000e+00 9.24000e+00 -2.74854e+01 + 148 148 1 1.48300e+01 1.95700e+01 -9.12545e+00 + 149 149 1 -9.55450e-01 9.74000e+00 3.86000e+00 + 150 150 1 -2.44755e+01 2.04500e+01 2.88900e+01 + 151 151 1 1.95300e+01 -2.43854e+01 -2.16545e+00 + 152 152 1 -1.09455e+01 2.69200e+01 3.77000e+00 + 153 153 1 1.53800e+01 -3.76545e+00 3.07900e+01 + 154 154 1 1.67600e+01 1.62700e+01 3.40000e-01 + 155 155 1 8.93000e+00 1.94500e+01 -1.11354e+01 + 156 156 1 -6.31545e+00 1.26100e+01 -4.73545e+00 + 157 157 1 2.10000e+00 -1.34854e+01 7.48000e+00 + 158 158 1 -2.89155e+01 -1.09154e+01 -6.11545e+00 + 159 159 1 2.63300e+01 1.57700e+01 1.93100e+01 + 160 160 1 -2.52545e+00 -3.48545e+00 3.57000e+00 + 161 161 1 1.42800e+01 -7.95446e-01 -9.53545e+00 + 162 162 1 1.22800e+01 -2.67154e+01 -2.48654e+01 + 163 163 1 8.20000e+00 2.65600e+01 2.05400e+01 + 164 164 1 -1.84545e+00 -2.55854e+01 2.31200e+01 + 165 165 1 -7.61545e+00 2.56100e+01 -2.44854e+01 + 166 166 1 2.30000e+01 -1.11754e+01 5.15000e+00 + 167 167 1 -1.33545e+00 -2.37554e+01 2.01200e+01 + 168 168 1 -9.42545e+00 -5.70545e+00 -1.97854e+01 + 169 169 1 -1.70855e+01 1.65100e+01 2.09000e+01 + 170 170 1 1.31000e+00 1.66400e+01 2.15700e+01 + 171 171 1 -1.45055e+01 1.04700e+01 -1.30545e+00 + 172 172 1 9.88000e+00 1.13000e+01 -1.25354e+01 + 173 173 1 1.04600e+01 -2.47354e+01 -1.17545e+00 + 174 174 1 -1.69545e+00 1.84100e+01 5.75000e+00 + 175 175 1 2.24600e+01 -1.59354e+01 1.91400e+01 + 176 176 1 -8.75545e+00 1.22500e+01 1.82900e+01 + 177 177 1 4.01000e+00 -2.14754e+01 2.28400e+01 + 178 178 1 -1.66955e+01 6.24554e-01 5.77000e+00 + 179 179 1 -1.31655e+01 9.33000e+00 -2.86754e+01 + 180 180 1 1.70300e+01 -2.79654e+01 2.25900e+01 + 181 181 1 1.10000e+01 2.78400e+01 -3.04854e+01 + 182 182 1 -7.71545e+00 -5.27545e+00 6.51000e+00 + 183 183 1 -2.44855e+01 -2.84954e+01 2.70500e+01 + 184 184 1 -1.43555e+01 2.45000e+00 2.09200e+01 + 185 185 1 2.78600e+01 -2.01545e+00 4.68000e+00 + 186 186 1 2.29200e+01 -1.75654e+01 2.57100e+01 + 187 187 1 3.00000e+00 -1.10454e+01 -1.75545e+00 + 188 188 1 3.09800e+01 -7.41545e+00 -1.94054e+01 + 189 189 1 1.22700e+01 5.92000e+00 1.33000e+00 + 190 190 1 -2.61355e+01 1.75800e+01 -2.44754e+01 + 191 191 1 1.57000e+01 1.72800e+01 1.98700e+01 + 192 192 1 7.09000e+00 -1.20054e+01 -1.01054e+01 + 193 193 1 6.83000e+00 2.39000e+01 3.05700e+01 + 194 194 1 3.03100e+01 -7.11545e+00 -1.39254e+01 + 195 195 1 -2.43255e+01 -1.14554e+01 2.51400e+01 + 196 196 1 -1.70855e+01 -2.04954e+01 -1.11354e+01 + 197 197 1 -2.27255e+01 2.68300e+01 -2.55254e+01 + 198 198 1 2.93800e+01 -1.77545e+00 -1.87754e+01 + 199 199 1 -2.14545e+00 -2.81654e+01 1.86900e+01 + 200 200 1 6.96000e+00 1.00100e+01 2.71700e+01 + 201 201 1 -1.53255e+01 5.22000e+00 8.90000e-01 + 202 202 1 1.84900e+01 2.95800e+01 -2.82254e+01 + 203 203 1 -2.42255e+01 -2.38054e+01 8.18000e+00 + 204 204 1 2.15000e+00 1.13700e+01 2.53400e+01 + 205 205 1 -1.88355e+01 -3.03254e+01 -2.76954e+01 + 206 206 1 1.58300e+01 -2.00654e+01 1.22200e+01 + 207 207 1 -2.68655e+01 3.56000e+00 -2.15054e+01 + 208 208 1 8.45000e+00 -1.15446e-01 2.97500e+01 + 209 209 1 -2.89555e+01 9.44000e+00 -5.89545e+00 + 210 210 1 -7.37545e+00 -1.25154e+01 -3.03654e+01 + 211 211 1 -2.91155e+01 -2.54654e+01 1.57700e+01 + 212 212 1 -2.90555e+01 -1.25545e+00 -3.02554e+01 + 213 213 1 -9.68545e+00 1.88500e+01 -1.45554e+01 + 214 214 1 2.84200e+01 -1.89154e+01 -3.01554e+01 + 215 215 1 9.65000e+00 -6.89545e+00 2.45500e+01 + 216 216 1 -2.42755e+01 -1.45154e+01 -1.51054e+01 + 217 217 1 -1.12155e+01 1.82700e+01 1.68400e+01 + 218 218 1 -2.43255e+01 -2.32854e+01 2.69500e+01 + 219 219 1 2.04900e+01 -3.00754e+01 -9.01545e+00 + 220 220 1 2.49500e+01 -1.10254e+01 -9.03545e+00 + 221 221 1 -1.34455e+01 1.81900e+01 -6.45445e-01 + 222 222 1 1.57400e+01 2.45800e+01 1.83100e+01 + 223 223 1 -2.14155e+01 9.58000e+00 1.14600e+01 + 224 224 1 1.68200e+01 -7.32545e+00 -2.60754e+01 + 225 225 1 2.89500e+01 1.17700e+01 9.22000e+00 + 226 226 1 1.03000e+00 1.80600e+01 -2.96054e+01 + 227 227 1 1.92900e+01 2.09600e+01 -1.11654e+01 + 228 228 1 1.32400e+01 1.29500e+01 -2.67054e+01 + 229 229 1 2.60400e+01 1.60700e+01 3.47000e+00 + 230 230 1 5.60000e+00 1.22900e+01 -2.65954e+01 + 231 231 1 1.96100e+01 1.44800e+01 1.66200e+01 + 232 232 1 3.03000e+00 1.65900e+01 -2.13454e+01 + 233 233 1 3.11100e+01 1.77400e+01 3.69000e+00 + 234 234 1 2.03700e+01 1.44100e+01 -7.25445e-01 + 235 235 1 2.51400e+01 -5.76545e+00 2.88700e+01 + 236 236 1 5.56000e+00 -3.17545e+00 -4.09545e+00 + 237 237 1 1.46000e+01 -2.76354e+01 -2.15354e+01 + 238 238 1 -2.10000e-01 3.08100e+01 -2.98545e+00 + 239 239 1 2.19600e+01 9.17000e+00 2.89400e+01 + 240 240 1 -3.02555e+01 1.78900e+01 -2.30654e+01 + 241 241 1 -1.64855e+01 3.58000e+00 7.26000e+00 + 242 242 1 2.94800e+01 -3.02254e+01 7.30000e+00 + 243 243 1 -1.79655e+01 2.97600e+01 4.83000e+00 + 244 244 1 -2.35655e+01 1.11300e+01 2.88000e+01 + 245 245 1 5.73000e+00 -7.06545e+00 -9.55545e+00 + 246 246 1 -2.15155e+01 -2.51054e+01 2.76900e+01 + 247 247 1 2.63900e+01 1.94100e+01 1.39500e+01 + 248 248 1 -1.89855e+01 1.64200e+01 7.29000e+00 + 249 249 1 1.73800e+01 -1.07054e+01 -5.63545e+00 + 250 250 1 -8.08545e+00 -9.68545e+00 1.06000e+00 + 251 251 1 2.44200e+01 2.75200e+01 -1.28654e+01 + 252 252 1 -1.02655e+01 -1.51554e+01 -2.30954e+01 + 253 253 1 -1.41155e+01 -7.46545e+00 1.69800e+01 + 254 254 1 1.96000e+01 -1.03754e+01 2.81800e+01 + 255 255 1 -2.89545e+00 -2.15354e+01 -3.06545e+00 + 256 256 1 2.18400e+01 -2.93854e+01 4.10000e+00 + 257 257 1 -1.09955e+01 1.53800e+01 2.07500e+01 + 258 258 1 2.11900e+01 2.80600e+01 1.14500e+01 + 259 259 1 8.66000e+00 1.14900e+01 1.67500e+01 + 260 260 1 -1.59255e+01 -1.73954e+01 7.80000e+00 + 261 261 1 -1.97755e+01 -2.67754e+01 -3.04854e+01 + 262 262 1 -8.69545e+00 -1.61554e+01 2.01900e+01 + 263 263 1 2.66100e+01 5.44000e+00 2.13300e+01 + 264 264 1 -1.24055e+01 -2.69254e+01 -1.21354e+01 + 265 265 1 -2.18655e+01 -1.06854e+01 1.32700e+01 + 266 266 1 -1.08055e+01 3.52000e+00 -2.70054e+01 + 267 267 1 1.15800e+01 -2.67154e+01 1.77900e+01 + 268 268 1 -1.47955e+01 -2.53754e+01 -2.37354e+01 + 269 269 1 -1.29055e+01 6.56000e+00 -2.51054e+01 + 270 270 1 2.06000e+01 2.95900e+01 -3.10854e+01 + 271 271 1 1.76300e+01 1.65700e+01 9.29000e+00 + 272 272 1 2.33000e+00 -1.81554e+01 -1.51354e+01 + 273 273 1 -2.61955e+01 -3.96545e+00 1.46500e+01 + 274 274 1 -2.81455e+01 -1.76545e+00 6.58000e+00 + 275 275 1 -2.35545e+00 1.43200e+01 2.95400e+01 + 276 276 1 9.70000e+00 -2.13854e+01 1.55500e+01 + 277 277 1 -1.59455e+01 5.44000e+00 2.09100e+01 + 278 278 1 1.19000e+00 1.47700e+01 1.14500e+01 + 279 279 1 -2.93755e+01 6.87000e+00 1.19600e+01 + 280 280 1 -9.41545e+00 1.63700e+01 3.09200e+01 + 281 281 1 7.25000e+00 8.46000e+00 2.04000e+00 + 282 282 1 -1.22455e+01 -2.06954e+01 6.37000e+00 + 283 283 1 2.22900e+01 3.00700e+01 2.53900e+01 + 284 284 1 -8.90545e+00 2.02200e+01 -2.36954e+01 + 285 285 1 -3.06755e+01 -2.74854e+01 3.35000e+00 + 286 286 1 2.61000e+01 1.75600e+01 2.89100e+01 + 287 287 1 -1.28255e+01 -1.38545e+00 -2.94754e+01 + 288 288 1 -1.61755e+01 -1.09545e+00 -2.48654e+01 + 289 289 1 -9.85545e+00 -1.40054e+01 -1.51054e+01 + 290 290 1 1.39000e+01 4.77000e+00 5.77000e+00 + 291 291 1 -1.84755e+01 1.66600e+01 2.86300e+01 + 292 292 1 -1.42655e+01 3.02500e+01 1.89000e+00 + 293 293 1 7.72000e+00 7.29000e+00 -1.14254e+01 + 294 294 1 -6.12545e+00 3.54000e+00 1.30100e+01 + 295 295 1 -2.31555e+01 -2.60545e+00 -2.92554e+01 + 296 296 1 2.89800e+01 2.88700e+01 3.04100e+01 + 297 297 1 2.43600e+01 -7.75446e-01 1.21200e+01 + 298 298 1 -2.73355e+01 3.07000e+00 1.39800e+01 + 299 299 1 1.19000e+01 -2.84754e+01 -1.70754e+01 + 300 300 1 1.30300e+01 2.12200e+01 2.86600e+01 + 301 301 1 -4.75545e+00 2.55000e+00 2.20700e+01 + 302 302 1 -1.79355e+01 2.91500e+01 9.04000e+00 + 303 303 1 -2.77855e+01 1.29400e+01 -2.89554e+01 + 304 304 1 1.97200e+01 1.70300e+01 -2.76954e+01 + 305 305 1 -9.37545e+00 -2.93254e+01 2.23400e+01 + 306 306 1 2.52500e+01 2.64600e+01 2.63400e+01 + 307 307 1 2.64400e+01 -1.30545e+00 -1.25754e+01 + 308 308 1 2.91000e+01 -2.27754e+01 -2.74854e+01 + 309 309 1 -1.26955e+01 -2.56454e+01 2.03000e+00 + 310 310 1 1.32000e+00 9.31000e+00 1.39100e+01 + 311 311 1 -4.90000e-01 -7.72545e+00 -7.09545e+00 + 312 312 1 1.04000e+00 -2.77545e+00 -2.27254e+01 + 313 313 1 1.72900e+01 -6.57545e+00 -1.28754e+01 + 314 314 1 -2.89355e+01 6.59000e+00 2.80200e+01 + 315 315 1 -1.10855e+01 2.34900e+01 1.62000e+01 + 316 316 1 -1.64055e+01 -9.88545e+00 2.38500e+01 + 317 317 1 1.27300e+01 -8.04545e+00 -2.20554e+01 + 318 318 1 -3.01855e+01 6.00000e+00 -1.65545e+00 + 319 319 1 -5.89545e+00 -5.75446e-01 1.14200e+01 + 320 320 1 2.35700e+01 -2.12354e+01 2.71900e+01 + 321 321 1 2.05800e+01 -2.24154e+01 -1.20354e+01 + 322 322 1 1.61300e+01 -2.61854e+01 8.20000e+00 + 323 323 1 -7.84545e+00 2.75100e+01 2.51500e+01 + 324 324 1 -2.06755e+01 -1.37554e+01 -1.83254e+01 + 325 325 1 2.29700e+01 3.05500e+01 -1.26545e+00 + 326 326 1 1.23300e+01 -1.86554e+01 -1.91554e+01 + 327 327 1 1.38100e+01 2.07000e+00 -2.25445e-01 + 328 328 1 5.98000e+00 6.22000e+00 1.08900e+01 + 329 329 1 -2.29155e+01 2.31900e+01 -2.93054e+01 + 330 330 1 -1.92255e+01 2.32100e+01 -1.67354e+01 + 331 331 1 -2.95255e+01 -1.81854e+01 -1.54154e+01 + 332 332 1 -2.24755e+01 3.28000e+00 2.39100e+01 + 333 333 1 -1.91655e+01 2.93700e+01 2.58000e+01 + 334 334 1 -2.39855e+01 3.13000e+00 -3.13545e+00 + 335 335 1 -2.30055e+01 -3.57545e+00 -3.14545e+00 + 336 336 1 3.03200e+01 -2.05654e+01 -2.30254e+01 + 337 337 1 2.81000e+01 -1.28854e+01 -6.35445e-01 + 338 338 1 5.79000e+00 -7.01545e+00 1.42700e+01 + 339 339 1 1.50700e+01 1.92100e+01 1.57000e+01 + 340 340 1 -1.69255e+01 -2.18754e+01 2.23400e+01 + 341 341 1 -1.14155e+01 1.39700e+01 1.26600e+01 + 342 342 1 2.81900e+01 -2.97654e+01 -1.48454e+01 + 343 343 1 2.59800e+01 7.38000e+00 -2.26954e+01 + 344 344 1 9.13000e+00 -2.89254e+01 1.98400e+01 + 345 345 1 -1.40055e+01 1.45000e+01 9.41000e+00 + 346 346 1 -2.69455e+01 1.15200e+01 -9.94545e+00 + 347 347 1 1.20400e+01 3.00600e+01 -1.36545e+00 + 348 348 1 2.90000e+00 2.30400e+01 2.66700e+01 + 349 349 1 1.48900e+01 9.89000e+00 -1.42154e+01 + 350 350 1 -1.34955e+01 1.81000e+01 4.59000e+00 + 351 351 1 5.16000e+00 -4.54545e+00 -1.74354e+01 + 352 352 1 -1.68555e+01 -2.70545e+00 -2.86654e+01 + 353 353 1 -1.52655e+01 -2.50554e+01 -8.15445e-01 + 354 354 1 -2.33755e+01 -1.99254e+01 -1.92254e+01 + 355 355 1 1.37900e+01 1.21100e+01 -9.66545e+00 + 356 356 1 2.97700e+01 7.78000e+00 -1.27054e+01 + 357 357 1 1.58700e+01 -1.82754e+01 -1.08054e+01 + 358 358 1 -3.77545e+00 2.01800e+01 -1.69154e+01 + 359 359 1 -1.89545e+00 -4.41545e+00 8.80000e+00 + 360 360 1 -1.71455e+01 -1.48854e+01 1.34500e+01 + 361 361 1 1.00400e+01 -1.40054e+01 -2.72054e+01 + 362 362 1 -9.92545e+00 2.28400e+01 2.09300e+01 + 363 363 1 -2.93355e+01 -1.18154e+01 -1.52554e+01 + 364 364 1 1.02600e+01 -1.37154e+01 -7.84545e+00 + 365 365 1 7.91000e+00 1.78800e+01 2.18400e+01 + 366 366 1 3.08000e+00 -2.03654e+01 2.70900e+01 + 367 367 1 -2.78545e+00 -2.92454e+01 2.87000e+01 + 368 368 1 1.61000e+00 -8.31545e+00 -2.40754e+01 + 369 369 1 -1.31255e+01 -1.38354e+01 -2.65054e+01 + 370 370 1 1.84000e+00 -2.36754e+01 2.78500e+01 + 371 371 1 2.81600e+01 -2.74354e+01 -9.37545e+00 + 372 372 1 2.83900e+01 2.14800e+01 -1.45354e+01 + 373 373 1 1.78000e+01 2.32000e+01 -8.50545e+00 + 374 374 1 -1.59155e+01 7.13000e+00 -2.66554e+01 + 375 375 1 2.97300e+01 2.19400e+01 -2.70354e+01 + 376 376 1 6.18000e+00 2.33000e+01 -1.20554e+01 + 377 377 1 -8.86545e+00 -2.58354e+01 -2.72754e+01 + 378 378 1 -5.01545e+00 -2.90954e+01 2.74000e+00 + 379 379 1 -1.64755e+01 -1.01554e+01 -2.39654e+01 + 380 380 1 3.07500e+01 1.17300e+01 -1.84654e+01 + 381 381 1 -1.40755e+01 1.85000e+01 2.21800e+01 + 382 382 1 2.21300e+01 2.73100e+01 2.76000e+01 + 383 383 1 1.48000e+01 -1.10654e+01 -1.30354e+01 + 384 384 1 2.03200e+01 2.32000e+00 -2.70545e+00 + 385 385 1 2.44600e+01 2.27900e+01 1.36000e+00 + 386 386 1 -3.13545e+00 -1.61154e+01 6.87000e+00 + 387 387 1 1.57500e+01 1.15900e+01 1.98200e+01 + 388 388 1 1.22700e+01 2.71800e+01 2.28300e+01 + 389 389 1 1.32300e+01 2.62300e+01 -1.31554e+01 + 390 390 1 1.71700e+01 -1.90654e+01 -3.10454e+01 + 391 391 1 3.65000e+00 2.84500e+01 -4.05445e-01 + 392 392 1 5.36000e+00 -1.36254e+01 -6.50545e+00 + 393 393 1 2.73000e+01 -2.25054e+01 1.75800e+01 + 394 394 1 2.47400e+01 -1.51854e+01 3.05000e+01 + 395 395 1 -1.65555e+01 1.74200e+01 -1.17854e+01 + 396 396 1 1.17700e+01 -1.60545e+00 -1.42545e+00 + 397 397 1 -2.81055e+01 1.98400e+01 -6.14545e+00 + 398 398 1 -1.39055e+01 2.89000e+01 2.26300e+01 + 399 399 1 -9.55545e+00 -6.10545e+00 2.81600e+01 + 400 400 1 9.96000e+00 -1.67454e+01 2.24900e+01 + 401 401 1 -1.40355e+01 -1.66154e+01 2.04000e+01 + 402 402 1 -4.74545e+00 1.50000e-01 -1.89254e+01 + 403 403 1 -1.74255e+01 2.13500e+01 2.41800e+01 + 404 404 1 3.10200e+01 -2.70754e+01 -5.74545e+00 + 405 405 1 -1.11855e+01 -1.30545e+00 -1.69854e+01 + 406 406 1 1.95300e+01 2.47300e+01 -2.55754e+01 + 407 407 1 2.55900e+01 -1.43754e+01 2.60300e+01 + 408 408 1 -2.59155e+01 1.75500e+01 -2.95954e+01 + 409 409 1 1.74000e+01 -1.65554e+01 3.45000e+00 + 410 410 1 -1.09055e+01 -1.05254e+01 -2.94654e+01 + 411 411 1 2.39500e+01 1.00900e+01 -8.27545e+00 + 412 412 1 -2.39255e+01 1.56200e+01 -9.03545e+00 + 413 413 1 2.03600e+01 8.71000e+00 -1.41545e+00 + 414 414 1 -5.93545e+00 1.80400e+01 -1.24254e+01 + 415 415 1 -2.29055e+01 -2.88854e+01 9.03000e+00 + 416 416 1 3.34000e+00 -1.36054e+01 -9.39545e+00 + 417 417 1 2.39300e+01 -2.87054e+01 2.77600e+01 + 418 418 1 -2.04655e+01 -2.44454e+01 2.12000e+00 + 419 419 1 1.83100e+01 -1.29754e+01 1.98000e+00 + 420 420 1 2.04400e+01 -2.71954e+01 2.11300e+01 + 421 421 1 -2.02255e+01 6.04000e+00 1.85100e+01 + 422 422 1 1.11600e+01 1.35900e+01 2.02700e+01 + 423 423 1 -1.86545e+00 -2.87754e+01 -2.98545e+00 + 424 424 1 -4.90545e+00 -1.79154e+01 2.02000e+01 + 425 425 1 -4.58545e+00 7.26000e+00 2.01000e+00 + 426 426 1 -2.60255e+01 8.34000e+00 -1.23754e+01 + 427 427 1 3.96000e+00 1.41600e+01 -5.36545e+00 + 428 428 1 7.55000e+00 2.75300e+01 5.51000e+00 + 429 429 1 -9.11545e+00 2.47200e+01 2.81500e+01 + 430 430 1 -5.67545e+00 -4.90545e+00 -1.82254e+01 + 431 431 1 3.08800e+01 -2.53754e+01 -2.98054e+01 + 432 432 1 -1.29255e+01 -1.05854e+01 -2.38254e+01 + 433 433 1 -1.84755e+01 6.93000e+00 1.51900e+01 + 434 434 1 -1.75545e+00 -3.14545e+00 -1.25654e+01 + 435 435 1 1.74550e-01 -1.92654e+01 5.84000e+00 + 436 436 1 -4.75450e-01 -1.91254e+01 -5.50545e+00 + 437 437 1 2.87300e+01 1.62000e+01 -1.62654e+01 + 438 438 1 2.37500e+01 7.45543e-02 -1.90654e+01 + 439 439 1 3.02500e+01 1.41600e+01 1.30000e+01 + 440 440 1 1.28000e+01 9.87000e+00 -2.23054e+01 + 441 441 1 1.92500e+01 -2.02054e+01 2.67000e+01 + 442 442 1 1.18000e+01 -4.72545e+00 -2.83554e+01 + 443 443 1 1.79900e+01 -3.03454e+01 4.59000e+00 + 444 444 1 -2.33255e+01 1.14200e+01 2.49000e+00 + 445 445 1 2.68200e+01 1.52600e+01 -4.15445e-01 + 446 446 1 2.51000e+01 -9.06545e+00 2.62500e+01 + 447 447 1 3.36000e+00 -2.23754e+01 -1.52054e+01 + 448 448 1 -1.67255e+01 -1.59354e+01 8.90000e-01 + 449 449 1 -9.29545e+00 -2.35654e+01 7.09000e+00 + 450 450 1 -1.52255e+01 3.45543e-02 2.90200e+01 + 451 451 1 -2.24955e+01 -9.39545e+00 5.71000e+00 + 452 452 1 5.22000e+00 -1.71954e+01 9.30000e-01 + 453 453 1 -2.45555e+01 1.88000e+00 1.85600e+01 + 454 454 1 1.07300e+01 -2.77545e+00 4.40000e+00 + 455 455 1 -2.38155e+01 -6.46545e+00 -6.15445e-01 + 456 456 1 2.52500e+01 -2.39954e+01 2.03900e+01 + 457 457 1 -2.41155e+01 -2.30000e-01 1.48500e+01 + 458 458 1 -3.08355e+01 2.68300e+01 2.30000e-01 + 459 459 1 -2.82055e+01 -2.22254e+01 8.23000e+00 + 460 460 1 1.31600e+01 -2.17254e+01 8.13000e+00 + 461 461 1 -1.11255e+01 5.62000e+00 1.06900e+01 + 462 462 1 -1.74545e+00 1.12400e+01 3.30000e-01 + 463 463 1 -1.32255e+01 1.10500e+01 2.50300e+01 + 464 464 1 2.86500e+01 9.85000e+00 -2.96854e+01 + 465 465 1 -2.61655e+01 -1.54654e+01 -3.08354e+01 + 466 466 1 -7.26545e+00 7.11000e+00 2.40500e+01 + 467 467 1 2.22600e+01 -1.61854e+01 -1.93354e+01 + 468 468 1 1.85900e+01 -1.38545e+00 1.08900e+01 + 469 469 1 2.00300e+01 2.43100e+01 9.93000e+00 + 470 470 1 1.22700e+01 -1.39754e+01 8.80000e+00 + 471 471 1 -2.46955e+01 -2.68554e+01 3.00400e+01 + 472 472 1 2.93600e+01 -2.97654e+01 1.18900e+01 + 473 473 1 -2.76455e+01 -2.70854e+01 -2.44545e+00 + 474 474 1 -1.95355e+01 -8.05545e+00 2.08800e+01 + 475 475 1 5.95000e+00 -1.98545e+00 -2.96254e+01 + 476 476 1 2.15100e+01 -9.19545e+00 1.19600e+01 + 477 477 1 -1.02355e+01 5.13000e+00 2.42400e+01 + 478 478 1 -9.86545e+00 1.27600e+01 2.26100e+01 + 479 479 1 -1.99555e+01 6.75000e+00 -2.85654e+01 + 480 480 1 -2.07655e+01 -5.00000e-02 1.75000e+01 + 481 481 1 6.77000e+00 -9.94545e+00 6.86000e+00 + 482 482 1 -2.11355e+01 4.20000e+00 -3.07154e+01 + 483 483 1 -1.97655e+01 9.81000e+00 2.64700e+01 + 484 484 1 2.95100e+01 2.67900e+01 1.49600e+01 + 485 485 1 2.58000e+01 -9.81545e+00 5.40000e-01 + 486 486 1 1.46900e+01 7.72000e+00 2.60300e+01 + 487 487 1 -2.50755e+01 -5.87545e+00 4.08000e+00 + 488 488 1 -2.81855e+01 2.86900e+01 1.53700e+01 + 489 489 1 -8.22545e+00 -3.08554e+01 5.10000e-01 + 490 490 1 -7.20545e+00 2.89100e+01 4.08000e+00 + 491 491 1 -2.52255e+01 7.34000e+00 -2.59954e+01 + 492 492 1 2.58600e+01 2.45000e+00 1.89100e+01 + 493 493 1 3.85000e+00 -1.36354e+01 2.35700e+01 + 494 494 1 3.12000e+00 2.66900e+01 2.98800e+01 + 495 495 1 -2.96545e+00 8.27000e+00 -1.59054e+01 + 496 496 1 2.89800e+01 -2.45954e+01 2.05600e+01 + 497 497 1 2.92000e+00 7.00000e-02 2.50000e+00 + 498 498 1 2.49900e+01 1.01400e+01 2.70900e+01 + 499 499 1 -1.99255e+01 1.31000e+00 -9.63545e+00 + 500 500 1 1.27400e+01 2.97200e+01 8.57000e+00 + 501 501 1 -5.96545e+00 1.38200e+01 7.49000e+00 + 502 502 1 -4.25450e-01 2.88700e+01 1.29500e+01 + 503 503 1 1.77100e+01 9.09000e+00 -1.08454e+01 + 504 504 1 2.65000e+01 2.37300e+01 -2.66154e+01 + 505 505 1 -4.97545e+00 -8.12545e+00 6.45000e+00 + 506 506 1 -1.89545e+00 -1.05954e+01 1.38300e+01 + 507 507 1 -2.32755e+01 -1.24054e+01 -2.51554e+01 + 508 508 1 -2.03455e+01 1.95400e+01 5.54555e-01 + 509 509 1 -1.87055e+01 -2.44545e+00 -7.80545e+00 + 510 510 1 -1.62655e+01 1.81000e+00 2.53000e+01 + 511 511 1 1.13900e+01 4.05000e+00 -2.75954e+01 + 512 512 1 1.46600e+01 2.17900e+01 -1.27754e+01 + 513 513 1 1.09600e+01 -1.75854e+01 9.21000e+00 + 514 514 1 -1.32755e+01 -1.69545e+00 2.07300e+01 + 515 515 1 1.65700e+01 2.75100e+01 3.93000e+00 + 516 516 1 -2.74545e+00 6.74000e+00 -1.89754e+01 + 517 517 1 2.89300e+01 -1.68854e+01 2.91400e+01 + 518 518 1 -1.70455e+01 1.08200e+01 -2.84854e+01 + 519 519 1 2.81300e+01 -1.75754e+01 -1.51754e+01 + 520 520 1 1.29400e+01 1.58700e+01 -2.23954e+01 + 521 521 1 -2.60955e+01 2.69500e+01 2.81700e+01 + 522 522 1 2.00700e+01 2.40000e+01 2.02600e+01 + 523 523 1 7.57000e+00 1.79900e+01 2.93500e+01 + 524 524 1 2.33200e+01 -2.37754e+01 2.93500e+01 + 525 525 1 1.45100e+01 -1.07654e+01 -2.40754e+01 + 526 526 1 3.01100e+01 2.91500e+01 -1.24154e+01 + 527 527 1 2.87500e+01 -2.30954e+01 8.52000e+00 + 528 528 1 2.74200e+01 1.06700e+01 1.29100e+01 + 529 529 1 -2.04155e+01 -1.74154e+01 1.11000e+01 + 530 530 1 1.76800e+01 2.73600e+01 -7.27545e+00 + 531 531 1 -1.40755e+01 -8.53545e+00 -1.49954e+01 + 532 532 1 -4.75450e-01 -2.23654e+01 1.21600e+01 + 533 533 1 -1.85755e+01 -3.09054e+01 -7.11545e+00 + 534 534 1 -4.04545e+00 -8.68545e+00 -2.96354e+01 + 535 535 1 -3.00955e+01 1.40200e+01 8.11000e+00 + 536 536 1 -3.27545e+00 1.66000e+00 -1.11154e+01 + 537 537 1 1.00000e-01 1.86000e+01 2.47000e+01 + 538 538 1 -1.43855e+01 -1.03454e+01 1.11200e+01 + 539 539 1 2.18800e+01 2.18500e+01 -1.71545e+00 + 540 540 1 -1.57355e+01 2.43200e+01 -8.55445e-01 + 541 541 1 2.01900e+01 3.43000e+00 -1.32554e+01 + 542 542 1 -1.60955e+01 -2.98154e+01 -1.02254e+01 + 543 543 1 1.96200e+01 -8.30545e+00 5.50000e+00 + 544 544 1 -3.05055e+01 1.32400e+01 1.78700e+01 + 545 545 1 1.14200e+01 -1.06154e+01 2.71600e+01 + 546 546 1 2.59000e+01 -2.91754e+01 -2.44054e+01 + 547 547 1 4.14550e-01 -1.12254e+01 3.00300e+01 + 548 548 1 8.18000e+00 8.37000e+00 1.42800e+01 + 549 549 1 -2.51055e+01 2.48200e+01 1.47000e+01 + 550 550 1 1.31000e+01 1.17800e+01 -1.95754e+01 + 551 551 1 -3.19545e+00 2.55000e+01 -1.26954e+01 + 552 552 1 1.22000e+01 -2.83054e+01 8.42000e+00 + 553 553 1 2.11600e+01 3.07600e+01 -2.38554e+01 + 554 554 1 1.59900e+01 2.79400e+01 -2.96954e+01 + 555 555 1 1.07700e+01 1.52700e+01 -9.12545e+00 + 556 556 1 -1.75855e+01 -5.97545e+00 1.28900e+01 + 557 557 1 -1.47545e+00 1.00900e+01 1.14400e+01 + 558 558 1 -1.22455e+01 4.09000e+00 -9.83545e+00 + 559 559 1 1.75500e+01 1.88000e+00 5.86000e+00 + 560 560 1 -3.55450e-01 2.34554e-01 -2.00954e+01 + 561 561 1 2.66700e+01 1.76100e+01 -9.32545e+00 + 562 562 1 -2.30655e+01 -3.85545e+00 2.84900e+01 + 563 563 1 -6.48545e+00 2.81700e+01 1.76000e+01 + 564 564 1 -2.14055e+01 -1.05554e+01 2.00900e+01 + 565 565 1 -2.52755e+01 4.94000e+00 1.02700e+01 + 566 566 1 -2.19555e+01 1.76700e+01 1.14400e+01 + 567 567 1 -1.05555e+01 -2.12654e+01 -9.36545e+00 + 568 568 1 -8.30545e+00 -1.93054e+01 -1.38254e+01 + 569 569 1 -1.63255e+01 2.43100e+01 -2.64854e+01 + 570 570 1 -2.49545e+00 2.02300e+01 -3.77545e+00 + 571 571 1 1.87100e+01 1.25400e+01 -1.27254e+01 + 572 572 1 -1.75655e+01 6.80000e+00 -1.47454e+01 + 573 573 1 2.63700e+01 7.22000e+00 1.02500e+01 + 574 574 1 1.80000e+01 -2.35054e+01 -1.76954e+01 + 575 575 1 -9.35545e+00 -1.99954e+01 9.56000e+00 + 576 576 1 -8.74545e+00 1.64000e+00 -7.30545e+00 + 577 577 1 7.71000e+00 -1.07654e+01 1.64800e+01 + 578 578 1 1.09800e+01 1.85200e+01 2.61300e+01 + 579 579 1 -2.69155e+01 3.01900e+01 -3.06654e+01 + 580 580 1 -1.99955e+01 5.70000e+00 2.30800e+01 + 581 581 1 3.10700e+01 -1.47954e+01 -8.96545e+00 + 582 582 1 -1.66755e+01 -2.57754e+01 2.67800e+01 + 583 583 1 5.69000e+00 -1.98454e+01 3.64000e+00 + 584 584 1 2.77500e+01 -2.04554e+01 3.60000e+00 + 585 585 1 -2.16255e+01 2.71500e+01 -1.80654e+01 + 586 586 1 -2.74755e+01 -1.06454e+01 1.80400e+01 + 587 587 1 3.50000e+00 -9.61545e+00 4.09000e+00 + 588 588 1 -1.81155e+01 1.59600e+01 -1.95154e+01 + 589 589 1 1.68000e+00 -9.85545e+00 2.14100e+01 + 590 590 1 -3.55545e+00 2.87200e+01 -4.00545e+00 + 591 591 1 -1.32055e+01 4.39000e+00 4.34000e+00 + 592 592 1 4.92000e+00 -3.09554e+01 -2.68454e+01 + 593 593 1 -1.74655e+01 2.24200e+01 -7.87545e+00 + 594 594 1 2.36300e+01 -1.40054e+01 2.30000e+01 + 595 595 1 1.08200e+01 3.77000e+00 -1.16554e+01 + 596 596 1 -1.35055e+01 -2.10545e+00 4.95000e+00 + 597 597 1 -3.05655e+01 1.78300e+01 -4.61545e+00 + 598 598 1 -1.23545e+00 -2.85554e+01 -1.36254e+01 + 599 599 1 2.72500e+01 -1.60254e+01 7.30000e+00 + 600 600 1 3.09200e+01 5.50000e+00 -6.47545e+00 + 601 601 1 -1.38455e+01 3.30000e-01 -2.02254e+01 + 602 602 1 2.68100e+01 -2.85954e+01 4.36000e+00 + 603 603 1 -2.45450e-01 2.54800e+01 2.10400e+01 + 604 604 1 -2.80755e+01 -3.34545e+00 1.84000e+01 + 605 605 1 -5.39545e+00 2.30500e+01 1.57800e+01 + 606 606 1 -2.07155e+01 -3.73545e+00 1.53300e+01 + 607 607 1 1.76000e+00 2.72000e+00 6.36000e+00 + 608 608 1 2.62000e+00 -2.62054e+01 -2.20254e+01 + 609 609 1 -3.50545e+00 1.01500e+01 1.85100e+01 + 610 610 1 -5.25545e+00 5.98000e+00 -2.97854e+01 + 611 611 1 1.28200e+01 7.30000e-01 -2.31054e+01 + 612 612 1 -2.39355e+01 2.55900e+01 -1.56654e+01 + 613 613 1 -2.08755e+01 -7.82545e+00 2.61000e+01 + 614 614 1 -7.10545e+00 2.26700e+01 -2.63554e+01 + 615 615 1 3.90000e+00 1.39200e+01 -1.97254e+01 + 616 616 1 -1.54855e+01 7.14000e+00 -2.03545e+00 + 617 617 1 -1.84555e+01 2.95200e+01 -8.85445e-01 + 618 618 1 2.05100e+01 1.95000e+01 -6.02545e+00 + 619 619 1 -1.38055e+01 1.63900e+01 -5.08545e+00 + 620 620 1 -2.94055e+01 -1.93254e+01 -3.06154e+01 + 621 621 1 -1.30655e+01 9.23000e+00 1.84600e+01 + 622 622 1 2.30300e+01 1.45600e+01 -1.08254e+01 + 623 623 1 -1.00555e+01 -1.60545e+00 3.15000e+00 + 624 624 1 -1.58755e+01 -1.29454e+01 4.13000e+00 + 625 625 1 -2.62555e+01 -2.20154e+01 1.29700e+01 + 626 626 1 -1.34545e+00 2.46000e+01 -4.83545e+00 + 627 627 1 -1.29355e+01 3.01200e+01 7.81000e+00 + 628 628 1 1.00600e+01 1.26500e+01 5.26000e+00 + 629 629 1 -1.47255e+01 3.52000e+00 -2.99545e+00 + 630 630 1 5.66000e+00 2.47900e+01 -2.31454e+01 + 631 631 1 2.53900e+01 8.69000e+00 3.24000e+00 + 632 632 1 5.19000e+00 -7.15545e+00 -1.33854e+01 + 633 633 1 -2.68545e+00 2.10500e+01 -2.04954e+01 + 634 634 1 -1.87155e+01 -2.45654e+01 1.92200e+01 + 635 635 1 2.81300e+01 2.16100e+01 1.61800e+01 + 636 636 1 1.21000e+00 7.50000e+00 6.15000e+00 + 637 637 1 -1.67755e+01 -1.76654e+01 2.61600e+01 + 638 638 1 -1.38355e+01 -6.44545e+00 2.39300e+01 + 639 639 1 -2.01555e+01 5.67000e+00 1.24000e+00 + 640 640 1 -1.48155e+01 -9.78545e+00 5.60000e+00 + 641 641 1 1.01800e+01 -1.13954e+01 -1.16954e+01 + 642 642 1 1.79700e+01 1.09100e+01 -2.26654e+01 + 643 643 1 -5.72545e+00 -2.59545e+00 -8.40545e+00 + 644 644 1 1.77200e+01 1.58800e+01 -2.35254e+01 + 645 645 1 -3.48545e+00 -1.54554e+01 1.22200e+01 + 646 646 1 -5.53545e+00 2.99900e+01 -2.73354e+01 + 647 647 1 -2.94455e+01 -1.34545e+00 2.15500e+01 + 648 648 1 9.38000e+00 2.98000e+01 1.61000e+00 + 649 649 1 5.42000e+00 -3.00854e+01 6.68000e+00 + 650 650 1 8.67000e+00 2.33500e+01 1.96200e+01 + 651 651 1 2.31300e+01 7.53000e+00 1.82300e+01 + 652 652 1 2.79900e+01 3.06200e+01 -1.83754e+01 + 653 653 1 1.12500e+01 -3.60545e+00 -1.06854e+01 + 654 654 1 -2.97455e+01 2.35800e+01 -3.00754e+01 + 655 655 1 2.25800e+01 -1.73954e+01 1.30000e-01 + 656 656 1 -1.73955e+01 -2.25454e+01 2.59700e+01 + 657 657 1 -2.61155e+01 -3.06454e+01 1.25200e+01 + 658 658 1 -1.72055e+01 -2.85754e+01 2.18000e+00 + 659 659 1 2.90700e+01 1.95600e+01 7.56000e+00 + 660 660 1 -2.58055e+01 1.37300e+01 8.66000e+00 + 661 661 1 2.49200e+01 2.41000e+00 2.48900e+01 + 662 662 1 -2.18355e+01 3.05300e+01 2.09600e+01 + 663 663 1 -2.47355e+01 3.00300e+01 1.53000e+01 + 664 664 1 2.40400e+01 -2.17954e+01 2.37000e+00 + 665 665 1 2.59500e+01 -1.59754e+01 -2.85454e+01 + 666 666 1 -1.17755e+01 2.06800e+01 2.55000e+01 + 667 667 1 -1.49055e+01 7.41000e+00 1.29000e+01 + 668 668 1 2.95500e+01 -1.49545e+00 -6.22545e+00 + 669 669 1 7.46000e+00 -2.13454e+01 -1.76254e+01 + 670 670 1 -2.96555e+01 2.09200e+01 1.47900e+01 + 671 671 1 -1.65655e+01 2.12300e+01 -1.65545e+00 + 672 672 1 -2.89855e+01 1.87700e+01 -1.71454e+01 + 673 673 1 4.12000e+00 -1.85454e+01 1.96400e+01 + 674 674 1 -3.04755e+01 2.53900e+01 1.27600e+01 + 675 675 1 -2.39355e+01 -3.64545e+00 -2.18954e+01 + 676 676 1 -1.00455e+01 1.44900e+01 -2.21154e+01 + 677 677 1 2.45200e+01 -1.49354e+01 1.07100e+01 + 678 678 1 -2.39855e+01 3.84554e-01 7.77000e+00 + 679 679 1 -2.48545e+00 -1.37654e+01 2.75800e+01 + 680 680 1 -2.63155e+01 -2.60754e+01 6.73000e+00 + 681 681 1 2.33600e+01 -2.46554e+01 1.66700e+01 + 682 682 1 7.46000e+00 2.80700e+01 2.88800e+01 + 683 683 1 -5.25545e+00 3.07300e+01 7.55000e+00 + 684 684 1 -3.80545e+00 3.76000e+00 -4.12545e+00 + 685 685 1 -1.11655e+01 8.13000e+00 2.16600e+01 + 686 686 1 2.17900e+01 1.76700e+01 -2.50954e+01 + 687 687 1 -1.70855e+01 2.98800e+01 -1.71654e+01 + 688 688 1 -7.03545e+00 -9.05446e-01 -1.56254e+01 + 689 689 1 -2.51955e+01 -8.29545e+00 -5.49545e+00 + 690 690 1 2.02700e+01 -2.12554e+01 -2.88154e+01 + 691 691 1 -1.52655e+01 -5.77545e+00 9.77000e+00 + 692 692 1 -2.56545e+00 1.46500e+01 -5.20545e+00 + 693 693 1 -3.03955e+01 -2.04454e+01 1.40800e+01 + 694 694 1 3.30000e+00 1.69800e+01 2.69200e+01 + 695 695 1 1.46900e+01 -2.63754e+01 1.59900e+01 + 696 696 1 -8.65545e+00 -9.62545e+00 1.48700e+01 + 697 697 1 -6.15450e-01 2.33300e+01 -1.61754e+01 + 698 698 1 -8.43545e+00 1.00000e-01 -1.17254e+01 + 699 699 1 4.30000e+00 3.09800e+01 -2.01854e+01 + 700 700 1 1.71700e+01 -1.84545e+00 -3.61545e+00 + 701 701 1 2.92100e+01 -1.00254e+01 -2.25454e+01 + 702 702 1 -3.74545e+00 -3.08354e+01 -1.70954e+01 + 703 703 1 8.03000e+00 5.45000e+00 -1.85545e+00 + 704 704 1 -4.86545e+00 -6.28545e+00 -1.19454e+01 + 705 705 1 2.72300e+01 -1.43545e+00 2.27200e+01 + 706 706 1 -2.45555e+01 -1.85754e+01 2.59000e+01 + 707 707 1 -2.90155e+01 -4.22545e+00 -1.71454e+01 + 708 708 1 -5.39545e+00 1.58400e+01 1.72300e+01 + 709 709 1 3.57000e+00 1.84000e+00 -7.42545e+00 + 710 710 1 -1.52755e+01 -2.71954e+01 -1.42754e+01 + 711 711 1 -4.61545e+00 -2.66454e+01 -8.20545e+00 + 712 712 1 2.75600e+01 2.16700e+01 2.00700e+01 + 713 713 1 -1.33355e+01 8.37000e+00 2.57000e+00 + 714 714 1 2.83400e+01 -2.83454e+01 2.88800e+01 + 715 715 1 2.32100e+01 -1.98754e+01 -9.54545e+00 + 716 716 1 2.03100e+01 5.04000e+00 -2.43654e+01 + 717 717 1 -1.65355e+01 2.64100e+01 -2.33154e+01 + 718 718 1 2.68900e+01 -2.62254e+01 -1.23754e+01 + 719 719 1 -1.35055e+01 3.10600e+01 2.99000e+01 + 720 720 1 2.48400e+01 2.93900e+01 -1.69154e+01 + 721 721 1 -2.08655e+01 -2.48545e+00 -1.31454e+01 + 722 722 1 -1.07655e+01 2.09300e+01 -2.96354e+01 + 723 723 1 2.55400e+01 -3.65545e+00 -1.40545e+00 + 724 724 1 1.48000e+00 2.83100e+01 1.73900e+01 + 725 725 1 3.00000e+00 -5.11545e+00 -2.86754e+01 + 726 726 1 -2.96355e+01 3.10300e+01 -1.82754e+01 + 727 727 1 -7.90545e+00 -1.92754e+01 4.30000e+00 + 728 728 1 -2.88555e+01 1.29200e+01 1.14000e+01 + 729 729 1 -2.32155e+01 -8.52545e+00 1.69800e+01 + 730 730 1 2.15100e+01 -2.88254e+01 -2.88354e+01 + 731 731 1 7.80000e-01 -1.48254e+01 -2.56545e+00 + 732 732 1 9.81000e+00 9.40000e-01 1.91500e+01 + 733 733 1 3.03200e+01 -5.07545e+00 2.99800e+01 + 734 734 1 -2.58955e+01 -2.96454e+01 1.99700e+01 + 735 735 1 -1.06655e+01 -1.31854e+01 9.69000e+00 + 736 736 1 2.73600e+01 2.24600e+01 7.84000e+00 + 737 737 1 5.56000e+00 -2.04454e+01 -2.77854e+01 + 738 738 1 1.06900e+01 2.17300e+01 -9.87545e+00 + 739 739 1 2.46500e+01 2.64200e+01 1.55000e+01 + 740 740 1 -1.05855e+01 3.08500e+01 5.69000e+00 + 741 741 1 -4.13545e+00 -1.61654e+01 -3.07654e+01 + 742 742 1 -2.92545e+00 1.47000e+00 1.48500e+01 + 743 743 1 1.92000e+00 4.17000e+00 3.10000e+00 + 744 744 1 1.22000e+01 -2.02254e+01 3.18000e+00 + 745 745 1 2.19000e+01 -3.03454e+01 -1.52454e+01 + 746 746 1 1.14000e+01 3.05600e+01 -9.02545e+00 + 747 747 1 -9.92545e+00 -6.28545e+00 -2.97754e+01 + 748 748 1 1.63000e+01 1.13500e+01 1.56400e+01 + 749 749 1 -1.75155e+01 -3.00554e+01 -2.44054e+01 + 750 750 1 -2.15455e+01 -6.18545e+00 -1.52054e+01 + 751 751 1 4.49000e+00 6.81000e+00 -2.82654e+01 + 752 752 1 2.74500e+01 -8.52545e+00 9.82000e+00 + 753 753 1 2.99000e+01 -2.36354e+01 -1.90254e+01 + 754 754 1 5.93000e+00 1.31600e+01 3.01700e+01 + 755 755 1 7.90000e-01 -2.71154e+01 -1.67054e+01 + 756 756 1 -5.91545e+00 -2.70554e+01 -3.06354e+01 + 757 757 1 -7.52545e+00 2.10400e+01 -1.77545e+00 + 758 758 1 -1.91455e+01 -3.74545e+00 6.79000e+00 + 759 759 1 -7.91545e+00 -3.90545e+00 -2.67154e+01 + 760 760 1 1.83300e+01 -1.64154e+01 1.82400e+01 + 761 761 1 1.45900e+01 -7.51545e+00 -6.34545e+00 + 762 762 1 7.13000e+00 1.50100e+01 -2.33954e+01 + 763 763 1 -9.00000e-02 2.91200e+01 -1.11154e+01 + 764 764 1 -9.35545e+00 4.60000e-01 2.02600e+01 + 765 765 1 1.95600e+01 -2.82154e+01 -1.45445e-01 + 766 766 1 2.67100e+01 -2.13454e+01 -2.36454e+01 + 767 767 1 2.79000e+01 -6.48545e+00 -8.01545e+00 + 768 768 1 -2.26455e+01 9.89000e+00 -2.26545e+00 + 769 769 1 2.57200e+01 3.03900e+01 1.70100e+01 + 770 770 1 -1.39555e+01 -1.40954e+01 1.21500e+01 + 771 771 1 -1.84545e+00 -2.53854e+01 -3.00654e+01 + 772 772 1 1.67700e+01 -2.17054e+01 4.98000e+00 + 773 773 1 -2.23655e+01 1.90000e+00 1.24555e-01 + 774 774 1 8.11000e+00 -4.54545e+00 2.97200e+01 + 775 775 1 -2.30755e+01 -2.51254e+01 -9.09545e+00 + 776 776 1 -1.89755e+01 -2.03554e+01 -2.62854e+01 + 777 777 1 1.42800e+01 5.69000e+00 1.66100e+01 + 778 778 1 5.75000e+00 -2.22154e+01 -2.47854e+01 + 779 779 1 3.68000e+00 1.92900e+01 5.11000e+00 + 780 780 1 5.02000e+00 -1.63545e+00 -1.43954e+01 + 781 781 1 2.81400e+01 -1.44654e+01 -2.13454e+01 + 782 782 1 -7.80545e+00 -8.52545e+00 -1.54254e+01 + 783 783 1 -5.98545e+00 1.21500e+01 3.39000e+00 + 784 784 1 -2.95455e+01 -9.05545e+00 -2.71354e+01 + 785 785 1 1.67300e+01 9.35000e+00 -1.89654e+01 + 786 786 1 1.34500e+01 -2.69354e+01 -5.72545e+00 + 787 787 1 -7.15450e-01 -2.11854e+01 -1.45054e+01 + 788 788 1 -1.95545e+00 -2.54354e+01 -2.03554e+01 + 789 789 1 1.75600e+01 -9.86545e+00 -6.15445e-01 + 790 790 1 1.76900e+01 2.64000e+00 -1.00954e+01 + 791 791 1 1.61600e+01 -1.85254e+01 -3.68545e+00 + 792 792 1 -8.15450e-01 -2.06854e+01 -3.07354e+01 + 793 793 1 -6.44545e+00 -1.38545e+00 2.09000e+01 + 794 794 1 1.81400e+01 -2.26545e+00 -1.59254e+01 + 795 795 1 -2.27055e+01 -2.51654e+01 1.59400e+01 + 796 796 1 -2.80455e+01 1.37200e+01 -2.06654e+01 + 797 797 1 -1.39055e+01 -3.04154e+01 -1.64054e+01 + 798 798 1 4.95000e+00 -2.37154e+01 1.27000e+00 + 799 799 1 2.04000e+01 -1.30254e+01 1.61000e+01 + 800 800 1 2.22900e+01 -8.35446e-01 1.82900e+01 + 801 801 1 7.38000e+00 -1.75954e+01 1.31000e+01 + 802 802 1 1.78000e+00 5.18000e+00 -1.75654e+01 + 803 803 1 7.60000e+00 -2.95054e+01 -1.84254e+01 + 804 804 1 -1.40755e+01 -2.21545e+00 -1.32854e+01 + 805 805 1 -1.82255e+01 -2.61154e+01 -1.77754e+01 + 806 806 1 2.90900e+01 1.41200e+01 -1.05654e+01 + 807 807 1 -1.21755e+01 -5.92545e+00 4.63000e+00 + 808 808 1 1.95600e+01 -2.08054e+01 8.21000e+00 + 809 809 1 -1.06155e+01 1.07900e+01 -8.48545e+00 + 810 810 1 -3.10155e+01 1.46400e+01 -1.38354e+01 + 811 811 1 -3.08455e+01 -2.07954e+01 3.50000e-01 + 812 812 1 1.41800e+01 -2.23054e+01 1.98800e+01 + 813 813 1 -1.66755e+01 8.61000e+00 3.98000e+00 + 814 814 1 4.64000e+00 1.84100e+01 1.58100e+01 + 815 815 1 2.63500e+01 -2.00454e+01 -8.08545e+00 + 816 816 1 -2.67955e+01 -2.96354e+01 -5.10545e+00 + 817 817 1 -2.87855e+01 2.06300e+01 2.67200e+01 + 818 818 1 1.72600e+01 1.47600e+01 2.11100e+01 + 819 819 1 -1.90955e+01 1.01900e+01 -7.13545e+00 + 820 820 1 1.74700e+01 -2.27954e+01 -2.96354e+01 + 821 821 1 2.04200e+01 1.81700e+01 7.25000e+00 + 822 822 1 2.56100e+01 1.20600e+01 -2.81954e+01 + 823 823 1 -1.22545e+00 -1.17454e+01 1.82400e+01 + 824 824 1 2.46000e+01 5.40000e+00 -1.21545e+00 + 825 825 1 -1.85755e+01 -2.50354e+01 -1.36954e+01 + 826 826 1 -3.05450e-01 1.67500e+01 -2.46954e+01 + 827 827 1 2.71300e+01 2.57100e+01 4.10000e+00 + 828 828 1 3.00500e+01 1.01700e+01 -2.15654e+01 + 829 829 1 -9.69545e+00 2.29900e+01 -9.75545e+00 + 830 830 1 -2.55355e+01 2.33900e+01 5.50000e+00 + 831 831 1 -6.00000e-02 -2.47554e+01 5.73000e+00 + 832 832 1 4.26000e+00 3.25000e+00 -2.06354e+01 + 833 833 1 -2.55555e+01 2.70700e+01 1.94200e+01 + 834 834 1 -1.70955e+01 1.96800e+01 4.74000e+00 + 835 835 1 -2.75450e-01 2.94000e+01 -2.70554e+01 + 836 836 1 1.88900e+01 -5.30545e+00 -1.14545e+00 + 837 837 1 -2.16355e+01 1.87500e+01 2.57300e+01 + 838 838 1 -1.09055e+01 3.08000e+00 1.66200e+01 + 839 839 1 2.32400e+01 6.01000e+00 2.72800e+01 + 840 840 1 -2.73955e+01 -2.33954e+01 -2.11554e+01 + 841 841 1 1.64600e+01 2.05000e+01 -2.98754e+01 + 842 842 1 -2.36855e+01 7.41000e+00 2.58900e+01 + 843 843 1 -1.84855e+01 1.43000e+00 -1.69454e+01 + 844 844 1 -2.99655e+01 7.06000e+00 2.49000e+00 + 845 845 1 9.18000e+00 1.78200e+01 -4.78545e+00 + 846 846 1 2.19100e+01 9.99000e+00 1.01000e+01 + 847 847 1 1.57100e+01 -2.31254e+01 2.71300e+01 + 848 848 1 -2.80000e-01 -2.96954e+01 -3.05854e+01 + 849 849 1 1.59900e+01 1.12900e+01 -6.47545e+00 + 850 850 1 1.05100e+01 2.41300e+01 -1.89554e+01 + 851 851 1 2.11700e+01 7.85000e+00 -1.25854e+01 + 852 852 1 -2.56555e+01 -1.17554e+01 2.18000e+01 + 853 853 1 2.80600e+01 -1.98354e+01 -2.07154e+01 + 854 854 1 1.18700e+01 2.22800e+01 -2.55445e-01 + 855 855 1 -1.34855e+01 7.60000e-01 1.71900e+01 + 856 856 1 1.43600e+01 2.37900e+01 -1.96454e+01 + 857 857 1 -1.97955e+01 2.16100e+01 -2.32254e+01 + 858 858 1 1.41200e+01 1.66900e+01 3.03700e+01 + 859 859 1 -1.79545e+00 -2.90654e+01 -2.35554e+01 + 860 860 1 -1.13255e+01 1.75200e+01 -2.80154e+01 + 861 861 1 -2.88355e+01 2.46000e+01 2.39900e+01 + 862 862 1 1.97600e+01 -6.65545e+00 -7.10545e+00 + 863 863 1 5.09000e+00 -2.69554e+01 2.26100e+01 + 864 864 1 3.20000e-01 5.71000e+00 -2.14154e+01 + 865 865 1 1.68200e+01 9.00000e+00 7.96000e+00 + 866 866 1 2.20500e+01 -2.45854e+01 2.46900e+01 + 867 867 1 2.62200e+01 2.93000e+00 -2.86654e+01 + 868 868 1 1.29700e+01 5.96000e+00 -3.78545e+00 + 869 869 1 -1.24255e+01 -1.23545e+00 -9.95545e+00 + 870 870 1 -2.88545e+00 -1.78154e+01 2.82000e+01 + 871 871 1 1.99700e+01 2.69500e+01 -1.09354e+01 + 872 872 1 2.86700e+01 1.32700e+01 1.89000e+01 + 873 873 1 6.25000e+00 -4.94545e+00 2.54900e+01 + 874 874 1 -1.42255e+01 1.27300e+01 2.09400e+01 + 875 875 1 -8.01545e+00 2.40600e+01 1.49000e+00 + 876 876 1 1.18400e+01 2.80500e+01 1.39200e+01 + 877 877 1 1.32600e+01 -1.15454e+01 1.64800e+01 + 878 878 1 -1.98555e+01 1.07300e+01 2.13700e+01 + 879 879 1 -7.69545e+00 -2.35754e+01 -2.07054e+01 + 880 880 1 -2.34055e+01 -1.46454e+01 5.79000e+00 + 881 881 1 2.70800e+01 -2.36754e+01 4.17000e+00 + 882 882 1 -5.90545e+00 -1.90754e+01 8.67000e+00 + 883 883 1 -2.18055e+01 2.26500e+01 -5.52545e+00 + 884 884 1 2.55800e+01 3.01100e+01 2.81000e+00 + 885 885 1 2.18400e+01 2.24800e+01 3.01600e+01 + 886 886 1 2.83000e+00 -7.92545e+00 1.59000e+00 + 887 887 1 -2.92545e+00 -1.97454e+01 2.52900e+01 + 888 888 1 -6.65450e-01 -4.10545e+00 -6.75445e-01 + 889 889 1 1.63800e+01 1.46300e+01 -1.94654e+01 + 890 890 1 -4.66545e+00 2.16400e+01 -1.36354e+01 + 891 891 1 1.57400e+01 1.32000e+01 7.26000e+00 + 892 892 1 7.34000e+00 2.44100e+01 -2.61054e+01 + 893 893 1 -2.23655e+01 4.46000e+00 1.57900e+01 + 894 894 1 -1.74155e+01 -1.36454e+01 2.11300e+01 + 895 895 1 2.47100e+01 -2.35754e+01 -1.25454e+01 + 896 896 1 -1.39455e+01 1.40100e+01 -1.17554e+01 + 897 897 1 3.20000e+00 2.32900e+01 5.08000e+00 + 898 898 1 -1.32255e+01 3.04000e+01 1.72700e+01 + 899 899 1 -2.27755e+01 7.74000e+00 -9.11545e+00 + 900 900 1 8.29000e+00 1.89400e+01 1.46900e+01 + 901 901 1 2.11800e+01 1.82100e+01 3.03500e+01 + 902 902 1 -1.20055e+01 -1.62254e+01 4.27000e+00 + 903 903 1 -2.01155e+01 1.97800e+01 -1.69754e+01 + 904 904 1 1.26900e+01 -1.53554e+01 1.66100e+01 + 905 905 1 1.52500e+01 -3.04854e+01 2.55500e+01 + 906 906 1 1.04100e+01 -1.88854e+01 -2.32545e+00 + 907 907 1 -8.36545e+00 8.42000e+00 2.07000e+00 + 908 908 1 -2.21055e+01 6.18000e+00 7.89000e+00 + 909 909 1 -2.00055e+01 2.57000e+01 2.60500e+01 + 910 910 1 5.73000e+00 9.65000e+00 -1.30554e+01 + 911 911 1 -2.87155e+01 2.93500e+01 -7.50545e+00 + 912 912 1 -1.70855e+01 -1.41354e+01 -2.04254e+01 + 913 913 1 -8.51545e+00 -2.27054e+01 1.13100e+01 + 914 914 1 -6.12545e+00 5.60000e-01 -2.92354e+01 + 915 915 1 -9.92545e+00 1.07900e+01 1.47500e+01 + 916 916 1 -2.14755e+01 7.70000e-01 -2.56254e+01 + 917 917 1 -2.61655e+01 -6.59545e+00 -1.56454e+01 + 918 918 1 1.69200e+01 -9.54545e+00 7.69000e+00 + 919 919 1 -2.96455e+01 -6.82545e+00 -4.45445e-01 + 920 920 1 7.70000e+00 2.35800e+01 8.64000e+00 + 921 921 1 -1.89355e+01 -2.64854e+01 1.00600e+01 + 922 922 1 8.63000e+00 -4.52545e+00 2.12200e+01 + 923 923 1 1.85200e+01 -2.09354e+01 1.71700e+01 + 924 924 1 -1.05855e+01 1.97000e+00 -1.34954e+01 + 925 925 1 -2.45450e-01 2.50000e+00 1.13500e+01 + 926 926 1 -2.19455e+01 -1.23254e+01 2.26000e+00 + 927 927 1 1.73100e+01 -2.87854e+01 -8.09545e+00 + 928 928 1 -9.80545e+00 -1.91754e+01 -1.96754e+01 + 929 929 1 5.13000e+00 2.59000e+00 -2.63054e+01 + 930 930 1 -1.36055e+01 -3.00545e+00 1.50300e+01 + 931 931 1 2.08000e+00 8.30000e-01 -4.49545e+00 + 932 932 1 -1.18755e+01 -1.92254e+01 1.31500e+01 + 933 933 1 -2.14955e+01 1.59400e+01 2.03500e+01 + 934 934 1 -1.24055e+01 8.16000e+00 -4.96545e+00 + 935 935 1 1.06300e+01 2.54200e+01 2.95600e+01 + 936 936 1 -1.43555e+01 -1.00954e+01 -1.96654e+01 + 937 937 1 2.55700e+01 1.30900e+01 -7.05545e+00 + 938 938 1 -9.40545e+00 1.52300e+01 -1.17754e+01 + 939 939 1 2.07000e+00 -1.80154e+01 2.38400e+01 + 940 940 1 1.35200e+01 1.98300e+01 9.96000e+00 + 941 941 1 1.26000e+01 -2.00545e+00 2.65500e+01 + 942 942 1 1.57800e+01 3.20000e-01 1.49200e+01 + 943 943 1 8.67000e+00 2.64500e+01 2.57800e+01 + 944 944 1 -2.87255e+01 6.67000e+00 -1.01454e+01 + 945 945 1 2.09000e+00 -6.12545e+00 1.28300e+01 + 946 946 1 -1.72055e+01 3.74000e+00 -2.08054e+01 + 947 947 1 7.30000e-01 5.72000e+00 1.05500e+01 + 948 948 1 1.87800e+01 -1.56954e+01 6.46000e+00 + 949 949 1 2.29600e+01 7.80000e+00 1.42500e+01 + 950 950 1 -1.22155e+01 2.73400e+01 -2.88554e+01 + 951 951 1 2.31700e+01 -2.62154e+01 1.19000e+01 + 952 952 1 1.03100e+01 -1.60000e-01 9.87000e+00 + 953 953 1 -1.98255e+01 -2.82954e+01 -1.11754e+01 + 954 954 1 -2.43955e+01 2.30200e+01 1.73300e+01 + 955 955 1 1.25500e+01 2.75200e+01 1.11000e+00 + 956 956 1 -1.93755e+01 -1.81545e+00 2.59900e+01 + 957 957 1 -5.22545e+00 -3.06054e+01 -5.32545e+00 + 958 958 1 2.97700e+01 7.90000e-01 -1.60854e+01 + 959 959 1 2.39500e+01 1.57600e+01 -4.82545e+00 + 960 960 1 -2.60255e+01 -3.23545e+00 -1.64545e+00 + 961 961 1 -1.26955e+01 1.36900e+01 4.35000e+00 + 962 962 1 -2.22855e+01 3.62000e+00 -1.51554e+01 + 963 963 1 2.19700e+01 -1.61654e+01 -1.01954e+01 + 964 964 1 -2.62755e+01 -2.78854e+01 1.59200e+01 + 965 965 1 2.05700e+01 1.65800e+01 2.56000e+00 + 966 966 1 -9.24545e+00 -1.81545e+00 8.19000e+00 + 967 967 1 -1.08355e+01 -1.22454e+01 -1.90554e+01 + 968 968 1 -2.10155e+01 -1.71854e+01 2.33100e+01 + 969 969 1 -4.40545e+00 -1.28545e+00 -2.22354e+01 + 970 970 1 -2.95955e+01 -2.89854e+01 2.22400e+01 + 971 971 1 -1.23545e+00 -1.16854e+01 -8.34545e+00 + 972 972 1 -5.23545e+00 2.34600e+01 -1.72654e+01 + 973 973 1 4.94000e+00 1.87600e+01 2.43200e+01 + 974 974 1 3.38000e+00 -1.51054e+01 -1.41154e+01 + 975 975 1 -1.13545e+00 -7.63545e+00 -2.21454e+01 + 976 976 1 3.03600e+01 -9.91545e+00 2.22000e+01 + 977 977 1 -1.91155e+01 1.56500e+01 1.66300e+01 + 978 978 1 1.80000e-01 -1.22554e+01 -2.78354e+01 + 979 979 1 2.98200e+01 9.37000e+00 -2.63054e+01 + 980 980 1 -2.21055e+01 1.12100e+01 -2.69754e+01 + 981 981 1 -1.97755e+01 2.71200e+01 -1.33354e+01 + 982 982 1 1.85600e+01 1.34200e+01 -2.74954e+01 + 983 983 1 -1.23855e+01 2.49800e+01 -2.42354e+01 + 984 984 1 -3.07055e+01 1.71400e+01 2.51800e+01 + 985 985 1 -4.55545e+00 2.39900e+01 -3.79545e+00 + 986 986 1 1.50800e+01 -4.60545e+00 2.17300e+01 + 987 987 1 2.77000e+00 2.25600e+01 -1.43354e+01 + 988 988 1 1.11500e+01 1.90200e+01 2.17000e+01 + 989 989 1 -1.50955e+01 -2.01254e+01 -2.39954e+01 + 990 990 1 -2.00855e+01 -9.66545e+00 -6.45445e-01 + 991 991 1 -1.12355e+01 -3.49545e+00 -2.59054e+01 + 992 992 1 1.78200e+01 -2.85254e+01 -1.17354e+01 + 993 993 1 1.49400e+01 2.33100e+01 6.58000e+00 + 994 994 1 -1.35755e+01 -2.12554e+01 2.61600e+01 + 995 995 1 -1.43355e+01 1.27500e+01 2.98700e+01 + 996 996 1 7.60000e+00 2.72200e+01 -1.06654e+01 + 997 997 1 1.05800e+01 -1.24545e+00 2.28500e+01 + 998 998 1 -9.75545e+00 -1.28354e+01 -2.62254e+01 + 999 999 1 1.35300e+01 -1.82854e+01 -1.85445e-01 + 1000 1000 1 -2.73255e+01 -9.72545e+00 -1.83654e+01 + 1001 1001 1 -2.62455e+01 2.21000e+00 6.39000e+00 + 1002 1002 1 -1.63055e+01 -2.37854e+01 -2.70754e+01 + 1003 1003 1 -1.53455e+01 1.39600e+01 -2.74654e+01 + 1004 1004 1 -2.53055e+01 -2.03545e+00 -1.12454e+01 + 1005 1005 1 1.17700e+01 -1.07254e+01 -3.07454e+01 + 1006 1006 1 2.68000e+01 -1.58354e+01 -2.09545e+00 + 1007 1007 1 1.25600e+01 2.70700e+01 -1.67654e+01 + 1008 1008 1 -1.61455e+01 -1.69154e+01 -1.00854e+01 + 1009 1009 1 -2.49255e+01 5.11000e+00 1.98500e+01 + 1010 1010 1 -2.36655e+01 -3.90545e+00 2.43500e+01 + 1011 1011 1 2.48800e+01 3.00700e+01 2.03400e+01 + 1012 1012 1 -7.26545e+00 8.69000e+00 -4.91545e+00 + 1013 1013 1 2.09200e+01 -1.20754e+01 7.82000e+00 + 1014 1014 1 -2.99455e+01 1.00200e+01 -1.02054e+01 + 1015 1015 1 -2.55450e-01 1.73300e+01 -7.60545e+00 + 1016 1016 1 -2.06755e+01 -1.50454e+01 1.81000e+01 + 1017 1017 1 3.59000e+00 1.30000e+01 -1.02545e+00 + 1018 1018 1 -2.40255e+01 2.49000e+00 -7.18545e+00 + 1019 1019 1 3.36000e+00 -1.65054e+01 -3.67545e+00 + 1020 1020 1 5.94000e+00 1.08700e+01 2.11000e+01 + 1021 1021 1 -2.57655e+01 -1.58954e+01 -2.13654e+01 + 1022 1022 1 2.23000e+00 -3.17545e+00 1.96000e+01 + 1023 1023 1 1.04000e+01 2.22300e+01 -2.37054e+01 + 1024 1024 1 2.26300e+01 -1.31654e+01 -6.14545e+00 + 1025 1025 1 -1.51055e+01 1.65000e+01 -2.97354e+01 + 1026 1026 1 -2.26855e+01 2.22200e+01 -1.29354e+01 + 1027 1027 1 3.36000e+00 -1.28545e+00 2.29500e+01 + 1028 1028 1 2.56000e+00 2.79200e+01 2.62800e+01 + 1029 1029 1 -4.36545e+00 -2.65854e+01 7.22000e+00 + 1030 1030 1 -2.84545e+00 1.65100e+01 -2.26254e+01 + 1031 1031 1 2.32000e+01 -1.32154e+01 -2.84954e+01 + 1032 1032 1 -8.86545e+00 -2.37545e+00 -2.08954e+01 + 1033 1033 1 -8.97545e+00 1.54400e+01 1.53500e+01 + 1034 1034 1 -6.10545e+00 2.95200e+01 -9.73545e+00 + 1035 1035 1 2.72900e+01 1.09400e+01 -1.93154e+01 + 1036 1036 1 -2.34555e+01 9.18000e+00 2.05800e+01 + 1037 1037 1 2.19700e+01 2.38100e+01 2.61000e+01 + 1038 1038 1 -1.90455e+01 -1.09454e+01 1.64900e+01 + 1039 1039 1 -3.03545e+00 1.71200e+01 9.06000e+00 + 1040 1040 1 1.82500e+01 -1.27354e+01 1.23800e+01 + 1041 1041 1 -2.30545e+00 2.76400e+01 -2.39054e+01 + 1042 1042 1 2.08100e+01 -2.43654e+01 -1.94154e+01 + 1043 1043 1 -8.10545e+00 1.92300e+01 2.09100e+01 + 1044 1044 1 -5.39545e+00 1.39000e+01 1.16600e+01 + 1045 1045 1 1.01600e+01 -1.52854e+01 3.01400e+01 + 1046 1046 1 -2.71355e+01 8.22000e+00 2.57900e+01 + 1047 1047 1 2.96900e+01 -2.41154e+01 -2.46545e+00 + 1048 1048 1 -1.00655e+01 -9.79545e+00 -2.15454e+01 + 1049 1049 1 -3.45450e-01 1.84000e+00 -1.05545e+00 + 1050 1050 1 -1.83955e+01 -6.44545e+00 1.66600e+01 + 1051 1051 1 -8.90545e+00 -1.22854e+01 -1.09545e+00 + 1052 1052 1 1.03000e+01 -9.80545e+00 -2.40254e+01 + 1053 1053 1 -5.98545e+00 -6.05446e-01 3.53000e+00 + 1054 1054 1 -1.29545e+00 -1.17854e+01 -1.91954e+01 + 1055 1055 1 2.24600e+01 -2.43554e+01 4.04000e+00 + 1056 1056 1 2.25700e+01 -1.15254e+01 -1.14854e+01 + 1057 1057 1 2.37700e+01 2.57800e+01 7.02000e+00 + 1058 1058 1 -1.00555e+01 -1.56754e+01 -8.85545e+00 + 1059 1059 1 -1.59455e+01 -4.21545e+00 -8.91545e+00 + 1060 1060 1 -1.47055e+01 -3.00654e+01 -9.45445e-01 + 1061 1061 1 3.35000e+00 3.07100e+01 9.95000e+00 + 1062 1062 1 1.20200e+01 1.68500e+01 7.34000e+00 + 1063 1063 1 1.58800e+01 -1.48354e+01 -2.13354e+01 + 1064 1064 1 -1.31955e+01 -7.00545e+00 -1.86154e+01 + 1065 1065 1 -7.14545e+00 9.28000e+00 1.67900e+01 + 1066 1066 1 9.12000e+00 -1.33754e+01 1.43400e+01 + 1067 1067 1 2.16600e+01 2.71600e+01 -1.82854e+01 + 1068 1068 1 -2.66155e+01 -2.60954e+01 1.99700e+01 + 1069 1069 1 1.76700e+01 -2.89554e+01 1.68700e+01 + 1070 1070 1 2.13200e+01 -1.56545e+00 -2.68754e+01 + 1071 1071 1 -2.15555e+01 1.34300e+01 2.70000e+01 + 1072 1072 1 -1.14155e+01 -7.99545e+00 -1.43545e+00 + 1073 1073 1 -1.17955e+01 2.21800e+01 -4.90545e+00 + 1074 1074 1 2.94500e+01 1.89100e+01 -2.87554e+01 + 1075 1075 1 -2.83255e+01 -4.55446e-01 1.13500e+01 + 1076 1076 1 -2.38655e+01 -8.82545e+00 -9.63545e+00 + 1077 1077 1 2.05700e+01 -3.71545e+00 1.50900e+01 + 1078 1078 1 2.98000e+00 2.13000e+01 2.25900e+01 + 1079 1079 1 -2.91055e+01 -2.59754e+01 -1.70154e+01 + 1080 1080 1 -4.35545e+00 -7.09545e+00 2.29300e+01 + 1081 1081 1 2.75300e+01 7.59000e+00 -1.56754e+01 + 1082 1082 1 -2.56545e+00 1.80100e+01 -1.01954e+01 + 1083 1083 1 -9.68545e+00 -1.66254e+01 -2.83545e+00 + 1084 1084 1 1.85200e+01 -7.94545e+00 2.19600e+01 + 1085 1085 1 -2.00000e-01 2.24100e+01 7.12000e+00 + 1086 1086 1 -6.62545e+00 6.54000e+00 9.47000e+00 + 1087 1087 1 -5.43545e+00 -2.14554e+01 6.49000e+00 + 1088 1088 1 6.29000e+00 3.08100e+01 3.02400e+01 + 1089 1089 1 -2.94955e+01 1.74100e+01 8.89000e+00 + 1090 1090 1 -8.23545e+00 6.58000e+00 1.39400e+01 + 1091 1091 1 -1.35555e+01 2.16600e+01 5.16000e+00 + 1092 1092 1 -9.14545e+00 1.60200e+01 4.40000e-01 + 1093 1093 1 -8.15545e+00 -1.24254e+01 7.25000e+00 + 1094 1094 1 1.40900e+01 1.93500e+01 -2.25854e+01 + 1095 1095 1 9.80000e+00 -3.03454e+01 1.54400e+01 + 1096 1096 1 -8.60545e+00 1.26500e+01 2.68500e+01 + 1097 1097 1 -3.06955e+01 -4.63545e+00 1.50800e+01 + 1098 1098 1 -1.30055e+01 2.63100e+01 -1.96354e+01 + 1099 1099 1 1.82800e+01 2.41200e+01 -1.40354e+01 + 1100 1100 1 5.84000e+00 2.69600e+01 1.57000e+00 + 1101 1101 1 -1.52155e+01 -9.95545e+00 -6.42545e+00 + 1102 1102 1 1.80000e+00 2.09400e+01 -3.26545e+00 + 1103 1103 1 -8.03545e+00 -2.68854e+01 6.96000e+00 + 1104 1104 1 2.96600e+01 -1.03854e+01 6.72000e+00 + 1105 1105 1 2.66600e+01 1.22400e+01 5.26000e+00 + 1106 1106 1 -2.29855e+01 -1.75545e+00 1.18900e+01 + 1107 1107 1 -7.95450e-01 4.65000e+00 -1.40154e+01 + 1108 1108 1 -1.35455e+01 1.87000e+00 -1.66754e+01 + 1109 1109 1 -2.44355e+01 2.45500e+01 1.00700e+01 + 1110 1110 1 -1.95155e+01 1.45600e+01 -2.61954e+01 + 1111 1111 1 -2.09755e+01 2.31300e+01 -2.03654e+01 + 1112 1112 1 -3.06355e+01 -2.77654e+01 2.50000e+01 + 1113 1113 1 -9.68545e+00 -1.50854e+01 2.91400e+01 + 1114 1114 1 -1.53955e+01 -5.63545e+00 -2.35554e+01 + 1115 1115 1 1.47300e+01 -1.57154e+01 2.41200e+01 + 1116 1116 1 -6.91545e+00 9.32000e+00 6.79000e+00 + 1117 1117 1 1.21000e+01 -5.20545e+00 2.04000e+01 + 1118 1118 1 -1.58955e+01 2.15600e+01 -1.78654e+01 + 1119 1119 1 -1.50855e+01 2.90500e+01 -1.32454e+01 + 1120 1120 1 2.35000e+00 -1.46854e+01 -2.41954e+01 + 1121 1121 1 1.15500e+01 -7.48545e+00 3.01200e+01 + 1122 1122 1 -2.68055e+01 1.03000e+01 -1.56054e+01 + 1123 1123 1 2.68200e+01 -7.20545e+00 -2.67054e+01 + 1124 1124 1 -1.02555e+01 -5.85545e+00 -2.32854e+01 + 1125 1125 1 -1.19855e+01 9.60000e-01 2.91200e+01 + 1126 1126 1 1.93000e+00 9.92000e+00 1.07200e+01 + 1127 1127 1 6.47000e+00 -2.91154e+01 -9.32545e+00 + 1128 1128 1 -2.70855e+01 1.60300e+01 4.92000e+00 + 1129 1129 1 -1.09155e+01 -1.70754e+01 2.43600e+01 + 1130 1130 1 -2.20155e+01 1.57900e+01 -2.98545e+00 + 1131 1131 1 6.18000e+00 -2.06545e+00 3.32000e+00 + 1132 1132 1 8.10000e-01 -2.72054e+01 -2.70554e+01 + 1133 1133 1 9.20000e-01 -1.91854e+01 7.30000e-01 + 1134 1134 1 2.53100e+01 -3.12545e+00 -9.90545e+00 + 1135 1135 1 -4.83545e+00 3.03400e+01 1.11200e+01 + 1136 1136 1 -9.66545e+00 -4.44545e+00 2.05100e+01 + 1137 1137 1 -8.25545e+00 2.78900e+01 9.54000e+00 + 1138 1138 1 -3.02255e+01 8.95000e+00 1.79800e+01 + 1139 1139 1 -9.05450e-01 2.78500e+01 -1.60254e+01 + 1140 1140 1 2.01900e+01 -1.76254e+01 -2.33854e+01 + 1141 1141 1 -9.76545e+00 6.95000e+00 1.73800e+01 + 1142 1142 1 -2.16255e+01 -1.05654e+01 -2.90054e+01 + 1143 1143 1 1.81000e+00 -1.70545e+00 -8.16545e+00 + 1144 1144 1 -1.01555e+01 3.94000e+00 2.78000e+00 + 1145 1145 1 -2.09655e+01 -2.69254e+01 5.72000e+00 + 1146 1146 1 -1.45855e+01 -8.55545e+00 3.07700e+01 + 1147 1147 1 1.76400e+01 2.09800e+01 8.76000e+00 + 1148 1148 1 -9.71545e+00 2.40800e+01 -2.04054e+01 + 1149 1149 1 -2.03655e+01 -4.60545e+00 -5.47545e+00 + 1150 1150 1 -1.24545e+00 1.58700e+01 1.73700e+01 + 1151 1151 1 -1.50255e+01 -2.53054e+01 1.11700e+01 + 1152 1152 1 2.66800e+01 9.10000e+00 2.08700e+01 + 1153 1153 1 1.90000e+01 -2.89254e+01 3.09500e+01 + 1154 1154 1 7.07000e+00 -2.37954e+01 -3.81545e+00 + 1155 1155 1 9.82000e+00 4.13000e+00 1.34500e+01 + 1156 1156 1 2.01700e+01 -2.53654e+01 2.88300e+01 + 1157 1157 1 2.50000e+01 -3.96545e+00 2.12300e+01 + 1158 1158 1 2.91900e+01 1.49500e+01 2.74900e+01 + 1159 1159 1 4.15000e+00 -1.30254e+01 -1.76454e+01 + 1160 1160 1 1.40300e+01 2.93200e+01 -2.58754e+01 + 1161 1161 1 -3.40545e+00 2.22600e+01 7.75000e+00 + 1162 1162 1 1.35700e+01 -1.43754e+01 1.32000e+00 + 1163 1163 1 3.07300e+01 -9.04545e+00 1.80700e+01 + 1164 1164 1 4.63000e+00 -1.04154e+01 -3.00954e+01 + 1165 1165 1 -4.78545e+00 8.20000e+00 -1.17054e+01 + 1166 1166 1 -2.87855e+01 2.35000e+00 -2.81554e+01 + 1167 1167 1 -4.12545e+00 -2.72754e+01 -1.05545e+00 + 1168 1168 1 -8.40545e+00 -2.71454e+01 -8.45545e+00 + 1169 1169 1 -6.04545e+00 2.33500e+01 2.28200e+01 + 1170 1170 1 -2.93355e+01 3.67000e+00 9.81000e+00 + 1171 1171 1 -2.73255e+01 -4.35446e-01 2.78900e+01 + 1172 1172 1 -1.07855e+01 -1.55054e+01 1.60900e+01 + 1173 1173 1 -2.40555e+01 -2.96454e+01 2.31700e+01 + 1174 1174 1 2.52700e+01 -1.54154e+01 -1.83754e+01 + 1175 1175 1 -1.99355e+01 1.33500e+01 1.41200e+01 + 1176 1176 1 -1.43755e+01 6.89000e+00 6.60000e+00 + 1177 1177 1 2.97000e+01 -1.23554e+01 -4.87545e+00 + 1178 1178 1 2.16100e+01 1.40000e+01 8.82000e+00 + 1179 1179 1 1.28000e+00 2.95100e+01 -2.22054e+01 + 1180 1180 1 1.64600e+01 -2.85054e+01 -2.52654e+01 + 1181 1181 1 8.26000e+00 -2.49554e+01 -2.28954e+01 + 1182 1182 1 -2.87755e+01 3.27000e+00 2.23800e+01 + 1183 1183 1 -1.45655e+01 2.91300e+01 -5.05545e+00 + 1184 1184 1 -2.24455e+01 3.03500e+01 -1.49754e+01 + 1185 1185 1 -2.41755e+01 -1.34354e+01 -1.07354e+01 + 1186 1186 1 -2.17655e+01 4.17000e+00 -2.49754e+01 + 1187 1187 1 2.64100e+01 -1.12154e+01 1.51000e+01 + 1188 1188 1 1.90600e+01 -1.56654e+01 -8.03545e+00 + 1189 1189 1 -3.03255e+01 5.45000e+00 -1.93654e+01 + 1190 1190 1 -1.24855e+01 -1.19554e+01 2.66900e+01 + 1191 1191 1 1.82600e+01 -1.62354e+01 1.29600e+01 + 1192 1192 1 2.36100e+01 2.55000e+00 -2.15354e+01 + 1193 1193 1 2.24300e+01 -2.74254e+01 -1.22454e+01 + 1194 1194 1 2.09000e+00 -8.95446e-01 1.01900e+01 + 1195 1195 1 2.50900e+01 3.08900e+01 -9.69545e+00 + 1196 1196 1 3.90000e-01 2.11100e+01 -7.11545e+00 + 1197 1197 1 -7.51545e+00 5.62000e+00 5.75000e+00 + 1198 1198 1 -1.05355e+01 -2.71054e+01 -5.46545e+00 + 1199 1199 1 1.17700e+01 2.64400e+01 1.76800e+01 + 1200 1200 1 1.45700e+01 2.40600e+01 1.23900e+01 + 1201 1201 1 2.74300e+01 -1.06954e+01 -1.88554e+01 + 1202 1202 1 -3.06355e+01 -2.31554e+01 2.87000e+00 + 1203 1203 1 -1.75855e+01 -1.78545e+00 1.82700e+01 + 1204 1204 1 1.64900e+01 1.16000e+01 -2.45445e-01 + 1205 1205 1 -3.00055e+01 5.86000e+00 7.13000e+00 + 1206 1206 1 8.50000e-01 1.08300e+01 -4.04545e+00 + 1207 1207 1 1.49800e+01 -1.22654e+01 4.13000e+00 + 1208 1208 1 -3.05555e+01 -2.14554e+01 2.91700e+01 + 1209 1209 1 -3.04455e+01 2.29500e+01 1.58000e+00 + 1210 1210 1 -4.17545e+00 -7.76545e+00 2.85500e+01 + 1211 1211 1 2.73600e+01 -2.28154e+01 3.01200e+01 + 1212 1212 1 -1.46655e+01 8.46000e+00 -8.55545e+00 + 1213 1213 1 -2.76355e+01 2.95200e+01 1.80000e+00 + 1214 1214 1 -7.43545e+00 1.79300e+01 6.63000e+00 + 1215 1215 1 1.25000e+01 7.50000e+00 -2.59954e+01 + 1216 1216 1 2.33100e+01 3.07300e+01 -2.62454e+01 + 1217 1217 1 2.35500e+01 1.85100e+01 4.60000e-01 + 1218 1218 1 2.40800e+01 1.52700e+01 2.36400e+01 + 1219 1219 1 -2.29455e+01 1.75300e+01 -2.68954e+01 + 1220 1220 1 -1.03755e+01 2.62100e+01 -1.71654e+01 + 1221 1221 1 -1.09455e+01 1.91200e+01 -4.40545e+00 + 1222 1222 1 2.29100e+01 1.17000e+01 -3.07554e+01 + 1223 1223 1 -1.93955e+01 -4.83545e+00 1.91400e+01 + 1224 1224 1 2.35800e+01 -1.17554e+01 -2.14154e+01 + 1225 1225 1 1.89600e+01 -1.31545e+00 2.81100e+01 + 1226 1226 1 1.84700e+01 9.87000e+00 -2.68954e+01 + 1227 1227 1 -7.63545e+00 2.01400e+01 1.05700e+01 + 1228 1228 1 2.05500e+01 -1.89654e+01 1.49900e+01 + 1229 1229 1 2.50800e+01 2.00200e+01 -3.09154e+01 + 1230 1230 1 -2.55055e+01 -2.91554e+01 -1.80054e+01 + 1231 1231 1 -2.60555e+01 2.04900e+01 1.19800e+01 + 1232 1232 1 8.69000e+00 6.50000e-01 -6.15445e-01 + 1233 1233 1 -3.04355e+01 2.12800e+01 1.07800e+01 + 1234 1234 1 -8.75450e-01 -1.57454e+01 1.69400e+01 + 1235 1235 1 2.31500e+01 2.55500e+01 -3.03854e+01 + 1236 1236 1 -2.64355e+01 -4.92545e+00 2.79000e+01 + 1237 1237 1 -3.10555e+01 -3.05254e+01 2.99500e+01 + 1238 1238 1 7.28000e+00 -1.03954e+01 1.96000e+00 + 1239 1239 1 1.31600e+01 3.08000e+01 2.88100e+01 + 1240 1240 1 8.43000e+00 1.37400e+01 2.37000e+01 + 1241 1241 1 -2.45655e+01 -2.82254e+01 -1.38054e+01 + 1242 1242 1 2.23500e+01 1.20400e+01 -2.52154e+01 + 1243 1243 1 -1.13055e+01 2.94700e+01 -2.34554e+01 + 1244 1244 1 1.42000e+01 1.84700e+01 -3.98545e+00 + 1245 1245 1 -2.57455e+01 1.20800e+01 2.46700e+01 + 1246 1246 1 -2.54545e+00 1.07400e+01 -1.06654e+01 + 1247 1247 1 1.30000e+00 -9.58545e+00 9.84000e+00 + 1248 1248 1 -2.05450e-01 8.12000e+00 1.78300e+01 + 1249 1249 1 1.82400e+01 -5.30545e+00 2.98900e+01 + 1250 1250 1 8.80000e+00 -5.03545e+00 -1.25254e+01 + 1251 1251 1 -8.12545e+00 2.29100e+01 6.17000e+00 + 1252 1252 1 -1.43955e+01 -1.83454e+01 1.56700e+01 + 1253 1253 1 1.54550e-01 4.05000e+00 2.83800e+01 + 1254 1254 1 -1.01755e+01 1.48800e+01 -1.84254e+01 + 1255 1255 1 -3.01955e+01 1.21900e+01 2.75400e+01 + 1256 1256 1 -2.24155e+01 -2.04054e+01 1.07400e+01 + 1257 1257 1 -7.95450e-01 7.63000e+00 -2.43154e+01 + 1258 1258 1 7.49000e+00 1.42800e+01 -1.17254e+01 + 1259 1259 1 2.67800e+01 -2.37454e+01 -5.73545e+00 + 1260 1260 1 -1.73455e+01 2.41000e+00 1.87500e+01 + 1261 1261 1 1.66700e+01 5.47000e+00 -7.55445e-01 + 1262 1262 1 -6.52545e+00 9.75000e+00 -2.09554e+01 + 1263 1263 1 1.55400e+01 -2.70554e+01 3.27000e+00 + 1264 1264 1 2.31100e+01 6.80000e-01 3.87000e+00 + 1265 1265 1 3.03400e+01 6.25000e+00 -2.31354e+01 + 1266 1266 1 -1.78655e+01 2.25700e+01 1.35500e+01 + 1267 1267 1 -2.65755e+01 -1.62554e+01 -1.13154e+01 + 1268 1268 1 -2.25455e+01 1.12200e+01 -7.16545e+00 + 1269 1269 1 -2.87155e+01 2.26100e+01 -2.44954e+01 + 1270 1270 1 -7.82545e+00 -2.82754e+01 1.84100e+01 + 1271 1271 1 -2.50055e+01 2.50000e-01 3.08200e+01 + 1272 1272 1 2.83200e+01 -4.15545e+00 -1.56354e+01 + 1273 1273 1 -2.44155e+01 2.09200e+01 3.29000e+00 + 1274 1274 1 -2.12545e+00 2.61000e+00 2.84000e+00 + 1275 1275 1 2.50800e+01 2.72000e+01 -3.26545e+00 + 1276 1276 1 6.85000e+00 2.26400e+01 1.57300e+01 + 1277 1277 1 1.83500e+01 -1.60454e+01 2.84400e+01 + 1278 1278 1 1.68000e+00 -2.44854e+01 -2.49854e+01 + 1279 1279 1 -8.83545e+00 4.42000e+00 -2.40354e+01 + 1280 1280 1 5.50000e+00 1.74000e+00 1.85500e+01 + 1281 1281 1 1.48400e+01 -4.32545e+00 1.73000e+01 + 1282 1282 1 -1.45955e+01 9.93000e+00 -2.15554e+01 + 1283 1283 1 8.01000e+00 -3.74545e+00 -1.56954e+01 + 1284 1284 1 3.06600e+01 2.03500e+01 2.24900e+01 + 1285 1285 1 -7.10545e+00 1.06700e+01 2.35400e+01 + 1286 1286 1 -2.15455e+01 -1.65054e+01 -4.38545e+00 + 1287 1287 1 1.11100e+01 -2.09954e+01 2.81300e+01 + 1288 1288 1 -1.97255e+01 -1.16654e+01 -1.24654e+01 + 1289 1289 1 2.62000e+01 9.76000e+00 -1.32154e+01 + 1290 1290 1 -1.73545e+00 5.58000e+00 -9.53545e+00 + 1291 1291 1 2.91000e+01 -2.55254e+01 1.65000e+00 + 1292 1292 1 -2.10855e+01 -1.08154e+01 -1.64154e+01 + 1293 1293 1 -1.22055e+01 2.74200e+01 1.55300e+01 + 1294 1294 1 1.92600e+01 1.97500e+01 1.65400e+01 + 1295 1295 1 -1.12255e+01 -1.49154e+01 -3.00154e+01 + 1296 1296 1 -8.70545e+00 -1.87754e+01 2.60700e+01 + 1297 1297 1 -2.77955e+01 2.73700e+01 1.16300e+01 + 1298 1298 1 -8.67545e+00 -2.86154e+01 9.80000e+00 + 1299 1299 1 2.06200e+01 -1.66545e+00 -5.23545e+00 + 1300 1300 1 6.88000e+00 -2.02554e+01 1.68800e+01 + 1301 1301 1 -7.88545e+00 2.10800e+01 -1.85154e+01 + 1302 1302 1 1.15500e+01 1.84300e+01 1.21700e+01 + 1303 1303 1 -1.55255e+01 3.67000e+00 2.86100e+01 + 1304 1304 1 1.34100e+01 -7.45545e+00 1.40100e+01 + 1305 1305 1 -2.78855e+01 1.95600e+01 2.06200e+01 + 1306 1306 1 2.93000e+00 2.05100e+01 9.99000e+00 + 1307 1307 1 2.38000e+01 -2.87254e+01 2.34600e+01 + 1308 1308 1 -1.98255e+01 -6.64545e+00 -1.80954e+01 + 1309 1309 1 -1.68545e+00 -4.41545e+00 -1.97854e+01 + 1310 1310 1 1.00900e+01 1.72800e+01 -1.37545e+00 + 1311 1311 1 4.50000e+00 1.21600e+01 1.72500e+01 + 1312 1312 1 -2.96055e+01 -7.49545e+00 -5.04545e+00 + 1313 1313 1 -4.00000e-02 -1.02054e+01 4.04555e-01 + 1314 1314 1 -2.60545e+00 -2.91554e+01 -2.68854e+01 + 1315 1315 1 1.46600e+01 4.32000e+00 -2.52954e+01 + 1316 1316 1 -8.85450e-01 3.00600e+01 2.73800e+01 + 1317 1317 1 -4.71545e+00 -2.15754e+01 1.78400e+01 + 1318 1318 1 1.87700e+01 1.60600e+01 -1.37554e+01 + 1319 1319 1 2.86800e+01 -1.42954e+01 -2.97854e+01 + 1320 1320 1 -2.41355e+01 -1.40000e-01 -2.20854e+01 + 1321 1321 1 2.70000e+01 -3.08354e+01 2.40000e+01 + 1322 1322 1 5.53000e+00 2.84800e+01 8.47000e+00 + 1323 1323 1 1.92400e+01 -2.68154e+01 5.05000e+00 + 1324 1324 1 -1.00855e+01 8.16000e+00 -1.23254e+01 + 1325 1325 1 -1.67255e+01 1.58400e+01 -1.65254e+01 + 1326 1326 1 -1.14855e+01 -1.41554e+01 2.04555e-01 + 1327 1327 1 -2.57355e+01 2.68000e+00 -1.80454e+01 + 1328 1328 1 1.54600e+01 -1.10545e+00 2.28800e+01 + 1329 1329 1 -2.01545e+00 2.45543e-02 9.87000e+00 + 1330 1330 1 -5.73545e+00 1.60200e+01 1.00000e+00 + 1331 1331 1 -2.17255e+01 -1.65054e+01 2.93900e+01 + 1332 1332 1 9.11000e+00 9.02000e+00 -1.73754e+01 + 1333 1333 1 1.94000e+01 -2.29454e+01 3.30000e+00 + 1334 1334 1 -2.68055e+01 -2.85454e+01 4.70000e-01 + 1335 1335 1 -2.23255e+01 3.60000e+00 5.51000e+00 + 1336 1336 1 -2.68545e+00 -6.08545e+00 -2.61554e+01 + 1337 1337 1 1.82200e+01 -2.44354e+01 2.11700e+01 + 1338 1338 1 -2.52855e+01 4.91000e+00 -2.98054e+01 + 1339 1339 1 -5.54502e-02 -1.61554e+01 -7.07545e+00 + 1340 1340 1 -9.59545e+00 -6.91545e+00 1.68700e+01 + 1341 1341 1 8.53000e+00 -1.81554e+01 -2.45854e+01 + 1342 1342 1 -1.65855e+01 1.83100e+01 -2.55554e+01 + 1343 1343 1 -6.75450e-01 1.21800e+01 2.05600e+01 + 1344 1344 1 -2.00555e+01 2.84800e+01 1.59600e+01 + 1345 1345 1 -1.37155e+01 -4.76545e+00 -2.87254e+01 + 1346 1346 1 2.24100e+01 2.80000e+01 -6.95545e+00 + 1347 1347 1 1.02300e+01 2.56500e+01 1.18700e+01 + 1348 1348 1 2.48000e+00 -2.16054e+01 -2.21254e+01 + 1349 1349 1 1.07000e+00 -3.03254e+01 2.18300e+01 + 1350 1350 1 -8.84545e+00 -2.36354e+01 -7.66545e+00 + 1351 1351 1 2.82700e+01 2.10900e+01 2.87000e+00 + 1352 1352 1 -7.27545e+00 -1.47545e+00 2.85700e+01 + 1353 1353 1 2.51400e+01 -2.30054e+01 -1.99354e+01 + 1354 1354 1 2.86400e+01 -2.08754e+01 -1.24754e+01 + 1355 1355 1 2.77500e+01 2.50300e+01 -6.24545e+00 + 1356 1356 1 1.76700e+01 2.62000e+00 1.11100e+01 + 1357 1357 1 -3.89545e+00 -2.50554e+01 -1.63454e+01 + 1358 1358 1 2.25700e+01 2.63000e+01 -5.55445e-01 + 1359 1359 1 3.28000e+00 -1.79554e+01 -2.42454e+01 + 1360 1360 1 -2.11555e+01 9.32000e+00 1.47800e+01 + 1361 1361 1 1.29600e+01 7.30000e-01 2.65000e+00 + 1362 1362 1 3.62000e+00 3.75000e+00 2.84900e+01 + 1363 1363 1 -2.78545e+00 -1.18154e+01 2.25000e+01 + 1364 1364 1 1.62500e+01 -2.71754e+01 -3.28545e+00 + 1365 1365 1 1.52200e+01 4.35000e+00 1.24400e+01 + 1366 1366 1 -2.30255e+01 2.09100e+01 2.08600e+01 + 1367 1367 1 2.50100e+01 -1.61654e+01 -7.28545e+00 + 1368 1368 1 1.02200e+01 2.32300e+01 2.33900e+01 + 1369 1369 1 4.18000e+00 -1.85854e+01 -2.06954e+01 + 1370 1370 1 -1.20555e+01 -1.84854e+01 2.90300e+01 + 1371 1371 1 -1.29755e+01 1.50000e+00 8.78000e+00 + 1372 1372 1 -2.24555e+01 2.90200e+01 -6.40545e+00 + 1373 1373 1 -2.56155e+01 1.86300e+01 1.62300e+01 + 1374 1374 1 3.05000e+01 4.09000e+00 1.28100e+01 + 1375 1375 1 -3.05955e+01 -2.56554e+01 8.23000e+00 + 1376 1376 1 1.52900e+01 -2.37654e+01 1.41500e+01 + 1377 1377 1 -7.61545e+00 -1.86754e+01 -3.04754e+01 + 1378 1378 1 -5.24545e+00 -5.01545e+00 -1.49454e+01 + 1379 1379 1 2.32500e+01 -5.39545e+00 -2.61554e+01 + 1380 1380 1 1.54900e+01 -8.66545e+00 -3.08854e+01 + 1381 1381 1 -2.93455e+01 1.23000e+00 -1.76754e+01 + 1382 1382 1 -2.66355e+01 2.40700e+01 -4.80545e+00 + 1383 1383 1 -1.67545e+00 2.76000e+01 -2.96754e+01 + 1384 1384 1 7.36000e+00 -2.52454e+01 1.53300e+01 + 1385 1385 1 -3.05155e+01 -1.02754e+01 -2.40000e-01 + 1386 1386 1 1.41000e+00 1.22500e+01 -3.07354e+01 + 1387 1387 1 8.98000e+00 5.26000e+00 -1.91954e+01 + 1388 1388 1 -2.44155e+01 -2.34854e+01 -2.40854e+01 + 1389 1389 1 1.58600e+01 -1.29154e+01 1.99500e+01 + 1390 1390 1 -1.16155e+01 -2.14054e+01 3.08900e+01 + 1391 1391 1 1.64000e+00 -5.25446e-01 -2.91654e+01 + 1392 1392 1 -1.77155e+01 -2.02545e+00 -2.80545e+00 + 1393 1393 1 1.56700e+01 2.98800e+01 1.19000e+01 + 1394 1394 1 -2.85055e+01 -2.77854e+01 -1.35854e+01 + 1395 1395 1 -5.99545e+00 -2.12254e+01 2.82500e+01 + 1396 1396 1 -1.14755e+01 -2.07454e+01 -1.72254e+01 + 1397 1397 1 -1.83755e+01 -2.65054e+01 -2.68854e+01 + 1398 1398 1 -5.75545e+00 2.25800e+01 -9.33545e+00 + 1399 1399 1 1.88600e+01 2.96600e+01 -1.55954e+01 + 1400 1400 1 7.17000e+00 1.58900e+01 -8.83545e+00 + 1401 1401 1 1.85000e+01 -2.96854e+01 9.04000e+00 + 1402 1402 1 -2.46955e+01 -8.65545e+00 2.26500e+01 + 1403 1403 1 -1.50155e+01 3.49000e+00 -2.47354e+01 + 1404 1404 1 1.59600e+01 -1.99054e+01 -2.29454e+01 + 1405 1405 1 -1.52655e+01 -2.72754e+01 -1.95254e+01 + 1406 1406 1 2.81400e+01 -6.78545e+00 -1.79254e+01 + 1407 1407 1 1.13500e+01 -2.52354e+01 2.80900e+01 + 1408 1408 1 2.43400e+01 1.78400e+01 -1.58454e+01 + 1409 1409 1 4.11000e+00 5.12000e+00 -9.44545e+00 + 1410 1410 1 -2.84455e+01 -2.36254e+01 2.51800e+01 + 1411 1411 1 -6.58545e+00 -5.48545e+00 1.04300e+01 + 1412 1412 1 2.46000e+01 -1.86654e+01 -1.22554e+01 + 1413 1413 1 1.96800e+01 1.02000e+00 -2.29354e+01 + 1414 1414 1 1.58000e+01 3.21000e+00 -1.33954e+01 + 1415 1415 1 -2.54855e+01 1.72800e+01 2.10800e+01 + 1416 1416 1 -8.96545e+00 -1.12854e+01 -1.20654e+01 + 1417 1417 1 -2.55855e+01 2.90500e+01 -1.07754e+01 + 1418 1418 1 6.82000e+00 -5.76545e+00 3.40000e+00 + 1419 1419 1 1.19700e+01 2.27900e+01 1.53600e+01 + 1420 1420 1 -2.71455e+01 -2.21054e+01 -7.87545e+00 + 1421 1421 1 -2.35055e+01 -2.62354e+01 -2.71954e+01 + 1422 1422 1 -3.15450e-01 -1.59654e+01 2.18700e+01 + 1423 1423 1 -2.15545e+00 1.36000e+00 2.51500e+01 + 1424 1424 1 2.95000e+01 5.83000e+00 3.06900e+01 + 1425 1425 1 -2.77955e+01 -7.22545e+00 1.81400e+01 + 1426 1426 1 5.66000e+00 1.03200e+01 4.93000e+00 + 1427 1427 1 -1.17955e+01 2.91900e+01 1.12900e+01 + 1428 1428 1 3.03400e+01 1.56600e+01 6.13000e+00 + 1429 1429 1 4.76000e+00 1.50000e+00 -3.09354e+01 + 1430 1430 1 -2.98055e+01 3.84000e+00 3.08000e+00 + 1431 1431 1 2.81000e+01 1.01000e+00 -2.16454e+01 + 1432 1432 1 8.44000e+00 -2.26554e+01 7.18000e+00 + 1433 1433 1 -1.92255e+01 1.91800e+01 -1.38354e+01 + 1434 1434 1 -2.72545e+00 3.76000e+00 6.15000e+00 + 1435 1435 1 -5.31545e+00 -6.36545e+00 1.79200e+01 + 1436 1436 1 -1.65855e+01 -1.03854e+01 -1.60654e+01 + 1437 1437 1 -8.48545e+00 -2.06554e+01 1.59800e+01 + 1438 1438 1 9.08000e+00 -1.06054e+01 -1.71754e+01 + 1439 1439 1 -2.77655e+01 3.05000e+00 -4.41545e+00 + 1440 1440 1 -2.73855e+01 -1.84854e+01 2.10200e+01 + 1441 1441 1 2.11700e+01 1.71900e+01 2.03200e+01 + 1442 1442 1 -2.85455e+01 -1.29354e+01 5.20000e-01 + 1443 1443 1 9.27000e+00 4.44000e+00 2.38000e+00 + 1444 1444 1 2.99100e+01 -2.52254e+01 1.20600e+01 + 1445 1445 1 1.07800e+01 5.29000e+00 -2.39254e+01 + 1446 1446 1 -2.69655e+01 -4.26545e+00 -1.37154e+01 + 1447 1447 1 -1.88555e+01 -2.78754e+01 1.63800e+01 + 1448 1448 1 2.68300e+01 1.41100e+01 -4.10545e+00 + 1449 1449 1 -2.54655e+01 8.94000e+00 1.65800e+01 + 1450 1450 1 2.57000e+01 2.98000e+00 -1.72354e+01 + 1451 1451 1 1.63900e+01 1.26200e+01 2.63700e+01 + 1452 1452 1 1.80000e+01 -3.35545e+00 -1.94054e+01 + 1453 1453 1 -1.36755e+01 1.11600e+01 1.02400e+01 + 1454 1454 1 -2.18755e+01 8.11000e+00 3.74000e+00 + 1455 1455 1 -1.13355e+01 -3.07854e+01 2.62500e+01 + 1456 1456 1 2.85100e+01 -1.07054e+01 -1.50454e+01 + 1457 1457 1 -2.42455e+01 -1.50054e+01 9.99000e+00 + 1458 1458 1 2.29400e+01 -1.85754e+01 5.08000e+00 + 1459 1459 1 2.79000e+00 1.87000e+00 -1.52654e+01 + 1460 1460 1 8.59000e+00 2.16100e+01 -1.11545e+00 + 1461 1461 1 3.06400e+01 1.56000e+01 -2.82754e+01 + 1462 1462 1 2.90200e+01 4.76000e+00 -1.55054e+01 + 1463 1463 1 -2.68655e+01 3.05500e+01 7.44000e+00 + 1464 1464 1 -2.80055e+01 -2.97654e+01 2.77000e+01 + 1465 1465 1 -3.89545e+00 -1.19154e+01 8.57000e+00 + 1466 1466 1 -1.93255e+01 -5.51545e+00 -2.19454e+01 + 1467 1467 1 -2.81355e+01 1.08600e+01 8.30000e-01 + 1468 1468 1 3.08600e+01 -9.65446e-01 4.12000e+00 + 1469 1469 1 1.21700e+01 -4.20545e+00 1.78000e+00 + 1470 1470 1 -1.26155e+01 -1.33354e+01 6.65000e+00 + 1471 1471 1 -2.58255e+01 -2.85446e-01 -2.59554e+01 + 1472 1472 1 2.11200e+01 -3.52545e+00 -2.31454e+01 + 1473 1473 1 3.10100e+01 -2.64654e+01 -2.11554e+01 + 1474 1474 1 -3.07455e+01 -1.61954e+01 -2.99354e+01 + 1475 1475 1 -2.30155e+01 -2.37554e+01 4.54000e+00 + 1476 1476 1 -7.23545e+00 -1.50854e+01 2.84000e+00 + 1477 1477 1 -1.31455e+01 -4.22545e+00 1.47000e+00 + 1478 1478 1 2.54000e+00 -1.49754e+01 2.18000e+00 + 1479 1479 1 1.93800e+01 -4.28545e+00 2.47900e+01 + 1480 1480 1 -6.91545e+00 -1.81154e+01 -8.33545e+00 + 1481 1481 1 2.33800e+01 1.22000e+00 2.12200e+01 + 1482 1482 1 2.05800e+01 -1.87154e+01 -6.41545e+00 + 1483 1483 1 -2.41455e+01 -1.60654e+01 1.88000e+00 + 1484 1484 1 3.01700e+01 6.60000e-01 2.89300e+01 + 1485 1485 1 1.28400e+01 -1.17545e+00 1.81700e+01 + 1486 1486 1 -2.60555e+01 2.76000e+00 -2.46454e+01 + 1487 1487 1 -2.97655e+01 2.22000e+01 -1.39354e+01 + 1488 1488 1 1.58100e+01 -6.28545e+00 -1.80654e+01 + 1489 1489 1 1.60700e+01 -1.10554e+01 -1.97354e+01 + 1490 1490 1 6.40000e+00 -2.41054e+01 1.90600e+01 + 1491 1491 1 -1.89555e+01 1.25300e+01 -3.85545e+00 + 1492 1492 1 1.75800e+01 -2.83154e+01 -1.87654e+01 + 1493 1493 1 -2.08755e+01 -2.32854e+01 -1.21754e+01 + 1494 1494 1 5.58000e+00 2.48700e+01 -1.92554e+01 + 1495 1495 1 1.69200e+01 8.12000e+00 2.30200e+01 + 1496 1496 1 -2.92855e+01 -1.69854e+01 -1.30545e+00 + 1497 1497 1 -1.79355e+01 -1.59954e+01 3.01700e+01 + 1498 1498 1 2.72000e+01 1.58000e+00 1.43700e+01 + 1499 1499 1 -1.02555e+01 -2.76654e+01 -1.96654e+01 + 1500 1500 1 1.85700e+01 5.66000e+00 -9.36545e+00 + 1501 1501 1 1.65900e+01 -1.92654e+01 2.48700e+01 + 1502 1502 1 -2.51455e+01 2.89500e+01 -2.78754e+01 + 1503 1503 1 2.94400e+01 -3.07554e+01 2.04300e+01 + 1504 1504 1 -1.79255e+01 -2.11954e+01 1.23600e+01 + 1505 1505 1 1.75700e+01 1.38300e+01 -3.63545e+00 + 1506 1506 1 1.13700e+01 2.15200e+01 -3.89545e+00 + 1507 1507 1 1.87000e+00 1.23200e+01 -1.58554e+01 + 1508 1508 1 3.08200e+01 2.98000e+01 -2.49154e+01 + 1509 1509 1 -2.88545e+00 -2.08454e+01 -1.77854e+01 + 1510 1510 1 1.08800e+01 -8.35446e-01 -7.86545e+00 + 1511 1511 1 -5.21545e+00 -2.56154e+01 -1.21754e+01 + 1512 1512 1 -4.67545e+00 3.07900e+01 -1.38254e+01 + 1513 1513 1 -1.64455e+01 6.80000e-01 1.38100e+01 + 1514 1514 1 5.68000e+00 -1.29254e+01 -2.46754e+01 + 1515 1515 1 -4.96545e+00 -2.91054e+01 1.56600e+01 + 1516 1516 1 6.77000e+00 4.10000e-01 -4.15545e+00 + 1517 1517 1 4.76000e+00 2.04000e+00 1.24200e+01 + 1518 1518 1 2.79800e+01 8.84000e+00 2.44000e+01 + 1519 1519 1 -1.38855e+01 2.35500e+01 -3.09554e+01 + 1520 1520 1 2.18300e+01 1.30700e+01 -3.72545e+00 + 1521 1521 1 -2.79555e+01 -1.13154e+01 -2.42154e+01 + 1522 1522 1 2.06000e+01 2.88200e+01 1.49900e+01 + 1523 1523 1 2.38100e+01 -1.20054e+01 -2.90545e+00 + 1524 1524 1 -1.47655e+01 2.92600e+01 2.69500e+01 + 1525 1525 1 1.49600e+01 1.57400e+01 -1.20954e+01 + 1526 1526 1 -1.12555e+01 -2.66054e+01 -1.04545e+00 + 1527 1527 1 7.90000e-01 4.46000e+00 1.45900e+01 + 1528 1528 1 1.45400e+01 -1.87154e+01 6.87000e+00 + 1529 1529 1 -3.04155e+01 -1.64854e+01 -1.95454e+01 + 1530 1530 1 8.22000e+00 7.55000e+00 -2.76754e+01 + 1531 1531 1 1.25200e+01 -8.13545e+00 -2.74154e+01 + 1532 1532 1 -7.49545e+00 -1.35054e+01 1.53200e+01 + 1533 1533 1 2.27200e+01 -9.25545e+00 -2.45754e+01 + 1534 1534 1 -4.53545e+00 2.77400e+01 1.33200e+01 + 1535 1535 1 -1.54655e+01 1.99700e+01 -2.09454e+01 + 1536 1536 1 2.48000e+01 3.04100e+01 -2.17154e+01 + 1537 1537 1 -2.87055e+01 -6.18545e+00 1.00500e+01 + 1538 1538 1 1.12900e+01 -1.90454e+01 1.90300e+01 + 1539 1539 1 -3.06455e+01 -2.83545e+00 -1.44545e+00 + 1540 1540 1 1.51500e+01 2.34800e+01 -2.37854e+01 + 1541 1541 1 -2.08545e+00 -8.29545e+00 -3.08545e+00 + 1542 1542 1 1.73900e+01 -1.90545e+00 -2.46154e+01 + 1543 1543 1 -2.77055e+01 9.11000e+00 -2.80854e+01 + 1544 1544 1 2.66600e+01 2.45543e-02 6.20000e-01 + 1545 1545 1 -2.72655e+01 -8.48545e+00 2.61300e+01 + 1546 1546 1 -1.34555e+01 -2.83554e+01 1.05900e+01 + 1547 1547 1 -2.00000e-01 -6.89545e+00 4.35000e+00 + 1548 1548 1 -9.25450e-01 -8.54457e-02 -4.14545e+00 + 1549 1549 1 1.75200e+01 2.65900e+01 1.41100e+01 + 1550 1550 1 3.03000e+01 1.00700e+01 2.05800e+01 + 1551 1551 1 -1.91655e+01 8.91000e+00 -2.45154e+01 + 1552 1552 1 -2.31255e+01 -9.17545e+00 2.97100e+01 + 1553 1553 1 1.08100e+01 1.95400e+01 3.43000e+00 + 1554 1554 1 2.20800e+01 -9.46545e+00 -6.60545e+00 + 1555 1555 1 2.31300e+01 4.44000e+00 -2.96554e+01 + 1556 1556 1 -1.89655e+01 -8.46545e+00 6.72000e+00 + 1557 1557 1 4.94000e+00 6.56000e+00 -1.76054e+01 + 1558 1558 1 1.71100e+01 7.20000e-01 -2.68054e+01 + 1559 1559 1 -2.74555e+01 -1.92854e+01 -2.24354e+01 + 1560 1560 1 -1.61855e+01 2.48900e+01 1.00400e+01 + 1561 1561 1 3.03700e+01 1.24100e+01 3.09600e+01 + 1562 1562 1 -4.92545e+00 3.08100e+01 2.62300e+01 + 1563 1563 1 -1.76455e+01 -6.90545e+00 -2.77554e+01 + 1564 1564 1 2.82600e+01 1.01100e+01 -8.34545e+00 + 1565 1565 1 1.62000e+01 1.23000e+00 2.99800e+01 + 1566 1566 1 6.69000e+00 2.24000e+01 -2.06454e+01 + 1567 1567 1 -1.78545e+00 1.05100e+01 -2.12754e+01 + 1568 1568 1 2.66100e+01 2.75000e+00 5.30000e+00 + 1569 1569 1 3.40000e-01 -1.28654e+01 2.56100e+01 + 1570 1570 1 -8.55545e+00 2.39400e+01 1.16800e+01 + 1571 1571 1 -2.62655e+01 -7.96545e+00 1.40600e+01 + 1572 1572 1 -2.60545e+00 -3.08754e+01 -8.15545e+00 + 1573 1573 1 1.22300e+01 -7.18545e+00 -2.58545e+00 + 1574 1574 1 1.84200e+01 2.43300e+01 2.76300e+01 + 1575 1575 1 -1.70255e+01 2.54000e+01 -9.83545e+00 + 1576 1576 1 5.24000e+00 -1.26154e+01 4.71000e+00 + 1577 1577 1 -2.03955e+01 -2.28354e+01 2.39000e+01 + 1578 1578 1 7.95000e+00 1.88000e+00 -2.23554e+01 + 1579 1579 1 1.20300e+01 1.16500e+01 1.64200e+01 + 1580 1580 1 3.77000e+00 1.29500e+01 -1.02054e+01 + 1581 1581 1 -1.52855e+01 5.40000e+00 1.59200e+01 + 1582 1582 1 -3.74545e+00 -1.10454e+01 -1.17354e+01 + 1583 1583 1 1.98300e+01 6.12000e+00 1.98200e+01 + 1584 1584 1 2.34800e+01 -9.65446e-01 -3.02254e+01 + 1585 1585 1 -2.81555e+01 -3.09954e+01 -1.11154e+01 + 1586 1586 1 -1.21755e+01 8.48000e+00 -1.63254e+01 + 1587 1587 1 5.45000e+00 -2.57454e+01 -2.84354e+01 + 1588 1588 1 -8.35450e-01 2.95700e+01 2.00800e+01 + 1589 1589 1 -1.70155e+01 3.07400e+01 1.48900e+01 + 1590 1590 1 2.66700e+01 6.20000e+00 2.85600e+01 + 1591 1591 1 -2.57545e+00 -7.61545e+00 -1.02954e+01 + 1592 1592 1 -5.99545e+00 -1.89454e+01 -1.93254e+01 + 1593 1593 1 -2.85655e+01 1.30300e+01 -2.47754e+01 + 1594 1594 1 -1.45155e+01 1.99300e+01 1.53800e+01 + 1595 1595 1 -2.46855e+01 7.21000e+00 3.50000e-01 + 1596 1596 1 8.31000e+00 -2.67854e+01 2.38700e+01 + 1597 1597 1 9.66000e+00 -2.59454e+01 -1.82454e+01 + 1598 1598 1 2.92700e+01 -2.84954e+01 1.51600e+01 + 1599 1599 1 -3.80000e-01 -1.51154e+01 -3.11054e+01 + 1600 1600 1 1.98200e+01 4.89000e+00 1.49500e+01 + 1601 1601 1 -2.04155e+01 -1.71545e+00 3.06700e+01 + 1602 1602 1 -3.07655e+01 2.68300e+01 2.67200e+01 + 1603 1603 1 2.74300e+01 -2.62454e+01 -2.88254e+01 + 1604 1604 1 -2.24055e+01 1.53300e+01 6.27000e+00 + 1605 1605 1 2.97300e+01 -4.96545e+00 -1.12354e+01 + 1606 1606 1 1.42600e+01 2.47900e+01 -8.94545e+00 + 1607 1607 1 2.24900e+01 2.34200e+01 -2.09654e+01 + 1608 1608 1 1.46500e+01 1.71400e+01 -2.68454e+01 + 1609 1609 1 -2.03955e+01 1.82400e+01 3.87000e+00 + 1610 1610 1 1.19800e+01 -3.02554e+01 1.25800e+01 + 1611 1611 1 1.19800e+01 1.11700e+01 2.91900e+01 + 1612 1612 1 7.75000e+00 -1.56654e+01 -9.53545e+00 + 1613 1613 1 -2.52455e+01 2.43000e+01 -8.13545e+00 + 1614 1614 1 -1.71155e+01 1.35600e+01 3.84000e+00 + 1615 1615 1 2.86600e+01 2.86800e+01 8.92000e+00 + 1616 1616 1 2.67800e+01 -5.75545e+00 -2.23854e+01 + 1617 1617 1 4.38000e+00 -1.76154e+01 3.09500e+01 + 1618 1618 1 -7.82545e+00 -2.04954e+01 2.01500e+01 + 1619 1619 1 8.66000e+00 -1.79454e+01 -2.93754e+01 + 1620 1620 1 -2.34755e+01 -2.72545e+00 1.80000e+00 + 1621 1621 1 -2.70155e+01 -8.46545e+00 1.86000e+00 + 1622 1622 1 4.81000e+00 -1.63454e+01 2.79400e+01 + 1623 1623 1 4.81000e+00 -1.03754e+01 1.32800e+01 + 1624 1624 1 -2.32655e+01 -1.20854e+01 1.74200e+01 + 1625 1625 1 -6.55545e+00 -8.16545e+00 -2.37154e+01 + 1626 1626 1 8.79000e+00 9.42000e+00 8.93000e+00 + 1627 1627 1 2.23600e+01 -2.22054e+01 -1.53454e+01 + 1628 1628 1 -1.11555e+01 -1.12854e+01 -7.46545e+00 + 1629 1629 1 2.50000e+00 2.64800e+01 -3.91545e+00 + 1630 1630 1 -4.41545e+00 -2.98545e+00 -2.97554e+01 + 1631 1631 1 3.05200e+01 -2.45554e+01 -1.20054e+01 + 1632 1632 1 -1.66355e+01 -2.21054e+01 -1.94554e+01 + 1633 1633 1 -2.36355e+01 1.41500e+01 1.81700e+01 + 1634 1634 1 -2.45155e+01 -1.69754e+01 1.71600e+01 + 1635 1635 1 -2.95755e+01 1.17400e+01 3.97000e+00 + 1636 1636 1 2.13000e+00 -3.82545e+00 -1.17454e+01 + 1637 1637 1 2.86900e+01 8.00000e+00 -4.36545e+00 + 1638 1638 1 -1.06355e+01 8.99000e+00 2.63700e+01 + 1639 1639 1 1.57400e+01 2.78900e+01 1.69200e+01 + 1640 1640 1 3.36000e+00 1.19500e+01 2.95000e+00 + 1641 1641 1 -2.88855e+01 -2.07454e+01 -2.66654e+01 + 1642 1642 1 3.06300e+01 1.91900e+01 2.86800e+01 + 1643 1643 1 1.14200e+01 1.02000e+01 2.56500e+01 + 1644 1644 1 2.19800e+01 -1.06354e+01 2.36100e+01 + 1645 1645 1 -2.14755e+01 -2.36354e+01 -1.65354e+01 + 1646 1646 1 -2.27055e+01 1.97900e+01 1.76000e+01 + 1647 1647 1 1.57200e+01 1.69700e+01 4.48000e+00 + 1648 1648 1 -1.17055e+01 -3.03154e+01 -1.11454e+01 + 1649 1649 1 -1.62155e+01 -2.05454e+01 5.13000e+00 + 1650 1650 1 2.87600e+01 2.79000e+00 -1.25354e+01 + 1651 1651 1 -2.29455e+01 2.12500e+01 -2.54545e+00 + 1652 1652 1 -6.25545e+00 -4.54457e-02 2.57700e+01 + 1653 1653 1 1.64400e+01 7.53000e+00 1.30800e+01 + 1654 1654 1 -3.08755e+01 3.10800e+01 1.62800e+01 + 1655 1655 1 -2.93055e+01 1.99700e+01 -1.01545e+00 + 1656 1656 1 2.69000e+01 -4.22545e+00 1.00900e+01 + 1657 1657 1 6.80000e-01 1.83100e+01 -1.45254e+01 + 1658 1658 1 2.47600e+01 2.00300e+01 7.76000e+00 + 1659 1659 1 -1.32755e+01 -1.23154e+01 1.95500e+01 + 1660 1660 1 -1.66755e+01 -2.67545e+00 -1.92454e+01 + 1661 1661 1 2.83400e+01 2.42300e+01 2.28400e+01 + 1662 1662 1 -1.34545e+00 -8.85446e-01 5.79000e+00 + 1663 1663 1 3.12000e+00 -2.94254e+01 1.60000e+00 + 1664 1664 1 -1.74555e+01 1.34554e-01 -1.27554e+01 + 1665 1665 1 -1.48055e+01 8.94000e+00 2.93200e+01 + 1666 1666 1 -2.17255e+01 -6.96545e+00 1.42200e+01 + 1667 1667 1 1.14000e+00 1.01200e+01 -1.96554e+01 + 1668 1668 1 -2.87055e+01 2.00900e+01 5.09000e+00 + 1669 1669 1 -9.08545e+00 -1.79154e+01 -2.66554e+01 + 1670 1670 1 2.02900e+01 -1.20454e+01 2.05500e+01 + 1671 1671 1 2.18000e+00 -2.89954e+01 5.86000e+00 + 1672 1672 1 -8.70545e+00 -3.00254e+01 1.39900e+01 + 1673 1673 1 2.22500e+01 1.91000e+01 2.63800e+01 + 1674 1674 1 1.01500e+01 -3.94545e+00 -3.21545e+00 + 1675 1675 1 -4.59545e+00 1.41000e+01 -1.34154e+01 + 1676 1676 1 2.31400e+01 -2.66754e+01 -2.36054e+01 + 1677 1677 1 1.40600e+01 3.06300e+01 -1.40354e+01 + 1678 1678 1 -1.36355e+01 2.42000e+00 1.24400e+01 + 1679 1679 1 -6.27545e+00 1.02000e+00 -2.53054e+01 + 1680 1680 1 -1.05255e+01 -2.85254e+01 3.09000e+00 + 1681 1681 1 -2.36155e+01 -2.09154e+01 1.90000e+00 + 1682 1682 1 2.96000e+00 -2.36654e+01 1.21100e+01 + 1683 1683 1 -3.84545e+00 2.00500e+01 2.03700e+01 + 1684 1684 1 1.79000e+01 -1.94054e+01 2.24555e-01 + 1685 1685 1 2.68400e+01 -1.18554e+01 2.33000e+01 + 1686 1686 1 -2.32255e+01 -2.49354e+01 2.06000e+01 + 1687 1687 1 -1.65755e+01 -1.20554e+01 -8.62545e+00 + 1688 1688 1 -1.45255e+01 2.88600e+01 -2.33154e+01 + 1689 1689 1 -3.11155e+01 -2.48545e+00 9.69000e+00 + 1690 1690 1 -2.71655e+01 -6.05446e-01 2.37300e+01 + 1691 1691 1 1.52300e+01 1.15900e+01 3.03100e+01 + 1692 1692 1 2.18100e+01 1.28700e+01 2.53400e+01 + 1693 1693 1 -3.04655e+01 -1.09554e+01 1.56200e+01 + 1694 1694 1 2.21700e+01 -2.25754e+01 2.19100e+01 + 1695 1695 1 -9.03545e+00 -1.94754e+01 -1.95445e-01 + 1696 1696 1 1.14000e+00 2.77000e+00 2.48000e+01 + 1697 1697 1 -2.68455e+01 9.32000e+00 8.59000e+00 + 1698 1698 1 -1.69545e+00 -2.40000e-01 -2.68254e+01 + 1699 1699 1 -2.77755e+01 -1.15254e+01 -1.01654e+01 + 1700 1700 1 1.38700e+01 1.28300e+01 -2.89545e+00 + 1701 1701 1 -7.25545e+00 1.20800e+01 -1.57545e+00 + 1702 1702 1 -7.68545e+00 5.20000e+00 -1.40545e+00 + 1703 1703 1 -9.31545e+00 3.06100e+01 -1.94754e+01 + 1704 1704 1 1.32000e+01 1.46900e+01 2.29600e+01 + 1705 1705 1 -1.37955e+01 1.86200e+01 -7.62545e+00 + 1706 1706 1 -1.41855e+01 1.32700e+01 -1.64754e+01 + 1707 1707 1 -1.27555e+01 2.60900e+01 9.00000e-02 + 1708 1708 1 -1.30545e+00 -2.62854e+01 3.06000e+00 + 1709 1709 1 -2.20155e+01 -1.63054e+01 -2.18254e+01 + 1710 1710 1 4.50000e-01 1.39800e+01 2.90000e-01 + 1711 1711 1 2.34300e+01 1.29200e+01 4.60000e+00 + 1712 1712 1 -3.67545e+00 -2.49654e+01 2.83700e+01 + 1713 1713 1 -2.96255e+01 2.45000e+00 1.82900e+01 + 1714 1714 1 1.85400e+01 4.56000e+00 -1.70754e+01 + 1715 1715 1 -3.35545e+00 -1.08254e+01 2.93000e+00 + 1716 1716 1 -2.48855e+01 2.05500e+01 -9.42545e+00 + 1717 1717 1 3.85000e+00 9.60000e+00 -1.61545e+00 + 1718 1718 1 2.91200e+01 1.33000e+00 1.88600e+01 + 1719 1719 1 9.92000e+00 2.34800e+01 -1.54554e+01 + 1720 1720 1 -7.38545e+00 -2.75554e+01 -4.71545e+00 + 1721 1721 1 -2.39355e+01 5.92000e+00 2.89000e+01 + 1722 1722 1 1.89900e+01 2.93600e+01 2.80000e-01 + 1723 1723 1 6.93000e+00 -2.36354e+01 -1.43054e+01 + 1724 1724 1 -1.52055e+01 -1.33254e+01 3.00400e+01 + 1725 1725 1 5.12000e+00 -3.20000e-01 9.10000e+00 + 1726 1726 1 -3.42545e+00 2.61500e+01 -8.03545e+00 + 1727 1727 1 1.98900e+01 2.10000e-01 1.46300e+01 + 1728 1728 1 -1.99955e+01 7.15000e+00 -2.25545e+00 + 1729 1729 1 -2.91155e+01 -2.40154e+01 -2.44154e+01 + 1730 1730 1 9.70000e+00 3.50000e+00 5.96000e+00 + 1731 1731 1 -2.07955e+01 2.33200e+01 1.66300e+01 + 1732 1732 1 -4.36545e+00 -2.73545e+00 1.53300e+01 + 1733 1733 1 1.41200e+01 -2.18954e+01 -1.66254e+01 + 1734 1734 1 1.62700e+01 2.50000e+00 1.92000e+01 + 1735 1735 1 1.51600e+01 5.36000e+00 -1.06254e+01 + 1736 1736 1 -2.73555e+01 -3.05354e+01 4.44000e+00 + 1737 1737 1 -1.79955e+01 -6.05545e+00 2.48400e+01 + 1738 1738 1 -1.02855e+01 1.24600e+01 -2.74054e+01 + 1739 1739 1 -1.38255e+01 2.27800e+01 2.15900e+01 + 1740 1740 1 9.18000e+00 7.36000e+00 2.98400e+01 + 1741 1741 1 -1.91955e+01 2.61800e+01 1.23900e+01 + 1742 1742 1 -6.84545e+00 1.89700e+01 3.08600e+01 + 1743 1743 1 -2.95355e+01 1.44300e+01 -6.99545e+00 + 1744 1744 1 -1.59855e+01 -1.29954e+01 2.50400e+01 + 1745 1745 1 -2.82455e+01 5.59000e+00 1.66100e+01 + 1746 1746 1 4.36000e+00 -2.61354e+01 -1.73254e+01 + 1747 1747 1 -2.25955e+01 1.88600e+01 -6.65545e+00 + 1748 1748 1 -4.39545e+00 -1.98854e+01 1.16500e+01 + 1749 1749 1 1.05000e+00 -2.95754e+01 -1.94554e+01 + 1750 1750 1 -3.02545e+00 2.13900e+01 -6.92545e+00 + 1751 1751 1 -6.22545e+00 -1.83554e+01 1.71600e+01 + 1752 1752 1 9.04000e+00 -2.38954e+01 3.16000e+00 + 1753 1753 1 -8.15450e-01 -1.62554e+01 -1.29454e+01 + 1754 1754 1 -2.88545e+00 4.42000e+00 1.03700e+01 + 1755 1755 1 3.06800e+01 9.07000e+00 7.36000e+00 + 1756 1756 1 1.63700e+01 -5.24545e+00 2.57500e+01 + 1757 1757 1 -1.07355e+01 1.26800e+01 1.24000e+00 + 1758 1758 1 -8.50545e+00 7.03000e+00 -1.50954e+01 + 1759 1759 1 -2.33555e+01 1.59000e+01 1.11000e+00 + 1760 1760 1 4.19000e+00 2.44300e+01 -2.80554e+01 + 1761 1761 1 -3.34545e+00 2.25500e+01 2.98000e+00 + 1762 1762 1 1.35700e+01 2.91000e+01 -1.98454e+01 + 1763 1763 1 1.53300e+01 -7.55545e+00 -1.02954e+01 + 1764 1764 1 2.85800e+01 5.54000e+00 -2.70854e+01 + 1765 1765 1 -9.74545e+00 -2.82654e+01 2.81400e+01 + 1766 1766 1 -3.81545e+00 -1.32554e+01 -1.43654e+01 + 1767 1767 1 3.30000e+00 2.41900e+01 9.53000e+00 + 1768 1768 1 -1.14255e+01 -9.70545e+00 2.23000e+00 + 1769 1769 1 -2.86355e+01 -1.84545e+00 -2.06554e+01 + 1770 1770 1 -2.18855e+01 -2.86054e+01 -2.02154e+01 + 1771 1771 1 8.26000e+00 -3.07954e+01 1.06000e+01 + 1772 1772 1 7.53000e+00 -9.08545e+00 -1.98354e+01 + 1773 1773 1 -1.70755e+01 -4.99545e+00 3.01500e+01 + 1774 1774 1 -2.21355e+01 2.24000e+01 1.30400e+01 + 1775 1775 1 -2.49255e+01 -1.88254e+01 -3.08554e+01 + 1776 1776 1 -6.45545e+00 -1.08954e+01 2.41300e+01 + 1777 1777 1 1.57400e+01 -1.70954e+01 2.07200e+01 + 1778 1778 1 1.69000e+00 2.24900e+01 -2.66254e+01 + 1779 1779 1 3.02000e+01 -1.99254e+01 6.06000e+00 + 1780 1780 1 5.23000e+00 1.18600e+01 1.38700e+01 + 1781 1781 1 -5.57545e+00 1.03600e+01 -3.04054e+01 + 1782 1782 1 9.38000e+00 -2.27054e+01 1.98600e+01 + 1783 1783 1 2.24600e+01 -9.80545e+00 -1.87354e+01 + 1784 1784 1 1.33000e+00 2.51700e+01 1.48000e+01 + 1785 1785 1 -2.19545e+00 1.76300e+01 1.03000e+00 + 1786 1786 1 4.41000e+00 -1.57554e+01 8.60000e+00 + 1787 1787 1 -3.65545e+00 -1.65254e+01 -1.05954e+01 + 1788 1788 1 2.06400e+01 -2.08454e+01 -1.50545e+00 + 1789 1789 1 -1.91655e+01 -7.55446e-01 1.34000e+00 + 1790 1790 1 7.03000e+00 4.34000e+00 2.31400e+01 + 1791 1791 1 -8.03545e+00 1.66900e+01 2.56700e+01 + 1792 1792 1 1.31000e+00 2.58300e+01 -1.16454e+01 + 1793 1793 1 2.75100e+01 1.70600e+01 -1.94054e+01 + 1794 1794 1 6.36000e+00 -2.27454e+01 2.77300e+01 + 1795 1795 1 -2.83955e+01 -1.29545e+00 2.78000e+00 + 1796 1796 1 -2.81055e+01 -2.63054e+01 2.82500e+01 + 1797 1797 1 2.63400e+01 2.95800e+01 -2.66254e+01 + 1798 1798 1 1.85800e+01 -1.47554e+01 -1.18054e+01 + 1799 1799 1 8.02000e+00 -1.05354e+01 2.18500e+01 + 1800 1800 1 -2.45545e+00 -2.12254e+01 8.88000e+00 + 1801 1801 1 -3.10155e+01 5.32000e+00 1.99100e+01 + 1802 1802 1 -7.67545e+00 1.10900e+01 -1.26654e+01 + 1803 1803 1 -2.46755e+01 -2.32654e+01 -1.22754e+01 + 1804 1804 1 3.08600e+01 1.10700e+01 -1.43554e+01 + 1805 1805 1 1.30700e+01 2.13600e+01 -2.70554e+01 + 1806 1806 1 9.51000e+00 1.08100e+01 -2.53354e+01 + 1807 1807 1 -2.38555e+01 -2.18854e+01 -2.18545e+00 + 1808 1808 1 2.57300e+01 -1.44954e+01 1.93400e+01 + 1809 1809 1 1.43400e+01 -2.36854e+01 1.12000e+00 + 1810 1810 1 1.81000e+00 3.04900e+01 -5.95545e+00 + 1811 1811 1 -1.11355e+01 3.05200e+01 -9.25445e-01 + 1812 1812 1 3.05600e+01 -3.06354e+01 -2.11654e+01 + 1813 1813 1 -2.48055e+01 2.22000e+00 -1.32554e+01 + 1814 1814 1 -3.04255e+01 -1.96545e+00 -1.23054e+01 + 1815 1815 1 4.77000e+00 -2.84554e+01 2.78800e+01 + 1816 1816 1 8.55000e+00 8.48000e+00 -2.27254e+01 + 1817 1817 1 1.22000e+00 4.09000e+00 -2.91754e+01 + 1818 1818 1 1.60900e+01 -2.36754e+01 -2.17954e+01 + 1819 1819 1 1.25600e+01 -2.36554e+01 3.11200e+01 + 1820 1820 1 2.43200e+01 -5.06545e+00 1.65600e+01 + 1821 1821 1 -2.29555e+01 -1.51354e+01 -2.87054e+01 + 1822 1822 1 1.31900e+01 1.56500e+01 1.35300e+01 + 1823 1823 1 -2.48255e+01 -1.26254e+01 -2.00354e+01 + 1824 1824 1 2.04100e+01 1.19000e+01 1.38400e+01 + 1825 1825 1 -1.45855e+01 -2.58954e+01 2.38500e+01 + 1826 1826 1 1.96400e+01 -2.16354e+01 -7.91545e+00 + 1827 1827 1 2.93500e+01 3.09100e+01 2.08000e+00 + 1828 1828 1 2.19800e+01 -1.88854e+01 2.93400e+01 + 1829 1829 1 3.00600e+01 -2.33354e+01 -7.52545e+00 + 1830 1830 1 1.15000e+00 2.05800e+01 -1.81354e+01 + 1831 1831 1 -3.07155e+01 2.68900e+01 1.89300e+01 + 1832 1832 1 -6.05545e+00 -2.78354e+01 -1.58854e+01 + 1833 1833 1 -8.00545e+00 2.74700e+01 -3.01054e+01 + 1834 1834 1 7.56000e+00 -1.52054e+01 1.76200e+01 + 1835 1835 1 -3.26545e+00 2.01500e+01 -2.85654e+01 + 1836 1836 1 -2.33955e+01 1.04900e+01 7.06000e+00 + 1837 1837 1 -1.82055e+01 -1.22554e+01 -4.73545e+00 + 1838 1838 1 -1.06855e+01 -2.07354e+01 -4.46545e+00 + 1839 1839 1 2.55300e+01 1.32900e+01 1.11100e+01 + 1840 1840 1 1.99000e+00 7.20000e+00 3.03900e+01 + 1841 1841 1 2.26000e+01 1.91900e+01 -1.98554e+01 + 1842 1842 1 1.48400e+01 4.81000e+00 -2.91054e+01 + 1843 1843 1 -2.27355e+01 -3.97545e+00 -1.79154e+01 + 1844 1844 1 -6.75545e+00 -2.63254e+01 1.22500e+01 + 1845 1845 1 -2.25545e+00 7.32000e+00 -5.79545e+00 + 1846 1846 1 6.93000e+00 -1.14954e+01 -4.44545e+00 + 1847 1847 1 -2.13355e+01 -1.31954e+01 1.00500e+01 + 1848 1848 1 2.36000e+00 4.67000e+00 -2.53354e+01 + 1849 1849 1 -1.24255e+01 2.50000e+01 8.10000e+00 + 1850 1850 1 2.95900e+01 -3.98545e+00 1.92900e+01 + 1851 1851 1 1.98700e+01 -1.35454e+01 -3.01054e+01 + 1852 1852 1 7.64000e+00 9.90000e-01 -1.00754e+01 + 1853 1853 1 1.67400e+01 -1.20054e+01 2.89200e+01 + 1854 1854 1 2.92900e+01 2.52100e+01 -1.95545e+00 + 1855 1855 1 4.12000e+00 2.91900e+01 -1.05854e+01 + 1856 1856 1 3.06400e+01 -7.13545e+00 2.72300e+01 + 1857 1857 1 1.52000e+00 2.06400e+01 2.87000e+01 + 1858 1858 1 -1.88155e+01 2.93000e+01 -2.53054e+01 + 1859 1859 1 6.03000e+00 -7.67545e+00 1.95300e+01 + 1860 1860 1 -7.43545e+00 -1.26754e+01 -2.09854e+01 + 1861 1861 1 2.34000e+01 3.45543e-02 -6.77545e+00 + 1862 1862 1 2.49000e+01 6.30000e-01 -2.50854e+01 + 1863 1863 1 -8.19545e+00 -2.41254e+01 2.86400e+01 + 1864 1864 1 -3.17545e+00 -1.48454e+01 -5.54454e-02 + 1865 1865 1 1.80000e+00 -1.53654e+01 -2.06554e+01 + 1866 1866 1 -2.71055e+01 -1.58254e+01 -1.68554e+01 + 1867 1867 1 -1.73255e+01 2.01900e+01 -3.01854e+01 + 1868 1868 1 2.31000e+00 1.48900e+01 1.55000e+01 + 1869 1869 1 -2.63155e+01 -1.84054e+01 -2.65054e+01 + 1870 1870 1 1.16500e+01 -1.27254e+01 -1.52554e+01 + 1871 1871 1 1.99000e+01 -2.55854e+01 -1.05954e+01 + 1872 1872 1 2.02600e+01 -1.19054e+01 -4.04545e+00 + 1873 1873 1 1.49800e+01 -2.81454e+01 2.97800e+01 + 1874 1874 1 1.21400e+01 2.44200e+01 3.65000e+00 + 1875 1875 1 -2.07455e+01 -1.38154e+01 2.71100e+01 + 1876 1876 1 3.37000e+00 -1.81754e+01 4.71000e+00 + 1877 1877 1 8.08000e+00 1.78600e+01 -2.91354e+01 + 1878 1878 1 2.11900e+01 -2.18545e+00 -5.54454e-02 + 1879 1879 1 1.13000e+01 -1.82354e+01 2.53100e+01 + 1880 1880 1 -2.82355e+01 -8.15545e+00 -2.25154e+01 + 1881 1881 1 3.62000e+00 -5.63545e+00 9.16000e+00 + 1882 1882 1 2.37200e+01 1.51100e+01 2.88000e+01 + 1883 1883 1 -3.09255e+01 3.44554e-01 1.57700e+01 + 1884 1884 1 -3.62545e+00 -2.58054e+01 -2.72354e+01 + 1885 1885 1 -2.44355e+01 -2.76054e+01 1.30300e+01 + 1886 1886 1 2.56000e+00 2.93100e+01 -3.03954e+01 + 1887 1887 1 -1.86955e+01 2.21000e+00 -2.85854e+01 + 1888 1888 1 -3.07155e+01 -8.16545e+00 -8.80545e+00 + 1889 1889 1 -4.60545e+00 -2.91154e+01 -2.13354e+01 + 1890 1890 1 -2.35545e+00 2.54000e+00 -3.10154e+01 + 1891 1891 1 2.05900e+01 -3.65545e+00 1.89700e+01 + 1892 1892 1 8.71000e+00 -2.86354e+01 -2.54154e+01 + 1893 1893 1 1.60800e+01 7.41000e+00 3.89000e+00 + 1894 1894 1 1.96000e+01 1.34800e+01 -1.69854e+01 + 1895 1895 1 -1.29955e+01 2.16500e+01 -3.25445e-01 + 1896 1896 1 -3.13545e+00 -7.74545e+00 1.12000e+00 + 1897 1897 1 9.01000e+00 1.55900e+01 -1.81954e+01 + 1898 1898 1 4.96000e+00 -2.77654e+01 -2.57254e+01 + 1899 1899 1 -9.26545e+00 1.02500e+01 9.56000e+00 + 1900 1900 1 -7.26545e+00 -6.39545e+00 -5.34545e+00 + 1901 1901 1 -8.15450e-01 -1.13954e+01 -3.65545e+00 + 1902 1902 1 -1.22255e+01 -6.31545e+00 -7.46545e+00 + 1903 1903 1 -8.90545e+00 8.60000e-01 -2.73545e+00 + 1904 1904 1 1.80900e+01 -1.51754e+01 2.36300e+01 + 1905 1905 1 -2.37455e+01 2.67400e+01 -3.03545e+00 + 1906 1906 1 4.96000e+00 2.27700e+01 1.90600e+01 + 1907 1907 1 -4.51545e+00 7.45000e+00 1.57200e+01 + 1908 1908 1 2.18300e+01 4.21000e+00 -1.95254e+01 + 1909 1909 1 1.48700e+01 2.49500e+01 3.10600e+01 + 1910 1910 1 -1.76955e+01 1.99900e+01 1.83000e+01 + 1911 1911 1 3.28000e+00 6.04000e+00 -1.39854e+01 + 1912 1912 1 2.54500e+01 1.38100e+01 1.50700e+01 + 1913 1913 1 -1.14955e+01 9.34000e+00 -2.00054e+01 + 1914 1914 1 1.09200e+01 -9.79545e+00 2.17000e+00 + 1915 1915 1 -3.86545e+00 -6.40000e-01 -1.37545e+00 + 1916 1916 1 2.03300e+01 1.21600e+01 -2.04954e+01 + 1917 1917 1 -2.61555e+01 1.71900e+01 2.44600e+01 + 1918 1918 1 2.29600e+01 2.06100e+01 -1.39354e+01 + 1919 1919 1 1.48300e+01 1.49100e+01 1.75400e+01 + 1920 1920 1 -1.94255e+01 2.50500e+01 -4.63545e+00 + 1921 1921 1 3.03200e+01 -1.15454e+01 2.81700e+01 + 1922 1922 1 1.70400e+01 1.24200e+01 1.15200e+01 + 1923 1923 1 3.02500e+01 -2.19254e+01 2.39000e+01 + 1924 1924 1 3.02400e+01 -1.73154e+01 1.37000e+00 + 1925 1925 1 1.00100e+01 1.27400e+01 -2.20154e+01 + 1926 1926 1 -1.79655e+01 -2.97354e+01 2.93100e+01 + 1927 1927 1 1.01300e+01 -1.85754e+01 -1.69154e+01 + 1928 1928 1 8.40000e+00 -1.65154e+01 5.28000e+00 + 1929 1929 1 -2.71155e+01 -8.74545e+00 -1.22754e+01 + 1930 1930 1 1.58400e+01 -8.65545e+00 1.64700e+01 + 1931 1931 1 7.56000e+00 -8.85446e-01 6.43000e+00 + 1932 1932 1 -2.41655e+01 -5.34545e+00 7.88000e+00 + 1933 1933 1 1.39300e+01 -2.99754e+01 2.44000e+00 + 1934 1934 1 1.13200e+01 1.60500e+01 2.57000e+00 + 1935 1935 1 2.03000e+00 -2.57545e+00 -1.56654e+01 + 1936 1936 1 -2.04455e+01 2.36100e+01 7.76000e+00 + 1937 1937 1 2.95500e+01 -1.37154e+01 1.50400e+01 + 1938 1938 1 -2.16055e+01 2.99500e+01 4.46000e+00 + 1939 1939 1 -3.03955e+01 -4.15446e-01 2.61400e+01 + 1940 1940 1 -2.34355e+01 -2.28754e+01 -3.09354e+01 + 1941 1941 1 1.64200e+01 1.99600e+01 -2.62554e+01 + 1942 1942 1 -1.17655e+01 -9.23545e+00 7.75000e+00 + 1943 1943 1 -1.71555e+01 1.70100e+01 2.54900e+01 + 1944 1944 1 8.81000e+00 -5.64545e+00 1.35000e+01 + 1945 1945 1 -2.47555e+01 1.61700e+01 -1.36554e+01 + 1946 1946 1 -1.51955e+01 1.95300e+01 9.64000e+00 + 1947 1947 1 1.59800e+01 -2.79154e+01 -1.48954e+01 + 1948 1948 1 -8.41545e+00 -9.28545e+00 4.69000e+00 + 1949 1949 1 -2.63655e+01 -2.26554e+01 5.27000e+00 + 1950 1950 1 1.18700e+01 9.90000e+00 3.56000e+00 + 1951 1951 1 9.72000e+00 -1.33954e+01 -1.32545e+00 + 1952 1952 1 -3.27545e+00 2.30500e+01 -2.52554e+01 + 1953 1953 1 1.68000e+00 -9.73545e+00 2.54100e+01 + 1954 1954 1 1.22000e+01 -1.00854e+01 -8.43545e+00 + 1955 1955 1 -5.12545e+00 -2.15754e+01 -3.08454e+01 + 1956 1956 1 -1.16155e+01 4.18000e+00 3.05800e+01 + 1957 1957 1 -5.97545e+00 -3.65545e+00 1.95000e+00 + 1958 1958 1 -1.16555e+01 -2.84354e+01 1.98200e+01 + 1959 1959 1 -1.25450e-01 -1.62554e+01 -1.67954e+01 + 1960 1960 1 5.17000e+00 2.73700e+01 1.76000e+01 + 1961 1961 1 1.93400e+01 -7.74545e+00 -2.24654e+01 + 1962 1962 1 -2.76255e+01 1.03200e+01 1.40700e+01 + 1963 1963 1 9.31000e+00 2.93300e+01 -2.68554e+01 + 1964 1964 1 6.33000e+00 2.38000e+00 -1.32554e+01 + 1965 1965 1 -3.95450e-01 -1.06454e+01 -1.53554e+01 + 1966 1966 1 -7.78545e+00 2.65900e+01 -1.11954e+01 + 1967 1967 1 -2.74855e+01 -4.14545e+00 -2.66454e+01 + 1968 1968 1 -2.07545e+00 2.96000e+01 -1.99654e+01 + 1969 1969 1 2.73200e+01 -1.79545e+00 1.72800e+01 + 1970 1970 1 -7.36545e+00 -2.59054e+01 2.56700e+01 + 1971 1971 1 1.44100e+01 -8.40545e+00 5.22000e+00 + 1972 1972 1 1.74300e+01 -6.83545e+00 1.36100e+01 + 1973 1973 1 1.25700e+01 3.01100e+01 -5.02545e+00 + 1974 1974 1 1.20800e+01 1.93600e+01 -2.96854e+01 + 1975 1975 1 1.43400e+01 -1.70754e+01 -1.51654e+01 + 1976 1976 1 9.77000e+00 -1.04154e+01 1.18100e+01 + 1977 1977 1 2.09600e+01 2.26000e+01 6.16000e+00 + 1978 1978 1 -4.53545e+00 -1.37154e+01 1.93300e+01 + 1979 1979 1 -2.56955e+01 -1.49754e+01 -7.24545e+00 + 1980 1980 1 6.91000e+00 -2.01054e+01 8.62000e+00 + 1981 1981 1 6.60000e-01 -2.69654e+01 2.73000e+01 + 1982 1982 1 7.24000e+00 -1.74354e+01 2.61700e+01 + 1983 1983 1 -6.18545e+00 -6.34545e+00 1.40100e+01 + 1984 1984 1 1.84200e+01 -2.35154e+01 1.08500e+01 + 1985 1985 1 -4.68545e+00 5.50000e+00 1.90200e+01 + 1986 1986 1 2.73900e+01 -1.26154e+01 4.85000e+00 + 1987 1987 1 1.76600e+01 2.40400e+01 2.99000e+00 + 1988 1988 1 3.10300e+01 2.32500e+01 -2.21454e+01 + 1989 1989 1 2.64800e+01 2.22900e+01 -2.23054e+01 + 1990 1990 1 -2.34555e+01 -2.90854e+01 -3.45545e+00 + 1991 1991 1 -3.25450e-01 2.49600e+01 1.00600e+01 + 1992 1992 1 -1.48455e+01 1.64200e+01 1.79000e+00 + 1993 1993 1 -1.97555e+01 -1.69154e+01 -1.58254e+01 + 1994 1994 1 2.25800e+01 2.01900e+01 -1.00354e+01 + 1995 1995 1 7.03000e+00 -7.93545e+00 2.75800e+01 + 1996 1996 1 2.61700e+01 1.89500e+01 -2.62254e+01 + 1997 1997 1 2.57600e+01 -2.80054e+01 -1.73254e+01 + 1998 1998 1 2.38600e+01 -6.79545e+00 -9.84545e+00 + 1999 1999 1 -2.02855e+01 -7.06545e+00 -2.49054e+01 + 2000 2000 1 1.55000e+01 2.52700e+01 -5.18545e+00 + 2001 2001 1 9.38000e+00 -3.01454e+01 -1.22754e+01 + 2002 2002 1 1.67300e+01 -1.63545e+00 1.77300e+01 + 2003 2003 1 1.42900e+01 1.59000e+00 8.88000e+00 + 2004 2004 1 7.16000e+00 2.06500e+01 -7.35545e+00 + 2005 2005 1 -2.31355e+01 1.57000e+01 2.97700e+01 + 2006 2006 1 9.60000e-01 0.00000e+00 2.84200e+01 + 2007 2007 1 -1.25355e+01 2.19200e+01 1.05700e+01 + 2008 2008 1 -2.66855e+01 1.78300e+01 -2.22545e+00 + 2009 2009 1 -1.85955e+01 3.22000e+00 3.37000e+00 + 2010 2010 1 -1.24955e+01 -1.88054e+01 -1.19054e+01 + 2011 2011 1 -1.47955e+01 -2.00545e+00 2.37800e+01 + 2012 2012 1 2.50500e+01 4.61000e+00 -2.53454e+01 + 2013 2013 1 -1.83555e+01 2.35600e+01 -3.04354e+01 + 2014 2014 1 2.85400e+01 1.81300e+01 1.61500e+01 + 2015 2015 1 2.32900e+01 -5.97545e+00 -2.15854e+01 + 2016 2016 1 -1.87655e+01 3.02800e+01 -2.00054e+01 + 2017 2017 1 1.10000e+00 -3.08154e+01 -1.45654e+01 + 2018 2018 1 -1.78755e+01 -2.83854e+01 2.23400e+01 + 2019 2019 1 1.19100e+01 -2.59545e+00 7.91000e+00 + 2020 2020 1 -4.85545e+00 2.71800e+01 2.19100e+01 + 2021 2021 1 -6.45545e+00 2.12000e+01 3.40000e+00 + 2022 2022 1 -2.36545e+00 5.05000e+00 2.37000e+01 + 2023 2023 1 6.80000e-01 8.18000e+00 2.51600e+01 + 2024 2024 1 1.80500e+01 2.31300e+01 1.50600e+01 + 2025 2025 1 -7.94545e+00 1.49100e+01 -2.70954e+01 + 2026 2026 1 1.11700e+01 -1.87254e+01 -1.29954e+01 + 2027 2027 1 -8.25450e-01 2.56200e+01 2.79500e+01 + 2028 2028 1 3.59000e+00 -4.72545e+00 -7.09545e+00 + 2029 2029 1 2.32000e+01 2.44900e+01 -1.04354e+01 + 2030 2030 1 -5.54545e+00 1.77300e+01 -5.34545e+00 + 2031 2031 1 3.02200e+01 -5.01545e+00 -4.03545e+00 + 2032 2032 1 -1.78155e+01 1.89700e+01 -5.57545e+00 + 2033 2033 1 1.47700e+01 -2.67654e+01 1.15400e+01 + 2034 2034 1 -1.26755e+01 1.70800e+01 -1.56954e+01 + 2035 2035 1 8.63000e+00 -2.20454e+01 -1.19354e+01 + 2036 2036 1 -5.15545e+00 2.39700e+01 -2.24154e+01 + 2037 2037 1 1.43100e+01 -2.16954e+01 -1.14554e+01 + 2038 2038 1 6.99000e+00 2.69900e+01 -3.00154e+01 + 2039 2039 1 -1.13755e+01 -2.58545e+00 -2.58545e+00 + 2040 2040 1 1.22700e+01 2.54000e+00 2.67800e+01 + 2041 2041 1 -1.28255e+01 -2.78254e+01 -7.86545e+00 + 2042 2042 1 7.27000e+00 -2.33654e+01 -8.92545e+00 + 2043 2043 1 7.17000e+00 -1.83354e+01 -1.38454e+01 + 2044 2044 1 2.39100e+01 1.19000e+01 1.78300e+01 + 2045 2045 1 1.35900e+01 -1.81754e+01 -3.01954e+01 + 2046 2046 1 9.58000e+00 8.60000e-01 -1.77854e+01 + 2047 2047 1 9.52000e+00 1.84300e+01 -2.15454e+01 + 2048 2048 1 -1.43155e+01 -1.23154e+01 1.54300e+01 + 2049 2049 1 2.70700e+01 -1.22954e+01 -2.60154e+01 + 2050 2050 1 6.80000e-01 1.70600e+01 -3.29545e+00 + 2051 2051 1 -1.21355e+01 2.91200e+01 -9.16545e+00 + 2052 2052 1 -7.75450e-01 -2.64454e+01 -7.64545e+00 + 2053 2053 1 -9.75545e+00 -1.33545e+00 2.53700e+01 + 2054 2054 1 -2.86555e+01 2.32500e+01 1.70300e+01 + 2055 2055 1 2.19000e+00 2.17100e+01 -2.10154e+01 + 2056 2056 1 -1.20755e+01 -2.79554e+01 5.93000e+00 + 2057 2057 1 1.01900e+01 -2.79254e+01 -9.08545e+00 + 2058 2058 1 -3.11055e+01 -1.17754e+01 -1.14154e+01 + 2059 2059 1 1.69300e+01 2.03400e+01 1.88900e+01 + 2060 2060 1 -7.33545e+00 1.88000e+00 2.96000e+01 + 2061 2061 1 2.85300e+01 -6.66545e+00 -1.00545e+00 + 2062 2062 1 2.62200e+01 -2.34454e+01 -9.50545e+00 + 2063 2063 1 -3.05855e+01 -2.74654e+01 1.83700e+01 + 2064 2064 1 -2.94655e+01 -2.34154e+01 -5.62545e+00 + 2065 2065 1 1.90500e+01 -8.45446e-01 -8.28545e+00 + 2066 2066 1 2.85200e+01 -1.74554e+01 1.17500e+01 + 2067 2067 1 -2.64155e+01 2.37800e+01 -1.20954e+01 + 2068 2068 1 -2.37545e+00 8.58000e+00 -2.78054e+01 + 2069 2069 1 1.80100e+01 2.56400e+01 -1.37545e+00 + 2070 2070 1 2.57900e+01 -2.86454e+01 1.77800e+01 + 2071 2071 1 5.15000e+00 -2.00254e+01 -2.20545e+00 + 2072 2072 1 1.10700e+01 -1.46854e+01 -2.26454e+01 + 2073 2073 1 -8.66545e+00 1.08200e+01 -1.73954e+01 + 2074 2074 1 -3.35545e+00 -4.00545e+00 2.67700e+01 + 2075 2075 1 -2.27455e+01 -6.93545e+00 -2.78854e+01 + 2076 2076 1 1.13200e+01 2.36200e+01 -2.85054e+01 + 2077 2077 1 -8.56545e+00 2.74600e+01 1.28100e+01 + 2078 2078 1 -1.54502e-02 -5.60545e+00 2.47000e+01 + 2079 2079 1 -2.41555e+01 -1.92454e+01 7.48000e+00 + 2080 2080 1 -2.50355e+01 -1.97254e+01 -1.54554e+01 + 2081 2081 1 5.65000e+00 -3.75545e+00 1.28300e+01 + 2082 2082 1 -1.14455e+01 3.06300e+01 -4.63545e+00 + 2083 2083 1 3.55000e+00 1.54200e+01 -2.48454e+01 + 2084 2084 1 3.05900e+01 -2.41954e+01 2.82500e+01 + 2085 2085 1 -2.97355e+01 -2.04154e+01 -1.18354e+01 + 2086 2086 1 6.53000e+00 -1.63254e+01 -3.25545e+00 + 2087 2087 1 9.06000e+00 1.56400e+01 1.58000e+01 + 2088 2088 1 1.17000e+00 -8.96545e+00 -1.21954e+01 + 2089 2089 1 4.94000e+00 -2.69454e+01 -1.30554e+01 + 2090 2090 1 1.97800e+01 -2.66654e+01 -4.77545e+00 + 2091 2091 1 1.31000e+01 -1.49754e+01 1.20700e+01 + 2092 2092 1 -2.88555e+01 -1.57754e+01 1.48000e+01 + 2093 2093 1 -1.94755e+01 4.45000e+00 -6.58545e+00 + 2094 2094 1 9.20000e+00 -7.27545e+00 1.02800e+01 + 2095 2095 1 4.80000e-01 1.89200e+01 1.45700e+01 + 2096 2096 1 -3.08555e+01 -5.53545e+00 4.66000e+00 + 2097 2097 1 4.57000e+00 -3.32545e+00 -2.22154e+01 + 2098 2098 1 1.27500e+01 6.44000e+00 -1.40754e+01 + 2099 2099 1 8.02000e+00 -1.87854e+01 -1.02454e+01 + 2100 2100 1 -1.15155e+01 2.06900e+01 1.36400e+01 + 2101 2101 1 1.18800e+01 -3.37545e+00 -2.28754e+01 + 2102 2102 1 3.94000e+00 -1.76854e+01 -1.08254e+01 + 2103 2103 1 -5.65450e-01 2.76000e+01 -1.79545e+00 + 2104 2104 1 2.75200e+01 2.15500e+01 -8.93545e+00 + 2105 2105 1 3.04500e+01 1.47400e+01 -2.27754e+01 + 2106 2106 1 -1.63255e+01 -8.52545e+00 -8.55445e-01 + 2107 2107 1 7.47000e+00 -3.00554e+01 -3.15445e-01 + 2108 2108 1 2.31700e+01 -1.50754e+01 -2.44754e+01 + 2109 2109 1 -5.01545e+00 2.60500e+01 2.80700e+01 + 2110 2110 1 -2.36555e+01 2.71800e+01 4.25000e+00 + 2111 2111 1 -2.24655e+01 -2.84354e+01 -2.44154e+01 + 2112 2112 1 2.01000e+01 1.62700e+01 -1.81854e+01 + 2113 2113 1 2.88000e+01 -1.67454e+01 -4.98545e+00 + 2114 2114 1 -1.19755e+01 2.51500e+01 2.37500e+01 + 2115 2115 1 -1.86755e+01 1.69600e+01 -2.33154e+01 + 2116 2116 1 2.29200e+01 4.36000e+00 -9.64545e+00 + 2117 2117 1 2.17300e+01 -8.76545e+00 -1.43545e+00 + 2118 2118 1 2.71400e+01 5.12000e+00 -6.03545e+00 + 2119 2119 1 -2.31955e+01 -2.47854e+01 1.00000e-01 + 2120 2120 1 -2.95545e+00 1.65500e+01 -1.80854e+01 + 2121 2121 1 -2.26855e+01 -2.84054e+01 1.88100e+01 + 2122 2122 1 2.04600e+01 -2.16054e+01 -2.07254e+01 + 2123 2123 1 2.18000e+01 -1.33954e+01 -1.54854e+01 + 2124 2124 1 7.84000e+00 6.74000e+00 6.42000e+00 + 2125 2125 1 1.10200e+01 -2.15054e+01 1.12900e+01 + 2126 2126 1 1.82400e+01 -3.02454e+01 -3.60545e+00 + 2127 2127 1 -5.94545e+00 -2.37254e+01 -3.84545e+00 + 2128 2128 1 1.50000e-01 1.46000e+01 -1.05654e+01 + 2129 2129 1 -2.47155e+01 -2.19254e+01 1.81400e+01 + 2130 2130 1 2.25800e+01 -3.43545e+00 1.14600e+01 + 2131 2131 1 1.60900e+01 -6.55545e+00 -3.51545e+00 + 2132 2132 1 -1.30555e+01 1.45300e+01 2.48500e+01 + 2133 2133 1 2.04000e+01 -3.07854e+01 -1.85054e+01 + 2134 2134 1 2.14000e+00 4.89000e+00 -3.42545e+00 + 2135 2135 1 -1.59355e+01 -4.77545e+00 4.40000e+00 + 2136 2136 1 -2.39555e+01 -2.18154e+01 -2.70254e+01 + 2137 2137 1 -2.99355e+01 -9.11545e+00 8.53000e+00 + 2138 2138 1 1.27400e+01 8.34000e+00 -1.55545e+00 + 2139 2139 1 -8.23545e+00 -1.94545e+00 1.56700e+01 + 2140 2140 1 -2.61655e+01 1.48100e+01 -6.21545e+00 + 2141 2141 1 -7.85545e+00 -2.40754e+01 1.73600e+01 + 2142 2142 1 1.39800e+01 -1.20254e+01 -3.61545e+00 + 2143 2143 1 -5.71545e+00 -2.49454e+01 1.97700e+01 + 2144 2144 1 1.57900e+01 -6.54545e+00 7.10000e-01 + 2145 2145 1 -1.38855e+01 6.23000e+00 -2.18454e+01 + 2146 2146 1 2.05700e+01 -1.73154e+01 2.29700e+01 + 2147 2147 1 -9.67545e+00 -2.51454e+01 2.14100e+01 + 2148 2148 1 -2.59155e+01 -1.03854e+01 -1.21545e+00 + 2149 2149 1 2.55500e+01 -1.68654e+01 -2.29854e+01 + 2150 2150 1 -1.94545e+00 7.36000e+00 7.76000e+00 + 2151 2151 1 2.77600e+01 -2.71754e+01 -4.53545e+00 + 2152 2152 1 2.33000e+01 -1.20754e+01 1.34100e+01 + 2153 2153 1 7.83000e+00 -1.38454e+01 -1.72554e+01 + 2154 2154 1 -4.38545e+00 2.66100e+01 4.43000e+00 + 2155 2155 1 9.25000e+00 -7.59545e+00 -7.34545e+00 + 2156 2156 1 -2.07855e+01 -2.41654e+01 -2.82554e+01 + 2157 2157 1 2.10900e+01 9.25000e+00 -1.73554e+01 + 2158 2158 1 -2.85955e+01 -1.83054e+01 -8.89545e+00 + 2159 2159 1 -1.56155e+01 2.67000e+01 1.29000e+01 + 2160 2160 1 1.15600e+01 7.25000e+00 1.26700e+01 + 2161 2161 1 2.93900e+01 2.68900e+01 -2.36554e+01 + 2162 2162 1 -3.04855e+01 1.95100e+01 1.82900e+01 + 2163 2163 1 -1.34455e+01 1.69200e+01 -2.49754e+01 + 2164 2164 1 -6.33545e+00 -1.03454e+01 -6.15545e+00 + 2165 2165 1 1.97200e+01 2.69700e+01 7.71000e+00 + 2166 2166 1 -3.70545e+00 2.78800e+01 7.84000e+00 + 2167 2167 1 -8.54502e-02 2.54900e+01 2.50000e+00 + 2168 2168 1 -1.83555e+01 6.30000e+00 5.46000e+00 + 2169 2169 1 -1.85155e+01 -1.24545e+00 2.16200e+01 + 2170 2170 1 -1.71655e+01 1.69700e+01 1.28700e+01 + 2171 2171 1 -4.07545e+00 1.21900e+01 -1.84354e+01 + 2172 2172 1 -2.35855e+01 -2.82154e+01 -7.83545e+00 + 2173 2173 1 2.30100e+01 2.81600e+01 3.03000e+00 + 2174 2174 1 -1.63855e+01 2.55500e+01 2.39600e+01 + 2175 2175 1 -4.06545e+00 9.53000e+00 2.19200e+01 + 2176 2176 1 -2.03655e+01 1.22000e+00 -2.19354e+01 + 2177 2177 1 4.84000e+00 -3.08254e+01 -1.68854e+01 + 2178 2178 1 -2.51055e+01 8.94000e+00 -3.04754e+01 + 2179 2179 1 -2.49545e+00 1.49800e+01 2.18200e+01 + 2180 2180 1 2.43100e+01 2.40000e+00 1.10700e+01 + 2181 2181 1 -7.97545e+00 -1.15654e+01 1.98200e+01 + 2182 2182 1 1.63900e+01 -4.84545e+00 -8.47545e+00 + 2183 2183 1 2.44500e+01 2.87600e+01 8.10000e+00 + 2184 2184 1 5.77000e+00 1.44000e+00 4.37000e+00 + 2185 2185 1 2.32800e+01 -4.40545e+00 -1.30354e+01 + 2186 2186 1 -1.29955e+01 2.17000e+01 -2.71854e+01 + 2187 2187 1 2.88200e+01 3.39000e+00 7.64000e+00 + 2188 2188 1 -1.98755e+01 -2.04454e+01 -1.80454e+01 + 2189 2189 1 5.00000e-02 1.46200e+01 -2.02754e+01 + 2190 2190 1 2.56900e+01 -2.12754e+01 2.28500e+01 + 2191 2191 1 1.74500e+01 -2.21354e+01 -4.48545e+00 + 2192 2192 1 1.29900e+01 -1.38554e+01 -1.82754e+01 + 2193 2193 1 1.03100e+01 -2.64354e+01 -1.21454e+01 + 2194 2194 1 -1.58155e+01 7.74000e+00 2.49300e+01 + 2195 2195 1 -1.53255e+01 -2.13854e+01 -8.20545e+00 + 2196 2196 1 5.70000e-01 1.83600e+01 -4.60000e-01 + 2197 2197 1 -2.31855e+01 7.40000e-01 3.36000e+00 + 2198 2198 1 7.31000e+00 -2.01754e+01 2.04200e+01 + 2199 2199 1 2.66500e+01 -1.04354e+01 2.96000e+01 + 2200 2200 1 2.17300e+01 -7.93545e+00 2.90000e+01 + 2201 2201 1 1.74700e+01 -5.86545e+00 3.58000e+00 + 2202 2202 1 -1.95055e+01 -2.37954e+01 -7.48545e+00 + 2203 2203 1 2.19900e+01 4.25000e+00 1.76200e+01 + 2204 2204 1 1.33700e+01 3.98000e+00 -1.72654e+01 + 2205 2205 1 2.51700e+01 5.42000e+00 1.53700e+01 + 2206 2206 1 6.64000e+00 1.21600e+01 9.82000e+00 + 2207 2207 1 -3.07655e+01 2.28500e+01 -4.59545e+00 + 2208 2208 1 -2.04155e+01 -2.57854e+01 -2.01545e+00 + 2209 2209 1 -4.85545e+00 -2.14545e+00 -1.15654e+01 + 2210 2210 1 1.77600e+01 5.91000e+00 2.59500e+01 + 2211 2211 1 -1.93155e+01 2.72000e+00 2.92800e+01 + 2212 2212 1 2.19800e+01 -1.82154e+01 -2.92854e+01 + 2213 2213 1 -1.22655e+01 -2.49954e+01 2.87100e+01 + 2214 2214 1 2.77900e+01 2.06000e+00 -8.24545e+00 + 2215 2215 1 6.11000e+00 1.84700e+01 -1.98454e+01 + 2216 2216 1 2.88500e+01 6.79000e+00 6.02000e+00 + 2217 2217 1 -5.63545e+00 -1.86554e+01 -7.05445e-01 + 2218 2218 1 8.77000e+00 1.27800e+01 -1.90545e+00 + 2219 2219 1 2.22000e+01 5.48000e+00 -5.16545e+00 + 2220 2220 1 -1.39855e+01 1.47700e+01 1.61500e+01 + 2221 2221 1 -1.50955e+01 -1.78154e+01 -2.10154e+01 + 2222 2222 1 -3.07855e+01 -1.27554e+01 3.76000e+00 + 2223 2223 1 -9.31545e+00 -8.39545e+00 2.36300e+01 + 2224 2224 1 2.58000e+00 9.75000e+00 2.13500e+01 + 2225 2225 1 -8.46545e+00 4.01000e+00 -1.66454e+01 + 2226 2226 1 2.34200e+01 7.60000e-01 -2.94545e+00 + 2227 2227 1 1.39800e+01 -2.31754e+01 -2.60254e+01 + 2228 2228 1 1.50400e+01 -9.73545e+00 2.36500e+01 + 2229 2229 1 2.65000e+01 -2.80554e+01 -2.11254e+01 + 2230 2230 1 -1.13755e+01 -2.31354e+01 -2.27545e+00 + 2231 2231 1 -2.71955e+01 1.26500e+01 -1.35454e+01 + 2232 2232 1 5.72000e+00 1.92700e+01 -2.32154e+01 + 2233 2233 1 -1.72555e+01 -2.06954e+01 -5.10545e+00 + 2234 2234 1 -5.07545e+00 9.12000e+00 1.16500e+01 + 2235 2235 1 7.25000e+00 -2.46054e+01 1.10900e+01 + 2236 2236 1 1.20200e+01 -1.41154e+01 2.65100e+01 + 2237 2237 1 1.35400e+01 9.46000e+00 7.16000e+00 + 2238 2238 1 3.68000e+00 -1.28545e+00 -6.55445e-01 + 2239 2239 1 3.09900e+01 -1.59954e+01 -1.34554e+01 + 2240 2240 1 -1.40355e+01 1.10100e+01 -2.57554e+01 + 2241 2241 1 -1.68355e+01 -7.64545e+00 2.46000e+00 + 2242 2242 1 -2.50855e+01 -1.48054e+01 -3.83545e+00 + 2243 2243 1 -1.13155e+01 -2.56154e+01 1.31800e+01 + 2244 2244 1 -2.40545e+00 7.92000e+00 -2.27545e+00 + 2245 2245 1 -3.07755e+01 2.34900e+01 5.98000e+00 + 2246 2246 1 -1.02545e+00 -1.31054e+01 1.03600e+01 + 2247 2247 1 -7.86545e+00 5.83000e+00 2.04200e+01 + 2248 2248 1 -1.41455e+01 3.01800e+01 -1.95454e+01 + 2249 2249 1 -7.88545e+00 2.85500e+01 -3.47545e+00 + 2250 2250 1 -1.93155e+01 2.83000e+00 -1.33554e+01 + 2251 2251 1 7.63000e+00 9.13000e+00 -4.21545e+00 + 2252 2252 1 2.52600e+01 6.34000e+00 -1.04354e+01 + 2253 2253 1 -2.79755e+01 1.45000e+01 3.04800e+01 + 2254 2254 1 -2.62455e+01 2.93000e+00 2.42900e+01 + 2255 2255 1 -7.65450e-01 2.45700e+01 -1.92954e+01 + 2256 2256 1 -1.85255e+01 -2.04254e+01 3.01400e+01 + 2257 2257 1 -1.25055e+01 2.11800e+01 -1.34354e+01 + 2258 2258 1 -2.52855e+01 7.09000e+00 4.40000e+00 + 2259 2259 1 -1.70655e+01 2.59200e+01 -1.84254e+01 + 2260 2260 1 -2.33655e+01 -1.67554e+01 -9.26545e+00 + 2261 2261 1 -2.01555e+01 -1.41854e+01 -2.11545e+00 + 2262 2262 1 -2.50155e+01 7.65000e+00 1.25400e+01 + 2263 2263 1 6.50000e+00 2.95500e+01 -2.35954e+01 + 2264 2264 1 5.98000e+00 -8.04545e+00 -2.56054e+01 + 2265 2265 1 5.15000e+00 8.46000e+00 -2.49454e+01 + 2266 2266 1 2.84000e+01 -6.63545e+00 1.77500e+01 + 2267 2267 1 -5.64545e+00 3.92000e+00 -1.43854e+01 + 2268 2268 1 -2.21655e+01 1.44900e+01 1.03900e+01 + 2269 2269 1 -9.59545e+00 1.05500e+01 -2.36854e+01 + 2270 2270 1 -1.55555e+01 -9.39545e+00 -1.12854e+01 + 2271 2271 1 2.46100e+01 -2.92854e+01 1.39100e+01 + 2272 2272 1 8.20000e+00 -2.14554e+01 3.05500e+01 + 2273 2273 1 -2.97055e+01 2.72000e+01 -2.16754e+01 + 2274 2274 1 1.96200e+01 1.12300e+01 5.52000e+00 + 2275 2275 1 9.16000e+00 2.60500e+01 8.70000e-01 + 2276 2276 1 -2.63255e+01 2.93500e+01 2.36800e+01 + 2277 2277 1 2.01500e+01 -7.54545e+00 -3.03154e+01 + 2278 2278 1 2.15800e+01 1.10100e+01 -1.37154e+01 + 2279 2279 1 1.60600e+01 1.62900e+01 -6.28545e+00 + 2280 2280 1 2.44400e+01 2.08900e+01 -1.73154e+01 + 2281 2281 1 2.57800e+01 -2.01254e+01 -1.41545e+00 + 2282 2282 1 -2.97855e+01 -1.21954e+01 -1.93354e+01 + 2283 2283 1 1.71600e+01 2.50100e+01 -2.17354e+01 + 2284 2284 1 5.39000e+00 1.79700e+01 -2.49545e+00 + 2285 2285 1 -1.08655e+01 2.85400e+01 -1.34254e+01 + 2286 2286 1 -7.19545e+00 1.48300e+01 -7.88545e+00 + 2287 2287 1 1.72700e+01 -1.07854e+01 -1.59954e+01 + 2288 2288 1 2.15500e+01 -8.76545e+00 -1.46154e+01 + 2289 2289 1 2.66500e+01 1.21600e+01 -2.25254e+01 + 2290 2290 1 6.80000e+00 6.22000e+00 1.83100e+01 + 2291 2291 1 -1.35455e+01 2.96200e+01 -2.66054e+01 + 2292 2292 1 -1.39055e+01 -1.74954e+01 -5.57545e+00 + 2293 2293 1 2.06400e+01 2.82000e+00 2.55400e+01 + 2294 2294 1 -2.44855e+01 1.94000e+01 6.83000e+00 + 2295 2295 1 1.15600e+01 1.48000e+01 -4.48545e+00 + 2296 2296 1 8.18000e+00 2.76700e+01 -1.54754e+01 + 2297 2297 1 9.80000e+00 2.74000e+00 -5.06545e+00 + 2298 2298 1 3.56000e+00 1.53300e+01 -2.91654e+01 + 2299 2299 1 2.17000e+00 -1.74545e+00 5.63000e+00 + 2300 2300 1 -6.45450e-01 3.72000e+00 -5.17545e+00 + 2301 2301 1 -2.98155e+01 -1.32054e+01 1.90600e+01 + 2302 2302 1 -3.95545e+00 3.16000e+00 -2.20654e+01 + 2303 2303 1 1.52900e+01 2.05500e+01 -1.49545e+00 + 2304 2304 1 -1.15055e+01 4.39000e+00 1.96600e+01 + 2305 2305 1 -2.42655e+01 -7.97545e+00 -2.41654e+01 + 2306 2306 1 2.00300e+01 -1.21154e+01 -2.10854e+01 + 2307 2307 1 6.78000e+00 1.43400e+01 2.62000e+00 + 2308 2308 1 8.85000e+00 1.95900e+01 9.39000e+00 + 2309 2309 1 -9.07545e+00 -5.23545e+00 2.84555e-01 + 2310 2310 1 2.30700e+01 2.66600e+01 -2.57454e+01 + 2311 2311 1 1.74600e+01 2.92800e+01 2.92200e+01 + 2312 2312 1 -2.60255e+01 -1.14354e+01 8.13000e+00 + 2313 2313 1 2.55400e+01 -2.49454e+01 2.55600e+01 + 2314 2314 1 2.10100e+01 -1.44954e+01 2.69300e+01 + 2315 2315 1 -2.56755e+01 6.68000e+00 -1.53854e+01 + 2316 2316 1 1.20600e+01 1.34700e+01 9.81000e+00 + 2317 2317 1 -1.93755e+01 -6.32545e+00 -1.33545e+00 + 2318 2318 1 -1.05545e+00 -1.87454e+01 -2.48154e+01 + 2319 2319 1 -2.76755e+01 -1.79154e+01 4.79000e+00 + 2320 2320 1 6.57000e+00 -1.90654e+01 -5.63545e+00 + 2321 2321 1 2.22700e+01 2.37800e+01 -6.41545e+00 + 2322 2322 1 -2.48955e+01 2.29100e+01 2.62000e+01 + 2323 2323 1 -1.57655e+01 3.22000e+00 -6.73545e+00 + 2324 2324 1 -2.66655e+01 2.06600e+01 -1.38154e+01 + 2325 2325 1 2.17300e+01 1.53200e+01 -2.11554e+01 + 2326 2326 1 -2.27855e+01 3.01500e+01 -9.53545e+00 + 2327 2327 1 1.93200e+01 4.51000e+00 4.18000e+00 + 2328 2328 1 1.66200e+01 2.72500e+01 -1.27254e+01 + 2329 2329 1 1.94600e+01 -3.77545e+00 7.76000e+00 + 2330 2330 1 2.50700e+01 -2.72454e+01 -7.29545e+00 + 2331 2331 1 -1.34955e+01 2.47200e+01 -6.81545e+00 + 2332 2332 1 1.91000e+00 1.09700e+01 -2.27754e+01 + 2333 2333 1 2.96000e+00 -5.73545e+00 -2.78545e+00 + 2334 2334 1 6.41000e+00 1.15000e+01 -9.14545e+00 + 2335 2335 1 2.45200e+01 -2.56754e+01 8.44000e+00 + 2336 2336 1 3.00000e+01 2.69700e+01 -2.80354e+01 + 2337 2337 1 1.34100e+01 -6.46545e+00 -1.32954e+01 + 2338 2338 1 -1.64155e+01 -9.25545e+00 2.04200e+01 + 2339 2339 1 1.32700e+01 1.66900e+01 -8.65445e-01 + 2340 2340 1 -2.66655e+01 -9.05545e+00 3.00700e+01 + 2341 2341 1 2.17500e+01 -6.26545e+00 2.30300e+01 + 2342 2342 1 -9.50545e+00 -2.70545e+00 -7.15545e+00 + 2343 2343 1 2.51800e+01 -5.48545e+00 3.46000e+00 + 2344 2344 1 -9.18545e+00 -2.29954e+01 -2.56154e+01 + 2345 2345 1 -8.55450e-01 -4.34545e+00 -2.99954e+01 + 2346 2346 1 -2.12955e+01 2.80000e+01 2.33800e+01 + 2347 2347 1 2.24800e+01 1.81300e+01 1.25800e+01 + 2348 2348 1 -2.14545e+00 -1.05545e+00 -7.82545e+00 + 2349 2349 1 2.31700e+01 -6.76545e+00 8.48000e+00 + 2350 2350 1 1.79900e+01 3.02200e+01 1.96900e+01 + 2351 2351 1 1.62700e+01 2.79700e+01 2.25100e+01 + 2352 2352 1 3.00000e+00 2.26700e+01 -3.05354e+01 + 2353 2353 1 -2.52555e+01 7.48000e+00 -2.07454e+01 + 2354 2354 1 -4.48545e+00 1.45400e+01 -9.90545e+00 + 2355 2355 1 2.74300e+01 1.22800e+01 2.38100e+01 + 2356 2356 1 2.70600e+01 2.74200e+01 -4.40000e-01 + 2357 2357 1 2.43000e+01 -2.43754e+01 -2.64954e+01 + 2358 2358 1 3.00000e-02 2.67500e+01 -7.40545e+00 + 2359 2359 1 -1.84555e+01 7.94000e+00 8.91000e+00 + 2360 2360 1 2.84300e+01 -6.44545e+00 1.38300e+01 + 2361 2361 1 1.16900e+01 2.56100e+01 -2.33854e+01 + 2362 2362 1 2.43500e+01 -2.25054e+01 1.37700e+01 + 2363 2363 1 -5.72545e+00 -1.51454e+01 -4.23545e+00 + 2364 2364 1 7.14000e+00 -1.69554e+01 -2.03754e+01 + 2365 2365 1 8.78000e+00 2.72300e+01 1.63000e+01 + 2366 2366 1 -2.32455e+01 2.37700e+01 -3.20000e-01 + 2367 2367 1 5.13000e+00 5.12000e+00 -4.98545e+00 + 2368 2368 1 2.50700e+01 2.53000e+01 1.15700e+01 + 2369 2369 1 2.01800e+01 9.82000e+00 -7.58545e+00 + 2370 2370 1 1.95800e+01 -2.11545e+00 -2.97354e+01 + 2371 2371 1 -1.66155e+01 -2.80454e+01 6.57000e+00 + 2372 2372 1 2.09200e+01 -2.55754e+01 -1.48554e+01 + 2373 2373 1 1.04300e+01 -2.01754e+01 -2.27754e+01 + 2374 2374 1 1.27700e+01 -2.05454e+01 1.56900e+01 + 2375 2375 1 -2.27555e+01 2.99200e+01 1.09000e+00 + 2376 2376 1 1.13700e+01 -2.28454e+01 -8.52545e+00 + 2377 2377 1 1.64000e+01 2.79000e+00 2.51700e+01 + 2378 2378 1 -2.21255e+01 2.82500e+01 8.29000e+00 + 2379 2379 1 2.01700e+01 1.14600e+01 2.05800e+01 + 2380 2380 1 7.60000e-01 1.95000e+01 1.92900e+01 + 2381 2381 1 2.45000e+00 -3.77545e+00 2.80000e+00 + 2382 2382 1 -2.22155e+01 -2.76854e+01 -1.62254e+01 + 2383 2383 1 -4.60545e+00 -2.18545e+00 8.36000e+00 + 2384 2384 1 1.74400e+01 5.72000e+00 -2.16454e+01 + 2385 2385 1 -1.91355e+01 1.19600e+01 9.58000e+00 + 2386 2386 1 -3.02545e+00 -8.32545e+00 1.10400e+01 + 2387 2387 1 -2.87155e+01 2.05000e+00 -1.14454e+01 + 2388 2388 1 -2.03755e+01 -4.75545e+00 1.07900e+01 + 2389 2389 1 4.50000e+00 -2.02754e+01 1.12000e+01 + 2390 2390 1 -1.96655e+01 -2.01954e+01 1.81300e+01 + 2391 2391 1 1.72000e+00 -2.16754e+01 3.50000e+00 + 2392 2392 1 -1.57555e+01 1.90900e+01 2.89600e+01 + 2393 2393 1 1.55600e+01 2.06100e+01 2.57500e+01 + 2394 2394 1 6.97000e+00 -2.16654e+01 2.38000e+01 + 2395 2395 1 -2.48545e+00 -1.44545e+00 -1.68654e+01 + 2396 2396 1 -3.06545e+00 2.52600e+01 2.52100e+01 + 2397 2397 1 3.32000e+00 -3.94545e+00 2.62800e+01 + 2398 2398 1 1.88600e+01 9.49000e+00 1.72100e+01 + 2399 2399 1 6.42000e+00 2.79300e+01 -6.67545e+00 + 2400 2400 1 5.25000e+00 -1.34954e+01 1.53800e+01 + 2401 2401 1 1.66900e+01 -2.41354e+01 -1.38754e+01 + 2402 2402 1 -2.30155e+01 -1.76754e+01 -9.35445e-01 + 2403 2403 1 2.81000e+00 5.18000e+00 1.86400e+01 + 2404 2404 1 -2.76855e+01 -1.80545e+00 -7.64545e+00 + 2405 2405 1 1.40400e+01 -1.42254e+01 -2.59354e+01 + 2406 2406 1 2.13000e+01 7.99000e+00 -2.88654e+01 + 2407 2407 1 4.02000e+00 5.24000e+00 1.40900e+01 + 2408 2408 1 1.12100e+01 4.18000e+00 9.61000e+00 + 2409 2409 1 2.87000e+00 2.76600e+01 2.08300e+01 + 2410 2410 1 -9.44545e+00 3.06100e+01 -2.84154e+01 + 2411 2411 1 2.43000e+01 -2.27545e+00 7.06000e+00 + 2412 2412 1 -1.56855e+01 2.43900e+01 2.71800e+01 + 2413 2413 1 -1.99855e+01 2.12400e+01 2.83900e+01 + 2414 2414 1 -3.07955e+01 -2.84054e+01 -2.28545e+00 + 2415 2415 1 1.16200e+01 1.43600e+01 2.65300e+01 + 2416 2416 1 -2.83055e+01 2.40000e+00 2.97400e+01 + 2417 2417 1 6.02000e+00 3.05500e+01 1.41000e+01 + 2418 2418 1 1.39900e+01 -1.74254e+01 2.70700e+01 + 2419 2419 1 1.45900e+01 2.33000e+01 -1.56854e+01 + 2420 2420 1 7.22000e+00 1.47900e+01 2.71200e+01 + 2421 2421 1 -1.65545e+00 9.43000e+00 3.00000e+01 + 2422 2422 1 2.05000e+01 2.14800e+01 2.82000e+00 + 2423 2423 1 -1.36955e+01 -1.38254e+01 -7.32545e+00 + 2424 2424 1 2.80600e+01 -3.98545e+00 1.47000e+00 + 2425 2425 1 -8.25545e+00 3.03100e+01 -1.52754e+01 + 2426 2426 1 2.63000e+01 2.34900e+01 -3.08354e+01 + 2427 2427 1 1.47100e+01 -1.81545e+00 -1.96354e+01 + 2428 2428 1 2.92100e+01 3.91000e+00 -1.43545e+00 + 2429 2429 1 3.02900e+01 -1.98454e+01 -3.98545e+00 + 2430 2430 1 -5.95545e+00 3.73000e+00 -8.50545e+00 + 2431 2431 1 -1.69155e+01 6.19000e+00 3.04300e+01 + 2432 2432 1 -1.04055e+01 1.15000e+01 -3.07454e+01 + 2433 2433 1 1.34000e+00 -2.81854e+01 1.17800e+01 + 2434 2434 1 4.70000e-01 2.57000e+00 -9.66545e+00 + 2435 2435 1 9.77000e+00 -9.08545e+00 -9.75445e-01 + 2436 2436 1 2.26500e+01 -1.37545e+00 2.27500e+01 + 2437 2437 1 -7.61545e+00 -1.60554e+01 1.28600e+01 + 2438 2438 1 -1.38655e+01 -2.36254e+01 6.92000e+00 + 2439 2439 1 -5.26545e+00 2.66800e+01 -1.54454e-02 + 2440 2440 1 2.10800e+01 -3.02654e+01 1.74900e+01 + 2441 2441 1 -9.28545e+00 5.37000e+00 2.83200e+01 + 2442 2442 1 -2.09955e+01 -1.78854e+01 -2.83754e+01 + 2443 2443 1 -2.33855e+01 2.21600e+01 -2.41954e+01 + 2444 2444 1 1.70000e+00 -2.10454e+01 9.08000e+00 + 2445 2445 1 5.41000e+00 3.10100e+01 2.12800e+01 + 2446 2446 1 -1.89545e+00 -2.22454e+01 -2.46154e+01 + 2447 2447 1 -2.23855e+01 1.60600e+01 -1.73054e+01 + 2448 2448 1 0.00000e+00 1.14000e+01 8.34000e+00 + 2449 2449 1 -2.38055e+01 1.22900e+01 -1.24254e+01 + 2450 2450 1 -9.13545e+00 2.80100e+01 -8.04545e+00 + 2451 2451 1 -2.53955e+01 5.66000e+00 -9.85545e+00 + 2452 2452 1 1.24000e+00 -1.46454e+01 1.38000e+01 + 2453 2453 1 1.55800e+01 -1.92054e+01 -6.92545e+00 + 2454 2454 1 -2.39055e+01 2.14500e+01 9.28000e+00 + 2455 2455 1 9.10000e+00 -2.29654e+01 -2.76054e+01 + 2456 2456 1 1.47400e+01 -1.52654e+01 -5.68545e+00 + 2457 2457 1 2.52000e+01 -2.98754e+01 -3.01254e+01 + 2458 2458 1 -5.72545e+00 1.19700e+01 1.52700e+01 + 2459 2459 1 -2.35855e+01 1.24400e+01 -1.93554e+01 + 2460 2460 1 -2.15655e+01 -1.56254e+01 1.42700e+01 + 2461 2461 1 1.30000e+00 8.94000e+00 -1.39054e+01 + 2462 2462 1 2.11000e+00 2.45800e+01 -6.85445e-01 + 2463 2463 1 -1.42255e+01 -1.86154e+01 -8.55445e-01 + 2464 2464 1 -2.48955e+01 -2.38154e+01 -1.70054e+01 + 2465 2465 1 1.53500e+01 -3.53545e+00 1.22400e+01 + 2466 2466 1 -1.49055e+01 3.45000e+00 -2.90454e+01 + 2467 2467 1 -1.21545e+00 -3.08154e+01 9.53000e+00 + 2468 2468 1 -2.10855e+01 1.01900e+01 -2.01354e+01 + 2469 2469 1 -1.79155e+01 -1.39654e+01 -2.76854e+01 + 2470 2470 1 -2.26855e+01 2.89000e+00 -1.96254e+01 + 2471 2471 1 -2.71655e+01 -1.89354e+01 1.59700e+01 + 2472 2472 1 4.56000e+00 1.10000e-01 2.60200e+01 + 2473 2473 1 1.43100e+01 -1.03854e+01 1.00700e+01 + 2474 2474 1 -2.18755e+01 2.62700e+01 -3.00554e+01 + 2475 2475 1 2.33700e+01 -2.06454e+01 -4.30545e+00 + 2476 2476 1 7.68000e+00 5.30000e-01 1.42800e+01 + 2477 2477 1 9.41000e+00 4.83000e+00 -1.61654e+01 + 2478 2478 1 1.92100e+01 6.84000e+00 6.71000e+00 + 2479 2479 1 1.35600e+01 -2.63654e+01 2.47600e+01 + 2480 2480 1 6.48000e+00 5.47000e+00 -3.05754e+01 + 2481 2481 1 1.68800e+01 -1.59254e+01 -2.66554e+01 + 2482 2482 1 7.69000e+00 2.89600e+01 -1.85754e+01 + 2483 2483 1 -2.06055e+01 1.30400e+01 -2.26654e+01 + 2484 2484 1 7.78000e+00 1.75100e+01 -1.57754e+01 + 2485 2485 1 7.59000e+00 -9.68545e+00 3.03100e+01 + 2486 2486 1 -3.04655e+01 -2.75554e+01 -2.73554e+01 + 2487 2487 1 -2.33255e+01 2.94500e+01 -2.39954e+01 + 2488 2488 1 1.32100e+01 2.24900e+01 1.94500e+01 + 2489 2489 1 2.46500e+01 -2.09354e+01 6.67000e+00 + 2490 2490 1 -2.42555e+01 1.60800e+01 1.39400e+01 + 2491 2491 1 -2.91855e+01 -8.43545e+00 2.32500e+01 + 2492 2492 1 2.81900e+01 3.17000e+00 2.42000e+01 + 2493 2493 1 -2.47355e+01 1.11400e+01 -2.31454e+01 + 2494 2494 1 -2.98455e+01 6.67000e+00 2.34500e+01 + 2495 2495 1 1.05700e+01 4.19000e+00 2.24900e+01 + 2496 2496 1 2.57900e+01 7.07000e+00 -2.83454e+01 + 2497 2497 1 -5.55545e+00 1.41600e+01 2.53600e+01 + 2498 2498 1 -1.19855e+01 -2.52754e+01 -2.81154e+01 + 2499 2499 1 2.19000e+00 -3.04154e+01 2.90800e+01 + 2500 2500 1 5.98000e+00 -2.65154e+01 -5.44540e-03 + diff --git a/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.in b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.in new file mode 100644 index 0000000000..ef92fbe655 --- /dev/null +++ b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.in @@ -0,0 +1,68 @@ +# LAMMPS input file for 50.0% methanol mole fraction solution +# with 2500 methanol molecules in implicit water. +# +# +# Author: David Rosenberger, van der Vegt Group, TU Darmstadt +# +# Refer: Rosenberger, Sanyal, Shell, van der Vegt, J. Chem. Theory Comput. 15, 2881-2895 (2019) + + +# Initialize simulation box +dimension 3 +boundary p p p +units real +atom_style molecular + +# Set potential styles +pair_style hybrid/overlay table spline 500 local/density + +# Read molecule data and set initial velocities +read_data methanol_implicit_water.data +velocity all create 3.0000e+02 12142 rot yes dist gaussian + +# Assign potentials +pair_coeff 1 1 table methanol_implicit_water.pair.table PairMM +pair_coeff * * local/density methanol_implicit_water.localdensity.table + + + + +#Recentering during minimization and equilibration +fix recentering all recenter 0.0 0.0 0.0 units box + +#Thermostat & time integration +timestep 1.0 +thermo 100 +thermo_style custom etotal ke pe temp evdwl + +#minimization +minimize 1.e-4 0.0 1000 1000 + +#set up integration parameters +fix timeintegration all nve +fix thermostat all langevin 3.0000e+02 3.0000e+02 1.0000e+02 59915 + +#Equilibration (for realistic results, run for 2000000 steps) +reset_timestep 0 +thermo 200 +thermo_style custom etotal ke pe temp evdwl + +#run equilibration +run 2000 + +#turn off recentering during production run +unfix recentering + + +#setup trajectory output +dump myDump all custom 100 methanol_implicit_water.lammpstrj.gz id type x y z element +dump_modify myDump element M +dump_modify myDump sort id + +#run production (for realistic results, run for 10000000 steps) +reset_timestep 0 +thermo 1000 +thermo_style custom etotal ke pe temp evdwl +run 10000 + + diff --git a/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.localdensity.table b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.localdensity.table new file mode 100644 index 0000000000..b9b4a082bc --- /dev/null +++ b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.localdensity.table @@ -0,0 +1,509 @@ +#LOCAL DENSITY POTENTIALS + +1 500 + + 5.3000000e+00 6.3000000e+00 +1 +1 + 0.0000000e+00 2.6000000e+01 5.2104208e-02 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4810000e-01 + 1.4807157e-01 + 1.4782582e-01 + 1.4711763e-01 + 1.4570179e-01 + 1.4333312e-01 + 1.3976643e-01 + 1.3478059e-01 + 1.2856173e-01 + 1.2163552e-01 + 1.1453802e-01 + 1.0780525e-01 + 1.0197328e-01 + 9.7575837e-02 + 9.4875548e-02 + 9.3613063e-02 + 9.3469690e-02 + 9.4126738e-02 + 9.5265515e-02 + 9.6567329e-02 + 9.7735007e-02 + 9.8575495e-02 + 9.8927186e-02 + 9.8628481e-02 + 9.7517779e-02 + 9.5433481e-02 + 9.2235018e-02 + 8.8072568e-02 + 8.3308496e-02 + 7.8309990e-02 + 7.3444241e-02 + 6.9078438e-02 + 6.5577180e-02 + 6.3110699e-02 + 6.1523109e-02 + 6.0627357e-02 + 6.0236386e-02 + 6.0163144e-02 + 6.0220573e-02 + 6.0233006e-02 + 6.0072080e-02 + 5.9621717e-02 + 5.8765838e-02 + 5.7388366e-02 + 5.5373224e-02 + 5.2623498e-02 + 4.9261717e-02 + 4.5550390e-02 + 4.1754290e-02 + 3.8138193e-02 + 3.4966871e-02 + 3.2501662e-02 + 3.0825931e-02 + 2.9762256e-02 + 2.9112455e-02 + 2.8678347e-02 + 2.8261751e-02 + 2.7664487e-02 + 2.6737788e-02 + 2.5509284e-02 + 2.4045951e-02 + 2.2414767e-02 + 2.0682707e-02 + 1.8916748e-02 + 1.7179645e-02 + 1.5493687e-02 + 1.3858641e-02 + 1.2274032e-02 + 1.0739385e-02 + 9.2542252e-03 + 7.8179601e-03 + 6.4255437e-03 + 5.0662231e-03 + 3.7288715e-03 + 2.4023618e-03 + 1.0755673e-03 +-2.6263394e-04 +-1.6141074e-03 +-2.9522803e-03 +-4.2451362e-03 +-5.4606586e-03 +-6.5668312e-03 +-7.5316377e-03 +-8.3294239e-03 +-8.9860017e-03 +-9.5521117e-03 +-1.0078658e-02 +-1.0616544e-02 +-1.1216675e-02 +-1.1929199e-02 +-1.2782684e-02 +-1.3781467e-02 +-1.4928602e-02 +-1.6227139e-02 +-1.7680132e-02 +-1.9290577e-02 +-2.1031059e-02 +-2.2793537e-02 +-2.4456753e-02 +-2.5899451e-02 +-2.7000374e-02 +-2.7638267e-02 +-2.7719868e-02 +-2.7344330e-02 +-2.6691680e-02 +-2.5942229e-02 +-2.5276286e-02 +-2.4874159e-02 +-2.4909370e-02 +-2.5403835e-02 +-2.6230347e-02 +-2.7255409e-02 +-2.8345523e-02 +-2.9367192e-02 +-3.0187085e-02 +-3.0712590e-02 +-3.0944560e-02 +-3.0896910e-02 +-3.0583557e-02 +-3.0018416e-02 +-2.9215405e-02 +-2.8195478e-02 +-2.7020910e-02 +-2.5768997e-02 +-2.4517057e-02 +-2.3342408e-02 +-2.2322368e-02 +-2.1532406e-02 +-2.1015034e-02 +-2.0784355e-02 +-2.0853543e-02 +-2.1235771e-02 +-2.1944214e-02 +-2.2991215e-02 +-2.4278363e-02 +-2.5486458e-02 +-2.6270119e-02 +-2.6283964e-02 +-2.5182614e-02 +-2.2620686e-02 +-1.8367122e-02 +-1.2765600e-02 +-6.3400224e-03 + 3.8564733e-04 + 6.8874449e-03 + 1.2641406e-02 + 1.7151899e-02 + 2.0334733e-02 + 2.2416173e-02 + 2.3630118e-02 + 2.4210466e-02 + 2.4391115e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + 2.4405000e-02 + diff --git a/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.pair.table b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.pair.table new file mode 100644 index 0000000000..b74fe398e8 --- /dev/null +++ b/examples/USER/misc/local_density/methanol_implicit_water/methanol_implicit_water.pair.table @@ -0,0 +1,1012 @@ + +PairMM +N 500 R 2.00000e-02 1.50000e+01 + +1 2.00000e-02 9.19945e+01 2.97871e+01 +2 5.00200e-02 9.11003e+01 2.97871e+01 +3 8.00401e-02 9.02061e+01 2.97871e+01 +4 1.10060e-01 8.93119e+01 2.97871e+01 +5 1.40080e-01 8.84177e+01 2.97871e+01 +6 1.70100e-01 8.75235e+01 2.97871e+01 +7 2.00120e-01 8.66293e+01 2.97871e+01 +8 2.30140e-01 8.57350e+01 2.97871e+01 +9 2.60160e-01 8.48408e+01 2.97871e+01 +10 2.90180e-01 8.39466e+01 2.97871e+01 +11 3.20200e-01 8.30524e+01 2.97871e+01 +12 3.50220e-01 8.21582e+01 2.97871e+01 +13 3.80240e-01 8.12640e+01 2.97871e+01 +14 4.10261e-01 8.03698e+01 2.97871e+01 +15 4.40281e-01 7.94756e+01 2.97871e+01 +16 4.70301e-01 7.85814e+01 2.97871e+01 +17 5.00321e-01 7.76872e+01 2.97871e+01 +18 5.30341e-01 7.67929e+01 2.97871e+01 +19 5.60361e-01 7.58987e+01 2.97871e+01 +20 5.90381e-01 7.50045e+01 2.97871e+01 +21 6.20401e-01 7.41103e+01 2.97871e+01 +22 6.50421e-01 7.32161e+01 2.97871e+01 +23 6.80441e-01 7.23219e+01 2.97871e+01 +24 7.10461e-01 7.14277e+01 2.97871e+01 +25 7.40481e-01 7.05335e+01 2.97871e+01 +26 7.70501e-01 6.96393e+01 2.97871e+01 +27 8.00521e-01 6.87450e+01 2.97871e+01 +28 8.30541e-01 6.78508e+01 2.97871e+01 +29 8.60561e-01 6.69566e+01 2.97871e+01 +30 8.90581e-01 6.60624e+01 2.97871e+01 +31 9.20601e-01 6.51682e+01 2.97871e+01 +32 9.50621e-01 6.42740e+01 2.97871e+01 +33 9.80641e-01 6.33798e+01 2.97871e+01 +34 1.01066e+00 6.24856e+01 2.97871e+01 +35 1.04068e+00 6.15914e+01 2.97871e+01 +36 1.07070e+00 6.06972e+01 2.97871e+01 +37 1.10072e+00 5.98029e+01 2.97871e+01 +38 1.13074e+00 5.89087e+01 2.97871e+01 +39 1.16076e+00 5.80145e+01 2.97871e+01 +40 1.19078e+00 5.71203e+01 2.97871e+01 +41 1.22080e+00 5.62261e+01 2.97871e+01 +42 1.25082e+00 5.53319e+01 2.97871e+01 +43 1.28084e+00 5.44377e+01 2.97871e+01 +44 1.31086e+00 5.35435e+01 2.97871e+01 +45 1.34088e+00 5.26493e+01 2.97871e+01 +46 1.37090e+00 5.17551e+01 2.97871e+01 +47 1.40092e+00 5.08608e+01 2.97871e+01 +48 1.43094e+00 4.99666e+01 2.97871e+01 +49 1.46096e+00 4.90724e+01 2.97871e+01 +50 1.49098e+00 4.81782e+01 2.97871e+01 +51 1.52100e+00 4.72840e+01 2.97871e+01 +52 1.55102e+00 4.63898e+01 2.97871e+01 +53 1.58104e+00 4.54956e+01 2.97871e+01 +54 1.61106e+00 4.46014e+01 2.97871e+01 +55 1.64108e+00 4.37072e+01 2.97871e+01 +56 1.67110e+00 4.28130e+01 2.97871e+01 +57 1.70112e+00 4.19187e+01 2.97871e+01 +58 1.73114e+00 4.10245e+01 2.97871e+01 +59 1.76116e+00 4.01303e+01 2.97871e+01 +60 1.79118e+00 3.92361e+01 2.97871e+01 +61 1.82120e+00 3.83419e+01 2.97871e+01 +62 1.85122e+00 3.74477e+01 2.97871e+01 +63 1.88124e+00 3.65535e+01 2.97871e+01 +64 1.91126e+00 3.56593e+01 2.97871e+01 +65 1.94128e+00 3.47651e+01 2.97871e+01 +66 1.97130e+00 3.38709e+01 2.97871e+01 +67 2.00132e+00 3.29766e+01 2.97871e+01 +68 2.03134e+00 3.20824e+01 2.97871e+01 +69 2.06136e+00 3.11882e+01 2.97871e+01 +70 2.09138e+00 3.02940e+01 2.97871e+01 +71 2.12140e+00 2.93998e+01 2.97871e+01 +72 2.15142e+00 2.85056e+01 2.97871e+01 +73 2.18144e+00 2.76114e+01 2.97871e+01 +74 2.21146e+00 2.67172e+01 2.97871e+01 +75 2.24148e+00 2.58230e+01 2.97871e+01 +76 2.27150e+00 2.49288e+01 2.97871e+01 +77 2.30152e+00 2.40345e+01 2.97871e+01 +78 2.33154e+00 2.31403e+01 2.97871e+01 +79 2.36156e+00 2.22461e+01 2.97871e+01 +80 2.39158e+00 2.13519e+01 2.97871e+01 +81 2.42160e+00 2.04577e+01 2.97871e+01 +82 2.45162e+00 1.95635e+01 2.97871e+01 +83 2.48164e+00 1.86693e+01 2.97871e+01 +84 2.51166e+00 1.77751e+01 2.97871e+01 +85 2.54168e+00 1.68809e+01 2.97871e+01 +86 2.57170e+00 1.59867e+01 2.97871e+01 +87 2.60172e+00 1.50924e+01 2.97871e+01 +88 2.63174e+00 1.41982e+01 2.97871e+01 +89 2.66176e+00 1.33040e+01 2.97871e+01 +90 2.69178e+00 1.24098e+01 2.97871e+01 +91 2.72180e+00 1.15156e+01 2.97871e+01 +92 2.75182e+00 1.06214e+01 2.97869e+01 +93 2.78184e+00 9.72719e+00 2.97870e+01 +94 2.81186e+00 8.83299e+00 2.97872e+01 +95 2.84188e+00 7.94090e+00 2.95697e+01 +96 2.87190e+00 7.06217e+00 2.88975e+01 +97 2.90192e+00 6.21045e+00 2.77704e+01 +98 2.93194e+00 5.39938e+00 2.61886e+01 +99 2.96196e+00 4.64263e+00 2.41520e+01 +100 2.99198e+00 3.95385e+00 2.16606e+01 +101 3.02200e+00 3.34529e+00 1.89044e+01 +102 3.05202e+00 2.81637e+00 1.63756e+01 +103 3.08204e+00 2.35957e+00 1.40993e+01 +104 3.11206e+00 1.96731e+00 1.20757e+01 +105 3.14208e+00 1.63202e+00 1.03046e+01 +106 3.17210e+00 1.34610e+00 8.78617e+00 +107 3.20212e+00 1.10205e+00 7.50421e+00 +108 3.23214e+00 8.94281e-01 6.35707e+00 +109 3.26216e+00 7.19196e-01 5.32692e+00 +110 3.29218e+00 5.73281e-01 4.41377e+00 +111 3.32220e+00 4.53023e-01 3.61760e+00 +112 3.35222e+00 3.54909e-01 2.93842e+00 +113 3.38224e+00 2.75435e-01 2.37392e+00 +114 3.41226e+00 2.11828e-01 1.86993e+00 +115 3.44228e+00 1.62787e-01 1.40363e+00 +116 3.47230e+00 1.27177e-01 9.75004e-01 +117 3.50232e+00 1.03870e-01 5.84063e-01 +118 3.53234e+00 9.17332e-02 2.30805e-01 +119 3.56236e+00 8.96354e-02 -8.47700e-02 +120 3.59238e+00 9.62368e-02 -3.41692e-01 +121 3.62240e+00 1.09350e-01 -5.18612e-01 +122 3.65242e+00 1.26574e-01 -6.15527e-01 +123 3.68244e+00 1.45506e-01 -6.32440e-01 +124 3.71246e+00 1.63745e-01 -5.69349e-01 +125 3.74248e+00 1.78889e-01 -4.26254e-01 +126 3.77251e+00 1.88729e-01 -2.28844e-01 +127 3.80253e+00 1.92736e-01 -3.99828e-02 +128 3.83255e+00 1.91244e-01 1.37465e-01 +129 3.86257e+00 1.84597e-01 3.03500e-01 +130 3.89259e+00 1.73136e-01 4.58121e-01 +131 3.92261e+00 1.57205e-01 6.01329e-01 +132 3.95263e+00 1.37160e-01 7.30471e-01 +133 3.98265e+00 1.13658e-01 8.29879e-01 +134 4.01267e+00 8.76572e-02 8.96980e-01 +135 4.04269e+00 6.01267e-02 9.31775e-01 +136 4.07271e+00 3.20367e-02 9.34263e-01 +137 4.10273e+00 4.35682e-03 9.04444e-01 +138 4.13275e+00 -2.19459e-02 8.43457e-01 +139 4.16277e+00 -4.62335e-02 7.74951e-01 +140 4.19279e+00 -6.84930e-02 7.08340e-01 +141 4.22281e+00 -8.87812e-02 6.43625e-01 +142 4.25283e+00 -1.07155e-01 5.80805e-01 +143 4.28285e+00 -1.23672e-01 5.19881e-01 +144 4.31287e+00 -1.38388e-01 4.60852e-01 +145 4.34289e+00 -1.51360e-01 4.03717e-01 +146 4.37291e+00 -1.62646e-01 3.48474e-01 +147 4.40293e+00 -1.72302e-01 2.95121e-01 +148 4.43295e+00 -1.80384e-01 2.43661e-01 +149 4.46297e+00 -1.86950e-01 1.94092e-01 +150 4.49299e+00 -1.92056e-01 1.46414e-01 +151 4.52301e+00 -1.95763e-01 1.01113e-01 +152 4.55303e+00 -1.98162e-01 5.93143e-02 +153 4.58305e+00 -1.99360e-01 2.10616e-02 +154 4.61307e+00 -1.99462e-01 -1.36446e-02 +155 4.64309e+00 -1.98576e-01 -4.48045e-02 +156 4.67311e+00 -1.96808e-01 -7.24180e-02 +157 4.70313e+00 -1.94262e-01 -9.67717e-02 +158 4.73315e+00 -1.91013e-01 -1.19452e-01 +159 4.76317e+00 -1.87105e-01 -1.40703e-01 +160 4.79319e+00 -1.82580e-01 -1.60523e-01 +161 4.82321e+00 -1.77481e-01 -1.78913e-01 +162 4.85323e+00 -1.71852e-01 -1.95873e-01 +163 4.88325e+00 -1.65735e-01 -2.11359e-01 +164 4.91327e+00 -1.59186e-01 -2.24534e-01 +165 4.94329e+00 -1.52281e-01 -2.35084e-01 +166 4.97331e+00 -1.45098e-01 -2.43010e-01 +167 5.00333e+00 -1.37717e-01 -2.48312e-01 +168 5.03335e+00 -1.30215e-01 -2.50989e-01 +169 5.06337e+00 -1.22673e-01 -2.51043e-01 +170 5.09339e+00 -1.15153e-01 -2.50013e-01 +171 5.12341e+00 -1.07660e-01 -2.49271e-01 +172 5.15343e+00 -1.00184e-01 -2.48818e-01 +173 5.18345e+00 -9.27178e-02 -2.48655e-01 +174 5.21347e+00 -8.52520e-02 -2.48780e-01 +175 5.24349e+00 -7.77781e-02 -2.49195e-01 +176 5.27351e+00 -7.02942e-02 -2.49037e-01 +177 5.30353e+00 -6.28510e-02 -2.46424e-01 +178 5.33355e+00 -5.55241e-02 -2.41290e-01 +179 5.36357e+00 -4.83892e-02 -2.33634e-01 +180 5.39359e+00 -4.15219e-02 -2.23458e-01 +181 5.42361e+00 -3.49980e-02 -2.10761e-01 +182 5.45363e+00 -2.88902e-02 -1.96059e-01 +183 5.48365e+00 -2.32177e-02 -1.82031e-01 +184 5.51367e+00 -1.79505e-02 -1.69060e-01 +185 5.54369e+00 -1.30568e-02 -1.57145e-01 +186 5.57371e+00 -8.50494e-03 -1.46287e-01 +187 5.60373e+00 -4.26314e-03 -1.36487e-01 +188 5.63375e+00 -2.99795e-04 -1.27712e-01 +189 5.66377e+00 3.40924e-03 -1.19447e-01 +190 5.69379e+00 6.87508e-03 -1.11509e-01 +191 5.72381e+00 1.01075e-02 -1.03898e-01 +192 5.75383e+00 1.31164e-02 -9.66146e-02 +193 5.78385e+00 1.59115e-02 -8.96578e-02 +194 5.81387e+00 1.85027e-02 -8.30284e-02 +195 5.84389e+00 2.09020e-02 -7.69319e-02 +196 5.87391e+00 2.31288e-02 -7.15406e-02 +197 5.90393e+00 2.52043e-02 -6.68545e-02 +198 5.93395e+00 2.71498e-02 -6.28736e-02 +199 5.96397e+00 2.89863e-02 -5.95979e-02 +200 5.99399e+00 3.07351e-02 -5.70274e-02 +201 6.02401e+00 3.24185e-02 -5.53056e-02 +202 6.05403e+00 3.40672e-02 -5.47288e-02 +203 6.08405e+00 3.57159e-02 -5.53060e-02 +204 6.11407e+00 3.73993e-02 -5.70373e-02 +205 6.14409e+00 3.91520e-02 -5.99226e-02 +206 6.17411e+00 4.10086e-02 -6.39619e-02 +207 6.20413e+00 4.29997e-02 -6.84095e-02 +208 6.23415e+00 4.50810e-02 -6.96340e-02 +209 6.26417e+00 4.71434e-02 -6.71518e-02 +210 6.29419e+00 4.90757e-02 -6.09627e-02 +211 6.32421e+00 5.07666e-02 -5.10669e-02 +212 6.35423e+00 5.21047e-02 -3.74643e-02 +213 6.38425e+00 5.29795e-02 -2.03798e-02 +214 6.41427e+00 5.33308e-02 -3.19178e-03 +215 6.44429e+00 5.31815e-02 1.29657e-02 +216 6.47431e+00 5.25626e-02 2.80925e-02 +217 6.50433e+00 5.15051e-02 4.21888e-02 +218 6.53435e+00 5.00399e-02 5.52546e-02 +219 6.56437e+00 4.81979e-02 6.72903e-02 +220 6.59439e+00 4.60085e-02 7.84476e-02 +221 6.62441e+00 4.34955e-02 8.88459e-02 +222 6.65443e+00 4.06818e-02 9.84851e-02 +223 6.68445e+00 3.75901e-02 1.07365e-01 +224 6.71447e+00 3.42431e-02 1.15487e-01 +225 6.74449e+00 3.06638e-02 1.22849e-01 +226 6.77451e+00 2.68771e-02 1.29179e-01 +227 6.80453e+00 2.29237e-02 1.33943e-01 +228 6.83455e+00 1.88510e-02 1.37127e-01 +229 6.86457e+00 1.47064e-02 1.38733e-01 +230 6.89459e+00 1.05373e-02 1.38759e-01 +231 6.92461e+00 6.39110e-03 1.37205e-01 +232 6.95463e+00 2.31403e-03 1.34290e-01 +233 6.98465e+00 -1.66868e-03 1.31007e-01 +234 7.01467e+00 -5.54918e-03 1.27480e-01 +235 7.04469e+00 -9.32014e-03 1.23709e-01 +236 7.07471e+00 -1.29742e-02 1.19694e-01 +237 7.10473e+00 -1.65041e-02 1.15435e-01 +238 7.13475e+00 -1.99024e-02 1.10910e-01 +239 7.16477e+00 -2.31572e-02 1.05819e-01 +240 7.19479e+00 -2.62492e-02 1.00067e-01 +241 7.22481e+00 -2.91586e-02 9.36550e-02 +242 7.25483e+00 -3.18656e-02 8.65822e-02 +243 7.28485e+00 -3.43504e-02 7.88488e-02 +244 7.31487e+00 -3.65931e-02 7.04591e-02 +245 7.34489e+00 -3.85827e-02 6.22193e-02 +246 7.37491e+00 -4.03362e-02 5.47266e-02 +247 7.40493e+00 -4.18760e-02 4.79808e-02 +248 7.43495e+00 -4.32245e-02 4.19821e-02 +249 7.46497e+00 -4.44041e-02 3.67304e-02 +250 7.49499e+00 -4.54373e-02 3.22257e-02 +251 7.52501e+00 -4.63434e-02 2.81128e-02 +252 7.55503e+00 -4.71224e-02 2.37374e-02 +253 7.58505e+00 -4.77659e-02 1.90852e-02 +254 7.61507e+00 -4.82655e-02 1.41564e-02 +255 7.64509e+00 -4.86130e-02 8.95088e-03 +256 7.67511e+00 -4.88002e-02 3.46862e-03 +257 7.70513e+00 -4.88193e-02 -2.16133e-03 +258 7.73515e+00 -4.86748e-02 -7.38361e-03 +259 7.76517e+00 -4.83807e-02 -1.21345e-02 +260 7.79519e+00 -4.79510e-02 -1.64140e-02 +261 7.82521e+00 -4.73999e-02 -2.02221e-02 +262 7.85523e+00 -4.67416e-02 -2.35587e-02 +263 7.88525e+00 -4.59901e-02 -2.64574e-02 +264 7.91527e+00 -4.51529e-02 -2.93326e-02 +265 7.94529e+00 -4.42279e-02 -3.23085e-02 +266 7.97531e+00 -4.32121e-02 -3.53849e-02 +267 8.00533e+00 -4.21024e-02 -3.85620e-02 +268 8.03535e+00 -4.08958e-02 -4.18397e-02 +269 8.06537e+00 -3.95893e-02 -4.52148e-02 +270 8.09539e+00 -3.81847e-02 -4.82641e-02 +271 8.12541e+00 -3.66978e-02 -5.06928e-02 +272 8.15543e+00 -3.51473e-02 -5.25007e-02 +273 8.18545e+00 -3.35518e-02 -5.36880e-02 +274 8.21547e+00 -3.19301e-02 -5.42545e-02 +275 8.24549e+00 -3.03006e-02 -5.42004e-02 +276 8.27551e+00 -2.86797e-02 -5.38072e-02 +277 8.30553e+00 -2.70684e-02 -5.35644e-02 +278 8.33555e+00 -2.54621e-02 -5.34807e-02 +279 8.36557e+00 -2.38558e-02 -5.35562e-02 +280 8.39559e+00 -2.22450e-02 -5.37909e-02 +281 8.42561e+00 -2.06246e-02 -5.41848e-02 +282 8.45563e+00 -1.89910e-02 -5.45876e-02 +283 8.48565e+00 -1.73536e-02 -5.43905e-02 +284 8.51567e+00 -1.57321e-02 -5.35288e-02 +285 8.54569e+00 -1.41464e-02 -5.20025e-02 +286 8.57571e+00 -1.26165e-02 -4.98117e-02 +287 8.60573e+00 -1.11623e-02 -4.69563e-02 +288 8.63575e+00 -9.80364e-03 -4.34980e-02 +289 8.66577e+00 -8.54900e-03 -4.01388e-02 +290 8.69579e+00 -7.39073e-03 -3.70767e-02 +291 8.72581e+00 -6.31993e-03 -3.43119e-02 +292 8.75583e+00 -5.32767e-03 -3.18442e-02 +293 8.78585e+00 -4.40503e-03 -2.96736e-02 +294 8.81587e+00 -3.54310e-03 -2.77981e-02 +295 8.84589e+00 -2.73537e-03 -2.60045e-02 +296 8.87591e+00 -1.98236e-03 -2.41530e-02 +297 8.90593e+00 -1.28581e-03 -2.22435e-02 +298 8.93595e+00 -6.47440e-04 -2.02762e-02 +299 8.96597e+00 -6.90006e-05 -1.82510e-02 +300 8.99599e+00 4.47772e-04 -1.61678e-02 +301 9.02601e+00 9.01672e-04 -1.40883e-02 +302 9.05603e+00 1.29469e-03 -1.21134e-02 +303 9.08605e+00 1.63002e-03 -1.02444e-02 +304 9.11607e+00 1.91083e-03 -8.48151e-03 +305 9.14609e+00 2.14031e-03 -6.82462e-03 +306 9.17611e+00 2.32164e-03 -5.27374e-03 +307 9.20613e+00 2.45778e-03 -3.79164e-03 +308 9.23615e+00 2.54847e-03 -2.23608e-03 +309 9.26617e+00 2.59116e-03 -5.93158e-04 +310 9.29619e+00 2.58321e-03 1.13714e-03 +311 9.32621e+00 2.52201e-03 2.95480e-03 +312 9.35623e+00 2.40493e-03 4.85983e-03 +313 9.38625e+00 2.22951e-03 6.81084e-03 +314 9.41627e+00 2.00031e-03 8.37517e-03 +315 9.44629e+00 1.73168e-03 9.43770e-03 +316 9.47631e+00 1.43869e-03 9.99843e-03 +317 9.50633e+00 1.13640e-03 1.00573e-02 +318 9.53635e+00 8.39868e-04 9.61445e-03 +319 9.56637e+00 5.64157e-04 8.67672e-03 +320 9.59639e+00 3.18325e-04 7.75710e-03 +321 9.62641e+00 9.50596e-05 7.17332e-03 +322 9.65643e+00 -1.15722e-04 6.92537e-03 +323 9.68645e+00 -3.24101e-04 7.01327e-03 +324 9.71647e+00 -5.40160e-04 7.43701e-03 +325 9.74649e+00 -7.73980e-04 8.19658e-03 +326 9.77651e+00 -1.03304e-03 8.99735e-03 +327 9.80653e+00 -1.30999e-03 9.38361e-03 +328 9.83655e+00 -1.59223e-03 9.35021e-03 +329 9.86657e+00 -1.86718e-03 8.89715e-03 +330 9.89659e+00 -2.12222e-03 8.02442e-03 +331 9.92661e+00 -2.34476e-03 6.73203e-03 +332 9.95663e+00 -2.52320e-03 5.17469e-03 +333 9.98665e+00 -2.65869e-03 3.90930e-03 +334 1.00167e+01 -2.76134e-03 2.98596e-03 +335 1.00467e+01 -2.84139e-03 2.40466e-03 +336 1.00767e+01 -2.90913e-03 2.16541e-03 +337 1.01067e+01 -2.97483e-03 2.26820e-03 +338 1.01368e+01 -3.04855e-03 2.66546e-03 +339 1.01668e+01 -3.13277e-03 2.89884e-03 +340 1.01968e+01 -3.21981e-03 2.85342e-03 +341 1.02268e+01 -3.30130e-03 2.52919e-03 +342 1.02568e+01 -3.36887e-03 1.92616e-03 +343 1.02869e+01 -3.41416e-03 1.04432e-03 +344 1.03169e+01 -3.42879e-03 -1.09405e-04 +345 1.03469e+01 -3.40928e-03 -1.12840e-03 +346 1.03769e+01 -3.36477e-03 -1.77503e-03 +347 1.04069e+01 -3.30644e-03 -2.04930e-03 +348 1.04370e+01 -3.24546e-03 -1.95122e-03 +349 1.04670e+01 -3.19301e-03 -1.48077e-03 +350 1.04970e+01 -3.16028e-03 -6.37969e-04 +351 1.05270e+01 -3.15596e-03 3.01993e-04 +352 1.05570e+01 -3.17534e-03 9.38012e-04 +353 1.05871e+01 -3.20920e-03 1.26668e-03 +354 1.06171e+01 -3.24831e-03 1.28800e-03 +355 1.06471e+01 -3.28345e-03 1.00196e-03 +356 1.06771e+01 -3.30540e-03 4.08580e-04 +357 1.07071e+01 -3.30566e-03 -3.78073e-04 +358 1.07372e+01 -3.28485e-03 -9.70614e-04 +359 1.07672e+01 -3.24964e-03 -1.33712e-03 +360 1.07972e+01 -3.20683e-03 -1.47760e-03 +361 1.08272e+01 -3.16319e-03 -1.39204e-03 +362 1.08572e+01 -3.12551e-03 -1.08046e-03 +363 1.08873e+01 -3.10045e-03 -5.74729e-04 +364 1.09173e+01 -3.08983e-03 -1.58731e-04 +365 1.09473e+01 -3.08935e-03 1.00508e-04 +366 1.09773e+01 -3.09430e-03 2.02989e-04 +367 1.10073e+01 -3.09997e-03 1.48712e-04 +368 1.10374e+01 -3.10166e-03 -6.23237e-05 +369 1.10674e+01 -3.09466e-03 -4.27258e-04 +370 1.10974e+01 -3.07597e-03 -8.08158e-04 +371 1.11274e+01 -3.04674e-03 -1.12894e-03 +372 1.11574e+01 -3.00879e-03 -1.38962e-03 +373 1.11875e+01 -2.96391e-03 -1.59017e-03 +374 1.12175e+01 -2.91392e-03 -1.73062e-03 +375 1.12475e+01 -2.86061e-03 -1.81095e-03 +376 1.12775e+01 -2.80553e-03 -1.85938e-03 +377 1.13075e+01 -2.74890e-03 -1.91463e-03 +378 1.13376e+01 -2.69051e-03 -1.97693e-03 +379 1.13676e+01 -2.63013e-03 -2.04629e-03 +380 1.13976e+01 -2.56758e-03 -2.12270e-03 +381 1.14276e+01 -2.50262e-03 -2.20617e-03 +382 1.14576e+01 -2.43503e-03 -2.29944e-03 +383 1.14877e+01 -2.36437e-03 -2.41127e-03 +384 1.15177e+01 -2.29006e-03 -2.54235e-03 +385 1.15477e+01 -2.21153e-03 -2.69266e-03 +386 1.15777e+01 -2.12820e-03 -2.86220e-03 +387 1.16077e+01 -2.03949e-03 -3.05099e-03 +388 1.16378e+01 -1.94486e-03 -3.25094e-03 +389 1.16678e+01 -1.84492e-03 -3.39558e-03 +390 1.16978e+01 -1.74169e-03 -3.47012e-03 +391 1.17278e+01 -1.63728e-03 -3.47457e-03 +392 1.17578e+01 -1.53378e-03 -3.40893e-03 +393 1.17879e+01 -1.43331e-03 -3.27320e-03 +394 1.18179e+01 -1.33796e-03 -3.06968e-03 +395 1.18479e+01 -1.24867e-03 -2.89115e-03 +396 1.18779e+01 -1.16364e-03 -2.78593e-03 +397 1.19079e+01 -1.08067e-03 -2.75402e-03 +398 1.19380e+01 -9.97552e-04 -2.79543e-03 +399 1.19680e+01 -9.12094e-04 -2.91016e-03 +400 1.19980e+01 -8.22092e-04 -3.09820e-03 +401 1.20280e+01 -7.25645e-04 -3.32741e-03 +402 1.20580e+01 -6.22319e-04 -3.55632e-03 +403 1.20881e+01 -5.12128e-04 -3.78474e-03 +404 1.21181e+01 -3.95087e-04 -4.01269e-03 +405 1.21481e+01 -2.71211e-04 -4.24016e-03 +406 1.21781e+01 -1.40513e-04 -4.46715e-03 +407 1.22081e+01 -3.33537e-06 -4.64603e-03 +408 1.22382e+01 1.36445e-04 -4.63274e-03 +409 1.22682e+01 2.72793e-04 -4.41741e-03 +410 1.22982e+01 3.99645e-04 -4.00005e-03 +411 1.23282e+01 5.10935e-04 -3.38066e-03 +412 1.23582e+01 6.00598e-04 -2.55924e-03 +413 1.23883e+01 6.62774e-04 -1.58184e-03 +414 1.24183e+01 6.97865e-04 -8.01087e-04 +415 1.24483e+01 7.13576e-04 -2.90631e-04 +416 1.24783e+01 7.18019e-04 -5.04698e-05 +417 1.25083e+01 7.19311e-04 -8.06022e-05 +418 1.25384e+01 7.25563e-04 -3.81028e-04 +419 1.25684e+01 7.44874e-04 -9.42536e-04 +420 1.25984e+01 7.81298e-04 -1.44902e-03 +421 1.26284e+01 8.29767e-04 -1.74498e-03 +422 1.26584e+01 8.83961e-04 -1.83043e-03 +423 1.26885e+01 9.37559e-04 -1.70535e-03 +424 1.27185e+01 9.84244e-04 -1.36976e-03 +425 1.27485e+01 1.01769e-03 -8.23649e-04 +426 1.27785e+01 1.03293e-03 -2.08014e-04 +427 1.28085e+01 1.03120e-03 3.06031e-04 +428 1.28386e+01 1.01558e-03 7.18094e-04 +429 1.28686e+01 9.89109e-04 1.02818e-03 +430 1.28986e+01 9.54864e-04 1.23627e-03 +431 1.29286e+01 9.15903e-04 1.34239e-03 +432 1.29586e+01 8.75242e-04 1.35306e-03 +433 1.29887e+01 8.35426e-04 1.28692e-03 +434 1.30187e+01 7.98731e-04 1.14515e-03 +435 1.30487e+01 7.67428e-04 9.27723e-04 +436 1.30787e+01 7.43788e-04 6.34655e-04 +437 1.31087e+01 7.30081e-04 2.65942e-04 +438 1.31388e+01 7.28458e-04 -1.52323e-04 +439 1.31688e+01 7.37694e-04 -4.34209e-04 +440 1.31988e+01 7.52798e-04 -5.43256e-04 +441 1.32288e+01 7.68582e-04 -4.79464e-04 +442 1.32588e+01 7.79856e-04 -2.42834e-04 +443 1.32889e+01 7.81432e-04 1.66636e-04 +444 1.33189e+01 7.68136e-04 7.42231e-04 +445 1.33489e+01 7.37388e-04 1.28546e-03 +446 1.33789e+01 6.92203e-04 1.70409e-03 +447 1.34089e+01 6.36322e-04 1.99810e-03 +448 1.34390e+01 5.73484e-04 2.16751e-03 +449 1.34690e+01 5.07431e-04 2.21231e-03 +450 1.34990e+01 4.41904e-04 2.13250e-03 +451 1.35290e+01 3.79886e-04 2.00628e-03 +452 1.35590e+01 3.21019e-04 1.92274e-03 +453 1.35891e+01 2.64017e-04 1.88196e-03 +454 1.36191e+01 2.07597e-04 1.88396e-03 +455 1.36491e+01 1.50476e-04 1.92873e-03 +456 1.36791e+01 9.13683e-05 2.01627e-03 +457 1.37091e+01 2.90559e-05 2.13758e-03 +458 1.37392e+01 -3.70569e-05 2.26836e-03 +459 1.37692e+01 -1.07218e-04 2.40726e-03 +460 1.37992e+01 -1.81670e-04 2.55428e-03 +461 1.38292e+01 -2.60658e-04 2.70943e-03 +462 1.38592e+01 -3.44426e-04 2.87270e-03 +463 1.38893e+01 -4.33097e-04 3.01891e-03 +464 1.39193e+01 -5.23690e-04 2.98077e-03 +465 1.39493e+01 -6.09910e-04 2.72751e-03 +466 1.39793e+01 -6.85298e-04 2.25913e-03 +467 1.40093e+01 -7.43395e-04 1.57563e-03 +468 1.40394e+01 -7.77746e-04 6.77007e-04 +469 1.40694e+01 -7.81926e-04 -4.21254e-04 +470 1.40994e+01 -7.54850e-04 -1.32019e-03 +471 1.41294e+01 -7.06409e-04 -1.84461e-03 +472 1.41594e+01 -6.47847e-04 -1.99453e-03 +473 1.41895e+01 -5.90405e-04 -1.76993e-03 +474 1.42195e+01 -5.45328e-04 -1.17081e-03 +475 1.42495e+01 -5.23857e-04 -1.97186e-04 +476 1.42795e+01 -5.33670e-04 7.88500e-04 +477 1.43095e+01 -5.67444e-04 1.39908e-03 +478 1.43396e+01 -6.13917e-04 1.63446e-03 +479 1.43696e+01 -6.61823e-04 1.49463e-03 +480 1.43996e+01 -6.99900e-04 9.79593e-04 +481 1.44296e+01 -7.16883e-04 8.93484e-05 +482 1.44596e+01 -7.02817e-04 -9.98994e-04 +483 1.44897e+01 -6.59607e-04 -1.83371e-03 +484 1.45197e+01 -5.95483e-04 -2.39236e-03 +485 1.45497e+01 -5.18732e-04 -2.67493e-03 +486 1.45797e+01 -4.37642e-04 -2.68144e-03 +487 1.46097e+01 -3.60501e-04 -2.41188e-03 +488 1.46398e+01 -2.95370e-04 -1.91209e-03 +489 1.46698e+01 -2.44915e-04 -1.46649e-03 +490 1.46998e+01 -2.06289e-04 -1.12409e-03 +491 1.47298e+01 -1.76392e-04 -8.84885e-04 +492 1.47598e+01 -1.52128e-04 -7.48875e-04 +493 1.47899e+01 -1.30397e-04 -7.16060e-04 +494 1.48199e+01 -1.08115e-04 -7.81211e-04 +495 1.48499e+01 -8.38208e-05 -8.25705e-04 +496 1.48799e+01 -5.92393e-05 -8.00320e-04 +497 1.49099e+01 -3.64687e-05 -7.05058e-04 +498 1.49400e+01 -1.76068e-05 -5.39917e-04 +499 1.49700e+01 -4.75133e-06 -3.04897e-04 +500 1.50000e+01 0.00000e+00 0.00000e+00 + + + +NonBondNull +N 500 R 0.0000000001 10.0 + +1 0.0000e+00 0.0000e+00 0.0000e+00 +2 2.0040e-02 0.0000e+00 0.0000e+00 +3 4.0080e-02 0.0000e+00 0.0000e+00 +4 6.0120e-02 0.0000e+00 0.0000e+00 +5 8.0160e-02 0.0000e+00 0.0000e+00 +6 1.0020e-01 0.0000e+00 0.0000e+00 +7 1.2024e-01 0.0000e+00 0.0000e+00 +8 1.4028e-01 0.0000e+00 0.0000e+00 +9 1.6032e-01 0.0000e+00 0.0000e+00 +10 1.8036e-01 0.0000e+00 0.0000e+00 +11 2.0040e-01 0.0000e+00 0.0000e+00 +12 2.2044e-01 0.0000e+00 0.0000e+00 +13 2.4048e-01 0.0000e+00 0.0000e+00 +14 2.6052e-01 0.0000e+00 0.0000e+00 +15 2.8056e-01 0.0000e+00 0.0000e+00 +16 3.0060e-01 0.0000e+00 0.0000e+00 +17 3.2064e-01 0.0000e+00 0.0000e+00 +18 3.4068e-01 0.0000e+00 0.0000e+00 +19 3.6072e-01 0.0000e+00 0.0000e+00 +20 3.8076e-01 0.0000e+00 0.0000e+00 +21 4.0080e-01 0.0000e+00 0.0000e+00 +22 4.2084e-01 0.0000e+00 0.0000e+00 +23 4.4088e-01 0.0000e+00 0.0000e+00 +24 4.6092e-01 0.0000e+00 0.0000e+00 +25 4.8096e-01 0.0000e+00 0.0000e+00 +26 5.0100e-01 0.0000e+00 0.0000e+00 +27 5.2104e-01 0.0000e+00 0.0000e+00 +28 5.4108e-01 0.0000e+00 0.0000e+00 +29 5.6112e-01 0.0000e+00 0.0000e+00 +30 5.8116e-01 0.0000e+00 0.0000e+00 +31 6.0120e-01 0.0000e+00 0.0000e+00 +32 6.2124e-01 0.0000e+00 0.0000e+00 +33 6.4128e-01 0.0000e+00 0.0000e+00 +34 6.6132e-01 0.0000e+00 0.0000e+00 +35 6.8136e-01 0.0000e+00 0.0000e+00 +36 7.0140e-01 0.0000e+00 0.0000e+00 +37 7.2144e-01 0.0000e+00 0.0000e+00 +38 7.4148e-01 0.0000e+00 0.0000e+00 +39 7.6152e-01 0.0000e+00 0.0000e+00 +40 7.8156e-01 0.0000e+00 0.0000e+00 +41 8.0160e-01 0.0000e+00 0.0000e+00 +42 8.2164e-01 0.0000e+00 0.0000e+00 +43 8.4168e-01 0.0000e+00 0.0000e+00 +44 8.6172e-01 0.0000e+00 0.0000e+00 +45 8.8176e-01 0.0000e+00 0.0000e+00 +46 9.0180e-01 0.0000e+00 0.0000e+00 +47 9.2184e-01 0.0000e+00 0.0000e+00 +48 9.4188e-01 0.0000e+00 0.0000e+00 +49 9.6192e-01 0.0000e+00 0.0000e+00 +50 9.8196e-01 0.0000e+00 0.0000e+00 +51 1.0020e+00 0.0000e+00 0.0000e+00 +52 1.0220e+00 0.0000e+00 0.0000e+00 +53 1.0421e+00 0.0000e+00 0.0000e+00 +54 1.0621e+00 0.0000e+00 0.0000e+00 +55 1.0822e+00 0.0000e+00 0.0000e+00 +56 1.1022e+00 0.0000e+00 0.0000e+00 +57 1.1222e+00 0.0000e+00 0.0000e+00 +58 1.1423e+00 0.0000e+00 0.0000e+00 +59 1.1623e+00 0.0000e+00 0.0000e+00 +60 1.1824e+00 0.0000e+00 0.0000e+00 +61 1.2024e+00 0.0000e+00 0.0000e+00 +62 1.2224e+00 0.0000e+00 0.0000e+00 +63 1.2425e+00 0.0000e+00 0.0000e+00 +64 1.2625e+00 0.0000e+00 0.0000e+00 +65 1.2826e+00 0.0000e+00 0.0000e+00 +66 1.3026e+00 0.0000e+00 0.0000e+00 +67 1.3226e+00 0.0000e+00 0.0000e+00 +68 1.3427e+00 0.0000e+00 0.0000e+00 +69 1.3627e+00 0.0000e+00 0.0000e+00 +70 1.3828e+00 0.0000e+00 0.0000e+00 +71 1.4028e+00 0.0000e+00 0.0000e+00 +72 1.4228e+00 0.0000e+00 0.0000e+00 +73 1.4429e+00 0.0000e+00 0.0000e+00 +74 1.4629e+00 0.0000e+00 0.0000e+00 +75 1.4830e+00 0.0000e+00 0.0000e+00 +76 1.5030e+00 0.0000e+00 0.0000e+00 +77 1.5230e+00 0.0000e+00 0.0000e+00 +78 1.5431e+00 0.0000e+00 0.0000e+00 +79 1.5631e+00 0.0000e+00 0.0000e+00 +80 1.5832e+00 0.0000e+00 0.0000e+00 +81 1.6032e+00 0.0000e+00 0.0000e+00 +82 1.6232e+00 0.0000e+00 0.0000e+00 +83 1.6433e+00 0.0000e+00 0.0000e+00 +84 1.6633e+00 0.0000e+00 0.0000e+00 +85 1.6834e+00 0.0000e+00 0.0000e+00 +86 1.7034e+00 0.0000e+00 0.0000e+00 +87 1.7234e+00 0.0000e+00 0.0000e+00 +88 1.7435e+00 0.0000e+00 0.0000e+00 +89 1.7635e+00 0.0000e+00 0.0000e+00 +90 1.7836e+00 0.0000e+00 0.0000e+00 +91 1.8036e+00 0.0000e+00 0.0000e+00 +92 1.8236e+00 0.0000e+00 0.0000e+00 +93 1.8437e+00 0.0000e+00 0.0000e+00 +94 1.8637e+00 0.0000e+00 0.0000e+00 +95 1.8838e+00 0.0000e+00 0.0000e+00 +96 1.9038e+00 0.0000e+00 0.0000e+00 +97 1.9238e+00 0.0000e+00 0.0000e+00 +98 1.9439e+00 0.0000e+00 0.0000e+00 +99 1.9639e+00 0.0000e+00 0.0000e+00 +100 1.9840e+00 0.0000e+00 0.0000e+00 +101 2.0040e+00 0.0000e+00 0.0000e+00 +102 2.0240e+00 0.0000e+00 0.0000e+00 +103 2.0441e+00 0.0000e+00 0.0000e+00 +104 2.0641e+00 0.0000e+00 0.0000e+00 +105 2.0842e+00 0.0000e+00 0.0000e+00 +106 2.1042e+00 0.0000e+00 0.0000e+00 +107 2.1242e+00 0.0000e+00 0.0000e+00 +108 2.1443e+00 0.0000e+00 0.0000e+00 +109 2.1643e+00 0.0000e+00 0.0000e+00 +110 2.1844e+00 0.0000e+00 0.0000e+00 +111 2.2044e+00 0.0000e+00 0.0000e+00 +112 2.2244e+00 0.0000e+00 0.0000e+00 +113 2.2445e+00 0.0000e+00 0.0000e+00 +114 2.2645e+00 0.0000e+00 0.0000e+00 +115 2.2846e+00 0.0000e+00 0.0000e+00 +116 2.3046e+00 0.0000e+00 0.0000e+00 +117 2.3246e+00 0.0000e+00 0.0000e+00 +118 2.3447e+00 0.0000e+00 0.0000e+00 +119 2.3647e+00 0.0000e+00 0.0000e+00 +120 2.3848e+00 0.0000e+00 0.0000e+00 +121 2.4048e+00 0.0000e+00 0.0000e+00 +122 2.4248e+00 0.0000e+00 0.0000e+00 +123 2.4449e+00 0.0000e+00 0.0000e+00 +124 2.4649e+00 0.0000e+00 0.0000e+00 +125 2.4850e+00 0.0000e+00 0.0000e+00 +126 2.5050e+00 0.0000e+00 0.0000e+00 +127 2.5251e+00 0.0000e+00 0.0000e+00 +128 2.5451e+00 0.0000e+00 0.0000e+00 +129 2.5651e+00 0.0000e+00 0.0000e+00 +130 2.5852e+00 0.0000e+00 0.0000e+00 +131 2.6052e+00 0.0000e+00 0.0000e+00 +132 2.6253e+00 0.0000e+00 0.0000e+00 +133 2.6453e+00 0.0000e+00 0.0000e+00 +134 2.6653e+00 0.0000e+00 0.0000e+00 +135 2.6854e+00 0.0000e+00 0.0000e+00 +136 2.7054e+00 0.0000e+00 0.0000e+00 +137 2.7255e+00 0.0000e+00 0.0000e+00 +138 2.7455e+00 0.0000e+00 0.0000e+00 +139 2.7655e+00 0.0000e+00 0.0000e+00 +140 2.7856e+00 0.0000e+00 0.0000e+00 +141 2.8056e+00 0.0000e+00 0.0000e+00 +142 2.8257e+00 0.0000e+00 0.0000e+00 +143 2.8457e+00 0.0000e+00 0.0000e+00 +144 2.8657e+00 0.0000e+00 0.0000e+00 +145 2.8858e+00 0.0000e+00 0.0000e+00 +146 2.9058e+00 0.0000e+00 0.0000e+00 +147 2.9259e+00 0.0000e+00 0.0000e+00 +148 2.9459e+00 0.0000e+00 0.0000e+00 +149 2.9659e+00 0.0000e+00 0.0000e+00 +150 2.9860e+00 0.0000e+00 0.0000e+00 +151 3.0060e+00 0.0000e+00 0.0000e+00 +152 3.0261e+00 0.0000e+00 0.0000e+00 +153 3.0461e+00 0.0000e+00 0.0000e+00 +154 3.0661e+00 0.0000e+00 0.0000e+00 +155 3.0862e+00 0.0000e+00 0.0000e+00 +156 3.1062e+00 0.0000e+00 0.0000e+00 +157 3.1263e+00 0.0000e+00 0.0000e+00 +158 3.1463e+00 0.0000e+00 0.0000e+00 +159 3.1663e+00 0.0000e+00 0.0000e+00 +160 3.1864e+00 0.0000e+00 0.0000e+00 +161 3.2064e+00 0.0000e+00 0.0000e+00 +162 3.2265e+00 0.0000e+00 0.0000e+00 +163 3.2465e+00 0.0000e+00 0.0000e+00 +164 3.2665e+00 0.0000e+00 0.0000e+00 +165 3.2866e+00 0.0000e+00 0.0000e+00 +166 3.3066e+00 0.0000e+00 0.0000e+00 +167 3.3267e+00 0.0000e+00 0.0000e+00 +168 3.3467e+00 0.0000e+00 0.0000e+00 +169 3.3667e+00 0.0000e+00 0.0000e+00 +170 3.3868e+00 0.0000e+00 0.0000e+00 +171 3.4068e+00 0.0000e+00 0.0000e+00 +172 3.4269e+00 0.0000e+00 0.0000e+00 +173 3.4469e+00 0.0000e+00 0.0000e+00 +174 3.4669e+00 0.0000e+00 0.0000e+00 +175 3.4870e+00 0.0000e+00 0.0000e+00 +176 3.5070e+00 0.0000e+00 0.0000e+00 +177 3.5271e+00 0.0000e+00 0.0000e+00 +178 3.5471e+00 0.0000e+00 0.0000e+00 +179 3.5671e+00 0.0000e+00 0.0000e+00 +180 3.5872e+00 0.0000e+00 0.0000e+00 +181 3.6072e+00 0.0000e+00 0.0000e+00 +182 3.6273e+00 0.0000e+00 0.0000e+00 +183 3.6473e+00 0.0000e+00 0.0000e+00 +184 3.6673e+00 0.0000e+00 0.0000e+00 +185 3.6874e+00 0.0000e+00 0.0000e+00 +186 3.7074e+00 0.0000e+00 0.0000e+00 +187 3.7275e+00 0.0000e+00 0.0000e+00 +188 3.7475e+00 0.0000e+00 0.0000e+00 +189 3.7675e+00 0.0000e+00 0.0000e+00 +190 3.7876e+00 0.0000e+00 0.0000e+00 +191 3.8076e+00 0.0000e+00 0.0000e+00 +192 3.8277e+00 0.0000e+00 0.0000e+00 +193 3.8477e+00 0.0000e+00 0.0000e+00 +194 3.8677e+00 0.0000e+00 0.0000e+00 +195 3.8878e+00 0.0000e+00 0.0000e+00 +196 3.9078e+00 0.0000e+00 0.0000e+00 +197 3.9279e+00 0.0000e+00 0.0000e+00 +198 3.9479e+00 0.0000e+00 0.0000e+00 +199 3.9679e+00 0.0000e+00 0.0000e+00 +200 3.9880e+00 0.0000e+00 0.0000e+00 +201 4.0080e+00 0.0000e+00 0.0000e+00 +202 4.0281e+00 0.0000e+00 0.0000e+00 +203 4.0481e+00 0.0000e+00 0.0000e+00 +204 4.0681e+00 0.0000e+00 0.0000e+00 +205 4.0882e+00 0.0000e+00 0.0000e+00 +206 4.1082e+00 0.0000e+00 0.0000e+00 +207 4.1283e+00 0.0000e+00 0.0000e+00 +208 4.1483e+00 0.0000e+00 0.0000e+00 +209 4.1683e+00 0.0000e+00 0.0000e+00 +210 4.1884e+00 0.0000e+00 0.0000e+00 +211 4.2084e+00 0.0000e+00 0.0000e+00 +212 4.2285e+00 0.0000e+00 0.0000e+00 +213 4.2485e+00 0.0000e+00 0.0000e+00 +214 4.2685e+00 0.0000e+00 0.0000e+00 +215 4.2886e+00 0.0000e+00 0.0000e+00 +216 4.3086e+00 0.0000e+00 0.0000e+00 +217 4.3287e+00 0.0000e+00 0.0000e+00 +218 4.3487e+00 0.0000e+00 0.0000e+00 +219 4.3687e+00 0.0000e+00 0.0000e+00 +220 4.3888e+00 0.0000e+00 0.0000e+00 +221 4.4088e+00 0.0000e+00 0.0000e+00 +222 4.4289e+00 0.0000e+00 0.0000e+00 +223 4.4489e+00 0.0000e+00 0.0000e+00 +224 4.4689e+00 0.0000e+00 0.0000e+00 +225 4.4890e+00 0.0000e+00 0.0000e+00 +226 4.5090e+00 0.0000e+00 0.0000e+00 +227 4.5291e+00 0.0000e+00 0.0000e+00 +228 4.5491e+00 0.0000e+00 0.0000e+00 +229 4.5691e+00 0.0000e+00 0.0000e+00 +230 4.5892e+00 0.0000e+00 0.0000e+00 +231 4.6092e+00 0.0000e+00 0.0000e+00 +232 4.6293e+00 0.0000e+00 0.0000e+00 +233 4.6493e+00 0.0000e+00 0.0000e+00 +234 4.6693e+00 0.0000e+00 0.0000e+00 +235 4.6894e+00 0.0000e+00 0.0000e+00 +236 4.7094e+00 0.0000e+00 0.0000e+00 +237 4.7295e+00 0.0000e+00 0.0000e+00 +238 4.7495e+00 0.0000e+00 0.0000e+00 +239 4.7695e+00 0.0000e+00 0.0000e+00 +240 4.7896e+00 0.0000e+00 0.0000e+00 +241 4.8096e+00 0.0000e+00 0.0000e+00 +242 4.8297e+00 0.0000e+00 0.0000e+00 +243 4.8497e+00 0.0000e+00 0.0000e+00 +244 4.8697e+00 0.0000e+00 0.0000e+00 +245 4.8898e+00 0.0000e+00 0.0000e+00 +246 4.9098e+00 0.0000e+00 0.0000e+00 +247 4.9299e+00 0.0000e+00 0.0000e+00 +248 4.9499e+00 0.0000e+00 0.0000e+00 +249 4.9699e+00 0.0000e+00 0.0000e+00 +250 4.9900e+00 0.0000e+00 0.0000e+00 +251 5.0100e+00 0.0000e+00 0.0000e+00 +252 5.0301e+00 0.0000e+00 0.0000e+00 +253 5.0501e+00 0.0000e+00 0.0000e+00 +254 5.0701e+00 0.0000e+00 0.0000e+00 +255 5.0902e+00 0.0000e+00 0.0000e+00 +256 5.1102e+00 0.0000e+00 0.0000e+00 +257 5.1303e+00 0.0000e+00 0.0000e+00 +258 5.1503e+00 0.0000e+00 0.0000e+00 +259 5.1703e+00 0.0000e+00 0.0000e+00 +260 5.1904e+00 0.0000e+00 0.0000e+00 +261 5.2104e+00 0.0000e+00 0.0000e+00 +262 5.2305e+00 0.0000e+00 0.0000e+00 +263 5.2505e+00 0.0000e+00 0.0000e+00 +264 5.2705e+00 0.0000e+00 0.0000e+00 +265 5.2906e+00 0.0000e+00 0.0000e+00 +266 5.3106e+00 0.0000e+00 0.0000e+00 +267 5.3307e+00 0.0000e+00 0.0000e+00 +268 5.3507e+00 0.0000e+00 0.0000e+00 +269 5.3707e+00 0.0000e+00 0.0000e+00 +270 5.3908e+00 0.0000e+00 0.0000e+00 +271 5.4108e+00 0.0000e+00 0.0000e+00 +272 5.4309e+00 0.0000e+00 0.0000e+00 +273 5.4509e+00 0.0000e+00 0.0000e+00 +274 5.4709e+00 0.0000e+00 0.0000e+00 +275 5.4910e+00 0.0000e+00 0.0000e+00 +276 5.5110e+00 0.0000e+00 0.0000e+00 +277 5.5311e+00 0.0000e+00 0.0000e+00 +278 5.5511e+00 0.0000e+00 0.0000e+00 +279 5.5711e+00 0.0000e+00 0.0000e+00 +280 5.5912e+00 0.0000e+00 0.0000e+00 +281 5.6112e+00 0.0000e+00 0.0000e+00 +282 5.6313e+00 0.0000e+00 0.0000e+00 +283 5.6513e+00 0.0000e+00 0.0000e+00 +284 5.6713e+00 0.0000e+00 0.0000e+00 +285 5.6914e+00 0.0000e+00 0.0000e+00 +286 5.7114e+00 0.0000e+00 0.0000e+00 +287 5.7315e+00 0.0000e+00 0.0000e+00 +288 5.7515e+00 0.0000e+00 0.0000e+00 +289 5.7715e+00 0.0000e+00 0.0000e+00 +290 5.7916e+00 0.0000e+00 0.0000e+00 +291 5.8116e+00 0.0000e+00 0.0000e+00 +292 5.8317e+00 0.0000e+00 0.0000e+00 +293 5.8517e+00 0.0000e+00 0.0000e+00 +294 5.8717e+00 0.0000e+00 0.0000e+00 +295 5.8918e+00 0.0000e+00 0.0000e+00 +296 5.9118e+00 0.0000e+00 0.0000e+00 +297 5.9319e+00 0.0000e+00 0.0000e+00 +298 5.9519e+00 0.0000e+00 0.0000e+00 +299 5.9719e+00 0.0000e+00 0.0000e+00 +300 5.9920e+00 0.0000e+00 0.0000e+00 +301 6.0120e+00 0.0000e+00 0.0000e+00 +302 6.0321e+00 0.0000e+00 0.0000e+00 +303 6.0521e+00 0.0000e+00 0.0000e+00 +304 6.0721e+00 0.0000e+00 0.0000e+00 +305 6.0922e+00 0.0000e+00 0.0000e+00 +306 6.1122e+00 0.0000e+00 0.0000e+00 +307 6.1323e+00 0.0000e+00 0.0000e+00 +308 6.1523e+00 0.0000e+00 0.0000e+00 +309 6.1723e+00 0.0000e+00 0.0000e+00 +310 6.1924e+00 0.0000e+00 0.0000e+00 +311 6.2124e+00 0.0000e+00 0.0000e+00 +312 6.2325e+00 0.0000e+00 0.0000e+00 +313 6.2525e+00 0.0000e+00 0.0000e+00 +314 6.2725e+00 0.0000e+00 0.0000e+00 +315 6.2926e+00 0.0000e+00 0.0000e+00 +316 6.3126e+00 0.0000e+00 0.0000e+00 +317 6.3327e+00 0.0000e+00 0.0000e+00 +318 6.3527e+00 0.0000e+00 0.0000e+00 +319 6.3727e+00 0.0000e+00 0.0000e+00 +320 6.3928e+00 0.0000e+00 0.0000e+00 +321 6.4128e+00 0.0000e+00 0.0000e+00 +322 6.4329e+00 0.0000e+00 0.0000e+00 +323 6.4529e+00 0.0000e+00 0.0000e+00 +324 6.4729e+00 0.0000e+00 0.0000e+00 +325 6.4930e+00 0.0000e+00 0.0000e+00 +326 6.5130e+00 0.0000e+00 0.0000e+00 +327 6.5331e+00 0.0000e+00 0.0000e+00 +328 6.5531e+00 0.0000e+00 0.0000e+00 +329 6.5731e+00 0.0000e+00 0.0000e+00 +330 6.5932e+00 0.0000e+00 0.0000e+00 +331 6.6132e+00 0.0000e+00 0.0000e+00 +332 6.6333e+00 0.0000e+00 0.0000e+00 +333 6.6533e+00 0.0000e+00 0.0000e+00 +334 6.6733e+00 0.0000e+00 0.0000e+00 +335 6.6934e+00 0.0000e+00 0.0000e+00 +336 6.7134e+00 0.0000e+00 0.0000e+00 +337 6.7335e+00 0.0000e+00 0.0000e+00 +338 6.7535e+00 0.0000e+00 0.0000e+00 +339 6.7735e+00 0.0000e+00 0.0000e+00 +340 6.7936e+00 0.0000e+00 0.0000e+00 +341 6.8136e+00 0.0000e+00 0.0000e+00 +342 6.8337e+00 0.0000e+00 0.0000e+00 +343 6.8537e+00 0.0000e+00 0.0000e+00 +344 6.8737e+00 0.0000e+00 0.0000e+00 +345 6.8938e+00 0.0000e+00 0.0000e+00 +346 6.9138e+00 0.0000e+00 0.0000e+00 +347 6.9339e+00 0.0000e+00 0.0000e+00 +348 6.9539e+00 0.0000e+00 0.0000e+00 +349 6.9739e+00 0.0000e+00 0.0000e+00 +350 6.9940e+00 0.0000e+00 0.0000e+00 +351 7.0140e+00 0.0000e+00 0.0000e+00 +352 7.0341e+00 0.0000e+00 0.0000e+00 +353 7.0541e+00 0.0000e+00 0.0000e+00 +354 7.0741e+00 0.0000e+00 0.0000e+00 +355 7.0942e+00 0.0000e+00 0.0000e+00 +356 7.1142e+00 0.0000e+00 0.0000e+00 +357 7.1343e+00 0.0000e+00 0.0000e+00 +358 7.1543e+00 0.0000e+00 0.0000e+00 +359 7.1743e+00 0.0000e+00 0.0000e+00 +360 7.1944e+00 0.0000e+00 0.0000e+00 +361 7.2144e+00 0.0000e+00 0.0000e+00 +362 7.2345e+00 0.0000e+00 0.0000e+00 +363 7.2545e+00 0.0000e+00 0.0000e+00 +364 7.2745e+00 0.0000e+00 0.0000e+00 +365 7.2946e+00 0.0000e+00 0.0000e+00 +366 7.3146e+00 0.0000e+00 0.0000e+00 +367 7.3347e+00 0.0000e+00 0.0000e+00 +368 7.3547e+00 0.0000e+00 0.0000e+00 +369 7.3747e+00 0.0000e+00 0.0000e+00 +370 7.3948e+00 0.0000e+00 0.0000e+00 +371 7.4148e+00 0.0000e+00 0.0000e+00 +372 7.4349e+00 0.0000e+00 0.0000e+00 +373 7.4549e+00 0.0000e+00 0.0000e+00 +374 7.4749e+00 0.0000e+00 0.0000e+00 +375 7.4950e+00 0.0000e+00 0.0000e+00 +376 7.5150e+00 0.0000e+00 0.0000e+00 +377 7.5351e+00 0.0000e+00 0.0000e+00 +378 7.5551e+00 0.0000e+00 0.0000e+00 +379 7.5752e+00 0.0000e+00 0.0000e+00 +380 7.5952e+00 0.0000e+00 0.0000e+00 +381 7.6152e+00 0.0000e+00 0.0000e+00 +382 7.6353e+00 0.0000e+00 0.0000e+00 +383 7.6553e+00 0.0000e+00 0.0000e+00 +384 7.6754e+00 0.0000e+00 0.0000e+00 +385 7.6954e+00 0.0000e+00 0.0000e+00 +386 7.7154e+00 0.0000e+00 0.0000e+00 +387 7.7355e+00 0.0000e+00 0.0000e+00 +388 7.7555e+00 0.0000e+00 0.0000e+00 +389 7.7756e+00 0.0000e+00 0.0000e+00 +390 7.7956e+00 0.0000e+00 0.0000e+00 +391 7.8156e+00 0.0000e+00 0.0000e+00 +392 7.8357e+00 0.0000e+00 0.0000e+00 +393 7.8557e+00 0.0000e+00 0.0000e+00 +394 7.8758e+00 0.0000e+00 0.0000e+00 +395 7.8958e+00 0.0000e+00 0.0000e+00 +396 7.9158e+00 0.0000e+00 0.0000e+00 +397 7.9359e+00 0.0000e+00 0.0000e+00 +398 7.9559e+00 0.0000e+00 0.0000e+00 +399 7.9760e+00 0.0000e+00 0.0000e+00 +400 7.9960e+00 0.0000e+00 0.0000e+00 +401 8.0160e+00 0.0000e+00 0.0000e+00 +402 8.0361e+00 0.0000e+00 0.0000e+00 +403 8.0561e+00 0.0000e+00 0.0000e+00 +404 8.0762e+00 0.0000e+00 0.0000e+00 +405 8.0962e+00 0.0000e+00 0.0000e+00 +406 8.1162e+00 0.0000e+00 0.0000e+00 +407 8.1363e+00 0.0000e+00 0.0000e+00 +408 8.1563e+00 0.0000e+00 0.0000e+00 +409 8.1764e+00 0.0000e+00 0.0000e+00 +410 8.1964e+00 0.0000e+00 0.0000e+00 +411 8.2164e+00 0.0000e+00 0.0000e+00 +412 8.2365e+00 0.0000e+00 0.0000e+00 +413 8.2565e+00 0.0000e+00 0.0000e+00 +414 8.2766e+00 0.0000e+00 0.0000e+00 +415 8.2966e+00 0.0000e+00 0.0000e+00 +416 8.3166e+00 0.0000e+00 0.0000e+00 +417 8.3367e+00 0.0000e+00 0.0000e+00 +418 8.3567e+00 0.0000e+00 0.0000e+00 +419 8.3768e+00 0.0000e+00 0.0000e+00 +420 8.3968e+00 0.0000e+00 0.0000e+00 +421 8.4168e+00 0.0000e+00 0.0000e+00 +422 8.4369e+00 0.0000e+00 0.0000e+00 +423 8.4569e+00 0.0000e+00 0.0000e+00 +424 8.4770e+00 0.0000e+00 0.0000e+00 +425 8.4970e+00 0.0000e+00 0.0000e+00 +426 8.5170e+00 0.0000e+00 0.0000e+00 +427 8.5371e+00 0.0000e+00 0.0000e+00 +428 8.5571e+00 0.0000e+00 0.0000e+00 +429 8.5772e+00 0.0000e+00 0.0000e+00 +430 8.5972e+00 0.0000e+00 0.0000e+00 +431 8.6172e+00 0.0000e+00 0.0000e+00 +432 8.6373e+00 0.0000e+00 0.0000e+00 +433 8.6573e+00 0.0000e+00 0.0000e+00 +434 8.6774e+00 0.0000e+00 0.0000e+00 +435 8.6974e+00 0.0000e+00 0.0000e+00 +436 8.7174e+00 0.0000e+00 0.0000e+00 +437 8.7375e+00 0.0000e+00 0.0000e+00 +438 8.7575e+00 0.0000e+00 0.0000e+00 +439 8.7776e+00 0.0000e+00 0.0000e+00 +440 8.7976e+00 0.0000e+00 0.0000e+00 +441 8.8176e+00 0.0000e+00 0.0000e+00 +442 8.8377e+00 0.0000e+00 0.0000e+00 +443 8.8577e+00 0.0000e+00 0.0000e+00 +444 8.8778e+00 0.0000e+00 0.0000e+00 +445 8.8978e+00 0.0000e+00 0.0000e+00 +446 8.9178e+00 0.0000e+00 0.0000e+00 +447 8.9379e+00 0.0000e+00 0.0000e+00 +448 8.9579e+00 0.0000e+00 0.0000e+00 +449 8.9780e+00 0.0000e+00 0.0000e+00 +450 8.9980e+00 0.0000e+00 0.0000e+00 +451 9.0180e+00 0.0000e+00 0.0000e+00 +452 9.0381e+00 0.0000e+00 0.0000e+00 +453 9.0581e+00 0.0000e+00 0.0000e+00 +454 9.0782e+00 0.0000e+00 0.0000e+00 +455 9.0982e+00 0.0000e+00 0.0000e+00 +456 9.1182e+00 0.0000e+00 0.0000e+00 +457 9.1383e+00 0.0000e+00 0.0000e+00 +458 9.1583e+00 0.0000e+00 0.0000e+00 +459 9.1784e+00 0.0000e+00 0.0000e+00 +460 9.1984e+00 0.0000e+00 0.0000e+00 +461 9.2184e+00 0.0000e+00 0.0000e+00 +462 9.2385e+00 0.0000e+00 0.0000e+00 +463 9.2585e+00 0.0000e+00 0.0000e+00 +464 9.2786e+00 0.0000e+00 0.0000e+00 +465 9.2986e+00 0.0000e+00 0.0000e+00 +466 9.3186e+00 0.0000e+00 0.0000e+00 +467 9.3387e+00 0.0000e+00 0.0000e+00 +468 9.3587e+00 0.0000e+00 0.0000e+00 +469 9.3788e+00 0.0000e+00 0.0000e+00 +470 9.3988e+00 0.0000e+00 0.0000e+00 +471 9.4188e+00 0.0000e+00 0.0000e+00 +472 9.4389e+00 0.0000e+00 0.0000e+00 +473 9.4589e+00 0.0000e+00 0.0000e+00 +474 9.4790e+00 0.0000e+00 0.0000e+00 +475 9.4990e+00 0.0000e+00 0.0000e+00 +476 9.5190e+00 0.0000e+00 0.0000e+00 +477 9.5391e+00 0.0000e+00 0.0000e+00 +478 9.5591e+00 0.0000e+00 0.0000e+00 +479 9.5792e+00 0.0000e+00 0.0000e+00 +480 9.5992e+00 0.0000e+00 0.0000e+00 +481 9.6192e+00 0.0000e+00 0.0000e+00 +482 9.6393e+00 0.0000e+00 0.0000e+00 +483 9.6593e+00 0.0000e+00 0.0000e+00 +484 9.6794e+00 0.0000e+00 0.0000e+00 +485 9.6994e+00 0.0000e+00 0.0000e+00 +486 9.7194e+00 0.0000e+00 0.0000e+00 +487 9.7395e+00 0.0000e+00 0.0000e+00 +488 9.7595e+00 0.0000e+00 0.0000e+00 +489 9.7796e+00 0.0000e+00 0.0000e+00 +490 9.7996e+00 0.0000e+00 0.0000e+00 +491 9.8196e+00 0.0000e+00 0.0000e+00 +492 9.8397e+00 0.0000e+00 0.0000e+00 +493 9.8597e+00 0.0000e+00 0.0000e+00 +494 9.8798e+00 0.0000e+00 0.0000e+00 +495 9.8998e+00 0.0000e+00 0.0000e+00 +496 9.9198e+00 0.0000e+00 0.0000e+00 +497 9.9399e+00 0.0000e+00 0.0000e+00 +498 9.9599e+00 0.0000e+00 0.0000e+00 +499 9.9800e+00 0.0000e+00 0.0000e+00 +500 1.0000e+01 0.0000e+00 0.0000e+00 + + diff --git a/examples/USER/phonon/dynamical_matrix_command/python/README.md b/examples/USER/phonon/dynamical_matrix_command/python/README.md new file mode 100755 index 0000000000..5b3c11febd --- /dev/null +++ b/examples/USER/phonon/dynamical_matrix_command/python/README.md @@ -0,0 +1,12 @@ +# LAMMPS LATTICE DYNAMICS COMMANDS + +## DYNAMICAL MATRIX CALCULATOR + +This directory contains the ingredients to calculate a dynamical matrix with python. + +Example: +``` +python dynmat.py +``` + +## Requires: MANYBODY and MOLECULE packages and the Python Library Interface diff --git a/examples/USER/phonon/dynamical_matrix_command/python/dynmat.py b/examples/USER/phonon/dynamical_matrix_command/python/dynmat.py new file mode 100644 index 0000000000..2a3a0b5a2f --- /dev/null +++ b/examples/USER/phonon/dynamical_matrix_command/python/dynmat.py @@ -0,0 +1,42 @@ +"""Made by Charlie Sievers Ph.D. Candidate, UC Davis, Donadio Lab 2019""" +# from mpi4py import MPI +from lammps import lammps +import numpy as np + +# comm = MPI.COMM_WORLD +# rank = comm.Get_rank() + +""" LAMMPS VARIABLES """ + +# data files +infile = "silicon_input_file.lmp" +ff_file = "ff-silicon.lmp" + +# full output useful for testing +lmp = lammps() + +# reduced output useful reducing IO for production runs +# lmp = lammps(cmdargs=["-screen", "none", "-log", "none"]) + +# lammps commands +lmp.command("atom_style full") +lmp.command("units metal") +lmp.command("processors * * *") +lmp.command("neighbor 1 bin") +lmp.command("boundary p p p") + +# read data and force field file +lmp.command("read_data {}".format(infile)) +lmp.file("{}".format(ff_file)) + +lmp.command("dynamical_matrix all eskm 0.000001 file dynmat.dat") + +dynmat = np.loadtxt("dynmat.dat") +dynlen = int(3*np.sqrt(len(dynmat)/3)) +dynmat = dynmat.reshape((dynlen, dynlen)) + +eigvals, eigvecs = np.linalg.eig(dynmat) + +# frequencies in THz +omegas = np.sqrt(np.abs(eigvals)) +print(omegas) diff --git a/examples/gcmc/CO2.txt b/examples/gcmc/CO2.txt index 72e593e3f2..c9fb8616c2 100644 --- a/examples/gcmc/CO2.txt +++ b/examples/gcmc/CO2.txt @@ -12,15 +12,15 @@ Coords Types -1 1 -2 2 -3 2 +1 1 +2 2 +3 2 -Charges +Charges -1 0.7 -2 -0.35 -3 -0.35 +1 0.7 +2 -0.35 +3 -0.35 Bonds diff --git a/examples/gcmc/H2O.txt b/examples/gcmc/H2O.txt index b56f869693..e5a5e4fe93 100644 --- a/examples/gcmc/H2O.txt +++ b/examples/gcmc/H2O.txt @@ -1,4 +1,4 @@ -# CO2 molecule file. TraPPE model. +# Water molecule. SPC/E model. 3 atoms 2 bonds @@ -12,15 +12,15 @@ Coords Types -1 1 -2 2 -3 2 +1 1 +2 2 +3 2 -Charges +Charges 1 -0.8472 -2 0.4236 -3 0.4236 +2 0.4236 +3 0.4236 Bonds diff --git a/examples/gjf/README.md b/examples/gjf/README.md new file mode 100644 index 0000000000..e6886cb2dd --- /dev/null +++ b/examples/gjf/README.md @@ -0,0 +1,13 @@ +# LAMMPS GJF-2GJ THERMOSTAT EXAMPLE + +## GJF-2GJ THERMOSTAT + +This directory contains the ingredients to run an NVT simulation using the GJF-2GJ thermostat. + +Example: +``` +NP=4 #number of processors +mpirun -np $NP lmp_mpi -in.gjf.vhalf +``` + +## Required LAMMPS packages: MOLECULE package diff --git a/examples/gjf/argon.lmp b/examples/gjf/argon.lmp new file mode 100644 index 0000000000..00214b4c54 --- /dev/null +++ b/examples/gjf/argon.lmp @@ -0,0 +1,886 @@ +LAMMPS description + + 864 atoms + 0 bonds + 0 angles + 0 dihedrals + 0 impropers + + 1 atom types + 0 bond types + 0 angle types + 0 dihedral types + 0 improper types + + + 0.0000000 32.146000 xlo xhi + 0.0000000 32.146000 ylo yhi + 0.0000000 32.146000 zlo zhi + + Atoms + + 1 1 1 0.0000000 0.0000000 2.6790000 2.6790000 + 2 2 1 0.0000000 0.0000000 2.6790000 8.0360000 + 3 3 1 0.0000000 0.0000000 2.6790000 13.3940000 + 4 4 1 0.0000000 0.0000000 2.6790000 18.7520000 + 5 5 1 0.0000000 0.0000000 2.6790000 24.1090000 + 6 6 1 0.0000000 0.0000000 2.6790000 29.4670000 + 7 7 1 0.0000000 0.0000000 8.0360000 2.6790000 + 8 8 1 0.0000000 0.0000000 8.0360000 8.0360000 + 9 9 1 0.0000000 0.0000000 8.0360000 13.3940000 + 10 10 1 0.0000000 0.0000000 8.0360000 18.7520000 + 11 11 1 0.0000000 0.0000000 8.0360000 24.1090000 + 12 12 1 0.0000000 0.0000000 8.0360000 29.4670000 + 13 13 1 0.0000000 0.0000000 13.3940000 2.6790000 + 14 14 1 0.0000000 0.0000000 13.3940000 8.0360000 + 15 15 1 0.0000000 0.0000000 13.3940000 13.3940000 + 16 16 1 0.0000000 0.0000000 13.3940000 18.7520000 + 17 17 1 0.0000000 0.0000000 13.3940000 24.1090000 + 18 18 1 0.0000000 0.0000000 13.3940000 29.4670000 + 19 19 1 0.0000000 0.0000000 18.7520000 2.6790000 + 20 20 1 0.0000000 0.0000000 18.7520000 8.0360000 + 21 21 1 0.0000000 0.0000000 18.7520000 13.3940000 + 22 22 1 0.0000000 0.0000000 18.7520000 18.7520000 + 23 23 1 0.0000000 0.0000000 18.7520000 24.1090000 + 24 24 1 0.0000000 0.0000000 18.7520000 29.4670000 + 25 25 1 0.0000000 0.0000000 24.1090000 2.6790000 + 26 26 1 0.0000000 0.0000000 24.1090000 8.0360000 + 27 27 1 0.0000000 0.0000000 24.1090000 13.3940000 + 28 28 1 0.0000000 0.0000000 24.1090000 18.7520000 + 29 29 1 0.0000000 0.0000000 24.1090000 24.1090000 + 30 30 1 0.0000000 0.0000000 24.1090000 29.4670000 + 31 31 1 0.0000000 0.0000000 29.4670000 2.6790000 + 32 32 1 0.0000000 0.0000000 29.4670000 8.0360000 + 33 33 1 0.0000000 0.0000000 29.4670000 13.3940000 + 34 34 1 0.0000000 0.0000000 29.4670000 18.7520000 + 35 35 1 0.0000000 0.0000000 29.4670000 24.1090000 + 36 36 1 0.0000000 0.0000000 29.4670000 29.4670000 + 37 37 1 0.0000000 5.3580000 2.6790000 2.6790000 + 38 38 1 0.0000000 5.3580000 2.6790000 8.0360000 + 39 39 1 0.0000000 5.3580000 2.6790000 13.3940000 + 40 40 1 0.0000000 5.3580000 2.6790000 18.7520000 + 41 41 1 0.0000000 5.3580000 2.6790000 24.1090000 + 42 42 1 0.0000000 5.3580000 2.6790000 29.4670000 + 43 43 1 0.0000000 5.3580000 8.0360000 2.6790000 + 44 44 1 0.0000000 5.3580000 8.0360000 8.0360000 + 45 45 1 0.0000000 5.3580000 8.0360000 13.3940000 + 46 46 1 0.0000000 5.3580000 8.0360000 18.7520000 + 47 47 1 0.0000000 5.3580000 8.0360000 24.1090000 + 48 48 1 0.0000000 5.3580000 8.0360000 29.4670000 + 49 49 1 0.0000000 5.3580000 13.3940000 2.6790000 + 50 50 1 0.0000000 5.3580000 13.3940000 8.0360000 + 51 51 1 0.0000000 5.3580000 13.3940000 13.3940000 + 52 52 1 0.0000000 5.3580000 13.3940000 18.7520000 + 53 53 1 0.0000000 5.3580000 13.3940000 24.1090000 + 54 54 1 0.0000000 5.3580000 13.3940000 29.4670000 + 55 55 1 0.0000000 5.3580000 18.7520000 2.6790000 + 56 56 1 0.0000000 5.3580000 18.7520000 8.0360000 + 57 57 1 0.0000000 5.3580000 18.7520000 13.3940000 + 58 58 1 0.0000000 5.3580000 18.7520000 18.7520000 + 59 59 1 0.0000000 5.3580000 18.7520000 24.1090000 + 60 60 1 0.0000000 5.3580000 18.7520000 29.4670000 + 61 61 1 0.0000000 5.3580000 24.1090000 2.6790000 + 62 62 1 0.0000000 5.3580000 24.1090000 8.0360000 + 63 63 1 0.0000000 5.3580000 24.1090000 13.3940000 + 64 64 1 0.0000000 5.3580000 24.1090000 18.7520000 + 65 65 1 0.0000000 5.3580000 24.1090000 24.1090000 + 66 66 1 0.0000000 5.3580000 24.1090000 29.4670000 + 67 67 1 0.0000000 5.3580000 29.4670000 2.6790000 + 68 68 1 0.0000000 5.3580000 29.4670000 8.0360000 + 69 69 1 0.0000000 5.3580000 29.4670000 13.3940000 + 70 70 1 0.0000000 5.3580000 29.4670000 18.7520000 + 71 71 1 0.0000000 5.3580000 29.4670000 24.1090000 + 72 72 1 0.0000000 5.3580000 29.4670000 29.4670000 + 73 73 1 0.0000000 10.7150000 2.6790000 2.6790000 + 74 74 1 0.0000000 10.7150000 2.6790000 8.0360000 + 75 75 1 0.0000000 10.7150000 2.6790000 13.3940000 + 76 76 1 0.0000000 10.7150000 2.6790000 18.7520000 + 77 77 1 0.0000000 10.7150000 2.6790000 24.1090000 + 78 78 1 0.0000000 10.7150000 2.6790000 29.4670000 + 79 79 1 0.0000000 10.7150000 8.0360000 2.6790000 + 80 80 1 0.0000000 10.7150000 8.0360000 8.0360000 + 81 81 1 0.0000000 10.7150000 8.0360000 13.3940000 + 82 82 1 0.0000000 10.7150000 8.0360000 18.7520000 + 83 83 1 0.0000000 10.7150000 8.0360000 24.1090000 + 84 84 1 0.0000000 10.7150000 8.0360000 29.4670000 + 85 85 1 0.0000000 10.7150000 13.3940000 2.6790000 + 86 86 1 0.0000000 10.7150000 13.3940000 8.0360000 + 87 87 1 0.0000000 10.7150000 13.3940000 13.3940000 + 88 88 1 0.0000000 10.7150000 13.3940000 18.7520000 + 89 89 1 0.0000000 10.7150000 13.3940000 24.1090000 + 90 90 1 0.0000000 10.7150000 13.3940000 29.4670000 + 91 91 1 0.0000000 10.7150000 18.7520000 2.6790000 + 92 92 1 0.0000000 10.7150000 18.7520000 8.0360000 + 93 93 1 0.0000000 10.7150000 18.7520000 13.3940000 + 94 94 1 0.0000000 10.7150000 18.7520000 18.7520000 + 95 95 1 0.0000000 10.7150000 18.7520000 24.1090000 + 96 96 1 0.0000000 10.7150000 18.7520000 29.4670000 + 97 97 1 0.0000000 10.7150000 24.1090000 2.6790000 + 98 98 1 0.0000000 10.7150000 24.1090000 8.0360000 + 99 99 1 0.0000000 10.7150000 24.1090000 13.3940000 + 100 100 1 0.0000000 10.7150000 24.1090000 18.7520000 + 101 101 1 0.0000000 10.7150000 24.1090000 24.1090000 + 102 102 1 0.0000000 10.7150000 24.1090000 29.4670000 + 103 103 1 0.0000000 10.7150000 29.4670000 2.6790000 + 104 104 1 0.0000000 10.7150000 29.4670000 8.0360000 + 105 105 1 0.0000000 10.7150000 29.4670000 13.3940000 + 106 106 1 0.0000000 10.7150000 29.4670000 18.7520000 + 107 107 1 0.0000000 10.7150000 29.4670000 24.1090000 + 108 108 1 0.0000000 10.7150000 29.4670000 29.4670000 + 109 109 1 0.0000000 16.0730000 2.6790000 2.6790000 + 110 110 1 0.0000000 16.0730000 2.6790000 8.0360000 + 111 111 1 0.0000000 16.0730000 2.6790000 13.3940000 + 112 112 1 0.0000000 16.0730000 2.6790000 18.7520000 + 113 113 1 0.0000000 16.0730000 2.6790000 24.1090000 + 114 114 1 0.0000000 16.0730000 2.6790000 29.4670000 + 115 115 1 0.0000000 16.0730000 8.0360000 2.6790000 + 116 116 1 0.0000000 16.0730000 8.0360000 8.0360000 + 117 117 1 0.0000000 16.0730000 8.0360000 13.3940000 + 118 118 1 0.0000000 16.0730000 8.0360000 18.7520000 + 119 119 1 0.0000000 16.0730000 8.0360000 24.1090000 + 120 120 1 0.0000000 16.0730000 8.0360000 29.4670000 + 121 121 1 0.0000000 16.0730000 13.3940000 2.6790000 + 122 122 1 0.0000000 16.0730000 13.3940000 8.0360000 + 123 123 1 0.0000000 16.0730000 13.3940000 13.3940000 + 124 124 1 0.0000000 16.0730000 13.3940000 18.7520000 + 125 125 1 0.0000000 16.0730000 13.3940000 24.1090000 + 126 126 1 0.0000000 16.0730000 13.3940000 29.4670000 + 127 127 1 0.0000000 16.0730000 18.7520000 2.6790000 + 128 128 1 0.0000000 16.0730000 18.7520000 8.0360000 + 129 129 1 0.0000000 16.0730000 18.7520000 13.3940000 + 130 130 1 0.0000000 16.0730000 18.7520000 18.7520000 + 131 131 1 0.0000000 16.0730000 18.7520000 24.1090000 + 132 132 1 0.0000000 16.0730000 18.7520000 29.4670000 + 133 133 1 0.0000000 16.0730000 24.1090000 2.6790000 + 134 134 1 0.0000000 16.0730000 24.1090000 8.0360000 + 135 135 1 0.0000000 16.0730000 24.1090000 13.3940000 + 136 136 1 0.0000000 16.0730000 24.1090000 18.7520000 + 137 137 1 0.0000000 16.0730000 24.1090000 24.1090000 + 138 138 1 0.0000000 16.0730000 24.1090000 29.4670000 + 139 139 1 0.0000000 16.0730000 29.4670000 2.6790000 + 140 140 1 0.0000000 16.0730000 29.4670000 8.0360000 + 141 141 1 0.0000000 16.0730000 29.4670000 13.3940000 + 142 142 1 0.0000000 16.0730000 29.4670000 18.7520000 + 143 143 1 0.0000000 16.0730000 29.4670000 24.1090000 + 144 144 1 0.0000000 16.0730000 29.4670000 29.4670000 + 145 145 1 0.0000000 21.4310000 2.6790000 2.6790000 + 146 146 1 0.0000000 21.4310000 2.6790000 8.0360000 + 147 147 1 0.0000000 21.4310000 2.6790000 13.3940000 + 148 148 1 0.0000000 21.4310000 2.6790000 18.7520000 + 149 149 1 0.0000000 21.4310000 2.6790000 24.1090000 + 150 150 1 0.0000000 21.4310000 2.6790000 29.4670000 + 151 151 1 0.0000000 21.4310000 8.0360000 2.6790000 + 152 152 1 0.0000000 21.4310000 8.0360000 8.0360000 + 153 153 1 0.0000000 21.4310000 8.0360000 13.3940000 + 154 154 1 0.0000000 21.4310000 8.0360000 18.7520000 + 155 155 1 0.0000000 21.4310000 8.0360000 24.1090000 + 156 156 1 0.0000000 21.4310000 8.0360000 29.4670000 + 157 157 1 0.0000000 21.4310000 13.3940000 2.6790000 + 158 158 1 0.0000000 21.4310000 13.3940000 8.0360000 + 159 159 1 0.0000000 21.4310000 13.3940000 13.3940000 + 160 160 1 0.0000000 21.4310000 13.3940000 18.7520000 + 161 161 1 0.0000000 21.4310000 13.3940000 24.1090000 + 162 162 1 0.0000000 21.4310000 13.3940000 29.4670000 + 163 163 1 0.0000000 21.4310000 18.7520000 2.6790000 + 164 164 1 0.0000000 21.4310000 18.7520000 8.0360000 + 165 165 1 0.0000000 21.4310000 18.7520000 13.3940000 + 166 166 1 0.0000000 21.4310000 18.7520000 18.7520000 + 167 167 1 0.0000000 21.4310000 18.7520000 24.1090000 + 168 168 1 0.0000000 21.4310000 18.7520000 29.4670000 + 169 169 1 0.0000000 21.4310000 24.1090000 2.6790000 + 170 170 1 0.0000000 21.4310000 24.1090000 8.0360000 + 171 171 1 0.0000000 21.4310000 24.1090000 13.3940000 + 172 172 1 0.0000000 21.4310000 24.1090000 18.7520000 + 173 173 1 0.0000000 21.4310000 24.1090000 24.1090000 + 174 174 1 0.0000000 21.4310000 24.1090000 29.4670000 + 175 175 1 0.0000000 21.4310000 29.4670000 2.6790000 + 176 176 1 0.0000000 21.4310000 29.4670000 8.0360000 + 177 177 1 0.0000000 21.4310000 29.4670000 13.3940000 + 178 178 1 0.0000000 21.4310000 29.4670000 18.7520000 + 179 179 1 0.0000000 21.4310000 29.4670000 24.1090000 + 180 180 1 0.0000000 21.4310000 29.4670000 29.4670000 + 181 181 1 0.0000000 26.7880000 2.6790000 2.6790000 + 182 182 1 0.0000000 26.7880000 2.6790000 8.0360000 + 183 183 1 0.0000000 26.7880000 2.6790000 13.3940000 + 184 184 1 0.0000000 26.7880000 2.6790000 18.7520000 + 185 185 1 0.0000000 26.7880000 2.6790000 24.1090000 + 186 186 1 0.0000000 26.7880000 2.6790000 29.4670000 + 187 187 1 0.0000000 26.7880000 8.0360000 2.6790000 + 188 188 1 0.0000000 26.7880000 8.0360000 8.0360000 + 189 189 1 0.0000000 26.7880000 8.0360000 13.3940000 + 190 190 1 0.0000000 26.7880000 8.0360000 18.7520000 + 191 191 1 0.0000000 26.7880000 8.0360000 24.1090000 + 192 192 1 0.0000000 26.7880000 8.0360000 29.4670000 + 193 193 1 0.0000000 26.7880000 13.3940000 2.6790000 + 194 194 1 0.0000000 26.7880000 13.3940000 8.0360000 + 195 195 1 0.0000000 26.7880000 13.3940000 13.3940000 + 196 196 1 0.0000000 26.7880000 13.3940000 18.7520000 + 197 197 1 0.0000000 26.7880000 13.3940000 24.1090000 + 198 198 1 0.0000000 26.7880000 13.3940000 29.4670000 + 199 199 1 0.0000000 26.7880000 18.7520000 2.6790000 + 200 200 1 0.0000000 26.7880000 18.7520000 8.0360000 + 201 201 1 0.0000000 26.7880000 18.7520000 13.3940000 + 202 202 1 0.0000000 26.7880000 18.7520000 18.7520000 + 203 203 1 0.0000000 26.7880000 18.7520000 24.1090000 + 204 204 1 0.0000000 26.7880000 18.7520000 29.4670000 + 205 205 1 0.0000000 26.7880000 24.1090000 2.6790000 + 206 206 1 0.0000000 26.7880000 24.1090000 8.0360000 + 207 207 1 0.0000000 26.7880000 24.1090000 13.3940000 + 208 208 1 0.0000000 26.7880000 24.1090000 18.7520000 + 209 209 1 0.0000000 26.7880000 24.1090000 24.1090000 + 210 210 1 0.0000000 26.7880000 24.1090000 29.4670000 + 211 211 1 0.0000000 26.7880000 29.4670000 2.6790000 + 212 212 1 0.0000000 26.7880000 29.4670000 8.0360000 + 213 213 1 0.0000000 26.7880000 29.4670000 13.3940000 + 214 214 1 0.0000000 26.7880000 29.4670000 18.7520000 + 215 215 1 0.0000000 26.7880000 29.4670000 24.1090000 + 216 216 1 0.0000000 26.7880000 29.4670000 29.4670000 + 217 217 1 0.0000000 2.6790000 5.3580000 2.6790000 + 218 218 1 0.0000000 2.6790000 5.3580000 8.0360000 + 219 219 1 0.0000000 2.6790000 5.3580000 13.3940000 + 220 220 1 0.0000000 2.6790000 5.3580000 18.7520000 + 221 221 1 0.0000000 2.6790000 5.3580000 24.1090000 + 222 222 1 0.0000000 2.6790000 5.3580000 29.4670000 + 223 223 1 0.0000000 2.6790000 10.7150000 2.6790000 + 224 224 1 0.0000000 2.6790000 10.7150000 8.0360000 + 225 225 1 0.0000000 2.6790000 10.7150000 13.3940000 + 226 226 1 0.0000000 2.6790000 10.7150000 18.7520000 + 227 227 1 0.0000000 2.6790000 10.7150000 24.1090000 + 228 228 1 0.0000000 2.6790000 10.7150000 29.4670000 + 229 229 1 0.0000000 2.6790000 16.0730000 2.6790000 + 230 230 1 0.0000000 2.6790000 16.0730000 8.0360000 + 231 231 1 0.0000000 2.6790000 16.0730000 13.3940000 + 232 232 1 0.0000000 2.6790000 16.0730000 18.7520000 + 233 233 1 0.0000000 2.6790000 16.0730000 24.1090000 + 234 234 1 0.0000000 2.6790000 16.0730000 29.4670000 + 235 235 1 0.0000000 2.6790000 21.4310000 2.6790000 + 236 236 1 0.0000000 2.6790000 21.4310000 8.0360000 + 237 237 1 0.0000000 2.6790000 21.4310000 13.3940000 + 238 238 1 0.0000000 2.6790000 21.4310000 18.7520000 + 239 239 1 0.0000000 2.6790000 21.4310000 24.1090000 + 240 240 1 0.0000000 2.6790000 21.4310000 29.4670000 + 241 241 1 0.0000000 2.6790000 26.7880000 2.6790000 + 242 242 1 0.0000000 2.6790000 26.7880000 8.0360000 + 243 243 1 0.0000000 2.6790000 26.7880000 13.3940000 + 244 244 1 0.0000000 2.6790000 26.7880000 18.7520000 + 245 245 1 0.0000000 2.6790000 26.7880000 24.1090000 + 246 246 1 0.0000000 2.6790000 26.7880000 29.4670000 + 247 247 1 0.0000000 2.6790000 32.1460000 2.6790000 + 248 248 1 0.0000000 2.6790000 32.1460000 8.0360000 + 249 249 1 0.0000000 2.6790000 32.1460000 13.3940000 + 250 250 1 0.0000000 2.6790000 32.1460000 18.7520000 + 251 251 1 0.0000000 2.6790000 32.1460000 24.1090000 + 252 252 1 0.0000000 2.6790000 32.1460000 29.4670000 + 253 253 1 0.0000000 8.0360000 5.3580000 2.6790000 + 254 254 1 0.0000000 8.0360000 5.3580000 8.0360000 + 255 255 1 0.0000000 8.0360000 5.3580000 13.3940000 + 256 256 1 0.0000000 8.0360000 5.3580000 18.7520000 + 257 257 1 0.0000000 8.0360000 5.3580000 24.1090000 + 258 258 1 0.0000000 8.0360000 5.3580000 29.4670000 + 259 259 1 0.0000000 8.0360000 10.7150000 2.6790000 + 260 260 1 0.0000000 8.0360000 10.7150000 8.0360000 + 261 261 1 0.0000000 8.0360000 10.7150000 13.3940000 + 262 262 1 0.0000000 8.0360000 10.7150000 18.7520000 + 263 263 1 0.0000000 8.0360000 10.7150000 24.1090000 + 264 264 1 0.0000000 8.0360000 10.7150000 29.4670000 + 265 265 1 0.0000000 8.0360000 16.0730000 2.6790000 + 266 266 1 0.0000000 8.0360000 16.0730000 8.0360000 + 267 267 1 0.0000000 8.0360000 16.0730000 13.3940000 + 268 268 1 0.0000000 8.0360000 16.0730000 18.7520000 + 269 269 1 0.0000000 8.0360000 16.0730000 24.1090000 + 270 270 1 0.0000000 8.0360000 16.0730000 29.4670000 + 271 271 1 0.0000000 8.0360000 21.4310000 2.6790000 + 272 272 1 0.0000000 8.0360000 21.4310000 8.0360000 + 273 273 1 0.0000000 8.0360000 21.4310000 13.3940000 + 274 274 1 0.0000000 8.0360000 21.4310000 18.7520000 + 275 275 1 0.0000000 8.0360000 21.4310000 24.1090000 + 276 276 1 0.0000000 8.0360000 21.4310000 29.4670000 + 277 277 1 0.0000000 8.0360000 26.7880000 2.6790000 + 278 278 1 0.0000000 8.0360000 26.7880000 8.0360000 + 279 279 1 0.0000000 8.0360000 26.7880000 13.3940000 + 280 280 1 0.0000000 8.0360000 26.7880000 18.7520000 + 281 281 1 0.0000000 8.0360000 26.7880000 24.1090000 + 282 282 1 0.0000000 8.0360000 26.7880000 29.4670000 + 283 283 1 0.0000000 8.0360000 32.1460000 2.6790000 + 284 284 1 0.0000000 8.0360000 32.1460000 8.0360000 + 285 285 1 0.0000000 8.0360000 32.1460000 13.3940000 + 286 286 1 0.0000000 8.0360000 32.1460000 18.7520000 + 287 287 1 0.0000000 8.0360000 32.1460000 24.1090000 + 288 288 1 0.0000000 8.0360000 32.1460000 29.4670000 + 289 289 1 0.0000000 13.3940000 5.3580000 2.6790000 + 290 290 1 0.0000000 13.3940000 5.3580000 8.0360000 + 291 291 1 0.0000000 13.3940000 5.3580000 13.3940000 + 292 292 1 0.0000000 13.3940000 5.3580000 18.7520000 + 293 293 1 0.0000000 13.3940000 5.3580000 24.1090000 + 294 294 1 0.0000000 13.3940000 5.3580000 29.4670000 + 295 295 1 0.0000000 13.3940000 10.7150000 2.6790000 + 296 296 1 0.0000000 13.3940000 10.7150000 8.0360000 + 297 297 1 0.0000000 13.3940000 10.7150000 13.3940000 + 298 298 1 0.0000000 13.3940000 10.7150000 18.7520000 + 299 299 1 0.0000000 13.3940000 10.7150000 24.1090000 + 300 300 1 0.0000000 13.3940000 10.7150000 29.4670000 + 301 301 1 0.0000000 13.3940000 16.0730000 2.6790000 + 302 302 1 0.0000000 13.3940000 16.0730000 8.0360000 + 303 303 1 0.0000000 13.3940000 16.0730000 13.3940000 + 304 304 1 0.0000000 13.3940000 16.0730000 18.7520000 + 305 305 1 0.0000000 13.3940000 16.0730000 24.1090000 + 306 306 1 0.0000000 13.3940000 16.0730000 29.4670000 + 307 307 1 0.0000000 13.3940000 21.4310000 2.6790000 + 308 308 1 0.0000000 13.3940000 21.4310000 8.0360000 + 309 309 1 0.0000000 13.3940000 21.4310000 13.3940000 + 310 310 1 0.0000000 13.3940000 21.4310000 18.7520000 + 311 311 1 0.0000000 13.3940000 21.4310000 24.1090000 + 312 312 1 0.0000000 13.3940000 21.4310000 29.4670000 + 313 313 1 0.0000000 13.3940000 26.7880000 2.6790000 + 314 314 1 0.0000000 13.3940000 26.7880000 8.0360000 + 315 315 1 0.0000000 13.3940000 26.7880000 13.3940000 + 316 316 1 0.0000000 13.3940000 26.7880000 18.7520000 + 317 317 1 0.0000000 13.3940000 26.7880000 24.1090000 + 318 318 1 0.0000000 13.3940000 26.7880000 29.4670000 + 319 319 1 0.0000000 13.3940000 32.1460000 2.6790000 + 320 320 1 0.0000000 13.3940000 32.1460000 8.0360000 + 321 321 1 0.0000000 13.3940000 32.1460000 13.3940000 + 322 322 1 0.0000000 13.3940000 32.1460000 18.7520000 + 323 323 1 0.0000000 13.3940000 32.1460000 24.1090000 + 324 324 1 0.0000000 13.3940000 32.1460000 29.4670000 + 325 325 1 0.0000000 18.7520000 5.3580000 2.6790000 + 326 326 1 0.0000000 18.7520000 5.3580000 8.0360000 + 327 327 1 0.0000000 18.7520000 5.3580000 13.3940000 + 328 328 1 0.0000000 18.7520000 5.3580000 18.7520000 + 329 329 1 0.0000000 18.7520000 5.3580000 24.1090000 + 330 330 1 0.0000000 18.7520000 5.3580000 29.4670000 + 331 331 1 0.0000000 18.7520000 10.7150000 2.6790000 + 332 332 1 0.0000000 18.7520000 10.7150000 8.0360000 + 333 333 1 0.0000000 18.7520000 10.7150000 13.3940000 + 334 334 1 0.0000000 18.7520000 10.7150000 18.7520000 + 335 335 1 0.0000000 18.7520000 10.7150000 24.1090000 + 336 336 1 0.0000000 18.7520000 10.7150000 29.4670000 + 337 337 1 0.0000000 18.7520000 16.0730000 2.6790000 + 338 338 1 0.0000000 18.7520000 16.0730000 8.0360000 + 339 339 1 0.0000000 18.7520000 16.0730000 13.3940000 + 340 340 1 0.0000000 18.7520000 16.0730000 18.7520000 + 341 341 1 0.0000000 18.7520000 16.0730000 24.1090000 + 342 342 1 0.0000000 18.7520000 16.0730000 29.4670000 + 343 343 1 0.0000000 18.7520000 21.4310000 2.6790000 + 344 344 1 0.0000000 18.7520000 21.4310000 8.0360000 + 345 345 1 0.0000000 18.7520000 21.4310000 13.3940000 + 346 346 1 0.0000000 18.7520000 21.4310000 18.7520000 + 347 347 1 0.0000000 18.7520000 21.4310000 24.1090000 + 348 348 1 0.0000000 18.7520000 21.4310000 29.4670000 + 349 349 1 0.0000000 18.7520000 26.7880000 2.6790000 + 350 350 1 0.0000000 18.7520000 26.7880000 8.0360000 + 351 351 1 0.0000000 18.7520000 26.7880000 13.3940000 + 352 352 1 0.0000000 18.7520000 26.7880000 18.7520000 + 353 353 1 0.0000000 18.7520000 26.7880000 24.1090000 + 354 354 1 0.0000000 18.7520000 26.7880000 29.4670000 + 355 355 1 0.0000000 18.7520000 32.1460000 2.6790000 + 356 356 1 0.0000000 18.7520000 32.1460000 8.0360000 + 357 357 1 0.0000000 18.7520000 32.1460000 13.3940000 + 358 358 1 0.0000000 18.7520000 32.1460000 18.7520000 + 359 359 1 0.0000000 18.7520000 32.1460000 24.1090000 + 360 360 1 0.0000000 18.7520000 32.1460000 29.4670000 + 361 361 1 0.0000000 24.1090000 5.3580000 2.6790000 + 362 362 1 0.0000000 24.1090000 5.3580000 8.0360000 + 363 363 1 0.0000000 24.1090000 5.3580000 13.3940000 + 364 364 1 0.0000000 24.1090000 5.3580000 18.7520000 + 365 365 1 0.0000000 24.1090000 5.3580000 24.1090000 + 366 366 1 0.0000000 24.1090000 5.3580000 29.4670000 + 367 367 1 0.0000000 24.1090000 10.7150000 2.6790000 + 368 368 1 0.0000000 24.1090000 10.7150000 8.0360000 + 369 369 1 0.0000000 24.1090000 10.7150000 13.3940000 + 370 370 1 0.0000000 24.1090000 10.7150000 18.7520000 + 371 371 1 0.0000000 24.1090000 10.7150000 24.1090000 + 372 372 1 0.0000000 24.1090000 10.7150000 29.4670000 + 373 373 1 0.0000000 24.1090000 16.0730000 2.6790000 + 374 374 1 0.0000000 24.1090000 16.0730000 8.0360000 + 375 375 1 0.0000000 24.1090000 16.0730000 13.3940000 + 376 376 1 0.0000000 24.1090000 16.0730000 18.7520000 + 377 377 1 0.0000000 24.1090000 16.0730000 24.1090000 + 378 378 1 0.0000000 24.1090000 16.0730000 29.4670000 + 379 379 1 0.0000000 24.1090000 21.4310000 2.6790000 + 380 380 1 0.0000000 24.1090000 21.4310000 8.0360000 + 381 381 1 0.0000000 24.1090000 21.4310000 13.3940000 + 382 382 1 0.0000000 24.1090000 21.4310000 18.7520000 + 383 383 1 0.0000000 24.1090000 21.4310000 24.1090000 + 384 384 1 0.0000000 24.1090000 21.4310000 29.4670000 + 385 385 1 0.0000000 24.1090000 26.7880000 2.6790000 + 386 386 1 0.0000000 24.1090000 26.7880000 8.0360000 + 387 387 1 0.0000000 24.1090000 26.7880000 13.3940000 + 388 388 1 0.0000000 24.1090000 26.7880000 18.7520000 + 389 389 1 0.0000000 24.1090000 26.7880000 24.1090000 + 390 390 1 0.0000000 24.1090000 26.7880000 29.4670000 + 391 391 1 0.0000000 24.1090000 32.1460000 2.6790000 + 392 392 1 0.0000000 24.1090000 32.1460000 8.0360000 + 393 393 1 0.0000000 24.1090000 32.1460000 13.3940000 + 394 394 1 0.0000000 24.1090000 32.1460000 18.7520000 + 395 395 1 0.0000000 24.1090000 32.1460000 24.1090000 + 396 396 1 0.0000000 24.1090000 32.1460000 29.4670000 + 397 397 1 0.0000000 29.4670000 5.3580000 2.6790000 + 398 398 1 0.0000000 29.4670000 5.3580000 8.0360000 + 399 399 1 0.0000000 29.4670000 5.3580000 13.3940000 + 400 400 1 0.0000000 29.4670000 5.3580000 18.7520000 + 401 401 1 0.0000000 29.4670000 5.3580000 24.1090000 + 402 402 1 0.0000000 29.4670000 5.3580000 29.4670000 + 403 403 1 0.0000000 29.4670000 10.7150000 2.6790000 + 404 404 1 0.0000000 29.4670000 10.7150000 8.0360000 + 405 405 1 0.0000000 29.4670000 10.7150000 13.3940000 + 406 406 1 0.0000000 29.4670000 10.7150000 18.7520000 + 407 407 1 0.0000000 29.4670000 10.7150000 24.1090000 + 408 408 1 0.0000000 29.4670000 10.7150000 29.4670000 + 409 409 1 0.0000000 29.4670000 16.0730000 2.6790000 + 410 410 1 0.0000000 29.4670000 16.0730000 8.0360000 + 411 411 1 0.0000000 29.4670000 16.0730000 13.3940000 + 412 412 1 0.0000000 29.4670000 16.0730000 18.7520000 + 413 413 1 0.0000000 29.4670000 16.0730000 24.1090000 + 414 414 1 0.0000000 29.4670000 16.0730000 29.4670000 + 415 415 1 0.0000000 29.4670000 21.4310000 2.6790000 + 416 416 1 0.0000000 29.4670000 21.4310000 8.0360000 + 417 417 1 0.0000000 29.4670000 21.4310000 13.3940000 + 418 418 1 0.0000000 29.4670000 21.4310000 18.7520000 + 419 419 1 0.0000000 29.4670000 21.4310000 24.1090000 + 420 420 1 0.0000000 29.4670000 21.4310000 29.4670000 + 421 421 1 0.0000000 29.4670000 26.7880000 2.6790000 + 422 422 1 0.0000000 29.4670000 26.7880000 8.0360000 + 423 423 1 0.0000000 29.4670000 26.7880000 13.3940000 + 424 424 1 0.0000000 29.4670000 26.7880000 18.7520000 + 425 425 1 0.0000000 29.4670000 26.7880000 24.1090000 + 426 426 1 0.0000000 29.4670000 26.7880000 29.4670000 + 427 427 1 0.0000000 29.4670000 32.1460000 2.6790000 + 428 428 1 0.0000000 29.4670000 32.1460000 8.0360000 + 429 429 1 0.0000000 29.4670000 32.1460000 13.3940000 + 430 430 1 0.0000000 29.4670000 32.1460000 18.7520000 + 431 431 1 0.0000000 29.4670000 32.1460000 24.1090000 + 432 432 1 0.0000000 29.4670000 32.1460000 29.4670000 + 433 433 1 0.0000000 2.6790000 2.6790000 5.3580000 + 434 434 1 0.0000000 2.6790000 2.6790000 10.7150000 + 435 435 1 0.0000000 2.6790000 2.6790000 16.0730000 + 436 436 1 0.0000000 2.6790000 2.6790000 21.4310000 + 437 437 1 0.0000000 2.6790000 2.6790000 26.7880000 + 438 438 1 0.0000000 2.6790000 2.6790000 32.1460000 + 439 439 1 0.0000000 2.6790000 8.0360000 5.3580000 + 440 440 1 0.0000000 2.6790000 8.0360000 10.7150000 + 441 441 1 0.0000000 2.6790000 8.0360000 16.0730000 + 442 442 1 0.0000000 2.6790000 8.0360000 21.4310000 + 443 443 1 0.0000000 2.6790000 8.0360000 26.7880000 + 444 444 1 0.0000000 2.6790000 8.0360000 32.1460000 + 445 445 1 0.0000000 2.6790000 13.3940000 5.3580000 + 446 446 1 0.0000000 2.6790000 13.3940000 10.7150000 + 447 447 1 0.0000000 2.6790000 13.3940000 16.0730000 + 448 448 1 0.0000000 2.6790000 13.3940000 21.4310000 + 449 449 1 0.0000000 2.6790000 13.3940000 26.7880000 + 450 450 1 0.0000000 2.6790000 13.3940000 32.1460000 + 451 451 1 0.0000000 2.6790000 18.7520000 5.3580000 + 452 452 1 0.0000000 2.6790000 18.7520000 10.7150000 + 453 453 1 0.0000000 2.6790000 18.7520000 16.0730000 + 454 454 1 0.0000000 2.6790000 18.7520000 21.4310000 + 455 455 1 0.0000000 2.6790000 18.7520000 26.7880000 + 456 456 1 0.0000000 2.6790000 18.7520000 32.1460000 + 457 457 1 0.0000000 2.6790000 24.1090000 5.3580000 + 458 458 1 0.0000000 2.6790000 24.1090000 10.7150000 + 459 459 1 0.0000000 2.6790000 24.1090000 16.0730000 + 460 460 1 0.0000000 2.6790000 24.1090000 21.4310000 + 461 461 1 0.0000000 2.6790000 24.1090000 26.7880000 + 462 462 1 0.0000000 2.6790000 24.1090000 32.1460000 + 463 463 1 0.0000000 2.6790000 29.4670000 5.3580000 + 464 464 1 0.0000000 2.6790000 29.4670000 10.7150000 + 465 465 1 0.0000000 2.6790000 29.4670000 16.0730000 + 466 466 1 0.0000000 2.6790000 29.4670000 21.4310000 + 467 467 1 0.0000000 2.6790000 29.4670000 26.7880000 + 468 468 1 0.0000000 2.6790000 29.4670000 32.1460000 + 469 469 1 0.0000000 8.0360000 2.6790000 5.3580000 + 470 470 1 0.0000000 8.0360000 2.6790000 10.7150000 + 471 471 1 0.0000000 8.0360000 2.6790000 16.0730000 + 472 472 1 0.0000000 8.0360000 2.6790000 21.4310000 + 473 473 1 0.0000000 8.0360000 2.6790000 26.7880000 + 474 474 1 0.0000000 8.0360000 2.6790000 32.1460000 + 475 475 1 0.0000000 8.0360000 8.0360000 5.3580000 + 476 476 1 0.0000000 8.0360000 8.0360000 10.7150000 + 477 477 1 0.0000000 8.0360000 8.0360000 16.0730000 + 478 478 1 0.0000000 8.0360000 8.0360000 21.4310000 + 479 479 1 0.0000000 8.0360000 8.0360000 26.7880000 + 480 480 1 0.0000000 8.0360000 8.0360000 32.1460000 + 481 481 1 0.0000000 8.0360000 13.3940000 5.3580000 + 482 482 1 0.0000000 8.0360000 13.3940000 10.7150000 + 483 483 1 0.0000000 8.0360000 13.3940000 16.0730000 + 484 484 1 0.0000000 8.0360000 13.3940000 21.4310000 + 485 485 1 0.0000000 8.0360000 13.3940000 26.7880000 + 486 486 1 0.0000000 8.0360000 13.3940000 32.1460000 + 487 487 1 0.0000000 8.0360000 18.7520000 5.3580000 + 488 488 1 0.0000000 8.0360000 18.7520000 10.7150000 + 489 489 1 0.0000000 8.0360000 18.7520000 16.0730000 + 490 490 1 0.0000000 8.0360000 18.7520000 21.4310000 + 491 491 1 0.0000000 8.0360000 18.7520000 26.7880000 + 492 492 1 0.0000000 8.0360000 18.7520000 32.1460000 + 493 493 1 0.0000000 8.0360000 24.1090000 5.3580000 + 494 494 1 0.0000000 8.0360000 24.1090000 10.7150000 + 495 495 1 0.0000000 8.0360000 24.1090000 16.0730000 + 496 496 1 0.0000000 8.0360000 24.1090000 21.4310000 + 497 497 1 0.0000000 8.0360000 24.1090000 26.7880000 + 498 498 1 0.0000000 8.0360000 24.1090000 32.1460000 + 499 499 1 0.0000000 8.0360000 29.4670000 5.3580000 + 500 500 1 0.0000000 8.0360000 29.4670000 10.7150000 + 501 501 1 0.0000000 8.0360000 29.4670000 16.0730000 + 502 502 1 0.0000000 8.0360000 29.4670000 21.4310000 + 503 503 1 0.0000000 8.0360000 29.4670000 26.7880000 + 504 504 1 0.0000000 8.0360000 29.4670000 32.1460000 + 505 505 1 0.0000000 13.3940000 2.6790000 5.3580000 + 506 506 1 0.0000000 13.3940000 2.6790000 10.7150000 + 507 507 1 0.0000000 13.3940000 2.6790000 16.0730000 + 508 508 1 0.0000000 13.3940000 2.6790000 21.4310000 + 509 509 1 0.0000000 13.3940000 2.6790000 26.7880000 + 510 510 1 0.0000000 13.3940000 2.6790000 32.1460000 + 511 511 1 0.0000000 13.3940000 8.0360000 5.3580000 + 512 512 1 0.0000000 13.3940000 8.0360000 10.7150000 + 513 513 1 0.0000000 13.3940000 8.0360000 16.0730000 + 514 514 1 0.0000000 13.3940000 8.0360000 21.4310000 + 515 515 1 0.0000000 13.3940000 8.0360000 26.7880000 + 516 516 1 0.0000000 13.3940000 8.0360000 32.1460000 + 517 517 1 0.0000000 13.3940000 13.3940000 5.3580000 + 518 518 1 0.0000000 13.3940000 13.3940000 10.7150000 + 519 519 1 0.0000000 13.3940000 13.3940000 16.0730000 + 520 520 1 0.0000000 13.3940000 13.3940000 21.4310000 + 521 521 1 0.0000000 13.3940000 13.3940000 26.7880000 + 522 522 1 0.0000000 13.3940000 13.3940000 32.1460000 + 523 523 1 0.0000000 13.3940000 18.7520000 5.3580000 + 524 524 1 0.0000000 13.3940000 18.7520000 10.7150000 + 525 525 1 0.0000000 13.3940000 18.7520000 16.0730000 + 526 526 1 0.0000000 13.3940000 18.7520000 21.4310000 + 527 527 1 0.0000000 13.3940000 18.7520000 26.7880000 + 528 528 1 0.0000000 13.3940000 18.7520000 32.1460000 + 529 529 1 0.0000000 13.3940000 24.1090000 5.3580000 + 530 530 1 0.0000000 13.3940000 24.1090000 10.7150000 + 531 531 1 0.0000000 13.3940000 24.1090000 16.0730000 + 532 532 1 0.0000000 13.3940000 24.1090000 21.4310000 + 533 533 1 0.0000000 13.3940000 24.1090000 26.7880000 + 534 534 1 0.0000000 13.3940000 24.1090000 32.1460000 + 535 535 1 0.0000000 13.3940000 29.4670000 5.3580000 + 536 536 1 0.0000000 13.3940000 29.4670000 10.7150000 + 537 537 1 0.0000000 13.3940000 29.4670000 16.0730000 + 538 538 1 0.0000000 13.3940000 29.4670000 21.4310000 + 539 539 1 0.0000000 13.3940000 29.4670000 26.7880000 + 540 540 1 0.0000000 13.3940000 29.4670000 32.1460000 + 541 541 1 0.0000000 18.7520000 2.6790000 5.3580000 + 542 542 1 0.0000000 18.7520000 2.6790000 10.7150000 + 543 543 1 0.0000000 18.7520000 2.6790000 16.0730000 + 544 544 1 0.0000000 18.7520000 2.6790000 21.4310000 + 545 545 1 0.0000000 18.7520000 2.6790000 26.7880000 + 546 546 1 0.0000000 18.7520000 2.6790000 32.1460000 + 547 547 1 0.0000000 18.7520000 8.0360000 5.3580000 + 548 548 1 0.0000000 18.7520000 8.0360000 10.7150000 + 549 549 1 0.0000000 18.7520000 8.0360000 16.0730000 + 550 550 1 0.0000000 18.7520000 8.0360000 21.4310000 + 551 551 1 0.0000000 18.7520000 8.0360000 26.7880000 + 552 552 1 0.0000000 18.7520000 8.0360000 32.1460000 + 553 553 1 0.0000000 18.7520000 13.3940000 5.3580000 + 554 554 1 0.0000000 18.7520000 13.3940000 10.7150000 + 555 555 1 0.0000000 18.7520000 13.3940000 16.0730000 + 556 556 1 0.0000000 18.7520000 13.3940000 21.4310000 + 557 557 1 0.0000000 18.7520000 13.3940000 26.7880000 + 558 558 1 0.0000000 18.7520000 13.3940000 32.1460000 + 559 559 1 0.0000000 18.7520000 18.7520000 5.3580000 + 560 560 1 0.0000000 18.7520000 18.7520000 10.7150000 + 561 561 1 0.0000000 18.7520000 18.7520000 16.0730000 + 562 562 1 0.0000000 18.7520000 18.7520000 21.4310000 + 563 563 1 0.0000000 18.7520000 18.7520000 26.7880000 + 564 564 1 0.0000000 18.7520000 18.7520000 32.1460000 + 565 565 1 0.0000000 18.7520000 24.1090000 5.3580000 + 566 566 1 0.0000000 18.7520000 24.1090000 10.7150000 + 567 567 1 0.0000000 18.7520000 24.1090000 16.0730000 + 568 568 1 0.0000000 18.7520000 24.1090000 21.4310000 + 569 569 1 0.0000000 18.7520000 24.1090000 26.7880000 + 570 570 1 0.0000000 18.7520000 24.1090000 32.1460000 + 571 571 1 0.0000000 18.7520000 29.4670000 5.3580000 + 572 572 1 0.0000000 18.7520000 29.4670000 10.7150000 + 573 573 1 0.0000000 18.7520000 29.4670000 16.0730000 + 574 574 1 0.0000000 18.7520000 29.4670000 21.4310000 + 575 575 1 0.0000000 18.7520000 29.4670000 26.7880000 + 576 576 1 0.0000000 18.7520000 29.4670000 32.1460000 + 577 577 1 0.0000000 24.1090000 2.6790000 5.3580000 + 578 578 1 0.0000000 24.1090000 2.6790000 10.7150000 + 579 579 1 0.0000000 24.1090000 2.6790000 16.0730000 + 580 580 1 0.0000000 24.1090000 2.6790000 21.4310000 + 581 581 1 0.0000000 24.1090000 2.6790000 26.7880000 + 582 582 1 0.0000000 24.1090000 2.6790000 32.1460000 + 583 583 1 0.0000000 24.1090000 8.0360000 5.3580000 + 584 584 1 0.0000000 24.1090000 8.0360000 10.7150000 + 585 585 1 0.0000000 24.1090000 8.0360000 16.0730000 + 586 586 1 0.0000000 24.1090000 8.0360000 21.4310000 + 587 587 1 0.0000000 24.1090000 8.0360000 26.7880000 + 588 588 1 0.0000000 24.1090000 8.0360000 32.1460000 + 589 589 1 0.0000000 24.1090000 13.3940000 5.3580000 + 590 590 1 0.0000000 24.1090000 13.3940000 10.7150000 + 591 591 1 0.0000000 24.1090000 13.3940000 16.0730000 + 592 592 1 0.0000000 24.1090000 13.3940000 21.4310000 + 593 593 1 0.0000000 24.1090000 13.3940000 26.7880000 + 594 594 1 0.0000000 24.1090000 13.3940000 32.1460000 + 595 595 1 0.0000000 24.1090000 18.7520000 5.3580000 + 596 596 1 0.0000000 24.1090000 18.7520000 10.7150000 + 597 597 1 0.0000000 24.1090000 18.7520000 16.0730000 + 598 598 1 0.0000000 24.1090000 18.7520000 21.4310000 + 599 599 1 0.0000000 24.1090000 18.7520000 26.7880000 + 600 600 1 0.0000000 24.1090000 18.7520000 32.1460000 + 601 601 1 0.0000000 24.1090000 24.1090000 5.3580000 + 602 602 1 0.0000000 24.1090000 24.1090000 10.7150000 + 603 603 1 0.0000000 24.1090000 24.1090000 16.0730000 + 604 604 1 0.0000000 24.1090000 24.1090000 21.4310000 + 605 605 1 0.0000000 24.1090000 24.1090000 26.7880000 + 606 606 1 0.0000000 24.1090000 24.1090000 32.1460000 + 607 607 1 0.0000000 24.1090000 29.4670000 5.3580000 + 608 608 1 0.0000000 24.1090000 29.4670000 10.7150000 + 609 609 1 0.0000000 24.1090000 29.4670000 16.0730000 + 610 610 1 0.0000000 24.1090000 29.4670000 21.4310000 + 611 611 1 0.0000000 24.1090000 29.4670000 26.7880000 + 612 612 1 0.0000000 24.1090000 29.4670000 32.1460000 + 613 613 1 0.0000000 29.4670000 2.6790000 5.3580000 + 614 614 1 0.0000000 29.4670000 2.6790000 10.7150000 + 615 615 1 0.0000000 29.4670000 2.6790000 16.0730000 + 616 616 1 0.0000000 29.4670000 2.6790000 21.4310000 + 617 617 1 0.0000000 29.4670000 2.6790000 26.7880000 + 618 618 1 0.0000000 29.4670000 2.6790000 32.1460000 + 619 619 1 0.0000000 29.4670000 8.0360000 5.3580000 + 620 620 1 0.0000000 29.4670000 8.0360000 10.7150000 + 621 621 1 0.0000000 29.4670000 8.0360000 16.0730000 + 622 622 1 0.0000000 29.4670000 8.0360000 21.4310000 + 623 623 1 0.0000000 29.4670000 8.0360000 26.7880000 + 624 624 1 0.0000000 29.4670000 8.0360000 32.1460000 + 625 625 1 0.0000000 29.4670000 13.3940000 5.3580000 + 626 626 1 0.0000000 29.4670000 13.3940000 10.7150000 + 627 627 1 0.0000000 29.4670000 13.3940000 16.0730000 + 628 628 1 0.0000000 29.4670000 13.3940000 21.4310000 + 629 629 1 0.0000000 29.4670000 13.3940000 26.7880000 + 630 630 1 0.0000000 29.4670000 13.3940000 32.1460000 + 631 631 1 0.0000000 29.4670000 18.7520000 5.3580000 + 632 632 1 0.0000000 29.4670000 18.7520000 10.7150000 + 633 633 1 0.0000000 29.4670000 18.7520000 16.0730000 + 634 634 1 0.0000000 29.4670000 18.7520000 21.4310000 + 635 635 1 0.0000000 29.4670000 18.7520000 26.7880000 + 636 636 1 0.0000000 29.4670000 18.7520000 32.1460000 + 637 637 1 0.0000000 29.4670000 24.1090000 5.3580000 + 638 638 1 0.0000000 29.4670000 24.1090000 10.7150000 + 639 639 1 0.0000000 29.4670000 24.1090000 16.0730000 + 640 640 1 0.0000000 29.4670000 24.1090000 21.4310000 + 641 641 1 0.0000000 29.4670000 24.1090000 26.7880000 + 642 642 1 0.0000000 29.4670000 24.1090000 32.1460000 + 643 643 1 0.0000000 29.4670000 29.4670000 5.3580000 + 644 644 1 0.0000000 29.4670000 29.4670000 10.7150000 + 645 645 1 0.0000000 29.4670000 29.4670000 16.0730000 + 646 646 1 0.0000000 29.4670000 29.4670000 21.4310000 + 647 647 1 0.0000000 29.4670000 29.4670000 26.7880000 + 648 648 1 0.0000000 29.4670000 29.4670000 32.1460000 + 649 649 1 0.0000000 0.0000000 5.3580000 5.3580000 + 650 650 1 0.0000000 0.0000000 5.3580000 10.7150000 + 651 651 1 0.0000000 0.0000000 5.3580000 16.0730000 + 652 652 1 0.0000000 0.0000000 5.3580000 21.4310000 + 653 653 1 0.0000000 0.0000000 5.3580000 26.7880000 + 654 654 1 0.0000000 0.0000000 5.3580000 32.1460000 + 655 655 1 0.0000000 0.0000000 10.7150000 5.3580000 + 656 656 1 0.0000000 0.0000000 10.7150000 10.7150000 + 657 657 1 0.0000000 0.0000000 10.7150000 16.0730000 + 658 658 1 0.0000000 0.0000000 10.7150000 21.4310000 + 659 659 1 0.0000000 0.0000000 10.7150000 26.7880000 + 660 660 1 0.0000000 0.0000000 10.7150000 32.1460000 + 661 661 1 0.0000000 0.0000000 16.0730000 5.3580000 + 662 662 1 0.0000000 0.0000000 16.0730000 10.7150000 + 663 663 1 0.0000000 0.0000000 16.0730000 16.0730000 + 664 664 1 0.0000000 0.0000000 16.0730000 21.4310000 + 665 665 1 0.0000000 0.0000000 16.0730000 26.7880000 + 666 666 1 0.0000000 0.0000000 16.0730000 32.1460000 + 667 667 1 0.0000000 0.0000000 21.4310000 5.3580000 + 668 668 1 0.0000000 0.0000000 21.4310000 10.7150000 + 669 669 1 0.0000000 0.0000000 21.4310000 16.0730000 + 670 670 1 0.0000000 0.0000000 21.4310000 21.4310000 + 671 671 1 0.0000000 0.0000000 21.4310000 26.7880000 + 672 672 1 0.0000000 0.0000000 21.4310000 32.1460000 + 673 673 1 0.0000000 0.0000000 26.7880000 5.3580000 + 674 674 1 0.0000000 0.0000000 26.7880000 10.7150000 + 675 675 1 0.0000000 0.0000000 26.7880000 16.0730000 + 676 676 1 0.0000000 0.0000000 26.7880000 21.4310000 + 677 677 1 0.0000000 0.0000000 26.7880000 26.7880000 + 678 678 1 0.0000000 0.0000000 26.7880000 32.1460000 + 679 679 1 0.0000000 0.0000000 32.1460000 5.3580000 + 680 680 1 0.0000000 0.0000000 32.1460000 10.7150000 + 681 681 1 0.0000000 0.0000000 32.1460000 16.0730000 + 682 682 1 0.0000000 0.0000000 32.1460000 21.4310000 + 683 683 1 0.0000000 0.0000000 32.1460000 26.7880000 + 684 684 1 0.0000000 0.0000000 32.1460000 32.1460000 + 685 685 1 0.0000000 5.3580000 5.3580000 5.3580000 + 686 686 1 0.0000000 5.3580000 5.3580000 10.7150000 + 687 687 1 0.0000000 5.3580000 5.3580000 16.0730000 + 688 688 1 0.0000000 5.3580000 5.3580000 21.4310000 + 689 689 1 0.0000000 5.3580000 5.3580000 26.7880000 + 690 690 1 0.0000000 5.3580000 5.3580000 32.1460000 + 691 691 1 0.0000000 5.3580000 10.7150000 5.3580000 + 692 692 1 0.0000000 5.3580000 10.7150000 10.7150000 + 693 693 1 0.0000000 5.3580000 10.7150000 16.0730000 + 694 694 1 0.0000000 5.3580000 10.7150000 21.4310000 + 695 695 1 0.0000000 5.3580000 10.7150000 26.7880000 + 696 696 1 0.0000000 5.3580000 10.7150000 32.1460000 + 697 697 1 0.0000000 5.3580000 16.0730000 5.3580000 + 698 698 1 0.0000000 5.3580000 16.0730000 10.7150000 + 699 699 1 0.0000000 5.3580000 16.0730000 16.0730000 + 700 700 1 0.0000000 5.3580000 16.0730000 21.4310000 + 701 701 1 0.0000000 5.3580000 16.0730000 26.7880000 + 702 702 1 0.0000000 5.3580000 16.0730000 32.1460000 + 703 703 1 0.0000000 5.3580000 21.4310000 5.3580000 + 704 704 1 0.0000000 5.3580000 21.4310000 10.7150000 + 705 705 1 0.0000000 5.3580000 21.4310000 16.0730000 + 706 706 1 0.0000000 5.3580000 21.4310000 21.4310000 + 707 707 1 0.0000000 5.3580000 21.4310000 26.7880000 + 708 708 1 0.0000000 5.3580000 21.4310000 32.1460000 + 709 709 1 0.0000000 5.3580000 26.7880000 5.3580000 + 710 710 1 0.0000000 5.3580000 26.7880000 10.7150000 + 711 711 1 0.0000000 5.3580000 26.7880000 16.0730000 + 712 712 1 0.0000000 5.3580000 26.7880000 21.4310000 + 713 713 1 0.0000000 5.3580000 26.7880000 26.7880000 + 714 714 1 0.0000000 5.3580000 26.7880000 32.1460000 + 715 715 1 0.0000000 5.3580000 32.1460000 5.3580000 + 716 716 1 0.0000000 5.3580000 32.1460000 10.7150000 + 717 717 1 0.0000000 5.3580000 32.1460000 16.0730000 + 718 718 1 0.0000000 5.3580000 32.1460000 21.4310000 + 719 719 1 0.0000000 5.3580000 32.1460000 26.7880000 + 720 720 1 0.0000000 5.3580000 32.1460000 32.1460000 + 721 721 1 0.0000000 10.7150000 5.3580000 5.3580000 + 722 722 1 0.0000000 10.7150000 5.3580000 10.7150000 + 723 723 1 0.0000000 10.7150000 5.3580000 16.0730000 + 724 724 1 0.0000000 10.7150000 5.3580000 21.4310000 + 725 725 1 0.0000000 10.7150000 5.3580000 26.7880000 + 726 726 1 0.0000000 10.7150000 5.3580000 32.1460000 + 727 727 1 0.0000000 10.7150000 10.7150000 5.3580000 + 728 728 1 0.0000000 10.7150000 10.7150000 10.7150000 + 729 729 1 0.0000000 10.7150000 10.7150000 16.0730000 + 730 730 1 0.0000000 10.7150000 10.7150000 21.4310000 + 731 731 1 0.0000000 10.7150000 10.7150000 26.7880000 + 732 732 1 0.0000000 10.7150000 10.7150000 32.1460000 + 733 733 1 0.0000000 10.7150000 16.0730000 5.3580000 + 734 734 1 0.0000000 10.7150000 16.0730000 10.7150000 + 735 735 1 0.0000000 10.7150000 16.0730000 16.0730000 + 736 736 1 0.0000000 10.7150000 16.0730000 21.4310000 + 737 737 1 0.0000000 10.7150000 16.0730000 26.7880000 + 738 738 1 0.0000000 10.7150000 16.0730000 32.1460000 + 739 739 1 0.0000000 10.7150000 21.4310000 5.3580000 + 740 740 1 0.0000000 10.7150000 21.4310000 10.7150000 + 741 741 1 0.0000000 10.7150000 21.4310000 16.0730000 + 742 742 1 0.0000000 10.7150000 21.4310000 21.4310000 + 743 743 1 0.0000000 10.7150000 21.4310000 26.7880000 + 744 744 1 0.0000000 10.7150000 21.4310000 32.1460000 + 745 745 1 0.0000000 10.7150000 26.7880000 5.3580000 + 746 746 1 0.0000000 10.7150000 26.7880000 10.7150000 + 747 747 1 0.0000000 10.7150000 26.7880000 16.0730000 + 748 748 1 0.0000000 10.7150000 26.7880000 21.4310000 + 749 749 1 0.0000000 10.7150000 26.7880000 26.7880000 + 750 750 1 0.0000000 10.7150000 26.7880000 32.1460000 + 751 751 1 0.0000000 10.7150000 32.1460000 5.3580000 + 752 752 1 0.0000000 10.7150000 32.1460000 10.7150000 + 753 753 1 0.0000000 10.7150000 32.1460000 16.0730000 + 754 754 1 0.0000000 10.7150000 32.1460000 21.4310000 + 755 755 1 0.0000000 10.7150000 32.1460000 26.7880000 + 756 756 1 0.0000000 10.7150000 32.1460000 32.1460000 + 757 757 1 0.0000000 16.0730000 5.3580000 5.3580000 + 758 758 1 0.0000000 16.0730000 5.3580000 10.7150000 + 759 759 1 0.0000000 16.0730000 5.3580000 16.0730000 + 760 760 1 0.0000000 16.0730000 5.3580000 21.4310000 + 761 761 1 0.0000000 16.0730000 5.3580000 26.7880000 + 762 762 1 0.0000000 16.0730000 5.3580000 32.1460000 + 763 763 1 0.0000000 16.0730000 10.7150000 5.3580000 + 764 764 1 0.0000000 16.0730000 10.7150000 10.7150000 + 765 765 1 0.0000000 16.0730000 10.7150000 16.0730000 + 766 766 1 0.0000000 16.0730000 10.7150000 21.4310000 + 767 767 1 0.0000000 16.0730000 10.7150000 26.7880000 + 768 768 1 0.0000000 16.0730000 10.7150000 32.1460000 + 769 769 1 0.0000000 16.0730000 16.0730000 5.3580000 + 770 770 1 0.0000000 16.0730000 16.0730000 10.7150000 + 771 771 1 0.0000000 16.0730000 16.0730000 16.0730000 + 772 772 1 0.0000000 16.0730000 16.0730000 21.4310000 + 773 773 1 0.0000000 16.0730000 16.0730000 26.7880000 + 774 774 1 0.0000000 16.0730000 16.0730000 32.1460000 + 775 775 1 0.0000000 16.0730000 21.4310000 5.3580000 + 776 776 1 0.0000000 16.0730000 21.4310000 10.7150000 + 777 777 1 0.0000000 16.0730000 21.4310000 16.0730000 + 778 778 1 0.0000000 16.0730000 21.4310000 21.4310000 + 779 779 1 0.0000000 16.0730000 21.4310000 26.7880000 + 780 780 1 0.0000000 16.0730000 21.4310000 32.1460000 + 781 781 1 0.0000000 16.0730000 26.7880000 5.3580000 + 782 782 1 0.0000000 16.0730000 26.7880000 10.7150000 + 783 783 1 0.0000000 16.0730000 26.7880000 16.0730000 + 784 784 1 0.0000000 16.0730000 26.7880000 21.4310000 + 785 785 1 0.0000000 16.0730000 26.7880000 26.7880000 + 786 786 1 0.0000000 16.0730000 26.7880000 32.1460000 + 787 787 1 0.0000000 16.0730000 32.1460000 5.3580000 + 788 788 1 0.0000000 16.0730000 32.1460000 10.7150000 + 789 789 1 0.0000000 16.0730000 32.1460000 16.0730000 + 790 790 1 0.0000000 16.0730000 32.1460000 21.4310000 + 791 791 1 0.0000000 16.0730000 32.1460000 26.7880000 + 792 792 1 0.0000000 16.0730000 32.1460000 32.1460000 + 793 793 1 0.0000000 21.4310000 5.3580000 5.3580000 + 794 794 1 0.0000000 21.4310000 5.3580000 10.7150000 + 795 795 1 0.0000000 21.4310000 5.3580000 16.0730000 + 796 796 1 0.0000000 21.4310000 5.3580000 21.4310000 + 797 797 1 0.0000000 21.4310000 5.3580000 26.7880000 + 798 798 1 0.0000000 21.4310000 5.3580000 32.1460000 + 799 799 1 0.0000000 21.4310000 10.7150000 5.3580000 + 800 800 1 0.0000000 21.4310000 10.7150000 10.7150000 + 801 801 1 0.0000000 21.4310000 10.7150000 16.0730000 + 802 802 1 0.0000000 21.4310000 10.7150000 21.4310000 + 803 803 1 0.0000000 21.4310000 10.7150000 26.7880000 + 804 804 1 0.0000000 21.4310000 10.7150000 32.1460000 + 805 805 1 0.0000000 21.4310000 16.0730000 5.3580000 + 806 806 1 0.0000000 21.4310000 16.0730000 10.7150000 + 807 807 1 0.0000000 21.4310000 16.0730000 16.0730000 + 808 808 1 0.0000000 21.4310000 16.0730000 21.4310000 + 809 809 1 0.0000000 21.4310000 16.0730000 26.7880000 + 810 810 1 0.0000000 21.4310000 16.0730000 32.1460000 + 811 811 1 0.0000000 21.4310000 21.4310000 5.3580000 + 812 812 1 0.0000000 21.4310000 21.4310000 10.7150000 + 813 813 1 0.0000000 21.4310000 21.4310000 16.0730000 + 814 814 1 0.0000000 21.4310000 21.4310000 21.4310000 + 815 815 1 0.0000000 21.4310000 21.4310000 26.7880000 + 816 816 1 0.0000000 21.4310000 21.4310000 32.1460000 + 817 817 1 0.0000000 21.4310000 26.7880000 5.3580000 + 818 818 1 0.0000000 21.4310000 26.7880000 10.7150000 + 819 819 1 0.0000000 21.4310000 26.7880000 16.0730000 + 820 820 1 0.0000000 21.4310000 26.7880000 21.4310000 + 821 821 1 0.0000000 21.4310000 26.7880000 26.7880000 + 822 822 1 0.0000000 21.4310000 26.7880000 32.1460000 + 823 823 1 0.0000000 21.4310000 32.1460000 5.3580000 + 824 824 1 0.0000000 21.4310000 32.1460000 10.7150000 + 825 825 1 0.0000000 21.4310000 32.1460000 16.0730000 + 826 826 1 0.0000000 21.4310000 32.1460000 21.4310000 + 827 827 1 0.0000000 21.4310000 32.1460000 26.7880000 + 828 828 1 0.0000000 21.4310000 32.1460000 32.1460000 + 829 829 1 0.0000000 26.7880000 5.3580000 5.3580000 + 830 830 1 0.0000000 26.7880000 5.3580000 10.7150000 + 831 831 1 0.0000000 26.7880000 5.3580000 16.0730000 + 832 832 1 0.0000000 26.7880000 5.3580000 21.4310000 + 833 833 1 0.0000000 26.7880000 5.3580000 26.7880000 + 834 834 1 0.0000000 26.7880000 5.3580000 32.1460000 + 835 835 1 0.0000000 26.7880000 10.7150000 5.3580000 + 836 836 1 0.0000000 26.7880000 10.7150000 10.7150000 + 837 837 1 0.0000000 26.7880000 10.7150000 16.0730000 + 838 838 1 0.0000000 26.7880000 10.7150000 21.4310000 + 839 839 1 0.0000000 26.7880000 10.7150000 26.7880000 + 840 840 1 0.0000000 26.7880000 10.7150000 32.1460000 + 841 841 1 0.0000000 26.7880000 16.0730000 5.3580000 + 842 842 1 0.0000000 26.7880000 16.0730000 10.7150000 + 843 843 1 0.0000000 26.7880000 16.0730000 16.0730000 + 844 844 1 0.0000000 26.7880000 16.0730000 21.4310000 + 845 845 1 0.0000000 26.7880000 16.0730000 26.7880000 + 846 846 1 0.0000000 26.7880000 16.0730000 32.1460000 + 847 847 1 0.0000000 26.7880000 21.4310000 5.3580000 + 848 848 1 0.0000000 26.7880000 21.4310000 10.7150000 + 849 849 1 0.0000000 26.7880000 21.4310000 16.0730000 + 850 850 1 0.0000000 26.7880000 21.4310000 21.4310000 + 851 851 1 0.0000000 26.7880000 21.4310000 26.7880000 + 852 852 1 0.0000000 26.7880000 21.4310000 32.1460000 + 853 853 1 0.0000000 26.7880000 26.7880000 5.3580000 + 854 854 1 0.0000000 26.7880000 26.7880000 10.7150000 + 855 855 1 0.0000000 26.7880000 26.7880000 16.0730000 + 856 856 1 0.0000000 26.7880000 26.7880000 21.4310000 + 857 857 1 0.0000000 26.7880000 26.7880000 26.7880000 + 858 858 1 0.0000000 26.7880000 26.7880000 32.1460000 + 859 859 1 0.0000000 26.7880000 32.1460000 5.3580000 + 860 860 1 0.0000000 26.7880000 32.1460000 10.7150000 + 861 861 1 0.0000000 26.7880000 32.1460000 16.0730000 + 862 862 1 0.0000000 26.7880000 32.1460000 21.4310000 + 863 863 1 0.0000000 26.7880000 32.1460000 26.7880000 + 864 864 1 0.0000000 26.7880000 32.1460000 32.1460000 + diff --git a/examples/gjf/ff-argon.lmp b/examples/gjf/ff-argon.lmp new file mode 100644 index 0000000000..b6f7bc931a --- /dev/null +++ b/examples/gjf/ff-argon.lmp @@ -0,0 +1,20 @@ +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + diff --git a/examples/gjf/in.gjf.vfull b/examples/gjf/in.gjf.vfull new file mode 100644 index 0000000000..40512ac37a --- /dev/null +++ b/examples/gjf/in.gjf.vfull @@ -0,0 +1,23 @@ +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + +include ff-argon.lmp + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vfull +fix nve all nve + +thermo 200 +run 5000 + + diff --git a/examples/gjf/in.gjf.vhalf b/examples/gjf/in.gjf.vhalf new file mode 100644 index 0000000000..63fb8bd467 --- /dev/null +++ b/examples/gjf/in.gjf.vhalf @@ -0,0 +1,23 @@ +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + +include ff-argon.lmp + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vhalf +fix nve all nve + +thermo 200 +run 5000 + + diff --git a/examples/gjf/log.15Oct19.gjf.vfull.g++.1 b/examples/gjf/log.15Oct19.gjf.vfull.g++.1 new file mode 100644 index 0000000000..e3e9cce124 --- /dev/null +++ b/examples/gjf/log.15Oct19.gjf.vfull.g++.1 @@ -0,0 +1,125 @@ +LAMMPS (19 Sep 2019) + using 1 OpenMP thread(s) per MPI task +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 864 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000150019 secs + read_data CPU = 0.001946 secs + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vfull +fix nve all nve + +thermo 200 +run 5000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.94072 + ghost atom cutoff = 6.94072 + binsize = 3.47036, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.875 | 6.875 | 6.875 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 11.080223 -56.207655 0 -54.97164 37.215524 + 200 8.2588471 -55.073602 0 -54.152316 339.80416 + 400 8.1427292 -55.072244 0 -54.16391 338.91883 + 600 8.7595618 -55.066739 0 -54.089596 344.25426 + 800 8.550633 -55.148315 0 -54.194479 318.9385 + 1000 8.5394337 -55.125709 0 -54.173122 326.59471 + 1200 8.565973 -55.114892 0 -54.159345 328.5193 + 1400 8.2092914 -55.109233 0 -54.193475 329.56161 + 1600 8.209495 -55.138161 0 -54.22238 321.39971 + 1800 8.4039924 -55.13355 0 -54.196072 322.64214 + 2000 8.4548937 -55.062994 0 -54.119838 343.29888 + 2200 8.3775139 -55.13364 0 -54.199116 323.63744 + 2400 8.537332 -55.163702 0 -54.21135 315.62864 + 2600 8.672488 -55.112054 0 -54.144625 330.1106 + 2800 8.3000218 -55.147275 0 -54.221396 318.73112 + 3000 8.3552421 -55.135164 0 -54.203124 323.53075 + 3200 8.4126798 -55.135753 0 -54.197306 321.48817 + 3400 8.4986413 -55.135408 0 -54.187372 323.42951 + 3600 8.38431 -55.103932 0 -54.16865 330.68929 + 3800 8.8262454 -55.103648 0 -54.119067 332.97779 + 4000 7.9658136 -55.120402 0 -54.231803 324.9595 + 4200 8.2265544 -55.129011 0 -54.211327 323.87069 + 4400 8.1253738 -55.153089 0 -54.246691 316.304 + 4600 8.2010823 -55.124053 0 -54.20921 325.98402 + 4800 8.5512149 -55.075877 0 -54.121976 338.30137 + 5000 8.4737659 -55.158604 0 -54.213343 316.22418 +Loop time of 2.73236 on 1 procs for 5000 steps with 864 atoms + +Performance: 15810.507 ns/day, 0.002 hours/ns, 1829.920 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.4262 | 1.4262 | 1.4262 | 0.0 | 52.20 +Bond | 0.00042836 | 0.00042836 | 0.00042836 | 0.0 | 0.02 +Neigh | 0.12819 | 0.12819 | 0.12819 | 0.0 | 4.69 +Comm | 0.058611 | 0.058611 | 0.058611 | 0.0 | 2.15 +Output | 0.00047283 | 0.00047283 | 0.00047283 | 0.0 | 0.02 +Modify | 1.0924 | 1.0924 | 1.0924 | 0.0 | 39.98 +Other | | 0.02605 | | | 0.95 + +Nlocal: 864 ave 864 max 864 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1593 ave 1593 max 1593 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 18143 ave 18143 max 18143 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 18143 +Ave neighs/atom = 20.9988 +Ave special neighs/atom = 0 +Neighbor list builds = 158 +Dangerous builds = 5 + + +Total wall time: 0:00:02 diff --git a/examples/gjf/log.15Oct19.gjf.vfull.g++.4 b/examples/gjf/log.15Oct19.gjf.vfull.g++.4 new file mode 100644 index 0000000000..95caed5dc9 --- /dev/null +++ b/examples/gjf/log.15Oct19.gjf.vfull.g++.4 @@ -0,0 +1,125 @@ +LAMMPS (19 Sep 2019) + using 1 OpenMP thread(s) per MPI task +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 864 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000556268 secs + read_data CPU = 0.003817 secs + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vfull +fix nve all nve + +thermo 200 +run 5000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.94072 + ghost atom cutoff = 6.94072 + binsize = 3.47036, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.808 | 6.808 | 6.808 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 11.080228 -56.207655 0 -54.971639 37.215541 + 200 8.4818184 -55.127334 0 -54.181174 324.96159 + 400 8.5960916 -55.09236 0 -54.133453 334.83136 + 600 8.1607556 -55.073136 0 -54.162791 339.035 + 800 8.8350489 -55.133382 0 -54.147819 324.48149 + 1000 8.5692704 -55.118463 0 -54.162548 327.26328 + 1200 8.4174147 -55.126297 0 -54.187322 324.4248 + 1400 8.6362603 -55.123075 0 -54.159688 326.7798 + 1600 8.222512 -55.153799 0 -54.236565 317.8147 + 1800 8.324523 -55.116698 0 -54.188085 327.35373 + 2000 7.9615959 -55.155825 0 -54.267697 315.37215 + 2200 8.495968 -55.083943 0 -54.136205 336.67775 + 2400 7.7926986 -55.044816 0 -54.175529 344.87758 + 2600 8.1551351 -55.069404 0 -54.159687 339.60901 + 2800 8.2593599 -55.084151 0 -54.162807 336.54935 + 3000 8.2860869 -55.110296 0 -54.185971 328.99074 + 3200 8.4074534 -55.123576 0 -54.185712 326.06823 + 3400 8.6694364 -55.128925 0 -54.161836 324.67512 + 3600 8.5718984 -55.129861 0 -54.173653 325.20586 + 3800 8.508102 -55.099093 0 -54.150001 333.91437 + 4000 8.2966658 -55.117782 0 -54.192276 327.13516 + 4200 8.7641728 -55.135792 0 -54.158136 324.00844 + 4400 8.8827909 -55.096369 0 -54.10548 335.08467 + 4600 8.7666577 -55.127213 0 -54.149279 326.15539 + 4800 8.6670762 -55.163395 0 -54.19657 316.48383 + 5000 8.1893094 -55.073756 0 -54.160226 337.95271 +Loop time of 0.870594 on 4 procs for 5000 steps with 864 atoms + +Performance: 49621.267 ns/day, 0.000 hours/ns, 5743.202 timesteps/s +96.5% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.33582 | 0.35125 | 0.3724 | 2.3 | 40.35 +Bond | 0.00030267 | 0.00031316 | 0.00033538 | 0.0 | 0.04 +Neigh | 0.034246 | 0.03479 | 0.035904 | 0.4 | 4.00 +Comm | 0.15068 | 0.17419 | 0.19191 | 3.6 | 20.01 +Output | 0.00044776 | 0.00054703 | 0.00083177 | 0.0 | 0.06 +Modify | 0.27679 | 0.28079 | 0.28849 | 0.9 | 32.25 +Other | | 0.02871 | | | 3.30 + +Nlocal: 216 ave 216 max 216 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 888.75 ave 899 max 876 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Neighs: 4536 ave 4737 max 4335 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 18144 +Ave neighs/atom = 21 +Ave special neighs/atom = 0 +Neighbor list builds = 178 +Dangerous builds = 11 + + +Total wall time: 0:00:00 diff --git a/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 b/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 new file mode 100644 index 0000000000..a87b20a887 --- /dev/null +++ b/examples/gjf/log.15Oct19.gjf.vhalf.g++.1 @@ -0,0 +1,125 @@ +LAMMPS (19 Sep 2019) + using 1 OpenMP thread(s) per MPI task +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 864 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000147804 secs + read_data CPU = 0.00194898 secs + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vhalf +fix nve all nve + +thermo 200 +run 5000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.94072 + ghost atom cutoff = 6.94072 + binsize = 3.47036, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.5 | 6.5 | 6.5 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 11.080223 -56.207655 0 -54.97164 37.215524 + 200 9.8808568 -55.073602 0 -53.971378 345.62207 + 400 9.8712816 -55.072244 0 -53.971088 345.11889 + 600 10.528988 -55.066739 0 -53.892214 350.60093 + 800 10.167171 -55.148315 0 -54.014152 324.73679 + 1000 10.029026 -55.125709 0 -54.006956 331.93766 + 1200 10.194424 -55.114892 0 -53.977688 334.36032 + 1400 9.3473846 -55.109233 0 -54.066518 333.64378 + 1600 9.7774071 -55.138161 0 -54.047477 327.02358 + 1800 9.9814275 -55.13355 0 -54.020107 328.30017 + 2000 10.2515 -55.062994 0 -53.919424 349.74304 + 2200 9.8126922 -55.13364 0 -54.039019 328.78521 + 2400 10.044314 -55.163702 0 -54.043244 321.03397 + 2600 10.543316 -55.112054 0 -53.935932 336.82099 + 2800 9.7874375 -55.147275 0 -54.055472 324.06626 + 3000 9.7703821 -55.135164 0 -54.045263 328.60665 + 3200 10.141958 -55.135753 0 -54.004402 327.69084 + 3400 10.160576 -55.135408 0 -54.00198 329.39063 + 3600 10.044652 -55.103932 0 -53.983436 336.64469 + 3800 10.662403 -55.103648 0 -53.914241 339.56382 + 4000 9.2921047 -55.120402 0 -54.083853 329.71671 + 4200 9.8744553 -55.129011 0 -54.027501 329.78147 + 4400 9.4085964 -55.153089 0 -54.103546 320.90673 + 4600 9.5463801 -55.124053 0 -54.05914 330.80941 + 4800 10.223884 -55.075877 0 -53.935387 344.30099 + 5000 9.6243338 -55.158604 0 -54.084996 320.3511 +Loop time of 2.29551 on 1 procs for 5000 steps with 864 atoms + +Performance: 18819.358 ns/day, 0.001 hours/ns, 2178.166 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.4393 | 1.4393 | 1.4393 | 0.0 | 62.70 +Bond | 0.0004441 | 0.0004441 | 0.0004441 | 0.0 | 0.02 +Neigh | 0.12136 | 0.12136 | 0.12136 | 0.0 | 5.29 +Comm | 0.059342 | 0.059342 | 0.059342 | 0.0 | 2.59 +Output | 0.00046968 | 0.00046968 | 0.00046968 | 0.0 | 0.02 +Modify | 0.64937 | 0.64937 | 0.64937 | 0.0 | 28.29 +Other | | 0.02522 | | | 1.10 + +Nlocal: 864 ave 864 max 864 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1593 ave 1593 max 1593 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 18143 ave 18143 max 18143 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 18143 +Ave neighs/atom = 20.9988 +Ave special neighs/atom = 0 +Neighbor list builds = 158 +Dangerous builds = 5 + + +Total wall time: 0:00:02 diff --git a/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 b/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 new file mode 100644 index 0000000000..a70a67a89c --- /dev/null +++ b/examples/gjf/log.15Oct19.gjf.vhalf.g++.4 @@ -0,0 +1,125 @@ +LAMMPS (19 Sep 2019) + using 1 OpenMP thread(s) per MPI task +# GJF-2GJ thermostat + +units metal +atom_style full + +boundary p p p +read_data argon.lmp + orthogonal box = (0 0 0) to (32.146 32.146 32.146) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 864 atoms + 0 = max # of 1-2 neighbors + 0 = max # of 1-3 neighbors + 0 = max # of 1-4 neighbors + 1 = max # of special neighbors + special bonds CPU = 0.000315903 secs + read_data CPU = 0.0653752 secs + +include ff-argon.lmp +############################# +#Atoms types - mass - charge# +############################# +#@ 1 atom types #!THIS LINE IS NECESSARY DON'T SPEND HOURS FINDING THAT OUT!# + +variable Ar equal 1 + +############# +#Atom Masses# +############# + +mass ${Ar} 39.903 +mass 1 39.903 + +########################### +#Pair Potentials - Tersoff# +########################### + +pair_style lj/cubic +pair_coeff * * 0.0102701 3.42 + + +velocity all create 10 2357 mom yes dist gaussian + +neighbor 1 bin + +timestep 0.1 + +fix lang all langevin 10 10 1 26488 gjf vhalf +fix nve all nve + +thermo 200 +run 5000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.94072 + ghost atom cutoff = 6.94072 + binsize = 3.47036, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cubic, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.433 | 6.433 | 6.433 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 11.080228 -56.207655 0 -54.971639 37.215541 + 200 9.8046716 -55.127334 0 -54.033608 329.70647 + 400 10.174622 -55.09236 0 -53.957366 340.49331 + 600 9.9812299 -55.073136 0 -53.959714 345.56477 + 800 10.512874 -55.133382 0 -53.960655 330.4996 + 1000 9.9587885 -55.118463 0 -54.007545 332.24728 + 1200 10.236607 -55.126297 0 -53.984388 330.94998 + 1400 10.134679 -55.123075 0 -53.992537 332.15441 + 1600 9.8934078 -55.153799 0 -54.050174 323.80795 + 1800 10.064966 -55.116698 0 -53.993936 333.59644 + 2000 9.6736107 -55.155825 0 -54.076719 321.5129 + 2200 10.264537 -55.083943 0 -53.938918 343.02135 + 2400 9.5640032 -55.044816 0 -53.977937 351.23099 + 2600 9.6581077 -55.069404 0 -53.992028 344.99996 + 2800 9.9622575 -55.084151 0 -53.972846 342.6574 + 3000 9.8724909 -55.110296 0 -54.009005 334.68094 + 3200 10.032027 -55.123576 0 -54.004488 331.89534 + 3400 10.221132 -55.128925 0 -53.988742 330.24082 + 3600 10.085802 -55.129861 0 -54.004774 330.63601 + 3800 10.098545 -55.099093 0 -53.972585 339.61905 + 4000 10.000257 -55.117782 0 -54.002238 333.24569 + 4200 10.20477 -55.135792 0 -53.997435 329.17565 + 4400 10.545132 -55.096369 0 -53.920044 341.04725 + 4600 10.376108 -55.127213 0 -53.969743 331.92825 + 4800 10.247392 -55.163395 0 -54.020283 322.15219 + 5000 9.7753102 -55.073756 0 -53.983305 343.64146 +Loop time of 1.19785 on 4 procs for 5000 steps with 864 atoms + +Performance: 36064.674 ns/day, 0.001 hours/ns, 4174.152 timesteps/s +88.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.36387 | 0.38652 | 0.44086 | 5.1 | 32.27 +Bond | 0.00028847 | 0.00030833 | 0.000338 | 0.0 | 0.03 +Neigh | 0.033934 | 0.034959 | 0.036917 | 0.6 | 2.92 +Comm | 0.39292 | 0.47821 | 0.52198 | 7.3 | 39.92 +Output | 0.00050343 | 0.0012343 | 0.0023338 | 1.9 | 0.10 +Modify | 0.1605 | 0.17963 | 0.19457 | 2.9 | 15.00 +Other | | 0.117 | | | 9.77 + +Nlocal: 216 ave 216 max 216 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 888.75 ave 899 max 876 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Neighs: 4536 ave 4737 max 4335 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 18144 +Ave neighs/atom = 21 +Ave special neighs/atom = 0 +Neighbor list builds = 178 +Dangerous builds = 11 + + +Total wall time: 0:00:01 diff --git a/examples/snap/WBe_Wood_PRB2019.snap b/examples/snap/WBe_Wood_PRB2019.snap new file mode 120000 index 0000000000..35454e3eb8 --- /dev/null +++ b/examples/snap/WBe_Wood_PRB2019.snap @@ -0,0 +1 @@ +../../potentials/WBe_Wood_PRB2019.snap \ No newline at end of file diff --git a/examples/snap/WBe_Wood_PRB2019.snapcoeff b/examples/snap/WBe_Wood_PRB2019.snapcoeff new file mode 120000 index 0000000000..b734e52610 --- /dev/null +++ b/examples/snap/WBe_Wood_PRB2019.snapcoeff @@ -0,0 +1 @@ +../../potentials/WBe_Wood_PRB2019.snapcoeff \ No newline at end of file diff --git a/examples/snap/WBe_Wood_PRB2019.snapparam b/examples/snap/WBe_Wood_PRB2019.snapparam new file mode 120000 index 0000000000..8f3530ffd6 --- /dev/null +++ b/examples/snap/WBe_Wood_PRB2019.snapparam @@ -0,0 +1 @@ +../../potentials/WBe_Wood_PRB2019.snapparam \ No newline at end of file diff --git a/examples/snap/in.snap.Mo_Chen b/examples/snap/in.snap.Mo_Chen index 007bce2462..bb9fb0900d 100644 --- a/examples/snap/in.snap.Mo_Chen +++ b/examples/snap/in.snap.Mo_Chen @@ -1,11 +1,11 @@ -# Demonstrate SNAP Ta potential +# Demonstrate SNAP Mo potential # Initialize simulation variable nsteps index 100 variable nrep equal 4 variable a equal 3.160 -units metal +units metal # generate the box and atom positions using a BCC lattice @@ -13,12 +13,12 @@ variable nx equal ${nrep} variable ny equal ${nrep} variable nz equal ${nrep} -boundary p p p +boundary p p p lattice bcc $a -region box block 0 ${nx} 0 ${ny} 0 ${nz} -create_box 1 box -create_atoms 1 box +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box mass 1 183.84 @@ -28,7 +28,7 @@ include Mo_Chen_PRM2017.snap # Setup output -thermo 10 +thermo 10 thermo_modify norm yes # Set up NVE run diff --git a/examples/snap/in.snap.Ta06A b/examples/snap/in.snap.Ta06A index 38a24b8c06..0ca5275e97 100644 --- a/examples/snap/in.snap.Ta06A +++ b/examples/snap/in.snap.Ta06A @@ -5,7 +5,7 @@ variable nsteps index 100 variable nrep equal 4 variable a equal 3.316 -units metal +units metal # generate the box and atom positions using a BCC lattice @@ -13,12 +13,12 @@ variable nx equal ${nrep} variable ny equal ${nrep} variable nz equal ${nrep} -boundary p p p +boundary p p p lattice bcc $a -region box block 0 ${nx} 0 ${ny} 0 ${nz} -create_box 1 box -create_atoms 1 box +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box mass 1 180.88 @@ -28,7 +28,7 @@ include Ta06A.snap # Setup output -thermo 10 +thermo 10 thermo_modify norm yes # Set up NVE run diff --git a/examples/snap/in.snap.W.2940 b/examples/snap/in.snap.W.2940 index e1abf861e6..7e59b5198e 100644 --- a/examples/snap/in.snap.W.2940 +++ b/examples/snap/in.snap.W.2940 @@ -1,11 +1,11 @@ -# Demonstrate SNAP Ta potential +# Demonstrate SNAP W potential # Initialize simulation variable nsteps index 100 variable nrep equal 4 variable a equal 3.1803 -units metal +units metal # generate the box and atom positions using a BCC lattice @@ -13,12 +13,12 @@ variable nx equal ${nrep} variable ny equal ${nrep} variable nz equal ${nrep} -boundary p p p +boundary p p p lattice bcc $a -region box block 0 ${nx} 0 ${ny} 0 ${nz} -create_box 1 box -create_atoms 1 box +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 1 box +create_atoms 1 box mass 1 183.84 @@ -28,7 +28,7 @@ include W_2940_2017_2.snap # Setup output -thermo 10 +thermo 10 thermo_modify norm yes # Set up NVE run diff --git a/examples/snap/in.snap.WBe.PRB2019 b/examples/snap/in.snap.WBe.PRB2019 new file mode 100644 index 0000000000..6b342ea56f --- /dev/null +++ b/examples/snap/in.snap.WBe.PRB2019 @@ -0,0 +1,48 @@ +# Demonstrate SNAP W-Be potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.1803 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable ny equal ${nrep} +variable nz equal ${nrep} + +boundary p p p + +lattice bcc $a +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 2 box +create_atoms 1 box +mass 1 183.84 +mass 2 9.012182 + +set group all type/fraction 2 0.05 3590153 # Change 5% of W to He +group tungsten type 1 +group beryllium type 2 +# choose potential + +include WBe_Wood_PRB2019.snap + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 +fix 1 all nve +run ${nsteps} + diff --git a/examples/snap/in.snap.hybrid.WSNAP.HePair b/examples/snap/in.snap.hybrid.WSNAP.HePair index 1f16fa64a2..1092c28119 100644 --- a/examples/snap/in.snap.hybrid.WSNAP.HePair +++ b/examples/snap/in.snap.hybrid.WSNAP.HePair @@ -1,11 +1,11 @@ -# Demonstrate SNAP Ta potential +# Demonstrate SNAP W with tabulated He-He and W-He using hybrid pair style # Initialize simulation variable nsteps index 100 variable nrep equal 4 variable a equal 3.1803 -units metal +units metal # generate the box and atom positions using a BCC lattice @@ -13,25 +13,25 @@ variable nx equal ${nrep} variable ny equal ${nrep} variable nz equal ${nrep} -boundary p p p +boundary p p p lattice bcc $a -region box block 0 ${nx} 0 ${ny} 0 ${nz} -create_box 2 box -create_atoms 1 box +region box block 0 ${nx} 0 ${ny} 0 ${nz} +create_box 2 box +create_atoms 1 box mass 1 183.84 mass 2 4.0026 -set group all type/fraction 2 0.05 3590153 # Change 5% of W to He -group tungsten type 1 -group helium type 2 +set group all type/fraction 2 0.05 3590153 # Change 5% of W to He +group tungsten type 1 +group helium type 2 # choose potential include W_2940_2017_2_He_JW2013.snap # Setup output -thermo 10 +thermo 10 thermo_modify norm yes # Set up NVE run diff --git a/examples/snap/log.18Sep19.snap.WBeSNAP.g++.1 b/examples/snap/log.18Sep19.snap.WBeSNAP.g++.1 new file mode 100644 index 0000000000..2b889e036b --- /dev/null +++ b/examples/snap/log.18Sep19.snap.WBeSNAP.g++.1 @@ -0,0 +1,154 @@ +LAMMPS (7 Aug 2019) +# Demonstrate SNAP W-Be potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.1803 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.1803 +Lattice spacing in x,y,z = 3.1803 3.1803 3.1803 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 128 atoms + create_atoms CPU = 0.000234842 secs +mass 1 183.84 +mass 2 9.012182 + +set group all type/fraction 2 0.05 3590153 # Change 5% of W to He + 5 settings made for type/fraction +group tungsten type 1 +123 atoms in group tungsten +group beryllium type 2 +5 atoms in group beryllium +# choose potential + +include WBe_Wood_PRB2019.snap +# Definition of SNAP+ZBL potential. +variable zblcutinner equal 4 +variable zblcutouter equal 4.8 +variable zblz1 equal 74 +variable zblz2 equal 4 + +# Specify hybrid with SNAP and ZBL + +pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap +pair_style hybrid/overlay zbl 4 ${zblcutouter} snap +pair_style hybrid/overlay zbl 4 4.8 snap +pair_coeff 1 1 zbl ${zblz1} ${zblz1} +pair_coeff 1 1 zbl 74 ${zblz1} +pair_coeff 1 1 zbl 74 74 +pair_coeff 1 2 zbl ${zblz1} ${zblz2} +pair_coeff 1 2 zbl 74 ${zblz2} +pair_coeff 1 2 zbl 74 4 +pair_coeff 2 2 zbl ${zblz2} ${zblz2} +pair_coeff 2 2 zbl 4 ${zblz2} +pair_coeff 2 2 zbl 4 4 +pair_coeff * * snap WBe_Wood_PRB2019.snapcoeff WBe_Wood_PRB2019.snapparam W Be +SNAP Element = W, Radius 0.5, Weight 1 +SNAP Element = Be, Radius 0.417932, Weight 0.959049 +SNAP keyword rcutfac 4.8123 +SNAP keyword twojmax 8 +SNAP keyword rfac0 0.99363 +SNAP keyword rmin0 0 +SNAP keyword bzeroflag 1 +SNAP keyword quadraticflag 0 + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.8123 + ghost atom cutoff = 5.8123 + binsize = 2.90615, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair zbl, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair snap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.268 | 4.268 | 4.268 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 300 -8.5980876 0 -8.5596125 -35284.855 + 10 299.29029 -8.5979965 0 -8.5596125 -35299.259 + 20 288.99334 -8.5966759 0 -8.5596124 -35004.093 + 30 269.91027 -8.5942284 0 -8.5596123 -34447.077 + 40 243.57361 -8.5908505 0 -8.5596121 -33687.105 + 50 212.21385 -8.5868284 0 -8.5596119 -32821.864 + 60 178.77144 -8.5825391 0 -8.5596116 -31971.17 + 70 146.71854 -8.578428 0 -8.5596113 -31245.51 + 80 119.50956 -8.5749383 0 -8.5596111 -30724.137 + 90 99.872785 -8.5724197 0 -8.559611 -30440.244 + 100 89.604584 -8.5711027 0 -8.5596109 -30392.805 +Loop time of 3.16831 on 1 procs for 100 steps with 128 atoms + +Performance: 1.364 ns/day, 17.602 hours/ns, 31.563 timesteps/s +199.5% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.1672 | 3.1672 | 3.1672 | 0.0 | 99.97 +Neigh | 0.00030208 | 0.00030208 | 0.00030208 | 0.0 | 0.01 +Comm | 0.00029612 | 0.00029612 | 0.00029612 | 0.0 | 0.01 +Output | 0.00019813 | 0.00019813 | 0.00019813 | 0.0 | 0.01 +Modify | 0.00014448 | 0.00014448 | 0.00014448 | 0.0 | 0.00 +Other | | 0.0001433 | | | 0.00 + +Nlocal: 128 ave 128 max 128 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 727 ave 727 max 727 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3710 ave 3710 max 3710 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 7420 ave 7420 max 7420 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 7420 +Ave neighs/atom = 57.9688 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/snap/log.18Sep19.snap.WBeSNAP.g++.4 b/examples/snap/log.18Sep19.snap.WBeSNAP.g++.4 new file mode 100644 index 0000000000..d8cdae6810 --- /dev/null +++ b/examples/snap/log.18Sep19.snap.WBeSNAP.g++.4 @@ -0,0 +1,154 @@ +LAMMPS (7 Aug 2019) +# Demonstrate SNAP W-Be potential + +# Initialize simulation + +variable nsteps index 100 +variable nrep equal 4 +variable a equal 3.1803 +units metal + +# generate the box and atom positions using a BCC lattice + +variable nx equal ${nrep} +variable nx equal 4 +variable ny equal ${nrep} +variable ny equal 4 +variable nz equal ${nrep} +variable nz equal 4 + +boundary p p p + +lattice bcc $a +lattice bcc 3.1803 +Lattice spacing in x,y,z = 3.1803 3.1803 3.1803 +region box block 0 ${nx} 0 ${ny} 0 ${nz} +region box block 0 4 0 ${ny} 0 ${nz} +region box block 0 4 0 4 0 ${nz} +region box block 0 4 0 4 0 4 +create_box 2 box +Created orthogonal box = (0 0 0) to (12.7212 12.7212 12.7212) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 128 atoms + create_atoms CPU = 0.000317097 secs +mass 1 183.84 +mass 2 9.012182 + +set group all type/fraction 2 0.05 3590153 # Change 5% of W to He + 5 settings made for type/fraction +group tungsten type 1 +123 atoms in group tungsten +group beryllium type 2 +5 atoms in group beryllium +# choose potential + +include WBe_Wood_PRB2019.snap +# Definition of SNAP+ZBL potential. +variable zblcutinner equal 4 +variable zblcutouter equal 4.8 +variable zblz1 equal 74 +variable zblz2 equal 4 + +# Specify hybrid with SNAP and ZBL + +pair_style hybrid/overlay zbl ${zblcutinner} ${zblcutouter} snap +pair_style hybrid/overlay zbl 4 ${zblcutouter} snap +pair_style hybrid/overlay zbl 4 4.8 snap +pair_coeff 1 1 zbl ${zblz1} ${zblz1} +pair_coeff 1 1 zbl 74 ${zblz1} +pair_coeff 1 1 zbl 74 74 +pair_coeff 1 2 zbl ${zblz1} ${zblz2} +pair_coeff 1 2 zbl 74 ${zblz2} +pair_coeff 1 2 zbl 74 4 +pair_coeff 2 2 zbl ${zblz2} ${zblz2} +pair_coeff 2 2 zbl 4 ${zblz2} +pair_coeff 2 2 zbl 4 4 +pair_coeff * * snap WBe_Wood_PRB2019.snapcoeff WBe_Wood_PRB2019.snapparam W Be +SNAP Element = W, Radius 0.5, Weight 1 +SNAP Element = Be, Radius 0.417932, Weight 0.959049 +SNAP keyword rcutfac 4.8123 +SNAP keyword twojmax 8 +SNAP keyword rfac0 0.99363 +SNAP keyword rmin0 0 +SNAP keyword bzeroflag 1 +SNAP keyword quadraticflag 0 + + +# Setup output + +thermo 10 +thermo_modify norm yes + +# Set up NVE run + +timestep 0.5e-3 +neighbor 1.0 bin +neigh_modify once no every 1 delay 0 check yes + +# Run MD + +velocity all create 300.0 4928459 +fix 1 all nve +run ${nsteps} +run 100 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.8123 + ghost atom cutoff = 5.8123 + binsize = 2.90615, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair zbl, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair snap, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.167 | 4.167 | 4.167 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 300 -8.5980876 0 -8.5596125 -35284.855 + 10 296.24946 -8.5976065 0 -8.5596124 -35140.29 + 20 282.27904 -8.5958147 0 -8.5596123 -34710.3 + 30 259.54978 -8.5928995 0 -8.5596121 -34060.43 + 40 230.41412 -8.5891626 0 -8.5596119 -33258.275 + 50 197.85135 -8.5849861 0 -8.5596116 -32389.527 + 60 165.21732 -8.5808005 0 -8.5596113 -31550.426 + 70 135.94024 -8.5770455 0 -8.5596111 -30839.006 + 80 113.06617 -8.5741117 0 -8.5596109 -30339.177 + 90 98.542347 -8.572249 0 -8.5596109 -30094.29 + 100 92.524343 -8.5714774 0 -8.5596111 -30091.988 +Loop time of 0.813674 on 4 procs for 100 steps with 128 atoms + +Performance: 5.309 ns/day, 4.520 hours/ns, 122.899 timesteps/s +99.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.79079 | 0.79788 | 0.80888 | 0.8 | 98.06 +Neigh | 7.1049e-05 | 8.0049e-05 | 9.2983e-05 | 0.0 | 0.01 +Comm | 0.0041246 | 0.01515 | 0.022235 | 5.5 | 1.86 +Output | 0.000144 | 0.00017095 | 0.00024796 | 0.0 | 0.02 +Modify | 4.4823e-05 | 5.8889e-05 | 7.2718e-05 | 0.0 | 0.01 +Other | | 0.000338 | | | 0.04 + +Nlocal: 32 ave 37 max 28 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Nghost: 431 ave 435 max 426 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Neighs: 927 ave 1071 max 821 min +Histogram: 1 0 1 0 1 0 0 0 0 1 +FullNghs: 1854 ave 2144 max 1624 min +Histogram: 1 0 0 1 1 0 0 0 0 1 + +Total # of neighbors = 7416 +Ave neighs/atom = 57.9375 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/lib/colvars/Makefile.common b/lib/colvars/Makefile.common index 5958765077..db04a0cb08 100644 --- a/lib/colvars/Makefile.common +++ b/lib/colvars/Makefile.common @@ -52,25 +52,29 @@ LEPTON_SRCS = \ lepton/src/ParsedExpression.cpp lepton/src/ExpressionProgram.cpp \ lepton/src/Operation.cpp lepton/src/Parser.cpp -LEPTON_OBJS = \ - lepton/src/CompiledExpression.o lepton/src/ExpressionTreeNode.o \ - lepton/src/ParsedExpression.o lepton/src/ExpressionProgram.o \ - lepton/src/Operation.o lepton/src/Parser.o -COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) $(LEPTON_OBJS) +# Allow to selectively turn off Lepton +ifeq ($(ENABLE_LEPTON),no) +LEPTON_INCFLAGS = +COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) +else +LEPTON_INCFLAGS = -Ilepton/include -DLEPTON +COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) $(LEPTON_SRCS:.cpp=.o) +endif + %.o: %.cpp - $(CXX) $(CXXFLAGS) $(COLVARS_INCFLAGS) -Ilepton/include -DLEPTON -c -o $@ $< + $(CXX) $(CXXFLAGS) $(COLVARS_INCFLAGS) $(LEPTON_INCFLAGS) -c -o $@ $< $(COLVARS_LIB): Makefile.deps $(COLVARS_OBJS) - $(AR) $(ARFLAGS) $(COLVARS_LIB) $(COLVARS_OBJS) $(LEPTON_OBJS) + $(AR) $(ARFLAGS) $(COLVARS_LIB) $(COLVARS_OBJS) Makefile.deps: $(COLVARS_SRCS) @echo > $@ @for src in $^ ; do \ obj=`basename $$src .cpp`.o ; \ - $(CXX) -MM $(COLVARS_INCFLAGS) -Ilepton/include -DLEPTON \ + $(CXX) -MM $(COLVARS_INCFLAGS) $(LEPTON_INCFLAGS) \ -MT '$$(COLVARS_OBJ_DIR)'$$obj $$src >> $@ ; \ done diff --git a/lib/colvars/Makefile.g++ b/lib/colvars/Makefile.g++ index 556e39d070..6fa5131d6f 100644 --- a/lib/colvars/Makefile.g++ +++ b/lib/colvars/Makefile.g++ @@ -6,7 +6,7 @@ COLVARS_LIB = libcolvars.a COLVARS_OBJ_DIR = CXX = g++ -CXXFLAGS = -O2 -g -Wall -fPIC -funroll-loops +CXXFLAGS = -std=c++0x -O2 -g -Wall -fPIC -funroll-loops AR = ar ARFLAGS = -rscv SHELL = /bin/sh diff --git a/lib/colvars/README b/lib/colvars/README index 087528748b..65821d68c7 100644 --- a/lib/colvars/README +++ b/lib/colvars/README @@ -50,6 +50,9 @@ settings in Makefile.common should work. Note: some Colvars functions use the Lepton mathematical expression parser, which is here included (no additional steps required). For more details, see: https://simtk.org/projects/lepton +Starting from 2019-06-02, Lepton requires C++11. Please see: + https://colvars.github.io/README-c++11.html + https://lammps.sandia.gov/doc/Build_settings.html#cxx11 ## Documentation diff --git a/lib/colvars/lepton/include/lepton/CompiledExpression.h b/lib/colvars/lepton/include/lepton/CompiledExpression.h index 67442e0cf5..c7e393e93b 100644 --- a/lib/colvars/lepton/include/lepton/CompiledExpression.h +++ b/lib/colvars/lepton/include/lepton/CompiledExpression.h @@ -9,7 +9,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2013-2016 Stanford University and the Authors. * + * Portions copyright (c) 2013-2019 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -52,9 +52,9 @@ class ParsedExpression; * A CompiledExpression is a highly optimized representation of an expression for cases when you want to evaluate * it many times as quickly as possible. You should treat it as an opaque object; none of the internal representation * is visible. - * + * * A CompiledExpression is created by calling createCompiledExpression() on a ParsedExpression. - * + * * WARNING: CompiledExpression is NOT thread safe. You should never access a CompiledExpression from two threads at * the same time. */ @@ -99,10 +99,11 @@ private: mutable std::vector workspace; mutable std::vector argValues; std::map dummyVariables; - void* jitCode; + double (*jitCode)(); #ifdef LEPTON_USE_JIT void generateJitCode(); - void generateSingleArgCall(asmjit::X86Compiler& c, asmjit::X86XmmVar& dest, asmjit::X86XmmVar& arg, double (*function)(double)); + void generateSingleArgCall(asmjit::X86Compiler& c, asmjit::X86Xmm& dest, asmjit::X86Xmm& arg, double (*function)(double)); + void generateTwoArgCall(asmjit::X86Compiler& c, asmjit::X86Xmm& dest, asmjit::X86Xmm& arg1, asmjit::X86Xmm& arg2, double (*function)(double, double)); std::vector constants; asmjit::JitRuntime runtime; #endif diff --git a/lib/colvars/lepton/include/lepton/CustomFunction.h b/lib/colvars/lepton/include/lepton/CustomFunction.h index 5c5586105f..fbb0ddd52a 100644 --- a/lib/colvars/lepton/include/lepton/CustomFunction.h +++ b/lib/colvars/lepton/include/lepton/CustomFunction.h @@ -72,6 +72,38 @@ public: virtual CustomFunction* clone() const = 0; }; +/** + * This class is an implementation of CustomFunction that does no computation. It just returns + * 0 for the value and derivatives. This is useful when using the parser to analyze expressions + * rather than to evaluate them. You can just create PlaceholderFunctions to represent any custom + * functions that may appear in expressions. + */ + +class LEPTON_EXPORT PlaceholderFunction : public CustomFunction { +public: + /** + * Create a Placeholder function. + * + * @param numArgs the number of arguments the function expects + */ + PlaceholderFunction(int numArgs) : numArgs(numArgs) { + } + int getNumArguments() const { + return numArgs; + } + double evaluate(const double* arguments) const { + return 0.0; + } + double evaluateDerivative(const double* arguments, const int* derivOrder) const { + return 0.0; + } + CustomFunction* clone() const { + return new PlaceholderFunction(numArgs); + }; +private: + int numArgs; +}; + } // namespace Lepton #endif /*LEPTON_CUSTOM_FUNCTION_H_*/ diff --git a/lib/colvars/lepton/include/lepton/ExpressionProgram.h b/lib/colvars/lepton/include/lepton/ExpressionProgram.h index 94d37f471d..a49a9094d0 100644 --- a/lib/colvars/lepton/include/lepton/ExpressionProgram.h +++ b/lib/colvars/lepton/include/lepton/ExpressionProgram.h @@ -9,7 +9,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2009 Stanford University and the Authors. * + * Portions copyright (c) 2009-2018 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -65,6 +65,14 @@ public: * Get an Operation in this program. */ const Operation& getOperation(int index) const; + /** + * Change an Operation in this program. + * + * The Operation must have been allocated on the heap with the "new" operator. + * The ExpressionProgram assumes ownership of it and will delete it when it + * is no longer needed. + */ + void setOperation(int index, Operation* operation); /** * Get the size of the stack needed to execute this program. This is the largest number of elements present * on the stack at any point during evaluation. diff --git a/lib/colvars/lepton/include/lepton/Operation.h b/lib/colvars/lepton/include/lepton/Operation.h index f7a8b78163..1ddde0b8c0 100644 --- a/lib/colvars/lepton/include/lepton/Operation.h +++ b/lib/colvars/lepton/include/lepton/Operation.h @@ -9,7 +9,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2009-2015 Stanford University and the Authors. * + * Portions copyright (c) 2009-2019 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -63,7 +63,7 @@ public: * can be used when processing or analyzing parsed expressions. */ enum Id {CONSTANT, VARIABLE, CUSTOM, ADD, SUBTRACT, MULTIPLY, DIVIDE, POWER, NEGATE, SQRT, EXP, LOG, - SIN, COS, SEC, CSC, TAN, COT, ASIN, ACOS, ATAN, SINH, COSH, TANH, ERF, ERFC, STEP, DELTA, SQUARE, CUBE, RECIPROCAL, + SIN, COS, SEC, CSC, TAN, COT, ASIN, ACOS, ATAN, ATAN2, SINH, COSH, TANH, ERF, ERFC, STEP, DELTA, SQUARE, CUBE, RECIPROCAL, ADD_CONSTANT, MULTIPLY_CONSTANT, POWER_CONSTANT, MIN, MAX, ABS, FLOOR, CEIL, SELECT}; /** * Get the name of this Operation. @@ -137,6 +137,7 @@ public: class Asin; class Acos; class Atan; + class Atan2; class Sinh; class Cosh; class Tanh; @@ -226,6 +227,11 @@ class LEPTON_EXPORT Operation::Custom : public Operation { public: Custom(const std::string& name, CustomFunction* function) : name(name), function(function), isDerivative(false), derivOrder(function->getNumArguments(), 0) { } + Custom(const std::string& name, CustomFunction* function, const std::vector& derivOrder) : name(name), function(function), isDerivative(false), derivOrder(derivOrder) { + for (int order : derivOrder) + if (order != 0) + isDerivative = true; + } Custom(const Custom& base, int derivIndex) : name(base.name), function(base.function->clone()), isDerivative(true), derivOrder(base.derivOrder) { derivOrder[derivIndex]++; } @@ -684,6 +690,28 @@ public: ExpressionTreeNode differentiate(const std::vector& children, const std::vector& childDerivs, const std::string& variable) const; }; +class LEPTON_EXPORT Operation::Atan2 : public Operation { +public: + Atan2() { + } + std::string getName() const { + return "atan2"; + } + Id getId() const { + return ATAN2; + } + int getNumArguments() const { + return 2; + } + Operation* clone() const { + return new Atan2(); + } + double evaluate(double* args, const std::map& variables) const { + return std::atan2(args[0], args[1]); + } + ExpressionTreeNode differentiate(const std::vector& children, const std::vector& childDerivs, const std::string& variable) const; +}; + class LEPTON_EXPORT Operation::Sinh : public Operation { public: Sinh() { @@ -989,7 +1017,7 @@ public: double evaluate(double* args, const std::map& variables) const { if (isIntPower) { // Integer powers can be computed much more quickly by repeated multiplication. - + int exponent = intValue; double base = args[0]; if (exponent < 0) { diff --git a/lib/colvars/lepton/src/CompiledExpression.cpp b/lib/colvars/lepton/src/CompiledExpression.cpp index 302f294ee2..1ad348b47d 100644 --- a/lib/colvars/lepton/src/CompiledExpression.cpp +++ b/lib/colvars/lepton/src/CompiledExpression.cpp @@ -6,7 +6,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2013-2016 Stanford University and the Authors. * + * Portions copyright (c) 2013-2019 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -84,17 +84,17 @@ CompiledExpression& CompiledExpression::operator=(const CompiledExpression& expr void CompiledExpression::compileExpression(const ExpressionTreeNode& node, vector >& temps) { if (findTempIndex(node, temps) != -1) return; // We have already processed a node identical to this one. - + // Process the child nodes. - + vector args; for (int i = 0; i < node.getChildren().size(); i++) { compileExpression(node.getChildren()[i], temps); args.push_back(findTempIndex(node.getChildren()[i], temps)); } - + // Process this node. - + if (node.getOperation().getId() == Operation::VARIABLE) { variableIndices[node.getOperation().getName()] = (int) workspace.size(); variableNames.insert(node.getOperation().getName()); @@ -108,7 +108,7 @@ void CompiledExpression::compileExpression(const ExpressionTreeNode& node, vecto arguments[stepIndex].push_back(0); // The value won't actually be used. We just need something there. else { // If the arguments are sequential, we can just pass a pointer to the first one. - + bool sequential = true; for (int i = 1; i < args.size(); i++) if (args[i] != args[i-1]+1) @@ -148,12 +148,12 @@ void CompiledExpression::setVariableLocations(map& variableLoca variablePointers = variableLocations; #ifdef LEPTON_USE_JIT // Rebuild the JIT code. - + if (workspace.size() > 0) generateJitCode(); #else // Make a list of all variables we will need to copy before evaluating the expression. - + variablesToCopy.clear(); for (map::const_iterator iter = variableIndices.begin(); iter != variableIndices.end(); ++iter) { map::iterator pointer = variablePointers.find(iter->first); @@ -165,13 +165,13 @@ void CompiledExpression::setVariableLocations(map& variableLoca double CompiledExpression::evaluate() const { #ifdef LEPTON_USE_JIT - return ((double (*)()) jitCode)(); + return jitCode(); #else for (int i = 0; i < variablesToCopy.size(); i++) *variablesToCopy[i].first = *variablesToCopy[i].second; // Loop over the operations and evaluate each one. - + for (int step = 0; step < operation.size(); step++) { const vector& args = arguments[step]; if (args.size() == 1) @@ -188,34 +188,36 @@ double CompiledExpression::evaluate() const { #ifdef LEPTON_USE_JIT static double evaluateOperation(Operation* op, double* args) { - map* dummyVariables = NULL; - return op->evaluate(args, *dummyVariables); + static map dummyVariables; + return op->evaluate(args, dummyVariables); } void CompiledExpression::generateJitCode() { - X86Compiler c(&runtime); - c.addFunc(kFuncConvHost, FuncBuilder0()); - vector workspaceVar(workspace.size()); + CodeHolder code; + code.init(runtime.getCodeInfo()); + X86Compiler c(&code); + c.addFunc(FuncSignature0()); + vector workspaceVar(workspace.size()); for (int i = 0; i < (int) workspaceVar.size(); i++) - workspaceVar[i] = c.newXmmVar(kX86VarTypeXmmSd); - X86GpVar argsPointer(c); + workspaceVar[i] = c.newXmmSd(); + X86Gp argsPointer = c.newIntPtr(); c.mov(argsPointer, imm_ptr(&argValues[0])); - + // Load the arguments into variables. - + for (set::const_iterator iter = variableNames.begin(); iter != variableNames.end(); ++iter) { map::iterator index = variableIndices.find(*iter); - X86GpVar variablePointer(c); + X86Gp variablePointer = c.newIntPtr(); c.mov(variablePointer, imm_ptr(&getVariableReference(index->first))); c.movsd(workspaceVar[index->second], x86::ptr(variablePointer, 0, 0)); } // Make a list of all constants that will be needed for evaluation. - + vector operationConstantIndex(operation.size(), -1); for (int step = 0; step < (int) operation.size(); step++) { // Find the constant value (if any) used by this operation. - + Operation& op = *operation[step]; double value; if (op.getId() == Operation::CONSTANT) @@ -232,9 +234,9 @@ void CompiledExpression::generateJitCode() { value = 1.0; else continue; - + // See if we already have a variable for this constant. - + for (int i = 0; i < (int) constants.size(); i++) if (value == constants[i]) { operationConstantIndex[step] = i; @@ -245,33 +247,33 @@ void CompiledExpression::generateJitCode() { constants.push_back(value); } } - + // Load constants into variables. - - vector constantVar(constants.size()); + + vector constantVar(constants.size()); if (constants.size() > 0) { - X86GpVar constantsPointer(c); + X86Gp constantsPointer = c.newIntPtr(); c.mov(constantsPointer, imm_ptr(&constants[0])); for (int i = 0; i < (int) constants.size(); i++) { - constantVar[i] = c.newXmmVar(kX86VarTypeXmmSd); + constantVar[i] = c.newXmmSd(); c.movsd(constantVar[i], x86::ptr(constantsPointer, 8*i, 0)); } } - + // Evaluate the operations. - + for (int step = 0; step < (int) operation.size(); step++) { Operation& op = *operation[step]; vector args = arguments[step]; if (args.size() == 1) { // One or more sequential arguments. Fill out the list. - + for (int i = 1; i < op.getNumArguments(); i++) args.push_back(args[0]+i); } - + // Generate instructions to execute this operation. - + switch (op.getId()) { case Operation::CONSTANT: c.movsd(workspaceVar[target[step]], constantVar[operationConstantIndex[step]]); @@ -292,6 +294,9 @@ void CompiledExpression::generateJitCode() { c.movsd(workspaceVar[target[step]], workspaceVar[args[0]]); c.divsd(workspaceVar[target[step]], workspaceVar[args[1]]); break; + case Operation::POWER: + generateTwoArgCall(c, workspaceVar[target[step]], workspaceVar[args[0]], workspaceVar[args[1]], pow); + break; case Operation::NEGATE: c.xorps(workspaceVar[target[step]], workspaceVar[target[step]]); c.subsd(workspaceVar[target[step]], workspaceVar[args[0]]); @@ -323,6 +328,9 @@ void CompiledExpression::generateJitCode() { case Operation::ATAN: generateSingleArgCall(c, workspaceVar[target[step]], workspaceVar[args[0]], atan); break; + case Operation::ATAN2: + generateTwoArgCall(c, workspaceVar[target[step]], workspaceVar[args[0]], workspaceVar[args[1]], atan2); + break; case Operation::SINH: generateSingleArgCall(c, workspaceVar[target[step]], workspaceVar[args[0]], sinh); break; @@ -374,12 +382,12 @@ void CompiledExpression::generateJitCode() { break; default: // Just invoke evaluateOperation(). - + for (int i = 0; i < (int) args.size(); i++) c.movsd(x86::ptr(argsPointer, 8*i, 0), workspaceVar[args[i]]); - X86GpVar fn(c, kVarTypeIntPtr); + X86Gp fn = c.newIntPtr(); c.mov(fn, imm_ptr((void*) evaluateOperation)); - X86CallNode* call = c.call(fn, kFuncConvHost, FuncBuilder2()); + CCFuncCall* call = c.call(fn, FuncSignature2()); call->setArg(0, imm_ptr(&op)); call->setArg(1, imm_ptr(&argValues[0])); call->setRet(0, workspaceVar[target[step]]); @@ -387,14 +395,24 @@ void CompiledExpression::generateJitCode() { } c.ret(workspaceVar[workspace.size()-1]); c.endFunc(); - jitCode = c.make(); + c.finalize(); + runtime.add(&jitCode, &code); } -void CompiledExpression::generateSingleArgCall(X86Compiler& c, X86XmmVar& dest, X86XmmVar& arg, double (*function)(double)) { - X86GpVar fn(c, kVarTypeIntPtr); +void CompiledExpression::generateSingleArgCall(X86Compiler& c, X86Xmm& dest, X86Xmm& arg, double (*function)(double)) { + X86Gp fn = c.newIntPtr(); c.mov(fn, imm_ptr((void*) function)); - X86CallNode* call = c.call(fn, kFuncConvHost, FuncBuilder1()); + CCFuncCall* call = c.call(fn, FuncSignature1()); call->setArg(0, arg); call->setRet(0, dest); } + +void CompiledExpression::generateTwoArgCall(X86Compiler& c, X86Xmm& dest, X86Xmm& arg1, X86Xmm& arg2, double (*function)(double, double)) { + X86Gp fn = c.newIntPtr(); + c.mov(fn, imm_ptr((void*) function)); + CCFuncCall* call = c.call(fn, FuncSignature2()); + call->setArg(0, arg1); + call->setArg(1, arg2); + call->setRet(0, dest); +} #endif diff --git a/lib/colvars/lepton/src/ExpressionProgram.cpp b/lib/colvars/lepton/src/ExpressionProgram.cpp index 65d3f0c79a..bbbae8533f 100644 --- a/lib/colvars/lepton/src/ExpressionProgram.cpp +++ b/lib/colvars/lepton/src/ExpressionProgram.cpp @@ -6,7 +6,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2009-2013 Stanford University and the Authors. * + * Portions copyright (c) 2009-2018 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -84,6 +84,11 @@ const Operation& ExpressionProgram::getOperation(int index) const { return *operations[index]; } +void ExpressionProgram::setOperation(int index, Operation* operation) { + delete operations[index]; + operations[index] = operation; +} + int ExpressionProgram::getStackSize() const { return stackSize; } diff --git a/lib/colvars/lepton/src/MSVC_erfc.h b/lib/colvars/lepton/src/MSVC_erfc.h index eadb20fdf8..c30a8ce542 100644 --- a/lib/colvars/lepton/src/MSVC_erfc.h +++ b/lib/colvars/lepton/src/MSVC_erfc.h @@ -3,15 +3,15 @@ /* * Up to version 11 (VC++ 2012), Microsoft does not support the - * standard C99 erf() and erfc() functions so we have to fake them here. + * standard C99 erf() and erfc() functions so we have to fake them here. * These were added in version 12 (VC++ 2013), which sets _MSC_VER=1800 * (VC11 has _MSC_VER=1700). */ -#if defined(_MSC_VER) +#if defined(_MSC_VER) #define M_PI 3.14159265358979323846264338327950288 -#if _MSC_VER <= 1700 // 1700 is VC11, 1800 is VC12 +#if _MSC_VER <= 1700 // 1700 is VC11, 1800 is VC12 /*************************** * erf.cpp * author: Steve Strand diff --git a/lib/colvars/lepton/src/Operation.cpp b/lib/colvars/lepton/src/Operation.cpp index 693dea2ede..78741c4814 100644 --- a/lib/colvars/lepton/src/Operation.cpp +++ b/lib/colvars/lepton/src/Operation.cpp @@ -7,7 +7,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2009-2015 Stanford University and the Authors. * + * Portions copyright (c) 2009-2019 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -202,6 +202,16 @@ ExpressionTreeNode Operation::Atan::differentiate(const std::vector& children, const std::vector& childDerivs, const std::string& variable) const { + return ExpressionTreeNode(new Operation::Divide(), + ExpressionTreeNode(new Operation::Subtract(), + ExpressionTreeNode(new Operation::Multiply(), children[1], childDerivs[0]), + ExpressionTreeNode(new Operation::Multiply(), children[0], childDerivs[1])), + ExpressionTreeNode(new Operation::Add(), + ExpressionTreeNode(new Operation::Square(), children[0]), + ExpressionTreeNode(new Operation::Square(), children[1]))); +} + ExpressionTreeNode Operation::Sinh::differentiate(const std::vector& children, const std::vector& childDerivs, const std::string& variable) const { return ExpressionTreeNode(new Operation::Multiply(), ExpressionTreeNode(new Operation::Cosh(), diff --git a/lib/colvars/lepton/src/ParsedExpression.cpp b/lib/colvars/lepton/src/ParsedExpression.cpp index 6effd06007..fd3b091d3c 100644 --- a/lib/colvars/lepton/src/ParsedExpression.cpp +++ b/lib/colvars/lepton/src/ParsedExpression.cpp @@ -271,6 +271,16 @@ ExpressionTreeNode ParsedExpression::substituteSimplerExpression(const Expressio return ExpressionTreeNode(new Operation::MultiplyConstant(-dynamic_cast(&node.getOperation())->getValue()), children[0].getChildren()[0]); break; } + case Operation::SQRT: + { + if (children[0].getOperation().getId() == Operation::SQUARE) // sqrt(square(x)) = abs(x) + return ExpressionTreeNode(new Operation::Abs(), children[0].getChildren()[0]); + } + case Operation::SQUARE: + { + if (children[0].getOperation().getId() == Operation::SQRT) // square(sqrt(x)) = x + return children[0].getChildren()[0]; + } default: { // If operation ID is not one of the above, diff --git a/lib/colvars/lepton/src/Parser.cpp b/lib/colvars/lepton/src/Parser.cpp index 6b19d7370d..e284add258 100644 --- a/lib/colvars/lepton/src/Parser.cpp +++ b/lib/colvars/lepton/src/Parser.cpp @@ -6,7 +6,7 @@ * Biological Structures at Stanford, funded under the NIH Roadmap for * * Medical Research, grant U54 GM072970. See https://simtk.org. * * * - * Portions copyright (c) 2009-2015 Stanford University and the Authors. * + * Portions copyright (c) 2009-2019 Stanford University and the Authors. * * Authors: Peter Eastman * * Contributors: * * * @@ -66,7 +66,7 @@ private: string Parser::trim(const string& expression) { // Remove leading and trailing spaces. - + int start, end; for (start = 0; start < (int) expression.size() && isspace(expression[start]); start++) ; @@ -313,6 +313,7 @@ Operation* Parser::getFunctionOperation(const std::string& name, const mapunit_style); + } + if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); + + gzprintf(gzFp,"ITEM: TIMESTEP\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); + gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); if (domain->triclinic == 0) { - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); gzprintf(gzFp,"%g %g\n",boxxlo,boxxhi); gzprintf(gzFp,"%g %g\n",boxylo,boxyhi); gzprintf(gzFp,"%g %g\n",boxzlo,boxzhi); - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } else { - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); gzprintf(gzFp,"%g %g %g\n",boxxlo,boxxhi,boxxy); gzprintf(gzFp,"%g %g %g\n",boxylo,boxyhi,boxxz); gzprintf(gzFp,"%g %g %g\n",boxzlo,boxzhi,boxyz); - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } + gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } } diff --git a/src/COMPRESS/dump_custom_gz.cpp b/src/COMPRESS/dump_custom_gz.cpp index 9c30f4742f..58ce98ad06 100644 --- a/src/COMPRESS/dump_custom_gz.cpp +++ b/src/COMPRESS/dump_custom_gz.cpp @@ -108,27 +108,28 @@ void DumpCustomGZ::openfile() void DumpCustomGZ::write_header(bigint ndump) { if ((multiproc) || (!multiproc && me == 0)) { + if (unit_flag && !unit_count) { + ++unit_count; + gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); + + gzprintf(gzFp,"ITEM: TIMESTEP\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); + gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); if (domain->triclinic == 0) { - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); gzprintf(gzFp,"%-1.16g %-1.16g\n",boxxlo,boxxhi); gzprintf(gzFp,"%-1.16g %-1.16g\n",boxylo,boxyhi); gzprintf(gzFp,"%-1.16g %-1.16g\n",boxzlo,boxzhi); - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } else { - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxxlo,boxxhi,boxxy); gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxylo,boxyhi,boxxz); gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxzlo,boxzhi,boxyz); - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } + gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); } } diff --git a/src/COMPRESS/dump_local_gz.cpp b/src/COMPRESS/dump_local_gz.cpp new file mode 100644 index 0000000000..c27c795f75 --- /dev/null +++ b/src/COMPRESS/dump_local_gz.cpp @@ -0,0 +1,173 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include "dump_local_gz.h" +#include "domain.h" +#include "error.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; + +DumpLocalGZ::DumpLocalGZ(LAMMPS *lmp, int narg, char **arg) : + DumpLocal(lmp, narg, arg) +{ + gzFp = NULL; + + if (!compressed) + error->all(FLERR,"Dump local/gz only writes compressed files"); +} + + +/* ---------------------------------------------------------------------- */ + +DumpLocalGZ::~DumpLocalGZ() +{ + if (gzFp) gzclose(gzFp); + gzFp = NULL; + fp = NULL; +} + + +/* ---------------------------------------------------------------------- + generic opening of a dump file + ASCII or binary or gzipped + some derived classes override this function +------------------------------------------------------------------------- */ + +void DumpLocalGZ::openfile() +{ + // single file, already opened, so just return + + if (singlefile_opened) return; + if (multifile == 0) singlefile_opened = 1; + + // if one file per timestep, replace '*' with current timestep + + char *filecurrent = filename; + if (multiproc) filecurrent = multiname; + + if (multifile) { + char *filestar = filecurrent; + filecurrent = new char[strlen(filestar) + 16]; + char *ptr = strchr(filestar,'*'); + *ptr = '\0'; + if (padflag == 0) + sprintf(filecurrent,"%s" BIGINT_FORMAT "%s", + filestar,update->ntimestep,ptr+1); + else { + char bif[8],pad[16]; + strcpy(bif,BIGINT_FORMAT); + sprintf(pad,"%%s%%0%d%s%%s",padflag,&bif[1]); + sprintf(filecurrent,pad,filestar,update->ntimestep,ptr+1); + } + *ptr = '*'; + if (maxfiles > 0) { + if (numfiles < maxfiles) { + nameslist[numfiles] = new char[strlen(filecurrent)+1]; + strcpy(nameslist[numfiles],filecurrent); + ++numfiles; + } else { + remove(nameslist[fileidx]); + delete[] nameslist[fileidx]; + nameslist[fileidx] = new char[strlen(filecurrent)+1]; + strcpy(nameslist[fileidx],filecurrent); + fileidx = (fileidx + 1) % maxfiles; + } + } + } + + // each proc with filewriter = 1 opens a file + + if (filewriter) { + if (append_flag) { + gzFp = gzopen(filecurrent,"ab9"); + } else { + gzFp = gzopen(filecurrent,"wb9"); + } + + if (gzFp == NULL) error->one(FLERR,"Cannot open dump file"); + } else gzFp = NULL; + + // delete string with timestep replaced + + if (multifile) delete [] filecurrent; +} + +void DumpLocalGZ::write_header(bigint ndump) +{ + if ((multiproc) || (!multiproc && me == 0)) { + if (unit_flag && !unit_count) { + ++unit_count; + gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); + + gzprintf(gzFp,"ITEM: TIMESTEP\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); + gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); + gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); + if (domain->triclinic == 0) { + gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); + gzprintf(gzFp,"%-1.16g %-1.16g\n",boxxlo,boxxhi); + gzprintf(gzFp,"%-1.16g %-1.16g\n",boxylo,boxyhi); + gzprintf(gzFp,"%-1.16g %-1.16g\n",boxzlo,boxzhi); + } else { + gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); + gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxxlo,boxxhi,boxxy); + gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxylo,boxyhi,boxxz); + gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxzlo,boxzhi,boxyz); + } + gzprintf(gzFp,"ITEM: %s %s\n",label,columns); + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpLocalGZ::write_data(int n, double *mybuf) +{ + if (buffer_flag == 1) { + gzwrite(gzFp,mybuf,sizeof(char)*n); + + } else { + int i,j; + int m = 0; + for (i = 0; i < n; i++) { + for (j = 0; j < size_one; j++) { + if (vtype[j] == INT) + gzprintf(gzFp,vformat[j],static_cast (mybuf[m])); + else gzprintf(gzFp,vformat[j],mybuf[m]); + m++; + } + gzprintf(gzFp,"\n"); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void DumpLocalGZ::write() +{ + DumpLocal::write(); + if (filewriter) { + if (multifile) { + gzclose(gzFp); + gzFp = NULL; + } else { + if (flush_flag) + gzflush(gzFp,Z_SYNC_FLUSH); + } + } +} + diff --git a/src/COMPRESS/dump_local_gz.h b/src/COMPRESS/dump_local_gz.h new file mode 100644 index 0000000000..cc788863de --- /dev/null +++ b/src/COMPRESS/dump_local_gz.h @@ -0,0 +1,57 @@ +/* -*- 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 DUMP_CLASS + +DumpStyle(local/gz,DumpLocalGZ) + +#else + +#ifndef LMP_DUMP_LOCAL_GZ_H +#define LMP_DUMP_LOCAL_GZ_H + +#include "dump_local.h" +#include + +namespace LAMMPS_NS { + +class DumpLocalGZ : public DumpLocal { + public: + DumpLocalGZ(class LAMMPS *, int, char **); + virtual ~DumpLocalGZ(); + + protected: + gzFile gzFp; // file pointer for the compressed output stream + + virtual void openfile(); + virtual void write_header(bigint); + virtual void write_data(int, double *); + virtual void write(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Dump local/gz only writes compressed files + +The dump local/gz output file name must have a .gz suffix. + +E: Cannot open dump file + +Self-explanatory. + +*/ diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index b87e64a456..54f6b77d2f 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -305,7 +305,8 @@ void PairGranular::compute(int eflag, int vflag) delta = radsum - r; dR = delta*Reff; - if (normal_model[itype][jtype] == JKR) { + + if (normal_model[itype][jtype] == JKR) { touch[jj] = 1; R2=Reff*Reff; coh = normal_coeffs[itype][jtype][3]; @@ -391,6 +392,7 @@ void PairGranular::compute(int eflag, int vflag) } else { Fncrit = fabs(Fntot); } + Fscrit = tangential_coeffs[itype][jtype][2] * Fncrit; //------------------------------ // tangential forces @@ -446,7 +448,6 @@ void PairGranular::compute(int eflag, int vflag) fs3 = -k_tangential*history[2] - damp_tangential*vtr3; // rescale frictional displacements and forces if needed - Fscrit = tangential_coeffs[itype][jtype][2] * Fncrit; fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3); if (fs > Fscrit) { shrmag = sqrt(history[0]*history[0] + history[1]*history[1] + @@ -464,8 +465,8 @@ void PairGranular::compute(int eflag, int vflag) } else fs1 = fs2 = fs3 = 0.0; } } else { // classic pair gran/hooke (no history) - fs = meff*damp_tangential*vrel; - if (vrel != 0.0) Ft = MIN(Fne,fs) / vrel; + fs = damp_tangential*vrel; + if (vrel != 0.0) Ft = MIN(Fscrit,fs) / vrel; else Ft = 0.0; fs1 = -Ft*vtr1; fs2 = -Ft*vtr2; @@ -635,7 +636,7 @@ void PairGranular::compute(int eflag, int vflag) torque[j][2] -= torroll3; } } - if (evflag) ev_tally_xyz(i,j,nlocal,0, + if (evflag) ev_tally_xyz(i,j,nlocal,force->newton_pair, 0.0,0.0,fx,fy,fz,delx,dely,delz); } } @@ -1374,22 +1375,6 @@ double PairGranular::single(int i, int j, int itype, int jtype, vn2 = ny*vnnr; vn3 = nz*vnnr; - double *rmass = atom->rmass; - int *mask = atom->mask; - mi = rmass[i]; - mj = rmass[j]; - if (fix_rigid) { - if (mass_rigid[i] > 0.0) mi = mass_rigid[i]; - if (mass_rigid[j] > 0.0) mj = mass_rigid[j]; - } - - meff = mi*mj / (mi+mj); - if (mask[i] & freeze_group_bit) meff = mj; - if (mask[j] & freeze_group_bit) meff = mi; - - delta = radsum - r; - dR = delta*Reff; - // tangential component vt1 = vr1 - vn1; @@ -1407,6 +1392,9 @@ double PairGranular::single(int i, int j, int itype, int jtype, // if I or J part of rigid body, use body mass // if I or J is frozen, meff is other particle + double *rmass = atom->rmass; + int *mask = atom->mask; + mi = rmass[i]; mj = rmass[j]; if (fix_rigid) { @@ -1451,11 +1439,13 @@ double PairGranular::single(int i, int j, int itype, int jtype, } if (damping_model[itype][jtype] == VELOCITY) { - damp_normal = normal_coeffs[itype][jtype][1]; + damp_normal = 1; + } else if (damping_model[itype][jtype] == MASS_VELOCITY) { + damp_normal = meff; } else if (damping_model[itype][jtype] == VISCOELASTIC) { - damp_normal = normal_coeffs[itype][jtype][1]*a*meff; + damp_normal = a*meff; } else if (damping_model[itype][jtype] == TSUJI) { - damp_normal = normal_coeffs[itype][jtype][1]*sqrt(meff*knfac); + damp_normal = sqrt(meff*knfac); } damp_normal_prefactor = normal_coeffs[itype][jtype][1]*damp_normal; @@ -1506,6 +1496,7 @@ double PairGranular::single(int i, int j, int itype, int jtype, } else { Fncrit = fabs(Fntot); } + Fscrit = tangential_coeffs[itype][jtype][2] * Fncrit; //------------------------------ // tangential forces @@ -1518,13 +1509,6 @@ double PairGranular::single(int i, int j, int itype, int jtype, k_tangential *= a; } else if (tangential_model[itype][jtype] == TANGENTIAL_MINDLIN_RESCALE) { k_tangential *= a; - // on unloading, rescale the shear displacements - if (a < history[3]) { - double factor = a/history[3]; - history[0] *= factor; - history[1] *= factor; - history[2] *= factor; - } } shrmag = sqrt(history[0]*history[0] + history[1]*history[1] + @@ -1535,35 +1519,34 @@ double PairGranular::single(int i, int j, int itype, int jtype, fs2 = -k_tangential*history[1] - damp_tangential*vtr2; fs3 = -k_tangential*history[2] - damp_tangential*vtr3; - // rescale frictional displacements and forces if needed - Fscrit = tangential_coeffs[itype][jtype][2] * Fncrit; + // rescale frictional forces if needed fs = sqrt(fs1*fs1 + fs2*fs2 + fs3*fs3); if (fs > Fscrit) { if (shrmag != 0.0) { - history[0] = -1.0/k_tangential*(Fscrit*fs1/fs + damp_tangential*vtr1); - history[1] = -1.0/k_tangential*(Fscrit*fs2/fs + damp_tangential*vtr2); - history[2] = -1.0/k_tangential*(Fscrit*fs3/fs + damp_tangential*vtr3); fs1 *= Fscrit/fs; fs2 *= Fscrit/fs; fs3 *= Fscrit/fs; - } else fs1 = fs2 = fs3 = 0.0; + fs *= Fscrit/fs; + } else fs1 = fs2 = fs3 = fs = 0.0; } // classic pair gran/hooke (no history) } else { - fs = meff*damp_tangential*vrel; - if (vrel != 0.0) Ft = MIN(Fne,fs) / vrel; + fs = damp_tangential*vrel; + if (vrel != 0.0) Ft = MIN(Fscrit,fs) / vrel; else Ft = 0.0; fs1 = -Ft*vtr1; fs2 = -Ft*vtr2; fs3 = -Ft*vtr3; + fs = Ft*vrel; } //**************************************** // rolling resistance //**************************************** - if (roll_model[itype][jtype] != ROLL_NONE) { + if ((roll_model[itype][jtype] != ROLL_NONE) + || (twist_model[itype][jtype] != TWIST_NONE)) { relrot1 = omega[i][0] - omega[j][0]; relrot2 = omega[i][1] - omega[j][1]; relrot3 = omega[i][2] - omega[j][2]; @@ -1601,7 +1584,8 @@ double PairGranular::single(int i, int j, int itype, int jtype, fr1 *= Frcrit/fr; fr2 *= Frcrit/fr; fr3 *= Frcrit/fr; - } else fr1 = fr2 = fr3 = 0.0; + fr *= Frcrit/fr; + } else fr1 = fr2 = fr3 = fr = 0.0; } } @@ -1628,9 +1612,13 @@ double PairGranular::single(int i, int j, int itype, int jtype, Mtcrit = mu_twist*Fncrit; // critical torque (eq 44) if (fabs(magtortwist) > Mtcrit) { magtortwist = -Mtcrit * signtwist; // eq 34 - } + } else magtortwist = 0.0; } - + + // set force and return no energy + + fforce = Fntot*rinv; + // set single_extra quantities svector[0] = fs1; diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index d935d994bd..43b444418a 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -740,19 +740,14 @@ void PairKIM::kim_init() kimerror = KIM_ComputeArguments_SetArgumentPointerInteger(pargs, KIM_COMPUTE_ARGUMENT_NAME_numberOfParticles, &lmps_local_tot_num_atoms); - if (KIM_SupportStatus_NotEqual(kim_model_support_for_energy, - KIM_SUPPORT_STATUS_notSupported)) - kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble(pargs, - KIM_COMPUTE_ARGUMENT_NAME_partialEnergy, - &(eng_vdwl)); + if (kimerror) error->all(FLERR,"Unable to set KIM argument pointer"); kimerror = KIM_ComputeArguments_SetCallbackPointer(pargs, KIM_COMPUTE_CALLBACK_NAME_GetNeighborList, KIM_LANGUAGE_NAME_cpp, reinterpret_cast(get_neigh), reinterpret_cast(this)); - - if (kimerror) error->all(FLERR,"Unable to register KIM pointers"); + if (kimerror) error->all(FLERR,"Unable to set KIM call back pointer"); } /* ---------------------------------------------------------------------- */ @@ -763,6 +758,26 @@ void PairKIM::set_argument_pointers() kimerror = KIM_ComputeArguments_SetArgumentPointerDouble( pargs, KIM_COMPUTE_ARGUMENT_NAME_coordinates, &(atom->x[0][0])); + // Set KIM pointer appropriately for Energy + if (KIM_SupportStatus_NotEqual(kim_model_support_for_energy, + KIM_SUPPORT_STATUS_notSupported)) + { + if (KIM_SupportStatus_Equal(kim_model_support_for_energy, + KIM_SUPPORT_STATUS_required) + || (eflag_global == 1)) + { + kimerror = kimerror || + KIM_ComputeArguments_SetArgumentPointerDouble( + pargs,KIM_COMPUTE_ARGUMENT_NAME_partialEnergy,&(eng_vdwl)); + } + else + { + kimerror = kimerror || + KIM_ComputeArguments_SetArgumentPointerDouble( + pargs,KIM_COMPUTE_ARGUMENT_NAME_partialEnergy, + reinterpret_cast(NULL)); + } + } // Set KIM pointer appropriately for particalEnergy if (KIM_SupportStatus_Equal(kim_model_support_for_particleEnergy, KIM_SUPPORT_STATUS_required) diff --git a/src/KOKKOS/fix_langevin_kokkos.cpp b/src/KOKKOS/fix_langevin_kokkos.cpp index 651f790a25..8818d60a11 100644 --- a/src/KOKKOS/fix_langevin_kokkos.cpp +++ b/src/KOKKOS/fix_langevin_kokkos.cpp @@ -61,7 +61,6 @@ FixLangevinKokkos::FixLangevinKokkos(LAMMPS *lmp, int narg, char **a k_ratio.template modify(); if(gjfflag){ - nvalues = 3; grow_arrays(atomKK->nmax); atom->add_callback(0); // initialize franprev to zero @@ -69,8 +68,12 @@ FixLangevinKokkos::FixLangevinKokkos(LAMMPS *lmp, int narg, char **a franprev[i][0] = 0.0; franprev[i][1] = 0.0; franprev[i][2] = 0.0; + lv[i][0] = 0.0; + lv[i][1] = 0.0; + lv[i][2] = 0.0; } k_franprev.template modify(); + k_lv.template modify(); } if(zeroflag){ k_fsumall = tdual_double_1d_3n("langevin:fsumall"); @@ -94,6 +97,7 @@ FixLangevinKokkos::~FixLangevinKokkos() memoryKK->destroy_kokkos(k_ratio,ratio); memoryKK->destroy_kokkos(k_flangevin,flangevin); if(gjfflag) memoryKK->destroy_kokkos(k_franprev,franprev); + if(gjfflag) memoryKK->destroy_kokkos(k_lv,lv); memoryKK->destroy_kokkos(k_tforce,tforce); } @@ -107,6 +111,10 @@ void FixLangevinKokkos::init() error->all(FLERR,"Fix langevin omega is not yet implemented with kokkos"); if(ascale) error->all(FLERR,"Fix langevin angmom is not yet implemented with kokkos"); + if(gjfflag && tbiasflag) + error->all(FLERR,"Fix langevin gjf + tbias is not yet implemented with kokkos"); + if(gjfflag && tbiasflag) + error->warning(FLERR,"Fix langevin gjf + kokkos is not implemented with random gaussians"); // prefactors are modified in the init k_gfactor1.template modify(); @@ -121,6 +129,40 @@ void FixLangevinKokkos::grow_arrays(int nmax) memoryKK->grow_kokkos(k_franprev,franprev,nmax,3,"langevin:franprev"); d_franprev = k_franprev.template view(); h_franprev = k_franprev.template view(); + memoryKK->grow_kokkos(k_lv,lv,nmax,3,"langevin:lv"); + d_lv = k_lv.template view(); + h_lv = k_lv.template view(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixLangevinKokkos::initial_integrate(int vflag) +{ + atomKK->sync(execution_space,datamask_read); + atomKK->modified(execution_space,datamask_modify); + + v = atomKK->k_v.view(); + f = atomKK->k_f.view(); + int nlocal = atomKK->nlocal; + if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst; + + FixLangevinKokkosInitialIntegrateFunctor functor(this); + Kokkos::parallel_for(nlocal,functor); +} + +template +KOKKOS_INLINE_FUNCTION +void FixLangevinKokkos::initial_integrate_item(int i) const +{ + if (mask[i] & groupbit) { + f(i,0) /= gjfa; + f(i,1) /= gjfa; + f(i,2) /= gjfa; + v(i,0) = d_lv(i,0); + v(i,1) = d_lv(i,1); + v(i,2) = d_lv(i,2); + } } /* ---------------------------------------------------------------------- */ @@ -140,6 +182,7 @@ void FixLangevinKokkos::post_force(int vflag) k_gfactor2.template sync(); k_ratio.template sync(); if(gjfflag) k_franprev.template sync(); + if(gjfflag) k_lv.template sync(); boltz = force->boltz; dt = update->dt; @@ -162,7 +205,7 @@ void FixLangevinKokkos::post_force(int vflag) } // reallocate flangevin if necessary - if (tallyflag) { + if (tallyflag || osflag) { if (nlocal > maxatom1) { memoryKK->destroy_kokkos(k_flangevin,flangevin); maxatom1 = atomKK->nmax; @@ -177,7 +220,7 @@ void FixLangevinKokkos::post_force(int vflag) atomKK->sync(temperature->execution_space,temperature->datamask_read); temperature->compute_scalar(); temperature->remove_bias_all(); // modifies velocities - // if temeprature compute is kokkosized host-devcie comm won't be needed + // if temeprature compute is kokkosized host-device comm won't be needed atomKK->modified(temperature->execution_space,temperature->datamask_modify); atomKK->sync(execution_space,temperature->datamask_modify); } @@ -186,7 +229,7 @@ void FixLangevinKokkos::post_force(int vflag) FSUM s_fsum; if (tstyle == ATOM) if (gjfflag) - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass.data()) if (zeroflag) { @@ -257,7 +300,7 @@ void FixLangevinKokkos::post_force(int vflag) Kokkos::parallel_for(nlocal,post_functor); } else - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass.data()) if (zeroflag) { @@ -329,7 +372,7 @@ void FixLangevinKokkos::post_force(int vflag) } else if (gjfflag) - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass.data()) if (zeroflag) { @@ -400,7 +443,7 @@ void FixLangevinKokkos::post_force(int vflag) Kokkos::parallel_for(nlocal,post_functor); } else - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass.data()) if (zeroflag) { @@ -481,7 +524,8 @@ void FixLangevinKokkos::post_force(int vflag) // set modify flags for the views modified in post_force functor if (gjfflag) k_franprev.template modify(); - if (tallyflag) k_flangevin.template modify(); + if (gjfflag) k_lv.template modify(); + if (tallyflag || osflag) k_flangevin.template modify(); // set total force to zero if (zeroflag) { @@ -550,6 +594,10 @@ FSUM FixLangevinKokkos::post_force_item(int i) const } if (Tp_GJF) { + d_lv(i,0) = gjfsib*v(i,0); + d_lv(i,1) = gjfsib*v(i,1); + d_lv(i,2) = gjfsib*v(i,2); + fswap = 0.5*(fran[0]+d_franprev(i,0)); d_franprev(i,0) = fran[0]; fran[0] = fswap; @@ -560,15 +608,15 @@ FSUM FixLangevinKokkos::post_force_item(int i) const d_franprev(i,2) = fran[2]; fran[2] = fswap; - fdrag[0] *= gjffac; - fdrag[1] *= gjffac; - fdrag[2] *= gjffac; - fran[0] *= gjffac; - fran[1] *= gjffac; - fran[2] *= gjffac; - f(i,0) *= gjffac; - f(i,1) *= gjffac; - f(i,2) *= gjffac; + fdrag[0] *= gjfa; + fdrag[1] *= gjfa; + fdrag[2] *= gjfa; + fran[0] *= gjfa; + fran[1] *= gjfa; + fran[2] *= gjfa; + f(i,0) *= gjfa; + f(i,1) *= gjfa; + f(i,2) *= gjfa; } f(i,0) += fdrag[0] + fran[0]; @@ -576,6 +624,17 @@ FSUM FixLangevinKokkos::post_force_item(int i) const f(i,2) += fdrag[2] + fran[2]; if (Tp_TALLY) { + if (Tp_GJF){ + fdrag[0] = gamma1*d_lv(i,0)/gjfsib/gjfsib; + fdrag[1] = gamma1*d_lv(i,1)/gjfsib/gjfsib; + fdrag[2] = gamma1*d_lv(i,2)/gjfsib/gjfsib; + fswap = (2*fran[0]/gjfa - d_franprev(i,0))/gjfsib; + fran[0] = fswap; + fswap = (2*fran[1]/gjfa - d_franprev(i,1))/gjfsib; + fran[1] = fswap; + fswap = (2*fran[2]/gjfa - d_franprev(i,2))/gjfsib; + fran[2] = fswap; + } d_flangevin(i,0) = fdrag[0] + fran[0]; d_flangevin(i,1) = fdrag[1] + fran[1]; d_flangevin(i,2) = fdrag[2] + fran[2]; @@ -719,9 +778,10 @@ double FixLangevinKokkos::compute_energy_item(int i) const template void FixLangevinKokkos::end_of_step() { - if (!tallyflag) return; + if (!tallyflag && !gjfflag) return; v = atomKK->k_v.template view(); + f = atomKK->k_f.template view(); mask = atomKK->k_mask.template view(); atomKK->sync(execution_space,V_MASK | MASK_MASK); @@ -733,9 +793,81 @@ void FixLangevinKokkos::end_of_step() FixLangevinKokkosTallyEnergyFunctor tally_functor(this); Kokkos::parallel_reduce(nlocal,tally_functor,energy_onestep); + if (gjfflag){ + if (rmass.data()) { + FixLangevinKokkosEndOfStepFunctor functor(this); + Kokkos::parallel_for(nlocal,functor); + } else { + mass = atomKK->k_mass.view(); + FixLangevinKokkosEndOfStepFunctor functor(this); + Kokkos::parallel_for(nlocal,functor); + } + } + energy += energy_onestep*update->dt; } +template +KOKKOS_INLINE_FUNCTION +void FixLangevinKokkos::end_of_step_item(int i) const { + double tmp[3]; + if (mask[i] & groupbit) { + const double dtfm = force->ftm2v * 0.5 * dt / mass[type[i]]; + tmp[0] = v(i,0); + tmp[1] = v(i,1); + tmp[2] = v(i,2); + if (!osflag){ + v(i,0) = d_lv(i,0); + v(i,1) = d_lv(i,1); + v(i,2) = d_lv(i,2); + } else { + v(i,0) = 0.5 * gjfsib * gjfsib * (v(i,0) + dtfm * f(i,0) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,0) - d_franprev(i,0)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,0); + v(i,1) = 0.5 * gjfsib * gjfsib * (v(i,1) + dtfm * f(i,1) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,0) - d_franprev(i,1)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,1); + v(i,2) = 0.5 * gjfsib * gjfsib * (v(i,2) + dtfm * f(i,2) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,0) - d_franprev(i,2)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,2); + } + d_lv(i,0) = tmp[0]; + d_lv(i,1) = tmp[1]; + d_lv(i,2) = tmp[2]; + } +} + +template +KOKKOS_INLINE_FUNCTION +void FixLangevinKokkos::end_of_step_rmass_item(int i) const +{ + double tmp[3]; + if (mask[i] & groupbit) { + const double dtfm = force->ftm2v * 0.5 * dt / rmass[i]; + tmp[0] = v(i,0); + tmp[1] = v(i,1); + tmp[2] = v(i,2); + if (!osflag){ + v(i,0) = d_lv(i,0); + v(i,1) = d_lv(i,1); + v(i,2) = d_lv(i,2); + } else { + v(i,0) = 0.5 * gjfsib * gjfsib * (v(i,0) + dtfm * f(i,0) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,0) - d_franprev(i,0)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,0); + v(i,1) = 0.5 * gjfsib * gjfsib * (v(i,1) + dtfm * f(i,1) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,1) - d_franprev(i,1)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,1); + v(i,2) = 0.5 * gjfsib * gjfsib * (v(i,2) + dtfm * f(i,2) / gjfa) + + dtfm * 0.5 * (gjfsib * d_flangevin(i,2) - d_franprev(i,2)) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * d_lv(i,2); + } + d_lv(i,0) = tmp[0]; + d_lv(i,1) = tmp[1]; + d_lv(i,2) = tmp[2]; + } +} + /* ---------------------------------------------------------------------- copy values within local atom-based array ------------------------------------------------------------------------- */ @@ -743,10 +875,15 @@ void FixLangevinKokkos::end_of_step() template void FixLangevinKokkos::copy_arrays(int i, int j, int delflag) { - for (int m = 0; m < nvalues; m++) - h_franprev(j,m) = h_franprev(i,m); + h_franprev(j,0) = h_franprev(i,0); + h_franprev(j,1) = h_franprev(i,1); + h_franprev(j,2) = h_franprev(i,2); + h_lv(j,0) = h_lv(i,0); + h_lv(j,1) = h_lv(i,1); + h_lv(j,2) = h_lv(i,2); k_franprev.template modify(); + k_lv.template modify(); } @@ -765,6 +902,7 @@ void FixLangevinKokkos::cleanup_copy() tforce = NULL; gjfflag = 0; franprev = NULL; + lv = NULL; id = style = NULL; vatom = NULL; } diff --git a/src/KOKKOS/fix_langevin_kokkos.h b/src/KOKKOS/fix_langevin_kokkos.h index 140fea81d6..a6d467dfd7 100644 --- a/src/KOKKOS/fix_langevin_kokkos.h +++ b/src/KOKKOS/fix_langevin_kokkos.h @@ -56,6 +56,9 @@ namespace LAMMPS_NS { template class FixLangevinKokkos; + template + class FixLangevinKokkosInitialIntegrateFunctor; + template class FixLangevinKokkosPostForceFunctor; @@ -72,6 +75,7 @@ namespace LAMMPS_NS { void cleanup_copy(); void init(); + void initial_integrate(int); void post_force(int); void reset_dt(); void grow_arrays(int); @@ -79,6 +83,12 @@ namespace LAMMPS_NS { double compute_scalar(); void end_of_step(); + KOKKOS_INLINE_FUNCTION + void initial_integrate_item(int) const; + + KOKKOS_INLINE_FUNCTION + void initial_integrate_rmass_item(int) const; + template KOKKOS_INLINE_FUNCTION @@ -90,14 +100,25 @@ namespace LAMMPS_NS { KOKKOS_INLINE_FUNCTION double compute_energy_item(int) const; + KOKKOS_INLINE_FUNCTION + void end_of_step_item(int) const; + + KOKKOS_INLINE_FUNCTION + void end_of_step_rmass_item(int) const; + private: class CommKokkos *commKK; typename ArrayTypes::t_float_1d rmass; + typename ArrayTypes::t_float_1d mass; typename ArrayTypes::tdual_double_2d k_franprev; typename ArrayTypes::t_double_2d d_franprev; HAT::t_double_2d h_franprev; + typename ArrayTypes::tdual_double_2d k_lv; + typename ArrayTypes::t_double_2d d_lv; + HAT::t_double_2d h_lv; + typename ArrayTypes::tdual_double_2d k_flangevin; typename ArrayTypes::t_double_2d d_flangevin; HAT::t_double_2d h_flangevin; @@ -130,6 +151,21 @@ namespace LAMMPS_NS { }; + template + struct FixLangevinKokkosInitialIntegrateFunctor { + typedef DeviceType device_type ; + FixLangevinKokkos c; + + FixLangevinKokkosInitialIntegrateFunctor(FixLangevinKokkos* c_ptr): + c(*c_ptr) {c.cleanup_copy();}; + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { + c.initial_integrate_item(i); + } + }; + + template struct FixLangevinKokkosPostForceFunctor { @@ -207,6 +243,21 @@ namespace LAMMPS_NS { update += source; } }; + + template + struct FixLangevinKokkosEndOfStepFunctor { + typedef DeviceType device_type ; + FixLangevinKokkos c; + + FixLangevinKokkosEndOfStepFunctor(FixLangevinKokkos* c_ptr): + c(*c_ptr) {c.cleanup_copy();} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { + if (RMass) c.end_of_step_rmass_item(i); + else c.end_of_step_item(i); + } + }; } #endif @@ -231,4 +282,12 @@ E: Fix langevin variable returned negative temperature Self-explanatory. +E: Fix langevin gjf with tbias is not yet implemented with kokkos + +This option is not yet available. + +W: Fix langevin gjf using random gaussians is not implemented with kokkos + +This will most likely cause errors in kinetic fluctuations. + */ diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index 2a3994f584..7650bf3350 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -443,7 +443,7 @@ struct NPairKokkosBuildFunctorSize { const size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -467,7 +467,7 @@ struct NPairKokkosBuildFunctorSize { const size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { diff --git a/src/KOKKOS/pair_gran_hooke_history_kokkos.h b/src/KOKKOS/pair_gran_hooke_history_kokkos.h index 8d1778e091..e40353d970 100644 --- a/src/KOKKOS/pair_gran_hooke_history_kokkos.h +++ b/src/KOKKOS/pair_gran_hooke_history_kokkos.h @@ -61,13 +61,13 @@ class PairGranHookeHistoryKokkos : public PairGranHookeHistory { template KOKKOS_INLINE_FUNCTION void ev_tally_xyz(EV_FLOAT &ev, int i, int j, - F_FLOAT fx, F_FLOAT fy, F_FLOAT fz, - X_FLOAT delx, X_FLOAT dely, X_FLOAT delz) const; + F_FLOAT fx, F_FLOAT fy, F_FLOAT fz, + X_FLOAT delx, X_FLOAT dely, X_FLOAT delz) const; template KOKKOS_INLINE_FUNCTION void ev_tally_xyz_atom(EV_FLOAT &ev, int i, int j, - F_FLOAT fx, F_FLOAT fy, F_FLOAT fz, - X_FLOAT delx, X_FLOAT dely, X_FLOAT delz) const; + F_FLOAT fx, F_FLOAT fy, F_FLOAT fz, + X_FLOAT delx, X_FLOAT dely, X_FLOAT delz) const; protected: typename AT::t_x_array_randomread x; diff --git a/src/KOKKOS/pair_snap_kokkos.h b/src/KOKKOS/pair_snap_kokkos.h index 2193e9ff24..8586c4bdab 100644 --- a/src/KOKKOS/pair_snap_kokkos.h +++ b/src/KOKKOS/pair_snap_kokkos.h @@ -39,6 +39,7 @@ struct TagPairSNAPPreUi{}; struct TagPairSNAPComputeUi{}; struct TagPairSNAPComputeZi{}; struct TagPairSNAPComputeBi{}; +struct TagPairSNAPZeroYi{}; struct TagPairSNAPComputeYi{}; struct TagPairSNAPComputeDuidrj{}; struct TagPairSNAPComputeDeidrj{}; @@ -73,19 +74,22 @@ public: void operator() (TagPairSNAPComputeNeigh,const typename Kokkos::TeamPolicy::member_type& team) const; KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAPPreUi,const typename Kokkos::TeamPolicy::member_type& team) const; + void operator() (TagPairSNAPPreUi,const int& ii) const; KOKKOS_INLINE_FUNCTION void operator() (TagPairSNAPComputeUi,const typename Kokkos::TeamPolicy::member_type& team) const; KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAPComputeZi,const typename Kokkos::TeamPolicy::member_type& team) const; + void operator() (TagPairSNAPComputeZi,const int& ii) const; KOKKOS_INLINE_FUNCTION void operator() (TagPairSNAPComputeBi,const typename Kokkos::TeamPolicy::member_type& team) const; KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAPComputeYi,const typename Kokkos::TeamPolicy::member_type& team) const; + void operator() (TagPairSNAPZeroYi,const int& ii) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagPairSNAPComputeYi,const int& ii) const; KOKKOS_INLINE_FUNCTION void operator() (TagPairSNAPComputeDuidrj,const typename Kokkos::TeamPolicy::member_type& team) const; diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index 95afcc5ec7..02c8554fa5 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -184,22 +184,12 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_reduce("PairSNAPKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(max_neighs)); int vector_length = 1; - int ui_vector_length = 1; int team_size = 1; - int yi_team_size = 1; int team_size_max = Kokkos::TeamPolicy::team_size_max(*this); #ifdef KOKKOS_ENABLE_CUDA team_size = 32;//max_neighs; if (team_size*vector_length > team_size_max) team_size = team_size_max/vector_length; - - yi_team_size = 256; - if (yi_team_size*vector_length > team_size_max) - yi_team_size = team_size_max/vector_length; - - ui_vector_length = 8; - if (team_size*ui_vector_length > team_size_max) - team_size = team_size_max/ui_vector_length; #endif if (beta_max < inum) { @@ -227,17 +217,21 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for("ComputeNeigh",policy_neigh,*this); //PreUi - typename Kokkos::TeamPolicy policy_preui(chunk_size,team_size,vector_length); + typename Kokkos::RangePolicy policy_preui(0,chunk_size); Kokkos::parallel_for("PreUi",policy_preui,*this); //ComputeUi - typename Kokkos::TeamPolicy policy_ui(((inum+team_size-1)/team_size)*max_neighs,team_size,ui_vector_length); + typename Kokkos::TeamPolicy policy_ui(((inum+team_size-1)/team_size)*max_neighs,team_size,vector_length); Kokkos::parallel_for("ComputeUi",policy_ui,*this); + //Ulisttot transpose + snaKK.transpose_ulisttot(); + //Compute bispectrum if (quadraticflag || eflag) { //ComputeZi - typename Kokkos::TeamPolicy policy_zi(chunk_size,team_size,vector_length); + int idxz_max = snaKK.idxz_max; + typename Kokkos::RangePolicy policy_zi(0,chunk_size*idxz_max); Kokkos::parallel_for("ComputeZi",policy_zi,*this); //ComputeBi @@ -250,7 +244,12 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) Kokkos::parallel_for("ComputeBeta",policy_beta,*this); //ComputeYi - typename Kokkos::TeamPolicy policy_yi(chunk_size,yi_team_size,vector_length); + typename Kokkos::RangePolicy policy_zero_yi(0,chunk_size); + Kokkos::parallel_for("ZeroYi",policy_zero_yi,*this); + + //ComputeYi + int idxz_max = snaKK.idxz_max; + typename Kokkos::RangePolicy policy_yi(0,chunk_size*idxz_max); Kokkos::parallel_for("ComputeYi",policy_yi,*this); //ComputeDuidrj @@ -504,10 +503,9 @@ void PairSNAPKokkos::operator() (TagPairSNAPComputeNeigh,const typen template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAPPreUi,const typename Kokkos::TeamPolicy::member_type& team) const { - int ii = team.league_rank(); +void PairSNAPKokkos::operator() (TagPairSNAPPreUi,const int& ii) const { SNAKokkos my_sna = snaKK; - my_sna.pre_ui(team,ii); + my_sna.pre_ui(ii); } template @@ -529,18 +527,23 @@ void PairSNAPKokkos::operator() (TagPairSNAPComputeUi,const typename template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAPComputeYi,const typename Kokkos::TeamPolicy::member_type& team) const { - int ii = team.league_rank(); +void PairSNAPKokkos::operator() (TagPairSNAPZeroYi,const int& ii) const { SNAKokkos my_sna = snaKK; - my_sna.compute_yi(team,ii,d_beta); + my_sna.zero_yi(ii); } template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAPComputeZi,const typename Kokkos::TeamPolicy::member_type& team) const { - int ii = team.league_rank(); +void PairSNAPKokkos::operator() (TagPairSNAPComputeYi,const int& ii) const { SNAKokkos my_sna = snaKK; - my_sna.compute_zi(team,ii); + my_sna.compute_yi(ii,d_beta); +} + +template +KOKKOS_INLINE_FUNCTION +void PairSNAPKokkos::operator() (TagPairSNAPComputeZi,const int& ii) const { + SNAKokkos my_sna = snaKK; + my_sna.compute_zi(ii); } template diff --git a/src/KOKKOS/sna_kokkos.h b/src/KOKKOS/sna_kokkos.h index 2dbfdcb47c..7aa154c3d5 100644 --- a/src/KOKKOS/sna_kokkos.h +++ b/src/KOKKOS/sna_kokkos.h @@ -26,15 +26,28 @@ namespace LAMMPS_NS { typedef double SNAreal; -typedef struct { SNAreal re, im; } SNAcomplex; -struct SNAKK_ZINDICES { - int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju; +//typedef struct { SNAreal re, im; } SNAcomplex; +struct alignas(2*sizeof(SNAreal)) SNAcomplex{ + SNAreal re, im; + + KOKKOS_INLINE_FUNCTION + SNAcomplex() : re(0),im(0) + {} + + KOKKOS_INLINE_FUNCTION + SNAcomplex(SNAreal real_in, SNAreal imag_in) + :re(real_in),im(imag_in) + {} }; -struct SNAKK_BINDICES { - int j1, j2, j; -}; +//struct SNAKK_ZINDICES { +// int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju; +//}; +// +//struct SNAKK_BINDICES { +// int j1, j2, j; +//}; template class SNAKokkos { @@ -53,12 +66,32 @@ public: typedef Kokkos::View t_sna_1c; typedef Kokkos::View > t_sna_1c_atomic; typedef Kokkos::View t_sna_2c; - typedef Kokkos::View t_sna_2c_cpu; + typedef Kokkos::View t_sna_2c_lr; typedef Kokkos::View t_sna_3c; typedef Kokkos::View t_sna_4c; typedef Kokkos::View t_sna_3c3; typedef Kokkos::View t_sna_5c; +// Helper class to get ulisttot_r + +template +class UlisttotHelper { +public: + inline + static void transpose(T1 &ulisttot_lr, const T2 &ulisttot) { + Kokkos::deep_copy(ulisttot_lr,ulisttot); + } +}; + +template +class UlisttotHelper { +public: + inline + static void transpose(T1 &ulisttot_lr, const T2 &ulisttot) { + ulisttot_lr = ulisttot; + } +}; + inline SNAKokkos() {}; KOKKOS_INLINE_FUNCTION @@ -80,17 +113,22 @@ inline int ncoeff; +inline + void transpose_ulisttot(); + // functions for bispectrum coefficients KOKKOS_INLINE_FUNCTION - void pre_ui(const typename Kokkos::TeamPolicy::member_type& team, int); // ForceSNAP + void pre_ui(const int&); // ForceSNAP KOKKOS_INLINE_FUNCTION void compute_ui(const typename Kokkos::TeamPolicy::member_type& team, int, int); // ForceSNAP KOKKOS_INLINE_FUNCTION void compute_ui_orig(const typename Kokkos::TeamPolicy::member_type& team, int, int); // ForceSNAP KOKKOS_INLINE_FUNCTION - void compute_zi(const typename Kokkos::TeamPolicy::member_type& team, int); // ForceSNAP + void compute_zi(const int&); // ForceSNAP KOKKOS_INLINE_FUNCTION - void compute_yi(const typename Kokkos::TeamPolicy::member_type& team, int, + void zero_yi(const int&); + KOKKOS_INLINE_FUNCTION + void compute_yi(int, const Kokkos::View &beta); // ForceSNAP KOKKOS_INLINE_FUNCTION void compute_bi(const typename Kokkos::TeamPolicy::member_type& team, int); // ForceSNAP @@ -129,23 +167,25 @@ inline int twojmax, diagonalstyle; t_sna_2d blist; - t_sna_2c_cpu ulisttot; + t_sna_2c ulisttot; + t_sna_2c_lr ulisttot_lr; t_sna_2c zlist; t_sna_3c ulist; - t_sna_2c ylist; + t_sna_2c_lr ylist; // derivatives of data t_sna_4c dulist; + int idxcg_max, idxu_max, idxz_max, idxb_max; + private: double rmin0, rfac0; //use indexlist instead of loops, constructor generates these // Same across all SNAKokkos - Kokkos::View idxz; - Kokkos::View idxb; - int idxcg_max, idxu_max, idxz_max, idxb_max; + Kokkos::View idxz; + Kokkos::View idxb; Kokkos::View idxcg_block; Kokkos::View idxu_block; Kokkos::View idxz_block; @@ -173,9 +213,9 @@ inline inline void init_rootpqarray(); // init() KOKKOS_INLINE_FUNCTION - void zero_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, int); // compute_ui + void zero_uarraytot(const int&); // compute_ui KOKKOS_INLINE_FUNCTION - void addself_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, int, double); // compute_ui + void addself_uarraytot(const int&, const double&); // compute_ui KOKKOS_INLINE_FUNCTION void add_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, int, int, double, double, double); // compute_ui diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h index 36765e9cd6..3e4ebc2e42 100644 --- a/src/KOKKOS/sna_kokkos_impl.h +++ b/src/KOKKOS/sna_kokkos_impl.h @@ -117,7 +117,7 @@ void SNAKokkos::build_indexlist() if (j >= j1) idxb_count++; idxb_max = idxb_count; - idxb = Kokkos::View("SNAKokkos::idxb",idxb_max); + idxb = Kokkos::View("SNAKokkos::idxb",idxb_max); auto h_idxb = Kokkos::create_mirror_view(idxb); idxb_count = 0; @@ -125,9 +125,9 @@ void SNAKokkos::build_indexlist() for(int j2 = 0; j2 <= j1; j2++) for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) if (j >= j1) { - h_idxb[idxb_count].j1 = j1; - h_idxb[idxb_count].j2 = j2; - h_idxb[idxb_count].j = j; + h_idxb(idxb_count,0) = j1; + h_idxb(idxb_count,1) = j2; + h_idxb(idxb_count,2) = j; idxb_count++; } Kokkos::deep_copy(idxb,h_idxb); @@ -160,7 +160,7 @@ void SNAKokkos::build_indexlist() idxz_count++; idxz_max = idxz_count; - idxz = Kokkos::View("SNAKokkos::idxz",idxz_max); + idxz = Kokkos::View("SNAKokkos::idxz",idxz_max); auto h_idxz = Kokkos::create_mirror_view(idxz); idxz_block = Kokkos::View("SNAKokkos::idxz_block", jdim,jdim,jdim); @@ -178,20 +178,20 @@ void SNAKokkos::build_indexlist() for (int mb = 0; 2*mb <= j; mb++) for (int ma = 0; ma <= j; ma++) { - h_idxz[idxz_count].j1 = j1; - h_idxz[idxz_count].j2 = j2; - h_idxz[idxz_count].j = j; - h_idxz[idxz_count].ma1min = MAX(0, (2 * ma - j - j2 + j1) / 2); - h_idxz[idxz_count].ma2max = (2 * ma - j - (2 * h_idxz[idxz_count].ma1min - j1) + j2) / 2; - h_idxz[idxz_count].na = MIN(j1, (2 * ma - j + j2 + j1) / 2) - h_idxz[idxz_count].ma1min + 1; - h_idxz[idxz_count].mb1min = MAX(0, (2 * mb - j - j2 + j1) / 2); - h_idxz[idxz_count].mb2max = (2 * mb - j - (2 * h_idxz[idxz_count].mb1min - j1) + j2) / 2; - h_idxz[idxz_count].nb = MIN(j1, (2 * mb - j + j2 + j1) / 2) - h_idxz[idxz_count].mb1min + 1; + h_idxz(idxz_count,0) = j1; + h_idxz(idxz_count,1) = j2; + h_idxz(idxz_count,2) = j; + h_idxz(idxz_count,3) = MAX(0, (2 * ma - j - j2 + j1) / 2); + h_idxz(idxz_count,4) = (2 * ma - j - (2 * h_idxz(idxz_count,3) - j1) + j2) / 2; + h_idxz(idxz_count,5) = MAX(0, (2 * mb - j - j2 + j1) / 2); + h_idxz(idxz_count,6) = (2 * mb - j - (2 * h_idxz(idxz_count,5) - j1) + j2) / 2; + h_idxz(idxz_count,7) = MIN(j1, (2 * ma - j + j2 + j1) / 2) - h_idxz(idxz_count,3) + 1; + h_idxz(idxz_count,8) = MIN(j1, (2 * mb - j + j2 + j1) / 2) - h_idxz(idxz_count,5) + 1; // apply to z(j1,j2,j,ma,mb) to unique element of y(j) const int jju = h_idxu_block[j] + (j+1)*mb + ma; - h_idxz[idxz_count].jju = jju; + h_idxz(idxz_count,9) = jju; idxz_count++; } @@ -225,11 +225,13 @@ void SNAKokkos::grow_rij(int newnatom, int newnmax) dedr = t_sna_3d("sna:dedr",natom,nmax,3); blist = t_sna_2d("sna:blist",natom,idxb_max); - ulisttot = t_sna_2c_cpu("sna:ulisttot",natom,idxu_max); + ulisttot = t_sna_2c("sna:ulisttot",natom,idxu_max); + if (!Kokkos::Impl::is_same::value) + ulisttot_lr = t_sna_2c_lr("sna:ulisttot_lr",natom,idxu_max); zlist = t_sna_2c("sna:zlist",natom,idxz_max); ulist = t_sna_3c("sna:ulist",natom,nmax,idxu_max); - ylist = t_sna_2c("sna:ylist",natom,idxu_max); + ylist = t_sna_2c_lr("sna:ylist",natom,idxu_max); dulist = t_sna_4c("sna:dulist",natom,nmax,idxu_max); } @@ -240,15 +242,15 @@ void SNAKokkos::grow_rij(int newnatom, int newnmax) template KOKKOS_INLINE_FUNCTION -void SNAKokkos::pre_ui(const typename Kokkos::TeamPolicy::member_type& team, int iatom) +void SNAKokkos::pre_ui(const int& iatom) { - if(team.team_rank() == 0) { - zero_uarraytot(team,iatom); + //if(team.team_rank() == 0) { + zero_uarraytot(iatom); //Kokkos::single(Kokkos::PerThread(team), [&] (){ - addself_uarraytot(team,iatom,wself); + addself_uarraytot(iatom,wself); //}); - } - team.team_barrier(); + //} + //team.team_barrier(); } /* ---------------------------------------------------------------------- @@ -278,50 +280,7 @@ void SNAKokkos::compute_ui(const typename Kokkos::TeamPolicy -KOKKOS_INLINE_FUNCTION -void SNAKokkos::compute_ui_orig(const typename Kokkos::TeamPolicy::member_type& team, int iatom, int jnum) -{ - double rsq, r, x, y, z, z0, theta0; - - // utot(j,ma,mb) = 0 for all j,ma,ma - // utot(j,ma,ma) = 1 for all j,ma - // for j in neighbors of i: - // compute r0 = (x,y,z,z0) - // utot(j,ma,mb) += u(r0;j,ma,mb) for all j,ma,mb - - if(team.team_rank() == 0) { - zero_uarraytot(team,iatom); - //Kokkos::single(Kokkos::PerThread(team), [&] (){ - addself_uarraytot(team,iatom,wself); - //}); - } - team.team_barrier(); - - Kokkos::parallel_for(Kokkos::TeamThreadRange(team,jnum), - [&] (const int& j) { - //for(int j = 0; j < jnum; j++) { - x = rij(iatom,j,0); - y = rij(iatom,j,1); - z = rij(iatom,j,2); - rsq = x * x + y * y + z * z; - r = sqrt(rsq); - - theta0 = (r - rmin0) * rfac0 * MY_PI / (rcutij(iatom,j) - rmin0); - // theta0 = (r - rmin0) * rscale0; - z0 = r / tan(theta0); - - compute_uarray(team, iatom, j, x, y, z, z0, r); - //Kokkos::single(Kokkos::PerThread(team), [&] (){ - add_uarraytot(team, iatom, j, r, wj(iatom,j), rcutij(iatom,j)); - //}); - }); - } /* ---------------------------------------------------------------------- @@ -330,54 +289,52 @@ void SNAKokkos::compute_ui_orig(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION -void SNAKokkos::compute_zi(const typename Kokkos::TeamPolicy::member_type& team, int iatom) +void SNAKokkos::compute_zi(const int& iter) { - Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxz_max), - [&] (const int& jjz) { - //for(int jjz = 0; jjz < idxz_max; jjz++) { - const int j1 = idxz[jjz].j1; - const int j2 = idxz[jjz].j2; - const int j = idxz[jjz].j; - const int ma1min = idxz[jjz].ma1min; - const int ma2max = idxz[jjz].ma2max; - const int na = idxz[jjz].na; - const int mb1min = idxz[jjz].mb1min; - const int mb2max = idxz[jjz].mb2max; - const int nb = idxz[jjz].nb; + const int iatom = iter / idxz_max; + const int jjz = iter % idxz_max; - const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); + const int j1 = idxz(jjz,0); + const int j2 = idxz(jjz,1); + const int j = idxz(jjz,2); + const int ma1min = idxz(jjz,3); + const int ma2max = idxz(jjz,4); + const int mb1min = idxz(jjz,5); + const int mb2max = idxz(jjz,6); + const int na = idxz(jjz,7); + const int nb = idxz(jjz,8); - zlist(iatom,jjz).re = 0.0; - zlist(iatom,jjz).im = 0.0; + const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); - int jju1 = idxu_block[j1] + (j1+1)*mb1min; - int jju2 = idxu_block[j2] + (j2+1)*mb2max; - int icgb = mb1min*(j2+1) + mb2max; - for(int ib = 0; ib < nb; ib++) { + zlist(iatom,jjz).re = 0.0; + zlist(iatom,jjz).im = 0.0; - double suma1_r = 0.0; - double suma1_i = 0.0; + int jju1 = idxu_block[j1] + (j1+1)*mb1min; + int jju2 = idxu_block[j2] + (j2+1)*mb2max; + int icgb = mb1min*(j2+1) + mb2max; + for(int ib = 0; ib < nb; ib++) { - int ma1 = ma1min; - int ma2 = ma2max; - int icga = ma1min*(j2+1) + ma2max; - for(int ia = 0; ia < na; ia++) { - suma1_r += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).re - ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).im); - suma1_i += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).im + ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).re); - ma1++; - ma2--; - icga += j2; - } // end loop over ia + double suma1_r = 0.0; + double suma1_i = 0.0; - zlist(iatom,jjz).re += cgblock[icgb] * suma1_r; - zlist(iatom,jjz).im += cgblock[icgb] * suma1_i; + int ma1 = ma1min; + int ma2 = ma2max; + int icga = ma1min*(j2+1) + ma2max; + for(int ia = 0; ia < na; ia++) { + suma1_r += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).re - ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).im); + suma1_i += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).im + ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).re); + ma1++; + ma2--; + icga += j2; + } // end loop over ia - jju1 += j1+1; - jju2 -= j2+1; - icgb += j2; - } // end loop over ib + zlist(iatom,jjz).re += cgblock[icgb] * suma1_r; + zlist(iatom,jjz).im += cgblock[icgb] * suma1_i; - }); // end loop over jjz + jju1 += j1+1; + jju2 -= j2+1; + icgb += j2; + } // end loop over ib } /* ---------------------------------------------------------------------- @@ -386,102 +343,94 @@ void SNAKokkos::compute_zi(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION -void SNAKokkos::compute_yi(const typename Kokkos::TeamPolicy::member_type& team, int iatom, +void SNAKokkos::zero_yi(const int& iatom) +{ + for (int j = 0; j < idxu_max; j++) + ylist(iatom,j) = {0.0,0.0}; +} + +/* ---------------------------------------------------------------------- + compute Yi from Ui without storing Zi, looping over zlist indices +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void SNAKokkos::compute_yi(int iter, const Kokkos::View &beta) { double betaj; - const int ii = iatom; + const int iatom = iter / idxz_max; + const int jjz = iter % idxz_max; - { - Kokkos::parallel_for(Kokkos::TeamThreadRange(team,ylist.extent(1)), - [&] (const int& i) { - ylist(iatom,i).re = 0.0; - ylist(iatom,i).im = 0.0; - }); - } + const int j1 = idxz(jjz,0); + const int j2 = idxz(jjz,1); + const int j = idxz(jjz,2); + const int ma1min = idxz(jjz,3); + const int ma2max = idxz(jjz,4); + const int mb1min = idxz(jjz,5); + const int mb2max = idxz(jjz,6); + const int na = idxz(jjz,7); + const int nb = idxz(jjz,8); + const int jju = idxz(jjz,9); - //int flopsum = 0; + const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); + //int mb = (2 * (mb1min+mb2max) - j1 - j2 + j) / 2; + //int ma = (2 * (ma1min+ma2max) - j1 - j2 + j) / 2; - Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxz_max), - [&] (const int& jjz) { - //for(int jjz = 0; jjz < idxz_max; jjz++) { - const int j1 = idxz[jjz].j1; - const int j2 = idxz[jjz].j2; - const int j = idxz[jjz].j; - const int ma1min = idxz[jjz].ma1min; - const int ma2max = idxz[jjz].ma2max; - const int na = idxz[jjz].na; - const int mb1min = idxz[jjz].mb1min; - const int mb2max = idxz[jjz].mb2max; - const int nb = idxz[jjz].nb; + double ztmp_r = 0.0; + double ztmp_i = 0.0; - const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); - //int mb = (2 * (mb1min+mb2max) - j1 - j2 + j) / 2; - //int ma = (2 * (ma1min+ma2max) - j1 - j2 + j) / 2; + int jju1 = idxu_block[j1] + (j1+1)*mb1min; + int jju2 = idxu_block[j2] + (j2+1)*mb2max; + int icgb = mb1min*(j2+1) + mb2max; + for(int ib = 0; ib < nb; ib++) { - double ztmp_r = 0.0; - double ztmp_i = 0.0; + double suma1_r = 0.0; + double suma1_i = 0.0; - int jju1 = idxu_block[j1] + (j1+1)*mb1min; - int jju2 = idxu_block[j2] + (j2+1)*mb2max; - int icgb = mb1min*(j2+1) + mb2max; - for(int ib = 0; ib < nb; ib++) { + int ma1 = ma1min; + int ma2 = ma2max; + int icga = ma1min*(j2+1) + ma2max; - double suma1_r = 0.0; - double suma1_i = 0.0; + for(int ia = 0; ia < na; ia++) { + suma1_r += cgblock[icga] * (ulisttot_lr(iatom,jju1+ma1).re * ulisttot_lr(iatom,jju2+ma2).re - ulisttot_lr(iatom,jju1+ma1).im * ulisttot_lr(iatom,jju2+ma2).im); + suma1_i += cgblock[icga] * (ulisttot_lr(iatom,jju1+ma1).re * ulisttot_lr(iatom,jju2+ma2).im + ulisttot_lr(iatom,jju1+ma1).im * ulisttot_lr(iatom,jju2+ma2).re); + ma1++; + ma2--; + icga += j2; + } // end loop over ia - int ma1 = ma1min; - int ma2 = ma2max; - int icga = ma1min*(j2+1) + ma2max; + ztmp_r += cgblock[icgb] * suma1_r; + ztmp_i += cgblock[icgb] * suma1_i; + jju1 += j1+1; + jju2 -= j2+1; + icgb += j2; + } // end loop over ib - for(int ia = 0; ia < na; ia++) { - suma1_r += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).re - ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).im); - suma1_i += cgblock[icga] * (ulisttot(iatom,jju1+ma1).re * ulisttot(iatom,jju2+ma2).im + ulisttot(iatom,jju1+ma1).im * ulisttot(iatom,jju2+ma2).re); - //flopsum += 10; - ma1++; - ma2--; - icga += j2; - } // end loop over ia - - ztmp_r += cgblock[icgb] * suma1_r; - ztmp_i += cgblock[icgb] * suma1_i; - jju1 += j1+1; - jju2 -= j2+1; - icgb += j2; - } // end loop over ib - - // apply to z(j1,j2,j,ma,mb) to unique element of y(j) - // find right y_list[jju] and beta(ii,jjb) entries - // multiply and divide by j+1 factors - // account for multiplicity of 1, 2, or 3 - - const int jju = idxz[jjz].jju; + // apply to z(j1,j2,j,ma,mb) to unique element of y(j) + // find right y_list[jju] and beta(iatom,jjb) entries + // multiply and divide by j+1 factors + // account for multiplicity of 1, 2, or 3 // pick out right beta value - if (j >= j1) { - const int jjb = idxb_block(j1,j2,j); - if (j1 == j) { - if (j2 == j) betaj = 3*beta(ii,jjb); - else betaj = 2*beta(ii,jjb); - } else betaj = beta(ii,jjb); - } else if (j >= j2) { - const int jjb = idxb_block(j,j2,j1); - if (j2 == j) betaj = 2*beta(ii,jjb)*(j1+1)/(j+1.0); - else betaj = beta(ii,jjb)*(j1+1)/(j+1.0); - } else { - const int jjb = idxb_block(j2,j,j1); - betaj = beta(ii,jjb)*(j1+1)/(j+1.0); - } + if (j >= j1) { + const int jjb = idxb_block(j1,j2,j); + if (j1 == j) { + if (j2 == j) betaj = 3*beta(iatom,jjb); + else betaj = 2*beta(iatom,jjb); + } else betaj = beta(iatom,jjb); + } else if (j >= j2) { + const int jjb = idxb_block(j,j2,j1); + if (j2 == j) betaj = 2*beta(iatom,jjb)*(j1+1)/(j+1.0); + else betaj = beta(iatom,jjb)*(j1+1)/(j+1.0); + } else { + const int jjb = idxb_block(j2,j,j1); + betaj = beta(iatom,jjb)*(j1+1)/(j+1.0); + } - Kokkos::single(Kokkos::PerThread(team), [&] () { - Kokkos::atomic_add(&(ylist(iatom,jju).re), betaj*ztmp_r); - Kokkos::atomic_add(&(ylist(iatom,jju).im), betaj*ztmp_i); - }); - - }); // end loop over jjz - - //printf("sum %i\n",flopsum); + Kokkos::atomic_add(&(ylist(iatom,jju).re), betaj*ztmp_r); + Kokkos::atomic_add(&(ylist(iatom,jju).im), betaj*ztmp_i); } /* ---------------------------------------------------------------------- @@ -556,9 +505,9 @@ void SNAKokkos::compute_bi(const typename Kokkos::TeamPolicy::compute_duidrj(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION -void SNAKokkos::zero_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, int iatom) +void SNAKokkos::zero_uarraytot(const int& iatom) { { - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot.extent(1)), - [&] (const int& i) { + //Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot.extent(1)), + // [&] (const int& i) { + for (int i = 0; i < ulisttot.extent(1); i++) { ulisttot(iatom,i).re = 0.0; ulisttot(iatom,i).im = 0.0; - }); + } + //}); } } @@ -663,18 +614,18 @@ void SNAKokkos::zero_uarraytot(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION -void SNAKokkos::addself_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, int iatom, double wself_in) +void SNAKokkos::addself_uarraytot(const int& iatom, const double& wself_in) { - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1), - [&] (const int& j) { - //for (int j = 0; j <= twojmax; j++) + //Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1), + // [&] (const int& j) { + for (int j = 0; j <= twojmax; j++) { int jju = idxu_block[j]; for (int ma = 0; ma <= j; ma++) { ulisttot(iatom,jju).re = wself_in; ulisttot(iatom,jju).im = 0.0; jju += j+2; } - }); + }//}); } /* ---------------------------------------------------------------------- @@ -786,6 +737,12 @@ void SNAKokkos::compute_uarray(const typename Kokkos::TeamPolicy +void SNAKokkos::transpose_ulisttot() +{ + UlisttotHelper::transpose(ulisttot_lr,ulisttot); +} + /* ---------------------------------------------------------------------- compute derivatives of Wigner U-functions for one neighbor see comments in compute_uarray() @@ -1318,6 +1275,8 @@ double SNAKokkos::memory_usage() bytes += natom * idxu_max * sizeof(double) * 2; // ulist bytes += natom * idxu_max * sizeof(double) * 2; // ulisttot + if (!Kokkos::Impl::is_same::value) + bytes += natom * idxu_max * sizeof(double) * 2; // ulisttot_lr bytes += natom * idxu_max * 3 * sizeof(double) * 2; // dulist bytes += natom * idxz_max * sizeof(double) * 2; // zlist @@ -1329,8 +1288,8 @@ double SNAKokkos::memory_usage() bytes += jdim * jdim * jdim * sizeof(int); // idxz_block bytes += jdim * jdim * jdim * sizeof(int); // idxb_block - bytes += idxz_max * sizeof(SNAKK_ZINDICES); // idxz - bytes += idxb_max * sizeof(SNAKK_BINDICES); // idxb + bytes += idxz_max * 10 * sizeof(int); // idxz + bytes += idxb_max * 3 * sizeof(int); // idxb bytes += jdim * sizeof(double); // bzero diff --git a/src/KSPACE/ewald_dipole.h b/src/KSPACE/ewald_dipole.h index 741756487b..c8dd18565c 100644 --- a/src/KSPACE/ewald_dipole.h +++ b/src/KSPACE/ewald_dipole.h @@ -34,10 +34,10 @@ class EwaldDipole : public Ewald { protected: double musum,musqsum,mu2; - double **tk; // field for torque - double **vc; // virial per k + double **tk; // field for torque + double **vc; // virial per k - void musum_musq(); + void musum_musq(); double rms_dipole(int, double, bigint); virtual void eik_dot_r(); void slabcorr(); diff --git a/src/KSPACE/pppm_tip4p.cpp b/src/KSPACE/pppm_tip4p.cpp index f664a0dca3..5a0ced3674 100644 --- a/src/KSPACE/pppm_tip4p.cpp +++ b/src/KSPACE/pppm_tip4p.cpp @@ -500,11 +500,18 @@ void PPPMTIP4P::find_M(int i, int &iH1, int &iH2, double *xM) // since local atoms are in lambda coordinates, but ghosts are not. int *sametag = atom->sametag; - double xo[3],xh1[3],xh2[3]; + double xo[3],xh1[3],xh2[3],xm[3]; + const int nlocal = atom->nlocal; - domain->lamda2x(x[i],xo); - domain->lamda2x(x[iH1],xh1); - domain->lamda2x(x[iH2],xh2); + for (int ii = 0; ii < 3; ++ii) { + xo[ii] = x[i][ii]; + xh1[ii] = x[iH1][ii]; + xh2[ii] = x[iH2][ii]; + } + + if (i < nlocal) domain->lamda2x(x[i],xo); + if (iH1 < nlocal) domain->lamda2x(x[iH1],xh1); + if (iH2 < nlocal) domain->lamda2x(x[iH2],xh2); double delx = xo[0] - xh1[0]; double dely = xo[1] - xh1[1]; @@ -513,6 +520,8 @@ void PPPMTIP4P::find_M(int i, int &iH1, int &iH2, double *xM) double rsq; int closest = iH1; + // no need to run lamda2x() here -> ghost atoms + while (sametag[iH1] >= 0) { iH1 = sametag[iH1]; delx = xo[0] - x[iH1][0]; @@ -561,13 +570,13 @@ void PPPMTIP4P::find_M(int i, int &iH1, int &iH2, double *xM) double dely2 = xh2[1] - xo[1]; double delz2 = xh2[2] - xo[2]; - xM[0] = xo[0] + alpha * 0.5 * (delx1 + delx2); - xM[1] = xo[1] + alpha * 0.5 * (dely1 + dely2); - xM[2] = xo[2] + alpha * 0.5 * (delz1 + delz2); + xm[0] = xo[0] + alpha * 0.5 * (delx1 + delx2); + xm[1] = xo[1] + alpha * 0.5 * (dely1 + dely2); + xm[2] = xo[2] + alpha * 0.5 * (delz1 + delz2); // ... and convert M to lamda space for PPPM - domain->x2lamda(xM,xM); + domain->x2lamda(xm,xM); } else { diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index f30220da3d..3be2e20f95 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual -LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 +LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # -DLAMMPS_CXX98 # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index 5954d97761..86ddd05053 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual -LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 +LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # -DLAMMPS_CXX98 # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu b/src/MAKE/OPTIONS/Makefile.intel_cpu index f8e5eb3797..57e25e30cd 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu @@ -9,7 +9,7 @@ SHELL = /bin/sh CC = mpiicpc OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ -qopt-zmm-usage=high -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ -I$(MKLROOT)/include SHFLAGS = -fPIC diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi index 2c363cb2bf..1731203cb0 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi @@ -9,7 +9,7 @@ SHELL = /bin/sh CC = mpiicpc OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ -qopt-zmm-usage=high -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ -I$(MKLROOT)/include SHFLAGS = -fPIC diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich index a0730f3402..9419537006 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich @@ -9,7 +9,7 @@ SHELL = /bin/sh CC = mpicxx -cxx=icc OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ -qopt-zmm-usage=high -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ -I$(MKLROOT)/include SHFLAGS = -fPIC diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi index 2e73bb2890..c983943f5e 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi @@ -10,7 +10,7 @@ export OMPI_CXX = icc CC = mpicxx OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits \ -qopt-zmm-usage=high -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ -I$(MKLROOT)/include SHFLAGS = -fPIC diff --git a/src/MAKE/OPTIONS/Makefile.knl b/src/MAKE/OPTIONS/Makefile.knl index cf7a3f8103..a361e9e258 100644 --- a/src/MAKE/OPTIONS/Makefile.knl +++ b/src/MAKE/OPTIONS/Makefile.knl @@ -8,15 +8,15 @@ SHELL = /bin/sh CC = mpiicpc OPTFLAGS = -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \ +CCFLAGS = -qopenmp -qno-offload -ansi-alias -restrict \ -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) \ -I$(MKLROOT)/include SHFLAGS = -fPIC DEPFLAGS = -M LINK = mpiicpc -LINKFLAGS = -qopenmp $(OPTFLAGS) -LIB = -ltbbmalloc +LINKFLAGS = -qopenmp $(OPTFLAGS) -L$(MKLROOT)/lib/intel64/ +LIB = -ltbbmalloc -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core SIZE = size ARCHIVE = ar @@ -55,8 +55,7 @@ MPI_LIB = FFT_INC = -DFFT_MKL -DFFT_SINGLE FFT_PATH = -FFT_LIB = -L$(MKLROOT)/lib/intel64/ -lmkl_intel_ilp64 \ - -lmkl_sequential -lmkl_core +FFT_LIB = # JPEG and/or PNG library # see discussion in Section 2.2 (step 7) of manual diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 6b7468558e..05ec27a9b4 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -61,6 +61,10 @@ PairBOP::PairBOP(LAMMPS *lmp) : Pair(lmp) manybody_flag = 1; ghostneigh = 1; + BOP_index = NULL; + BOP_index3 = NULL; + BOP_total = NULL; + BOP_total3 = NULL; map = NULL; pi_a = NULL; pro_delta = NULL; @@ -102,6 +106,8 @@ PairBOP::PairBOP(LAMMPS *lmp) : Pair(lmp) rij = NULL; neigh_index = NULL; neigh_index3 = NULL; + neigh_flag = NULL; + neigh_flag3 = NULL; cosAng = NULL; betaS = NULL; dBetaS = NULL; @@ -5798,6 +5804,12 @@ void PairBOP::memory_theta_destroy() memory->destroy(neigh_flag3); memory->destroy(neigh_index); memory->destroy(neigh_index3); + itypeSigBk = NULL; + itypePiBk = NULL; + neigh_flag = NULL; + neigh_flag3 = NULL; + neigh_index = NULL; + neigh_index3 = NULL; if(otfly==0) { memory->destroy(cosAng); memory->destroy(dcAng); diff --git a/src/SNAP/sna.cpp b/src/SNAP/sna.cpp index 01d2d12b8f..1ba99c1caf 100644 --- a/src/SNAP/sna.cpp +++ b/src/SNAP/sna.cpp @@ -20,6 +20,7 @@ #include "math_const.h" #include "memory.h" #include "error.h" +#include "comm.h" using namespace std; using namespace LAMMPS_NS; @@ -283,6 +284,7 @@ void SNA::build_indexlist() void SNA::init() { init_clebsch_gordan(); + // print_clebsch_gordan(); init_rootpqarray(); } @@ -1515,6 +1517,40 @@ void SNA::init_clebsch_gordan() } } +/* ---------------------------------------------------------------------- + print out values of Clebsch-Gordan coefficients + format and notation follows VMK Table 8.11 +------------------------------------------------------------------------- */ + +void SNA::print_clebsch_gordan() +{ + if (comm->me) return; + + int aa2, bb2, cc2; + for (int j = 0; j <= twojmax; j += 1) { + printf("c = %g\n",j/2.0); + printf("a alpha b beta C_{a alpha b beta}^{c alpha+beta}\n"); + for (int j1 = 0; j1 <= twojmax; j1++) + for (int j2 = 0; j2 <= j1; j2++) + if (j1-j2 <= j && j1+j2 >= j && (j1+j2+j)%2 == 0) { + int idxcg_count = idxcg_block[j1][j2][j]; + for (int m1 = 0; m1 <= j1; m1++) { + aa2 = 2*m1-j1; + for (int m2 = 0; m2 <= j2; m2++) { + bb2 = 2*m2-j2; + double cgtmp = cglist[idxcg_count]; + cc2 = aa2+bb2; + if (cc2 >= -j && cc2 <= j) + if (j1 != j2 || (aa2 > bb2 && aa2 >= -bb2) || (aa2 == bb2 && aa2 >= 0)) + printf("%4g %4g %4g %4g %10.6g\n", + j1/2.0,aa2/2.0,j2/2.0,bb2/2.0,cgtmp); + idxcg_count++; + } + } + } + } +} + /* ---------------------------------------------------------------------- pre-compute table of sqrt[p/m2], p, q = 1,twojmax the p = 0, q = 0 entries are allocated and skipped for convenience. diff --git a/src/SNAP/sna.h b/src/SNAP/sna.h index e6bf4e3f9e..5ea65fd84b 100644 --- a/src/SNAP/sna.h +++ b/src/SNAP/sna.h @@ -103,6 +103,7 @@ private: void create_twojmax_arrays(); void destroy_twojmax_arrays(); void init_clebsch_gordan(); + void print_clebsch_gordan(); void init_rootpqarray(); void zero_uarraytot(); void addself_uarraytot(double); diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp index b1b466b5a4..9b4f1916ae 100644 --- a/src/SPIN/fix_nve_spin.cpp +++ b/src/SPIN/fix_nve_spin.cpp @@ -91,12 +91,17 @@ FixNVESpin::FixNVESpin(LAMMPS *lmp, int narg, char **arg) : // defining lattice_flag + // changing the lattice option, from (yes,no) -> (moving,frozen) + // for now, (yes,no) still works (to avoid user's confusions). + int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"lattice") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix/NVE/spin command"); if (strcmp(arg[iarg+1],"no") == 0) lattice_flag = 0; + else if (strcmp(arg[iarg+1],"frozen") == 0) lattice_flag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) lattice_flag = 1; + else if (strcmp(arg[iarg+1],"moving") == 0) lattice_flag = 1; else error->all(FLERR,"Illegal fix/NVE/spin command"); iarg += 2; } else error->all(FLERR,"Illegal fix/NVE/spin command"); diff --git a/src/SPIN/fix_nve_spin.h b/src/SPIN/fix_nve_spin.h index 1e3b87c1fb..5871f721be 100644 --- a/src/SPIN/fix_nve_spin.h +++ b/src/SPIN/fix_nve_spin.h @@ -52,7 +52,7 @@ friend class PairSpin; double dtv, dtf, dts; // velocity, force, and spin timesteps - int nlocal_max; // max value of nlocal (for lists size) + int nlocal_max; // max value of nlocal (for size of lists) int pair_spin_flag; // magnetic pair flags int long_spin_flag; // magnetic long-range flag diff --git a/src/SPIN/min_spin.cpp b/src/SPIN/min_spin.cpp index 553526ea8e..7315aca056 100644 --- a/src/SPIN/min_spin.cpp +++ b/src/SPIN/min_spin.cpp @@ -41,15 +41,15 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -MinSpin::MinSpin(LAMMPS *lmp) : Min(lmp) {} +MinSpin::MinSpin(LAMMPS *lmp) : Min(lmp) { + alpha_damp = 1.0; + discrete_factor = 10.0; +} /* ---------------------------------------------------------------------- */ void MinSpin::init() { - alpha_damp = 1.0; - discrete_factor = 10.0; - Min::init(); dts = dt = update->dt; @@ -77,12 +77,12 @@ void MinSpin::setup_style() 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"); + if (narg < 2) error->all(FLERR,"Illegal min_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"); + if (narg < 2) error->all(FLERR,"Illegal min_modify command"); discrete_factor = force->numeric(FLERR,arg[1]); return 2; } @@ -116,7 +116,7 @@ void MinSpin::reset_vectors() int MinSpin::iterate(int maxiter) { bigint ntimestep; - double fmdotfm; + double fmdotfm,fmsq; int flag,flagall; for (int iter = 0; iter < maxiter; iter++) { @@ -130,7 +130,7 @@ int MinSpin::iterate(int maxiter) // optimize timestep accross processes / replicas // need a force calculation for timestep optimization - energy_force(0); + if (iter == 0) energy_force(0); dts = evaluate_dt(); // apply damped precessional dynamics to the spins @@ -163,8 +163,13 @@ int MinSpin::iterate(int maxiter) // magnetic torque tolerance criterion // sync across replicas if running multi-replica minimization + fmdotfm = fmsq = 0.0; if (update->ftol > 0.0) { - fmdotfm = fmnorm_sqr(); + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + else error->all(FLERR,"Illegal min_modify command"); + fmdotfm = fmsq*fmsq; if (update->multireplica == 0) { if (fmdotfm < update->ftol*update->ftol) return FTOL; } else { @@ -242,7 +247,7 @@ void MinSpin::advance_spins(double dts) double **sp = atom->sp; double **fm = atom->fm; double tdampx,tdampy,tdampz; - double msq,scale,fm2,energy,dts2; + double fm2,energy,dts2; double cp[3],g[3]; dts2 = dts*dts; @@ -288,37 +293,3 @@ void MinSpin::advance_spins(double dts) // 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 index fbc624a9cc..f2df81e58c 100644 --- a/src/SPIN/min_spin.h +++ b/src/SPIN/min_spin.h @@ -35,7 +35,6 @@ class MinSpin : public Min { int iterate(int); double evaluate_dt(); void advance_spins(double); - double fmnorm_sqr(); private: diff --git a/src/SPIN/min_spin_cg.cpp b/src/SPIN/min_spin_cg.cpp new file mode 100644 index 0000000000..95bbcf437b --- /dev/null +++ b/src/SPIN/min_spin_cg.cpp @@ -0,0 +1,649 @@ +/* ---------------------------------------------------------------------- + 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: Aleksei Ivanov (University of Iceland) + Julien Tranchida (SNL) + + Please cite the related publication: + Ivanov, A. V., Uzdin, V. M., & Jónsson, H. (2019). Fast and Robust + Algorithm for the Minimisation of the Energy of Spin Systems. arXiv + preprint arXiv:1904.02669. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "min_spin_cg.h" +#include "universe.h" +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "force.h" +#include "update.h" +#include "output.h" +#include "timer.h" +#include "error.h" +#include "memory.h" +#include "modify.h" +#include "math_special.h" +#include "math_const.h" +#include "universe.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +static const char cite_minstyle_spin_cg[] = + "min_style spin/cg command:\n\n" + "@article{ivanov2019fast,\n" + "title={Fast and Robust Algorithm for the Minimisation of the Energy of " + "Spin Systems},\n" + "author={Ivanov, A. V and Uzdin, V. M. and J{\'o}nsson, H.},\n" + "journal={arXiv preprint arXiv:1904.02669},\n" + "year={2019}\n" + "}\n\n"; + +// EPS_ENERGY = minimum normalization for energy tolerance + +#define EPS_ENERGY 1.0e-8 + +#define DELAYSTEP 5 + +/* ---------------------------------------------------------------------- */ + +MinSpinCG::MinSpinCG(LAMMPS *lmp) : + Min(lmp), g_old(NULL), g_cur(NULL), p_s(NULL), sp_copy(NULL) +{ + if (lmp->citeme) lmp->citeme->add(cite_minstyle_spin_cg); + nlocal_max = 0; + + // nreplica = number of partitions + // ireplica = which world I am in universe + + nreplica = universe->nworlds; + ireplica = universe->iworld; + use_line_search = 0; // no line search as default option for CG + + discrete_factor = 10.0; +} + +/* ---------------------------------------------------------------------- */ + +MinSpinCG::~MinSpinCG() +{ + memory->destroy(g_old); + memory->destroy(g_cur); + memory->destroy(p_s); + if (use_line_search) + memory->destroy(sp_copy); +} + +/* ---------------------------------------------------------------------- */ + +void MinSpinCG::init() +{ + local_iter = 0; + der_e_cur = 0.0; + der_e_pr = 0.0; + + Min::init(); + + // warning if line_search combined to gneb + + if ((nreplica >= 1) && (linestyle != 4) && (comm->me == 0)) + error->warning(FLERR,"Line search incompatible gneb"); + + // set back use_line_search to 0 if more than one replica + + if (linestyle == 3 && nreplica == 1){ + use_line_search = 1; + } + else{ + use_line_search = 0; + } + + dts = dt = update->dt; + last_negative = update->ntimestep; + + // allocate tables + + nlocal_max = atom->nlocal; + memory->grow(g_old,3*nlocal_max,"min/spin/cg:g_old"); + memory->grow(g_cur,3*nlocal_max,"min/spin/cg:g_cur"); + memory->grow(p_s,3*nlocal_max,"min/spin/cg:p_s"); + if (use_line_search) + memory->grow(sp_copy,nlocal_max,3,"min/spin/cg:sp_copy"); +} + +/* ---------------------------------------------------------------------- */ + +void MinSpinCG::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/cg requires atom/spin style"); + + for (int i = 0; i < nlocal; i++) + v[i][0] = v[i][1] = v[i][2] = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +int MinSpinCG::modify_param(int narg, char **arg) +{ + 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 MinSpinCG::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 orthogonal spin optimisation +------------------------------------------------------------------------- */ + +int MinSpinCG::iterate(int maxiter) +{ + int nlocal = atom->nlocal; + bigint ntimestep; + double fmdotfm,fmsq; + int flag, flagall; + double **sp = atom->sp; + double der_e_cur_tmp = 0.0; + + if (nlocal_max < nlocal) { + local_iter = 0; + nlocal_max = nlocal; + memory->grow(g_old,3*nlocal_max,"min/spin/cg:g_old"); + memory->grow(g_cur,3*nlocal_max,"min/spin/cg:g_cur"); + memory->grow(p_s,3*nlocal_max,"min/spin/cg:p_s"); + if (use_line_search) + memory->grow(sp_copy,nlocal_max,3,"min/spin/cg:sp_copy"); + } + + 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 + + if (use_line_search) { + + // here we need to do line search + if (local_iter == 0){ + calc_gradient(); + } + + calc_search_direction(); + der_e_cur = 0.0; + for (int i = 0; i < 3 * nlocal; i++) + der_e_cur += g_cur[i] * p_s[i]; + MPI_Allreduce(&der_e_cur,&der_e_cur_tmp,1,MPI_DOUBLE,MPI_SUM,world); + der_e_cur = der_e_cur_tmp; + if (update->multireplica == 1) { + MPI_Allreduce(&der_e_cur_tmp,&der_e_cur,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + for (int i = 0; i < nlocal; i++) + for (int j = 0; j < 3; j++) + sp_copy[i][j] = sp[i][j]; + + eprevious = ecurrent; + der_e_pr = der_e_cur; + calc_and_make_step(0.0, 1.0, 0); + } + else{ + + // here we don't do line search + // if gneb calc., nreplica > 1 + // then calculate gradients and advance spins + // of intermediate replicas only + calc_gradient(); + calc_search_direction(); + advance_spins(); + neval++; + eprevious = ecurrent; + ecurrent = energy_force(0); + } + + // 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 + + fmdotfm = fmsq = 0.0; + if (update->ftol > 0.0) { + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + else error->all(FLERR,"Illegal min_modify command"); + fmdotfm = fmsq*fmsq; + 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; +} + +/* ---------------------------------------------------------------------- + calculate gradients +---------------------------------------------------------------------- */ + +void MinSpinCG::calc_gradient() +{ + int nlocal = atom->nlocal; + double **sp = atom->sp; + double **fm = atom->fm; + double hbar = force->hplanck/MY_2PI; + double factor; + + if (use_line_search) + factor = hbar; + else factor = evaluate_dt(); + + // loop on all spins on proc. + + for (int i = 0; i < nlocal; i++) { + g_cur[3 * i + 0] = (fm[i][0]*sp[i][1] - fm[i][1]*sp[i][0]) * factor; + g_cur[3 * i + 1] = -(fm[i][2]*sp[i][0] - fm[i][0]*sp[i][2]) * factor; + g_cur[3 * i + 2] = (fm[i][1]*sp[i][2] - fm[i][2]*sp[i][1]) * factor; + } +} + +/* ---------------------------------------------------------------------- + search direction: + The Fletcher-Reeves conj. grad. method + See Jorge Nocedal and Stephen J. Wright 'Numerical + Optimization' Second Edition, 2006 (p. 121) +---------------------------------------------------------------------- */ + +void MinSpinCG::calc_search_direction() +{ + int nlocal = atom->nlocal; + double g2old = 0.0; + double g2 = 0.0; + double beta = 0.0; + + double g2_global = 0.0; + double g2old_global = 0.0; + + double factor = 1.0; + + // for multiple replica do not move end points + if (nreplica > 1) + if (ireplica == 0 || ireplica == nreplica - 1) + factor = 0.0; + + + if (local_iter == 0 || local_iter % 5 == 0){ // steepest descent direction + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = -g_cur[i] * factor; + g_old[i] = g_cur[i] * factor; + } + } else { // conjugate direction + for (int i = 0; i < 3 * nlocal; i++) { + g2old += g_old[i] * g_old[i]; + g2 += g_cur[i] * g_cur[i]; + } + + // now we need to collect/broadcast beta on this replica + // need to check what is beta for GNEB + + MPI_Allreduce(&g2,&g2_global,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&g2old,&g2old_global,1,MPI_DOUBLE,MPI_SUM,world); + + // Sum over all replicas. Good for GNEB. + + if (nreplica > 1) { + g2 = g2_global * factor; + g2old = g2old_global * factor; + MPI_Allreduce(&g2,&g2_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + MPI_Allreduce(&g2old,&g2old_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + if (fabs(g2_global) < 1.0e-60) beta = 0.0; + else beta = g2_global / g2old_global; + + // calculate conjugate direction + + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = (beta * p_s[i] - g_cur[i]) * factor; + g_old[i] = g_cur[i] * factor; + } + } + + local_iter++; +} + +/* ---------------------------------------------------------------------- + rotation of spins along the search direction +---------------------------------------------------------------------- */ + +void MinSpinCG::advance_spins() +{ + int nlocal = atom->nlocal; + double **sp = atom->sp; + double rot_mat[9]; // exponential of matrix made of search direction + double s_new[3]; + + // loop on all spins on proc. + + for (int i = 0; i < nlocal; i++) { + rodrigues_rotation(p_s + 3 * i, rot_mat); + + // rotate spins + + vm3(rot_mat, sp[i], s_new); + for (int j = 0; j < 3; j++) sp[i][j] = s_new[j]; + } +} + +/* ---------------------------------------------------------------------- + calculate 3x3 matrix exponential using Rodrigues' formula + (R. Murray, Z. Li, and S. Shankar Sastry, + A Mathematical Introduction to + Robotic Manipulation (1994), p. 28 and 30). + + upp_tr - vector x, y, z so that one calculate + U = exp(A) with A= [[0, x, y], + [-x, 0, z], + [-y, -z, 0]] +------------------------------------------------------------------------- */ + +void MinSpinCG::rodrigues_rotation(const double *upp_tr, double *out) +{ + double theta,A,B,D,x,y,z; + double s1,s2,s3,a1,a2,a3; + + if (fabs(upp_tr[0]) < 1.0e-40 && + fabs(upp_tr[1]) < 1.0e-40 && + fabs(upp_tr[2]) < 1.0e-40){ + + // if upp_tr is zero, return unity matrix + + for(int k = 0; k < 3; k++){ + for(int m = 0; m < 3; m++){ + if (m == k) out[3 * k + m] = 1.0; + else out[3 * k + m] = 0.0; + } + } + return; + } + + theta = sqrt(upp_tr[0] * upp_tr[0] + + upp_tr[1] * upp_tr[1] + + upp_tr[2] * upp_tr[2]); + + A = cos(theta); + B = sin(theta); + D = 1.0 - A; + x = upp_tr[0]/theta; + y = upp_tr[1]/theta; + z = upp_tr[2]/theta; + + // diagonal elements of U + + out[0] = A + z * z * D; + out[4] = A + y * y * D; + out[8] = A + x * x * D; + + // off diagonal of U + + s1 = -y * z *D; + s2 = x * z * D; + s3 = -x * y * D; + + a1 = x * B; + a2 = y * B; + a3 = z * B; + + out[1] = s1 + a1; + out[3] = s1 - a1; + out[2] = s2 + a2; + out[6] = s2 - a2; + out[5] = s3 + a3; + out[7] = s3 - a3; + +} + +/* ---------------------------------------------------------------------- + out = vector^T x m, + m -- 3x3 matrix , v -- 3-d vector +------------------------------------------------------------------------- */ + +void MinSpinCG::vm3(const double *m, const double *v, double *out) +{ + for(int i = 0; i < 3; i++){ + out[i] = 0.0; + for(int j = 0; j < 3; j++) out[i] += *(m + 3 * j + i) * v[j]; + } +} + +/* ---------------------------------------------------------------------- + advance spins +------------------------------------------------------------------------- */ + +void MinSpinCG::make_step(double c, double *energy_and_der) +{ + double p_scaled[3]; + int nlocal = atom->nlocal; + double rot_mat[9]; // exponential of matrix made of search direction + double s_new[3]; + double **sp = atom->sp; + double der_e_cur_tmp = 0.0; + + for (int i = 0; i < nlocal; i++) { + + // scale the search direction + + for (int j = 0; j < 3; j++) p_scaled[j] = c * p_s[3 * i + j]; + + // calculate rotation matrix + + rodrigues_rotation(p_scaled, rot_mat); + + // rotate spins + + vm3(rot_mat, sp[i], s_new); + for (int j = 0; j < 3; j++) sp[i][j] = s_new[j]; + } + + ecurrent = energy_force(0); + calc_gradient(); + neval++; + der_e_cur = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + der_e_cur += g_cur[i] * p_s[i]; + } + MPI_Allreduce(&der_e_cur,&der_e_cur_tmp,1,MPI_DOUBLE,MPI_SUM,world); + der_e_cur = der_e_cur_tmp; + if (update->multireplica == 1) { + MPI_Allreduce(&der_e_cur_tmp,&der_e_cur,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + energy_and_der[0] = ecurrent; + energy_and_der[1] = der_e_cur; +} + +/* ---------------------------------------------------------------------- + Calculate step length which satisfies approximate Wolfe conditions + using the cubic interpolation +------------------------------------------------------------------------- */ + +int MinSpinCG::calc_and_make_step(double a, double b, int index) +{ + double e_and_d[2] = {0.0,0.0}; + double alpha,c1,c2,c3; + double **sp = atom->sp; + int nlocal = atom->nlocal; + + make_step(b,e_and_d); + ecurrent = e_and_d[0]; + der_e_cur = e_and_d[1]; + index++; + + if (adescent(eprevious,e_and_d[0]) || index == 5){ + MPI_Bcast(&b,1,MPI_DOUBLE,0,world); + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = b * p_s[i]; + } + return 1; + } + else { + double r,f0,f1,df0,df1; + r = b - a; + f0 = eprevious; + f1 = ecurrent; + df0 = der_e_pr; + df1 = der_e_cur; + + c1 = -2.0*(f1-f0)/(r*r*r)+(df1+df0)/(r*r); + c2 = 3.0*(f1-f0)/(r*r)-(df1+2.0*df0)/(r); + c3 = df0; + + // f(x) = c1 x^3 + c2 x^2 + c3 x^1 + c4 + // has minimum at alpha below. We do not check boundaries. + + alpha = (-c2 + sqrt(c2*c2 - 3.0*c1*c3))/(3.0*c1); + MPI_Bcast(&alpha,1,MPI_DOUBLE,0,world); + + if (alpha < 0.0) alpha = r/2.0; + + for (int i = 0; i < nlocal; i++) { + for (int j = 0; j < 3; j++) sp[i][j] = sp_copy[i][j]; + } + calc_and_make_step(0.0, alpha, index); + } + + return 0; +} + +/* ---------------------------------------------------------------------- + Approximate descent +------------------------------------------------------------------------- */ + +int MinSpinCG::adescent(double phi_0, double phi_j){ + + double eps = 1.0e-6; + + if (phi_j<=phi_0+eps*fabs(phi_0)) + return 1; + else + return 0; +} + +/* ---------------------------------------------------------------------- + evaluate max timestep +---------------------------------------------------------------------- */ + +double MinSpinCG::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; +} diff --git a/src/SPIN/min_spin_cg.h b/src/SPIN/min_spin_cg.h new file mode 100644 index 0000000000..0eed7a61e6 --- /dev/null +++ b/src/SPIN/min_spin_cg.h @@ -0,0 +1,71 @@ +/* -*- 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/cg, MinSpinCG) + +#else + +#ifndef LMP_MIN_SPIN_CG_H +#define LMP_MIN_SPIN_CG_H + +#include "min.h" + +namespace LAMMPS_NS { + +class MinSpinCG: public Min { + public: + MinSpinCG(class LAMMPS *); + virtual ~MinSpinCG(); + void init(); + void setup_style(); + void reset_vectors(); + int modify_param(int, char **); + int iterate(int); + + private: + int local_iter; // for neb + int nlocal_max; // max value of nlocal (for size of lists) + int use_line_search; // use line search or not. + int ireplica,nreplica; // for neb + double dt; // global timestep + double dts; // spin timestep + double discrete_factor; // factor for spin timestep evaluation + double der_e_cur; // current derivative along search dir. + double der_e_pr; // previous derivative along search dir. + double *spvec; // variables for atomic dof, as 1d vector + double *fmvec; // variables for atomic dof, as 1d vector + double *g_old; // gradient vector at previous step + double *g_cur; // current gradient vector + double *p_s; // search direction vector + double **sp_copy; // copy of the spins + + void advance_spins(); + void calc_gradient(); + void calc_search_direction(); + void vm3(const double *, const double *, double *); + void rodrigues_rotation(const double *, double *); + void make_step(double, double *); + int calc_and_make_step(double, double, int); + int adescent(double, double); + double evaluate_dt(); + double maximum_rotation(double *); + + bigint last_negative; +}; + +} + +#endif +#endif diff --git a/src/SPIN/min_spin_lbfgs.cpp b/src/SPIN/min_spin_lbfgs.cpp new file mode 100644 index 0000000000..f86bdd5d48 --- /dev/null +++ b/src/SPIN/min_spin_lbfgs.cpp @@ -0,0 +1,754 @@ +/* ---------------------------------------------------------------------- + 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: Aleksei Ivanov (University of Iceland) + Julien Tranchida (SNL) + + Please cite the related publication: + Ivanov, A. V., Uzdin, V. M., & Jónsson, H. (2019). Fast and Robust + Algorithm for the Minimisation of the Energy of Spin Systems. arXiv + preprint arXiv:1904.02669. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "min_spin_lbfgs.h" +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "force.h" +#include "update.h" +#include "output.h" +#include "timer.h" +#include "error.h" +#include "memory.h" +#include "modify.h" +#include "math_special.h" +#include "math_const.h" +#include "universe.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +static const char cite_minstyle_spin_lbfgs[] = + "min_style spin/lbfgs command:\n\n" + "@article{ivanov2019fast,\n" + "title={Fast and Robust Algorithm for the Minimisation of the Energy of " + "Spin Systems},\n" + "author={Ivanov, A. V and Uzdin, V. M. and J{\'o}nsson, H.},\n" + "journal={arXiv preprint arXiv:1904.02669},\n" + "year={2019}\n" + "}\n\n"; + +// EPS_ENERGY = minimum normalization for energy tolerance + +#define EPS_ENERGY 1.0e-8 + +#define DELAYSTEP 5 + +/* ---------------------------------------------------------------------- */ + +MinSpinLBFGS::MinSpinLBFGS(LAMMPS *lmp) : + Min(lmp), g_old(NULL), g_cur(NULL), p_s(NULL), rho(NULL), ds(NULL), dy(NULL), sp_copy(NULL) +{ + if (lmp->citeme) lmp->citeme->add(cite_minstyle_spin_lbfgs); + nlocal_max = 0; + + // nreplica = number of partitions + // ireplica = which world I am in universe + + nreplica = universe->nworlds; + ireplica = universe->iworld; + use_line_search = 0; // no line search as default option for LBFGS + + maxepsrot = MY_2PI / (100.0); + +} + +/* ---------------------------------------------------------------------- */ + +MinSpinLBFGS::~MinSpinLBFGS() +{ + memory->destroy(g_old); + memory->destroy(g_cur); + memory->destroy(p_s); + memory->destroy(ds); + memory->destroy(dy); + memory->destroy(rho); + if (use_line_search) + memory->destroy(sp_copy); +} + +/* ---------------------------------------------------------------------- */ + +void MinSpinLBFGS::init() +{ + num_mem = 3; + local_iter = 0; + der_e_cur = 0.0; + der_e_pr = 0.0; + + Min::init(); + + // warning if line_search combined to gneb + + if ((nreplica >= 1) && (linestyle != 4) && (comm->me == 0)) + error->warning(FLERR,"Line search incompatible gneb"); + + // set back use_line_search to 0 if more than one replica + + if (linestyle == 3 && nreplica == 1){ + use_line_search = 1; + } + else{ + use_line_search = 0; + } + + last_negative = update->ntimestep; + + // allocate tables + + nlocal_max = atom->nlocal; + memory->grow(g_old,3*nlocal_max,"min/spin/lbfgs:g_old"); + memory->grow(g_cur,3*nlocal_max,"min/spin/lbfgs:g_cur"); + memory->grow(p_s,3*nlocal_max,"min/spin/lbfgs:p_s"); + memory->grow(rho,num_mem,"min/spin/lbfgs:rho"); + memory->grow(ds,num_mem,3*nlocal_max,"min/spin/lbfgs:ds"); + memory->grow(dy,num_mem,3*nlocal_max,"min/spin/lbfgs:dy"); + if (use_line_search) + memory->grow(sp_copy,nlocal_max,3,"min/spin/lbfgs:sp_copy"); + +} + +/* ---------------------------------------------------------------------- */ + +void MinSpinLBFGS::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/lbfgs requires atom/spin style"); + + for (int i = 0; i < nlocal; i++) + v[i][0] = v[i][1] = v[i][2] = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +int MinSpinLBFGS::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"discrete_factor") == 0) { + if (narg < 2) error->all(FLERR,"Illegal min_modify command"); + double discrete_factor; + discrete_factor = force->numeric(FLERR,arg[1]); + maxepsrot = MY_2PI / (10 * discrete_factor); + return 2; + } + return 0; +} + +/* ---------------------------------------------------------------------- + set current vector lengths and pointers + called after atoms have migrated +------------------------------------------------------------------------- */ + +void MinSpinLBFGS::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 MinSpinLBFGS::iterate(int maxiter) +{ + int nlocal = atom->nlocal; + bigint ntimestep; + double fmdotfm,fmsq; + int flag, flagall; + double **sp = atom->sp; + double der_e_cur_tmp = 0.0; + + if (nlocal_max < nlocal) { + nlocal_max = nlocal; + local_iter = 0; + memory->grow(g_old,3*nlocal_max,"min/spin/lbfgs:g_old"); + memory->grow(g_cur,3*nlocal_max,"min/spin/lbfgs:g_cur"); + memory->grow(p_s,3*nlocal_max,"min/spin/lbfgs:p_s"); + memory->grow(rho,num_mem,"min/spin/lbfgs:rho"); + memory->grow(ds,num_mem,3*nlocal_max,"min/spin/lbfgs:ds"); + memory->grow(dy,num_mem,3*nlocal_max,"min/spin/lbfgs:dy"); + if (use_line_search) + memory->grow(sp_copy,nlocal_max,3,"min/spin/lbfgs:sp_copy"); + } + + 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 + + if (use_line_search) { + + // here we need to do line search + if (local_iter == 0){ + eprevious = ecurrent; + ecurrent = energy_force(0); + calc_gradient(); + } + + calc_search_direction(); + der_e_cur = 0.0; + for (int i = 0; i < 3 * nlocal; i++) + der_e_cur += g_cur[i] * p_s[i]; + MPI_Allreduce(&der_e_cur,&der_e_cur_tmp,1,MPI_DOUBLE,MPI_SUM,world); + der_e_cur = der_e_cur_tmp; + if (update->multireplica == 1) { + MPI_Allreduce(&der_e_cur_tmp,&der_e_cur,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + for (int i = 0; i < nlocal; i++) + for (int j = 0; j < 3; j++) + sp_copy[i][j] = sp[i][j]; + + eprevious = ecurrent; + der_e_pr = der_e_cur; + calc_and_make_step(0.0, 1.0, 0); + } + else{ + + // here we don't do line search + // but use cutoff rotation angle + // if gneb calc., nreplica > 1 + // then calculate gradients and advance spins + // of intermediate replicas only + eprevious = ecurrent; + ecurrent = energy_force(0); + calc_gradient(); + calc_search_direction(); + advance_spins(); + 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 + + fmdotfm = fmsq = 0.0; + if (update->ftol > 0.0) { + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + else error->all(FLERR,"Illegal min_modify command"); + fmdotfm = fmsq*fmsq; + 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; +} + +/* ---------------------------------------------------------------------- + calculate gradients +---------------------------------------------------------------------- */ + +void MinSpinLBFGS::calc_gradient() +{ + int nlocal = atom->nlocal; + double **sp = atom->sp; + double **fm = atom->fm; + double hbar = force->hplanck/MY_2PI; + + // loop on all spins on proc. + + for (int i = 0; i < nlocal; i++) { + g_cur[3 * i + 0] = (fm[i][0]*sp[i][1] - fm[i][1]*sp[i][0]) * hbar; + g_cur[3 * i + 1] = -(fm[i][2]*sp[i][0] - fm[i][0]*sp[i][2]) * hbar; + g_cur[3 * i + 2] = (fm[i][1]*sp[i][2] - fm[i][2]*sp[i][1]) * hbar; + } +} + +/* ---------------------------------------------------------------------- + search direction: + Limited-memory BFGS. + See Jorge Nocedal and Stephen J. Wright 'Numerical + Optimization' Second Edition, 2006 (p. 177) +---------------------------------------------------------------------- */ + +void MinSpinLBFGS::calc_search_direction() +{ + int nlocal = atom->nlocal; + + double dyds = 0.0; + double sq = 0.0; + double yy = 0.0; + double yr = 0.0; + double beta = 0.0; + + double dyds_global = 0.0; + double sq_global = 0.0; + double yy_global = 0.0; + double yr_global = 0.0; + + int m_index = local_iter % num_mem; // memory index + int c_ind = 0; + double *q; + double *alpha; + + double factor; + double scaling = 1.0; + + // for multiple replica do not move end points + if (nreplica > 1) { + if (ireplica == 0 || ireplica == nreplica - 1) { + factor = 0.0; + } + else factor = 1.0; + }else{ + factor = 1.0; + } + + if (local_iter == 0){ // steepest descent direction + + //if no line search then calculate maximum rotation + if (use_line_search == 0) + scaling = maximum_rotation(g_cur); + + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = -g_cur[i] * factor * scaling;; + g_old[i] = g_cur[i] * factor; + for (int k = 0; k < num_mem; k++){ + ds[k][i] = 0.0; + dy[k][i] = 0.0; + } + } + for (int k = 0; k < num_mem; k++) + rho[k] = 0.0; + + } else { + dyds = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + ds[m_index][i] = p_s[i]; + dy[m_index][i] = g_cur[i] - g_old[i]; + dyds += ds[m_index][i] * dy[m_index][i]; + } + MPI_Allreduce(&dyds, &dyds_global, 1, MPI_DOUBLE, MPI_SUM, world); + + if (nreplica > 1) { + dyds_global *= factor; + dyds = dyds_global; + MPI_Allreduce(&dyds, &dyds_global, 1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + if (fabs(dyds_global) > 1.0e-60) rho[m_index] = 1.0 / dyds_global; + else rho[m_index] = 1.0e60; + + if (rho[m_index] < 0.0){ + local_iter = 0; + return calc_search_direction(); + } + q = (double *) calloc(3*nlocal, sizeof(double)); + alpha = (double *) calloc(num_mem, sizeof(double)); + // set the q vector + + for (int i = 0; i < 3 * nlocal; i++) { + q[i] = g_cur[i]; + } + + // loop over last m indecies + for(int k = num_mem - 1; k > -1; k--) { + // this loop should run from the newest memory to the oldest one. + + c_ind = (k + m_index + 1) % num_mem; + + // dot product between dg and q + + sq = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + sq += ds[c_ind][i] * q[i]; + } + MPI_Allreduce(&sq,&sq_global,1,MPI_DOUBLE,MPI_SUM,world); + if (nreplica > 1) { + sq_global *= factor; + sq = sq_global; + MPI_Allreduce(&sq,&sq_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + // update alpha + + alpha[c_ind] = rho[c_ind] * sq_global; + + // update q + + for (int i = 0; i < 3 * nlocal; i++) { + q[i] -= alpha[c_ind] * dy[c_ind][i]; + } + } + + // dot product between dg with itself + yy = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + yy += dy[m_index][i] * dy[m_index][i]; + } + MPI_Allreduce(&yy,&yy_global,1,MPI_DOUBLE,MPI_SUM,world); + if (nreplica > 1) { + yy_global *= factor; + yy = yy_global; + MPI_Allreduce(&yy,&yy_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + // calculate now search direction + + double devis = rho[m_index] * yy_global; + + if (fabs(devis) > 1.0e-60) { + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = factor * q[i] / devis; + } + }else{ + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = factor * q[i] * 1.0e60; + } + } + + for (int k = 0; k < num_mem; k++){ + // this loop should run from the oldest memory to the newest one. + + if (local_iter < num_mem) c_ind = k; + else c_ind = (k + m_index + 1) % num_mem; + + // dot product between p and da + yr = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + yr += dy[c_ind][i] * p_s[i]; + } + + MPI_Allreduce(&yr,&yr_global,1,MPI_DOUBLE,MPI_SUM,world); + if (nreplica > 1) { + yr_global *= factor; + yr = yr_global; + MPI_Allreduce(&yr,&yr_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + beta = rho[c_ind] * yr_global; + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] += ds[c_ind][i] * (alpha[c_ind] - beta); + } + } + if (use_line_search == 0) + scaling = maximum_rotation(p_s); + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = - factor * p_s[i] * scaling; + g_old[i] = g_cur[i] * factor; + } + free(q); + free(alpha); + } + local_iter++; +} + +/* ---------------------------------------------------------------------- + rotation of spins along the search direction +---------------------------------------------------------------------- */ + +void MinSpinLBFGS::advance_spins() +{ + int nlocal = atom->nlocal; + double **sp = atom->sp; + double rot_mat[9]; // exponential of matrix made of search direction + double s_new[3]; + + // loop on all spins on proc. + + for (int i = 0; i < nlocal; i++) { + rodrigues_rotation(p_s + 3 * i, rot_mat); + + // rotate spins + + vm3(rot_mat, sp[i], s_new); + for (int j = 0; j < 3; j++) sp[i][j] = s_new[j]; + } +} + +/* ---------------------------------------------------------------------- + calculate 3x3 matrix exponential using Rodrigues' formula + (R. Murray, Z. Li, and S. Shankar Sastry, + A Mathematical Introduction to + Robotic Manipulation (1994), p. 28 and 30). + + upp_tr - vector x, y, z so that one calculate + U = exp(A) with A= [[0, x, y], + [-x, 0, z], + [-y, -z, 0]] +------------------------------------------------------------------------- */ + +void MinSpinLBFGS::rodrigues_rotation(const double *upp_tr, double *out) +{ + double theta,A,B,D,x,y,z; + double s1,s2,s3,a1,a2,a3; + + if (fabs(upp_tr[0]) < 1.0e-40 && + fabs(upp_tr[1]) < 1.0e-40 && + fabs(upp_tr[2]) < 1.0e-40){ + + // if upp_tr is zero, return unity matrix + for(int k = 0; k < 3; k++){ + for(int m = 0; m < 3; m++){ + if (m == k) out[3 * k + m] = 1.0; + else out[3 * k + m] = 0.0; + } + } + return; + } + + theta = sqrt(upp_tr[0] * upp_tr[0] + + upp_tr[1] * upp_tr[1] + + upp_tr[2] * upp_tr[2]); + + A = cos(theta); + B = sin(theta); + D = 1 - A; + x = upp_tr[0]/theta; + y = upp_tr[1]/theta; + z = upp_tr[2]/theta; + + // diagonal elements of U + + out[0] = A + z * z * D; + out[4] = A + y * y * D; + out[8] = A + x * x * D; + + // off diagonal of U + + s1 = -y * z *D; + s2 = x * z * D; + s3 = -x * y * D; + + a1 = x * B; + a2 = y * B; + a3 = z * B; + + out[1] = s1 + a1; + out[3] = s1 - a1; + out[2] = s2 + a2; + out[6] = s2 - a2; + out[5] = s3 + a3; + out[7] = s3 - a3; + +} + +/* ---------------------------------------------------------------------- + out = vector^T x m, + m -- 3x3 matrix , v -- 3-d vector +------------------------------------------------------------------------- */ + +void MinSpinLBFGS::vm3(const double *m, const double *v, double *out) +{ + for(int i = 0; i < 3; i++){ + out[i] = 0.0; + for(int j = 0; j < 3; j++) + out[i] += *(m + 3 * j + i) * v[j]; + } +} + + +void MinSpinLBFGS::make_step(double c, double *energy_and_der) +{ + double p_scaled[3]; + int nlocal = atom->nlocal; + double rot_mat[9]; // exponential of matrix made of search direction + double s_new[3]; + double **sp = atom->sp; + double der_e_cur_tmp = 0.0; + + for (int i = 0; i < nlocal; i++) { + + // scale the search direction + + for (int j = 0; j < 3; j++) p_scaled[j] = c * p_s[3 * i + j]; + + // calculate rotation matrix + + rodrigues_rotation(p_scaled, rot_mat); + + // rotate spins + + vm3(rot_mat, sp[i], s_new); + for (int j = 0; j < 3; j++) sp[i][j] = s_new[j]; + } + + ecurrent = energy_force(0); + calc_gradient(); + neval++; + der_e_cur = 0.0; + for (int i = 0; i < 3 * nlocal; i++) { + der_e_cur += g_cur[i] * p_s[i]; + } + MPI_Allreduce(&der_e_cur,&der_e_cur_tmp, 1, MPI_DOUBLE, MPI_SUM, world); + der_e_cur = der_e_cur_tmp; + if (update->multireplica == 1) { + MPI_Allreduce(&der_e_cur_tmp,&der_e_cur,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + + energy_and_der[0] = ecurrent; + energy_and_der[1] = der_e_cur; +} + +/* ---------------------------------------------------------------------- + Calculate step length which satisfies approximate Wolfe conditions + using the cubic interpolation +------------------------------------------------------------------------- */ + +int MinSpinLBFGS::calc_and_make_step(double a, double b, int index) +{ + double e_and_d[2] = {0.0,0.0}; + double alpha,c1,c2,c3; + double **sp = atom->sp; + int nlocal = atom->nlocal; + + make_step(b,e_and_d); + ecurrent = e_and_d[0]; + der_e_cur = e_and_d[1]; + index++; + + if (adescent(eprevious,e_and_d[0]) || index == 5){ + MPI_Bcast(&b,1,MPI_DOUBLE,0,world); + for (int i = 0; i < 3 * nlocal; i++) { + p_s[i] = b * p_s[i]; + } + return 1; + } + else{ + double r,f0,f1,df0,df1; + r = b - a; + f0 = eprevious; + f1 = ecurrent; + df0 = der_e_pr; + df1 = der_e_cur; + + c1 = -2.0*(f1-f0)/(r*r*r)+(df1+df0)/(r*r); + c2 = 3.0*(f1-f0)/(r*r)-(df1+2.0*df0)/(r); + c3 = df0; + + // f(x) = c1 x^3 + c2 x^2 + c3 x^1 + c4 + // has minimum at alpha below. We do not check boundaries. + + alpha = (-c2 + sqrt(c2*c2 - 3.0*c1*c3))/(3.0*c1); + MPI_Bcast(&alpha,1,MPI_DOUBLE,0,world); + + if (alpha < 0.0) alpha = r/2.0; + + for (int i = 0; i < nlocal; i++) { + for (int j = 0; j < 3; j++) sp[i][j] = sp_copy[i][j]; + } + calc_and_make_step(0.0, alpha, index); + } + + return 0; +} + +/* ---------------------------------------------------------------------- + Approximate descent +------------------------------------------------------------------------- */ + +int MinSpinLBFGS::adescent(double phi_0, double phi_j){ + + double eps = 1.0e-6; + + if (phi_j<=phi_0+eps*fabs(phi_0)) + return 1; + else + return 0; +} + +double MinSpinLBFGS::maximum_rotation(double *p) +{ + double norm2,norm2_global,scaling,alpha; + int nlocal = atom->nlocal; + int ntotal = 0; + + norm2 = 0.0; + for (int i = 0; i < 3 * nlocal; i++) norm2 += p[i] * p[i]; + + MPI_Allreduce(&norm2,&norm2_global,1,MPI_DOUBLE,MPI_SUM,world); + if (nreplica > 1) { + norm2 = norm2_global; + MPI_Allreduce(&norm2,&norm2_global,1,MPI_DOUBLE,MPI_SUM,universe->uworld); + } + MPI_Allreduce(&nlocal,&ntotal,1,MPI_INT,MPI_SUM,world); + if (nreplica > 1) { + nlocal = ntotal; + MPI_Allreduce(&nlocal,&ntotal,1,MPI_INT,MPI_SUM,universe->uworld); + } + + scaling = (maxepsrot * sqrt((double) ntotal / norm2_global)); + + if (scaling < 1.0) alpha = scaling; + else alpha = 1.0; + + return alpha; +} diff --git a/src/SPIN/min_spin_lbfgs.h b/src/SPIN/min_spin_lbfgs.h new file mode 100644 index 0000000000..cead605b32 --- /dev/null +++ b/src/SPIN/min_spin_lbfgs.h @@ -0,0 +1,72 @@ +/* -*- 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/lbfgs, MinSpinLBFGS) + +#else + +#ifndef LMP_MIN_SPIN_LBFGS_H +#define LMP_MIN_SPIN_LBFGS_H + +#include "min.h" + +namespace LAMMPS_NS { + +class MinSpinLBFGS: public Min { + public: + MinSpinLBFGS(class LAMMPS *); + virtual ~MinSpinLBFGS(); + void init(); + void setup_style(); + int modify_param(int, char **); + void reset_vectors(); + int iterate(int); + + private: + int local_iter; // for neb + int use_line_search; // use line search or not. + int nlocal_max; // max value of nlocal (for size of lists) + int ireplica,nreplica; // for neb + double der_e_cur; // current derivative along search dir. + double der_e_pr; // previous derivative along search dir. + double maxepsrot; + double *spvec; // variables for atomic dof, as 1d vector + double *fmvec; // variables for atomic dof, as 1d vector + double *g_old; // gradient vector at previous step + double *g_cur; // current gradient vector + double *p_s; // search direction vector + + void advance_spins(); + void calc_gradient(); + void calc_search_direction(); + void vm3(const double *, const double *, double *); + void rodrigues_rotation(const double *, double *); + void make_step(double, double *); + int calc_and_make_step(double, double, int); + int adescent(double, double); + double maximum_rotation(double *); + + double *rho; // estimation of curvature + double **ds; // change in rotation matrix between two iterations, da + double **dy; // change in gradients between two iterations, dg + double **sp_copy; // copy of the spins + int num_mem; // number of stored steps + bigint last_negative; +}; + +} + +#endif +#endif diff --git a/src/SPIN/neb_spin.cpp b/src/SPIN/neb_spin.cpp index 2bcfe6573a..559fd1cb49 100644 --- a/src/SPIN/neb_spin.cpp +++ b/src/SPIN/neb_spin.cpp @@ -43,6 +43,8 @@ #include "timer.h" #include "memory.h" #include "error.h" +#include "math_const.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -186,8 +188,8 @@ void NEBSpin::run() if (update->minimize->searchflag) error->all(FLERR,"NEBSpin requires damped dynamics minimizer"); - if (strcmp(update->minimize_style,"spin") != 0) - error->all(FLERR,"NEBSpin requires spin minimizer"); + if (!utils::strmatch(update->minimize_style,"^spin")) + error->all(FLERR,"NEBSpin requires a spin minimizer"); // setup regular NEBSpin minimization @@ -243,6 +245,8 @@ void NEBSpin::run() timer->init(); timer->barrier_start(); + // if(ireplica != 0 && ireplica != nreplica -1) + while (update->minimize->niter < n1steps) { update->minimize->run(nevery); print_status(); @@ -639,7 +643,7 @@ int NEBSpin::initial_rotation(double *spi, double *sploc, double fraction) kcrossy = kz*spix - kx*spiz; kcrossz = kx*spiy - ky*spix; - kdots = kx*spix + ky*spiz + kz*spiz; + kdots = kx*spix + ky*spiy + kz*spiz; omega = acos(sidotsf); omega *= fraction; diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index fb0ec8bb20..ebcc59d499 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -323,7 +323,7 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) void PairSpinDipoleCut::compute_single_pair(int ii, double fmi[3]) { int j,jnum,itype,jtype,ntypes; - int *ilist,*jlist,*numneigh,**firstneigh; + int *jlist,*numneigh,**firstneigh; double rsq,rinv,r2inv,r3inv,local_cut2; double xi[3],rij[3],eij[3],spi[4],spj[4]; diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 670fccfce2..bb42fb70b4 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -354,10 +354,9 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) void PairSpinDipoleLong::compute_single_pair(int ii, double fmi[3]) { - //int i,j,jj,jnum,itype,jtype; int j,jj,jnum,itype,jtype,ntypes; int k,locflag; - int *ilist,*jlist,*numneigh,**firstneigh; + int *jlist,*numneigh,**firstneigh; double r,rinv,r2inv,rsq,grij,expm2,t,erfc; double local_cut2,pre1,pre2,pre3; double bij[4],xi[3],rij[3],eij[3],spi[4],spj[4]; @@ -367,7 +366,6 @@ void PairSpinDipoleLong::compute_single_pair(int ii, double fmi[3]) double **sp = atom->sp; double **fm_long = atom->fm_long; - ilist = list->ilist; numneigh = list->numneigh; firstneigh = list->firstneigh; @@ -405,7 +403,6 @@ void PairSpinDipoleLong::compute_single_pair(int ii, double fmi[3]) // computation of the exchange interaction // loop over neighbors of atom i - //i = ilist[ii]; xi[0] = x[ii][0]; xi[1] = x[ii][1]; xi[2] = x[ii][2]; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index afd2deaa6a..3fee84d5fc 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -313,7 +313,7 @@ void PairSpinDmi::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= hbar; + evdwl *= 0.5*hbar; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, @@ -427,9 +427,9 @@ void PairSpinDmi::compute_dmi(int i, int j, double eij[3], double fmi[3], double dmiy = eij[2]*v_dmx[itype][jtype] - eij[0]*v_dmz[itype][jtype]; dmiz = eij[0]*v_dmy[itype][jtype] - eij[1]*v_dmx[itype][jtype]; - fmi[0] -= (dmiy*spj[2] - dmiz*spj[1]); - fmi[1] -= (dmiz*spj[0] - dmix*spj[2]); - fmi[2] -= (dmix*spj[1] - dmiy*spj[0]); + fmi[0] -= 2.0*(dmiy*spj[2] - dmiz*spj[1]); + fmi[1] -= 2.0*(dmiz*spj[0] - dmix*spj[2]); + fmi[2] -= 2.0*(dmix*spj[1] - dmiy*spj[0]); } /* ---------------------------------------------------------------------- diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index cc28018ad0..7a54eba9d7 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -296,7 +296,7 @@ void PairSpinExchange::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= hbar; + evdwl *= 0.5*hbar; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, @@ -405,9 +405,9 @@ void PairSpinExchange::compute_exchange(int i, int j, double rsq, double fmi[3], Jex *= (1.0-J2[itype][jtype]*ra); Jex *= exp(-ra); - fmi[0] += Jex*spj[0]; - fmi[1] += Jex*spj[1]; - fmi[2] += Jex*spj[2]; + fmi[0] += 2.0*Jex*spj[0]; + fmi[1] += 2.0*Jex*spj[1]; + fmi[2] += 2.0*Jex*spj[2]; } /* ---------------------------------------------------------------------- @@ -504,7 +504,7 @@ void PairSpinExchange::read_restart(FILE *fp) fread(&J1_mag[i][j],sizeof(double),1,fp); fread(&J1_mech[i][j],sizeof(double),1,fp); fread(&J2[i][j],sizeof(double),1,fp); - fread(&J2[i][j],sizeof(double),1,fp); + fread(&J3[i][j],sizeof(double),1,fp); fread(&cut_spin_exchange[i][j],sizeof(double),1,fp); } MPI_Bcast(&J1_mag[i][j],1,MPI_DOUBLE,0,world); diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 355ba20f39..017682593a 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -643,10 +643,8 @@ void PairSpinNeel::allocate() memory->create(q3,n+1,n+1,"pair/spin/soc/neel:q3"); memory->create(cutsq,n+1,n+1,"pair/spin/soc/neel:cutsq"); - } - /* ---------------------------------------------------------------------- proc 0 writes to restart file ------------------------------------------------------------------------- */ @@ -694,11 +692,11 @@ void PairSpinNeel::read_restart(FILE *fp) fread(&g1[i][j],sizeof(double),1,fp); fread(&g1_mech[i][j],sizeof(double),1,fp); fread(&g2[i][j],sizeof(double),1,fp); - fread(&g2[i][j],sizeof(double),1,fp); + fread(&g3[i][j],sizeof(double),1,fp); fread(&q1[i][j],sizeof(double),1,fp); fread(&q1_mech[i][j],sizeof(double),1,fp); fread(&q2[i][j],sizeof(double),1,fp); - fread(&q2[i][j],sizeof(double),1,fp); + fread(&q3[i][j],sizeof(double),1,fp); fread(&cut_spin_neel[i][j],sizeof(double),1,fp); } MPI_Bcast(&g1[i][j],1,MPI_DOUBLE,0,world); diff --git a/src/STUBS/mpi.c b/src/STUBS/mpi.c index f56d3616c8..a5a00f86a5 100644 --- a/src/STUBS/mpi.c +++ b/src/STUBS/mpi.c @@ -12,14 +12,13 @@ ------------------------------------------------------------------------ */ /* Single-processor "stub" versions of MPI routines */ -/* -I. in Makefile insures dummy mpi.h in this dir is included */ #include #include #include #include #include -#include +#include "mpi.h" #include "../version.h" /* data structure for double/int */ diff --git a/src/USER-DIFFRACTION/compute_saed.cpp b/src/USER-DIFFRACTION/compute_saed.cpp index 971d9bd380..3ae25f223c 100644 --- a/src/USER-DIFFRACTION/compute_saed.cpp +++ b/src/USER-DIFFRACTION/compute_saed.cpp @@ -510,7 +510,7 @@ void ComputeSAED::compute_vector() if (me == 0 && echo) { if (screen) - fprintf(screen," 100%% \nTime ellapsed during compute_saed = %0.2f sec using %0.2f Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); + fprintf(screen," 100%% \nTime elapsed during compute_saed = %0.2f sec using %0.2f Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); } delete [] xlocal; diff --git a/src/USER-DIFFRACTION/compute_xrd.cpp b/src/USER-DIFFRACTION/compute_xrd.cpp index f48951f1ff..7f69449282 100644 --- a/src/USER-DIFFRACTION/compute_xrd.cpp +++ b/src/USER-DIFFRACTION/compute_xrd.cpp @@ -513,7 +513,7 @@ void ComputeXRD::compute_array() if (me == 0 && echo) { if (screen) - fprintf(screen," 100%% \nTime ellapsed during compute_xrd = %0.2f sec using %0.2f Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); + fprintf(screen," 100%% \nTime elapsed during compute_xrd = %0.2f sec using %0.2f Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); } delete [] scratch; diff --git a/src/USER-INTEL/npair_full_bin_ghost_intel.cpp b/src/USER-INTEL/npair_full_bin_ghost_intel.cpp index e1e09fd3da..00b032d495 100644 --- a/src/USER-INTEL/npair_full_bin_ghost_intel.cpp +++ b/src/USER-INTEL/npair_full_bin_ghost_intel.cpp @@ -150,8 +150,8 @@ void NPairFullBinGhostIntel::fbi(const int offload, NeighList * list, const int nlocal = atom->nlocal; #ifndef _LMP_INTEL_OFFLOAD - int * const mask = atom->mask; - tagint * const molecule = atom->molecule; + int * _noalias const mask = atom->mask; + tagint * _noalias const molecule = atom->molecule; #endif int moltemplate; @@ -162,7 +162,7 @@ void NPairFullBinGhostIntel::fbi(const int offload, NeighList * list, "Can't use moltemplate with npair style full/bin/ghost/intel."); int tnum; - int *overflow; + int * _noalias overflow; #ifdef _LMP_INTEL_OFFLOAD double *timer_compute; if (offload) { @@ -200,7 +200,7 @@ void NPairFullBinGhostIntel::fbi(const int offload, NeighList * list, const int mbinx = this->mbinx; const int mbiny = this->mbiny; const int mbinz = this->mbinz; - const int * const stencilxyz = &this->stencilxyz[0][0]; + const int * _noalias const stencilxyz = &this->stencilxyz[0][0]; int sb = 1; if (special_flag[1] == 0) { @@ -295,7 +295,7 @@ void NPairFullBinGhostIntel::fbi(const int offload, NeighList * list, int pack_offset = maxnbors; int ct = (ifrom + tid * 2) * maxnbors; - int *neighptr = intel_list + ct; + int * _noalias neighptr = intel_list + ct; const int obound = pack_offset + maxnbors * 2; const int toffs = tid * ncache_stride; @@ -370,7 +370,7 @@ void NPairFullBinGhostIntel::fbi(const int offload, NeighList * list, int n = maxnbors; int n2 = n * 2; - int *neighptr2 = neighptr; + int * _noalias neighptr2 = neighptr; const flt_t * _noalias cutsq; if (i < nlocal) cutsq = cutneighsq; else cutsq = cutneighghostsq; diff --git a/src/USER-INTEL/npair_intel.cpp b/src/USER-INTEL/npair_intel.cpp index ad9ec6e7d3..a82d3f29e5 100644 --- a/src/USER-INTEL/npair_intel.cpp +++ b/src/USER-INTEL/npair_intel.cpp @@ -154,12 +154,12 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, const int nlocal = atom->nlocal; #ifndef _LMP_INTEL_OFFLOAD - int * const mask = atom->mask; - tagint * const molecule = atom->molecule; + int * _noalias const mask = atom->mask; + tagint * _noalias const molecule = atom->molecule; #endif int tnum; - int *overflow; + int * _noalias overflow; #ifdef _LMP_INTEL_OFFLOAD double *timer_compute; if (offload) { @@ -298,8 +298,8 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, const int obound = maxnbors * 3; #endif int ct = (ifrom + tid * 2) * maxnbors; - int *neighptr = intel_list + ct; - int *neighptr2; + int * _noalias neighptr = intel_list + ct; + int * _noalias neighptr2; if (THREE) neighptr2 = neighptr; const int toffs = tid * ncache_stride; diff --git a/src/USER-INTEL/pair_dpd_intel.cpp b/src/USER-INTEL/pair_dpd_intel.cpp index 4ebdce9a96..690496d546 100644 --- a/src/USER-INTEL/pair_dpd_intel.cpp +++ b/src/USER-INTEL/pair_dpd_intel.cpp @@ -283,7 +283,7 @@ void PairDPDIntel::eval(const int offload, const int vflag, } #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma simd reduction(+:fxtmp, fytmp, fztmp, fwtmp, sevdwl, \ sv0, sv1, sv2, sv3, sv4, sv5) #endif diff --git a/src/USER-INTEL/pair_eam_intel.cpp b/src/USER-INTEL/pair_eam_intel.cpp index 32d7e74cbc..984823f07e 100644 --- a/src/USER-INTEL/pair_eam_intel.cpp +++ b/src/USER-INTEL/pair_eam_intel.cpp @@ -305,7 +305,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, acc_t rhoi = (acc_t)0.0; int ej = 0; #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma ivdep #endif for (int jj = 0; jj < jnum; jj++) { @@ -324,7 +324,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, } #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma simd reduction(+:rhoi) #endif for (int jj = 0; jj < ej; jj++) { @@ -411,7 +411,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, if (EFLAG) tevdwl = (acc_t)0.0; #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma simd reduction(+:tevdwl) #endif for (int ii = iifrom; ii < iito; ++ii) { @@ -485,7 +485,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, int ej = 0; #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma ivdep #endif for (int jj = 0; jj < jnum; jj++) { @@ -507,7 +507,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, } #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma simd reduction(+:fxtmp, fytmp, fztmp, fwtmp, sevdwl, \ sv0, sv1, sv2, sv3, sv4, sv5) #endif diff --git a/src/USER-INTEL/pair_lj_cut_intel.cpp b/src/USER-INTEL/pair_lj_cut_intel.cpp index 39db9c7333..f6f83b752a 100644 --- a/src/USER-INTEL/pair_lj_cut_intel.cpp +++ b/src/USER-INTEL/pair_lj_cut_intel.cpp @@ -236,7 +236,7 @@ void PairLJCutIntel::eval(const int offload, const int vflag, if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; #if defined(LMP_SIMD_COMPILER) - #pragma vector aligned + #pragma vector aligned nog2s #pragma simd reduction(+:fxtmp, fytmp, fztmp, fwtmp, sevdwl, \ sv0, sv1, sv2, sv3, sv4, sv5) #endif diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 442feedf87..3b96f3685d 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -84,6 +84,7 @@ pair_style lebedeva/z, Zbigniew Koziol (National Center for Nuclear Research), s pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13 pair_style lj/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 +pair_style local/density, Tanmoy Sanyal (tanmoy dot 7989 at gmail.com) and M. Scott Shell (UCSB), and David Rosenberger (TU Darmstadt), 9 Sept 19 pair_style kolmogorov/crespi/full, Wengen Ouyang (Tel Aviv University), w.g.ouyang at gmail dot com, 30 Mar 18 pair_style kolmogorov/crespi/z, Jaap Kroes (Radboud U), jaapkroes at gmail dot com, 28 Feb 17 pair_style meam/spline, Alexander Stukowski (LLNL), alex at stukowski.com, 1 Feb 12 diff --git a/src/USER-MISC/compute_gyration_shape.cpp b/src/USER-MISC/compute_gyration_shape.cpp index a0ee6089b7..8c660cfb9e 100644 --- a/src/USER-MISC/compute_gyration_shape.cpp +++ b/src/USER-MISC/compute_gyration_shape.cpp @@ -112,19 +112,15 @@ void ComputeGyrationShape::compute_vector() } // compute the shape parameters of the gyration tensor - double sq_eigen_x = MathSpecial::square(evalues[0]); - double sq_eigen_y = MathSpecial::square(evalues[1]); - double sq_eigen_z = MathSpecial::square(evalues[2]); - - double nominator = MathSpecial::square(sq_eigen_x) - + MathSpecial::square(sq_eigen_y) - + MathSpecial::square(sq_eigen_z); - double denominator = MathSpecial::square(sq_eigen_x+sq_eigen_y+sq_eigen_z); + double nominator = MathSpecial::square(evalues[0]) + + MathSpecial::square(evalues[1]) + + MathSpecial::square(evalues[2]); + double denominator = MathSpecial::square(evalues[0]+evalues[1]+evalues[2]); vector[0] = evalues[0]; vector[1] = evalues[1]; vector[2] = evalues[2]; - vector[3] = sq_eigen_z - 0.5*(sq_eigen_x + sq_eigen_y); - vector[4] = sq_eigen_y - sq_eigen_x; - vector[5] = 0.5*(3*nominator/denominator - 1.0); + vector[3] = evalues[0] - 0.5*(evalues[1] + evalues[2]); + vector[4] = evalues[1] - evalues[2]; + vector[5] = 1.5*nominator/denominator - 0.5; } diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index 05dc54c57e..c34a7494d9 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -35,6 +35,7 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu) #include "molecule.h" #include "group.h" #include "citeme.h" +#include "math_const.h" #include "memory.h" #include "error.h" @@ -42,6 +43,7 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu) using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; static const char cite_fix_bond_react[] = "fix bond/react:\n\n" @@ -56,9 +58,8 @@ static const char cite_fix_bond_react[] = #define BIG 1.0e20 #define DELTA 16 -#define MAXLINE 256 #define MAXGUESS 20 // max # of guesses allowed by superimpose algorithm -#define MAXCONARGS 5 // max # of arguments for any type of constraint +#define MAXCONARGS 7 // max # of arguments for any type of constraint + rxnID // various statuses of superimpose algorithm: // ACCEPT: site successfully matched to pre-reacted template @@ -69,6 +70,9 @@ static const char cite_fix_bond_react[] = // RESTORE: restore mode, load most recent restore point enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE}; +// types of available reaction constraints +enum{DISTANCE,ANGLE}; + /* ---------------------------------------------------------------------- */ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : @@ -87,6 +91,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : MPI_Comm_size(world,&nprocs); newton_bond = force->newton_bond; + restart_global = 1; attempted_rxn = 0; force_reneighbor = 1; next_reneighbor = -1; @@ -94,6 +99,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : global_freq = 1; extvector = 0; rxnID = 0; + nconstraints = 0; status = PROCEED; nxspecial = NULL; @@ -169,8 +175,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(limit_duration,nreacts,"bond/react:limit_duration"); memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag"); memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag"); - memory->create(nconstraints,nreacts,"bond/react:nconstraints"); - memory->create(constraints,nreacts,MAXCONARGS,"bond/react:constraints"); + memory->create(constraints,1,MAXCONARGS,"bond/react:constraints"); memory->create(iatomtype,nreacts,"bond/react:iatomtype"); memory->create(jatomtype,nreacts,"bond/react:jatomtype"); memory->create(ibonding,nreacts,"bond/react:ibonding"); @@ -188,7 +193,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : max_rxn[i] = INT_MAX; stabilize_steps_flag[i] = 0; update_edges_flag[i] = 0; - nconstraints[i] = 0; // set default limit duration to 60 timesteps limit_duration[i] = 60; reaction_count[i] = 0; @@ -207,7 +211,9 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : iarg++; - rxn_name[rxn] = arg[iarg++]; + int n = strlen(arg[iarg]) + 1; + if (n > MAXLINE) error->all(FLERR,"Reaction name (react-ID) is too long (limit: 256 characters)"); + strncpy(rxn_name[rxn],arg[iarg++],n); int igroup = group->find(arg[iarg++]); if (igroup == -1) error->all(FLERR,"Could not find fix group ID"); @@ -386,6 +392,10 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : id_fix3 = NULL; statted_id = NULL; custom_exclude_flag = 0; + + // used to store restart info + set = new Set[nreacts]; + memset(set,0,nreacts*sizeof(Set)); } /* ---------------------------------------------------------------------- */ @@ -469,6 +479,7 @@ FixBondReact::~FixBondReact() delete [] statted_id; delete [] guess_branch; delete [] pioneer_count; + delete [] set; if (group) { char **newarg; @@ -1131,6 +1142,22 @@ void FixBondReact::superimpose_algorithm() glove[myjbonding-1][1] = created[lcl_inst][1][rxnID]; glove_counter++; + // special case, only two atoms in reaction templates + // then: bonding onemol_nxspecials guaranteed to be equal, and either 0 or 1 + if (glove_counter == onemol->natoms) { + tagint local_atom1 = atom->map(glove[myibonding-1][1]); + tagint local_atom2 = atom->map(glove[myjbonding-1][1]); + if ( (nxspecial[local_atom1][0] == onemol_nxspecial[myibonding-1][0] && + nxspecial[local_atom2][0] == nxspecial[local_atom1][0]) && + (nxspecial[local_atom1][0] == 0 || + xspecial[local_atom1][0] == atom->tag[local_atom2]) && + check_constraints() ) { + status = ACCEPT; + glove_ghostcheck(); + } else + status = REJECT; + } + avail_guesses = 0; for (int i = 0; i < max_natoms; i++) @@ -1209,7 +1236,7 @@ void FixBondReact::superimpose_algorithm() rxn_by_proc[j] = -1; // corresponds to ghostly int itemp = 0; for (int j = 0; j < nprocs; j++) - for (int k = 0; k < local_rxn_count[j]; k++) + for (int k = 0; k < local_rxncounts[j]; k++) rxn_by_proc[itemp++] = j; std::random_shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn]); for (int j = 0; j < nprocs; j++) @@ -1610,21 +1637,50 @@ evaluate constraints: return 0 if any aren't satisfied int FixBondReact::check_constraints() { - tagint atom1,atom2; + tagint atom1,atom2,atom3; double delx,dely,delz,rsq; + double delx1,dely1,delz1,delx2,dely2,delz2; + double rsq1,rsq2,r1,r2,c; double **x = atom->x; - for (int i = 0; i < nconstraints[rxnID]; i++) { - if (constraints[rxnID][0] == 0) { // 'distance' type - atom1 = atom->map(glove[(int) constraints[rxnID][1]-1][1]); - atom2 = atom->map(glove[(int) constraints[rxnID][2]-1][1]); - delx = x[atom1][0] - x[atom2][0]; - dely = x[atom1][1] - x[atom2][1]; - delz = x[atom1][2] - x[atom2][2]; - domain->minimum_image(delx,dely,delz); // ghost location fix - rsq = delx*delx + dely*dely + delz*delz; - if (rsq < constraints[rxnID][3] || rsq > constraints[rxnID][4]) return 0; + for (int i = 0; i < nconstraints; i++) { + if (constraints[i][0] == rxnID) { + if (constraints[i][1] == DISTANCE) { + atom1 = atom->map(glove[(int) constraints[i][2]-1][1]); + atom2 = atom->map(glove[(int) constraints[i][3]-1][1]); + delx = x[atom1][0] - x[atom2][0]; + dely = x[atom1][1] - x[atom2][1]; + delz = x[atom1][2] - x[atom2][2]; + domain->minimum_image(delx,dely,delz); // ghost location fix + rsq = delx*delx + dely*dely + delz*delz; + if (rsq < constraints[i][4] || rsq > constraints[i][5]) return 0; + } else if (constraints[i][1] == ANGLE) { + atom1 = atom->map(glove[(int) constraints[i][2]-1][1]); + atom2 = atom->map(glove[(int) constraints[i][3]-1][1]); + atom3 = atom->map(glove[(int) constraints[i][4]-1][1]); + + // 1st bond + delx1 = x[atom1][0] - x[atom2][0]; + dely1 = x[atom1][1] - x[atom2][1]; + delz1 = x[atom1][2] - x[atom2][2]; + rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1; + r1 = sqrt(rsq1); + + // 2nd bond + delx2 = x[atom3][0] - x[atom2][0]; + dely2 = x[atom3][1] - x[atom2][1]; + delz2 = x[atom3][2] - x[atom2][2]; + rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2; + r2 = sqrt(rsq2); + + // angle (cos and sin) + c = delx1*delx2 + dely1*dely2 + delz1*delz2; + c /= r1*r2; + if (c > 1.0) c = 1.0; + if (c < -1.0) c = -1.0; + if (acos(c) < constraints[i][5] || acos(c) > constraints[i][6]) return 0; + } } } return 1; @@ -2750,15 +2806,20 @@ void FixBondReact::read(int myrxn) if (strspn(line," \t\n\r") == strlen(line)) continue; if (strstr(line,"edgeIDs")) sscanf(line,"%d",&nedge); - else if (strstr(line,"equivalences")) sscanf(line,"%d",&nequivalent); + else if (strstr(line,"equivalences")) { + sscanf(line,"%d",&nequivalent); + if (nequivalent != onemol->natoms) + error->one(FLERR,"Bond/react: Number of equivalences in map file must " + "equal number of atoms in reaction templates"); + } else if (strstr(line,"customIDs")) sscanf(line,"%d",&ncustom); else if (strstr(line,"deleteIDs")) sscanf(line,"%d",&ndelete); - else if (strstr(line,"constraints")) sscanf(line,"%d",&nconstraints[myrxn]); - else break; + else if (strstr(line,"constraints")) { + sscanf(line,"%d",&nconstr); + memory->grow(constraints,nconstraints+nconstr,MAXCONARGS,"bond/react:constraints"); + } else break; } - //count = NULL; - // grab keyword and skip next line parse_keyword(0,line,keyword); @@ -2867,18 +2928,28 @@ void FixBondReact::Constraints(char *line, int myrxn) double tmp[MAXCONARGS]; int n = strlen("distance") + 1; char *constraint_type = new char[n]; - for (int i = 0; i < nconstraints[myrxn]; i++) { + for (int i = 0; i < nconstr; i++) { readline(line); sscanf(line,"%s",constraint_type); + constraints[nconstraints][0] = myrxn; if (strcmp(constraint_type,"distance") == 0) { - constraints[myrxn][0] = 0; // 0 = 'distance' ...maybe use another enum eventually + constraints[nconstraints][1] = DISTANCE; sscanf(line,"%*s %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3]); - constraints[myrxn][1] = tmp[0]; - constraints[myrxn][2] = tmp[1]; - constraints[myrxn][3] = tmp[2]*tmp[2]; // using square of distance - constraints[myrxn][4] = tmp[3]*tmp[3]; + constraints[nconstraints][2] = tmp[0]; + constraints[nconstraints][3] = tmp[1]; + constraints[nconstraints][4] = tmp[2]*tmp[2]; // using square of distance + constraints[nconstraints][5] = tmp[3]*tmp[3]; + } else if (strcmp(constraint_type,"angle") == 0) { + constraints[nconstraints][1] = ANGLE; + sscanf(line,"%*s %lg %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3],&tmp[4]); + constraints[nconstraints][2] = tmp[0]; + constraints[nconstraints][3] = tmp[1]; + constraints[nconstraints][4] = tmp[2]; + constraints[nconstraints][5] = tmp[3]/180.0 * MY_PI; + constraints[nconstraints][6] = tmp[4]/180.0 * MY_PI; } else error->one(FLERR,"Bond/react: Illegal constraint type in 'Constraints' section of map file"); + nconstraints++; } delete [] constraint_type; } @@ -3098,6 +3169,42 @@ void FixBondReact::unpack_reverse_comm(int n, int *list, double *buf) } } +/* ---------------------------------------------------------------------- + write Set data to restart file +------------------------------------------------------------------------- */ + +void FixBondReact::write_restart(FILE *fp) +{ + set[0].nreacts = nreacts; + for (int i = 0; i < nreacts; i++) { + set[i].reaction_count_total = reaction_count_total[i]; + int n = strlen(rxn_name[i]) + 1; + strncpy(set[i].rxn_name,rxn_name[i],n); + } + + if (me == 0) { + int size = nreacts*sizeof(Set); + fwrite(&size,sizeof(int),1,fp); + fwrite(set,sizeof(Set),nreacts,fp); + } +} + +/* ---------------------------------------------------------------------- + use selected state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixBondReact::restart(char *buf) +{ + Set *set_restart = (Set *) buf; + for (int i = 0; i < set_restart[0].nreacts; i++) { + for (int j = 0; j < nreacts; j++) { + if (strcmp(set_restart[i].rxn_name,rxn_name[j]) == 0) { + reaction_count_total[j] = set_restart[i].reaction_count_total; + } + } + } +} + /* ---------------------------------------------------------------------- memory usage of local atom-based arrays ------------------------------------------------------------------------- */ diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index 1ac8d624a9..eda26f129d 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -30,6 +30,9 @@ namespace LAMMPS_NS { class FixBondReact : public Fix { public: + + enum {MAXLINE=256}; + FixBondReact(class LAMMPS *, int, char **); ~FixBondReact(); int setmask(); @@ -61,7 +64,7 @@ class FixBondReact : public Fix { int custom_exclude_flag; int *stabilize_steps_flag; int *update_edges_flag; - int *nconstraints; + int nconstraints; double **constraints; int status; int *groupbits; @@ -105,7 +108,7 @@ class FixBondReact : public Fix { int *ibonding,*jbonding; int *closeneigh; // indicates if bonding atoms of a rxn are 1-2, 1-3, or 1-4 neighbors - int nedge,nequivalent,ncustom,ndelete; // number of edge, equivalent, custom atoms in mapping file + int nedge,nequivalent,ncustom,ndelete,nconstr; // # edge, equivalent, custom atoms in mapping file int attempted_rxn; // there was an attempt! int *local_rxn_count; int *ghostly_rxn_count; @@ -170,6 +173,15 @@ class FixBondReact : public Fix { void unlimit_bond(); void limit_bond(int); void dedup_mega_gloves(int); //dedup global mega_glove + virtual void write_restart(FILE *); + virtual void restart(char *buf); + + struct Set { + int nreacts; + char rxn_name[MAXLINE]; + int reaction_count_total; + }; + Set *set; // DEBUG diff --git a/src/USER-MISC/pair_ilp_graphene_hbn.h b/src/USER-MISC/pair_ilp_graphene_hbn.h index ec6146fa33..5ca8eb64a7 100644 --- a/src/USER-MISC/pair_ilp_graphene_hbn.h +++ b/src/USER-MISC/pair_ilp_graphene_hbn.h @@ -48,7 +48,7 @@ class PairILPGrapheneHBN : public Pair { MyPage *ipage; // neighbor list pages int *ILP_numneigh; // # of pair neighbors for each atom int **ILP_firstneigh; // ptr to 1st neighbor of each atom - int tap_flag; // flag to turn on/off taper function + int tap_flag; // flag to turn on/off taper function struct Param { double z0,alpha,epsilon,C,delta,d,sR,reff,C6,S; diff --git a/src/USER-MISC/pair_kolmogorov_crespi_full.h b/src/USER-MISC/pair_kolmogorov_crespi_full.h index d2971e3fbc..c579788110 100644 --- a/src/USER-MISC/pair_kolmogorov_crespi_full.h +++ b/src/USER-MISC/pair_kolmogorov_crespi_full.h @@ -48,7 +48,7 @@ class PairKolmogorovCrespiFull : public Pair { MyPage *ipage; // neighbor list pages int *KC_numneigh; // # of pair neighbors for each atom int **KC_firstneigh; // ptr to 1st neighbor of each atom - int tap_flag; // flag to turn on/off taper function + int tap_flag; // flag to turn on/off taper function struct Param { diff --git a/src/USER-MISC/pair_local_density.cpp b/src/USER-MISC/pair_local_density.cpp new file mode 100644 index 0000000000..9057b061b0 --- /dev/null +++ b/src/USER-MISC/pair_local_density.cpp @@ -0,0 +1,892 @@ +/* -*- 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: + Tanmoy Sanyal, M.Scott Shell, UC Santa Barbara + David Rosenberger, TU Darmstadt +------------------------------------------------------------------------- */ + +#include "pair_local_density.h" +#include +#include +#include +#include +#include +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "error.h" +#include "domain.h" +#include "citeme.h" + +using namespace LAMMPS_NS; + +#define MAXLINE 1024 + +static const char cite_pair_local_density[] = + "pair_style local/density command:\n\n" + "@Article{Sanyal16,\n" + " author = {T.Sanyal and M.Scott Shell},\n" + " title = {Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation},\n" + " journal = {J.~Chem.~Phys.},\n" + " year = 2016,\n" + " DOI = doi.org/10.1063/1.4958629" + "}\n\n" + "@Article{Sanyal18,\n" + " author = {T.Sanyal and M.Scott Shell},\n" + " title = {Transferable coarse-grained models of liquid-liquid equilibrium using local density potentials optimized with the relative entropy},\n" + " journal = {J.~Phys.~Chem. B},\n" + " year = 2018,\n" + " DOI = doi.org/10.1021/acs.jpcb.7b12446" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +PairLocalDensity::PairLocalDensity(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + one_coeff = 1; + single_enable = 1; + + // stuff read from tabulated file + nLD = 0; + nrho = 0; + rho_min = NULL; + rho_max = NULL; + a = NULL; + b = NULL; + c0 = NULL; + c2 = NULL; + c4 = NULL; + c6 = NULL; + uppercut = NULL; + lowercut = NULL; + uppercutsq = NULL; + lowercutsq = NULL; + frho = NULL; + rho = NULL; + + // splined arrays + frho_spline = NULL; + + // per-atom arrays + nmax = 0; + fp = NULL; + localrho = NULL; + + // set comm size needed by this pair + comm_forward = 1; + comm_reverse = 1; + + // cite publication + if (lmp->citeme) lmp->citeme->add(cite_pair_local_density); +} + +/* ---------------------------------------------------------------------- + check if allocated, since class can be destructed when incomplete +------------------------------------------------------------------------- */ + +PairLocalDensity::~PairLocalDensity() +{ + + memory->destroy(localrho); + memory->destroy(fp); + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + } + + memory->destroy(frho_spline); + + memory->destroy(rho_min); + memory->destroy(rho_max); + memory->destroy(delta_rho); + memory->destroy(c0); + memory->destroy(c2); + memory->destroy(c4); + memory->destroy(c6); + memory->destroy(uppercut); + memory->destroy(lowercut); + memory->destroy(uppercutsq); + memory->destroy(lowercutsq); + memory->destroy(frho); + memory->destroy(rho); + + memory->destroy(a); + memory->destroy(b); +} + +/* ---------------------------------------------------------------------- */ + +void PairLocalDensity::compute(int eflag, int vflag) +{ + + int i,j,ii,jj,m,k,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + double rsqinv, phi, uLD, dphi, evdwl,fpair; + double p, *coeff; + int *ilist,*jlist,*numneigh,**firstneigh; + + phi = uLD = evdwl = fpair = rsqinv = 0.0; + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = eflag_global = eflag_atom = 0; + + /* localrho = LD at each atom + fp = derivative of embedding energy at each atom for each LD potential + uLD = embedding energy of each atom due to each LD potential*/ + + // grow LD and fp arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(localrho); + memory->destroy(fp); + nmax = atom->nmax; + memory->create(localrho, nLD, nmax, "pairLD:localrho"); + memory->create(fp, nLD, nmax, "pairLD:fp"); + } + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // zero out LD and fp + + if (newton_pair) { + m = nlocal + atom->nghost; + for (k = 0; k < nLD; k++) { + for (i = 0; i < m; i++) { + localrho[k][i] = 0.0; + fp[k][i] = 0.0; + } + } + } + else { + for (k = 0; k < nLD; k++){ + for (i = 0; i < nlocal; i++) { + localrho[k][i] = 0.0; + fp[k][i] = 0.0; + } + } + } + + // loop over neighs of central atoms and types of LDs + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + + // calculate distance-squared between i,j atom-types + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + // calculating LDs based on central and neigh filters + + for (k = 0; k < nLD; k++) { + if (rsq < lowercutsq[k]) { + phi = 1.0; + } + else if (rsq > uppercutsq[k]) { + phi = 0.0; + } + else { + phi = c0[k] + rsq * (c2[k] + rsq * (c4[k] + c6[k]*rsq)); + } + localrho[k][i] += (phi * b[k][jtype]); + + /*checking for both i,j is necessary + since a half neighbor list is processed.*/ + + if (newton_pair || jreverse_comm_pair(this); + + // + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + uLD = 0.0; + + for (k = 0; k < nLD; k++) { + + /*skip over this loop if the LD potential + is not intendend for central atomtype */ + if (!(a[k][itype])) continue; + + // linear extrapolation at rho_min and rho_max + + if (localrho[k][i] <= rho_min[k]) { + coeff = frho_spline[k][0]; + fp[k][i] = coeff[2]; + uLD += a[k][itype] * ( coeff[6] + fp[k][i]*(localrho[k][i] - rho_min[k]) ); + } + else if (localrho[k][i] >= rho_max[k]) { + coeff = frho_spline[k][nrho-2]; + fp[k][i] = coeff[0] + coeff[1] + coeff[2]; + uLD += a[k][itype] * ( (coeff[3] + coeff[4] + coeff[5] + coeff[6]) + fp[k][i]*(localrho[k][i] - rho_max[k]) ); + } + else { + p = (localrho[k][i] - rho_min[k]) / delta_rho[k]; + m = static_cast (p); + m = MAX(0, MIN(m, nrho-2)); + p -= m; + p = MIN(p, 1.0); + coeff = frho_spline[k][m]; + fp[k][i] = (coeff[0]*p + coeff[1])*p + coeff[2]; + uLD += a[k][itype] * (((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]); + } + } + + if (eflag) { + if (eflag_global) eng_vdwl += uLD; + if (eflag_atom) eatom[i] += uLD; + } + } + + // communicate LD and fp to all procs + + comm->forward_comm_pair(this); + + // compute forces on each atom + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + + // calculate square of distance between i,j atoms + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + // calculate force between two atoms + fpair = 0.0; + if (rsq < cutforcesq) { // global cutoff check + rsqinv = 1.0/rsq; + for (k = 0; k < nLD; k++) { + if (rsq >= lowercutsq[k] && rsq < uppercutsq[k]) { + dphi = rsq * (2.0*c2[k] + rsq * (4.0*c4[k] + 6.0*c6[k]*rsq)); + fpair += -(a[k][itype]*b[k][jtype]*fp[k][i] + a[k][jtype]*b[k][itype]*fp[k][j]) * dphi; + } + } + fpair *= rsqinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + /*eng_vdwl has already been completely built, + so no need to add anything here*/ + + if (eflag) evdwl = 0.0; + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,0.0,fpair,delx,dely,delz); + } + + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairLocalDensity::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(cutsq,n+1,n+1,"pair:cutsq"); + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairLocalDensity::settings(int narg, char **arg) +{ + if (narg > 0) error->all(FLERR,"Illegal pair_style command"); +} + +/* ---------------------------------------------------------------------- + set coeffs for all type pairs + read tabulated LD input file +------------------------------------------------------------------------- */ + +void PairLocalDensity::coeff(int narg, char **arg) +{ + int i, j; + if (!allocated) allocate(); + + if (narg != 3) error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // parse LD file + + parse_file(arg[2]); + + + // clear setflag since coeff() called once with I,J = * * + + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) + setflag[i][j] = 0; + + // set setflag for all i,j type pairs + + int count = 0; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + setflag[i][j] = 1; + count++; + } + } + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLocalDensity::init_style() +{ + // spline rho and frho arrays + // request half neighbor list + + array2spline(); + + // half neighbor request + neighbor->request(this); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairLocalDensity::init_one(int i, int j) +{ + // single global cutoff = max of all uppercuts read in from LD file + + cutmax = 0.0; + for (int k = 0; k < nLD; k++) + cutmax = MAX(cutmax,uppercut[k]); + + cutforcesq = cutmax*cutmax; + + return cutmax; +} + + +/*-------------------------------------------------------------------------- + pair_write functionality for this pair style that gives just a snap-shot + of the LD potential without doing an actual MD run + ---------------------------------------------------------------------------*/ + +double PairLocalDensity::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + int m, k, index; + double rsqinv, p, uLD; + double *coeff, **LD; + double dFdrho, phi, dphi; + + uLD = dFdrho = dphi = 0.0; + + memory->create(LD, nLD, 3, "pairLD:LD"); + for (k = 0; k < nLD; k++) { + LD[k][1] = 0.0; // itype:- 1 + LD[k][2] = 0.0; // jtype:- 2 + } + + rsqinv = 1.0/rsq; + for (k = 0; k < nLD; k++) { + if (rsq < lowercutsq[k]) { + phi = 1.0; + } + else if (rsq > uppercutsq[k]) { + phi = 0.0; + } + else { + phi = c0[k] + rsq * (c2[k] + rsq * (c4[k] + c6[k]*rsq)); + } + LD[k][1] += (phi * b[k][jtype]); + LD[k][2] += (phi * b[k][itype]); + } + + for (k = 0; k < nLD; k++) { + if (a[k][itype]) index = 1; + if (a[k][jtype]) index = 2; + + if (LD[k][index] <= rho_min[k]) { + coeff = frho_spline[k][0]; + dFdrho = coeff[2]; + uLD += a[k][itype] * ( coeff[6] + dFdrho*(LD[k][index] - rho_min[k]) ); + } + else if (LD[k][index] >= rho_max[k]) { + coeff = frho_spline[k][nrho-1]; + dFdrho = coeff[0] + coeff[1] + coeff[2]; + uLD += a[k][itype] * ( (coeff[3] + coeff[4] + coeff[5] + coeff[6]) + dFdrho*(LD[k][index] - rho_max[k]) ); + } + else { + p = (LD[k][index] - rho_min[k]) / delta_rho[k]; + m = static_cast (p); + m = MAX(0, MIN(m, nrho-2)); + p -= m; + p = MIN(p, 1.0); + coeff = frho_spline[k][m]; + dFdrho = (coeff[0]*p + coeff[1])*p + coeff[2]; + uLD += a[k][itype] * (((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]); + } + + if (rsq < lowercutsq[k]) { + dphi = 0.0; + } + else if (rsq > uppercutsq[k]) { + dphi = 0.0; + } + else { + dphi = rsq * (2.0*c2[k] + rsq * (4.0*c4[k] + 6.0*c6[k]*rsq)); + } + fforce += -(a[k][itype]*b[k][jtype]*dFdrho + a[k][jtype]*b[k][itype]*dFdrho) * dphi *rsqinv; + } + memory->destroy(LD); + + return uLD; +} + +/*-------------------------------------------------------------------- + spline the array frho read in from the file to create + frho_spline +---------------------------------------------------------------------- */ + +void PairLocalDensity::array2spline() { + memory->destroy(frho_spline); + memory->create(frho_spline, nLD, nrho, 7, "pairLD:frho_spline"); + + for (int k = 0; k < nLD; k++) + interpolate_cbspl(nrho, delta_rho[k], frho[k], frho_spline[k]); + +} + +/* ---------------------------------------------------------------------- + (one-dimensional) cubic spline interpolation sub-routine, + which determines the coeffs for a clamped cubic spline + given tabulated data + ------------------------------------------------------------------------*/ + +void PairLocalDensity::interpolate_cbspl(int n, double delta, + double *f, double **spline) +{ +/* inputs: + n number of interpolating points + + f array containing function values to + be interpolated; f[i] is the function + value corresponding to x[i] + ('x' refers to the independent var) + + delta difference in tabulated values of x + + outputs: (packaged as columns of the coeff matrix) + coeff_b coeffs of linear terms + coeff_c coeffs of quadratic terms + coeff_d coeffs of cubic terms + spline matrix that collects b,c,d + + + other parameters: + fpa derivative of function at x=a + fpb derivative of function at x=b +*/ + + double *dl, *dd, *du; + double *coeff_b, *coeff_c, *coeff_d; + double fpa, fpb; + + int i; + + coeff_b = new double [n]; + coeff_c = new double [n]; + coeff_d = new double [n]; + dl = new double [n]; + dd = new double [n]; + du = new double [n]; + + // initialize values + for ( i = 0; i= 0; i-- ) + coeff_c[i] -= coeff_c[i+1] * du[i]; + + for ( i = 0; i < n-1; i++ ) { + coeff_d[i] = ( coeff_c[i+1] - coeff_c[i] ) / ( 3.0 * delta ); + coeff_b[i] = ( f[i+1] - f[i] ) / delta - delta * ( coeff_c[i+1] + 2.0*coeff_c[i] ) / 3.0; + } + + // normalize + for ( i = 0; i < n-1; i++ ) { + coeff_b[i] = coeff_b[i] * delta ; + coeff_c[i] = coeff_c[i] * delta*delta ; + coeff_d[i] = coeff_d[i] * delta*delta*delta; + } + + //copy to coefficient matrix + for ( i = 0; i < n; i++) { + spline[i][3] = coeff_d[i]; + spline[i][4] = coeff_c[i]; + spline[i][5] = coeff_b[i]; + spline[i][6] = f[i]; + spline[i][2] = spline[i][5]/delta; + spline[i][1] = 2.0*spline[i][4]/delta; + spline[i][0] = 3.0*spline[i][3]/delta; + } + + delete [] coeff_b; + delete [] coeff_c; + delete [] coeff_d; + delete [] du; + delete [] dd; + delete [] dl; +} + +/* ---------------------------------------------------------------------- + read potential values from tabulated LD input file +------------------------------------------------------------------------- */ + +void PairLocalDensity::parse_file(char *filename) { + + int k, n; + int me = comm->me; + FILE *fptr; + char line[MAXLINE]; + double ratio, lc2, uc2, denom; + + + if (me == 0) { + fptr = fopen(filename, "r"); + if (fptr == NULL) { + char str[128]; + sprintf(str,"Cannot open Local Density potential file %s",filename); + error->one(FLERR,str); + } + } + + double *ftmp; // tmp var to extract the complete 2D frho array from file + + // broadcast number of LD potentials and number of (rho,frho) pairs + if (me == 0) { + + // first 2 comment lines ignored + fgets(line,MAXLINE,fptr); + fgets(line,MAXLINE,fptr); + + // extract number of potentials and number of (frho, rho) points + fgets(line,MAXLINE,fptr); + sscanf(line, "%d %d", &nLD, &nrho); + fgets(line,MAXLINE,fptr); + } + + MPI_Bcast(&nLD,1,MPI_INT,0,world); + MPI_Bcast(&nrho,1,MPI_INT,0,world); + + // setting up all arrays to be read from files and broadcasted + memory->create(uppercut, nLD, "pairLD:uppercut"); + memory->create(lowercut, nLD, "pairLD:lowercut"); + memory->create(uppercutsq, nLD, "pairLD:uppercutsq"); + memory->create(lowercutsq, nLD, "pairLD:lowercutsq"); + memory->create(c0, nLD, "pairLD:c0"); + memory->create(c2, nLD, "pairLD:c2"); + memory->create(c4, nLD, "pairLD:c4"); + memory->create(c6, nLD, "pairLD:c6"); + memory->create(rho_min, nLD, "pairLD:rho_min"); + memory->create(rho_max, nLD, "pairLD:rho_max"); + memory->create(delta_rho, nLD,"pairLD:delta_rho"); + memory->create(ftmp, nrho*nLD, "pairLD:ftmp"); + + // setting up central and neighbor atom filters + memory->create(a, nLD, atom->ntypes+1 , "pairLD:a"); + memory->create(b, nLD, atom->ntypes+1, "pairLD:b"); + if (me == 0) { + for (n = 1; n <= atom->ntypes; n++){ + for (k = 0; k < nLD; k++) { + a[k][n] = 0; + b[k][n] = 0; + } + } + } + + // read file block by block + + if (me == 0) { + for (k = 0; k < nLD; k++) { + + // parse upper and lower cut values + if (fgets(line,MAXLINE,fptr)==NULL) break; + sscanf(line, "%lf %lf", &lowercut[k], &uppercut[k]); + + // parse and broadcast central atom filter + fgets(line, MAXLINE, fptr); + char *tmp = strtok(line, " /t/n/r/f"); + while (tmp != NULL) { + a[k][atoi(tmp)] = 1; + tmp = strtok(NULL, " /t/n/r/f"); + } + + // parse neighbor atom filter + fgets(line, MAXLINE, fptr); + tmp = strtok(line, " /t/n/r/f"); + while (tmp != NULL) { + b[k][atoi(tmp)] = 1; + tmp = strtok(NULL, " /t/n/r/f"); + } + + // parse min, max and delta rho values + fgets(line, MAXLINE, fptr); + sscanf(line, "%lf %lf %lf", &rho_min[k], &rho_max[k], &delta_rho[k]); + // recompute delta_rho from scratch for precision + delta_rho[k] = (rho_max[k] - rho_min[k]) / (nrho - 1); + + // parse tabulated frho values from each line into temporary array + for (n = 0; n < nrho; n++) { + fgets(line,MAXLINE,fptr); + sscanf(line, "%lf", &ftmp[k*nrho + n]); + } + + // ignore blank line at the end of every block + fgets(line,MAXLINE,fptr); + + // set coefficients for local density indicator function + uc2 = uppercut[k] * uppercut[k]; + uppercutsq[k] = uc2; + lc2 = lowercut[k] * lowercut[k]; + lowercutsq[k] = lc2; + ratio = lc2/uc2; + denom = 1.0 - ratio; + denom = denom*denom*denom; + c0[k] = (1 - 3.0 * ratio) / denom; + c2[k] = (6.0 * ratio) / (uc2 * denom); + c4[k] = -(3.0 + 3.0*ratio) / (uc2*uc2 * denom); + c6[k] = 2.0 / (uc2*uc2*uc2 * denom); + } + } + + // Broadcast all parsed arrays + MPI_Bcast(&lowercut[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&uppercut[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&lowercutsq[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&uppercutsq[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&c0[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&c2[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&c4[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&c6[0], nLD, MPI_DOUBLE, 0, world); + for (k = 0; k < nLD; k++) { + MPI_Bcast(&a[k][1], atom->ntypes, MPI_INT, 0, world); + MPI_Bcast(&b[k][1], atom->ntypes, MPI_INT, 0, world); + } + MPI_Bcast(&rho_min[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&rho_max[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&delta_rho[0], nLD, MPI_DOUBLE, 0, world); + MPI_Bcast(&ftmp[0], nLD*nrho, MPI_DOUBLE, 0, world); + + if (me == 0) fclose(fptr); + + // set up rho and frho arrays + memory->create(rho, nLD, nrho, "pairLD:rho"); + memory->create(frho, nLD, nrho, "pairLD:frho"); + + for (k = 0; k < nLD; k++) { + for (n = 0; n < nrho; n++) { + rho[k][n] = rho_min[k] + n*delta_rho[k]; + frho[k][n] = ftmp[k*nrho + n]; + } + } + + // delete temporary array + memory->destroy(ftmp); +} + +/* ---------------------------------------------------------------------- + communication routines +------------------------------------------------------------------------- */ + +int PairLocalDensity::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { + int i,j,k; + int m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + for (k = 0; k < nLD; k++) { + buf[m++] = fp[k][j]; + } + } + + return nLD; +} + +/* ---------------------------------------------------------------------- */ + +void PairLocalDensity::unpack_comm(int n, int first, double *buf) { + + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + for (k = 0; k < nLD; k++) { + fp[k][i] = buf[m++]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int PairLocalDensity::pack_reverse_comm(int n, int first, double *buf) { + + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + for (k = 0; k < nLD; k++) { + buf[m++] = localrho[k][i]; + } + } + return nLD; +} + +/* ---------------------------------------------------------------------- */ + +void PairLocalDensity::unpack_reverse_comm(int n, int *list, double *buf) { + + int i,j,k; + int m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + for (k = 0; k < nLD; k++) { + localrho[k][j] += buf[m++]; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double PairLocalDensity::memory_usage() +{ + double bytes = maxeatom * sizeof(double); + bytes += maxvatom*6 * sizeof(double); + bytes += 2 * (nmax*nLD) * sizeof(double); + return bytes; +} + diff --git a/src/USER-MISC/pair_local_density.h b/src/USER-MISC/pair_local_density.h new file mode 100644 index 0000000000..77aab1399b --- /dev/null +++ b/src/USER-MISC/pair_local_density.h @@ -0,0 +1,88 @@ +/* -*- 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. +------------------------------------------------------------------------- + pair_LocalDensity written by: + Tanmoy Sanyal and M. Scott Shell from UC Santa Barbara + David Rosenberger: TU Darmstadt +-------------------------------------------------------------------------*/ + + +#ifdef PAIR_CLASS + +PairStyle(local/density,PairLocalDensity) + +#else + +#ifndef LMP_PAIR_LOCAL_DENSITY_H +#define LMP_PAIR_LOCAL_DENSITY_H + +#include "pair.h" + + +namespace LAMMPS_NS { + +class PairLocalDensity : public Pair { + public: + PairLocalDensity(class LAMMPS *); + virtual ~PairLocalDensity(); + virtual void compute(int, int); + void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + double single(int, int, int, int, double, double, double, double &); + + virtual int pack_comm(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + double memory_usage(); + + + protected: + //------------------------------------------------------------------------ + //This information is read from the tabulated input file + + int nLD, nrho; // number of LD types + int **a, **b; // central and neigh atom filters + double *uppercut, *lowercut; // upper and lower cutoffs + double *uppercutsq, *lowercutsq; // square of above cutoffs + double *c0, *c2, *c4, *c6; // coeffs for indicator function + double *rho_min, *rho_max, *delta_rho; // min, max & grid-size for LDs + double **rho, **frho; // LD and LD function tables + + //------------------------------------------------------------------------ + + double ***frho_spline; // splined LD potentials + double cutmax; // max cutoff for all elements + double cutforcesq; // square of global upper cutoff + + int nmax; // max size of per-atom arrays + double **localrho; // per-atom LD + double **fp; // per-atom LD potential function derivative + + void allocate(); + + // read tabulated input file + void parse_file(char *); + + // convert array to spline + void array2spline(); + + // cubic spline interpolation + void interpolate_cbspl(int, double, double *, double **); +}; + +} + +#endif +#endif diff --git a/src/USER-OMP/pppm_omp.cpp b/src/USER-OMP/pppm_omp.cpp index 3ef3de1ab7..c6aaafaa31 100644 --- a/src/USER-OMP/pppm_omp.cpp +++ b/src/USER-OMP/pppm_omp.cpp @@ -48,7 +48,7 @@ using namespace MathSpecial; PPPMOMP::PPPMOMP(LAMMPS *lmp) : PPPM(lmp), ThrOMP(lmp, THR_KSPACE) { - triclinic_support = 0; + triclinic_support = 1; suffix_flag |= Suffix::OMP; } diff --git a/src/USER-OMP/pppm_tip4p_omp.cpp b/src/USER-OMP/pppm_tip4p_omp.cpp index d7c12613d9..1a2bcfc0a3 100644 --- a/src/USER-OMP/pppm_tip4p_omp.cpp +++ b/src/USER-OMP/pppm_tip4p_omp.cpp @@ -750,11 +750,18 @@ void PPPMTIP4POMP::find_M_thr(int i, int &iH1, int &iH2, dbl3_t &xM) // since local atoms are in lambda coordinates, but ghosts are not. int *sametag = atom->sametag; - double xo[3],xh1[3],xh2[3]; + double xo[3],xh1[3],xh2[3],xm[3]; + const int nlocal = atom->nlocal; - domain->lamda2x(x[i],xo); - domain->lamda2x(x[iH1],xh1); - domain->lamda2x(x[iH2],xh2); + for (int ii = 0; ii < 3; ++ii) { + xo[ii] = x[i][ii]; + xh1[ii] = x[iH1][ii]; + xh2[ii] = x[iH2][ii]; + } + + if (i < nlocal) domain->lamda2x(x[i],xo); + if (iH1 < nlocal) domain->lamda2x(x[iH1],xh1); + if (iH2 < nlocal) domain->lamda2x(x[iH2],xh2); double delx = xo[0] - xh1[0]; double dely = xo[1] - xh1[1]; @@ -763,6 +770,7 @@ void PPPMTIP4POMP::find_M_thr(int i, int &iH1, int &iH2, dbl3_t &xM) double rsq; int closest = iH1; + // no need to run lamda2x here -> ghost atoms while (sametag[iH1] >= 0) { iH1 = sametag[iH1]; delx = xo[0] - x[iH1][0]; @@ -811,13 +819,13 @@ void PPPMTIP4POMP::find_M_thr(int i, int &iH1, int &iH2, dbl3_t &xM) double dely2 = xh2[1] - xo[1]; double delz2 = xh2[2] - xo[2]; - xM.x = xo[0] + alpha * 0.5 * (delx1 + delx2); - xM.y = xo[1] + alpha * 0.5 * (dely1 + dely2); - xM.z = xo[2] + alpha * 0.5 * (delz1 + delz2); + xm[0] = xo[0] + alpha * 0.5 * (delx1 + delx2); + xm[1] = xo[1] + alpha * 0.5 * (dely1 + dely2); + xm[2] = xo[2] + alpha * 0.5 * (delz1 + delz2); // ... and convert M to lamda space for PPPM - domain->x2lamda((double *)&xM,(double *)&xM); + domain->x2lamda(xm,(double *)&xM); } else { diff --git a/src/USER-PHONON/Install.sh b/src/USER-PHONON/Install.sh index 26104b45cf..a73f529cfa 100755 --- a/src/USER-PHONON/Install.sh +++ b/src/USER-PHONON/Install.sh @@ -42,3 +42,5 @@ action fix_phonon.cpp fft3d_wrap.h action fix_phonon.h fft3d_wrap.h action dynamical_matrix.cpp action dynamical_matrix.h +action third_order.cpp +action third_order.h diff --git a/src/USER-PHONON/README b/src/USER-PHONON/README index b554eacd5e..d5ed666c0c 100644 --- a/src/USER-PHONON/README +++ b/src/USER-PHONON/README @@ -3,11 +3,11 @@ matrices from finite temperature MD simulations, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations. -It also contains a command to compute the dynamical matrix at -pre-optimized positions through finite differences. +It also contains commands to compute the dynamical matrix and third +order tensor at pre-optimized positions through finite differences. See the doc page for the fix phonon command or the dynamical_matrix -command for detailed usage instructions. +or third_order commands for detailed usage instructions. Use of this package requires building LAMMPS with FFT suppport, as described in doc/Section_start.html. diff --git a/src/USER-PHONON/dynamical_matrix.cpp b/src/USER-PHONON/dynamical_matrix.cpp index 559ef4c36f..fe266fba76 100644 --- a/src/USER-PHONON/dynamical_matrix.cpp +++ b/src/USER-PHONON/dynamical_matrix.cpp @@ -66,11 +66,6 @@ void DynamicalMatrix::setup() domain->image_check(); domain->box_too_small_check(); neighbor->build(1); - neighbor->ncalls = 0; - neighbor->every = 2; // build every this many steps - neighbor->delay = 1; - neighbor->ago = 0; - neighbor->ndanger = 0; // compute all forces external_force_clear = 0; @@ -273,7 +268,7 @@ void DynamicalMatrix::calculateMatrix() local_idx = atom->map(i); if (gm[i-1] < 0) continue; - for (bigint alpha=0; alpha<3; alpha++){ + for (int alpha=0; alpha<3; alpha++){ displace_atom(local_idx, alpha, 1); update_force(); for (bigint j=1; j<=natoms; j++){ @@ -291,7 +286,7 @@ void DynamicalMatrix::calculateMatrix() local_jdx = atom->map(j); if (local_idx >= 0 && local_jdx >= 0 && local_jdx < nlocal && gm[j-1] >= 0){ - for (bigint beta=0; beta<3; beta++){ + for (int beta=0; beta<3; beta++){ if (atom->rmass_flag == 1) imass = sqrt(m[local_idx] * m[local_jdx]); else diff --git a/src/USER-PHONON/third_order.cpp b/src/USER-PHONON/third_order.cpp new file mode 100644 index 0000000000..7764287337 --- /dev/null +++ b/src/USER-PHONON/third_order.cpp @@ -0,0 +1,575 @@ +// +// Created by charlie sievers on 7/5/18. +// + +#include "third_order.h" +#include +#include +#include +#include "atom.h" +#include "domain.h" +#include "comm.h" +#include "error.h" +#include "group.h" +#include "force.h" +#include "memory.h" +#include "bond.h" +#include "angle.h" +#include "dihedral.h" +#include "improper.h" +#include "kspace.h" +#include "update.h" +#include "neighbor.h" +#include "pair.h" +#include "timer.h" +#include "finish.h" +#include "math_special.h" +#include +#include + +using namespace LAMMPS_NS; +using namespace MathSpecial; +enum{REGULAR,BALLISTICO}; + +/* ---------------------------------------------------------------------- */ + +ThirdOrder::ThirdOrder(LAMMPS *lmp) : Pointers(lmp), fp(NULL) +{ + external_force_clear = 1; +} + +/* ---------------------------------------------------------------------- */ + +ThirdOrder::~ThirdOrder() +{ + if (fp && me == 0) fclose(fp); + fp = NULL; + memory->destroy(groupmap); +} + +/* ---------------------------------------------------------------------- + setup without output or one-time post-init setup + flag = 0 = just force calculation + flag = 1 = reneighbor and force calculation +------------------------------------------------------------------------- */ + +void ThirdOrder::setup() +{ + // setup domain, communication and neighboring + // acquire ghosts + // build neighbor lists + if (triclinic) domain->x2lamda(atom->nlocal); + domain->pbc(); + domain->reset_box(); + comm->setup(); + if (neighbor->style) neighbor->setup_bins(); + comm->exchange(); + comm->borders(); + if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost); + domain->image_check(); + domain->box_too_small_check(); + neighbor->build(1); + + // compute all forces + external_force_clear = 0; + eflag=0; + vflag=0; + update_force(); + + if (gcount == atom->natoms) + for (bigint i=0; inatoms; i++) + groupmap[i] = i; + else + create_groupmap(); +} + +/* ---------------------------------------------------------------------- */ + +void ThirdOrder::command(int narg, char **arg) +{ + MPI_Comm_rank(world,&me); + + if (domain->box_exist == 0) + error->all(FLERR,"third_order command before simulation box is defined"); + if (narg < 2) error->all(FLERR,"Illegal third_order command"); + + lmp->init(); + + // orthogonal vs triclinic simulation box + + triclinic = domain->triclinic; + + if (force->pair && force->pair->compute_flag) pair_compute_flag = 1; + else pair_compute_flag = 0; + if (force->kspace && force->kspace->compute_flag) kspace_compute_flag = 1; + else kspace_compute_flag = 0; + + // group and style + + igroup = group->find(arg[0]); + if (igroup == -1) error->all(FLERR,"Could not find dynamical matrix group ID"); + groupbit = group->bitmask[igroup]; + gcount = group->count(igroup); + dynlen = (gcount)*3; + memory->create(groupmap,atom->natoms,"total_group_map:totalgm"); + update->setupflag = 1; + + int style = -1; + if (strcmp(arg[1],"regular") == 0) style = REGULAR; + else if (strcmp(arg[1],"eskm") == 0) style = BALLISTICO; + else error->all(FLERR,"Illegal Dynamical Matrix command"); + + // set option defaults + + binaryflag = 0; + scaleflag = 0; + compressed = 0; + file_flag = 0; + file_opened = 0; + conversion = 1; + + // read options from end of input line + if (style == REGULAR) options(narg-3,&arg[3]); //COME BACK + else if (style == BALLISTICO) options(narg-3,&arg[3]); //COME BACK + else if (comm->me == 0 && screen) fprintf(screen,"Illegal Dynamical Matrix command\n"); + del = force->numeric(FLERR, arg[2]); + + if (atom->map_style == 0) + error->all(FLERR,"third_order command requires an atom map, see atom_modify"); + + // move atoms by 3-vector or specified variable(s) + + if (style == REGULAR) { + setup(); + timer->init(); + timer->barrier_start(); + calculateMatrix(); + timer->barrier_stop(); + } + + if (style == BALLISTICO) { + setup(); + convert_units(update->unit_style); + conversion = conv_energy/conv_distance/conv_distance; + timer->init(); + timer->barrier_start(); + calculateMatrix(); + timer->barrier_stop(); + } + + Finish finish(lmp); + finish.end(1); +} + +/* ---------------------------------------------------------------------- + parse optional parameters +------------------------------------------------------------------------- */ + +void ThirdOrder::options(int narg, char **arg) +{ + if (narg < 0) error->all(FLERR,"Illegal third_order command"); + int iarg = 0; + const char *filename = "third_order.dat"; + std::stringstream fss; + + while (iarg < narg) { + if (strcmp(arg[iarg],"file") == 0) { + if (iarg+2 > narg) error->all(FLERR, "Illegal third_order command"); + fss << arg[iarg + 1]; + filename = fss.str().c_str(); + file_flag = 1; + iarg += 2; + } else if (strcmp(arg[iarg],"binary") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal third_order command"); + if (strcmp(arg[iarg+1],"gzip") == 0) { + compressed = 1; + } else if (strcmp(arg[iarg+1],"yes") == 0) { + binaryflag = 1; + } + iarg += 2; + } else error->all(FLERR,"Illegal third_order command"); + } + if (file_flag == 1 and me == 0) { + openfile(filename); + } +} + +/* ---------------------------------------------------------------------- + generic opening of a file + ASCII or binary or gzipped + some derived classes override this function +------------------------------------------------------------------------- */ + +void ThirdOrder::openfile(const char* filename) +{ + // if file already opened, return + if (file_opened) return; + + if (compressed) { +#ifdef LAMMPS_GZIP + char gzip[128]; + sprintf(gzip,"gzip -6 > %s",filename); +#ifdef _WIN32 + fp = _popen(gzip,"wb"); +#else + fp = popen(gzip,"w"); +#endif +#else + error->one(FLERR,"Cannot open gzipped file"); +#endif + } else if (binaryflag) { + fp = fopen(filename,"wb"); + } else { + fp = fopen(filename,"w"); + } + + if (fp == NULL) error->one(FLERR,"Cannot open dump file"); + + file_opened = 1; +} + +/* ---------------------------------------------------------------------- + create dynamical matrix +------------------------------------------------------------------------- */ + +void ThirdOrder::calculateMatrix() +{ + int local_idx; // local index + int local_jdx; // second local index + int local_kdx; // third local index + int nlocal = atom->nlocal; + bigint natoms = atom->natoms; + bigint *gm = groupmap; + double **f = atom->f; + + double *dynmat = new double[3*dynlen]; + double *fdynmat = new double[3*dynlen]; + memset(&dynmat[0],0,dynlen*sizeof(double)); + memset(&fdynmat[0],0,dynlen*sizeof(double)); + + if (comm->me == 0 && screen) { + fprintf(screen,"Calculating Third Order ...\n"); + fprintf(screen," Total # of atoms = " BIGINT_FORMAT "\n", natoms); + fprintf(screen," Atoms in group = " BIGINT_FORMAT "\n", gcount); + fprintf(screen," Total third order elements = " + BIGINT_FORMAT "\n", (dynlen*dynlen*dynlen) ); + } + + update->nsteps = 0; + int prog = 0; + for (bigint i=1; i<=natoms; i++){ + local_idx = atom->map(i); + for (int alpha=0; alpha<3; alpha++){ + for (bigint j=1; j<=natoms; j++){ + local_jdx = atom->map(j); + for (int beta=0; beta<3; beta++){ + displace_atom(local_idx, alpha, 1); + displace_atom(local_jdx, beta, 1); + update_force(); + for (bigint k=1; k<=natoms; k++){ + local_kdx = atom->map(k); + for (int gamma=0; gamma<3; gamma++){ + if (local_idx >= 0 && local_jdx >= 0 && local_kdx >= 0 + && gm[i-1] >= 0 && gm[j-1] >= 0 && gm[k-1] >= 0 + && local_kdx < nlocal) { + dynmat[gm[k-1]*3+gamma] += f[local_kdx][gamma]; + } + } + } + displace_atom(local_jdx, beta, -2); + update_force(); + for (bigint k=1; k<=natoms; k++){ + local_kdx = atom->map(k); + for (int gamma=0; gamma<3; gamma++){ + if (local_idx >= 0 && local_jdx >= 0 && local_kdx >= 0 + && gm[i-1] >= 0 && gm[j-1] >= 0 && gm[k-1] >= 0 + && local_kdx < nlocal) { + dynmat[gm[k-1]*3+gamma] -= f[local_kdx][gamma]; + } + } + } + displace_atom(local_jdx, beta, 1); + displace_atom(local_idx,alpha,-2); + displace_atom(local_jdx, beta, 1); + update_force(); + for (bigint k=1; k<=natoms; k++){ + local_kdx = atom->map(k); + for (int gamma=0; gamma<3; gamma++){ + if (local_idx >= 0 && local_jdx >= 0 && local_kdx >= 0 + && gm[i-1] >= 0 && gm[j-1] >= 0 && gm[k-1] >= 0 + && local_kdx < nlocal) { + dynmat[gm[k-1]*3+gamma] -= f[local_kdx][gamma]; + } + } + } + displace_atom(local_jdx, beta, -2); + update_force(); + for (bigint k=1; k<=natoms; k++){ + local_kdx = atom->map(k); + for (int gamma=0; gamma<3; gamma++){ + if (local_idx >= 0 && local_jdx >= 0 && local_kdx >= 0 + && gm[i-1] >= 0 && gm[j-1] >= 0 && gm[k-1] >= 0 + && local_kdx < nlocal) { + dynmat[gm[k-1]*3+gamma] += f[local_kdx][gamma]; + dynmat[gm[k-1]*3+gamma] /= (4 * del * del); + } + } + } + displace_atom(local_jdx, beta, 1); + displace_atom(local_idx, alpha, 1); + MPI_Reduce(dynmat,fdynmat,3*dynlen,MPI_DOUBLE,MPI_SUM,0,world); + if (me == 0){ + writeMatrix(fdynmat, gm[i-1], alpha, gm[j-1], beta); + } + memset(&dynmat[0],0,dynlen*sizeof(double)); + } + } + } + if (comm->me == 0 && screen) { + int p = 10 * gm[i-1] / gcount; + if (p > prog) { + prog = p; + fprintf(screen," %d%%",p*10); + fflush(screen); + } + } + } + + delete [] dynmat; + delete [] fdynmat; + + if (screen && me ==0 ) + fprintf(screen,"Finished Calculating Third Order Tensor\n"); +} + +/* ---------------------------------------------------------------------- + write dynamical matrix +------------------------------------------------------------------------- */ + +void ThirdOrder::writeMatrix(double *dynmat, bigint i, int a, bigint j, int b) +{ + if (me != 0) + return; + + double norm; + if (!binaryflag && fp) { + clearerr(fp); + for (int k = 0; k < gcount; k++){ + norm = square(dynmat[k*3])+ + square(dynmat[k*3+1])+ + square(dynmat[k*3+2]); + if (norm > 1.0e-16) + fprintf(fp, + BIGINT_FORMAT " %d " BIGINT_FORMAT " %d " BIGINT_FORMAT + " %7.8f %7.8f %7.8f\n", + i+1, a + 1, j+1, b + 1, groupmap[k]+1, + dynmat[k*3] * conversion, + dynmat[k*3+1] * conversion, + dynmat[k*3+2] * conversion); + } + } else if (binaryflag && fp){ + clearerr(fp); + fwrite(&dynmat[0], sizeof(double), dynlen, fp); + } + if (ferror(fp)) error->one(FLERR,"Error writing to file"); + +} + +/* ---------------------------------------------------------------------- + Displace atoms + ---------------------------------------------------------------------- */ + +void ThirdOrder::displace_atom(int local_idx, int direction, int magnitude) +{ + if (local_idx < 0) return; + + double **x = atom->x; + int *sametag = atom->sametag; + int j = local_idx; + + x[local_idx][direction] += del*magnitude; + + while (sametag[j] >= 0){ + j = sametag[j]; + x[j][direction] += del*magnitude; + } +} + +/* ---------------------------------------------------------------------- + evaluate potential energy and forces + may migrate atoms due to reneighboring + return new energy, which should include nextra_global dof + return negative gradient stored in atom->f + return negative gradient for nextra_global dof in fextra +------------------------------------------------------------------------- */ + +void ThirdOrder::update_force() +{ + force_clear(); + + if (pair_compute_flag) { + force->pair->compute(eflag,vflag); + timer->stamp(Timer::PAIR); + } + if (atom->molecular) { + if (force->bond) force->bond->compute(eflag,vflag); + if (force->angle) force->angle->compute(eflag,vflag); + if (force->dihedral) force->dihedral->compute(eflag,vflag); + if (force->improper) force->improper->compute(eflag,vflag); + timer->stamp(Timer::BOND); + } + if (kspace_compute_flag) { + force->kspace->compute(eflag,vflag); + timer->stamp(Timer::KSPACE); + } + if (force->newton) { + comm->reverse_comm(); + timer->stamp(Timer::COMM); + } + ++ update->nsteps; +} + +/* ---------------------------------------------------------------------- + clear force on own & ghost atoms + clear other arrays as needed +------------------------------------------------------------------------- */ + +void ThirdOrder::force_clear() +{ + if (external_force_clear) return; + + // clear global force array + // if either newton flag is set, also include ghosts + + size_t nbytes = sizeof(double) * atom->nlocal; + if (force->newton) nbytes += sizeof(double) * atom->nghost; + + if (nbytes) { + memset(&atom->f[0][0],0,3*nbytes); + } +} + +/* ---------------------------------------------------------------------- */ + +void ThirdOrder::convert_units(const char *style) +{ + // physical constants from: + // http://physics.nist.gov/cuu/Constants/Table/allascii.txt + // using thermochemical calorie = 4.184 J + + if (strcmp(style,"lj") == 0) { + error->all(FLERR,"Conversion Not Set"); + //conversion = 1; // lj -> 10 J/mol + + } else if (strcmp(style,"real") == 0) { + conv_energy = 418.4; // kcal/mol -> 10 J/mol + conv_mass = 1; // g/mol -> g/mol + conv_distance = 1; // angstrom -> angstrom + + } else if (strcmp(style,"metal") == 0) { + conv_energy = 9648.5; // eV -> 10 J/mol + conv_mass = 1; // g/mol -> g/mol + conv_distance = 1; // angstrom -> angstrom + + } else if (strcmp(style,"si") == 0) { + if (comm->me) error->warning(FLERR,"Conversion Warning: Multiplication by Large Float"); + conv_energy = 6.022E22; // J -> 10 J/mol + conv_mass = 6.022E26; // kg -> g/mol + conv_distance = 1E-10; // meter -> angstrom + + } else if (strcmp(style,"cgs") == 0) { + if (comm->me) error->warning(FLERR,"Conversion Warning: Multiplication by Large Float"); + conv_energy = 6.022E12; // Erg -> 10 J/mol + conv_mass = 6.022E23; // g -> g/mol + conv_distance = 1E-7; // centimeter -> angstrom + + } else if (strcmp(style,"electron") == 0) { + conv_energy = 262550; // Hartree -> 10 J/mol + conv_mass = 1; // amu -> g/mol + conv_distance = 0.529177249; // bohr -> angstrom + + } else if (strcmp(style,"micro") == 0) { + if (comm->me) error->warning(FLERR,"Conversion Warning: Untested Conversion"); + conv_energy = 6.022E10; // picogram-micrometer^2/microsecond^2 -> 10 J/mol + conv_mass = 6.022E11; // pg -> g/mol + conv_distance = 1E-4; // micrometer -> angstrom + + } else if (strcmp(style,"nano") == 0) { + if (comm->me) error->warning(FLERR,"Conversion Warning: Untested Conversion"); + conv_energy = 6.022E4; // attogram-nanometer^2/nanosecond^2 -> 10 J/mol + conv_mass = 6.022E5; // ag -> g/mol + conv_distance = 0.1; // angstrom -> angstrom + + } else error->all(FLERR,"Units Type Conversion Not Found"); + +} + +/* ---------------------------------------------------------------------- */ + +void ThirdOrder::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 + int nlocal = atom->nlocal; + int *mask = atom->mask; + bigint natoms = atom->natoms; + int *recv = new int[comm->nprocs]; + int *displs = new int[comm->nprocs]; + bigint *temp_groupmap = new bigint[natoms]; + + //find number of local atoms in the group (final_gid) + for (bigint i=1; i<=natoms; i++){ + local_idx = atom->map(i); + if ((local_idx >= 0) && (local_idx < nlocal) && mask[local_idx] & groupbit) + gid += 1; // gid at the end of loop is final_Gid + } + //create an array of length final_gid + bigint *sub_groupmap = new bigint[gid]; + + gid = 0; + //create a map between global atom id and group atom id for each proc + for (bigint i=1; i<=natoms; i++){ + local_idx = atom->map(i); + if ((local_idx >= 0) && (local_idx < nlocal) + && (mask[local_idx] & groupbit)){ + sub_groupmap[gid] = i; + gid += 1; + } + } + + //populate arrays for Allgatherv + for (int i=0; inprocs; i++){ + recv[i] = 0; + } + recv[comm->me] = gid; + 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]; + else displs[i] = 0; + } + + //combine subgroup maps into total temporary groupmap + 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 + bigint j = 0; + for (bigint i=1; i<=natoms; i++){ + // flag groupmap contents that are in temp_groupmap + if (j < gcount && i == temp_groupmap[j]) + groupmap[i-1] = j++; + else + groupmap[i-1] = -1; + } + + //free that memory! + delete[] recv; + delete[] displs; + delete[] sub_groupmap; + delete[] temp_groupmap; +} diff --git a/src/USER-PHONON/third_order.h b/src/USER-PHONON/third_order.h new file mode 100644 index 0000000000..83062b6b1f --- /dev/null +++ b/src/USER-PHONON/third_order.h @@ -0,0 +1,76 @@ +// +// Created by charlie sievers on 7/5/18. +// + + +#ifdef COMMAND_CLASS + +CommandStyle(third_order,ThirdOrder) + +#else + +#ifndef LMP_THIRD_ORDER_H +#define LMP_THIRD_ORDER_H + +#include "pointers.h" + +namespace LAMMPS_NS { + + class ThirdOrder : protected Pointers { + public: + ThirdOrder(class LAMMPS *); + virtual ~ThirdOrder(); + void command(int, char **); + void setup(); + + protected: + int eflag,vflag; // flags for energy/virial computation + int external_force_clear; // clear forces locally or externally + + + int triclinic; // 0 if domain is orthog, 1 if triclinic + int pairflag; + + int pair_compute_flag; // 0 if pair->compute is skipped + int kspace_compute_flag; // 0 if kspace->compute is skipped + + int nvec; // local atomic dof = length of xvec + + void update_force(); + void force_clear(); + virtual void openfile(const char* filename); + + + private: + void options(int, char **); + void create_groupmap(); + void calculateMatrix(); + void convert_units(const char *style); + void displace_atom(int local_idx, int direction, int magnitude); + void writeMatrix(double *, bigint, int, bigint, int); + + double conversion; + double conv_energy; + double conv_distance; + double conv_mass; + double del; + int igroup,groupbit; + bigint dynlen; + int scaleflag; + int me; + bigint gcount; // number of atoms in group + bigint *groupmap; + + int compressed; // 1 if dump file is written compressed, 0 no + int binaryflag; // 1 if dump file is written binary, 0 no + int file_opened; // 1 if openfile method has been called, 0 no + int file_flag; // 1 custom file name, 0 dynmat.dat + + FILE *fp; + }; +} + + +#endif //LMP_THIRD_ORDER_H +#endif + diff --git a/src/create_bonds.cpp b/src/create_bonds.cpp index 5b7c354595..437f5959db 100644 --- a/src/create_bonds.cpp +++ b/src/create_bonds.cpp @@ -12,7 +12,9 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Mike Salerno (NRL) added single methods + Contributing authors: + Mike Salerno (NRL) added single methods + Thomas Farmer (ISIS) added single/improper ------------------------------------------------------------------------- */ #include "create_bonds.h" @@ -31,7 +33,7 @@ using namespace LAMMPS_NS; -enum{MANY,SBOND,SANGLE,SDIHEDRAL}; +enum{MANY,SBOND,SANGLE,SDIHEDRAL,SIMPROPER}; /* ---------------------------------------------------------------------- */ @@ -100,6 +102,18 @@ void CreateBonds::command(int narg, char **arg) (datom2 == datom3) || (datom2 == datom4) || (datom3 == datom4)) error->all(FLERR,"Illegal create_bonds command"); iarg = 6; + } else if (strcmp(arg[0],"single/improper") == 0) { + style = SIMPROPER; + if (narg < 6) error->all(FLERR,"Illegal create_bonds command"); + dtype = force->inumeric(FLERR,arg[1]); + datom1 = force->tnumeric(FLERR,arg[2]); + datom2 = force->tnumeric(FLERR,arg[3]); + datom3 = force->tnumeric(FLERR,arg[4]); + datom4 = force->tnumeric(FLERR,arg[5]); + if ((datom1 == datom2) || (datom1 == datom3) || (datom1 == datom4) || + (datom2 == datom3) || (datom2 == datom4) || (datom3 == datom4)) + error->all(FLERR,"Illegal create_bonds command"); + iarg = 6; } else error->all(FLERR,"Illegal create_bonds command"); // optional args @@ -132,6 +146,9 @@ void CreateBonds::command(int narg, char **arg) } else if (style == SDIHEDRAL) { if (dtype <= 0 || dtype > atom->ndihedraltypes) error->all(FLERR,"Invalid dihedral type in create_bonds command"); + } else if (style == SIMPROPER) { + if (dtype <= 0 || dtype > atom->nimpropertypes) + error->all(FLERR,"Invalid improper type in create_bonds command"); } // invoke creation method @@ -140,6 +157,7 @@ void CreateBonds::command(int narg, char **arg) else if (style == SBOND) single_bond(); else if (style == SANGLE) single_angle(); else if (style == SDIHEDRAL) single_dihedral(); + else if (style == SIMPROPER) single_improper(); // trigger special list build @@ -512,3 +530,89 @@ void CreateBonds::single_dihedral() num_dihedral[m]++; } } + +/* ---------------------------------------------------------------------- */ + +void CreateBonds::single_improper() +{ + int m; + + // check that 4 atoms exist + + const int nlocal = atom->nlocal; + const int idx1 = atom->map(datom1); + const int idx2 = atom->map(datom2); + const int idx3 = atom->map(datom3); + const int idx4 = atom->map(datom4); + + int count = 0; + if ((idx1 >= 0) && (idx1 < nlocal)) count++; + if ((idx2 >= 0) && (idx2 < nlocal)) count++; + if ((idx3 >= 0) && (idx3 < nlocal)) count++; + if ((idx4 >= 0) && (idx4 < nlocal)) count++; + + int allcount; + MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); + if (allcount != 4) + error->all(FLERR,"Create_bonds single/improper atoms do not exist"); + + // create bond once or 4x if newton_bond set + + int *num_improper = atom->num_improper; + int **improper_type = atom->improper_type; + tagint **improper_atom1 = atom->improper_atom1; + tagint **improper_atom2 = atom->improper_atom2; + tagint **improper_atom3 = atom->improper_atom3; + tagint **improper_atom4 = atom->improper_atom4; + + if ((m = idx2) >= 0) { + if (num_improper[m] == atom->improper_per_atom) + error->one(FLERR, + "New improper exceeded impropers per atom in create_bonds"); + improper_type[m][num_improper[m]] = dtype; + improper_atom1[m][num_improper[m]] = datom1; + improper_atom2[m][num_improper[m]] = datom2; + improper_atom3[m][num_improper[m]] = datom3; + improper_atom4[m][num_improper[m]] = datom4; + num_improper[m]++; + } + atom->nimpropers++; + + if (force->newton_bond) return; + + if ((m = idx1) >= 0) { + if (num_improper[m] == atom->improper_per_atom) + error->one(FLERR, + "New improper exceeded impropers per atom in create_bonds"); + improper_type[m][num_improper[m]] = dtype; + improper_atom1[m][num_improper[m]] = datom1; + improper_atom2[m][num_improper[m]] = datom2; + improper_atom3[m][num_improper[m]] = datom3; + improper_atom4[m][num_improper[m]] = datom4; + num_improper[m]++; + } + + if ((m = idx3) >= 0) { + if (num_improper[m] == atom->improper_per_atom) + error->one(FLERR, + "New improper exceeded impropers per atom in create_bonds"); + improper_type[m][num_improper[m]] = dtype; + improper_atom1[m][num_improper[m]] = datom1; + improper_atom2[m][num_improper[m]] = datom2; + improper_atom3[m][num_improper[m]] = datom3; + improper_atom4[m][num_improper[m]] = datom4; + num_improper[m]++; + } + + if ((m = idx4) >= 0) { + if (num_improper[m] == atom->improper_per_atom) + error->one(FLERR, + "New improper exceeded impropers per atom in create_bonds"); + improper_type[m][num_improper[m]] = dtype; + improper_atom1[m][num_improper[m]] = datom1; + improper_atom2[m][num_improper[m]] = datom2; + improper_atom3[m][num_improper[m]] = datom3; + improper_atom4[m][num_improper[m]] = datom4; + num_improper[m]++; + } +} diff --git a/src/create_bonds.h b/src/create_bonds.h index 0c71242ed9..eea99b0113 100644 --- a/src/create_bonds.h +++ b/src/create_bonds.h @@ -39,6 +39,7 @@ class CreateBonds : protected Pointers { void single_bond(); void single_angle(); void single_dihedral(); + void single_improper(); }; } @@ -87,6 +88,10 @@ E: Invalid dihedral type in create_bonds command UNDOCUMENTED +E: Invalid improper type in create_bonds command + +UNDOCUMENTED + E: Create_bonds requires a pair style be defined Self-explanatory. @@ -135,4 +140,12 @@ E: New dihedral exceeded dihedrals per atom in create_bonds UNDOCUMENTED +E: Create_bonds single/improper atoms do not exist + +UNDOCUMENTED + +E: New improper exceeded impropers per atom in create_bonds + +UNDOCUMENTED + */ diff --git a/src/domain.cpp b/src/domain.cpp index 372b264013..e894682556 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -352,6 +352,11 @@ void Domain::set_local_box() void Domain::reset_box() { // perform shrink-wrapping + + // nothing to do for empty systems + + if (atom->natoms == 0) return; + // compute extent of atoms on this proc // for triclinic, this is done in lamda space diff --git a/src/dump.cpp b/src/dump.cpp index 57a8decbb0..83b74f1bbc 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -87,6 +87,9 @@ Dump::Dump(LAMMPS *lmp, int /*narg*/, char **arg) : Pointers(lmp) buffer_flag = 0; padflag = 0; pbcflag = 0; + time_flag = 0; + unit_flag = 0; + unit_count = 0; delay_flag = 0; maxfiles = -1; @@ -545,6 +548,8 @@ void Dump::openfile() if (singlefile_opened) return; if (multifile == 0) singlefile_opened = 1; + unit_count = 0; + // if one file per timestep, replace '*' with current timestep char *filecurrent = filename; @@ -1119,6 +1124,20 @@ void Dump::modify_params(int narg, char **arg) } iarg += 2; + } else if (strcmp(arg[iarg],"time") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); + if (strcmp(arg[iarg+1],"yes") == 0) time_flag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) time_flag = 0; + else error->all(FLERR,"Illegal dump_modify command"); + iarg += 2; + + } else if (strcmp(arg[iarg],"units") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command"); + if (strcmp(arg[iarg+1],"yes") == 0) unit_flag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) unit_flag = 0; + else error->all(FLERR,"Illegal dump_modify command"); + iarg += 2; + } else { int n = modify_param(narg-iarg,&arg[iarg]); if (n == 0) error->all(FLERR,"Illegal dump_modify command"); @@ -1127,6 +1146,12 @@ void Dump::modify_params(int narg, char **arg) } } +/* ---------------------------------------------------------------------- */ + +double Dump::compute_time() +{ + return update->atime + (update->ntimestep - update->atimestep)*update->dt; +} /* ---------------------------------------------------------------------- return # of bytes of allocated memory ------------------------------------------------------------------------- */ diff --git a/src/dump.h b/src/dump.h index bc7fd2d5a5..17e9434faa 100644 --- a/src/dump.h +++ b/src/dump.h @@ -75,6 +75,9 @@ class Dump : protected Pointers { int sortcol; // 0 to sort on ID, 1-N on columns int sortcolm1; // sortcol - 1 int sortorder; // ASCEND or DESCEND + int time_flag; // 1 if output accumulated time + int unit_flag; // 1 if dump should contain unit information + int unit_count; // # of times the unit information was written int delay_flag; // 1 if delay output until delaystep bigint delaystep; @@ -143,6 +146,7 @@ class Dump : protected Pointers { virtual int convert_string(int, double *) {return 0;} virtual void write_data(int, double *) = 0; void pbc_allocate(); + double compute_time(); void sort(); #if defined(LMP_QSORT) diff --git a/src/dump_atom.cpp b/src/dump_atom.cpp index e2e77cfb77..401b47051d 100644 --- a/src/dump_atom.cpp +++ b/src/dump_atom.cpp @@ -15,9 +15,9 @@ #include #include "domain.h" #include "atom.h" -#include "update.h" #include "memory.h" #include "error.h" +#include "update.h" using namespace LAMMPS_NS; @@ -209,6 +209,12 @@ void DumpAtom::header_binary_triclinic(bigint ndump) void DumpAtom::header_item(bigint ndump) { + if (unit_flag && !unit_count) { + ++unit_count; + fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) fprintf(fp,"ITEM: TIME\n%.16g\n",compute_time()); + fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); @@ -224,6 +230,12 @@ void DumpAtom::header_item(bigint ndump) void DumpAtom::header_item_triclinic(bigint ndump) { + if (unit_flag && !unit_count) { + ++unit_count; + fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) fprintf(fp,"ITEM: TIME\n%.16g\n",compute_time()); + fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index ce83e442c9..489067d90e 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -20,14 +20,14 @@ #include "region.h" #include "group.h" #include "input.h" -#include "variable.h" -#include "update.h" #include "modify.h" #include "compute.h" #include "fix.h" #include "fix_store.h" #include "memory.h" #include "error.h" +#include "update.h" +#include "variable.h" using namespace LAMMPS_NS; @@ -420,6 +420,12 @@ void DumpCustom::header_binary_triclinic(bigint ndump) void DumpCustom::header_item(bigint ndump) { + if (unit_flag && !unit_count) { + ++unit_count; + fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) fprintf(fp,"ITEM: TIME\n%.16g\n",compute_time()); + fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); @@ -435,6 +441,12 @@ void DumpCustom::header_item(bigint ndump) void DumpCustom::header_item_triclinic(bigint ndump) { + if (unit_flag && !unit_count) { + ++unit_count; + fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) fprintf(fp,"ITEM: TIME\n%.16g\n",compute_time()); + fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); diff --git a/src/dump_local.cpp b/src/dump_local.cpp index 9f021a7b6a..21a96d1e8a 100644 --- a/src/dump_local.cpp +++ b/src/dump_local.cpp @@ -256,6 +256,12 @@ int DumpLocal::modify_param(int narg, char **arg) void DumpLocal::write_header(bigint ndump) { if (me == 0) { + if (unit_flag && !unit_count) { + ++unit_count; + fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style); + } + if (time_flag) fprintf(fp,"ITEM: TIME\n%.16g\n",compute_time()); + fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF %s\n",label); diff --git a/src/dump_local.h b/src/dump_local.h index 91381ba1ec..9b15082995 100644 --- a/src/dump_local.h +++ b/src/dump_local.h @@ -29,7 +29,7 @@ class DumpLocal : public Dump { DumpLocal(LAMMPS *, int, char **); virtual ~DumpLocal(); - private: + protected: int nevery; // dump frequency to check Fix against char *label; // string for dump file header @@ -55,11 +55,11 @@ class DumpLocal : public Dump { void init_style(); int modify_param(int, char **); - void write_header(bigint); + virtual void write_header(bigint); int count(); void pack(tagint *); int convert_string(int, double *); - void write_data(int, double *); + virtual void write_data(int, double *); void parse_fields(int, char **); int add_compute(char *); diff --git a/src/fix_langevin.cpp b/src/fix_langevin.cpp index 1e86a90218..f8f85fcf30 100644 --- a/src/fix_langevin.cpp +++ b/src/fix_langevin.cpp @@ -14,6 +14,9 @@ /* ---------------------------------------------------------------------- Contributing authors: Carolyn Phillips (U Mich), reservoir energy tally Aidan Thompson (SNL) GJF formulation + Charles Sievers & Niels Gronbech-Jensen (UC Davis) + updated GJF formulation and included + statistically correct 2GJ velocity ------------------------------------------------------------------------- */ #include "fix_langevin.h" @@ -35,6 +38,7 @@ #include "memory.h" #include "error.h" #include "group.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -50,7 +54,7 @@ enum{CONSTANT,EQUAL,ATOM}; FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), gjfflag(0), gfactor1(NULL), gfactor2(NULL), ratio(NULL), tstr(NULL), - flangevin(NULL), tforce(NULL), franprev(NULL), id_temp(NULL), random(NULL) + flangevin(NULL), tforce(NULL), franprev(NULL), lv(NULL), id_temp(NULL), random(NULL) { if (narg < 7) error->all(FLERR,"Illegal fix langevin command"); @@ -96,6 +100,7 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : oflag = 0; tallyflag = 0; zeroflag = 0; + osflag = 0; int iarg = 7; while (iarg < narg) { @@ -106,8 +111,18 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"gjf") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix langevin command"); - if (strcmp(arg[iarg+1],"no") == 0) gjfflag = 0; - else if (strcmp(arg[iarg+1],"yes") == 0) gjfflag = 1; + if (strcmp(arg[iarg+1],"no") == 0) { + gjfflag = 0; + osflag = 0; + } + else if (strcmp(arg[iarg+1],"vfull") == 0) { + gjfflag = 1; + osflag = 1; + } + else if (strcmp(arg[iarg+1],"vhalf") == 0) { + gjfflag = 1; + osflag = 0; + } else error->all(FLERR,"Illegal fix langevin command"); iarg += 2; } else if (strcmp(arg[iarg],"omega") == 0) { @@ -153,6 +168,7 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : flangevin = NULL; flangevin_allocated = 0; franprev = NULL; + lv = NULL; tforce = NULL; maxatom1 = maxatom2 = 0; @@ -161,7 +177,6 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : // no need to set peratom_flag, b/c data is for internal use only if (gjfflag) { - nvalues = 3; grow_arrays(atom->nmax); atom->add_callback(0); @@ -172,6 +187,9 @@ FixLangevin::FixLangevin(LAMMPS *lmp, int narg, char **arg) : franprev[i][0] = 0.0; franprev[i][1] = 0.0; franprev[i][2] = 0.0; + lv[i][0] = 0.0; + lv[i][1] = 0.0; + lv[i][2] = 0.0; } } @@ -192,6 +210,7 @@ FixLangevin::~FixLangevin() if (gjfflag) { memory->destroy(franprev); + memory->destroy(lv); atom->delete_callback(id,0); } } @@ -201,6 +220,7 @@ FixLangevin::~FixLangevin() int FixLangevin::setmask() { int mask = 0; + if (gjfflag) mask |= INITIAL_INTEGRATE; mask |= POST_FORCE; mask |= POST_FORCE_RESPA; mask |= END_OF_STEP; @@ -212,6 +232,21 @@ int FixLangevin::setmask() void FixLangevin::init() { + if (gjfflag) { + if (t_period*2 == update->dt) + error->all(FLERR,"Fix langevin gjf cannot have t_period equal to dt/2"); + + // warn if any integrate fix comes after this one + int before = 1; + int flag = 0; + for (int i = 0; i < modify->nfix; i++) { + if (strcmp(id,modify->fix[i]->id) == 0) before = 0; + else if ((modify->fmask[i] && utils::strmatch(modify->fix[i]->style,"^nve")) && before) flag = 1; + } + if (flag) + error->all(FLERR,"Fix langevin gjf should come before fix nve"); + } + if (oflag && !atom->sphere_flag) error->all(FLERR,"Fix langevin omega requires atom style sphere"); if (ascale && !atom->ellipsoid_flag) @@ -261,9 +296,14 @@ void FixLangevin::init() if (!atom->rmass) { for (int i = 1; i <= atom->ntypes; i++) { gfactor1[i] = -atom->mass[i] / t_period / force->ftm2v; - gfactor2[i] = sqrt(atom->mass[i]) * - sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / - force->ftm2v; + if (gjfflag) + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(2.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; + else + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; gfactor1[i] *= 1.0/ratio[i]; gfactor2[i] *= 1.0/sqrt(ratio[i]); } @@ -275,14 +315,60 @@ void FixLangevin::init() if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; - if (gjfflag) gjffac = 1.0/(1.0+update->dt/2.0/t_period); + if (utils::strmatch(update->integrate_style,"^respa") && gjfflag) + error->all(FLERR,"Fix langevin gjf and respa are not compatible"); + if (gjfflag) gjfa = (1.0-update->dt/2.0/t_period)/(1.0+update->dt/2.0/t_period); + if (gjfflag) gjfsib = sqrt(1.0+update->dt/2.0/t_period); } /* ---------------------------------------------------------------------- */ void FixLangevin::setup(int vflag) { + if (gjfflag) { + double dtfm; + double dt = update->dt; + double **v = atom->v; + double **f = atom->f; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + if (rmass) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = 0.5 * dt / rmass[i]; + v[i][0] -= dtfm * f[i][0]; + v[i][1] -= dtfm * f[i][1]; + v[i][2] -= dtfm * f[i][2]; + if (tbiasflag) + temperature->remove_bias(i,v[i]); + v[i][0] /= gjfa*gjfsib*gjfsib; + v[i][1] /= gjfa*gjfsib*gjfsib; + v[i][2] /= gjfa*gjfsib*gjfsib; + if (tbiasflag) + temperature->restore_bias(i,v[i]); + } + + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = 0.5 * dt / mass[type[i]]; + v[i][0] -= dtfm * f[i][0]; + v[i][1] -= dtfm * f[i][1]; + v[i][2] -= dtfm * f[i][2]; + if (tbiasflag) + temperature->remove_bias(i,v[i]); + v[i][0] /= gjfa*gjfsib*gjfsib; + v[i][1] /= gjfa*gjfsib*gjfsib; + v[i][2] /= gjfa*gjfsib*gjfsib; + if (tbiasflag) + temperature->restore_bias(i,v[i]); + } + } + } if (strstr(update->integrate_style,"verlet")) post_force(vflag); else { @@ -290,6 +376,61 @@ void FixLangevin::setup(int vflag) post_force_respa(vflag,nlevels_respa-1,0); ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); } + if (gjfflag) { + double dtfm; + double dt = update->dt; + double **f = atom->f; + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + if (rmass) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = 0.5 * dt / rmass[i]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + lv[i][0] = v[i][0]; + lv[i][1] = v[i][1]; + lv[i][2] = v[i][2]; + } +// + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + dtfm = 0.5 * dt / mass[type[i]]; + v[i][0] += dtfm * f[i][0]; + v[i][1] += dtfm * f[i][1]; + v[i][2] += dtfm * f[i][2]; + lv[i][0] = v[i][0]; + lv[i][1] = v[i][1]; + lv[i][2] = v[i][2]; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FixLangevin::initial_integrate(int /* vflag */) +{ + double **v = atom->v; + double **f = atom->f; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + f[i][0] /= gjfa; + f[i][1] /= gjfa; + f[i][2] /= gjfa; + v[i][0] = lv[i][0]; + v[i][1] = lv[i][1]; + v[i][2] = lv[i][2]; + } } /* ---------------------------------------------------------------------- */ @@ -304,7 +445,7 @@ void FixLangevin::post_force(int /*vflag*/) if (tstyle == ATOM) if (gjfflag) - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass) if (zeroflag) post_force_templated<1,1,1,1,1,1>(); @@ -335,7 +476,7 @@ void FixLangevin::post_force(int /*vflag*/) if (zeroflag) post_force_templated<1,1,0,0,0,1>(); else post_force_templated<1,1,0,0,0,0>(); else - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass) if (zeroflag) post_force_templated<1,0,1,1,1,1>(); @@ -367,7 +508,7 @@ void FixLangevin::post_force(int /*vflag*/) else post_force_templated<1,0,0,0,0,0>(); else if (gjfflag) - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass) if (zeroflag) post_force_templated<0,1,1,1,1,1>(); @@ -398,7 +539,7 @@ void FixLangevin::post_force(int /*vflag*/) if (zeroflag) post_force_templated<0,1,0,0,0,1>(); else post_force_templated<0,1,0,0,0,0>(); else - if (tallyflag) + if (tallyflag || osflag) if (tbiasflag == BIAS) if (rmass) if (zeroflag) post_force_templated<0,0,1,1,1,1>(); @@ -511,7 +652,10 @@ void FixLangevin::post_force_templated() if (Tp_TSTYLEATOM) tsqrt = sqrt(tforce[i]); if (Tp_RMASS) { gamma1 = -rmass[i] / t_period / ftm2v; - gamma2 = sqrt(rmass[i]) * sqrt(24.0*boltz/t_period/dt/mvv2e) / ftm2v; + if (Tp_GJF) + gamma2 = sqrt(rmass[i]) * sqrt(2.0*boltz/t_period/dt/mvv2e) / ftm2v; + else + gamma2 = sqrt(rmass[i]) * sqrt(24.0*boltz/t_period/dt/mvv2e) / ftm2v; gamma1 *= 1.0/ratio[type[i]]; gamma2 *= 1.0/sqrt(ratio[type[i]]) * tsqrt; } else { @@ -519,9 +663,15 @@ void FixLangevin::post_force_templated() gamma2 = gfactor2[type[i]] * tsqrt; } - fran[0] = gamma2*(random->uniform()-0.5); - fran[1] = gamma2*(random->uniform()-0.5); - fran[2] = gamma2*(random->uniform()-0.5); + if (Tp_GJF) { + fran[0] = gamma2*random->gaussian(); + fran[1] = gamma2*random->gaussian(); + fran[2] = gamma2*random->gaussian(); + } else { + fran[0] = gamma2*(random->uniform()-0.5); + fran[1] = gamma2*(random->uniform()-0.5); + fran[2] = gamma2*(random->uniform()-0.5); + } if (Tp_BIAS) { temperature->remove_bias(i,v[i]); @@ -539,6 +689,16 @@ void FixLangevin::post_force_templated() } if (Tp_GJF) { + if (Tp_BIAS) + temperature->remove_bias(i,v[i]); + lv[i][0] = gjfsib*v[i][0]; + lv[i][1] = gjfsib*v[i][1]; + lv[i][2] = gjfsib*v[i][2]; + if (Tp_BIAS) + temperature->restore_bias(i,v[i]); + if (Tp_BIAS) + temperature->restore_bias(i,lv[i]); + fswap = 0.5*(fran[0]+franprev[i][0]); franprev[i][0] = fran[0]; fran[0] = fswap; @@ -549,32 +709,44 @@ void FixLangevin::post_force_templated() franprev[i][2] = fran[2]; fran[2] = fswap; - fdrag[0] *= gjffac; - fdrag[1] *= gjffac; - fdrag[2] *= gjffac; - fran[0] *= gjffac; - fran[1] *= gjffac; - fran[2] *= gjffac; - f[i][0] *= gjffac; - f[i][1] *= gjffac; - f[i][2] *= gjffac; + fdrag[0] *= gjfa; + fdrag[1] *= gjfa; + fdrag[2] *= gjfa; + fran[0] *= gjfa; + fran[1] *= gjfa; + fran[2] *= gjfa; + f[i][0] *= gjfa; + f[i][1] *= gjfa; + f[i][2] *= gjfa; } f[i][0] += fdrag[0] + fran[0]; f[i][1] += fdrag[1] + fran[1]; f[i][2] += fdrag[2] + fran[2]; - if (Tp_TALLY) { - flangevin[i][0] = fdrag[0] + fran[0]; - flangevin[i][1] = fdrag[1] + fran[1]; - flangevin[i][2] = fdrag[2] + fran[2]; - } - if (Tp_ZERO) { fsum[0] += fran[0]; fsum[1] += fran[1]; fsum[2] += fran[2]; } + + if (Tp_TALLY) { + if (Tp_GJF) { + fdrag[0] = gamma1*lv[i][0]/gjfsib/gjfsib; + fdrag[1] = gamma1*lv[i][1]/gjfsib/gjfsib; + fdrag[2] = gamma1*lv[i][2]/gjfsib/gjfsib; + fswap = (2*fran[0]/gjfa - franprev[i][0])/gjfsib; + fran[0] = fswap; + fswap = (2*fran[1]/gjfa - franprev[i][1])/gjfsib; + fran[1] = fswap; + fswap = (2*fran[2]/gjfa - franprev[i][2])/gjfsib; + fran[2] = fswap; + } + flangevin[i][0] = fdrag[0] + fran[0]; + flangevin[i][1] = fdrag[1] + fran[1]; + flangevin[i][2] = fdrag[2] + fran[2]; + + } } } @@ -754,18 +926,71 @@ void FixLangevin::angmom_thermostat() void FixLangevin::end_of_step() { - if (!tallyflag) return; + if (!tallyflag && !gjfflag) return; double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; + double dtfm; + double dt = update->dt; + double *mass = atom->mass; + double *rmass = atom->rmass; + double **f = atom->f; + int *type = atom->type; energy_onestep = 0.0; - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - energy_onestep += flangevin[i][0]*v[i][0] + flangevin[i][1]*v[i][1] + - flangevin[i][2]*v[i][2]; + if (tallyflag) { + if (gjfflag) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (tbiasflag) + temperature->remove_bias(i, lv[i]); + energy_onestep += flangevin[i][0]*lv[i][0] + flangevin[i][1]*lv[i][1] + + flangevin[i][2]*lv[i][2]; + if (tbiasflag) + temperature->restore_bias(i, lv[i]); + } + } + else + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + energy_onestep += flangevin[i][0]*v[i][0] + flangevin[i][1]*v[i][1] + + flangevin[i][2]*v[i][2]; + } + + if (gjfflag) { + double tmp[3]; + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + tmp[0] = v[i][0]; + tmp[1] = v[i][1]; + tmp[2] = v[i][2]; + if (!osflag) { + v[i][0] = lv[i][0]; + v[i][1] = lv[i][1]; + v[i][2] = lv[i][2]; + } else { + if (atom->rmass) { + dtfm = force->ftm2v * 0.5 * dt / rmass[i]; + } else { + dtfm = force->ftm2v * 0.5 * dt / mass[type[i]]; + } + v[i][0] = 0.5 * gjfsib*gjfsib*(v[i][0] + dtfm * f[i][0] / gjfa) + + dtfm * 0.5 * (gjfsib * flangevin[i][0] - franprev[i][0]) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * lv[i][0]; + v[i][1] = 0.5 * gjfsib*gjfsib*(v[i][1] + dtfm * f[i][1] / gjfa) + + dtfm * 0.5 * (gjfsib * flangevin[i][1] - franprev[i][1]) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * lv[i][1]; + v[i][2] = 0.5 * gjfsib*gjfsib*(v[i][2] + dtfm * f[i][2] / gjfa) + + dtfm * 0.5 * (gjfsib * flangevin[i][2] - franprev[i][2]) + + (gjfsib * gjfa * 0.5 + dt * 0.25 / t_period / gjfsib) * lv[i][2]; + } + lv[i][0] = tmp[0]; + lv[i][1] = tmp[1]; + lv[i][2] = tmp[2]; + } + } energy += energy_onestep*update->dt; } @@ -783,12 +1008,21 @@ void FixLangevin::reset_dt() { if (atom->mass) { for (int i = 1; i <= atom->ntypes; i++) { - gfactor2[i] = sqrt(atom->mass[i]) * - sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / - force->ftm2v; + if (gjfflag) + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(2.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; + else + gfactor2[i] = sqrt(atom->mass[i]) * + sqrt(24.0*force->boltz/t_period/update->dt/force->mvv2e) / + force->ftm2v; gfactor2[i] *= 1.0/sqrt(ratio[i]); } } + if (gjfflag) { + gjfa = (1.0-update->dt/2.0/t_period)/(1.0+update->dt/2.0/t_period); + gjfsib = sqrt(1.0+update->dt/2.0/t_period); + } } /* ---------------------------------------------------------------------- */ @@ -831,11 +1065,24 @@ double FixLangevin::compute_scalar() if (update->ntimestep == update->beginstep) { energy_onestep = 0.0; - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit) - energy_onestep += flangevin[i][0]*v[i][0] + flangevin[i][1]*v[i][1] + - flangevin[i][2]*v[i][2]; - energy = 0.5*energy_onestep*update->dt; + if (!gjfflag) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + energy_onestep += flangevin[i][0]*v[i][0] + flangevin[i][1]*v[i][1] + + flangevin[i][2]*v[i][2]; + energy = 0.5*energy_onestep*update->dt; + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (tbiasflag) + temperature->remove_bias(i, lv[i]); + energy_onestep += flangevin[i][0]*lv[i][0] + flangevin[i][1]*lv[i][1] + + flangevin[i][2]*lv[i][2]; + if (tbiasflag) + temperature->restore_bias(i, lv[i]); + } + energy = -0.5*energy_onestep*update->dt; + } } // convert midstep energy back to previous fullstep energy @@ -867,8 +1114,8 @@ void *FixLangevin::extract(const char *str, int &dim) double FixLangevin::memory_usage() { double bytes = 0.0; - if (gjfflag) bytes += atom->nmax*3 * sizeof(double); - if (tallyflag) bytes += atom->nmax*3 * sizeof(double); + if (gjfflag) bytes += atom->nmax*6 * sizeof(double); + if (tallyflag || osflag) bytes += atom->nmax*3 * sizeof(double); if (tforce) bytes += atom->nmax * sizeof(double); return bytes; } @@ -880,6 +1127,7 @@ double FixLangevin::memory_usage() void FixLangevin::grow_arrays(int nmax) { memory->grow(franprev,nmax,3,"fix_langevin:franprev"); + memory->grow(lv,nmax,3,"fix_langevin:lv"); } /* ---------------------------------------------------------------------- @@ -888,8 +1136,12 @@ void FixLangevin::grow_arrays(int nmax) void FixLangevin::copy_arrays(int i, int j, int /*delflag*/) { - for (int m = 0; m < nvalues; m++) - franprev[j][m] = franprev[i][m]; + franprev[j][0] = franprev[i][0]; + franprev[j][1] = franprev[i][1]; + franprev[j][2] = franprev[i][2]; + lv[j][0] = lv[i][0]; + lv[j][1] = lv[i][1]; + lv[j][2] = lv[i][2]; } /* ---------------------------------------------------------------------- @@ -898,8 +1150,14 @@ void FixLangevin::copy_arrays(int i, int j, int /*delflag*/) int FixLangevin::pack_exchange(int i, double *buf) { - for (int m = 0; m < nvalues; m++) buf[m] = franprev[i][m]; - return nvalues; + int n = 0; + buf[n++] = franprev[i][0]; + buf[n++] = franprev[i][1]; + buf[n++] = franprev[i][2]; + buf[n++] = lv[i][0]; + buf[n++] = lv[i][1]; + buf[n++] = lv[i][2]; + return n; } /* ---------------------------------------------------------------------- @@ -908,6 +1166,12 @@ int FixLangevin::pack_exchange(int i, double *buf) int FixLangevin::unpack_exchange(int nlocal, double *buf) { - for (int m = 0; m < nvalues; m++) franprev[nlocal][m] = buf[m]; - return nvalues; + int n = 0; + franprev[nlocal][0] = buf[n++]; + franprev[nlocal][1] = buf[n++]; + franprev[nlocal][2] = buf[n++]; + lv[nlocal][0] = buf[n++]; + lv[nlocal][1] = buf[n++]; + lv[nlocal][2] = buf[n++]; + return n; } diff --git a/src/fix_langevin.h b/src/fix_langevin.h index 4b5570ac2e..868b71a44d 100644 --- a/src/fix_langevin.h +++ b/src/fix_langevin.h @@ -31,6 +31,7 @@ class FixLangevin : public Fix { int setmask(); void init(); void setup(int); + virtual void initial_integrate(int); virtual void post_force(int); void post_force_respa(int, int, int); virtual void end_of_step(); @@ -46,7 +47,7 @@ class FixLangevin : public Fix { int unpack_exchange(int, double *); protected: - int gjfflag,oflag,tallyflag,zeroflag,tbiasflag; + int gjfflag,nvalues,osflag,oflag,tallyflag,zeroflag,tbiasflag; int flangevin_allocated; double ascale; double t_start,t_stop,t_period,t_target; @@ -54,7 +55,7 @@ class FixLangevin : public Fix { double energy,energy_onestep; double tsqrt; int tstyle,tvar; - double gjffac; + double gjfa, gjfsib; //gjf a and gjf sqrt inverse b char *tstr; class AtomVecEllipsoid *avec; @@ -63,7 +64,7 @@ class FixLangevin : public Fix { double **flangevin; double *tforce; double **franprev; - int nvalues; + double **lv; //half step velocity char *id_temp; class Compute *temperature; @@ -139,6 +140,18 @@ E: Fix_modify temperature ID does not compute temperature The compute ID assigned to the fix must compute temperature. +E: Fix langevin gjf cannot have period equal to dt/2 + +If the period is equal to dt/2 then division by zero will happen. + +E: Fix langevin gjf should come before fix nve + +Self-explanatory + +E: Fix langevin gjf and respa are not compatible + +Self-explanatory + W: Group for fix_modify temp != fix group The fix_modify command is specifying a temperature computation that diff --git a/src/force.cpp b/src/force.cpp index 1a826b2843..cc121a5f80 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -21,6 +21,7 @@ #include "style_improper.h" #include "style_pair.h" #include "style_kspace.h" +#include "atom.h" #include "comm.h" #include "pair.h" #include "pair_hybrid.h" @@ -196,6 +197,28 @@ void Force::init() if (angle) angle->init(); if (dihedral) dihedral->init(); if (improper) improper->init(); + + // print warnings if topology and force field are inconsistent + + if (comm->me == 0) { + if (!bond && (atom->nbonds > 0)) { + error->warning(FLERR,"Bonds are defined but no bond style is set"); + if ((special_lj[1] != 1.0) || (special_coul[1] != 1.0)) + error->warning(FLERR,"Likewise 1-2 special neighbor interactions != 1.0"); + } + if (!angle && (atom->nangles > 0)) { + error->warning(FLERR,"Angles are defined but no angle style is set"); + if ((special_lj[2] != 1.0) || (special_coul[2] != 1.0)) + error->warning(FLERR,"Likewise 1-3 special neighbor interactions != 1.0"); + } + if (!dihedral && (atom->ndihedrals > 0)) { + error->warning(FLERR,"Dihedrals are defined but no dihedral style is set"); + if ((special_lj[3] != 1.0) || (special_coul[3] != 1.0)) + error->warning(FLERR,"Likewise 1-4 special neighbor interactions != 1.0"); + } + if (!improper && (atom->nimpropers > 0)) + error->warning(FLERR,"Impropers are defined but no improper style is set"); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/force.h b/src/force.h index 26a3ecdfb8..2dcbdbdd75 100644 --- a/src/force.h +++ b/src/force.h @@ -226,4 +226,48 @@ A command with an argument that specifies an integer or range of integers is using a value that is less than 1 or greater than the maximum allowed limit. +W: Bonds are defined but no bond style is set + +The topology contains bonds, but there are no bond forces computed +since there was no bond_style command. + +W: Angles are defined but no angle style is set + +The topology contains angles, but there are no angle forces computed +since there was no angle_style command. + +W: Dihedrals are defined but no dihedral style is set + +The topology contains dihedrals, but there are no dihedral forces computed +since there was no dihedral_style command. + +W: Impropers are defined but no improper style is set + +The topology contains impropers, but there are no improper forces computed +since there was no improper_style command. + +W: Likewise 1-2 special neighbor interactions != 1.0 + +The topology contains bonds, but there is no bond style defined +and a 1-2 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the bond style. + +W: Likewise 1-3 special neighbor interactions != 1.0 + +The topology contains angles, but there is no angle style defined +and a 1-3 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the angle style. + +W: Likewise 1-4 special neighbor interactions != 1.0 + +The topology contains dihedrals, but there is no dihedral style defined +and a 1-4 special neighbor scaling factor was not 1.0. This +means that pair style interactions may have scaled or missing +pairs in the neighbor list in expectation of interactions for +those pairs being computed from the dihedral style. + */ diff --git a/src/info.cpp b/src/info.cpp index caa2d6fdd0..4b4c9a6a75 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -281,6 +281,7 @@ void Info::command(int narg, char **arg) infobuf = get_compiler_info(); fprintf(out,"\nCompiler: %s with %s\n",infobuf,get_openmp_info()); delete[] infobuf; + fprintf(out,"C++ standard: %s\n",get_cxx_info()); fputs("\nActive compile time flags:\n\n",out); if (has_gzip_support()) fputs("-DLAMMPS_GZIP\n",out); @@ -1208,6 +1209,23 @@ const char *Info::get_openmp_info() #endif } +const char *Info::get_cxx_info() +{ +#if __cplusplus > 201703L + return (const char *)"newer than C++17"; +#elif __cplusplus == 201703L + return (const char *)"C++17"; +#elif __cplusplus == 201402L + return (const char *)"C++14"; +#elif __cplusplus == 201103L + return (const char *)"C++11"; +#elif __cplusplus == 199711L + return (const char *)"C++98"; +#else + return (const char *)"unknown"; +#endif +} + /* ---------------------------------------------------------------------- */ char **Info::get_variable_names(int &num) { diff --git a/src/info.h b/src/info.h index ff8f15676d..8ac931aa68 100644 --- a/src/info.h +++ b/src/info.h @@ -43,6 +43,7 @@ class Info : protected Pointers { static char *get_os_info(); static char *get_compiler_info(); static const char *get_openmp_info(); + static const char *get_cxx_info(); char **get_variable_names(int &num); diff --git a/src/kspace.h b/src/kspace.h index c04a0db989..60df2345fd 100644 --- a/src/kspace.h +++ b/src/kspace.h @@ -44,7 +44,7 @@ class KSpace : protected Pointers { int dispersionflag; // 1 if a LJ/dispersion solver int tip4pflag; // 1 if a TIP4P solver int dipoleflag; // 1 if a dipole solver - int spinflag; // 1 if a spin solver + int spinflag; // 1 if a spin solver int differentiation_flag; int neighrequest_flag; // used to avoid obsolete construction // of neighbor lists diff --git a/src/lammps.cpp b/src/lammps.cpp index 5ddc1600a4..b3f420b03d 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -444,6 +444,19 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) : if ((universe->me == 0) && !helpflag) { if (screen) fprintf(screen,"LAMMPS (%s)\n",universe->version); if (logfile) fprintf(logfile,"LAMMPS (%s)\n",universe->version); +#if defined(LAMMPS_CXX98) + const char warning[] = "\nWARNING-WARNING-WARNING-WARNING-WARNING\n" + "This LAMMPS executable was compiled using C++98 compatibility.\n" + "Please report the compiler info below at https://github.com/lammps/lammps/issues/1659\n"; + const char *infobuf = Info::get_compiler_info(); + if (screen) + fprintf(screen,"%s%s\nWARNING-WARNING-WARNING-WARNING-WARNING\n\n", + warning,infobuf); + if (logfile) + fprintf(logfile,"%s%s\nWARNING-WARNING-WARNING-WARNING-WARNING\n\n", + warning,infobuf); + delete[] infobuf; +#endif } // universe is one or more worlds, as setup by partition switch @@ -1263,8 +1276,9 @@ void LAMMPS::print_config(FILE *fp) delete[] infobuf; infobuf = Info::get_compiler_info(); - fprintf(fp,"Compiler: %s with %s\n\n",infobuf,Info::get_openmp_info()); + fprintf(fp,"Compiler: %s with %s\n",infobuf,Info::get_openmp_info()); delete[] infobuf; + fprintf(fp,"C++ standard: %s\n\n",Info::get_cxx_info()); fputs("Active compile time flags:\n\n",fp); if (Info::has_gzip_support()) fputs("-DLAMMPS_GZIP\n",fp); diff --git a/src/lmptype.h b/src/lmptype.h index 65e46535fc..b220538190 100644 --- a/src/lmptype.h +++ b/src/lmptype.h @@ -28,6 +28,13 @@ #ifndef LMP_LMPTYPE_H #define LMP_LMPTYPE_H +// C++11 check +#ifndef LAMMPS_CXX98 +#if __cplusplus <= 199711L + #error LAMMPS is planning to transition to C++11. Do disable this error please use a C++11 compliant compiler, enable C++11 (or later) compliance, or define LAMMPS_CXX98 in your makefile +#endif +#endif + #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS #endif diff --git a/src/min.cpp b/src/min.cpp index 7a241f981b..c1d3218892 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -42,10 +42,12 @@ #include "output.h" #include "thermo.h" #include "timer.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -54,6 +56,7 @@ Min::Min(LAMMPS *lmp) : Pointers(lmp) dmax = 0.1; searchflag = 0; linestyle = 1; + normstyle = TWO; delaystep = 20; dtgrow = 1.1; @@ -731,6 +734,15 @@ void Min::modify_params(int narg, char **arg) if (strcmp(arg[iarg+1],"backtrack") == 0) linestyle = 0; else if (strcmp(arg[iarg+1],"quadratic") == 0) linestyle = 1; else if (strcmp(arg[iarg+1],"forcezero") == 0) linestyle = 2; + else if (strcmp(arg[iarg+1],"spin_cubic") == 0) linestyle = 3; + else if (strcmp(arg[iarg+1],"spin_none") == 0) linestyle = 4; + else error->all(FLERR,"Illegal min_modify command"); + iarg += 2; + } else if (strcmp(arg[iarg],"norm") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal min_modify command"); + if (strcmp(arg[iarg+1],"two") == 0) normstyle = TWO; + else if (strcmp(arg[iarg+1],"max") == 0) normstyle = MAX; + else if (strcmp(arg[iarg+1],"inf") == 0) normstyle = INF; else error->all(FLERR,"Illegal min_modify command"); iarg += 2; } else { @@ -894,6 +906,137 @@ double Min::fnorm_inf() return norm_inf; } +/* ---------------------------------------------------------------------- + compute and return ||force||_max (inf norm per-vector) +------------------------------------------------------------------------- */ + +double Min::fnorm_max() +{ + int i,n; + double fdotf,*fatom; + + double local_norm_max = 0.0; + for (i = 0; i < nvec; i+=3) { + fdotf = fvec[i]*fvec[i]+fvec[i+1]*fvec[i+1]+fvec[i+2]*fvec[i+2]; + local_norm_max = MAX(fdotf,local_norm_max); + } + if (nextra_atom) { + for (int m = 0; m < nextra_atom; m++) { + fatom = fextra_atom[m]; + n = extra_nlen[m]; + for (i = 0; i < n; i+=3) + fdotf = fvec[i]*fvec[i]+fvec[i+1]*fvec[i+1]+fvec[i+2]*fvec[i+2]; + local_norm_max = MAX(fdotf,local_norm_max); + } + } + + double norm_max = 0.0; + MPI_Allreduce(&local_norm_max,&norm_max,1,MPI_DOUBLE,MPI_MAX,world); + + if (nextra_global) + for (i = 0; i < n; i+=3) + fdotf = fvec[i]*fvec[i]+fvec[i+1]*fvec[i+1]+fvec[i+2]*fvec[i+2]; + norm_max = MAX(fdotf,norm_max); + + return norm_max; +} + +/* ---------------------------------------------------------------------- + compute and return sum_i||mag. torque_i||_2 (in eV) +------------------------------------------------------------------------- */ + +double Min::total_torque() +{ + double fmsq,ftotsqone,ftotsqall; + int nlocal = atom->nlocal; + double hbar = force->hplanck/MY_2PI; + double tx,ty,tz; + double **sp = atom->sp; + double **fm = atom->fm; + + fmsq = ftotsqone = ftotsqall = 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]; + fmsq = tx*tx + ty*ty + tz*tz; + ftotsqone += fmsq; + } + + // summing all fmsqtot on this replica + + MPI_Allreduce(&ftotsqone,&ftotsqall,1,MPI_DOUBLE,MPI_SUM,world); + + // multiply it by hbar so that units are in eV + + return sqrt(ftotsqall) * hbar; +} + +/* ---------------------------------------------------------------------- + compute and return max_i ||mag. torque components|| (in eV) +------------------------------------------------------------------------- */ + +double Min::inf_torque() +{ + double fmsq,fmaxsqone,fmaxsqall; + int nlocal = atom->nlocal; + double hbar = force->hplanck/MY_2PI; + double tx,ty,tz; + double **sp = atom->sp; + double **fm = atom->fm; + + fmsq = fmaxsqone = fmaxsqall = 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]; + fmaxsqone = MAX(fmaxsqone,tx*tx); + fmaxsqone = MAX(fmaxsqone,ty*ty); + fmaxsqone = MAX(fmaxsqone,tz*tz); + } + + // finding max fm on this replica + + fmaxsqall = fmaxsqone; + MPI_Allreduce(&fmaxsqone,&fmaxsqall,1,MPI_DOUBLE,MPI_MAX,world); + + // multiply it by hbar so that units are in eV + + return sqrt(fmaxsqall) * hbar; +} + +/* ---------------------------------------------------------------------- + compute and return max_i ||mag. torque_i|| (in eV) +------------------------------------------------------------------------- */ + +double Min::max_torque() +{ + double fmsq,fmaxsqone,fmaxsqall; + int nlocal = atom->nlocal; + double hbar = force->hplanck/MY_2PI; + double tx,ty,tz; + double **sp = atom->sp; + double **fm = atom->fm; + + fmsq = fmaxsqone = fmaxsqall = 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]; + fmsq = tx*tx + ty*ty + tz*tz; + fmaxsqone = MAX(fmaxsqone,fmsq); + } + + // finding max fm on this replica + + fmaxsqall = fmaxsqone; + MPI_Allreduce(&fmaxsqone,&fmaxsqall,1,MPI_DOUBLE,MPI_MAX,world); + + // multiply it by hbar so that units are in eV + + return sqrt(fmaxsqall) * hbar; +} + /* ---------------------------------------------------------------------- possible stop conditions ------------------------------------------------------------------------- */ diff --git a/src/min.h b/src/min.h index f04ab9fe5c..89077807c9 100644 --- a/src/min.h +++ b/src/min.h @@ -39,8 +39,16 @@ class Min : protected Pointers { virtual bigint memory_usage() {return 0;} void modify_params(int, char **); virtual int modify_param(int, char **) {return 0;} - virtual double fnorm_sqr(); - virtual double fnorm_inf(); + double fnorm_sqr(); + double fnorm_inf(); + double fnorm_max(); + + enum{TWO,MAX,INF}; + + // methods for spin minimizers + double total_torque(); + double inf_torque(); + double max_torque(); virtual void init_style() {} virtual void setup_style() = 0; @@ -56,11 +64,15 @@ class Min : protected Pointers { int virial_style; // compute virial explicitly or implicitly int external_force_clear; // clear forces locally or externally - double dmax; // max dist to move any atom in one step - int linestyle; // 0 = backtrack, 1 = quadratic, 2 = forcezero + double dmax; // max dist to move any atom in one step + int linestyle; // 0 = backtrack, 1 = quadratic, 2 = forcezero + // 3 = spin_cubic, 4 = spin_none + + int normstyle; // TWO, MAX or INF flag for force norm evaluation + double dtinit; // store the default timestep - // only for minimize style adaptglok + // only for minimize style fire2 int delaystep; // minium steps of dynamics double dtgrow,dtshrink; // timestep increase, decrease double alpha0,alphashrink; // mixing velocities+forces coefficient @@ -115,9 +127,6 @@ class Min : protected Pointers { virtual double energy_force(int); virtual void force_clear(); - double compute_force_norm_sqr(); - double compute_force_norm_inf(); - void ev_setup(); void ev_set(bigint); diff --git a/src/min_cg.cpp b/src/min_cg.cpp index ff318d23da..80dde25f51 100644 --- a/src/min_cg.cpp +++ b/src/min_cg.cpp @@ -14,6 +14,7 @@ #include "min_cg.h" #include #include +#include "error.h" #include "update.h" #include "output.h" #include "timer.h" @@ -35,7 +36,7 @@ MinCG::MinCG(LAMMPS *lmp) : MinLineSearch(lmp) {} int MinCG::iterate(int maxiter) { int i,m,n,fail,ntimestep; - double beta,gg,dot[2],dotall[2]; + double beta,gg,dot[2],dotall[2],fmax; double *fatom,*gatom,*hatom; // nlimit = max # of CG iterations before restarting @@ -90,6 +91,7 @@ int MinCG::iterate(int maxiter) dot[0] += fvec[i]*fvec[i]; dot[1] += fvec[i]*g[i]; } + if (nextra_atom) for (m = 0; m < nextra_atom; m++) { fatom = fextra_atom[m]; @@ -98,6 +100,7 @@ int MinCG::iterate(int maxiter) for (i = 0; i < n; i++) { dot[0] += fatom[i]*fatom[i]; dot[1] += fatom[i]*gatom[i]; + fmax = MAX(fmax,fatom[i]*fatom[i]); } } MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); @@ -107,7 +110,16 @@ int MinCG::iterate(int maxiter) dotall[1] += fextra[i]*gextra[i]; } - if (dotall[0] < update->ftol*update->ftol) return FTOL; + fmax = 0.0; + if (normstyle == MAX) { // max force norm + fmax = fnorm_max(); + if (fmax < update->ftol*update->ftol) return FTOL; + } else if (normstyle == INF) { // infinite force norm + fmax = fnorm_inf(); + if (fmax < update->ftol*update->ftol) return FTOL; + } else if (normstyle == TWO) { // Euclidean force 2-norm + if (dotall[0] < update->ftol*update->ftol) return FTOL; + } else error->all(FLERR,"Illegal min_modify command"); // update new search direction h from new f = -Grad(x) and old g // this is Polak-Ribieri formulation diff --git a/src/min_fire.cpp b/src/min_fire.cpp index b7f853afd2..e0cc2437d4 100644 --- a/src/min_fire.cpp +++ b/src/min_fire.cpp @@ -16,6 +16,7 @@ #include #include "universe.h" #include "atom.h" +#include "error.h" #include "force.h" #include "update.h" #include "output.h" @@ -80,7 +81,7 @@ void MinFire::reset_vectors() int MinFire::iterate(int maxiter) { bigint ntimestep; - double vmax,vdotf,vdotfall,vdotv,vdotvall,fdotf,fdotfall; + double vmax,vdotf,vdotfall,vdotv,vdotvall,fdotf,fdotfloc,fdotfall; double scale1,scale2; double dtvone,dtv,dtf,dtfm; int flag,flagall; @@ -250,7 +251,10 @@ int MinFire::iterate(int maxiter) // sync across replicas if running multi-replica minimization if (update->ftol > 0.0) { - fdotf = fnorm_sqr(); + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // inf force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); if (update->multireplica == 0) { if (fdotf < update->ftol*update->ftol) return FTOL; } else { diff --git a/src/min_adaptglok.cpp b/src/min_fire2.cpp similarity index 100% rename from src/min_adaptglok.cpp rename to src/min_fire2.cpp diff --git a/src/min_adaptglok.h b/src/min_fire2.h similarity index 100% rename from src/min_adaptglok.h rename to src/min_fire2.h diff --git a/src/min_hftn.cpp b/src/min_hftn.cpp index dcfed10fef..63432aab63 100644 --- a/src/min_hftn.cpp +++ b/src/min_hftn.cpp @@ -22,6 +22,7 @@ #include #include #include "atom.h" +#include "error.h" #include "fix_minimize.h" #include "modify.h" #include "output.h" @@ -112,6 +113,9 @@ void MinHFTN::init() { Min::init(); + if (normstyle == MAX) + error->all(FLERR,"Incorrect min_modify option"); + for (int i = 1; i < NUM_HFTN_ATOM_BASED_VECTORS; i++) { if (_daExtraGlobal[i] != NULL) delete [] _daExtraGlobal[i]; diff --git a/src/min_quickmin.cpp b/src/min_quickmin.cpp index 04e72b046d..ef649b4dac 100644 --- a/src/min_quickmin.cpp +++ b/src/min_quickmin.cpp @@ -16,6 +16,7 @@ #include #include "universe.h" #include "atom.h" +#include "error.h" #include "force.h" #include "update.h" #include "output.h" @@ -75,7 +76,7 @@ void MinQuickMin::reset_vectors() int MinQuickMin::iterate(int maxiter) { bigint ntimestep; - double vmax,vdotf,vdotfall,fdotf,fdotfall,scale; + double vmax,vdotf,vdotfall,fdotf,fdotfloc,fdotfall,scale; double dtvone,dtv,dtf,dtfm; int flag,flagall; @@ -215,7 +216,10 @@ int MinQuickMin::iterate(int maxiter) // sync across replicas if running multi-replica minimization if (update->ftol > 0.0) { - fdotf = fnorm_sqr(); + if (normstyle == MAX) fdotfloc = fnorm_max(); // max force norm + else if (normstyle == INF) fdotfloc = fnorm_inf(); // inf force norm + else if (normstyle == TWO) fdotfloc = fnorm_sqr(); // Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); if (update->multireplica == 0) { if (fdotf < update->ftol*update->ftol) return FTOL; } else { diff --git a/src/min_sd.cpp b/src/min_sd.cpp index e4e159003f..8541b0ccdf 100644 --- a/src/min_sd.cpp +++ b/src/min_sd.cpp @@ -13,6 +13,7 @@ #include "min_sd.h" #include +#include "error.h" #include "update.h" #include "output.h" #include "timer.h" @@ -34,7 +35,7 @@ MinSD::MinSD(LAMMPS *lmp) : MinLineSearch(lmp) {} int MinSD::iterate(int maxiter) { int i,m,n,fail,ntimestep; - double fdotf; + double fdotf,fdotfloc; double *fatom,*hatom; // initialize working vectors @@ -77,7 +78,10 @@ int MinSD::iterate(int maxiter) // force tolerance criterion - fdotf = fnorm_sqr(); + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // infinite force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); if (fdotf < update->ftol*update->ftol) return FTOL; // set new search direction h to f = -Grad(x) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index d38aed08c0..2c77a13258 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1941,6 +1941,7 @@ int Neighbor::decide() conservative shrink procedure: compute distance each of 8 corners of box has moved since last reneighbor reduce skin distance by sum of 2 largest of the 8 values + if reduced skin distance is negative, set to zero new trigger = 1/2 of reduced skin distance for orthogonal box, only need 2 lo/hi corners for triclinic, need all 8 corners since deformations can displace all 8 @@ -1962,6 +1963,7 @@ int Neighbor::check_distance() delz = bboxhi[2] - boxhi_hold[2]; delta2 = sqrt(delx*delx + dely*dely + delz*delz); delta = 0.5 * (skin - (delta1+delta2)); + if (delta < 0.0) delta = 0.0; deltasq = delta*delta; } else { domain->box_corners(); @@ -1975,6 +1977,7 @@ int Neighbor::check_distance() else if (delta > delta2) delta2 = delta; } delta = 0.5 * (skin - (delta1+delta2)); + if (delta < 0.0) delta = 0.0; deltasq = delta*delta; } } else deltasq = triggersq; diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 3d2e2b6592..62ce209b90 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -734,8 +734,12 @@ void ReadRestart::header(int incompatible) } else if (flag == NPROCS) { nprocs_file = read_int(); - if (nprocs_file != comm->nprocs && me == 0) - error->warning(FLERR,"Restart file used different # of processors"); + if (nprocs_file != comm->nprocs && me == 0) { + char msg[128]; + snprintf(msg,128,"Restart file used different # of processors: %d vs. %d", + nprocs_file,comm->nprocs); + error->warning(FLERR,msg); + } // don't set procgrid, warn if different diff --git a/src/reader_native.cpp b/src/reader_native.cpp index fba613bdd3..a4b188be5f 100644 --- a/src/reader_native.cpp +++ b/src/reader_native.cpp @@ -56,12 +56,19 @@ int ReaderNative::read_time(bigint &ntimestep) char *eof = fgets(line,MAXLINE,fp); if (eof == NULL) return 1; + // skip over unit information, if present. + + if (strstr(line,"ITEM: UNITS") == line) + read_lines(2); + if (strstr(line,"ITEM: TIMESTEP") != line) error->one(FLERR,"Dump file is incorrectly formatted"); + read_lines(1); int rv = sscanf(line,BIGINT_FORMAT,&ntimestep); if (rv != 1) error->one(FLERR,"Dump file is incorrectly formatted"); + return 0; } diff --git a/src/version.h b/src/version.h index 7387a3a1a4..d9dcc6de0f 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "7 Aug 2019" +#define LAMMPS_VERSION "19 Sep 2019" diff --git a/tools/binary2txt.cpp b/tools/binary2txt.cpp index e0778fbf3c..119e9e3574 100644 --- a/tools/binary2txt.cpp +++ b/tools/binary2txt.cpp @@ -99,9 +99,9 @@ int main(int narg, char **arg) // detect end-of-file if (feof(fp)) { - fclose(fp); - fclose(fptxt); - break; + fclose(fp); + fclose(fptxt); + break; } fread(&natoms,sizeof(bigint),1,fp); @@ -114,13 +114,13 @@ int main(int narg, char **arg) fread(&zlo,sizeof(double),1,fp); fread(&zhi,sizeof(double),1,fp); if (triclinic) { - fread(&xy,sizeof(double),1,fp); - fread(&xz,sizeof(double),1,fp); - fread(&yz,sizeof(double),1,fp); + fread(&xy,sizeof(double),1,fp); + fread(&xz,sizeof(double),1,fp); + fread(&yz,sizeof(double),1,fp); } fread(&size_one,sizeof(int),1,fp); fread(&nchunk,sizeof(int),1,fp); - + fprintf(fptxt,"ITEM: TIMESTEP\n"); fprintf(fptxt,BIGINT_FORMAT "\n",ntimestep); fprintf(fptxt,"ITEM: NUMBER OF ATOMS\n"); @@ -128,26 +128,26 @@ int main(int narg, char **arg) m = 0; for (int idim = 0; idim < 3; idim++) { - for (int iside = 0; iside < 2; iside++) { - if (boundary[idim][iside] == 0) boundstr[m++] = 'p'; - else if (boundary[idim][iside] == 1) boundstr[m++] = 'f'; - else if (boundary[idim][iside] == 2) boundstr[m++] = 's'; - else if (boundary[idim][iside] == 3) boundstr[m++] = 'm'; - } - boundstr[m++] = ' '; + for (int iside = 0; iside < 2; iside++) { + if (boundary[idim][iside] == 0) boundstr[m++] = 'p'; + else if (boundary[idim][iside] == 1) boundstr[m++] = 'f'; + else if (boundary[idim][iside] == 2) boundstr[m++] = 's'; + else if (boundary[idim][iside] == 3) boundstr[m++] = 'm'; + } + boundstr[m++] = ' '; } boundstr[8] = '\0'; - + if (!triclinic) { - fprintf(fptxt,"ITEM: BOX BOUNDS %s\n",boundstr); - fprintf(fptxt,"%g %g\n",xlo,xhi); - fprintf(fptxt,"%g %g\n",ylo,yhi); - fprintf(fptxt,"%g %g\n",zlo,zhi); + fprintf(fptxt,"ITEM: BOX BOUNDS %s\n",boundstr); + fprintf(fptxt,"%g %g\n",xlo,xhi); + fprintf(fptxt,"%g %g\n",ylo,yhi); + fprintf(fptxt,"%g %g\n",zlo,zhi); } else { - fprintf(fptxt,"ITEM: BOX BOUNDS %s xy xz yz\n",boundstr); - fprintf(fptxt,"%g %g %g\n",xlo,xhi,xy); - fprintf(fptxt,"%g %g %g\n",ylo,yhi,xz); - fprintf(fptxt,"%g %g %g\n",zlo,zhi,yz); + fprintf(fptxt,"ITEM: BOX BOUNDS %s xy xz yz\n",boundstr); + fprintf(fptxt,"%g %g %g\n",xlo,xhi,xy); + fprintf(fptxt,"%g %g %g\n",ylo,yhi,xz); + fprintf(fptxt,"%g %g %g\n",zlo,zhi,yz); } fprintf(fptxt,"ITEM: ATOMS\n"); @@ -156,25 +156,25 @@ int main(int narg, char **arg) // loop over processor chunks in file for (i = 0; i < nchunk; i++) { - fread(&n,sizeof(int),1,fp); + fread(&n,sizeof(int),1,fp); - // extend buffer to fit chunk size - - if (n > maxbuf) { - if (buf) delete [] buf; - buf = new double[n]; - maxbuf = n; - } + // extend buffer to fit chunk size - // read chunk and write as size_one values per line + if (n > maxbuf) { + if (buf) delete [] buf; + buf = new double[n]; + maxbuf = n; + } - fread(buf,sizeof(double),n,fp); - n /= size_one; - m = 0; - for (j = 0; j < n; j++) { - for (k = 0; k < size_one; k++) fprintf(fptxt,"%g ",buf[m++]); - fprintf(fptxt,"\n"); - } + // read chunk and write as size_one values per line + + fread(buf,sizeof(double),n,fp); + n /= size_one; + m = 0; + for (j = 0; j < n; j++) { + for (k = 0; k < size_one; k++) fprintf(fptxt,"%g ",buf[m++]); + fprintf(fptxt,"\n"); + } } printf(" " BIGINT_FORMAT,ntimestep); diff --git a/tools/python/pizza/cfg.py b/tools/python/pizza/cfg.py index 8cefd38acd..bbd930ea3c 100644 --- a/tools/python/pizza/cfg.py +++ b/tools/python/pizza/cfg.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # cfg tool @@ -11,14 +11,14 @@ oneline = "Convert LAMMPS snapshots to AtomEye CFG format" docstr = """ -c = cfg(d) d = object containing atom coords (dump, data) +c = cfg(d) d = object containing atom coords (dump, data) c.one() write all snapshots to tmp.cfg c.one("new") write all snapshots to new.cfg c.many() write snapshots to tmp0000.cfg, tmp0001.cfg, etc c.many("new") write snapshots to new0000.cfg, new0001.cfg, etc -c.single(N) write snapshot for timestep N to tmp.cfg -c.single(N,"file") write snapshot for timestep N to file.cfg +c.single(N) write snapshot for timestep N to tmp.cfg +c.single(N,"file") write snapshot for timestep N to file.cfg """ # History @@ -46,7 +46,7 @@ class cfg: def __init__(self,data): self.data = data - + # -------------------------------------------------------------------- def one(self,*args): @@ -68,16 +68,16 @@ class cfg: print >>f,"Number of particles = %d " % len(atoms) print >>f,"# Timestep %d \n#\nA = 1.0 Angstrom" % time print >>f,"H0(1,1) = %20.10f A " % xlen - print >>f,"H0(1,2) = 0.0 A " - print >>f,"H0(1,3) = 0.0 A " - print >>f,"H0(2,1) = 0.0 A " + print >>f,"H0(1,2) = 0.0 A " + print >>f,"H0(1,3) = 0.0 A " + print >>f,"H0(2,1) = 0.0 A " print >>f,"H0(2,2) = %20.10f A " % ylen - print >>f,"H0(2,3) = 0.0 A " - print >>f,"H0(3,1) = 0.0 A " - print >>f,"H0(3,2) = 0.0 A " + print >>f,"H0(2,3) = 0.0 A " + print >>f,"H0(3,1) = 0.0 A " + print >>f,"H0(3,2) = 0.0 A " print >>f,"H0(3,3) = %20.10f A " % zlen print >>f,"#" - + for atom in atoms: itype = int(atom[1]) xfrac = (atom[2]-box[0])/xlen @@ -85,14 +85,14 @@ class cfg: zfrac = (atom[4]-box[2])/zlen # print >>f,"1.0 %d %15.10f %15.10f %15.10f %15.10f %15.10f %15.10f " % (itype,xfrac,yfrac,zfrac,atom[5],atom[6],atom[7]) print >>f,"1.0 %d %15.10f %15.10f %15.10f 0.0 0.0 0.0 " % (itype,xfrac,yfrac,zfrac) - + print time, sys.stdout.flush() n += 1 - + f.close() print "\nwrote %d snapshots to %s in CFG format" % (n,file) - + # -------------------------------------------------------------------- def many(self,*args): @@ -104,7 +104,7 @@ class cfg: which,time,flag = self.data.iterator(flag) if flag == -1: break time,box,atoms,bonds,tris,lines = self.data.viz(which) - + if n < 10: file = root + "000" + str(n) elif n < 100: @@ -112,7 +112,7 @@ class cfg: elif n < 1000: file = root + "0" + str(n) else: - file = root + str(n) + file = root + str(n) file += ".cfg" f = open(file,"w") @@ -123,16 +123,16 @@ class cfg: print >>f,"Number of particles = %d " % len(atoms) print >>f,"# Timestep %d \n#\nA = 1.0 Angstrom" % time print >>f,"H0(1,1) = %20.10f A " % xlen - print >>f,"H0(1,2) = 0.0 A " - print >>f,"H0(1,3) = 0.0 A " - print >>f,"H0(2,1) = 0.0 A " + print >>f,"H0(1,2) = 0.0 A " + print >>f,"H0(1,3) = 0.0 A " + print >>f,"H0(2,1) = 0.0 A " print >>f,"H0(2,2) = %20.10f A " % ylen - print >>f,"H0(2,3) = 0.0 A " - print >>f,"H0(3,1) = 0.0 A " - print >>f,"H0(3,2) = 0.0 A " + print >>f,"H0(2,3) = 0.0 A " + print >>f,"H0(3,1) = 0.0 A " + print >>f,"H0(3,2) = 0.0 A " print >>f,"H0(3,3) = %20.10f A " % zlen print >>f,"#" - + for atom in atoms: itype = int(atom[1]) xfrac = (atom[2]-box[0])/xlen @@ -140,14 +140,14 @@ class cfg: zfrac = (atom[4]-box[2])/zlen # print >>f,"1.0 %d %15.10f %15.10f %15.10f %15.10f %15.10f %15.10f " % (itype,xfrac,yfrac,zfrac,atom[5],atom[6],atom[7]) print >>f,"1.0 %d %15.10f %15.10f %15.10f 0.0 0.0 0.0 " % (itype,xfrac,yfrac,zfrac) - + print time, sys.stdout.flush() f.close() n += 1 - + print "\nwrote %s snapshots in CFG format" % n - + # -------------------------------------------------------------------- def single(self,time,*args): @@ -166,16 +166,16 @@ class cfg: print >>f,"Number of particles = %d " % len(atoms) print >>f,"# Timestep %d \n#\nA = 1.0 Angstrom" % time print >>f,"H0(1,1) = %20.10f A " % xlen - print >>f,"H0(1,2) = 0.0 A " - print >>f,"H0(1,3) = 0.0 A " - print >>f,"H0(2,1) = 0.0 A " + print >>f,"H0(1,2) = 0.0 A " + print >>f,"H0(1,3) = 0.0 A " + print >>f,"H0(2,1) = 0.0 A " print >>f,"H0(2,2) = %20.10f A " % ylen - print >>f,"H0(2,3) = 0.0 A " - print >>f,"H0(3,1) = 0.0 A " - print >>f,"H0(3,2) = 0.0 A " + print >>f,"H0(2,3) = 0.0 A " + print >>f,"H0(3,1) = 0.0 A " + print >>f,"H0(3,2) = 0.0 A " print >>f,"H0(3,3) = %20.10f A " % zlen print >>f,"#" - + for atom in atoms: itype = int(atom[1]) xfrac = (atom[2]-box[0])/xlen @@ -183,5 +183,5 @@ class cfg: zfrac = (atom[4]-box[2])/zlen # print >>f,"1.0 %d %15.10f %15.10f %15.10f %15.10f %15.10f %15.10f " % (itype,xfrac,yfrac,zfrac,atom[5],atom[6],atom[7]) print >>f,"1.0 %d %15.10f %15.10f %15.10f 0.0 0.0 0.0 " % (itype,xfrac,yfrac,zfrac) - + f.close() diff --git a/tools/python/pizza/dump.py b/tools/python/pizza/dump.py index 8098a2c4b7..1c6eb5edfd 100644 --- a/tools/python/pizza/dump.py +++ b/tools/python/pizza/dump.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # dump tool @@ -12,15 +12,15 @@ oneline = "Read, write, manipulate dump files and particle attributes" docstr = """ d = dump("dump.one") read in one or more dump files -d = dump("dump.1 dump.2.gz") can be gzipped -d = dump("dump.*") wildcard expands to multiple files -d = dump("dump.*",0) two args = store filenames, but don't read +d = dump("dump.1 dump.2.gz") can be gzipped +d = dump("dump.*") wildcard expands to multiple files +d = dump("dump.*",0) two args = store filenames, but don't read incomplete and duplicate snapshots are deleted atoms will be unscaled if stored in files as scaled - self-describing column names assigned + self-describing column names assigned -time = d.next() read next snapshot from dump files +time = d.next() read next snapshot from dump files used with 2-argument constructor to allow reading snapshots one-at-a-time snapshot will be skipped only if another snapshot has same time stamp @@ -31,21 +31,21 @@ time = d.next() read next snapshot from dump files d.map(1,"id",3,"x") assign names to columns (1-N) not needed if dump file is self-describing - -d.tselect.all() select all timesteps -d.tselect.one(N) select only timestep N -d.tselect.none() deselect all timesteps -d.tselect.skip(M) select every Mth step + +d.tselect.all() select all timesteps +d.tselect.one(N) select only timestep N +d.tselect.none() deselect all timesteps +d.tselect.skip(M) select every Mth step d.tselect.test("$t >= 100 and $t < 10000") select matching timesteps -d.delete() delete non-selected timesteps +d.delete() delete non-selected timesteps selecting a timestep also selects all atoms in the timestep skip() and test() only select from currently selected timesteps test() uses a Python Boolean expression with $t for timestep value Python comparison syntax: == != < > <= >= and or -d.aselect.all() select all atoms in all steps -d.aselect.all(N) select all atoms in one step +d.aselect.all() select all atoms in all steps +d.aselect.all(N) select all atoms in one step d.aselect.test("$id > 100 and $type == 2") select match atoms in all steps d.aselect.test("$id > 100 and $type == 2",N) select matching atoms in one step @@ -56,24 +56,24 @@ d.aselect.test("$id > 100 and $type == 2",N) select matching atoms in one step Python comparison syntax: == != < > <= >= and or $name must end with a space -d.write("file") write selected steps/atoms to dump file -d.write("file",head,app) write selected steps/atoms to dump file -d.scatter("tmp") write selected steps/atoms to multiple files +d.write("file") write selected steps/atoms to dump file +d.write("file",head,app) write selected steps/atoms to dump file +d.scatter("tmp") write selected steps/atoms to multiple files write() can be specified with 2 additional flags head = 0/1 for no/yes snapshot header, app = 0/1 for write vs append scatter() files are given timestep suffix: e.g. tmp.0, tmp.100, etc -d.scale() scale x,y,z to 0-1 for all timesteps -d.scale(100) scale atom coords for timestep N -d.unscale() unscale x,y,z to box size to all timesteps -d.unscale(1000) unscale atom coords for timestep N -d.wrap() wrap x,y,z into periodic box via ix,iy,iz -d.unwrap() unwrap x,y,z out of box via ix,iy,iz -d.owrap("other") wrap x,y,z to same image as another atom -d.sort() sort atoms by atom ID in all selected steps -d.sort("x") sort atoms by column value in all steps -d.sort(1000) sort atoms in timestep N +d.scale() scale x,y,z to 0-1 for all timesteps +d.scale(100) scale atom coords for timestep N +d.unscale() unscale x,y,z to box size to all timesteps +d.unscale(1000) unscale atom coords for timestep N +d.wrap() wrap x,y,z into periodic box via ix,iy,iz +d.unwrap() unwrap x,y,z out of box via ix,iy,iz +d.owrap("other") wrap x,y,z to same image as another atom +d.sort() sort atoms by atom ID in all selected steps +d.sort("x") sort atoms by column value in all steps +d.sort(1000) sort atoms in timestep N scale(), unscale(), wrap(), unwrap(), owrap() operate on all steps and atoms wrap(), unwrap(), owrap() require ix,iy,iz be defined @@ -85,8 +85,8 @@ d.sort(1000) sort atoms in timestep N m1,m2 = d.minmax("type") find min/max values for a column d.set("$ke = $vx * $vx + $vy * $vy") set a column to a computed value d.setv("type",vector) set a column to a vector of values -d.spread("ke",N,"color") 2nd col = N ints spread over 1st col -d.clone(1000,"color") clone timestep N values to other steps +d.spread("ke",N,"color") 2nd col = N ints spread over 1st col +d.clone(1000,"color") clone timestep N values to other steps minmax() operates on selected timesteps and atoms set() operates on selected timesteps and atoms @@ -107,17 +107,17 @@ d.clone(1000,"color") clone timestep N values to other steps values at every timestep are set to value at timestep N for that atom ID useful for propagating a color map -t = d.time() return vector of selected timestep values +t = d.time() return vector of selected timestep values fx,fy,... = d.atom(100,"fx","fy",...) return vector(s) for atom ID N fx,fy,... = d.vecs(1000,"fx","fy",...) return vector(s) for timestep N atom() returns vectors with one value for each selected timestep vecs() returns vectors with one value for each selected atom in the timestep -index,time,flag = d.iterator(0/1) loop over dump snapshots +index,time,flag = d.iterator(0/1) loop over dump snapshots time,box,atoms,bonds,tris,lines = d.viz(index) return list of viz objects -d.atype = "color" set column returned as "type" by viz -d.extra(obj) extract bond/tri/line info from obj +d.atype = "color" set column returned as "type" by viz +d.extra(obj) extract bond/tri/line info from obj iterator() loops over selected timesteps iterator() called with arg = 0 first time, with arg = 1 on subsequent calls @@ -137,7 +137,7 @@ d.extra(obj) extract bond/tri/line info from obj if extra() used to define lines, else NULL atype is column name viz() will return as atom type (def = "type") extra() extracts bonds/tris/lines from obj each time viz() is called - obj can be data object for bonds, cdata object for tris and lines, + obj can be data object for bonds, cdata object for tris and lines, bdump object for bonds, tdump object for tris, ldump object for lines. mdump object for tris """ @@ -227,7 +227,7 @@ class dump: for word in words: self.flist += glob.glob(word) if len(self.flist) == 0 and len(list) == 1: raise StandardError,"no dump file specified" - + if len(list) == 1: self.increment = 0 self.read_all() @@ -270,7 +270,7 @@ class dump: self.tselect.all() # print column assignments - + if len(self.names): print "assigned columns:",self.names2str() else: @@ -304,15 +304,15 @@ class dump: snap = self.read_snapshot(f) if not snap: self.nextfile += 1 - if self.nextfile == len(self.flist): return -1 + if self.nextfile == len(self.flist): return -1 f.close() - self.eof = 0 - continue + self.eof = 0 + continue self.eof = f.tell() f.close() try: self.findtime(snap.time) - continue + continue except: break # select the new snapshot with all its atoms @@ -334,7 +334,7 @@ class dump: # assign column names (file must be self-describing) # set scale_original to 0/1/-1 for unscaled/scaled/unknown # convert xs,xu to x in names - + def read_snapshot(self,f): try: snap = Snap() @@ -351,7 +351,7 @@ class dump: else: snap.boxstr = words[1].strip() if "xy" in snap.boxstr: snap.triclinic = 1 else: snap.triclinic = 0 - + words = f.readline().split() if len(words) == 2: snap.xlo,snap.xhi,snap.xy = float(words[0]),float(words[1]),0.0 @@ -372,7 +372,7 @@ class dump: else: snap.zlo,snap.zhi,snap.yz = \ float(words[0]),float(words[1]),float(words[2]) - + item = f.readline() if len(self.names) == 0: self.scale_original = -1 @@ -401,7 +401,7 @@ class dump: else: self.names[words[i]] = i if xflag == 0 and yflag == 0 and zflag == 0: self.scale_original = 0 if xflag == 1 and yflag == 1 and zflag == 1: self.scale_original = 1 - + if snap.natoms: words = f.readline().split() ncol = len(words) @@ -424,7 +424,7 @@ class dump: # -------------------------------------------------------------------- # map atom column names - + def map(self,*pairs): if len(pairs) % 2 != 0: raise StandardError, "dump map() requires pairs of mappings" @@ -509,7 +509,7 @@ class dump: atoms[:,y] = (atoms[:,y] - snap.ylo)*h1inv + \ (atoms[:,z] - snap.zlo)*h3inv atoms[:,z] = (atoms[:,z] - snap.zlo)*h2inv - + # -------------------------------------------------------------------- # unscale coords from 0-1 to box size for all snapshots or just one # use 6 params as h-matrix to treat orthogonal or triclinic boxes @@ -564,7 +564,7 @@ class dump: atoms[:,x] = snap.xlo + atoms[:,x]*h0 + atoms[:,y]*h5 + atoms[:,z]*h4 atoms[:,y] = snap.ylo + atoms[:,y]*h1 + atoms[:,z]*h3 atoms[:,z] = snap.zlo + atoms[:,z]*h2 - + # -------------------------------------------------------------------- # wrap coords from outside box to inside @@ -577,7 +577,7 @@ class dump: ix = self.names["ix"] iy = self.names["iy"] iz = self.names["iz"] - + for snap in self.snaps: xprd = snap.xhi - snap.xlo yprd = snap.yhi - snap.ylo @@ -599,7 +599,7 @@ class dump: ix = self.names["ix"] iy = self.names["iy"] iz = self.names["iz"] - + for snap in self.snaps: xprd = snap.xhi - snap.xlo yprd = snap.yhi - snap.ylo @@ -612,10 +612,10 @@ class dump: # -------------------------------------------------------------------- # wrap coords to same image as atom ID stored in "other" column # if dynamic extra lines or triangles defined, owrap them as well - + def owrap(self,other): print "Wrapping to other ..." - + id = self.names["id"] x = self.names["x"] y = self.names["y"] @@ -641,10 +641,10 @@ class dump: # should bonds also be owrapped ? if self.lineflag == 2 or self.triflag == 2: self.objextra.owrap(snap.time,xprd,yprd,zprd,ids,atoms,iother,ix,iy,iz) - + # -------------------------------------------------------------------- # convert column names assignment to a string, in column order - + def names2str(self): pairs = self.names.items() values = self.names.values() @@ -697,7 +697,7 @@ class dump: else: id = -1 if "type" in self.names: type = self.names["type"] else: type = -1 - + for snap in self.snaps: if not snap.tselect: continue print snap.time, @@ -719,7 +719,7 @@ class dump: print >>f,snap.ylo,snap.yhi print >>f,snap.zlo,snap.zhi print >>f,"ITEM: ATOMS",namestr - + atoms = snap.atoms nvalues = len(atoms[0]) for i in xrange(snap.natoms): @@ -743,7 +743,7 @@ class dump: if not snap.tselect: continue print snap.time, sys.stdout.flush() - + file = root + "." + str(snap.time) f = open(file,"w") print >>f,"ITEM: TIMESTEP" @@ -761,7 +761,7 @@ class dump: print >>f,snap.ylo,snap.yhi print >>f,snap.zlo,snap.zhi print >>f,"ITEM: ATOMS",namestr - + atoms = snap.atoms nvalues = len(atoms[0]) for i in xrange(snap.natoms): @@ -803,7 +803,7 @@ class dump: lhs = list[0][1:] if not self.names.has_key(lhs): self.newcolumn(lhs) - + for item in list: name = item[1:] column = self.names[name] @@ -815,7 +815,7 @@ class dump: if not snap.tselect: continue for i in xrange(snap.natoms): if snap.aselect[i]: exec ceq - + # -------------------------------------------------------------------- # set a column value via an input vec for all selected snapshots/atoms @@ -835,7 +835,7 @@ class dump: if snap.aselect[i]: atoms[i][icol] = vec[m] m += 1 - + # -------------------------------------------------------------------- # clone value in col across selected timesteps for atoms with same ID @@ -901,7 +901,7 @@ class dump: columns.append(self.names[name]) values.append(self.nselect * [0]) ncol = len(columns) - + id = self.names["id"] m = 0 for snap in self.snaps: @@ -917,13 +917,13 @@ class dump: if len(list) == 1: return values[0] else: return values - + # -------------------------------------------------------------------- # extract vector(s) of values for selected atoms at chosen timestep def vecs(self,n,*list): snap = self.snaps[self.findtime(n)] - + if len(list) == 0: raise StandardError, "no columns specified" columns = [] @@ -978,7 +978,7 @@ class dump: del self.snaps[i] else: i += 1 - + # -------------------------------------------------------------------- # iterate over selected snapshots @@ -990,12 +990,12 @@ class dump: self.iterate = i return i,self.snaps[i].time,1 return 0,0,-1 - + # -------------------------------------------------------------------- # return list of atoms to viz for snapshot isnap # if called with flag, then index is timestep, so convert to snapshot index # augment with bonds, tris, lines if extra() was invoked - + def viz(self,index,flag=0): if not flag: isnap = index else: @@ -1019,7 +1019,7 @@ class dump: # create atom list needed by viz from id,type,x,y,z # need Numeric/Numpy mode here - + atoms = [] for i in xrange(snap.natoms): if not snap.aselect[i]: continue @@ -1059,7 +1059,7 @@ class dump: if self.triflag == 1: tris = self.trilist elif self.triflag == 2: tmp1,tmp2,tmp3,tmp4,tris,tmp5 = self.objextra.viz(time,1) - + # create list of lines from static or dynamic tri list # if dynamic, could eliminate lines for unselected atoms @@ -1070,7 +1070,7 @@ class dump: tmp1,tmp2,tmp3,tmp4,tmp5,lines = self.objextra.viz(time,1) return time,box,atoms,bonds,tris,lines - + # -------------------------------------------------------------------- def findtime(self,n): @@ -1115,7 +1115,7 @@ class dump: def extra(self,arg): # data object, grab bonds statically - + if type(arg) is types.InstanceType and ".data" in str(arg.__class__): self.bondflag = 0 try: @@ -1132,7 +1132,7 @@ class dump: raise StandardError,"could not extract bonds from data object" # cdata object, grab tris and lines statically - + elif type(arg) is types.InstanceType and ".cdata" in str(arg.__class__): self.triflag = self.lineflag = 0 try: @@ -1147,32 +1147,32 @@ class dump: raise StandardError,"could not extract tris/lines from cdata object" # mdump object, grab tris dynamically - + elif type(arg) is types.InstanceType and ".mdump" in str(arg.__class__): self.triflag = 2 self.objextra = arg # bdump object, grab bonds dynamically - + elif type(arg) is types.InstanceType and ".bdump" in str(arg.__class__): self.bondflag = 2 self.objextra = arg # ldump object, grab lines dynamically - + elif type(arg) is types.InstanceType and ".ldump" in str(arg.__class__): self.lineflag = 2 self.objextra = arg # tdump object, grab tris dynamically - + elif type(arg) is types.InstanceType and ".tdump" in str(arg.__class__): self.triflag = 2 self.objextra = arg else: raise StandardError,"unrecognized argument to dump.extra()" - + # -------------------------------------------------------------------- def compare_atom(self,a,b): @@ -1181,7 +1181,7 @@ class dump: elif a[0] > b[0]: return 1 else: - return 0 + return 0 # -------------------------------------------------------------------- # one snapshot @@ -1196,7 +1196,7 @@ class tselect: def __init__(self,data): self.data = data - + # -------------------------------------------------------------------- def all(self): @@ -1243,7 +1243,7 @@ class tselect: data.nselect -= 1 data.aselect.all() print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) - + # -------------------------------------------------------------------- def test(self,teststr): @@ -1289,7 +1289,7 @@ class aselect: data = self.data # replace all $var with snap.atoms references and compile test string - + pattern = "\$\w*" list = re.findall(pattern,teststr) for item in list: diff --git a/tools/python/pizza/gnu.py b/tools/python/pizza/gnu.py index f6f0167330..d99ab3811d 100644 --- a/tools/python/pizza/gnu.py +++ b/tools/python/pizza/gnu.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # gnu tool @@ -11,12 +11,12 @@ oneline = "Create plots via GnuPlot plotting program" docstr = """ -g = gnu() start up GnuPlot -g.stop() shut down GnuPlot process - +g = gnu() start up GnuPlot +g.stop() shut down GnuPlot process + g.plot(a) plot vector A against linear index -g.plot(a,b) plot B against A -g.plot(a,b,c,d,...) plot B against A, D against C, etc +g.plot(a,b) plot B against A +g.plot(a,b,c,d,...) plot B against A, D against C, etc g.mplot(M,N,S,"file",a,b,...) multiple plots saved to file0000.eps, etc each plot argument can be a tuple, list, or Numeric/NumPy vector @@ -29,21 +29,21 @@ g.mplot(M,N,S,"file",a,b,...) multiple plots saved to file0000.eps, etc g("plot 'file.dat' using 2:3 with lines") execute string in GnuPlot -g.enter() enter GnuPlot shell +g.enter() enter GnuPlot shell gnuplot> plot sin(x) with lines type commands directly to GnuPlot -gnuplot> exit, quit exit GnuPlot shell - +gnuplot> exit, quit exit GnuPlot shell + g.export("data",range(100),a,...) create file with columns of numbers all vectors must be of equal length could plot from file with GnuPlot command: plot 'data' using 1:2 with lines -g.select(N) figure N becomes the current plot - +g.select(N) figure N becomes the current plot + subsequent commands apply to this plot -g.hide(N) delete window for figure N -g.save("file") save current plot as file.eps +g.hide(N) delete window for figure N +g.save("file") save current plot as file.eps Set attributes for current plot: @@ -94,7 +94,7 @@ except: PIZZA_GNUTERM = "x11" # Class definition class gnu: - + # -------------------------------------------------------------------- def __init__(self): @@ -102,7 +102,7 @@ class gnu: self.file = "tmp.gnu" self.figures = [] self.select(1) - + # -------------------------------------------------------------------- def stop(self): @@ -114,7 +114,7 @@ class gnu: def __call__(self,command): self.GNUPLOT.write(command + '\n') self.GNUPLOT.flush() - + # -------------------------------------------------------------------- def enter(self): @@ -152,7 +152,7 @@ class gnu: if i: partial_vecs.append(vec[:i]) else: partial_vecs.append([0]) self.plot(*partial_vecs) - + if n < 10: newfile = file + "000" + str(n) elif n < 100: newfile = file + "00" + str(n) elif n < 1000: newfile = file + "0" + str(n) @@ -160,7 +160,7 @@ class gnu: self.save(newfile) n += 1 - + # -------------------------------------------------------------------- # write list of equal-length vectors to filename @@ -201,7 +201,7 @@ class gnu: # do not continue until plot file is written out # else script could go forward and change data file # use tmp.done as semaphore to indicate plot is finished - + def save(self,file): self.__call__("set terminal postscript enhanced solid lw 2 color portrait") cmd = "set output '%s.eps'" % file @@ -212,7 +212,7 @@ class gnu: while not os.path.exists("tmp.done"): continue self.__call__("set output") self.select(self.current) - + # -------------------------------------------------------------------- # restore default attributes by creating a new fig object @@ -221,7 +221,7 @@ class gnu: fig.ncurves = self.figures[self.current-1].ncurves self.figures[self.current-1] = fig self.draw() - + # -------------------------------------------------------------------- def aspect(self,value): @@ -245,12 +245,12 @@ class gnu: else: self.figures[self.current-1].ylimit = (values[0],values[1]) self.draw() - + # -------------------------------------------------------------------- def label(self,x,y,text): self.figures[self.current-1].labels.append((x,y,text)) - self.figures[self.current-1].nlabels += 1 + self.figures[self.current-1].nlabels += 1 self.draw() # -------------------------------------------------------------------- @@ -259,7 +259,7 @@ class gnu: self.figures[self.current-1].nlabel = 0 self.figures[self.current-1].labels = [] self.draw() - + # -------------------------------------------------------------------- def title(self,*strings): @@ -276,13 +276,13 @@ class gnu: def xtitle(self,label): self.figures[self.current-1].xtitle = label self.draw() - + # -------------------------------------------------------------------- def ytitle(self,label): self.figures[self.current-1].ytitle = label self.draw() - + # -------------------------------------------------------------------- def xlog(self): @@ -291,7 +291,7 @@ class gnu: else: self.figures[self.current-1].xlog = 1 self.draw() - + # -------------------------------------------------------------------- def ylog(self): @@ -300,7 +300,7 @@ class gnu: else: self.figures[self.current-1].ylog = 1 self.draw() - + # -------------------------------------------------------------------- def curve(self,num,color): @@ -316,10 +316,10 @@ class gnu: def draw(self): fig = self.figures[self.current-1] if not fig.ncurves: return - + cmd = 'set size ratio ' + str(1.0/float(fig.aspect)) self.__call__(cmd) - + cmd = 'set title ' + '"' + fig.title + '"' self.__call__(cmd) cmd = 'set xlabel ' + '"' + fig.xtitle + '"' @@ -331,11 +331,11 @@ class gnu: else: self.__call__("unset logscale x") if fig.ylog: self.__call__("set logscale y") else: self.__call__("unset logscale y") - if fig.xlimit: + if fig.xlimit: cmd = 'set xr [' + str(fig.xlimit[0]) + ':' + str(fig.xlimit[1]) + ']' self.__call__(cmd) else: self.__call__("set xr [*:*]") - if fig.ylimit: + if fig.ylimit: cmd = 'set yr [' + str(fig.ylimit[0]) + ':' + str(fig.ylimit[1]) + ']' self.__call__(cmd) else: self.__call__("set yr [*:*]") @@ -365,7 +365,7 @@ class figure: def __init__(self): self.ncurves = 0 - self.colors = [] + self.colors = [] self.title = "" self.xtitle = "" self.ytitle = "" diff --git a/tools/python/pizza/log.py b/tools/python/pizza/log.py index aeca1d8d82..a255af2030 100644 --- a/tools/python/pizza/log.py +++ b/tools/python/pizza/log.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # log tool @@ -28,7 +28,7 @@ nvec = l.nvec # of vectors of thermo info nlen = l.nlen length of each vectors names = l.names list of vector names t,pe,... = l.get("Time","KE",...) return one or more vectors of values -l.write("file.txt") write all vectors to a file +l.write("file.txt") write all vectors to a file l.write("file.txt","Time","PE",...) write listed vectors to a file get and write allow abbreviated (uniquely) vector names @@ -89,7 +89,7 @@ class log: # -------------------------------------------------------------------- # read all thermo from all files - + def read_all(self): self.read_header(self.flist[0]) if self.nvec == 0: raise StandardError,"log file has no values" @@ -100,7 +100,7 @@ class log: print # sort entries by timestep, cull duplicates - + self.data.sort(self.compare) self.cull() self.nlen = len(self.data) @@ -133,9 +133,9 @@ class log: else: count = 0 for i in range(self.nvec): - if self.names[i].find(key) == 0: - count += 1 - index = i + if self.names[i].find(key) == 0: + count += 1 + index = i if count == 1: map.append(index) else: @@ -161,9 +161,9 @@ class log: else: count = 0 for i in range(self.nvec): - if self.names[i].find(key) == 0: - count += 1 - index = i + if self.names[i].find(key) == 0: + count += 1 + index = i if count == 1: map.append(index) else: @@ -226,7 +226,7 @@ class log: keywords.insert(0,"Step") i = 0 for keyword in keywords: - self.names.append(keyword) + self.names.append(keyword) self.ptr[keyword] = i i += 1 @@ -236,7 +236,7 @@ class log: line = txt[s1:s2] words = line.split() for i in range(len(words)): - self.names.append(words[i]) + self.names.append(words[i]) self.ptr[words[i]] = i self.nvec = len(self.names) @@ -275,43 +275,43 @@ class log: if s1 >= 0 and s2 >= 0 and s1 < s2: # found s1,s2 with s1 before s2 if self.style == 2: - s1 = txt.find("\n",s1) + 1 + s1 = txt.find("\n",s1) + 1 elif s1 >= 0 and s2 >= 0 and s2 < s1: # found s1,s2 with s2 before s1 s1 = 0 elif s1 == -1 and s2 >= 0: # found s2, but no s1 - last = 1 + last = 1 s1 = 0 elif s1 >= 0 and s2 == -1: # found s1, but no s2 last = 1 if self.style == 1: s2 = txt.rfind("\n--",s1) + 1 else: - s1 = txt.find("\n",s1) + 1 + s1 = txt.find("\n",s1) + 1 s2 = txt.rfind("\n",s1) + 1 - eof -= len(txt) - s2 + eof -= len(txt) - s2 elif s1 == -1 and s2 == -1: # found neither # could be end-of-file section - # or entire read was one chunk + # or entire read was one chunk if txt.find("Loop time of",start) == start: # end of file, so exit - eof -= len(txt) - start # reset eof to "Loop" - break + eof -= len(txt) - start # reset eof to "Loop" + break - last = 1 # entire read is a chunk + last = 1 # entire read is a chunk s1 = 0 if self.style == 1: s2 = txt.rfind("\n--",s1) + 1 else: s2 = txt.rfind("\n",s1) + 1 - eof -= len(txt) - s2 - if s1 == s2: break + eof -= len(txt) - s2 + if s1 == s2: break chunk = txt[s1:s2-1] start = s2 # split chunk into entries # parse each entry for numeric fields, append to data - + if self.style == 1: sections = chunk.split("\n--") pat1 = re.compile("Step\s*(\S*)\s") diff --git a/tools/python/pizza/pdbfile.py b/tools/python/pizza/pdbfile.py index 1713ada043..9b2238cbd6 100644 --- a/tools/python/pizza/pdbfile.py +++ b/tools/python/pizza/pdbfile.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # pdb tool @@ -22,7 +22,7 @@ p = pdbfile("3CRO",d) read in single PDB file with snapshot data if only one 4-char file specified and it is not found, it will be downloaded from http://www.rcsb.org as 3CRO.pdb d arg is object with atom coordinates (dump, data) - + p.one() write all output as one big PDB file to tmp.pdb p.one("mine") write to mine.pdb p.many() write one PDB file per snapshot: tmp0000.pdb, ... @@ -36,7 +36,7 @@ p.single(N,"new") write as new.pdb if one file in str arg and d: one new PDB file per snapshot using input PDB file as template multiple input PDB files with a d is not allowed - + index,time,flag = p.iterator(0) index,time,flag = p.iterator(1) @@ -87,7 +87,7 @@ class pdbfile: # flist = full list of all PDB input file names # append .pdb if needed - + if filestr: list = filestr.split() flist = [] @@ -107,7 +107,7 @@ class pdbfile: raise StandardError, "no input PDB file(s)" # grab PDB file from http://rcsb.org if not a local file - + if len(self.files) == 1 and len(self.files[0]) == 8: try: open(self.files[0],'r').close() @@ -117,7 +117,7 @@ class pdbfile: urllib.urlretrieve(fetchstr,self.files[0]) if self.data and len(self.files): self.read_template(self.files[0]) - + # -------------------------------------------------------------------- # write a single large PDB file for concatenating all input data or files # if data exists: @@ -135,7 +135,7 @@ class pdbfile: f = open(file,'w') # use template PDB file with each snapshot - + if self.data: n = flag = 0 while 1: @@ -153,7 +153,7 @@ class pdbfile: print >>f,"END" print file, sys.stdout.flush() - + f.close() print "\nwrote %d datasets to %s in PDB format" % (n,file) @@ -189,7 +189,7 @@ class pdbfile: f = open(file,'w') self.convert(f,which) f.close() - + print time, sys.stdout.flush() n += 1 @@ -206,13 +206,13 @@ class pdbfile: else: file = root + str(n) file += ".pdb" - + f = open(file,'w') f.write(open(infile,'r').read()) f.close() print file, sys.stdout.flush() - + n += 1 print "\nwrote %d datasets to %s*.pdb in PDB format" % (n,root) @@ -239,7 +239,7 @@ class pdbfile: self.convert(f,which) else: f.write(open(self.files[time],'r').read()) - + f.close() # -------------------------------------------------------------------- @@ -258,8 +258,8 @@ class pdbfile: # -------------------------------------------------------------------- # read a PDB file and store ATOM lines - - def read_template(self,file): + + def read_template(self,file): lines = open(file,'r').readlines() self.atomlines = {} for line in lines: diff --git a/tools/python/pizza/xyz.py b/tools/python/pizza/xyz.py index 66699ab5fa..92b681540a 100644 --- a/tools/python/pizza/xyz.py +++ b/tools/python/pizza/xyz.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # xyz tool @@ -11,14 +11,14 @@ oneline = "Convert LAMMPS snapshots to XYZ format" docstr = """ -x = xyz(d) d = object containing atom coords (dump, data) +x = xyz(d) d = object containing atom coords (dump, data) x.one() write all snapshots to tmp.xyz x.one("new") write all snapshots to new.xyz x.many() write snapshots to tmp0000.xyz, tmp0001.xyz, etc x.many("new") write snapshots to new0000.xyz, new0001.xyz, etc -x.single(N) write snapshot for timestep N to tmp.xyz -x.single(N,"file") write snapshot for timestep N to file.xyz +x.single(N) write snapshot for timestep N to tmp.xyz +x.single(N,"file") write snapshot for timestep N to file.xyz """ # History @@ -41,7 +41,7 @@ class xyz: def __init__(self,data): self.data = data - + # -------------------------------------------------------------------- def one(self,*args): @@ -61,14 +61,14 @@ class xyz: for atom in atoms: itype = int(atom[1]) print >>f,itype,atom[2],atom[3],atom[4] - + print time, sys.stdout.flush() n += 1 - + f.close() print "\nwrote %d snapshots to %s in XYZ format" % (n,file) - + # -------------------------------------------------------------------- def many(self,*args): @@ -80,7 +80,7 @@ class xyz: which,time,flag = self.data.iterator(flag) if flag == -1: break time,box,atoms,bonds,tris,lines = self.data.viz(which) - + if n < 10: file = root + "000" + str(n) elif n < 100: @@ -88,7 +88,7 @@ class xyz: elif n < 1000: file = root + "0" + str(n) else: - file = root + str(n) + file = root + str(n) file += ".xyz" f = open(file,"w") print >>f,len(atoms) @@ -100,9 +100,9 @@ class xyz: sys.stdout.flush() f.close() n += 1 - + print "\nwrote %s snapshots in XYZ format" % n - + # -------------------------------------------------------------------- def single(self,time,*args): diff --git a/tools/singularity/README.md b/tools/singularity/README.md new file mode 100644 index 0000000000..d316e629f3 --- /dev/null +++ b/tools/singularity/README.md @@ -0,0 +1,50 @@ +# Singularity container definitions for compiling/testing LAMMPS + +The *.def files in this folder can be used to build container images +for [Singularity](https://sylabs.io) suitable for compiling and testing +LAMMPS on a variety of OS variants with support for most standard packages +and building/spellchecking the manual. This allows to test and debug +LAMMPS code on different OS variants than what is locally installed on +your development workstation, e.g. when bugs are reported that can only +be reproduced on a specific OS or with specific (mostly older) versions +of tools, compilers, or libraries. + +Ready-to-use container images built from these definition files are +occasionally uploaded to the container library at sylabs.io. They +can be found here: https://cloud.sylabs.io/library/lammps/default/lammps_development# +and will be signed with the key fingerprint: EEA103764C6C633EDC8AC428D9B44E93BF0C375A + +Here is a workflow for testing a compilation of LAMMPS with a locally +built CentOS 7.x singularity container. + +``` +cd some/work/directory +git clone --depth 500 git://github.com/lammps/lammps.git lammps +mkdir build-centos7 +cd build-centos7 +sudo singularity build centos7.sif ../tools/singularity/centos7.def +singularity shell centos7.sif +cmake -C ../cmake/presets/most.cmake -D CMAKE_CXX_FLAGS="-O3 -g -fopenmp -std=c++11" ../cmake +make +``` + +And here is the equivalent workflow for testing a compilation of LAMMPS +using a pre-built Ubuntu 18.04LTS singularity container. + +``` +cd some/work/directory +git clone --depth 500 git://github.com/lammps/lammps.git lammps +mkdir build-ubuntu18 +cd build-ubuntu18 +singularity pull library://lammps/default/lammps_development:ubuntu18.04 +singularity shell lammps_development_ubuntu18.04.sif +cmake -C ../cmake/presets/most.cmake ../cmake +make +``` + +| Currently available: | | +| --- | --- | +| centos7.def | CentOS 7.x with EPEL enabled | +| centos8.def | CentOS 8.x with EPEL enabled | +| ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | +| ubuntu18.04.def | Ubuntu 18.04LTS with default MPI == OpenMPI | diff --git a/tools/singularity/centos7.def b/tools/singularity/centos7.def new file mode 100644 index 0000000000..8160105524 --- /dev/null +++ b/tools/singularity/centos7.def @@ -0,0 +1,10 @@ +BootStrap: library +From: centos:7 + +%post + yum -y install epel-release + yum -y update + yum -y install vim-enhanced ccache gcc-c++ gcc-gfortran clang gdb valgrind-openmpi make cmake cmake3 ninja-build patch which file git libpng-devel libjpeg-devel openmpi-devel mpich-devel python-devel python-virtualenv fftw-devel voro++-devel eigen3-devel gsl-devel openblas-devel enchant + +%labels + Author akohlmey diff --git a/tools/singularity/centos8.def b/tools/singularity/centos8.def new file mode 100644 index 0000000000..b48979cab1 --- /dev/null +++ b/tools/singularity/centos8.def @@ -0,0 +1,13 @@ +BootStrap: docker +From: centos:8 + +%post + dnf -y install epel-release dnf-utils + dnf config-manager --set-enabled PowerTools + dnf -y update + dnf -y install vim-enhanced ccache gcc-c++ gcc-gfortran clang gdb make cmake patch which file git libpng-devel libjpeg-devel openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel enchant platform-python-devel python3-virtualenv valgrind openblas ninja-build eigen3-devel + +#No match for argument: valgrind-openmpi + +%labels + Author akohlmey diff --git a/tools/singularity/ubuntu16.04.def b/tools/singularity/ubuntu16.04.def new file mode 100644 index 0000000000..2f7841bd4a --- /dev/null +++ b/tools/singularity/ubuntu16.04.def @@ -0,0 +1,9 @@ +BootStrap: docker +From: ubuntu:16.04 + +%post + apt-get update -y + env DEBIAN_FRONTEND=noninteractive apt-get install -y make cmake cmake-curses-gui ninja-build git ccache gcc g++ gfortran libfftw3-dev libjpeg-dev libpng12-dev libblas-dev liblapack-dev mpi-default-bin mpi-default-dev libeigen3-dev libgsl-dev libopenblas-dev virtualenv python-dev enchant vim-nox + +%labels + Author akohlmey diff --git a/tools/singularity/ubuntu18.04.def b/tools/singularity/ubuntu18.04.def new file mode 100644 index 0000000000..c87daa8de5 --- /dev/null +++ b/tools/singularity/ubuntu18.04.def @@ -0,0 +1,9 @@ +BootStrap: docker +From: ubuntu:18.04 + +%post + apt-get update -y + env DEBIAN_FRONTEND=noninteractive apt-get install -y make cmake cmake-curses-gui ninja-build git ccache gcc g++ gfortran libfftw3-dev libjpeg-dev libpng-dev libblas-dev liblapack-dev mpi-default-bin mpi-default-dev libeigen3-dev libgsl-dev libopenblas-dev virtualenv python-dev enchant vim-nox voro++-dev + +%labels + Author akohlmey