diff --git a/.github/instructions/force-style-tests.instructions.md b/.github/instructions/force-style-tests.instructions.md index 12a4fbb8500..6004b5b2d96 100644 --- a/.github/instructions/force-style-tests.instructions.md +++ b/.github/instructions/force-style-tests.instructions.md @@ -41,3 +41,8 @@ Unit tests are CTest-based; build with `-D ENABLE_TESTING=on`, run with reference data with `-g`/`-u`, then re-run CMake so new files register with CTest. - Verify new force styles against numerical differentiation (`fix numdiff`) where possible; see `.github/dev-docs/testing-and-verification.md`. +- The generators add a `generated` entry to the `tags:` line of newly written + files on purpose: it marks reference data that has not been reviewed yet and + makes such files easy to find with grep. Remove the tag as the LAST step, + after the reference data has been reviewed and validated -- never leave it in + a file you commit as finished work. diff --git a/.github/release_steps.md b/.github/release_steps.md index ab01729b0ca..74ceace9d10 100644 --- a/.github/release_steps.md +++ b/.github/release_steps.md @@ -42,6 +42,9 @@ https://downloads.lammps.org/analysis/ If needed, a bug-fix pull request should be created and merged to clear pending issues. +As of July 4th, 2026 the post-merge test results are summarized on +the LAMMPS Testing Dashboard at: https://lammps.github.io/lammps-test-results/ + ### Create release on GitHub When all pending pull requests for the release are merged and have diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 9c8c15237f1..2bc6d365e02 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -3,6 +3,8 @@ name: "Full Regression Test" on: workflow_dispatch: + schedule: + - cron: "25 4 * * MON,THU" jobs: build: diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1a3ad08e640..9f033af4095 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -247,6 +247,16 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VER target_link_libraries(lammps PRIVATE c++fs) endif() +# zlib is used by multiple packages and by the VTK file writer in the core, so +# we look for it once here instead of repeating the search in each package file. +find_package(ZLIB QUIET) +option(WITH_ZLIB "Enable compression support via the zlib library" ${ZLIB_FOUND}) +if(WITH_ZLIB) + find_package(ZLIB REQUIRED) + target_compile_definitions(lammps PRIVATE -DLAMMPS_ZLIB) + target_link_libraries(lammps PRIVATE ZLIB::ZLIB) +endif() + # tell CMake to export all symbols to a .dll on Windows with MinGW cross-compilers if(BUILD_SHARED_LIBS AND (CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING) set_target_properties(lammps PROPERTIES LINK_FLAGS "-Wl,--export-all-symbols") @@ -350,7 +360,6 @@ set(STANDARD_PACKAGES TALLY UEF VORONOI - VTK YAFF) set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT INTEL OPENMP) @@ -562,6 +571,9 @@ if(PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS OR PKG_ file(GLOB LINALG_SOURCES CONFIGURE_DEPENDS ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.cpp) add_library(linalg STATIC ${LINALG_SOURCES}) set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_MACHINE}) + if(LAMMPS_CXX_COMPILER_NAME STREQUAL "hipcc") + target_compile_options(linalg PRIVATE "$<$:SHELL:-x c++>") + endif() set(BLAS_LIBRARIES "$") set(LAPACK_LIBRARIES "$") target_link_libraries(lammps PRIVATE linalg) @@ -570,7 +582,6 @@ if(PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS OR PKG_ endif() endif() - find_program(GZIP_EXECUTABLE gzip) find_package_handle_standard_args(GZIP REQUIRED_VARS GZIP_EXECUTABLE) option(WITH_GZIP "Enable GZIP support" ${GZIP_FOUND}) @@ -582,7 +593,6 @@ if(WITH_GZIP) endif() endif() - if(BUILD_SHARED_LIBS) set(CONFIGURE_REQUEST_PIC "--with-pic") set(CMAKE_REQUEST_PIC "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}") @@ -594,7 +604,7 @@ else() endif() foreach(PKG_WITH_INCL GRAPHICS KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE NETCDF - PLUMED QMMM ML-QUIP ML-RUNNER SCAFACOS MACHDYN VTK KIM COMPRESS ML-PACE LEPTON EXTRA-COMMAND MBX) + PLUMED QMMM ML-QUIP ML-RUNNER SCAFACOS MACHDYN KIM COMPRESS ML-PACE LEPTON EXTRA-COMMAND MBX) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) endif() @@ -789,6 +799,20 @@ set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h command.h compute.h set(LAMMPS_FMT_HEADERS core.h format.h) set(LAMMPS_JSON_HEADERS json_fwd.hpp json.hpp) +# The ROCm hipcc wrapper compiles every .cpp in HIP language mode by default, +# which triggers an extra device-code compilation pass (e.g. --offload-arch=gfxNNN) +# and applies HIP host/device call restrictions even to the host pass. The LAMMPS +# host library and executable contain no HIP device code, but some host-only headers +# - most notably the bundled nlohmann/json - use template metaprogramming that clang +# rejects in HIP language mode: its is_detected SFINAE disables the JSON conversion +# operators, breaking molecule.cpp, info.cpp, library.cpp, and others. Force these +# translation units to be compiled as plain C++ so hipcc skips the HIP passes for +# them. The GPU kernel library (lib/gpu) is built by separate targets and keeps HIP. +if(LAMMPS_CXX_COMPILER_NAME STREQUAL "hipcc") + target_compile_options(lammps PRIVATE "$<$:SHELL:-x c++>") + target_compile_options(lmp PRIVATE "$<$:SHELL:-x c++>") +endif() + set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) set_target_properties(lammps PROPERTIES PREFIX "lib") diff --git a/cmake/Modules/Packages/COLVARS.cmake b/cmake/Modules/Packages/COLVARS.cmake index b4dc7386263..1b0ff366bfe 100644 --- a/cmake/Modules/Packages/COLVARS.cmake +++ b/cmake/Modules/Packages/COLVARS.cmake @@ -19,7 +19,9 @@ target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) # The line below is needed to locate math_eigen_impl.h target_include_directories(colvars PRIVATE ${LAMMPS_SOURCE_DIR}) target_link_libraries(lammps PRIVATE colvars) - +if(LAMMPS_CXX_COMPILER_NAME STREQUAL "hipcc") + target_compile_options(colvars PRIVATE "$<$:SHELL:-x c++>") +endif() if(BUILD_OMP) # Enable OpenMP for Colvars as well target_compile_options(colvars PRIVATE ${OpenMP_CXX_FLAGS}) diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index 4e1ab846a71..a55a7e737ec 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,10 +1,9 @@ -find_package(ZLIB) -if(NOT ZLIB_FOUND) +# zlib is searched for in the top level CMakeLists.txt file +if(NOT WITH_ZLIB) message(WARNING "No Zlib development support found. Disabling COMPRESS package...") set(PKG_COMPRESS OFF CACHE BOOL "" FORCE) return() endif() -target_link_libraries(lammps PRIVATE ZLIB::ZLIB) find_package(PkgConfig QUIET) if(PkgConfig_FOUND) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 25998d4930c..cd508a6c72a 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -434,8 +434,8 @@ elseif(GPU_API STREQUAL "HIP") if(HIP_USE_DEVICE_SORT) if(HIP_PLATFORM STREQUAL "amd") - # newer version of ROCm (5.1+) require c++14 for rocprim - set_property(TARGET gpu PROPERTY CXX_STANDARD 14) + # ROCm 5.1+ requires c++14 for rocprim; ROCm 6+/7+ rocprim requires c++17 + set_property(TARGET gpu PROPERTY CXX_STANDARD 17) endif() # add hipCUB find_package(hipcub REQUIRED) diff --git a/cmake/Modules/Packages/GRAPHICS.cmake b/cmake/Modules/Packages/GRAPHICS.cmake index 40a058b950c..5fbcbfb6db9 100644 --- a/cmake/Modules/Packages/GRAPHICS.cmake +++ b/cmake/Modules/Packages/GRAPHICS.cmake @@ -8,17 +8,19 @@ if(WITH_JPEG) target_link_libraries(lammps PRIVATE JPEG::JPEG) endif() +# zlib is searched for in the top level CMakeLists.txt file find_package(PNG QUIET) -find_package(ZLIB QUIET) -if(PNG_FOUND AND ZLIB_FOUND) +if(PNG_FOUND AND WITH_ZLIB) option(WITH_PNG "Enable PNG support" ON) else() option(WITH_PNG "Enable PNG support" OFF) endif() if(WITH_PNG) + if(NOT WITH_ZLIB) + message(FATAL_ERROR "PNG support requires zlib. Please enable WITH_ZLIB or disable WITH_PNG") + endif() find_package(PNG REQUIRED) - find_package(ZLIB REQUIRED) - target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB) + target_link_libraries(lammps PRIVATE PNG::PNG) target_compile_definitions(lammps PRIVATE -DLAMMPS_PNG) endif() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index d170f6e7147..9043c1ae70a 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -146,6 +146,16 @@ else() endif() target_compile_definitions(lammps PUBLIC $) +# In a GPU-enabled Kokkos build every translation unit is processed by the +# device compiler, so expose LMP_KOKKOS_GPU to all of LAMMPS -- not only files +# that include kokkos_type.h. This lets non-KOKKOS host code avoid constructs +# that only work on the host, e.g. file-scope "const" tables of host function +# pointers, which clang implicitly shadows into device memory and then fails to +# link +if(Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_HIP OR Kokkos_ENABLE_SYCL OR Kokkos_ENABLE_OPENMPTARGET) + target_compile_definitions(lammps PUBLIC $) +endif() + set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS) set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp diff --git a/cmake/Modules/Packages/LEPTON.cmake b/cmake/Modules/Packages/LEPTON.cmake index b1944c24001..44e0aa4bdf8 100644 --- a/cmake/Modules/Packages/LEPTON.cmake +++ b/cmake/Modules/Packages/LEPTON.cmake @@ -22,6 +22,9 @@ add_library(lepton STATIC ${LEPTON_SOURCES} ${ASMJIT_SOURCES}) set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_MACHINE}) target_compile_definitions(lepton PUBLIC LEPTON_BUILDING_STATIC_LIBRARY=1) target_include_directories(lepton PUBLIC ${LEPTON_SOURCE_DIR}/include) +if(LAMMPS_CXX_COMPILER_NAME STREQUAL "hipcc") + target_compile_options(lepton PRIVATE "$<$:SHELL:-x c++>") +endif() if(CMAKE_SYSTEM_NAME STREQUAL "Linux") find_library(LIB_RT rt QUIET) target_link_libraries(lepton PUBLIC ${LIB_RT}) diff --git a/cmake/Modules/Packages/VTK.cmake b/cmake/Modules/Packages/VTK.cmake deleted file mode 100644 index 48b1cdba112..00000000000 --- a/cmake/Modules/Packages/VTK.cmake +++ /dev/null @@ -1,11 +0,0 @@ -# FindVTK requires that C support is enabled when looking for MPI support -enable_language(C) -find_package(VTK REQUIRED NO_MODULE) -target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK) -if (VTK_MAJOR_VERSION VERSION_LESS 9.0) - include(${VTK_USE_FILE}) - target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) -else() - target_link_libraries(lammps PRIVATE VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML) - vtk_module_autoinit(TARGETS lammps MODULES VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML) -endif() diff --git a/cmake/presets/all_off.cmake b/cmake/presets/all_off.cmake index 8c9afc916e9..29610a0dcf9 100644 --- a/cmake/presets/all_off.cmake +++ b/cmake/presets/all_off.cmake @@ -94,7 +94,6 @@ set(ALL_PACKAGES TALLY UEF VORONOI - VTK YAFF) foreach(PKG ${ALL_PACKAGES}) diff --git a/cmake/presets/all_on.cmake b/cmake/presets/all_on.cmake index a0b80150bc5..657d58cc6b1 100644 --- a/cmake/presets/all_on.cmake +++ b/cmake/presets/all_on.cmake @@ -96,7 +96,6 @@ set(ALL_PACKAGES TALLY UEF VORONOI - VTK YAFF) foreach(PKG ${ALL_PACKAGES}) diff --git a/cmake/presets/nolib.cmake b/cmake/presets/nolib.cmake index b87c9235b7c..a1248710bbe 100644 --- a/cmake/presets/nolib.cmake +++ b/cmake/presets/nolib.cmake @@ -24,8 +24,7 @@ set(PACKAGES_WITH_LIB PYTHON QMMM SCAFACOS - VORONOI - VTK) + VORONOI) foreach(PKG ${PACKAGES_WITH_LIB}) set(PKG_${PKG} OFF CACHE BOOL "" FORCE) diff --git a/doc/doxygen/Doxyfile.in b/doc/doxygen/Doxyfile.in index 4046631e297..2f481f7832c 100644 --- a/doc/doxygen/Doxyfile.in +++ b/doc/doxygen/Doxyfile.in @@ -433,6 +433,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \ @LAMMPS_SOURCE_DIR@/potential_file_reader.h \ @LAMMPS_SOURCE_DIR@/stl_reader.cpp \ @LAMMPS_SOURCE_DIR@/stl_reader.h \ + @LAMMPS_SOURCE_DIR@/vtk_writer.cpp \ + @LAMMPS_SOURCE_DIR@/vtk_writer.h \ @LAMMPS_SOURCE_DIR@/label_map.cpp \ @LAMMPS_SOURCE_DIR@/label_map.h \ @LAMMPS_SOURCE_DIR@/my_page.cpp \ diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 6eb4d57e7b0..e44a9415f1c 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -68,7 +68,6 @@ This is the list of packages that may require additional steps. * :ref:`RHEO ` * :ref:`SCAFACOS ` * :ref:`VORONOI ` - * :ref:`VTK ` ---------- @@ -2053,32 +2052,3 @@ To build with this package, you must download and build the The SCAFACOS package no longer supports the traditional make build. You need to build LAMMPS with CMake. - ----------- - -.. _vtk: - -VTK package -------------------------------- - -To build with this package you must have the VTK library installed on -your system. - -.. tabs:: - - .. tab:: CMake build - - No additional settings are needed besides ``-D PKG_VTK=yes``. - - This should auto-detect the VTK library if it is installed on your - system at standard locations. Several advanced VTK options exist - if you need to specify where it was installed. Use the ``ccmake`` - (terminal window) or ``cmake-gui`` (graphical) tools to see these - options and set them interactively from their user interfaces. - - .. tab:: Traditional make - - .. versionchanged:: 10Sep2025 - - The VTK package no longer supports the traditional make build. - You need to build LAMMPS with CMake. diff --git a/doc/src/Build_package.rst b/doc/src/Build_package.rst index 4c1a66055c9..7c0a86d9ba7 100644 --- a/doc/src/Build_package.rst +++ b/doc/src/Build_package.rst @@ -65,7 +65,6 @@ packages: * :ref:`RHEO ` * :ref:`SCAFACOS ` * :ref:`VORONOI ` - * :ref:`VTK ` The mechanism for including packages is simple but different for the CMake build system in comparison to the traditional make build. diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index 102e16a711b..7bf62c20a29 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -102,7 +102,7 @@ parenthesis: g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t = OPT. * :doc:`eam/cd/old ` * :doc:`eam/fs (gikot) ` * :doc:`eam/fs/apip ` - * :doc:`eam/he ` + * :doc:`eam/he (gkot) ` * :doc:`eam/apip ` * :doc:`edip (o) ` * :doc:`edip/multi ` diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index b0f0d1497f2..9223775694b 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -17,6 +17,15 @@ stop LAMMPS and print a suitable error message in most cases, when a style/command is used that has been removed or will replace the command with the direct alternative (if available) and print a warning. +VTK package +----------- + +.. versionremoved:: TBD + +The VTK package has been removed since :doc:`dump style vtk ` +no longer requires the VTK libraries and has thus been moved to the +:ref:`EXTRA-DUMP ` package. + ML-RANN package --------------- diff --git a/doc/src/Developer_utils.rst b/doc/src/Developer_utils.rst index 9931a2b0dcc..4183590512b 100644 --- a/doc/src/Developer_utils.rst +++ b/doc/src/Developer_utils.rst @@ -614,6 +614,90 @@ entire file is read and its triangles are returned in one call. ---------- +.. _file-writer-classes: + +File writer classes +------------------- + +The file writer classes are the counterpart to the file reader classes: +they collect the recurring work of producing a file in some established +format in one place, so that the styles using it only have to supply the +data. + +The :cpp:class:`VTKWriter ` class writes the subset +of the file formats of the `VTK visualization toolkit `_ +that LAMMPS needs. It is used by the :doc:`dump vtk `, +:doc:`dump grid/vtk `, and :doc:`fix saed/vtk ` +styles. Writing these files directly means that none of them requires +the VTK library to be installed. + +Both the "legacy" and the XML flavor of the format are supported, each +with text or binary encoding, and binary data in the XML flavor is +compressed when LAMMPS is built with the zlib library. The available +datasets are a list of points, either as polydata or as an unstructured +grid, a single hexahedron, a rectilinear grid, and a uniform grid. +Reading VTK files is not supported and not needed. + +Using the class always follows the same four steps: create a writer for +the desired format, select exactly one dataset, attach any number of data +arrays, and write. Anything inconsistent, such as an array whose length +does not match the number of points, or a file that cannot be opened, is +reported by throwing a :cpp:class:`VTKWriterException +`, so callers are expected to catch it and +turn it into a LAMMPS error. + +.. code-block:: c++ + :caption: Use of the VTKWriter class for writing atom positions + + std::vector coords; // 3 values per atom + std::vector ids; // 1 value per atom + + for (int i = 0; i < atom->nlocal; ++i) { + coords.push_back(atom->x[i][0]); + coords.push_back(atom->x[i][1]); + coords.push_back(atom->x[i][2]); + ids.push_back(atom->tag[i]); + } + + try { + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(std::move(coords)); + writer.add_point_array("id", 1, std::move(ids)); + writer.write("positions.vtp"); + } catch (VTKWriterException &e) { + error->one(FLERR, e.what()); + } + +Coordinate and data vectors are taken by value, so callers that do not +need their copy afterwards pass it with ``std::move()``, as in the +example, and no data is copied. + +All floating point data, coordinates and data arrays alike, is stored in +single precision by default, since that is what visualization programs +work with. The constructor takes an optional precision argument, which +the dump styles expose through their *dump_modify double* keyword. +Because single precision only keeps about 7 significant digits, it +becomes noticeable for very large coordinates. The class therefore +records the largest coordinate magnitude that it wrote in single +precision in :cpp:func:`max_single_precision_value +`, and +:cpp:func:`single_precision_resolution +` turns that magnitude +into the absolute resolution for a warning message, or 0.0 while single +precision still resolves the coordinates well enough. Data arrays are +not tracked, because their values only need the relative resolution that +single precision always provides. + +.. doxygenclass:: LAMMPS_NS::VTKWriter + :project: progguide + :members: + +.. doxygenclass:: LAMMPS_NS::VTKWriterException + :project: progguide + :members: + +---------- + Type label support ------------------ diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 2c5b295f23b..2da6fd46cfb 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -355,6 +355,8 @@ Some common LAMMPS specific variables - whether to support JPEG format in :doc:`dump image ` (default: ``on`` if found) * - ``WITH_PNG`` - whether to support PNG format in :doc:`dump image ` (default: ``on`` if found) + * - ``WITH_ZLIB`` + - whether to use the zlib library for compression (default: ``on`` if found) * - ``WITH_GZIP`` - whether to support reading and writing compressed files (default: ``on`` if found) * - ``WITH_FFMPEG`` diff --git a/doc/src/Howto_viz.rst b/doc/src/Howto_viz.rst index ad0cb65fb06..ca6615ac6e1 100644 --- a/doc/src/Howto_viz.rst +++ b/doc/src/Howto_viz.rst @@ -157,9 +157,9 @@ or 6x6 times larger to utilize the full resolution of the printer and show as much details and be as clean as possible. Otherwise images have to be scaled up which can make them look blurry and with ragged edges. -The keywords *fsaa* and *ssao* can be used to further improve the image -quality at the expense of significant additional computational cost to -render the images: +The keywords *fsaa*, *ssao*, and *depthcue* can be used to further +improve the image quality and realism at the expense of additional +computational cost to render the images: - FSAA stands for `Full Scene Anti-Aliasing `_ @@ -177,11 +177,18 @@ render the images: selected pixels in its neighborhood based on that information. This enhances the depth perception of objects in an image. -Both methods are complementary and thus can be combined for additional -improvement of the image quality. The images below show from left to -right the same excerpt of a dump image output with the default settings, -with *fsaa* enabled, with *ssao* enabled, and with both features -enabled. +- Depth cueing adds a `distance fog gradient + `_ so objects further from + the camera are progressively more obscured by haze. This technique + simulates the effect of light scattering, which causes more distant + objects to appear lower in contrast, especially in outdoor + environments, and thus enhances depth perception. + +The three methods are complementary and thus can be combined for +additional improvement of the image quality. The images below show from +left to right the same excerpt of a dump image output with the default +settings, with *fsaa* enabled, with *ssao* enabled in addition, and +with *depthcue* added on top. .. |imagequality1| image:: JPG/image.default.png :width: 24% @@ -189,7 +196,7 @@ enabled. :width: 24% .. |imagequality3| image:: JPG/image.ssao.png :width: 24% -.. |imagequality4| image:: JPG/image.both.png +.. |imagequality4| image:: JPG/image.depth.png :width: 24% |imagequality1| |imagequality2| |imagequality3| |imagequality4| @@ -197,8 +204,8 @@ enabled. The computational cost to create the images with :doc:`dump image ` depends on the image size, the number of objects to be rendered (this number can grow quickly when using fine triangle meshes), -and the choice of the *fsaa* and *ssao* settings. For high resolution -images, a correspondingly large image size has to be chosen. +and the choice of the *fsaa*, *ssao*, and *depthcue* settings. For high +resolution images, a correspondingly large image size has to be chosen. Since the simulation has to wait for the dump image command to complete its image rendering, creating high resolution, high quality images can @@ -214,6 +221,55 @@ parallelization available (e.g. for SSAO post-processing of image data). -------------------- +Shading style and outline +------------------------- + +The rasterizer in LAMMPS implements a `Phong shading model +`_ that adds a specular +highlight to objects which determines how the material of the objects is +perceived. The intensity of this effect is controlled by the *shiny* +keyword of :doc:`dump image ` and the material perception by +the *specular* :doc:`dump_modify ` setting. Using a +specular setting of `none` turns the specular highlight off and thus +results in a matted material. Using the settings `wide`, `narrow`, and +`tight` reduces the diameter of the highlight and makes the material +appear more polished. In addition, there is also an *outline* image +post-processing step that can add a colored outline to the graphics +object and can make images more "schematic". It works best when +features to enhance image quality with the exception of FSAA are turned +off. The images below show from left to right the different specular +settings (*none*, *wide*, *narrow*, *tight*) and the *outline* drawing +style with a pixel width of 2 pixels (in gray). + +.. |shading1| image:: JPG/shade.none.png + :width: 19% +.. |shading2| image:: JPG/shade.wide.png + :width: 19% +.. |shading3| image:: JPG/shade.narrow.png + :width: 19% +.. |shading4| image:: JPG/shade.tight.png + :width: 19% +.. |shading5| image:: JPG/shade.outline.png + :width: 19% + +|shading1| |shading2| |shading3| |shading4| |shading5| + +.. admonition:: Transparent backgrounds + :class: Hint + + The rasterizer in LAMMPS does not support a so-called "alpha channel" + in its rendering processing and thus has no native transparency. + This has practical benefits because it makes parallel rendering in + parallel convenient even when the objects are distributed across + parallel processes. But another consequence is that it is not + possible to create images with a transparent background. However, + adding a thin outline with a suitable color simplifies the process of + creating a transparent background in a image processing program. It + creates a clean separation between the foreground objects and the + background, so the background can be selected and removed. + +------- + Color selection and color management ------------------------------------ diff --git a/doc/src/Install_windows.rst b/doc/src/Install_windows.rst index 596f537909e..330b8455508 100644 --- a/doc/src/Install_windows.rst +++ b/doc/src/Install_windows.rst @@ -18,7 +18,7 @@ needed to run in parallel with MPI. The LAMMPS binaries contain *all* :doc:`optional packages ` included in the source distribution except: ADIOS, H5MD, KIM, ML-PACE, -ML-QUIP, MSCG, NETCDF, QMMM, SCAFACOS, and VTK. The serial version also +ML-QUIP, MSCG, NETCDF, QMMM, and SCAFACOS. The serial version also does not include the LATBOLTZ package. The PYTHON package is only available in the Python installers that bundle a Python runtime. The GPU package is compiled for OpenCL with mixed precision kernels. diff --git a/doc/src/JPG/image.default.png b/doc/src/JPG/image.default.png index 7acf8378508..bb61b1a87f7 100644 Binary files a/doc/src/JPG/image.default.png and b/doc/src/JPG/image.default.png differ diff --git a/doc/src/JPG/image.depth.png b/doc/src/JPG/image.depth.png new file mode 100644 index 00000000000..abc10e33698 Binary files /dev/null and b/doc/src/JPG/image.depth.png differ diff --git a/doc/src/JPG/image.fsaa.png b/doc/src/JPG/image.fsaa.png index 9293b8c6864..01f438c5dad 100644 Binary files a/doc/src/JPG/image.fsaa.png and b/doc/src/JPG/image.fsaa.png differ diff --git a/doc/src/JPG/image.ssao.png b/doc/src/JPG/image.ssao.png index 8270268dd07..2eac91e0976 100644 Binary files a/doc/src/JPG/image.ssao.png and b/doc/src/JPG/image.ssao.png differ diff --git a/doc/src/JPG/shade.narrow.png b/doc/src/JPG/shade.narrow.png new file mode 100644 index 00000000000..c0ac4404f86 Binary files /dev/null and b/doc/src/JPG/shade.narrow.png differ diff --git a/doc/src/JPG/shade.none.png b/doc/src/JPG/shade.none.png new file mode 100644 index 00000000000..3a3a570d9dc Binary files /dev/null and b/doc/src/JPG/shade.none.png differ diff --git a/doc/src/JPG/shade.outline.png b/doc/src/JPG/shade.outline.png new file mode 100644 index 00000000000..b278f0e2e6c Binary files /dev/null and b/doc/src/JPG/shade.outline.png differ diff --git a/doc/src/JPG/shade.tight.png b/doc/src/JPG/shade.tight.png new file mode 100644 index 00000000000..d6fcad68e51 Binary files /dev/null and b/doc/src/JPG/shade.tight.png differ diff --git a/doc/src/JPG/shade.wide.png b/doc/src/JPG/shade.wide.png new file mode 100644 index 00000000000..382d0cd73da Binary files /dev/null and b/doc/src/JPG/shade.wide.png differ diff --git a/doc/src/Packages.rst b/doc/src/Packages.rst index 01ea63b3878..fb096530df1 100644 --- a/doc/src/Packages.rst +++ b/doc/src/Packages.rst @@ -199,9 +199,9 @@ whether an extra library is needed to build and use the package: - n/a - no * - :ref:`EXTRA-DUMP ` - - additional dump styles + - additional dump styles, including VTK output - :doc:`dump ` - - n/a + - ``PACKAGES/vtk`` - no * - :ref:`EXTRA-FIX ` - additional fix styles @@ -523,11 +523,6 @@ whether an extra library is needed to build and use the package: - :doc:`compute voronoi/atom ` - n/a - ext - * - :ref:`VTK ` - - dump output via VTK - - :doc:`compute vtk ` - - n/a - - ext * - :ref:`YAFF ` - additional styles implemented in YAFF - :doc:`angle_style cross ` diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index a2c0e2053cf..4b92527554c 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -118,7 +118,6 @@ gives those details. * :ref:`TALLY ` * :ref:`UEF ` * :ref:`VORONOI ` - * :ref:`VTK ` * :ref:`YAFF ` ---------- @@ -980,12 +979,29 @@ EXTRA-DUMP package **Contents:** -Additional dump styles that are less commonly used. +Additional dump styles that are less commonly used. This includes the +:doc:`dump vtk ` command, which outputs snapshot info in the +`VTK format `_ for visualization by `ParaView `_ or +other tools that read it. + +.. versionchanged:: TBD + +The *vtk* dump style used to be a package of its own and required the +VTK library to be installed. It now writes the files itself and does +not depend on any external library. + +.. _vtk: https://vtk.org + +.. _paraview: https://www.paraview.org + +**Authors:** the *vtk* dump style was written by Richard Berger (JKU) +and Daniel Queteschiner (DCS Computing). **Supporting info:** * ``src/EXTRA-DUMP``: filenames -> commands * :doc:`dump ` +* :doc:`dump vtk ` ---------- @@ -3075,39 +3091,6 @@ This package has :ref:`specific installation instructions ` on the :doc ---------- -.. _PKG-VTK: - -VTK package ----------------- - -**Contents:** - -A :doc:`dump vtk ` command which outputs snapshot info in the -`VTK format `_, enabling visualization by `Paraview `_ or -other visualization packages. - -.. _vtk: https://vtk.org - -.. _paraview: https://www.paraview.org - -To use this package you must have VTK library available on your -system. - -**Authors:** Richard Berger (JKU) and Daniel Queteschiner (DCS Computing). - -**Install:** - -This package has :ref:`specific installation instructions ` on the :doc:`Build extras ` page. - -**Supporting info:** - -* ``src/VTK``: filenames -> commands -* ``src/VTK/README`` -* ``lib/vtk/README`` -* :doc:`dump vtk ` - ----------- - .. _PKG-YAFF: YAFF package diff --git a/doc/src/dump.rst b/doc/src/dump.rst index d12a274c51e..7b74c32d5f8 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -500,15 +500,48 @@ set up an atom type number to atom name mapping. The *grid/vtk* style writes VTK files for grid data on a regular rectilinear grid. Its content is conceptually similar to that of the -text file produced by the *grid* style, except that it in an XML-based -format which visualization programs which support the VTK format can -read, e.g. the `ParaView tool `_. For this +text file produced by the *grid* style, except that it is in one of the +VTK formats and can thus be read directly by visualization programs like +the `ParaView tool `_. For this style, there can only be 1 or 3 per grid cell attributes specified. If it is a single value, it is a scalar quantity. If 3 values are specified it is encoded in the VTK file as a vector quantity (for each grid cell). The filename for this style must include a "\*" wildcard character to produce one file per snapshot; see details below. +.. versionchanged:: TBD + +The files are now written through the built-in VTK file writer that is +shared with the :doc:`dump vtk ` and :doc:`fix saed/vtk +` styles. The header now declares the file version and +byte order as the format requires, no longer sets grid origin and +spacing properties that have no meaning for a rectilinear grid, and the +grid data is no longer truncated to about 6 digits. + +.. versionadded:: TBD + +The extension of the dump file name selects which of the VTK file +formats is written. A name ending in *.vtr* selects the XML rectilinear +grid format, which is the default and what this style has always +written. A name ending in *.vti* selects the XML image data format, +which describes the grid by its origin and spacing rather than by +listing all cell boundaries, and is therefore more compact. A name +ending in *.vtk* selects the simple legacy VTK format. + +Since these naming conventions collide with the LAMMPS convention of +appending ".bin" to a file name to select binary output, this style +supports the :doc:`dump_modify binary ` keyword to request +binary data explicitly. Binary data is more compact, and in the two XML +formats it is compressed as well if LAMMPS was built with the zlib +library. + +All floating point data, that is grid cell coordinates and grid data +alike, is stored in single precision by default, which resolves the +coordinates to less than 0.001 length units as long as they stay below +about 10000 length units. LAMMPS prints a warning for grids that extend +beyond that. Use the :doc:`dump_modify double yes ` +command to write all floating point data in double precision instead. + .. versionadded:: 4May2022 Dump style *yaml* has the same command syntax as style *custom* and diff --git a/doc/src/dump_image.rst b/doc/src/dump_image.rst index fc4010489fd..2f3f3a2d859 100644 --- a/doc/src/dump_image.rst +++ b/doc/src/dump_image.rst @@ -24,7 +24,7 @@ Syntax * color = atom attribute that determines color of each atom * diameter = atom attribute that determines size of each atom * zero or more keyword/value pairs may be appended -* keyword = *atom* or *adiam* or *autobond* or *bond* or *grid* or *line* or *tri* or *ellipsoid* or *body* or *compute* or *fix* or *size* or *view* or *center* or *up* or *zoom* or *box* or *axes* or *region* or *subbox* or *shiny* or *fsaa* or *ssao* +* keyword = *atom* or *adiam* or *autobond* or *bond* or *grid* or *line* or *tri* or *ellipsoid* or *body* or *compute* or *fix* or *size* or *view* or *center* or *up* or *zoom* or *box* or *axes* or *region* or *subbox* or *shiny* or *fsaa* or *ssao* or *depthcue* or *defocus* or *outline* .. parsed-literal:: @@ -115,6 +115,19 @@ Syntax shading = *yes* or *no* = turn depth shading on/off seed = random # seed (positive integer) dfactor = strength of shading from 0.0 to 1.0 + *depthcue* values = cueing cfactor color start = depth cueing + cueing = *yes* or *no* = turn depth cueing on/off + cfactor = strength of fading from 0.0 to 1.0 + color = fog color name or *auto* = fade toward the background color + start = box fraction along the view direction where fading starts, or *auto* = nearest rendered object + *defocus* values = blurring bfactor start = defocus of distant objects + blurring = *yes* or *no* = turn defocusing on/off + bfactor = strength of the blur from 0.0 to 1.0 + start = box fraction along the view direction where blurring starts, or *auto* = nearest rendered object + *outline* values = flag width color = outlines at depth jumps + flag = *yes* or *no* = turn outline drawing on/off + width = width of the outlines in pixels (from 1 to 16) + color = color name of the outlines .. _dump_modify_image: @@ -129,7 +142,7 @@ Syntax dump_modify dump-ID keyword values ... * these keywords apply only to the *image* and *movie* styles and are documented on this page -* keyword = *acolor* or *adiam* or *amap* or *gmap* or *bmap* or *atrans* or *backcolor* or *backcolor2* or *bcolor* or *bdiam* or *btrans* or *bitrate* or *boxcolor* or *color* or *gtrans* or *lights* or *loadcolors* or *savecolors* or *framerate* or *axestrans* or *boxtrans* or *subboxtrans* or *ccolor* or *ctrans* or *fcolor* or *ftrans* +* keyword = *acolor* or *adiam* or *amap* or *gmap* or *bmap* or *atrans* or *backcolor* or *backcolor2* or *bcolor* or *bdiam* or *btrans* or *bitrate* or *boxcolor* or *color* or *gamma* or *gtrans* or *lights* or *specular* or *metal* or *metalfinish* or *ssaosamples* or *loadcolors* or *savecolors* or *framerate* or *axestrans* or *boxtrans* or *subboxtrans* or *ccolor* or *ctrans* or *fcolor* or *ftrans* * see the :doc:`dump modify ` doc page for more general keywords .. parsed-literal:: @@ -188,10 +201,20 @@ Syntax name = name of color R,G,B = red/green/blue numeric values from 0.0 to 1.0 hex = 24-bit RGB color in hexadecimal + *gamma* arg = gvalue + gvalue = gamma adjustment applied to rendered objects (from 0.1 to 10.0, 1.0 = no change) *gtrans* arg = transparency transparency = transparency for visualized grid (value between 0 (invisible) and 1 (fully opaque)) *lights* args = ambient key fill back ambient key fill back = set light intensity value from 0.0 to 1.0 + *specular* arg = style + style = *none* or *wide* or *narrow* or *tight* = specular highlights off or their width + *metal* arg = mfactor + mfactor = how metallic the rendered objects appear, from 0.0 (paint) to 1.0 (bare metal) + *metalfinish* arg = style + style = *satin* or *polished* or *mirror* = surface finish of metallic objects + *ssaosamples* arg = nsamples + nsamples = number of SSAO sampling directions per pixel (from 4 to 64) *loadcolors* arg = filename filename = load color definitions, per-type colors, and lights from JSON format file *savecolors* arg = filename @@ -861,6 +884,85 @@ shading is particularly large. In case LAMMPS has been :doc:`compiled with OpenMP support `, the SSAO processing is distributed across multiple threads. +.. versionchanged:: TBD + +The randomization of the SSAO shading is now computed from a +deterministic noise pattern derived from the pixel position and the +*seed* value. Rendered images no longer depend on the number of MPI +ranks or OpenMP threads, and images of an unchanged scene are exactly +reproducible, which avoids flickering shading in movies. Different +*seed* values shift the noise pattern. + +.. versionadded:: TBD + +The *depthcue* keyword turns on/off depth cueing. If *yes* is set, +rendered objects fade toward the fog color the more distant from the +viewer they are, similar to looking through fog. This is perceived as +depth and helps to visually untangle dense systems. The *cfactor* +value scales the strength of the fading: with *cfactor* = 1.0 the most +distant objects blend completely into the fog color, smaller values +reduce the maximum amount of fading. The *color* setting selects the +fog color: with *auto* the objects fade toward the background color, +following the background gradient when one is set with the *backcolor2* +option; any color name known to LAMMPS selects that color instead, +e.g. white or gray fog over a dark background. The *start* setting +determines where the fading begins. With *auto* it begins at the +nearest rendered object, so the front of the scene never fades. +A numeric value instead positions the start as a fraction of the +simulation box projected onto the view direction, similar to the +fractions of the *center* keyword but reduced to a single number: 0.0 +starts the fading at the side of the box nearest to the camera, 0.5 at +its middle, and 1.0 at its far side; values outside this range are +allowed. Objects in front of the start position are not faded, which +avoids darkening most of the scene when the rendered objects span a +large depth range. The fading always ends at the most distant rendered +object. Unlike the *ssao* keyword, depth cueing adds no significant +computational cost, and both can be combined. + +.. versionadded:: TBD + +The *defocus* keyword turns on/off defocusing of distant objects. If +*yes* is set, objects are blurred the more distant from the viewer they +are, as if the camera were focused on the front of the scene. This +draws the attention to the objects in front and is often more effective +for that purpose than the *depthcue* keyword, since it leaves the colors +of the distant objects untouched. Both can also be combined. + +The *bfactor* value scales the strength of the blur: with *bfactor* = +1.0 the most distant objects are blurred over a radius of 1 percent of +the image height, smaller values reduce the blur accordingly. Blurring +over much more than the size of the rendered particles turns them into a +uniform haze, which looks like fog rather than like a photograph taken +with a shallow depth of field, so moderate values usually give the best +result. The *start* setting determines where the blurring begins and +uses the same convention as the *start* setting of the *depthcue* +keyword: with *auto* it begins at the nearest rendered object, so the +front of the scene stays sharp, while a numeric value positions the +start as a fraction of the simulation box projected onto the view +direction, with 0.0 at the side of the box nearest to the camera, 0.5 at +its middle, and 1.0 at its far side. Objects in front of the start +position are not blurred, and the blur always reaches its maximum at the +most distant rendered object. + +Only objects behind the start position are blurred; unlike a camera lens +this does not blur objects in front of the plane of focus. The cost of +the blurring is much smaller than that of the *ssao* keyword and grows +with the *bfactor* value, since wider blurs need more samples per pixel. +As with the *ssao* keyword, the result does not depend on the number of +MPI ranks or OpenMP threads, so images of an unchanged scene are exactly +reproducible. + +.. versionadded:: TBD + +The *outline* keyword turns on/off drawing outlines where the distance +from the viewer jumps, i.e. along the visible edges of atoms and other +objects in front of the background or in front of more distant objects. +This produces a flat, illustration-like appearance similar to +hand-drawn molecular graphics, especially when combined with reduced +shininess or increased ambient lighting. The *width* value sets the +width of the outlines in pixels of the final image; the *color* value +sets their color, e.g. black. + ---------- Dump_modify keywords for dump image and dump movie @@ -1281,6 +1383,90 @@ the main highlights. The *fill* light is a secondary light source that softens shadows created by the key light. The *back* light illuminates the scene from behind the camera to provide depth. +.. versionadded:: TBD + +The *gamma* keyword adjusts the gamma value of the rendered objects: +the summed up light contributions of each pixel are raised to the power +of 1/*gvalue* before they are converted to the 8-bit color values of +the image file, similar to the gamma adjustment of image manipulation +programs. A value larger than 1.0 lightens the image, most strongly in +the darker regions, and thus can bring out shading detail on the dimly +lit side of objects; a value smaller than 1.0 darkens the image and +increases the contrast. The default rendering is already tuned to look +right on typical displays, and no gamma information is stored in the +image files, so this setting fine-tunes the tonal balance rather than +applying a required display correction. The adjustment applies only to +rendered objects; the background colors are used exactly as +specified. + +.. versionadded:: TBD + +The *specular* keyword adjusts the specular highlights independently +from the *shiny* keyword of the dump image command. The *none* +setting turns the highlights off entirely, which results in a rough, +matte surface appearance from the remaining diffuse lighting. The +other settings select the width of the highlights: *wide* highlights +are close to the default appearance, *narrow* highlights are visibly +smaller, and *tight* produces small sharp highlights with a +plastic-like appearance. The *sfactor* value of the *shiny* keyword +scales the brightness of the highlights; without the *specular* +keyword it also sets their width. + +.. versionadded:: TBD + +The *metal* keyword makes objects look like they are made of metal +rather than of colored plastic. Painted surfaces scatter light in all +directions and reflect it without changing its color, which is what the +rendering does by default; polished metal instead reflects light back +directly and colors it in the process. An *mfactor* value of 0.0 keeps +the default appearance, 1.0 renders bare metal, and values in between +blend the two. + +Since metal shows its surroundings rather than a color of its own, the +rendering approximates them with a bright sky above and a dark ground +below. This is why metallic objects have a bright upper and a dark +lower half, and why they need a dark background to look convincing. +The *color* assigned to an object tints these reflections, so gold +objects show a golden sheen and aluminum ones a neutral gray sheen. +The pre-defined color *silver* is a good match for aluminum. Colors +chosen for paint are often too saturated for metal: for gold, for +example, defining a color with the *color* keyword using the values +1.0 0.766 0.336 looks more like the metal than the pre-defined color +*gold* does. + +.. note:: + + These settings imitate the appearance of metal with a few extra + operations per pixel. They do not compute how light actually + travels through the scene. For images where the appearance of the + material matters, exporting the atom positions and rendering them + with a ray tracing program will always give better results than any + combination of these settings. + +.. versionadded:: TBD + +The *metalfinish* keyword selects the surface finish used when the +*metal* keyword is enabled. A *satin* finish has a broad soft sheen +and resembles brushed metal such as aluminum. A *polished* finish +concentrates the sheen into a narrower streak. A *mirror* finish +reflects the surroundings the way a curved mirror does, which makes +spheres look like polished ball bearings, with a darker lower half than +the other two settings. This keyword has no effect unless the *metal* +keyword is set to a value larger than 0.0. + +.. versionadded:: TBD + +The *ssaosamples* keyword sets the number of directions that the SSAO +depth shading enabled by the *ssao* keyword examines around each +pixel. More directions produce smoother shading; fewer directions +render proportionally faster but make the shading grainier. Without +this setting the number of directions is derived from the *dfactor* +value of the *ssao* keyword and ranges from 8 to 40. Reducing the +number of directions is a simple way to trade some image quality for +faster image output, for example for preview renderings. The +graininess is less visible when the *fsaa* keyword of the dump image +command is also enabled. + ---------- .. versionadded:: 4Jul2026 @@ -1408,6 +1594,9 @@ The defaults for the dump image and dump movie keywords are as follows: * shiny = 1.0 * ssao = no * fsaa = no +* depthcue = no +* defocus = no +* outline = no ---------- @@ -1427,7 +1616,12 @@ The defaults for the dump_modify keywords specific to dump image and dump movie * boxtrans = 1.0 * subboxtrans = 1.0 * color = 140 color names are pre-defined as listed below +* gamma = 1.0 * lights = 0.0 0.9 0.45 0.9 +* specular = width derived from the *shiny* keyword of the dump image command +* metal = 0.0 +* metalfinish = satin +* ssaosamples = number derived from the *dfactor* value of the *ssao* keyword * bitrate = 2000 * framerate = 24 * gmap = min max cf 0.0 2 min blue max red @@ -1442,6 +1636,22 @@ Default color sequence: |color_red| |color_forestgreen| |color_blue| These are the standard 109 element names that LAMMPS pre-defines for use with the dump image and dump_modify commands. +.. versionchanged:: TBD + +The pre-defined colors of the metals magnesium, aluminum, zinc, +mercury, silver, titanium, chromium, manganese, iron, cobalt, nickel, +copper, gold, tin, and lead were changed to match the appearance of the +metals more closely. Most of them previously shared one generic gray, +and chromium was green, which is the color of chromium oxide rather +than of the metal. The colors also account for how the surfaces of +these metals typically look: silver is slightly yellow, iron is darker +and duller than the polished metals, tin and lead are dull with lead +the darker and more blue of the two, cobalt is distinctly blue and +manganese faintly pink, while magnesium, aluminum, zinc, and chromium +keep their bright surfaces. Images that color atoms by element and use +any of these fifteen elements will look different than with earlier +LAMMPS versions. + * 1-10 = "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne" * 11-20 = "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca" * 21-30 = "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn" diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index f1f0a4dbe90..868797f07a3 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -116,12 +116,13 @@ Syntax *checksum* args = *yes* or *no* (add checksum at end of zst file) -* these keywords apply only to the vtk* dump style -* keyword = *binary* +* these keywords apply only to the *vtk* and *grid/vtk* dump styles +* keyword = *binary* or *double* .. parsed-literal:: *binary* args = *yes* or *no* (select between binary and text mode VTK files) + *double* args = *yes* or *no* (select between double and single precision output) Examples """""""" @@ -738,11 +739,12 @@ descending order. The dump *local* style cannot be sorted by atom ID, since there are typically multiple lines of output per atom. Some dump styles, such as *dcd* and *xtc*, require sorting by atom ID to format the output -file correctly. If multiple processors are writing the dump file, via -the "%" wildcard in the dump filename and the *nfile* or *fileper* -keywords are set to non-default values (i.e., the number of dump file -pieces is not equal to the number of procs), then sorting cannot be -performed. +file correctly. When multiple processors write separate dump file +pieces via the "%" wildcard together with the *nfile* or *fileper* +keywords, sorting is performed globally across all processors first +and the sorted data are then forwarded to a smaller subset of +processors who accumulate the data in order, so each individual dump +file contains a consecutive, sorted portion of the full snapshot. In a parallel run, the per-processor dump file pieces can have significant imbalance in number of lines of per-atom info. The *balance* @@ -751,6 +753,18 @@ snapshot are balanced to be nearly the same. A balance value of *no* means no balancing will be done, while *yes* means balancing will be performed. This balancing preserves dump sorting order. For a serial run, this option is ignored since the output is already balanced. +When multiple processors write separate dump file +pieces via the "%" wildcard together with the *nfile* or *fileper* +keywords, balancing is performed globally across all processors first +and the balanced data are then forwarded to a smaller subset of +processors who accumulate the data. + +.. note:: + + The balancing is performed on a per-processor basis, not per-file + when using *nfile* or *fileper*. If different numbers of processors + contribute data to different dump files, the files will naturally be + of different lengths. .. note:: @@ -946,14 +960,25 @@ default and it can be disabled with the :code:`checksum` keyword. ---------- -The :ref:`VTK package ` offers writing dump files in `VTK file -formats `_ that can be read by a variety of -visualization tools based on the VTK library. These VTK files follow +.. versionadded:: TBD + +The :ref:`EXTRA-DUMP package ` offers writing dump files +in `VTK file formats `_ that can be read by a variety +of visualization tools based on the VTK library. These VTK files follow naming conventions that collide with the LAMMPS convention to append ".bin" to a file name in order to switch to a binary output. Thus for -:doc:`vtk style dumps ` the dump_modify command supports the -keyword *binary* which selects between generating text mode and binary -style VTK files. +:doc:`vtk style dumps ` and :doc:`grid/vtk style dumps ` +the dump_modify command supports the keyword *binary* which selects +between generating text mode and binary style VTK files. + +The keyword *double* selects the precision of all floating point data +written by the *vtk* and *grid/vtk* dump styles. By default, that data +is written in single precision, which keeps about 7 significant digits +and is what visualization tools work with. With *double* set to *yes*, +coordinates and data values are written in double precision instead, so +that dump files can be post-processed quantitatively without loss of +precision. Text mode files then store each number with as many digits +as are needed to read back the identical value. ---------- @@ -975,7 +1000,9 @@ The option defaults are * append = no * balance = no +* binary = no (dump styles *vtk* and *grid/vtk*) * buffer = yes for dump styles *atom*, *custom*, *loca*, and *xyz* +* double = no (dump styles *vtk* and *grid/vtk*) * element = "C" for every atom type * every = whatever it was set to via the :doc:`dump ` command * fileper = # of processors diff --git a/doc/src/dump_vtk.rst b/doc/src/dump_vtk.rst index a253022e508..872e78cdcb4 100644 --- a/doc/src/dump_vtk.rst +++ b/doc/src/dump_vtk.rst @@ -35,12 +35,30 @@ as `ParaView `_. The time steps on which dump output is written can also be controlled by a variable; see the :doc:`dump_modify every ` command for details. -This dump style is similar to :doc:`dump_style custom ` but uses -the VTK library to write data to VTK simple legacy or XML format, +.. versionchanged:: TBD + +This dump style no longer uses the VTK library. The files are written +by a built-in VTK file writer that is shared with the :doc:`dump +grid/vtk ` and :doc:`fix saed/vtk ` styles, so the +style is now part of the EXTRA-DUMP package and available in every +LAMMPS build that includes it. + +All floating point data, that is atom coordinates and data values alike, +is stored in single precision by default, which is what visualization +programs work with. Single precision keeps about 7 significant digits, +so coordinates beyond about 10000 length units are resolved to less than +0.001 length units. LAMMPS prints a warning when a snapshot contains +such large coordinates. Use the :doc:`dump_modify double yes +` command to write all floating point data in double +precision instead, for example when the dump files are meant for +quantitative analysis rather than visualization. + +This dump style is similar to :doc:`dump_style custom ` but writes +data in the VTK simple legacy or XML format, depending on the filename extension specified for the dump file. This can be either *\*.vtk* for the legacy format or *\*.vtp* and *\*.vtu*, respectively, for XML format; see the `VTK homepage -`_ for a detailed +`_ for a detailed description of these formats. Since this naming convention conflicts with the way binary output is usually specified (see below), the :doc:`dump_modify binary ` command allows setting of a @@ -147,8 +165,7 @@ processor, but P can be set to a smaller value via the *nfile* or These options can be the most efficient way of writing out dump files when running on large numbers of processors. -For the legacy VTK format "%" is ignored and P = 1, i.e., only -processor 0 does write files. +For the legacy VTK format, only processor 0 writes files. Note that using the "\*" and "%" characters together can produce a large number of small dump files! @@ -156,7 +173,12 @@ large number of small dump files! If *dump_modify binary* is used, the dump file (or files, if "\*" or "%" is also used) is written in binary format. A binary dump file will be about the same size as a text version, but will typically -write out much faster. +write out much faster. For the XML formats the binary data is +compressed with the zlib library when LAMMPS was built with support for +it, which is the default when the library is found; see the +:doc:`Build settings ` page for the ``WITH_ZLIB`` setting. +Without it the data is written uncompressed, which visualization +software reads just the same. ---------- @@ -165,13 +187,9 @@ Restrictions The *vtk* style does not support writing of gzipped dump files. -The *vtk* dump style is part of the VTK package. It is only +The *vtk* dump style is part of the EXTRA-DUMP package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -To use this dump style, you also must link to the VTK library. See -the info in lib/vtk/README and ensure the Makefile.lammps file in that -directory is appropriate for your machine. - The *vtk* dump style supports neither buffering or custom format strings. diff --git a/doc/src/fix_saed_vtk.rst b/doc/src/fix_saed_vtk.rst index e0cf251780c..1a750778fcc 100644 --- a/doc/src/fix_saed_vtk.rst +++ b/doc/src/fix_saed_vtk.rst @@ -19,7 +19,7 @@ Syntax .. parsed-literal:: - keyword = *file* or *ave* or *start* or *file* or *overwrite*\ :l + keyword = *file* or *ave* or *start* or *format* or *binary*\ :l *ave* args = *one* or *running* or *window M* one = output a new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps @@ -28,6 +28,12 @@ Syntax Nstart = start averaging on this timestep *file* arg = filename filename = name of file to output time averages to + *format* arg = *legacy* or *xml* + legacy = write the simple legacy VTK format (file extension .vtk) + xml = write the XML VTK image data format (file extension .vti) + *binary* arg = *yes* or *no* + yes = write the intensity values in binary + no = write the intensity values as text Examples """""""" @@ -39,6 +45,7 @@ Examples fix 1 all saed/vtk 1 1 1 c_1 file Al2O3_001.saed fix 2 all saed/vtk 1 1 1 c_2 file Ni_000.saed + fix 3 all saed/vtk 1 1 1 c_2 file Ni_000.saed format xml binary yes Description """"""""""" @@ -91,27 +98,53 @@ averaging is done; values are simply generated on timesteps ---------- -The output for fix ave/time/saed is a file written with the third generation -vtk image data formatting. The filename assigned by the *file* keyword is -appended with _N.vtk where N is an index (0,1,2...) to account for multiple -diffraction intensity outputs. +The output for fix ave/time/saed is a file holding the intensities on a +uniform grid of reciprocal space points. The filename assigned by the +*file* keyword is appended with .N.vtk where N is an index (0,1,2...) to +account for multiple diffraction intensity outputs. + +.. versionadded:: TBD + +The *format* and *binary* keywords select how that data is stored. With +*format* set to *legacy*, the default, the simple legacy VTK format is +written and the file name ends in .vtk. With *format* set to *xml* the +XML image data format is written instead and the file name ends in .vti. +Both describe the same uniform grid and are read by the same +visualization programs. + +Setting *binary* to *yes* stores the intensities as binary numbers +rather than as text. This is worth doing for finely sampled reciprocal +space maps, which can otherwise reach hundreds of megabytes: binary data +is more compact, and in the XML format it is compressed as well if +LAMMPS was built with the zlib library, which typically reduces the file +to a small fraction of the size of the text version. By default the header contains the following information (with example data): .. parsed-literal:: - # vtk DataFile Version 3.0 c_SAED - Image data set + # vtk DataFile Version 5.1 + Image data set c_SAED ASCII DATASET STRUCTURED_POINTS DIMENSIONS 337 219 209 - ASPECT_RATIO 0.00507953 0.00785161 0.00821458 + SPACING 0.00507953 0.00785161 0.00821458 ORIGIN -0.853361 -0.855826 -0.854316 POINT_DATA 15424827 SCALARS intensity float LOOKUP_TABLE default ...data +.. versionchanged:: TBD + +The files are now written through the built-in VTK file writer that is +shared with the :doc:`dump vtk and dump grid/vtk ` styles. The +header uses the current version of the legacy VTK file format, which +spells the grid spacing keyword *SPACING* instead of the obsolete +*ASPECT_RATIO*, and the intensities are no longer truncated to about 6 +digits. Visualization software that reads the previous output reads the +new output as well. + In this example, kspace is sampled across a 337 x 219 x 209 point mesh where the mesh spacing is approximately 0.005, 0.007, and 0.008 inv(length) units in the k1, k2, and k3 directions, respectively. diff --git a/doc/src/pair_eam.rst b/doc/src/pair_eam.rst index 283ddd990be..7fdba94fa5c 100644 --- a/doc/src/pair_eam.rst +++ b/doc/src/pair_eam.rst @@ -19,6 +19,10 @@ .. index:: pair_style eam/fs/omp .. index:: pair_style eam/fs/opt .. index:: pair_style eam/he +.. index:: pair_style eam/he/gpu +.. index:: pair_style eam/he/kk +.. index:: pair_style eam/he/omp +.. index:: pair_style eam/he/opt pair_style eam command ====================== @@ -44,6 +48,8 @@ Accelerator Variants: *eam/fs/gpu*, *eam/fs/intel*, *eam/fs/kk*, *eam/fs/omp*, * pair_style eam/he command ========================= +Accelerator Variants: *eam/he/gpu*, *eam/he/kk*, *eam/he/omp*, *eam/he/opt* + Syntax """""" diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index e58892c0594..5837c82f111 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -722,6 +722,7 @@ Ctypes cuda Cuda CUDA +cueing cuFFT CuH Cui @@ -818,6 +819,8 @@ deeppink deepskyblue defgrad defn +defocus +defocusing deformable Deissenbeck del @@ -841,6 +844,7 @@ Denoual dephase dephasing deprotonated +depthcue dequidt Dequidt der @@ -1629,6 +1633,7 @@ hertzian Hertzsch heterointerfaces heterostructures +hexahedron hexahedrons hexatic hexorder @@ -2461,6 +2466,7 @@ mesoscopic metadata metadynamics Metadynamics +metalfinish metallicity Methfessel methine @@ -3260,6 +3266,7 @@ Politano Politecnico polyA polybond +polydata polydisperse polydispersity polyelectrolyte @@ -3919,6 +3926,7 @@ srp srun ss ssao +ssaosamples ssDNA stamoor stamoore @@ -4468,6 +4476,7 @@ vstyle vtarget vtk VTK +vti vtp vtr vtu diff --git a/examples/GRAPHICS/README b/examples/GRAPHICS/README index a71032c6e75..ec0f6b42ab2 100644 --- a/examples/GRAPHICS/README +++ b/examples/GRAPHICS/README @@ -23,6 +23,12 @@ Here is a list of the inputs and which graphics features they demonstrate - in.water-arrows: box of water molecules, uses many kinds of arrows https://www.youtube.com/shorts/4Cm5p0SfgNU +- in.peptide-depth peptide showing only parts of the water in the + box, but with periodic replication in +x, + +y, and -y, depth cueing, defocus, SSAO for + enhanced 3d perception. + https://youtube.com/shorts/h5Fy3-Q5Iro + - in.peptide-hbonds: peptide with surrounding water molecules visualize donated and accepted hydrogen bonds overlay graphics from image without background diff --git a/examples/GRAPHICS/in.peptide-depth b/examples/GRAPHICS/in.peptide-depth new file mode 100644 index 00000000000..42b8c664ec3 --- /dev/null +++ b/examples/GRAPHICS/in.peptide-depth @@ -0,0 +1,75 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style multi +thermo 500 + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 +fix 2 all shake 0.0001 10 10000 b 4 6 8 10 12 14 18 a 31 + +group peptide type <= 12 + +# recenter system so the peptide is in the center of the box for that we compute the center +# of mass of the peptide and the center of the box and displace atoms so that they will match +variable comx equal xcm(peptide,x) +variable comy equal xcm(peptide,y) +variable comz equal xcm(peptide,z) +variable midx equal 0.5*(xhi+xlo) +variable midy equal 0.5*(yhi+ylo) +variable midz equal 0.51*(zhi+zlo) +displace_atoms all move $(-v_comx+v_midx) $(-v_comy+v_midy) $(-v_comz+v_midz) +variable comx delete +variable comy delete +variable comz delete +variable midx delete +variable midy delete +variable midz delete + +variable dumpfreq index 100 + +group water subtract all peptide + +# true for lower part of water and all peptide atoms +variable lower atom (z<$(zlo+0.4*(zhi-zlo))||gmask(peptide)) + +# for creating periodic extensions only for water +group lower dynamic water var lower every ${dumpfreq} + +# selecting atoms for visualization +group viz dynamic all var lower every ${dumpfreq} + +# add periodic replica to the left, right, and back +fix img lower graphics/periodic ${dumpfreq} xlo ylo yhi bonds no + +# create images with strong depth cueing and defocus +dump viz viz image ${dumpfreq} peptide-depth-*.ppm element type & + size 800 800 zoom 1.6 view 78 10 box yes 0.02 & + shiny 0.8 fsaa yes ssao yes 2451512 0.8 & + depthcue yes 1.0 black 0.3 defocus yes 1.0 0.4 & + fix img element 0 0 + +# limit SSAO samples for a faster run and use tight specular for a plastic look +dump_modify viz pad 6 element C C O H N C C C O H H S O H & + adiam 1 2.72 adiam 2 2.72 adiam 3 2.432 adiam 4 1.92 adiam 5 2.48 & + adiam 6 2.72 adiam 7 2.72 adiam 8 2.72 adiam 9 2.432 adiam 10 1.92 & + adiam 11 1.92 adiam 12 2.88 adiam 13 2.432 adiam 14 1.92 & + color nightsky 0.11 0.11 0.15 backcolor black backcolor2 nightsky & + ssaosamples 16 specular tight boxcolor steelblue + +run 30000 diff --git a/examples/PACKAGES/diffraction/Output/bulkNi_001.saed.0.vtk.correct b/examples/PACKAGES/diffraction/Output/bulkNi_001.saed.0.vtk.correct deleted file mode 100644 index da4f7a9b806..00000000000 --- a/examples/PACKAGES/diffraction/Output/bulkNi_001.saed.0.vtk.correct +++ /dev/null @@ -1,17966 +0,0 @@ -# vtk DataFile Version 3.0 c_SAED -Image data set -ASCII -DATASET STRUCTURED_POINTS -DIMENSIONS 4 67 67 -ASPECT_RATIO 0.025 0.025 0.025 -ORIGIN -0.025 -0.825 -0.825 -POINT_DATA 17956 -SCALARS intensity float -LOOKUP_TABLE default --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -1.24121e-05 -0.000185957 -1.24121e-05 --1 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.0630146 -4.08903 -0.0630146 -0.034033 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -1.24121e-05 -0.000185957 -1.24121e-05 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0328483 -0.0243634 -0.0328483 -0.0731583 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.825084 -53.5423 -0.825084 -0.445552 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.00194784 -0.121257 -0.00194784 -0.0011871 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.0328483 -0.0243634 -0.0328483 -0.0731583 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000274663 -0.0064509 -0.000274663 -0.000447409 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.0204376 -1.32393 -0.0204376 -0.0110977 -1.32393 -85.9185 -1.32393 -0.714827 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00305121 -0.194492 -0.00305121 -0.00173997 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.000274663 -0.0064509 -0.000274663 -0.000447409 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0003976 -0.0222604 -0.0003976 -0.000307831 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.589341 -38.2483 -0.589341 -0.318148 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -0.0003976 -0.0222604 -0.0003976 -0.000307831 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.0352044 -2.28491 -0.0352044 -0.0190011 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00315159 -0.203494 -0.00315159 -0.00172876 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.00424038 -0.274413 -0.00424038 -0.00230984 -0.015572 -1.0095 -0.015572 -0.00843611 -0.0288299 -1.87074 -0.0288299 -0.015572 -1.87074 -121.427 -1.87074 -1.0095 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.015572 -1.0095 -0.015572 -0.00843611 -0.00424038 -0.274413 -0.00424038 -0.00230984 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.00315159 -0.203494 -0.00315159 -0.00172876 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00490888 -0.318097 -0.00490888 -0.0026628 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0743255 -4.82392 -0.0743255 -0.0401201 -4.82392 -313.138 -4.82392 -2.6025 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00490888 -0.318097 -0.00490888 -0.0026628 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000417263 -0.0270685 -0.000417263 -0.00022556 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.0610743 -3.96453 -0.0610743 -0.0329506 -3.96453 -257.374 -3.96453 -2.13832 -0.0610743 -3.96453 -0.0610743 -0.0329506 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.000417263 -0.0270685 -0.000417263 -0.00022556 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -3.84006e-27 -3.24321e-25 -8.80357e-27 --1 -1.63013e-27 -2.38515e-26 -5.52612e-28 -9.94485e-28 -1.099e-26 -2.24526e-26 -9.99845e-27 -9.46266e-28 -3.63922e-27 -1.07043e-26 -1.44181e-27 -3.80653e-27 -1.29083e-26 -2.09316e-26 -1.64314e-26 -5.18939e-28 -1.0702e-27 -3.46248e-27 -2.55644e-29 -9.3183e-28 -2.11563e-26 -1.32731e-27 -9.50299e-27 -5.32316e-29 -1.35003e-27 -3.33861e-26 -3.68336e-28 -3.12667e-27 -3.25658e-26 -9.57684e-26 -2.32903e-26 -2.5119e-27 -9.4145e-28 -6.83278e-27 -1.82366e-28 -1.6582e-27 -2.44515e-26 -9.29825e-26 -1.93994e-26 -6.48502e-28 -2.39937e-28 -2.35722e-26 -6.18561e-28 -2.38145e-28 -2.15581e-26 -1.03712e-26 -1.60967e-26 -2.78934e-28 -1.32194e-27 -5.80484e-26 -9.16183e-28 -1.62184e-27 -1.46797e-26 -5.83166e-27 -1.00575e-26 -1.41741e-27 -8.48257e-28 -1.1323e-26 -6.97148e-28 -9.4211e-28 -6.11206e-27 -5.0165e-27 -8.18379e-27 -5.31609e-28 -4.42308e-28 -1.41962e-26 -2.67318e-28 -9.12048e-29 -1.1812e-26 -1.01797e-25 -3.93475e-27 -7.04489e-28 -2.7259e-27 -5.38328e-27 -9.04131e-28 -3.99081e-29 -3.88691e-27 -1.06141e-27 -2.30119e-27 -1.76897e-28 -9.81985e-28 -4.8671e-27 -4.65156e-28 -1.76877e-27 -2.70525e-27 -4.74312e-27 -3.29491e-27 -2.03777e-28 -1.35917e-26 -3.76256e-24 -6.4052e-27 -1.21844e-26 -3.77451e-27 -1.09509e-26 -3.90785e-28 -7.88624e-28 -1.70014e-28 -1.28208e-26 -7.1894e-28 -2.84305e-27 -7.68157e-28 -1.04442e-27 -2.66738e-28 -3.24666e-28 -9.15349e-29 -6.28963e-27 -2.21027e-28 -3.51927e-28 -5.89243e-28 -9.7812e-27 -1.27988e-27 -4.23891e-28 -3.86828e-29 -3.54926e-27 -3.38603e-28 -1.99208e-29 -3.84264e-28 -3.15859e-27 -6.89908e-28 -3.70347e-28 -2.97944e-28 -3.90822e-27 -5.41701e-28 -5.83948e-29 -1.86776e-28 -1.63267e-27 -7.3432e-28 -2.48879e-29 -3.47201e-29 -1.7887e-26 -1.53594e-28 -1.42429e-28 -3.7212e-28 -4.9093e-28 -9.71004e-29 -2.15023e-28 -3.37613e-29 -2.61782e-27 -8.47601e-29 -2.14148e-29 -2.60774e-28 -9.94616e-28 -1.0398e-28 -1.00394e-28 -1.66325e-29 -5.87168e-28 -6.92009e-29 -9.00293e-29 -4.39261e-28 -1.04692e-26 -1.13496e-29 -1.23331e-29 -1.73488e-28 -3.11291e-27 -1.27253e-28 -1.27243e-28 -1.61891e-28 -4.04096e-27 -3.35562e-29 -6.5109e-29 -1.8535e-28 -3.65522e-28 -8.08911e-29 -8.79199e-29 -7.1631e-29 -3.08697e-27 -4.16751e-29 -1.32605e-29 -7.36271e-29 -2.8589e-27 -1.70179e-29 -7.60859e-30 -1.37068e-28 -1.45836e-26 -1.72504e-29 -7.84054e-29 -5.61551e-30 -4.53314e-26 -2.04374e-28 -9.72619e-29 -1.47621e-27 -5.81821e-27 -9.9393e-28 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.13705 -8.89268 -0.13705 --1 -6.5723 -426.473 -6.5723 -3.54969 -0.577669 -37.4855 -0.577669 -0.311976 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.0272617 -1.769 -0.0272617 -0.0147244 -0.0443406 -2.87704 -0.0443406 -0.023954 -0.0224346 -1.45548 -0.0224346 -0.0121247 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.0301823 -1.95822 -0.0301823 -0.0163108 -0.014714 -0.95496 -0.014714 -0.00794327 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.0648995 -4.21347 -0.0648995 -0.0349988 -0.239156 -15.528 -0.239156 -0.128938 -0.443649 -28.8066 -0.443649 -0.239156 -28.8066 -1870.47 -28.8066 -15.528 -0.443649 -28.8066 -0.443649 -0.239156 -0.239156 -15.528 -0.239156 -0.128938 -0.0648995 -4.21347 -0.0648995 -0.0349988 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.014714 -0.95496 -0.014714 -0.00794327 -0.0301823 -1.95822 -0.0301823 -0.0163108 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.0224346 -1.45548 -0.0224346 -0.0121247 -0.0443406 -2.87704 -0.0443406 -0.023954 -0.0272617 -1.769 -0.0272617 -0.0147244 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.577669 -37.4855 -0.577669 -0.311976 -6.5723 -426.473 -6.5723 -3.54969 -0.13705 -8.89268 -0.13705 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -1.10549e-26 -1.07254e-25 -7.57831e-27 --1 -6.5723 -426.473 -6.5723 -3.54969 -315.621 -20481.1 -315.621 -170.45 -27.7817 -1802.86 -27.7817 -15.002 -0.13853 -8.98999 -0.13853 -0.0747979 -1.3151 -85.3471 -1.3151 -0.710006 -2.14234 -139.038 -2.14234 -1.15651 -1.08565 -70.4611 -1.08565 -0.586019 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.220987 -14.3432 -0.220987 -0.119269 -0.750003 -48.6792 -0.750003 -0.404787 -0.620722 -40.2859 -0.620722 -0.335074 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.610435 -39.2043 -0.610435 -0.340393 -0.71226 -46.2083 -0.71226 -0.384984 -0.202313 -13.1325 -0.202313 -0.109162 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.86468 -56.142 -0.86468 -0.46619 -1.49069 -96.7929 -1.49069 -0.803566 -0.72778 -47.2578 -0.72778 -0.392266 -0.0494951 -3.21402 -0.0494951 -0.0266749 -3.2166 -208.879 -3.2166 -1.73343 -11.8607 -770.221 -11.8607 -6.39146 -22.0107 -1429.36 -22.0107 -11.8607 -1429.36 -92822.3 -1429.36 -770.221 -22.0107 -1429.36 -22.0107 -11.8607 -11.8607 -770.221 -11.8607 -6.39146 -3.2166 -208.879 -3.2166 -1.73343 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.72778 -47.2578 -0.72778 -0.392266 -1.49069 -96.7929 -1.49069 -0.803566 -0.86468 -56.142 -0.86468 -0.46619 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.202313 -13.1325 -0.202313 -0.109162 -0.71226 -46.2083 -0.71226 -0.384984 -0.610435 -39.2043 -0.610435 -0.340393 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.620722 -40.2859 -0.620722 -0.335074 -0.750003 -48.6792 -0.750003 -0.404787 -0.220987 -14.3432 -0.220987 -0.119269 -0.0717198 -4.6549 -0.0717198 -0.0387101 -1.08565 -70.4611 -1.08565 -0.586019 -2.14234 -139.038 -2.14234 -1.15651 -1.3151 -85.3471 -1.3151 -0.710006 -0.13853 -8.98999 -0.13853 -0.0747979 -27.7817 -1802.86 -27.7817 -15.002 -315.621 -20481.1 -315.621 -170.45 -6.5723 -426.473 -6.5723 -3.54969 -5.09526e-28 -5.8237e-26 -1.37741e-27 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -6.1044e-28 -1.13333e-26 -8.56112e-28 -1.81603e-27 -0.577669 -37.4855 -0.577669 -0.311976 -27.7817 -1802.86 -27.7817 -15.002 -2.44919 -158.942 -2.44919 -1.32242 -0.0122325 -0.79386 -0.0122325 -0.00660426 -0.116326 -7.54945 -0.116326 -0.0628002 -0.189843 -12.3207 -0.189843 -0.102487 -0.096387 -6.25543 -0.096387 -0.0520365 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.135373 -8.7892 -0.135373 -0.0729952 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.292997 -19.0283 -0.292997 -0.157854 -1.08104 -70.209 -1.08104 -0.58235 -2.00689 -130.342 -2.00689 -1.08104 -130.342 -8465.47 -130.342 -70.209 -2.00689 -130.342 -2.00689 -1.08104 -1.08104 -70.209 -1.08104 -0.58235 -0.292997 -19.0283 -0.292997 -0.157854 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.135373 -8.7892 -0.135373 -0.0729952 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.096387 -6.25543 -0.096387 -0.0520365 -0.189843 -12.3207 -0.189843 -0.102487 -0.116326 -7.54945 -0.116326 -0.0628002 -0.0122325 -0.79386 -0.0122325 -0.00660426 -2.44919 -158.942 -2.44919 -1.32242 -27.7817 -1802.86 -27.7817 -15.002 -0.577669 -37.4855 -0.577669 -0.311976 -8.91016e-29 -5.09045e-28 -6.28029e-29 -2.30954e-28 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000417263 -0.0270685 -0.000417263 -0.00022556 -1.40485e-26 -2.67931e-26 -1.23547e-26 -3.54254e-27 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.13853 -8.98999 -0.13853 -0.0747979 -0.0122325 -0.79386 -0.0122325 -0.00660426 -6.12029e-05 -0.00397187 -6.12029e-05 -3.30449e-05 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.675184 -43.858 -0.675184 -0.363535 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.000403417 -0.018028 -0.000403417 -0.000431632 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -6.12029e-05 -0.00397187 -6.12029e-05 -3.30449e-05 -0.0122325 -0.79386 -0.0122325 -0.00660426 -0.13853 -8.98999 -0.13853 -0.0747979 -0.00287614 -0.186636 -0.00287614 -0.00155329 -3.59287e-29 -5.47846e-27 -2.29095e-28 -9.03674e-29 -0.000417263 -0.0270685 -0.000417263 -0.00022556 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00490888 -0.318097 -0.00490888 -0.0026628 -0.0039451 -0.255817 -0.0039451 -0.00213544 -1.41565e-27 -1.42054e-26 -1.42842e-27 -3.55985e-27 -0.0272617 -1.769 -0.0272617 -0.0147244 -1.3151 -85.3471 -1.3151 -0.710006 -0.116326 -7.54945 -0.116326 -0.0628002 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.00556741 -0.361193 -0.00556741 -0.003009 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.102798 -6.67809 -0.102798 -0.0553337 -6.67809 -433.858 -6.67809 -3.59395 -0.102798 -6.67809 -0.102798 -0.0553337 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.00556741 -0.361193 -0.00556741 -0.003009 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.116326 -7.54945 -0.116326 -0.0628002 -1.3151 -85.3471 -1.3151 -0.710006 -0.0272617 -1.769 -0.0272617 -0.0147244 -3.08923e-29 -1.66862e-27 -1.08559e-28 -7.63739e-29 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.00490888 -0.318097 -0.00490888 -0.0026628 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00315159 -0.203494 -0.00315159 -0.00172876 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00640142 -0.414796 -0.00640142 -0.0034729 -1.28951e-26 -2.07318e-26 -1.61368e-26 -6.73424e-28 -0.0443406 -2.87704 -0.0443406 -0.023954 -2.14234 -139.038 -2.14234 -1.15651 -0.189843 -12.3207 -0.189843 -0.102487 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.0149972 -0.971601 -0.0149972 -0.0081415 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.174987 -11.369 -0.174987 -0.0941603 -11.369 -738.744 -11.369 -6.11525 -0.174987 -11.369 -0.174987 -0.0941603 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.0149972 -0.971601 -0.0149972 -0.0081415 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.189843 -12.3207 -0.189843 -0.102487 -2.14234 -139.038 -2.14234 -1.15651 -0.0443406 -2.87704 -0.0443406 -0.023954 -9.68077e-30 -1.71541e-27 -5.26883e-28 -8.66435e-29 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00315159 -0.203494 -0.00315159 -0.00172876 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00323219 -0.20919 -0.00323219 -0.00176005 -2.4661e-27 -3.55737e-27 -2.10708e-27 -2.47841e-27 -0.0224346 -1.45548 -0.0224346 -0.0121247 -1.08565 -70.4611 -1.08565 -0.586019 -0.096387 -6.25543 -0.096387 -0.0520365 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.00394165 -0.25421 -0.00394165 -0.00217003 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.012939 -0.153286 -0.012939 -0.024964 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0929598 -6.04025 -0.0929598 -0.0500082 -6.04025 -392.566 -6.04025 -3.24707 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.012939 -0.153286 -0.012939 -0.024964 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.00394165 -0.25421 -0.00394165 -0.00217003 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.096387 -6.25543 -0.096387 -0.0520365 -1.08565 -70.4611 -1.08565 -0.586019 -0.0224346 -1.45548 -0.0224346 -0.0121247 -1.71046e-28 -7.59233e-29 -3.10472e-29 -2.76301e-28 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00159156 -0.10235 -0.00159156 -0.000883947 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -1.72039e-26 -1.75504e-27 -1.80036e-26 -7.93926e-28 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.00638014 -0.414048 -0.00638014 -0.00344493 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -1.78623e-05 -0.0011367 -1.78623e-05 -1.02354e-05 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.419753 -27.2865 -0.419753 -0.225499 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -1.78623e-05 -0.0011367 -1.78623e-05 -1.02354e-05 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -3.66426e-29 -3.34014e-27 -3.73211e-28 -1.39349e-28 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -2.81884e-27 -3.67535e-26 -1.45154e-27 -2.45525e-27 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.220987 -14.3432 -0.220987 -0.119269 -0.0197001 -1.27833 -0.0197001 -0.0106406 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000831349 -0.052902 -0.000831349 -0.000476439 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000182026 -0.0111257 -0.000182026 -0.000116303 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.0210118 -1.36531 -0.0210118 -0.0113038 -1.36531 -88.7753 -1.36531 -0.732925 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.00305868 -0.197536 -0.00305868 -0.00167706 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000182026 -0.0111257 -0.000182026 -0.000116303 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000963 -0.0621803 -0.000963 -0.000528249 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.220987 -14.3432 -0.220987 -0.119269 -0.00455336 -0.29521 -0.00455336 -0.00246606 -4.76134e-29 -4.19871e-27 -2.303e-29 -9.48085e-29 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0003976 -0.0222604 -0.0003976 -0.000307831 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.00222624 -0.14233 -0.00222624 -0.00125838 -1.70951e-26 -9.50941e-26 -1.92092e-26 -9.35243e-28 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.750003 -48.6792 -0.750003 -0.404787 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.00248126 -0.132992 -0.00248126 -0.00207412 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.075569 -4.90891 -0.075569 -0.0406931 -4.90891 -319.278 -4.90891 -2.63302 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.00248126 -0.132992 -0.00248126 -0.00207412 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.750003 -48.6792 -0.750003 -0.404787 -0.0154384 -1.00004 -0.0154384 -0.00838465 -2.61782e-29 -1.01936e-26 -4.50724e-29 -4.17451e-29 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -0.0003976 -0.0222604 -0.0003976 -0.000307831 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.00186215 -0.117176 -0.00186215 -0.0011019 -3.06431e-28 -6.74884e-27 -1.00437e-27 -6.97288e-28 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.620722 -40.2859 -0.620722 -0.335074 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.00280479 -0.0952063 -0.00280479 -0.00378647 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.08214 -0.0996915 -0.08214 -0.181038 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.0665597 -4.31925 -0.0665597 -0.0359587 -4.31925 -281.013 -4.31925 -2.3146 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.08214 -0.0996915 -0.08214 -0.181038 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.00280479 -0.0952063 -0.00280479 -0.00378647 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.620722 -40.2859 -0.620722 -0.335074 -0.0127798 -0.826057 -0.0127798 -0.00698713 -1.56291e-28 -7.983e-28 -5.42408e-30 -2.3272e-28 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -0.000373746 -0.0182315 -0.000373746 -0.000360182 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000274663 -0.0064509 -0.000274663 -0.000447409 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -3.26751e-26 -9.63248e-26 -2.87741e-26 -7.62578e-28 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.00881859 -0.570398 -0.00881859 -0.0048115 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.000303956 -0.0025004 -0.000303956 -0.000614442 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.727605 -47.3547 -0.727605 -0.389514 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.00171971 -0.104509 -0.00171971 -0.00111339 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.000303956 -0.0025004 -0.000303956 -0.000614442 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.00202882 -0.130192 -0.00202882 -0.00113411 -1.87539e-28 -9.03196e-28 -5.00442e-28 -6.9288e-30 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000274663 -0.0064509 -0.000274663 -0.000447409 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -1.43784e-27 -2.42092e-26 -1.67235e-28 -6.9849e-28 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.00895042 -0.566756 -0.00895042 -0.00520277 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.0128902 -0.00261108 -0.0128902 -0.0287348 -0.253717 -0.0167613 -0.253717 -0.566202 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.772064 -50.2669 -0.772064 -0.41286 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.00251767 -0.110575 -0.00251767 -0.00273131 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.253717 -0.0167613 -0.253717 -0.566202 -0.0128902 -0.00261108 -0.0128902 -0.0287348 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.00214114 -0.128858 -0.00214114 -0.00142114 -6.25815e-29 -2.44644e-27 -8.53001e-29 -6.99767e-29 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -0.00126757 -0.0063255 -0.00126757 -0.00268125 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0328483 -0.0243634 -0.0328483 -0.0731583 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.00485451 -0.112284 -0.00485451 -0.00794719 -1.86017e-26 -1.18282e-26 -1.84069e-26 -1.30436e-28 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.610435 -39.2043 -0.610435 -0.340393 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.015621 -0.293922 -0.015621 -0.0272964 -0.012939 -0.153286 -0.012939 -0.024964 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.08214 -0.0996915 -0.08214 -0.181038 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.253717 -0.0167613 -0.253717 -0.566202 -5.02177 -0.108046 -5.02177 -11.2062 -0.428809 -0.132095 -0.428809 -0.953129 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0907236 -5.14722 -0.0907236 -0.0681982 -5.14722 -335.253 -5.14722 -2.74924 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.428809 -0.132095 -0.428809 -0.953129 -5.02177 -0.108046 -5.02177 -11.2062 -0.253717 -0.0167613 -0.253717 -0.566202 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.08214 -0.0996915 -0.08214 -0.181038 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.012939 -0.153286 -0.012939 -0.024964 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.610435 -39.2043 -0.610435 -0.340393 -0.0152901 -0.799404 -0.0152901 -0.0133193 -3.59411e-28 -7.29636e-28 -1.85045e-29 -1.79464e-28 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.0328483 -0.0243634 -0.0328483 -0.0731583 --1 --1 --1 --1 --1 --1 --1 --1 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.00228385 -0.131699 -0.00228385 -0.00166693 -1.74769e-27 -5.86539e-26 -4.50613e-28 -1.82169e-27 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.71226 -46.2083 -0.71226 -0.384984 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.428809 -0.132095 -0.428809 -0.953129 -0.0389367 -0.16222 -0.0389367 -0.0825783 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.101057 -6.5176 -0.101057 -0.0556491 -6.5176 -424.686 -6.5176 -3.47693 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.0389367 -0.16222 -0.0389367 -0.0825783 -0.428809 -0.132095 -0.428809 -0.953129 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.71226 -46.2083 -0.71226 -0.384984 -0.0147316 -0.940552 -0.0147316 -0.00836059 -1.50904e-29 -1.93657e-26 -2.35628e-28 -1.26993e-28 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.0030694 -0.0283916 -0.0030694 -0.006149 --1 --1 --1 --1 --1 --1 --1 --1 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -1.10842e-26 -5.99446e-27 -1.05197e-26 -1.94349e-27 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.202313 -13.1325 -0.202313 -0.109162 -0.0183078 -1.18676 -0.0183078 -0.00992128 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.000541408 -0.0142807 -0.000541408 -0.000834226 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0306373 -1.99062 -0.0306373 -0.0164924 -1.99062 -129.763 -1.99062 -1.06061 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0044742 -0.282378 -0.0044742 -0.00262367 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.000541408 -0.0142807 -0.000541408 -0.000834226 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.202313 -13.1325 -0.202313 -0.109162 -0.00413231 -0.266853 -0.00413231 -0.00226589 -1.94305e-28 -1.22038e-27 -2.58804e-28 -2.71146e-28 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.000357491 -0.00798226 -0.000357491 -0.000593194 --1 --1 --1 --1 -1.24121e-05 -0.000185957 -1.24121e-05 --1 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -2.41173e-28 -1.15068e-26 -5.8611e-30 -1.8999e-28 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.0056305 -0.365339 -0.0056305 -0.00304196 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.00025902 -0.011018 -0.00025902 -0.000290981 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -2.96829e-05 -0.00148057 -2.96829e-05 -2.75904e-05 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.010085 -0.656697 -0.010085 -0.00539228 -0.656697 -42.8262 -0.656697 -0.349456 -0.010085 -0.656697 -0.010085 -0.00539228 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -2.96829e-05 -0.00148057 -2.96829e-05 -2.75904e-05 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.00126418 -0.081876 -0.00126418 -0.000686942 -7.15717e-29 -3.81852e-27 -4.75903e-28 -2.94631e-29 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -1.24121e-05 -0.000185957 -1.24121e-05 --1 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00245637 -0.157931 -0.00245637 -0.00136514 -1.55585e-27 -4.82603e-27 -2.51576e-27 -3.08004e-28 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.86468 -56.142 -0.86468 -0.46619 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.00526791 -0.316097 -0.00526791 -0.00351268 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.150032 -9.78021 -0.150032 -0.0799481 -9.78021 -638.07 -9.78021 -5.19824 -0.150032 -9.78021 -0.150032 -0.0799481 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.00526791 -0.316097 -0.00526791 -0.00351268 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.86468 -56.142 -0.86468 -0.46619 -0.0175399 -1.13732 -0.0175399 -0.00949616 -3.26891e-28 -2.35916e-27 -3.11992e-28 -5.94493e-29 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00420203 -0.271297 -0.00420203 -0.00230565 -4.29927e-27 -1.13506e-26 -2.19037e-27 -5.85836e-28 -0.0301823 -1.95822 -0.0301823 -0.0163108 -1.49069 -96.7929 -1.49069 -0.803566 -0.135373 -8.7892 -0.135373 -0.0729952 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.0163592 -1.03807 -0.0163592 -0.00944792 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.146484 -9.54145 -0.146484 -0.0782531 -0.275496 -17.9718 -0.275496 -0.146484 -17.9718 -1172.94 -17.9718 -9.54145 -0.275496 -17.9718 -0.275496 -0.146484 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.0163592 -1.03807 -0.0163592 -0.00944792 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.135373 -8.7892 -0.135373 -0.0729952 -1.49069 -96.7929 -1.49069 -0.803566 -0.0301823 -1.95822 -0.0301823 -0.0163108 -3.7632e-29 -3.39765e-27 -2.52451e-29 -2.28637e-28 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00201959 -0.128715 -0.00201959 -0.00115219 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.0020403 -0.132036 -0.0020403 -0.00111145 -2.11123e-27 -1.01034e-25 -2.19589e-27 -1.10728e-29 -0.014714 -0.95496 -0.014714 -0.00794327 -0.72778 -47.2578 -0.72778 -0.392266 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.00421591 -0.272571 -0.00421591 -0.00230457 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.142402 -9.29438 -0.142402 -0.0755951 -9.29438 -606.807 -9.29438 -4.92954 -0.142402 -9.29438 -0.142402 -0.0755951 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.00421591 -0.272571 -0.00421591 -0.00230457 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.72778 -47.2578 -0.72778 -0.392266 -0.014714 -0.95496 -0.014714 -0.00794327 -7.55776e-29 -1.13146e-26 -5.7217e-28 -2.93213e-28 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -7.94568e-29 -7.26121e-27 -4.27917e-28 -2.16337e-27 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.00450472 -0.292536 -0.00450472 -0.00242739 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -2.11646e-05 -0.00137762 -2.11646e-05 -1.13319e-05 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.664326 -43.3848 -0.664326 -0.35204 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -2.11646e-05 -0.00137762 -2.11646e-05 -1.13319e-05 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -4.82557e-30 -4.60499e-27 -9.82048e-28 -2.52902e-28 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.00424038 -0.274413 -0.00424038 -0.00230984 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.00895453 -0.580797 -0.00895453 -0.00484347 -1.66347e-27 -1.70576e-27 -1.96629e-28 -6.98596e-28 -0.0648995 -4.21347 -0.0648995 -0.0349988 -3.2166 -208.879 -3.2166 -1.73343 -0.292997 -19.0283 -0.292997 -0.157854 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.0961583 -6.27479 -0.0961583 -0.0510832 -0.364579 -23.8046 -0.364579 -0.193325 -0.688241 -44.9523 -0.688241 -0.364579 -44.9523 -2936.37 -44.9523 -23.8046 -0.688241 -44.9523 -0.688241 -0.364579 -0.364579 -23.8046 -0.364579 -0.193325 -0.0961583 -6.27479 -0.0961583 -0.0510832 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.292997 -19.0283 -0.292997 -0.157854 -3.2166 -208.879 -3.2166 -1.73343 -0.0648995 -4.21347 -0.0648995 -0.0349988 -4.814e-29 -1.17334e-27 -4.4652e-28 -2.09572e-28 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.00424038 -0.274413 -0.00424038 -0.00230984 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.015572 -1.0095 -0.015572 -0.00843611 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0329506 -2.13832 -0.0329506 -0.0177933 -1.13937e-28 -8.42155e-27 -5.25068e-28 -2.31254e-27 -0.239156 -15.528 -0.239156 -0.128938 -11.8607 -770.221 -11.8607 -6.39146 -1.08104 -70.209 -1.08104 -0.58235 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.364579 -23.8046 -0.364579 -0.193325 -1.38378 -90.3827 -1.38378 -0.732997 -2.61394 -170.765 -2.61394 -1.38378 -170.765 -11156.6 -170.765 -90.3827 -2.61394 -170.765 -2.61394 -1.38378 -1.38378 -90.3827 -1.38378 -0.732997 -0.364579 -23.8046 -0.364579 -0.193325 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.00559713 -0.363535 -0.00559713 -0.00301463 -1.08104 -70.209 -1.08104 -0.58235 -11.8607 -770.221 -11.8607 -6.39146 -0.239156 -15.528 -0.239156 -0.128938 -3.76178e-29 -9.84359e-27 -5.70266e-28 -1.81494e-27 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.015572 -1.0095 -0.015572 -0.00843611 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0610743 -3.96453 -0.0610743 -0.0329506 -1.01112e-27 -1.44022e-26 -5.00346e-28 -4.1888e-28 -0.443649 -28.8066 -0.443649 -0.239156 -22.0107 -1429.36 -22.0107 -11.8607 -2.00689 -130.342 -2.00689 -1.08104 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.102798 -6.67809 -0.102798 -0.0553337 -0.174987 -11.369 -0.174987 -0.0941603 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.010085 -0.656697 -0.010085 -0.00539228 -0.150032 -9.78021 -0.150032 -0.0799481 -0.275496 -17.9718 -0.275496 -0.146484 -0.142402 -9.29438 -0.142402 -0.0755951 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.688241 -44.9523 -0.688241 -0.364579 -2.61394 -170.765 -2.61394 -1.38378 -4.93958 -322.738 -4.93958 -2.61394 -322.738 -21087.7 -322.738 -170.765 -4.93958 -322.738 -4.93958 -2.61394 -2.61394 -170.765 -2.61394 -1.38378 -0.688241 -44.9523 -0.688241 -0.364579 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.142402 -9.29438 -0.142402 -0.0755951 -0.275496 -17.9718 -0.275496 -0.146484 -0.150032 -9.78021 -0.150032 -0.0799481 -0.010085 -0.656697 -0.010085 -0.00539228 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.174987 -11.369 -0.174987 -0.0941603 -0.102798 -6.67809 -0.102798 -0.0553337 -0.0103946 -0.675184 -0.0103946 -0.00559713 -2.00689 -130.342 -2.00689 -1.08104 -22.0107 -1429.36 -22.0107 -11.8607 -0.443649 -28.8066 -0.443649 -0.239156 -1.25389e-28 -6.005e-27 -1.36042e-27 -8.86378e-28 -0.0610743 -3.96453 -0.0610743 -0.0329506 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.0630146 -4.08903 -0.0630146 -0.034033 -0.825084 -53.5423 -0.825084 -0.445552 -1.32393 -85.9185 -1.32393 -0.714827 -0.589341 -38.2483 -0.589341 -0.318148 -0.0352044 -2.28491 -0.0352044 -0.0190011 -1.87074 -121.427 -1.87074 -1.0095 -4.82392 -313.138 -4.82392 -2.6025 -3.96453 -257.374 -3.96453 -2.13832 -9.65668e-27 -1.04047e-24 -6.23278e-27 -1.10714e-26 -28.8066 -1870.47 -28.8066 -15.528 -1429.36 -92822.3 -1429.36 -770.221 -130.342 -8465.47 -130.342 -70.209 -0.675184 -43.858 -0.675184 -0.363535 -6.67809 -433.858 -6.67809 -3.59395 -11.369 -738.744 -11.369 -6.11525 -6.04025 -392.566 -6.04025 -3.24707 -0.419753 -27.2865 -0.419753 -0.225499 -1.36531 -88.7753 -1.36531 -0.732925 -4.90891 -319.278 -4.90891 -2.63302 -4.31925 -281.013 -4.31925 -2.3146 -0.727605 -47.3547 -0.727605 -0.389514 -0.772064 -50.2669 -0.772064 -0.41286 -5.14722 -335.253 -5.14722 -2.74924 -6.5176 -424.686 -6.5176 -3.47693 -1.99062 -129.763 -1.99062 -1.06061 -0.656697 -42.8262 -0.656697 -0.349456 -9.78021 -638.07 -9.78021 -5.19824 -17.9718 -1172.94 -17.9718 -9.54145 -9.29438 -606.807 -9.29438 -4.92954 -0.664326 -43.3848 -0.664326 -0.35204 -44.9523 -2936.37 -44.9523 -23.8046 -170.765 -11156.6 -170.765 -90.3827 -322.738 -21087.7 -322.738 -170.765 -21087.7 -1.37792e+06 -21087.7 --1 -322.738 -21087.7 -322.738 -170.765 -170.765 -11156.6 -170.765 -90.3827 -44.9523 -2936.37 -44.9523 -23.8046 -0.664326 -43.3848 -0.664326 -0.35204 -9.29438 -606.807 -9.29438 -4.92954 -17.9718 -1172.94 -17.9718 -9.54145 -9.78021 -638.07 -9.78021 -5.19824 -0.656697 -42.8262 -0.656697 -0.349456 -1.99062 -129.763 -1.99062 -1.06061 -6.5176 -424.686 -6.5176 -3.47693 -5.14722 -335.253 -5.14722 -2.74924 -0.772064 -50.2669 -0.772064 -0.41286 -0.727605 -47.3547 -0.727605 -0.389514 -4.31925 -281.013 -4.31925 -2.3146 -4.90891 -319.278 -4.90891 -2.63302 -1.36531 -88.7753 -1.36531 -0.732925 -0.419753 -27.2865 -0.419753 -0.225499 -6.04025 -392.566 -6.04025 -3.24707 -11.369 -738.744 -11.369 -6.11525 -6.67809 -433.858 -6.67809 -3.59395 -0.675184 -43.858 -0.675184 -0.363535 -130.342 -8465.47 -130.342 -70.209 -1429.36 -92822.3 -1429.36 -770.221 -28.8066 -1870.47 -28.8066 -15.528 -6.23278e-27 -1.04047e-24 -9.65668e-27 -1.15797e-26 -3.96453 -257.374 -3.96453 -2.13832 -4.82392 -313.138 -4.82392 -2.6025 -1.87074 -121.427 -1.87074 -1.0095 -0.0352044 -2.28491 -0.0352044 -0.0190011 -0.589341 -38.2483 -0.589341 -0.318148 -1.32393 -85.9185 -1.32393 -0.714827 -0.825084 -53.5423 -0.825084 -0.445552 -0.0630146 -4.08903 -0.0630146 -0.034033 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0610743 -3.96453 -0.0610743 -0.0329506 -1.36042e-27 -6.005e-27 -1.25389e-28 -2.872e-28 -0.443649 -28.8066 -0.443649 -0.239156 -22.0107 -1429.36 -22.0107 -11.8607 -2.00689 -130.342 -2.00689 -1.08104 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.102798 -6.67809 -0.102798 -0.0553337 -0.174987 -11.369 -0.174987 -0.0941603 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.010085 -0.656697 -0.010085 -0.00539228 -0.150032 -9.78021 -0.150032 -0.0799481 -0.275496 -17.9718 -0.275496 -0.146484 -0.142402 -9.29438 -0.142402 -0.0755951 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.688241 -44.9523 -0.688241 -0.364579 -2.61394 -170.765 -2.61394 -1.38378 -4.93958 -322.738 -4.93958 -2.61394 -322.738 -21087.7 -322.738 -170.765 -4.93958 -322.738 -4.93958 -2.61394 -2.61394 -170.765 -2.61394 -1.38378 -0.688241 -44.9523 -0.688241 -0.364579 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.142402 -9.29438 -0.142402 -0.0755951 -0.275496 -17.9718 -0.275496 -0.146484 -0.150032 -9.78021 -0.150032 -0.0799481 -0.010085 -0.656697 -0.010085 -0.00539228 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.174987 -11.369 -0.174987 -0.0941603 -0.102798 -6.67809 -0.102798 -0.0553337 -0.0103946 -0.675184 -0.0103946 -0.00559713 -2.00689 -130.342 -2.00689 -1.08104 -22.0107 -1429.36 -22.0107 -11.8607 -0.443649 -28.8066 -0.443649 -0.239156 -5.00346e-28 -1.44022e-26 -1.01112e-27 -3.1513e-28 -0.0610743 -3.96453 -0.0610743 -0.0329506 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.015572 -1.0095 -0.015572 -0.00843611 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0329506 -2.13832 -0.0329506 -0.0177933 -5.70266e-28 -9.84359e-27 -3.76178e-29 -1.83332e-27 -0.239156 -15.528 -0.239156 -0.128938 -11.8607 -770.221 -11.8607 -6.39146 -1.08104 -70.209 -1.08104 -0.58235 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.364579 -23.8046 -0.364579 -0.193325 -1.38378 -90.3827 -1.38378 -0.732997 -2.61394 -170.765 -2.61394 -1.38378 -170.765 -11156.6 -170.765 -90.3827 -2.61394 -170.765 -2.61394 -1.38378 -1.38378 -90.3827 -1.38378 -0.732997 -0.364579 -23.8046 -0.364579 -0.193325 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.00559713 -0.363535 -0.00559713 -0.00301463 -1.08104 -70.209 -1.08104 -0.58235 -11.8607 -770.221 -11.8607 -6.39146 -0.239156 -15.528 -0.239156 -0.128938 -5.25068e-28 -8.42155e-27 -1.13937e-28 -2.91146e-28 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.015572 -1.0095 -0.015572 -0.00843611 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.00424038 -0.274413 -0.00424038 -0.00230984 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.00895453 -0.580797 -0.00895453 -0.00484347 -4.4652e-28 -1.17334e-27 -4.814e-29 -5.9444e-29 -0.0648995 -4.21347 -0.0648995 -0.0349988 -3.2166 -208.879 -3.2166 -1.73343 -0.292997 -19.0283 -0.292997 -0.157854 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.0961583 -6.27479 -0.0961583 -0.0510832 -0.364579 -23.8046 -0.364579 -0.193325 -0.688241 -44.9523 -0.688241 -0.364579 -44.9523 -2936.37 -44.9523 -23.8046 -0.688241 -44.9523 -0.688241 -0.364579 -0.364579 -23.8046 -0.364579 -0.193325 -0.0961583 -6.27479 -0.0961583 -0.0510832 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.292997 -19.0283 -0.292997 -0.157854 -3.2166 -208.879 -3.2166 -1.73343 -0.0648995 -4.21347 -0.0648995 -0.0349988 -1.96629e-28 -1.70576e-27 -1.66347e-27 -1.51676e-28 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.00424038 -0.274413 -0.00424038 -0.00230984 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -9.82048e-28 -4.60499e-27 -4.82557e-30 -2.08281e-28 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.00450472 -0.292536 -0.00450472 -0.00242739 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -2.11646e-05 -0.00137762 -2.11646e-05 -1.13319e-05 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.664326 -43.3848 -0.664326 -0.35204 -0.0101742 -0.664326 -0.0101742 -0.00539449 -0.00539449 -0.35204 -0.00539449 -0.00286512 -0.00142501 -0.0929023 -0.00142501 -0.000759198 -2.11646e-05 -0.00137762 -2.11646e-05 -1.13319e-05 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -4.27917e-28 -7.26121e-27 -7.94568e-29 -8.76649e-28 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.0020403 -0.132036 -0.0020403 -0.00111145 -5.7217e-28 -1.13146e-26 -7.55776e-29 -1.58527e-29 -0.014714 -0.95496 -0.014714 -0.00794327 -0.72778 -47.2578 -0.72778 -0.392266 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.00421591 -0.272571 -0.00421591 -0.00230457 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.142402 -9.29438 -0.142402 -0.0755951 -9.29438 -606.807 -9.29438 -4.92954 -0.142402 -9.29438 -0.142402 -0.0755951 -0.0755951 -4.92954 -0.0755951 -0.0402439 -0.0200105 -1.30273 -0.0200105 -0.0107078 -0.000298096 -0.0193548 -0.000298096 -0.000160843 -0.00421591 -0.272571 -0.00421591 -0.00230457 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.72778 -47.2578 -0.72778 -0.392266 -0.014714 -0.95496 -0.014714 -0.00794327 -2.19589e-27 -1.01034e-25 -2.11123e-27 -5.49707e-28 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00420203 -0.271297 -0.00420203 -0.00230565 -2.52451e-29 -3.39765e-27 -3.7632e-29 -2.11446e-29 -0.0301823 -1.95822 -0.0301823 -0.0163108 -1.49069 -96.7929 -1.49069 -0.803566 -0.135373 -8.7892 -0.135373 -0.0729952 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.0163592 -1.03807 -0.0163592 -0.00944792 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.146484 -9.54145 -0.146484 -0.0782531 -0.275496 -17.9718 -0.275496 -0.146484 -17.9718 -1172.94 -17.9718 -9.54145 -0.275496 -17.9718 -0.275496 -0.146484 -0.146484 -9.54145 -0.146484 -0.0782531 -0.0388817 -2.52566 -0.0388817 -0.0209495 -0.000581563 -0.0376079 -0.000581563 -0.000317692 -0.00827161 -0.531082 -0.00827161 -0.00461686 -0.0163592 -1.03807 -0.0163592 -0.00944792 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.135373 -8.7892 -0.135373 -0.0729952 -1.49069 -96.7929 -1.49069 -0.803566 -0.0301823 -1.95822 -0.0301823 -0.0163108 -2.19037e-27 -1.13506e-26 -4.29927e-27 -3.27929e-27 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00201959 -0.128715 -0.00201959 -0.00115219 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00245637 -0.157931 -0.00245637 -0.00136514 -3.11992e-28 -2.35916e-27 -3.26891e-28 -4.06485e-28 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.86468 -56.142 -0.86468 -0.46619 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.00526791 -0.316097 -0.00526791 -0.00351268 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.150032 -9.78021 -0.150032 -0.0799481 -9.78021 -638.07 -9.78021 -5.19824 -0.150032 -9.78021 -0.150032 -0.0799481 -0.0799481 -5.19824 -0.0799481 -0.0429464 -0.0213018 -1.37851 -0.0213018 -0.011611 -0.00032044 -0.0205772 -0.00032044 -0.000178774 -0.00459528 -0.291467 -0.00459528 -0.00265713 -0.00919787 -0.571717 -0.00919787 -0.00562045 -0.00526791 -0.316097 -0.00526791 -0.00351268 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.86468 -56.142 -0.86468 -0.46619 -0.0175399 -1.13732 -0.0175399 -0.00949616 -2.51576e-27 -4.82603e-27 -1.55585e-27 -1.40092e-27 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -1.24121e-05 -0.000185957 -1.24121e-05 --1 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -4.75903e-28 -3.81852e-27 -7.15717e-29 -1.03596e-28 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.0056305 -0.365339 -0.0056305 -0.00304196 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.00025902 -0.011018 -0.00025902 -0.000290981 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -2.96829e-05 -0.00148057 -2.96829e-05 -2.75904e-05 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.010085 -0.656697 -0.010085 -0.00539228 -0.656697 -42.8262 -0.656697 -0.349456 -0.010085 -0.656697 -0.010085 -0.00539228 -0.00539228 -0.349456 -0.00539228 -0.00292612 -0.00144534 -0.0928521 -0.00144534 -0.000805354 -2.19422e-05 -0.00138968 -2.19422e-05 -1.27411e-05 -0.00031895 -0.0197483 -0.00031895 -0.000196892 -0.000651446 -0.0388817 -0.000651446 -0.000439776 -0.000385079 -0.0215862 -0.000385079 -0.000296188 -2.96829e-05 -0.00148057 -2.96829e-05 -2.75904e-05 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.00126418 -0.081876 -0.00126418 -0.000686942 -5.8611e-30 -1.15068e-26 -2.41173e-28 -2.63192e-28 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -1.24121e-05 -0.000185957 -1.24121e-05 --1 --1 --1 --1 --1 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -2.58804e-28 -1.22038e-27 -1.94305e-28 -2.27894e-28 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.202313 -13.1325 -0.202313 -0.109162 -0.0183078 -1.18676 -0.0183078 -0.00992128 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.000541408 -0.0142807 -0.000541408 -0.000834226 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.0044742 -0.282378 -0.0044742 -0.00262367 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0306373 -1.99062 -0.0306373 -0.0164924 -1.99062 -129.763 -1.99062 -1.06061 -0.0306373 -1.99062 -0.0306373 -0.0164924 -0.0164924 -1.06061 -0.0164924 -0.00916133 -0.0044742 -0.282378 -0.0044742 -0.00262367 -6.92073e-05 -0.00423781 -6.92073e-05 -4.39471e-05 -0.00103441 -0.0604241 -0.00103441 -0.00073239 -0.00220198 -0.119427 -0.00220198 -0.00179762 -0.00138564 -0.0665851 -0.00138564 -0.00135363 -0.000117657 -0.00458759 -0.000117657 -0.000142657 -0.000541408 -0.0142807 -0.000541408 -0.000834226 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.202313 -13.1325 -0.202313 -0.109162 -0.00413231 -0.266853 -0.00413231 -0.00226589 -1.05197e-26 -5.99446e-27 -1.10842e-26 -5.7415e-28 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.000357491 -0.00798226 -0.000357491 -0.000593194 --1 --1 --1 --1 --1 --1 --1 --1 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.00228385 -0.131699 -0.00228385 -0.00166693 -2.35628e-28 -1.93657e-26 -1.50904e-29 -1.38556e-28 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.71226 -46.2083 -0.71226 -0.384984 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.428809 -0.132095 -0.428809 -0.953129 -0.0389367 -0.16222 -0.0389367 -0.0825783 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.101057 -6.5176 -0.101057 -0.0556491 -6.5176 -424.686 -6.5176 -3.47693 -0.101057 -6.5176 -0.101057 -0.0556491 -0.0556491 -3.47693 -0.0556491 -0.033546 -0.0157057 -0.927588 -0.0157057 -0.0108578 -0.000257704 -0.0139591 -0.000257704 -0.000210836 -0.00418242 -0.199704 -0.00418242 -0.00411825 -0.00994503 -0.396243 -0.00994503 -0.0118347 -0.00722786 -0.221862 -0.00722786 -0.0103213 -0.000734518 -0.0153549 -0.000734518 -0.00123629 -0.0041557 -0.0480198 -0.0041557 -0.00800916 -0.0389367 -0.16222 -0.0389367 -0.0825783 -0.428809 -0.132095 -0.428809 -0.953129 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.71226 -46.2083 -0.71226 -0.384984 -0.0147316 -0.940552 -0.0147316 -0.00836059 -4.50613e-28 -5.86539e-26 -1.74769e-27 -2.12792e-27 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.0030694 -0.0283916 -0.0030694 -0.006149 --1 --1 --1 --1 --1 --1 --1 --1 -0.0328483 -0.0243634 -0.0328483 -0.0731583 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.00485451 -0.112284 -0.00485451 -0.00794719 -1.85045e-29 -7.29636e-28 -3.59411e-28 -1.18296e-29 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.610435 -39.2043 -0.610435 -0.340393 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.015621 -0.293922 -0.015621 -0.0272964 -0.012939 -0.153286 -0.012939 -0.024964 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.08214 -0.0996915 -0.08214 -0.181038 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.253717 -0.0167613 -0.253717 -0.566202 -5.02177 -0.108046 -5.02177 -11.2062 -0.428809 -0.132095 -0.428809 -0.953129 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0907236 -5.14722 -0.0907236 -0.0681982 -5.14722 -335.253 -5.14722 -2.74924 -0.0907236 -5.14722 -0.0907236 -0.0681982 -0.0681982 -2.74924 -0.0681982 -0.0802946 -0.0280089 -0.734914 -0.0280089 -0.0432026 -0.000666296 -0.0110894 -0.000666296 -0.00119387 -0.0152398 -0.159172 -0.0152398 -0.0297695 -0.0492862 -0.31702 -0.0492862 -0.101457 -0.0468782 -0.178244 -0.0468782 -0.0997557 -0.00597707 -0.0123906 -0.00597707 -0.0129952 -0.0404426 -0.0389252 -0.0404426 -0.0891503 -0.428809 -0.132095 -0.428809 -0.953129 -5.02177 -0.108046 -5.02177 -11.2062 -0.253717 -0.0167613 -0.253717 -0.566202 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.08214 -0.0996915 -0.08214 -0.181038 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.012939 -0.153286 -0.012939 -0.024964 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.610435 -39.2043 -0.610435 -0.340393 -0.0152901 -0.799404 -0.0152901 -0.0133193 -1.84069e-26 -1.18282e-26 -1.86017e-26 -1.36128e-27 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.0328483 -0.0243634 -0.0328483 -0.0731583 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -8.53001e-29 -2.44644e-27 -6.25815e-29 -7.94535e-29 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.00895042 -0.566756 -0.00895042 -0.00520277 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.0128902 -0.00261108 -0.0128902 -0.0287348 -0.253717 -0.0167613 -0.253717 -0.566202 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.00251767 -0.110575 -0.00251767 -0.00273131 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.772064 -50.2669 -0.772064 -0.41286 -0.0124296 -0.772064 -0.0124296 -0.00761193 -0.00761193 -0.41286 -0.00761193 -0.00621779 -0.00251767 -0.110575 -0.00251767 -0.00273131 -5.00539e-05 -0.00167281 -5.00539e-05 -6.79625e-05 -0.00100033 -0.0240866 -0.00100033 -0.00160149 -0.00293558 -0.048147 -0.00293558 -0.00528754 -0.0026084 -0.0271785 -0.0026084 -0.00510625 -0.000317569 -0.0018973 -0.000317569 -0.000658734 -0.00208645 -0.00598636 -0.00208645 -0.00449894 -0.0217692 -0.0204041 -0.0217692 -0.0480611 -0.253717 -0.0167613 -0.253717 -0.566202 -0.0128902 -0.00261108 -0.0128902 -0.0287348 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.00214114 -0.128858 -0.00214114 -0.00142114 -1.67235e-28 -2.42092e-26 -1.43784e-27 -2.93361e-27 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -0.00126757 -0.0063255 -0.00126757 -0.00268125 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000274663 -0.0064509 -0.000274663 -0.000447409 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -5.00442e-28 -9.03196e-28 -1.87539e-28 -2.74099e-30 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.00881859 -0.570398 -0.00881859 -0.0048115 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.000303956 -0.0025004 -0.000303956 -0.000614442 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.00171971 -0.104509 -0.00171971 -0.00111339 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.727605 -47.3547 -0.727605 -0.389514 -0.0112589 -0.727605 -0.0112589 -0.00616128 -0.00616128 -0.389514 -0.00616128 -0.00359674 -0.00171971 -0.104509 -0.00171971 -0.00111339 -2.77465e-05 -0.00158487 -2.77465e-05 -2.05999e-05 -0.000439767 -0.0228881 -0.000439767 -0.000384593 -0.00101323 -0.0459073 -0.00101323 -0.001064 -0.000707889 -0.0260114 -0.000707889 -0.000901442 -6.87394e-05 -0.00182305 -6.87394e-05 -0.000105879 -0.000371482 -0.00577576 -0.000371482 -0.000678722 -0.00335738 -0.019768 -0.00335738 -0.00698307 -0.036468 -0.0163054 -0.036468 -0.0810647 -0.00188271 -0.00255023 -0.00188271 -0.0041423 -0.000303956 -0.0025004 -0.000303956 -0.000614442 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.00202882 -0.130192 -0.00202882 -0.00113411 -2.87741e-26 -9.63248e-26 -3.26751e-26 -1.09951e-28 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000274663 -0.0064509 -0.000274663 -0.000447409 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.00186215 -0.117176 -0.00186215 -0.0011019 -5.42408e-30 -7.983e-28 -1.56291e-28 -6.34668e-29 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.620722 -40.2859 -0.620722 -0.335074 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.00280479 -0.0952063 -0.00280479 -0.00378647 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.08214 -0.0996915 -0.08214 -0.181038 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.0665597 -4.31925 -0.0665597 -0.0359587 -4.31925 -281.013 -4.31925 -2.3146 -0.0665597 -4.31925 -0.0665597 -0.0359587 -0.0359587 -2.3146 -0.0359587 -0.0199172 -0.00980852 -0.62205 -0.00980852 -0.0056752 -0.000152704 -0.00945438 -0.000152704 -9.43459e-05 -0.00229651 -0.13691 -0.00229651 -0.0015563 -0.00490752 -0.275471 -0.00490752 -0.00377161 -0.00308373 -0.156626 -0.00308373 -0.00279973 -0.00025902 -0.011018 -0.00025902 -0.000290981 -0.00116327 -0.0350409 -0.00116327 -0.00168408 -0.00862172 -0.120396 -0.00862172 -0.0161241 -0.08214 -0.0996915 -0.08214 -0.181038 -0.00435923 -0.0156512 -0.00435923 -0.00934067 -0.000832296 -0.0154018 -0.000832296 -0.00145937 -0.00280479 -0.0952063 -0.00280479 -0.00378647 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.620722 -40.2859 -0.620722 -0.335074 -0.0127798 -0.826057 -0.0127798 -0.00698713 -1.00437e-27 -6.74884e-27 -3.06431e-28 -8.19063e-28 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -0.000373746 -0.0182315 -0.000373746 -0.000360182 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0003976 -0.0222604 -0.0003976 -0.000307831 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.00222624 -0.14233 -0.00222624 -0.00125838 -4.50724e-29 -1.01936e-26 -2.61782e-29 -2.42235e-29 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.750003 -48.6792 -0.750003 -0.404787 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.00248126 -0.132992 -0.00248126 -0.00207412 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.075569 -4.90891 -0.075569 -0.0406931 -4.90891 -319.278 -4.90891 -2.63302 -0.075569 -4.90891 -0.075569 -0.0406931 -0.0406931 -2.63302 -0.0406931 -0.022183 -0.0110323 -0.708688 -0.0110323 -0.00614819 -0.000170016 -0.010793 -0.000170016 -9.80956e-05 -0.0025152 -0.156685 -0.0025152 -0.00152909 -0.00523401 -0.316168 -0.00523401 -0.00344 -0.00314822 -0.180337 -0.00314822 -0.00232595 -0.000245646 -0.0127292 -0.000245646 -0.000216543 -0.000973577 -0.0406263 -0.000973577 -0.00111498 -0.00594867 -0.14009 -0.00594867 -0.00964041 -0.0471195 -0.116418 -0.0471195 -0.102353 -0.00260644 -0.0183424 -0.00260644 -0.00535231 -0.000615885 -0.0181129 -0.000615885 -0.000904546 -0.00249039 -0.112342 -0.00249039 -0.00263491 -0.00248126 -0.132992 -0.00248126 -0.00207412 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.750003 -48.6792 -0.750003 -0.404787 -0.0154384 -1.00004 -0.0154384 -0.00838465 -1.92092e-26 -9.50941e-26 -1.70951e-26 -8.67665e-28 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -0.0003976 -0.0222604 -0.0003976 -0.000307831 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -2.303e-29 -4.19871e-27 -4.76134e-29 -3.53277e-29 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.220987 -14.3432 -0.220987 -0.119269 -0.0197001 -1.27833 -0.0197001 -0.0106406 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000831349 -0.052902 -0.000831349 -0.000476439 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000182026 -0.0111257 -0.000182026 -0.000116303 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.00305868 -0.197536 -0.00305868 -0.00167706 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.0210118 -1.36531 -0.0210118 -0.0113038 -1.36531 -88.7753 -1.36531 -0.732925 -0.0210118 -1.36531 -0.0210118 -0.0113038 -0.0113038 -0.732925 -0.0113038 -0.00612226 -0.00305868 -0.197536 -0.00305868 -0.00167706 -4.69719e-05 -0.00301391 -4.69719e-05 -2.62669e-05 -0.000690607 -0.0438522 -0.000690607 -0.000398195 -0.00142141 -0.0887181 -0.00142141 -0.000859757 -0.000838016 -0.0507499 -0.000838016 -0.000547521 -6.29301e-05 -0.00359332 -6.29301e-05 -4.68062e-05 -0.000230674 -0.0115057 -0.000230674 -0.000215135 -0.00119816 -0.0398066 -0.00119816 -0.00163947 -0.00753166 -0.0331911 -0.00753166 -0.0159862 -0.000441945 -0.00524692 -0.000441945 -0.000851965 -0.000132579 -0.00519829 -0.000132579 -0.00016076 -0.000616991 -0.0323447 -0.000616991 -0.000534751 -0.000659433 -0.0384087 -0.000659433 -0.00047102 -0.000182026 -0.0111257 -0.000182026 -0.000116303 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000963 -0.0621803 -0.000963 -0.000528249 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.220987 -14.3432 -0.220987 -0.119269 -0.00455336 -0.29521 -0.00455336 -0.00246606 -1.45154e-27 -3.67535e-26 -2.81884e-27 -4.9672e-27 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -3.73211e-28 -3.34014e-27 -3.66426e-29 -2.93761e-29 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.00638014 -0.414048 -0.00638014 -0.00344493 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -1.78623e-05 -0.0011367 -1.78623e-05 -1.02354e-05 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.419753 -27.2865 -0.419753 -0.225499 -0.00645966 -0.419753 -0.00645966 -0.00347453 -0.00347453 -0.225499 -0.00347453 -0.00187614 -0.000939716 -0.0608495 -0.000939716 -0.000511035 -1.4415e-05 -0.000929933 -1.4415e-05 -7.93003e-06 -0.00021143 -0.0135579 -0.00021143 -0.00011845 -0.000433048 -0.0274936 -0.000433048 -0.000249805 -0.000252791 -0.0157685 -0.000252791 -0.000153167 -1.85889e-05 -0.00111963 -1.85889e-05 -1.23067e-05 -6.49022e-05 -0.00359566 -6.49022e-05 -5.11699e-05 -0.000296805 -0.0124782 -0.000296805 -0.000337786 -0.00142043 -0.0104367 -0.00142043 -0.0029068 -9.0487e-05 -0.001655 -9.0487e-05 -0.000159295 -3.48103e-05 -0.00164472 -3.48103e-05 -3.48902e-05 -0.000179601 -0.0102647 -0.000179601 -0.000133427 -0.000200607 -0.0122251 -0.000200607 -0.000129128 -5.66394e-05 -0.00355132 -5.66394e-05 -3.38457e-05 -1.78623e-05 -0.0011367 -1.78623e-05 -1.02354e-05 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -1.80036e-26 -1.75504e-27 -1.72039e-26 -1.02258e-27 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00323219 -0.20919 -0.00323219 -0.00176005 -3.10472e-29 -7.59233e-29 -1.71046e-28 -1.94464e-29 -0.0224346 -1.45548 -0.0224346 -0.0121247 -1.08565 -70.4611 -1.08565 -0.586019 -0.096387 -6.25543 -0.096387 -0.0520365 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.00394165 -0.25421 -0.00394165 -0.00217003 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.012939 -0.153286 -0.012939 -0.024964 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0929598 -6.04025 -0.0929598 -0.0500082 -6.04025 -392.566 -6.04025 -3.24707 -0.0929598 -6.04025 -0.0929598 -0.0500082 -0.0500082 -3.24707 -0.0500082 -0.0269623 -0.0135267 -0.877146 -0.0135267 -0.00732307 -0.000207471 -0.0134246 -0.000207471 -0.000113077 -0.00304082 -0.196078 -0.00304082 -0.00167513 -0.00621512 -0.398461 -0.00621512 -0.003484 -0.00360983 -0.229071 -0.00360983 -0.00208531 -0.000262304 -0.0163068 -0.000262304 -0.000160381 -0.000888142 -0.0525108 -0.000888142 -0.000613798 -0.00369022 -0.182743 -0.00369022 -0.00347831 -0.012939 -0.153286 -0.012939 -0.024964 -0.000922826 -0.0243777 -0.000922826 -0.00142862 -0.000454243 -0.0242963 -0.000454243 -0.0003811 -0.00252418 -0.152067 -0.00252418 -0.00167089 -0.00290183 -0.181616 -0.00290183 -0.00174268 -0.000831349 -0.052902 -0.000831349 -0.000476439 -0.000264526 -0.0169773 -0.000264526 -0.000147807 -0.00394165 -0.25421 -0.00394165 -0.00217003 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.096387 -6.25543 -0.096387 -0.0520365 -1.08565 -70.4611 -1.08565 -0.586019 -0.0224346 -1.45548 -0.0224346 -0.0121247 -2.10708e-27 -3.55737e-27 -2.4661e-27 -3.66127e-27 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00159156 -0.10235 -0.00159156 -0.000883947 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00315159 -0.203494 -0.00315159 -0.00172876 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00640142 -0.414796 -0.00640142 -0.0034729 -5.26883e-28 -1.71541e-27 -9.68077e-30 -8.69222e-29 -0.0443406 -2.87704 -0.0443406 -0.023954 -2.14234 -139.038 -2.14234 -1.15651 -0.189843 -12.3207 -0.189843 -0.102487 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.0149972 -0.971601 -0.0149972 -0.0081415 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.174987 -11.369 -0.174987 -0.0941603 -11.369 -738.744 -11.369 -6.11525 -0.174987 -11.369 -0.174987 -0.0941603 -0.0941603 -6.11525 -0.0941603 -0.0507305 -0.0254789 -1.65353 -0.0254789 -0.0137586 -0.000390928 -0.0253402 -0.000390928 -0.00021189 -0.00573009 -0.370717 -0.00573009 -0.00312441 -0.0117038 -0.754789 -0.0117038 -0.00644458 -0.00678114 -0.434848 -0.00678114 -0.00379871 -0.000489412 -0.0310275 -0.000489412 -0.000283497 -0.0016253 -0.100162 -0.0016253 -0.00101685 -0.00629797 -0.349477 -0.00629797 -0.00495273 -0.015621 -0.293922 -0.015621 -0.0272964 -0.00129746 -0.0468697 -0.00129746 -0.00167905 -0.000805786 -0.0468394 -0.000805786 -0.000578081 -0.00471983 -0.293948 -0.00471983 -0.00287256 -0.0055324 -0.351995 -0.0055324 -0.00317196 -0.00160093 -0.102796 -0.00160093 -0.000893275 -0.000512655 -0.0330722 -0.000512655 -0.000281991 -0.00767446 -0.496406 -0.00767446 -0.00418691 -0.0149972 -0.971601 -0.0149972 -0.0081415 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.189843 -12.3207 -0.189843 -0.102487 -2.14234 -139.038 -2.14234 -1.15651 -0.0443406 -2.87704 -0.0443406 -0.023954 -1.61368e-26 -2.07318e-26 -1.28951e-26 -1.89009e-27 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00315159 -0.203494 -0.00315159 -0.00172876 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00490888 -0.318097 -0.00490888 -0.0026628 -0.0039451 -0.255817 -0.0039451 -0.00213544 -1.08559e-28 -1.66862e-27 -3.08923e-29 -4.77798e-29 -0.0272617 -1.769 -0.0272617 -0.0147244 -1.3151 -85.3471 -1.3151 -0.710006 -0.116326 -7.54945 -0.116326 -0.0628002 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.00556741 -0.361193 -0.00556741 -0.003009 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.102798 -6.67809 -0.102798 -0.0553337 -6.67809 -433.858 -6.67809 -3.59395 -0.102798 -6.67809 -0.102798 -0.0553337 -0.0553337 -3.59395 -0.0553337 -0.0298034 -0.0149802 -0.972616 -0.0149802 -0.00807774 -0.000229977 -0.0149228 -0.000229977 -0.000124242 -0.0033726 -0.218633 -0.0033726 -0.00182745 -0.00688936 -0.445907 -0.00688936 -0.00375144 -0.00398796 -0.257393 -0.00398796 -0.00219049 -0.000286774 -0.0184046 -0.000286774 -0.000160254 -0.000941071 -0.0595479 -0.000941071 -0.000548116 -0.00347414 -0.208264 -0.00347414 -0.00232667 -0.00594496 -0.175588 -0.00594496 -0.00872092 -0.000600872 -0.0280699 -0.000600872 -0.000610909 -0.00045791 -0.0281225 -0.00045791 -0.000289072 -0.00278181 -0.176932 -0.00278181 -0.00159648 -0.00330428 -0.212399 -0.00330428 -0.00183765 -0.000963 -0.0621803 -0.000963 -0.000528249 -0.000309855 -0.0200527 -0.000309855 -0.000168773 -0.00465562 -0.301679 -0.00465562 -0.00252574 -0.00912561 -0.591773 -0.00912561 -0.00493906 -0.00556741 -0.361193 -0.00556741 -0.003009 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.116326 -7.54945 -0.116326 -0.0628002 -1.3151 -85.3471 -1.3151 -0.710006 -0.0272617 -1.769 -0.0272617 -0.0147244 -1.42842e-27 -1.42054e-26 -1.41565e-27 -3.64929e-27 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.00490888 -0.318097 -0.00490888 -0.0026628 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000417263 -0.0270685 -0.000417263 -0.00022556 -2.29095e-28 -5.47846e-27 -3.59287e-29 -1.1709e-28 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.13853 -8.98999 -0.13853 -0.0747979 -0.0122325 -0.79386 -0.0122325 -0.00660426 -6.12029e-05 -0.00397187 -6.12029e-05 -3.30449e-05 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -0.000403417 -0.018028 -0.000403417 -0.000431632 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.675184 -43.858 -0.675184 -0.363535 -0.0103946 -0.675184 -0.0103946 -0.00559713 -0.00559713 -0.363535 -0.00559713 -0.00301463 -0.00151612 -0.0984579 -0.00151612 -0.000816964 -2.32919e-05 -0.00151223 -2.32919e-05 -1.25602e-05 -0.000341827 -0.0221848 -0.000341827 -0.00018455 -0.000698678 -0.0453167 -0.000698678 -0.000377942 -0.00040445 -0.0262044 -0.00040445 -0.000219528 -2.90388e-05 -0.00187734 -2.90388e-05 -1.58689e-05 -9.46632e-05 -0.00608673 -9.46632e-05 -5.26002e-05 -0.00033889 -0.0213344 -0.00033889 -0.000200255 -0.000403417 -0.018028 -0.000403417 -0.000431632 -5.10473e-05 -0.00288869 -5.10473e-05 -3.86886e-05 -4.56468e-05 -0.00290091 -4.56468e-05 -2.62587e-05 -0.000283996 -0.0182939 -0.000283996 -0.000156927 -0.000340355 -0.0220124 -0.000340355 -0.000185757 -9.97016e-05 -0.006459 -9.97016e-05 -5.41304e-05 -3.21984e-05 -0.00208766 -3.21984e-05 -1.74356e-05 -0.000485238 -0.0314758 -0.000485238 -0.000262382 -0.000953596 -0.0618724 -0.000953596 -0.000515216 -0.000583121 -0.0378401 -0.000583121 -0.00031491 -6.12029e-05 -0.00397187 -6.12029e-05 -3.30449e-05 -0.0122325 -0.79386 -0.0122325 -0.00660426 -0.13853 -8.98999 -0.13853 -0.0747979 -0.00287614 -0.186636 -0.00287614 -0.00155329 -1.23547e-26 -2.67931e-26 -1.40485e-26 -1.624e-27 -0.000417263 -0.0270685 -0.000417263 -0.00022556 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -6.28029e-29 -5.09045e-28 -8.91016e-29 -3.5783e-29 -0.577669 -37.4855 -0.577669 -0.311976 -27.7817 -1802.86 -27.7817 -15.002 -2.44919 -158.942 -2.44919 -1.32242 -0.0122325 -0.79386 -0.0122325 -0.00660426 -0.116326 -7.54945 -0.116326 -0.0628002 -0.189843 -12.3207 -0.189843 -0.102487 -0.096387 -6.25543 -0.096387 -0.0520365 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.135373 -8.7892 -0.135373 -0.0729952 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.292997 -19.0283 -0.292997 -0.157854 -1.08104 -70.209 -1.08104 -0.58235 -2.00689 -130.342 -2.00689 -1.08104 -130.342 -8465.47 -130.342 -70.209 -2.00689 -130.342 -2.00689 -1.08104 -1.08104 -70.209 -1.08104 -0.58235 -0.292997 -19.0283 -0.292997 -0.157854 -0.00450472 -0.292536 -0.00450472 -0.00242739 -0.0661699 -4.2967 -0.0661699 -0.0356654 -0.135373 -8.7892 -0.135373 -0.0729952 -0.0784216 -5.0905 -0.0784216 -0.0423146 -0.0056305 -0.365339 -0.0056305 -0.00304196 -0.0183078 -1.18676 -0.0183078 -0.00992128 -0.0645395 -4.16805 -0.0645395 -0.035383 -0.0585892 -3.52946 -0.0585892 -0.0387927 -0.00895042 -0.566756 -0.00895042 -0.00520277 -0.00881859 -0.570398 -0.00881859 -0.0048115 -0.0556058 -3.60498 -0.0556058 -0.0301204 -0.0670108 -4.34721 -0.0670108 -0.0362234 -0.0197001 -1.27833 -0.0197001 -0.0106406 -0.00638014 -0.414048 -0.00638014 -0.00344493 -0.096387 -6.25543 -0.096387 -0.0520365 -0.189843 -12.3207 -0.189843 -0.102487 -0.116326 -7.54945 -0.116326 -0.0628002 -0.0122325 -0.79386 -0.0122325 -0.00660426 -2.44919 -158.942 -2.44919 -1.32242 -27.7817 -1802.86 -27.7817 -15.002 -0.577669 -37.4855 -0.577669 -0.311976 -8.56112e-28 -1.13333e-26 -6.1044e-28 -1.15362e-27 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -1.37741e-27 -5.8237e-26 -5.09526e-28 --1 -6.5723 -426.473 -6.5723 -3.54969 -315.621 -20481.1 -315.621 -170.45 -27.7817 -1802.86 -27.7817 -15.002 -0.13853 -8.98999 -0.13853 -0.0747979 -1.3151 -85.3471 -1.3151 -0.710006 -2.14234 -139.038 -2.14234 -1.15651 -1.08565 -70.4611 -1.08565 -0.586019 -0.0717198 -4.6549 -0.0717198 -0.0387101 -0.220987 -14.3432 -0.220987 -0.119269 -0.750003 -48.6792 -0.750003 -0.404787 -0.620722 -40.2859 -0.620722 -0.335074 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.610435 -39.2043 -0.610435 -0.340393 -0.71226 -46.2083 -0.71226 -0.384984 -0.202313 -13.1325 -0.202313 -0.109162 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.86468 -56.142 -0.86468 -0.46619 -1.49069 -96.7929 -1.49069 -0.803566 -0.72778 -47.2578 -0.72778 -0.392266 -0.0494951 -3.21402 -0.0494951 -0.0266749 -3.2166 -208.879 -3.2166 -1.73343 -11.8607 -770.221 -11.8607 -6.39146 -22.0107 -1429.36 -22.0107 -11.8607 -1429.36 -92822.3 -1429.36 -770.221 -22.0107 -1429.36 -22.0107 -11.8607 -11.8607 -770.221 -11.8607 -6.39146 -3.2166 -208.879 -3.2166 -1.73343 -0.0494951 -3.21402 -0.0494951 -0.0266749 -0.72778 -47.2578 -0.72778 -0.392266 -1.49069 -96.7929 -1.49069 -0.803566 -0.86468 -56.142 -0.86468 -0.46619 -0.0621624 -4.03574 -0.0621624 -0.0335235 -0.202313 -13.1325 -0.202313 -0.109162 -0.71226 -46.2083 -0.71226 -0.384984 -0.610435 -39.2043 -0.610435 -0.340393 -0.0975088 -6.30789 -0.0975088 -0.0531779 -0.0980423 -6.36128 -0.0980423 -0.052973 -0.620722 -40.2859 -0.620722 -0.335074 -0.750003 -48.6792 -0.750003 -0.404787 -0.220987 -14.3432 -0.220987 -0.119269 -0.0717198 -4.6549 -0.0717198 -0.0387101 -1.08565 -70.4611 -1.08565 -0.586019 -2.14234 -139.038 -2.14234 -1.15651 -1.3151 -85.3471 -1.3151 -0.710006 -0.13853 -8.98999 -0.13853 -0.0747979 -27.7817 -1802.86 -27.7817 -15.002 -315.621 -20481.1 -315.621 -170.45 -6.5723 -426.473 -6.5723 -3.54969 -7.57831e-27 -1.07254e-25 -1.10549e-26 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.13705 -8.89268 -0.13705 --1 -6.5723 -426.473 -6.5723 -3.54969 -0.577669 -37.4855 -0.577669 -0.311976 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.0272617 -1.769 -0.0272617 -0.0147244 -0.0443406 -2.87704 -0.0443406 -0.023954 -0.0224346 -1.45548 -0.0224346 -0.0121247 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.0301823 -1.95822 -0.0301823 -0.0163108 -0.014714 -0.95496 -0.014714 -0.00794327 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.0648995 -4.21347 -0.0648995 -0.0349988 -0.239156 -15.528 -0.239156 -0.128938 -0.443649 -28.8066 -0.443649 -0.239156 -28.8066 -1870.47 -28.8066 -15.528 -0.443649 -28.8066 -0.443649 -0.239156 -0.239156 -15.528 -0.239156 -0.128938 -0.0648995 -4.21347 -0.0648995 -0.0349988 -0.000999521 -0.0648835 -0.000999521 -0.000539237 -0.014714 -0.95496 -0.014714 -0.00794327 -0.0301823 -1.95822 -0.0301823 -0.0163108 -0.0175399 -1.13732 -0.0175399 -0.00949616 -0.00126418 -0.081876 -0.00126418 -0.000686942 -0.00413231 -0.266853 -0.00413231 -0.00226589 -0.0147316 -0.940552 -0.0147316 -0.00836059 -0.0152901 -0.799404 -0.0152901 -0.0133193 -0.00214114 -0.128858 -0.00214114 -0.00142114 -0.00202882 -0.130192 -0.00202882 -0.00113411 -0.0127798 -0.826057 -0.0127798 -0.00698713 -0.0154384 -1.00004 -0.0154384 -0.00838465 -0.00455336 -0.29521 -0.00455336 -0.00246606 -0.0014798 -0.0959823 -0.0014798 -0.000800347 -0.0224346 -1.45548 -0.0224346 -0.0121247 -0.0443406 -2.87704 -0.0443406 -0.023954 -0.0272617 -1.769 -0.0272617 -0.0147244 -0.00287614 -0.186636 -0.00287614 -0.00155329 -0.577669 -37.4855 -0.577669 -0.311976 -6.5723 -426.473 -6.5723 -3.54969 -0.13705 -8.89268 -0.13705 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -9.9393e-28 -5.81821e-27 -1.47621e-27 --1 -2.04374e-28 -4.53314e-26 -5.61551e-30 -3.42211e-28 -1.72504e-29 -1.45836e-26 -1.37068e-28 -1.341e-28 -1.70179e-29 -2.8589e-27 -7.36271e-29 -1.99035e-28 -4.16751e-29 -3.08697e-27 -7.1631e-29 -2.90712e-29 -8.08911e-29 -3.65522e-28 -1.8535e-28 -4.82699e-29 -3.35562e-29 -4.04096e-27 -1.61891e-28 -1.68271e-28 -1.27253e-28 -3.11291e-27 -1.73488e-28 -1.43251e-28 -1.13496e-29 -1.04692e-26 -4.39261e-28 -1.62027e-28 -6.92009e-29 -5.87168e-28 -1.66325e-29 -2.74222e-28 -1.0398e-28 -9.94616e-28 -2.60774e-28 -1.15895e-28 -8.47601e-29 -2.61782e-27 -3.37613e-29 -5.40857e-29 -9.71004e-29 -4.9093e-28 -3.7212e-28 -1.75398e-28 -1.53594e-28 -1.7887e-26 -3.47201e-29 -1.09617e-28 -7.3432e-28 -1.63267e-27 -1.86776e-28 -3.76844e-28 -5.41701e-28 -3.90822e-27 -2.97944e-28 -1.84498e-28 -6.89908e-28 -3.15859e-27 -3.84264e-28 -1.02761e-28 -3.38603e-28 -3.54926e-27 -3.86828e-29 -6.93844e-29 -1.27988e-27 -9.7812e-27 -5.89243e-28 -1.37521e-28 -2.21027e-28 -6.28963e-27 -9.15349e-29 -9.40831e-29 -2.66738e-28 -1.04442e-27 -7.68157e-28 -3.12386e-28 -7.1894e-28 -1.28208e-26 -1.70014e-28 -1.90036e-27 -3.90785e-28 -1.09509e-26 -3.77451e-27 -3.55993e-28 -6.4052e-27 -3.76256e-24 -1.35917e-26 -8.17238e-27 -3.29491e-27 -4.74312e-27 -2.70525e-27 -9.64132e-28 -4.65156e-28 -4.8671e-27 -9.81985e-28 -3.6378e-28 -2.30119e-27 -1.06141e-27 -3.88691e-27 -5.1863e-28 -9.04131e-28 -5.38328e-27 -2.7259e-27 -7.4317e-28 -3.93475e-27 -1.01797e-25 -1.1812e-26 -2.38116e-27 -2.67318e-28 -1.41962e-26 -4.42308e-28 -1.25641e-27 -8.18379e-27 -5.0165e-27 -6.11206e-27 -1.02951e-27 -6.97148e-28 -1.1323e-26 -8.48257e-28 -1.06446e-27 -1.00575e-26 -5.83166e-27 -1.46797e-26 -8.81053e-28 -9.16183e-28 -5.80484e-26 -1.32194e-27 -2.62433e-27 -1.60967e-26 -1.03712e-26 -2.15581e-26 -1.17483e-27 -6.18561e-28 -2.35722e-26 -2.39937e-28 -8.80065e-28 -1.93994e-26 -9.29825e-26 -2.44515e-26 -5.32396e-28 -1.82366e-28 -6.83278e-27 -9.4145e-28 -2.22353e-28 -2.32903e-26 -9.57684e-26 -3.25658e-26 -9.48408e-28 -3.68336e-28 -3.33861e-26 -1.35003e-27 -7.80456e-28 -9.50299e-27 -1.32731e-27 -2.11563e-26 -1.47154e-27 -2.55644e-29 -3.46248e-27 -1.0702e-27 -6.37546e-28 -1.64314e-26 -2.09316e-26 -1.29083e-26 -1.16928e-27 -1.44181e-27 -1.07043e-26 -3.63922e-27 -2.26626e-27 -9.99845e-27 -2.24526e-26 -1.099e-26 -1.39557e-28 -5.52612e-28 -2.38515e-26 -1.63013e-27 -2.03908e-27 -8.80357e-27 -3.24321e-25 -3.84006e-27 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000417263 -0.0270685 -0.000417263 -0.00022556 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.0610743 -3.96453 -0.0610743 -0.0329506 -3.96453 -257.374 -3.96453 -2.13832 -0.0610743 -3.96453 -0.0610743 -0.0329506 -0.0329506 -2.13832 -0.0329506 -0.0177933 -0.00895453 -0.580797 -0.00895453 -0.00484347 -0.000138197 -0.0089558 -0.000138197 -7.49537e-05 -0.0020403 -0.132036 -0.0020403 -0.00111145 -0.00420203 -0.271297 -0.00420203 -0.00230565 -0.00245637 -0.157931 -0.00245637 -0.00136514 -0.000178792 -0.0113988 -0.000178792 -0.000101901 -0.000596786 -0.0372549 -0.000596786 -0.000360954 -0.00228385 -0.131699 -0.00228385 -0.00166693 -0.00485451 -0.112284 -0.00485451 -0.00794719 -0.00044418 -0.0181578 -0.00044418 -0.000520088 -0.00030807 -0.0184062 -0.00030807 -0.000208021 -0.00186215 -0.117176 -0.00186215 -0.0011019 -0.00222624 -0.14233 -0.00222624 -0.00125838 -0.000654898 -0.0421552 -0.000654898 -0.000362673 -0.000212885 -0.0137509 -0.000212885 -0.000116638 -0.00323219 -0.20919 -0.00323219 -0.00176005 -0.00640142 -0.414796 -0.00640142 -0.0034729 -0.0039451 -0.255817 -0.0039451 -0.00213544 -0.000417263 -0.0270685 -0.000417263 -0.00022556 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00490888 -0.318097 -0.00490888 -0.0026628 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0743255 -4.82392 -0.0743255 -0.0401201 -4.82392 -313.138 -4.82392 -2.6025 -0.0743255 -4.82392 -0.0743255 -0.0401201 -0.0401201 -2.6025 -0.0401201 -0.0216931 -0.0109126 -0.707173 -0.0109126 -0.00591888 -0.000168643 -0.0109108 -0.000168643 -9.19389e-05 -0.00249472 -0.160977 -0.00249472 -0.00137122 -0.00515303 -0.33105 -0.00515303 -0.0028707 -0.00302646 -0.192908 -0.00302646 -0.00172601 -0.000222169 -0.0139386 -0.000222169 -0.00013255 -0.000755958 -0.0456111 -0.000755958 -0.000498747 -0.0030821 -0.161447 -0.0030821 -0.00267748 -0.0094235 -0.137833 -0.0094235 -0.0175349 -0.000728588 -0.0223207 -0.000728588 -0.00104932 -0.000406483 -0.0226588 -0.000406483 -0.000317247 -0.00235901 -0.144459 -0.00235901 -0.00150056 -0.00278576 -0.175728 -0.00278576 -0.00163704 -0.000815755 -0.0521235 -0.000815755 -0.000461899 -0.000264729 -0.0170273 -0.000264729 -0.000146947 -0.00401784 -0.259402 -0.00401784 -0.00220459 -0.00795985 -0.515079 -0.00795985 -0.00433675 -0.00490888 -0.318097 -0.00490888 -0.0026628 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.00315159 -0.203494 -0.00315159 -0.00172876 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.00424038 -0.274413 -0.00424038 -0.00230984 -0.015572 -1.0095 -0.015572 -0.00843611 -0.0288299 -1.87074 -0.0288299 -0.015572 -1.87074 -121.427 -1.87074 -1.0095 -0.0288299 -1.87074 -0.0288299 -0.015572 -0.015572 -1.0095 -0.015572 -0.00843611 -0.00424038 -0.274413 -0.00424038 -0.00230984 -6.56472e-05 -0.00423609 -6.56472e-05 -3.60809e-05 -0.000973712 -0.0625399 -0.000973712 -0.000542835 -0.00201959 -0.128715 -0.00201959 -0.00115219 -0.00119426 -0.0750717 -0.00119426 -0.000708698 -8.87887e-05 -0.00542979 -8.87887e-05 -5.66705e-05 -0.000310883 -0.0177872 -0.000310883 -0.000230603 -0.00138301 -0.0630341 -0.00138301 -0.00144886 -0.00589123 -0.0538809 -0.00589123 -0.0118124 -0.000401657 -0.00873668 -0.000401657 -0.000672335 -0.000176707 -0.00888065 -0.000176707 -0.000163408 -0.000966244 -0.0566937 -0.000966244 -0.000679741 -0.0011185 -0.0690584 -0.0011185 -0.000696658 -0.000324847 -0.0205113 -0.000324847 -0.00019038 -0.000105031 -0.00670943 -0.000105031 -5.95148e-05 -0.00159156 -0.10235 -0.00159156 -0.000883947 -0.00315159 -0.203494 -0.00315159 -0.00172876 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.0352044 -2.28491 -0.0352044 -0.0190011 -0.00054269 -0.0352044 -0.00054269 -0.000293391 -0.000293391 -0.0190011 -0.000293391 -0.000159436 -8.0023e-05 -0.00516686 -8.0023e-05 -4.38996e-05 -1.24208e-06 -7.97978e-05 -1.24208e-06 -6.91888e-07 -1.84968e-05 -0.0011788 -1.84968e-05 -1.05538e-05 -3.86069e-05 -0.00242784 -3.86069e-05 -2.28846e-05 -2.30726e-05 -0.00141717 -2.30726e-05 -1.45642e-05 -1.74962e-06 -0.000102594 -1.74962e-06 -1.23245e-06 -6.39675e-06 -0.000336417 -6.39675e-06 -5.52246e-06 -3.19697e-05 -0.00119345 -3.19697e-05 -4.04246e-05 -0.000182828 -0.00102129 -0.000182828 -0.000383749 -1.13813e-05 -0.000165794 -1.13813e-05 -2.12032e-05 -3.91929e-06 -0.000168728 -3.91929e-06 -4.36707e-06 -1.96883e-05 -0.00107847 -1.96883e-05 -1.58684e-05 -2.20715e-05 -0.0013153 -2.20715e-05 -1.49948e-05 -6.31897e-06 -0.000391146 -6.31897e-06 -3.90956e-06 -2.02863e-06 -0.000128105 -2.02863e-06 -1.18854e-06 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0003976 -0.0222604 -0.0003976 -0.000307831 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.589341 -38.2483 -0.589341 -0.318148 -0.00908921 -0.589341 -0.00908921 -0.00492111 -0.00492111 -0.318148 -0.00492111 -0.00268897 -0.00134585 -0.0865387 -0.00134585 -0.000747736 -2.09796e-05 -0.00133709 -2.09796e-05 -1.19692e-05 -0.000314529 -0.0197625 -0.000314529 -0.000186888 -0.000663546 -0.0407285 -0.000663546 -0.000419594 -0.000403729 -0.0237913 -0.000403729 -0.000281313 -3.16341e-05 -0.00172375 -3.16341e-05 -2.57331e-05 -0.000123659 -0.00565743 -0.000123659 -0.000129006 -0.000718374 -0.0200892 -0.000718374 -0.00108534 -0.00530034 -0.0172087 -0.00530034 -0.0114528 -0.000309357 -0.00279657 -0.000309357 -0.000621358 -8.37463e-05 -0.00284917 -8.37463e-05 -0.000113205 -0.000373746 -0.0182315 -0.000373746 -0.000360182 -0.0003976 -0.0222604 -0.0003976 -0.000307831 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.000274663 -0.0064509 -0.000274663 -0.000447409 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -0.00305121 -0.194492 -0.00305121 -0.00173997 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.0204376 -1.32393 -0.0204376 -0.0110977 -1.32393 -85.9185 -1.32393 -0.714827 -0.0204376 -1.32393 -0.0204376 -0.0110977 -0.0110977 -0.714827 -0.0110977 -0.00613323 -0.00305121 -0.194492 -0.00305121 -0.00173997 -4.79706e-05 -0.00300619 -4.79706e-05 -2.87115e-05 -0.000728776 -0.0444537 -0.000728776 -0.000468176 -0.00156983 -0.0916671 -0.00156983 -0.00111599 -0.000988155 -0.0535822 -0.000988155 -0.000810771 -8.20804e-05 -0.00388507 -8.20804e-05 -8.222e-05 -0.000356532 -0.0127613 -0.000356532 -0.000465321 -0.00249205 -0.045354 -0.00249205 -0.00440536 -0.022705 -0.0388867 -0.022705 -0.0499821 -0.00126757 -0.0063255 -0.00126757 -0.00268125 -0.000274663 -0.0064509 -0.000274663 -0.000447409 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -0.0328483 -0.0243634 -0.0328483 -0.0731583 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -0.00194784 -0.121257 -0.00194784 -0.0011871 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.825084 -53.5423 -0.825084 -0.445552 -0.0127684 -0.825084 -0.0127684 -0.00698693 -0.00698693 -0.445552 -0.00698693 -0.00397944 -0.00194784 -0.121257 -0.00194784 -0.0011871 -3.13004e-05 -0.00187486 -3.13004e-05 -2.10124e-05 -0.000491452 -0.0277363 -0.000491452 -0.000374648 -0.00111205 -0.0572242 -0.00111205 -0.000993348 -0.000753714 -0.0334692 -0.000753714 -0.000813046 -6.99743e-05 -0.00242836 -6.99743e-05 -9.33363e-05 -0.000357491 -0.00798226 -0.000357491 -0.000593194 -0.0030694 -0.0283916 -0.0030694 -0.006149 -0.0328483 -0.0243634 -0.0328483 -0.0731583 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 -1.24121e-05 -0.000185957 -1.24121e-05 --1 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.0630146 -4.08903 -0.0630146 -0.034033 -0.000986851 -0.0630146 -0.000986851 -0.000559862 -0.000559862 -0.034033 -0.000559862 -0.000362761 -0.000165959 -0.00926415 -0.000165959 -0.000129206 -2.91307e-06 -0.000143285 -2.91307e-06 -2.77623e-06 -5.14269e-05 -0.00212056 -5.14269e-05 -5.97668e-05 -0.000134889 -0.00437707 -0.000134889 -0.00018793 -0.000109211 -0.00256143 -0.000109211 -0.000177995 -1.24121e-05 -0.000185957 -1.24121e-05 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 --1 diff --git a/lib/gpu/lal_eam.cpp b/lib/gpu/lal_eam.cpp index 6ca681e6ded..bda8d4e7059 100644 --- a/lib/gpu/lal_eam.cpp +++ b/lib/gpu/lal_eam.cpp @@ -47,7 +47,8 @@ int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double** host_cutsq, double rdr, double rdrho, - double rhomax, int nrhor, int nrho, int nz2r, int nfrho, int nr, + double rhomax, double rhomin, const int he_flag, + int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) @@ -119,6 +120,8 @@ int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, _rdr=rdr; _rdrho = rdrho; _rhomax=rhomax; + _rhomin=rhomin; + _he_flag=he_flag; _nrhor=nrhor; _nrho=nrho; _nz2r=nz2r; @@ -511,15 +514,16 @@ int EAMT::loop(const int eflag, const int vflag) { &this->nbor->dev_nbor, &this->_nbor_data->begin(), &_fp, &this->ans->engv, &eflag, &ainum, &nbor_pitch, &_ntypes, &_cutforcesq, &_rdr, &_rdrho, - &_rhomax, &_nrho, &_nr, &this->_threads_per_atom); + &_rhomax, &_rhomin, &_he_flag, &_nrho, &_nr, + &this->_threads_per_atom); } else { this->k_energy.set_size(GX,BX); this->k_energy.run(&this->atom->x, &type2rhor_z2r, &type2frho, &rhor_spline2, &frho_spline1, &frho_spline2, &cutsq, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &_fp, &this->ans->engv,&eflag, &ainum, &nbor_pitch, - &_ntypes, &_cutforcesq, &_rdr, &_rdrho, &_rhomax, &_nrho, - &_nr, &this->_threads_per_atom); + &_ntypes, &_cutforcesq, &_rdr, &_rdrho, &_rhomax, &_rhomin, + &_he_flag, &_nrho, &_nr, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_eam.cu b/lib/gpu/lal_eam.cu index 8c7a410379b..7f5b607a0e8 100644 --- a/lib/gpu/lal_eam.cu +++ b/lib/gpu/lal_eam.cu @@ -68,7 +68,8 @@ _texture( z2r_sp2_tex,int4); __local acctyp red_acc[BLOCK_PAIR]; #define store_energy_fp(rho,energy,ii,inum,tid,t_per_atom,offset, \ - eflag,vflag,engv,rdrho,nrho,i,rhomax,tfrho) \ + eflag,vflag,engv,rdrho,nrho,i,rhomax,rhomin, \ + he_flag,tfrho) \ if (t_per_atom>1) { \ red_acc[tid]=rho; \ for (unsigned int s=t_per_atom/2; s>0; s>>=1) { \ @@ -79,11 +80,21 @@ _texture( z2r_sp2_tex,int4); rho=red_acc[tid]; \ } \ if (offset==0 && ii rhomax) energy += fp*(rho-rhomax); \ + if (he_flag && rho < rhomin) energy += fp*(rho-rhomin); \ + else if (rho > rhomax) energy += fp*(rho-rhomax); \ engv[ii]=energy; \ } \ } @@ -152,17 +164,28 @@ _texture( z2r_sp2_tex,int4); #define local_allocate_store_energy_fp() #define store_energy_fp(rho,energy,ii,inum,tid,t_per_atom,offset, \ - eflag,vflag,engv,rdrho,nrho,i,rhomax,tfrho) \ + eflag,vflag,engv,rdrho,nrho,i,rhomax,rhomin, \ + he_flag,tfrho) \ if (t_per_atom>1) { \ for (unsigned int s=t_per_atom/2; s>0; s>>=1) \ rho += shfl_down(rho, s, t_per_atom); \ } \ if (offset==0 && ii rhomax) energy += fp*(rho-rhomax); \ + if (he_flag && rho < rhomin) energy += fp*(rho-rhomin); \ + else if (rho > rhomax) energy += fp*(rho-rhomax); \ engv[ii]=energy; \ } \ } @@ -224,7 +248,8 @@ __kernel void k_energy(const __global numtyp4 *restrict x_, const int eflag, const int inum, const int nbor_pitch, const int ntypes, const numtyp cutforcesq, const numtyp rdr, const numtyp rdrho, - const numtyp rhomax, const int nrho, + const numtyp rhomax, const numtyp rhomin, + const int he_flag, const int nrho, const int nr, const int t_per_atom) { int tid, ii, offset, i, itype, tfrho; atom_info(t_per_atom,ii,tid,offset); @@ -275,7 +300,7 @@ __kernel void k_energy(const __global numtyp4 *restrict x_, } // for nbor } // if ii store_energy_fp(rho,energy,ii,inum,tid,t_per_atom,offset, - eflag,vflag,engv,rdrho,nrho,i,rhomax,tfrho); + eflag,vflag,engv,rdrho,nrho,i,rhomax,rhomin,he_flag,tfrho); } __kernel void k_energy_fast(const __global numtyp4 *restrict x_, @@ -293,6 +318,7 @@ __kernel void k_energy_fast(const __global numtyp4 *restrict x_, const int nbor_pitch, const int ntypes, const numtyp cutforcesq, const numtyp rdr, const numtyp rdrho, const numtyp rhomax, + const numtyp rhomin, const int he_flag, const int nrho, const int nr, const int t_per_atom) { int tid, ii, offset, i, itype, tfrho; @@ -366,7 +392,7 @@ __kernel void k_energy_fast(const __global numtyp4 *restrict x_, } // for nbor } // if ii store_energy_fp(rho,energy,ii,inum,tid,t_per_atom,offset, - eflag,vflag,engv,rdrho,nrho,i,rhomax,tfrho); + eflag,vflag,engv,rdrho,nrho,i,rhomax,rhomin,he_flag,tfrho); } __kernel void k_eam(const __global numtyp4 *restrict x_, diff --git a/lib/gpu/lal_eam.h b/lib/gpu/lal_eam.h index a70f3c69e1c..c5c0d1223b1 100644 --- a/lib/gpu/lal_eam.h +++ b/lib/gpu/lal_eam.h @@ -41,7 +41,8 @@ class EAM : public BaseAtomic { int init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double** host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, int nrho, int nz2r, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen); @@ -111,7 +112,8 @@ class EAM : public BaseAtomic { UCL_D_Vec cutsq; - numtyp _cutforcesq,_rdr,_rdrho, _rhomax; + numtyp _cutforcesq,_rdr,_rdrho, _rhomax, _rhomin; + int _he_flag; int _nfrho,_nrhor,_nrho,_nz2r,_nr; diff --git a/lib/gpu/lal_eam_alloy_ext.cpp b/lib/gpu/lal_eam_alloy_ext.cpp index 84c56fc3add..8430cd0b122 100644 --- a/lib/gpu/lal_eam_alloy_ext.cpp +++ b/lib/gpu/lal_eam_alloy_ext.cpp @@ -31,7 +31,8 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double** host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -66,7 +67,7 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMALMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -86,7 +87,7 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMALMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); diff --git a/lib/gpu/lal_eam_ext.cpp b/lib/gpu/lal_eam_ext.cpp index f0f8f481ce5..cf7019e1a88 100644 --- a/lib/gpu/lal_eam_ext.cpp +++ b/lib/gpu/lal_eam_ext.cpp @@ -31,7 +31,8 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double** host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -66,7 +67,7 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -86,7 +87,7 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); diff --git a/lib/gpu/lal_eam_fs_ext.cpp b/lib/gpu/lal_eam_fs_ext.cpp index 07a4471f8d6..65ba9de9d19 100644 --- a/lib/gpu/lal_eam_fs_ext.cpp +++ b/lib/gpu/lal_eam_fs_ext.cpp @@ -31,7 +31,8 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double** host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -66,7 +67,7 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMFSMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -86,7 +87,7 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMFSMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, host_cutsq, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); diff --git a/lib/gpu/lal_eam_he_ext.cpp b/lib/gpu/lal_eam_he_ext.cpp new file mode 100644 index 00000000000..8cea4612bc6 --- /dev/null +++ b/lib/gpu/lal_eam_he_ext.cpp @@ -0,0 +1,144 @@ +/*************************************************************************** + eam_he_ext.cpp + ------------------- + Trung Dac Nguyen, W. Michael Brown (ORNL) + + Functions for LAMMPS access to buck acceleration routines. + + __________________________________________________________________________ + This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) + __________________________________________________________________________ + + begin : + email : brownw@ornl.gov nguyentd@ornl.gov + ***************************************************************************/ + +#include +#include +#include + +#include "lal_eam.h" + +using namespace std; +using namespace LAMMPS_AL; + +static EAM EAMHEMF; + +// --------------------------------------------------------------------------- +// Allocate memory on host and device and copy constants to device +// --------------------------------------------------------------------------- +int eam_he_gpu_init(const int ntypes, double host_cutforcesq, + int **host_type2rhor, int **host_type2z2r, int *host_type2frho, + double ***host_rhor_spline, double ***host_z2r_spline, + double ***host_frho_spline, double** host_cutsq, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, + int nrho, int nz2r, int nfrho, int nr, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, + int &gpu_mode, FILE *screen, int &fp_size) { + EAMHEMF.clear(); + gpu_mode=EAMHEMF.device->gpu_mode(); + double gpu_split=EAMHEMF.device->particle_split(); + int first_gpu=EAMHEMF.device->first_device(); + int last_gpu=EAMHEMF.device->last_device(); + int world_me=EAMHEMF.device->world_me(); + int gpu_rank=EAMHEMF.device->gpu_rank(); + int procs_per_gpu=EAMHEMF.device->procs_per_gpu(); + + // disable host/device split for now + if (gpu_split != 1.0) + return -8; + + fp_size=sizeof(PRECISION); + + EAMHEMF.device->init_message(screen,"eam/he",first_gpu,last_gpu); + + bool message=false; + if (EAMHEMF.device->replica_me()==0 && screen) + message=true; + + if (message) { + fprintf(screen,"Initializing Device and compiling on process 0..."); + fflush(screen); + } + + int init_ok=0; + if (world_me==0) + init_ok=EAMHEMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, + host_type2frho, host_rhor_spline, host_z2r_spline, + host_frho_spline, host_cutsq, rdr, rdrho, rhomax, rhomin, he_flag, nrhor, nrho, nz2r, + nfrho, nr, nlocal, nall, max_nbors, maxspecial, cell_size, + gpu_split, screen); + + EAMHEMF.device->world_barrier(); + if (message) + fprintf(screen,"Done.\n"); + + for (int i=0; iserialize_init(); + if (message) + fprintf(screen,"Done.\n"); + } + if (message) + fprintf(screen,"\n"); + + if (init_ok==0) + EAMHEMF.estimate_gpu_overhead(); + return init_ok; +} + +void eam_he_gpu_clear() { + EAMHEMF.clear(); +} + +int ** eam_he_gpu_compute_n(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, int &inum, void **fp_ptr, double *prd, int *periodicity) { + return EAMHEMF.compute(ago, inum_full, nall, host_x, host_type, sublo, + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + inum, fp_ptr, prd, periodicity); +} + +void eam_he_gpu_compute(const int ago, const int inum_full, const int nlocal, + const int nall, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, + int &host_start, const double cpu_time, bool &success, + void **fp_ptr) { + EAMHEMF.compute(ago,inum_full,nlocal,nall,host_x,host_type,ilist,numj, + firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, + fp_ptr); +} + +void eam_he_gpu_compute_force(int *ilist, const bool eflag, const bool vflag, + const bool eatom, const bool vatom) { + EAMHEMF.compute2(ilist, eflag, vflag, eatom, vatom); +} + + +double eam_he_gpu_bytes() { + return EAMHEMF.host_memory_usage(); +} + + diff --git a/lib/gpu/lal_edpd.cpp b/lib/gpu/lal_edpd.cpp index c03591b9ed5..a8eb14549e5 100644 --- a/lib/gpu/lal_edpd.cpp +++ b/lib/gpu/lal_edpd.cpp @@ -123,6 +123,10 @@ int EDPDT::init(const int ntypes, n++; } ucl_copy(sc,dview,false); + } else { + // never leave the buffer unallocated: a null device pointer as a + // kernel argument causes a GPU memory fault even when unused + sc.alloc(1,*(this->ucl_device),UCL_READ_ONLY); } if (host_kc) { @@ -138,6 +142,8 @@ int EDPDT::init(const int ntypes, n++; } ucl_copy(kc,dview,false); + } else { + kc.alloc(1,*(this->ucl_device),UCL_READ_ONLY); } UCL_H_Vec host_rsq(lj_types*lj_types,*(this->ucl_device), diff --git a/lib/gpu/lal_sph_lj.cu b/lib/gpu/lal_sph_lj.cu index ae8e5aecb53..0d0e33134f4 100644 --- a/lib/gpu/lal_sph_lj.cu +++ b/lib/gpu/lal_sph_lj.cu @@ -200,9 +200,11 @@ __kernel void k_sph_lj(const __global numtyp4 *restrict x_, // apply long-range correction to model a LJ fluid with cutoff // this implies that the modelled LJ fluid has cutoff == SPH cutoff + // the correction enters the pressure term of both atoms of the pair; + // add both halves to the pair-local fj so the per-atom fi is not + // corrupted across neighbor list entries numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); - fi += lrc; - fj += lrc; + fj += (numtyp)2.0 * lrc; // dot product of velocity delta and distance vector numtyp delvx = iv.x - jv.x; @@ -374,9 +376,11 @@ __kernel void k_sph_lj_fast(const __global numtyp4 *restrict x_, // apply long-range correction to model a LJ fluid with cutoff // this implies that the modelled LJ fluid has cutoff == SPH cutoff + // the correction enters the pressure term of both atoms of the pair; + // add both halves to the pair-local fj so the per-atom fi is not + // corrupted across neighbor list entries numtyp lrc = (numtyp)-11.1701 * (ihcub * ihcub * ihcub - (numtyp)1.5 * ihcub); - fi += lrc; - fj += lrc; + fj += (numtyp)2.0 * lrc; // dot product of velocity delta and distance vector numtyp delvx = iv.x - jv.x; diff --git a/src/.gitignore b/src/.gitignore index 855cfee64bd..6b38abe61cc 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1394,6 +1394,14 @@ /pair_eam_fs.h /pair_eam_he.cpp /pair_eam_he.h +/pair_eam_he_gpu.cpp +/pair_eam_he_gpu.h +/pair_eam_he_kokkos.cpp +/pair_eam_he_kokkos.h +/pair_eam_he_omp.cpp +/pair_eam_he_omp.h +/pair_eam_he_opt.cpp +/pair_eam_he_opt.h /pair_lebedeva_z.cpp /pair_lebedeva_z.h /pair_lj_expand_coul_long.cpp diff --git a/src/DIFFRACTION/fix_saed_vtk.cpp b/src/DIFFRACTION/fix_saed_vtk.cpp index b03574031fd..9bd56bd2bd4 100644 --- a/src/DIFFRACTION/fix_saed_vtk.cpp +++ b/src/DIFFRACTION/fix_saed_vtk.cpp @@ -27,23 +27,29 @@ #include "error.h" #include "memory.h" #include "modify.h" +#include "safe_pointers.h" #include "update.h" +#include "vtk_writer.h" #include #include +#include +#include +#include using namespace LAMMPS_NS; using namespace FixConst; enum{ONE,RUNNING,WINDOW}; -enum{FIRST,MULTI}; +enum{VTKLEGACY,VTKXML}; /* ---------------------------------------------------------------------- */ FixSAEDVTK::FixSAEDVTK(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), ids(nullptr), fp(nullptr), vector(nullptr), - vector_total(nullptr), vector_list(nullptr), compute_saed(nullptr), filename(nullptr) + Fix(lmp, narg, arg), ids(nullptr), vector(nullptr), + vector_total(nullptr), vector_list(nullptr), compute_saed(nullptr), filename(nullptr), + nOutput(0) { if (narg < 7) error->all(FLERR,"Illegal fix saed/vtk command"); @@ -101,9 +107,6 @@ FixSAEDVTK::FixSAEDVTK(LAMMPS *lmp, int narg, char **arg) : // allocate memory for averaging - vector = vector_total = nullptr; - vector_list = nullptr; - if (ave == WINDOW) memory->create(vector_list,nwindow,1,"saed/vtk:vector_list"); @@ -216,11 +219,17 @@ FixSAEDVTK::FixSAEDVTK(LAMMPS *lmp, int narg, char **arg) : } // Finding dimensions for vtk files - for (int i=0; i<3; i++) { - if (( (Knmin[i] > 0) && (Knmax[i] > 0) ) || ( (Knmin[i] < 0) && (Knmax[i] < 0) )) { - Dim[i] = abs( (int) Knmin[i] ) + abs( (int) Knmax[i] ); - } else Dim[i] = abs( (int) Knmin[i] ) + abs( (int) Knmax[i] ) + 1; - } + // this must match the number of grid points written below, i.e. one per + // integer K value from Knmin to Knmax inclusive in each dimension + + for (int i=0; i<3; i++) Dim[i] = Knmax[i] - Knmin[i] + 1; + + // the search above finds nothing if the Ewald sphere slice misses the + // explored part of reciprocal space entirely + + if ((Dim[0] < 1) || (Dim[1] < 1) || (Dim[2] < 1)) + error->all(FLERR,"Fix saed/vtk found no reciprocal space points to output. " + "Check the Kmax, Zone and dR_Ewald settings of compute {}", ids); } // initialization @@ -250,7 +259,6 @@ FixSAEDVTK::~FixSAEDVTK() delete[] ids; memory->destroy(vector); memory->destroy(vector_total); - if (fp && comm->me == 0) fclose(fp); } /* ---------------------------------------------------------------------- */ @@ -377,83 +385,56 @@ void FixSAEDVTK::invoke_vector(bigint ntimestep) // output result to file - if (fp && comm->me == 0) { - if (nOutput > 0) { - fclose(fp); - - std::string nName = fmt::format("{}.{}.vtk",filename,nOutput); - fp = fopen(nName.c_str(),"w"); + if (filename && comm->me == 0) { - if (fp == nullptr) - error->one(FLERR,"Cannot open fix saed/vtk file {}: {}", nName,utils::getsyserror()); - } + // collect the intensity of each grid point of the reciprocal space map. + // points outside the explored volume, and outside the slice of the Ewald + // sphere when a zone axis is given, are marked with -1. - fprintf(fp,"# vtk DataFile Version 3.0 c_%s\n",ids); - fprintf(fp,"Image data set\n"); - fprintf(fp,"ASCII\n"); - fprintf(fp,"DATASET STRUCTURED_POINTS\n"); - fprintf(fp,"DIMENSIONS %d %d %d\n", Dim[0], Dim[1], Dim[2]); - fprintf(fp,"ASPECT_RATIO %g %g %g\n", dK[0], dK[1], dK[2]); - fprintf(fp,"ORIGIN %g %g %g\n", Knmin[0] * dK[0], Knmin[1] * dK[1], Knmin[2] * dK[2]); - fprintf(fp,"POINT_DATA %d\n", Dim[0] * Dim[1] * Dim[2] ); - fprintf(fp,"SCALARS intensity float\n"); - fprintf(fp,"LOOKUP_TABLE default\n"); + std::vector intensity; + intensity.reserve((std::size_t)Dim[0] * Dim[1] * Dim[2]); + // a zone axis of 0 0 0 means the entire reciprocal space volume is used - // Finding the intersection of the reciprical space and Ewald sphere + const bool fullvolume = (Zone[0] == 0.0) && (Zone[1] == 0.0) && (Zone[2] == 0.0); int NROW1 = 0; - double dinv2 = 0.0; - double r = 0.0; - double K[3]; - // Zone flag to capture entire recrocal space volume - if ((Zone[0] == 0) && (Zone[1] == 0) && (Zone[2] == 0)) { - for (int k = Knmin[2]; k <= Knmax[2]; k++) { - for (int j = Knmin[1]; j <= Knmax[1]; j++) { - for (int i = Knmin[0]; i <= Knmax[0]; i++) { - K[0] = i * dK[0]; - K[1] = j * dK[1]; - K[2] = k * dK[2]; - dinv2 = (K[0] * K[0] + K[1] * K[1] + K[2] * K[2]); - if (dinv2 < Kmax * Kmax) { - fprintf(fp,"%g\n",vector_total[NROW1]/norm); - fflush(fp); - NROW1++; - } else { - fprintf(fp,"%d\n",-1); - fflush(fp); - } - } - } - } - } else { - for (int k = Knmin[2]; k <= Knmax[2]; k++) { - for (int j = Knmin[1]; j <= Knmax[1]; j++) { - for (int i = Knmin[0]; i <= Knmax[0]; i++) { - K[0] = i * dK[0]; - K[1] = j * dK[1]; - K[2] = k * dK[2]; - dinv2 = (K[0] * K[0] + K[1] * K[1] + K[2] * K[2]); - if (dinv2 < Kmax * Kmax) { - r=0.0; - for (int m=0; m<3; m++) r += pow(K[m] - Zone[m],2.0); - r = sqrt(r); - if ( (r > (R_Ewald - dR_Ewald) ) && (r < (R_Ewald + dR_Ewald) )) { - fprintf(fp,"%g\n",vector_total[NROW1]/norm); - fflush(fp); - NROW1++; - } else { - fprintf(fp,"%d\n",-1); - fflush(fp); - } - } else { - fprintf(fp,"%d\n",-1); - fflush(fp); - } + for (int k = Knmin[2]; k <= Knmax[2]; k++) { + for (int j = Knmin[1]; j <= Knmax[1]; j++) { + for (int i = Knmin[0]; i <= Knmax[0]; i++) { + double K[3]; + K[0] = i * dK[0]; + K[1] = j * dK[1]; + K[2] = k * dK[2]; + double dinv2 = (K[0] * K[0] + K[1] * K[1] + K[2] * K[2]); + + bool selected = (dinv2 < Kmax * Kmax); + if (selected && !fullvolume) { + double r = 0.0; + for (int m = 0; m < 3; m++) r += (K[m] - Zone[m]) * (K[m] - Zone[m]); + r = sqrt(r); + selected = (r > (R_Ewald - dR_Ewald)) && (r < (R_Ewald + dR_Ewald)); } + + if (selected) intensity.push_back(vector_total[NROW1++] / norm); + else intensity.push_back(-1.0); } } } + + const double origin[3] = {Knmin[0] * dK[0], Knmin[1] * dK[1], Knmin[2] * dK[2]}; + std::string nName = filecurrent(); + + try { + VTKWriter writer((vtkformat == VTKXML) ? VTKWriter::XML : VTKWriter::LEGACY, binaryflag); + writer.set_title(fmt::format("Image data set c_{}", ids)); + writer.set_image_data(Dim, origin, dK); + writer.add_point_array("intensity", 1, std::move(intensity)); + writer.set_active_scalars("intensity"); + writer.write(nName); + } catch (VTKWriterException &e) { + error->one(FLERR,"Cannot write fix saed/vtk file {}: {}", nName, e.what()); + } } nOutput++; } @@ -478,47 +459,73 @@ void FixSAEDVTK::options(int narg, char **arg) { // option defaults - fp = nullptr; ave = ONE; startstep = 0; + vtkformat = VTKLEGACY; + binaryflag = 0; // optional args int iarg = 7; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix saed/vtk command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk file",error); if (comm->me == 0) { - nOutput = 0; + delete[] filename; filename = utils::strdup(arg[iarg+1]); - - std::string nName = fmt::format("{}.{}.vtk",filename,nOutput); - fp = fopen(nName.c_str(),"w"); - - if (fp == nullptr) - error->one(FLERR,"Cannot open fix saed/vtk file {}: {}", - nName,utils::getsyserror()); } iarg += 2; + } else if (strcmp(arg[iarg],"format") == 0) { + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk format",error); + if (strcmp(arg[iarg+1],"legacy") == 0) vtkformat = VTKLEGACY; + else if (strcmp(arg[iarg+1],"xml") == 0) vtkformat = VTKXML; + else error->all(FLERR,iarg+1,"Unknown fix saed/vtk format {}",arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"binary") == 0) { + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk binary",error); + binaryflag = utils::logical(FLERR,arg[iarg+1],false,lmp); + iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix saed/vtk command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk ave",error); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; else error->all(FLERR,"Illegal fix saed/vtk command"); if (ave == WINDOW) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix saed/vtk command"); + if (iarg+3 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk ave window",error); nwindow = utils::inumeric(FLERR,arg[iarg+2],false,lmp); if (nwindow <= 0) error->all(FLERR,"Illegal fix saed/vtk command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix saed/vtk command"); + if (iarg+2 > narg) utils::missing_cmd_args(FLERR,"fix saed/vtk start",error); startstep = utils::inumeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else error->all(FLERR,"Illegal fix saed/vtk command"); } + + // check right away that the requested location is writable, rather than + // failing on the first output step of a possibly long run. this has to + // wait until all keywords are known, since the format determines the + // file name extension. + + if (filename && comm->me == 0) { + std::string nName = filecurrent(); + SafeFilePtr fp(fopen(nName.c_str(),"w")); + if (!fp) + error->one(FLERR,"Cannot open fix saed/vtk file {}: {}",nName,utils::getsyserror()); + } +} + +/* ---------------------------------------------------------------------- + name of the file for the current output, the index is appended to the + base name given by the file keyword +------------------------------------------------------------------------- */ + +std::string FixSAEDVTK::filecurrent() const +{ + return fmt::format("{}.{}.{}",filename,nOutput,(vtkformat == VTKXML) ? "vti" : "vtk"); } /* ---------------------------------------------------------------------- @@ -539,10 +546,3 @@ bigint FixSAEDVTK::nextvalid() if (nvalid < update->ntimestep) nvalid += nfreq; return nvalid; } - -/* ---------------------------------------------------------------------- */ - -void FixSAEDVTK::reset_timestep(bigint ntimestep) -{ - if (ntimestep > nvalid) error->all(FLERR,"Fix saed/vtk missed timestep"); -} diff --git a/src/DIFFRACTION/fix_saed_vtk.h b/src/DIFFRACTION/fix_saed_vtk.h index 63f1bb4bf6d..be33e544ec0 100644 --- a/src/DIFFRACTION/fix_saed_vtk.h +++ b/src/DIFFRACTION/fix_saed_vtk.h @@ -22,6 +22,8 @@ FixStyle(saed/vtk,FixSAEDVTK); #include "fix.h" +#include + namespace LAMMPS_NS { class FixSAEDVTK : public Fix { @@ -33,25 +35,23 @@ class FixSAEDVTK : public Fix { void setup(int) override; void end_of_step() override; double compute_vector(int) override; - void reset_timestep(bigint); private: int nrepeat, nfreq, irepeat; bigint nvalid; char *ids; - FILE *fp; int nrows; - int ave, nwindow, nsum, startstep; + int ave, nwindow, startstep; int norm, iwindow, window_limit; double *vector; double *vector_total; double **vector_list; - void invoke_scalar(bigint); void invoke_vector(bigint); void options(int, char **); + [[nodiscard]] std::string filecurrent() const; bigint nextvalid(); @@ -64,7 +64,6 @@ class FixSAEDVTK : public Fix { int Knmax[3]; // maximum integer value for K points in each dimension int Knmin[3]; // minimum integer value for K points in each dimension - int KnSlice[6]; // min 0-2 max 2-5 hkl index using zone double Kmax; // Maximum reciprocal distance to explore double c[3]; // Parameters controlling resolution of reciprocal space explored double dR_Ewald; // Thickness of Ewald sphere slice @@ -72,6 +71,8 @@ class FixSAEDVTK : public Fix { char *filename; // user-specified file int nOutput; + int vtkformat; // VTKLEGACY or VTKXML + int binaryflag; // 1 if the data is written in binary int Dim[3]; bool manual; // Turn on manual recpiprocal map }; diff --git a/src/DPD-MESO/pair_edpd.cpp b/src/DPD-MESO/pair_edpd.cpp index e8e7c4e534f..bb5738896d3 100644 --- a/src/DPD-MESO/pair_edpd.cpp +++ b/src/DPD-MESO/pair_edpd.cpp @@ -70,6 +70,7 @@ PairEDPD::PairEDPD(LAMMPS *lmp) : writedata = 1; random = nullptr; randomT = nullptr; + power_flag = kappa_flag = 0; } /* ---------------------------------------------------------------------- */ @@ -454,6 +455,11 @@ void PairEDPD::read_restart(FILE *fp) allocate(); + // the optional sc and kc arrays are only created by coeff() + + if (power_flag && !sc) memory->create(sc,atom->ntypes+1,atom->ntypes+1,4,"pair:sc"); + if (kappa_flag && !kc) memory->create(kc,atom->ntypes+1,atom->ntypes+1,4,"pair:kc"); + int me = comm->me; for (int i = 1; i <= atom->ntypes; i++) for (int j = i; j <= atom->ntypes; j++) { @@ -503,6 +509,8 @@ void PairEDPD::write_restart_settings(FILE *fp) fwrite(&cut_global,sizeof(double),1,fp); fwrite(&seed,sizeof(int),1,fp); fwrite(&mix_flag,sizeof(int),1,fp); + fwrite(&power_flag,sizeof(int),1,fp); + fwrite(&kappa_flag,sizeof(int),1,fp); } /* ---------------------------------------------------------------------- @@ -515,10 +523,14 @@ void PairEDPD::read_restart_settings(FILE *fp) utils::sfread(FLERR,&cut_global,sizeof(double),1,fp,nullptr,error); utils::sfread(FLERR,&seed,sizeof(int),1,fp,nullptr,error); utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR,&power_flag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR,&kappa_flag,sizeof(int),1,fp,nullptr,error); } MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); MPI_Bcast(&seed,1,MPI_INT,0,world); MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + MPI_Bcast(&power_flag,1,MPI_INT,0,world); + MPI_Bcast(&kappa_flag,1,MPI_INT,0,world); // initialize Marsaglia RNG with processor-unique seed // same seed that pair_style command initially specified @@ -529,6 +541,42 @@ void PairEDPD::read_restart_settings(FILE *fp) randomT = new RanMars(lmp,seed + comm->me); } +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairEDPD::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) { + fprintf(fp,"%d %g %g %g %g %g %g %g",i,a0[i][i],gamma[i][i],power[i][i], + cut[i][i],kappa[i][i],powerT[i][i],cutT[i][i]); + if (power_flag) + fprintf(fp," power %g %g %g %g",sc[i][i][0],sc[i][i][1],sc[i][i][2],sc[i][i][3]); + if (kappa_flag) + fprintf(fp," kappa %g %g %g %g",kc[i][i][0],kc[i][i][1],kc[i][i][2],kc[i][i][3]); + fputs("\n",fp); + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairEDPD::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + fprintf(fp,"%d %d %g %g %g %g %g %g %g",i,j,a0[i][j],gamma[i][j],power[i][j], + cut[i][j],kappa[i][j],powerT[i][j],cutT[i][j]); + if (power_flag) + fprintf(fp," power %g %g %g %g",sc[i][j][0],sc[i][j][1],sc[i][j][2],sc[i][j][3]); + if (kappa_flag) + fprintf(fp," kappa %g %g %g %g",kc[i][j][0],kc[i][j][1],kc[i][j][2],kc[i][j][3]); + fputs("\n",fp); + } + } +} + /* ---------------------------------------------------------------------- */ double PairEDPD::single(int i, int j, int itype, int jtype, double rsq, diff --git a/src/DPD-MESO/pair_edpd.h b/src/DPD-MESO/pair_edpd.h index d9cc10c48a6..10122ec8212 100644 --- a/src/DPD-MESO/pair_edpd.h +++ b/src/DPD-MESO/pair_edpd.h @@ -37,6 +37,8 @@ class PairEDPD : public Pair { void read_restart(FILE *) override; void write_restart_settings(FILE *) override; void read_restart_settings(FILE *) override; + void write_data(FILE *) override; + void write_data_all(FILE *) override; double single(int, int, int, int, double, double, double, double &) override; protected: diff --git a/src/DPD-MESO/pair_mdpd.cpp b/src/DPD-MESO/pair_mdpd.cpp index 7cbb1f00a68..95e305c9d2c 100644 --- a/src/DPD-MESO/pair_mdpd.cpp +++ b/src/DPD-MESO/pair_mdpd.cpp @@ -417,7 +417,7 @@ void PairMDPD::read_restart_settings(FILE *fp) void PairMDPD::write_data(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) - fprintf(fp,"%d %g %g %g\n",i,A_att[i][i],B_rep[i][i],gamma[i][i]); + fprintf(fp,"%d %g %g %g %g %g\n",i,A_att[i][i],B_rep[i][i],gamma[i][i],cut[i][i],cut_r[i][i]); } /* ---------------------------------------------------------------------- diff --git a/src/DPD-MESO/pair_tdpd.cpp b/src/DPD-MESO/pair_tdpd.cpp index 236d0f9fc99..ac8b9903873 100644 --- a/src/DPD-MESO/pair_tdpd.cpp +++ b/src/DPD-MESO/pair_tdpd.cpp @@ -467,6 +467,36 @@ void PairTDPD::read_restart_settings(FILE *fp) random = new RanMars(lmp,seed + comm->me); } +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairTDPD::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) { + fprintf(fp,"%d %g %g %g %g %g",i,a0[i][i],gamma[i][i],power[i][i],cut[i][i],cutcc[i][i]); + for (int k = 0; k < cc_species; k++) + fprintf(fp," %g %g %g",kappa[i][i][k],epsilon[i][i][k],powercc[i][i][k]); + fputs("\n",fp); + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairTDPD::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + fprintf(fp,"%d %d %g %g %g %g %g",i,j,a0[i][j],gamma[i][j],power[i][j],cut[i][j],cutcc[i][j]); + for (int k = 0; k < cc_species; k++) + fprintf(fp," %g %g %g",kappa[i][j][k],epsilon[i][j][k],powercc[i][j][k]); + fputs("\n",fp); + } + } +} + /* ---------------------------------------------------------------------- */ double PairTDPD::single(int /*i*/, int /*j*/, int itype, int jtype, double rsq, diff --git a/src/DPD-MESO/pair_tdpd.h b/src/DPD-MESO/pair_tdpd.h index a1c35c52f57..0194fca3842 100644 --- a/src/DPD-MESO/pair_tdpd.h +++ b/src/DPD-MESO/pair_tdpd.h @@ -37,6 +37,8 @@ class PairTDPD : public Pair { void read_restart(FILE *) override; void write_restart_settings(FILE *) override; void read_restart_settings(FILE *) override; + void write_data(FILE *) override; + void write_data_all(FILE *) override; double single(int, int, int, int, double, double, double, double &) override; protected: diff --git a/src/DPD-SMOOTH/pair_sdpd_taitwater_isothermal.cpp b/src/DPD-SMOOTH/pair_sdpd_taitwater_isothermal.cpp index e686c075433..a7feabf7ce3 100644 --- a/src/DPD-SMOOTH/pair_sdpd_taitwater_isothermal.cpp +++ b/src/DPD-SMOOTH/pair_sdpd_taitwater_isothermal.cpp @@ -254,7 +254,10 @@ void PairSDPDTaitwaterIsothermal::settings (int narg, char **arg) { if (viscosity <= 0) error->all (FLERR, "Viscosity must be positive"); // seed is immune to underflow/overflow because it is unsigned - seed = comm->nprocs + comm->me + atom->nlocal; + // must not depend on atom->nlocal: that would make the random stream + // depend on whether the pair style is defined before or after the + // atoms are created; comm->me already decorrelates the ranks + seed = comm->nprocs + comm->me; if (narg == 3) seed += utils::inumeric(FLERR, arg[2], false, lmp); #ifdef USE_ZEST generator.seed (seed); diff --git a/src/VTK/dump_vtk.cpp b/src/EXTRA-DUMP/dump_vtk.cpp similarity index 75% rename from src/VTK/dump_vtk.cpp rename to src/EXTRA-DUMP/dump_vtk.cpp index a5f4c46bd17..552fd89fbcb 100644 --- a/src/VTK/dump_vtk.cpp +++ b/src/EXTRA-DUMP/dump_vtk.cpp @@ -37,44 +37,24 @@ #include "input.h" #include "memory.h" #include "modify.h" +#include "platform.h" #include "region.h" +#include "safe_pointers.h" #include "update.h" #include "variable.h" -#include #include #include #include +#include #include -#include - -#ifndef VTK_MAJOR_VERSION -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - using namespace LAMMPS_NS; // customize by // * adding an enum constant (add vector components in consecutive order) // * adding a pack_*(int) function for the value -// * adjusting parse_fields function to add the pack_* function to pack_choice +// * adjusting parse_vtk_fields function to add the pack_* function to pack_choice // (in case of vectors, adjust identify_vectors as well) // * adjusting thresh part in modify_param and count functions @@ -92,34 +72,38 @@ enum{X,Y,Z, // required for vtk, must come first enum{LT,LE,GT,GE,EQ,NEQ,XOR}; enum{VTK,VTP,VTU,PVTP,PVTU}; // file formats -static constexpr int ONEFIELD = 32; -static constexpr int DELTA = 1048576; +// replace the '%' character in a file name with the given text -#if (VTK_MAJOR_VERSION < 5) || (VTK_MAJOR_VERSION > 9) -#error This code has only been tested with VTK 5, 6, 7, 8, and 9 -#elif VTK_MAJOR_VERSION > 6 -#define InsertNextTupleValue InsertNextTypedTuple -#endif +static std::string percent_subst(const std::string &name, const std::string &subst) +{ + auto pos = name.find('%'); + if (pos == std::string::npos) return name; + return name.substr(0,pos) + subst + name.substr(pos+1); +} -/* ---------------------------------------------------------------------- */ +// insert text in front of the file name extension -DumpVTK::DumpVTK(LAMMPS *lmp, int narg, char **arg) : - DumpCustom(lmp, narg, arg) +static std::string insert_before_extension(const std::string &name, const std::string &text) { - if (narg < 6) utils::missing_cmd_args(FLERR,"dump vtk", error); + auto pos = name.find_last_of('.'); + if (pos == std::string::npos) return name + text; + return name.substr(0,pos) + text + name.substr(pos); +} - pack_choice.clear(); - vtype.clear(); - name.clear(); +/* ---------------------------------------------------------------------- */ - myarrays.clear(); - n_calls_ = 0; +DumpVTK::DumpVTK(LAMMPS *lmp, int narg, char **arg) : + DumpCustom(lmp, narg, arg), label(nullptr), write_choice(nullptr), n_calls_(0), + precision_warned(0), writeprec(VTKWriter::SINGLE), filecurrent(nullptr), + domainfilecurrent(nullptr), parallelfilecurrent(nullptr), multiname_ex(nullptr) +{ + if (narg < 6) utils::missing_cmd_args(FLERR, "dump vtk", error); // process attributes // ioptional = start of additional optional args // only dump image and dump movie styles process optional args - ioptional = parse_fields(nargnew,earg); + ioptional = parse_vtk_fields(nargnew,earg); if (ioptional < nargnew) error->all(FLERR,"Invalid attribute {} in dump vtk command", earg[ioptional]); @@ -128,21 +112,6 @@ DumpVTK::DumpVTK(LAMMPS *lmp, int narg, char **arg) : if (filewriter) reset_vtk_data_containers(); - - label = nullptr; - - { - // parallel vtp/vtu requires proc number to be preceded by underscore '_' - multiname_ex = nullptr; - char *ptr = strchr(filename,'%'); - if (ptr) { - multiname_ex = new char[strlen(filename) + 16]; - *ptr = '\0'; - sprintf(multiname_ex,"%s_%d%s",filename,me,ptr+1); - *ptr = '%'; - } - } - vtk_file_format = VTK; char *suffix = filename + strlen(filename) - strlen(".vtp"); @@ -155,29 +124,45 @@ DumpVTK::DumpVTK(LAMMPS *lmp, int narg, char **arg) : } if (vtk_file_format == VTK) { // no multiproc support for legacy vtk format + + // the legacy format collects the entire snapshot in a single file. the + // '%' character is replaced by 0, as for any other single file writer in + // LAMMPS, and only proc 0 writes that file + + if (multiproc) { + MPI_Comm_free(&clustercomm); + + char *ptr = strchr(filename,'%'); + *ptr = '\0'; + char *singlename = utils::strdup(fmt::format("{}0{}", filename, ptr+1)); + delete[] filename; + filename = singlename; + + if (me == 0) + error->warning(FLERR,"Cannot write one file per processor with the legacy VTK file " + "format: writing all data to file {} instead", filename); + } + if (me != 0) filewriter = 0; fileproc = 0; multiproc = 0; nclusterprocs = nprocs; } - filecurrent = nullptr; - domainfilecurrent = nullptr; - parallelfilecurrent = nullptr; - header_choice = nullptr; - write_choice = nullptr; - boxcorners = nullptr; + // parallel vtp/vtu requires the proc number to be preceded by underscore '_' + + if (multiproc) multiname_ex = utils::strdup(percent_subst(filename, fmt::format("_{}", me))); } /* ---------------------------------------------------------------------- */ DumpVTK::~DumpVTK() { - delete [] filecurrent; - delete [] domainfilecurrent; - delete [] parallelfilecurrent; - delete [] multiname_ex; - delete [] label; + delete[] filecurrent; + delete[] domainfilecurrent; + delete[] parallelfilecurrent; + delete[] multiname_ex; + delete[] label; } /* ---------------------------------------------------------------------- */ @@ -200,8 +185,6 @@ void DumpVTK::init_style() // setup function ptrs - header_choice = &DumpVTK::header_vtk; - if (vtk_file_format == VTP || vtk_file_format == PVTP) write_choice = &DumpVTK::write_vtp; else if (vtk_file_format == VTU || vtk_file_format == PVTU) @@ -263,12 +246,6 @@ void DumpVTK::write_header(bigint) /* ---------------------------------------------------------------------- */ -void DumpVTK::header_vtk(bigint) -{ -} - -/* ---------------------------------------------------------------------- */ - int DumpVTK::count() { n_calls_ = 0; @@ -331,7 +308,7 @@ int DumpVTK::count() // un-choose if not in region if (idregion) { - auto region = domain->get_region_by_id(idregion); + auto *region = domain->get_region_by_id(idregion); if (region) { region->prematch(); double **x = atom->x; @@ -885,7 +862,6 @@ void DumpVTK::write() boxzhi = domain->boxhi[2]; } else { domain->box_corners(); - boxcorners = domain->corners; } // nme = # of dump lines this proc contributes to dump @@ -902,16 +878,6 @@ void DumpVTK::write() if (multiproc != nprocs) MPI_Allreduce(&nme,&nmax,1,MPI_INT,MPI_MAX,world); else nmax = nme; - // write timestep header - // for multiproc, - // nheader = # of lines in this file via Allreduce on clustercomm - - bigint nheader = ntotal; - if (multiproc) - MPI_Allreduce(&bnme,&nheader,1,MPI_LMP_BIGINT,MPI_SUM,clustercomm); - - if (filewriter) write_header(nheader); - // ensure buf is sized for packing and communicating // use nmax to ensure filewriter proc can receive info from others // limit nmax*size_one to int since used as arg in MPI calls @@ -944,7 +910,8 @@ void DumpVTK::write() // ping each proc in my cluster, receive its data, write data to file // else wait for ping from fileproc, send my data to fileproc - int tmp,nlines; + int tmp = 0; + int nlines; MPI_Status status; MPI_Request request; @@ -974,7 +941,7 @@ void DumpVTK::pack(tagint *ids) { int n = 0; for (auto &choice : pack_choice) { - current_pack_choice_key = choice.first; // work-around for pack_compute, pack_fix, pack_variable + current_pack_choice_key = choice.first; // work-around for pack_vtk_compute, pack_vtk_fix, pack_vtk_variable (this->*(choice.second))(n); ++n; } @@ -996,97 +963,41 @@ void DumpVTK::write_data(int n, double *mybuf) /* ---------------------------------------------------------------------- */ void DumpVTK::setFileCurrent() { - delete[] filecurrent; - filecurrent = nullptr; - char *filestar = filename; - if (multiproc) { - if (multiproc > 1) { // if dump_modify fileper or nfile was used - delete[] multiname_ex; - multiname_ex = nullptr; - char *ptr = strchr(filename,'%'); - if (ptr) { - int id; - if (me + nclusterprocs == nprocs) // last filewriter - id = multiproc -1; - else - id = me/nclusterprocs; - multiname_ex = new char[strlen(filename) + 16]; - *ptr = '\0'; - sprintf(multiname_ex,"%s_%d%s",filename,id,ptr+1); - *ptr = '%'; - } - } // else multiname_ex built in constructor is OK - filestar = multiname_ex; - } + // per processor piece file. "%" was replaced with "_" in the + // constructor; dump_modify fileper or nfile group procs into fewer files, + // so their file id has to be recomputed for every snapshot - if (multifile == 0) { - filecurrent = utils::strdup(filestar); - } else { - filecurrent = utils::strdup(utils::star_subst(filestar, update->ntimestep, padflag)); + if (multiproc > 1) { + delete[] multiname_ex; + int id; + if (me + nclusterprocs == nprocs) // last filewriter + id = multiproc - 1; + else + id = me/nclusterprocs; + multiname_ex = utils::strdup(percent_subst(filename, fmt::format("_{}", id))); } - // filename of domain box data file + std::string current = multiproc ? multiname_ex : filename; + if (multifile) current = utils::star_subst(current, update->ntimestep, padflag); + delete[] filecurrent; + filecurrent = utils::strdup(current); + + // domain box data file: common for all procs, so without the "_" part + + std::string domaincurrent = insert_before_extension(percent_subst(filename, ""), "_boundingBox"); + if (multifile) domaincurrent = utils::star_subst(domaincurrent, update->ntimestep, padflag); delete[] domainfilecurrent; - domainfilecurrent = nullptr; - if (multiproc) { - // remove '%' character - char *ptr = strchr(filename,'%'); - domainfilecurrent = new char[strlen(filename)]; - *ptr = '\0'; - sprintf(domainfilecurrent,"%s%s",filename,ptr+1); - *ptr = '%'; - // insert "_boundingBox" string - ptr = strrchr(domainfilecurrent,'.'); - filestar = new char[strlen(domainfilecurrent)+16]; - *ptr = '\0'; - sprintf(filestar,"%s_boundingBox.%s",domainfilecurrent,ptr+1); - delete [] domainfilecurrent; - domainfilecurrent = nullptr; - - if (multifile == 0) { - domainfilecurrent = new char[strlen(filestar) + 1]; - strcpy(domainfilecurrent, filestar); - } else { - domainfilecurrent = utils::strdup(utils::star_subst(filestar, update->ntimestep, padflag)); - } - delete[] filestar; - filestar = nullptr; - } else { - domainfilecurrent = new char[strlen(filecurrent) + 16]; - char *ptr = strrchr(filecurrent,'.'); - *ptr = '\0'; - sprintf(domainfilecurrent,"%s_boundingBox.%s",filecurrent,ptr+1); - *ptr = '.'; - } + domainfilecurrent = utils::strdup(domaincurrent); + + // parallel summary file: "%" removed and 'p' added to the file extension - // filename of parallel file if (multiproc && me == 0) { + std::string parallelcurrent = percent_subst(filename, ""); + parallelcurrent.insert(parallelcurrent.find_last_of('.') + 1, "p"); + if (multifile) parallelcurrent = utils::star_subst(parallelcurrent, update->ntimestep, padflag); delete[] parallelfilecurrent; - parallelfilecurrent = nullptr; - - // remove '%' character and add 'p' to file extension - // -> string length stays the same - char *ptr = strchr(filename,'%'); - filestar = new char[strlen(filename) + 1]; - *ptr = '\0'; - sprintf(filestar,"%s%s",filename,ptr+1); - *ptr = '%'; - ptr = strrchr(filestar,'.'); - ptr++; - *ptr++='p'; - *ptr++='v'; - *ptr++='t'; - *ptr++= (vtk_file_format == PVTP)?'p':'u'; - *ptr++= 0; - - if (multifile == 0) { - parallelfilecurrent = utils::strdup(filestar); - } else { - parallelfilecurrent = utils::strdup(utils::star_subst(filestar, update->ntimestep, padflag)); - } - delete[] filestar; - filestar = nullptr; + parallelfilecurrent = utils::strdup(parallelcurrent); } } @@ -1094,199 +1005,113 @@ void DumpVTK::setFileCurrent() { void DumpVTK::buf2arrays(int n, double *mybuf) { + points.reserve(points.size() + (std::size_t) 3*n); + for (auto &array : myarrays) { + if (array.type == Dump::STRING) array.strings.reserve(array.strings.size() + n); + else array.values.reserve(array.values.size() + (std::size_t) n*array.ncomp); + } + for (int iatom=0; iatom < n; ++iatom) { - vtkIdType pid[1]; - pid[0] = points->InsertNextPoint(mybuf[iatom*size_one],mybuf[iatom*size_one+1],mybuf[iatom*size_one+2]); + const double *atom = &mybuf[iatom*size_one]; + + points.push_back(atom[0]); + points.push_back(atom[1]); + points.push_back(atom[2]); int j=3; // 0,1,2 = x,y,z handled just above - for (auto &it : myarrays) { - vtkAbstractArray *paa = it.second; - if (it.second->GetNumberOfComponents() == 3) { - switch (vtype[it.first]) { - case Dump::INT: - { - int iv3[3] = { static_cast(mybuf[iatom*size_one+j ]), - static_cast(mybuf[iatom*size_one+j+1]), - static_cast(mybuf[iatom*size_one+j+2]) }; - vtkIntArray *pia = static_cast(paa); - pia->InsertNextTupleValue(iv3); - break; - } - case Dump::DOUBLE: - { - vtkDoubleArray *pda = static_cast(paa); - pda->InsertNextTupleValue(&mybuf[iatom*size_one+j]); - break; - } - } - j+=3; - } else { - switch (vtype[it.first]) { - case Dump::INT: - { - vtkIntArray *pia = static_cast(paa); - pia->InsertNextValue(mybuf[iatom*size_one+j]); - break; - } - case Dump::DOUBLE: - { - vtkDoubleArray *pda = static_cast(paa); - pda->InsertNextValue(mybuf[iatom*size_one+j]); - break; - } - case Dump::STRING: - { - vtkStringArray *psa = static_cast(paa); - psa->InsertNextValue(typenames[static_cast(mybuf[iatom*size_one+j])]); - break; - } - } + for (auto &array : myarrays) { + if (array.type == Dump::STRING) { + array.strings.emplace_back(typenames[static_cast(atom[j])]); ++j; + } else { + for (int k = 0; k < array.ncomp; ++k) array.values.push_back(atom[j+k]); + j += array.ncomp; } } - - pointsCells->InsertNextCell(1,pid); } } /* ---------------------------------------------------------------------- */ -void DumpVTK::prepare_domain_data(vtkRectilinearGrid *rgrid) -{ - vtkSmartPointer xCoords = vtkSmartPointer::New(); - xCoords->InsertNextValue(boxxlo); - xCoords->InsertNextValue(boxxhi); - vtkSmartPointer yCoords = vtkSmartPointer::New(); - yCoords->InsertNextValue(boxylo); - yCoords->InsertNextValue(boxyhi); - vtkSmartPointer zCoords = vtkSmartPointer::New(); - zCoords->InsertNextValue(boxzlo); - zCoords->InsertNextValue(boxzhi); - - rgrid->SetDimensions(2,2,2); - rgrid->SetXCoordinates(xCoords); - rgrid->SetYCoordinates(yCoords); - rgrid->SetZCoordinates(zCoords); -} - -/* ---------------------------------------------------------------------- */ - -void DumpVTK::prepare_domain_data_triclinic(vtkUnstructuredGrid *hexahedronGrid) -{ - vtkSmartPointer hexahedronPoints = vtkSmartPointer::New(); - hexahedronPoints->SetNumberOfPoints(8); - hexahedronPoints->InsertPoint(0, boxcorners[0][0], boxcorners[0][1], boxcorners[0][2]); - hexahedronPoints->InsertPoint(1, boxcorners[1][0], boxcorners[1][1], boxcorners[1][2]); - hexahedronPoints->InsertPoint(2, boxcorners[3][0], boxcorners[3][1], boxcorners[3][2]); - hexahedronPoints->InsertPoint(3, boxcorners[2][0], boxcorners[2][1], boxcorners[2][2]); - hexahedronPoints->InsertPoint(4, boxcorners[4][0], boxcorners[4][1], boxcorners[4][2]); - hexahedronPoints->InsertPoint(5, boxcorners[5][0], boxcorners[5][1], boxcorners[5][2]); - hexahedronPoints->InsertPoint(6, boxcorners[7][0], boxcorners[7][1], boxcorners[7][2]); - hexahedronPoints->InsertPoint(7, boxcorners[6][0], boxcorners[6][1], boxcorners[6][2]); - vtkSmartPointer hexahedron = vtkSmartPointer::New(); - hexahedron->GetPointIds()->SetId(0, 0); - hexahedron->GetPointIds()->SetId(1, 1); - hexahedron->GetPointIds()->SetId(2, 2); - hexahedron->GetPointIds()->SetId(3, 3); - hexahedron->GetPointIds()->SetId(4, 4); - hexahedron->GetPointIds()->SetId(5, 5); - hexahedron->GetPointIds()->SetId(6, 6); - hexahedron->GetPointIds()->SetId(7, 7); - - hexahedronGrid->Allocate(1, 1); - hexahedronGrid->InsertNextCell(hexahedron->GetCellType(), - hexahedron->GetPointIds()); - hexahedronGrid->SetPoints(hexahedronPoints); -} - -/* ---------------------------------------------------------------------- */ - -void DumpVTK::write_domain_vtk() -{ - vtkSmartPointer rgrid = vtkSmartPointer::New(); - prepare_domain_data(rgrid.GetPointer()); - - vtkSmartPointer gwriter = vtkSmartPointer::New(); - - if (label) gwriter->SetHeader(label); - else gwriter->SetHeader("Generated by LAMMPS"); - - if (binary) gwriter->SetFileTypeToBinary(); - else gwriter->SetFileTypeToASCII(); - -#if VTK_MAJOR_VERSION < 6 - gwriter->SetInput(rgrid); -#else - gwriter->SetInputData(rgrid); -#endif - gwriter->SetFileName(domainfilecurrent); - gwriter->Write(); -} - -/* ---------------------------------------------------------------------- */ - -void DumpVTK::write_domain_vtk_triclinic() +void DumpVTK::write_domain(VTKWriter::Flavor flavor) { - vtkSmartPointer hexahedronGrid = vtkSmartPointer::New(); - prepare_domain_data_triclinic(hexahedronGrid.GetPointer()); - - vtkSmartPointer gwriter = vtkSmartPointer::New(); + try { + VTKWriter writer(flavor, binary != 0, writeprec); + writer.set_title(label ? label : "Generated by LAMMPS"); - if (label) gwriter->SetHeader(label); - else gwriter->SetHeader("Generated by LAMMPS"); + if (domain->triclinic == 0) { + writer.set_rectilinear_grid({boxxlo, boxxhi}, {boxylo, boxyhi}, {boxzlo, boxzhi}); + } else { - if (binary) gwriter->SetFileTypeToBinary(); - else gwriter->SetFileTypeToASCII(); + // the corners of a LAMMPS box (from Domain::box_corners() called in + // write()) and the corners of a VTK hexahedron cell run in a different + // order around the bottom and top faces -#if VTK_MAJOR_VERSION < 6 - gwriter->SetInput(hexahedronGrid); -#else - gwriter->SetInputData(hexahedronGrid); -#endif - gwriter->SetFileName(domainfilecurrent); - gwriter->Write(); + static const int corner_map[8] = {0, 1, 3, 2, 4, 5, 7, 6}; + double corners[8][3]; + for (int i = 0; i < 8; ++i) + for (int j = 0; j < 3; ++j) corners[i][j] = domain->corners[corner_map[i]][j]; + writer.set_hexahedron(corners); + } + writer.write(domainfilecurrent); + } catch (VTKWriterException &e) { + error->one(FLERR,"Cannot write dump vtk box file {}: {}", domainfilecurrent, e.what()); + } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + write the atom data of the current snapshot +------------------------------------------------------------------------- */ -void DumpVTK::write_domain_vtr() +void DumpVTK::write_points(VTKWriter::Flavor flavor, bool unstructured) { - vtkSmartPointer rgrid = vtkSmartPointer::New(); - prepare_domain_data(rgrid.GetPointer()); - - vtkSmartPointer gwriter = vtkSmartPointer::New(); - - if (binary) gwriter->SetDataModeToBinary(); - else gwriter->SetDataModeToAscii(); - -#if VTK_MAJOR_VERSION < 6 - gwriter->SetInput(rgrid); -#else - gwriter->SetInputData(rgrid); -#endif - gwriter->SetFileName(domainfilecurrent); - gwriter->Write(); + try { + VTKWriter writer(flavor, binary != 0, writeprec); + writer.set_title(label ? label : "Generated by LAMMPS"); + + // the collected data is donated to the writer, since it is rebuilt for + // every snapshot anyway. only the array names and types remain valid, + // which is all that write_pvtk() needs afterwards. + + if (unstructured) writer.set_unstructured_grid(std::move(points)); + else writer.set_polydata(std::move(points)); + + for (auto &array : myarrays) { + if (array.type == Dump::STRING) { + writer.add_point_array(array.name, std::move(array.strings)); + } else if (array.type == Dump::INT) { + writer.add_point_array(array.name, array.ncomp, + std::vector(array.values.begin(), array.values.end())); + } else { + writer.add_point_array(array.name, array.ncomp, std::move(array.values)); + } + } + writer.write(filecurrent); + check_coordinate_precision(writer.max_single_precision_value()); + } catch (VTKWriterException &e) { + error->one(FLERR,"Cannot write dump vtk file {}: {}", filecurrent, e.what()); + } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + atom coordinates are stored in single precision by default, which is + what visualization programs expect. warn once when the system has + grown so large that this no longer resolves the coordinates well + enough. with dump_modify double yes nothing is tracked, so the + warning is skipped automatically. +------------------------------------------------------------------------- */ -void DumpVTK::write_domain_vtu_triclinic() +void DumpVTK::check_coordinate_precision(double maxcoord) { - vtkSmartPointer hexahedronGrid = vtkSmartPointer::New(); - prepare_domain_data_triclinic(hexahedronGrid.GetPointer()); - - vtkSmartPointer gwriter = vtkSmartPointer::New(); - - if (binary) gwriter->SetDataModeToBinary(); - else gwriter->SetDataModeToAscii(); - -#if VTK_MAJOR_VERSION < 6 - gwriter->SetInput(hexahedronGrid); -#else - gwriter->SetInputData(hexahedronGrid); -#endif - gwriter->SetFileName(domainfilecurrent); - gwriter->Write(); + if (precision_warned || (me != 0)) return; + const double resolution = VTKWriter::single_precision_resolution(maxcoord, force->angstrom); + if (resolution == 0.0) return; + + precision_warned = 1; + error->warning(FLERR,"Dump vtk writes atom coordinates in single precision, which resolves " + "the largest coordinate of this system, {:.4g}, to only about {:.2g} length " + "units. Use dump_modify double yes if your analysis needs more resolution " + "than that.", maxcoord, resolution); } /* ---------------------------------------------------------------------- */ @@ -1302,56 +1127,8 @@ void DumpVTK::write_vtk(int n, double *mybuf) setFileCurrent(); - { -#ifdef UNSTRUCTURED_GRID_VTK - vtkSmartPointer unstructuredGrid = vtkSmartPointer::New(); - unstructuredGrid->SetPoints(points); - unstructuredGrid->SetCells(VTK_VERTEX, pointsCells); - - for (const auto & it : myarrays) { - unstructuredGrid->GetPointData()->AddArray(it.second); - } - - vtkSmartPointer writer = vtkSmartPointer::New(); -#else - vtkSmartPointer polyData = vtkSmartPointer::New(); - polyData->SetPoints(points); - polyData->SetVerts(pointsCells); - - for (auto &it : myarrays) { - polyData->GetPointData()->AddArray(it.second); - } - - vtkSmartPointer writer = vtkSmartPointer::New(); -#endif - - if (label) writer->SetHeader(label); - else writer->SetHeader("Generated by LAMMPS"); - - if (binary) writer->SetFileTypeToBinary(); - else writer->SetFileTypeToASCII(); - -#ifdef UNSTRUCTURED_GRID_VTK - #if VTK_MAJOR_VERSION < 6 - writer->SetInput(unstructuredGrid); - #else - writer->SetInputData(unstructuredGrid); - #endif -#else - #if VTK_MAJOR_VERSION < 6 - writer->SetInput(polyData); - #else - writer->SetInputData(polyData); - #endif -#endif - writer->SetFileName(filecurrent); - writer->Write(); - - if (domain->triclinic == 0) - write_domain_vtk(); - else - write_domain_vtk_triclinic(); - } + write_points(VTKWriter::LEGACY, false); + write_domain(VTKWriter::LEGACY); reset_vtk_data_containers(); } @@ -1360,58 +1137,19 @@ void DumpVTK::write_vtk(int n, double *mybuf) void DumpVTK::write_vtp(int n, double *mybuf) { - ++n_calls_; - - buf2arrays(n, mybuf); - - if (n_calls_ < nclusterprocs) - return; // multiple processors but not all are filewriters (-> nclusterprocs procs contribute to the filewriter's output data) - - setFileCurrent(); - - { - vtkSmartPointer polyData = vtkSmartPointer::New(); - - polyData->SetPoints(points); - polyData->SetVerts(pointsCells); - - for (auto &it : myarrays) { - polyData->GetPointData()->AddArray(it.second); - } + write_xml_snapshot(n, mybuf, false); +} - vtkSmartPointer writer = vtkSmartPointer::New(); - if (binary) writer->SetDataModeToBinary(); - else writer->SetDataModeToAscii(); - -#if VTK_MAJOR_VERSION < 6 - writer->SetInput(polyData); -#else - writer->SetInputData(polyData); -#endif - writer->SetFileName(filecurrent); - writer->Write(); - - if (me == 0) { - // write the parallel summary file ourselves (see write_pvtk()), since the - // VTK parallel writer derives wrong piece file names from multi-dot names - if (multiproc) write_pvtk(PVTP); - - if (domain->triclinic == 0) { - domainfilecurrent[strlen(domainfilecurrent)-1] = 'r'; // adjust filename extension - write_domain_vtr(); - } else { - domainfilecurrent[strlen(domainfilecurrent)-1] = 'u'; // adjust filename extension - write_domain_vtu_triclinic(); - } - } - } +/* ---------------------------------------------------------------------- */ - reset_vtk_data_containers(); +void DumpVTK::write_vtu(int n, double *mybuf) +{ + write_xml_snapshot(n, mybuf, true); } /* ---------------------------------------------------------------------- */ -void DumpVTK::write_vtu(int n, double *mybuf) +void DumpVTK::write_xml_snapshot(int n, double *mybuf, bool unstructured) { ++n_calls_; @@ -1422,40 +1160,17 @@ void DumpVTK::write_vtu(int n, double *mybuf) setFileCurrent(); - { - vtkSmartPointer unstructuredGrid = vtkSmartPointer::New(); + write_points(VTKWriter::XML, unstructured); - unstructuredGrid->SetPoints(points); - unstructuredGrid->SetCells(VTK_VERTEX, pointsCells); + if (me == 0) { + if (multiproc) write_pvtk(); - for (auto &it : myarrays) { - unstructuredGrid->GetPointData()->AddArray(it.second); - } + // adjust the filename extension to the dataset type used for the box: + // rectilinear grid (.vtr) for an orthogonal box, unstructured grid + // (.vtu) for a triclinic one - vtkSmartPointer writer = vtkSmartPointer::New(); - if (binary) writer->SetDataModeToBinary(); - else writer->SetDataModeToAscii(); - -#if VTK_MAJOR_VERSION < 6 - writer->SetInput(unstructuredGrid); -#else - writer->SetInputData(unstructuredGrid); -#endif - writer->SetFileName(filecurrent); - writer->Write(); - - if (me == 0) { - // write the parallel summary file ourselves (see write_pvtk()), since the - // VTK parallel writer derives wrong piece file names from multi-dot names - if (multiproc) write_pvtk(PVTU); - - if (domain->triclinic == 0) { - domainfilecurrent[strlen(domainfilecurrent)-1] = 'r'; // adjust filename extension - write_domain_vtr(); - } else { - write_domain_vtu_triclinic(); - } - } + domainfilecurrent[strlen(domainfilecurrent)-1] = (domain->triclinic == 0) ? 'r' : 'u'; + write_domain(VTKWriter::XML); } reset_vtk_data_containers(); @@ -1472,14 +1187,12 @@ void DumpVTK::write_vtu(int n, double *mybuf) std::string DumpVTK::pvtk_piece_filename(int id) { - char *ptr = strchr(filename,'%'); - std::string fname = std::string(filename, ptr-filename) + "_" + std::to_string(id) + (ptr+1); + std::string fname = percent_subst(filename, fmt::format("_{}", id)); if (multifile) fname = utils::star_subst(fname, update->ntimestep, padflag); - // strip leading directory so the reference is relative to the summary file - auto pos = fname.find_last_of("/\\"); - if (pos != std::string::npos) fname = fname.substr(pos+1); - return fname; + // strip the leading directory so the reference is relative to the summary file + + return platform::path_basename(fname); } /* ---------------------------------------------------------------------- @@ -1493,48 +1206,44 @@ std::string DumpVTK::pvtk_piece_filename(int id) file directly. called on rank 0 only, with multiproc set. ------------------------------------------------------------------------- */ -void DumpVTK::write_pvtk(int fileformat) +void DumpVTK::write_pvtk() { - FILE *fp = fopen(parallelfilecurrent,"w"); + SafeFilePtr fp(fopen(parallelfilecurrent,"w")); if (!fp) error->one(FLERR,"Cannot open dump vtk parallel file {}: {}", parallelfilecurrent, utils::getsyserror()); - const char *gridtype = (fileformat == PVTP) ? "PPolyData" : "PUnstructuredGrid"; - - int one = 1; - const char *byte_order = (*((char *) &one)) ? "LittleEndian" : "BigEndian"; + const char *gridtype = (vtk_file_format == PVTP) ? "PPolyData" : "PUnstructuredGrid"; utils::print(fp, R"()" "\n"); - utils::print(fp, R"()" "\n", gridtype, byte_order); + utils::print(fp, R"()" "\n", gridtype, + VTKWriter::xml_byte_order()); utils::print(fp, R"( <{} GhostLevel="0">)" "\n", gridtype); - // point data array declarations, in the same order/grouping as the piece - // files (mirrors reset_vtk_data_containers(): skip x,y,z, group vectors) + // declare the same arrays that reset_vtk_data_containers() set up for the + // piece files, so that the two can never get out of step. the declared + // types have to match what write_points() makes the writer produce, so + // floating point arrays follow the selected precision + + const char *real_type = VTKWriter::xml_real_type(writeprec); utils::print(fp, R"( )" "\n"); - auto it = vtype.begin(); - ++it; ++it; ++it; // skip the required x,y,z coordinate fields - for (; it != vtype.end(); ++it) { - const char *type = "Float64"; - if (it->second == Dump::INT) type = "Int32"; - else if (it->second == Dump::STRING) type = "String"; - if (vector_set.find(it->first) != vector_set.end()) { + for (const auto &array : myarrays) { + const char *type = real_type; + if (array.type == Dump::INT) type = "Int32"; + else if (array.type == Dump::STRING) type = "String"; + if (array.ncomp == 3) { utils::print(fp, R"( )" "\n", - type, name[it->first]); - ++it; ++it; + type, array.name); } else { - utils::print(fp, R"( )" "\n", type, name[it->first]); + utils::print(fp, R"( )" "\n", type, array.name); } } utils::print(fp, R"( )" "\n"); - // point coordinates: declare the same precision the piece files use - // (vtkPoints defaults to single precision, so do not hardcode Float64) - - const char *ptype = (points->GetDataType() == VTK_DOUBLE) ? "Float64" : "Float32"; utils::print(fp, R"( )" "\n"); - utils::print(fp, R"( )" "\n", ptype); + utils::print(fp, R"( )" "\n", + real_type); utils::print(fp, R"( )" "\n"); // one entry per per-processor piece file @@ -1545,44 +1254,39 @@ void DumpVTK::write_pvtk(int fileformat) utils::print(fp, R"( )" "\n", gridtype); utils::print(fp, R"()" "\n"); - fclose(fp); } /* ---------------------------------------------------------------------- */ void DumpVTK::reset_vtk_data_containers() { - points = vtkSmartPointer::New(); - pointsCells = vtkSmartPointer::New(); + points.clear(); + myarrays.clear(); + + // build the list of data arrays in the order their values appear in buf. + // the first three fields are the x,y,z coordinates, which become the + // points of the dataset, and three consecutive fields of a vector + // attribute become a single array with three components. - std::map::iterator it=vtype.begin(); + auto it=vtype.begin(); ++it; ++it; ++it; - for (; it!=vtype.end(); ++it) { - switch(vtype[it->first]) { - case Dump::INT: - myarrays[it->first] = vtkSmartPointer::New(); - break; - case Dump::DOUBLE: - myarrays[it->first] = vtkSmartPointer::New(); - break; - case Dump::STRING: - myarrays[it->first] = vtkSmartPointer::New(); - break; - } + for (; it != vtype.end(); ++it) { + VTKArray array; + array.name = name[it->first]; + array.type = it->second; + array.ncomp = 1; if (vector_set.find(it->first) != vector_set.end()) { - myarrays[it->first]->SetNumberOfComponents(3); - myarrays[it->first]->SetName(name[it->first].c_str()); + array.ncomp = 3; ++it; ++it; - } else { - myarrays[it->first]->SetName(name[it->first].c_str()); } + myarrays.push_back(std::move(array)); } } /* ---------------------------------------------------------------------- */ -int DumpVTK::parse_fields(int narg, char **arg) +int DumpVTK::parse_vtk_fields(int narg, char **arg) { pack_choice[X] = &DumpVTK::pack_x; @@ -1821,7 +1525,7 @@ int DumpVTK::parse_fields(int narg, char **arg) ArgInfo argi(arg[iarg],ArgInfo::COMPUTE|ArgInfo::FIX|ArgInfo::VARIABLE |ArgInfo::DNAME|ArgInfo::INAME); argindex[ATTRIBUTES+iarg] = argi.get_index1(); - auto aname = argi.get_name(); + const auto *aname = argi.get_name(); switch (argi.get_type()) { @@ -1834,10 +1538,10 @@ int DumpVTK::parse_fields(int narg, char **arg) case ArgInfo::COMPUTE: { - pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_compute; + pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_vtk_compute; vtype[ATTRIBUTES+iarg] = Dump::DOUBLE; - auto icompute = modify->get_compute_by_id(aname); + auto *icompute = modify->get_compute_by_id(aname); if (!icompute) { error->all(FLERR,"Could not find dump vtk compute ID: {}",aname); } else { @@ -1861,10 +1565,10 @@ int DumpVTK::parse_fields(int narg, char **arg) case ArgInfo::FIX: { - pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_fix; + pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_vtk_fix; vtype[ATTRIBUTES+iarg] = Dump::DOUBLE; - auto ifix = modify->get_fix_by_id(aname); + auto *ifix = modify->get_fix_by_id(aname); if (!ifix) { error->all(FLERR,"Could not find dump vtk fix ID: {}",aname); } else { @@ -1887,7 +1591,7 @@ int DumpVTK::parse_fields(int narg, char **arg) // variable value = v_name case ArgInfo::VARIABLE: - pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_variable; + pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_vtk_variable; vtype[ATTRIBUTES+iarg] = Dump::DOUBLE; n = input->variable->find(aname); @@ -1902,7 +1606,7 @@ int DumpVTK::parse_fields(int narg, char **arg) // custom per-atom floating point vector or array = d_ID d2_ID case ArgInfo::DNAME: - pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_custom; + pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_vtk_custom; vtype[ATTRIBUTES+iarg] = Dump::DOUBLE; n = atom->find_custom(aname,flag,cols); @@ -1926,7 +1630,7 @@ int DumpVTK::parse_fields(int narg, char **arg) // custom per-atom integer vector or array = i_ID or i2_ID case ArgInfo::INAME: - pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_custom; + pack_choice[ATTRIBUTES+iarg] = &DumpVTK::pack_vtk_custom; vtype[ATTRIBUTES+iarg] = Dump::INT; n = atom->find_custom(aname,flag,cols); @@ -1983,13 +1687,13 @@ void DumpVTK::identify_vectors() } else { vectorName.erase(erase_start); } - name[vector3_starts[v3s]] = vectorName; + name[vector3_starts[v3s]] = std::move(vectorName); vector_set.insert(vector3_starts[v3s]); } } // compute and fix vectors - for (std::map::iterator it=name.begin(); it!=name.end(); ++it) { + for (auto it=name.begin(); it != name.end(); ++it) { if (it->first < ATTRIBUTES) // neither fix nor compute continue; @@ -2012,103 +1716,6 @@ void DumpVTK::identify_vectors() } } -/* ---------------------------------------------------------------------- - add Compute to list of Compute objects used by dump - return index of where this Compute is in list - if already in list, do not add, just return index, else add to list -------------------------------------------------------------------------- */ - -int DumpVTK::add_compute(const char *id) -{ - int icompute; - for (icompute = 0; icompute < ncompute; icompute++) - if (strcmp(id,id_compute[icompute]) == 0) break; - if (icompute < ncompute) return icompute; - - id_compute = (char **) - memory->srealloc(id_compute,(ncompute+1)*sizeof(char *),"dump:id_compute"); - delete[] compute; - compute = new Compute*[ncompute+1]; - - id_compute[ncompute] = utils::strdup(id); - ncompute++; - return ncompute-1; -} - -/* ---------------------------------------------------------------------- - add Fix to list of Fix objects used by dump - return index of where this Fix is in list - if already in list, do not add, just return index, else add to list -------------------------------------------------------------------------- */ - -int DumpVTK::add_fix(const char *id) -{ - int ifix; - for (ifix = 0; ifix < nfix; ifix++) - if (strcmp(id,id_fix[ifix]) == 0) break; - if (ifix < nfix) return ifix; - - id_fix = (char **) - memory->srealloc(id_fix,(nfix+1)*sizeof(char *),"dump:id_fix"); - delete[] fix; - fix = new Fix*[nfix+1]; - - id_fix[nfix] = utils::strdup(id); - nfix++; - return nfix-1; -} - -/* ---------------------------------------------------------------------- - add Variable to list of Variables used by dump - return index of where this Variable is in list - if already in list, do not add, just return index, else add to list -------------------------------------------------------------------------- */ - -int DumpVTK::add_variable(const char *id) -{ - int ivariable; - for (ivariable = 0; ivariable < nvariable; ivariable++) - if (strcmp(id,id_variable[ivariable]) == 0) break; - if (ivariable < nvariable) return ivariable; - - id_variable = (char **) - memory->srealloc(id_variable,(nvariable+1)*sizeof(char *), - "dump:id_variable"); - delete[] variable; - variable = new int[nvariable+1]; - delete[] vbuf; - vbuf = new double*[nvariable+1]; - for (int i = 0; i <= nvariable; i++) vbuf[i] = nullptr; - - id_variable[nvariable] = utils::strdup(id); - nvariable++; - return nvariable-1; -} - -/* ---------------------------------------------------------------------- - add custom atom property to list used by dump - return index of where this property is in Atom class custom lists - if already in list, do not add, just return index, else add to list -------------------------------------------------------------------------- */ - -int DumpVTK::add_custom(const char *id, int flag) -{ - int icustom; - for (icustom = 0; icustom < ncustom; icustom++) - if (strcmp(id,id_custom[icustom]) == 0) break; - if (icustom < ncustom) return icustom; - - id_custom = (char **) memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); - custom = (int *) memory->srealloc(custom,(ncustom+1)*sizeof(int),"dump:custom"); - custom_flag = (int *) memory->srealloc(custom_flag,(ncustom+1)*sizeof(int),"dump:custom_flag"); - - id_custom[ncustom] = utils::strdup(id); - custom_flag[ncustom] = flag; - ncustom++; - - return ncustom-1; -} - /* ---------------------------------------------------------------------- */ int DumpVTK::modify_param(int narg, char **arg) @@ -2128,18 +1735,24 @@ int DumpVTK::modify_param(int narg, char **arg) } if (strcmp(arg[0],"label") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command [label]"); + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify label", error); delete[] label; label = utils::strdup(arg[1]); return 2; } if (strcmp(arg[0],"binary") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command [binary]"); + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify binary", error); binary = utils::logical(FLERR,arg[1],false,lmp); return 2; } + if (strcmp(arg[0],"double") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify double", error); + writeprec = utils::logical(FLERR,arg[1],false,lmp) ? VTKWriter::DOUBLE : VTKWriter::SINGLE; + return 2; + } + if (strcmp(arg[0],"element") == 0) { if (narg < ntypes+1) error->all(FLERR,"Number of dump_modify element names does not match number of atom types"); @@ -2285,7 +1898,7 @@ int DumpVTK::modify_param(int narg, char **arg) ArgInfo argi(arg[1],ArgInfo::COMPUTE|ArgInfo::FIX|ArgInfo::VARIABLE |ArgInfo::DNAME|ArgInfo::INAME); argindex[ATTRIBUTES+nfield+nthresh] = argi.get_index1(); - auto aname = argi.get_name(); + const auto *aname = argi.get_name(); switch (argi.get_type()) { @@ -2299,11 +1912,11 @@ int DumpVTK::modify_param(int narg, char **arg) case ArgInfo::COMPUTE: { thresh_array[nthresh] = COMPUTE; - auto icompute = modify->get_compute_by_id(aname); + auto *icompute = modify->get_compute_by_id(aname); if (!icompute) { error->all(FLERR,"Could not find dump modify compute ID: {}",aname); } else { - if (modify->compute[n]->peratom_flag == 0) + if (icompute->peratom_flag == 0) error->all(FLERR,"Dump modify compute ID {} does not compute per-atom info",aname); if (argi.get_dim() == 0 && icompute->size_peratom_cols > 0) error->all(FLERR,"Dump modify compute ID {} does not compute per-atom vector",aname); @@ -2324,7 +1937,7 @@ int DumpVTK::modify_param(int narg, char **arg) case ArgInfo::FIX: { thresh_array[nthresh] = FIX; - auto ifix = modify->get_fix_by_id(aname); + auto *ifix = modify->get_fix_by_id(aname); if (!ifix) { error->all(FLERR,"Could not find dump modify fix ID: {}",aname); } else { @@ -2448,25 +2061,11 @@ int DumpVTK::modify_param(int narg, char **arg) return 0; } -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory in buf, choose, variable arrays -------------------------------------------------------------------------- */ - -double DumpVTK::memory_usage() -{ - double bytes = Dump::memory_usage(); - bytes += memory->usage(choose,maxlocal); - bytes += memory->usage(dchoose,maxlocal); - bytes += memory->usage(clist,maxlocal); - bytes += memory->usage(vbuf,nvariable,maxlocal); - return bytes; -} - /* ---------------------------------------------------------------------- extraction of Compute, Fix, Variable results ------------------------------------------------------------------------- */ -void DumpVTK::pack_compute(int n) +void DumpVTK::pack_vtk_compute(int n) { double *vector = compute[field2index[current_pack_choice_key]]->vector_atom; double **array = compute[field2index[current_pack_choice_key]]->array_atom; @@ -2488,7 +2087,7 @@ void DumpVTK::pack_compute(int n) /* ---------------------------------------------------------------------- */ -void DumpVTK::pack_fix(int n) +void DumpVTK::pack_vtk_fix(int n) { double *vector = fix[field2index[current_pack_choice_key]]->vector_atom; double **array = fix[field2index[current_pack_choice_key]]->array_atom; @@ -2510,7 +2109,7 @@ void DumpVTK::pack_fix(int n) /* ---------------------------------------------------------------------- */ -void DumpVTK::pack_variable(int n) +void DumpVTK::pack_vtk_variable(int n) { double *vector = vbuf[field2index[current_pack_choice_key]]; @@ -2522,7 +2121,7 @@ void DumpVTK::pack_variable(int n) /* ---------------------------------------------------------------------- */ -void DumpVTK::pack_custom(int n) +void DumpVTK::pack_vtk_custom(int n) { int flag = custom_flag[field2index[current_pack_choice_key]]; int iwhich = custom[field2index[current_pack_choice_key]]; diff --git a/src/VTK/dump_vtk.h b/src/EXTRA-DUMP/dump_vtk.h similarity index 61% rename from src/VTK/dump_vtk.h rename to src/EXTRA-DUMP/dump_vtk.h index ed80712538e..1a07bf6ea5e 100644 --- a/src/VTK/dump_vtk.h +++ b/src/EXTRA-DUMP/dump_vtk.h @@ -25,16 +25,12 @@ DumpStyle(vtk,DumpVTK); #define LMP_DUMP_VTK_H #include "dump_custom.h" +#include "vtk_writer.h" + #include #include - -#include -#include -#include - -class vtkAbstractArray; -class vtkRectilinearGrid; -class vtkUnstructuredGrid; +#include +#include namespace LAMMPS_NS { @@ -42,16 +38,16 @@ namespace LAMMPS_NS { * @brief DumpVTK class * write atom data to vtk files. * - * Similar to the DumpCustom class but uses the vtk library to write data to vtk simple - * legacy or xml format depending on the filename extension specified. (Since this - * conflicts with the way binary output is specified, dump_modify allows to set the - * binary flag for this dump command explicitly). + * Similar to the DumpCustom class but uses the built-in VTKWriter class to write data + * to vtk simple legacy or xml format depending on the filename extension specified. + * (Since this conflicts with the way binary output is specified, dump_modify allows to + * set the binary flag for this dump command explicitly). * In contrast to DumpCustom class the attributes to be packed are stored in a std::map * to avoid duplicate entries and enforce correct ordering of vector components (except * for computes and fixes - these have to be given in the right order in the input script). * (Note: std::map elements are sorted by their keys.) * This dump command does not support compressed files, buffering or custom format strings, - * multiproc is only supported by the xml formats, multifile option has to be used. + * multiproc is only supported by the xml formats. */ class DumpVTK : public DumpCustom { @@ -77,49 +73,48 @@ class DumpVTK : public DumpCustom { int count() override; void pack(tagint *) override; void write_data(int, double *) override; - double memory_usage() override; - int parse_fields(int, char **); + int parse_vtk_fields(int, char **); void identify_vectors(); - int add_compute(const char *); - int add_fix(const char *); - int add_variable(const char *); - int add_custom(const char *, int); int modify_param(int, char **) override; - typedef void (DumpVTK::*FnPtrHeader)(bigint); - FnPtrHeader header_choice; // ptr to write header functions - void header_vtk(bigint); - - typedef void (DumpVTK::*FnPtrWrite)(int, double *); + using FnPtrWrite = void (DumpVTK::*)(int, double *); FnPtrWrite write_choice; // ptr to write data functions void write_vtk(int, double *); void write_vtp(int, double *); void write_vtu(int, double *); - void write_pvtk(int); // write parallel .pvtp/.pvtu summary file - std::string pvtk_piece_filename(int); // per-proc piece file name as referenced in summary + void write_xml_snapshot(int, double *, bool unstructured); // shared body of vtp/vtu + void write_pvtk(); // write parallel .pvtp/.pvtu summary file + std::string pvtk_piece_filename(int); // per-proc piece file name as referenced in summary - void prepare_domain_data(vtkRectilinearGrid *); - void prepare_domain_data_triclinic(vtkUnstructuredGrid *); - void write_domain_vtk(); - void write_domain_vtk_triclinic(); - void write_domain_vtr(); - void write_domain_vtu_triclinic(); + void write_points(VTKWriter::Flavor, bool unstructured); // write the atom data file + void check_coordinate_precision(double); // warn if single precision is too coarse + void write_domain(VTKWriter::Flavor); // write the box data file - typedef void (DumpVTK::*FnPtrPack)(int); + using FnPtrPack = void (DumpVTK::*)(int); std::map pack_choice; // ptrs to pack functions std::map vtype; // data type std::map name; // attribute labels std::set vector_set; // set of vector attributes int current_pack_choice_key; - // vtk data containers - vtkSmartPointer points; - vtkSmartPointer pointsCells; - std::map> myarrays; + // data collected for the current snapshot. one entry per attribute that + // is not a point coordinate, in the order the values appear in buf. + + struct VTKArray { + std::string name; + int type; // Dump::INT, Dump::DOUBLE or Dump::STRING + int ncomp; // 1 or 3 + std::vector values; // for INT and DOUBLE + std::vector strings; // for STRING + }; + + std::vector points; // coordinates of the dumped atoms + std::vector myarrays; int n_calls_; - double (*boxcorners)[3]; // corners of triclinic domain box + int precision_warned; // 1 after the single precision warning was printed + VTKWriter::Precision writeprec; // precision of floating point output, dump_modify double char *filecurrent; char *domainfilecurrent; char *parallelfilecurrent; @@ -130,10 +125,10 @@ class DumpVTK : public DumpCustom { void reset_vtk_data_containers(); // customize by adding a method prototype - void pack_compute(int); - void pack_fix(int); - void pack_variable(int); - void pack_custom(int); + void pack_vtk_compute(int); + void pack_vtk_fix(int); + void pack_vtk_variable(int); + void pack_vtk_custom(int); }; } // namespace LAMMPS_NS diff --git a/src/GPU/Install.sh b/src/GPU/Install.sh index 73cc5b22591..c9bb8733dc0 100755 --- a/src/GPU/Install.sh +++ b/src/GPU/Install.sh @@ -74,6 +74,8 @@ action pair_eam_alloy_gpu.cpp pair_eam.cpp action pair_eam_alloy_gpu.h pair_eam.cpp action pair_eam_fs_gpu.cpp pair_eam.cpp action pair_eam_fs_gpu.h pair_eam.cpp +action pair_eam_he_gpu.cpp pair_eam_he.cpp +action pair_eam_he_gpu.h pair_eam_he.cpp action pair_eam_gpu.cpp pair_eam.cpp action pair_eam_gpu.h pair_eam.cpp action pair_gauss_gpu.cpp pair_gauss.cpp diff --git a/src/GPU/pair_eam_alloy_gpu.cpp b/src/GPU/pair_eam_alloy_gpu.cpp index b6817df7f06..92730c359fd 100644 --- a/src/GPU/pair_eam_alloy_gpu.cpp +++ b/src/GPU/pair_eam_alloy_gpu.cpp @@ -24,7 +24,8 @@ using namespace LAMMPS_NS; int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double **host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, int nrho, int nz2r, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size); diff --git a/src/GPU/pair_eam_fs_gpu.cpp b/src/GPU/pair_eam_fs_gpu.cpp index 876409257cf..f6a3b57a647 100644 --- a/src/GPU/pair_eam_fs_gpu.cpp +++ b/src/GPU/pair_eam_fs_gpu.cpp @@ -24,7 +24,8 @@ using namespace LAMMPS_NS; int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double **host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, int nrho, int nz2r, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size); diff --git a/src/GPU/pair_eam_gpu.cpp b/src/GPU/pair_eam_gpu.cpp index 37620c9a1e9..dbd179d4d42 100644 --- a/src/GPU/pair_eam_gpu.cpp +++ b/src/GPU/pair_eam_gpu.cpp @@ -35,7 +35,8 @@ using namespace LAMMPS_NS; int eam_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double **host_cutsq, - double rdr, double rdrho, double rhomax, int nrhor, int nrho, int nz2r, int nfrho, + double rdr, double rdrho, double rhomax, double rhomin, const int he_flag, + int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size); @@ -178,9 +179,10 @@ void PairEAMGPU::init_style() int fp_size; int mnf = 5e-2 * neighbor->oneatom; int success = gpu_init_fn(atom->ntypes + 1, cutforcesq, type2rhor, type2z2r, type2frho, - rhor_spline, z2r_spline, frho_spline, cutsq, rdr, rdrho, rhomax, nrhor, - nrho, nz2r, nfrho, nr, atom->nlocal, atom->nlocal + atom->nghost, mnf, - maxspecial, cell_size, gpu_mode, screen, fp_size); + rhor_spline, z2r_spline, frho_spline, cutsq, rdr, rdrho, rhomax, rhomin, + he_flag, nrhor, nrho, nz2r, nfrho, nr, atom->nlocal, + atom->nlocal + atom->nghost, mnf, maxspecial, cell_size, gpu_mode, + screen, fp_size); GPU_EXTRA::check_flag(success, error, world); if (gpu_mode == GPU_FORCE) neighbor->add_request(this, NeighConst::REQ_FULL); diff --git a/src/GPU/pair_eam_gpu.h b/src/GPU/pair_eam_gpu.h index 80ec6ea0d6e..51336d141c0 100644 --- a/src/GPU/pair_eam_gpu.h +++ b/src/GPU/pair_eam_gpu.h @@ -44,9 +44,9 @@ class PairEAMGPU : public PairEAM { // functions in the gpu library (lal_eam*_ext.cpp) typedef int (*EAMGPUInitFn)(const int, double, int **, int **, int *, double ***, double ***, - double ***, double **, double, double, double, int, int, int, int, - int, const int, const int, const int, const int, const double, int &, - FILE *, int &); + double ***, double **, double, double, double, double, const int, + int, int, int, int, int, const int, const int, const int, const int, + const double, int &, FILE *, int &); typedef void (*EAMGPUClearFn)(); typedef int **(*EAMGPUComputeNFn)(const int, const int, const int, double **, int *, double *, double *, tagint *, int **, tagint **, const bool, const bool, diff --git a/src/GPU/pair_eam_he_gpu.cpp b/src/GPU/pair_eam_he_gpu.cpp new file mode 100644 index 00000000000..98a147827d0 --- /dev/null +++ b/src/GPU/pair_eam_he_gpu.cpp @@ -0,0 +1,61 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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: Xiaowng Zhou (Sandia) +------------------------------------------------------------------------- */ + +#include "pair_eam_he_gpu.h" + +using namespace LAMMPS_NS; + +// External functions from cuda library for atom decomposition + +int eam_he_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, + int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, + double ***host_z2r_spline, double ***host_frho_spline, double **host_cutsq, + double rdr, double rdrho, double rhomax, double rhomin, + const int he_flag, int nrhor, int nrho, int nz2r, + int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, + int &fp_size); +void eam_he_gpu_clear(); +int **eam_he_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, + int *host_type, double *sublo, double *subhi, tagint *tag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, + int **jnum, const double cpu_time, bool &success, int &inum, + void **fp_ptr, double *prd, int *periodicity); +void eam_he_gpu_compute(const int ago, const int inum_full, const int nlocal, const int nall, + double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, + const bool eflag, const bool vflag, const bool eatom, const bool vatom, + int &host_start, const double cpu_time, bool &success, void **fp_ptr); +void eam_he_gpu_compute_force(int *ilist, const bool eflag, const bool vflag, const bool eatom, + const bool vatom); +double eam_he_gpu_bytes(); + +/* ---------------------------------------------------------------------- */ + +PairEAMHEGPU::PairEAMHEGPU(LAMMPS *lmp) : PairEAMGPU(lmp) +{ + fileformat = FS; + one_coeff = 1; + he_flag = 1; + + gpu_init_fn = eam_he_gpu_init; + gpu_clear_fn = eam_he_gpu_clear; + gpu_compute_n_fn = eam_he_gpu_compute_n; + gpu_compute_fn = eam_he_gpu_compute; + gpu_compute_force_fn = eam_he_gpu_compute_force; + gpu_bytes_fn = eam_he_gpu_bytes; +} diff --git a/src/GPU/pair_eam_he_gpu.h b/src/GPU/pair_eam_he_gpu.h new file mode 100644 index 00000000000..1ef38ccaab9 --- /dev/null +++ b/src/GPU/pair_eam_he_gpu.h @@ -0,0 +1,35 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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 PAIR_CLASS +// clang-format off +PairStyle(eam/he/gpu,PairEAMHEGPU); +// clang-format on +#else + +#ifndef LMP_PAIR_EAM_HE_GPU_H +#define LMP_PAIR_EAM_HE_GPU_H + +#include "pair_eam_gpu.h" + +namespace LAMMPS_NS { + +class PairEAMHEGPU : public PairEAMGPU { + public: + PairEAMHEGPU(class LAMMPS *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/GRAPHICS/dump_image.cpp b/src/GRAPHICS/dump_image.cpp index 0221c20e0e4..c2c153723da 100644 --- a/src/GRAPHICS/dump_image.cpp +++ b/src/GRAPHICS/dump_image.cpp @@ -622,6 +622,55 @@ DumpImage::DumpImage(LAMMPS *lmp, int narg, char **arg) : image->ssaoint = ssaoint; iarg += 4; + } else if (strcmp(arg[iarg],"depthcue") == 0) { + if (iarg+5 > narg) utils::missing_cmd_args(FLERR,"dump image depthcue", error); + image->depthcue = utils::logical(FLERR,arg[iarg+1],false,lmp); + double cfactor = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (cfactor < 0.0 || cfactor > 1.0) + error->all(FLERR, iarg+2, "Invalid dump image depthcue strength value {}", cfactor); + image->depthcueint = cfactor; + if (strcmp(arg[iarg+3],"auto") == 0) { + image->depthcuecolor = nullptr; + } else { + image->depthcuecolor = image->color2rgb(arg[iarg+3]); + if (image->depthcuecolor == nullptr) + error->all(FLERR, iarg+3, "Invalid dump image depthcue color {}", arg[iarg+3]); + } + if (strcmp(arg[iarg+4],"auto") == 0) { + image->depthcuestartflag = 0; + } else { + image->depthcuestart = utils::numeric(FLERR,arg[iarg+4],false,lmp); + image->depthcuestartflag = 1; + } + iarg += 5; + + } else if (strcmp(arg[iarg],"defocus") == 0) { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"dump image defocus", error); + image->defocus = utils::logical(FLERR,arg[iarg+1],false,lmp); + double bfactor = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (bfactor < 0.0 || bfactor > 1.0) + error->all(FLERR, iarg+2, "Invalid dump image defocus strength value {}", bfactor); + image->defocusint = bfactor; + if (strcmp(arg[iarg+3],"auto") == 0) { + image->defocusstartflag = 0; + } else { + image->defocusstart = utils::numeric(FLERR,arg[iarg+3],false,lmp); + image->defocusstartflag = 1; + } + iarg += 4; + + } else if (strcmp(arg[iarg],"outline") == 0) { + if (iarg+4 > narg) utils::missing_cmd_args(FLERR,"dump image outline", error); + image->outline = utils::logical(FLERR,arg[iarg+1],false,lmp); + int owidth = utils::inumeric(FLERR,arg[iarg+2],false,lmp); + if (owidth < 1 || owidth > 16) + error->all(FLERR, iarg+2, "Invalid dump image outline width {}", owidth); + image->outlinewidth = owidth; + image->outlinecolor = image->color2rgb(arg[iarg+3]); + if (image->outlinecolor == nullptr) + error->all(FLERR, iarg+3, "Invalid dump image outline color {}", arg[iarg+3]); + iarg += 4; + } else error->all(FLERR, iarg, "Unknown dump image keyword {}", arg[iarg]); } @@ -3014,6 +3063,74 @@ int DumpImage::modify_param(int narg, char **arg) return 5; } + if (strcmp(arg[0], "gamma") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify gamma", error); + double gval = utils::numeric(FLERR, arg[1], false, lmp); + if ((gval < 0.1) || (gval > 10.0)) + error->all(FLERR, argoff + 1, "Illegal gamma value {}", gval); + image->gamma = gval; + return 2; + } + + if (strcmp(arg[0], "ssaosamples") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify ssaosamples", error); + int nsamples = utils::inumeric(FLERR, arg[1], false, lmp); + if ((nsamples < 4) || (nsamples > 64)) + error->all(FLERR, argoff + 1, "Illegal ssaosamples value {}", nsamples); + image->ssaosamples = nsamples; + return 2; + } + + if (strcmp(arg[0], "specular") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify specular", error); + if (strcmp(arg[1], "none") == 0) { + image->nospecular = 1; + image->specularIntensity = 0.0; + return 2; + } + if (strcmp(arg[1], "wide") == 0) + image->specularHardness = 10.0; + else if (strcmp(arg[1], "narrow") == 0) + image->specularHardness = 50.0; + else if (strcmp(arg[1], "tight") == 0) + image->specularHardness = 250.0; + else + error->all(FLERR, argoff + 1, "Unknown specular setting {}", arg[1]); + image->specularflag = 1; + image->nospecular = 0; + image->specularIntensity = image->shiny; + return 2; + } + + if (strcmp(arg[0], "metal") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify metal", error); + double mval = utils::numeric(FLERR, arg[1], false, lmp); + if ((mval < 0.0) || (mval > 1.0)) + error->all(FLERR, argoff + 1, "Illegal metal value {}", mval); + image->metallic = mval; + return 2; + } + + if (strcmp(arg[0], "metalfinish") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify metalfinish", error); + if (strcmp(arg[1], "satin") == 0) { + image->finishMirror = 0; + image->finishBand = 0.6; + image->finishWidth = 2.0; + } else if (strcmp(arg[1], "polished") == 0) { + image->finishMirror = 0; + image->finishBand = 0.6; + image->finishWidth = 4.0; + } else if (strcmp(arg[1], "mirror") == 0) { + image->finishMirror = 1; + image->finishBand = 0.4; + image->finishWidth = 3.0; + } else { + error->all(FLERR, argoff + 1, "Unknown metalfinish setting {}", arg[1]); + } + return 2; + } + if (strcmp(arg[0], "savecolors") == 0) { if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify savecolors", error); diff --git a/src/GRAPHICS/dump_image.h b/src/GRAPHICS/dump_image.h index 7b66e5170e7..01b79357936 100644 --- a/src/GRAPHICS/dump_image.h +++ b/src/GRAPHICS/dump_image.h @@ -70,10 +70,10 @@ class DumpImage : public DumpCustom { int bodycolor; // what determines color of bodies double bodyflag1, bodyflag2; // user-specified params for drawing bodies - int bondflag; // NO/YES/AUTO for drawing bonds - int bcolor, bdiam; // what determines color/diam of bonds - double bdiamvalue; // bond diameter value - double bondcutoff; // autobond cutoff + int bondflag; // NO/YES/AUTO for drawing bonds + int bcolor, bdiam; // what determines color/diam of bonds + double bdiamvalue; // bond diameter value + double bondcutoff; // autobond cutoff char *id_bond_compute; // ID of per-bond /local compute for bond coloring (or null) Compute *bond_compute; // ptr to that compute, resolved in init_style() int bond_argindex; // 1-based column for c_ID[N]; 0 selects the whole vector diff --git a/src/GRAPHICS/fix_graphics_chunk.cpp b/src/GRAPHICS/fix_graphics_chunk.cpp index a7188df64f1..3cfd29b371b 100644 --- a/src/GRAPHICS/fix_graphics_chunk.cpp +++ b/src/GRAPHICS/fix_graphics_chunk.cpp @@ -416,7 +416,7 @@ void FixGraphicsChunk::end_of_step() // if number of atoms in cluster is maxreplace or smaller we replace the atom // positions with vectices from an icosahedron scaled to radius. - if ((int)natoms <= maxreplace) { + if ((int) natoms <= maxreplace) { num_points = NUM_POINTS; pts.reserve(num_points * natoms); for (const auto i : iatoms) { diff --git a/src/GRAPHICS/fix_graphics_chunk.h b/src/GRAPHICS/fix_graphics_chunk.h index ff63a701f9c..bf5d474a2dc 100644 --- a/src/GRAPHICS/fix_graphics_chunk.h +++ b/src/GRAPHICS/fix_graphics_chunk.h @@ -60,7 +60,6 @@ class FixGraphicsChunk : public Fix { int numobjs; int *imgobjs; double **imgparms; - }; } // namespace LAMMPS_NS #endif diff --git a/src/GRAPHICS/fix_graphics_labels.cpp b/src/GRAPHICS/fix_graphics_labels.cpp index af78578cfb3..a9cbfdce885 100644 --- a/src/GRAPHICS/fix_graphics_labels.cpp +++ b/src/GRAPHICS/fix_graphics_labels.cpp @@ -667,8 +667,8 @@ FixGraphicsLabels::FixGraphicsLabels(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg + 1], "bond") == 0) scale.mapidx = Image::BOND_MAP; else - error->all(FLERR, iarg + 1, - "Unknown fix graphics/labels colorscale map value: {}", arg[iarg + 1]); + error->all(FLERR, iarg + 1, "Unknown fix graphics/labels colorscale map value: {}", + arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "fontcolor") == 0) { if (iarg + 2 > narg) diff --git a/src/GRAPHICS/image.cpp b/src/GRAPHICS/image.cpp index 6f76c143b00..792de3aa819 100644 --- a/src/GRAPHICS/image.cpp +++ b/src/GRAPHICS/image.cpp @@ -25,7 +25,6 @@ #include "math_const.h" #include "math_extra.h" #include "memory.h" -#include "random_mars.h" #include "version.h" #include @@ -46,6 +45,7 @@ using namespace LAMMPS_NS; using MathConst::DEG2RAD; +using MathConst::MY_2PI; using MathConst::MY_PI; using MathConst::MY_PI4; @@ -340,6 +340,14 @@ constexpr char letter_z[] = { " ######################## " " "}; +// the surroundings mirrored by metallic surfaces: a bright sky above a dark +// ground. these are not adjustable on purpose. the effect is a cheap +// imitation, and a fake environment with more settings still cannot compete +// with rendering the same scene in a ray tracer + +constexpr double SKYCOLOR[3] = {0.90, 0.94, 1.00}; +constexpr double GROUNDCOLOR[3] = {0.10, 0.10, 0.12}; + } // namespace /* ---------------------------------------------------------------------- */ @@ -349,7 +357,7 @@ constexpr char letter_z[] = { Image::Image(LAMMPS *lmp, int nmap_caller) : Pointers(lmp), maps(nullptr), depthBuffer(nullptr), surfaceBuffer(nullptr), depthcopy(nullptr), surfacecopy(nullptr), imageBuffer(nullptr), rgbcopy(nullptr), writeBuffer(nullptr), - recvcounts(nullptr), displs(nullptr), random(nullptr) + recvcounts(nullptr), displs(nullptr) { MPI_Comm_rank(world, &me); MPI_Comm_size(world, &nprocs); @@ -361,8 +369,23 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : phi = 30.0 * DEG2RAD; zoom = 1.0; shiny = 1.0; + gamma = 1.0; ssao = NO; + ssaosamples = 0; fsaa = NO; + depthcue = NO; + depthcueint = 0.0; + depthcuecolor = nullptr; + depthcuestartflag = 0; + depthcuestart = 0.0; + defocus = NO; + defocusint = 0.0; + defocusstartflag = 0; + defocusstart = 0.0; + outline = NO; + outlinewidth = 0; + outlinecolor = nullptr; + for (auto &b : boxbounds) b = 0.0; up[0] = 0.0; up[1] = 0.0; @@ -398,6 +421,20 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : backLightColor[1] = 0.9; backLightColor[2] = 0.9; + specularflag = 0; + nospecular = 0; + specularHardness = 16.0; + specularIntensity = 1.0; + + // metallic shading is off by default, so that images are unchanged. + // the default surroundings are a bright sky over a dark ground, which + // is what makes a polished surface read as metal rather than as plastic + + metallic = 0.0; + finishMirror = 0; + finishBand = 0.6; + finishWidth = 2.0; + // named colors rgbcolors = {{"aliceblue", {0.941, 0.973, 1.000}}, {"antiquewhite", {0.980, 0.922, 0.843}}, @@ -547,16 +584,16 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : {"B", {{0.900, 0.400, 0.000}, 0.85}}, {"C", {{0.350, 0.350, 0.350}, 0.72}}, {"N", {{0.200, 0.200, 0.800}, 0.65}}, {"O", {{0.800, 0.200, 0.200}, 0.6}}, {"F", {{0.700, 0.850, 0.450}, 0.5}}, {"Ne", {{0.643, 0.667, 0.678}, 1.5662}}, - {"Na", {{0.600, 0.600, 0.800}, 1.8}}, {"Mg", {{0.600, 0.600, 0.700}, 1.5}}, - {"Al", {{0.643, 0.667, 0.678}, 1.4255}}, {"Si", {{0.690, 0.769, 0.871}, 1.07}}, + {"Na", {{0.600, 0.600, 0.800}, 1.8}}, {"Mg", {{0.950, 0.945, 0.935}, 1.5}}, + {"Al", {{0.913, 0.922, 0.924}, 1.4255}}, {"Si", {{0.690, 0.769, 0.871}, 1.07}}, {"P", {{0.100, 0.700, 0.300}, 1}}, {"S", {{0.950, 0.900, 0.200}, 1}}, {"Cl", {{0.150, 0.500, 0.100}, 1}}, {"Ar", {{0.643, 0.667, 0.678}, 1.8597}}, {"K", {{0.800, 0.500, 0.500}, 2.2}}, {"Ca", {{0.800, 0.800, 0.700}, 1.8}}, - {"Sc", {{0.643, 0.667, 0.678}, 1.6}}, {"Ti", {{0.643, 0.667, 0.678}, 1.4}}, - {"V", {{0.643, 0.667, 0.678}, 1.51995}}, {"Cr", {{0.000, 0.800, 0.000}, 1.44225}}, - {"Mn", {{0.643, 0.667, 0.678}, 1.4}}, {"Fe", {{0.518, 0.576, 0.653}, 1.43325}}, - {"Co", {{0.643, 0.667, 0.678}, 1.35}}, {"Ni", {{0.257, 0.267, 0.271}, 1.35}}, - {"Cu", {{0.950, 0.790, 0.014}, 1.278}}, {"Zn", {{0.643, 0.667, 0.678}, 1.35}}, + {"Sc", {{0.643, 0.667, 0.678}, 1.6}}, {"Ti", {{0.542, 0.497, 0.449}, 1.4}}, + {"V", {{0.643, 0.667, 0.678}, 1.51995}}, {"Cr", {{0.630, 0.650, 0.660}, 1.44225}}, + {"Mn", {{0.570, 0.545, 0.545}, 1.4}}, {"Fe", {{0.480, 0.470, 0.462}, 1.43325}}, + {"Co", {{0.565, 0.590, 0.645}, 1.35}}, {"Ni", {{0.660, 0.609, 0.526}, 1.35}}, + {"Cu", {{0.955, 0.638, 0.538}, 1.278}}, {"Zn", {{0.828, 0.843, 0.855}, 1.35}}, {"Ga", {{0.900, 0.000, 1.000}, 1.3}}, {"Ge", {{0.643, 0.667, 0.678}, 1.25}}, {"As", {{1.000, 1.000, 0.300}, 1.15}}, {"Se", {{0.643, 0.667, 0.678}, 1.15}}, {"Br", {{0.500, 0.080, 0.120}, 1.15}}, {"Kr", {{0.643, 0.667, 0.678}, 2.0223}}, @@ -565,8 +602,8 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : {"Nb", {{0.643, 0.667, 0.678}, 1.6504}}, {"Mo", {{0.643, 0.667, 0.678}, 1.3872}}, {"Tc", {{0.643, 0.667, 0.678}, 1.35}}, {"Ru", {{0.643, 0.667, 0.678}, 1.3}}, {"Rh", {{0.643, 0.667, 0.678}, 1.35}}, {"Pd", {{0.643, 0.667, 0.678}, 1.4}}, - {"Ag", {{0.643, 0.667, 0.678}, 1.6}}, {"Cd", {{0.643, 0.667, 0.678}, 1.55}}, - {"In", {{0.643, 0.667, 0.678}, 1.55}}, {"Sn", {{0.643, 0.667, 0.678}, 1.45}}, + {"Ag", {{0.972, 0.960, 0.915}, 1.6}}, {"Cd", {{0.643, 0.667, 0.678}, 1.55}}, + {"In", {{0.643, 0.667, 0.678}, 1.55}}, {"Sn", {{0.600, 0.596, 0.592}, 1.45}}, {"Sb", {{0.643, 0.667, 0.678}, 1.45}}, {"Te", {{0.643, 0.667, 0.678}, 1.4}}, {"I", {{0.500, 0.100, 0.500}, 1.4}}, {"Xe", {{0.643, 0.667, 0.678}, 2.192}}, {"Cs", {{0.643, 0.667, 0.678}, 2.6}}, {"Ba", {{0.643, 0.667, 0.678}, 2.15}}, @@ -581,8 +618,8 @@ Image::Image(LAMMPS *lmp, int nmap_caller) : {"Ta", {{0.643, 0.667, 0.678}, 1.6529}}, {"W", {{0.643, 0.667, 0.678}, 1.5826}}, {"Re", {{0.643, 0.667, 0.678}, 1.35}}, {"Os", {{0.643, 0.667, 0.678}, 1.3}}, {"Ir", {{0.643, 0.667, 0.678}, 1.35}}, {"Pt", {{0.643, 0.667, 0.678}, 1.35}}, - {"Au", {{0.900, 0.800, 0.000}, 1.35}}, {"Hg", {{0.643, 0.667, 0.678}, 1.5}}, - {"Tl", {{0.643, 0.667, 0.678}, 1.9}}, {"Pb", {{0.643, 0.667, 0.678}, 1.8}}, + {"Au", {{1.000, 0.766, 0.336}, 1.35}}, {"Hg", {{0.780, 0.779, 0.776}, 1.5}}, + {"Tl", {{0.643, 0.667, 0.678}, 1.9}}, {"Pb", {{0.520, 0.535, 0.560}, 1.8}}, {"Bi", {{0.643, 0.667, 0.678}, 1.6}}, {"Po", {{0.643, 0.667, 0.678}, 1.9}}, {"At", {{0.800, 0.200, 0.200}, 1.6}}, {"Rn", {{0.643, 0.667, 0.678}, 1.0}}, {"Fr", {{0.643, 0.667, 0.678}, 1.0}}, {"Ra", {{0.643, 0.667, 0.678}, 2.15}}, @@ -622,8 +659,6 @@ Image::~Image() memory->destroy(surfacecopy); memory->destroy(rgbcopy); - delete random; - memory->destroy(recvcounts); memory->destroy(displs); } @@ -660,6 +695,15 @@ void Image::buffers() void Image::view_params(double boxxlo, double boxxhi, double boxylo, double boxyhi, double boxzlo, double boxzhi) { + // keep box bounds for projecting the box onto the view direction + + boxbounds[0] = boxxlo; + boxbounds[1] = boxxhi; + boxbounds[2] = boxylo; + boxbounds[3] = boxyhi; + boxbounds[4] = boxzlo; + boxbounds[5] = boxzhi; + // camDir points at the camera, view direction = -camDir camDir[0] = sin(theta)*cos(phi); @@ -723,32 +767,18 @@ void Image::view_params(double boxxlo, double boxxhi, double boxylo, // light directions in terms of -camDir = z - keyLightDir[0] = cos(keyLightTheta) * sin(keyLightPhi); - keyLightDir[1] = sin(keyLightTheta); - keyLightDir[2] = cos(keyLightTheta) * cos(keyLightPhi); - - fillLightDir[0] = cos(fillLightTheta) * sin(fillLightPhi); - fillLightDir[1] = sin(fillLightTheta); - fillLightDir[2] = cos(fillLightTheta) * cos(fillLightPhi); - - backLightDir[0] = cos(backLightTheta) * sin(backLightPhi); - backLightDir[1] = sin(backLightTheta); - backLightDir[2] = cos(backLightTheta) * cos(backLightPhi); - - keyHalfDir[0] = 0 + keyLightDir[0]; - keyHalfDir[1] = 0 + keyLightDir[1]; - keyHalfDir[2] = 1 + keyLightDir[2]; - MathExtra::norm3(keyHalfDir); + setup_lights(); - // adjust shinyness of the reflection + // the brightness of the specular highlights follows shiny; their width + // also follows shiny unless set with a dump_modify specular preset; + // dump_modify specular none disables the highlights entirely - specularHardness = 16.0 * shiny; - specularIntensity = shiny; + specularIntensity = nospecular ? 0.0 : shiny; + if (!specularflag) specularHardness = 16.0 * shiny; // adjust strength of the SSAO if (ssao) { - if (!random) random = new RanMars(lmp,seed+me); SSAORadius = maxdel * 0.05 * ssaoint; SSAOSamples = static_cast(8.0 + 32.0*ssaoint); SSAOJitter = MY_PI / 12; @@ -762,6 +792,32 @@ void Image::view_params(double boxxlo, double boxxhi, double boxylo, tanPerPixel = -(maxdel / (double) height); } +/* ---------------------------------------------------------------------- + compute light directions from their theta/phi angles + the angles are relative to the viewer with z pointing at the camera: + theta > 0 moves a light above the view direction, phi > 0 to the right +------------------------------------------------------------------------- */ + +void Image::setup_lights() +{ + keyLightDir[0] = cos(keyLightTheta) * sin(keyLightPhi); + keyLightDir[1] = sin(keyLightTheta); + keyLightDir[2] = cos(keyLightTheta) * cos(keyLightPhi); + + fillLightDir[0] = cos(fillLightTheta) * sin(fillLightPhi); + fillLightDir[1] = sin(fillLightTheta); + fillLightDir[2] = cos(fillLightTheta) * cos(fillLightPhi); + + backLightDir[0] = cos(backLightTheta) * sin(backLightPhi); + backLightDir[1] = sin(backLightTheta); + backLightDir[2] = cos(backLightTheta) * cos(backLightPhi); + + keyHalfDir[0] = 0 + keyLightDir[0]; + keyHalfDir[1] = 0 + keyLightDir[1]; + keyHalfDir[2] = 1 + keyLightDir[2]; + MathExtra::norm3(keyHalfDir); +} + /* ---------------------------------------------------------------------- initialize image to background color and depth buffer no need to init surfaceBuffer, since will be based on depth @@ -885,6 +941,18 @@ void Image::merge() writeBuffer = imageBuffer; } + // draw outlines at depth discontinuities + + if (outline && (me == 0)) compute_outline(); + + // apply depth cueing to the final composited image + + if (depthcue && (me == 0)) compute_depthcue(); + + // blur the more distant objects in the final composited image + + if (defocus && (me == 0)) compute_defocus(); + // scale down image for antialiasing. can be done in place with simple averaging if (fsaa) { for (int h=0; h < height; h += 2) { @@ -1730,34 +1798,94 @@ void Image::draw_pixel(int ix, int iy, double depth, const double *surface, diffuseKey = saturate(MathExtra::dot3(surface, keyLightDir)); diffuseFill = saturate(MathExtra::dot3(surface, fillLightDir)); diffuseBack = saturate(MathExtra::dot3(surface, backLightDir)); - specularKey = pow(saturate(MathExtra::dot3(surface, keyHalfDir)), - specularHardness) * specularIntensity; + + // a metal reflects nearly all light directly and tints the reflection with + // its own color, while a non-conductor scatters light diffusely and reflects + // it without tinting. "metallic" blends between those two limits: it scales + // down the diffuse contributions and turns "reflect" into the color of the + // reflected light. for metallic = 0.0 this reproduces the plain shading. + + const double diffuse = 1.0 - metallic; + double reflect[3]; + reflect[0] = metallic * surfaceColor[0] + diffuse; + reflect[1] = metallic * surfaceColor[1] + diffuse; + reflect[2] = metallic * surfaceColor[2] + diffuse; + + // every surface becomes mirror-like when viewed at a grazing angle, which + // brightens the outline of a curved object. the amount follows Schlick's + // approximation. the viewing direction is (0,0,1) in these coordinates, + // so its dot product with the surface normal is simply the z component + + const double viewdot = saturate(surface[2]); + const double grazing = (1.0-viewdot)*(1.0-viewdot)*(1.0-viewdot)*(1.0-viewdot)*(1.0-viewdot); + reflect[0] += (1.0 - reflect[0]) * grazing; + reflect[1] += (1.0 - reflect[1]) * grazing; + reflect[2] += (1.0 - reflect[2]) * grazing; double c[3]; - c[0] = surfaceColor[0] * ambientColor[0]; - c[1] = surfaceColor[1] * ambientColor[1]; - c[2] = surfaceColor[2] * ambientColor[2]; + c[0] = surfaceColor[0] * ambientColor[0] * diffuse; + c[1] = surfaceColor[1] * ambientColor[1] * diffuse; + c[2] = surfaceColor[2] * ambientColor[2] * diffuse; - c[0] += surfaceColor[0] * keyLightColor[0] * diffuseKey; - c[1] += surfaceColor[1] * keyLightColor[1] * diffuseKey; - c[2] += surfaceColor[2] * keyLightColor[2] * diffuseKey; + c[0] += surfaceColor[0] * keyLightColor[0] * diffuseKey * diffuse; + c[1] += surfaceColor[1] * keyLightColor[1] * diffuseKey * diffuse; + c[2] += surfaceColor[2] * keyLightColor[2] * diffuseKey * diffuse; - c[0] += keyLightColor[0] * specularKey; - c[1] += keyLightColor[1] * specularKey; - c[2] += keyLightColor[2] * specularKey; + // specular highlights are disabled with dump_modify specular none. + // check the flag here since view_params() may not run again after + // dump_modify for static views - c[0] += surfaceColor[0] * fillLightColor[0] * diffuseFill; - c[1] += surfaceColor[1] * fillLightColor[1] * diffuseFill; - c[2] += surfaceColor[2] * fillLightColor[2] * diffuseFill; + if (!nospecular && (specularIntensity > 0.0)) { + specularKey = pow(saturate(MathExtra::dot3(surface, keyHalfDir)), + specularHardness) * specularIntensity; - c[0] += surfaceColor[0] * backLightColor[0] * diffuseBack; - c[1] += surfaceColor[1] * backLightColor[1] * diffuseBack; - c[2] += surfaceColor[2] * backLightColor[2] * diffuseBack; + c[0] += keyLightColor[0] * reflect[0] * specularKey; + c[1] += keyLightColor[1] * reflect[1] * specularKey; + c[2] += keyLightColor[2] * reflect[2] * specularKey; + } + + c[0] += surfaceColor[0] * fillLightColor[0] * diffuseFill * diffuse; + c[1] += surfaceColor[1] * fillLightColor[1] * diffuseFill * diffuse; + c[2] += surfaceColor[2] * fillLightColor[2] * diffuseFill * diffuse; + + c[0] += surfaceColor[0] * backLightColor[0] * diffuseBack * diffuse; + c[1] += surfaceColor[1] * backLightColor[1] * diffuseBack * diffuse; + c[2] += surfaceColor[2] * backLightColor[2] * diffuseBack * diffuse; + + // a metal also mirrors its surroundings, which are approximated by a sky + // color above and a ground color below. the direction into which the + // surface reflects the viewer is 2 (n.v) n - v, and only its vertical + // component is needed to pick the color from that gradient + + if (metallic > 0.0) { + const double updir = finishMirror ? 2.0*viewdot*surface[1] : surface[1]; + double updown = saturate(0.5 * (updir + 1.0)); + updown = updown * updown * (3.0 - 2.0*updown); // narrow the horizon + + // brighten a band around the horizon, where the surroundings of a real + // scene are brightest. this is what produces the light streak across a + // polished surface that reads as "shiny metal" rather than "dark paint" + + double band = 0.0; + if (finishBand > 0.0) band = finishBand * pow(1.0 - fabs(2.0*updown - 1.0), finishWidth); + + c[0] += metallic * reflect[0] * (GROUNDCOLOR[0] + updown*(SKYCOLOR[0]-GROUNDCOLOR[0]) + band); + c[1] += metallic * reflect[1] * (GROUNDCOLOR[1] + updown*(SKYCOLOR[1]-GROUNDCOLOR[1]) + band); + c[2] += metallic * reflect[2] * (GROUNDCOLOR[2] + updown*(SKYCOLOR[2]-GROUNDCOLOR[2]) + band); + } c[0] = saturate(c[0]); c[1] = saturate(c[1]); c[2] = saturate(c[2]); + // apply gamma adjustment to the summed up light contributions + + if (gamma != 1.0) { + c[0] = pow(c[0], 1.0 / gamma); + c[1] = pow(c[1], 1.0 / gamma); + c[2] = pow(c[2], 1.0 / gamma); + } + imageBuffer[0 + ix*3 + iy*width*3] = static_cast(c[0] * 255.0); imageBuffer[1 + ix*3 + iy*width*3] = static_cast(c[1] * 255.0); imageBuffer[2 + ix*3 + iy*width*3] = static_cast(c[2] * 255.0); @@ -1767,9 +1895,14 @@ void Image::draw_pixel(int ix, int iy, double depth, const double *surface, void Image::compute_SSAO() { + // number of horizon directions per pixel. a chosen value must override + // the automatic one here, since view_params() may have run before it was set + + const int nsamples = (ssaosamples > 0) ? ssaosamples : SSAOSamples; + // used for rasterizing the spheres - double delTheta = 2.0*MY_PI / SSAOSamples; + double delTheta = 2.0*MY_PI / nsamples; // typical neighborhood value for shading @@ -1785,9 +1918,18 @@ void Image::compute_SSAO() int pixelstart = static_cast(1.0*me/nprocs * npixels); int pixelstop = static_cast(1.0*(me+1)/nprocs * npixels); - // fill buffer with random numbers to avoid race conditions - auto *uniform = new double[pixelstop - pixelstart]; - for (int i = 0; i < pixelstop - pixelstart; ++i) uniform[i] = random->uniform(); + // shift of the jitter noise pattern derived from the seed value + + const double seedshift = fmod(0.618033988749895 * (double) seed, 1.0); + + // table of evenly spaced horizon directions, computed once; each pixel + // rotates the whole table by its per-pixel jitter angle + + auto *dirTable = new double[2*nsamples]; + for (int s = 0; s < nsamples; ++s) { + dirTable[2*s] = cos(s * delTheta); + dirTable[2*s+1] = sin(s * delTheta); + } #if defined(_OPENMP) #pragma omp parallel for @@ -1803,13 +1945,19 @@ void Image::compute_SSAO() double sy = surfaceBuffer[index * 2 + 1]; double sin_t = -sqrt(sx*sx + sy*sy); - double mytheta = uniform[index - pixelstart] * SSAOJitter; + // deterministic per-pixel jitter from interleaved gradient noise, so + // shading is independent of the number of MPI ranks and OpenMP threads + // and images of unchanged scenes are reproducible + + double ign = fmod(0.06711056 * x + 0.00583715 * y + seedshift, 1.0); + const double mytheta = fmod(52.9829189 * ign, 1.0) * SSAOJitter; + const double cosj = cos(mytheta); + const double sinj = sin(mytheta); double ao = 0.0; - for (int s = 0; s < SSAOSamples; ++s) { - double hx = cos(mytheta); - double hy = sin(mytheta); - mytheta += delTheta; + for (int s = 0; s < nsamples; ++s) { + double hx = cosj * dirTable[2*s] - sinj * dirTable[2*s+1]; + double hy = sinj * dirTable[2*s] + cosj * dirTable[2*s+1]; // multiply by z cross surface tangent // so that dot (aka cos) works here @@ -1880,7 +2028,7 @@ void Image::compute_SSAO() ao += saturate(-scaled_sin_t); } } - ao /= (double)SSAOSamples; + ao /= (double)nsamples; double c[3]; c[0] = (double) (*(unsigned char *) &imageBuffer[index * 3 + 0]); @@ -1893,7 +2041,362 @@ void Image::compute_SSAO() imageBuffer[index * 3 + 1] = (int) c[1]; imageBuffer[index * 3 + 2] = (int) c[2]; } - delete[] uniform; + + delete[] dirTable; +} + +/* ---------------------------------------------------------------------- + draw outlines on the composited image on the output rank: color + drawn pixels that have a significantly more distant pixel or the + background within the outline width. the outline hugs the nearer + object at depth discontinuities, which gives the flat illustration + look known from hand-drawn molecular graphics. +------------------------------------------------------------------------- */ + +void Image::compute_outline() +{ + // only depth jumps between immediately adjacent pixels that are larger + // than a small fraction of the box size count as edges. the smooth but + // steep depth changes where a curved surface turns away from the viewer + // must not be outlined, so the threshold is of the order of typical + // particle sizes and the comparison spans only one pixel + + const double delx = 2.0 * (boxbounds[1] - boxbounds[0]); + const double dely = 2.0 * (boxbounds[3] - boxbounds[2]); + const double delz = 2.0 * (boxbounds[5] - boxbounds[4]); + double maxdel = MAX(delx,dely); + maxdel = MAX(maxdel,delz); + const double threshold = 0.02 * maxdel; + + // the outline width follows the internal image size with FSAA + + int w = outlinewidth; + if (fsaa) w *= 2; + + const auto red = static_cast(outlinecolor[0] * 255.0); + const auto green = static_cast(outlinecolor[1] * 255.0); + const auto blue = static_cast(outlinecolor[2] * 255.0); + + // mark drawn pixels that have a much more distant immediate neighbor + // or border on the background + + auto *edges = new unsigned char[npixels]; + memset(edges,0,npixels); + +#if defined(_OPENMP) +#pragma omp parallel for schedule(static) +#endif + for (int iy = 0; iy < height; ++iy) { + for (int ix = 0; ix < width; ++ix) { + const double d = depthBuffer[iy*width + ix]; + if (d < 0.0) continue; + + constexpr int xoff[4] = {-1, 1, 0, 0}; + constexpr int yoff[4] = {0, 0, -1, 1}; + for (int k = 0; k < 4; ++k) { + const int jx = ix + xoff[k]; + const int jy = iy + yoff[k]; + if (jx < 0 || jx >= width || jy < 0 || jy >= height) continue; + const double dj = depthBuffer[jy*width + jx]; + if (dj < 0.0 || (dj - d) > threshold) { + edges[iy*width + ix] = 1; + break; + } + } + } + } + + // widen the outline: color drawn pixels near an edge pixel, but only + // on the near side of the depth jump so the outline hugs the nearer + // object and does not bleed onto more distant objects + +#if defined(_OPENMP) +#pragma omp parallel for schedule(static) +#endif + for (int iy = 0; iy < height; ++iy) { + for (int ix = 0; ix < width; ++ix) { + const double d = depthBuffer[iy*width + ix]; + if (d < 0.0) continue; + + bool paint = false; + for (int dy = -w+1; dy < w && !paint; ++dy) { + const int jy = iy + dy; + if (jy < 0 || jy >= height) continue; + for (int dx = -w+1; dx < w; ++dx) { + const int jx = ix + dx; + if (jx < 0 || jx >= width) continue; + if (!edges[jy*width + jx]) continue; + if ((d - depthBuffer[jy*width + jx]) < threshold) { + paint = true; + break; + } + } + } + + if (paint) { + const int i = iy*width + ix; + writeBuffer[i*3+0] = red; + writeBuffer[i*3+1] = green; + writeBuffer[i*3+2] = blue; + } + } + } + + delete[] edges; +} + +/* ---------------------------------------------------------------------- + depth range of the drawn pixels of the composited image. returns + false if nothing was drawn; background pixels have a depth < 0 +------------------------------------------------------------------------- */ + +bool Image::depth_minmax(double &dmin, double &dmax) const +{ + bool first = true; + dmin = dmax = 0.0; + for (int i = 0; i < npixels; i++) { + const double d = depthBuffer[i]; + if (d < 0.0) continue; + if (first) { + dmin = dmax = d; + first = false; + } else { + dmin = MIN(dmin,d); + dmax = MAX(dmax,d); + } + } + return !first; +} + +/* ---------------------------------------------------------------------- + distance of the near and far side of the simulation box from the + camera, by projecting the eight box corners onto the view direction +------------------------------------------------------------------------- */ + +void Image::box_depth_minmax(double &dnear, double &dfar) const +{ + const double dcam = MathExtra::dot3(camPos,camDir); + dnear = dfar = 0.0; + for (int ic = 0; ic < 8; ++ic) { + double corner[3]; + corner[0] = ((ic & 1) ? boxbounds[1] : boxbounds[0]) - xctr; + corner[1] = ((ic & 2) ? boxbounds[3] : boxbounds[2]) - yctr; + corner[2] = ((ic & 4) ? boxbounds[5] : boxbounds[4]) - zctr; + const double d = dcam - MathExtra::dot3(corner,camDir); + if (ic == 0) { + dnear = dfar = d; + } else { + dnear = MIN(dnear,d); + dfar = MAX(dfar,d); + } + } +} + +/* ---------------------------------------------------------------------- + apply depth cueing to the composited image on the output rank: + fade drawn pixels toward the fog color with increasing distance from + the viewer. the fade ends at the most distant drawn pixel and starts + at the nearest drawn pixel or at a chosen fraction of the simulation + box projected onto the view direction. +------------------------------------------------------------------------- */ + +void Image::compute_depthcue() +{ + // determine depth range of drawn pixels; nothing to do without drawn + // pixels or without depth variation + + double dmin, dmax; + if (!depth_minmax(dmin,dmax)) return; + if ((dmax - dmin) < EPSILON) return; + + // start of the fade: by default the nearest drawn pixel. with a start + // fraction set, place it at that fraction between the near and far side + // of the simulation box as seen from the camera + + double dstart = dmin; + if (depthcuestartflag) { + double dnear, dfar; + box_depth_minmax(dnear,dfar); + dstart = dnear + depthcuestart * (dfar - dnear); + if (dstart >= (dmax - EPSILON)) return; // fading starts behind all drawn pixels + } + const double dscale = depthcueint / (dmax - dstart); + + // blend pixel colors toward the fog color. by default this is the + // background color, with a gradient enabled the same per-row color as + // in clear(); a custom fog color is used for all rows unchanged + +#if defined(_OPENMP) +#pragma omp parallel for schedule(static) +#endif + for (int iy = 0; iy < height; ++iy) { + int red, green, blue; + if (depthcuecolor) { + red = static_cast(depthcuecolor[0] * 255.0); + green = static_cast(depthcuecolor[1] * 255.0); + blue = static_cast(depthcuecolor[2] * 255.0); + } else if (background2[0] >= 0) { + const double fraction = (double) iy / (double) height; + red = static_cast(fraction * background2[0] + (1.0 - fraction) * background[0]); + green = static_cast(fraction * background2[1] + (1.0 - fraction) * background[1]); + blue = static_cast(fraction * background2[2] + (1.0 - fraction) * background[2]); + } else { + red = background[0]; + green = background[1]; + blue = background[2]; + } + for (int ix = 0; ix < width; ++ix) { + const int i = iy * width + ix; + const double d = depthBuffer[i]; + if (d < 0.0 || d <= dstart) continue; + const double f = std::min(1.0, (d - dstart) * dscale); + writeBuffer[i*3+0] = static_cast((1.0 - f) * writeBuffer[i*3+0] + f * red); + writeBuffer[i*3+1] = static_cast((1.0 - f) * writeBuffer[i*3+1] + f * green); + writeBuffer[i*3+2] = static_cast((1.0 - f) * writeBuffer[i*3+2] + f * blue); + } + } +} + +/* ---------------------------------------------------------------------- + defocus the background of the composited image on the output rank: + objects are blurred more the further they are behind the start of the + blur, which puts the visual emphasis on the objects in front of it. + everything closer than the start stays sharp, so this is not the full + depth of field of a camera lens, which would blur the foreground too. +------------------------------------------------------------------------- */ + +void Image::compute_defocus() +{ + // largest blur radius in pixels, expressed as a fraction of the image + // height so that the effect does not depend on the image size. the + // internal image is twice as large with FSAA, which scales the radius + // along with it + + const double maxradius = defocusint * 0.01 * height; + if (maxradius < 1.0) return; // blur is smaller than a pixel + + // determine depth range of drawn pixels; nothing to do without drawn + // pixels or without depth variation + + double dmin, dmax; + if (!depth_minmax(dmin,dmax)) return; + if ((dmax - dmin) < EPSILON) return; + + // start of the blur: by default the nearest drawn pixel, so that the + // front of the scene stays sharp. with a start fraction set, place it + // at that fraction between the near and far side of the simulation box + // as seen from the camera + + double dstart = dmin; + if (defocusstartflag) { + double dnear, dfar; + box_depth_minmax(dnear,dfar); + dstart = dnear + defocusstart * (dfar - dnear); + if (dstart >= (dmax - EPSILON)) return; // blurring starts behind all drawn pixels + } + const double dscale = maxradius / (dmax - dstart); + + // blur radius of each pixel. pixels in front of the start of the blur + // stay sharp, behind it the radius grows with the distance from the + // viewer. the background has no depth and is treated as maximally + // blurred, so that blurred objects in the back dissolve into it + // instead of keeping a sharp silhouette + + auto *radiusBuffer = new double[npixels]; + +#if defined(_OPENMP) +#pragma omp parallel for schedule(static) +#endif + for (int i = 0; i < npixels; ++i) { + const double d = depthBuffer[i]; + if (d < 0.0) radiusBuffer[i] = maxradius; + else if (d <= dstart) radiusBuffer[i] = 0.0; + else radiusBuffer[i] = (d - dstart) * dscale; + } + + // sample positions on a unit disk, placed on a spiral with the golden + // angle between them, which spreads them evenly. using the disk shape + // of a camera aperture rather than a bell shaped blur keeps the blurred + // objects looking out of focus instead of looking like fog. the number + // of samples follows the largest blur radius, so that wide blurs do not + // show the individual samples + + int nsamples = static_cast(4.0 * maxradius); + nsamples = MAX(nsamples,16); + nsamples = MIN(nsamples,64); + + constexpr double GOLDEN_ANGLE = 2.39996322972865332; + auto *sample = new double[3*nsamples]; + for (int s = 0; s < nsamples; ++s) { + const double r = sqrt((s + 0.5) / nsamples); + const double angle = s * GOLDEN_ANGLE; + sample[3*s+0] = r * cos(angle); + sample[3*s+1] = r * sin(angle); + sample[3*s+2] = r; + } + + // collect the blur from an unmodified copy of the composited image + + auto *source = new unsigned char[3*npixels]; + memcpy(source,writeBuffer,3*npixels); + +#if defined(_OPENMP) +#pragma omp parallel for schedule(static) +#endif + for (int iy = 0; iy < height; ++iy) { + for (int ix = 0; ix < width; ++ix) { + const int i = iy*width + ix; + const double radius = radiusBuffer[i]; + if (radius < 0.5) continue; // in focus, the pixel is left alone + + // turn the whole sample pattern by a per-pixel angle taken from + // interleaved gradient noise. this replaces the rings that the + // repeated sample pattern would leave in wide blurs by a fine + // grain, and does not depend on the number of ranks or threads + + const double noise = fmod(0.06711056*ix + 0.00583715*iy, 1.0); + const double angle = fmod(52.9829189*noise, 1.0) * MY_2PI; + const double cosa = cos(angle); + const double sina = sin(angle); + + // a sample only contributes if its own blur circle reaches this + // pixel. that keeps sharp objects in front from bleeding into the + // blurred background, which would show up as a halo around them. + // the contribution fades out over the last pixel of that reach, so + // that the blur does not gain visible steps + + double c[3]; + c[0] = source[3*i+0]; + c[1] = source[3*i+1]; + c[2] = source[3*i+2]; + double wsum = 1.0; + + for (int s = 0; s < nsamples; ++s) { + const double dx = radius * (cosa*sample[3*s+0] - sina*sample[3*s+1]); + const double dy = radius * (sina*sample[3*s+0] + cosa*sample[3*s+1]); + const int jx = ix + static_cast(lround(dx)); + const int jy = iy + static_cast(lround(dy)); + if ((jx < 0) || (jx >= width) || (jy < 0) || (jy >= height)) continue; + + const int j = jy*width + jx; + const double weight = saturate(radiusBuffer[j] - radius * sample[3*s+2]); + if (weight <= 0.0) continue; + + c[0] += weight * source[3*j+0]; + c[1] += weight * source[3*j+1]; + c[2] += weight * source[3*j+2]; + wsum += weight; + } + + writeBuffer[3*i+0] = static_cast(lround(c[0]/wsum)); + writeBuffer[3*i+1] = static_cast(lround(c[1]/wsum)); + writeBuffer[3*i+2] = static_cast(lround(c[2]/wsum)); + } + } + + delete[] source; + delete[] sample; + delete[] radiusBuffer; } /* ---------------------------------------------------------------------- */ diff --git a/src/GRAPHICS/image.h b/src/GRAPHICS/image.h index 4742596c5bd..a0be8161852 100644 --- a/src/GRAPHICS/image.h +++ b/src/GRAPHICS/image.h @@ -34,10 +34,24 @@ class Image : protected Pointers { double up[3]; // up direction in image double zoom; // zoom factor double shiny; // shininess of objects + double gamma; // gamma correction of rendered objects, 1.0 = off int fsaa; // antialiasing on or off int ssao; // SSAO on or off int seed; // RN seed for SSAO double ssaoint; // strength of shading from 0 to 1 + int ssaosamples; // SSAO samples per pixel; 0 = derived from ssaoint + int depthcue; // depth cueing on or off + double depthcueint; // strength of depth cueing from 0 to 1 + double *depthcuecolor; // fog color; fade toward background color if null + int depthcuestartflag; // 1 if fading starts at a box fraction, 0 at nearest object + double depthcuestart; // start of fading as box fraction along the view direction + int defocus; // background defocus on or off + double defocusint; // strength of the defocus blur from 0 to 1 + int defocusstartflag; // 1 if blurring starts at a box fraction, 0 at nearest object + double defocusstart; // start of blurring as box fraction along the view direction + int outline; // outline drawing on or off + int outlinewidth; // width of outlines in pixels + double *outlinecolor; // color of the outlines double *boxcolor; // color to draw box outline with int background[3]; // RGB values of background int background2[3]; // RGB values of second background color for gradient (off if < 0.0) @@ -47,6 +61,16 @@ class Image : protected Pointers { double fillLightColor[3]; double backLightColor[3]; + int specularflag; // 1 if the specular exponent is set explicitly + int nospecular; // 1 = disable the specular highlight entirely + double specularHardness; // exponent of the specular highlight + double specularIntensity; // strength of the specular highlight + + double metallic; // 0.0 = dielectric ("plastic"), 1.0 = conductor ("metal") + int finishMirror; // 1 = mirror the surroundings, 0 = soft light from above + double finishBand; // extra brightness of the horizon band, 0.0 = off + double finishWidth; // exponent setting the width of the horizon band + Image(class LAMMPS *, int); ~Image() override; void buffers(); @@ -112,22 +136,13 @@ class Image : protected Pointers { // constant view params double FOV; - //double ambientColor[3]; double keyLightTheta; double keyLightPhi; - //double keyLightColor[3]; - double fillLightTheta; double fillLightPhi; - //double fillLightColor[3]; - double backLightTheta; double backLightPhi; - //double backLightColor[3]; - - double specularHardness; - double specularIntensity; double SSAORadius; int SSAOSamples; @@ -137,18 +152,21 @@ class Image : protected Pointers { double zdist; double tanPerPixel; + double boxbounds[6]; // box bounds from the last view_params() call double camDir[3], camUp[3], camRight[4], camPos[3]; double keyLightDir[3], fillLightDir[3], backLightDir[3]; double keyHalfDir[3]; - // SSAO RNG - - class RanMars *random; - // internal methods void draw_pixel(int, int, double, const double *, const double *); + void setup_lights(); void compute_SSAO(); + void compute_outline(); + void compute_depthcue(); + void compute_defocus(); + bool depth_minmax(double &, double &) const; + void box_depth_minmax(double &, double &) const; // inline functions diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 4e1429da7d7..465c1480ccf 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -408,6 +408,8 @@ action pair_eam_alloy_kokkos.cpp pair_eam_alloy.cpp action pair_eam_alloy_kokkos.h pair_eam_alloy.h action pair_eam_fs_kokkos.cpp pair_eam_fs.cpp action pair_eam_fs_kokkos.h pair_eam_fs.h +action pair_eam_he_kokkos.cpp pair_eam_he.cpp +action pair_eam_he_kokkos.h pair_eam_he.h action pair_eam_kokkos.cpp pair_eam.cpp action pair_eam_kokkos.h pair_eam.h action pair_exp6_rx_kokkos.cpp pair_exp6_rx.cpp diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index 81c8d2ea7a5..16ef59f1df8 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -28,7 +28,10 @@ constexpr int FULL = 1; constexpr int HALFTHREAD = 2; constexpr int HALF = 4; -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) || defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENMPTARGET) +// LMP_KOKKOS_GPU may also be set as a global compile definition by the build +// system (see cmake/Modules/Packages/KOKKOS.cmake) so that non-KOKKOS sources, +// which do not include this header, can detect a GPU-enabled Kokkos build. +#if !defined(LMP_KOKKOS_GPU) && (defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) || defined(KOKKOS_ENABLE_SYCL) || defined(KOKKOS_ENABLE_OPENMPTARGET)) #define LMP_KOKKOS_GPU #endif diff --git a/src/KOKKOS/pair_buck6d_coul_gauss_dsf_kokkos.cpp b/src/KOKKOS/pair_buck6d_coul_gauss_dsf_kokkos.cpp index 45962278b1c..ce6c561e47c 100644 --- a/src/KOKKOS/pair_buck6d_coul_gauss_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_buck6d_coul_gauss_dsf_kokkos.cpp @@ -17,7 +17,6 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "error.h" -#include "ewald_const.h" #include "force.h" #include "kokkos.h" #include "math_const.h" @@ -29,7 +28,6 @@ #include "update.h" using namespace LAMMPS_NS; -using namespace EwaldConst; using MathConst::MY_PIS; /* ---------------------------------------------------------------------- */ @@ -215,15 +213,16 @@ compute_fcoul(const KK_FLOAT& rsq, const int& /*i*/, const int& j, const KK_FLOAT r = Kokkos::sqrt(rsq); const KK_FLOAT alpha = STACKPARAMS ? m_params[itype][jtype].alpha_ij : params(itype,jtype).alpha_ij; const KK_FLOAT f_sh = STACKPARAMS ? m_params[itype][jtype].f_shift_ij : params(itype,jtype).f_shift_ij; - const KK_FLOAT prefactor = factor_coul * qqrd2e * qtmp * q(j); + const KK_FLOAT prefactor = qqrd2e * qtmp * q(j); const KK_FLOAT arg = alpha * r; const KK_FLOAT erfcd = Kokkos::exp(-arg*arg); - // use polynomial approximation for erfc, then erf = 1 - erfc - const KK_FLOAT t = 1.0 / (1.0 + EWALD_P*arg); - const KK_FLOAT erfcc = 1.0 - t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * erfcd; + const KK_FLOAT erfcc = Kokkos::erf(arg); // force: erf(alpha*r)/r -> d/dr = -erf/r^2 + 2*alpha*erfcd/(sqrt(pi)*r) // so fpair = prefactor * (erfcc/r - 2*alpha/MY_PIS*erfcd + r*f_shift) / rsq - return prefactor * (erfcc/r - 2.0*alpha/MY_PIS * erfcd + r*f_sh) * r2inv; + KK_FLOAT forcecoul = prefactor * (erfcc/r - 2.0*alpha/MY_PIS * erfcd + r*f_sh); + // special bonds scaling removes only the undamped 1/r Coulomb part + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor/r; + return forcecoul * r2inv; } /* ---------------------------------------------------------------------- @@ -290,12 +289,13 @@ compute_ecoul(const KK_FLOAT& rsq, const int& /*i*/, const int& j, const KK_FLOAT alpha = STACKPARAMS ? m_params[itype][jtype].alpha_ij : params(itype,jtype).alpha_ij; const KK_FLOAT e_sh = STACKPARAMS ? m_params[itype][jtype].e_shift_ij : params(itype,jtype).e_shift_ij; const KK_FLOAT f_sh = STACKPARAMS ? m_params[itype][jtype].f_shift_ij : params(itype,jtype).f_shift_ij; - const KK_FLOAT prefactor = factor_coul * qqrd2e * qtmp * q(j); + const KK_FLOAT prefactor = qqrd2e * qtmp * q(j) / r; const KK_FLOAT arg = alpha * r; - const KK_FLOAT erfcd = Kokkos::exp(-arg*arg); - const KK_FLOAT t = 1.0 / (1.0 + EWALD_P*arg); - const KK_FLOAT erfcc = 1.0 - t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * erfcd; - return prefactor * (erfcc - r*e_sh - rsq*f_sh) / r; + const KK_FLOAT erfcc = Kokkos::erf(arg); + KK_FLOAT ecoul = prefactor * (erfcc - r*e_sh - rsq*f_sh); + // special bonds scaling removes only the undamped 1/r Coulomb part + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + return ecoul; } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_buck6d_coul_gauss_long_kokkos.cpp b/src/KOKKOS/pair_buck6d_coul_gauss_long_kokkos.cpp index c3da66cb389..98fe7be6490 100644 --- a/src/KOKKOS/pair_buck6d_coul_gauss_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck6d_coul_gauss_long_kokkos.cpp @@ -225,23 +225,13 @@ compute_fcoul(const KK_FLOAT& rsq, const int& /*i*/, const int& j, // Ewald factor: erf(g_ewald * r) const KK_FLOAT grij = g_ewald_kk * r; const KK_FLOAT expm2 = Kokkos::exp(-grij*grij); - const KK_FLOAT tg = static_cast(1.0) / - (static_cast(1.0) + static_cast(EWALD_P)*grij); - const KK_FLOAT erfc_g = tg * (static_cast(A1)+tg*(static_cast(A2)+ - tg * (static_cast(A3)+tg*(static_cast(A4)+ - tg * static_cast(A5))))) * expm2; - const KK_FLOAT erf_ewald = static_cast(1.0) - erfc_g; + const KK_FLOAT erf_ewald = Kokkos::erf(grij); // Gaussian-alpha factor: erf(alpha_ij * r) const KK_FLOAT alpha = STACKPARAMS ? m_params[itype][jtype].alpha_ij : params(itype,jtype).alpha_ij; const KK_FLOAT arg = alpha * r; const KK_FLOAT expa = Kokkos::exp(-arg*arg); - const KK_FLOAT ta = static_cast(1.0) / - (static_cast(1.0) + static_cast(EWALD_P)*arg); - const KK_FLOAT erfc_a = ta * (static_cast(A1)+ta*(static_cast(A2)+ - ta * (static_cast(A3)+ta*(static_cast(A4)+ - ta * static_cast(A5))))) * expa; - const KK_FLOAT erfa = static_cast(1.0) - erfc_a; + const KK_FLOAT erfa = Kokkos::erf(arg); const KK_FLOAT prefactor = qqrd2e * qtmp * q(j) * rinv; const KK_FLOAT falpha = erfa - static_cast(EWALD_F)*arg*expa; @@ -328,28 +318,15 @@ compute_ecoul(const KK_FLOAT& rsq, const int& /*i*/, const int& j, // Ewald factor: erf(g_ewald * r) const KK_FLOAT grij = g_ewald_kk * r; - const KK_FLOAT expm2 = Kokkos::exp(-grij*grij); - const KK_FLOAT tg = static_cast(1.0) / - (static_cast(1.0) + static_cast(EWALD_P)*grij); - const KK_FLOAT erfc_g = tg * (static_cast(A1)+tg*(static_cast(A2)+ - tg * (static_cast(A3)+tg*(static_cast(A4)+ - tg * static_cast(A5))))) * expm2; - const KK_FLOAT erf_ewald = static_cast(1.0) - erfc_g; + const KK_FLOAT erf_ewald = Kokkos::erf(grij); // Gaussian-alpha factor: erf(alpha_ij * r) const KK_FLOAT alpha = STACKPARAMS ? m_params[itype][jtype].alpha_ij : params(itype,jtype).alpha_ij; const KK_FLOAT arg = alpha * r; - const KK_FLOAT expa = Kokkos::exp(-arg*arg); - const KK_FLOAT ta = static_cast(1.0) / - (static_cast(1.0) + static_cast(EWALD_P)*arg); - const KK_FLOAT erfc_a = ta * (static_cast(A1)+ta*(static_cast(A2)+ - ta * (static_cast(A3)+ta*(static_cast(A4)+ - ta * static_cast(A5))))) * expa; - const KK_FLOAT erfa = static_cast(1.0) - erfc_a; + const KK_FLOAT erfa = Kokkos::erf(arg); const KK_FLOAT prefactor = qqrd2e * qtmp * q(j) * rinv; KK_FLOAT ealpha = prefactor * (erfa - erf_ewald); - if (factor_coul < static_cast(1.0)) ealpha -= (static_cast(1.0)-factor_coul)*prefactor*erfa; // optional Coulomb smoothing near cutoff if (rsq > rsmooth_sq_c_kk) { @@ -360,6 +337,9 @@ compute_ecoul(const KK_FLOAT& rsq, const int& /*i*/, const int& j, ealpha *= sme; } + // smoothing is not applied to the special-bonds correction (see CPU version) + if (factor_coul < static_cast(1.0)) ealpha -= (static_cast(1.0)-factor_coul)*prefactor*erfa; + return ealpha; } diff --git a/src/KOKKOS/pair_eam_he_kokkos.cpp b/src/KOKKOS/pair_eam_he_kokkos.cpp new file mode 100644 index 00000000000..ce3f022d3d0 --- /dev/null +++ b/src/KOKKOS/pair_eam_he_kokkos.cpp @@ -0,0 +1,37 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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: Xiaowng Zhou (Sandia) +------------------------------------------------------------------------- */ + +#include "pair_eam_he_kokkos.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +PairEAMHEKokkos::PairEAMHEKokkos(LAMMPS *lmp) : PairEAMKokkos(lmp) +{ + this->fileformat = PairEAM::FS; + this->one_coeff = 1; + this->he_flag = 1; +} + +namespace LAMMPS_NS { +template class PairEAMHEKokkos; +#ifdef LMP_KOKKOS_GPU +template class PairEAMHEKokkos; +#endif +} // namespace LAMMPS_NS diff --git a/src/KOKKOS/pair_eam_he_kokkos.h b/src/KOKKOS/pair_eam_he_kokkos.h new file mode 100644 index 00000000000..75ad52b04d0 --- /dev/null +++ b/src/KOKKOS/pair_eam_he_kokkos.h @@ -0,0 +1,37 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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 PAIR_CLASS +// clang-format off +PairStyle(eam/he/kk,PairEAMHEKokkos); +PairStyle(eam/he/kk/device,PairEAMHEKokkos); +PairStyle(eam/he/kk/host,PairEAMHEKokkos); +// clang-format on +#else + +#ifndef LMP_PAIR_EAM_HE_KOKKOS_H +#define LMP_PAIR_EAM_HE_KOKKOS_H + +#include "pair_eam_kokkos.h" + +namespace LAMMPS_NS { + +template class PairEAMHEKokkos : public PairEAMKokkos { + public: + PairEAMHEKokkos(class LAMMPS *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index f7f80d8cd9a..fc20a880c50 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -134,6 +134,7 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) } rhomax_kk = static_cast(rhomax); + rhomin_kk = static_cast(rhomin); copymode = 1; // zero out density @@ -628,23 +629,23 @@ void PairEAMKokkos::operator()(TagPairEAMKernelB, const int & // fp = derivative of embedding energy at each atom // phi = embedding energy at each atom - // if rho > rhomax (e.g. due to close approach of two atoms), - // will exceed table, so add linear term to conserve energy + // if rho > rhomax (e.g. due to close approach of two atoms) the table is + // exceeded, so add linear term to conserve energy; for eam/he the table + // starts at rhomin and may be exceeded on either side const int i = d_ilist[ii]; const int itype = type(i); - KK_FLOAT p = d_rho[i]*rdrho_kk + static_cast(1.0); - int m = static_cast (p); - m = MAX(1,MIN(m,nrho-1)); - p -= static_cast(m); - p = MIN(p,static_cast(1.0)); + KK_FLOAT p; + int m; + embedding_index_kk(d_rho[i],m,p); const int d_type2frho_i = d_type2frho[itype]; d_fp[i] = (d_frho_spline(d_type2frho_i,m,0)*p + d_frho_spline(d_type2frho_i,m,1))*p + d_frho_spline(d_type2frho_i,m,2); if (EFLAG) { KK_FLOAT phi = ((d_frho_spline(d_type2frho_i,m,3)*p + d_frho_spline(d_type2frho_i,m,4))*p + d_frho_spline(d_type2frho_i,m,5))*p + d_frho_spline(d_type2frho_i,m,6); - if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); + if (he_flag && (d_rho[i] < rhomin_kk)) phi += d_fp[i] * (d_rho[i]-rhomin_kk); + else if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); if (eflag_global) ev.evdwl += static_cast(phi); if (eflag_atom) d_eatom[i] += static_cast(phi); } @@ -707,20 +708,20 @@ void PairEAMKokkos::operator()(TagPairEAMKernelAB, const int // fp = derivative of embedding energy at each atom // phi = embedding energy at each atom - // if rho > rhomax (e.g. due to close approach of two atoms), - // will exceed table, so add linear term to conserve energy - - KK_FLOAT p = d_rho[i]*rdrho_kk + static_cast(1.0); - int m = static_cast (p); - m = MAX(1,MIN(m,nrho-1)); - p -= static_cast(m); - p = MIN(p,static_cast(1.0)); + // if rho > rhomax (e.g. due to close approach of two atoms) the table is + // exceeded, so add linear term to conserve energy; for eam/he the table + // starts at rhomin and may be exceeded on either side + + KK_FLOAT p; + int m; + embedding_index_kk(d_rho[i],m,p); const int d_type2frho_i = d_type2frho[itype]; d_fp[i] = (d_frho_spline(d_type2frho_i,m,0)*p + d_frho_spline(d_type2frho_i,m,1))*p + d_frho_spline(d_type2frho_i,m,2); if (EFLAG) { KK_FLOAT phi = ((d_frho_spline(d_type2frho_i,m,3)*p + d_frho_spline(d_type2frho_i,m,4))*p + d_frho_spline(d_type2frho_i,m,5))*p + d_frho_spline(d_type2frho_i,m,6); - if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); + if (he_flag && (d_rho[i] < rhomin_kk)) phi += d_fp[i] * (d_rho[i]-rhomin_kk); + else if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); if (eflag_global) ev.evdwl += static_cast(phi); if (eflag_atom) d_eatom[i] += static_cast(phi); } @@ -916,20 +917,20 @@ void PairEAMKokkos::operator()(TagPairEAMKernelAB, // fp = derivative of embedding energy at each atom // phi = embedding energy at each atom - // if rho > rhomax (e.g. due to close approach of two atoms), - // will exceed table, so add linear term to conserve energy - - KK_FLOAT p = d_rho[i]*rdrho_kk + static_cast(1.0); - int m = static_cast (p); - m = MAX(1,MIN(m,nrho-1)); - p -= static_cast(m); - p = MIN(p,static_cast(1.0)); + // if rho > rhomax (e.g. due to close approach of two atoms) the table is + // exceeded, so add linear term to conserve energy; for eam/he the table + // starts at rhomin and may be exceeded on either side + + KK_FLOAT p; + int m; + embedding_index_kk(d_rho[i],m,p); const int d_type2frho_i = d_type2frho[itype]; d_fp[i] = (d_frho_spline(d_type2frho_i,m,0)*p + d_frho_spline(d_type2frho_i,m,1))*p + d_frho_spline(d_type2frho_i,m,2); if (EFLAG) { KK_FLOAT phi = ((d_frho_spline(d_type2frho_i,m,3)*p + d_frho_spline(d_type2frho_i,m,4))*p + d_frho_spline(d_type2frho_i,m,5))*p + d_frho_spline(d_type2frho_i,m,6); - if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); + if (he_flag && (d_rho[i] < rhomin_kk)) phi += d_fp[i] * (d_rho[i]-rhomin_kk); + else if (d_rho[i] > rhomax_kk) phi += d_fp[i] * (d_rho[i]-rhomax_kk); if (eflag_global) ev.evdwl += static_cast(phi); if (eflag_atom) d_eatom[i] += static_cast(phi); } diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index c13ab514a09..a7ffcc594a1 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -202,8 +202,32 @@ class PairEAMKokkos : public PairEAM, public KokkosBase { typename AT::t_int_1d d_numneigh; KK_FLOAT rhomax_kk; + KK_FLOAT rhomin_kk; KK_FLOAT rdr_kk; KK_FLOAT rdrho_kk; + + // embedding spline table index m and fractional offset p for density rho_i + // mirrors PairEAM::embedding_index(): classic tables start at 0 and clamp + // at the table ends; eam/he tables start at rhomin and allow extrapolation + // past both ends + + KOKKOS_INLINE_FUNCTION + void embedding_index_kk(const KK_FLOAT rho_i, int &m, KK_FLOAT &p) const + { + if (he_flag) { + p = (rho_i - rhomin_kk)*rdrho_kk + static_cast(1.0); + m = static_cast(p); + m = MAX(2,MIN(m,nrho-1)); + p -= static_cast(m); + p = MAX(static_cast(-1.0),MIN(p,static_cast(1.0))); + } else { + p = rho_i*rdrho_kk + static_cast(1.0); + m = static_cast(p); + m = MAX(1,MIN(m,nrho-1)); + p -= static_cast(m); + p = MIN(p,static_cast(1.0)); + } + } KK_FLOAT cutforcesq_kk; int first; typename AT::t_int_1d d_sendlist; diff --git a/src/KSPACE/ewald_dipole.cpp b/src/KSPACE/ewald_dipole.cpp index b520d8b6d52..f3ffd08ffd0 100644 --- a/src/KSPACE/ewald_dipole.cpp +++ b/src/KSPACE/ewald_dipole.cpp @@ -842,7 +842,7 @@ void EwaldDipole::musum_musq() mu2 = musqsum * force->qqrd2e; } - if (mu2 == 0 && comm->me == 0) + if (mu2 == 0) error->all(FLERR,"Using kspace solver EwaldDipole on system with no dipoles"); } diff --git a/src/KSPACE/ewald_dipole_spin.cpp b/src/KSPACE/ewald_dipole_spin.cpp index 7a03f9a14f4..e3dcdacdfba 100644 --- a/src/KSPACE/ewald_dipole_spin.cpp +++ b/src/KSPACE/ewald_dipole_spin.cpp @@ -820,6 +820,11 @@ void EwaldDipoleSpin::spsum_musq() const int nlocal = atom->nlocal; musum = musqsum = mu2 = 0.0; + + // spin-only systems have no charge channel and qsum_qsq() is never + // called, but the inherited error estimates access these members + + qsum = qsqsum = q2 = 0.0; if (atom->sp_flag) { double** sp = atom->sp; double spx,spy,spz; @@ -842,6 +847,6 @@ void EwaldDipoleSpin::spsum_musq() mu2 = musqsum * mub2mu0; } - if (mu2 == 0 && comm->me == 0) + if (mu2 == 0) error->all(FLERR,"Using kspace solver EwaldDipoleSpin on system with no spins"); } diff --git a/src/KSPACE/pppm_dipole_spin.cpp b/src/KSPACE/pppm_dipole_spin.cpp index c89fb2b8b0a..94a5e88c122 100644 --- a/src/KSPACE/pppm_dipole_spin.cpp +++ b/src/KSPACE/pppm_dipole_spin.cpp @@ -290,7 +290,7 @@ void PPPMDipoleSpin::compute(int eflag, int vflag) // to fully sum contribution in their 3d bricks // remap from 3d decomposition to FFT decomposition - gc_dipole->reverse_comm(Grid3d::KSPACE,this,REVERSE_MU,3,sizeof(FFT_SCALAR), + gc_dipole->reverse_comm(Grid3d::KSPACE,this,REVERSE_MU,4,sizeof(FFT_SCALAR), gc_buf1,gc_buf2,MPI_FFT_SCALAR); brick2fft_dipole(); @@ -304,14 +304,14 @@ void PPPMDipoleSpin::compute(int eflag, int vflag) // all procs communicate E-field values // to fill ghost cells surrounding their 3d bricks - gc_dipole->forward_comm(Grid3d::KSPACE,this,FORWARD_MU,9,sizeof(FFT_SCALAR), + gc_dipole->forward_comm(Grid3d::KSPACE,this,FORWARD_MU,12,sizeof(FFT_SCALAR), gc_buf1,gc_buf2,MPI_FFT_SCALAR); // extra per-atom energy/virial communication if (evflag_atom) - gc->forward_comm(Grid3d::KSPACE,this,FORWARD_MU_PERATOM,18,sizeof(FFT_SCALAR), - gc_buf1,gc_buf2,MPI_FFT_SCALAR); + gc_dipole->forward_comm(Grid3d::KSPACE,this,FORWARD_MU_PERATOM,25,sizeof(FFT_SCALAR), + gc_buf1,gc_buf2,MPI_FFT_SCALAR); // calculate the force on my particles @@ -398,6 +398,8 @@ void PPPMDipoleSpin::make_rho_spin() ngrid*sizeof(FFT_SCALAR)); memset(&(densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, ngrid*sizeof(FFT_SCALAR)); + memset(&(density_brick[nzlo_out][nylo_out][nxlo_out]),0, + ngrid*sizeof(FFT_SCALAR)); // loop over my charges, add their contribution to nearby grid points // (nx,ny,nz) = global coords of grid pt to "lower left" of charge @@ -687,6 +689,11 @@ void PPPMDipoleSpin::spsum_spsq() const int nlocal = atom->nlocal; musum = musqsum = mu2 = 0.0; + + // spin-only systems have no charge channel and qsum_qsq() is never + // called, but the inherited error estimates access these members + + qsum = qsqsum = q2 = 0.0; if (atom->sp_flag) { double **sp = atom->sp; double spx, spy, spz; @@ -713,6 +720,6 @@ void PPPMDipoleSpin::spsum_spsq() mu2 = musqsum * mub2mu0; } - if (mu2 == 0 && comm->me == 0) + if (mu2 == 0) error->all(FLERR,"Using kspace solver PPPMDipoleSpin on system with no spins"); } diff --git a/src/OPENMP/pair_eam_he_omp.cpp b/src/OPENMP/pair_eam_he_omp.cpp new file mode 100644 index 00000000000..2c6b56f6eb8 --- /dev/null +++ b/src/OPENMP/pair_eam_he_omp.cpp @@ -0,0 +1,29 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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: Xiaowng Zhou (Sandia) +------------------------------------------------------------------------- */ + +#include "pair_eam_he_omp.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairEAMHEOMP::PairEAMHEOMP(LAMMPS *lmp) : PairEAMOMP(lmp) +{ + fileformat = FS; + one_coeff = 1; + he_flag = 1; +} diff --git a/src/OPENMP/pair_eam_he_omp.h b/src/OPENMP/pair_eam_he_omp.h new file mode 100644 index 00000000000..f58fa724baa --- /dev/null +++ b/src/OPENMP/pair_eam_he_omp.h @@ -0,0 +1,35 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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 PAIR_CLASS +// clang-format off +PairStyle(eam/he/omp,PairEAMHEOMP); +// clang-format on +#else + +#ifndef LMP_PAIR_EAM_HE_OMP_H +#define LMP_PAIR_EAM_HE_OMP_H + +#include "pair_eam_omp.h" + +namespace LAMMPS_NS { + +class PairEAMHEOMP : public PairEAMOMP { + public: + PairEAMHEOMP(class LAMMPS *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPENMP/pair_eam_omp.cpp b/src/OPENMP/pair_eam_omp.cpp index c530f383dfe..662281fd8a1 100644 --- a/src/OPENMP/pair_eam_omp.cpp +++ b/src/OPENMP/pair_eam_omp.cpp @@ -77,17 +77,32 @@ void PairEAMOMP::compute(int eflag, int vflag) else thr->init_eam(atom->nlocal, rho); - if (evflag) { - if (eflag) { - if (force->newton_pair) eval<1,1,1>(ifrom, ito, &beyond_rhomax, thr); - else eval<1,1,0>(ifrom, ito, &beyond_rhomax, thr); + if (he_flag) { + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,1,0,1>(ifrom, ito, &beyond_rhomax, thr); + } else { + if (force->newton_pair) eval<1,0,1,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,0,0,1>(ifrom, ito, &beyond_rhomax, thr); + } } else { - if (force->newton_pair) eval<1,0,1>(ifrom, ito, &beyond_rhomax, thr); - else eval<1,0,0>(ifrom, ito, &beyond_rhomax, thr); + if (force->newton_pair) eval<0,0,1,1>(ifrom, ito, &beyond_rhomax, thr); + else eval<0,0,0,1>(ifrom, ito, &beyond_rhomax, thr); } } else { - if (force->newton_pair) eval<0,0,1>(ifrom, ito, &beyond_rhomax, thr); - else eval<0,0,0>(ifrom, ito, &beyond_rhomax, thr); + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1,0>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,1,0,0>(ifrom, ito, &beyond_rhomax, thr); + } else { + if (force->newton_pair) eval<1,0,1,0>(ifrom, ito, &beyond_rhomax, thr); + else eval<1,0,0,0>(ifrom, ito, &beyond_rhomax, thr); + } + } else { + if (force->newton_pair) eval<0,0,1,0>(ifrom, ito, &beyond_rhomax, thr); + else eval<0,0,0,0>(ifrom, ito, &beyond_rhomax, thr); + } } thr->timer(Timer::PAIR); @@ -105,7 +120,7 @@ void PairEAMOMP::compute(int eflag, int vflag) } } -template +template void PairEAMOMP::eval(int iifrom, int iito, int *beyond_rhomax, ThrData * const thr) { int i,j,ii,jj,m,jnum,itype,jtype; @@ -201,23 +216,22 @@ void PairEAMOMP::eval(int iifrom, int iito, int *beyond_rhomax, ThrData * const // fp = derivative of embedding energy at each atom // phi = embedding energy at each atom - // if rho > rhomax (e.g. due to close approach of two atoms), - // will exceed table, so add linear term to conserve energy + // if rho > rhomax (e.g. due to close approach of two atoms) the table is + // exceeded, so add linear term to conserve energy; for eam/he the table + // starts at rhomin and may be exceeded on either side for (ii = iifrom; ii < iito; ii++) { i = ilist[ii]; - p = rho[i]*rdrho + 1.0; - m = static_cast (p); - m = MAX(1,MIN(m,nrho-1)); - p -= m; - p = MIN(p,1.0); + embedding_index(rho[i],m,p); coeff = frho_spline[type2frho[type[i]]][m]; fp[i] = (coeff[0]*p + coeff[1])*p + coeff[2]; if (EFLAG) { phi = ((coeff[3]*p + coeff[4])*p + coeff[5])*p + coeff[6]; - if (rho[i] > rhomax) { + if (HE && (rho[i] < rhomin)) { + phi += fp[i] * (rho[i]-rhomin); + } else if (rho[i] > rhomax) { phi += fp[i] * (rho[i]-rhomax); - *beyond_rhomax = 1; + if (!HE) *beyond_rhomax = 1; } e_tally_thr(this, i, i, nlocal, NEWTON_PAIR, scale[type[i]][type[i]]*phi, 0.0, thr); } diff --git a/src/OPENMP/pair_eam_omp.h b/src/OPENMP/pair_eam_omp.h index e801e527629..08fe0ed11d2 100644 --- a/src/OPENMP/pair_eam_omp.h +++ b/src/OPENMP/pair_eam_omp.h @@ -38,7 +38,7 @@ class PairEAMOMP : public PairEAM, public ThrOMP { double memory_usage() override; private: - template + template void eval(int iifrom, int iito, int *beyond_rhomax, ThrData *const thr); }; diff --git a/src/OPT/Install.sh b/src/OPT/Install.sh index 26dd9ced05a..5c8ca9eeceb 100755 --- a/src/OPT/Install.sh +++ b/src/OPT/Install.sh @@ -32,6 +32,8 @@ action pair_eam_alloy_opt.cpp pair_eam_alloy.cpp action pair_eam_alloy_opt.h pair_eam_alloy.cpp action pair_eam_fs_opt.cpp pair_eam_fs.cpp action pair_eam_fs_opt.h pair_eam_fs.cpp +action pair_eam_he_opt.cpp pair_eam_he.cpp +action pair_eam_he_opt.h pair_eam_he.cpp action pair_eam_opt.cpp pair_eam.cpp action pair_eam_opt.h pair_eam.cpp action pair_lj_charmm_coul_long_opt.cpp pair_lj_charmm_coul_long.cpp diff --git a/src/OPT/pair_eam_he_opt.cpp b/src/OPT/pair_eam_he_opt.cpp new file mode 100644 index 00000000000..c6d62e557eb --- /dev/null +++ b/src/OPT/pair_eam_he_opt.cpp @@ -0,0 +1,32 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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: Xiaowng Zhou (Sandia) +------------------------------------------------------------------------- */ + +#include "pair_eam_he_opt.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- + inherit optimized compute() from PairEAMOpt, + select the eam/he file format as in PairEAMHE +------------------------------------------------------------------------- */ + +PairEAMHEOpt::PairEAMHEOpt(LAMMPS *lmp) : PairEAMOpt(lmp) +{ + fileformat = FS; + one_coeff = 1; + he_flag = 1; +} diff --git a/src/OPT/pair_eam_he_opt.h b/src/OPT/pair_eam_he_opt.h new file mode 100644 index 00000000000..4648a49c88d --- /dev/null +++ b/src/OPT/pair_eam_he_opt.h @@ -0,0 +1,35 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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 PAIR_CLASS +// clang-format off +PairStyle(eam/he/opt,PairEAMHEOpt); +// clang-format on +#else + +#ifndef LMP_PAIR_EAM_HE_OPT_H +#define LMP_PAIR_EAM_HE_OPT_H + +#include "pair_eam_opt.h" + +namespace LAMMPS_NS { + +class PairEAMHEOpt : public PairEAMOpt { + public: + PairEAMHEOpt(class LAMMPS *); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/OPT/pair_eam_opt.cpp b/src/OPT/pair_eam_opt.cpp index c51e1e67883..6b909af5135 100644 --- a/src/OPT/pair_eam_opt.cpp +++ b/src/OPT/pair_eam_opt.cpp @@ -43,29 +43,50 @@ void PairEAMOpt::compute(int eflag, int vflag) { ev_init(eflag, vflag); - if (evflag) { - if (eflag) { + if (he_flag) { + if (evflag) { + if (eflag) { + if (force->newton_pair) + return eval<1, 1, 1, 1>(); + else + return eval<1, 1, 0, 1>(); + } else { + if (force->newton_pair) + return eval<1, 0, 1, 1>(); + else + return eval<1, 0, 0, 1>(); + } + } else { if (force->newton_pair) - return eval<1, 1, 1>(); + return eval<0, 0, 1, 1>(); else - return eval<1, 1, 0>(); + return eval<0, 0, 0, 1>(); + } + } else { + if (evflag) { + if (eflag) { + if (force->newton_pair) + return eval<1, 1, 1, 0>(); + else + return eval<1, 1, 0, 0>(); + } else { + if (force->newton_pair) + return eval<1, 0, 1, 0>(); + else + return eval<1, 0, 0, 0>(); + } } else { if (force->newton_pair) - return eval<1, 0, 1>(); + return eval<0, 0, 1, 0>(); else - return eval<1, 0, 0>(); + return eval<0, 0, 0, 0>(); } - } else { - if (force->newton_pair) - return eval<0, 0, 1>(); - else - return eval<0, 0, 0>(); } } /* ---------------------------------------------------------------------- */ -template void PairEAMOpt::eval() +template void PairEAMOpt::eval() { // NOLINTBEGIN typedef struct { @@ -241,23 +262,24 @@ template void PairEAMOpt::eval() // fp = derivative of embedding energy at each atom // phi = embedding energy at each atom - // if rho > rhomax (e.g. due to close approach of two atoms), - // will exceed table, so add linear term to conserve energy + // if rho > rhomax (e.g. due to close approach of two atoms) the table is + // exceeded, so add linear term to conserve energy; for eam/he (HE=1) + // the table starts at rhomin and may be exceeded on either side for (ii = 0; ii < inum; ii++) { i = ilist[ii]; - double p = rho[i] * rdrho + 1.0; - int m = static_cast(p); - m = MAX(1, MIN(m, nrho - 1)); - p -= m; - p = MIN(p, 1.0); + double p; + int m; + embedding_index(rho[i], m, p); coeff = frho_spline[type2frho[type[i]]][m]; fp[i] = (coeff[0] * p + coeff[1]) * p + coeff[2]; if (EFLAG) { double phi = ((coeff[3] * p + coeff[4]) * p + coeff[5]) * p + coeff[6]; - if (rho[i] > rhomax) { + if (HE && (rho[i] < rhomin)) { + phi += fp[i] * (rho[i] - rhomin); + } else if (rho[i] > rhomax) { phi += fp[i] * (rho[i] - rhomax); - beyond_rhomax = 1; + if (!HE) beyond_rhomax = 1; } phi *= scale[type[i]][type[i]]; if (eflag_global) eng_vdwl += phi; diff --git a/src/OPT/pair_eam_opt.h b/src/OPT/pair_eam_opt.h index d9e58209be6..76bccf79136 100644 --- a/src/OPT/pair_eam_opt.h +++ b/src/OPT/pair_eam_opt.h @@ -31,7 +31,7 @@ class PairEAMOpt : public PairEAM { void compute(int, int) override; private: - template void eval(); + template void eval(); }; } // namespace LAMMPS_NS diff --git a/src/Purge.list b/src/Purge.list index 78022c0fe09..17abd99372e 100644 --- a/src/Purge.list +++ b/src/Purge.list @@ -1793,8 +1793,6 @@ scafacos.h scafacos.cpp compute_voronoi_atom.h compute_voronoi_atom.cpp -dump_vtk.h -dump_vtk.cpp bond_oxdna2_fene.cpp bond_oxrna2_fene.cpp pair_oxdna2_excv.cpp diff --git a/src/SPH/pair_sph_lj.cpp b/src/SPH/pair_sph_lj.cpp index 26f682336cd..f6d03a6a5c3 100644 --- a/src/SPH/pair_sph_lj.cpp +++ b/src/SPH/pair_sph_lj.cpp @@ -139,9 +139,11 @@ void PairSPHLJ::compute(int eflag, int vflag) // apply long-range correction to model a LJ fluid with cutoff // this implies that the modelled LJ fluid has cutoff == SPH cutoff + // the correction enters the pressure term of both atoms of the pair; + // add both halves to the pair-local fj so the per-atom fi is not + // corrupted across neighbor list entries lrc = - 11.1701 * (ihcub * ihcub * ihcub - 1.5 * ihcub); - fi += lrc; - fj += lrc; + fj += 2.0 * lrc; // dot product of velocity delta and distance vector delVdotDelR = delx * (vxtmp - v[j][0]) + dely * (vytmp - v[j][1]) diff --git a/src/VTK/Install.sh b/src/VTK/Install.sh deleted file mode 100755 index c262a9a6d07..00000000000 --- a/src/VTK/Install.sh +++ /dev/null @@ -1,36 +0,0 @@ -# Install/unInstall package files in LAMMPS -# mode = 0/1/2 for uninstall/install/update - -mode=$1 - -# enforce using portable C locale -LC_ALL=C -export LC_ALL - -action () { - if (test $mode = 0) then - rm -f ../$1 - fi -} - -for file in *.cpp *.h; do - test -f ${file} && action $file -done - -# edit 2 Makefile.package files to include/exclude package info - -if (test $1 = 1 || test $1 = 2) then - echo "The VTK package no longer supports the legacy build system. Please build LAMMPS with CMake instead." - exit 1 - -elif (test $1 = 0) then - - if (test -e ../Makefile.package) then - sed -i -e 's/[^ \t]*vtk[^ \t]* //g' ../Makefile.package - fi - - if (test -e ../Makefile.package.settings) then - sed -i -e '/^[ \t]*include.*vtk.*$/d' ../Makefile.package.settings - fi - -fi diff --git a/src/VTK/README b/src/VTK/README deleted file mode 100644 index 3429c96b728..00000000000 --- a/src/VTK/README +++ /dev/null @@ -1,17 +0,0 @@ -This package implements the "dump vtk" command which can be used in a -LAMMPS input script. - -This dump allows output of atom data similar to the dump custom -command, but in VTK format. - -This package uses the VTK library (www.vtk.org) which must be -installed on your system. See the lib/vtk/README file and the LAMMPS -manual for information on building LAMMPS with external libraries. -The settings in the Makefile.lammps file in that directory must be -correct for LAMMPS to build correctly with this package installed. - -This code was initially developed for LIGGGHTS by Daniel Queteschiner -at DCS Computing. This is an effort to integrate it back to LAMMPS. - -The person who created this package is Richard Berger at JKU -(richard.berger@jku.at). Contact him directly if you have questions. diff --git a/src/dump.cpp b/src/dump.cpp index 4e53dfc805d..b7ba04919f8 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -114,6 +114,7 @@ Dump::Dump(LAMMPS *lmp, int /*narg*/, char **arg) : size_one = 0; multiproc = 0; + nfile = nper = 1; nclusterprocs = nprocs; filewriter = 0; if (me == 0) filewriter = 1; @@ -212,9 +213,6 @@ void Dump::init() } if (sort_flag) { - if (multiproc > 1) - error->all(FLERR, Error::NOLASTLINE, - "Cannot sort dump when 'nfile' or 'fileper' keywords have non-default values"); if (sortcol == 0 && atom->tag_enable == 0) error->all(FLERR, Error::NOLASTLINE, "Cannot sort dump on atom IDs with no atom IDs defined"); @@ -902,6 +900,22 @@ void Dump::balance() memory->create(proc_offsets,nprocs+1,"dump:proc_offsets"); memory->create(proc_new_offsets,nprocs+1,"dump:proc_new_offsets"); + static int warn = 1; + if (warn && multiproc > 1 && me == 0) { + if (nprocs % nfile) { + error->warning(FLERR,"Dump file balancing requested but dump_modify 'nfile'" + " keyword does not divide the number processors evenly;" + " dump files will be of different lengths"); + warn = 0; + } + if (nprocs % nper) { + error->warning(FLERR,"Dump file balancing requested but dump_modify 'fileper'" + " keyword does not divide the number processors evenly;" + " dump files will be of different lengths"); + warn = 0; + } + } + // compute atom offset for this proc bigint offset; @@ -1142,7 +1156,7 @@ void Dump::modify_params(int narg, char **arg) if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify fileper", error); if (!multiproc) error->all(FLERR, iarg, "Cannot use dump_modify fileper without % in dump file name"); - int nper = utils::inumeric(FLERR,arg[iarg+1],false,lmp); + nper = utils::inumeric(FLERR,arg[iarg+1],false,lmp); if (nper <= 0) error->all(FLERR, iarg + 1, "Invalid dump_modify fileper argument: {}", nper); multiproc = nprocs/nper; @@ -1236,7 +1250,7 @@ void Dump::modify_params(int narg, char **arg) if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "dump_modify nfile", error); if (!multiproc) error->all(FLERR,"Cannot use dump_modify nfile without % in dump file name"); - int nfile = utils::inumeric(FLERR,arg[iarg+1],false,lmp); + nfile = utils::inumeric(FLERR,arg[iarg+1],false,lmp); if (nfile <= 0) error->all(FLERR, "Invalid dump_modify nfile argument: {}", nfile); nfile = MIN(nfile,nprocs); diff --git a/src/dump.h b/src/dump.h index c2fd45e2477..1ddc30d007b 100644 --- a/src/dump.h +++ b/src/dump.h @@ -92,6 +92,8 @@ class Dump : protected Pointers { int write_header_flag; // 1 if write header, 0 if not int has_id; // 1 if output contains Atom-IDs + int nfile, nper; + bigint delaystep; int refreshflag; // 1 if dump_modify refresh specified diff --git a/src/dump_grid_vtk.cpp b/src/dump_grid_vtk.cpp index eff3c55cf74..66f9c727b6b 100644 --- a/src/dump_grid_vtk.cpp +++ b/src/dump_grid_vtk.cpp @@ -15,18 +15,25 @@ #include "domain.h" #include "error.h" +#include "force.h" #include "memory.h" +#include +#include +#include + using namespace LAMMPS_NS; enum { SCALAR, VECTOR }; +enum { VTKLEGACY, VTKXML }; +enum { RECTILINEAR, IMAGE }; /* ---------------------------------------------------------------------- */ DumpGridVTK::DumpGridVTK(LAMMPS *lmp, int narg, char **arg) : DumpGrid(lmp, narg, arg), xcoord(nullptr), ycoord(nullptr), zcoord(nullptr) { - if (binary || multiproc) error->all(FLERR, "Invalid dump grid/vtk filename: {}", filename); + if (multiproc) error->all(FLERR, "Invalid dump grid/vtk filename: {}", filename); if (nfield != 1 && nfield != 3) error->all(FLERR, "Dump grid/vtk requires one or three fields\n"); buffer_allow = 0; @@ -35,6 +42,27 @@ DumpGridVTK::DumpGridVTK(LAMMPS *lmp, int narg, char **arg) : sortcol = 0; mode = (nfield == 1) ? SCALAR : VECTOR; + + // the file name extension selects which of the file formats to write. + // an unrecognized extension keeps the XML rectilinear grid default. + + vtkflavor = VTKXML; + dataset = RECTILINEAR; + precision_warned = 0; + writeprec = VTKWriter::SINGLE; + + std::string fname(filename); + auto dot = fname.find_last_of('.'); + if (dot != std::string::npos) { + const std::string ext = fname.substr(dot); + if (ext == ".vtk") { + vtkflavor = VTKLEGACY; + dataset = RECTILINEAR; + } else if (ext == ".vti") { + vtkflavor = VTKXML; + dataset = IMAGE; + } + } } /* ---------------------------------------------------------------------- */ @@ -57,9 +85,11 @@ void DumpGridVTK::init_style() if (domain->triclinic) error->all(FLERR, "Dump grid/vtk does not support triclinic simulation boxes, use dump grid instead"); - if (binary) error->all(FLERR, "Dump grid/vtk cannot write binary files\n"); - if (!xcoord) { + // the image data format describes the grid by origin and spacing alone, + // so the cell boundary coordinates are only needed for rectilinear grids + + if ((dataset == RECTILINEAR) && !xcoord) { memory->create(xcoord, nxgrid + 1, "dumpgridVTK:xcoord"); memory->create(ycoord, nygrid + 1, "dumpgridVTK:ycoord"); memory->create(zcoord, nzgrid + 1, "dumpgridVTK:zcoord"); @@ -72,40 +102,21 @@ void DumpGridVTK::write_header(bigint /*ndump*/) { if (me) return; - xyz_grid(); - - fprintf(fp, "\n"); - fprintf(fp, "\n"); - fprintf(fp, - "\n", - nxgrid, nygrid, nzgrid); - fprintf(fp, "\n", nxgrid, nygrid, nzgrid); - fprintf(fp, "\n"); - fprintf(fp, "\n"); - fprintf(fp, "\n"); - - // coords of center point of grid cells in each of xyz dimensions - - fprintf(fp, "\n"); - for (int i = 0; i <= nxgrid; i++) fprintf(fp, "%g ", xcoord[i]); - fprintf(fp, "\n\n"); - fprintf(fp, "\n"); - for (int i = 0; i <= nygrid; i++) fprintf(fp, "%g ", ycoord[i]); - fprintf(fp, "\n\n"); - fprintf(fp, "\n"); - for (int i = 0; i <= nzgrid; i++) fprintf(fp, "%g ", zcoord[i]); - fprintf(fp, "\n\n"); - - fprintf(fp, "\n"); - - fprintf(fp, "\n"); - if (mode == SCALAR) - fprintf(fp, "\n"); - else if (mode == VECTOR) - fprintf(fp, - "\n"); + // the grid data of one snapshot is collected by write_data() and only + // written out by write_footer(), so all this has to do is prepare for it + + if (dataset == RECTILINEAR) xyz_grid(); + + values.clear(); + values.reserve((std::size_t) nxgrid * nygrid * nzgrid * nfield); +} + +/* ---------------------------------------------------------------------- */ + +void DumpGridVTK::write_data(int n, double *mybuf) +{ + const std::size_t nvalues = (std::size_t) n * nfield; + for (std::size_t m = 0; m < nvalues; m++) values.push_back(mybuf[m]); } /* ---------------------------------------------------------------------- */ @@ -114,30 +125,74 @@ void DumpGridVTK::write_footer() { if (me) return; - fprintf(fp, "\n"); - fprintf(fp, "\n"); - fprintf(fp, "\n"); - fprintf(fp, "\n"); - fprintf(fp, "\n"); + try { + VTKWriter writer((vtkflavor == VTKXML) ? VTKWriter::XML : VTKWriter::LEGACY, binary != 0, + writeprec); + + if (dataset == IMAGE) { + + // the grid cells all have the same size, so the grid can be described + // by its origin and spacing alone + + const int dims[3] = {nxgrid + 1, nygrid + 1, nzgrid + 1}; + const double origin[3] = {domain->boxlo[0], domain->boxlo[1], domain->boxlo[2]}; + const double spacing[3] = {domain->prd[0] / nxgrid, domain->prd[1] / nygrid, + domain->prd[2] / nzgrid}; + writer.set_image_data(dims, origin, spacing); + + } else { + + // grid cell coordinates bound the cells, so there is one more of them + // than there are cells in each dimension + + writer.set_rectilinear_grid({xcoord, xcoord + nxgrid + 1}, {ycoord, ycoord + nygrid + 1}, + {zcoord, zcoord + nzgrid + 1}); + } + + // the collected data is donated to the writer, it is rebuilt for every + // snapshot anyway + + writer.add_cell_array((mode == SCALAR) ? "Scalar" : "Vector", nfield, std::move(values)); + writer.write(fp); + + // grid coordinates are stored in single precision by default, warn once + // if that no longer resolves them well enough. with dump_modify double + // yes nothing is tracked, so the warning is skipped automatically. + + const double maxcoord = writer.max_single_precision_value(); + const double resolution = VTKWriter::single_precision_resolution(maxcoord, force->angstrom); + if (!precision_warned && (resolution > 0.0)) { + precision_warned = 1; + error->warning(FLERR, + "Dump grid/vtk writes grid coordinates in single precision, which " + "resolves the largest coordinate of this grid, {:.4g}, to only about {:.2g} " + "length units. Use dump_modify double yes if your analysis needs more " + "resolution than that.", + maxcoord, resolution); + } + } catch (VTKWriterException &e) { + error->one(FLERR, "Cannot write dump grid/vtk file {}: {}", filename, e.what()); + } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + the VTK file name extensions collide with the LAMMPS convention of + appending ".bin" to select binary output, so offer a keyword instead +------------------------------------------------------------------------- */ -void DumpGridVTK::write_data(int n, double *mybuf) +int DumpGridVTK::modify_param(int narg, char **arg) { - int m = 0; - for (int i = 0; i < n; i++) { - for (int j = 0; j < nfield; j++) { - if (vtype[j] == Dump::INT) - fprintf(fp, vformat[j], static_cast(mybuf[m])); - else if (vtype[j] == Dump::DOUBLE) - fprintf(fp, vformat[j], mybuf[m]); - else if (vtype[j] == Dump::BIGINT) - fprintf(fp, vformat[j], static_cast(mybuf[m])); - m++; - } - fprintf(fp, "\n"); + if (strcmp(arg[0], "binary") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify binary", error); + binary = utils::logical(FLERR, arg[1], false, lmp); + return 2; + } + if (strcmp(arg[0], "double") == 0) { + if (narg < 2) utils::missing_cmd_args(FLERR, "dump_modify double", error); + writeprec = utils::logical(FLERR, arg[1], false, lmp) ? VTKWriter::DOUBLE : VTKWriter::SINGLE; + return 2; } + return 0; } /* ---------------------------------------------------------------------- */ diff --git a/src/dump_grid_vtk.h b/src/dump_grid_vtk.h index 31d49b04ff6..b38d3e43835 100644 --- a/src/dump_grid_vtk.h +++ b/src/dump_grid_vtk.h @@ -21,6 +21,9 @@ DumpStyle(grid/vtk,DumpGridVTK); #define LMP_DUMP_GRID_VTK_H #include "dump_grid.h" +#include "vtk_writer.h" + +#include namespace LAMMPS_NS { @@ -31,7 +34,12 @@ class DumpGridVTK : public DumpGrid { protected: int mode; + int vtkflavor; // VTKLEGACY or VTKXML + int dataset; // RECTILINEAR or IMAGE + int precision_warned; // 1 after the single precision warning was printed + VTKWriter::Precision writeprec; // precision of floating point output, dump_modify double double *xcoord, *ycoord, *zcoord; + std::vector values; // grid cell data collected for one snapshot // methods @@ -39,6 +47,7 @@ class DumpGridVTK : public DumpGrid { void write_header(bigint) override; void write_data(int, double *) override; void write_footer() override; + int modify_param(int, char **) override; void xyz_grid(); }; diff --git a/src/error.cpp b/src/error.cpp index f22264bd7c7..f2969edca00 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -33,9 +33,18 @@ static std::string truncpath(const std::string &path) /* ---------------------------------------------------------------------- */ +void Error::reset_warn() +{ + numwarn = allwarn = 0; + maxwarn = 100; +} + +/* ---------------------------------------------------------------------- */ + Error::Error(LAMMPS *lmp) - : Pointers(lmp), numwarn(0), maxwarn(100), allwarn(0), showerror(1) + : Pointers(lmp), showerror(1) { + Error::reset_warn(); last_error_message.clear(); last_error_type = ERROR_NONE; } diff --git a/src/error.h b/src/error.h index 2493fc4cc5b..83ed58eff15 100644 --- a/src/error.h +++ b/src/error.h @@ -89,6 +89,7 @@ class Error : protected Pointers { void set_numwarn(int val) { numwarn = val; } void set_maxwarn(int val) { maxwarn = val; } void set_allwarn(int val) { allwarn = val; } + void reset_warn(); [[nodiscard]] std::string get_last_error() const; [[nodiscard]] ErrorType get_last_error_type() const; diff --git a/src/fmt/format.h b/src/fmt/format.h index cdfbf5f6c2b..d6df8c95807 100644 --- a/src/fmt/format.h +++ b/src/fmt/format.h @@ -58,6 +58,7 @@ namespace fmt using std::format; using std::format_args; using std::format_error; + using std::format_to; using std::make_format_args; using std::string_view; using std::vformat; diff --git a/src/input.cpp b/src/input.cpp index e63475cdcb5..a4ef7835a20 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -898,7 +898,10 @@ void Input::clear() lmp->destroy(); lmp->create(); lmp->post_create(); + + // reset to clean status for classes that are not re-created variable->clear_in_progress(); + error->reset_warn(); } /* ---------------------------------------------------------------------- */ diff --git a/src/thermo.cpp b/src/thermo.cpp index 3e9ff646818..09efd2231b8 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -657,11 +657,11 @@ void Thermo::modify_params(int narg, char **arg) error->set_maxwarn(0); else if (strcmp(arg[iarg + 1], "reset") == 0) { error->set_numwarn(0); + error->set_allwarn(0); warnbefore = 0; } else if (strcmp(arg[iarg + 1], "default") == 0) { warnbefore = 0; - error->set_numwarn(0); - error->set_maxwarn(100); + error->reset_warn(); } else error->set_maxwarn(utils::inumeric(FLERR, arg[iarg + 1], false, lmp)); iarg += 2; diff --git a/src/vtk_writer.cpp b/src/vtk_writer.cpp new file mode 100644 index 00000000000..9d727f1fe36 --- /dev/null +++ b/src/vtk_writer.cpp @@ -0,0 +1,848 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Writer for the subset of the VTK file formats used by LAMMPS. The + layouts implemented here were determined from the output of VTK 9.2 so + that files written without the VTK library are read back the same way. + The relevant details, none of which are obvious from the format + documentation: + + legacy format + * the version line says 5.1. that revision replaced the old inline cell + lists with separate OFFSETS and CONNECTIVITY arrays. + * data arrays that are not the active scalars end up in a single + "FIELD FieldData " section, one header line plus values per array. + * binary payloads follow the newline of their keyword line as raw + BIG endian values and are followed by another newline. + * strings carry a length prefix. lengths below 64 use the single byte + 0xc0|len; longer strings use undocumented multi byte forms, so we + refuse to write those rather than guess. + + XML format + * the file version is 0.1 and the byte count header type is UInt32. + * inline binary data is base64 encoded. without compression the header + and the data form a single encoded stream, but with compression the + header is encoded separately and the two encodings are concatenated. + * the compressed header is [nblocks][block size][size of last partial + block][compressed size per block]. we always use a single block. + * cell offsets are END offsets and have one entry per cell, unlike the + legacy format where they start at zero and have one extra entry. + * string arrays use , not , and their ASCII form is a + list of decimal character codes with a zero terminating each string. +------------------------------------------------------------------------- */ + +#include "vtk_writer.h" + +#include "safe_pointers.h" +#include "utils.h" + +#include +#include +#include +#include +#include + +#if defined(LAMMPS_ZLIB) +#include +#endif + +using namespace LAMMPS_NS; + +static constexpr int PER_LINE = 9; +static constexpr int VTK_VERTEX = 1; +static constexpr int VTK_HEXAHEDRON = 12; + +// longest string we can write into a binary legacy file, see file header + +static constexpr std::size_t MAX_BINARY_STRING = 63; + +namespace { + +const char b64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +bool little_endian() +{ + const int one = 1; + return *((const char *) &one) == 1; +} + +std::string base64(const void *data, std::size_t len) +{ + const auto *d = static_cast(data); + std::string out; + out.reserve(((len + 2) / 3) * 4); + + std::size_t i = 0; + for (; i + 3 <= len; i += 3) { + const unsigned v = (d[i] << 16) | (d[i + 1] << 8) | d[i + 2]; + out += b64chars[(v >> 18) & 63]; + out += b64chars[(v >> 12) & 63]; + out += b64chars[(v >> 6) & 63]; + out += b64chars[v & 63]; + } + if (i + 1 == len) { + const unsigned v = d[i] << 16; + out += b64chars[(v >> 18) & 63]; + out += b64chars[(v >> 12) & 63]; + out += "=="; + } else if (i + 2 == len) { + const unsigned v = (d[i] << 16) | (d[i + 1] << 8); + out += b64chars[(v >> 18) & 63]; + out += b64chars[(v >> 12) & 63]; + out += b64chars[(v >> 6) & 63]; + out += '='; + } + return out; +} + +// encode a block of raw bytes the way the VTK library does for inline binary +// XML data. see the notes at the top of this file for the layout. + +std::string encode_bytes(const std::string &raw) +{ +#if defined(LAMMPS_ZLIB) + uLongf bound = compressBound(static_cast(raw.size())); + std::vector buf(bound ? bound : 1); + if (compress(buf.data(), &bound, reinterpret_cast(raw.data()), + static_cast(raw.size())) == Z_OK) { + const std::uint32_t header[4] = {1U, static_cast(raw.size()), 0U, + static_cast(bound)}; + return base64(header, sizeof(header)) + base64(buf.data(), bound); + } + // fall through to writing the data uncompressed if zlib fails +#endif + std::string block; + block.reserve(raw.size() + sizeof(std::uint32_t)); + const auto nbytes = static_cast(raw.size()); + block.append(reinterpret_cast(&nbytes), sizeof(nbytes)); + block.append(raw); + return base64(block.data(), block.size()); +} + +// append the raw bytes of a value in the host byte order + +template void append_raw(std::string &out, T value) +{ + out.append(reinterpret_cast(&value), sizeof(T)); +} + +// write raw values in big endian byte order, as legacy binary files require. +// the bytes are reordered through char pointers on purpose and are never +// loaded back into a variable of the original type: reversing floating point +// numbers by way of a floating point register can alter them on some +// platforms. keep this loop byte-wise if it is ever optimized. the fixed +// chunk buffer bounds the transient memory for large arrays. + +template void fwrite_be(FILE *fp, const std::vector &values) +{ + if (values.empty()) return; + if (!little_endian()) { + fwrite(values.data(), sizeof(T), values.size(), fp); + return; + } + char buf[8192]; + std::size_t used = 0; + for (const auto &value : values) { + const auto *src = reinterpret_cast(&value); + for (std::size_t b = 0; b < sizeof(T); ++b) buf[used + b] = src[sizeof(T) - 1 - b]; + used += sizeof(T); + if (used + sizeof(T) > sizeof(buf)) { + fwrite(buf, 1, used, fp); + used = 0; + } + } + if (used) fwrite(buf, 1, used, fp); +} + +// append the shortest decimal representation that reads back as the same +// number. the VTK library writes 11 significant digits for doubles instead, +// but that does not round-trip, which defeats the point of double precision +// output. + +template void append_value(std::string &out, T value) +{ + fmt::format_to(std::back_inserter(out), "{}", value); +} + +void append_value(std::string &out, std::uint8_t value) +{ + fmt::format_to(std::back_inserter(out), "{}", static_cast(value)); +} + +std::string fmt_double(double value) +{ + return fmt::format("{}", value); +} + +// write values of a legacy data section, either as text or as binary. the +// text is flushed in chunks so that large arrays need neither one stdio +// call per value nor the whole payload in memory. + +static constexpr std::size_t WRITE_CHUNK = 1 << 20; + +template void write_legacy_values(FILE *fp, bool binary, const std::vector &values) +{ + if (binary) { + fwrite_be(fp, values); + fputc('\n', fp); + return; + } + std::string out; + for (std::size_t i = 0; i < values.size(); ++i) { + append_value(out, values[i]); + out += ((i + 1) % PER_LINE == 0) ? '\n' : ' '; + if (out.size() > WRITE_CHUNK) { + fwrite(out.data(), 1, out.size(), fp); + out.clear(); + } + } + if (values.size() % PER_LINE != 0) out += '\n'; + fwrite(out.data(), 1, out.size(), fp); +} + +// build the content of an XML data array, either as text or base64 encoded + +template std::string xml_values(bool binary, const std::vector &values, int indent) +{ + if (binary) { + std::string raw; + raw.reserve(values.size() * sizeof(T)); + for (const auto &value : values) append_raw(raw, value); + return std::string(indent, ' ') + encode_bytes(raw) + "\n"; + } + + const std::string pad(indent, ' '); + std::string out; + out.reserve(values.size() * 8 + (values.size() / PER_LINE + 1) * pad.size()); + for (std::size_t i = 0; i < values.size(); ++i) { + if (i % PER_LINE == 0) out += pad; + append_value(out, values[i]); + out += ((i + 1) % PER_LINE == 0) ? '\n' : ' '; + } + if (values.size() % PER_LINE != 0) out += '\n'; + return out; +} + +} // namespace + +/* ---------------------------------------------------------------------- + remember the largest coordinate magnitude that goes through single + precision, so that callers can warn when its resolution is no longer + sufficient. only the set_*() methods call this: data arrays need no + tracking since their values only require relative resolution +------------------------------------------------------------------------- */ + +void VTKWriter::track_single(const std::vector &values) +{ + if (prec != SINGLE) return; + for (const double v : values) + if (std::fabs(v) > maxsingle) maxsingle = std::fabs(v); +} + +/* ---------------------------------------------------------------------- + write a list of floating point values in the precision selected for + this writer +------------------------------------------------------------------------- */ + +void VTKWriter::write_legacy_reals(FILE *fp, const std::vector &values) +{ + if (prec == SINGLE) { + const std::vector single(values.begin(), values.end()); + write_legacy_values(fp, binary, single); + } else { + write_legacy_values(fp, binary, values); + } +} + +std::string VTKWriter::xml_reals(const std::vector &values, int indent) const +{ + if (prec == SINGLE) { + const std::vector single(values.begin(), values.end()); + return xml_values(binary, single, indent); + } + return xml_values(binary, values, indent); +} + +const char *VTKWriter::legacy_real_type() const +{ + return (prec == SINGLE) ? "float" : "double"; +} + +const char *VTKWriter::xml_real_type() const +{ + return xml_real_type(prec); +} + +const char *VTKWriter::xml_real_type(Precision precision) +{ + return (precision == SINGLE) ? "Float32" : "Float64"; +} + +const char *VTKWriter::xml_byte_order() +{ + return little_endian() ? "LittleEndian" : "BigEndian"; +} + +double VTKWriter::single_precision_resolution(double maxcoord, double angstrom) +{ + if (maxcoord <= SINGLE_PRECISION_LIMIT * angstrom) return 0.0; + return maxcoord * std::numeric_limits::epsilon(); +} + +/* ---------------------------------------------------------------------- */ + +VTKWriter::VTKWriter(Flavor _flavor, bool _binary, Precision _prec) : + flavor(_flavor), binary(_binary), prec(_prec), maxsingle(0.0), dataset(NONE), + title("Generated by LAMMPS"), npoints(0), ncells(0), celltype(VTK_VERTEX) +{ + dims[0] = dims[1] = dims[2] = 0; + origin[0] = origin[1] = origin[2] = 0.0; + spacing[0] = spacing[1] = spacing[2] = 1.0; +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_title(const std::string &_title) +{ + // the legacy format reserves a single line of at most 256 characters + + title = _title.substr(0, 256); + for (auto &c : title) + if (c == '\n' || c == '\r') c = ' '; +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_vertex_cells(std::vector &&xyz, Dataset type) +{ + if (dataset != NONE) throw VTKWriterException("VTK writer already has a dataset"); + if (xyz.size() % 3) throw VTKWriterException("VTK point list is not a multiple of 3"); + + points = std::move(xyz); + track_single(points); + npoints = static_cast(points.size() / 3); + ncells = npoints; + celltype = VTK_VERTEX; + dataset = type; +} + +void VTKWriter::set_polydata(std::vector xyz) +{ + set_vertex_cells(std::move(xyz), POLYDATA); +} + +void VTKWriter::set_unstructured_grid(std::vector xyz) +{ + set_vertex_cells(std::move(xyz), UNSTRUCTURED); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_hexahedron(const double corners[8][3]) +{ + if (dataset != NONE) throw VTKWriterException("VTK writer already has a dataset"); + + points.resize(24); + for (int i = 0; i < 8; ++i) + for (int j = 0; j < 3; ++j) points[3 * i + j] = corners[i][j]; + + track_single(points); + npoints = 8; + ncells = 1; + celltype = VTK_HEXAHEDRON; + dataset = UNSTRUCTURED; +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_rectilinear_grid(std::vector xc, std::vector yc, + std::vector zc) +{ + if (dataset != NONE) throw VTKWriterException("VTK writer already has a dataset"); + if (xc.empty() || yc.empty() || zc.empty()) + throw VTKWriterException("VTK rectilinear grid needs coordinates in all 3 dimensions"); + + xcoord = std::move(xc); + ycoord = std::move(yc); + zcoord = std::move(zc); + track_single(xcoord); + track_single(ycoord); + track_single(zcoord); + dims[0] = static_cast(xcoord.size()); + dims[1] = static_cast(ycoord.size()); + dims[2] = static_cast(zcoord.size()); + npoints = dims[0] * dims[1] * dims[2]; + ncells = (dims[0] - 1) * (dims[1] - 1) * (dims[2] - 1); + dataset = RECTILINEAR; +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_image_data(const int _dim[3], const double _origin[3], const double _spacing[3]) +{ + if (dataset != NONE) throw VTKWriterException("VTK writer already has a dataset"); + if (_dim[0] < 1 || _dim[1] < 1 || _dim[2] < 1) + throw VTKWriterException("VTK image data needs at least one point per dimension"); + + for (int i = 0; i < 3; ++i) { + dims[i] = _dim[i]; + origin[i] = _origin[i]; + spacing[i] = _spacing[i]; + } + npoints = dims[0] * dims[1] * dims[2]; + ncells = (dims[0] - 1) * (dims[1] - 1) * (dims[2] - 1); + if (ncells < 0) ncells = 0; + dataset = IMAGE; +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::add_array(std::vector &arrays, int nitems, const char *kind, + DataArray &&array) +{ + if (dataset == NONE) throw VTKWriterException("VTK writer has no dataset selected"); + if (array.ncomp < 1) throw VTKWriterException("VTK data array needs at least one component"); + + std::size_t nvalues = 0; + switch (array.type) { + case TYPE_INT: + nvalues = array.ivalues.size(); + break; + case TYPE_DOUBLE: + nvalues = array.dvalues.size(); + break; + case TYPE_STRING: + nvalues = array.svalues.size(); + break; + } + + if (nvalues != static_cast(nitems) * array.ncomp) + throw VTKWriterException(fmt::format("VTK data array {} has {} values but {} {} times {} " + "components are required", + array.name, nvalues, nitems, kind, array.ncomp)); + + arrays.push_back(std::move(array)); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::add_point_array(const std::string &name, int ncomp, std::vector data) +{ + add_array(point_arrays, npoints, "points", + DataArray{name, TYPE_INT, ncomp, std::move(data), {}, {}}); +} + +void VTKWriter::add_point_array(const std::string &name, int ncomp, std::vector data) +{ + add_array(point_arrays, npoints, "points", + DataArray{name, TYPE_DOUBLE, ncomp, {}, std::move(data), {}}); +} + +void VTKWriter::add_point_array(const std::string &name, std::vector data) +{ + add_array(point_arrays, npoints, "points", + DataArray{name, TYPE_STRING, 1, {}, {}, std::move(data)}); +} + +void VTKWriter::add_cell_array(const std::string &name, int ncomp, std::vector data) +{ + add_array(cell_arrays, ncells, "cells", + DataArray{name, TYPE_INT, ncomp, std::move(data), {}, {}}); +} + +void VTKWriter::add_cell_array(const std::string &name, int ncomp, std::vector data) +{ + add_array(cell_arrays, ncells, "cells", + DataArray{name, TYPE_DOUBLE, ncomp, {}, std::move(data), {}}); +} + +void VTKWriter::add_cell_array(const std::string &name, std::vector data) +{ + add_array(cell_arrays, ncells, "cells", DataArray{name, TYPE_STRING, 1, {}, {}, std::move(data)}); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::set_active_scalars(const std::string &name) +{ + for (const auto &array : point_arrays) + if (array.name == name) { + scalars = name; + return; + } + for (const auto &array : cell_arrays) + if (array.name == name) { + scalars = name; + return; + } + throw VTKWriterException(fmt::format("VTK data array {} was not added to this writer", name)); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write(const std::string &filename) +{ + SafeFilePtr fp(fopen(filename.c_str(), "wb")); + if (!fp) throw VTKWriterException(fmt::format("Cannot open VTK file {}", filename)); + write(fp); +} + +void VTKWriter::write(FILE *fp) +{ + if (dataset == NONE) throw VTKWriterException("VTK writer has no dataset selected"); + if (flavor == LEGACY) + write_legacy(fp); + else + write_xml(fp); +} + +/* ---------------------------------------------------------------------- + legacy format +------------------------------------------------------------------------- */ + +void VTKWriter::write_legacy_cells(FILE *fp, const char *keyword) +{ + // the legacy offsets start at zero, so there is one more of them than cells + + std::vector offsets(ncells + 1); + const int per_cell = (celltype == VTK_HEXAHEDRON) ? 8 : 1; + for (int i = 0; i <= ncells; ++i) offsets[i] = static_cast(i) * per_cell; + + std::vector connectivity(static_cast(ncells) * per_cell); + for (std::size_t i = 0; i < connectivity.size(); ++i) + connectivity[i] = static_cast(i); + + utils::print(fp, "{} {} {}\n", keyword, ncells + 1, connectivity.size()); + utils::print(fp, "OFFSETS vtktypeint64\n"); + write_legacy_values(fp, binary, offsets); + utils::print(fp, "CONNECTIVITY vtktypeint64\n"); + write_legacy_values(fp, binary, connectivity); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_legacy_array_data(FILE *fp, const DataArray &array) +{ + switch (array.type) { + case TYPE_INT: + write_legacy_values(fp, binary, array.ivalues); + break; + case TYPE_DOUBLE: + write_legacy_reals(fp, array.dvalues); + break; + case TYPE_STRING: + if (binary) { + std::string raw; + for (const auto &s : array.svalues) { + if (s.size() > MAX_BINARY_STRING) + throw VTKWriterException( + fmt::format("Cannot write string \"{}\" to a binary legacy VTK file, it is longer " + "than {} characters", + s, MAX_BINARY_STRING)); + raw += static_cast(0xc0 | s.size()); + raw += s; + } + fwrite(raw.data(), 1, raw.size(), fp); + fputc('\n', fp); + } else { + for (const auto &s : array.svalues) utils::print(fp, "{}\n", s); + } + break; + } +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_legacy_arrays(FILE *fp, const std::vector &arrays, + const char *keyword, int nitems) +{ + if (arrays.empty()) return; + utils::print(fp, "{} {}\n", keyword, nitems); + + // the active scalars get their own section, everything else is field data + + int nfield = 0; + for (const auto &array : arrays) { + if (array.name == scalars) { + const char *type = (array.type == TYPE_INT) ? "int" : legacy_real_type(); + if (array.type == TYPE_STRING) + throw VTKWriterException("VTK string arrays cannot be used as active scalars"); + utils::print(fp, "SCALARS {} {}", array.name, type); + if (array.ncomp > 1) utils::print(fp, " {}", array.ncomp); + utils::print(fp, "\nLOOKUP_TABLE default\n"); + write_legacy_array_data(fp, array); + } else { + ++nfield; + } + } + if (nfield == 0) return; + + utils::print(fp, "FIELD FieldData {}\n", nfield); + for (const auto &array : arrays) { + if (array.name == scalars) continue; + const char *type = legacy_real_type(); + if (array.type == TYPE_INT) type = "int"; + if (array.type == TYPE_STRING) type = "string"; + utils::print(fp, "{} {} {} {}\n", array.name, array.ncomp, nitems, type); + write_legacy_array_data(fp, array); + } +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_legacy(FILE *fp) +{ + utils::print(fp, "# vtk DataFile Version 5.1\n{}\n{}\n", title, binary ? "BINARY" : "ASCII"); + + switch (dataset) { + case POLYDATA: + utils::print(fp, "DATASET POLYDATA\nPOINTS {} {}\n", npoints, legacy_real_type()); + write_legacy_reals(fp, points); + write_legacy_cells(fp, "VERTICES"); + break; + + case UNSTRUCTURED: { + utils::print(fp, "DATASET UNSTRUCTURED_GRID\nPOINTS {} {}\n", npoints, legacy_real_type()); + write_legacy_reals(fp, points); + write_legacy_cells(fp, "CELLS"); + std::vector types(ncells, celltype); + utils::print(fp, "CELL_TYPES {}\n", ncells); + write_legacy_values(fp, binary, types); + break; + } + + case RECTILINEAR: + utils::print(fp, "DATASET RECTILINEAR_GRID\nDIMENSIONS {} {} {}\n", dims[0], dims[1], + dims[2]); + utils::print(fp, "X_COORDINATES {} {}\n", dims[0], legacy_real_type()); + write_legacy_reals(fp, xcoord); + utils::print(fp, "Y_COORDINATES {} {}\n", dims[1], legacy_real_type()); + write_legacy_reals(fp, ycoord); + utils::print(fp, "Z_COORDINATES {} {}\n", dims[2], legacy_real_type()); + write_legacy_reals(fp, zcoord); + break; + + case IMAGE: + utils::print(fp, "DATASET STRUCTURED_POINTS\nDIMENSIONS {} {} {}\n", dims[0], dims[1], + dims[2]); + utils::print(fp, "SPACING {} {} {}\n", fmt_double(spacing[0]), fmt_double(spacing[1]), + fmt_double(spacing[2])); + utils::print(fp, "ORIGIN {} {} {}\n", fmt_double(origin[0]), fmt_double(origin[1]), + fmt_double(origin[2])); + break; + + case NONE: + break; + } + + write_legacy_arrays(fp, point_arrays, "POINT_DATA", npoints); + write_legacy_arrays(fp, cell_arrays, "CELL_DATA", ncells); +} + +/* ---------------------------------------------------------------------- + XML format +------------------------------------------------------------------------- */ + +void VTKWriter::write_xml_data_array(FILE *fp, const char *type, const std::string &name, int ncomp, + const std::string &payload, int indent) +{ + const std::string pad(indent, ' '); + utils::print(fp, R"({} 1) utils::print(fp, R"( NumberOfComponents="{}")", ncomp); + utils::print(fp, + R"( format="{}">)" + "\n", + binary ? "binary" : "ascii"); + fputs(payload.c_str(), fp); + utils::print(fp, "{}\n", pad); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_xml_array(FILE *fp, const DataArray &array, int indent) +{ + switch (array.type) { + case TYPE_INT: + write_xml_data_array(fp, "Int32", array.name, array.ncomp, + xml_values(binary, array.ivalues, indent + 2), indent); + break; + + case TYPE_DOUBLE: + write_xml_data_array(fp, xml_real_type(), array.name, array.ncomp, + xml_reals(array.dvalues, indent + 2), indent); + break; + + case TYPE_STRING: { + // string arrays use and store the characters of all strings, + // each terminated by a zero byte + + const std::string pad(indent, ' '); + std::string payload; + if (binary) { + std::string raw; + for (const auto &s : array.svalues) { + raw += s; + raw += '\0'; + } + payload = std::string(indent + 2, ' ') + encode_bytes(raw) + "\n"; + } else { + std::vector codes; + for (const auto &s : array.svalues) { + for (const char c : s) codes.push_back(static_cast(c)); + codes.push_back(0); + } + payload = xml_values(false, codes, indent + 2); + } + utils::print(fp, + R"({})" + "\n", + pad, array.name, binary ? "binary" : "ascii"); + fputs(payload.c_str(), fp); + utils::print(fp, "{}\n", pad); + break; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_xml_arrays(FILE *fp, const std::vector &arrays, const char *tag, + int indent) +{ + const std::string pad(indent, ' '); + bool has_scalars = false; + for (const auto &array : arrays) + if (array.name == scalars) has_scalars = true; + + if (has_scalars) + utils::print(fp, + R"({}<{} Scalars="{}">)" + "\n", + pad, tag, scalars); + else + utils::print(fp, "{}<{}>\n", pad, tag); + + for (const auto &array : arrays) write_xml_array(fp, array, indent + 2); + utils::print(fp, "{}\n", pad, tag); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_xml_cells(FILE *fp, const char *tag, int indent) +{ + const std::string pad(indent, ' '); + const int per_cell = (celltype == VTK_HEXAHEDRON) ? 8 : 1; + + // XML offsets are end offsets, one per cell + + std::vector offsets(ncells); + for (int i = 0; i < ncells; ++i) offsets[i] = static_cast(i + 1) * per_cell; + + std::vector connectivity(static_cast(ncells) * per_cell); + for (std::size_t i = 0; i < connectivity.size(); ++i) + connectivity[i] = static_cast(i); + + utils::print(fp, "{}<{}>\n", pad, tag); + write_xml_data_array(fp, "Int64", "connectivity", 1, xml_values(binary, connectivity, indent + 4), + indent + 2); + write_xml_data_array(fp, "Int64", "offsets", 1, xml_values(binary, offsets, indent + 4), + indent + 2); + + if (strcmp(tag, "Cells") == 0) { + std::vector types(ncells, static_cast(celltype)); + write_xml_data_array(fp, "UInt8", "types", 1, xml_values(binary, types, indent + 4), + indent + 2); + } + utils::print(fp, "{}\n", pad, tag); +} + +/* ---------------------------------------------------------------------- */ + +void VTKWriter::write_xml(FILE *fp) +{ + const char *gridtype = "PolyData"; + if (dataset == UNSTRUCTURED) gridtype = "UnstructuredGrid"; + if (dataset == RECTILINEAR) gridtype = "RectilinearGrid"; + if (dataset == IMAGE) gridtype = "ImageData"; + + utils::print(fp, "\n"); + utils::print(fp, R"(\n"); + + // the grid element carries the extent for the two structured dataset types + + if (dataset == RECTILINEAR || dataset == IMAGE) { + utils::print(fp, R"( <{} WholeExtent="0 {} 0 {} 0 {}")", gridtype, dims[0] - 1, dims[1] - 1, + dims[2] - 1); + if (dataset == IMAGE) + utils::print(fp, R"( Origin="{} {} {}" Spacing="{} {} {}")", fmt_double(origin[0]), + fmt_double(origin[1]), fmt_double(origin[2]), fmt_double(spacing[0]), + fmt_double(spacing[1]), fmt_double(spacing[2])); + utils::print(fp, ">\n"); + utils::print(fp, + R"( )" + "\n", + dims[0] - 1, dims[1] - 1, dims[2] - 1); + } else { + utils::print(fp, " <{}>\n", gridtype); + if (dataset == POLYDATA) + utils::print(fp, + R"( )" + "\n", + npoints, ncells); + else + utils::print(fp, + R"( )" + "\n", + npoints, ncells); + } + + write_xml_arrays(fp, point_arrays, "PointData", 6); + write_xml_arrays(fp, cell_arrays, "CellData", 6); + + switch (dataset) { + case POLYDATA: + utils::print(fp, " \n"); + write_xml_data_array(fp, xml_real_type(), "Points", 3, xml_reals(points, 10), 8); + utils::print(fp, " \n"); + write_xml_cells(fp, "Verts", 6); + break; + + case UNSTRUCTURED: + utils::print(fp, " \n"); + write_xml_data_array(fp, xml_real_type(), "Points", 3, xml_reals(points, 10), 8); + utils::print(fp, " \n"); + write_xml_cells(fp, "Cells", 6); + break; + + case RECTILINEAR: + utils::print(fp, " \n"); + write_xml_data_array(fp, xml_real_type(), "x", 1, xml_reals(xcoord, 10), 8); + write_xml_data_array(fp, xml_real_type(), "y", 1, xml_reals(ycoord, 10), 8); + write_xml_data_array(fp, xml_real_type(), "z", 1, xml_reals(zcoord, 10), 8); + utils::print(fp, " \n"); + break; + + case IMAGE: + case NONE: + break; + } + + utils::print(fp, " \n \n\n", gridtype); +} diff --git a/src/vtk_writer.h b/src/vtk_writer.h new file mode 100644 index 00000000000..a462aeb8eb5 --- /dev/null +++ b/src/vtk_writer.h @@ -0,0 +1,272 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +#ifndef LMP_VTK_WRITER_H +#define LMP_VTK_WRITER_H + +#include +#include +#include +#include +#include + +namespace LAMMPS_NS { + +// exception thrown for inconsistent data or files that cannot be written + +class VTKWriterException : public std::exception { + std::string message; + + public: + explicit VTKWriterException(std::string msg) : message(std::move(msg)) {} + [[nodiscard]] const char *what() const noexcept override { return message.c_str(); } +}; + +/** Write data files in the formats used by the VTK visualization toolkit + +\verbatim embed:rst + +This class writes the subset of the VTK file formats that LAMMPS needs, +without requiring the VTK library itself. Both the "legacy" format and the +XML format are supported, each with ASCII or binary encoding. Reading VTK +files is not supported. + +Usage is always the same: create a writer for the desired format, select +exactly one dataset type, attach any number of data arrays, and write. All +inconsistencies (mismatched array lengths, missing dataset, a file that +cannot be opened) are reported by throwing a ``VTKWriterException``, so callers are expected to +catch it and turn it into a LAMMPS error. + +.. code-block:: c++ + + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(coords); + writer.add_point_array("id", 1, ids); + try { + writer.write("dump.vtp"); + } catch (VTKWriterException &e) { + error->one(FLERR, e.what()); + } + +\endverbatim */ + +class VTKWriter { + public: + enum Flavor { LEGACY, XML }; + enum Precision { SINGLE, DOUBLE }; + + /** Coordinates larger than this many length units keep fewer than 3 digits + after the decimal point when stored in single precision, which has a + relative resolution of about 1.2e-7. single_precision_resolution() + scales this with force->angstrom so that the same physical resolution + applies in every unit system. */ + + static constexpr double SINGLE_PRECISION_LIMIT = 1.0e4; + + /** Resolution of single precision storage at the given coordinate magnitude. + * + * Callers pass the value reported by max_single_precision_value() and warn + * with the returned resolution when it is not zero. Keeping this test next + * to SINGLE_PRECISION_LIMIT ensures all callers warn consistently. + * + * \param maxcoord largest coordinate magnitude written in single precision + * \param angstrom length units per Angstrom, that is force->angstrom + * \return absolute resolution at that magnitude when it warrants a warning, 0.0 otherwise */ + + static double single_precision_resolution(double maxcoord, double angstrom); + + /** XML type name for floating point data at the given precision. + * + * Exposed so that the parallel summary files written by dump vtk always + * declare exactly the types that the piece files contain. + * + * \param precision SINGLE or DOUBLE + * \return "Float32" or "Float64" */ + + static const char *xml_real_type(Precision precision); + + /** Byte order attribute written into XML files on this machine. + * + * \return "LittleEndian" or "BigEndian" */ + + static const char *xml_byte_order(); + + /** Create a writer for one file. + * + * All floating point data, that is point coordinates and data arrays alike, + * is stored in single precision by default, which is what visualization + * programs expect. See max_single_precision_value() for how to tell when + * that is not enough for the coordinates. + * + * \param flavor LEGACY for the simple legacy format, XML for the XML format + * \param binary true to store the data as binary numbers instead of as text + * \param precision precision used for all floating point data */ + + VTKWriter(Flavor flavor, bool binary, Precision precision = SINGLE); + + /** Set the title written into the header of legacy files, ignored for XML. + * + * \param title descriptive text, truncated to the 256 characters the format allows */ + + void set_title(const std::string &title); + + // dataset selection. exactly one of these must be called before write(). + // coordinates are passed as 3 doubles per point. coordinate and data + // vectors are taken by value: pass with std::move() to avoid copying data + // that is no longer needed after the call. + + /** Select points with one vertex cell each, written as POLYDATA / PolyData. + * + * \param xyz coordinates, 3 values per point */ + + void set_polydata(std::vector xyz); + + /** Select points with one vertex cell each, written as UNSTRUCTURED_GRID. + * + * \param xyz coordinates, 3 values per point */ + + void set_unstructured_grid(std::vector xyz); + + /** Select a single hexahedron cell, written as UNSTRUCTURED_GRID. + * + * \param corners the 8 corners in VTK ordering, that is the bottom face + * counterclockwise followed by the top face counterclockwise */ + + void set_hexahedron(const double corners[8][3]); + + /** Select a grid with non-uniform spacing. + * + * \param xc coordinates of the cell boundaries along x + * \param yc coordinates of the cell boundaries along y + * \param zc coordinates of the cell boundaries along z */ + + void set_rectilinear_grid(std::vector xc, std::vector yc, std::vector zc); + + /** Select a grid with uniform spacing, written as STRUCTURED_POINTS / ImageData. + * + * \param dim number of grid points in each dimension + * \param origin coordinates of the first grid point + * \param spacing distance between grid points in each dimension */ + + void set_image_data(const int dim[3], const double origin[3], const double spacing[3]); + + // data arrays. "data" holds ncomp consecutive values per point or cell + // and is taken by value, so callers can std::move() it in. + + void add_point_array(const std::string &name, int ncomp, std::vector data); + void add_point_array(const std::string &name, int ncomp, std::vector data); + void add_point_array(const std::string &name, std::vector data); + void add_cell_array(const std::string &name, int ncomp, std::vector data); + void add_cell_array(const std::string &name, int ncomp, std::vector data); + void add_cell_array(const std::string &name, std::vector data); + + /** Mark a previously added array as the default one for coloring. + * + * The array is written as SCALARS in legacy files and referenced by the + * Scalars attribute in XML files. + * + * \param name name of an array that was added before */ + + void set_active_scalars(const std::string &name); + + /** largest absolute value among the coordinates that are written in single + precision, or 0.0 if there are none. callers use this to warn when the + resolution of single precision is no longer sufficient, which happens + for very large coordinates because they need absolute resolution. data + arrays are not tracked: their values only need the relative resolution + that single precision always provides. + * + * \return largest coordinate magnitude written in single precision, 0.0 if there is none */ + + [[nodiscard]] double max_single_precision_value() const { return maxsingle; } + + /** Number of points implied by the selected dataset. + * + * \return number of points */ + + [[nodiscard]] int number_of_points() const { return npoints; } + + /** Number of cells implied by the selected dataset. + * + * \return number of cells */ + + [[nodiscard]] int number_of_cells() const { return ncells; } + + void write(const std::string &filename); + void write(FILE *fp); + + private: + enum Dataset { NONE, POLYDATA, UNSTRUCTURED, RECTILINEAR, IMAGE }; + enum DataType { TYPE_INT, TYPE_DOUBLE, TYPE_STRING }; + + struct DataArray { + std::string name; + DataType type; + int ncomp; + std::vector ivalues; + std::vector dvalues; + std::vector svalues; + }; + + Flavor flavor; + bool binary; + Precision prec; + double maxsingle; + Dataset dataset; + std::string title; + std::string scalars; + + int npoints, ncells; + std::vector points; + std::vector xcoord, ycoord, zcoord; + int dims[3]; + double origin[3], spacing[3]; + int celltype; + + std::vector point_arrays, cell_arrays; + + void set_vertex_cells(std::vector &&xyz, Dataset type); + void add_array(std::vector &arrays, int nitems, const char *kind, DataArray &&array); + + // coordinates and floating point data arrays honor the selected precision. + // only coordinates are tracked for the single precision warning, because + // only they need absolute resolution. + + void track_single(const std::vector &values); + void write_legacy_reals(FILE *fp, const std::vector &values); + [[nodiscard]] std::string xml_reals(const std::vector &values, int indent) const; + [[nodiscard]] const char *legacy_real_type() const; + [[nodiscard]] const char *xml_real_type() const; + + // legacy format + + void write_legacy(FILE *fp); + void write_legacy_arrays(FILE *fp, const std::vector &arrays, const char *keyword, + int nitems); + void write_legacy_array_data(FILE *fp, const DataArray &array); + void write_legacy_cells(FILE *fp, const char *keyword); + + // XML format + + void write_xml(FILE *fp); + void write_xml_arrays(FILE *fp, const std::vector &arrays, const char *tag, + int indent); + void write_xml_array(FILE *fp, const DataArray &array, int indent); + void write_xml_data_array(FILE *fp, const char *type, const std::string &name, int ncomp, + const std::string &payload, int indent); + void write_xml_cells(FILE *fp, const char *tag, int indent); +}; + +} // namespace LAMMPS_NS + +#endif diff --git a/tools/coding_standard/versiontags.py b/tools/coding_standard/versiontags.py index b0cfce22a79..0abe21ad5f1 100644 --- a/tools/coding_standard/versiontags.py +++ b/tools/coding_standard/versiontags.py @@ -37,7 +37,7 @@ """ def check_pending_tag(f): - pattern = re.compile(r'^ *\.\. +(version(changed|added)|deprecated):: +TBD') + pattern = re.compile(r'^ *\.\. +(version(changed|added|removed)|deprecated):: +TBD') last_line = "\n" lineno = 1 errors = set() @@ -51,7 +51,7 @@ def check_pending_tag(f): return errors, last_line def check_bad_tag(f): - pattern = re.compile(r'^ *\.\. +(version(changed|added)|deprecated):\s+\w*') + pattern = re.compile(r'^ *\.\. +(version(changed|added|removed)|deprecated):\s+\w*') last_line = "\n" lineno = 1 errors = set() diff --git a/tools/regression-tests/reference.yaml b/tools/regression-tests/reference.yaml index c18883f3757..77875d3acf0 100644 --- a/tools/regression-tests/reference.yaml +++ b/tools/regression-tests/reference.yaml @@ -329,8 +329,6 @@ in.adios_balance2: { folder: examples/PACKAGES/adios/balance, status: "failed, u in.bcc0: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.vac0-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.vacmin-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } -in.vtk: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } -in.vtp: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } in.dpdext: { folder: examples/PACKAGES/dpd-basic/dpdext, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } in.dpd: { folder: examples/PACKAGES/dpd-basic/dpd, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } in.dpdext_tstat: { folder: examples/PACKAGES/dpd-basic/dpdext_tstat, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 30.0, walltime_norm: 5.0 } diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index 51aecc82d11..208ae0b46dc 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -157,6 +157,32 @@ foreach(TEST ${SPIN_PAIR_TESTS}) set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}") endforeach() +file(GLOB SPH_PAIR_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/sph-pair-*.yaml) +foreach(TEST ${SPH_PAIR_TESTS}) + string(REGEX REPLACE "^.*sph-pair-(.*)\.yaml" "SPHPairStyle:\\1" TNAME ${TEST}) + extract_tags(TEST_TAGS ${TEST}) + list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME) + if(_SKIPME GREATER_EQUAL 0) + continue() + endif() + add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST}) + set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}") + set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}") +endforeach() + +file(GLOB MESO_PAIR_TESTS LIST_DIRECTORIES false CONFIGURE_DEPENDS ${TEST_INPUT_FOLDER}/meso-pair-*.yaml) +foreach(TEST ${MESO_PAIR_TESTS}) + string(REGEX REPLACE "^.*meso-pair-(.*)\.yaml" "MesoPairStyle:\\1" TNAME ${TEST}) + extract_tags(TEST_TAGS ${TEST}) + list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME) + if(_SKIPME GREATER_EQUAL 0) + continue() + endif() + add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST}) + set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}") + set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}") +endforeach() + # bond style tester add_executable(test_bond_style test_bond_style.cpp) target_include_directories(test_bond_style PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..") diff --git a/unittest/force-styles/test_pair_style.cpp b/unittest/force-styles/test_pair_style.cpp index 583534d77d9..5ec59bbad9f 100644 --- a/unittest/force-styles/test_pair_style.cpp +++ b/unittest/force-styles/test_pair_style.cpp @@ -485,8 +485,11 @@ TEST(PairStyle, plain) EXPECT_FP_LE_WITH_EPS(pair->eng_coul, test_config.init_coul, epsilon); if (print_stats) std::cerr << "restart_energy stats:" << stats << std::endl; - // pair style rann does not support pair_modify nofdotr - if (test_config.pair_style != "rann") { + // pair style rann does not support pair_modify nofdotr. styles whose + // dissipative or random pair forces are not central (e.g. sdpd) cannot + // reproduce the fdotr virial through ev_tally() and may opt out with + // the "nofdotr" token in skip_tests. + if ((test_config.pair_style != "rann") && !test_config.skip_tests.count("nofdotr")) { if (!verbose) ::testing::internal::CaptureStdout(); restart_lammps(lmp, test_config, true); if (!verbose) ::testing::internal::GetCapturedStdout(); diff --git a/unittest/force-styles/tests/angle-cosine_buck6d.yaml b/unittest/force-styles/tests/angle-cosine_buck6d.yaml new file mode 100644 index 00000000000..acea132034b --- /dev/null +++ b/unittest/force-styles/tests/angle-cosine_buck6d.yaml @@ -0,0 +1,95 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 16:18:52 2026 +epsilon: 2.5e-13 +skip_tests: single +prerequisites: | + atom full + angle cosine/buck6d + pair buck6d/coul/gauss/dsf +pre_commands: | + variable angle_factor delete + variable angle_factor index 0.0 + variable pair_style delete + variable pair_style index 'zero 8.0 nocoeff' +post_commands: | + pair_style buck6d/coul/gauss/dsf 0.9000 12.0 + pair_coeff * * 6157.8178 3.4682081 129.19572 0.78772886 0.73006542 +input_file: in.fourmol +angle_style: cosine/buck6d +angle_coeff: | + 1 1.978350 4 180.0 + 2 1.5 3 120.0 + 3 2.5 2 109.4712 + 4 1.0 6 180.0 +equilibrium: 4 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 +extract: "" +natoms: 29 +init_energy: 20.23757223871013 +init_stress: |- + -1.3593175325408707e+01 3.8796867695789525e+00 9.7134885558297555e+00 -8.2218341899791412e+00 4.6506440445034194e+00 -1.0637404887286824e+01 +init_forces: |2 + 1 -2.0134160806424287e+01 2.1605081623358346e+00 6.3336623457810056e+01 + 2 6.3150833250894088e+01 5.8977214575642861e+01 -6.3490156965917549e+01 + 3 -1.1075218145332080e+00 -1.1769866158590554e+00 -4.8526670846831408e+00 + 4 -4.5068776198054856e+01 -8.1473913034009104e-01 -4.9186076709245356e+01 + 5 -1.2856383730521557e+01 -4.3945999142470647e+01 6.6023569496156483e+01 + 6 -2.8383566057194098e+01 2.4555407323950007e+01 1.1326606301519412e+01 + 7 -9.1714452595989702e+00 -5.9882653616475148e+00 -6.2277022652654459e+01 + 8 -1.9589935865476622e+01 -2.8248773164124319e+01 -6.2826243895814393e+01 + 9 1.6590111052904192e+01 4.0507780400931509e+01 1.3474909467435319e+02 + 10 3.4075589372947368e+00 -3.2386390702395211e+01 1.2099150872160475e+01 + 11 -2.2424947616112576e+01 -4.6168322769033217e+01 -3.6891975423175879e+01 + 12 2.8463836752667870e+01 1.2407481109610243e+01 1.7304587949744457e+00 + 13 6.5939269450884979e+01 -3.8720225718663741e+01 1.0397842732063484e+01 + 14 -2.8847525421449454e+01 -5.7128684483945835e-01 -8.3021803866755690e+01 + 15 -4.7533919691877491e-01 7.1738779345590430e+01 4.2161003293171298e+01 + 16 2.5271400797791962e+01 -1.8310608814042350e+01 -3.3279648597770638e+01 + 17 -1.3742922275237675e+01 5.7074486941175975e+00 5.2097973785916345e+01 + 18 -1.2306012405561187e+01 -4.6417826826946410e+01 1.7054932441462674e+02 + 19 -1.1044631587929079e+02 -7.8005773535744297e+01 -1.0881025866542312e+02 + 20 1.2224551712338207e+02 1.2429966331414333e+02 -5.9724451564210078e+01 + 21 -4.9629142994614625e+01 -5.7749965741596995e+01 1.7143370504536836e+02 + 22 -1.1520087983258745e+02 -3.5138275990561503e+01 -1.4340277044548733e+02 + 23 1.6427030325661764e+02 9.3662333348669407e+01 -2.7389157857525039e+01 + 24 3.5352765964364202e+01 -1.5505699382959321e+02 8.9012856613856442e+01 + 25 -1.4428582147617027e+02 2.6729277178434190e+00 -1.1351338029439499e+02 + 26 1.0832298976961738e+02 1.5209283650384347e+02 2.3826493635160407e+01 + 27 2.6824510755485296e+01 -1.7007210700512002e+02 6.1470419665451374e+01 + 28 -1.5632293899849097e+02 4.5677944559822301e+01 -1.0001939515882142e+02 + 29 1.3015453871633306e+02 1.2431221613647769e+02 3.8469886399290637e+01 +run_energy: 20.26046291937527 +run_stress: |- + -1.3651746419572172e+01 3.8759079271374270e+00 9.7758384924347475e+00 -8.2604137292479578e+00 4.5900681657508766e+00 -1.0596657882987362e+01 +run_forces: |2 + 1 -1.9900045499899193e+01 2.2669025004278320e+00 6.2737097727418536e+01 + 2 6.2701087480457410e+01 5.8583316734654559e+01 -6.2860785780733551e+01 + 3 -1.1529531493559149e+00 -1.0398758439781113e+00 -4.8268045918501823e+00 + 4 -4.4742819547635605e+01 -8.7560747607066514e-01 -4.8856290228657684e+01 + 5 -1.2892846836422445e+01 -4.3748830304742960e+01 6.5621900896548951e+01 + 6 -2.8279932965512501e+01 2.4506834244757425e+01 1.1307869134175483e+01 + 7 -9.1656186017437804e+00 -5.9930179148694203e+00 -6.2115196882114681e+01 + 8 -1.9401694399103331e+01 -2.7938338105146013e+01 -6.1880216902865556e+01 + 9 1.6302217892944455e+01 4.0181853947689341e+01 1.3363432517382830e+02 + 10 3.3765529315977925e+00 -3.2596549983406597e+01 1.1720889762409053e+01 + 11 -2.2283997407855729e+01 -4.5865746520614444e+01 -3.6453550708258724e+01 + 12 2.8381911248694689e+01 1.2421609652276299e+01 1.4192370178853937e+00 + 13 6.5553793109980433e+01 -3.8414845473905892e+01 1.0327012997704305e+01 + 14 -2.8460345852490580e+01 -5.4922582342446291e-01 -8.2312788587981402e+01 + 15 -5.3057287997762248e-01 7.1375754686210513e+01 4.1871862902761436e+01 + 16 2.5244112169346014e+01 -1.8302582992581055e+01 -3.3349711493528815e+01 + 17 -1.3728386001194796e+01 5.7083142467470003e+00 5.2105606677707272e+01 + 18 -1.0545272621616965e+01 -4.4319934869482886e+01 1.6838578082978302e+02 + 19 -1.0950329109358043e+02 -7.7428062982340805e+01 -1.0808819457632198e+02 + 20 1.1954167128341798e+02 1.2162753123090917e+02 -5.8277387833282496e+01 + 21 -4.9486031743983126e+01 -5.7095283382932564e+01 1.7028108369122631e+02 + 22 -1.1441923696001507e+02 -3.4945667916278424e+01 -1.4232087589533052e+02 + 23 1.6334556760727250e+02 9.2813931850750535e+01 -2.7317447878790649e+01 + 24 3.5792354612335856e+01 -1.5475934047187428e+02 8.9094188904016917e+01 + 25 -1.4442381122351074e+02 2.5662522918995947e+00 -1.1376235330368259e+02 + 26 1.0802114886311448e+02 1.5190308094818431e+02 2.3994565190639015e+01 + 27 2.6929844221334111e+01 -1.6909880391963003e+02 6.0841669688009993e+01 + 28 -1.5544835321800275e+02 4.5438413759465469e+01 -9.9332226416600079e+01 + 29 1.2917494858140486e+02 1.2357791788730647e+02 3.8410740485884851e+01 +... diff --git a/unittest/force-styles/tests/bond-special.yaml b/unittest/force-styles/tests/bond-special.yaml new file mode 100644 index 00000000000..89238a554de --- /dev/null +++ b/unittest/force-styles/tests/bond-special.yaml @@ -0,0 +1,100 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 16:25:36 2026 +epsilon: 2.5e-13 +skip_tests: +prerequisites: | + atom full + bond special + pair lj/cut +pre_commands: | + variable bond_factor delete + variable bond_factor index 0.0 + variable angle_factor delete + variable angle_factor index 1.0 + variable dihedral_factor delete + variable dihedral_factor index 1.0 + variable pair_style delete + variable pair_style index 'zero 8.0 nocoeff' +post_commands: | + pair_style lj/cut 8.0 + pair_coeff * * 0.02 2.5 +input_file: in.fourmol +bond_style: special +bond_coeff: | + 1 0.5 0.5 + 2 0.25 0.75 + 3 1.0 0.0 + 4 0.0 1.0 + 5 0.75 0.25 +equilibrium: 5 0 0 0 0 0 +extract: "" +natoms: 29 +init_energy: 18058.038859299668 +init_stress: |2- + 7.1668001878001596e+04 5.1028389191366630e+04 9.4651540974094794e+04 2.0746557919172661e+04 2.3246083404123056e+04 2.4443644940140889e+03 +init_forces: |2 + 1 -6.4215856914167662e+03 -5.2632517944406045e+03 7.5726824778061573e+03 + 2 6.4437761698078757e+03 5.3055424985709187e+03 -7.5806580634181964e+03 + 3 1.1271064630913806e+04 1.6201320744451587e+03 -7.1220763257574563e+03 + 4 -8.7261265000534822e+03 2.4433637903018835e+03 -6.2007898271196900e+03 + 5 -2.6210202978172633e+03 -4.0509784315605493e+03 1.3367181299419139e+04 + 6 -1.4749035536757265e+02 9.5447106000951226e+02 4.9799176646565929e+03 + 7 1.9348187387985885e+02 -1.0053842005450049e+03 -5.0274795641832479e+03 + 8 -3.2238126195851869e+03 -3.4655936454968269e+03 -1.4236009676049538e+04 + 9 3.2151347031080313e+03 3.4802944545473392e+03 1.4267280367678028e+04 + 10 2.5100896039438380e+03 6.5066469826209031e+03 1.0697243907259632e+04 + 11 -2.6477429800543664e+03 -6.5544996906263214e+03 -1.0727204229470361e+04 + 12 -4.9482035881452694e+03 -6.5613489922897170e+03 6.5195563799902702e+03 + 13 9.0898956470896737e+03 -3.6034202369540189e+03 -1.6320863795000426e+02 + 14 -3.7894859351479740e+03 7.6257669767449954e+02 -9.8297491889462090e+03 + 15 -2.4594166653993580e+02 9.5046301783020972e+03 3.4061668899502870e+03 + 16 1.3877735029066712e+03 -1.0063075178931609e+03 -3.4807255998081173e+03 + 17 -1.3397307769196989e+03 9.3321016015180260e+02 3.5578061858273613e+03 + 18 -1.9820924469322217e+03 -4.7393545524308220e+03 1.3033762675927002e+04 + 19 -6.2643536000113463e+03 -4.0210987784113568e+03 -7.5291179632368112e+03 + 20 8.2464106565952679e+03 8.7603482557935276e+03 -5.5045306695144045e+03 + 21 -4.4907027650460350e+03 -5.1235840797753144e+03 1.4180832828350318e+04 + 22 -6.8776264863028937e+03 -1.6866297310105062e+03 -1.0685458334278004e+04 + 23 1.1368299821369073e+04 6.8102534577308979e+03 -3.4953424069982243e+03 + 24 2.2998474035610298e+03 -1.3295579671611429e+04 7.0449195196345481e+03 + 25 -9.3957761476153592e+03 1.4602081373975989e+03 -7.8781787272380434e+03 + 26 7.0958982381802316e+03 1.1835336015742067e+04 8.3319195365013445e+02 + 27 3.2486653886646554e+03 -1.4254060948680781e+04 5.7015613376434731e+03 + 28 -1.1400074390990419e+04 4.8436161855570299e+03 -7.6982500753420409e+03 + 29 8.1514286079257745e+03 9.4104623228811815e+03 1.9966758015174071e+03 +run_energy: 6360.225420539028 +run_stress: |2- + 2.4339078656667069e+04 1.7491409646574146e+04 3.4900325101017552e+04 5.3658346415663100e+03 6.7375725394491556e+03 1.8291338628301792e+03 +run_forces: |2 + 1 -1.8969489751927968e+03 -1.5489791972232758e+03 2.2344854802440104e+03 + 2 1.9126705941156029e+03 1.5789374341301898e+03 -2.2413213228245945e+03 + 3 3.8935163262447841e+03 2.6874536941173301e+02 -1.3245273709492590e+03 + 4 -3.2029094266347374e+03 8.5528064031610290e+02 -2.1681143610556674e+03 + 5 -7.7301716130719581e+02 -1.0838659538783377e+03 3.5435872608231834e+03 + 6 -8.6985627177039873e+01 7.0650633989603739e+02 3.8095199356133016e+03 + 7 1.4731920725497000e+02 -7.7346999338872229e+02 -3.8627664008519127e+03 + 8 -6.8769328027531685e+02 -7.3280170615267582e+02 -3.0123603789326730e+03 + 9 6.8012452276277168e+02 7.4322176732724097e+02 3.0366523056975948e+03 + 10 5.4813538886686206e+02 1.7146852364924925e+03 2.8581084645028741e+03 + 11 -7.1240018043587918e+02 -1.7640395961846061e+03 -2.8723558741373004e+03 + 12 -2.2750438449674684e+03 -2.5730349272958492e+03 2.4248406005520455e+03 + 13 3.8207630430579507e+03 -1.4365630907137802e+03 -1.2004159559175417e+02 + 14 -1.3575821513028304e+03 3.3147147938303965e+02 -3.6841918566712961e+03 + 15 -6.2319816323120925e+01 3.7959534830045059e+03 1.2969161595924140e+03 + 16 1.1582273813751829e+03 -8.5353759416285948e+02 -2.8559425601480093e+03 + 17 -1.1057810494260523e+03 7.7157445113469441e+02 2.9374471813650412e+03 + 18 -8.6226574835636711e+00 -9.4879315834468116e+02 4.1838639454003523e+03 + 19 -2.1642488447914038e+03 -1.3734986269108099e+03 -2.6806414641313090e+03 + 20 2.1728364465573932e+03 2.3221874573650107e+03 -1.5031075528899357e+03 + 21 -1.0609925267665317e+03 -1.3348376796305095e+03 4.0453405246343136e+03 + 22 -1.9104044597613124e+03 -4.5050432284820459e+02 -3.0699917003730002e+03 + 23 2.9713673688855865e+03 1.7853818254907194e+03 -9.7531652509095420e+02 + 24 9.9666035084932196e+02 -3.6397352750627770e+03 2.2110339864209636e+03 + 25 -2.8217669144020756e+03 5.0424695910433741e+02 -2.3950211556216664e+03 + 26 1.8250757548345234e+03 3.1354503435211536e+03 1.8391787854081241e+02 + 27 4.3359629443970107e+02 -4.0493886749822623e+03 1.3366852302586906e+03 + 28 -2.7756988216728369e+03 1.2447160721710447e+03 -1.8890912530282276e+03 + 29 2.3421230586755123e+03 2.8046909380310485e+03 5.5239241865196243e+02 +... diff --git a/unittest/force-styles/tests/data.edpd b/unittest/force-styles/tests/data.edpd new file mode 100644 index 00000000000..c69ee376c34 --- /dev/null +++ b/unittest/force-styles/tests/data.edpd @@ -0,0 +1,147 @@ +DPD-MESO fluid block for force-style tests: 2 types, perturbed sc lattice + +64 atoms +2 atom types + +0.0 4.4 xlo xhi +0.0 4.4 ylo yhi +0.0 4.4 zlo zhi + +Masses + +1 1.0 +2 1.3 + +Atoms # edpd + +1 1 0.99641527 100.00000000 0.01298434 -0.04883928 0.07444018 +2 2 1.00625376 120.00000000 0.06783622 -0.00525781 1.12615530 +3 1 0.99099174 100.00000000 -0.04567632 -0.04452860 2.16616359 +4 2 0.99847685 120.00000000 0.03078764 -0.04601972 3.37537695 +5 2 1.08317112 120.00000000 -0.06874312 1.05092586 -0.06578183 +6 1 1.09008941 100.00000000 0.04318271 1.07864240 1.09546916 +7 2 1.08885399 120.00000000 -0.02783548 1.12198831 2.18462309 +8 1 1.08634893 100.00000000 -0.04667717 1.08882465 3.26868637 +9 1 1.08146481 100.00000000 -0.06227214 2.25174264 0.02882352 +10 2 1.07539371 120.00000000 0.02636658 2.26119145 1.08314287 +11 1 1.08267092 100.00000000 -0.01931547 2.18767473 2.18472871 +12 2 1.08379522 120.00000000 0.02702963 2.12104298 3.29425687 +13 2 0.98611471 120.00000000 0.00561337 3.27528227 -0.07650141 +14 1 0.98875845 100.00000000 0.03273527 3.22151102 1.11030567 +15 2 0.99715247 120.00000000 -0.05546133 3.22553317 2.14893471 +16 1 0.99669590 100.00000000 -0.06948175 3.24412140 3.32957883 +17 2 1.08977213 120.00000000 1.13652422 -0.02195450 0.02438219 +18 1 1.08892824 100.00000000 1.09602146 -0.00024773 1.16014414 +19 2 1.09039874 120.00000000 1.06980706 0.05919848 2.23057285 +20 1 1.08675748 100.00000000 1.12935305 -0.07904836 3.23344981 +21 1 1.08629865 100.00000000 1.02511887 1.07532247 0.07137575 +22 2 1.07361115 120.00000000 1.16011313 1.15417210 1.03901953 +23 1 1.07609396 100.00000000 1.13291592 1.14391661 2.24948109 +24 2 1.08148003 120.00000000 1.14675747 1.04245053 3.24861318 +25 2 0.97590626 120.00000000 1.14680962 2.23811466 0.06279191 +26 1 0.97894133 100.00000000 1.09143620 2.26233156 1.04230544 +27 2 0.97111139 120.00000000 1.17313976 2.26151600 2.17400906 +28 1 0.99031703 100.00000000 1.03080843 2.20776589 3.33027288 +29 1 0.90817390 100.00000000 1.07605994 3.22919893 -0.03541272 +30 2 0.90526588 120.00000000 1.15192026 3.23450064 1.16996152 +31 1 0.90788129 100.00000000 1.06000292 3.25271010 2.13795082 +32 2 0.90146285 120.00000000 1.17696502 3.36416806 3.27106483 +33 1 1.08314782 100.00000000 2.13529999 0.02452955 0.06201195 +34 2 1.08405878 120.00000000 2.12193779 0.02128732 1.15707485 +35 1 1.08058334 100.00000000 2.19341117 0.01110001 2.24868298 +36 2 1.08519560 120.00000000 2.15816369 -0.03628058 3.32566530 +37 2 0.98284164 120.00000000 2.20837393 1.10565557 -0.02650322 +38 1 0.98067952 100.00000000 2.26991588 1.06610423 1.12862167 +39 2 0.97958450 120.00000000 2.26306562 1.08412748 2.12869313 +40 1 0.99557367 100.00000000 2.15526370 1.03060670 3.24370018 +41 1 0.90782853 100.00000000 2.13927122 2.17479972 -0.02081067 +42 2 0.90430214 120.00000000 2.19158135 2.22641503 1.12827231 +43 1 0.90458933 100.00000000 2.22995890 2.17829631 2.22605778 +44 2 0.90655257 120.00000000 2.20796888 2.14040342 3.30733467 +45 2 0.92938082 120.00000000 2.17093582 3.32814452 0.03756395 +46 1 0.92586702 100.00000000 2.15851559 3.28962005 1.09278427 +47 2 0.92234312 120.00000000 2.16750299 3.22648094 2.12793827 +48 1 0.93821974 100.00000000 2.27885104 3.33838909 3.29020183 +49 2 0.98524295 120.00000000 3.32666635 -0.03696223 0.03366097 +50 1 0.97291703 100.00000000 3.37213309 0.04371443 1.09442548 +51 2 0.97013168 120.00000000 3.37736971 0.06753549 2.12931935 +52 1 0.98637950 100.00000000 3.28589079 -0.00766840 3.26386142 +53 1 0.90609035 100.00000000 3.31863256 1.04295190 0.03954314 +54 2 0.90524469 120.00000000 3.35723027 1.02985306 1.13073763 +55 1 0.90532178 100.00000000 3.26255667 1.12212315 2.23059313 +56 2 0.90177002 120.00000000 3.37626939 1.14769110 3.27423397 +57 2 0.92806323 120.00000000 3.33680540 2.14348834 0.03418045 +58 1 0.92593663 100.00000000 3.28674359 2.16242875 1.05816137 +59 2 0.92959517 120.00000000 3.25468429 2.24741885 2.13537577 +60 1 0.92322995 100.00000000 3.25717421 2.15076615 3.24528878 +61 1 1.03593655 100.00000000 3.33679975 3.31397341 0.02636698 +62 2 1.03640857 120.00000000 3.36403914 3.29179712 1.02605042 +63 1 1.02664888 100.00000000 3.25028479 3.30264881 2.23444862 +64 2 1.03760887 120.00000000 3.36696505 3.30179176 3.25628563 + +Velocities + +1 -0.03920215 -0.02191008 -0.02114115 +2 -0.04226334 0.00536595 -0.01441266 +3 0.03620209 -0.02178452 -0.03162354 +4 0.03451225 -0.04733372 0.04985170 +5 -0.01876393 0.02308314 0.02906303 +6 0.00834791 0.01699662 0.03813032 +7 0.02612308 -0.04314740 -0.01776231 +8 0.02252622 0.02500629 -0.00354086 +9 -0.04504014 -0.04527528 0.03530916 +10 0.04496388 -0.04630134 0.00459756 +11 -0.02221923 -0.03311946 -0.03815307 +12 0.00482963 -0.03616742 0.02017450 +13 -0.00638340 -0.04472227 -0.04689953 +14 -0.03172387 -0.02812063 0.01534790 +15 -0.02674510 0.00114199 -0.03443979 +16 -0.03469764 0.04750262 -0.02032095 +17 -0.02076818 -0.00884787 -0.01754755 +18 0.01585767 0.03105329 0.04690301 +19 0.02011302 -0.04630053 0.03143034 +20 0.02204810 -0.01663947 -0.04948269 +21 0.00934618 0.04206963 0.03571494 +22 0.03172747 0.03685794 -0.03433569 +23 0.03864903 -0.03232805 0.00178691 +24 0.01210253 -0.03971948 0.02701723 +25 -0.03464208 0.03467221 0.01558321 +26 -0.04768078 -0.02336071 -0.00639511 +27 0.00147947 0.00875175 0.04846447 +28 -0.03611925 -0.03146926 0.00312579 +29 0.00314389 0.00873469 0.02414618 +30 0.03728134 -0.02296642 -0.03528311 +31 -0.02567821 -0.02712117 -0.01714555 +32 0.02482324 0.00442810 -0.04929776 +33 -0.03949768 0.01572734 -0.02630112 +34 0.02278497 0.03783181 -0.00203355 +35 -0.01215419 0.03222093 0.02028555 +36 -0.04332145 -0.03106549 -0.01387432 +37 -0.00893331 -0.02039165 -0.04922585 +38 -0.00184255 0.01249809 -0.04130681 +39 0.00975378 0.00213086 0.04724330 +40 -0.02688317 0.01842525 0.03373842 +41 -0.04531536 -0.02427151 -0.00938368 +42 0.03727170 -0.04382914 0.00954567 +43 -0.01075509 0.04694168 -0.03610393 +44 -0.01516473 0.03422940 -0.00815506 +45 0.03979135 0.00861102 -0.04045079 +46 -0.02644683 0.00050110 -0.04501232 +47 0.01737965 -0.01269402 0.03885484 +48 0.04266772 0.03586574 0.04172640 +49 -0.03974467 0.03694425 0.00626494 +50 0.02298316 0.01303035 0.04718036 +51 -0.02140814 -0.04297028 -0.03160451 +52 0.00463754 0.01967229 0.01852269 +53 -0.01877413 0.03160870 -0.02571946 +54 -0.00839088 0.03755807 -0.03909003 +55 0.03431197 -0.03851158 -0.04019299 +56 0.01772176 -0.03461298 -0.03522726 +57 0.00649692 0.00696750 -0.00000560 +58 0.01140763 0.02881505 0.02868778 +59 -0.00650549 -0.01482897 -0.00323939 +60 -0.04926676 0.02888262 0.03946999 +61 0.01452464 0.03844847 -0.02284945 +62 0.02742119 0.00860937 0.01479366 +63 0.04398118 0.00609816 -0.01034324 +64 0.03886736 -0.02780334 0.02902136 diff --git a/unittest/force-styles/tests/data.mdpd b/unittest/force-styles/tests/data.mdpd new file mode 100644 index 00000000000..ac23634bbc1 --- /dev/null +++ b/unittest/force-styles/tests/data.mdpd @@ -0,0 +1,147 @@ +DPD-MESO fluid block for force-style tests: 2 types, perturbed sc lattice + +64 atoms +2 atom types + +0.0 4.4 xlo xhi +0.0 4.4 ylo yhi +0.0 4.4 zlo zhi + +Masses + +1 1.0 +2 1.3 + +Atoms # mdpd + +1 1 6.49905609 0.01298434 -0.04883928 0.07444018 +2 2 6.24516888 0.06783622 -0.00525781 1.12615530 +3 1 5.70098391 -0.04567632 -0.04452860 2.16616359 +4 2 5.51026658 0.03078764 -0.04601972 3.37537695 +5 2 6.49999781 -0.06874312 1.05092586 -0.06578183 +6 1 6.24779321 0.04318271 1.07864240 1.09546916 +7 2 5.70073605 -0.02783548 1.12198831 2.18462309 +8 1 5.50753010 -0.04667717 1.08882465 3.26868637 +9 1 6.49792683 -0.06227214 2.25174264 0.02882352 +10 2 6.24584088 0.02636658 2.26119145 1.08314287 +11 1 5.70411700 -0.01931547 2.18767473 2.18472871 +12 2 5.50394082 0.02702963 2.12104298 3.29425687 +13 2 6.49831524 0.00561337 3.27528227 -0.07650141 +14 1 6.23673488 0.03273527 3.22151102 1.11030567 +15 2 5.70397520 -0.05546133 3.22553317 2.14893471 +16 1 5.51648109 -0.06948175 3.24412140 3.32957883 +17 2 6.22137094 1.13652422 -0.02195450 0.02438219 +18 1 6.49897242 1.09602146 -0.00024773 1.16014414 +19 2 6.19931867 1.06980706 0.05919848 2.23057285 +20 1 5.74581089 1.12935305 -0.07904836 3.23344981 +21 1 6.28931715 1.02511887 1.07532247 0.07137575 +22 2 6.49633856 1.16011313 1.15417210 1.03901953 +23 1 6.21938578 1.13291592 1.14391661 2.24948109 +24 2 5.74677645 1.14675747 1.04245053 3.24861318 +25 2 6.23389056 1.14680962 2.23811466 0.06279191 +26 1 6.49939666 1.09143620 2.26233156 1.04230544 +27 2 6.26978531 1.17313976 2.26151600 2.17400906 +28 1 5.66706172 1.03080843 2.20776589 3.33027288 +29 1 6.22167099 1.07605994 3.22919893 -0.03541272 +30 2 6.49991863 1.15192026 3.23450064 1.16996152 +31 1 6.23656861 1.06000292 3.25271010 2.13795082 +32 2 5.75012787 1.17696502 3.36416806 3.27106483 +33 1 5.75919463 2.13529999 0.02452955 0.06201195 +34 2 6.28476477 2.12193779 0.02128732 1.15707485 +35 1 6.49923645 2.19341117 0.01110001 2.24868298 +36 2 6.19622543 2.15816369 -0.03628058 3.32566530 +37 2 5.69183222 2.20837393 1.10565557 -0.02650322 +38 1 6.20820909 2.26991588 1.06610423 1.12862167 +39 2 6.49549280 2.26306562 1.08412748 2.12869313 +40 1 6.23193553 2.15526370 1.03060670 3.24370018 +41 1 5.72211639 2.13927122 2.17479972 -0.02081067 +42 2 6.24299137 2.19158135 2.22641503 1.12827231 +43 1 6.49999620 2.22995890 2.17829631 2.22605778 +44 2 6.22708062 2.20796888 2.14040342 3.30733467 +45 2 5.73331671 2.17093582 3.32814452 0.03756395 +46 1 6.24193217 2.15851559 3.28962005 1.09278427 +47 2 6.49960871 2.16750299 3.22648094 2.12793827 +48 1 6.26535817 2.27885104 3.33838909 3.29020183 +49 2 5.50572051 3.32666635 -0.03696223 0.03366097 +50 1 5.67525585 3.37213309 0.04371443 1.09442548 +51 2 6.15858597 3.37736971 0.06753549 2.12931935 +52 1 6.49987868 3.28589079 -0.00766840 3.26386142 +53 1 5.50471890 3.31863256 1.04295190 0.03954314 +54 2 5.69514435 3.35723027 1.02985306 1.13073763 +55 1 6.25656726 3.26255667 1.12212315 2.23059313 +56 2 6.49739945 3.37626939 1.14769110 3.27423397 +57 2 5.50646885 3.33680540 2.14348834 0.03418045 +58 1 5.69431689 3.28674359 2.16242875 1.05816137 +59 2 6.21815237 3.25468429 2.24741885 2.13537577 +60 1 6.49996468 3.25717421 2.15076615 3.24528878 +61 1 5.50710983 3.33679975 3.31397341 0.02636698 +62 2 5.65294156 3.36403914 3.29179712 1.02605042 +63 1 6.26345472 3.25028479 3.30264881 2.23444862 +64 2 6.49694064 3.36696505 3.30179176 3.25628563 + +Velocities + +1 -0.02831160 -0.01541081 -0.04165366 +2 0.03700122 -0.04447894 -0.01390959 +3 0.04654418 0.00665355 -0.04133750 +4 -0.00987791 0.01879287 -0.03530965 +5 0.00795792 -0.02655892 0.02090419 +6 -0.03207884 0.03069167 0.01480987 +7 0.00230919 0.01257251 0.00498116 +8 -0.04406370 0.01833987 -0.03233170 +9 0.04987522 0.02810019 0.04630012 +10 0.04304600 -0.00007387 -0.04082313 +11 0.04567680 0.02341428 0.02689077 +12 -0.03089989 -0.04855228 -0.00648322 +13 -0.04403567 0.03449981 -0.00137380 +14 -0.01167001 0.03804143 0.03780654 +15 -0.03665308 -0.01114211 0.01023980 +16 0.01052332 -0.03369011 0.00468744 +17 -0.04812219 -0.03433432 -0.03600365 +18 -0.03054686 0.01398715 -0.00952543 +19 -0.02247753 0.04144581 -0.00961601 +20 0.02702446 0.03105425 0.02101291 +21 -0.02966712 -0.03931869 0.01266337 +22 -0.03944952 -0.01708898 0.03986193 +23 0.02653774 0.04684673 -0.03146847 +24 0.01018804 -0.01964485 -0.02456820 +25 -0.03620801 -0.01478437 -0.00575538 +26 0.00364123 0.02101540 0.00479582 +27 -0.02072467 -0.03307114 0.03429957 +28 -0.01658126 0.00221757 -0.01522925 +29 0.01932235 0.02205431 -0.01679569 +30 -0.03209322 -0.03333299 0.00148518 +31 0.02356192 -0.00673915 -0.03125388 +32 0.03016268 -0.01886402 0.02303108 +33 0.04628483 -0.03493873 -0.00938673 +34 0.00282841 -0.03318474 0.04056121 +35 -0.00092668 -0.03147074 0.00841684 +36 -0.02848091 0.02564968 -0.01469607 +37 0.01067579 0.02059514 0.04727734 +38 -0.04370913 0.04415964 -0.04788947 +39 0.04720940 -0.01669026 -0.01477944 +40 -0.04435139 0.03794740 0.00629521 +41 0.02774398 0.04285161 0.04207001 +42 0.04508713 -0.03556218 -0.04342972 +43 0.04743116 0.02931180 -0.04458373 +44 0.01650698 -0.01055537 -0.02995895 +45 -0.04144333 0.02760040 -0.01931598 +46 -0.01982674 -0.04872324 0.01529654 +47 0.03901920 0.00270410 -0.00124197 +48 0.01495938 -0.04711704 -0.02376479 +49 -0.02960224 -0.04906089 0.03318514 +50 -0.03548302 0.02199353 0.00181870 +51 -0.00617334 0.04077057 -0.02358827 +52 -0.01267820 -0.00655213 0.00681958 +53 -0.00459903 -0.02182782 -0.03525040 +54 0.04634164 0.02207248 -0.02746611 +55 -0.02543259 0.00542534 0.03054498 +56 -0.00194434 -0.04216824 0.03589092 +57 0.00167665 -0.02582170 -0.01422897 +58 0.04351557 -0.00013501 -0.03638103 +59 0.00678528 0.04234778 -0.01499584 +60 0.01125564 0.00362351 -0.02046280 +61 0.04125810 -0.01166450 -0.01244071 +62 0.02759800 -0.03797110 0.01456124 +63 0.04483211 -0.00845954 -0.04053710 +64 0.00470984 -0.01204828 -0.01343296 diff --git a/unittest/force-styles/tests/data.sph b/unittest/force-styles/tests/data.sph new file mode 100644 index 00000000000..43c929c4140 --- /dev/null +++ b/unittest/force-styles/tests/data.sph @@ -0,0 +1,147 @@ +SPH fluid block for force-style tests: 2 types, perturbed sc lattice + +64 atoms +2 atom types + +0.0 4.4 xlo xhi +0.0 4.4 ylo yhi +0.0 4.4 zlo zhi + +Masses + +1 1.0 +2 1.3 + +Atoms # sph + +1 1 1.029552 1.200000 1.000000 0.05529902 0.02830311 -0.05580059 +2 2 1.017052 1.225000 1.500000 -0.03066574 -0.04581859 1.04245342 +3 1 1.004552 1.250000 1.000000 0.07509798 -0.02464683 2.20141234 +4 2 0.992052 1.275000 1.500000 0.07505085 0.02721197 3.32434581 +5 2 1.042052 1.152968 1.500000 0.01354455 1.03953659 -0.00773215 +6 1 1.029552 1.177968 1.000000 -0.02159289 1.11925442 1.09173105 +7 2 1.017052 1.202968 1.500000 0.01286897 1.15810422 2.22543669 +8 1 1.004552 1.227968 1.000000 -0.01803420 1.04454242 3.35079079 +9 1 1.054552 1.033993 1.000000 0.00098747 2.15365714 -0.01271064 +10 2 1.042052 1.058993 1.500000 0.06945814 2.16161902 1.03367546 +11 1 1.029552 1.083993 1.000000 -0.07616174 2.19686019 2.16276277 +12 2 1.017052 1.108993 1.500000 -0.07163412 2.15629907 3.23496736 +13 2 1.067052 0.899031 1.500000 0.02539343 3.29009932 0.01054136 +14 1 1.054552 0.924031 1.000000 -0.07044237 3.25315675 1.16724772 +15 2 1.042052 0.949031 1.500000 -0.04188396 3.24743517 2.12327931 +16 1 1.029552 0.974031 1.000000 0.07074042 3.27381764 3.26526387 +17 2 1.093204 1.200000 1.500000 1.11295378 -0.02193821 -0.02272414 +18 1 1.080704 1.225000 1.000000 1.04714197 -0.01561127 1.17415731 +19 2 1.068204 1.250000 1.500000 1.14112957 -0.03314958 2.20233286 +20 1 1.055704 1.275000 1.000000 1.10790337 0.03360523 3.30987711 +21 1 1.105704 1.152968 1.000000 1.04431640 1.08622019 -0.00582278 +22 2 1.093204 1.177968 1.500000 1.17241767 1.05345940 1.16631862 +23 1 1.080704 1.202968 1.000000 1.13371945 1.07289144 2.15440674 +24 2 1.068204 1.227968 1.500000 1.09332752 1.05362786 3.36564237 +25 2 1.118204 1.033993 1.500000 1.07170960 2.12502912 -0.02598432 +26 1 1.105704 1.058993 1.000000 1.07875132 2.14315620 1.12117628 +27 2 1.093204 1.083993 1.500000 1.15509855 2.12374531 2.23562464 +28 1 1.080704 1.108993 1.000000 1.07995168 2.20598761 3.33505961 +29 1 1.130704 0.899031 1.000000 1.17600594 3.36133417 0.03534366 +30 2 1.118204 0.924031 1.500000 1.02979786 3.29887208 1.14923666 +31 1 1.105704 0.949031 1.000000 1.13954547 3.33289496 2.13856668 +32 2 1.093204 0.974031 1.500000 1.17461455 3.34334797 3.29170644 +33 1 1.086321 1.200000 1.000000 2.22853273 -0.01105131 -0.01970755 +34 2 1.073821 1.225000 1.500000 2.16014616 -0.00180529 1.15297763 +35 1 1.061321 1.250000 1.000000 2.18037342 0.02218930 2.19947401 +36 2 1.048821 1.275000 1.500000 2.26146049 0.02040141 3.28831437 +37 2 1.098821 1.152968 1.500000 2.23440988 1.06509795 -0.07050284 +38 1 1.086321 1.177968 1.000000 2.18491860 1.14888417 1.16301048 +39 2 1.073821 1.202968 1.500000 2.21766981 1.04792498 2.19089844 +40 1 1.061321 1.227968 1.000000 2.16869174 1.08970347 3.26371578 +41 1 1.111321 1.033993 1.000000 2.23054006 2.26582445 0.07304939 +42 2 1.098821 1.058993 1.500000 2.27315671 2.24163465 1.08078417 +43 1 1.086321 1.083993 1.000000 2.18606188 2.24991766 2.27800770 +44 2 1.073821 1.108993 1.500000 2.23135231 2.12436774 3.27579909 +45 2 1.123821 0.899031 1.500000 2.18574494 3.28999418 -0.01270853 +46 1 1.111321 0.924031 1.000000 2.22878614 3.31867087 1.11513598 +47 2 1.098821 0.949031 1.500000 2.27609127 3.22475431 2.22068227 +48 1 1.086321 0.974031 1.000000 2.27543489 3.27335732 3.30276256 +49 2 1.014112 1.200000 1.500000 3.22265692 -0.04993713 -0.05215504 +50 1 1.001612 1.225000 1.000000 3.29207384 0.04068909 1.14794870 +51 2 0.989112 1.250000 1.500000 3.33799968 0.06064463 2.26728590 +52 1 0.976612 1.275000 1.000000 3.25209398 -0.05057549 3.30270421 +53 1 1.026612 1.152968 1.000000 3.24631854 1.09696839 -0.06999935 +54 2 1.014112 1.177968 1.500000 3.27083571 1.12754819 1.16444630 +55 1 1.001612 1.202968 1.000000 3.30801330 1.06930632 2.25098559 +56 2 0.989112 1.227968 1.500000 3.28592390 1.07406896 3.37429988 +57 2 1.039112 1.033993 1.500000 3.26391272 2.19751097 -0.02969045 +58 1 1.026612 1.058993 1.000000 3.30777922 2.24510490 1.02632363 +59 2 1.014112 1.083993 1.500000 3.22631141 2.25257111 2.25596451 +60 1 1.001612 1.108993 1.000000 3.32702405 2.26806198 3.25097782 +61 1 1.051612 0.899031 1.000000 3.36452134 3.37479967 0.06804707 +62 2 1.039112 0.924031 1.500000 3.33704086 3.35106494 1.04402498 +63 1 1.026612 0.949031 1.000000 3.23903766 3.23476540 2.26741988 +64 2 1.014112 0.974031 1.500000 3.29726915 3.37091785 3.37052749 + +Velocities + +1 0.04267352 -0.02264905 0.02921697 +2 -0.04572513 0.03100855 0.03559139 +3 -0.04374377 0.03088909 0.03681943 +4 -0.00123839 0.00685559 -0.03363964 +5 0.02766608 0.00337410 0.01841909 +6 0.02740909 -0.00796807 0.00384155 +7 0.04985453 -0.03513854 0.03363179 +8 0.01812025 0.01316070 -0.01234141 +9 0.01673080 0.01099089 -0.04928509 +10 -0.04815449 -0.01126861 -0.01523321 +11 -0.01476842 0.03624967 0.00359177 +12 -0.02537976 0.04380841 -0.04352948 +13 0.02249802 0.02932862 -0.00591970 +14 -0.02460833 -0.00670099 0.02662428 +15 0.03946785 -0.00120374 -0.03581383 +16 0.03471635 -0.00230345 -0.02007876 +17 -0.03661232 -0.01157799 0.00230718 +18 -0.01988705 0.03737157 -0.01600620 +19 0.00782663 -0.03143082 0.02604715 +20 -0.00220414 -0.02308375 -0.00778317 +21 -0.02491267 0.04802381 0.03606415 +22 0.02587858 -0.03338367 0.02280509 +23 -0.03837340 -0.04043931 0.01761662 +24 0.03291150 0.03134267 -0.01539421 +25 0.00215991 0.00542911 -0.04064995 +26 -0.00673738 -0.00240879 -0.00147970 +27 0.00365707 0.02485029 0.02884987 +28 -0.02341677 0.03926550 -0.04432192 +29 -0.01616935 0.04540496 -0.03766222 +30 0.02122407 -0.00375746 -0.00331165 +31 0.00133484 0.04402652 -0.01922215 +32 0.00508197 0.04643220 -0.01093854 +33 0.01124389 0.01295031 -0.03811380 +34 -0.00951200 -0.01147593 0.02748564 +35 0.02385697 -0.02835467 0.02946076 +36 0.01464530 0.00169097 -0.00384071 +37 -0.00923543 -0.00983286 0.02220530 +38 0.01704463 0.02492793 -0.04534217 +39 -0.04085335 0.03381016 -0.01006634 +40 -0.02878107 -0.03796041 -0.02060737 +41 0.02796347 0.00044064 -0.00113419 +42 -0.04421731 -0.04602760 -0.01703318 +43 0.01096762 -0.00875072 0.01850240 +44 -0.01136754 0.04605225 0.03876048 +45 -0.02061465 0.02470576 -0.03080910 +46 -0.02526773 0.01689530 -0.02086361 +47 -0.02818331 -0.04414105 0.01012116 +48 0.04738956 0.01783646 -0.01858319 +49 -0.01267448 -0.01981269 -0.00953245 +50 -0.02645526 -0.03750213 0.00397010 +51 -0.01331747 0.00165729 -0.02782700 +52 0.00937094 0.01577974 -0.02959447 +53 -0.03572450 0.02227715 0.01677259 +54 0.02958298 0.01089465 -0.02533393 +55 0.02887911 0.03184550 0.00834158 +56 0.03389664 0.03445287 0.03354892 +57 -0.02015108 -0.01453966 0.04637253 +58 -0.00722932 -0.02428313 -0.04954114 +59 0.03099049 0.03951202 0.01424419 +60 -0.03325990 -0.04603315 0.02119335 +61 -0.00675874 -0.00227249 -0.02923099 +62 -0.01206507 0.04797677 -0.00298232 +63 -0.04804870 0.02531816 -0.02025644 +64 0.04527819 -0.01044824 -0.01327267 diff --git a/unittest/force-styles/tests/data.tdpd b/unittest/force-styles/tests/data.tdpd new file mode 100644 index 00000000000..174ef99d4fe --- /dev/null +++ b/unittest/force-styles/tests/data.tdpd @@ -0,0 +1,147 @@ +DPD-MESO fluid block for force-style tests: 2 types, perturbed sc lattice + +64 atoms +2 atom types + +0.0 4.4 xlo xhi +0.0 4.4 ylo yhi +0.0 4.4 zlo zhi + +Masses + +1 1.0 +2 1.3 + +Atoms # tdpd + +1 1 0.01298434 -0.04883928 0.07444018 0.49686605 +2 2 0.06783622 -0.00525781 1.12615530 0.51361000 +3 1 -0.04567632 -0.04452860 2.16616359 0.48507071 +4 2 0.03078764 -0.04601972 3.37537695 0.50094304 +5 2 -0.06874312 1.05092586 -0.06578183 0.60911372 +6 1 0.04318271 1.07864240 1.09546916 0.63363716 +7 2 -0.02783548 1.12198831 2.18462309 0.62487319 +8 1 -0.04667717 1.08882465 3.26868637 0.61761415 +9 1 -0.06227214 2.25174264 0.02882352 0.72678548 +10 2 0.02636658 2.26119145 1.08314287 0.73921255 +11 1 -0.01931547 2.18767473 2.18472871 0.72765570 +12 2 0.02702963 2.12104298 3.29425687 0.72878290 +13 2 0.00561337 3.27528227 -0.07650141 0.79016581 +14 1 0.03273527 3.22151102 1.11030567 0.78997266 +15 2 -0.05546133 3.22553317 2.14893471 0.78482663 +16 1 -0.06948175 3.24412140 3.32957883 0.78460172 +17 2 1.13652422 -0.02195450 0.02438219 0.71242606 +18 1 1.09602146 -0.00024773 1.16014414 0.70821855 +19 2 1.06980706 0.05919848 2.23057285 0.70938788 +20 1 1.12935305 -0.07904836 3.23344981 0.70644316 +21 1 1.02511887 1.07532247 0.07137575 0.77354810 +22 2 1.16011313 1.15417210 1.03901953 0.78686138 +23 1 1.13291592 1.14391661 2.24948109 0.78475283 +24 2 1.14675747 1.04245053 3.24861318 0.78169994 +25 2 1.14680962 2.23811466 0.06279191 0.79757568 +26 1 1.09143620 2.26233156 1.04230544 0.79855639 +27 2 1.17313976 2.26151600 2.17400906 0.79640309 +28 1 1.03080843 2.20776589 3.33027288 0.79982788 +29 1 1.07605994 3.22919893 -0.03541272 0.76690774 +30 2 1.15192026 3.23450064 1.16996152 0.75894093 +31 1 1.06000292 3.25271010 2.13795082 0.76715869 +32 2 1.17696502 3.36416806 3.27106483 0.74781284 +33 1 2.13529999 0.02452955 0.06201195 0.79934139 +34 2 2.12193779 0.02128732 1.15707485 0.79911282 +35 1 2.19341117 0.01110001 2.24868298 0.79985615 +36 2 2.15816369 -0.03628058 3.32566530 0.79916575 +37 2 2.20837393 1.10565557 -0.02650322 0.77425261 +38 1 2.26991588 1.06610423 1.12862167 0.77083658 +39 2 2.26306562 1.08412748 2.12869313 0.77052431 +40 1 2.15526370 1.03060670 3.24370018 0.78179834 +41 1 2.13927122 2.17479972 -0.02081067 0.70973963 +42 2 2.19158135 2.22641503 1.12827231 0.69711973 +43 1 2.22995890 2.17829631 2.22605778 0.69539149 +44 2 2.20796888 2.14040342 3.30733467 0.70225382 +45 2 2.17093582 3.32814452 0.03756395 0.58598106 +46 1 2.15851559 3.28962005 1.09278427 0.59288325 +47 2 2.16750299 3.22648094 2.12793827 0.59827601 +48 1 2.27885104 3.33838909 3.29020183 0.56284346 +49 2 3.32666635 -0.03696223 0.03366097 0.72091542 +50 1 3.37213309 0.04371443 1.09442548 0.70746089 +51 2 3.37736971 0.06753549 2.12931935 0.70458373 +52 1 3.28589079 -0.00766840 3.26386142 0.72429901 +53 1 3.31863256 1.04295190 0.03954314 0.61720370 +54 2 3.35723027 1.02985306 1.13073763 0.61116197 +55 1 3.26255667 1.12212315 2.23059313 0.61929487 +56 2 3.37626939 1.14769110 3.27423397 0.59412151 +57 2 3.33680540 2.14348834 0.03418045 0.48453692 +58 1 3.28674359 2.16242875 1.05816137 0.49277089 +59 2 3.25468429 2.24741885 2.13537577 0.48930610 +60 1 3.25717421 2.15076615 3.24528878 0.50037927 +61 1 3.33679975 3.31397341 0.02636698 0.35099935 +62 2 3.36403914 3.29179712 1.02605042 0.34835201 +63 1 3.25028479 3.30264881 2.23444862 0.36825126 +64 2 3.36696505 3.30179176 3.25628563 0.34678979 + +Velocities + +1 -0.03201869 -0.00795403 0.03479921 +2 -0.02643912 -0.03078098 0.02281634 +3 -0.00669423 0.00467436 -0.03841689 +4 0.01928721 0.02212313 -0.01504497 +5 -0.00011935 -0.00089943 -0.03523568 +6 0.03390621 0.04491687 -0.02783907 +7 -0.01121745 -0.00892162 -0.04544493 +8 -0.04451269 0.04031793 -0.04758810 +9 0.03326769 -0.00709480 -0.04523142 +10 -0.03397317 0.02644840 0.00819973 +11 -0.04117787 -0.03128566 0.01199188 +12 -0.00467028 0.03646897 -0.02979361 +13 -0.02711016 0.04850138 0.04623412 +14 -0.03042491 0.01530174 -0.02082256 +15 -0.01101939 -0.03484510 -0.01093564 +16 0.00212436 -0.01542356 0.01905936 +17 0.02783670 -0.01962949 0.02896130 +18 -0.03865031 -0.01454373 -0.03451855 +19 -0.03670009 0.00761039 -0.04526717 +20 -0.01268940 -0.03165761 0.03235617 +21 0.03866044 -0.03342589 0.03655260 +22 0.01939285 -0.01635845 0.03879372 +23 0.03002229 0.03683112 -0.02813246 +24 -0.03292214 -0.00937381 0.04813320 +25 -0.01096145 -0.01694261 0.02823612 +26 0.02786581 -0.00967863 -0.04702906 +27 -0.03279311 -0.01706357 -0.04655259 +28 0.02581294 -0.04690169 0.04451038 +29 0.03592077 -0.00005913 0.04095707 +30 0.03666829 0.03232871 0.00416766 +31 -0.02068118 -0.00518087 0.01686338 +32 -0.04024565 0.03016945 0.00039411 +33 -0.03544632 -0.03429838 -0.01440353 +34 -0.02734553 0.03507439 0.02702065 +35 0.04141907 0.01082777 0.00726468 +36 0.04095339 -0.01312810 -0.04872478 +37 0.00982021 -0.01591031 -0.00483369 +38 -0.03082379 -0.02814046 0.04921900 +39 0.03602035 -0.00820642 -0.02367749 +40 -0.01528462 -0.00853417 -0.04005798 +41 -0.00902390 -0.00555465 -0.02921308 +42 -0.00372751 0.03798104 -0.02542270 +43 -0.04814668 0.03842508 -0.04891021 +44 -0.04257917 -0.04672035 -0.03641499 +45 0.04385333 -0.01436609 0.01608541 +46 -0.03340302 0.04470381 -0.01607742 +47 0.03579692 0.01226179 -0.00346989 +48 0.01045329 0.04741276 -0.01747468 +49 -0.03864231 0.01858963 0.03520233 +50 0.02625418 -0.01872451 -0.01616639 +51 -0.01818261 0.01616689 0.02951320 +52 -0.03197042 -0.02803754 -0.01507355 +53 0.01103194 -0.01102532 0.02719532 +54 -0.01038988 -0.00955569 0.01329494 +55 0.03692014 -0.01225341 0.00682699 +56 0.04078680 0.01037301 0.01857261 +57 -0.04231726 0.04369587 0.03142416 +58 0.04295430 -0.03571027 -0.02642841 +59 0.04063647 0.00448093 0.01466802 +60 -0.03366684 0.01247965 0.03182176 +61 0.04746820 0.04382632 0.02386343 +62 0.00030902 -0.02506022 -0.04579351 +63 0.04872479 0.03943732 -0.01755378 +64 0.03761152 0.02480107 0.04261727 diff --git a/unittest/force-styles/tests/in.edpd b/unittest/force-styles/tests/in.edpd new file mode 100644 index 00000000000..03f9e8517ca --- /dev/null +++ b/unittest/force-styles/tests/in.edpd @@ -0,0 +1,17 @@ +variable newton_pair index on +variable newton_bond index on +variable units index lj +variable input_dir index . +variable data_file index ${input_dir}/data.edpd +variable pair_style index 'zero 2.0' + +atom_style edpd +atom_modify map array +neigh_modify delay 2 every 2 check no +units ${units} +timestep 0.005 +newton ${newton_pair} ${newton_bond} +comm_modify vel yes + +pair_style ${pair_style} +read_data ${data_file} diff --git a/unittest/force-styles/tests/in.mdpd b/unittest/force-styles/tests/in.mdpd new file mode 100644 index 00000000000..a571fe17c3e --- /dev/null +++ b/unittest/force-styles/tests/in.mdpd @@ -0,0 +1,17 @@ +variable newton_pair index on +variable newton_bond index on +variable units index lj +variable input_dir index . +variable data_file index ${input_dir}/data.mdpd +variable pair_style index 'zero 2.0' + +atom_style mdpd +atom_modify map array +neigh_modify delay 2 every 2 check no +units ${units} +timestep 0.005 +newton ${newton_pair} ${newton_bond} +comm_modify vel yes + +pair_style ${pair_style} +read_data ${data_file} diff --git a/unittest/force-styles/tests/in.sph b/unittest/force-styles/tests/in.sph new file mode 100644 index 00000000000..d9841d90d64 --- /dev/null +++ b/unittest/force-styles/tests/in.sph @@ -0,0 +1,16 @@ +variable newton_pair index on +variable newton_bond index on +variable units index lj +variable input_dir index . +variable data_file index ${input_dir}/data.sph +variable pair_style index 'zero 2.0' + +atom_style sph +atom_modify map array +neigh_modify delay 2 every 2 check no +units ${units} +timestep 0.0005 +newton ${newton_pair} ${newton_bond} + +pair_style ${pair_style} +read_data ${data_file} diff --git a/unittest/force-styles/tests/in.tdpd b/unittest/force-styles/tests/in.tdpd new file mode 100644 index 00000000000..e1adb9ccaa4 --- /dev/null +++ b/unittest/force-styles/tests/in.tdpd @@ -0,0 +1,17 @@ +variable newton_pair index on +variable newton_bond index on +variable units index lj +variable input_dir index . +variable data_file index ${input_dir}/data.tdpd +variable pair_style index 'zero 2.0' + +atom_style tdpd 1 +atom_modify map array +neigh_modify delay 2 every 2 check no +units ${units} +timestep 0.005 +newton ${newton_pair} ${newton_bond} +comm_modify vel yes + +pair_style ${pair_style} +read_data ${data_file} diff --git a/unittest/force-styles/tests/kspace-ewald_dipole_spin.yaml b/unittest/force-styles/tests/kspace-ewald_dipole_spin.yaml new file mode 100644 index 00000000000..b48cd6bfceb --- /dev/null +++ b/unittest/force-styles/tests/kspace-ewald_dipole_spin.yaml @@ -0,0 +1,254 @@ +--- +lammps_version: 4 Jul 2026 +tags: spin +date_generated: Fri Jul 10 16:52:59 2026 +epsilon: 5e-13 +skip_tests: +prerequisites: | + atom spin + pair spin/dipole/long + kspace ewald/dipole/spin + fix nve/spin +pre_commands: | + variable newton_pair delete + variable newton_pair index on +post_commands: | + set atom * spin/random 97531 2.2 + fix move all nve/spin lattice yes + kspace_style ewald/dipole/spin 1.0e-8 + kspace_modify gewald 0.2 +input_file: in.spin +pair_style: spin/dipole/long 4.0 +pair_coeff: | + * * 4.0 +extract: "" +natoms: 54 +init_vdwl: -2.2950093062740123e-05 +init_coul: 0 +init_stress: |- + -2.3391136202277567e-04 1.8114710506628802e-04 1.5660228190990777e-05 2.1494202296838611e-05 7.0759282466705263e-05 -2.7686651192338510e-04 +init_forces: |2 + 1 -3.2455074082448103e-05 4.6905565934885007e-05 2.3305615839146342e-05 + 2 9.2216445448373028e-06 -1.2966618562827103e-05 -1.0816144504799094e-05 + 3 1.1361174519501346e-04 4.1268025533030536e-05 4.5336779324739312e-05 + 4 -2.7402124456625486e-05 -4.5526781178058262e-06 3.1568933759766198e-05 + 5 7.6140482725749415e-06 4.6759981719538159e-05 -2.6232283155600891e-05 + 6 5.9724693559544756e-05 5.1563892701606183e-06 -2.6674087851839982e-05 + 7 -5.5853329422700363e-05 5.2892815558707191e-05 -4.4397154851300401e-06 + 8 4.4644282607988472e-05 -4.0643755170551421e-05 9.9169105271432151e-06 + 9 5.2779975134966783e-05 2.0684026658724423e-05 1.7109396162492102e-05 + 10 -1.5586187018940711e-05 3.7590440708794488e-05 -9.8064790833677314e-06 + 11 -1.4431887028187657e-05 -3.5705488322739454e-05 -1.1596774026421952e-05 + 12 2.8442600658299293e-05 -6.5675832483382768e-06 -5.2327100728518153e-05 + 13 -2.4175951783952530e-05 7.8540976666064270e-07 2.2449887000156516e-05 + 14 -6.6585951666650595e-05 -3.2069721115644771e-05 -1.0340088341133155e-07 + 15 -1.9112489623200032e-05 2.8686469730042741e-05 1.4866055594736835e-05 + 16 1.8196913293437499e-05 3.1181885423756177e-05 -3.5472003652655816e-05 + 17 5.9426356907673422e-05 1.1296323305865192e-05 -2.9919295645022728e-05 + 18 -2.7194213225625505e-05 -2.0506058270806383e-05 -4.5670585802332974e-05 + 19 1.5947586722204209e-05 5.7265065598353519e-05 -1.7902133885176612e-05 + 20 -3.9075525023001397e-06 -1.2847925989113327e-05 1.7559209749238315e-05 + 21 5.1199300082251659e-05 2.9699800604480805e-06 4.2568283710610008e-05 + 22 1.7902835654498885e-05 1.0289771257927616e-05 -4.2465745666420531e-05 + 23 1.4748910457698706e-05 1.6589066901305047e-06 4.3494006752706556e-05 + 24 1.6747555037292478e-05 -3.6644108839293911e-05 -5.8535613648059343e-05 + 25 -7.1237356644002229e-06 3.6515609111319758e-05 3.9418303302327102e-06 + 26 -6.9260782806128090e-05 5.2989965928276116e-05 -4.0383073677126377e-06 + 27 -5.6782421865766976e-05 2.2012320018247964e-05 -1.4405711237638573e-05 + 28 -3.7837361224386893e-05 5.6903999161686934e-05 4.4595588528495917e-06 + 29 3.0505864458960617e-06 5.2436778929006859e-06 -4.1837000949511187e-05 + 30 -1.3512601692074098e-05 2.8141676703038429e-06 -1.3466358439908960e-05 + 31 6.9512878005789961e-05 -6.5549265821192307e-05 -8.8690594568688168e-06 + 32 -6.2573924807734277e-06 -2.0101138322328563e-05 1.9570783223374253e-05 + 33 4.5949146678672467e-05 6.3292336285218913e-05 2.4214568597487208e-05 + 34 -4.9735092012021656e-05 -7.4461161473796754e-05 -8.1904771483431928e-05 + 35 -3.0431446679420347e-05 -4.5509024835934945e-05 -4.0616636909430807e-05 + 36 5.9739237499619856e-05 3.7167993781440073e-05 8.5655431944874405e-06 + 37 -3.6151936955785649e-05 -2.6571151413278735e-05 4.0793235932566067e-05 + 38 2.7850263848959927e-06 -6.5722965748927570e-05 -7.6255805990293445e-06 + 39 -9.1613328142572920e-05 4.1522389567686961e-05 2.5664719879116184e-06 + 40 9.5468639111416494e-06 -4.8768804327532751e-05 4.3456565747582630e-05 + 41 1.3897619416958544e-05 3.4856532368470006e-05 4.6054049244892137e-05 + 42 -2.1335009797990108e-05 -6.5714950044916599e-05 4.7792457054388280e-05 + 43 4.1912415232500918e-05 4.9170086243527699e-05 6.8001909966112025e-06 + 44 -4.6303808257248552e-05 -1.6145350121904297e-05 -2.2683902959801154e-05 + 45 2.7714071144819791e-05 -1.1862766038179886e-04 3.9600340240586112e-05 + 46 -1.7574683963948159e-05 -1.5421848098633375e-05 3.9710489817058120e-05 + 47 4.4898962904586059e-05 -3.9351458516356715e-05 4.2296776335194606e-05 + 48 -4.1487031709259680e-05 2.8520515228938708e-05 5.0725496181267270e-05 + 49 7.1755407610356092e-05 -5.6528396171151011e-05 -1.6328431004051107e-05 + 50 3.7569027910041966e-05 9.9950783656715214e-06 -8.0197845795985988e-05 + 51 -1.1643665000990105e-05 -2.7056220067048343e-07 4.8082155980872097e-06 + 52 -6.5002723699656339e-05 3.0348078093247772e-05 4.3117123257118793e-05 + 53 4.1366886619414602e-06 1.2301043134202120e-05 -2.1959511996854118e-05 + 54 -5.3918597172448272e-05 -1.7797174952620583e-05 -1.0754292793448790e-05 +init_mag_forces: |2 + 1 8.6304986366571856e-02 6.6159887895107919e-02 -5.5356256733070444e-03 + 2 7.7686195110675010e-02 -4.2717324198235200e-02 -1.1385638516215972e-01 + 3 -3.3121893078339251e-02 -2.3738651930059626e-02 -4.3251755244798594e-03 + 4 -3.4595544225702246e-03 -5.7224586102025878e-03 -9.2106095490726583e-02 + 5 -1.1309030829711622e-02 1.2542374862697589e-01 -1.9912280135337378e-02 + 6 3.4863496738710871e-03 -5.9063298737894610e-03 6.1745352789848898e-02 + 7 -4.8855254394872157e-02 5.7995547710529866e-02 1.3455321458481465e-01 + 8 3.1723270242656476e-03 -7.8933602369828909e-02 7.5980421969341405e-02 + 9 1.0669603526262229e-01 3.8184262116961645e-02 7.9103120733717530e-02 + 10 2.8155543472430301e-02 -3.3799119964080186e-02 5.7363226287206207e-02 + 11 3.8677889878235991e-02 1.0193828223322210e-02 1.0111642783902823e-01 + 12 -8.3662939541272775e-03 -3.2859219681546148e-02 5.8428275328424505e-02 + 13 4.7961957030014060e-02 -3.4169945096365964e-02 -1.0708942033726843e-01 + 14 -7.8579206205722264e-03 1.4325076933866038e-01 1.0706645071406470e-01 + 15 7.5720845061372222e-02 -3.7620899319758164e-02 -1.1212804950493428e-01 + 16 4.4621070162982439e-02 5.5976103658972633e-03 -1.4389810966980718e-01 + 17 -9.7434374347452710e-02 -7.9109815717281859e-02 -7.7682745007318116e-02 + 18 -9.3272776606549507e-02 6.2699999277051680e-02 1.1323990279063963e-01 + 19 -4.1323068498816028e-02 1.1816688124188112e-02 6.6679124966894876e-02 + 20 -1.7538395033609128e-01 -9.8604959302679828e-03 -1.3877574784396256e-02 + 21 8.7893206245407071e-02 -6.0958354196359796e-02 6.6877650985368627e-03 + 22 1.7092298714276472e-01 -6.8934763646430655e-02 2.5706712625835192e-02 + 23 4.4421630895865122e-02 1.1313572635230159e-02 -5.8535957921114906e-03 + 24 -4.1972873642561734e-02 -5.4217101091999287e-02 -4.1945208807987258e-02 + 25 -2.6038491155743926e-01 -1.1144841345687617e-01 -1.0799308265377351e-02 + 26 2.8965253670550455e-02 -2.6089215718149553e-02 4.8810564078030437e-02 + 27 7.1559096301293174e-02 -5.8186889130388397e-03 -9.2107881704675001e-02 + 28 -2.4765704734543162e-02 -5.8245745812882388e-03 5.2663908856794964e-02 + 29 5.3468923990218478e-02 -6.8469756826467248e-02 1.2757740070650111e-02 + 30 -2.7867864537025278e-02 -1.9557332987205256e-01 -7.9806763704546452e-03 + 31 -1.1979597625249475e-01 -5.6800163024931891e-02 -4.1436719052930261e-03 + 32 -1.1166676689618985e-01 6.6654171583027041e-03 8.3305583429474257e-03 + 33 2.7486483417076164e-02 6.5387357673115445e-02 -6.0288531248461022e-02 + 34 -9.7942242200013373e-03 8.1815447414490122e-02 -5.9245818179492959e-03 + 35 -3.3567942812711207e-02 -1.8934215920423075e-02 7.5288899732642120e-02 + 36 -1.5950980258341158e-02 1.2398226377786867e-01 -6.2066848276308928e-02 + 37 1.0941930605315495e-02 -3.9398155916477523e-02 1.5999220208320643e-02 + 38 -3.5090045858379340e-02 -7.5992281254790128e-02 7.3959537973175449e-02 + 39 -8.7555382781932659e-02 -1.8663473731382458e-02 2.9920128308401375e-02 + 40 -6.6200918154807706e-02 -6.3904650106993047e-02 7.0532674087850716e-02 + 41 -2.5213514852625379e-02 1.5650667422755415e-01 -2.0506298111638746e-02 + 42 6.4157194448284743e-02 8.1994512666065722e-02 -1.0968362907777116e-02 + 43 -4.2663747185000045e-02 -7.8694579112521992e-02 -9.4046996130179875e-02 + 44 4.1470436639247599e-02 7.4482201849212448e-02 -9.5445426966275254e-02 + 45 -5.1820207933523675e-02 -3.4189388751725690e-02 2.9017392929276568e-02 + 46 3.5280707408523064e-02 1.2921589161776523e-01 -3.1738654580972359e-02 + 47 1.1626608007817683e-01 -7.7813402633983272e-02 -4.8739724029319142e-02 + 48 1.0868197277131789e-02 4.7296959068977018e-02 -7.8766135619803543e-02 + 49 1.5540857713148096e-01 -8.1916537168188128e-03 5.1416197634351936e-02 + 50 5.2836475907170064e-03 3.0569670002470267e-02 -1.2474453026959053e-02 + 51 -6.9668102491424480e-02 -2.1242401441722215e-02 6.5006417433250002e-02 + 52 3.3993098048615840e-02 -6.6899918507553890e-02 2.8574197843237809e-02 + 53 2.0811224049646859e-02 7.4040120940237599e-03 3.7118323336383180e-02 + 54 1.0684293482756616e-03 -5.7265139746967945e-02 -2.1456658575849018e-02 +run_vdwl: -2.3128122565015137e-05 +run_coul: 0 +run_stress: |- + -2.3455731003306106e-04 1.8098177318031359e-04 1.5914892446581788e-05 2.1314388072795957e-05 7.0687161431627339e-05 -2.7705782463282479e-04 +run_forces: |2 + 1 -3.2469392360522318e-05 4.6856167799610415e-05 2.3299488678754372e-05 + 2 9.2007766908528529e-06 -1.2985365191999046e-05 -1.0871208398681278e-05 + 3 1.1358441938220862e-04 4.1280439628930466e-05 4.5304392580507042e-05 + 4 -2.7311883186381332e-05 -4.5843505534108849e-06 3.1596741616063001e-05 + 5 7.5578748857608392e-06 4.6727288281175856e-05 -2.6273179369492682e-05 + 6 5.9750170237623303e-05 5.1256710636795937e-06 -2.6783850792723041e-05 + 7 -5.5869118619102364e-05 5.3035814093877918e-05 -4.4027995904411932e-06 + 8 4.4684947089133526e-05 -4.0736465579141535e-05 9.9743953266197028e-06 + 9 5.2793168706937493e-05 2.0653133423795097e-05 1.7179691782002429e-05 + 10 -1.5638940886976249e-05 3.7546668671900588e-05 -9.8274507328588490e-06 + 11 -1.4325322180661608e-05 -3.5621490627118356e-05 -1.1440375456726939e-05 + 12 2.8362614288365557e-05 -6.5736156452899554e-06 -5.2302811316338820e-05 + 13 -2.4219788915728280e-05 8.7617674220135232e-07 2.2473608619153596e-05 + 14 -6.6668785054691250e-05 -3.2099575891000671e-05 -1.1990176311739458e-08 + 15 -1.9029503504233766e-05 2.8752279786374988e-05 1.4815328859707545e-05 + 16 1.8154416698990542e-05 3.1193111766932797e-05 -3.5474411752372554e-05 + 17 5.9412040911939783e-05 1.1244778743662045e-05 -2.9878551289428845e-05 + 18 -2.7104994988173796e-05 -2.0390097613706180e-05 -4.5575074738542405e-05 + 19 1.5963853516309383e-05 5.7186502873282069e-05 -1.7916338986658547e-05 + 20 -3.8319179114317962e-06 -1.2822258775941114e-05 1.7514878771334721e-05 + 21 5.1142872142431725e-05 2.9256328393053378e-06 4.2502161895279342e-05 + 22 1.7879973887243395e-05 1.0281366826440805e-05 -4.2430416659261067e-05 + 23 1.4831336768854464e-05 1.6240208944869137e-06 4.3546162706779351e-05 + 24 1.6710637978987504e-05 -3.6584116658429282e-05 -5.8537424443800668e-05 + 25 -7.1387136141455944e-06 3.6523468264570764e-05 3.9510733817163646e-06 + 26 -6.9100125774130286e-05 5.2982397184258209e-05 -4.0452506774186873e-06 + 27 -5.6820958497427290e-05 2.2028107411952732e-05 -1.4339824577631264e-05 + 28 -3.7898417445508020e-05 5.6926053863154392e-05 4.4174887547904284e-06 + 29 3.0891542419585265e-06 5.2349738131269792e-06 -4.1846105077918682e-05 + 30 -1.3520329586047789e-05 2.7534933640270183e-06 -1.3400992723275336e-05 + 31 6.9517780217264296e-05 -6.5512198280184215e-05 -8.9482013890360014e-06 + 32 -6.3119438056285341e-06 -2.0119427687816709e-05 1.9567711444844922e-05 + 33 4.5946411980191000e-05 6.3257719777778552e-05 2.4182614912153006e-05 + 34 -4.9708020139791208e-05 -7.4406021362783767e-05 -8.1827496527065924e-05 + 35 -3.0369666660625395e-05 -4.5492433984307683e-05 -4.0597492953481716e-05 + 36 5.9736656462102463e-05 3.7185373667423620e-05 8.5599386514771749e-06 + 37 -3.6146924520827681e-05 -2.6558895593953882e-05 4.0786184541784169e-05 + 38 2.8498495579399490e-06 -6.5799233968196256e-05 -7.6091393149753252e-06 + 39 -9.1624587522769654e-05 4.1550440330082909e-05 2.5144849397580762e-06 + 40 9.4658335565803881e-06 -4.8790913460243988e-05 4.3355854443582545e-05 + 41 1.3985476497505228e-05 3.4851180400652061e-05 4.6098387816842799e-05 + 42 -2.1245320735080805e-05 -6.5749042033509794e-05 4.7748992923366775e-05 + 43 4.1789384419826439e-05 4.9180430457816785e-05 6.7549345660682477e-06 + 44 -4.6280440127380631e-05 -1.6116876403605340e-05 -2.2678643080926200e-05 + 45 2.7690149430329907e-05 -1.1867592341476938e-04 3.9601276857623608e-05 + 46 -1.7660769745712866e-05 -1.5414435385032350e-05 3.9779945629464252e-05 + 47 4.4926372223309964e-05 -3.9423512563373010e-05 4.2230620073707103e-05 + 48 -4.1471611034221291e-05 2.8574195543508504e-05 5.0724267222464809e-05 + 49 7.1677698689085237e-05 -5.6440269449375432e-05 -1.6323815066075369e-05 + 50 3.7503690685990419e-05 1.0020715841715447e-05 -8.0273229237854768e-05 + 51 -1.1610884964023892e-05 -3.4847369153771488e-07 4.8873711179665096e-06 + 52 -6.5082763319015158e-05 3.0263446230846305e-05 4.3049031433078187e-05 + 53 4.1974852165741196e-06 1.2354164526639172e-05 -2.2044492017058546e-05 + 54 -5.3943921264058138e-05 -1.7750220298483077e-05 -1.0756463200533669e-05 +run_mag_forces: |2 + 1 8.6326316867189556e-02 6.6036486679654172e-02 -5.5421537943439597e-03 + 2 7.7674404063029584e-02 -4.2705489158937432e-02 -1.1378723949371931e-01 + 3 -3.2906899612794388e-02 -2.3729120826035312e-02 -4.2637001324092455e-03 + 4 -3.4779071132457684e-03 -5.8394655506442128e-03 -9.2131724679793151e-02 + 5 -1.1276693016398037e-02 1.2539968098381421e-01 -1.9940550449147811e-02 + 6 3.4741058892780283e-03 -5.8302230836541034e-03 6.1750551461015948e-02 + 7 -4.8745499627568509e-02 5.7928744677638380e-02 1.3449501040508163e-01 + 8 3.0713003134392129e-03 -7.8871671157184492e-02 7.5925466558793814e-02 + 9 1.0661038234039628e-01 3.8175210805985169e-02 7.8964699825113088e-02 + 10 2.8263861015911926e-02 -3.3851356951332748e-02 5.7427296551501070e-02 + 11 3.8798218008406285e-02 1.0303812254577088e-02 1.0112507136213278e-01 + 12 -8.2796171237684429e-03 -3.2879365054463844e-02 5.8487966454914400e-02 + 13 4.7915771942511440e-02 -3.4149385966512437e-02 -1.0702982863129785e-01 + 14 -8.0392671680318915e-03 1.4330459996492551e-01 1.0712330115008772e-01 + 15 7.5725714189018370e-02 -3.7724631258809455e-02 -1.1212343280064106e-01 + 16 4.4675491161688861e-02 5.6882630193629304e-03 -1.4387280740046449e-01 + 17 -9.7550365560068936e-02 -7.9155414859198497e-02 -7.7681646717943850e-02 + 18 -9.3191625149769905e-02 6.2632671670093343e-02 1.1310650246752145e-01 + 19 -4.1134026536196341e-02 1.1864175674292540e-02 6.6639016874854518e-02 + 20 -1.7542627907043395e-01 -9.8128303816822152e-03 -1.3938375310642692e-02 + 21 8.7804387655941105e-02 -6.1119056302175796e-02 6.6771373234775569e-03 + 22 1.7094758340179722e-01 -6.8744568985054724e-02 2.5715394316411573e-02 + 23 4.4320120991331716e-02 1.1286705002151658e-02 -5.8554901171107288e-03 + 24 -4.1972759406900748e-02 -5.4307798315952852e-02 -4.2022148490401381e-02 + 25 -2.6043250054954359e-01 -1.1144127337582453e-01 -1.0691634075041404e-02 + 26 2.8988807974112654e-02 -2.6060393143949447e-02 4.8815081997346937e-02 + 27 7.1541136486246104e-02 -5.7254919416680362e-03 -9.2039621214770606e-02 + 28 -2.4663326700249046e-02 -5.9008220464572825e-03 5.2595712744437473e-02 + 29 5.3448764802342452e-02 -6.8431450661695800e-02 1.2713196226731560e-02 + 30 -2.7852854252194179e-02 -1.9551829723220859e-01 -8.0337362351464107e-03 + 31 -1.1985743448968647e-01 -5.6793679201973910e-02 -4.1215360414668129e-03 + 32 -1.1158336327265908e-01 6.6983314483748356e-03 8.3672301579856972e-03 + 33 2.7513072790379657e-02 6.5397686153624096e-02 -6.0201919814122436e-02 + 34 -9.8185777850966459e-03 8.1853320985310937e-02 -6.0987738471539295e-03 + 35 -3.3490409397442418e-02 -1.8867231417571715e-02 7.5322950191007459e-02 + 36 -1.6045007290361495e-02 1.2392309152661060e-01 -6.1965519487371536e-02 + 37 1.1001861488221451e-02 -3.9367733019624214e-02 1.5946121328652380e-02 + 38 -3.5215037313546839e-02 -7.5982764253276949e-02 7.3914980827977275e-02 + 39 -8.7710617352467615e-02 -1.8809758156544423e-02 2.9987280573760922e-02 + 40 -6.6123084725470238e-02 -6.3878459955668029e-02 7.0496920090575649e-02 + 41 -2.5096547379920259e-02 1.5656209642277757e-01 -2.0547907065485975e-02 + 42 6.4137835092258413e-02 8.2031501042828650e-02 -1.0985328608643385e-02 + 43 -4.2594020465571321e-02 -7.8681446404254507e-02 -9.4037691930165937e-02 + 44 4.1467378679931416e-02 7.4474848405134103e-02 -9.5315020952946056e-02 + 45 -5.1776858711498480e-02 -3.4218603964652039e-02 2.8989312393425996e-02 + 46 3.5223708622496255e-02 1.2924303716170060e-01 -3.1715420290199720e-02 + 47 1.1636025517965057e-01 -7.7864046827963246e-02 -4.8652951251288323e-02 + 48 1.0855196114754072e-02 4.7355867633534235e-02 -7.8762089848279315e-02 + 49 1.5527831289966437e-01 -8.0460272878537624e-03 5.1389732179364267e-02 + 50 5.1889901063711897e-03 3.0590914232159132e-02 -1.2396311509407053e-02 + 51 -6.9675350768762176e-02 -2.1254415184935545e-02 6.5014837867624672e-02 + 52 3.3883258987931320e-02 -6.6760087106134763e-02 2.8584329792268236e-02 + 53 2.0851283498542032e-02 7.3874794959948118e-03 3.7126922389117113e-02 + 54 1.1147690671201491e-03 -5.7279231904338333e-02 -2.1443057373401651e-02 +... diff --git a/unittest/force-styles/tests/kspace-pppm_dipole_spin.yaml b/unittest/force-styles/tests/kspace-pppm_dipole_spin.yaml new file mode 100644 index 00000000000..a648f901217 --- /dev/null +++ b/unittest/force-styles/tests/kspace-pppm_dipole_spin.yaml @@ -0,0 +1,254 @@ +--- +lammps_version: 4 Jul 2026 +tags: spin +date_generated: Fri Jul 10 16:53:00 2026 +epsilon: 5e-13 +skip_tests: +prerequisites: | + atom spin + pair spin/dipole/long + kspace pppm/dipole/spin + fix nve/spin +pre_commands: | + variable newton_pair delete + variable newton_pair index on +post_commands: | + set atom * spin/random 97531 2.2 + fix move all nve/spin lattice yes + kspace_style pppm/dipole/spin 1.0e-8 + kspace_modify gewald 0.2 +input_file: in.spin +pair_style: spin/dipole/long 4.0 +pair_coeff: | + * * 4.0 +extract: "" +natoms: 54 +init_vdwl: -2.2950093062740123e-05 +init_coul: 0 +init_stress: |- + -2.3391136202277567e-04 1.8114710506628802e-04 1.5660228190990777e-05 2.1494202296838611e-05 7.0759282466705263e-05 -2.7686651192338510e-04 +init_forces: |2 + 1 -3.2456296041248375e-05 4.6912656045135555e-05 2.3310350036638843e-05 + 2 9.1844421077671985e-06 -1.2925240200218964e-05 -1.0811835754870907e-05 + 3 1.1361609371469189e-04 4.1282510039144805e-05 4.5335316050627379e-05 + 4 -2.7390483253213444e-05 -4.5986686157748766e-06 3.1580636478231386e-05 + 5 7.5916336742065408e-06 4.6746199359448169e-05 -2.6232505565132146e-05 + 6 5.9754224016777612e-05 5.1189856176094964e-06 -2.6663446317683765e-05 + 7 -5.5852833697970346e-05 5.2872895900951920e-05 -4.4362694234184825e-06 + 8 4.4608719329808979e-05 -4.0656221714397660e-05 9.9084001003440426e-06 + 9 5.2789887810137444e-05 2.0636635412301700e-05 1.7105633204890624e-05 + 10 -1.5583867473998863e-05 3.7543076691619949e-05 -9.8141514345867107e-06 + 11 -1.4440575188923376e-05 -3.5738930882577499e-05 -1.1595641542704245e-05 + 12 2.8444936136134615e-05 -6.6519439397325582e-06 -5.2325042735021588e-05 + 13 -2.4181768362958865e-05 8.2231802305114596e-07 2.2458129067821210e-05 + 14 -6.6564493471718656e-05 -3.2086465437120307e-05 -1.1749579425696007e-07 + 15 -1.9142227605341025e-05 2.8656657057471059e-05 1.4865869757782456e-05 + 16 1.8199410627955141e-05 3.1185928781075737e-05 -3.5453966410838047e-05 + 17 5.9397728711028748e-05 1.1270986109304489e-05 -2.9916390793773443e-05 + 18 -2.7199646496398101e-05 -2.0499836509022049e-05 -4.5650553662471086e-05 + 19 1.5938279840931598e-05 5.7271982594909370e-05 -1.7901966825113367e-05 + 20 -3.9157701206566876e-06 -1.2811609073326222e-05 1.7533251796751743e-05 + 21 5.1236970081669435e-05 2.9671381649154854e-06 4.2582814560919888e-05 + 22 1.7898515708692097e-05 1.0350955601663071e-05 -4.2470656438553449e-05 + 23 1.4777184853815893e-05 1.6583858825074031e-06 4.3481412167352372e-05 + 24 1.6726184873803138e-05 -3.6716328815529213e-05 -5.8527442258407275e-05 + 25 -7.1193247900849711e-06 3.6553458618013792e-05 3.9366501876412452e-06 + 26 -6.9272590233031067e-05 5.3030255560768896e-05 -4.0626816092355495e-06 + 27 -5.6803555088611508e-05 2.2032010482039504e-05 -1.4396624317102092e-05 + 28 -3.7824182545138303e-05 5.6892874581921339e-05 4.4777678212678350e-06 + 29 3.0837547824941697e-06 5.2444887347670632e-06 -4.1840609843414685e-05 + 30 -1.3491678871800665e-05 2.7411494544583451e-06 -1.3456344898040543e-05 + 31 6.9516307486227564e-05 -6.5594811501572343e-05 -8.8703974558148707e-06 + 32 -6.2322889790794699e-06 -2.0115162260953459e-05 1.9562282474319899e-05 + 33 4.5923324182881020e-05 6.3308856214880813e-05 2.4197018788592331e-05 + 34 -4.9736039522862447e-05 -7.4463138700101177e-05 -8.1905917886033791e-05 + 35 -3.0396116947426486e-05 -4.5509125799702558e-05 -4.0605893277482150e-05 + 36 5.9715964933905355e-05 3.7160602744066785e-05 8.5816651991067262e-06 + 37 -3.6152988812458687e-05 -2.6561628062169592e-05 4.0785064730247661e-05 + 38 2.7928570002482550e-06 -6.5659471706887569e-05 -7.6290907384334187e-06 + 39 -9.1656127663303558e-05 4.1524588960392694e-05 2.5688307492778695e-06 + 40 9.5560623881415665e-06 -4.8732652645713426e-05 4.3441152142708940e-05 + 41 1.3892038780171825e-05 3.4853004383957214e-05 4.6037733685489227e-05 + 42 -2.1302487552595275e-05 -6.5670846998326415e-05 4.7786370117954913e-05 + 43 4.1913569299601022e-05 4.9168014775631023e-05 6.7782261650606803e-06 + 44 -4.6313872477593788e-05 -1.6077010392802926e-05 -2.2690332797595123e-05 + 45 2.7723853639643522e-05 -1.1860214406034478e-04 3.9604428356867537e-05 + 46 -1.7583877223290221e-05 -1.5363912912758669e-05 3.9718311156610204e-05 + 47 4.4924691567607236e-05 -3.9348462586233604e-05 4.2282164306436118e-05 + 48 -4.1463323169666130e-05 2.8494347627926481e-05 5.0742266141925077e-05 + 49 7.1750133795301562e-05 -5.6561269190114477e-05 -1.6314092929007825e-05 + 50 3.7560736117180929e-05 9.9962688825263826e-06 -8.0203746743788432e-05 + 51 -1.1630069497432972e-05 -2.2988570963357837e-07 4.8196606286270489e-06 + 52 -6.5008930952773839e-05 3.0343350854546544e-05 4.3125579762689155e-05 + 53 4.1289663357781117e-06 1.2332391884717265e-05 -2.1942479916894684e-05 + 54 -5.3931055757025227e-05 -1.7798207326709652e-05 -1.0771408266507738e-05 +init_mag_forces: |2 + 1 8.6304986366571856e-02 6.6159887895107919e-02 -5.5356256733070444e-03 + 2 7.7686195110675010e-02 -4.2717324198235200e-02 -1.1385638516215972e-01 + 3 -3.3121893078339251e-02 -2.3738651930059626e-02 -4.3251755244798594e-03 + 4 -3.4595544225702246e-03 -5.7224586102025878e-03 -9.2106095490726583e-02 + 5 -1.1309030829711622e-02 1.2542374862697589e-01 -1.9912280135337378e-02 + 6 3.4863496738710871e-03 -5.9063298737894610e-03 6.1745352789848898e-02 + 7 -4.8855254394872157e-02 5.7995547710529866e-02 1.3455321458481465e-01 + 8 3.1723270242656476e-03 -7.8933602369828909e-02 7.5980421969341405e-02 + 9 1.0669603526262229e-01 3.8184262116961645e-02 7.9103120733717530e-02 + 10 2.8155543472430301e-02 -3.3799119964080186e-02 5.7363226287206207e-02 + 11 3.8677889878235991e-02 1.0193828223322210e-02 1.0111642783902823e-01 + 12 -8.3662939541272775e-03 -3.2859219681546148e-02 5.8428275328424505e-02 + 13 4.7961957030014060e-02 -3.4169945096365964e-02 -1.0708942033726843e-01 + 14 -7.8579206205722264e-03 1.4325076933866038e-01 1.0706645071406470e-01 + 15 7.5720845061372222e-02 -3.7620899319758164e-02 -1.1212804950493428e-01 + 16 4.4621070162982439e-02 5.5976103658972633e-03 -1.4389810966980718e-01 + 17 -9.7434374347452710e-02 -7.9109815717281859e-02 -7.7682745007318116e-02 + 18 -9.3272776606549507e-02 6.2699999277051680e-02 1.1323990279063963e-01 + 19 -4.1323068498816028e-02 1.1816688124188112e-02 6.6679124966894876e-02 + 20 -1.7538395033609128e-01 -9.8604959302679828e-03 -1.3877574784396256e-02 + 21 8.7893206245407071e-02 -6.0958354196359796e-02 6.6877650985368627e-03 + 22 1.7092298714276472e-01 -6.8934763646430655e-02 2.5706712625835192e-02 + 23 4.4421630895865122e-02 1.1313572635230159e-02 -5.8535957921114906e-03 + 24 -4.1972873642561734e-02 -5.4217101091999287e-02 -4.1945208807987258e-02 + 25 -2.6038491155743926e-01 -1.1144841345687617e-01 -1.0799308265377351e-02 + 26 2.8965253670550455e-02 -2.6089215718149553e-02 4.8810564078030437e-02 + 27 7.1559096301293174e-02 -5.8186889130388397e-03 -9.2107881704675001e-02 + 28 -2.4765704734543162e-02 -5.8245745812882388e-03 5.2663908856794964e-02 + 29 5.3468923990218478e-02 -6.8469756826467248e-02 1.2757740070650111e-02 + 30 -2.7867864537025278e-02 -1.9557332987205256e-01 -7.9806763704546452e-03 + 31 -1.1979597625249475e-01 -5.6800163024931891e-02 -4.1436719052930261e-03 + 32 -1.1166676689618985e-01 6.6654171583027041e-03 8.3305583429474257e-03 + 33 2.7486483417076164e-02 6.5387357673115445e-02 -6.0288531248461022e-02 + 34 -9.7942242200013373e-03 8.1815447414490122e-02 -5.9245818179492959e-03 + 35 -3.3567942812711207e-02 -1.8934215920423075e-02 7.5288899732642120e-02 + 36 -1.5950980258341158e-02 1.2398226377786867e-01 -6.2066848276308928e-02 + 37 1.0941930605315495e-02 -3.9398155916477523e-02 1.5999220208320643e-02 + 38 -3.5090045858379340e-02 -7.5992281254790128e-02 7.3959537973175449e-02 + 39 -8.7555382781932659e-02 -1.8663473731382458e-02 2.9920128308401375e-02 + 40 -6.6200918154807706e-02 -6.3904650106993047e-02 7.0532674087850716e-02 + 41 -2.5213514852625379e-02 1.5650667422755415e-01 -2.0506298111638746e-02 + 42 6.4157194448284743e-02 8.1994512666065722e-02 -1.0968362907777116e-02 + 43 -4.2663747185000045e-02 -7.8694579112521992e-02 -9.4046996130179875e-02 + 44 4.1470436639247599e-02 7.4482201849212448e-02 -9.5445426966275254e-02 + 45 -5.1820207933523675e-02 -3.4189388751725690e-02 2.9017392929276568e-02 + 46 3.5280707408523064e-02 1.2921589161776523e-01 -3.1738654580972359e-02 + 47 1.1626608007817683e-01 -7.7813402633983272e-02 -4.8739724029319142e-02 + 48 1.0868197277131789e-02 4.7296959068977018e-02 -7.8766135619803543e-02 + 49 1.5540857713148096e-01 -8.1916537168188128e-03 5.1416197634351936e-02 + 50 5.2836475907170064e-03 3.0569670002470267e-02 -1.2474453026959053e-02 + 51 -6.9668102491424480e-02 -2.1242401441722215e-02 6.5006417433250002e-02 + 52 3.3993098048615840e-02 -6.6899918507553890e-02 2.8574197843237809e-02 + 53 2.0811224049646859e-02 7.4040120940237599e-03 3.7118323336383180e-02 + 54 1.0684293482756616e-03 -5.7265139746967945e-02 -2.1456658575849018e-02 +run_vdwl: -2.3128131464931954e-05 +run_coul: 0 +run_stress: |- + -2.3455732933162332e-04 1.8098177298965138e-04 1.5914882976842247e-05 2.1314382660818999e-05 7.0687141820633249e-05 -2.7705782996699708e-04 +run_forces: |2 + 1 -3.2470612651938850e-05 4.6863199572924269e-05 2.3304223877659967e-05 + 2 9.1635941023226152e-06 -1.2943974874079735e-05 -1.0866903429976066e-05 + 3 1.1358876831141187e-04 4.1294929198236903e-05 4.5302929801984702e-05 + 4 -2.7300244294214397e-05 -4.6303610268268723e-06 3.1608431697636155e-05 + 5 7.5354567837012464e-06 4.6713551605012194e-05 -2.6273404915087124e-05 + 6 5.9779704472295316e-05 5.0882642858349712e-06 -2.6773217361239138e-05 + 7 -5.5868628230461062e-05 5.3015967794289281e-05 -4.3993534668811965e-06 + 8 4.4649393165313727e-05 -4.0748932922214460e-05 9.9659008572947096e-06 + 9 5.2803078550726568e-05 2.0605772946433384e-05 1.7175933603441077e-05 + 10 -1.5636627496677653e-05 3.7499329297282030e-05 -9.8351226614001392e-06 + 11 -1.4334000941456259e-05 -3.5654864759094540e-05 -1.1439244036900968e-05 + 12 2.8364947443528191e-05 -6.6579868960347905e-06 -5.2300754947621274e-05 + 13 -2.4225647553666700e-05 9.1307130056363972e-07 2.2481846002802362e-05 + 14 -6.6647322764397566e-05 -3.2116348551597018e-05 -2.6071909684047831e-08 + 15 -1.9059249907147600e-05 2.8722471355256354e-05 1.4815145673624388e-05 + 16 1.8156907819806460e-05 3.1197171540070729e-05 -3.5456384353407439e-05 + 17 5.9383409310270726e-05 1.1219466207871759e-05 -2.9875651958200254e-05 + 18 -2.7110427290195613e-05 -2.0383908503220748e-05 -4.5555063988389111e-05 + 19 1.5954512659918691e-05 5.7193390694863641e-05 -1.7916165417774763e-05 + 20 -3.8401384086964562e-06 -1.2785928140372318e-05 1.7488901959179463e-05 + 21 5.1180524361093779e-05 2.9227942223084735e-06 4.2516717518828204e-05 + 22 1.7875719370963400e-05 1.0342571164277140e-05 -4.2435334049611096e-05 + 23 1.4859592701541331e-05 1.6234670298816634e-06 4.3533558573515280e-05 + 24 1.6689268957240311e-05 -3.6656356878352007e-05 -5.8529244939527341e-05 + 25 -7.1343275627729534e-06 3.6561284173197714e-05 3.9458949867646336e-06 + 26 -6.9111919565618160e-05 5.3022681479106912e-05 -4.0696616710844015e-06 + 27 -5.6842094213359833e-05 2.2047822954701595e-05 -1.4330716860639990e-05 + 28 -3.7885183898482272e-05 5.6914931156812881e-05 4.4357082275458255e-06 + 29 3.1222718860845377e-06 5.2357944765789739e-06 -4.1849714282042983e-05 + 30 -1.3499399896206099e-05 2.6804677327432141e-06 -1.3390955659507647e-05 + 31 6.9521212596264907e-05 -6.5557720467364461e-05 -8.9495431586515738e-06 + 32 -6.2868420056544705e-06 -2.0133399763365601e-05 1.9559209141878481e-05 + 33 4.5920597839406561e-05 6.3274225688913648e-05 2.4165076677869966e-05 + 34 -4.9708937201439358e-05 -7.4408030830625579e-05 -8.1828638090957937e-05 + 35 -3.0334356858060864e-05 -4.5492542162999815e-05 -4.0586740363577093e-05 + 36 5.9713361339692890e-05 3.7177993087620113e-05 8.5760586125175127e-06 + 37 -3.6147979849953797e-05 -2.6549394150755094e-05 4.0778006223677466e-05 + 38 2.8576853881900290e-06 -6.5735715140032052e-05 -7.6126427890703629e-06 + 39 -9.1667384097864993e-05 4.1552622914119027e-05 2.5168452173795540e-06 + 40 9.4750781935066182e-06 -4.8754748849016313e-05 4.3340430836390776e-05 + 41 1.3979899711041120e-05 3.4847648354370463e-05 4.6082083099534656e-05 + 42 -2.1212800353100915e-05 -6.5704926706146817e-05 4.7742901935118034e-05 + 43 4.1790506322643119e-05 4.9178355958191914e-05 6.7329516590959068e-06 + 44 -4.6290498502887657e-05 -1.6048532210565697e-05 -2.2685085565420069e-05 + 45 2.7699925159181049e-05 -1.1865049077292482e-04 3.9605367326559812e-05 + 46 -1.7669954668038581e-05 -1.5356474846317804e-05 3.9787798127516487e-05 + 47 4.4952114577357638e-05 -3.9420518549263498e-05 4.2216001510212118e-05 + 48 -4.1447883672913033e-05 2.8548019706928575e-05 5.0741049342921365e-05 + 49 7.1672441067871531e-05 -5.6473132265214283e-05 -1.6309469286226872e-05 + 50 3.7495411817779184e-05 1.0021911996983640e-05 -8.0279196296005229e-05 + 51 -1.1597279402522089e-05 -3.0786756535611142e-07 4.8988245642729277e-06 + 52 -6.5089030034735874e-05 3.0258721656866115e-05 4.3057525782580178e-05 + 53 4.1897672563987517e-06 1.2385500217939614e-05 -2.2027447281461802e-05 + 54 -5.3956379843089080e-05 -1.7751242938440364e-05 -1.0773594097456021e-05 +run_mag_forces: |2 + 1 8.6326311279995085e-02 6.6036488840622021e-02 -5.5421549852891216e-03 + 2 7.7674402777170304e-02 -4.2705487284965329e-02 -1.1378723902212462e-01 + 3 -3.2906895167070557e-02 -2.3729124721857984e-02 -4.2637053650491988e-03 + 4 -3.4779092330953776e-03 -5.8394677736750217e-03 -9.2131724407930257e-02 + 5 -1.1276692171355183e-02 1.2539968335392382e-01 -1.9940546352258216e-02 + 6 3.4741027535531177e-03 -5.8302218621659081e-03 6.1750550471947142e-02 + 7 -4.8745501653020835e-02 5.7928749234824398e-02 1.3449501007994327e-01 + 8 3.0713001772782553e-03 -7.8871671421658462e-02 7.5925465361823971e-02 + 9 1.0661038320706334e-01 3.8175210698230072e-02 7.8964699344037437e-02 + 10 2.8263861028277222e-02 -3.3851355785485544e-02 5.7427296852008855e-02 + 11 3.8798220608763485e-02 1.0303810420017811e-02 1.0112507411690869e-01 + 12 -8.2796111503456241e-03 -3.2879364735109586e-02 5.8487969328973821e-02 + 13 4.7915767564626177e-02 -3.4149390115205416e-02 -1.0702982860573507e-01 + 14 -8.0392666012256090e-03 1.4330459610903237e-01 1.0712330111884519e-01 + 15 7.5725711845104279e-02 -3.7724627350649298e-02 -1.1212343182051934e-01 + 16 4.4675493274488033e-02 5.6882613128257722e-03 -1.4387280828202140e-01 + 17 -9.7550363010187727e-02 -7.9155417819208151e-02 -7.7681643601138245e-02 + 18 -9.3191624863093153e-02 6.2632670714553848e-02 1.1310650165594931e-01 + 19 -4.1134026966068230e-02 1.1864177599493377e-02 6.6639020663107881e-02 + 20 -1.7542627592598189e-01 -9.8128316893351161e-03 -1.3938371516492049e-02 + 21 8.7804384598904273e-02 -6.1119056902648253e-02 6.6771392787693656e-03 + 22 1.7094757925150481e-01 -6.8744568391625557e-02 2.5715398754725956e-02 + 23 4.4320124718967277e-02 1.1286707468668666e-02 -5.8554878340126987e-03 + 24 -4.1972758555726623e-02 -5.4307799617931987e-02 -4.2022148652399019e-02 + 25 -2.6043250100477783e-01 -1.1144127706845335e-01 -1.0691637515986728e-02 + 26 2.8988812875929221e-02 -2.6060390607735254e-02 4.8815081023764008e-02 + 27 7.1541136709333333e-02 -5.7254861957392565e-03 -9.2039616037505226e-02 + 28 -2.4663328144332280e-02 -5.9008218281985884e-03 5.2595713563236030e-02 + 29 5.3448764720949185e-02 -6.8431449974829889e-02 1.2713195694227852e-02 + 30 -2.7852856587889545e-02 -1.9551829789659467e-01 -8.0337388960610608e-03 + 31 -1.1985743419755050e-01 -5.6793679661156331e-02 -4.1215326088473760e-03 + 32 -1.1158336326871424e-01 6.6983345292405266e-03 8.3672304838517154e-03 + 33 2.7513072181006210e-02 6.5397683624816627e-02 -6.0201922253257802e-02 + 34 -9.8185826214037004e-03 8.1853323148776289e-02 -6.0987673033171801e-03 + 35 -3.3490408071541522e-02 -1.8867236774484590e-02 7.5322949357408964e-02 + 36 -1.6045003189134460e-02 1.2392309199880258e-01 -6.1965522345199836e-02 + 37 1.1001864591165034e-02 -3.9367738619770706e-02 1.5946120421570901e-02 + 38 -3.5215036228955096e-02 -7.5982761555610748e-02 7.3914978451423946e-02 + 39 -8.7710617010721914e-02 -1.8809759966370014e-02 2.9987281503441963e-02 + 40 -6.6123085857499764e-02 -6.3878460856152175e-02 7.0496919077812081e-02 + 41 -2.5096549214927686e-02 1.5656209569405891e-01 -2.0547909114840453e-02 + 42 6.4137834882810801e-02 8.2031501690057504e-02 -1.0985329078584162e-02 + 43 -4.2594021282650066e-02 -7.8681443872248610e-02 -9.4037689561015173e-02 + 44 4.1467383106171971e-02 7.4474843745611322e-02 -9.5315021996652843e-02 + 45 -5.1776859426454845e-02 -3.4218607808424201e-02 2.8989308526042271e-02 + 46 3.5223708239740636e-02 1.2924303305543075e-01 -3.1715422052727829e-02 + 47 1.1636025233130369e-01 -7.7864048752505799e-02 -4.8652954717717092e-02 + 48 1.0855191842969356e-02 4.7355867370764061e-02 -7.8762087541918879e-02 + 49 1.5527831498563424e-01 -8.0460217971288790e-03 5.1389731841717121e-02 + 50 5.1889883010974502e-03 3.0590913536916085e-02 -1.2396316510321043e-02 + 51 -6.9675349734871370e-02 -2.1254408843045174e-02 6.5014837621691079e-02 + 52 3.3883256021540548e-02 -6.6760084614837040e-02 2.8584331132318491e-02 + 53 2.0851280454314221e-02 7.3874797636768021e-03 3.7126919363309530e-02 + 54 1.1147713643409516e-03 -5.7279229073135741e-02 -2.1443059087073967e-02 +... diff --git a/unittest/force-styles/tests/meso-pair-edpd.yaml b/unittest/force-styles/tests/meso-pair-edpd.yaml new file mode 100644 index 00000000000..dd4f5044ea8 --- /dev/null +++ b/unittest/force-styles/tests/meso-pair-edpd.yaml @@ -0,0 +1,162 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:20:51 2026 +epsilon: 6e-12 +skip_tests: gpu intel kokkos_omp kokkos_serial kokkos_gpu single +prerequisites: | + atom edpd + pair edpd +pre_commands: | + variable units delete + variable units index lj + variable newton_pair delete + variable newton_pair index on +post_commands: "" +input_file: in.edpd +pair_style: edpd 1.5 9872598 +pair_coeff: | + 1 1 25.0 4.5 0.41 1.5 0.05 1.0 1.42 + 1 2 30.0 4.5 0.41 1.5 0.05 1.0 1.42 + 2 2 35.0 4.5 0.41 1.5 0.05 1.0 1.42 +extract: "" +natoms: 64 +init_vdwl: 310.25192882326775 +init_coul: 0 +init_stress: |2- + 3.3444060785922642e+02 7.4536489301190613e+02 3.6305589282218784e+02 -9.9045889532006044e+01 -7.8800940536034702e+01 -5.4397412875443671e+01 +init_forces: |2 + 1 -2.0434403470934434e+01 4.8943425498578108e+01 4.7285777023508324e+01 + 2 -1.1287476403114459e+02 -3.4565501869279247e-01 -8.9095481628070701e+00 + 3 6.5156512385351178e+01 -1.2579352241713462e+01 6.4661574004197206e+01 + 4 -4.1169344427513870e+01 -4.0701554897580650e+01 -4.4109602218763769e+01 + 5 4.2527318290278785e+01 8.7680238214814366e+01 5.4585585241810763e+00 + 6 2.8138790594634887e+01 9.1614744557017413e+00 2.6800786766706992e+01 + 7 2.2744900595977899e+01 -5.0738923939685087e+01 -2.6270919159995287e+01 + 8 5.0006633335400601e+01 7.7310307909544306e+01 3.9863371097824668e+01 + 9 -2.8225332238739416e+01 -5.4087483674332887e+01 -7.6301766139424728e+01 + 10 -1.8140790206992982e+01 -1.6543627232721423e+01 3.2683981969734582e+01 + 11 4.6350203068684543e+01 1.5755548897073524e+02 -3.3558271328819004e+01 + 12 -2.3924602354713137e+01 -1.2995837146785257e+02 6.7657921939219108e+01 + 13 6.9372489950263798e+00 -6.2909521897615868e+01 -4.9070946172968490e+00 + 14 4.7758459025771842e+01 1.9428249337230167e+01 1.7049877753663161e+00 + 15 -2.4806950922822317e+01 -1.0886232882563516e+02 7.8586878901983837e+01 + 16 8.5713100375006661e+01 8.0763179043834697e+01 -5.6487332952439388e+01 + 17 5.5415078575915558e+01 -6.5149247151808481e+01 8.2700611177993650e+00 + 18 6.4374036952075613e+01 5.0039265799805840e+01 6.5069458332637993e+00 + 19 -2.2077958564324646e+01 -8.1119620758804079e+00 -2.5733957825142351e+01 + 20 2.2701417217607663e+01 -1.4244050777055330e+01 -7.0116267993475230e+00 + 21 -4.8073408923447865e+00 -1.1570489641164823e+01 4.2206340276714895e+00 + 22 1.7887023686857958e+01 -6.8812046807810399e+00 -3.7980107088930772e+01 + 23 -9.1931543073435861e+01 5.8525275382102855e+01 5.5238935652608294e+00 + 24 -4.7353765794664497e+01 1.1430277403752795e+02 7.0411748048664560e+00 + 25 2.7904304109091004e+01 9.2627701366546788e+01 -8.5162797138322368e+00 + 26 5.6789595106969351e+01 2.7114380354406599e+01 7.3331648934834362e+01 + 27 -4.4893804179191683e+00 -1.1654219552632918e+02 4.9319297645660235e+01 + 28 5.2845374565572172e+01 -1.4331092382651340e+01 -5.9024606199213515e+01 + 29 -2.4686493769017005e+01 2.5036535124564818e+01 -2.7733111079341349e+01 + 30 -9.7361627009665987e+00 -8.3883853675777232e+01 -1.7366859181881814e+01 + 31 -3.5589210756187548e+01 4.3144888822764990e+01 3.7984406686620822e+01 + 32 -1.0336708907289675e+02 -5.2025833943321750e+01 -6.9570631892307276e+01 + 33 -4.3584258053311707e+01 -2.5777757737461400e+01 1.3585833653441842e+01 + 34 4.9373659950974904e+01 8.0898705294418534e+00 -1.1229981576333110e+01 + 35 3.6408066542405578e+01 -3.4678038023229895e+01 -5.4431184818037821e+01 + 36 -1.8262426145084589e+00 -8.2046023167063623e+01 7.5605333014637424e+01 + 37 -3.0808290614699875e+01 -2.9731786609776986e+01 7.8742189688467583e+00 + 38 -1.3243941246329797e+02 -1.5392176177513846e+01 -5.1140563738944032e+00 + 39 6.0882764891330794e+00 -2.2955836362788894e+01 1.8614720824367375e+01 + 40 5.7805412391800786e+01 8.9175803576468837e+00 -9.5105812660312434e+00 + 41 1.9847916825612977e-01 -2.2662422484906525e+01 -3.5956950977827134e+01 + 42 -9.2317089684318688e+01 3.4331093281818227e+01 -6.3230174181362671e+01 + 43 -1.5395012181335339e+01 4.8275082534478663e+01 1.1772679965509482e+02 + 44 -5.6559349357975343e+01 3.8991845900600460e+01 -2.3554899796332663e+01 + 45 -4.0133936718107535e+01 7.2594159816176727e+01 2.2248890186580290e+00 + 46 -7.9858046999830679e-02 -7.4248641334165683e+01 1.7386648461977469e+01 + 47 -1.9347134569155418e+01 1.1669553901796750e+01 -3.0233701743136429e+01 + 48 -8.7964395146035272e+01 3.0098208925150665e+01 1.3091661841343871e+00 + 49 3.9662308052069193e+00 -5.5336099416205442e+01 6.6836007940861506e+01 + 50 1.8707489536043138e+01 -1.9964677668395701e+01 -4.4936817983491082e+01 + 51 -2.7431793889865070e+01 -6.8026346385464436e+00 -9.1489716016110037e+01 + 52 8.3909073941944555e+01 9.2319652569488724e+01 3.7230643496110751e+01 + 53 2.0777550458729834e+01 5.8762917993750591e+01 -1.2111361829734419e+01 + 54 4.0808337570476198e+01 -5.4862785202133203e+01 8.2844441749154090e+00 + 55 4.8446946413965051e+01 1.2296905149801338e+01 1.9886485978501025e+01 + 56 -7.6704629234896842e+01 -1.0139909443059249e+01 -2.1106636333857651e+01 + 57 1.5755512578664090e+01 1.4862369363809595e+01 1.3334619200607339e+01 + 58 1.6062485628835038e+01 7.6423608601378916e+00 -2.6397968029349443e+01 + 59 1.6985831369836202e+01 -3.3627206963777105e+01 -3.6983421484140038e+01 + 60 -7.5319871514647261e+00 -7.5589288644406608e+01 1.3207226294766635e+01 + 61 1.7034911047819520e+01 -1.8022882563939007e+01 4.6566656779951238e+01 + 62 8.8208137543231722e+00 1.6277660783479220e+01 -3.5309278384196467e+01 + 63 2.6178529187276254e+01 5.7885456238579692e+01 3.0181122071814876e+01 + 64 8.5160918704677172e+01 2.6657012963653258e+01 -4.1678271184008750e+01 +run_vdwl: 310.1668101511308 +run_coul: 0 +run_stress: |2- + 9.6952221058584644e+02 1.1240148617228947e+03 6.8559911451241624e+02 3.8125944617982839e+00 -1.7885007163685138e+01 8.4897544092937011e+01 +run_forces: |2 + 1 1.4805125435947929e+02 -4.3644021927567557e+01 -2.3521477696912843e+01 + 2 -2.2747453918796932e+01 -2.7926046214544936e+01 1.8405118385007704e+01 + 3 -5.4483095516493670e+01 -6.8581377949717393e+01 -9.3593108452283396e+00 + 4 5.8738595613095946e+01 -7.2911815961393316e+01 -2.3547269313863854e+01 + 5 -7.3562902059818910e+01 7.1273323755209205e+01 -2.9848595163587603e+01 + 6 -4.7012080166853579e+01 -1.2766583598872364e+01 -7.9888766881194186e+00 + 7 -3.8568875433124397e+01 3.3447484287111223e+01 3.6035109714522761e+01 + 8 -2.0620291513806364e+01 9.0535740442597060e+01 1.8840886125778436e+01 + 9 3.3256599745968288e+01 2.6847583966860938e+01 -8.0169890087452664e+00 + 10 6.7724243614114201e+01 3.1256535641724774e+00 2.8809994796954033e+01 + 11 -3.2868634855131887e+01 4.2131917046472516e+01 -2.7851762161381604e+01 + 12 -6.7788613584151804e+01 -4.5806317862827562e+01 -3.8471016068914075e+01 + 13 8.2916821829909139e+01 -2.6941228022628081e+01 3.7038376307708909e+01 + 14 1.0498662480263874e+01 5.3494085778851357e+00 3.7047085628284073e+01 + 15 -7.3998115522566977e+01 2.8603121251755464e+01 -1.6045007622957687e+01 + 16 5.9794547435445267e+01 3.9186198705463084e+01 -1.5289801218182335e+01 + 17 2.4715651862325750e+01 -5.4725354023448077e+01 1.4315555007325170e+01 + 18 5.4015155311665914e+01 3.4745581279289446e+01 -2.9085047847859528e+01 + 19 8.8316601158138440e+01 8.4734441276238126e-01 1.7728217215133395e+01 + 20 -7.2483156162061533e+01 9.9891084680444528e+00 7.7018364950244944e-01 + 21 1.5261159598508502e+01 -1.3967005710779508e+01 2.8207944485947721e+01 + 22 8.0577466519835127e+01 -3.0719894149109397e+01 4.8603270072281490e-01 + 23 3.6462402607634353e+01 -2.5921511333541758e+01 -2.2604148013830056e+01 + 24 3.8243289526460217e+01 -1.2024912821026600e+01 1.4769750195047010e+01 + 25 -3.9322293013591683e+00 3.9432006348169836e+01 -1.1032745488366196e+01 + 26 1.8609262688397180e+01 5.1915973021851876e+01 9.9747343736572329e+00 + 27 1.1417506137437385e+00 8.0802013173704623e+01 -8.0498985328265853e+00 + 28 -2.0370015366000708e+01 2.1518448980664196e+01 -2.5124694427273901e+01 + 29 -1.0284242743025963e+02 2.8606711480204360e+01 -5.3553274767678701e+01 + 30 -1.4039300572164093e+00 -9.7693253666212897e+01 -8.2602318709271323e+00 + 31 -1.9905891841931798e+01 1.8410521165916812e+01 5.2133163658424706e+01 + 32 -3.7545394244124466e+01 -2.7932594797512486e+01 3.4214635762060659e+01 + 33 -6.5620748446892847e+01 -8.6969237036880756e+01 1.6030497085639965e+01 + 34 -5.8691016452570352e+01 -4.2525573236808668e+01 3.2340591992882409e+01 + 35 -4.8335503226264350e+01 -3.1068802906322549e+01 -5.0564271513396051e+01 + 36 2.0847087580763999e+00 2.7967151883693013e+01 -7.6023214803356822e+00 + 37 -3.4235136556002253e+01 2.4337460184864540e+01 -3.3764308020597056e+01 + 38 -7.8207037990980709e+01 -1.7824560529846281e+01 6.0928350852839351e+01 + 39 -6.1939248782303892e+01 3.6560572852115790e+01 -7.2436828641078520e+01 + 40 -2.4751460349265397e+01 2.1226427496631533e+01 3.7813667741300797e+01 + 41 3.2165369350520265e+01 -1.3940851507274060e+01 3.6956824281870162e+00 + 42 -8.1316077101939030e+01 4.8265659813760713e+01 -5.5731672660198306e+01 + 43 2.9134999616367733e+01 -1.7932861761162190e+01 2.1086467790237350e+01 + 44 -1.5689728183244821e+01 -2.8437371247178810e+01 4.5820271388987955e+01 + 45 5.7214094746361113e+01 1.0414092672712248e+02 3.1917674652266836e+01 + 46 3.1651735279036266e+01 1.8240865811550080e+01 -7.2402700589544594e+01 + 47 -2.7132020674162373e+01 3.0488071725258692e-03 4.3699705285912167e+01 + 48 5.3292798199106983e+01 -3.6947725668289678e+01 -4.4646280801948435e-01 + 49 -7.2034974919576086e+01 4.8327176840806537e+01 -8.5717939631233087e+00 + 50 2.0595802199864689e+01 6.7850876751661843e+01 -2.3907671661182210e+01 + 51 2.3560450215820943e+01 2.2508386221728106e+01 -1.4235054346878854e+01 + 52 -5.1026349748822017e+00 -6.4632712847327454e+01 1.7721480319586917e+01 + 53 4.7815099921659332e+01 -4.6439726832396723e+01 -5.0406830157108953e+00 + 54 5.4899322725323913e+01 -4.1827969475017674e+01 4.7615293950699481e+01 + 55 5.6493902800008911e+01 -2.0059030042064354e+01 3.3930191006400058e+01 + 56 1.1176526409686433e+01 -4.6520377031581781e+01 -5.2403827803295094e+01 + 57 -4.4830381832564512e+01 -1.8811077570327679e+01 -9.9749507041854514e+01 + 58 -9.3400085544954230e+00 -2.5350870692459569e+01 3.2422430940339510e+01 + 59 3.9489480379623608e+01 -7.4819008432993348e+00 3.2005423031565023e+01 + 60 9.7649360224418629e+01 2.4920534346961723e+01 4.4096178225703127e+01 + 61 -4.1764445180369790e+01 -5.2136400505079273e+01 -6.9835908021951866e+01 + 62 -5.2417169582239183e+01 1.0320774752513735e+01 9.6973314385204418e+01 + 63 8.3762283791494795e+01 -4.3431943999868619e+00 -2.9506877080669177e+01 + 64 -4.7768699800903725e+01 8.3374159753767970e+01 6.9760263006612737e+00 +... diff --git a/unittest/force-styles/tests/meso-pair-tdpd.yaml b/unittest/force-styles/tests/meso-pair-tdpd.yaml new file mode 100644 index 00000000000..48051ead31b --- /dev/null +++ b/unittest/force-styles/tests/meso-pair-tdpd.yaml @@ -0,0 +1,162 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:19:10 2026 +epsilon: 6e-12 +skip_tests: single +prerequisites: | + atom tdpd + pair tdpd +pre_commands: | + variable units delete + variable units index lj + variable newton_pair delete + variable newton_pair index on +post_commands: "" +input_file: in.tdpd +pair_style: tdpd 1.0 1.58 935662 +pair_coeff: | + 1 1 18.75 4.5 0.41 1.58 1.42 4.5 0.0 2.0 + 1 2 20.0 4.5 0.41 1.58 1.42 4.5 0.1 2.0 + 2 2 22.0 4.5 0.41 1.58 1.42 4.5 0.0 2.0 +extract: "" +natoms: 64 +init_vdwl: 289.97485523756177 +init_coul: 0 +init_stress: |2- + 4.0466258332552165e+01 1.4397393894369532e+02 9.6987278281797273e+02 -2.9337970931951293e+02 1.0356929302360105e+02 2.4630547671565903e+01 +init_forces: |2 + 1 6.4460767780845558e+01 1.0367856447217201e+02 -1.8317881609522281e+01 + 2 -3.6874467734320078e+01 -4.4668739712698034e+01 8.7338756447831045e+00 + 3 1.1103715003793904e+02 1.9730668195923187e+00 -4.9672899238265220e+00 + 4 -7.3085007389710086e+01 -5.0255817316254046e+01 -4.1649839454566170e+01 + 5 1.3086238826080034e+01 -9.9526509165230323e+01 6.1433251395174679e+01 + 6 -9.5842876895131880e+01 5.1877634229828764e+01 -5.4664759249420854e+01 + 7 4.5810637352855537e+00 -4.1427103829457977e+01 -4.6427730515025445e+01 + 8 -1.0905092348287315e+01 -8.3547531770997693e+01 3.9316461301045663e+01 + 9 -8.4388180619487883e+01 6.5221052384675616e+01 1.4748524749108569e+02 + 10 7.3633132016598822e+01 -4.7565766852091912e+01 -2.3476279136998276e+01 + 11 -4.7969440648376853e+01 -1.1006809157943430e+02 2.9178144090406114e+01 + 12 5.7689484499963406e+00 4.8210582885724335e+01 -8.5602987140860137e+01 + 13 -2.6163310235809377e+01 3.3831184206704158e+01 -7.3803311545382385e+01 + 14 -7.5030182486491643e+00 7.0098864967907772e+01 -1.3354793726759038e+02 + 15 8.5322237599162847e+01 6.4420103527596790e+00 1.3817501710252856e+02 + 16 1.5709401519032321e+01 5.2003655062082345e+01 -1.4769404793013647e+00 + 17 7.0874246382161701e+01 -2.7568360269343266e+01 -1.0161831301772292e+01 + 18 -7.2704074286649842e+01 -7.3290689137949556e+01 1.0865229879961473e+02 + 19 3.1452359003959373e+01 2.0635003918378914e+01 -4.0384700825243577e+01 + 20 9.1586207925953875e+00 1.8671191628882539e+01 -4.2341788848143935e+01 + 21 -4.9945784553654825e+01 -1.0782239255040717e+02 3.5055661111874478e+01 + 22 9.2166017477247976e+01 6.4788021443233703e+01 -1.0043457456853542e+01 + 23 -3.4246090631110981e+01 -9.5257690272925366e+00 -1.1159532370375156e+02 + 24 -2.6815720647213745e+01 -8.8761036281725893e+01 2.7775700242899507e+01 + 25 9.0865412024198150e+01 -5.6256939261795679e+01 -5.9123903880139892e+01 + 26 -4.9164221687553933e+01 7.8507990254128103e+01 3.2559335115831459e+01 + 27 3.3081191002313417e+01 2.5849901301528480e+01 6.1657753707294013e+01 + 28 3.4059777378467246e+01 2.0353450347820438e+01 -2.7263691344058621e+01 + 29 -2.3624452352154687e+01 6.4854956558368542e+01 8.2520745612841225e+01 + 30 6.8019286447492711e-01 4.7249613106674808e+01 -1.0237899422595790e+01 + 31 1.1825479641268905e+02 1.7665742096218082e+01 2.0084144382985016e+01 + 32 7.3885880768337842e+01 2.7728776244585603e+01 -2.6053288070881582e+01 + 33 -9.6347786824847418e+01 8.3542066966905182e+01 1.8741881727249204e+01 + 34 6.2029151617904930e+01 -9.1200866751786748e+01 5.6608126794274270e+01 + 35 2.9373917757084079e+01 -7.3110077265511926e+00 -8.0393711781965521e+01 + 36 4.5860865164149715e+01 -1.1376137696667527e+01 6.1846193272948597e+01 + 37 -1.2711518532127469e+01 -9.1509933849929524e+01 5.8173583682367102e+01 + 38 7.0953786404561356e+01 2.7372411567369685e+01 -8.2791906786213936e+00 + 39 -2.8212908234608992e+01 4.7171746699458879e+01 -7.5113144454743178e+01 + 40 -8.0092988118556150e+01 -2.0511093433488732e+01 4.6271344615726932e+01 + 41 8.4715466602845630e+00 -4.2551093326897302e+01 -4.3187616949366252e+01 + 42 -6.1020151277094413e+01 1.3485682408302798e+01 -3.9833869335629565e+01 + 43 -1.0492789505428992e+02 -1.5895269892592097e+02 4.2097122763949997e+01 + 44 4.4252971056347882e+01 8.7927458885878792e+01 -4.5800813852433350e+01 + 45 8.7567175228840171e+01 8.1511875304688132e+01 -4.1783458504223518e+01 + 46 -3.0594931012564185e+01 -2.7546151371540560e+01 3.4346055357383094e+01 + 47 -3.4578711809029059e+01 1.2693152990163745e+02 4.2124506778524719e+01 + 48 -1.5172745024384378e+01 -8.3316623722393018e+01 -5.7033520343786464e+00 + 49 3.9903230980808942e+01 -3.1342213975282057e+01 5.0307715992734188e+01 + 50 -2.8928761208924531e+01 -2.6126104532184243e+01 -5.7904909129990187e+01 + 51 -8.9682224198082032e+00 -5.4555793640000928e+01 -9.7029139758012874e+01 + 52 -3.9519318601536320e+01 3.7524382701872561e+01 8.2259009721675554e+01 + 53 -2.3570118247827949e+01 -1.0046615887936490e+01 -4.2017611271654687e+01 + 54 2.2604128540246698e+01 8.7166744479538750e+01 1.5216674151710061e+01 + 55 -1.8339188175300738e+01 6.4537843016982919e+01 -2.6432931137226241e+01 + 56 2.7428755384094991e+01 4.0508608240750760e+01 7.0859142219693169e+01 + 57 9.4461093888330794e+01 -2.1864170865614149e+01 1.0799019714499191e+02 + 58 -4.6484981335525063e+01 -5.1800126918599624e+01 3.1765770608777924e+01 + 59 8.0861704533401038e+01 2.0990174292864250e+01 -3.5039769098954388e+00 + 60 -4.3258172528027188e+01 -3.1919781941220275e+01 -8.6992194494002703e+01 + 61 -1.0481753000886192e+02 -1.4682385273609144e+01 -1.8214160392901281e+01 + 62 -4.5291123322246840e+01 1.1280696257808206e+02 -6.7145335465242781e+01 + 63 -1.0536862115243331e+02 -6.7876765182387018e+01 -9.0413184922664811e+01 + 64 2.5591649878663894e+01 3.3655562451089452e+01 1.3965448141851610e+02 +run_vdwl: 289.76514170770804 +run_coul: 0 +run_stress: |2- + 8.9812829863087677e+02 7.0593053919083457e+02 6.7321473062370092e+02 3.2563456916440153e+01 -4.9495158070953551e+01 1.5795830709947685e+02 +run_forces: |2 + 1 -3.4374931825831297e+01 -3.7549240351732763e+01 -3.1834907253402882e+01 + 2 2.4170160148420823e+01 5.3184218649280012e+01 -7.3221365957037804e+01 + 3 -8.3469876783732246e+00 6.2528347422932029e+01 1.1534577385877695e+02 + 4 -3.4029283473778804e+01 2.5419545961042392e+01 -2.5744301475456382e+01 + 5 -6.0209483921392220e+01 -3.8420349314462001e+01 -1.1275493542542146e+02 + 6 1.0683965003534072e+02 -6.2132559972043396e+01 1.0917446888835741e+01 + 7 -5.3090230780532430e+01 -5.5331504599937588e+01 3.6167099787984142e+01 + 8 1.3774877415470321e-01 9.4320594394146564e+00 7.8528073012920927e+01 + 9 -2.9686556008492950e+01 7.1831223407160806e+01 3.0678754784253556e+01 + 10 -5.8595542234606732e+01 4.3845626641939688e+01 -3.1430211501151508e+01 + 11 -1.8385472424131766e+01 -1.7124379979645219e+01 6.3097340712063719e+01 + 12 -5.4391851853405576e+01 3.3206987664298751e+01 1.1925789014551672e+01 + 13 -8.6703053508220677e+01 9.2494400651235420e+00 -8.2795013235810970e+01 + 14 -4.5659776014750165e+01 -1.7513791691351557e+02 -1.4089322592342711e+01 + 15 -8.6563892357644718e+00 3.2181809669220769e+01 5.1921866908344420e+01 + 16 -1.1604091398924487e+02 -5.5814628382499478e+01 -1.1739351532841457e+01 + 17 1.1032427916710009e+02 -2.7043340524972436e+01 3.6992011562576387e+01 + 18 -1.1079419402845312e+02 4.9432605830237669e+01 1.1385859408278151e+01 + 19 1.7539276858599454e+01 -6.2737451082082657e+01 -5.6844850677464777e+01 + 20 -5.0571950264436516e+01 -1.2539286387301954e+02 -9.1378198645625974e-01 + 21 8.6953115657296166e+01 -5.8101933573043937e+01 -9.0164149561005885e+01 + 22 -4.6988184935997161e+01 -3.6769415346379390e+01 6.8172035535304616e+00 + 23 8.1581373630672275e+01 4.7158711189649495e+01 2.7470503960810390e+01 + 24 6.0934986151334634e+01 2.4251817563066162e+01 1.3481206314617293e+02 + 25 5.7041442989130545e+01 1.6866845443602372e+01 3.6436239493183592e+01 + 26 -5.3808622346677787e+01 1.7510316293416651e+01 7.1489639606979720e+00 + 27 -6.9004393320116918e+01 3.5053232068379756e+01 4.0034048423736643e+01 + 28 8.0660669313979284e+01 -6.6490786323582185e+01 1.9673013718630536e+01 + 29 6.2252519218183082e+01 1.2243622630510738e+02 -2.6076952279792600e+01 + 30 1.6442978800155036e+01 9.0736466071423720e+00 -5.3459951569297431e+01 + 31 5.6001131132968091e+01 3.8194144420415675e+01 -7.5869558874122944e+01 + 32 -2.7165594312405501e+00 1.3808400524646279e+02 8.3381453101773602e+01 + 33 -6.7445718309677702e+01 1.1725393512461505e+01 1.1904666422920528e+01 + 34 5.1343717797309793e+01 3.9358515129458908e+01 -4.7989469164483900e+01 + 35 5.3441605988014693e+01 3.5791538492668607e+01 -1.2595637255551577e+02 + 36 -3.6850484315219852e+01 1.5346665558706382e+01 7.1802613821891100e+01 + 37 -7.9338817856184107e+01 1.1566223923503088e+01 -9.8219096090158828e+01 + 38 -6.1396992182839057e+01 3.9517346611910035e+01 1.0565188949904049e+02 + 39 6.5246703690814570e+01 -5.0267867144479965e+01 1.4402375687944822e+01 + 40 2.0228539954498714e+00 -5.4737962025194236e+01 6.3579028612593618e+01 + 41 2.9703589297396185e+01 6.6471292621373976e+01 -3.3259219289073798e+01 + 42 7.8848489570480695e+01 2.2705755795075127e+01 -3.8301544960068540e+01 + 43 -6.0141776436587747e+01 6.4673538767552841e+01 -7.7735974111845891e+01 + 44 3.2654209262999146e+01 5.5103886867792120e+01 1.5924371571435506e+01 + 45 -7.5465135754987969e+01 -1.0710846686428991e+02 6.5504503937330085e+01 + 46 7.7835278454636132e+00 -7.2829290576307187e+01 2.6626430692545000e-02 + 47 2.9712814916723858e+01 1.1130814128544658e+01 1.8606470264519952e+01 + 48 4.4282806332005201e+01 -5.4833937036035223e+01 5.1389400027210236e+01 + 49 4.6771697948477033e+01 1.8455571203401902e+01 -1.2477601556058721e+02 + 50 -2.6644321231452984e+01 -5.1740931136776869e+00 7.4807691541007472e+01 + 51 -4.0903658168117261e+01 6.4638420809775732e-01 3.9898758153903003e+01 + 52 8.5708139487821271e+01 3.5536250810648141e+01 1.0907248432140010e+01 + 53 5.6795720706105346e-01 5.1120451123979670e+01 -3.8267761029340079e+01 + 54 2.8817288863392392e+01 1.1728833272512039e+01 -2.0355509694649257e+01 + 55 -3.0036450339938568e+01 -1.5595660232590424e+02 2.6104693634020769e+01 + 56 -2.8860892191462277e+01 2.5360623816364438e+01 -9.0130807425460702e+01 + 57 2.0692156706437775e+01 -4.1904849915008391e+01 -4.5428014503997867e+00 + 58 -7.0016913775997111e+01 8.7864273219409000e+01 -3.5308665392845271e+01 + 59 7.6914051645440694e+01 -1.2091181660611531e+01 -7.6130025933627181e+01 + 60 2.0892082588207110e+01 -1.3079129659787679e+02 5.3058938170388785e+01 + 61 1.7769749200872010e+01 1.3121356471733394e+01 5.7384601308585651e+01 + 62 5.5313319597195203e+01 -3.4038794172208739e+01 7.0301070850400492e+01 + 63 -3.3913058670666821e+01 5.5370610511161239e+01 -6.9329643126851064e+00 + 64 4.3702502689681531e+01 2.6244575734262249e+01 -4.9143572770800560e+01 +... diff --git a/unittest/force-styles/tests/methanol.localdensity.table b/unittest/force-styles/tests/methanol.localdensity.table new file mode 100644 index 00000000000..af2d4304f7f --- /dev/null +++ b/unittest/force-styles/tests/methanol.localdensity.table @@ -0,0 +1,509 @@ +#LOCAL DENSITY POTENTIALS UNITS: real + +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/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_dsf.yaml b/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_dsf.yaml new file mode 100644 index 00000000000..ed2b6b9fa36 --- /dev/null +++ b/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_dsf.yaml @@ -0,0 +1,99 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 15:59:46 2026 +epsilon: 2.5e-13 +skip_tests: +prerequisites: | + atom full + pair buck6d/coul/gauss/dsf +pre_commands: "" +post_commands: | + pair_modify mix arithmetic + pair_modify shift yes +input_file: in.fourmol +pair_style: buck6d/coul/gauss/dsf 0.9 8.0 +pair_coeff: | + * * 6157.8178 3.4682081 129.19572 0.78772886 0.73006542 + 1 1 10304.0 3.0612245 457.17971 4.5218516 0.60800971 + 2 2 3680.0 4.0 32.805 0.10690769 0.9771554 + 3 3 10304.0 3.0769231 443.36171 4.2093581 0.60800971 + 4 4 10856.0 3.2967033 308.7755 1.6022517 0.63272774 + 5 5 10856.0 3.2967033 308.7755 1.6022517 0.63272774 +extract: | + buck6d1 2 + buck6d2 2 + buck6d3 2 + buck6d4 2 + cut_ljsq 2 + rsmooth_sq 2 +natoms: 29 +init_vdwl: 226.74234437878033 +init_coul: 480.3385018045421 +init_stress: |2- + 7.7063806905054878e+02 5.4269141656429395e+02 7.2663154234248418e+02 2.4527852913690725e+02 1.9570276172259747e+02 -9.9238129462920899e+00 +init_forces: |2 + 1 -4.2047897176010608e+01 -2.3653832945870285e+01 6.6975557329130808e+01 + 2 5.5871124086628093e+01 4.4737136179443908e+01 -6.5063476042111958e+01 + 3 1.0532158544095450e+01 2.2436928464068990e+00 -9.8546031477346041e+00 + 4 -2.5746948543552207e+01 4.2148147890622285e+00 -1.8673318431403505e+01 + 5 -1.0413699962350986e+01 -1.6354348268684344e+01 3.4388966617622309e+01 + 6 -2.4928813043425198e+01 2.2680890052133794e+01 2.2633766518359682e+01 + 7 -4.8324639462603818e+00 -8.2156578680771322e+00 -5.1692211387450691e+01 + 8 -1.3176731041125771e+01 -3.2407730234917395e+01 -7.2515903920530690e+01 + 9 1.9244033080082605e+01 3.0215663894827824e+01 1.0806398740884453e+02 + 10 -1.5462002611509157e-01 -9.7403593197454477e+00 1.6180573602449456e+01 + 11 -8.4131743328637043e+00 -2.3121336516497905e+01 -2.6348404663073815e+01 + 12 8.1589572555382972e+00 -2.3751559868791352e+00 8.3734430292230257e+00 + 13 3.0194418725881967e+01 -1.1070824960151317e+01 -9.9821749185272224e-01 + 14 -4.8514115386943670e+00 3.9856871342148876e+00 -3.5458894392188625e+01 + 15 5.4493066795211522e+00 3.3309419853575825e+01 9.0337231124435071e+00 + 16 2.3267930643325016e+01 -2.5511001828618276e+01 -3.2884985233738902e+01 + 17 -1.7062358065837618e+01 1.0782088624243984e+01 4.5946358209883734e+01 + 18 -1.2235487708296645e+01 -4.4111422284771621e+01 1.5974825475564484e+02 + 19 -8.2727814000290735e+01 -5.5349745166009917e+01 -9.6491358621509505e+01 + 20 9.4479058378763497e+01 9.9369766988005978e+01 -6.1322574591580683e+01 + 21 -4.7275689998462610e+01 -5.4319014795217896e+01 1.6153948413653816e+02 + 22 -8.0848364880588520e+01 -2.0558923125323183e+01 -1.2334868562986337e+02 + 23 1.2753545546107300e+02 7.5501310236313500e+01 -3.7557310033381654e+01 + 24 3.2620776544133733e+01 -1.4536791581334737e+02 8.3091468339261425e+01 + 25 -1.1265948254668372e+02 1.5233633660538578e+01 -9.3898152945234784e+01 + 26 7.9491575169137064e+01 1.2978239073921878e+02 1.0217966076210168e+01 + 27 2.5728752131047727e+01 -1.5870349119085796e+02 5.7681301416503757e+01 + 28 -1.2267419415460876e+02 4.9893325469762196e+01 -8.2276086206877281e+01 + 29 9.7475604265939310e+01 1.0891093983722081e+02 2.4509332186417467e+01 +run_vdwl: 225.89514610424752 +run_coul: 479.63218665277554 +run_stress: |2- + 7.6880483575291908e+02 5.4075822740503565e+02 7.2301253399851237e+02 2.4396079617618000e+02 1.9638673618213971e+02 -8.4043795050956405e+00 +run_forces: |2 + 1 -4.1711731114613954e+01 -2.3473786497941965e+01 6.6341484027954934e+01 + 2 5.5496931435801173e+01 4.4495570623731851e+01 -6.4431694545640838e+01 + 3 1.0387099578759054e+01 2.2918730875948441e+00 -9.7759294900077602e+00 + 4 -2.5589911312071909e+01 4.1701940624866145e+00 -1.8596322778512814e+01 + 5 -1.0383531494119762e+01 -1.6305347095859965e+01 3.4227106757019357e+01 + 6 -2.4867608750749536e+01 2.2671166977727093e+01 2.2552631817525445e+01 + 7 -4.8281363484148336e+00 -8.2229925451385384e+00 -5.1549034783674763e+01 + 8 -1.3062582194917429e+01 -3.2122541255748587e+01 -7.1671006812880421e+01 + 9 1.9040598629762435e+01 2.9940036652115399e+01 1.0714977893133721e+02 + 10 -2.0603162806379485e-01 -9.9330259830464449e+00 1.5862484576818444e+01 + 11 -8.3282855549187627e+00 -2.2909203928769220e+01 -2.6009387739799838e+01 + 12 8.1996996124241459e+00 -2.4198771205384979e+00 8.0846806210087241e+00 + 13 3.0065317217115510e+01 -1.0973402807626645e+01 -9.8962187618542019e-01 + 14 -4.7608826899307592e+00 3.9335761136449738e+00 -3.5186104250824762e+01 + 15 5.4324012905884027e+00 3.3303330706988810e+01 9.0504465025152463e+00 + 16 2.3252147499988141e+01 -2.5511566821049861e+01 -3.2918551051203053e+01 + 17 -1.7045611874960425e+01 1.0782186567888354e+01 4.5959875493783770e+01 + 18 -1.0475209668706798e+01 -4.2068577553809945e+01 1.5782092469621321e+02 + 19 -8.2564065409913411e+01 -5.5377773727183254e+01 -9.6110565592767216e+01 + 20 9.2555486866382381e+01 9.7357800290144681e+01 -5.9770059229934837e+01 + 21 -4.7199899320053582e+01 -5.3764405575952850e+01 1.6063135261542291e+02 + 22 -8.0637374924437950e+01 -2.0627688941143330e+01 -1.2267014817438935e+02 + 23 1.2724823118128879e+02 7.5014420129610230e+01 -3.7327346288897260e+01 + 24 3.3109726494011703e+01 -1.4529118627174853e+02 8.3305785423715420e+01 + 25 -1.1313431167658220e+02 1.5103389731521387e+01 -9.4342762180037269e+01 + 26 7.9477361466136486e+01 1.2983713292095970e+02 1.0448240199930945e+01 + 27 2.5864211479215427e+01 -1.5801585214891745e+02 5.7172391800708461e+01 + 28 -1.2224463994308796e+02 4.9684500447772749e+01 -8.1839166923286683e+01 + 29 9.6910601154069468e+01 1.0843204996228829e+02 2.4580518254088268e+01 +... diff --git a/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_long.yaml b/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_long.yaml new file mode 100644 index 00000000000..d4a5c5fa5db --- /dev/null +++ b/unittest/force-styles/tests/mol-pair-buck6d_coul_gauss_long.yaml @@ -0,0 +1,103 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 15:59:48 2026 +epsilon: 1.5e-11 +skip_tests: +prerequisites: | + atom full + pair buck6d/coul/gauss/long + kspace ewald +pre_commands: "" +post_commands: | + pair_modify mix arithmetic + pair_modify table 0 + kspace_style ewald 1.0e-6 + kspace_modify gewald 0.3 + kspace_modify compute no +input_file: in.fourmol +pair_style: buck6d/coul/gauss/long 0.9 0.9 8.0 +pair_coeff: | + * * 6157.8178 3.4682081 129.19572 0.78772886 0.73006542 + 1 1 10304.0 3.0612245 457.17971 4.5218516 0.60800971 + 2 2 3680.0 4.0 32.805 0.10690769 0.9771554 + 3 3 10304.0 3.0769231 443.36171 4.2093581 0.60800971 + 4 4 10856.0 3.2967033 308.7755 1.6022517 0.63272774 + 5 5 10856.0 3.2967033 308.7755 1.6022517 0.63272774 +extract: | + buck6d1 2 + buck6d2 2 + buck6d3 2 + buck6d4 2 + cut_ljsq 2 + rsmooth_sq 2 +natoms: 29 +init_vdwl: 226.74234437878033 +init_coul: 260.94796317847465 +init_stress: |2- + 4.4657456744649278e+02 3.2466755380514587e+02 4.2394395057894957e+02 1.1650347053201020e+02 9.7313246437911246e+01 -6.7169886875253200e+00 +init_forces: |2 + 1 -2.3324652269431063e+01 -9.4087991158801607e+00 4.4498401072658531e+01 + 2 3.6852707549068022e+01 2.9649714261028514e+01 -4.2711479235913629e+01 + 3 1.0483261264372620e+01 1.0682925964966903e+00 -1.0326865892016201e+01 + 4 -2.5382815297181853e+01 4.6529884045021710e+00 -1.8057771085107934e+01 + 5 -1.0214935587712853e+01 -1.5129053753250018e+01 3.4069153882600183e+01 + 6 -6.5193390889653147e+00 1.0024721546842303e+00 -1.3709232699931679e+00 + 7 -7.3367657098549071e+00 1.3675236252886699e-01 -1.9099280183998502e+01 + 8 -2.1400888075790668e+01 -1.2431432164967116e+01 -5.0617197128307708e+01 + 9 1.2811981482456448e+01 2.1785289353589320e+01 7.7365016520431823e+01 + 10 -2.0554323651032309e+00 -4.5299348544034244e+00 1.5373417700317630e+01 + 11 -8.7201081504821136e+00 -2.3004901915517038e+01 -2.7282292691939652e+01 + 12 9.7083895933329742e+00 -1.3111081663881528e+00 6.4407265034400432e+00 + 13 2.6524569526074313e+01 -9.6097862155991844e+00 -9.7016972949776892e-01 + 14 -3.3363333023692343e+00 3.6103019598510460e+00 -3.1557117094470307e+01 + 15 5.4147402023111058e+00 2.9260231940052709e+01 7.7599425329467939e+00 + 16 1.2825425684629156e+01 -1.8585837756042327e+01 -3.0112111184401052e-01 + 17 -5.1253428778089729e+00 2.8072945499418998e+00 1.4992348612695803e+01 + 18 -7.8055372456548815e+00 -2.0005685192116367e+01 6.8303173570897442e+01 + 19 -3.7498591808002097e+01 -2.6461999331009647e+01 -4.0292613326985780e+01 + 20 4.4724121875344785e+01 4.6258905771037014e+01 -2.6088427736873975e+01 + 21 -2.1927317053986851e+01 -2.3569445341828747e+01 7.0731062462675254e+01 + 22 -3.9113679187156507e+01 -1.0989334087426483e+01 -5.5269071605819782e+01 + 23 6.0495725055508487e+01 3.5103740024018592e+01 -1.4840378782437865e+01 + 24 1.3215603243554852e+01 -6.4200346263479773e+01 3.5371577325569753e+01 + 25 -5.2455670094693311e+01 4.3915119802285707e+00 -4.2604231240150071e+01 + 26 3.8670079509573050e+01 5.9452886470235363e+01 6.5520012825259668e+00 + 27 1.2931408373140528e+01 -6.9419922074418722e+01 2.6321424093717731e+01 + 28 -5.8846395580372871e+01 2.1212927938717918e+01 -3.8762342982671534e+01 + 29 4.6405790335200400e+01 4.8264276465414220e+01 1.2373037537550887e+01 +run_vdwl: 226.35962757738025 +run_coul: 260.9287977411756 +run_stress: |2- + 4.4634084576002641e+02 3.2390572158990983e+02 4.2220646139817734e+02 1.1605115270359273e+02 9.8199500515736887e+01 -5.9255557712282441e+00 +run_forces: |2 + 1 -2.3127731069177923e+01 -9.3168113317437378e+00 4.4104919972857061e+01 + 2 3.6621826473630705e+01 2.9499597025229047e+01 -4.2320837397758211e+01 + 3 1.0339786579060709e+01 1.1114322027049943e+00 -1.0250081482104232e+01 + 4 -2.5229989208957004e+01 4.6069151155150072e+00 -1.7982503870058100e+01 + 5 -1.0184742265830197e+01 -1.5080224834063539e+01 3.3909226076104957e+01 + 6 -6.4869707715727634e+00 9.9903585449064825e-01 -1.3763874238726566e+00 + 7 -7.3288584197047326e+00 1.3329936932029782e-01 -1.9053153320581842e+01 + 8 -2.1316774391748268e+01 -1.2247893507419521e+01 -5.0044197092510885e+01 + 9 1.2663381905321977e+01 2.1609110151406206e+01 7.6751169950160673e+01 + 10 -2.1073230749794818e+00 -4.7310601429707013e+00 1.5048918884386548e+01 + 11 -8.6327796163333694e+00 -2.2791899249269004e+01 -2.6934493519516458e+01 + 12 9.7389886392588547e+00 -1.3565548225448751e+00 6.1756024860959169e+00 + 13 2.6405668423263400e+01 -9.5248976949160262e+00 -9.6153022326881898e-01 + 14 -3.2528672452656937e+00 3.5650994214812233e+00 -3.1304785462653609e+01 + 15 5.4051030263392263e+00 2.9262174960573798e+01 7.7725435919653494e+00 + 16 1.2812530807154587e+01 -1.8573110156457204e+01 -3.4076667966947582e-01 + 17 -5.1146570104975897e+00 2.7965374339771074e+00 1.5007853588555740e+01 + 18 -6.5839649106363183e+00 -1.8704922644643567e+01 6.7475964350187766e+01 + 19 -3.7557281697507825e+01 -2.6551914440579214e+01 -4.0319708636488961e+01 + 20 4.3561586433030527e+01 4.5050225898884719e+01 -2.5231958898546694e+01 + 21 -2.2011846317803158e+01 -2.3441803446671184e+01 7.0613280064361618e+01 + 22 -3.9146773495800481e+01 -1.1045867664683909e+01 -5.5171538023681698e+01 + 23 6.0613249985111572e+01 3.5031370914253266e+01 -1.4820335179609570e+01 + 24 1.3646168305671896e+01 -6.4633576387847441e+01 3.5814750717179550e+01 + 25 -5.3134014039589630e+01 4.3914316297681530e+00 -4.3191575028907117e+01 + 26 3.8918340851729738e+01 5.9887463856826301e+01 6.6977050905068625e+00 + 27 1.3065161088177362e+01 -6.9376005111547556e+01 2.6209672996151149e+01 + 28 -5.8888184988090828e+01 2.1208205692996373e+01 -3.8723862888769013e+01 + 29 4.6312966005744720e+01 4.8224641907930348e+01 1.2446107359484136e+01 +... diff --git a/unittest/force-styles/tests/mol-pair-hbond_dreiding_lj_angleoffset.yaml b/unittest/force-styles/tests/mol-pair-hbond_dreiding_lj_angleoffset.yaml index 8b287d131d4..6a45506844c 100644 --- a/unittest/force-styles/tests/mol-pair-hbond_dreiding_lj_angleoffset.yaml +++ b/unittest/force-styles/tests/mol-pair-hbond_dreiding_lj_angleoffset.yaml @@ -1,94 +1,93 @@ --- -lammps_version: 19 Nov 2024 +lammps_version: 4 Jul 2026 tags: -date_generated: Sat Feb 1 01:59:00 2025 +date_generated: Fri Jul 10 15:57:00 2026 epsilon: 1e-12 skip_tests: single -prerequisites: ! | +prerequisites: | atom full pair hbond/dreiding/lj/angleoffset -pre_commands: ! | +pre_commands: | variable newton_pair delete if "$(is_active(package,gpu)) > 0.0" then "variable newton_pair index off" else "variable newton_pair index on" -post_commands: ! | +post_commands: | pair_modify mix arithmetic input_file: in.fourmol -pair_style: ! | - hybrid/overlay zero 8.0 hbond/dreiding/lj/angleoffset 4 6.5 8.0 120.0 170.0 -pair_coeff: ! | +pair_style: hybrid/overlay zero 8.0 hbond/dreiding/lj/angleoffset 4 6.5 8.0 90.0 160.0 +pair_coeff: | * * zero - 1 1 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 120.0 135.0 - 4 4 hbond/dreiding/lj/angleoffset 2 j 9.5 2.75 4 9.0 11.0 120.0 135.0 - 4 4 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 120.0 135.0 - 5 5 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 120.0 135.0 -extract: ! "" + 1 1 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 90.0 160.0 + 4 4 hbond/dreiding/lj/angleoffset 2 j 9.5 2.75 4 9.0 11.0 90.0 160.0 + 4 4 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 90.0 160.0 + 5 5 hbond/dreiding/lj/angleoffset 2 i 9.5 2.75 4 9.0 11.0 90.0 160.0 +extract: "" natoms: 29 -init_vdwl: -2.3677535566368935 +init_vdwl: -0.15651052189287037 init_coul: 0 -init_stress: ! |- - -1.0045680035486175e+01 -8.9577355727195993e+00 -1.2636161391811950e+01 -5.1466987876289050e+00 2.0475277327527350e+00 4.2475890759914384e-02 -init_forces: ! |2 +init_stress: |- + -6.3043822610017586e-01 -5.3599672690639510e-01 -9.9284214252700265e-01 -4.0533504303408191e-01 1.4651322130904197e-02 2.8524527504436303e-01 +init_forces: |2 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 3 8.8002467435548193e-01 -1.9374380093943135e-02 -1.3536614910869868e-01 + 3 1.4280897975080531e-01 4.3692503462274310e-02 -1.4336532895563190e-03 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 5 1.3994133933759717e-01 -7.3155075285514681e-02 -1.3232679875280684e-01 - 6 2.3390276639450658e+00 1.3929632368873501e+00 -1.2721862719425576e+00 - 7 4.1378726621178624e-01 1.4354926433685329e+00 -1.5148780956797432e+00 + 5 1.3285799497512739e-02 -8.6676051648596104e-03 -9.1130871715392626e-03 + 6 3.3354840426902760e-02 9.7364961118054011e-02 -2.3629740795676438e-02 + 7 -3.6902848634715046e-04 1.3081265273520426e-01 -2.2612378329346391e-01 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 -3.1686351036589880e-05 -1.6766064964004426e-05 9.8758994706439550e-05 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 12 5.9015854095579225e+00 3.5912219879960170e+00 -2.6982007191973478e+00 - 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 14 -2.6278669841375901e+00 9.0634523961625268e-01 5.9886902565918279e+00 - 15 -6.5782792369352947e+00 -5.8399272399216393e+00 -1.7748671177613611e+00 - 16 -5.4432866123182044e-02 4.1926230801477830e-02 2.4256800170944302e-02 + 12 5.6679992891779540e-01 2.2744479259926054e-01 -4.1405055769407763e-02 + 13 -4.0937507683839298e-04 -1.6831633931564666e-04 2.7332752166039974e-04 + 14 -1.0438089666551963e-01 3.4173749110091467e-02 1.6535358611811046e-01 + 15 -6.4852190260622145e-01 -3.9527988106076867e-01 -9.3070653497505401e-02 + 16 -2.9056878934002666e-03 1.4565623402275920e-03 2.9265178892079035e-03 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 18 -1.0871996511157387e+00 3.3551409695514178e-01 -3.0926556481030198e+00 - 19 6.7341238490395261e-01 -1.7710067403236747e+00 4.6075337437827635e+00 + 18 -2.9283305586414329e-02 2.4181432002276149e-01 -4.8416130323478462e-01 + 19 2.9652334072761480e-02 -3.7262697275796575e-01 7.1028508652824851e-01 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 -2.7876953392389707e-04 1.0283971202469113e-03 -3.6286426408601755e-04 - 22 -6.0652568570342129e-05 1.3910982920033031e-04 3.7172924026368406e-04 - 23 -6.2442440344617252e-05 -9.5945259168002753e-04 1.5599078808312826e-03 - 24 1.4854091583690126e-03 -3.3779115055948103e-03 -2.1121972529056102e-03 - 25 1.5295889868017791e-03 3.5601939758821144e-03 2.5504843102412507e-03 - 26 -4.5638989769642710e-03 -6.8787166242053649e-06 -9.4015250206157545e-04 - 27 1.6523714187438286e-03 5.3787962886091178e-05 5.2266217830512042e-05 - 28 5.2779759112695271e-04 -7.4917632698195269e-05 1.8921402956884896e-04 - 29 -2.2940363523844541e-04 -3.6232844161820845e-04 -1.3083876596823750e-03 -run_vdwl: -2.379228402118846 + 21 -2.8373291424446846e-04 4.4775406929564954e-04 4.5755180711862177e-04 + 22 2.0313974715280907e-05 7.1771391950858638e-05 5.6185991557176761e-06 + 23 1.0199636009040285e-04 -3.4190155287343755e-04 6.1702902453470928e-04 + 24 4.9087736273222763e-04 -2.0538417104211553e-03 -9.1751174445067816e-04 + 25 3.8451198191707985e-04 1.6255981792260099e-03 8.9605073773784218e-04 + 26 -1.6673689149864731e-03 2.8789814135263226e-04 -3.9026140721294911e-04 + 27 1.9287961872685258e-03 2.0570272262346575e-04 2.7262028718089631e-05 + 28 -7.2395465868175390e-05 -7.1527904514651823e-04 -1.0347053936759976e-04 + 29 -9.0299857162440072e-04 4.7229780399249454e-04 -5.9226850623375334e-04 +run_vdwl: -0.159005292217927 run_coul: 0 -run_stress: ! |- - -1.0110414920977702e+01 -9.0215523007276754e+00 -1.2645865635634689e+01 -5.1718839774827590e+00 2.0178372157739379e+00 2.5665175333437745e-02 -run_forces: ! |2 +run_stress: |- + -6.4054419382342842e-01 -5.4694619412862722e-01 -1.0014755554871573e+00 -4.1289519310954276e-01 9.9491793542894058e-03 2.8802836999330567e-01 +run_forces: |2 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 3 8.8127873295642833e-01 -1.9906544411239159e-02 -1.3420880187550055e-01 + 3 1.4443282239484889e-01 4.3731688703324147e-02 -1.3152971472048160e-03 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 5 1.3979875602374409e-01 -7.3044778443509720e-02 -1.3219644950350101e-01 - 6 2.3607870936024593e+00 1.4018820611429474e+00 -1.2583912360420162e+00 - 7 4.1726462115180585e-01 1.4458787085463951e+00 -1.5242839951128935e+00 + 5 1.3301711092062386e-02 -8.6746089220337726e-03 -9.1261494284105207e-03 + 6 3.4765071972680972e-02 9.9952309004325599e-02 -2.1812991958008912e-02 + 7 -3.2621905854401945e-05 1.3322938350881700e-01 -2.2945086415264010e-01 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 -3.2059666716513154e-05 -1.6915407703442760e-05 9.9782669221246901e-05 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 12 5.9050640418818130e+00 3.6256092909015694e+00 -2.6563352814327175e+00 - 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 14 -2.6135516025239336e+00 9.1007161593352315e-01 5.9617631587237359e+00 - 15 -6.6189841741764646e+00 -5.8865084117974442e+00 -1.8048530523320536e+00 - 16 -5.4392847764046806e-02 4.1896766674153194e-02 2.4221662462054185e-02 + 12 5.7281303195835942e-01 2.3277506083369803e-01 -3.7769104159433430e-02 + 13 -3.8430292891758683e-04 -1.5864374029367579e-04 2.5663427582304506e-04 + 14 -1.0300024907602189e-01 3.3958790756414274e-02 1.6325860808741827e-01 + 15 -6.5897697559741442e-01 -4.0304226478663785e-01 -9.6511286943645608e-02 + 16 -2.9190501488812635e-03 1.4745835589066970e-03 2.9198046042407037e-03 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 18 -1.0986720982372553e+00 3.3177691431700151e-01 -3.1121489457325686e+00 - 19 6.8140747708544935e-01 -1.7776556228633966e+00 4.6364329408454621e+00 + 18 -3.0799759574224830e-02 2.4403501408395875e-01 -4.9137663341348614e-01 + 19 3.0832381480079232e-02 -3.7726439759277575e-01 7.2082749756612619e-01 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 -2.7652686557041810e-04 1.0281905758111819e-03 -3.6821986741366670e-04 - 22 -6.1013835436670601e-05 1.3982244857931519e-04 3.7489037941312067e-04 - 23 -6.5141398761843470e-05 -9.6018466043676387e-04 1.5632647138356425e-03 - 24 1.4916559367037121e-03 -3.3866617725795425e-03 -2.1034085744246556e-03 - 25 1.5289061878072103e-03 3.5683754233383188e-03 2.5504661476227876e-03 - 26 -4.5679115405371055e-03 -6.0750808851146922e-06 -9.4923524150980292e-04 - 27 1.6481334338488271e-03 5.2157477724774604e-05 5.8087954829178114e-05 - 28 5.2782765352719463e-04 -7.4981190270347932e-05 1.8718391398083104e-04 - 29 -2.2592957158090753e-04 -3.6064322128182149e-04 -1.3130294263334345e-03 + 21 -2.8385135134523866e-04 4.4913459365386967e-04 4.5437901788849031e-04 + 22 2.0266445740167594e-05 7.1707455667882695e-05 5.5943676270554414e-06 + 23 1.0138910500097379e-04 -3.4376854732778178e-04 6.2099634436156917e-04 + 24 4.9486819906426982e-04 -2.0532631433096893e-03 -9.1079190075680670e-04 + 25 3.8204833621188468e-04 1.6242046857948078e-03 8.9260213752779497e-04 + 26 -1.6682731322801305e-03 2.8870355951501404e-04 -3.9315976440517470e-04 + 27 1.9245621208168126e-03 2.0543421166280127e-04 3.4775985225781131e-05 + 28 -7.1220416802785712e-05 -7.1535051129483786e-04 -1.0513746220959511e-04 + 29 -8.9978930640595314e-04 4.7319769563793399e-04 -5.9925872525911435e-04 ... diff --git a/unittest/force-styles/tests/mol-pair-hbond_dreiding_morse_angleoffset.yaml b/unittest/force-styles/tests/mol-pair-hbond_dreiding_morse_angleoffset.yaml index b412833fbac..5564fbf228c 100644 --- a/unittest/force-styles/tests/mol-pair-hbond_dreiding_morse_angleoffset.yaml +++ b/unittest/force-styles/tests/mol-pair-hbond_dreiding_morse_angleoffset.yaml @@ -1,94 +1,94 @@ --- -lammps_version: 19 Nov 2024 +lammps_version: 4 Jul 2026 tags: -date_generated: Sat Feb 1 01:58:54 2025 +date_generated: Fri Jul 10 15:57:01 2026 epsilon: 1e-12 skip_tests: single -prerequisites: ! | +prerequisites: | atom full pair hbond/dreiding/morse/angleoffset -pre_commands: ! | +pre_commands: | variable newton_pair delete if "$(is_active(package,gpu)) > 0.0" then "variable newton_pair index off" else "variable newton_pair index on" -post_commands: ! | +post_commands: | pair_modify mix arithmetic input_file: in.fourmol -pair_style: ! | - hybrid/overlay zero 8.0 hbond/dreiding/morse/angleoffset 2 6.5 8.0 120.0 170.0 -pair_coeff: ! | +pair_style: hybrid/overlay zero 8.0 hbond/dreiding/morse/angleoffset 2 6.5 8.0 90.0 + 160.0 +pair_coeff: | * * zero - 1 1 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 120.0 135.0 - 4 4 hbond/dreiding/morse/angleoffset 2 j 3.88 1.7241379 2.9 2 9.0 11.0 120.0 135.0 - 4 4 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 120.0 135.0 - 5 5 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 120.0 135.0 -extract: ! "" + 1 1 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 90.0 160.0 + 4 4 hbond/dreiding/morse/angleoffset 2 j 3.88 1.7241379 2.9 2 9.0 11.0 90.0 160.0 + 4 4 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 90.0 160.0 + 5 5 hbond/dreiding/morse/angleoffset 2 i 3.88 1.7241379 2.9 2 9.0 11.0 90.0 160.0 +extract: "" natoms: 29 -init_vdwl: -3.5096377325675956 +init_vdwl: -0.8739956100645457 init_coul: 0 -init_stress: ! |- - -6.3186200946929167e+00 -7.9368239482189518e+00 -1.0134945857423238e+01 -3.2246711803230022e+00 2.2254089978037950e+00 5.7539194539906990e-01 -init_forces: ! |2 +init_stress: |- + -1.7096938377237212e+00 -1.8519890485874362e+00 -3.4245377571600555e+00 -1.2221710870771088e+00 6.6969970018693536e-01 4.8468743943745657e-01 +init_forces: |2 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 3 1.4240904755256723e+00 -3.2950514965566280e-01 -3.1290177991003543e-01 + 3 3.8377974554416627e-01 9.1125804948353858e-02 -4.8556981909908141e-02 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 5 2.7142170689071471e-01 -1.4188713282079174e-01 -2.5665300728775797e-01 - 6 -1.4801586142214629e-01 1.0699386611410953e+00 -6.0135661447512467e-01 - 7 5.3518589817461271e-01 1.5272896498257909e+00 -1.3921449698629449e+00 + 5 1.7000037415835556e-01 -1.0990631228087336e-01 -1.2399011309834942e-01 + 6 -8.3720620531016171e-02 3.7574089092216284e-01 -1.5460263773115374e-01 + 7 6.0762835813253008e-02 4.3530052346353532e-01 -6.0906884800619265e-01 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 -6.7622778144724475e-03 -2.6011021651900232e-03 1.9147523603011488e-02 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 12 4.5616750731557225e+00 2.0016733409712275e+00 -2.1448376884234586e+00 - 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 14 -1.8837854472607014e+00 7.6104772633690498e-01 4.2961043227589402e+00 - 15 -4.0673035407237705e+00 -3.4997007371179505e+00 -1.0171200059632148e+00 - 16 -1.5808240616549102e-01 1.3843329114517686e-01 3.6764773300651435e-02 + 12 2.0373440409028905e+00 5.0583665220318508e-01 -4.9446120046384001e-01 + 13 -2.5830766093013553e-02 -1.0620431571145953e-02 1.7246431642393378e-02 + 14 -6.6351769369631608e-01 2.5069759740523134e-01 1.0324182602405192e+00 + 15 -1.7819133788753172e+00 -1.1131974473592077e+00 -2.7770844856467725e-01 + 16 -2.9379423595276934e-02 1.2924347897483871e-02 3.0507166282004415e-02 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 18 -1.1060472607021432e+00 -2.5981768517950421e-02 -2.5137276422698869e+00 - 19 5.7086136252753061e-01 -1.5013078813078404e+00 3.9058726121328320e+00 + 18 -1.3589545794303476e-01 5.0885589507979179e-01 -1.1906404389456124e+00 + 19 7.5132622129781751e-02 -9.4415641854332710e-01 1.7997092869518050e+00 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 -5.7491418379274713e-04 3.0261624754005732e-04 2.2916473648388361e-04 - 22 -9.8559570221787177e-05 3.0417491975132552e-05 3.4191505184844652e-04 - 23 -1.8859939253140884e-05 -2.8721722164729333e-04 4.6721692184799779e-04 - 24 -8.1837153976642180e-04 -1.3398119484861689e-03 -1.2272376761381647e-03 - 25 6.0616687122078659e-04 1.4446755158460632e-03 1.0295960060226405e-03 - 26 -1.8906126645904103e-03 4.9943203686937775e-06 -3.5691568809749410e-04 - 27 2.0423960483977994e-03 -5.7673276886988751e-04 -4.5157450544399075e-04 - 28 8.9811985390184752e-04 4.2254804752218743e-04 4.1501145451916749e-04 - 29 -1.4536487589592609e-04 -1.4896842487842051e-06 -4.4717630104248622e-04 -run_vdwl: -3.517286804292988 + 21 -4.6757220384142299e-04 2.0695351134531284e-04 3.4704481498539625e-04 + 22 -3.0388731809066248e-05 1.1754493111877699e-05 5.3820496938677202e-05 + 23 5.1665435235464172e-05 -1.7693926463483001e-04 3.2349416227903631e-04 + 24 -4.4435728224244918e-04 -1.3335215426597408e-03 -7.3527450583853540e-04 + 25 2.6406752532673653e-04 1.1132406872755660e-03 6.1372997311883262e-04 + 26 -1.2403125882605908e-03 2.2227397236766712e-04 -2.4579176179456751e-04 + 27 2.0523822662555174e-03 -6.6085419246072119e-05 -3.8170101102491507e-05 + 28 1.0288261252827892e-04 -6.2411184314712767e-05 2.2193303319614043e-05 + 29 -2.8836703319246764e-04 8.4734746754931863e-05 -3.4104638190596200e-04 +run_vdwl: -0.8801888584785049 run_coul: 0 -run_stress: ! |- - -6.3410166553407770e+00 -7.9592758161065280e+00 -1.0138049334443931e+01 -3.2256302506163523e+00 2.2149336994073563e+00 5.6372209224133285e-01 -run_forces: ! |2 +run_stress: |- + -1.7212426179722033e+00 -1.8711245274909369e+00 -3.4310852738544519e+00 -1.2301496736251032e+00 6.6218496304763497e-01 4.8531325809015807e-01 +run_forces: |2 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 3 1.4231484312527738e+00 -3.3026042763239660e-01 -3.1153835350334336e-01 + 3 3.8558149722265112e-01 9.0302402409211419e-02 -4.8004715071028096e-02 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 5 2.7099603671016548e-01 -1.4159530161432804e-01 -2.5625897291352556e-01 - 6 -1.3797104870631000e-01 1.0696976402082368e+00 -5.9816503713785374e-01 - 7 5.3745728250810021e-01 1.5326650906404748e+00 -1.3957261111901145e+00 + 5 1.7006495826458862e-01 -1.0989903304178200e-01 -1.2407942906025707e-01 + 6 -8.2307332727588958e-02 3.7871069746654434e-01 -1.5162274584580970e-01 + 7 6.2155073140098688e-02 4.3937763874992997e-01 -6.1270946596338893e-01 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 -6.7930259108720647e-03 -2.6003939823884747e-03 1.9201103649060334e-02 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 12 4.5521103945743580e+00 2.0088383351389192e+00 -2.1283471349150886e+00 - 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 14 -1.8784184443631613e+00 7.6474554806201334e-01 4.2874324751701529e+00 - 15 -4.0719618931452484e+00 -3.5097154339717243e+00 -1.0297921201340294e+00 - 16 -1.5790347632257765e-01 1.3828963980927983e-01 3.6669143433687226e-02 + 12 2.0400951814639132e+00 5.1211112976900319e-01 -4.8611158654114839e-01 + 13 -2.5458439260230416e-02 -1.0509443193237728e-02 1.7000915719290625e-02 + 14 -6.6002270195488744e-01 2.5075453219573185e-01 1.0274982770705390e+00 + 15 -1.7917338329656716e+00 -1.1224221641144081e+00 -2.8390025882620751e-01 + 16 -2.9426304131902566e-02 1.3552272491325427e-02 3.0018438905560833e-02 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 18 -1.1129608926078332e+00 -3.1255647589324198e-02 -2.5201773431404120e+00 - 19 5.7550361009973294e-01 -1.5014094430511506e+00 3.9159034543305267e+00 + 18 -1.3960138028349017e-01 5.0813238997117638e-01 -1.1976917923884141e+00 + 19 7.7446307143391485e-02 -9.4751002872110635e-01 1.8104012583518028e+00 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 -5.7505641109121207e-04 3.0214223626672459e-04 2.2825265859075745e-04 - 22 -9.8550382447785582e-05 3.0815868769738694e-05 3.4333792723925015e-04 - 23 -1.9668835533933137e-05 -2.8708711486036183e-04 4.6769002148283145e-04 - 24 -8.1540973361977085e-04 -1.3444963521802775e-03 -1.2242390653782144e-03 - 25 6.0633878322232954e-04 1.4494406392014422e-03 1.0305743705191716e-03 - 26 -1.8923460324841970e-03 5.3377648171984155e-06 -3.6057802041638512e-04 - 27 2.0400880126746315e-03 -5.7744782180381698e-04 -4.4877347378119149e-04 - 28 8.9837453242585911e-04 4.2277075888104101e-04 4.1392975505448524e-04 - 29 -1.4376993314592140e-04 -1.4759790916891481e-06 -4.5019417331070537e-04 + 21 -4.6723817306165520e-04 2.0714194707907319e-04 3.4599088761077141e-04 + 22 -3.0838484718087030e-05 1.1818087511009299e-05 5.4694197469964407e-05 + 23 5.1153403138819070e-05 -1.7724885832544988e-04 3.2436966199830201e-04 + 24 -4.4102875081645230e-04 -1.3361565276466757e-03 -7.3209362083667662e-04 + 25 2.6308474604263470e-04 1.1154608511715731e-03 6.1310660325297099e-04 + 26 -1.2412955572717555e-03 2.2288017232378838e-04 -2.4797662656472882e-04 + 27 2.0502138345292985e-03 -6.5990177065352801e-05 -3.5442018284220638e-05 + 28 1.0283658400161817e-04 -6.2775114847767074e-05 2.1529645006045949e-05 + 29 -2.8688760184442059e-04 8.4869619799802007e-05 -3.4417872965242864e-04 ... diff --git a/unittest/force-styles/tests/mol-pair-lj_cut_soft_gapsys.yaml b/unittest/force-styles/tests/mol-pair-lj_cut_soft_gapsys.yaml new file mode 100644 index 00000000000..cf7b7bdc757 --- /dev/null +++ b/unittest/force-styles/tests/mol-pair-lj_cut_soft_gapsys.yaml @@ -0,0 +1,95 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 15:55:01 2026 +epsilon: 7.5e-14 +skip_tests: +prerequisites: | + atom full + pair lj/cut/soft/gapsys +pre_commands: "" +post_commands: | + pair_modify mix arithmetic +input_file: in.fourmol +pair_style: lj/cut/soft/gapsys 0.5 8.0 +pair_coeff: | + 1 1 0.02 2.5 0.64 + 2 2 0.005 1.0 0.64 + 2 4 0.005 0.5 0.64 + 3 3 0.02 3.2 0.64 + 4 4 0.015 3.1 0.64 + 5 5 0.015 3.1 0.64 +extract: | + epsilon 2 + sigma 2 + lambda 2 +natoms: 29 +init_vdwl: 313.92968650816874 +init_coul: 0 +init_stress: |2- + 5.3426904308603002e+02 5.4478789093774583e+02 7.4933561249895399e+02 -4.7857957443699178e+01 7.9807128435687588e+01 6.6294917659861696e+01 +init_forces: |2 + 1 -9.9114065296845304e+00 7.7691452214934742e+01 1.0206266645351666e+02 + 2 4.9941519892639825e+01 4.1091317800011296e+01 -5.8778991802049028e+01 + 3 -4.0366994773964670e+01 -1.0563013895156224e+02 -4.2542003995504651e+01 + 4 -7.8711096705734178e+00 2.1350518625352004e+00 -5.5954532185292409e+00 + 5 -2.5176757267276133e+00 -4.0521510680612858e+00 1.2152704057983797e+01 + 6 -1.0699522416306769e+02 1.1140824174634062e+02 7.1313423678737806e+01 + 7 -2.1256001502209170e+00 -2.6644232999347356e+01 -1.7413877823715322e+02 + 8 -6.2495214205938163e+00 -5.5560138097891700e+00 4.1871512717795561e+01 + 9 2.0185853756510564e+01 2.1757526149017888e+01 8.9354241204079486e+01 + 10 7.6340876360173397e+01 -1.0752566301949558e+02 -2.8783877868235454e+01 + 11 -2.3530157265571860e+00 -5.9077640075588898e+00 -9.6590723956614433e+00 + 12 1.7527155197359406e+01 1.0633119514682475e+01 -7.9254397903886167e+00 + 13 8.0986409580712841e+00 -3.2098088269317295e+00 -1.4896399871387664e-01 + 14 -3.3852721291218528e+00 6.8636181224987958e-01 -8.7507190862837820e+00 + 15 -2.0454999188607306e-01 8.4846165523012136e+00 3.0131615419840618e+00 + 16 6.1442886878069494e+01 -5.0665062286339101e+01 -1.2326099311844003e+02 + 17 -5.1522792768797920e+01 3.5330737042457464e+01 1.3980031713222675e+02 + 18 -1.8862629870158503e-02 -3.3402022492930034e-02 3.1000492146377390e-02 + 19 3.1843079948447594e-04 -2.3918628211596124e-04 1.7427252652160224e-03 + 20 -9.9760831169755002e-04 -1.0209184785886856e-03 3.6910973051849135e-04 + 21 -2.2874557186572172e+01 -2.7722139149532950e+01 8.0870756157467639e+01 + 22 -3.9150029478178944e+01 -9.4872359101021111e+00 -6.1422495641505606e+01 + 23 6.2014658835661344e+01 3.7220886451166201e+01 -1.9437482339083811e+01 + 24 1.6831099117704902e+01 -7.3312034003686307e+01 4.2055754258605582e+01 + 25 -5.5208224405338164e+01 8.8860967934984121e+00 -4.6415185077459057e+01 + 26 3.8364934918497447e+01 6.4414925754142175e+01 4.3362380094970598e+00 + 27 1.2403863363720021e+01 -8.0317752928059818e+01 2.8818337875751510e+01 + 28 -5.9492493237936159e+01 2.5567897070840985e+01 -4.0253531217413133e+01 + 29 4.7096519888195800e+01 5.4756428323541634e+01 1.1430762371632955e+01 +run_vdwl: 313.343497206858 +run_coul: 0 +run_stress: |2- + 5.3448063573219054e+02 5.4455929701481057e+02 7.4785441808798805e+02 -4.7712544901001174e+01 7.9903181633354706e+01 6.6898569402656221e+01 +run_forces: |2 + 1 -9.7674271107952997e+00 7.7548084936692547e+01 1.0170619487257754e+02 + 2 4.9822378460045670e+01 4.1059390379904087e+01 -5.8449461731402643e+01 + 3 -4.0503165435068688e+01 -1.0540960923178146e+02 -4.2462547554267374e+01 + 4 -7.8204621142054993e+00 2.1150957535781059e+00 -5.5732767651069963e+00 + 5 -2.5048318654913619e+00 -4.0347912085895938e+00 1.2100637938004541e+01 + 6 -1.0677441406679094e+02 1.1132895941753566e+02 7.1086163707852450e+01 + 7 -2.0554105547540402e+00 -2.6707680477356259e+01 -1.7360920414748648e+02 + 8 -6.4497747641370733e+00 -5.3677403660003860e+00 4.1838953258968587e+01 + 9 2.0152935970766027e+01 2.1617454177123520e+01 8.9086171713734586e+01 + 10 7.6369244370486442e+01 -1.0758388445529069e+02 -2.8932064595449926e+01 + 11 -2.3195199022850894e+00 -5.8155815640246047e+00 -9.5097861438581290e+00 + 12 1.7507404864305627e+01 1.0579382393256489e+01 -8.0516551284248674e+00 + 13 8.0530379722256900e+00 -3.1756357470105536e+00 -1.4619138779847821e-01 + 14 -3.3416371295866685e+00 6.6493739214524750e-01 -8.6345067363079355e+00 + 15 -2.2254585976763389e-01 8.5025611833417916e+00 3.0369764492236682e+00 + 16 6.1341719178787159e+01 -5.0648759585312050e+01 -1.2316729110298570e+02 + 17 -5.1453755307093338e+01 3.5355390802662150e+01 1.3966460515345932e+02 + 18 -1.8862758183565014e-02 -3.3400206076549366e-02 3.1006850867866725e-02 + 19 3.0898320892798855e-04 -2.4765003886615056e-04 1.7446174249836780e-03 + 20 -9.8664370255265466e-04 -1.0115353374076249e-03 3.6948580242026339e-04 + 21 -2.2914066651778992e+01 -2.7542272491026523e+01 8.0724691068664299e+01 + 22 -3.9219356101400201e+01 -9.5723765764473132e+00 -6.1330089505339195e+01 + 23 6.2123489598269103e+01 3.7126170010990194e+01 -1.9383817471211252e+01 + 24 1.7055333403433025e+01 -7.3444286619114379e+01 4.2216343434970383e+01 + 25 -5.5536183923866311e+01 8.8239581089124908e+00 -4.6708478425085559e+01 + 26 3.8468658196660186e+01 6.4609321689557547e+01 4.4689415529947007e+00 + 27 1.2522560546985488e+01 -8.0289948658769902e+01 2.8674999279476893e+01 + 28 -5.9530584922896608e+01 2.5559443970241205e+01 -4.0201027948674025e+01 + 29 4.7015913566630488e+01 5.4737076156235446e+01 1.1521599259376297e+01 +... diff --git a/unittest/force-styles/tests/mol-pair-local_density.yaml b/unittest/force-styles/tests/mol-pair-local_density.yaml new file mode 100644 index 00000000000..bf4965d49d1 --- /dev/null +++ b/unittest/force-styles/tests/mol-pair-local_density.yaml @@ -0,0 +1,88 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 16:24:41 2026 +epsilon: 5e-14 +skip_tests: +prerequisites: | + atom full + pair local/density +pre_commands: "" +post_commands: | + pair_modify mix arithmetic + pair_modify shift yes +input_file: in.fourmol +pair_style: local/density +pair_coeff: | + * * ${input_dir}/methanol.localdensity.table +extract: "" +natoms: 29 +init_vdwl: 0.74050000332937 +init_coul: 0 +init_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +init_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_vdwl: 0.74050000332937 +run_coul: 0 +run_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +... diff --git a/unittest/force-styles/tests/sph-pair-heatconduction.yaml b/unittest/force-styles/tests/sph-pair-heatconduction.yaml new file mode 100644 index 00000000000..f46b514b17e --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-heatconduction.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:33 2026 +epsilon: 6e-12 +skip_tests: single gpu +prerequisites: | + atom sph + pair sph/heatconduction +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/heatconduction +pair_coeff: | + 1 1 0.5 2.0 + 1 2 0.4 2.0 + 2 2 0.3 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +init_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +... diff --git a/unittest/force-styles/tests/sph-pair-idealgas.yaml b/unittest/force-styles/tests/sph-pair-idealgas.yaml new file mode 100644 index 00000000000..1cd4afe0853 --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-idealgas.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:34 2026 +epsilon: 5e-09 +skip_tests: single +prerequisites: | + atom sph + pair sph/idealgas +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/idealgas +pair_coeff: | + 1 1 0.2 2.0 + 1 2 0.25 2.0 + 2 2 0.3 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 2.4013458349055117e+01 2.4038577613047522e+01 2.3982136668807563e+01 -3.0745054557936896e-03 6.4547097536483168e-03 4.8408779447557714e-04 +init_forces: |2 + 1 -5.0465363977577088e-02 -7.9011137915555224e-02 7.6068124200869891e-02 + 2 1.4273970642377926e-03 2.6666595667141205e-02 -2.0163176124892157e-03 + 3 -4.9064374413907139e-02 -2.7150109921477233e-02 3.5569447726929715e-03 + 4 -6.2969973174204719e-02 -1.2361773380147842e-01 -5.9334938980173127e-02 + 5 -5.9494290342245848e-02 5.2643982577965306e-02 9.8716461067544836e-02 + 6 -1.9569359476594467e-02 -1.0187660679951388e-02 -2.4153463707667355e-03 + 7 2.2417142916042188e-02 4.1662473558061186e-03 -3.2703807897527193e-02 + 8 -6.3143067306376602e-03 6.8279279934009562e-02 -5.7042271672473083e-02 + 9 -8.6930489332897876e-03 8.2216861352901363e-02 -7.6893914125580609e-03 + 10 -9.3144755800066426e-03 3.8499569597259947e-02 2.7529606781198021e-03 + 11 5.2804500838635637e-02 2.5875747055891046e-02 -1.4865374892418792e-02 + 12 7.2893956774622765e-02 7.7752741533393552e-02 4.4400739694041513e-02 + 13 4.0547971860627086e-02 -6.1177829205711645e-02 -2.9343558806279701e-02 + 14 1.8991269769742476e-02 -2.0973215003195933e-02 -2.1324984387632577e-02 + 15 2.0309921550690654e-02 -4.7024408822073233e-03 5.7651185899111564e-02 + 16 1.8914223047158951e-02 -2.5831678924168183e-02 7.6531188077506029e-03 + 17 6.6353443641697887e-02 -5.7939298307534061e-02 9.7009521457767173e-02 + 18 -4.5729205247653781e-03 -2.0482711369993946e-02 -9.0851462677532038e-02 + 19 -3.2575206321134267e-02 -6.3729269826432927e-02 3.4224628050706814e-02 + 20 4.6863004675641293e-02 -7.1915663877896441e-02 -2.8514796809304001e-02 + 21 9.1176963407285011e-02 4.0482580025091822e-02 8.2800182454763380e-02 + 22 -1.5821070045599489e-02 3.6679318820770072e-02 -1.0990427277642323e-01 + 23 -6.0448877083042050e-02 6.1085498323165330e-02 4.4944501587283893e-02 + 24 3.5399468725146155e-02 9.0759854530662057e-02 -5.8367029698921151e-02 + 25 5.8972908998310897e-02 9.5580604398649335e-02 1.4299197144599513e-02 + 26 4.1503176150201701e-02 7.8221952049757570e-02 -2.2495920067716873e-02 + 27 -3.4428073844030543e-02 9.7687976296158330e-02 5.2922865512013782e-03 + 28 -8.7089297340188221e-03 7.0670577171391205e-02 -2.1553126898674058e-03 + 29 -2.0597163088988034e-02 -7.3533943951860803e-02 2.7614101521226501e-02 + 30 5.3921359455169848e-02 -8.2843789581640959e-02 -5.3726029596535697e-02 + 31 6.5674580274108219e-04 -8.5848451525815911e-02 2.6791331575120491e-02 + 32 -1.8182385440940294e-02 -9.6647023485251782e-02 -7.2840331885416255e-03 + 33 -6.4773989514771563e-02 -7.3097102120596611e-03 1.0174477176510516e-01 + 34 3.3624790324044168e-02 -7.4228231230884206e-02 -9.0424692719955513e-02 + 35 1.6745851593064937e-02 -9.8063908000130151e-02 -4.8279841746140528e-03 + 36 -1.0254699788132282e-01 -7.6409336173514752e-02 -2.4839064775510206e-02 + 37 -6.7416392015291066e-02 6.5456628286497315e-02 1.2702532825713972e-01 + 38 1.2927026179754098e-02 3.9065297106547325e-02 -9.7450132513063586e-02 + 39 8.3640897504650702e-03 8.6891564762871382e-02 7.7411915344560711e-03 + 40 -3.7546120356255111e-02 7.0191759961427791e-02 8.9486065950751328e-03 + 41 -6.2536758626536015e-02 7.2269491520830093e-03 -2.0295967994317932e-02 + 42 -7.3148114867252506e-02 2.4276910406369985e-02 -3.6190526578689652e-03 + 43 -5.2647647764465282e-02 -2.3764024282820866e-03 -5.8223764794748861e-02 + 44 -6.1454449111988101e-02 4.4936177446245423e-02 7.9762617447782957e-02 + 45 -5.6022300297678254e-02 -5.7427912458988858e-02 1.9791194349347698e-02 + 46 -3.0760778377033417e-02 -1.2785394250906770e-02 -2.4257234628049240e-03 + 47 -5.4653983731024092e-02 4.5218774360416894e-02 -5.2497767746572950e-02 + 48 -8.4991402930741825e-02 -2.8770883609063033e-02 2.9276522518816305e-02 + 49 5.7450237304188648e-02 -1.8969571229690667e-03 1.1737524100379991e-01 + 50 2.4546797925516055e-03 -1.3901059129223358e-02 -2.1611239052216527e-02 + 51 5.6247485979350892e-02 -1.1274748928891561e-01 -6.4767518013126107e-02 + 52 8.4559292696361865e-02 -5.4170145451884186e-02 -4.0106246452689343e-02 + 53 2.6565931192563248e-02 2.9759292239870921e-02 1.0378405418685320e-01 + 54 1.6380887820249206e-02 2.7405224495898023e-02 -7.8151541008619207e-02 + 55 2.3094968072966106e-02 6.0900266060331221e-02 -2.5222203202622657e-02 + 56 3.7720086132907706e-02 7.2792364462542128e-02 -2.5243389296872941e-02 + 57 3.1203732198719129e-02 4.1051307030858859e-02 4.6835445355358045e-03 + 58 1.6267815712134766e-02 -1.0588836106583368e-02 2.5716469974094165e-02 + 59 2.7711068810307285e-02 -3.2275977376762827e-02 -9.6630283584678664e-02 + 60 1.6584628187372982e-02 1.5554949993257568e-02 7.9431307360772044e-02 + 61 2.3538527342878021e-02 -5.9194976055690678e-02 -8.6393420990850227e-03 + 62 -2.7970723698767977e-02 -2.5473281019145567e-02 2.8732152753392037e-02 + 63 3.2519858998487292e-02 6.6513527124251959e-02 -5.9911746878727620e-02 + 64 7.0575065117791755e-02 -7.1297921404307130e-02 1.7134222220285423e-02 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 2.4013396812039417e+01 2.4038587080915526e+01 2.3982124849509251e+01 -3.1412608059380020e-03 6.4222810562164119e-03 4.4437776364077098e-04 +run_forces: |2 + 1 -5.0554676953596001e-02 -7.8952234844903962e-02 7.6015203185741051e-02 + 2 1.4653046975274669e-03 2.6623027079613393e-02 -2.0332003107583763e-03 + 3 -4.9043860347507351e-02 -2.7223454268720304e-02 3.4926547754950410e-03 + 4 -6.3015703943837709e-02 -1.2357365519455651e-01 -5.9228007991223866e-02 + 5 -5.9535408850136418e-02 5.2600959742240598e-02 9.8626776968730540e-02 + 6 -1.9592010938087739e-02 -1.0139007194828298e-02 -2.3961852724442290e-03 + 7 2.2353999316620354e-02 4.2707819111495737e-03 -3.2766997911699125e-02 + 8 -6.3217585953293451e-03 6.8264967943239371e-02 -5.6935900761960673e-02 + 9 -8.6939478296006178e-03 8.2252577616304196e-02 -7.6765442745710954e-03 + 10 -9.2520734420303008e-03 3.8510060612179403e-02 2.7771510489453116e-03 + 11 5.2798249195752045e-02 2.5833296636392306e-02 -1.4919488887513183e-02 + 12 7.2896663061376182e-02 7.7722542822083213e-02 4.4469821262990969e-02 + 13 4.0492146077050983e-02 -6.1233269989565221e-02 -2.9285567127393691e-02 + 14 1.9014880879144026e-02 -2.0980007335148237e-02 -2.1358122289192857e-02 + 15 2.0281949527193990e-02 -4.6944614828279829e-03 5.7638953191234521e-02 + 16 1.8842274249890378e-02 -2.5828038013589460e-02 7.6582949588428484e-03 + 17 6.6407904110248842e-02 -5.7866471651113721e-02 9.7001582038694356e-02 + 18 -4.5575971264232851e-03 -2.0510965363462870e-02 -9.0834173118221812e-02 + 19 -3.2540353633282254e-02 -6.3734348942077759e-02 3.4147670198413201e-02 + 20 4.6856642403267361e-02 -7.1845656109110673e-02 -2.8453087903690045e-02 + 21 9.1198483513489012e-02 4.0456040325244219e-02 8.2724237699676906e-02 + 22 -1.5827515616499782e-02 3.6717835508106922e-02 -1.0988206395474043e-01 + 23 -6.0404891635343780e-02 6.1122610822875907e-02 4.4883909659115019e-02 + 24 3.5384974247468115e-02 9.0724526886439574e-02 -5.8260751353421049e-02 + 25 5.8967089778018095e-02 9.5608608512041116e-02 1.4336378078231311e-02 + 26 4.1462260215469948e-02 7.8235816267908362e-02 -2.2477804860810986e-02 + 27 -3.4442029535977942e-02 9.7658933442718684e-02 5.2072388664587497e-03 + 28 -8.6769177693747646e-03 7.0648960875290809e-02 -2.1257387586912369e-03 + 29 -2.0560281319879276e-02 -7.3611903002460566e-02 2.7671526860970928e-02 + 30 5.3877407059557542e-02 -8.2852464061086192e-02 -5.3752078041064154e-02 + 31 6.5328666826988679e-04 -8.5868513595220686e-02 2.6748577089113892e-02 + 32 -1.8158502334823648e-02 -9.6712372198453744e-02 -7.2629661714302372e-03 + 33 -6.4799452314711403e-02 -7.2914731339859748e-03 1.0177736025718276e-01 + 34 3.3617270585703143e-02 -7.4186618945256300e-02 -9.0439361895469528e-02 + 35 1.6752288192743908e-02 -9.7972510526048939e-02 -4.8866020974215885e-03 + 36 -1.0251147983350554e-01 -7.6355176637113886e-02 -2.4831135418392408e-02 + 37 -6.7462597134597888e-02 6.5394021709240718e-02 1.2694529019448800e-01 + 38 1.2929796710271529e-02 3.8994605355614442e-02 -9.7336739671720948e-02 + 39 8.4635999523190938e-03 8.6894110512909045e-02 7.7356868351948979e-03 + 40 -3.7505163019207741e-02 7.0213660048650983e-02 8.9460945699273153e-03 + 41 -6.2598251562839963e-02 7.2884473162016655e-03 -2.0317644696043302e-02 + 42 -7.3126950507080402e-02 2.4380690667182077e-02 -3.5635090121536317e-03 + 43 -5.2622265013438203e-02 -2.4186613749311737e-03 -5.8259229228078267e-02 + 44 -6.1444331486899872e-02 4.4879730474314816e-02 7.9765617113806433e-02 + 45 -5.6022329841351658e-02 -5.7456327947534448e-02 1.9836523069240445e-02 + 46 -3.0745625650373313e-02 -1.2840857416773672e-02 -2.4454700198405510e-03 + 47 -5.4639783126269000e-02 4.5185979594480306e-02 -5.2533742932538458e-02 + 48 -8.4993924938626744e-02 -2.8786109125134681e-02 2.9299111868464976e-02 + 49 5.7520419538186825e-02 -1.8482678246085592e-03 1.1735145664332340e-01 + 50 2.4311981109821808e-03 -1.3820720671332042e-02 -2.1639597947624409e-02 + 51 5.6194085834365581e-02 -1.1266756340057525e-01 -6.4725779419413390e-02 + 52 8.4592553770423129e-02 -5.4120362063209547e-02 -4.0062064130499217e-02 + 53 2.6642366357095139e-02 2.9655828700830555e-02 1.0372093359192230e-01 + 54 1.6359783015026878e-02 2.7342299622168435e-02 -7.8017265417875986e-02 + 55 2.3008513571137569e-02 6.0906406463975313e-02 -2.5266727257926155e-02 + 56 3.7674407027315490e-02 7.2731247910848049e-02 -2.5255542410858645e-02 + 57 3.1262626156567448e-02 4.1127916643981820e-02 4.6395218953648116e-03 + 58 1.6262263837561110e-02 -1.0498494977197285e-02 2.5799640803359718e-02 + 59 2.7676436731503815e-02 -3.2314064956416012e-02 -9.6709883903740801e-02 + 60 1.6581188854961092e-02 1.5565580305031544e-02 7.9422566678629417e-02 + 61 2.3565488485380467e-02 -5.9215169795344830e-02 -8.6355579053794887e-03 + 62 -2.7987126948088623e-02 -2.5577094955386258e-02 2.8713732776488261e-02 + 63 3.2534675966115735e-02 6.6465644367479079e-02 -5.9924138787049462e-02 + 64 7.0614333550715974e-02 -7.1281419698761464e-02 1.7145158960806341e-02 +... diff --git a/unittest/force-styles/tests/sph-pair-lj.yaml b/unittest/force-styles/tests/sph-pair-lj.yaml new file mode 100644 index 00000000000..f1938a3bb96 --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-lj.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:35 2026 +epsilon: 5e-09 +skip_tests: single gpu +prerequisites: | + atom sph + pair sph/lj +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/lj +pair_coeff: | + 1 1 0.2 2.0 + 1 2 0.25 2.0 + 2 2 0.3 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 7.4474101499456651e+02 7.4564831296188038e+02 7.4364112768989003e+02 -3.3717915627154776e-01 1.1941971181573532e-01 -1.1600143946933207e-01 +init_forces: |2 + 1 -3.5460922333270615e+00 -1.2377769144173612e+00 1.2098821254045893e+00 + 2 -2.6114623968420316e+00 2.0699914954689085e+00 6.8787814641359102e-01 + 3 -3.3746467864932330e+00 2.5917569856512923e-01 8.9124293587831982e-01 + 4 -4.0885477272373869e+00 -1.9701335327111815e+00 -2.3072150065185117e+00 + 5 -4.5834349780121872e+00 1.7017263613759570e-01 1.7902011851687920e+00 + 6 -2.6145471177619726e+00 -1.0244448938170569e+00 6.1775372690895836e-01 + 7 -2.0707914198569863e+00 -7.8997073202608403e-01 1.1731108079765562e-01 + 8 -2.0940965385588810e+00 9.3495176080811837e-01 -2.2744111104948335e+00 + 9 -2.7368383111037815e+00 1.5799944922889917e+00 -8.8838816055937819e-01 + 10 -3.4534487844612958e+00 -3.0063676886899593e-01 1.0832205809918372e+00 + 11 -4.6626983207968298e-01 -1.7317279227566740e-01 3.8828469086936312e-01 + 12 -6.9174792119490025e-01 1.0145654292038957e+00 1.9791901962611336e-01 + 13 -1.7530726367644824e+00 -8.4827822207623160e-01 -2.0578496066532326e+00 + 14 -1.8234595225586243e+00 5.2249566902595745e-03 3.1201249576142009e-02 + 15 -2.1556429790025287e+00 5.3136147575187165e-01 2.9503249604138833e+00 + 16 -1.7123756771367837e+00 -7.9860655338523934e-02 -4.7657552069345233e-01 + 17 -1.4618166845303995e-01 2.8567914353920898e-01 2.1167398686367354e+00 + 18 -1.8439966787586304e+00 9.0108999018969305e-01 -2.1809935663041289e+00 + 19 -2.7804340402363859e+00 -2.3973286967438479e-01 2.4087046074628402e+00 + 20 -2.8568555088723047e-01 -1.0151585193766388e+00 -1.7703540475738830e+00 + 21 1.3677169890685255e+00 -9.7015174547167293e-04 2.0962716275609341e+00 + 22 -2.1986413459218621e+00 -7.6174937000271559e-02 -2.8993353948416436e+00 + 23 -3.4292536090594519e+00 8.7515119438086897e-01 2.4164563810199242e+00 + 24 -1.0159517764228125e+00 1.2154012591368735e+00 -3.2515979564692712e+00 + 25 1.4724612688803740e-01 2.0838983798585753e+00 -5.1295258666075494e-01 + 26 -2.1031094662723193e-01 1.3949089273249844e+00 3.0391665201890905e-02 + 27 -3.1906801409547105e+00 1.8571372861253193e+00 1.3254813833214367e+00 + 28 -1.8723996030414778e+00 1.3175393013747010e+00 -1.1561657356294033e+00 + 29 -2.8413848516600297e+00 -1.6172382337867135e+00 2.1499653286155185e-01 + 30 -1.5839761008125564e-01 -2.0720957633146164e+00 -1.0552411201376466e+00 + 31 -1.5853934545893891e+00 -1.8622855729692471e+00 2.2560004683269916e+00 + 32 -2.8904446442664020e+00 -1.9965046578165286e+00 -1.7035797030100404e+00 + 33 4.4376093938874989e-01 1.4449294122886631e+00 2.4400137733941856e+00 + 34 3.7072195552327791e+00 -6.5752017224806858e-01 -1.9358561338484612e+00 + 35 2.5386217850749153e+00 -1.8324903431579944e+00 7.5780750104102346e-01 + 36 3.1132846375291034e-01 -8.5803210605167557e-01 -1.7620243276243421e+00 + 37 7.2809278089617524e-01 9.0293707692621794e-01 3.1953608581374331e+00 + 38 2.6288222149137725e+00 1.7129188303205112e-01 -2.5109586271735802e+00 + 39 3.2629296904169021e+00 1.4418797273372692e+00 1.2897816376688618e+00 + 40 8.3770513435436023e-01 1.1090277790234491e+00 -3.8588353252749141e-01 + 41 1.2780436601200551e-01 -1.6260079600160822e+00 -1.4423318149028876e+00 + 42 3.5870793497860248e-01 -1.1889347563482657e+00 1.0638577421027238e+00 + 43 4.1397621230448522e-01 -1.4775345021401196e+00 -1.1343007349105423e+00 + 44 9.5233259427084582e-01 -1.9274644996143978e-01 1.6945749243007415e+00 + 45 9.4725056850492784e-01 -8.1065521951949826e-01 -4.2263158748494373e-01 + 46 1.3298555929449205e+00 9.0025796006456882e-01 1.0303746325162928e+00 + 47 1.0914121065553581e+00 2.7458115150851041e+00 -7.6563600782625718e-01 + 48 -1.4657191545888398e-01 6.6768652809717999e-02 -9.1831699949152412e-02 + 49 3.8031022498174627e+00 1.1852633020527197e+00 1.7813455716308138e+00 + 50 1.5430840030263027e+00 4.5702652083755202e-01 7.0091984650109795e-02 + 51 2.8929491825786218e+00 -1.7127199978875343e+00 -6.1087412339105907e-01 + 52 3.4323293046464878e+00 -4.4563080694857571e-01 -1.4967342792188894e+00 + 53 2.4927228912585417e+00 4.7233109046010746e-02 1.9225875576896483e+00 + 54 2.4350634313110997e+00 -3.2641705046419661e-01 -1.0698101641651192e+00 + 55 2.0009026869627502e+00 7.8811492429873364e-01 -4.1033693772150749e-02 + 56 2.8818037165794750e+00 7.4214970281179682e-01 -1.5680772481303782e+00 + 57 3.4187787489411026e+00 -2.0695803339318675e-01 -1.0020514844053672e+00 + 58 2.2469220275907009e+00 -1.2692347484210154e+00 1.3971733855127644e+00 + 59 3.3409121375952644e+00 -2.0457438402778845e+00 -1.5425382154542087e+00 + 60 1.9534441918795669e+00 -3.6050315538625471e-01 1.4951007695584770e+00 + 61 2.3332186288138126e+00 -5.7355826846336411e-01 -9.1737995278667495e-01 + 62 1.4102951110096456e+00 5.9786868854207198e-01 1.6327858399409416e+00 + 63 3.0378014023525814e+00 2.3427548572880710e+00 -7.9718687506995778e-01 + 64 3.9540899288889171e+00 -5.5043591038884765e-01 -5.6931839639792536e-01 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 7.4473957838589308e+02 7.4564813230364348e+02 7.4364084787955983e+02 -3.3878468654839711e-01 1.1801835868993425e-01 -1.1723613514255982e-01 +run_forces: |2 + 1 -3.5485161700475505e+00 -1.2357430474153608e+00 1.2084877406002925e+00 + 2 -2.6101054670390065e+00 2.0684309007739667e+00 6.8768322121683934e-01 + 3 -3.3738120324504846e+00 2.5721011777251857e-01 8.8953960203160687e-01 + 4 -4.0893640769415898e+00 -1.9687399126785023e+00 -2.3046171994757949e+00 + 5 -4.5843912013796499e+00 1.6907271755268138e-01 1.7877349818736592e+00 + 6 -2.6151008211648685e+00 -1.0229754201015369e+00 6.1823162042704727e-01 + 7 -2.0724034256107267e+00 -7.8745439724881638e-01 1.1578799509487858e-01 + 8 -2.0941349956094895e+00 9.3446169852589711e-01 -2.2716196343988013e+00 + 9 -2.7368053996855322e+00 1.5810619599075690e+00 -8.8805977005063497e-01 + 10 -3.4509523576267327e+00 -3.0020286914865935e-01 1.0837044020117523e+00 + 11 -4.6629065407857384e-01 -1.7424637273005050e-01 3.8681074201550292e-01 + 12 -6.9169269851801918e-01 1.0137363817553804e+00 1.9987607076715275e-01 + 13 -1.7550232350719046e+00 -8.5013515535766704e-01 -2.0556748730304140e+00 + 14 -1.8224196758427500e+00 4.9135290506612250e-03 3.0161262476768425e-02 + 15 -2.1566978063413176e+00 5.3147352248621593e-01 2.9499363375658758e+00 + 16 -1.7145806531401533e+00 -7.9834625118899716e-02 -4.7648351024405589e-01 + 17 -1.4455823075781710e-01 2.8877406288044966e-01 2.1162975050681956e+00 + 18 -1.8435357161283292e+00 8.9991844924513598e-01 -2.1803226128741295e+00 + 19 -2.7791885876916460e+00 -2.3930690773655150e-01 2.4061165311371688e+00 + 20 -2.8591971879958678e-01 -1.0124730645780642e+00 -1.7683153112866212e+00 + 21 1.3682342665076284e+00 -1.9827815423968248e-03 2.0936491465000877e+00 + 22 -2.1986901237346954e+00 -7.4670437161783676e-02 -2.8982423270073232e+00 + 23 -3.4279898709776209e+00 8.7633707674914119e-01 2.4143269757052170e+00 + 24 -1.0160737700022402e+00 1.2140005799561855e+00 -3.2479473768443103e+00 + 25 1.4702242981503777e-01 2.0850045219689815e+00 -5.1150380183024979e-01 + 26 -2.1191453564540264e-01 1.3953821557051764e+00 3.0945360314024256e-02 + 27 -3.1910981262779394e+00 1.8558437024151735e+00 1.3222771226933321e+00 + 28 -1.8714285598361187e+00 1.3167926798046368e+00 -1.1548572438205005e+00 + 29 -2.8398843860446132e+00 -1.6202542483046551e+00 2.1731170207447770e-01 + 30 -1.6002653119291654e-01 -2.0727685306127279e+00 -1.0564472713588042e+00 + 31 -1.5854799951498979e+00 -1.8626418781046346e+00 2.2542938661349137e+00 + 32 -2.8895177706775885e+00 -1.9984866994043613e+00 -1.7028261608883679e+00 + 33 4.4302580762752541e-01 1.4454496230728628e+00 2.4407541413382119e+00 + 34 3.7069110741863445e+00 -6.5622413115751255e-01 -1.9359928186537187e+00 + 35 2.5389521746548080e+00 -1.8294042954582324e+00 7.5578825526199545e-01 + 36 3.1230923052433468e-01 -8.5625060870305347e-01 -1.7617532324281031e+00 + 37 7.2633444095612432e-01 9.0062531065631468e-01 3.1922211301446111e+00 + 38 2.6287295599657408e+00 1.6882187324258346e-01 -2.5068744535815704e+00 + 39 3.2652965534512886e+00 1.4417654331633281e+00 1.2894765336448719e+00 + 40 8.3865976768724526e-01 1.1097183692514057e+00 -3.8563392658875706e-01 + 41 1.2587245418676046e-01 -1.6233823049356000e+00 -1.4429603498625312e+00 + 42 3.5923782245300878e-01 -1.1845221751715282e+00 1.0655362112498823e+00 + 43 4.1491100452331625e-01 -1.4788378118616534e+00 -1.1355270833632456e+00 + 44 9.5270508251514119e-01 -1.9481793702302957e-01 1.6944112386832990e+00 + 45 9.4730053605149356e-01 -8.1189025926824254e-01 -4.2043283267312070e-01 + 46 1.3306094463627811e+00 8.9815965001337994e-01 1.0295192384223419e+00 + 47 1.0920758598126878e+00 2.7440303060441611e+00 -7.6725140173257467e-01 + 48 -1.4630511296334087e-01 6.6332602247539896e-02 -9.0966959092465549e-02 + 49 3.8047123056130343e+00 1.1865299865342838e+00 1.7808293910064439e+00 + 50 1.5425343236280726e+00 4.5906543141185679e-01 6.9480733120893312e-02 + 51 2.8916857730588381e+00 -1.7109876384835132e+00 -6.1014427164121177e-01 + 52 3.4329202711425637e+00 -4.4448199952570949e-01 -1.4955541581538210e+00 + 53 2.4949386488492475e+00 4.4607542275147516e-02 1.9206974702134829e+00 + 54 2.4342330779160699e+00 -3.2804528459346965e-01 -1.0663921106617766e+00 + 55 1.9983924189093898e+00 7.8819614132664484e-01 -4.2101163935381242e-02 + 56 2.8802144653776396e+00 7.4103041315031581e-01 -1.5683255933434570e+00 + 57 3.4203841264341177e+00 -2.0479691248624599e-01 -1.0028700929725261e+00 + 58 2.2465524367627090e+00 -1.2664616876138388e+00 1.3993023662311470e+00 + 59 3.3396090986929572e+00 -2.0464312774168345e+00 -1.5444845814983217e+00 + 60 1.9535232536390854e+00 -3.6039172622474824e-01 1.4946661533059336e+00 + 61 2.3337690033785967e+00 -5.7434751785198590e-01 -9.1710674642007883e-01 + 62 1.4093416141692543e+00 5.9512954249468253e-01 1.6321585651967399e+00 + 63 3.0383535177723360e+00 2.3415830424389616e+00 -7.9771737683932664e-01 + 64 3.9545498598029303e+00 -5.5026940885336484e-01 -5.6900736697664145e-01 +... diff --git a/unittest/force-styles/tests/sph-pair-rhosum.yaml b/unittest/force-styles/tests/sph-pair-rhosum.yaml new file mode 100644 index 00000000000..90a75d81635 --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-rhosum.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:55 2026 +epsilon: 6e-12 +skip_tests: single +prerequisites: | + atom sph + pair sph/rhosum +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/rhosum 1 +pair_coeff: | + 1 1 2.0 + 1 2 2.0 + 2 2 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +init_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +run_forces: |2 + 1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +... diff --git a/unittest/force-styles/tests/sph-pair-sdpd_taitwater_isothermal.yaml b/unittest/force-styles/tests/sph-pair-sdpd_taitwater_isothermal.yaml new file mode 100644 index 00000000000..aa28b50acbf --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-sdpd_taitwater_isothermal.yaml @@ -0,0 +1,161 @@ +--- +lammps_version: 4 Jul 2026 +tags: single_thread +date_generated: Fri Jul 10 17:13:24 2026 +epsilon: 6e-12 +skip_tests: nofdotr +prerequisites: | + atom sph + pair sdpd/taitwater/isothermal +pre_commands: | + variable newton_pair delete + variable newton_pair index on + comm_modify vel yes +post_commands: "" +input_file: in.sph +pair_style: sdpd/taitwater/isothermal 1.0 0.2 45217 +pair_coeff: | + 1 1 1.0 10.0 2.0 + 1 2 1.0 10.0 2.0 + 2 2 1.05 12.0 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 5.3642189130192560e+02 3.3909238758264797e+02 5.5143847768197622e+02 7.7402335782141975e+01 -1.5593766075950140e+02 1.2400117794701691e+02 +init_forces: |2 + 1 -1.3337962627013974e+02 -2.0156232896108065e+01 1.0228795426711986e+02 + 2 -2.7775103978547207e+01 3.7608177995011438e+01 -1.6432317549608999e+01 + 3 -6.2371946621308219e+01 3.0277712583815806e+01 -2.2371218032843807e+01 + 4 -1.4828423942410481e+01 -8.4074524416065131e+01 -7.0536144210802036e+01 + 5 -8.2959265709456247e+00 5.4901578756747274e+00 -4.0162130886276600e+01 + 6 2.5434432427307101e+01 2.5674446333054469e+01 5.5172541132223877e+01 + 7 6.2100290136095779e+01 4.9824013570161263e+01 2.7822164792062200e+01 + 8 -4.4421542939742189e+01 3.4518486029717224e+01 8.0257583827814258e+01 + 9 -4.3043676427029936e+01 8.1895890742371776e+01 -1.7393206803295190e+01 + 10 1.0150173633949856e+02 -7.2199316724577983e+01 3.7405992735501501e+00 + 11 -6.7644316955600829e+01 -4.9721331396349086e+01 -1.8685000297685420e+01 + 12 -2.5619662628920636e+01 5.6909065230597342e+01 -8.9194005834403427e+01 + 13 1.1478538632725946e+02 -1.2465046043488601e+02 4.2083889031310136e+01 + 14 2.0169458106718423e+01 4.2899132001273060e+01 -5.8717341213086613e+01 + 15 2.1213512852969503e+00 -5.7155402776537493e+01 6.9721241833696823e+01 + 16 3.6940204404307551e+01 2.6107247363734928e+01 6.7475007920415862e+01 + 17 -5.1123678827989110e+01 2.3603757900936884e+01 -1.2179733184866413e+01 + 18 -4.2101538899681216e+01 3.0361669630034960e+01 6.5126597008685252e+01 + 19 -1.2317812832418026e+02 5.3895841459842003e+01 1.3799700992392786e+01 + 20 -5.8411491941162133e+01 -2.5351065856845967e+01 -2.0776109610703852e+01 + 21 2.2221312373785935e+01 -1.0591865579987822e+01 4.2626961729805863e+01 + 22 6.3759287398774944e-01 -3.6042599340831387e+01 4.2762539678502478e+01 + 23 1.5858774152503843e+01 1.1280749542851369e+00 -4.5427659452011582e+01 + 24 -9.1902099959018528e+01 -7.5589887753530178e+01 2.1759912661493175e+01 + 25 6.2749921921905610e+01 -4.6191530299916607e+01 -1.6189657870742860e+00 + 26 -3.0435184817963377e+00 3.6749693821240648e+01 2.4715229908934425e+01 + 27 3.6723669746795238e+01 -5.5499396902507527e+01 -6.2750823554662993e-01 + 28 -3.5907742418369708e+01 2.0936958030665327e+00 -4.8016365957189869e+01 + 29 -1.0367582179218940e+02 -1.0124687440671390e+02 -6.8011547728866319e+01 + 30 3.2188462091700032e+00 2.9527096331494558e+01 -9.9360535104419689e+00 + 31 -2.4737497147760394e+01 -7.1797980789924523e+01 -3.8327154223934187e+01 + 32 5.7464518661128547e+00 9.1662798218391956e+01 4.6905137580882368e+01 + 33 7.2311921630922001e+01 7.1706196481080951e+01 2.6475690516831584e+01 + 34 8.5290222884171811e+01 -8.9151359699616783e-01 -7.9674001755889094e+01 + 35 6.4382755684467455e+01 8.6063648069660161e+01 1.0508098914936585e+02 + 36 2.5455615336916047e+01 -3.1802494811394268e+00 -9.0188775890950794e+01 + 37 4.4249327596735100e+01 3.6957848373221587e+01 -6.5349960404556967e+01 + 38 3.7960924594125458e+01 -4.1961225370924282e+00 2.9517830783339040e+01 + 39 -2.4227914089659691e+01 6.3033136335332358e+01 1.2064202293686770e+02 + 40 9.2825468416943266e+01 -1.0840972080894795e+02 -7.9374153462309422e+00 + 41 -7.6007274040889271e+01 1.1399458967547579e+01 -5.7333965533300130e+01 + 42 -2.7648966914608838e+01 5.8353504516479120e+01 -6.9495557241172863e+00 + 43 -8.0747924487291598e+01 2.2352654305599280e+01 -9.0515874526722328e+01 + 44 6.7878513294049867e+01 -5.1596950878015704e+01 -6.0245726488253544e+00 + 45 8.7224380973801203e+01 -2.5136240776683632e+01 -2.1135608144484683e+00 + 46 -1.8335254553274414e+01 -4.9444107207636250e+01 -2.4662149220239378e+01 + 47 2.3992595765907666e+01 8.5110979262199194e+01 -7.4369125293849758e-02 + 48 -5.0744226348144764e+01 7.3553189046721013e-01 4.6245813141082856e+01 + 49 5.8909377406606879e+01 8.1195954490224409e+01 1.7030164351337831e+00 + 50 1.2827301320345388e+00 -3.8441889223448840e+01 -5.4929793850815642e+01 + 51 3.8167819530410895e+01 1.0065873404263371e+01 9.0312110031423813e+00 + 52 -2.0972964707376647e+01 -7.6890312193381618e+01 -4.0207393792845991e+00 + 53 3.3067589597702778e+01 6.5743128878221569e+01 2.2106827689149100e+01 + 54 -1.1575908702180186e+01 -1.8012874364111063e+01 -6.9129705058893791e+01 + 55 -5.2054046896095961e+01 1.3175718169086078e+01 -2.9551921359108277e+01 + 56 7.7140979155496098e+01 7.3279897839220496e+00 -9.1937068550718415e-01 + 57 8.6407416465495530e+01 -2.5022809858419723e+00 5.7627778190091426e+01 + 58 2.8651020477235452e+01 -9.5391273529321268e+00 1.0331537341967984e+01 + 59 3.8187721699099527e+01 -5.5038727011592854e+01 -1.2677066112671734e+02 + 60 5.4744839958877350e+01 1.1061999292705958e+02 -8.7379639122912121e+00 + 61 -5.4256733581822765e+01 -9.3689392567970231e+01 -2.0902213906679226e+01 + 62 -1.3497825213046332e+02 3.2245927881627800e+01 8.5093345471621774e+01 + 63 -3.4527315899221790e+01 -3.2888689148434757e+01 -1.7137378116060166e+01 + 64 1.9197877706077236e+01 -1.6187833871690231e+01 1.2122328660708624e+02 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 4.4698539658755180e+01 5.6865577263235377e+02 1.6271978097769127e+02 -1.0149656213009560e+02 1.2842768767893847e+02 -1.8938199600759546e+02 +run_forces: |2 + 1 -6.7403554549827732e+01 -9.6206300508122382e+01 -3.3885045025460379e+01 + 2 6.4055137215012659e+00 -1.7126119197253953e+01 9.2873381486807148e+01 + 3 2.5048933821573470e+01 -9.4631866185052687e+00 3.2544783814262161e+01 + 4 -8.2953042387147576e+01 6.8060565398005650e+01 -4.7176914385575138e+01 + 5 3.3770132775537576e+01 -4.3754308789444686e+01 4.0855324597654885e+01 + 6 -6.8294430683492521e+01 1.8782265728290128e+01 3.8152582792768847e+01 + 7 2.1415976699945048e+01 -1.9022876592027362e+00 7.1003783054680127e+00 + 8 4.1772923134209691e+01 -7.1215399943158610e+00 -6.7380639903984871e+01 + 9 2.7996588236112103e+01 5.5397808077487966e+01 -3.9206127008624563e+00 + 10 4.3361485102966242e+00 -4.3809659966835341e+01 3.7197262040334884e+01 + 11 -1.0757591890419562e+02 8.3406855035134100e+01 -7.2975513946951942e+00 + 12 9.8898233856478566e+00 -3.3441784287651721e+00 5.4706507230455074e+01 + 13 2.9226597542809195e+01 1.2794166516573853e+01 -7.7680515315692986e+00 + 14 6.6140834288070167e+01 -3.7996957417948494e+01 3.7269480480496444e+00 + 15 -1.7745390449993529e+01 -4.8379249548301274e+01 6.7006089195340493e+01 + 16 -5.0955516587471834e+00 -1.9135562236516868e+01 -7.3907144307655969e+01 + 17 2.5988813414073135e+01 8.8023700560616504e+01 8.7754963150752786e+01 + 18 1.1325769961871748e+02 3.3557193793143174e+00 4.4191262668260840e+01 + 19 6.2127497865071398e+01 -7.8372811712015789e+01 4.7177768128441571e+00 + 20 -1.9871179776365810e+01 6.7894547391790667e+01 -6.6142697891996946e+01 + 21 -3.8021095989150837e+01 3.8962882391914917e+01 -6.5865520718250181e+01 + 22 1.8136509338851049e+01 -4.0236629668850554e+01 -1.1375950641519481e+02 + 23 -6.7781157497848255e+01 3.8895158990970259e+01 5.9879753095486414e+01 + 24 -3.0900537189732901e+01 4.3029355558125815e-02 -1.8308462741060733e+01 + 25 7.7380647357835130e+01 -3.9465605751178181e+01 3.6015899815321056e+01 + 26 -1.4596652309951658e+01 3.4986409005361821e+01 -8.7875115815475624e+01 + 27 3.3657199915262133e+01 -1.0391065927267704e+02 -1.2044973737168789e+01 + 28 2.4008640008049237e+01 -2.4176973405447937e+00 -7.1219473049335647e+01 + 29 3.6078439833987659e+01 4.8793835977637642e+01 -1.4132110175762332e+01 + 30 -5.2441052605028304e+01 -2.4423425331902440e+01 -5.1845946126199010e+01 + 31 -4.7583857454062674e+01 4.5652090655136426e+01 -6.2395130228039548e+00 + 32 -1.1225831872048373e+02 2.5718516139538156e+01 1.5069838675037147e+01 + 33 -2.0807137440031404e+01 -7.0575288935533891e+01 4.1406219885184427e+01 + 34 3.2784908964579792e+01 5.4990032627030132e+01 2.2743253281375075e+00 + 35 1.0534230630396024e+00 -5.2432128008652086e+01 -3.5617106025581847e+01 + 36 -1.0021804003507830e+01 6.1414600715586232e+01 8.3116436153555426e+00 + 37 3.5937627055345047e+01 -5.5116719075945880e+01 -9.5900139210772242e+00 + 38 -2.9284999803174784e+01 5.2744288817830423e+01 3.6338919796047961e+01 + 39 8.1044456994986476e+01 1.4424626846631481e+01 1.1867896021643847e+00 + 40 -4.6752634146238323e+00 -1.0439164676164200e+01 4.9795803102187897e+01 + 41 -8.2528339722962329e+01 6.9259654393002961e+01 5.8975042674471553e+01 + 42 3.2275824974614054e+01 5.2086895020258510e+01 5.0766822585308930e+01 + 43 3.3819343384841583e+00 -6.8840228686682750e+01 2.5476707390238960e+01 + 44 -1.4962846838392618e+01 -7.8006270198595175e+01 6.5164636705683193e+01 + 45 -5.4736389993932200e+01 -1.6859601777553326e+01 1.0381639924919946e+02 + 46 -3.5359734238268103e+00 2.7833321297899396e+01 -5.6462023875814449e-01 + 47 -8.1863794118669006e+01 -2.0028300233307386e+00 -1.1008046566873664e+00 + 48 2.6118935195772242e+01 2.6356783039983522e+01 -4.7980323452309989e+01 + 49 3.9416545892112495e+01 5.5283950668120404e+01 -2.4605011179837053e+00 + 50 5.2350197466159116e+00 -4.5828741383757851e+01 2.7756726015535136e+01 + 51 -6.3303973056605315e+01 -3.0004322534407905e+01 -4.8684744960659216e+01 + 52 5.9196320547547927e+01 -1.8865026075627579e+01 -5.1008518046847932e+01 + 53 -5.1598338396753078e+01 2.7944737470613976e+00 -6.0760100385833319e+01 + 54 3.8843425333288998e+01 -1.0837963964320622e+01 -7.1701385300674971e+01 + 55 9.5626697332514397e+01 -8.6196522212318641e+01 -2.6279647050115997e+00 + 56 5.0599024902034406e+00 -8.4290565219287172e-01 1.4465057416676721e+01 + 57 -5.4406514017118241e+01 5.1726133452398138e+00 6.3804869499575517e+01 + 58 1.1754208497093719e+01 2.5041273354296560e+01 2.6554379839114951e+01 + 59 5.0367816204986340e+01 -2.8218462506578081e+01 -5.9596733483353063e+01 + 60 2.2519600291662258e+01 6.0630108219842214e+01 -1.0071185228006604e+02 + 61 4.8613775264054389e+01 -3.2582966456122207e+01 -1.4638630576021683e-01 + 62 -3.5203319180063737e+01 1.0590715787204317e+02 -4.3300521266738301e+01 + 63 1.7731637254671845e+01 2.7732214481106368e+01 9.0766919559808315e+01 + 64 -2.4150545323433825e+01 -4.7724223439098459e+01 -4.0331589031396682e+00 +... diff --git a/unittest/force-styles/tests/sph-pair-taitwater.yaml b/unittest/force-styles/tests/sph-pair-taitwater.yaml new file mode 100644 index 00000000000..00565dca662 --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-taitwater.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:38 2026 +epsilon: 5e-09 +skip_tests: single gpu +prerequisites: | + atom sph + pair sph/taitwater +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/taitwater +pair_coeff: | + 1 1 1.0 10.0 0.2 2.0 + 1 2 1.0 10.0 0.25 2.0 + 2 2 1.05 12.0 0.3 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 2.0978358657914703e+02 2.1020653561899681e+02 2.0927921991036948e+02 -3.8750788102874056e-01 -4.6516091467860107e-02 7.1163133609940758e-03 +init_forces: |2 + 1 -4.3705952236168439e+00 7.2711898967090693e-01 -1.0819475161432852e+00 + 2 -4.8183472768084945e+00 1.3116729535048000e+00 1.0211731686387122e+00 + 3 -4.4042813727619743e+00 1.4389341152354242e+00 1.5665329676237374e+00 + 4 -4.4432305597315693e+00 2.0186367607916473e+00 -1.0857774334667978e+00 + 5 -5.3438138085105651e+00 -1.9498404786321994e+00 -1.5702649037790672e+00 + 6 -4.0213826194213684e+00 -1.3204897103732312e+00 1.2380384041075945e+00 + 7 -4.8831154046827088e+00 -1.1670709184484278e+00 1.9833872761566560e+00 + 8 -3.7589655465585050e+00 -1.1755845753662075e+00 -1.8220707985205411e+00 + 9 -4.2944936771136275e+00 -3.0201640149016684e-01 -1.2328904356140344e+00 + 10 -5.1825234195399830e+00 -1.5340299649270190e+00 1.4801494592633759e+00 + 11 -3.0322706906664392e+00 -1.3315520790730084e+00 1.5015271203026817e+00 + 12 -4.9766428681430996e+00 -1.7682000170819436e+00 -1.9025632797996885e+00 + 13 -4.8374139825041134e+00 1.2967601604744448e+00 -1.7346927464330264e+00 + 14 -3.5754945324496732e+00 1.0313726804786842e+00 7.5552973066973173e-01 + 15 -4.7277849385821904e+00 9.2095751752826571e-01 1.8403406975851202e+00 + 16 -3.8980750785389811e+00 1.0466658140686869e+00 -9.5455375849802149e-01 + 17 -3.3488735562268066e+00 2.1016301354802573e+00 -7.2925177035685662e-01 + 18 -3.1738781075318681e+00 1.7488045923827209e+00 -2.8197625048690511e-01 + 19 -3.3627712542597012e+00 1.6918785311886353e+00 2.6002453332532833e+00 + 20 -2.7152830073712413e+00 7.3189613954679977e-01 -1.8503208676532539e+00 + 21 -1.3706391378186336e+00 -1.3206430901180910e+00 2.2441176060003154e-01 + 22 -3.1399261952312618e+00 -1.5035610064914946e+00 -8.5093883398632192e-02 + 23 -3.7788236202841934e+00 -6.7098959771120104e-01 2.4338358234951603e+00 + 24 -3.6600683374758214e+00 -1.6633075914773998e+00 -2.7729311906081069e+00 + 25 -2.5728504484579773e+00 -1.4182608515049877e-01 -1.3431580195651716e+00 + 26 -2.2305978432595603e+00 -1.0624024242607466e-01 7.8850577424185808e-01 + 27 -4.0697890673280721e+00 -7.7050288752764740e-01 1.9523639814560532e+00 + 28 -2.9852207405844084e+00 -3.7077425388208068e-01 -1.7760691267482038e+00 + 29 -3.8329711239450206e+00 -1.2931076094465271e-01 -5.7867026316733572e-01 + 30 -3.2266119637774642e+00 4.6039583727281508e-02 4.4269575856115040e-01 + 31 -2.7554625532028609e+00 2.7188484569660498e-02 2.5035286341980054e+00 + 32 -3.7540855175219154e+00 9.7684392112562213e-01 -2.0942825342553313e+00 + 33 3.6844794681048678e+00 2.1031104363156055e+00 1.6704642168521924e-02 + 34 4.9520816688920695e+00 1.5920508020217401e+00 5.6618199011377812e-01 + 35 4.1516678317021007e+00 4.7346717762462731e-01 1.5655876111109857e+00 + 36 5.7502440938934845e+00 1.3492144697851833e+00 -1.6500950324111925e+00 + 37 4.6589037846173955e+00 -1.0642504008551041e+00 -5.0369693498217971e-01 + 38 4.3781501963160254e+00 -1.1584971522135854e+00 -4.2900236506738898e-01 + 39 5.7277621303460187e+00 -1.1793837816992241e+00 1.7890135358388879e+00 + 40 3.4798126057652610e+00 -7.6897896399438814e-01 -8.4255120706166453e-01 + 41 2.7925903041500479e+00 -2.4400814386979572e+00 -1.7685234619756116e+00 + 42 4.3015751091353494e+00 -2.2842582423211768e+00 1.9161275940085991e+00 + 43 3.1767521242921974e+00 -2.0542260724512875e+00 2.7967942323857192e-01 + 44 4.7980365678097447e+00 -1.9414504758589179e+00 -5.8868318542441733e-01 + 45 4.4644814765664371e+00 1.1026385237262444e+00 -1.6821684868415470e+00 + 46 3.4459819510104608e+00 1.7861528893215626e+00 1.5460695983156851e+00 + 47 4.6704852121606413e+00 2.0655925174112246e+00 1.0719540304208905e+00 + 48 3.2363869831540830e+00 1.3075006243865794e+00 -9.3239869148684007e-01 + 49 3.8773457140377570e+00 1.2534035751621895e+00 -2.5810811668002831e+00 + 50 2.8761785550790844e+00 1.1835352389470761e+00 1.0989765028570211e+00 + 51 2.5514790896153148e+00 2.0690705528789786e+00 2.1698938382053350e+00 + 52 2.7737152969899412e+00 1.4182703322767776e+00 -1.0021589027181657e+00 + 53 3.2757779516367984e+00 -1.1008539976524876e+00 -1.2200553561570728e+00 + 54 3.4619859991563753e+00 -1.4883353448763468e+00 1.9642652174258139e+00 + 55 2.7277648419678835e+00 -1.1940865247177070e+00 1.0905902577054458e+00 + 56 3.2783085614551046e+00 -1.8854715163351601e+00 -1.3921556475459476e+00 + 57 4.1785466493348586e+00 -1.6914360867158007e+00 -2.1204846652796721e+00 + 58 3.0669570956138199e+00 -1.6958325484891195e+00 1.4579435832247909e+00 + 59 4.2565686650150010e+00 -1.4462696579905576e+00 1.9153869439651665e+00 + 60 2.8188006364817229e+00 -1.3368674273718806e+00 -6.4401300106602810e-01 + 61 2.7695948473330616e+00 1.4383947878900516e+00 -1.3954472727876683e+00 + 62 3.7690018330288280e+00 2.0786154242380586e+00 1.2067014556867035e+00 + 63 3.8773938530220664e+00 1.3416638812695352e+00 1.0352456935163146e+00 + 64 3.3174723762231397e+00 2.2771376803327690e+00 -1.3735576518557195e+00 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 2.0978118245571849e+02 2.1020485491653724e+02 2.0927781749926567e+02 -3.8737650786043171e-01 -4.7221210058527363e-02 6.7550204334230488e-03 +run_forces: |2 + 1 -4.3718003823337002e+00 7.2805014626751041e-01 -1.0820273068722353e+00 + 2 -4.8186534584836895e+00 1.3115317468276868e+00 1.0217826732132247e+00 + 3 -4.4040654597401261e+00 1.4386188211929556e+00 1.5664004892333077e+00 + 4 -4.4431708657585922e+00 2.0188140498597598e+00 -1.0866710031611793e+00 + 5 -5.3444813541930190e+00 -1.9498155975335099e+00 -1.5699243897145843e+00 + 6 -4.0220632414748456e+00 -1.3200868917494368e+00 1.2379999958666406e+00 + 7 -4.8832089127116607e+00 -1.1677476017943014e+00 1.9839188027124066e+00 + 8 -3.7591837455203847e+00 -1.1758599324780592e+00 -1.8219181250474703e+00 + 9 -4.2948134869263646e+00 -3.0148376132548704e-01 -1.2327129937596952e+00 + 10 -5.1819469621219989e+00 -1.5339497534274460e+00 1.4798611830385839e+00 + 11 -3.0321691207583523e+00 -1.3315781698456064e+00 1.5013201595233341e+00 + 12 -4.9771575492251374e+00 -1.7679246637120856e+00 -1.9028461975890607e+00 + 13 -4.8382720435345199e+00 1.2961289099897251e+00 -1.7340631663250781e+00 + 14 -3.5748433604218328e+00 1.0311159332116790e+00 7.5512272066170372e-01 + 15 -4.7284051404812395e+00 9.2067101463802570e-01 1.8406070649924884e+00 + 16 -3.8993136492681573e+00 1.0465295324465351e+00 -9.5473431593454472e-01 + 17 -3.3482544496327620e+00 2.1034004538980238e+00 -7.2923301235593885e-01 + 18 -3.1736132341688030e+00 1.7479385081847805e+00 -2.8179731692039300e-01 + 19 -3.3624637214334196e+00 1.6924608655548403e+00 2.5997625287840496e+00 + 20 -2.7153987582894263e+00 7.3346748157654429e-01 -1.8496510175196321e+00 + 21 -1.3701087071876770e+00 -1.3212367855124965e+00 2.2319246525907499e-01 + 22 -3.1393728908622203e+00 -1.5028297770708865e+00 -8.4534561868706976e-02 + 23 -3.7785847830363317e+00 -6.7019175581576840e-01 2.4329367201735987e+00 + 24 -3.6593628869175765e+00 -1.6637173150620677e+00 -2.7718738932133768e+00 + 25 -2.5722547112692924e+00 -1.4085899175824826e-01 -1.3425331668629608e+00 + 26 -2.2313523757461140e+00 -1.0565970011730552e-01 7.8875338815911356e-01 + 27 -4.0697893298629424e+00 -7.7104697439519698e-01 1.9509778784526781e+00 + 28 -2.9846015193009245e+00 -3.7103630025900147e-01 -1.7751166640892266e+00 + 29 -3.8317497823475826e+00 -1.3169975420367330e-01 -5.7694793638869690e-01 + 30 -3.2268859755518631e+00 4.5054546687957608e-02 4.4185943712294751e-01 + 31 -2.7553870802736919e+00 2.6955905429078775e-02 2.5025473844753834e+00 + 32 -3.7534997619605797e+00 9.7611391963947192e-01 -2.0942085358952034e+00 + 33 3.6839908313895116e+00 2.1032789793898212e+00 1.7224193626054863e-02 + 34 4.9521065685964363e+00 1.5922402053541189e+00 5.6621602950331062e-01 + 35 4.1520699723525878e+00 4.7488667744020052e-01 1.5644781324534178e+00 + 36 5.7501115265475899e+00 1.3495754431352371e+00 -1.6501488710784189e+00 + 37 4.6577030269813831e+00 -1.0650378465755459e+00 -5.0485623513855571e-01 + 38 4.3778844714072971e+00 -1.1597823274078629e+00 -4.2687129716078420e-01 + 39 5.7271378188746285e+00 -1.1794660599792492e+00 1.7886321802767187e+00 + 40 3.4794819555248848e+00 -7.6831552798647385e-01 -8.4204508925664046e-01 + 41 2.7912406557059524e+00 -2.4382296980927669e+00 -1.7689060959266056e+00 + 42 4.3009960910714780e+00 -2.2818150767411622e+00 1.9164597556171861e+00 + 43 3.1769207669515933e+00 -2.0547332172563375e+00 2.7883451562589517e-01 + 44 4.7976429173894575e+00 -1.9422100197708609e+00 -5.8864347481769330e-01 + 45 4.4639411709257271e+00 1.1017413979387056e+00 -1.6806667837838050e+00 + 46 3.4463494623206414e+00 1.7849001115054133e+00 1.5454339478198387e+00 + 47 4.6704258114853632e+00 2.0642679287379484e+00 1.0707387548337988e+00 + 48 3.2365042361994436e+00 1.3071740304742279e+00 -9.3178663392397143e-01 + 49 3.8774820278668325e+00 1.2533576026139581e+00 -2.5805573171553005e+00 + 50 2.8765776743553393e+00 1.1838354616065578e+00 1.0990190814870195e+00 + 51 2.5524748606842795e+00 2.0682005027920773e+00 2.1688640930566625e+00 + 52 2.7740755933898882e+00 1.4181307046374703e+00 -1.0019725943082998e+00 + 53 3.2770303367417237e+00 -1.1011362378040752e+00 -1.2204418751582948e+00 + 54 3.4621421385772231e+00 -1.4883583947074184e+00 1.9635394569055931e+00 + 55 2.7272553710361702e+00 -1.1942266495019342e+00 1.0904953777855595e+00 + 56 3.2784182790574290e+00 -1.8844263300269828e+00 -1.3919453283924430e+00 + 57 4.1789838157033090e+00 -1.6917645500503578e+00 -2.1198362885322073e+00 + 58 3.0670423731495404e+00 -1.6950262434256007e+00 1.4582583052524525e+00 + 59 4.2566301245515881e+00 -1.4455584797488898e+00 1.9159446622753464e+00 + 60 2.8196376763065736e+00 -1.3370533243006746e+00 -6.4439416322919207e-01 + 61 2.7698427900210003e+00 1.4380604527035081e+00 -1.3951268379137827e+00 + 62 3.7685789792054352e+00 2.0791891109584943e+00 1.2066889997658583e+00 + 63 3.8782534953927716e+00 1.3415971369418920e+00 1.0348580834874355e+00 + 64 3.3172958810317481e+00 2.2765761278025658e+00 -1.3737359721467113e+00 +... diff --git a/unittest/force-styles/tests/sph-pair-taitwater_morris.yaml b/unittest/force-styles/tests/sph-pair-taitwater_morris.yaml new file mode 100644 index 00000000000..51034d1faab --- /dev/null +++ b/unittest/force-styles/tests/sph-pair-taitwater_morris.yaml @@ -0,0 +1,159 @@ +--- +lammps_version: 4 Jul 2026 +tags: +date_generated: Fri Jul 10 17:05:39 2026 +epsilon: 5e-09 +skip_tests: single +prerequisites: | + atom sph + pair sph/taitwater/morris +pre_commands: | + variable units index lj +post_commands: "" +input_file: in.sph +pair_style: sph/taitwater/morris +pair_coeff: | + 1 1 1.0 10.0 0.2 2.0 + 1 2 1.0 10.0 0.25 2.0 + 2 2 1.05 12.0 0.3 2.0 +extract: "" +natoms: 64 +init_vdwl: 0 +init_coul: 0 +init_stress: |2- + 2.0978358657914703e+02 2.1020653561899681e+02 2.0927921991036948e+02 -3.8750788102874056e-01 -4.6516091467860107e-02 7.1163133609940758e-03 +init_forces: |2 + 1 -4.3705952236168439e+00 7.2711898967090693e-01 -1.0819475161432852e+00 + 2 -4.8183472768084945e+00 1.3116729535048000e+00 1.0211731686387122e+00 + 3 -4.4042813727619743e+00 1.4389341152354242e+00 1.5665329676237374e+00 + 4 -4.4432305597315693e+00 2.0186367607916473e+00 -1.0857774334667978e+00 + 5 -5.3438138085105651e+00 -1.9498404786321994e+00 -1.5702649037790672e+00 + 6 -4.0213826194213684e+00 -1.3204897103732312e+00 1.2380384041075945e+00 + 7 -4.8831154046827088e+00 -1.1670709184484278e+00 1.9833872761566560e+00 + 8 -3.7589655465585050e+00 -1.1755845753662075e+00 -1.8220707985205411e+00 + 9 -4.2944936771136275e+00 -3.0201640149016684e-01 -1.2328904356140344e+00 + 10 -5.1825234195399830e+00 -1.5340299649270190e+00 1.4801494592633759e+00 + 11 -3.0322706906664392e+00 -1.3315520790730084e+00 1.5015271203026817e+00 + 12 -4.9766428681430996e+00 -1.7682000170819436e+00 -1.9025632797996885e+00 + 13 -4.8374139825041134e+00 1.2967601604744448e+00 -1.7346927464330264e+00 + 14 -3.5754945324496732e+00 1.0313726804786842e+00 7.5552973066973173e-01 + 15 -4.7277849385821904e+00 9.2095751752826571e-01 1.8403406975851202e+00 + 16 -3.8980750785389811e+00 1.0466658140686869e+00 -9.5455375849802149e-01 + 17 -3.3488735562268066e+00 2.1016301354802573e+00 -7.2925177035685662e-01 + 18 -3.1738781075318681e+00 1.7488045923827209e+00 -2.8197625048690511e-01 + 19 -3.3627712542597012e+00 1.6918785311886353e+00 2.6002453332532833e+00 + 20 -2.7152830073712413e+00 7.3189613954679977e-01 -1.8503208676532539e+00 + 21 -1.3706391378186336e+00 -1.3206430901180910e+00 2.2441176060003154e-01 + 22 -3.1399261952312618e+00 -1.5035610064914946e+00 -8.5093883398632192e-02 + 23 -3.7788236202841934e+00 -6.7098959771120104e-01 2.4338358234951603e+00 + 24 -3.6600683374758214e+00 -1.6633075914773998e+00 -2.7729311906081069e+00 + 25 -2.5728504484579773e+00 -1.4182608515049877e-01 -1.3431580195651716e+00 + 26 -2.2305978432595603e+00 -1.0624024242607466e-01 7.8850577424185808e-01 + 27 -4.0697890673280721e+00 -7.7050288752764740e-01 1.9523639814560532e+00 + 28 -2.9852207405844084e+00 -3.7077425388208068e-01 -1.7760691267482038e+00 + 29 -3.8329711239450206e+00 -1.2931076094465271e-01 -5.7867026316733572e-01 + 30 -3.2266119637774642e+00 4.6039583727281508e-02 4.4269575856115040e-01 + 31 -2.7554625532028609e+00 2.7188484569660498e-02 2.5035286341980054e+00 + 32 -3.7540855175219154e+00 9.7684392112562213e-01 -2.0942825342553313e+00 + 33 3.6844794681048678e+00 2.1031104363156055e+00 1.6704642168521924e-02 + 34 4.9520816688920695e+00 1.5920508020217401e+00 5.6618199011377812e-01 + 35 4.1516678317021007e+00 4.7346717762462731e-01 1.5655876111109857e+00 + 36 5.7502440938934845e+00 1.3492144697851833e+00 -1.6500950324111925e+00 + 37 4.6589037846173955e+00 -1.0642504008551041e+00 -5.0369693498217971e-01 + 38 4.3781501963160254e+00 -1.1584971522135854e+00 -4.2900236506738898e-01 + 39 5.7277621303460187e+00 -1.1793837816992241e+00 1.7890135358388879e+00 + 40 3.4798126057652610e+00 -7.6897896399438814e-01 -8.4255120706166453e-01 + 41 2.7925903041500479e+00 -2.4400814386979572e+00 -1.7685234619756116e+00 + 42 4.3015751091353494e+00 -2.2842582423211768e+00 1.9161275940085991e+00 + 43 3.1767521242921974e+00 -2.0542260724512875e+00 2.7967942323857192e-01 + 44 4.7980365678097447e+00 -1.9414504758589179e+00 -5.8868318542441733e-01 + 45 4.4644814765664371e+00 1.1026385237262444e+00 -1.6821684868415470e+00 + 46 3.4459819510104608e+00 1.7861528893215626e+00 1.5460695983156851e+00 + 47 4.6704852121606413e+00 2.0655925174112246e+00 1.0719540304208905e+00 + 48 3.2363869831540830e+00 1.3075006243865794e+00 -9.3239869148684007e-01 + 49 3.8773457140377570e+00 1.2534035751621895e+00 -2.5810811668002831e+00 + 50 2.8761785550790844e+00 1.1835352389470761e+00 1.0989765028570211e+00 + 51 2.5514790896153148e+00 2.0690705528789786e+00 2.1698938382053350e+00 + 52 2.7737152969899412e+00 1.4182703322767776e+00 -1.0021589027181657e+00 + 53 3.2757779516367984e+00 -1.1008539976524876e+00 -1.2200553561570728e+00 + 54 3.4619859991563753e+00 -1.4883353448763468e+00 1.9642652174258139e+00 + 55 2.7277648419678835e+00 -1.1940865247177070e+00 1.0905902577054458e+00 + 56 3.2783085614551046e+00 -1.8854715163351601e+00 -1.3921556475459476e+00 + 57 4.1785466493348586e+00 -1.6914360867158007e+00 -2.1204846652796721e+00 + 58 3.0669570956138199e+00 -1.6958325484891195e+00 1.4579435832247909e+00 + 59 4.2565686650150010e+00 -1.4462696579905576e+00 1.9153869439651665e+00 + 60 2.8188006364817229e+00 -1.3368674273718806e+00 -6.4401300106602810e-01 + 61 2.7695948473330616e+00 1.4383947878900516e+00 -1.3954472727876683e+00 + 62 3.7690018330288280e+00 2.0786154242380586e+00 1.2067014556867035e+00 + 63 3.8773938530220664e+00 1.3416638812695352e+00 1.0352456935163146e+00 + 64 3.3174723762231397e+00 2.2771376803327690e+00 -1.3735576518557195e+00 +run_vdwl: 0 +run_coul: 0 +run_stress: |2- + 2.0978118245571849e+02 2.1020485491653724e+02 2.0927781749926567e+02 -3.8737650786043171e-01 -4.7221210058527363e-02 6.7550204334230488e-03 +run_forces: |2 + 1 -4.3718003823337002e+00 7.2805014626751041e-01 -1.0820273068722353e+00 + 2 -4.8186534584836895e+00 1.3115317468276868e+00 1.0217826732132247e+00 + 3 -4.4040654597401261e+00 1.4386188211929556e+00 1.5664004892333077e+00 + 4 -4.4431708657585922e+00 2.0188140498597598e+00 -1.0866710031611793e+00 + 5 -5.3444813541930190e+00 -1.9498155975335099e+00 -1.5699243897145843e+00 + 6 -4.0220632414748456e+00 -1.3200868917494368e+00 1.2379999958666406e+00 + 7 -4.8832089127116607e+00 -1.1677476017943014e+00 1.9839188027124066e+00 + 8 -3.7591837455203847e+00 -1.1758599324780592e+00 -1.8219181250474703e+00 + 9 -4.2948134869263646e+00 -3.0148376132548704e-01 -1.2327129937596952e+00 + 10 -5.1819469621219989e+00 -1.5339497534274460e+00 1.4798611830385839e+00 + 11 -3.0321691207583523e+00 -1.3315781698456064e+00 1.5013201595233341e+00 + 12 -4.9771575492251374e+00 -1.7679246637120856e+00 -1.9028461975890607e+00 + 13 -4.8382720435345199e+00 1.2961289099897251e+00 -1.7340631663250781e+00 + 14 -3.5748433604218328e+00 1.0311159332116790e+00 7.5512272066170372e-01 + 15 -4.7284051404812395e+00 9.2067101463802570e-01 1.8406070649924884e+00 + 16 -3.8993136492681573e+00 1.0465295324465351e+00 -9.5473431593454472e-01 + 17 -3.3482544496327620e+00 2.1034004538980238e+00 -7.2923301235593885e-01 + 18 -3.1736132341688030e+00 1.7479385081847805e+00 -2.8179731692039300e-01 + 19 -3.3624637214334196e+00 1.6924608655548403e+00 2.5997625287840496e+00 + 20 -2.7153987582894263e+00 7.3346748157654429e-01 -1.8496510175196321e+00 + 21 -1.3701087071876770e+00 -1.3212367855124965e+00 2.2319246525907499e-01 + 22 -3.1393728908622203e+00 -1.5028297770708865e+00 -8.4534561868706976e-02 + 23 -3.7785847830363317e+00 -6.7019175581576840e-01 2.4329367201735987e+00 + 24 -3.6593628869175765e+00 -1.6637173150620677e+00 -2.7718738932133768e+00 + 25 -2.5722547112692924e+00 -1.4085899175824826e-01 -1.3425331668629608e+00 + 26 -2.2313523757461140e+00 -1.0565970011730552e-01 7.8875338815911356e-01 + 27 -4.0697893298629424e+00 -7.7104697439519698e-01 1.9509778784526781e+00 + 28 -2.9846015193009245e+00 -3.7103630025900147e-01 -1.7751166640892266e+00 + 29 -3.8317497823475826e+00 -1.3169975420367330e-01 -5.7694793638869690e-01 + 30 -3.2268859755518631e+00 4.5054546687957608e-02 4.4185943712294751e-01 + 31 -2.7553870802736919e+00 2.6955905429078775e-02 2.5025473844753834e+00 + 32 -3.7534997619605797e+00 9.7611391963947192e-01 -2.0942085358952034e+00 + 33 3.6839908313895116e+00 2.1032789793898212e+00 1.7224193626054863e-02 + 34 4.9521065685964363e+00 1.5922402053541189e+00 5.6621602950331062e-01 + 35 4.1520699723525878e+00 4.7488667744020052e-01 1.5644781324534178e+00 + 36 5.7501115265475899e+00 1.3495754431352371e+00 -1.6501488710784189e+00 + 37 4.6577030269813831e+00 -1.0650378465755459e+00 -5.0485623513855571e-01 + 38 4.3778844714072971e+00 -1.1597823274078629e+00 -4.2687129716078420e-01 + 39 5.7271378188746285e+00 -1.1794660599792492e+00 1.7886321802767187e+00 + 40 3.4794819555248848e+00 -7.6831552798647385e-01 -8.4204508925664046e-01 + 41 2.7912406557059524e+00 -2.4382296980927669e+00 -1.7689060959266056e+00 + 42 4.3009960910714780e+00 -2.2818150767411622e+00 1.9164597556171861e+00 + 43 3.1769207669515933e+00 -2.0547332172563375e+00 2.7883451562589517e-01 + 44 4.7976429173894575e+00 -1.9422100197708609e+00 -5.8864347481769330e-01 + 45 4.4639411709257271e+00 1.1017413979387056e+00 -1.6806667837838050e+00 + 46 3.4463494623206414e+00 1.7849001115054133e+00 1.5454339478198387e+00 + 47 4.6704258114853632e+00 2.0642679287379484e+00 1.0707387548337988e+00 + 48 3.2365042361994436e+00 1.3071740304742279e+00 -9.3178663392397143e-01 + 49 3.8774820278668325e+00 1.2533576026139581e+00 -2.5805573171553005e+00 + 50 2.8765776743553393e+00 1.1838354616065578e+00 1.0990190814870195e+00 + 51 2.5524748606842795e+00 2.0682005027920773e+00 2.1688640930566625e+00 + 52 2.7740755933898882e+00 1.4181307046374703e+00 -1.0019725943082998e+00 + 53 3.2770303367417237e+00 -1.1011362378040752e+00 -1.2204418751582948e+00 + 54 3.4621421385772231e+00 -1.4883583947074184e+00 1.9635394569055931e+00 + 55 2.7272553710361702e+00 -1.1942266495019342e+00 1.0904953777855595e+00 + 56 3.2784182790574290e+00 -1.8844263300269828e+00 -1.3919453283924430e+00 + 57 4.1789838157033090e+00 -1.6917645500503578e+00 -2.1198362885322073e+00 + 58 3.0670423731495404e+00 -1.6950262434256007e+00 1.4582583052524525e+00 + 59 4.2566301245515881e+00 -1.4455584797488898e+00 1.9159446622753464e+00 + 60 2.8196376763065736e+00 -1.3370533243006746e+00 -6.4439416322919207e-01 + 61 2.7698427900210003e+00 1.4380604527035081e+00 -1.3951268379137827e+00 + 62 3.7685789792054352e+00 2.0791891109584943e+00 1.2066889997658583e+00 + 63 3.8782534953927716e+00 1.3415971369418920e+00 1.0348580834874355e+00 + 64 3.3172958810317481e+00 2.2765761278025658e+00 -1.3737359721467113e+00 +... diff --git a/unittest/force-styles/tests/spin-pair-dipole_long.yaml b/unittest/force-styles/tests/spin-pair-dipole_long.yaml new file mode 100644 index 00000000000..b8d045d620c --- /dev/null +++ b/unittest/force-styles/tests/spin-pair-dipole_long.yaml @@ -0,0 +1,253 @@ +--- +lammps_version: 4 Jul 2026 +tags: spin +date_generated: Fri Jul 10 16:42:23 2026 +epsilon: 5e-13 +skip_tests: +prerequisites: | + atom spin + pair spin/dipole/long + kspace ewald/dipole/spin + fix nve/spin +pre_commands: | + variable newton_pair delete + variable newton_pair index on +post_commands: | + fix move all nve/spin lattice yes + kspace_style ewald/dipole/spin 1.0e-8 + kspace_modify gewald 0.2 compute no +input_file: in.spin +pair_style: spin/dipole/long 4.0 +pair_coeff: | + * * 4.0 +extract: "" +natoms: 54 +init_vdwl: 2.0879964727685078e-05 +init_coul: 0 +init_stress: |- + -3.0973536345464057e-05 -4.4221224386498479e-05 1.0263189240734073e-04 1.3652987423020687e-04 -1.3879702855039861e-04 7.0131957548248222e-05 +init_forces: |2 + 1 1.4397123404709909e-05 -1.4967422552343253e-05 -5.6137495457022816e-05 + 2 3.7825040464267799e-05 4.6977933852488551e-06 3.5507307918719727e-06 + 3 3.8766955656736892e-05 1.8764335195106780e-05 -2.5446113328587461e-05 + 4 -4.6008903914123887e-05 5.5953858753345145e-05 1.2278646254986221e-04 + 5 -2.8859220080072831e-05 -7.2254755125617339e-05 -7.7619495395775990e-06 + 6 6.4853898776411582e-05 -1.4641079832971753e-05 5.8937225990883823e-06 + 7 1.8001545359706680e-05 -4.6828693604493101e-05 1.2187433609733452e-05 + 8 -7.3995262265012102e-05 7.9556816068886128e-05 3.4569017829655741e-05 + 9 -6.1060468010451575e-05 -1.0518232901051479e-05 9.9162691007824335e-05 + 10 -1.3230636109987527e-06 -1.6980445283023707e-05 -1.4712085210575919e-05 + 11 1.7047353915368723e-05 -3.4021699200549989e-05 -3.7590422878262231e-05 + 12 1.6724565848293854e-06 -4.0979980716223097e-05 -2.3309496669766827e-05 + 13 3.3808830777873963e-05 -3.0512113930834780e-05 2.5316226538487275e-05 + 14 -1.6609085847060024e-05 -8.6058797424581538e-06 8.1645915808827219e-05 + 15 -5.2352648371574057e-06 -3.1014972478816053e-05 -5.8259799404696043e-05 + 16 7.3468626482395456e-05 -4.4804229305342482e-05 -1.0978096456194364e-05 + 17 -2.3453705388682263e-05 2.8811550305491787e-05 5.5921850820210457e-05 + 18 -1.1606468909069477e-05 -3.0927222626463255e-05 -3.4999232469574300e-05 + 19 1.0139399315500727e-05 -1.7533617334773473e-05 3.9818397542925442e-05 + 20 1.6900216324284831e-06 4.8109780735107040e-05 -4.4227011525508319e-05 + 21 -1.7598513583954600e-05 6.6209627264617061e-06 1.9591872422349667e-05 + 22 1.1814103955605943e-06 -3.2255716061028657e-05 -4.7902108307711923e-05 + 23 1.5101691762417776e-05 -3.0926184275628118e-05 2.8408828953047447e-05 + 24 -4.2669362204789745e-06 6.5981608115158873e-05 -4.5017556244448837e-05 + 25 -7.5739918202062954e-05 -4.3505480516839681e-06 3.1125875016736867e-05 + 26 5.7086719373196207e-05 2.4690986196390795e-05 -4.0629548062554473e-05 + 27 1.5224235554145776e-05 1.1290946079679410e-05 -5.5138804838142909e-05 + 28 -2.0074835766168001e-05 -2.9157903671642621e-05 6.4422192848938005e-05 + 29 6.5021514267420525e-06 3.2689404479414289e-05 4.5818308540614415e-06 + 30 7.7064666678521490e-05 2.8953027237294521e-05 4.6213528859642297e-05 + 31 3.3124122841952231e-05 1.6768010741718597e-05 1.5745822021129296e-05 + 32 -1.1833478974576906e-05 4.6887812685857297e-05 9.8895947011120839e-06 + 33 1.5187589500597070e-05 -5.8871838997812616e-05 2.0827102770379977e-05 + 34 -1.7538633687568690e-05 4.2403129109682859e-05 -4.7231297044292770e-05 + 35 -3.1144162784853663e-05 5.9534775115891200e-05 6.2016617806145479e-06 + 36 -9.1086334114761271e-06 -6.2675834707179073e-05 -4.4986009990746531e-05 + 37 3.5796914185155095e-05 -7.4660602685015060e-05 -2.7916894987171977e-05 + 38 -5.5171099944174136e-05 2.3995388141468256e-05 -3.5144437298669702e-05 + 39 4.8545029247479300e-05 -1.2954723666032982e-05 2.2878609327479918e-05 + 40 -2.8314175443907707e-05 3.2770735468535160e-05 2.5498704974377850e-05 + 41 -1.2173784188603218e-04 -3.1260493497589421e-05 1.8317659465129072e-05 + 42 5.9323393797153199e-05 1.1158092781405501e-05 9.1446437487688022e-06 + 43 2.5879039540777808e-05 2.7532884477805070e-05 -4.5038167521539831e-05 + 44 7.7881691680321859e-05 -3.0847237838079788e-05 -3.2541032454844516e-05 + 45 -1.1007506419694910e-04 -3.5387555331128269e-05 3.7044390437371930e-06 + 46 1.6282758821295862e-05 3.2914263914129459e-05 -1.9316318855380975e-05 + 47 -3.4522671156714073e-05 3.1873670133218093e-05 -5.7314100493870951e-06 + 48 -2.8819441110866641e-05 -2.4659805618001219e-05 2.8691248318651596e-06 + 49 -2.6409245073440678e-05 -1.2406801690802149e-05 -4.8601576443048965e-05 + 50 -3.9657235490775273e-05 1.7042037837902605e-06 5.5649582949160917e-05 + 51 -7.4473427452157378e-06 -3.9802020230527827e-05 -1.1786197835843819e-05 + 52 -2.8343280646509188e-06 2.7658246716046496e-05 -2.3114387645787814e-05 + 53 4.9977440191726927e-05 6.5613681307509985e-05 -4.7369782251150574e-05 + 54 6.4614893239221807e-05 6.7871647302470171e-05 2.4963709103471462e-05 +init_mag_forces: |2 + 1 -6.1588634226529541e-02 -2.0880717309725773e-02 -2.1180069775542751e-02 + 2 1.1711412945366746e-01 -4.7345465230363468e-02 -5.3538740733699158e-03 + 3 -4.7627652478163418e-02 5.6380007197600175e-02 7.8937428933049045e-02 + 4 -1.4896514546425538e-02 -6.7800709775721002e-02 -3.9086175260650852e-03 + 5 2.1344493132189394e-02 -1.3435448320782553e-01 8.1964844187529751e-02 + 6 -1.1587226911019150e-02 -6.1855587425969638e-02 -8.6981264328136104e-02 + 7 1.7736905773625852e-01 -1.6820401255100939e-02 -1.6337596398778373e-01 + 8 3.8460508037138269e-02 2.9988325824201554e-03 5.7465995806506326e-02 + 9 -4.3585458452718804e-03 7.3161394838377428e-02 4.6434217154568205e-02 + 10 4.1303412293433983e-02 -2.5893674919042826e-02 -4.3821407195317519e-02 + 11 -1.3212634290911516e-02 1.8223970180099094e-01 1.1549437037478148e-01 + 12 -6.7700752299788738e-02 9.1626893457287639e-02 -2.6442143836244318e-02 + 13 -1.9337008475511626e-02 -1.2142194893380455e-02 6.9724745731547161e-02 + 14 -6.1441055016713098e-02 1.2559785535007656e-01 -4.9211257252344334e-02 + 15 8.6214502055185951e-02 -1.0885264124554399e-01 5.2539123107182381e-02 + 16 4.4611617064210442e-02 7.6918881705562200e-02 -2.3988923302278448e-02 + 17 -1.4672260315039817e-02 -4.9639125816815913e-02 -2.4614917072817856e-02 + 18 -1.2823483374053937e-02 -5.6178196552161136e-02 -1.5816175842467231e-03 + 19 2.2216273315912340e-02 -1.7261649225127691e-02 -1.5346916254812142e-02 + 20 2.6305173509498181e-02 8.5573542476163056e-02 5.7832910865278947e-02 + 21 4.1517384003987814e-02 -2.4725203047592282e-02 -3.0971796580060662e-02 + 22 -4.0821275532345970e-02 -2.5998282206180001e-02 -1.5153059983289724e-02 + 23 -7.3949724927801191e-02 -2.0669130844704862e-03 -7.6955885467015220e-02 + 24 9.4763088974278681e-02 -3.2568159807580641e-02 2.0513890484794564e-01 + 25 1.0929507188314945e-02 1.0453671457977538e-01 3.8262630443465659e-02 + 26 2.7231923515311306e-02 -1.3117153695895345e-01 3.6006080926180996e-02 + 27 7.0245886615252953e-02 -9.0925617797036742e-02 -4.2286811079353323e-02 + 28 -6.7198180672489283e-02 -1.9120291706631060e-02 -1.0693608815179646e-02 + 29 6.6033964570345900e-03 2.2830573728804367e-02 -8.9039296051317454e-02 + 30 2.9909068176717478e-02 1.0487076664509813e-02 -1.2480803143414063e-01 + 31 5.5423878966583399e-02 -2.1931150596629902e-02 9.7325619442062312e-03 + 32 7.0430187388492868e-02 -3.6628554056296218e-02 -1.0949915692344027e-02 + 33 -1.2153204353671500e-01 -1.0199419145978692e-02 -1.5006073429338254e-02 + 34 -4.2758344158543161e-02 4.4486883591100174e-02 -7.7736207806644531e-02 + 35 -6.5677880656478810e-03 5.6045215538916338e-02 -1.1361247828033531e-01 + 36 7.0498577813533442e-02 6.3084267390294130e-02 6.0326843313935244e-02 + 37 -1.4610647826467679e-01 -9.4000346137112001e-02 1.8699648070105608e-03 + 38 -2.2459715337239256e-02 1.0105876676016336e-01 2.0818911290027151e-02 + 39 1.0176043679990929e-01 1.6981336880265811e-02 3.3427050879211717e-03 + 40 -6.9032922790832271e-03 -6.8081758979480572e-02 -6.0049270336928300e-03 + 41 2.4323117677055084e-02 2.8972285779927998e-02 -6.9773541005947862e-02 + 42 9.2914207825989303e-02 -5.3239645312864653e-02 -1.5574199858146040e-01 + 43 -8.4381338440796289e-02 -9.7027346788584282e-02 -8.8440375937993476e-02 + 44 -5.0641515511813548e-02 8.9344093743231892e-02 8.8325566966827099e-02 + 45 6.3289047563471937e-02 2.2770664094466223e-02 -6.5623512987422888e-02 + 46 3.1818891470546118e-05 1.0335280235425497e-01 1.1984335453343020e-01 + 47 -6.9012403353919630e-02 -3.0159116753396540e-03 -3.9404631516315416e-02 + 48 -3.8500437636187636e-02 -4.3748081829171503e-02 -3.8971663245468746e-02 + 49 2.4865137555032113e-03 4.3140643373075042e-02 -2.6154676212395006e-02 + 50 -1.4998847917463845e-01 -3.5366464164705624e-02 -3.4888447136778911e-02 + 51 4.2060315830958012e-02 4.2924643597771595e-02 9.0471581589918137e-02 + 52 -4.4810139380442725e-02 -4.3728537378714766e-02 -3.0827494567603409e-02 + 53 5.7697196142649787e-02 2.7286543730497687e-02 8.8003206660867819e-02 + 54 4.7226304072663400e-02 -1.0985348010519796e-02 9.0941415529911945e-03 +run_vdwl: 2.0609479329755743e-05 +run_coul: 0 +run_stress: |- + -3.0899315069732575e-05 -4.4591641011391543e-05 1.0210032251660969e-04 1.3652000157238006e-04 -1.3872547817295457e-04 7.0102048971363085e-05 +run_forces: |2 + 1 1.4320638054508869e-05 -1.4901566109337493e-05 -5.6156908037742405e-05 + 2 3.7827435979966344e-05 4.6840386969674676e-06 3.4952222124325206e-06 + 3 3.8748004520898523e-05 1.8673712809780875e-05 -2.5461676682239941e-05 + 4 -4.5975773499085494e-05 5.5948211722494985e-05 1.2281635819084763e-04 + 5 -2.8864037374220794e-05 -7.2345925890923474e-05 -7.6652786894415805e-06 + 6 6.4984411111185039e-05 -1.4551013904819590e-05 5.8576760896799530e-06 + 7 1.7979119749455186e-05 -4.6937466746468204e-05 1.2190780997310313e-05 + 8 -7.4046396542771481e-05 7.9624573990186770e-05 3.4478766581153289e-05 + 9 -6.1043901845835591e-05 -1.0546038618986087e-05 9.9143281823967642e-05 + 10 -1.3528940346204884e-06 -1.6936719589584451e-05 -1.4695536832142134e-05 + 11 1.6999380615878260e-05 -3.3916234421880486e-05 -3.7563490622536703e-05 + 12 1.6409141481885109e-06 -4.0861809614684526e-05 -2.3215774571677516e-05 + 13 3.3900087683892364e-05 -3.0575380869011037e-05 2.5377409613863198e-05 + 14 -1.6615988321524273e-05 -8.5894358520559375e-06 8.1636327080894137e-05 + 15 -5.2411684688991774e-06 -3.1014451845085339e-05 -5.8190532633239296e-05 + 16 7.3450520264112061e-05 -4.4741219740800328e-05 -1.0922682279462575e-05 + 17 -2.3486854420627256e-05 2.8851152309887120e-05 5.5908830971635368e-05 + 18 -1.1650027893262622e-05 -3.1009700757805794e-05 -3.4935974186447037e-05 + 19 1.0270168330329024e-05 -1.7574825480626642e-05 3.9795780113747338e-05 + 20 1.6510207819688565e-06 4.8146533581461360e-05 -4.4230739607304608e-05 + 21 -1.7486530458835299e-05 6.6774415535166902e-06 1.9574755436749322e-05 + 22 1.0460076485094425e-06 -3.2167912968615040e-05 -4.7891872961944572e-05 + 23 1.5054936789963529e-05 -3.0952818636024906e-05 2.8335682015748692e-05 + 24 -4.2371447978063654e-06 6.6026902009122946e-05 -4.4978455567938139e-05 + 25 -7.5775006272525860e-05 -4.3826421001591397e-06 3.1038503786846966e-05 + 26 5.7145957977254655e-05 2.4717060788861623e-05 -4.0677588517816305e-05 + 27 1.5236124523394520e-05 1.1288487962416925e-05 -5.5031536154368585e-05 + 28 -2.0010848686606452e-05 -2.9221060123436967e-05 6.4481588702239865e-05 + 29 6.5312381203617869e-06 3.2694169708134551e-05 4.6140668019086399e-06 + 30 7.7048835449000452e-05 2.9074710049365628e-05 4.6190273955398138e-05 + 31 3.3135059136641934e-05 1.6717301962135024e-05 1.5629492991532152e-05 + 32 -1.1827361088294184e-05 4.6728150294977158e-05 9.8558729596402296e-06 + 33 1.5114288842847403e-05 -5.8845802150394905e-05 2.0772429006179702e-05 + 34 -1.7551102825604824e-05 4.2387485447283154e-05 -4.7040726529981017e-05 + 35 -3.1117930943446660e-05 5.9537346073852975e-05 6.2278577086173536e-06 + 36 -9.0802005214370787e-06 -6.2634972730172137e-05 -4.4993414644178091e-05 + 37 3.5745917537528463e-05 -7.4594117327353194e-05 -2.7943094968368571e-05 + 38 -5.5262505514041997e-05 2.4123402414566831e-05 -3.5051036023795722e-05 + 39 4.8574573678107554e-05 -1.2991609388664865e-05 2.2842301965509623e-05 + 40 -2.8411324258413207e-05 3.2866260796064262e-05 2.5353010105589636e-05 + 41 -1.2170175083436645e-04 -3.1281267262035725e-05 1.8274723773002477e-05 + 42 5.9363379680360957e-05 1.1118614584933527e-05 9.1060752124264703e-06 + 43 2.5873995021474230e-05 2.7369936373210403e-05 -4.5091759038376442e-05 + 44 7.7892937159304931e-05 -3.0903678419913738e-05 -3.2567988656711642e-05 + 45 -1.0998613548298402e-04 -3.5495167387461407e-05 3.7186943200937143e-06 + 46 1.6245761432423570e-05 3.2842126443056365e-05 -1.9391917837708351e-05 + 47 -3.4519299579694696e-05 3.1763674988660215e-05 -5.7681904528712274e-06 + 48 -2.8807224510855223e-05 -2.4700204629334254e-05 2.9053948153017399e-06 + 49 -2.6324484876078084e-05 -1.2373378353700463e-05 -4.8602665956115232e-05 + 50 -3.9711794401796616e-05 1.7107877317102579e-06 5.5737595439044037e-05 + 51 -7.4489183867235063e-06 -3.9821052579773486e-05 -1.1697324357821414e-05 + 52 -2.8629832699360634e-06 2.7644262728699485e-05 -2.3176618876995247e-05 + 53 5.0002821623941720e-05 6.5696715064545813e-05 -4.7369420240955417e-05 + 54 6.4616053248795624e-05 6.7954413413217173e-05 2.4953452256819556e-05 +run_mag_forces: |2 + 1 -6.1446006294531695e-02 -2.0883827789116845e-02 -2.1367614727656768e-02 + 2 1.1703941840703350e-01 -4.7372727713110428e-02 -5.2918805512230105e-03 + 3 -4.7608195030811179e-02 5.6359658458749212e-02 7.8873497453309918e-02 + 4 -1.4760974246499454e-02 -6.7751659409952536e-02 -3.9313215655634864e-03 + 5 2.1313663202157516e-02 -1.3443672557252903e-01 8.2064656384504275e-02 + 6 -1.1575024236683594e-02 -6.1894244733982952e-02 -8.6935034245673462e-02 + 7 1.7748358555246388e-01 -1.6765295382398571e-02 -1.6339185382855703e-01 + 8 3.8537512695877643e-02 2.8817802239656277e-03 5.7435903181868454e-02 + 9 -4.3661672497074793e-03 7.3178398745341336e-02 4.6308519784801876e-02 + 10 4.1259863539102305e-02 -2.5812958655826654e-02 -4.3826734639901457e-02 + 11 -1.3165518282799465e-02 1.8218458630523299e-01 1.1545426272669201e-01 + 12 -6.7733399259645138e-02 9.1652194234576018e-02 -2.6447870252936434e-02 + 13 -1.9455426729603410e-02 -1.2238509629977596e-02 6.9675353687625771e-02 + 14 -6.1422329445997390e-02 1.2557749855175540e-01 -4.9304830205294393e-02 + 15 8.6308523829317876e-02 -1.0889532090040785e-01 5.2496407713659141e-02 + 16 4.4651613657546968e-02 7.6944323696811839e-02 -2.4040698522815755e-02 + 17 -1.4660102558204040e-02 -4.9685246781568174e-02 -2.4572258056605012e-02 + 18 -1.2856883430845711e-02 -5.6076883681854962e-02 -1.3958591931201077e-03 + 19 2.2170928675357086e-02 -1.7288215998928068e-02 -1.5201520857254522e-02 + 20 2.6272222661022165e-02 8.5554868509943122e-02 5.7823510344439319e-02 + 21 4.1494021103853522e-02 -2.4613625707145176e-02 -3.0953688912025001e-02 + 22 -4.0809890969936584e-02 -2.6168085551703767e-02 -1.5255609833103144e-02 + 23 -7.3872747352577081e-02 -2.2173454605334438e-03 -7.7036478068616243e-02 + 24 9.4790867438641666e-02 -3.2522064344286165e-02 2.0523991204228373e-01 + 25 1.0996360979808894e-02 1.0457324134207509e-01 3.8160655015742555e-02 + 26 2.7180305558084199e-02 -1.3116538404847422e-01 3.6110595767989306e-02 + 27 7.0248662400454881e-02 -9.1063158802785635e-02 -4.2288794757346433e-02 + 28 -6.7143147282002769e-02 -1.9053295841140832e-02 -1.0656587790934369e-02 + 29 6.5337989418164846e-03 2.2944541482470913e-02 -8.9087193210288684e-02 + 30 2.9970751011760721e-02 1.0396826329558732e-02 -1.2495752151879330e-01 + 31 5.5505466928987612e-02 -2.1903847926101318e-02 9.6697592119646333e-03 + 32 7.0381714429219866e-02 -3.6583581825860884e-02 -1.1241958490010407e-02 + 33 -1.2159230459305347e-01 -1.0239249789412347e-02 -1.4883455040462321e-02 + 34 -4.2901408727422090e-02 4.4505095509425267e-02 -7.7713999468938685e-02 + 35 -6.5063096755823193e-03 5.5990899412002887e-02 -1.1358543869721847e-01 + 36 7.0504042541564504e-02 6.3157474981652612e-02 6.0372891180962077e-02 + 37 -1.4622365496505865e-01 -9.4074160652886679e-02 1.8220037803759965e-03 + 38 -2.2558658699243731e-02 1.0109863601039813e-01 2.0729064600432008e-02 + 39 1.0185203090816815e-01 1.6930833830408082e-02 3.4094884676207637e-03 + 40 -6.9311117360034702e-03 -6.8048384806321568e-02 -6.0483200119468925e-03 + 41 2.4466110896717755e-02 2.9130800885586516e-02 -6.9679215754935159e-02 + 42 9.2936945569623383e-02 -5.3292129011718752e-02 -1.5575905949663149e-01 + 43 -8.4350911536471146e-02 -9.7042496662955585e-02 -8.8492233572780479e-02 + 44 -5.0622948915504444e-02 8.9307546358700945e-02 8.8315046993835133e-02 + 45 6.3330733679626758e-02 2.2981184708919144e-02 -6.5528662791692366e-02 + 46 8.3357112661552879e-05 1.0330862064415530e-01 1.1980763002238280e-01 + 47 -6.9069395288936963e-02 -2.9667494707850271e-03 -3.9463734736816358e-02 + 48 -3.8493694246522291e-02 -4.3706073079786655e-02 -3.8879786972404753e-02 + 49 2.4720255595118736e-03 4.3115266962354251e-02 -2.6044592677899589e-02 + 50 -1.4991622794673454e-01 -3.5417086447487652e-02 -3.4881060516682952e-02 + 51 4.2135098960979021e-02 4.2907947818654202e-02 9.0470087447934888e-02 + 52 -4.4940534155569985e-02 -4.3667731722015185e-02 -3.0867066705737758e-02 + 53 5.7695377465512246e-02 2.7255142167610477e-02 8.7868715906925618e-02 + 54 4.7279923414004797e-02 -1.0899898931398228e-02 9.0780917972033033e-03 +... diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 58c797b6e63..c93bffa008b 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -33,6 +33,15 @@ if(PKG_MANYBODY) set_tests_properties(EIMPotentialFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") endif() +add_executable(test_vtk_writer test_vtk_writer.cpp) +target_link_libraries(test_vtk_writer PRIVATE lammps GTest::GMock) +if(WITH_ZLIB) + # so that the test can inflate the compressed payloads it checks + target_compile_definitions(test_vtk_writer PRIVATE -DLAMMPS_ZLIB) + target_link_libraries(test_vtk_writer PRIVATE ZLIB::ZLIB) +endif() +add_test(NAME VTKWriter COMMAND test_vtk_writer) + add_executable(test_text_file_reader test_text_file_reader.cpp) target_link_libraries(test_text_file_reader PRIVATE lammps GTest::GMock) add_test(NAME TextFileReader COMMAND test_text_file_reader) @@ -118,6 +127,20 @@ target_link_libraries(test_dump_local PRIVATE lammps GTest::GMock) add_test(NAME DumpLocal COMMAND test_dump_local) set_tests_properties(DumpLocal PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") +add_executable(test_dump_grid test_dump_grid.cpp) +target_link_libraries(test_dump_grid PRIVATE lammps GTest::GMock) +add_test(NAME DumpGrid COMMAND test_dump_grid) + +if(PKG_EXTRA-DUMP) + add_executable(test_dump_vtk test_dump_vtk.cpp) + target_link_libraries(test_dump_vtk PRIVATE lammps GTest::GMock) + add_test(NAME DumpVTK COMMAND test_dump_vtk) + + add_executable(test_dump_vtk_mpi test_dump_vtk_mpi.cpp) + target_link_libraries(test_dump_vtk_mpi PRIVATE lammps GTest::GMock) + add_mpi_test(NAME DumpVTKMPI NUM_PROCS 4 COMMAND $) +endif() + if(PKG_NETCDF) find_program(NCDUMP NAMES ncdump ncdump.exe) add_executable(test_dump_netcdf test_dump_netcdf.cpp) diff --git a/unittest/formats/test_dump_grid.cpp b/unittest/formats/test_dump_grid.cpp new file mode 100644 index 00000000000..b22c2b4212b --- /dev/null +++ b/unittest/formats/test_dump_grid.cpp @@ -0,0 +1,419 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +// Tests for the "grid" and "grid/vtk" dump styles. The system is the melt +// example with a 2x2x2 grid on top of it, like examples/grid/in.grid.3d, so +// that each grid cell holds the same number of atoms. + +#include "../testing/core.h" +#include "../testing/systems/melt.h" +#include "../testing/utils.h" +#include "fmt/format.h" +#include "utils.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include +#include +#include +#include +#include + +using ::testing::Eq; +using ::testing::HasSubstr; +using ::testing::Not; +using ::testing::StartsWith; + +bool verbose = false; + +namespace LAMMPS_NS { + +// read a whole file, dropping any '\r' so that assertions with '\n' literals +// also hold on Windows, where dump grid writes through a text mode FILE + +static std::string slurp(const std::string &filename) +{ + std::ifstream in(filename, std::ios::binary); + std::ostringstream buf; + buf << in.rdbuf(); + auto rv = buf.str(); + rv.erase(std::remove(rv.begin(), rv.end(), '\r'), rv.end()); + return rv; +} + +class DumpGridTest : public MeltTest { +protected: + void InitSystem() override + { + MeltTest::InitSystem(); + + // the 32 atoms of the melt system are spread over 8 grid cells, so + // every cell contains 4 of them + + HIDE_OUTPUT([&] { + command("fix ave all ave/grid 1 1 1 2 2 2 vx vy vz"); + command("compute prop all property/grid 2 2 2 id ix iy iz"); + }); + } + +public: + void enable_triclinic() + { + BEGIN_HIDE_OUTPUT(); + command("change_box all triclinic"); + END_HIDE_OUTPUT(); + } + + void generate_dump(const std::string &style, const std::string &dump_file, + const std::string &fields, const std::string &dump_modify_options, + int ntimesteps) + { + BEGIN_HIDE_OUTPUT(); + command(fmt::format("dump id all {} 1 {} {}", style, dump_file, fields)); + + if (!dump_modify_options.empty()) { + command(fmt::format("dump_modify id {}", dump_modify_options)); + } + + command(fmt::format("run {} post no", ntimesteps)); + END_HIDE_OUTPUT(); + } +}; + +//------------------------------------------------------------------------------------------------- +// dump grid +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpGridTest, run0) +{ + const std::string dump_file = "dump_grid_run0.melt"; + generate_dump("grid", dump_file, "c_prop:grid:data[*] f_ave:grid:count f_ave:grid:data[*]", + "sort 1", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 19); + ASSERT_THAT(lines[0], Eq("ITEM: TIMESTEP")); + ASSERT_THAT(lines[1], Eq("0")); + ASSERT_THAT(lines[2], Eq("ITEM: BOX BOUNDS pp pp pp")); + ASSERT_EQ(utils::split_words(lines[3]).size(), 2); + ASSERT_THAT(lines[6], Eq("ITEM: DIMENSION")); + ASSERT_THAT(lines[7], Eq("3")); + ASSERT_THAT(lines[8], Eq("ITEM: GRID SIZE nx ny nz")); + ASSERT_THAT(lines[9], Eq("2 2 2")); + ASSERT_THAT(lines[10], Eq("ITEM: GRID CELLS c_prop:grid:data[1] c_prop:grid:data[2] " + "c_prop:grid:data[3] c_prop:grid:data[4] f_ave:grid:count " + "f_ave:grid:data[1] f_ave:grid:data[2] f_ave:grid:data[3]")); + + // one line per grid cell, sorted by cell id. the first four columns are + // the cell id and its x, y, z index, the fifth is the atom count + + ASSERT_EQ(utils::split_words(lines[11]).size(), 8); + ASSERT_THAT(lines[11], StartsWith("1 1 1 1 4 ")); + ASSERT_THAT(lines[12], StartsWith("2 2 1 1 4 ")); + ASSERT_THAT(lines[13], StartsWith("3 1 2 1 4 ")); + ASSERT_THAT(lines[18], StartsWith("8 2 2 2 4 ")); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, with_units_and_time_run0) +{ + const std::string dump_file = "dump_grid_units.melt"; + generate_dump("grid", dump_file, "f_ave:grid:count", "units yes time yes sort 1", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 23); + ASSERT_THAT(lines[0], Eq("ITEM: UNITS")); + ASSERT_THAT(lines[1], Eq("lj")); + ASSERT_THAT(lines[2], Eq("ITEM: TIME")); + ASSERT_THAT(lines[4], Eq("ITEM: TIMESTEP")); + + // the cells are written in id order, but the id itself is only a column + // when it is requested as an attribute + + ASSERT_THAT(lines[14], Eq("ITEM: GRID CELLS f_ave:grid:count")); + ASSERT_THAT(lines[15], Eq("4")); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, triclinic_run0) +{ + const std::string dump_file = "dump_grid_tri.melt"; + enable_triclinic(); + generate_dump("grid", dump_file, "f_ave:grid:count", "sort 1", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 19); + ASSERT_THAT(lines[2], Eq("ITEM: BOX BOUNDS xy xz yz pp pp pp")); + ASSERT_EQ(utils::split_words(lines[3]).size(), 3); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, multi_file_run1) +{ + generate_dump("grid", "dump_grid_multi_*.melt", "f_ave:grid:count", "sort 1", 1); + + for (const auto &step : {"0", "1"}) { + auto dump_file = fmt::format("dump_grid_multi_{}.melt", step); + ASSERT_FILE_EXISTS(dump_file); + ASSERT_EQ(count_lines(dump_file), 19); + delete_file(dump_file); + } +} + +TEST_F(DumpGridTest, per_processor_file_run0) +{ + // the "%" becomes the id of the writing processor + + generate_dump("grid", "dump_grid_p%.melt", "f_ave:grid:count", "sort 1", 0); + + const std::string dump_file = "dump_grid_p0.melt"; + ASSERT_FILE_EXISTS(dump_file); + ASSERT_EQ(count_lines(dump_file), 19); + delete_file(dump_file); +} + +TEST_F(DumpGridTest, no_attributes) +{ + TEST_FAILURE(".*No dump grid arguments specified.*", + command("dump id all grid 1 dump_grid_invalid.melt");); +} + +TEST_F(DumpGridTest, invalid_attribute) +{ + TEST_FAILURE(".*Invalid attribute xxx in dump grid command.*", + command("dump id all grid 1 dump_grid_invalid.melt xxx");); +} + +TEST_F(DumpGridTest, mismatched_grid_sizes) +{ + BEGIN_HIDE_OUTPUT(); + command("compute other all property/grid 3 3 3 id ix"); + command("dump id all grid 1 dump_grid_invalid.melt c_prop:grid:data[1] c_other:grid:data[1]"); + END_HIDE_OUTPUT(); + + TEST_FAILURE(".*Dump grid field grid sizes do not match.*", command("run 0 post no");); +} + +//------------------------------------------------------------------------------------------------- +// dump grid/vtk +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpGridTest, vtk_rectilinear_run0) +{ + const std::string dump_file = "dump_grid_rect.0.vtr"; + generate_dump("grid/vtk", "dump_grid_rect.*.vtr", "f_ave:grid:count", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + + // a single field becomes a scalar cell array, one value per grid cell + + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr("4 4 4 4 4 4 4 4 \n")); + EXPECT_THAT(text, HasSubstr(R"()")); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, vtk_legacy_run0) +{ + const std::string dump_file = "dump_grid_legacy.0.vtk"; + generate_dump("grid/vtk", "dump_grid_legacy.*.vtk", "f_ave:grid:data[*]", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_GT(lines.size(), 4); + ASSERT_THAT(lines[0], Eq("# vtk DataFile Version 5.1")); + ASSERT_THAT(lines[2], Eq("ASCII")); + + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr("DATASET RECTILINEAR_GRID\nDIMENSIONS 3 3 3\n")); + EXPECT_THAT(text, HasSubstr("X_COORDINATES 3 float\n0 1.679")); + + // three fields become a vector cell array with three components + + EXPECT_THAT(text, HasSubstr("CELL_DATA 8\nFIELD FieldData 1\nVector 3 8 float\n")); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, vtk_image_run0) +{ + const std::string dump_file = "dump_grid_image.0.vti"; + generate_dump("grid/vtk", "dump_grid_image.*.vti", "f_ave:grid:count", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, Not(HasSubstr(""))); + + delete_file(dump_file); +} + +TEST_F(DumpGridTest, vtk_unknown_extension_run0) +{ + const std::string dump_file = "dump_grid_unknown.0.melt"; + generate_dump("grid/vtk", "dump_grid_unknown.*.melt", "f_ave:grid:count", "", 0); + + // an unknown file name extension keeps the XML rectilinear grid default + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr(R"()")); + EXPECT_THAT(xml, Not(HasSubstr(R"(format="ascii")"))); + + ASSERT_FILE_EXISTS(legacy_file); + EXPECT_THAT(slurp(legacy_file), HasSubstr("BINARY\nDATASET RECTILINEAR_GRID\n")); + + delete_file(xml_file); + delete_file(legacy_file); +} + +TEST_F(DumpGridTest, vtk_double_precision_run0) +{ + const std::string xml_file = "dump_grid_double.0.vtr"; + const std::string legacy_file = "dump_grid_double.0.vtk"; + + // dump_modify double yes switches the grid coordinates and the cell data + // to double precision + + BEGIN_HIDE_OUTPUT(); + command("dump xml all grid/vtk 1 dump_grid_double.*.vtr f_ave:grid:count"); + command("dump_modify xml double yes"); + command("dump legacy all grid/vtk 1 dump_grid_double.*.vtk f_ave:grid:data[*]"); + command("dump_modify legacy double yes"); + command("run 0 post no"); + END_HIDE_OUTPUT(); + + ASSERT_FILE_EXISTS(xml_file); + auto xml = slurp(xml_file); + EXPECT_THAT(xml, HasSubstr(R"()")); + EXPECT_THAT(xml, HasSubstr(R"()")); + + ASSERT_FILE_EXISTS(legacy_file); + auto legacy = slurp(legacy_file); + EXPECT_THAT(legacy, HasSubstr("X_COORDINATES 3 double\n0 1.6795961913825073")); + EXPECT_THAT(legacy, HasSubstr("Vector 3 8 double\n")); + + delete_file(xml_file); + delete_file(legacy_file); +} + +TEST_F(DumpGridTest, vtk_needs_one_file_per_snapshot) +{ + BEGIN_HIDE_OUTPUT(); + command("dump id all grid/vtk 1 dump_grid_invalid.vtr f_ave:grid:count"); + END_HIDE_OUTPUT(); + + TEST_FAILURE(".*Dump grid/vtk requires one snapshot per file.*", command("run 0 post no");); + + // the file is created before the dump style can complain about its name + + delete_file("dump_grid_invalid.vtr"); +} + +TEST_F(DumpGridTest, vtk_needs_sorting) +{ + BEGIN_HIDE_OUTPUT(); + command("dump id all grid/vtk 1 dump_grid_invalid.*.vtr f_ave:grid:count"); + command("dump_modify id sort off"); + END_HIDE_OUTPUT(); + + TEST_FAILURE(".*Dump grid/vtk requires sorting on IDs.*", command("run 0 post no");); +} + +TEST_F(DumpGridTest, vtk_rejects_triclinic) +{ + enable_triclinic(); + BEGIN_HIDE_OUTPUT(); + command("dump id all grid/vtk 1 dump_grid_invalid.*.vtr f_ave:grid:count"); + END_HIDE_OUTPUT(); + + TEST_FAILURE(".*Dump grid/vtk does not support triclinic simulation boxes.*", + command("run 0 post no");); +} + +TEST_F(DumpGridTest, vtk_invalid_filename) +{ + TEST_FAILURE(".*Invalid dump grid/vtk filename.*", + command("dump id all grid/vtk 1 dump_grid_invalid_%.*.vtr f_ave:grid:count");); +} + +TEST_F(DumpGridTest, vtk_invalid_number_of_fields) +{ + TEST_FAILURE(".*Dump grid/vtk requires one or three fields.*", + command("dump id all grid/vtk 1 dump_grid_invalid.*.vtr f_ave:grid:count " + "f_ave:grid:data[1]");); +} +} // namespace LAMMPS_NS + +int main(int argc, char **argv) +{ + MPI_Init(&argc, &argv); + ::testing::InitGoogleMock(&argc, argv); + + // handle arguments passed via environment variable + if (const char *var = getenv("TEST_ARGS")) { + std::vector env = LAMMPS_NS::utils::split_words(var); + for (auto arg : env) { + if (arg == "-v") { + verbose = true; + } + } + } + + if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; + + int rv = RUN_ALL_TESTS(); + MPI_Finalize(); + return rv; +} diff --git a/unittest/formats/test_dump_vtk.cpp b/unittest/formats/test_dump_vtk.cpp new file mode 100644 index 00000000000..ec9b2be7bca --- /dev/null +++ b/unittest/formats/test_dump_vtk.cpp @@ -0,0 +1,693 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +// Tests for the "vtk" dump style. The layout of the individual files is +// already checked by the VTKWriter tests, so these concentrate on what the +// dump style adds on top of it: selecting the file format from the file name +// extension, the extra file with the box dimensions, the naming and grouping +// of the atom attributes, and the file names for per timestep and per +// processor output. + +#include "../testing/core.h" +#include "../testing/systems/melt.h" +#include "../testing/utils.h" +#include "fmt/format.h" +#include "utils.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include +#include +#include +#include +#include + +using ::testing::Eq; +using ::testing::HasSubstr; +using ::testing::Not; + +bool verbose = false; + +namespace LAMMPS_NS { + +// read a whole file, including the null bytes of binary data + +static std::string slurp(const std::string &filename) +{ + std::ifstream in(filename, std::ios::binary); + std::ostringstream buf; + buf << in.rdbuf(); + return buf.str(); +} + +// pull the numbers between the first ">" after "marker" and the following "<" + +static std::vector xml_payload(const std::string &text, const std::string &marker) +{ + auto pos = text.find(marker); + if (pos == std::string::npos) return {}; + pos = text.find('>', pos); + if (pos == std::string::npos) return {}; + const auto end = text.find('<', pos); + + std::istringstream in(text.substr(pos + 1, end - pos - 1)); + std::vector values; + double v; + while (in >> v) + values.push_back(v); + return values; +} + +// legacy binary files store their data in big endian byte order + +template static T read_be(const char *p) +{ + const int one = 1; + char buf[sizeof(T)]; + if (*((const char *)&one) == 1) { + for (std::size_t i = 0; i < sizeof(T); ++i) + buf[i] = p[sizeof(T) - 1 - i]; + } else { + memcpy(buf, p, sizeof(T)); + } + T v; + memcpy(&v, buf, sizeof(T)); + return v; +} + +class DumpVTKTest : public MeltTest { +public: + void enable_triclinic() + { + BEGIN_HIDE_OUTPUT(); + command("change_box all triclinic"); + END_HIDE_OUTPUT(); + } + + void generate_dump(const std::string &dump_file, const std::string &fields, + const std::string &dump_modify_options, int ntimesteps) + { + BEGIN_HIDE_OUTPUT(); + command(fmt::format("dump id all vtk 1 {} {}", dump_file, fields)); + + if (!dump_modify_options.empty()) { + command(fmt::format("dump_modify id {}", dump_modify_options)); + } + + command(fmt::format("run {} post no", ntimesteps)); + END_HIDE_OUTPUT(); + } +}; + +//------------------------------------------------------------------------------------------------- +// legacy VTK format +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpVTKTest, legacy_run0) +{ + const std::string dump_file = "dump_vtk_run0.vtk"; + const std::string box_file = "dump_vtk_run0_boundingBox.vtk"; + generate_dump(dump_file, "id type", "sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_GT(lines.size(), 5); + ASSERT_THAT(lines[0], Eq("# vtk DataFile Version 5.1")); + ASSERT_THAT(lines[1], Eq("Generated by LAMMPS")); + ASSERT_THAT(lines[2], Eq("ASCII")); + ASSERT_THAT(lines[3], Eq("DATASET POLYDATA")); + ASSERT_THAT(lines[4], Eq("POINTS 32 float")); + + auto text = slurp(dump_file); + + // one vertex cell per atom, so there is one offset more than atoms + + EXPECT_THAT(text, HasSubstr("VERTICES 33 32\n")); + + // the attributes become field data in the order of the dump command + + EXPECT_THAT(text, HasSubstr("POINT_DATA 32\nFIELD FieldData 2\n")); + EXPECT_THAT(text, HasSubstr("id 1 32 int\n1 2 3 4 5 6 7 8 9\n")); + EXPECT_THAT(text, HasSubstr("type 1 32 int\n1 1 1 1 1 1 1 1 1\n")); + + // the box dimensions go into a second file + + ASSERT_FILE_EXISTS(box_file); + auto box = slurp(box_file); + EXPECT_THAT(box, HasSubstr("DATASET RECTILINEAR_GRID\nDIMENSIONS 2 2 2\n")); + EXPECT_THAT(box, HasSubstr("X_COORDINATES 2 float\n0 3.359")); + EXPECT_THAT(box, HasSubstr("Y_COORDINATES 2 float\n0 3.359")); + EXPECT_THAT(box, HasSubstr("Z_COORDINATES 2 float\n0 3.359")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, legacy_attributes) +{ + const std::string dump_file = "dump_vtk_attributes.vtk"; + const std::string box_file = "dump_vtk_attributes_boundingBox.vtk"; + + // x, y, z are always written as the point coordinates, duplicate + // attributes are dropped, and the three components of a vector attribute + // are combined into a single array named after the attribute + + generate_dump(dump_file, "vx vy vz id id type x y z fx fy fz element mass", "sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr("POINTS 32 float\n")); + EXPECT_THAT(text, HasSubstr("POINT_DATA 32\nFIELD FieldData 6\n")); + EXPECT_THAT(text, HasSubstr("id 1 32 int\n1 2 3 4 5 6 7 8 9\n")); + EXPECT_THAT(text, HasSubstr("type 1 32 int\n")); + EXPECT_THAT(text, HasSubstr("element 1 32 string\nC\nC\n")); + EXPECT_THAT(text, HasSubstr("mass 1 32 float\n")); + EXPECT_THAT(text, HasSubstr("v 3 32 float\n")); + EXPECT_THAT(text, HasSubstr("f 3 32 float\n")); + EXPECT_THAT(text, Not(HasSubstr("x 1 32 float\n"))); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, legacy_element_names) +{ + const std::string dump_file = "dump_vtk_element.vtk"; + const std::string box_file = "dump_vtk_element_boundingBox.vtk"; + generate_dump(dump_file, "id element", "element Ar sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr("element 1 32 string\nAr\nAr\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, legacy_binary_run0) +{ + const std::string dump_file = "dump_vtk_binary.vtk"; + const std::string box_file = "dump_vtk_binary_boundingBox.vtk"; + generate_dump(dump_file, "id type", "binary yes label \"my title\" sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto data = slurp(dump_file); + EXPECT_THAT(data, HasSubstr("# vtk DataFile Version 5.1\nmy title\nBINARY\n")); + EXPECT_THAT(data, Not(HasSubstr("\nASCII\n"))); + + // coordinates are stored as big endian floats. the first atom sits in + // the lower left corner of the box. + + const std::string points = "POINTS 32 float\n"; + auto pos = data.find(points); + ASSERT_NE(pos, std::string::npos); + pos += points.size(); + for (int i = 0; i < 3; ++i) + EXPECT_FLOAT_EQ(read_be(data.data() + pos + 4 * i), 0.0); + EXPECT_EQ(data.compare(pos + 32 * 3 * 4, 10, "\nVERTICES "), 0); + + // integer attributes are stored as big endian 32-bit integers + + const std::string ids = "id 1 32 int\n"; + pos = data.find(ids); + ASSERT_NE(pos, std::string::npos); + pos += ids.size(); + for (int i = 0; i < 32; ++i) + EXPECT_EQ(read_be(data.data() + pos + 4 * i), i + 1); + + // the box file is written in binary as well and gets the same title + + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(box_file), HasSubstr("my title\nBINARY\nDATASET RECTILINEAR_GRID\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, unknown_extension_is_legacy) +{ + const std::string dump_file = "dump_vtk_unknown.melt"; + const std::string box_file = "dump_vtk_unknown_boundingBox.melt"; + generate_dump(dump_file, "id type", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr("# vtk DataFile Version 5.1\n")); + EXPECT_THAT(slurp(dump_file), HasSubstr("DATASET POLYDATA\n")); + + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(box_file), HasSubstr("DATASET RECTILINEAR_GRID\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, legacy_triclinic_run0) +{ + const std::string dump_file = "dump_vtk_tri.vtk"; + const std::string box_file = "dump_vtk_tri_boundingBox.vtk"; + enable_triclinic(); + generate_dump(dump_file, "id type", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr("DATASET POLYDATA\nPOINTS 32 float\n")); + + // a triclinic box cannot be a rectilinear grid, it becomes a hexahedron + // cell (VTK cell type 12) of an unstructured grid instead + + ASSERT_FILE_EXISTS(box_file); + auto box = slurp(box_file); + EXPECT_THAT(box, HasSubstr("DATASET UNSTRUCTURED_GRID\nPOINTS 8 float\n")); + EXPECT_THAT(box, HasSubstr("CELLS 2 8\n")); + EXPECT_THAT(box, HasSubstr("CELL_TYPES 1\n12 \n")); + + delete_file(dump_file); + delete_file(box_file); +} + +//------------------------------------------------------------------------------------------------- +// XML formats +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpVTKTest, xml_polydata_run0) +{ + const std::string dump_file = "dump_vtk_poly.vtp"; + const std::string box_file = "dump_vtk_poly_boundingBox.vtr"; + generate_dump(dump_file, "id type vx vy vz", "sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, xml_unstructured_run0) +{ + const std::string dump_file = "dump_vtk_grid.vtu"; + const std::string box_file = "dump_vtk_grid_boundingBox.vtr"; + generate_dump(dump_file, "id type", "sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + + // each atom is written as a vertex cell (VTK cell type 1) + + EXPECT_EQ(xml_payload(text, R"(Name="types")"), std::vector(32, 1.0)); + + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(box_file), HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"(Name="Points" NumberOfComponents="3" format="binary">)")); + EXPECT_THAT(text, Not(HasSubstr(R"(format="ascii")"))); + + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(box_file), HasSubstr(R"(format="binary")")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, xml_triclinic_run0) +{ + const std::string dump_file = "dump_vtk_tri.vtp"; + const std::string box_file = "dump_vtk_tri_boundingBox.vtu"; + enable_triclinic(); + generate_dump(dump_file, "id type", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr(R"()")); + + // the box is a single hexahedron cell (VTK cell type 12) + + EXPECT_EQ(xml_payload(box, R"(Name="types")"), std::vector({12.0})); + + delete_file(dump_file); + delete_file(box_file); +} + +//------------------------------------------------------------------------------------------------- +// file names +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpVTKTest, multi_file_run1) +{ + generate_dump("dump_vtk_multi_*.vtk", "id type", "", 1); + + // one file per snapshot, and one box file to go with each of them + + for (const auto &step : {"0", "1"}) { + auto dump_file = fmt::format("dump_vtk_multi_{}.vtk", step); + auto box_file = fmt::format("dump_vtk_multi_{}_boundingBox.vtk", step); + ASSERT_FILE_EXISTS(dump_file); + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(dump_file), HasSubstr("POINTS 32 float\n")); + delete_file(dump_file); + delete_file(box_file); + } +} + +TEST_F(DumpVTKTest, per_processor_polydata) +{ + // the "%" is replaced by the processor id preceded by an underscore and + // rank 0 writes a summary file that lists the individual pieces + + generate_dump("dump_vtk_par_%.vtp", "id type element vx vy vz", "", 0); + + const std::string piece_file = "dump_vtk_par__0.vtp"; + const std::string summary_file = "dump_vtk_par_.pvtp"; + const std::string box_file = "dump_vtk_par__boundingBox.vtr"; + + ASSERT_FILE_EXISTS(piece_file); + ASSERT_FILE_EXISTS(summary_file); + ASSERT_FILE_EXISTS(box_file); + + // the summary must declare the same arrays as the pieces contain + + auto summary = slurp(summary_file); + EXPECT_THAT(summary, HasSubstr(R"()")); + EXPECT_THAT(summary, HasSubstr(R"()")); + EXPECT_THAT(summary, HasSubstr(R"()")); + EXPECT_THAT(summary, + HasSubstr(R"()")); + EXPECT_THAT(summary, + HasSubstr(R"()")); + EXPECT_THAT(summary, HasSubstr(fmt::format(R"()", piece_file))); + + delete_file(piece_file); + delete_file(summary_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, per_processor_multi_file_run1) +{ + generate_dump("dump_vtk_pm_%_*.vtu", "id type", "", 1); + + for (const auto &step : {"0", "1"}) { + auto piece_file = fmt::format("dump_vtk_pm__0_{}.vtu", step); + auto summary_file = fmt::format("dump_vtk_pm__{}.pvtu", step); + auto box_file = fmt::format("dump_vtk_pm__{}_boundingBox.vtr", step); + + ASSERT_FILE_EXISTS(piece_file); + ASSERT_FILE_EXISTS(summary_file); + ASSERT_FILE_EXISTS(box_file); + + auto summary = slurp(summary_file); + EXPECT_THAT(summary, HasSubstr(R"()", piece_file))); + + delete_file(piece_file); + delete_file(summary_file); + delete_file(box_file); + } +} + +TEST_F(DumpVTKTest, legacy_has_no_per_processor_files) +{ + const std::string dump_file = "dump_vtk_pct_0.vtk"; + const std::string box_file = "dump_vtk_pct_0_boundingBox.vtk"; + + // the legacy format writes a single file with all atoms, so the "%" in + // the file name becomes 0 instead of one file name per processor + + auto output = CAPTURE_OUTPUT([&] { + command("dump id all vtk 1 dump_vtk_pct_%.vtk id type"); + command("run 0 post no"); + }); + EXPECT_THAT(output, HasSubstr("Cannot write one file per processor with the legacy VTK")); + + ASSERT_FILE_NOT_EXISTS("dump_vtk_pct_%.vtk"); + ASSERT_FILE_EXISTS(dump_file); + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(dump_file), HasSubstr("POINTS 32 float\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, write_dump) +{ + const std::string reference = "dump_vtk_reference.vtp"; + const std::string dump_file = "dump_vtk_written.vtp"; + + BEGIN_HIDE_OUTPUT(); + command(fmt::format("dump id all vtk 1 {} id type", reference)); + command("dump_modify id sort id"); + command("run 0 post no"); + command(fmt::format("write_dump all vtk {} id type modify sort id", dump_file)); + END_HIDE_OUTPUT(); + + ASSERT_FILE_EXISTS(reference); + ASSERT_FILE_EXISTS(dump_file); + ASSERT_FILE_EQUAL(reference, dump_file); + + delete_file(reference); + delete_file(dump_file); + delete_file("dump_vtk_reference_boundingBox.vtr"); + delete_file("dump_vtk_written_boundingBox.vtr"); +} + +//------------------------------------------------------------------------------------------------- +// double precision output +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpVTKTest, double_precision_legacy) +{ + const std::string dump_file = "dump_vtk_double.vtk"; + const std::string box_file = "dump_vtk_double_boundingBox.vtk"; + + // dump_modify double yes switches all floating point data to double + // precision, including the box file + + generate_dump(dump_file, "id vx vy vz", "double yes sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr("POINTS 32 double\n")); + EXPECT_THAT(text, HasSubstr("v 3 32 double\n")); + + ASSERT_FILE_EXISTS(box_file); + EXPECT_THAT(slurp(box_file), HasSubstr("X_COORDINATES 2 double\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, double_precision_xml) +{ + const std::string dump_file = "dump_vtk_double.vtp"; + const std::string box_file = "dump_vtk_double_boundingBox.vtr"; + + generate_dump(dump_file, "id vx vy vz", "double yes sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, + HasSubstr(R"()")); + EXPECT_THAT(summary, + HasSubstr(R"()")); + + delete_file("dump_vtk_dpar__0.vtp"); + delete_file(summary_file); + delete_file("dump_vtk_dpar__boundingBox.vtr"); +} + +//------------------------------------------------------------------------------------------------- +// selecting a subset of the atoms +//------------------------------------------------------------------------------------------------- + +TEST_F(DumpVTKTest, thresh) +{ + const std::string dump_file = "dump_vtk_thresh.vtk"; + const std::string box_file = "dump_vtk_thresh_boundingBox.vtk"; + + // the lattice has 8 atoms in each of its 4 layers along x + + generate_dump(dump_file, "id type", "thresh x < 1.7 sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr("POINTS 24 float\n")); + EXPECT_THAT(text, HasSubstr("POINT_DATA 24\n")); + EXPECT_THAT(text, HasSubstr("id 1 24 int\n")); + + delete_file(dump_file); + delete_file(box_file); +} + +TEST_F(DumpVTKTest, region) +{ + const std::string dump_file = "dump_vtk_region.vtp"; + const std::string box_file = "dump_vtk_region_boundingBox.vtr"; + + BEGIN_HIDE_OUTPUT(); + command("region left block INF 1.7 INF INF INF INF units box"); + END_HIDE_OUTPUT(); + generate_dump(dump_file, "id type", "region left sort id", 0); + + ASSERT_FILE_EXISTS(dump_file); + EXPECT_THAT(slurp(dump_file), HasSubstr(R"( env = LAMMPS_NS::utils::split_words(var); + for (auto arg : env) { + if (arg == "-v") { + verbose = true; + } + } + } + + if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; + + int rv = RUN_ALL_TESTS(); + MPI_Finalize(); + return rv; +} diff --git a/unittest/formats/test_dump_vtk_mpi.cpp b/unittest/formats/test_dump_vtk_mpi.cpp new file mode 100644 index 00000000000..65c58cd5e07 --- /dev/null +++ b/unittest/formats/test_dump_vtk_mpi.cpp @@ -0,0 +1,202 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS Development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +// Tests for the parts of the "vtk" dump style that need more than one MPI +// process: the per processor piece files, the parallel summary file that +// refers to them, and collecting a complete snapshot in a single file. + +#include "../testing/core.h" +#include "../testing/systems/melt.h" +#include "../testing/utils.h" +#include "comm.h" +#include "fmt/format.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include +#include +#include + +#include "../testing/test_mpi_main.h" + +using ::testing::HasSubstr; +using ::testing::Not; + +namespace LAMMPS_NS { + +static std::string slurp(const std::string &filename) +{ + std::ifstream in(filename, std::ios::binary); + std::ostringstream buf; + buf << in.rdbuf(); + return buf.str(); +} + +// read the value of an integer XML attribute, e.g. NumberOfPoints="8" + +static int xml_attribute(const std::string &text, const std::string &name) +{ + const auto pos = text.find(name + "=\""); + if (pos == std::string::npos) return -1; + return atoi(text.c_str() + pos + name.size() + 2); +} + +class DumpVTKParallelTest : public MeltTest { +public: + int me() const { return lmp->comm->me; } + int nprocs() const { return lmp->comm->nprocs; } + + void generate_dump(const std::string &dump_file, const std::string &dump_modify_options) + { + BEGIN_HIDE_OUTPUT(); + command(fmt::format("dump id all vtk 1 {} id type", dump_file)); + + if (!dump_modify_options.empty()) { + command(fmt::format("dump_modify id {}", dump_modify_options)); + } + + command("run 0 post no"); + END_HIDE_OUTPUT(); + + // the piece files are written by their own processor, so wait for all + // of them before looking at any file that is not our own + + MPI_Barrier(MPI_COMM_WORLD); + } +}; + +TEST_F(DumpVTKParallelTest, polydata_pieces) +{ + generate_dump("dump_vtk_par_%.vtp", ""); + + // every processor writes its own piece and the pieces together hold the + // complete system + + const auto piece_file = fmt::format("dump_vtk_par__{}.vtp", me()); + ASSERT_FILE_EXISTS(piece_file); + + int mypoints = xml_attribute(slurp(piece_file), "NumberOfPoints"); + ASSERT_GE(mypoints, 0); + int npoints = 0; + MPI_Allreduce(&mypoints, &npoints, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); + ASSERT_EQ(npoints, 32); + + // the summary file lists one piece per processor + + if (me() == 0) { + const std::string summary_file = "dump_vtk_par_.pvtp"; + ASSERT_FILE_EXISTS(summary_file); + auto summary = slurp(summary_file); + EXPECT_THAT(summary, HasSubstr(R"()", i))); + EXPECT_THAT(summary, Not(HasSubstr(fmt::format(R"(dump_vtk_par__{}.vtp)", nprocs())))); + + // the box is written once, by the first processor + + ASSERT_FILE_EXISTS("dump_vtk_par__boundingBox.vtr"); + delete_file(summary_file); + delete_file("dump_vtk_par__boundingBox.vtr"); + } + delete_file(piece_file); +} + +TEST_F(DumpVTKParallelTest, unstructured_pieces) +{ + generate_dump("dump_vtk_pgrid_%.vtu", ""); + + const auto piece_file = fmt::format("dump_vtk_pgrid__{}.vtu", me()); + ASSERT_FILE_EXISTS(piece_file); + EXPECT_THAT(slurp(piece_file), HasSubstr(R"()", i))); + delete_file(summary_file); + delete_file("dump_vtk_pgrid__boundingBox.vtr"); + } + delete_file(piece_file); +} + +TEST_F(DumpVTKParallelTest, fewer_files_than_processors) +{ + if (nprocs() < 2) GTEST_SKIP(); + + // with "nfile 2" only two processors write, each collecting the data of + // its cluster of processors + + generate_dump("dump_vtk_nfile_%.vtp", "nfile 2"); + + if (me() == 0) { + int npoints = 0; + for (int i = 0; i < 2; ++i) { + const auto piece_file = fmt::format("dump_vtk_nfile__{}.vtp", i); + ASSERT_FILE_EXISTS(piece_file); + npoints += xml_attribute(slurp(piece_file), "NumberOfPoints"); + delete_file(piece_file); + } + ASSERT_EQ(npoints, 32); + + // no processor beyond the two file writers has written anything + + for (int i = 2; i < nprocs(); ++i) + ASSERT_FILE_NOT_EXISTS(fmt::format("dump_vtk_nfile__{}.vtp", i)); + + const std::string summary_file = "dump_vtk_nfile_.pvtp"; + ASSERT_FILE_EXISTS(summary_file); + auto summary = slurp(summary_file); + EXPECT_THAT(summary, HasSubstr(R"()")); + EXPECT_THAT(summary, HasSubstr(R"()")); + EXPECT_THAT(summary, Not(HasSubstr(R"(dump_vtk_nfile__2.vtp)"))); + delete_file(summary_file); + delete_file("dump_vtk_nfile__boundingBox.vtr"); + } +} + +TEST_F(DumpVTKParallelTest, legacy_collects_all_atoms) +{ + // the legacy format has no per processor output: the "%" becomes 0 and + // the first processor writes all atoms of the system into that one file + + generate_dump("dump_vtk_legacy_%.vtk", "sort id"); + + const std::string dump_file = "dump_vtk_legacy_0.vtk"; + const std::string box_file = "dump_vtk_legacy_0_boundingBox.vtk"; + ASSERT_FILE_EXISTS(dump_file); + ASSERT_FILE_EXISTS(box_file); + for (int i = 1; i < nprocs(); ++i) + ASSERT_FILE_NOT_EXISTS(fmt::format("dump_vtk_legacy_{}.vtk", i)); + + // sorting is what puts the atoms of the different processors in order + + auto text = slurp(dump_file); + EXPECT_THAT(text, HasSubstr("POINTS 32 float\n")); + EXPECT_THAT(text, HasSubstr("id 1 32 int\n1 2 3 4 5 6 7 8 9\n")); + + // all processors read the same file, so it may only be removed once they + // are done with it + + MPI_Barrier(MPI_COMM_WORLD); + if (me() == 0) { + delete_file(dump_file); + delete_file(box_file); + } +} +} // namespace LAMMPS_NS diff --git a/unittest/formats/test_vtk_writer.cpp b/unittest/formats/test_vtk_writer.cpp new file mode 100644 index 00000000000..2cecb3b7818 --- /dev/null +++ b/unittest/formats/test_vtk_writer.cpp @@ -0,0 +1,623 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + 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. +------------------------------------------------------------------------- */ + +// Tests for the VTKWriter class. These check the structure of the produced +// files and decode the binary payloads, so that the layouts the VTK library +// expects are pinned down without needing that library to be installed. + +#include "vtk_writer.h" + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef LAMMPS_ZLIB +#include +#endif + +using namespace LAMMPS_NS; +using testing::HasSubstr; +using testing::Not; + +namespace { + +// read a whole file, including any embedded null bytes + +std::string slurp(const std::string &filename) +{ + std::ifstream in(filename, std::ios::binary); + std::ostringstream buf; + buf << in.rdbuf(); + return buf.str(); +} + +std::string base64_decode(const std::string &text) +{ + auto value = [](char c) -> int { + if (c >= 'A' && c <= 'Z') return c - 'A'; + if (c >= 'a' && c <= 'z') return c - 'a' + 26; + if (c >= '0' && c <= '9') return c - '0' + 52; + if (c == '+') return 62; + if (c == '/') return 63; + return -1; + }; + + std::string out; + int bits = 0, nbits = 0; + for (const char c : text) { + const int v = value(c); + if (v < 0) continue; // skip padding and whitespace + bits = (bits << 6) | v; + nbits += 6; + if (nbits >= 8) { + nbits -= 8; + out += static_cast((bits >> nbits) & 0xff); + } + } + return out; +} + +// pull the text between the first ">" after "marker" and the following "<" + +std::string payload_after(const std::string &file, const std::string &marker) +{ + auto pos = file.find(marker); + if (pos == std::string::npos) return ""; + pos = file.find('>', pos); + if (pos == std::string::npos) return ""; + const auto end = file.find('<', pos); + return file.substr(pos + 1, end - pos - 1); +} + +std::vector parse_numbers(const std::string &text) +{ + std::istringstream in(text); + std::vector out; + double v; + while (in >> v) + out.push_back(v); + return out; +} + +// decode the content of an inline binary XML data array back to raw bytes. +// without compression the byte count header and the data share one base64 +// stream; with compression the header is encoded separately. + +std::string decode_binary_payload(const std::string &raw_payload, std::uint32_t expected_bytes) +{ + // drop the indentation and line breaks so that character offsets into the + // encoded stream are meaningful + std::string payload; + for (const char c : raw_payload) + if (!isspace(static_cast(c))) payload += c; + + const std::string first = base64_decode(payload); + EXPECT_GE(first.size(), 4u); + if (first.size() < 4) return ""; + + std::uint32_t header[4] = {0, 0, 0, 0}; + memcpy(header, first.data(), std::min(16, first.size())); + + // uncompressed: a single stream of [byte count][data] + if (header[0] == expected_bytes && first.size() == expected_bytes + 4) return first.substr(4); + + // compressed: [nblocks][block size][last partial block][compressed size] + EXPECT_EQ(header[0], 1u) << "expected exactly one compressed block"; + EXPECT_EQ(header[1], expected_bytes) << "uncompressed size in block header"; + EXPECT_EQ(header[2], 0u) << "no partial last block for a single block"; + + // the header occupies the first 24 base64 characters, the data follows + const std::string data = base64_decode(payload.substr(24)); + EXPECT_EQ(data.size(), header[3]) << "compressed size in block header"; + +#ifdef LAMMPS_ZLIB + std::string out(expected_bytes, '\0'); + uLongf len = expected_bytes; + const int rv = + uncompress(reinterpret_cast(&out[0]), &len, + reinterpret_cast(data.data()), static_cast(data.size())); + EXPECT_EQ(rv, Z_OK); + EXPECT_EQ(len, expected_bytes); + return out; +#else + return ""; +#endif +} + +bool little_endian() +{ + const int one = 1; + return *((const char *)&one) == 1; +} + +// legacy binary payloads are big endian, so the bytes only have to be +// reversed when the host stores them the other way around + +template T read_be(const char *p) +{ + char buf[sizeof(T)]; + if (little_endian()) { + for (std::size_t i = 0; i < sizeof(T); ++i) + buf[i] = p[sizeof(T) - 1 - i]; + } else { + memcpy(buf, p, sizeof(T)); + } + T v; + memcpy(&v, buf, sizeof(T)); + return v; +} + +float be_float(const char *p) +{ + return read_be(p); +} + +std::int32_t be_int32(const char *p) +{ + return read_be(p); +} + +// a small reusable data set: 4 points with a scalar, a vector and names + +const std::vector COORDS = {0.0, 0.0, 0.0, 1.5, 0.0, 0.0, 1.5, 2.5, 0.0, 0.0, 2.5, -3.25}; +const std::vector IDS = {1, 2, 3, 4}; +const std::vector VECS = {0.5, -1.5, 2.5, 1.0, -2.0, 3.0, 1.5, -2.5, 3.5, 2.0, -3.0, 4.0}; +const std::vector NAMES = {"C", "O", "Na", "C"}; + +class VTKWriterTest : public ::testing::Test { +protected: + std::vector tempfiles; + + std::string tempfile(const std::string &name) + { + tempfiles.push_back(name); + return name; + } + + void TearDown() override + { + for (const auto &f : tempfiles) + remove(f.c_str()); + } +}; + +} // namespace + +TEST_F(VTKWriterTest, LegacyAsciiPolyData) +{ + const auto file = tempfile("vtkwriter_poly.vtk"); + VTKWriter writer(VTKWriter::LEGACY, false); + writer.set_title("test title"); + writer.set_polydata(COORDS); + writer.add_point_array("id", 1, IDS); + writer.add_point_array("v", 3, VECS); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr("# vtk DataFile Version 5.1\ntest title\nASCII\n")); + EXPECT_THAT(text, HasSubstr("DATASET POLYDATA\nPOINTS 4 float\n")); + + // one vertex cell per point, offsets start at zero and have one extra entry + EXPECT_THAT(text, HasSubstr("VERTICES 5 4\nOFFSETS vtktypeint64\n0 1 2 3 4 \n")); + EXPECT_THAT(text, HasSubstr("CONNECTIVITY vtktypeint64\n0 1 2 3 \n")); + + // arrays that are not the active scalars become field data + EXPECT_THAT(text, HasSubstr("POINT_DATA 4\nFIELD FieldData 2\n")); + EXPECT_THAT(text, HasSubstr("id 1 4 int\n1 2 3 4 \n")); + EXPECT_THAT(text, HasSubstr("v 3 4 float\n")); + EXPECT_THAT(text, Not(HasSubstr("SCALARS"))); + + EXPECT_GE(parse_numbers(text.substr(text.find("POINTS 4 float\n") + 15)).size(), 12u); +} + +TEST_F(VTKWriterTest, LegacyActiveScalars) +{ + const auto file = tempfile("vtkwriter_scalars.vtk"); + VTKWriter writer(VTKWriter::LEGACY, false); + writer.set_polydata(COORDS); + writer.add_point_array("intensity", 1, std::vector{1.0, 2.0, 3.0, 4.0}); + writer.add_point_array("id", 1, IDS); + writer.set_active_scalars("intensity"); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr("SCALARS intensity float\nLOOKUP_TABLE default\n1 2 3 4 \n")); + + // the remaining array is still written as field data + EXPECT_THAT(text, HasSubstr("FIELD FieldData 1\n")); + EXPECT_THAT(text, HasSubstr("id 1 4 int\n")); +} + +TEST_F(VTKWriterTest, LegacyBinaryIsBigEndian) +{ + const auto file = tempfile("vtkwriter_poly_bin.vtk"); + VTKWriter writer(VTKWriter::LEGACY, true); + writer.set_polydata(COORDS); + writer.add_point_array("id", 1, IDS); + writer.write(file); + + const auto data = slurp(file); + EXPECT_THAT(data, HasSubstr("BINARY\n")); + + auto pos = data.find("POINTS 4 float\n"); + ASSERT_NE(pos, std::string::npos); + pos += strlen("POINTS 4 float\n"); + for (std::size_t i = 0; i < COORDS.size(); ++i) + EXPECT_FLOAT_EQ(be_float(data.data() + pos + 4 * i), static_cast(COORDS[i])); + + pos = data.find("id 1 4 int\n"); + ASSERT_NE(pos, std::string::npos); + pos += strlen("id 1 4 int\n"); + for (std::size_t i = 0; i < IDS.size(); ++i) + EXPECT_EQ(be_int32(data.data() + pos + 4 * i), IDS[i]); +} + +TEST_F(VTKWriterTest, LegacyStrings) +{ + const auto ascii = tempfile("vtkwriter_str.vtk"); + VTKWriter writer(VTKWriter::LEGACY, false); + writer.set_polydata(COORDS); + writer.add_point_array("element", NAMES); + writer.write(ascii); + + // ASCII strings are written one per line + EXPECT_THAT(slurp(ascii), HasSubstr("element 1 4 string\nC\nO\nNa\nC\n")); + + // binary strings carry a single byte 0xc0|length prefix + const auto binary = tempfile("vtkwriter_str_bin.vtk"); + VTKWriter bwriter(VTKWriter::LEGACY, true); + bwriter.set_polydata(COORDS); + bwriter.add_point_array("element", NAMES); + bwriter.write(binary); + + std::string expect("element 1 4 string\n"); + for (const auto &name : NAMES) { + expect += static_cast(0xc0 | name.size()); + expect += name; + } + expect += "\n"; + EXPECT_THAT(slurp(binary), HasSubstr(expect)); +} + +TEST_F(VTKWriterTest, LegacyBinaryRejectsLongStrings) +{ + const auto file = tempfile("vtkwriter_longstr.vtk"); + VTKWriter writer(VTKWriter::LEGACY, true); + writer.set_polydata(COORDS); + writer.add_point_array("element", {std::string(64, 'x'), "b", "c", "d"}); + EXPECT_THROW(writer.write(file), VTKWriterException); +} + +TEST_F(VTKWriterTest, XmlAsciiPolyData) +{ + const auto file = tempfile("vtkwriter_poly.vtp"); + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + writer.add_point_array("id", 1, IDS); + writer.add_point_array("v", 3, VECS); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"(({1, 2, 3, 4})); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="Points")")), COORDS); + + // XML offsets are end offsets, one per cell + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="offsets")")), + std::vector({1, 2, 3, 4})); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="connectivity")")), + std::vector({0, 1, 2, 3})); +} + +TEST_F(VTKWriterTest, XmlUnstructuredGridHasCellTypes) +{ + const auto file = tempfile("vtkwriter_grid.vtu"); + VTKWriter writer(VTKWriter::XML, false); + writer.set_unstructured_grid(COORDS); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"()")); + // VTK_VERTEX is cell type 1 + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="types")")), + std::vector({1, 1, 1, 1})); +} + +TEST_F(VTKWriterTest, Hexahedron) +{ + const auto file = tempfile("vtkwriter_hex.vtu"); + double corners[8][3] = {{0, 0, 0}, {5, 0, 0}, {6, 4, 0}, {1, 4, 0}, + {2, 1, 7}, {7, 1, 7}, {8, 5, 7}, {3, 5, 7}}; + VTKWriter writer(VTKWriter::XML, false); + writer.set_hexahedron(corners); + EXPECT_EQ(writer.number_of_points(), 8); + EXPECT_EQ(writer.number_of_cells(), 1); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"()")); + // VTK_HEXAHEDRON is cell type 12 + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="types")")), std::vector({12})); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="offsets")")), std::vector({8})); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="connectivity")")), + std::vector({0, 1, 2, 3, 4, 5, 6, 7})); +} + +TEST_F(VTKWriterTest, XmlStringArray) +{ + const auto file = tempfile("vtkwriter_str.vtp"); + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + writer.add_point_array("element", NAMES); + writer.write(file); + + const auto text = slurp(file); + // string arrays use , not + EXPECT_THAT(text, HasSubstr(R"()")); + // the ASCII form lists character codes with a zero terminating each string + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="element")")), + std::vector({67, 0, 79, 0, 78, 97, 0, 67, 0})); +} + +TEST_F(VTKWriterTest, XmlBinaryPayloads) +{ + const auto file = tempfile("vtkwriter_poly_bin.vtp"); + VTKWriter writer(VTKWriter::XML, true); + writer.set_polydata(COORDS); + writer.add_point_array("id", 1, IDS); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"(format="binary")")); + + // the test is compiled with zlib support whenever the writer is, so the + // payload can always be decoded back to the original values + + const auto ids = decode_binary_payload(payload_after(text, R"(Name="id")"), + IDS.size() * sizeof(std::int32_t)); + ASSERT_EQ(ids.size(), IDS.size() * sizeof(std::int32_t)); + for (std::size_t i = 0; i < IDS.size(); ++i) { + std::int32_t v; + memcpy(&v, ids.data() + 4 * i, 4); + EXPECT_EQ(v, IDS[i]); + } + + // coordinates are stored in single precision + const auto pts = decode_binary_payload(payload_after(text, R"(Name="Points")"), + COORDS.size() * sizeof(float)); + ASSERT_EQ(pts.size(), COORDS.size() * sizeof(float)); + for (std::size_t i = 0; i < COORDS.size(); ++i) { + float v; + memcpy(&v, pts.data() + 4 * i, 4); + EXPECT_FLOAT_EQ(v, static_cast(COORDS[i])); + } +} + +TEST_F(VTKWriterTest, RectilinearGrid) +{ + const std::vector xc = {0.0, 1.0, 3.0}, yc = {0.0, 2.0}, zc = {0.0, 0.5}; + const std::vector cells = {1.0, 2.0}; + + const auto file = tempfile("vtkwriter_rect.vtr"); + VTKWriter writer(VTKWriter::XML, false); + writer.set_rectilinear_grid(xc, yc, zc); + writer.add_cell_array("value", 1, cells); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="x")")), xc); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="value")")), cells); + + // the same grid in the legacy format + const auto legacy = tempfile("vtkwriter_rect.vtk"); + VTKWriter lwriter(VTKWriter::LEGACY, false); + lwriter.set_rectilinear_grid(xc, yc, zc); + lwriter.add_cell_array("value", 1, cells); + lwriter.write(legacy); + + const auto ltext = slurp(legacy); + EXPECT_THAT(ltext, HasSubstr("DATASET RECTILINEAR_GRID\nDIMENSIONS 3 2 2\n")); + EXPECT_THAT(ltext, HasSubstr("X_COORDINATES 3 float\n0 1 3 \n")); + EXPECT_THAT(ltext, HasSubstr("CELL_DATA 2\n")); +} + +TEST_F(VTKWriterTest, ImageData) +{ + const int dim[3] = {3, 2, 2}; + const double origin[3] = {-1.0, -2.0, -3.0}; + const double spacing[3] = {0.25, 0.5, 1.0}; + std::vector vals(12); + for (int i = 0; i < 12; ++i) + vals[i] = 0.5 * i; + + const auto file = tempfile("vtkwriter_image.vti"); + VTKWriter writer(VTKWriter::XML, false); + writer.set_image_data(dim, origin, spacing); + writer.add_point_array("intensity", 1, vals); + writer.set_active_scalars("intensity"); + writer.write(file); + + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"()")); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="intensity")")), vals); + + // the legacy spelling of the same data set + const auto legacy = tempfile("vtkwriter_image.vtk"); + VTKWriter lwriter(VTKWriter::LEGACY, false); + lwriter.set_image_data(dim, origin, spacing); + lwriter.add_point_array("intensity", 1, vals); + lwriter.set_active_scalars("intensity"); + lwriter.write(legacy); + + const auto ltext = slurp(legacy); + EXPECT_THAT(ltext, HasSubstr("DATASET STRUCTURED_POINTS\nDIMENSIONS 3 2 2\n")); + EXPECT_THAT(ltext, HasSubstr("SPACING 0.25 0.5 1\nORIGIN -1 -2 -3\n")); + EXPECT_THAT(ltext, HasSubstr("POINT_DATA 12\nSCALARS intensity float\n")); +} + +TEST_F(VTKWriterTest, TracksSinglePrecisionMagnitude) +{ + // coordinates are stored in single precision, so the writer reports the + // largest magnitude that went through it. callers use this to warn when + // that no longer resolves the data well enough. + + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata({0.0, -5.0, 0.0, 1.5, 0.0, 2.0e5}); + EXPECT_DOUBLE_EQ(writer.max_single_precision_value(), 2.0e5); + + // data arrays are written in single precision too, but not tracked: + // their values only need relative resolution, which single precision + // always provides. only coordinates need absolute resolution. + writer.add_point_array("big", 1, std::vector({1.0e30, -1.0e30})); + EXPECT_DOUBLE_EQ(writer.max_single_precision_value(), 2.0e5); + + // grid coordinates are tracked the same way + VTKWriter grid(VTKWriter::XML, false); + grid.set_rectilinear_grid({0.0, 3.0e4}, {0.0, 1.0}, {-7.0e4, 0.0}); + EXPECT_DOUBLE_EQ(grid.max_single_precision_value(), 7.0e4); + + // nothing is tracked when the caller asks for double precision + VTKWriter exact(VTKWriter::XML, false, VTKWriter::DOUBLE); + exact.set_polydata({0.0, 0.0, 0.0, 9.0e9, 0.0, 0.0}); + EXPECT_DOUBLE_EQ(exact.max_single_precision_value(), 0.0); + + // and then coordinates and data arrays really are written as Float64 + exact.add_point_array("val", 1, std::vector({1.0, 2.0})); + const auto file = tempfile("vtkwriter_double.vtp"); + exact.write(file); + const auto text = slurp(file); + EXPECT_THAT(text, HasSubstr(R"(type="Float64" Name="Points")")); + EXPECT_THAT(text, HasSubstr(R"(type="Float64" Name="val")")); +} + +TEST_F(VTKWriterTest, DoublePrecisionRoundTrips) +{ + // double precision ASCII output uses the shortest representation that + // reads back as exactly the same number, unlike the 11 significant + // digits the VTK library writes + + const std::vector exact = {1.0 / 3.0, 2.0e-101, 3.141592653589793}; + const std::vector coords = {0.1, 0.2, 0.3}; + + const auto file = tempfile("vtkwriter_roundtrip.vtp"); + VTKWriter writer(VTKWriter::XML, false, VTKWriter::DOUBLE); + writer.set_polydata(coords); + writer.add_point_array("val", 3, exact); + writer.write(file); + + const auto text = slurp(file); + const auto vals = parse_numbers(payload_after(text, R"(Name="val")")); + ASSERT_EQ(vals.size(), exact.size()); + for (std::size_t i = 0; i < exact.size(); ++i) + EXPECT_DOUBLE_EQ(vals[i], exact[i]); + EXPECT_EQ(parse_numbers(payload_after(text, R"(Name="Points")")), coords); + + // the same values in the legacy format + const auto legacy = tempfile("vtkwriter_roundtrip.vtk"); + VTKWriter lwriter(VTKWriter::LEGACY, false, VTKWriter::DOUBLE); + lwriter.set_polydata(coords); + lwriter.add_point_array("val", 3, exact); + lwriter.write(legacy); + + const auto ltext = slurp(legacy); + EXPECT_THAT(ltext, HasSubstr("POINTS 1 double\n0.1 0.2 0.3 \n")); + const auto pos = ltext.find("val 3 1 double\n"); + ASSERT_NE(pos, std::string::npos); + const auto lvals = parse_numbers(ltext.substr(pos + strlen("val 3 1 double\n"))); + ASSERT_GE(lvals.size(), exact.size()); + for (std::size_t i = 0; i < exact.size(); ++i) + EXPECT_DOUBLE_EQ(lvals[i], exact[i]); +} + +TEST_F(VTKWriterTest, SinglePrecisionResolutionLimit) +{ + // the documented limit has to be the magnitude at which single precision + // stops resolving 3 digits after the decimal point + const double resolution = VTKWriter::SINGLE_PRECISION_LIMIT * + static_cast(std::numeric_limits::epsilon()); + EXPECT_LT(resolution, 0.01); + EXPECT_GT(resolution, 0.0001); +} + +TEST_F(VTKWriterTest, ErrorsOnInconsistentInput) +{ + // no dataset selected + { + VTKWriter writer(VTKWriter::XML, false); + EXPECT_THROW(writer.add_point_array("id", 1, IDS), VTKWriterException); + EXPECT_THROW(writer.write("vtkwriter_never.vtp"), VTKWriterException); + } + // two datasets + { + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + EXPECT_THROW(writer.set_unstructured_grid(COORDS), VTKWriterException); + } + // coordinate list that is not a multiple of 3 + { + VTKWriter writer(VTKWriter::XML, false); + EXPECT_THROW(writer.set_polydata({0.0, 1.0}), VTKWriterException); + } + // array length does not match the number of points + { + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + EXPECT_THROW(writer.add_point_array("id", 1, std::vector({1, 2})), VTKWriterException); + EXPECT_THROW(writer.add_point_array("v", 3, std::vector({1.0, 2.0, 3.0})), + VTKWriterException); + } + // marking an array that was never added + { + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + EXPECT_THROW(writer.set_active_scalars("nope"), VTKWriterException); + } + // a location that cannot be written + { + VTKWriter writer(VTKWriter::XML, false); + writer.set_polydata(COORDS); + EXPECT_THROW(writer.write("no_such_directory/out.vtp"), VTKWriterException); + } +} + +int main(int argc, char **argv) +{ + ::testing::InitGoogleMock(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/unittest/graphics/tests/dump-image-defocus-start.yaml b/unittest/graphics/tests/dump-image-defocus-start.yaml new file mode 100644 index 00000000000..75636101862 --- /dev/null +++ b/unittest/graphics/tests/dump-image-defocus-start.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Mon Jul 27 21:41:55 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 fsaa yes defocus yes 0.8 0.3 + dump_modify viz backcolor blue backcolor2 black +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 16.28 25.99 17.23 + 12.12 19.12 16.51 + 12.54 18.43 20.36 + 15.70 20.46 20.29 + 15.38 20.29 18.98 + 14.89 19.67 17.86 + 14.79 19.45 16.43 + 14.36 18.50 15.62 + 14.31 17.73 16.16 + 14.52 19.16 19.80 + 15.29 21.23 23.00 + 15.79 22.06 25.57 + 15.94 24.31 29.59 + 18.00 34.56 40.73 + 21.75 48.59 55.27 + 22.19 50.74 55.59 + 19.71 42.05 46.73 + 18.98 34.65 47.09 + 20.30 34.30 53.09 + 17.77 35.53 56.69 + 12.70 34.95 61.03 + 11.87 42.03 69.92 + 13.50 46.92 72.97 + 14.07 46.72 69.32 + 13.15 43.31 62.34 + 13.20 42.05 61.41 + 14.28 40.30 64.04 + 14.43 41.08 67.70 + 14.56 41.35 70.25 + 16.18 41.85 76.03 + 17.54 46.12 78.49 + 15.89 45.98 75.89 + 15.45 48.58 74.41 + 15.51 52.63 76.45 + 15.78 52.82 77.20 + 15.22 48.27 72.53 + 14.82 42.60 67.77 + 15.43 44.66 72.42 + 15.52 52.06 80.41 + 16.39 55.83 84.03 + 17.76 55.66 85.67 + 21.01 58.02 85.64 + 22.72 61.79 87.44 + 25.39 59.45 84.91 + 22.75 52.84 75.45 + 19.43 58.56 81.28 + 18.98 61.17 93.89 + 19.23 63.55 100.81 + 20.18 61.27 98.23 + 23.77 64.83 96.99 + 26.30 65.75 94.50 + 26.74 65.27 94.81 + 27.22 65.83 91.11 + 28.70 67.38 89.64 + 31.32 64.75 82.78 + 31.37 67.16 84.44 + 31.49 70.07 89.19 + 29.01 68.05 91.02 + 26.18 59.64 88.25 + 28.52 55.95 86.82 + 32.65 61.40 93.81 + 36.15 62.90 92.28 + 37.72 69.02 96.64 + 36.26 78.88 100.69 + 34.72 81.22 97.92 + 29.67 73.42 89.74 + 23.95 62.26 86.15 + 25.60 63.62 97.23 + 28.21 67.93 101.39 + 28.71 63.01 98.86 + 28.66 55.06 91.26 + 32.22 55.42 90.49 + 31.55 57.24 98.04 + 27.45 61.00 99.94 + 26.73 70.84 98.94 + 27.71 78.05 101.67 + 27.50 69.92 101.61 + 25.95 63.62 101.77 + 24.43 59.45 97.39 + 25.02 60.25 96.31 + 27.19 69.34 99.87 + 28.63 75.32 109.17 + 26.09 65.88 106.08 + 24.96 62.45 101.51 + 23.07 56.34 98.87 + 19.18 58.38 104.22 + 13.49 59.06 108.09 + 13.01 60.09 111.33 + 13.06 63.42 109.78 + 15.49 68.05 110.89 + 15.21 66.49 109.39 + 15.99 63.88 110.00 + 15.38 66.28 112.50 + 13.16 62.00 107.36 + 12.51 60.58 107.50 + 12.15 58.74 105.92 + 12.92 59.38 110.79 + 14.78 60.94 118.82 + 14.06 59.95 118.75 + 11.01 47.23 109.22 + 10.88 47.01 110.12 + 12.02 46.30 115.94 + 12.82 49.66 119.61 + 14.44 63.12 119.17 + 17.07 72.47 123.83 + 15.96 73.91 117.50 + 13.54 64.67 107.06 + 13.46 58.01 108.43 + 14.14 55.06 111.67 + 16.64 50.70 113.72 + 19.56 47.20 108.83 + 18.93 48.56 112.26 + 19.68 68.36 118.80 + 20.93 79.34 121.69 + 19.48 77.28 115.80 + 17.07 68.67 110.42 + 18.70 62.88 110.95 + 20.86 67.88 116.23 + 18.63 66.11 115.22 + 16.07 56.04 115.61 + 12.81 47.59 116.25 + 11.54 45.92 120.61 + 12.56 54.77 120.47 + 15.48 66.42 125.50 + 16.00 69.03 122.14 + 15.98 62.83 116.61 + 16.98 62.55 113.31 + 17.64 65.91 113.64 + 16.36 68.32 113.81 + 15.26 70.06 124.16 + 16.20 66.50 126.09 + 15.03 61.72 124.12 + 13.70 58.40 125.08 + 13.30 53.23 125.22 + 12.27 45.28 128.50 + 9.65 46.86 124.31 + 13.87 62.83 131.78 + 18.71 72.55 135.68 + 17.07 63.85 128.18 + 17.82 56.73 122.36 + 19.34 56.39 128.10 + 16.82 59.04 128.89 + 13.66 59.05 119.67 + 12.21 58.48 119.22 + 13.11 58.15 125.72 + 14.93 57.95 126.56 + 17.87 56.62 131.16 + 19.71 54.59 130.38 + 22.04 60.65 134.92 + 19.50 57.65 137.44 + 15.28 54.27 139.98 + 13.04 52.84 138.18 + 13.78 55.10 140.62 + 15.26 57.13 137.80 + 17.93 65.36 136.75 + 19.03 68.70 130.92 + 17.86 64.09 131.38 + 15.40 54.66 131.71 + 12.04 41.43 136.98 + 9.80 36.39 144.69 + 10.89 40.41 150.07 + 13.63 44.87 155.38 + 15.62 49.19 156.31 + 16.34 53.62 153.60 + 16.61 51.40 153.71 + 18.02 53.47 159.83 + 18.29 54.34 156.62 + 16.98 47.21 149.86 + 14.52 37.49 149.47 + 12.70 32.38 151.81 + 12.09 34.34 167.31 + 12.70 42.37 168.84 + 15.49 52.40 170.59 + 16.43 50.07 164.03 + 13.85 38.26 159.50 + 10.84 26.88 170.40 + 9.79 25.35 184.51 + 10.46 30.65 191.10 + 12.94 29.98 190.26 + 17.19 30.05 187.82 + 16.52 28.05 185.79 + 16.82 30.98 185.09 + 19.46 38.34 186.48 + 19.23 38.46 188.03 + 17.68 33.13 190.60 + 16.47 28.16 193.63 + 17.29 23.38 197.02 + 18.86 24.12 198.01 + 18.78 26.23 197.79 + 18.74 26.39 200.77 + 17.68 24.32 203.35 + 17.11 22.29 206.38 + 17.23 19.70 208.39 + 18.71 26.34 210.46 + 19.28 29.43 205.76 + 18.80 27.57 204.94 + 14.23 22.69 211.59 + 13.15 21.10 216.66 + 16.84 21.62 217.94 + 17.90 19.93 222.87 +col_means: | + 13.46 18.86 118.61 + 13.94 20.58 117.33 + 13.24 19.41 115.05 + 12.61 19.43 113.82 + 12.82 22.65 116.66 + 14.03 26.60 117.16 + 14.03 30.71 114.31 + 14.88 32.06 110.58 + 15.41 30.52 112.02 + 15.83 32.05 111.39 + 16.30 31.88 110.72 + 16.43 28.46 110.56 + 15.91 26.86 110.02 + 16.27 31.16 109.74 + 15.93 32.41 110.05 + 15.11 33.52 109.95 + 15.16 36.52 111.03 + 15.67 37.60 115.73 + 15.04 36.68 115.80 + 15.85 37.05 114.91 + 16.09 37.50 114.91 + 16.09 36.10 114.36 + 15.94 35.25 114.14 + 17.93 40.20 117.31 + 20.25 48.69 118.72 + 18.59 48.92 119.28 + 16.43 42.70 114.53 + 16.71 39.69 112.04 + 16.23 40.95 114.63 + 17.67 48.80 122.56 + 18.38 52.20 121.78 + 17.02 51.59 114.85 + 15.07 46.96 107.98 + 15.56 41.88 109.01 + 14.97 37.38 109.58 + 17.73 42.72 110.32 + 19.59 48.57 114.55 + 19.11 55.33 118.57 + 18.89 56.62 115.47 + 16.79 49.38 111.59 + 14.86 42.22 110.17 + 16.69 48.33 115.14 + 18.28 53.59 117.19 + 19.00 58.88 115.11 + 19.75 65.92 116.73 + 19.30 61.91 113.76 + 18.64 52.37 113.71 + 18.10 45.92 112.96 + 17.55 44.63 111.71 + 18.18 50.66 113.97 + 18.59 56.87 115.94 + 17.89 59.00 116.11 + 18.14 57.16 118.58 + 17.20 56.47 120.64 + 15.59 50.78 119.02 + 14.63 42.91 114.42 + 16.07 45.32 115.39 + 17.46 51.24 117.92 + 15.31 52.77 116.00 + 14.18 50.88 111.94 + 16.45 53.26 116.15 + 15.67 59.37 115.12 + 15.67 66.19 115.45 + 14.70 66.21 111.31 + 15.78 67.85 108.83 + 17.31 66.58 106.27 + 20.12 67.08 107.88 + 17.57 62.77 107.82 + 16.07 58.66 113.52 + 15.54 56.28 117.86 + 16.16 61.67 122.98 + 21.84 72.20 125.52 + 24.89 80.31 128.20 + 20.61 76.52 128.69 + 17.36 68.96 126.42 + 13.88 58.23 123.94 + 12.46 50.63 120.14 + 13.28 55.58 112.05 + 16.36 70.33 115.91 + 16.32 73.83 116.12 + 14.90 70.13 114.08 + 14.31 72.09 112.00 + 14.90 71.76 122.55 + 15.04 69.63 120.81 + 13.59 57.78 118.03 + 13.26 51.41 116.98 + 13.67 51.77 119.86 + 15.82 51.51 130.11 + 15.79 48.50 126.47 + 14.76 44.80 124.32 + 14.16 45.84 121.59 + 17.44 53.36 116.00 + 21.53 67.27 116.89 + 25.93 73.53 114.59 + 26.88 74.36 113.58 + 26.90 69.69 119.25 + 22.30 57.55 119.42 + 19.86 51.08 117.03 + 21.48 52.84 116.19 + 18.38 62.68 118.20 + 17.55 67.79 119.23 + 20.03 67.32 115.00 + 21.24 64.48 110.79 + 16.91 63.65 105.36 + 15.68 66.36 103.66 + 18.55 65.87 105.34 + 18.11 63.70 105.73 + 19.93 60.47 103.66 + 26.52 62.73 107.00 + 25.70 64.77 108.92 + 23.00 66.42 108.86 + 18.54 67.06 109.18 + 16.80 68.45 113.38 + 16.13 67.02 109.92 + 17.33 67.08 109.69 + 17.90 67.09 110.51 + 18.52 65.83 108.44 + 15.01 59.86 100.22 + 12.85 53.48 97.67 + 13.23 45.09 95.34 + 14.35 44.16 102.25 + 15.10 44.83 99.15 + 15.88 49.83 102.39 + 15.14 55.89 106.86 + 19.82 65.38 111.06 + 19.95 68.49 111.07 + 104.22 103.67 42.38 + 103.89 105.85 43.03 + 68.48 75.15 34.34 + 15.56 49.48 106.47 + 19.68 55.07 116.65 + 18.41 56.83 122.48 + 18.20 65.97 123.39 + 18.14 70.17 120.08 + 17.99 62.02 114.03 + 17.82 51.73 108.95 + 18.91 53.95 101.42 + 22.14 56.47 99.06 + 24.06 65.59 95.05 + 23.83 69.89 102.67 + 20.30 66.06 105.28 + 16.81 64.54 102.78 + 18.34 64.92 111.40 + 17.55 66.44 114.97 + 18.92 68.92 108.05 + 19.71 67.39 103.78 + 20.25 65.18 109.75 + 20.26 64.93 109.56 + 21.21 60.63 111.17 + 20.64 58.02 114.17 + 19.19 58.29 109.06 + 18.61 61.08 105.55 + 18.09 62.02 109.74 + 17.45 58.40 111.98 + 19.41 58.16 114.64 + 21.32 59.69 113.88 + 21.35 57.59 112.80 + 19.73 57.24 108.27 + 18.86 60.93 110.51 + 18.57 61.56 111.05 + 16.62 56.24 111.72 + 14.66 46.97 109.86 + 15.56 44.23 114.29 + 19.25 47.44 114.54 + 20.22 52.10 111.28 + 22.34 57.45 114.45 + 20.17 52.70 110.95 + 17.93 46.13 105.72 + 17.30 42.70 107.73 + 16.12 41.85 115.78 + 16.62 45.65 121.44 + 15.68 42.52 120.70 + 13.83 36.18 116.64 + 14.81 35.17 120.83 + 14.98 34.22 124.32 + 15.03 32.75 124.99 + 14.19 30.12 123.36 + 13.40 26.04 123.60 + 13.99 31.51 125.50 + 15.19 39.78 126.12 + 14.78 39.21 125.11 + 14.50 37.80 122.44 + 14.15 37.01 120.26 + 13.80 34.52 119.56 + 12.88 31.53 117.50 + 13.57 29.94 119.04 + 16.09 29.55 121.67 + 16.93 31.29 123.31 + 15.89 29.45 117.66 + 15.29 29.32 115.94 + 14.19 27.09 119.03 + 13.28 24.86 122.69 + 12.30 22.11 124.70 + 12.22 19.83 123.44 + 12.77 18.05 120.58 + 13.02 16.38 120.81 + 13.96 17.55 121.16 + 13.56 16.99 122.05 + 12.39 14.24 120.88 + 11.76 12.44 119.74 +sample_blocks: | + 2 2 0.00 0.00 2.56 + 2 18 0.00 0.00 2.67 + 2 34 0.00 0.00 2.67 + 2 50 145.33 123.22 5.56 + 2 66 0.00 0.00 2.67 + 2 82 12.00 65.22 66.56 + 2 98 3.44 25.67 27.89 + 2 114 25.44 25.44 145.22 + 2 130 27.00 23.33 5.44 + 2 146 43.44 40.22 5.67 + 2 162 0.00 0.00 2.67 + 2 178 0.00 0.00 2.67 + 2 194 0.00 0.00 2.67 + 18 2 0.00 0.00 23.00 + 18 18 0.00 0.00 23.00 + 18 34 60.44 51.00 12.33 + 18 50 0.00 0.00 23.00 + 18 66 0.00 1.89 23.33 + 18 82 10.22 19.22 90.22 + 18 98 6.89 61.78 75.56 + 18 114 18.78 19.78 107.44 + 18 130 21.33 77.22 135.11 + 18 146 1.44 17.22 33.67 + 18 162 0.00 0.00 23.00 + 18 178 26.78 116.00 153.22 + 18 194 200.22 187.89 28.00 + 34 2 0.00 0.00 43.33 + 34 18 16.22 93.33 106.67 + 34 34 0.00 0.00 43.33 + 34 50 10.56 67.11 86.78 + 34 66 0.00 1.44 43.11 + 34 82 2.00 34.56 55.56 + 34 98 0.00 0.11 43.44 + 34 114 13.89 34.56 113.78 + 34 130 20.44 123.22 123.22 + 34 146 0.33 3.89 46.33 + 34 162 0.11 3.22 43.00 + 34 178 21.78 139.89 141.33 + 34 194 0.00 0.00 43.33 + 50 2 166.44 157.00 34.89 + 50 18 0.11 3.22 62.00 + 50 34 23.78 23.78 146.56 + 50 50 18.11 127.33 129.78 + 50 66 22.89 93.33 140.11 + 50 82 16.67 46.56 115.44 + 50 98 14.89 42.11 50.78 + 50 114 25.00 29.56 141.56 + 50 130 21.56 86.11 136.11 + 50 146 9.22 58.89 89.56 + 50 162 11.56 106.11 107.00 + 50 178 0.00 0.00 64.00 + 50 194 0.00 0.00 64.00 + 66 2 0.00 1.22 81.11 + 66 18 11.89 98.22 100.67 + 66 34 14.11 14.33 119.56 + 66 50 15.11 81.11 78.67 + 66 66 101.89 123.44 51.00 + 66 82 9.56 44.22 90.44 + 66 98 13.44 70.11 106.56 + 66 114 14.89 51.44 110.11 + 66 130 13.56 104.33 104.33 + 66 146 36.67 53.56 53.89 + 66 162 0.11 4.11 77.11 + 66 178 0.67 17.11 69.67 + 66 194 1.00 12.56 87.00 + 82 2 0.00 0.00 104.67 + 82 18 10.89 10.89 125.67 + 82 34 0.00 5.44 98.56 + 82 50 15.22 68.00 107.00 + 82 66 15.22 76.56 116.56 + 82 82 12.11 96.89 99.33 + 82 98 8.56 72.11 115.22 + 82 114 194.78 187.89 33.56 + 82 130 147.33 131.00 31.11 + 82 146 16.33 106.11 120.89 + 82 162 3.67 38.11 86.56 + 82 178 0.11 1.44 105.00 + 82 194 0.00 0.00 104.67 + 98 2 0.00 0.00 125.00 + 98 18 0.00 0.00 116.44 + 98 34 13.11 62.33 116.67 + 98 50 4.67 5.44 108.22 + 98 66 24.89 121.00 145.56 + 98 82 19.11 51.67 116.56 + 98 98 10.56 103.56 103.56 + 98 114 27.33 148.89 152.67 + 98 130 17.22 41.56 119.67 + 98 146 20.56 134.22 134.22 + 98 162 14.56 110.33 129.67 + 98 178 2.11 2.11 124.56 + 98 194 0.22 2.44 123.33 + 114 2 0.00 0.00 145.33 + 114 18 4.89 50.11 79.89 + 114 34 0.56 7.22 128.00 + 114 50 27.78 150.11 150.11 + 114 66 8.44 76.11 81.89 + 114 82 28.00 149.89 152.56 + 114 98 26.78 93.11 151.00 + 114 114 15.56 70.33 139.22 + 114 130 20.78 72.56 78.44 + 114 146 16.89 52.44 131.56 + 114 162 8.56 65.22 90.00 + 114 178 0.22 9.89 132.67 + 114 194 0.00 0.00 144.89 + 130 2 0.00 0.00 166.00 + 130 18 4.44 37.78 130.89 + 130 34 2.00 21.00 146.78 + 130 50 30.89 89.56 91.22 + 130 66 15.00 107.78 114.89 + 130 82 0.78 11.78 137.33 + 130 98 27.67 157.11 157.11 + 130 114 13.44 85.11 106.33 + 130 130 90.78 106.44 59.44 + 130 146 9.22 49.22 80.22 + 130 162 14.11 40.33 117.33 + 130 178 0.00 0.00 165.56 + 130 194 0.00 0.00 166.00 + 146 2 0.67 6.00 181.67 + 146 18 15.11 27.44 111.33 + 146 34 13.78 71.89 77.33 + 146 50 9.89 30.78 97.78 + 146 66 23.00 115.11 148.44 + 146 82 0.56 6.89 182.00 + 146 98 15.78 103.56 118.00 + 146 114 0.33 8.22 101.44 + 146 130 6.11 35.78 74.22 + 146 146 4.33 46.00 111.89 + 146 162 17.56 21.00 124.78 + 146 178 7.44 7.56 139.67 + 146 194 56.67 53.78 148.67 + 162 2 0.00 0.00 206.56 + 162 18 32.67 81.00 99.44 + 162 34 4.89 30.11 172.89 + 162 50 0.00 0.00 206.67 + 162 66 8.89 12.33 98.56 + 162 82 1.67 21.11 186.22 + 162 98 0.00 2.78 198.22 + 162 114 1.56 32.89 129.22 + 162 130 0.00 4.22 193.56 + 162 146 4.78 46.78 102.22 + 162 162 13.89 73.11 112.44 + 162 178 0.00 0.00 206.67 + 162 194 0.11 0.11 206.44 + 178 2 132.00 127.00 121.78 + 178 18 0.00 0.00 227.00 + 178 34 1.33 27.11 168.44 + 178 50 0.00 0.00 227.00 + 178 66 13.33 13.33 124.67 + 178 82 0.11 12.22 191.78 + 178 98 0.00 0.00 227.00 + 178 114 13.89 64.00 119.44 + 178 130 0.67 0.67 159.67 + 178 146 15.00 109.67 117.11 + 178 162 0.00 0.00 226.67 + 178 178 0.00 0.00 227.00 + 178 194 0.00 0.00 227.00 + 194 2 0.00 0.00 247.33 + 194 18 0.00 0.00 247.33 + 194 34 0.00 0.00 247.33 + 194 50 143.44 134.67 91.44 + 194 66 2.00 29.44 196.89 + 194 82 0.00 0.11 244.22 + 194 98 0.00 0.00 247.33 + 194 114 15.89 104.89 127.00 + 194 130 11.67 63.44 114.44 + 194 146 0.00 0.00 247.33 + 194 162 0.00 0.00 247.33 + 194 178 0.00 0.00 247.33 + 194 194 0.00 0.00 247.33 +... diff --git a/unittest/graphics/tests/dump-image-defocus.yaml b/unittest/graphics/tests/dump-image-defocus.yaml new file mode 100644 index 00000000000..7a6b08dde57 --- /dev/null +++ b/unittest/graphics/tests/dump-image-defocus.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Mon Jul 27 21:41:54 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 fsaa yes defocus yes 1.0 auto + dump_modify viz backcolor blue backcolor2 black +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 15.59 24.84 17.14 + 12.21 19.31 16.98 + 12.40 18.20 19.82 + 15.03 19.91 20.07 + 14.88 19.71 18.68 + 14.48 19.23 17.61 + 14.26 18.84 16.28 + 14.03 18.13 15.70 + 13.88 17.36 16.21 + 13.94 18.46 19.51 + 14.73 20.52 22.66 + 15.05 21.38 25.45 + 15.44 23.96 29.50 + 17.36 33.78 40.52 + 20.65 46.56 53.65 + 21.30 49.08 54.60 + 19.09 41.13 47.21 + 18.20 33.81 46.70 + 19.12 33.31 52.25 + 17.19 34.77 56.37 + 12.53 34.80 60.78 + 11.42 40.41 68.44 + 12.96 45.34 71.57 + 13.43 45.17 68.18 + 12.52 41.98 62.05 + 12.60 40.46 60.98 + 13.07 38.48 63.27 + 13.34 39.32 66.80 + 13.56 39.83 69.73 + 15.13 40.84 74.94 + 16.34 43.35 76.89 + 15.45 44.13 74.98 + 14.73 46.77 73.95 + 14.82 50.54 75.63 + 14.88 50.04 75.75 + 14.39 46.05 72.05 + 13.88 41.28 68.11 + 14.14 42.77 71.92 + 14.67 50.35 79.86 + 15.60 54.19 83.70 + 17.09 54.62 85.12 + 20.03 56.77 85.73 + 21.91 59.73 86.72 + 23.86 57.85 84.67 + 22.12 52.61 76.64 + 19.02 56.38 81.32 + 18.33 59.80 92.73 + 18.52 62.02 99.96 + 19.34 60.91 98.69 + 22.80 64.05 98.08 + 25.45 64.77 95.80 + 25.73 63.95 95.09 + 25.98 63.97 91.83 + 27.59 65.75 89.93 + 30.16 64.16 85.00 + 30.63 66.43 86.29 + 30.57 68.67 89.63 + 28.39 66.78 91.56 + 25.86 59.08 89.03 + 28.12 54.84 88.53 + 31.95 59.33 93.81 + 35.68 62.64 93.92 + 37.46 69.08 97.50 + 37.10 78.75 101.96 + 34.91 81.08 98.86 + 30.54 73.45 91.30 + 24.55 61.95 87.09 + 26.14 62.41 97.05 + 28.93 66.89 102.36 + 29.16 62.92 99.08 + 29.29 54.99 91.44 + 33.04 55.96 92.03 + 32.20 57.03 98.41 + 27.92 61.65 100.91 + 27.14 71.25 99.80 + 27.68 76.89 102.27 + 27.66 69.17 102.34 + 26.16 62.95 102.67 + 24.64 59.14 98.67 + 25.57 59.80 97.31 + 27.62 68.73 101.69 + 28.82 74.59 109.25 + 26.50 66.06 106.61 + 25.04 61.81 102.92 + 23.40 57.17 100.45 + 19.52 58.38 105.97 + 13.71 59.13 108.98 + 13.18 60.75 112.36 + 13.11 62.23 110.22 + 15.41 67.00 111.48 + 15.58 66.48 110.62 + 16.30 63.70 111.11 + 15.35 65.68 112.58 + 13.27 62.16 108.83 + 12.72 60.53 108.53 + 12.20 58.21 106.59 + 13.02 58.73 112.19 + 14.80 60.59 119.94 + 13.97 59.24 119.28 + 11.36 48.26 111.39 + 10.89 46.40 111.82 + 12.01 46.07 117.28 + 13.05 49.80 120.25 + 14.60 62.74 120.41 + 17.01 72.14 124.23 + 16.09 73.58 118.35 + 13.83 64.36 109.08 + 13.78 59.11 109.88 + 14.29 55.27 113.31 + 17.86 51.06 115.56 + 20.27 47.66 111.39 + 19.89 50.16 112.99 + 20.11 67.19 119.22 + 21.04 78.83 121.36 + 19.75 76.33 115.67 + 17.76 68.16 111.25 + 19.43 63.62 112.42 + 21.05 66.31 116.03 + 18.99 65.17 115.75 + 16.16 55.83 116.23 + 13.52 47.62 118.25 + 12.22 47.12 121.61 + 12.78 55.59 122.00 + 15.45 66.42 126.03 + 16.20 68.33 123.38 + 16.10 63.23 117.72 + 17.25 63.20 114.77 + 17.88 65.59 114.06 + 16.57 67.50 115.81 + 15.72 70.32 124.86 + 16.19 66.11 126.54 + 15.10 61.69 124.97 + 14.45 59.43 125.31 + 13.45 52.69 126.76 + 12.09 45.47 128.52 + 10.58 48.19 125.88 + 14.20 62.81 132.34 + 18.23 70.44 135.63 + 17.89 64.73 128.69 + 17.42 56.07 123.96 + 18.95 56.30 128.24 + 16.87 59.39 129.11 + 13.77 59.01 122.13 + 12.55 58.34 120.78 + 13.38 58.24 126.14 + 14.97 57.05 128.48 + 17.73 55.97 131.59 + 19.41 53.76 132.02 + 21.21 58.66 136.04 + 18.98 56.82 138.75 + 15.30 53.94 140.59 + 13.31 53.21 139.42 + 13.64 54.54 141.21 + 15.09 57.22 139.53 + 17.70 64.32 137.66 + 18.64 67.50 132.87 + 17.80 64.31 132.93 + 15.29 54.11 133.69 + 12.00 41.68 139.62 + 9.98 36.87 146.67 + 10.95 39.98 152.62 + 13.44 44.25 157.04 + 15.21 47.98 156.73 + 15.99 51.75 155.09 + 16.50 50.91 155.32 + 17.61 51.96 160.14 + 18.21 53.27 157.84 + 16.79 46.75 152.03 + 14.17 36.87 151.57 + 12.43 32.06 155.31 + 11.76 33.58 167.82 + 12.54 41.49 170.59 + 15.11 50.55 171.98 + 15.94 48.47 165.88 + 13.41 37.30 163.05 + 10.47 26.32 173.23 + 9.49 24.43 188.04 + 10.31 29.18 193.48 + 12.60 29.16 192.26 + 16.39 29.02 189.28 + 16.12 26.84 187.91 + 16.19 30.40 187.49 + 18.62 36.88 188.44 + 18.30 36.74 190.42 + 16.93 31.70 192.71 + 15.71 26.50 196.86 + 16.64 22.84 198.89 + 17.91 23.01 199.91 + 17.92 25.00 200.22 + 17.70 25.00 202.94 + 16.68 23.09 205.55 + 16.06 20.89 208.41 + 15.99 18.94 211.26 + 17.52 24.43 212.95 + 17.91 27.66 208.90 + 17.29 25.61 208.65 + 13.52 21.64 215.12 + 11.78 19.35 219.76 + 14.90 19.55 222.66 + 16.32 18.50 225.82 +col_means: | + 12.98 18.39 118.63 + 13.11 19.35 117.47 + 12.28 18.16 115.70 + 11.71 18.05 114.69 + 12.03 21.14 116.65 + 12.78 25.05 117.56 + 13.36 29.34 114.67 + 14.09 30.59 111.57 + 14.37 29.20 112.36 + 15.07 30.64 111.86 + 15.47 30.36 111.35 + 15.62 27.23 111.29 + 15.08 25.86 110.98 + 15.22 29.29 110.47 + 15.25 31.07 110.81 + 14.37 32.04 110.77 + 14.20 34.28 111.57 + 14.71 35.67 115.89 + 14.10 34.67 116.36 + 14.97 35.33 115.47 + 15.06 35.73 115.27 + 15.16 34.80 115.12 + 15.10 34.22 114.67 + 16.92 38.31 117.64 + 19.07 46.19 119.33 + 17.91 47.72 119.43 + 16.09 42.26 115.56 + 15.69 38.54 112.97 + 15.55 39.58 115.68 + 17.10 47.05 122.58 + 17.70 50.68 122.30 + 16.51 50.10 115.49 + 14.86 45.51 109.50 + 14.78 40.34 109.89 + 14.66 37.18 109.89 + 17.43 41.81 110.89 + 18.94 47.03 115.03 + 18.73 54.67 119.16 + 18.38 55.95 116.34 + 16.28 48.77 112.22 + 14.74 42.57 112.33 + 16.29 47.62 116.88 + 17.89 53.49 117.92 + 18.65 58.23 116.35 + 19.38 64.83 117.89 + 18.86 61.10 115.16 + 18.29 52.17 114.74 + 17.57 45.74 113.77 + 17.29 44.94 113.01 + 17.98 50.39 114.75 + 18.26 56.36 116.81 + 17.52 57.44 116.67 + 17.48 55.73 119.17 + 16.98 55.30 121.12 + 15.46 49.77 119.61 + 14.65 42.98 115.64 + 15.90 44.60 116.03 + 16.73 50.39 118.08 + 15.06 51.53 116.22 + 13.96 49.95 112.84 + 15.84 52.52 116.77 + 15.69 58.66 116.61 + 15.51 65.43 116.95 + 14.89 66.30 113.62 + 15.85 67.50 110.75 + 17.77 66.41 108.28 + 19.83 65.93 108.35 + 17.85 62.55 109.31 + 16.16 59.34 115.05 + 15.35 55.96 119.00 + 16.46 61.03 124.23 + 22.20 71.86 126.66 + 24.86 79.99 130.14 + 20.85 76.12 129.60 + 17.57 69.44 128.72 + 14.04 58.32 126.22 + 12.45 51.28 121.65 + 13.47 56.00 114.86 + 16.07 68.94 116.22 + 16.12 73.14 117.08 + 14.98 70.62 115.17 + 14.32 70.75 114.05 + 14.79 70.34 122.12 + 14.86 67.54 122.10 + 13.72 58.09 119.39 + 13.49 52.34 119.48 + 14.01 51.73 122.58 + 16.02 50.90 129.91 + 16.80 48.84 126.97 + 15.41 44.52 124.33 + 14.59 45.34 121.56 + 18.13 54.24 117.68 + 21.40 66.22 117.08 + 25.86 73.59 115.31 + 27.04 74.45 114.14 + 27.00 70.17 119.72 + 22.82 58.34 120.20 + 20.32 51.87 118.38 + 21.69 53.62 117.56 + 19.43 62.97 118.88 + 18.38 67.92 119.31 + 20.12 66.39 115.86 + 20.88 63.85 111.69 + 17.09 63.09 106.02 + 16.68 65.81 104.72 + 18.84 64.70 105.95 + 18.39 62.61 106.60 + 20.53 60.43 105.55 + 26.96 62.80 108.00 + 26.41 64.69 109.70 + 23.00 66.22 109.66 + 18.89 66.95 110.83 + 16.95 68.03 115.38 + 16.36 66.78 112.75 + 17.32 66.00 111.23 + 18.35 67.27 111.72 + 18.80 65.39 109.51 + 15.58 59.51 102.28 + 13.24 53.23 99.86 + 13.76 45.87 99.11 + 14.37 44.11 103.76 + 15.03 44.57 101.23 + 15.82 49.42 103.81 + 16.14 55.71 107.89 + 20.25 64.20 112.27 + 20.52 68.38 111.89 + 99.53 100.99 47.35 + 103.38 104.94 42.80 + 66.06 73.94 39.63 + 16.16 49.45 108.75 + 18.83 53.62 118.03 + 18.68 56.36 124.08 + 18.05 65.57 123.83 + 18.35 69.89 120.68 + 18.93 61.99 115.94 + 18.21 52.42 110.70 + 19.64 53.17 104.03 + 22.50 55.69 101.06 + 24.49 64.84 97.91 + 24.11 69.44 104.16 + 20.90 65.19 106.03 + 17.39 63.48 105.64 + 18.46 65.26 113.69 + 17.78 66.12 116.11 + 19.21 69.42 110.12 + 19.48 67.17 105.91 + 19.83 64.61 110.20 + 20.04 64.36 110.86 + 20.80 60.24 112.26 + 20.14 56.31 114.84 + 18.56 57.13 110.91 + 18.26 60.13 107.35 + 17.35 60.30 110.72 + 17.05 57.30 113.24 + 19.25 57.62 115.84 + 21.29 58.98 115.15 + 21.15 57.01 113.17 + 19.59 56.80 109.48 + 18.64 59.92 110.44 + 17.88 59.97 111.32 + 16.02 55.08 111.75 + 14.35 46.63 111.27 + 15.50 43.92 114.09 + 18.50 47.08 114.62 + 19.86 51.37 112.11 + 21.45 56.15 114.08 + 19.61 51.88 111.10 + 17.58 45.31 106.32 + 16.59 41.73 108.24 + 15.94 41.35 115.80 + 15.98 44.13 121.57 + 14.90 40.95 120.86 + 13.60 35.88 117.85 + 14.04 34.20 120.97 + 14.42 33.55 124.21 + 14.28 31.86 124.90 + 13.76 29.07 123.45 + 12.93 25.93 123.95 + 13.71 31.02 125.27 + 14.45 37.87 125.97 + 14.03 37.84 124.97 + 13.91 36.84 122.54 + 13.61 35.62 120.28 + 13.02 33.38 119.25 + 12.34 30.86 117.89 + 13.15 28.85 119.11 + 15.16 28.77 121.70 + 16.27 30.11 122.27 + 15.70 29.14 117.68 + 14.81 28.18 116.28 + 13.45 25.94 118.81 + 12.54 23.86 122.51 + 11.82 21.25 124.22 + 11.63 19.10 123.12 + 12.28 17.28 120.81 + 12.76 16.27 120.66 + 13.20 16.68 121.24 + 13.10 16.32 121.96 + 12.11 14.04 120.88 + 11.47 12.45 119.73 +sample_blocks: | + 2 2 0.00 0.00 2.67 + 2 18 0.00 0.00 2.89 + 2 34 0.00 0.00 2.78 + 2 50 135.78 115.22 5.56 + 2 66 0.00 0.00 2.89 + 2 82 11.33 64.33 65.56 + 2 98 3.67 25.11 27.67 + 2 114 23.78 23.89 139.67 + 2 130 29.56 25.89 8.11 + 2 146 44.56 41.33 6.00 + 2 162 0.00 0.00 2.78 + 2 178 0.00 0.00 2.78 + 2 194 0.00 0.00 2.89 + 18 2 0.00 0.00 23.00 + 18 18 0.00 0.00 23.00 + 18 34 59.33 50.00 13.22 + 18 50 0.00 0.00 23.00 + 18 66 0.11 2.33 24.11 + 18 82 10.56 21.78 90.11 + 18 98 6.78 61.00 76.11 + 18 114 17.00 21.11 101.78 + 18 130 20.22 75.33 129.56 + 18 146 1.56 17.22 34.44 + 18 162 0.00 0.00 23.00 + 18 178 25.78 110.11 148.44 + 18 194 184.33 173.67 27.56 + 34 2 0.00 0.00 43.33 + 34 18 14.22 82.89 100.33 + 34 34 0.00 0.00 43.33 + 34 50 10.11 65.22 85.22 + 34 66 0.00 1.89 43.00 + 34 82 2.11 33.89 55.56 + 34 98 0.11 1.67 44.44 + 34 114 13.22 33.22 111.22 + 34 130 20.44 123.44 123.44 + 34 146 0.22 3.44 45.22 + 34 162 0.22 4.11 45.22 + 34 178 20.67 128.89 133.78 + 34 194 0.00 0.00 43.33 + 50 2 159.89 151.22 38.78 + 50 18 0.11 2.56 63.11 + 50 34 22.89 22.89 143.00 + 50 50 18.56 124.56 129.00 + 50 66 22.89 93.44 140.00 + 50 82 16.56 46.56 116.56 + 50 98 19.00 45.78 55.00 + 50 114 23.78 29.78 137.89 + 50 130 20.22 77.11 130.44 + 50 146 9.44 60.22 90.56 + 50 162 11.78 101.11 107.44 + 50 178 0.00 0.00 64.00 + 50 194 0.00 0.00 64.00 + 66 2 0.00 0.78 82.67 + 66 18 11.89 94.11 102.78 + 66 34 12.56 13.56 116.33 + 66 50 15.11 81.00 81.11 + 66 66 102.33 126.00 52.44 + 66 82 9.44 41.89 89.89 + 66 98 13.44 70.00 106.56 + 66 114 15.78 51.44 112.11 + 66 130 13.78 103.00 105.00 + 66 146 36.67 50.89 58.44 + 66 162 0.22 3.78 79.22 + 66 178 0.78 17.00 71.89 + 66 194 1.11 12.44 86.89 + 82 2 0.00 0.00 104.67 + 82 18 9.89 10.11 123.33 + 82 34 0.00 3.56 101.11 + 82 50 16.44 75.00 113.22 + 82 66 15.56 71.00 115.89 + 82 82 12.11 96.89 99.33 + 82 98 8.44 70.56 116.89 + 82 114 194.78 187.89 33.44 + 82 130 147.78 134.00 31.56 + 82 146 17.67 107.11 125.33 + 82 162 4.00 37.78 89.22 + 82 178 0.33 3.11 105.44 + 82 194 0.00 0.00 104.67 + 98 2 0.00 0.00 125.00 + 98 18 0.00 0.00 118.33 + 98 34 13.00 63.89 118.22 + 98 50 4.89 7.11 112.00 + 98 66 25.22 118.33 145.44 + 98 82 18.89 49.89 116.33 + 98 98 10.00 101.11 101.11 + 98 114 27.22 146.22 152.33 + 98 130 17.33 41.11 119.56 + 98 146 20.11 132.11 133.33 + 98 162 16.22 109.56 133.11 + 98 178 1.89 1.89 124.56 + 98 194 0.33 3.11 123.67 + 114 2 0.00 0.00 145.33 + 114 18 5.00 49.00 83.00 + 114 34 1.00 12.56 126.78 + 114 50 25.78 142.78 143.67 + 114 66 10.56 76.56 81.89 + 114 82 27.56 143.89 150.67 + 114 98 25.67 95.22 147.44 + 114 114 15.89 71.56 136.33 + 114 130 16.44 66.00 77.44 + 114 146 18.33 62.11 135.44 + 114 162 8.78 66.11 89.67 + 114 178 0.33 10.56 133.56 + 114 194 0.00 0.00 144.33 + 130 2 0.00 0.00 166.00 + 130 18 4.33 37.89 132.56 + 130 34 2.22 21.78 147.33 + 130 50 26.56 83.89 90.89 + 130 66 15.89 105.56 115.22 + 130 82 1.00 15.00 137.56 + 130 98 26.56 153.11 153.11 + 130 114 13.56 86.11 107.22 + 130 130 93.33 110.00 60.56 + 130 146 11.22 55.11 87.89 + 130 162 13.56 43.11 114.78 + 130 178 0.00 0.33 163.89 + 130 194 0.00 0.00 166.00 + 146 2 0.67 5.89 182.33 + 146 18 14.67 31.11 112.44 + 146 34 21.11 78.44 83.89 + 146 50 10.22 34.22 102.56 + 146 66 22.44 111.44 151.44 + 146 82 0.44 5.78 179.67 + 146 98 16.89 107.67 121.89 + 146 114 0.56 9.78 102.44 + 146 130 6.44 38.00 77.56 + 146 146 4.89 45.56 113.56 + 146 162 17.11 23.22 122.00 + 146 178 7.11 7.78 140.56 + 146 194 64.44 60.78 143.67 + 162 2 0.00 0.00 206.67 + 162 18 32.44 81.11 101.00 + 162 34 4.56 28.56 175.00 + 162 50 0.00 0.00 206.67 + 162 66 9.00 15.22 101.33 + 162 82 1.56 20.89 185.89 + 162 98 0.11 4.89 195.00 + 162 114 1.67 30.11 137.11 + 162 130 0.11 2.89 197.00 + 162 146 5.89 48.11 99.44 + 162 162 14.44 73.33 114.44 + 162 178 0.00 0.33 206.44 + 162 194 1.00 0.89 203.78 + 178 2 131.00 124.56 116.78 + 178 18 0.00 0.00 227.00 + 178 34 1.67 26.78 172.22 + 178 50 0.00 0.00 227.00 + 178 66 12.67 13.33 140.22 + 178 82 0.33 12.56 192.11 + 178 98 0.00 0.00 227.00 + 178 114 14.11 63.56 125.22 + 178 130 0.67 0.67 172.67 + 178 146 15.22 109.89 120.44 + 178 162 0.00 0.22 225.89 + 178 178 0.00 0.00 227.00 + 178 194 0.00 0.00 227.00 + 194 2 0.00 0.00 247.33 + 194 18 0.00 0.00 247.33 + 194 34 0.00 0.00 247.33 + 194 50 138.56 129.78 99.22 + 194 66 2.00 25.44 206.56 + 194 82 0.00 0.33 244.56 + 194 98 0.00 0.00 247.33 + 194 114 15.22 98.56 134.67 + 194 130 12.22 61.56 117.22 + 194 146 0.00 0.00 247.22 + 194 162 0.00 0.00 247.33 + 194 178 0.00 0.00 247.33 + 194 194 0.00 0.00 247.33 +... diff --git a/unittest/graphics/tests/dump-image-depthcue-color.yaml b/unittest/graphics/tests/dump-image-depthcue-color.yaml new file mode 100644 index 00000000000..56b02bbe885 --- /dev/null +++ b/unittest/graphics/tests/dump-image-depthcue-color.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 13:32:11 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 depthcue yes 0.9 white auto + dump_modify viz backcolor black +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 39.44 43.02 38.55 + 35.21 38.16 36.92 + 38.60 41.05 40.46 + 37.44 39.19 36.65 + 38.31 40.35 36.78 + 36.55 38.97 34.34 + 32.28 34.30 28.48 + 26.54 28.30 22.42 + 27.50 28.59 22.84 + 30.21 32.33 26.84 + 33.25 35.96 30.57 + 33.15 35.69 30.55 + 44.83 49.98 45.63 + 56.41 65.58 63.05 + 67.55 82.45 79.77 + 68.33 82.41 78.31 + 67.27 77.95 73.37 + 69.16 77.11 76.09 + 64.83 72.25 73.22 + 63.69 73.11 75.92 + 64.64 76.25 84.23 + 67.33 83.09 90.81 + 72.33 90.25 96.94 + 71.68 88.85 92.76 + 70.28 86.53 86.99 + 67.47 83.81 83.98 + 60.50 75.00 77.03 + 63.48 78.94 83.07 + 73.28 89.06 96.82 + 74.38 89.05 98.92 + 78.35 94.33 102.83 + 77.85 95.67 101.66 + 73.96 94.83 96.97 + 68.91 90.72 92.53 + 70.85 93.03 96.26 + 68.41 87.53 89.81 + 63.02 79.31 81.25 + 65.67 84.11 87.55 + 74.85 96.17 100.50 + 79.92 101.32 106.74 + 81.46 102.45 108.51 + 82.03 102.36 107.19 + 93.09 115.41 121.28 + 90.28 107.56 110.70 + 87.25 105.39 105.11 + 83.89 107.65 110.17 + 83.61 109.30 119.19 + 89.22 116.12 129.24 + 86.41 112.74 125.72 + 88.79 114.88 124.03 + 80.95 107.64 112.50 + 74.56 99.14 103.85 + 83.81 110.36 113.58 + 85.89 110.94 111.83 + 84.98 106.10 105.14 + 86.50 109.74 106.42 + 83.40 107.69 103.16 + 76.08 101.24 98.47 + 67.59 90.78 89.42 + 76.58 96.69 98.12 + 86.83 108.40 114.01 + 88.42 107.78 112.82 + 87.04 110.05 114.33 + 84.69 115.22 115.72 + 85.41 118.06 113.91 + 79.50 109.81 105.24 + 70.75 97.25 93.59 + 70.86 98.81 101.62 + 71.60 101.70 103.94 + 71.01 93.63 97.61 + 77.66 95.27 101.45 + 83.94 99.01 107.17 + 84.62 103.05 113.16 + 84.56 109.41 115.70 + 83.39 116.94 116.78 + 82.16 116.86 116.58 + 84.18 110.99 116.17 + 84.08 107.53 115.36 + 76.02 97.98 102.64 + 73.58 98.04 96.32 + 78.69 109.46 103.95 + 82.83 113.86 111.92 + 80.62 106.36 111.19 + 77.83 101.02 106.22 + 74.53 95.89 100.69 + 69.56 96.77 101.89 + 62.42 97.27 104.56 + 60.81 94.73 103.52 + 77.02 113.20 125.43 + 88.44 120.23 134.48 + 87.45 118.42 132.65 + 87.80 117.57 134.20 + 87.12 119.42 133.06 + 80.28 112.34 122.69 + 78.80 109.87 119.90 + 81.44 109.91 121.54 + 79.11 109.61 123.14 + 72.61 105.20 117.20 + 65.30 96.12 107.69 + 64.23 89.33 100.17 + 64.33 87.83 97.69 + 70.70 91.94 107.38 + 72.61 98.70 115.38 + 80.92 114.52 129.69 + 82.39 119.54 135.06 + 85.90 124.19 137.13 + 79.58 111.79 124.80 + 77.50 106.05 123.24 + 83.54 107.50 127.23 + 93.17 111.59 131.93 + 92.41 107.81 123.90 + 92.72 110.50 125.42 + 99.62 131.00 138.48 + 100.87 137.84 142.22 + 101.34 135.57 140.69 + 96.92 128.90 137.42 + 94.13 122.03 130.93 + 92.64 124.06 130.43 + 82.03 110.33 119.30 + 79.61 103.87 117.90 + 72.56 92.05 107.47 + 74.02 95.19 108.99 + 86.78 113.23 126.69 + 96.75 127.12 141.83 + 98.59 130.19 143.60 + 95.23 121.33 134.46 + 102.29 127.44 138.81 + 104.25 130.66 141.38 + 101.41 130.14 138.00 + 94.52 124.53 134.28 + 87.75 115.41 123.25 + 84.88 113.33 120.88 + 86.31 112.56 121.36 + 83.99 105.76 115.81 + 77.11 95.23 104.83 + 82.69 106.13 112.16 + 88.48 116.74 122.85 + 87.60 117.21 124.53 + 88.83 115.20 124.44 + 90.84 114.20 127.98 + 87.46 109.66 126.32 + 92.94 118.40 133.60 + 93.28 117.45 128.22 + 96.89 122.57 130.16 + 95.09 119.69 125.81 + 94.86 118.91 123.10 + 89.69 110.01 114.82 + 91.62 112.05 118.25 + 92.22 115.39 123.59 + 80.15 103.02 111.83 + 73.86 98.56 107.03 + 71.78 95.86 100.95 + 74.66 98.59 106.12 + 83.50 106.97 117.42 + 91.69 118.92 131.41 + 93.50 121.23 131.19 + 91.59 118.56 128.71 + 84.08 106.87 115.52 + 73.14 88.88 97.06 + 70.81 85.50 92.16 + 70.82 86.91 89.86 + 71.03 88.36 90.64 + 70.14 90.81 90.12 + 72.44 95.11 94.85 + 70.45 90.81 94.42 + 72.90 94.64 100.58 + 71.42 92.65 98.38 + 70.14 87.05 92.69 + 63.77 76.92 80.80 + 61.09 72.61 75.31 + 57.35 70.67 76.79 + 61.13 80.47 85.49 + 67.42 90.08 93.86 + 65.91 84.57 87.12 + 59.55 72.16 72.47 + 46.45 55.57 55.34 + 36.80 47.02 45.77 + 37.59 49.03 47.98 + 41.98 51.53 51.27 + 45.20 52.46 51.87 + 42.51 51.20 49.34 + 43.99 53.80 48.43 + 45.35 57.82 50.80 + 44.52 56.09 48.98 + 39.60 48.57 43.10 + 38.38 44.95 41.54 + 38.18 41.06 38.72 + 39.94 43.07 40.41 + 42.07 47.02 43.98 + 37.41 41.77 36.68 + 33.60 37.92 31.36 + 32.03 34.87 27.87 + 31.84 33.72 27.32 + 35.84 41.50 35.64 + 38.65 44.85 40.56 + 37.32 42.98 39.35 + 28.07 33.77 30.46 + 25.68 30.77 26.45 + 27.66 30.20 21.71 + 23.51 24.54 15.50 +col_means: | + 20.76 23.70 17.44 + 23.88 28.28 21.80 + 23.77 27.23 20.32 + 25.77 29.43 23.80 + 30.80 36.23 34.38 + 34.45 40.99 40.63 + 37.88 47.15 45.59 + 41.97 52.48 49.30 + 43.01 52.66 51.28 + 44.84 54.65 54.09 + 46.63 56.04 58.10 + 45.49 53.77 57.05 + 44.13 50.72 52.92 + 45.74 53.87 54.22 + 49.01 57.97 57.54 + 44.77 55.25 53.20 + 45.51 58.36 54.67 + 50.57 64.18 62.30 + 49.88 63.42 65.75 + 53.94 67.58 70.58 + 57.06 70.04 72.68 + 58.41 70.36 74.20 + 56.91 67.89 73.28 + 61.97 73.94 81.31 + 71.12 87.06 95.83 + 71.06 90.18 99.63 + 67.78 84.74 90.97 + 64.11 78.48 82.64 + 59.12 73.14 74.65 + 60.98 80.35 82.31 + 65.04 84.91 89.18 + 65.77 86.43 89.34 + 66.53 86.56 87.11 + 65.42 82.31 84.02 + 59.55 71.87 75.22 + 70.42 84.78 90.40 + 71.83 86.89 92.61 + 66.77 87.80 92.92 + 70.21 93.91 98.39 + 68.55 89.96 95.66 + 60.37 77.56 82.22 + 62.58 80.31 83.48 + 72.53 93.70 98.33 + 77.52 100.16 103.81 + 80.53 107.59 109.84 + 81.50 107.73 111.83 + 78.47 98.72 108.15 + 77.59 94.52 106.22 + 78.15 95.22 106.97 + 78.86 96.81 105.98 + 75.58 98.60 100.97 + 75.70 100.94 101.12 + 79.27 101.92 105.95 + 74.66 97.19 103.03 + 75.52 96.06 103.57 + 71.39 88.27 97.48 + 72.56 89.14 98.47 + 78.52 97.97 104.64 + 79.39 100.31 105.36 + 86.65 107.61 113.00 + 78.97 99.42 107.88 + 83.36 107.72 116.33 + 89.39 118.02 128.25 + 93.25 123.67 133.46 + 91.65 124.30 134.03 + 94.87 125.15 135.03 + 98.20 126.78 136.54 + 89.39 118.06 125.58 + 78.38 105.66 112.28 + 82.48 107.60 115.87 + 76.92 102.75 110.79 + 85.36 115.20 122.00 + 98.69 132.11 138.91 + 92.91 126.77 133.51 + 92.41 125.10 131.08 + 81.19 109.80 118.09 + 81.78 103.78 115.72 + 89.61 113.59 125.47 + 94.47 123.84 131.82 + 96.02 129.66 136.52 + 89.19 123.50 130.47 + 93.01 129.10 133.81 + 85.89 121.06 126.35 + 87.86 121.12 127.72 + 84.48 111.77 123.37 + 74.48 97.61 113.39 + 77.19 102.58 116.60 + 79.00 102.20 117.64 + 75.59 97.92 111.76 + 82.54 102.19 114.86 + 79.33 98.64 108.23 + 70.58 92.66 99.25 + 72.79 101.66 104.41 + 83.48 113.58 112.88 + 87.30 116.55 116.42 + 85.65 113.13 117.25 + 76.81 98.97 109.25 + 73.25 93.83 105.83 + 73.31 93.49 104.31 + 79.80 104.66 112.11 + 91.49 123.75 130.49 + 90.62 120.22 131.47 + 95.30 123.00 134.87 + 90.83 118.44 128.53 + 88.67 119.60 125.68 + 85.03 114.22 116.25 + 84.67 113.95 118.19 + 82.20 109.64 115.67 + 88.46 112.00 119.83 + 86.47 111.83 120.25 + 87.35 115.05 122.73 + 87.61 119.18 127.34 + 91.12 123.76 135.90 + 81.58 115.26 126.27 + 83.93 117.95 132.93 + 80.98 115.97 133.31 + 75.92 111.28 126.89 + 68.51 101.20 114.19 + 64.28 94.97 110.88 + 64.08 88.03 103.40 + 68.28 88.31 102.03 + 71.08 92.84 104.45 + 73.86 95.16 105.20 + 71.70 97.91 107.34 + 83.03 113.24 120.21 + 83.23 117.31 124.86 + 131.97 127.94 71.44 + 141.91 138.63 72.98 + 104.53 106.27 63.63 + 67.34 90.51 107.75 + 65.22 89.46 105.71 + 70.62 97.20 114.98 + 73.83 105.09 118.56 + 77.74 114.16 124.68 + 74.00 107.62 114.43 + 69.61 95.47 104.65 + 71.72 97.53 105.05 + 75.08 99.19 109.72 + 77.22 105.52 113.40 + 84.51 116.78 123.46 + 83.58 113.83 121.64 + 75.97 107.44 113.78 + 80.16 110.06 117.17 + 82.30 113.44 120.40 + 85.92 117.36 123.45 + 90.67 121.78 125.78 + 91.28 117.92 125.57 + 93.14 118.58 125.64 + 95.94 118.79 129.53 + 94.97 115.38 129.62 + 87.21 110.56 120.28 + 81.03 106.47 111.06 + 79.04 107.51 111.27 + 72.44 99.76 103.22 + 74.05 98.75 103.00 + 85.23 109.78 116.39 + 91.69 113.80 122.54 + 89.32 110.30 115.28 + 88.00 111.23 114.23 + 81.75 106.42 107.19 + 80.85 103.84 106.08 + 74.36 93.05 96.58 + 78.32 93.57 100.92 + 81.42 95.53 101.53 + 89.69 105.26 110.97 + 90.00 108.95 113.44 + 84.50 102.16 107.15 + 81.00 97.81 101.05 + 75.42 90.25 92.83 + 65.47 79.34 82.21 + 69.83 86.66 89.52 + 71.75 87.47 90.77 + 68.72 81.53 83.83 + 65.91 76.97 79.61 + 58.95 69.45 72.07 + 57.16 65.88 71.79 + 59.74 68.69 74.50 + 51.49 58.53 61.09 + 46.23 55.01 54.19 + 54.48 67.39 65.50 + 52.63 65.96 64.04 + 57.14 70.08 69.27 + 59.25 71.24 71.97 + 60.27 71.33 72.89 + 56.27 65.64 66.53 + 52.02 60.51 60.05 + 51.49 58.30 58.80 + 54.83 61.71 62.52 + 55.51 61.72 61.38 + 54.82 61.51 59.27 + 49.63 56.83 54.82 + 45.47 52.09 49.69 + 38.48 44.02 41.57 + 31.69 36.11 33.06 + 31.57 35.01 30.54 + 28.80 30.33 26.18 + 29.47 30.78 27.56 + 29.39 30.99 28.93 + 27.52 28.80 26.66 + 21.32 21.46 18.33 +sample_blocks: | + 2 2 0.00 0.00 0.00 + 2 18 0.00 0.00 0.00 + 2 34 0.00 0.00 0.00 + 2 50 192.33 181.44 122.22 + 2 66 0.00 0.00 0.00 + 2 82 69.78 95.78 95.78 + 2 98 35.33 40.78 40.78 + 2 114 154.22 154.22 207.67 + 2 130 19.22 18.67 15.56 + 2 146 83.56 81.11 48.22 + 2 162 0.00 0.00 0.00 + 2 178 0.00 0.00 0.00 + 2 194 0.00 0.00 0.00 + 18 2 0.00 0.00 0.00 + 18 18 0.00 0.00 0.00 + 18 34 112.00 105.89 74.00 + 18 50 0.00 0.00 0.00 + 18 66 0.00 0.00 0.00 + 18 82 159.33 160.33 196.56 + 18 98 140.67 166.00 174.22 + 18 114 102.11 102.11 134.00 + 18 130 120.56 156.33 183.44 + 18 146 44.89 49.67 49.67 + 18 162 0.00 0.00 0.00 + 18 178 129.33 179.89 202.11 + 18 194 229.33 222.22 124.22 + 34 2 0.00 0.00 0.00 + 34 18 71.11 129.56 129.56 + 34 34 0.00 0.00 0.00 + 34 50 132.78 160.44 171.33 + 34 66 0.00 0.00 0.00 + 34 82 77.33 96.67 96.67 + 34 98 0.00 0.00 0.00 + 34 114 114.89 133.67 177.78 + 34 130 106.89 158.78 158.78 + 34 146 27.11 27.11 33.22 + 34 162 13.67 19.44 19.44 + 34 178 115.11 194.11 194.11 + 34 194 0.00 0.00 0.00 + 50 2 147.11 140.22 53.22 + 50 18 0.00 0.00 0.00 + 50 34 77.11 77.11 181.22 + 50 50 97.11 180.67 180.67 + 50 66 103.67 151.11 178.11 + 50 82 94.22 112.44 158.22 + 50 98 102.56 118.22 118.22 + 50 114 138.22 141.11 193.44 + 50 130 84.00 123.56 137.22 + 50 146 128.89 152.11 173.56 + 50 162 102.44 171.00 171.00 + 50 178 0.00 0.00 0.00 + 50 194 0.00 0.00 0.00 + 66 2 0.00 0.00 0.00 + 66 18 68.11 137.00 137.00 + 66 34 84.56 84.56 113.78 + 66 50 55.22 118.78 118.78 + 66 66 202.11 205.56 110.56 + 66 82 56.44 91.22 120.67 + 66 98 46.67 83.00 127.44 + 66 114 78.33 99.44 157.22 + 66 130 66.33 138.00 138.00 + 66 146 49.89 64.78 46.44 + 66 162 7.67 7.67 7.67 + 66 178 54.22 62.78 65.44 + 66 194 30.00 41.67 41.67 + 82 2 0.00 0.00 0.00 + 82 18 41.78 41.78 66.33 + 82 34 17.56 25.00 25.00 + 82 50 111.00 148.33 167.78 + 82 66 110.00 164.11 173.67 + 82 82 40.44 114.89 114.89 + 82 98 99.89 131.56 131.56 + 82 114 183.67 183.78 61.00 + 82 130 172.00 151.44 29.89 + 82 146 122.67 169.00 179.78 + 82 162 80.33 92.44 92.44 + 82 178 0.00 0.00 0.00 + 82 194 0.00 0.00 0.00 + 98 2 0.00 0.00 0.00 + 98 18 0.00 0.00 0.00 + 98 34 94.56 123.78 134.33 + 98 50 64.89 67.22 89.11 + 98 66 84.33 159.11 169.89 + 98 82 94.33 118.89 156.33 + 98 98 60.33 131.11 131.11 + 98 114 84.33 179.56 179.56 + 98 130 103.22 119.89 162.78 + 98 146 79.44 170.11 170.11 + 98 162 105.78 168.11 168.11 + 98 178 50.44 50.44 65.11 + 98 194 0.00 0.00 0.00 + 114 2 0.00 0.00 0.00 + 114 18 104.56 127.56 134.78 + 114 34 46.33 51.11 54.22 + 114 50 117.89 188.22 188.22 + 114 66 131.67 166.22 166.22 + 114 82 86.00 175.89 175.89 + 114 98 166.56 191.22 209.33 + 114 114 75.22 109.78 141.11 + 114 130 110.56 154.67 161.11 + 114 146 103.22 118.67 171.44 + 114 162 128.33 153.44 169.78 + 114 178 27.00 35.44 35.44 + 114 194 0.00 0.00 0.00 + 130 2 0.00 0.00 0.00 + 130 18 74.44 92.00 92.00 + 130 34 44.89 60.11 60.11 + 130 50 124.22 152.22 148.22 + 130 66 139.22 195.67 195.67 + 130 82 43.89 45.00 45.00 + 130 98 87.67 178.56 178.56 + 130 114 61.89 122.89 129.11 + 130 130 121.89 130.44 121.44 + 130 146 155.11 175.22 182.56 + 130 162 163.22 173.78 203.67 + 130 178 0.00 0.00 0.00 + 130 194 0.00 0.00 0.00 + 146 2 0.00 0.00 0.00 + 146 18 133.89 140.89 172.78 + 146 34 100.44 139.78 139.78 + 146 50 155.44 160.89 192.22 + 146 66 111.44 158.00 184.33 + 146 82 11.44 19.00 19.00 + 146 98 100.89 163.67 169.00 + 146 114 76.44 77.89 102.00 + 146 130 70.11 91.33 108.11 + 146 146 139.11 161.11 162.44 + 146 162 119.67 119.67 186.67 + 146 178 67.56 67.56 81.33 + 146 194 110.33 109.00 83.67 + 162 2 0.00 0.00 0.00 + 162 18 161.89 192.56 191.67 + 162 34 44.00 54.22 60.56 + 162 50 0.00 0.00 0.00 + 162 66 117.56 120.44 150.78 + 162 82 58.89 78.89 78.89 + 162 98 17.44 19.11 19.11 + 162 114 46.11 70.33 70.33 + 162 130 12.44 21.22 21.22 + 162 146 106.11 130.67 130.67 + 162 162 138.11 172.33 183.44 + 162 178 0.00 0.00 0.00 + 162 194 0.00 0.00 0.00 + 178 2 169.33 166.11 97.56 + 178 18 0.00 0.00 0.00 + 178 34 73.78 95.11 95.11 + 178 50 0.00 0.00 0.00 + 178 66 103.11 103.11 170.33 + 178 82 42.56 51.22 51.22 + 178 98 0.00 0.00 0.00 + 178 114 125.67 151.78 182.44 + 178 130 45.22 45.22 63.78 + 178 146 96.56 154.44 154.44 + 178 162 0.00 0.00 0.00 + 178 178 0.00 0.00 0.00 + 178 194 0.00 0.00 0.00 + 194 2 0.00 0.00 0.00 + 194 18 0.00 0.00 0.00 + 194 34 0.00 0.00 0.00 + 194 50 140.11 134.78 79.89 + 194 66 46.33 69.22 69.22 + 194 82 0.00 0.00 0.00 + 194 98 0.00 0.00 0.00 + 194 114 91.67 143.00 143.00 + 194 130 93.89 133.22 151.33 + 194 146 0.00 0.00 0.00 + 194 162 0.00 0.00 0.00 + 194 178 0.00 0.00 0.00 + 194 194 0.00 0.00 0.00 +... diff --git a/unittest/graphics/tests/dump-image-depthcue-start.yaml b/unittest/graphics/tests/dump-image-depthcue-start.yaml new file mode 100644 index 00000000000..fbd2d8b4442 --- /dev/null +++ b/unittest/graphics/tests/dump-image-depthcue-start.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 13:46:19 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 depthcue yes 1.0 auto 0.5 + dump_modify viz backcolor blue backcolor2 black +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 14.11 20.38 13.10 + 9.52 14.61 14.01 + 12.29 16.42 17.75 + 15.26 18.27 17.71 + 15.18 18.81 17.05 + 14.74 19.12 16.17 + 15.03 18.66 14.62 + 14.30 17.41 15.22 + 14.64 16.45 15.29 + 14.53 18.25 18.21 + 16.95 21.67 23.30 + 16.82 21.25 24.21 + 17.98 27.36 31.50 + 18.93 35.82 42.76 + 21.41 49.05 55.81 + 21.48 47.60 52.44 + 19.34 39.12 43.69 + 19.68 34.33 45.67 + 20.45 33.70 50.88 + 15.99 32.60 53.88 + 10.03 30.59 60.16 + 11.24 39.34 68.70 + 12.79 44.41 71.25 + 13.37 43.46 66.11 + 12.99 41.38 58.88 + 13.67 42.24 60.77 + 13.84 39.15 62.80 + 13.96 41.09 67.78 + 14.06 41.98 72.42 + 16.41 42.35 77.19 + 17.02 44.59 76.13 + 15.42 45.59 73.30 + 15.74 50.91 74.63 + 15.23 52.13 76.45 + 14.89 52.28 77.70 + 13.29 45.06 70.02 + 13.19 40.28 67.65 + 15.12 45.27 74.12 + 16.27 51.54 79.87 + 15.61 51.18 81.58 + 18.11 52.66 83.34 + 20.44 53.90 82.16 + 22.84 59.88 87.86 + 26.46 55.53 80.80 + 22.59 53.13 72.86 + 19.43 58.21 81.84 + 19.27 60.64 95.06 + 18.30 61.27 98.55 + 20.75 61.38 97.81 + 24.95 64.84 95.36 + 26.69 66.32 94.14 + 26.80 62.63 92.47 + 26.74 66.04 88.48 + 31.07 68.69 87.29 + 30.53 61.94 81.85 + 30.32 66.42 85.12 + 31.07 69.38 88.70 + 28.77 67.45 92.10 + 26.29 59.47 88.48 + 28.20 56.05 88.57 + 33.62 62.75 96.35 + 35.10 63.15 91.01 + 39.01 73.81 97.07 + 36.05 80.53 100.64 + 35.18 81.14 95.57 + 26.67 68.69 88.50 + 23.54 60.02 86.29 + 25.97 64.32 100.72 + 27.43 69.25 101.58 + 29.08 59.31 96.47 + 28.00 52.44 89.06 + 31.19 53.15 91.62 + 30.86 56.47 98.81 + 26.97 60.77 97.28 + 25.50 72.33 99.10 + 26.23 76.31 103.43 + 26.27 66.78 101.30 + 26.20 62.53 100.28 + 24.02 57.01 95.33 + 25.45 61.31 96.38 + 27.60 71.48 102.78 + 28.57 73.25 108.62 + 25.89 63.52 103.91 + 24.64 59.73 100.78 + 21.73 53.22 98.71 + 17.56 56.20 105.82 + 11.93 59.09 109.08 + 12.77 58.34 110.44 + 13.41 64.92 109.58 + 15.71 62.52 109.33 + 14.09 61.41 108.69 + 15.46 60.42 112.16 + 14.09 61.76 108.91 + 12.74 60.74 108.53 + 12.48 58.90 108.11 + 11.59 53.65 107.42 + 13.19 56.77 114.27 + 14.71 60.64 120.93 + 13.29 56.08 118.01 + 10.31 44.30 106.74 + 10.50 44.72 111.50 + 12.22 43.98 116.98 + 12.51 50.37 120.42 + 15.06 63.95 120.92 + 16.09 70.16 126.05 + 14.84 70.58 114.11 + 12.68 58.94 105.13 + 12.80 54.62 109.44 + 13.55 50.05 110.06 + 15.35 45.20 114.38 + 16.00 41.56 110.30 + 14.98 43.90 112.14 + 16.16 64.39 123.25 + 17.18 74.81 125.78 + 15.28 68.35 116.67 + 13.96 61.99 115.72 + 14.93 55.98 116.14 + 15.90 62.74 120.23 + 13.81 55.16 117.28 + 13.11 49.85 122.50 + 10.76 40.62 121.08 + 11.06 44.04 122.25 + 12.46 54.24 122.07 + 14.79 61.73 126.92 + 14.48 61.96 123.71 + 12.86 52.21 118.84 + 12.85 51.30 117.61 + 13.30 54.02 117.22 + 13.59 58.38 118.14 + 13.28 61.31 130.78 + 13.36 57.45 127.69 + 12.84 58.33 127.77 + 11.77 53.11 128.63 + 11.25 45.20 128.90 + 9.54 37.72 132.68 + 8.88 46.12 126.58 + 13.38 59.56 134.79 + 14.30 62.12 138.41 + 13.28 55.17 130.84 + 14.22 50.93 125.27 + 15.38 50.19 133.74 + 14.04 54.45 131.93 + 11.51 50.51 121.29 + 10.65 53.04 121.25 + 11.37 51.69 130.15 + 12.55 51.83 133.41 + 13.12 46.04 135.84 + 14.95 48.77 134.90 + 17.34 55.62 141.47 + 14.53 50.95 139.59 + 12.54 51.95 143.76 + 10.80 49.40 138.67 + 12.20 51.40 143.84 + 13.93 52.33 139.27 + 16.27 61.15 141.08 + 16.74 62.35 133.42 + 15.89 59.88 134.37 + 12.69 49.85 135.49 + 9.71 35.56 139.96 + 8.92 34.48 148.30 + 10.93 38.85 153.66 + 12.32 42.02 161.31 + 13.97 48.70 159.82 + 14.04 51.69 154.63 + 14.54 47.45 155.43 + 17.07 52.17 159.09 + 16.77 51.36 157.10 + 15.61 43.70 149.91 + 13.22 35.94 150.74 + 11.40 31.80 153.24 + 11.67 35.20 170.33 + 12.94 45.87 167.38 + 16.41 54.51 167.45 + 15.95 47.40 162.41 + 13.27 34.66 158.13 + 10.39 26.09 169.90 + 9.93 27.79 188.90 + 10.56 30.52 192.60 + 14.59 30.80 188.01 + 19.18 30.89 185.67 + 15.37 28.75 179.49 + 19.82 35.19 181.68 + 20.46 40.70 183.89 + 20.23 38.88 186.06 + 18.18 32.48 190.06 + 17.49 28.22 193.99 + 20.05 24.70 196.21 + 20.55 25.88 195.29 + 20.41 29.02 193.65 + 19.66 27.19 198.38 + 18.54 25.72 202.75 + 17.98 22.59 202.27 + 18.73 21.80 205.39 + 20.64 29.77 207.63 + 20.75 30.79 204.50 + 18.86 28.03 203.70 + 13.36 22.48 215.56 + 12.73 20.74 218.18 + 18.23 22.11 217.48 + 17.78 19.31 225.76 +col_means: | + 13.15 17.96 119.33 + 13.65 21.09 118.22 + 14.02 20.11 117.00 + 12.82 19.46 114.68 + 11.84 21.59 114.28 + 13.71 25.02 117.02 + 14.35 30.20 115.81 + 15.42 33.19 111.50 + 14.94 31.30 110.56 + 16.05 32.42 111.59 + 15.77 31.43 110.83 + 15.09 28.61 109.81 + 15.11 25.82 108.83 + 15.99 29.72 111.68 + 16.15 31.59 110.44 + 14.43 31.50 110.28 + 14.73 35.66 112.38 + 16.51 38.44 114.00 + 13.95 35.63 116.13 + 15.63 37.60 115.47 + 16.52 38.22 115.06 + 16.30 36.39 112.77 + 15.87 34.84 114.86 + 17.75 38.54 115.59 + 20.22 46.67 119.64 + 17.90 49.20 121.30 + 16.59 43.84 116.81 + 15.91 38.73 115.36 + 15.10 37.54 113.00 + 17.01 47.52 120.38 + 19.43 50.83 124.08 + 18.54 51.34 118.16 + 15.27 47.62 107.98 + 15.54 43.17 107.53 + 15.35 35.92 110.50 + 16.01 40.88 107.14 + 18.49 44.40 114.07 + 20.19 53.77 119.15 + 20.25 57.74 116.69 + 17.48 51.10 112.13 + 14.99 41.79 110.42 + 16.09 43.83 112.03 + 18.00 51.18 116.31 + 18.20 53.71 116.18 + 20.20 63.58 116.72 + 20.36 63.62 115.73 + 18.50 52.48 114.10 + 18.59 46.78 112.47 + 18.02 45.09 113.42 + 16.46 44.63 112.39 + 17.19 53.24 117.14 + 17.73 57.58 116.78 + 17.55 54.02 117.81 + 15.71 51.60 119.66 + 15.40 48.14 119.17 + 14.33 40.63 117.05 + 13.67 39.76 114.68 + 14.95 45.37 120.31 + 15.08 47.56 122.05 + 13.51 47.34 112.56 + 14.97 48.13 116.89 + 16.38 56.02 114.33 + 15.64 62.48 118.05 + 14.08 63.18 113.62 + 15.21 67.21 108.87 + 16.52 64.95 107.34 + 16.52 61.28 110.78 + 15.49 59.38 109.30 + 16.30 57.90 111.89 + 16.31 55.44 116.38 + 14.88 55.12 120.59 + 16.49 63.30 118.95 + 19.90 71.26 124.29 + 18.21 69.95 125.98 + 15.99 64.99 124.84 + 14.24 57.16 123.53 + 12.73 45.93 119.92 + 11.77 50.01 112.81 + 14.37 61.62 113.50 + 15.54 69.23 117.06 + 13.54 66.23 113.44 + 13.26 67.78 110.23 + 14.31 67.81 121.56 + 14.88 66.76 120.90 + 12.88 55.73 119.58 + 12.82 48.12 114.92 + 13.66 51.51 116.81 + 14.71 48.74 127.23 + 14.13 46.22 127.22 + 14.01 42.28 122.37 + 11.99 39.64 120.38 + 13.62 44.44 115.09 + 18.77 60.88 117.28 + 25.29 70.01 116.73 + 24.65 68.02 111.65 + 25.91 66.25 120.25 + 24.21 56.07 120.95 + 18.16 47.47 115.86 + 20.39 49.52 114.23 + 17.94 54.65 117.47 + 17.51 65.28 119.16 + 18.29 62.36 112.83 + 21.55 62.22 109.19 + 17.75 58.52 106.30 + 14.27 61.21 102.78 + 18.29 63.50 103.17 + 18.57 63.95 104.47 + 19.59 61.14 102.63 + 26.27 61.18 105.10 + 26.52 63.02 108.66 + 24.02 63.84 108.67 + 19.14 64.77 107.39 + 16.54 63.73 116.24 + 15.87 64.06 110.69 + 16.46 64.50 108.22 + 17.26 64.75 109.21 + 19.32 67.08 111.49 + 16.11 59.89 99.62 + 13.10 56.04 98.12 + 12.13 46.59 96.58 + 13.05 43.06 103.71 + 13.49 45.76 102.36 + 13.26 43.83 102.75 + 13.52 50.53 107.31 + 17.31 59.08 109.33 + 17.18 64.64 116.25 + 95.97 95.66 39.58 + 111.00 111.58 44.87 + 71.95 77.64 35.80 + 14.14 48.38 104.64 + 16.34 51.37 115.88 + 16.32 54.30 119.83 + 16.62 61.27 121.97 + 16.91 68.50 121.91 + 16.61 62.20 112.75 + 16.29 50.27 112.36 + 15.23 51.58 102.14 + 17.89 52.87 100.86 + 19.36 61.21 96.67 + 21.41 70.03 105.42 + 20.43 65.94 105.89 + 15.40 62.61 102.62 + 17.20 62.77 106.72 + 17.66 66.44 113.94 + 18.57 67.97 110.54 + 18.43 67.56 104.96 + 18.39 61.06 110.88 + 18.50 59.68 111.64 + 19.77 56.88 111.33 + 20.77 54.05 114.31 + 19.98 56.95 112.87 + 18.50 57.65 102.47 + 18.27 61.70 107.98 + 17.52 58.85 112.08 + 18.05 56.20 113.64 + 19.20 59.06 113.56 + 20.09 57.37 115.34 + 18.88 53.95 107.83 + 19.10 57.99 111.17 + 19.23 61.02 112.64 + 17.23 56.73 110.83 + 14.94 47.12 109.40 + 13.51 39.50 112.72 + 17.46 41.26 117.28 + 17.86 44.06 113.29 + 20.36 52.17 117.25 + 18.91 48.69 116.11 + 16.78 45.61 110.53 + 15.64 40.60 109.05 + 15.01 38.37 115.09 + 16.69 44.88 121.59 + 16.77 43.22 123.19 + 14.31 36.16 117.67 + 14.46 34.10 118.73 + 15.80 34.84 124.59 + 14.31 30.41 125.85 + 13.93 30.37 124.64 + 12.62 25.02 122.36 + 13.78 28.86 127.20 + 14.72 37.12 127.07 + 14.12 37.45 127.78 + 14.27 36.77 125.38 + 12.81 33.52 122.53 + 12.43 31.55 122.27 + 12.22 28.59 120.83 + 12.45 27.23 121.45 + 13.04 24.89 123.69 + 14.16 26.25 125.53 + 13.79 24.94 121.82 + 13.48 25.52 120.05 + 11.09 24.00 122.15 + 11.61 23.55 124.56 + 11.35 21.40 127.25 + 9.66 17.64 126.73 + 10.69 16.80 123.76 + 11.27 13.93 123.02 + 11.75 14.10 124.19 + 10.68 13.55 125.13 + 9.71 12.03 124.17 + 9.06 9.45 123.59 +sample_blocks: | + 2 2 0.00 0.00 3.33 + 2 18 0.00 0.00 3.33 + 2 34 0.00 0.00 3.33 + 2 50 133.67 113.22 5.67 + 2 66 0.00 0.00 3.33 + 2 82 10.44 57.11 59.11 + 2 98 1.22 10.78 13.67 + 2 114 21.44 21.44 118.00 + 2 130 6.78 5.67 3.33 + 2 146 72.44 68.00 9.44 + 2 162 0.00 0.00 3.33 + 2 178 0.00 0.00 3.33 + 2 194 0.00 0.00 3.33 + 18 2 0.00 0.00 23.67 + 18 18 0.00 0.00 23.67 + 18 34 67.67 57.11 9.00 + 18 50 0.00 0.00 23.67 + 18 66 0.00 0.00 23.67 + 18 82 9.22 10.89 81.11 + 18 98 5.56 51.00 70.00 + 18 114 12.78 12.78 81.22 + 18 130 23.67 86.00 139.89 + 18 146 0.22 9.00 26.22 + 18 162 0.00 0.00 23.67 + 18 178 29.11 118.67 160.56 + 18 194 210.11 197.78 26.44 + 34 2 0.00 0.00 44.00 + 34 18 18.67 108.56 122.89 + 34 34 0.00 0.00 44.00 + 34 50 9.11 60.11 84.00 + 34 66 0.00 0.00 44.00 + 34 82 2.22 36.89 51.78 + 34 98 0.00 0.00 44.00 + 34 114 16.78 45.00 124.56 + 34 130 14.56 101.11 101.11 + 34 146 0.00 0.00 45.67 + 34 162 0.33 11.33 50.44 + 34 178 26.89 156.22 156.22 + 34 194 0.00 0.00 44.00 + 50 2 140.33 131.56 40.67 + 50 18 0.00 0.00 64.67 + 50 34 27.78 27.78 161.11 + 50 50 21.22 135.44 137.78 + 50 66 23.33 95.56 137.56 + 50 82 17.11 44.67 112.44 + 50 98 11.00 38.67 60.11 + 50 114 20.11 25.67 127.78 + 50 130 20.78 82.44 131.22 + 50 146 9.44 52.67 93.78 + 50 162 16.11 123.56 123.56 + 50 178 0.00 0.00 64.67 + 50 194 0.00 0.00 64.67 + 66 2 0.00 0.00 85.00 + 66 18 13.22 102.22 102.22 + 66 34 9.78 9.78 109.56 + 66 50 11.22 89.89 89.89 + 66 66 130.78 139.78 45.89 + 66 82 8.33 49.44 86.78 + 66 98 13.67 56.33 107.67 + 66 114 19.67 47.56 123.89 + 66 130 14.78 104.67 104.67 + 66 146 26.56 44.67 61.89 + 66 162 0.00 0.00 75.67 + 66 178 0.44 16.44 69.44 + 66 194 2.22 23.78 91.33 + 82 2 0.00 0.00 105.33 + 82 18 9.56 9.56 122.44 + 82 34 0.00 10.89 93.00 + 82 50 17.00 82.11 112.89 + 82 66 13.67 90.78 119.00 + 82 82 12.67 96.89 96.89 + 82 98 6.44 58.22 114.11 + 82 114 170.44 171.78 50.67 + 82 130 153.11 133.67 26.78 + 82 146 18.00 100.22 125.22 + 82 162 1.78 23.44 83.00 + 82 178 0.00 0.00 105.33 + 82 194 0.00 0.00 105.33 + 98 2 0.00 0.00 125.67 + 98 18 0.00 0.00 125.67 + 98 34 10.11 62.56 111.11 + 98 50 4.22 8.56 105.44 + 98 66 24.11 120.67 135.44 + 98 82 16.33 55.11 109.78 + 98 98 12.11 105.33 105.33 + 98 114 26.89 147.22 153.00 + 98 130 17.00 47.67 119.67 + 98 146 24.11 143.67 143.67 + 98 162 15.44 120.33 138.11 + 98 178 3.22 3.22 122.89 + 98 194 0.00 0.00 125.67 + 114 2 0.00 0.00 146.00 + 114 18 4.67 45.89 76.56 + 114 34 0.33 8.78 120.22 + 114 50 26.67 143.89 143.89 + 114 66 4.56 62.67 86.33 + 114 82 26.11 144.67 146.78 + 114 98 13.67 58.56 137.22 + 114 114 17.78 57.22 147.67 + 114 130 8.00 72.67 92.44 + 114 146 16.44 42.67 125.89 + 114 162 8.56 53.56 95.22 + 114 178 0.44 16.33 130.00 + 114 194 0.00 0.00 146.00 + 130 2 0.00 0.00 166.67 + 130 18 1.78 33.56 118.33 + 130 34 2.56 30.56 147.00 + 130 50 12.22 62.22 94.89 + 130 66 15.11 108.78 139.78 + 130 82 0.00 1.33 157.33 + 130 98 25.89 142.67 149.78 + 130 114 11.56 88.44 96.33 + 130 130 40.11 57.00 87.44 + 130 146 3.56 29.78 117.44 + 130 162 9.33 27.44 136.67 + 130 178 0.00 0.00 166.67 + 130 194 0.00 0.00 166.67 + 146 2 0.00 0.00 187.00 + 146 18 10.78 24.11 97.33 + 146 34 5.78 68.67 69.33 + 146 50 8.00 17.56 125.89 + 146 66 21.44 97.33 140.44 + 146 82 0.67 13.00 179.11 + 146 98 17.11 110.00 129.22 + 146 114 1.00 3.33 91.11 + 146 130 4.22 33.67 56.67 + 146 146 3.67 43.33 118.44 + 146 162 21.56 21.56 137.56 + 146 178 3.67 3.67 153.00 + 146 194 45.67 43.67 155.00 + 162 2 0.00 0.00 207.33 + 162 18 31.11 86.56 132.44 + 162 34 3.22 22.33 176.56 + 162 50 0.00 0.00 207.33 + 162 66 7.78 13.33 106.00 + 162 82 3.11 40.67 162.67 + 162 98 0.00 2.89 195.22 + 162 114 2.00 36.33 132.44 + 162 130 0.00 11.33 172.44 + 162 146 2.78 46.56 119.00 + 162 162 10.22 72.56 119.44 + 162 178 0.00 0.00 207.33 + 162 194 0.00 0.00 207.33 + 178 2 153.78 147.89 109.56 + 178 18 0.00 0.00 227.67 + 178 34 4.33 44.00 155.56 + 178 50 0.00 0.00 227.67 + 178 66 17.33 17.33 122.78 + 178 82 0.22 16.22 173.00 + 178 98 0.00 0.00 227.67 + 178 114 16.22 64.89 121.33 + 178 130 1.44 1.44 158.44 + 178 146 11.67 100.78 100.78 + 178 162 0.00 0.00 227.67 + 178 178 0.00 0.00 227.67 + 178 194 0.00 0.00 227.67 + 194 2 0.00 0.00 248.00 + 194 18 0.00 0.00 248.00 + 194 34 0.00 0.00 248.00 + 194 50 118.44 109.56 98.11 + 194 66 3.56 41.33 178.89 + 194 82 0.00 0.00 248.00 + 194 98 0.00 0.00 248.00 + 194 114 13.22 93.89 121.56 + 194 130 11.67 71.56 98.78 + 194 146 0.00 0.00 248.00 + 194 162 0.00 0.00 248.00 + 194 178 0.00 0.00 248.00 + 194 194 0.00 0.00 248.00 +... diff --git a/unittest/graphics/tests/dump-image-depthcue.yaml b/unittest/graphics/tests/dump-image-depthcue.yaml new file mode 100644 index 00000000000..08d7c905c0a --- /dev/null +++ b/unittest/graphics/tests/dump-image-depthcue.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 12:55:39 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 depthcue yes 0.8 auto auto + dump_modify viz backcolor blue backcolor2 black +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 8.81 13.03 8.89 + 5.88 9.36 9.79 + 7.57 10.44 12.49 + 9.34 11.43 13.13 + 9.20 11.57 12.97 + 8.87 11.64 12.79 + 9.02 11.29 12.13 + 8.53 10.57 13.31 + 8.68 9.99 13.79 + 8.56 11.05 15.97 + 9.97 13.13 19.88 + 9.88 12.79 20.77 + 10.55 16.43 25.44 + 11.23 21.50 32.48 + 12.79 29.43 41.00 + 13.04 28.67 39.32 + 11.86 23.66 34.41 + 12.10 20.84 36.45 + 12.61 20.84 40.83 + 9.90 20.53 43.12 + 6.18 19.20 47.23 + 6.91 24.52 53.22 + 7.86 27.64 55.06 + 8.38 27.26 52.36 + 8.21 26.09 48.30 + 8.71 26.59 50.29 + 8.85 24.64 52.00 + 8.93 25.77 55.36 + 8.98 26.20 58.61 + 10.53 26.52 62.33 + 11.18 28.49 62.26 + 10.14 29.42 61.14 + 10.32 32.87 62.52 + 10.01 33.62 64.03 + 9.81 33.81 65.31 + 9.05 29.59 61.13 + 9.22 26.73 60.28 + 10.35 30.12 64.92 + 11.18 34.28 69.14 + 10.78 34.37 70.90 + 12.42 35.34 72.83 + 13.79 35.84 71.88 + 15.34 39.66 75.59 + 17.62 36.50 71.53 + 15.34 35.10 66.85 + 13.36 38.99 73.92 + 13.31 40.88 83.35 + 12.71 41.59 86.52 + 14.77 42.78 86.17 + 18.30 45.98 84.88 + 20.11 48.26 85.50 + 20.50 46.35 84.92 + 20.41 48.30 81.98 + 22.73 49.21 80.86 + 22.23 44.54 77.28 + 22.23 46.98 80.52 + 23.25 49.22 83.34 + 21.83 48.52 86.09 + 20.41 44.73 84.19 + 21.61 42.59 84.45 + 25.48 47.84 90.21 + 25.91 46.16 87.31 + 28.40 52.67 91.78 + 27.14 59.27 94.58 + 26.69 60.84 91.06 + 21.26 52.97 86.52 + 19.44 47.13 85.41 + 21.29 50.55 96.16 + 22.51 53.91 96.97 + 23.55 47.04 93.66 + 22.67 41.19 88.36 + 24.73 40.59 90.31 + 24.42 43.82 96.05 + 22.37 48.38 95.57 + 21.34 56.51 96.81 + 22.06 58.54 99.33 + 22.18 50.62 98.62 + 22.32 47.27 98.28 + 20.70 43.94 94.78 + 21.61 47.44 95.97 + 23.19 55.52 101.53 + 24.14 56.80 105.69 + 22.61 49.88 102.28 + 21.58 46.30 100.12 + 19.15 41.94 99.74 + 14.86 43.66 105.80 + 9.51 45.95 109.35 + 10.16 45.52 110.68 + 10.19 48.30 109.25 + 11.57 45.55 109.28 + 10.25 43.51 109.33 + 11.19 42.99 112.72 + 10.37 44.53 111.14 + 9.51 43.54 110.89 + 9.41 42.48 111.58 + 8.71 39.19 110.81 + 9.93 42.27 116.13 + 11.15 45.37 121.01 + 10.07 42.27 119.56 + 7.94 34.02 111.61 + 7.92 32.88 114.49 + 9.18 31.77 120.05 + 9.47 37.12 122.59 + 11.28 46.94 123.14 + 11.97 51.38 126.78 + 11.07 51.56 119.06 + 9.53 43.40 112.44 + 9.46 39.53 115.91 + 9.79 35.28 116.33 + 10.99 30.88 121.44 + 11.36 28.13 118.94 + 10.51 29.71 120.66 + 11.68 45.61 128.85 + 12.43 52.22 131.49 + 11.18 47.84 124.88 + 10.23 44.30 124.27 + 11.15 40.72 125.30 + 12.16 45.65 128.02 + 10.81 40.74 125.83 + 10.22 36.18 129.49 + 8.22 29.28 129.45 + 8.12 30.86 130.32 + 8.90 37.53 130.74 + 10.52 43.11 135.54 + 10.49 44.30 133.59 + 9.63 37.74 130.50 + 10.10 37.51 129.41 + 9.96 38.77 129.82 + 9.71 41.15 131.22 + 9.54 42.18 140.10 + 9.66 39.52 138.97 + 9.27 40.03 139.02 + 8.42 36.91 140.15 + 8.10 31.75 140.69 + 7.08 26.79 144.11 + 6.37 31.97 140.33 + 9.53 40.40 145.92 + 10.39 42.63 148.75 + 9.79 38.22 144.28 + 10.71 35.75 140.69 + 11.23 35.03 146.71 + 9.93 37.62 146.63 + 8.21 34.52 140.59 + 7.41 35.51 140.75 + 8.02 34.88 146.89 + 9.15 35.46 149.34 + 9.78 31.82 151.53 + 10.99 33.18 151.64 + 12.49 37.62 156.29 + 10.39 34.87 155.28 + 8.78 35.38 158.53 + 7.53 33.38 155.93 + 8.47 34.58 159.21 + 9.82 35.41 156.13 + 11.36 41.00 158.18 + 11.62 41.61 152.78 + 10.98 40.02 154.68 + 8.83 33.34 156.28 + 6.78 23.83 159.78 + 6.13 22.34 166.89 + 7.46 25.18 170.71 + 8.41 27.36 176.53 + 9.60 32.02 176.09 + 9.59 34.05 173.29 + 9.84 31.64 173.05 + 11.47 34.82 175.75 + 11.27 34.14 174.37 + 10.45 28.70 170.71 + 8.81 23.05 172.01 + 7.59 20.13 175.03 + 7.68 22.23 186.91 + 8.49 29.43 185.04 + 10.64 35.09 185.69 + 10.29 30.47 182.76 + 8.63 22.23 180.90 + 6.81 16.66 188.94 + 6.50 17.62 201.29 + 6.90 19.32 204.38 + 9.41 19.74 202.00 + 12.21 19.98 200.85 + 9.87 19.05 196.69 + 12.41 22.83 198.67 + 12.71 26.06 200.63 + 12.50 24.85 203.17 + 11.22 20.75 205.67 + 10.78 17.84 209.43 + 12.36 15.44 211.16 + 12.73 16.11 211.12 + 12.73 18.09 210.47 + 12.36 17.05 213.73 + 11.77 16.41 216.84 + 11.48 14.48 216.68 + 12.03 14.04 219.19 + 13.35 19.39 220.94 + 13.54 20.17 219.05 + 12.40 18.43 218.63 + 8.91 15.00 227.01 + 8.60 14.00 229.00 + 12.24 14.93 228.88 + 12.02 13.11 234.91 +col_means: | + 9.12 12.26 122.55 + 9.41 14.15 121.81 + 9.67 13.40 120.91 + 8.86 12.88 119.42 + 8.10 14.07 119.31 + 9.38 16.52 121.05 + 9.85 19.88 120.39 + 10.53 21.86 117.72 + 10.26 20.65 117.19 + 10.97 21.55 117.64 + 10.78 20.86 117.22 + 10.39 19.23 116.75 + 10.48 17.51 116.05 + 11.00 19.83 117.60 + 10.95 20.73 116.45 + 9.79 21.05 116.45 + 10.09 23.86 118.13 + 11.24 25.86 119.38 + 9.39 23.89 120.79 + 10.46 25.07 120.34 + 11.02 25.01 120.12 + 10.79 23.70 118.67 + 10.52 22.41 120.02 + 11.88 24.90 120.81 + 13.66 30.81 123.48 + 12.12 32.66 124.47 + 11.12 29.27 120.88 + 10.70 26.04 119.54 + 10.06 24.98 117.95 + 11.40 32.13 123.35 + 13.08 34.43 126.11 + 12.45 34.66 122.28 + 10.16 31.80 115.33 + 10.46 28.74 115.09 + 10.29 23.62 117.01 + 10.37 26.04 114.89 + 12.27 28.70 118.81 + 13.67 36.20 122.70 + 13.71 38.95 120.80 + 11.69 34.51 117.31 + 10.06 28.32 115.64 + 10.87 29.95 117.06 + 11.97 34.77 120.63 + 12.27 36.70 120.30 + 13.55 42.74 120.14 + 13.54 42.01 119.08 + 12.38 34.26 118.56 + 12.54 30.82 117.61 + 12.45 30.84 118.71 + 11.29 30.59 117.94 + 11.96 36.73 120.81 + 12.12 39.25 120.47 + 12.09 36.69 121.31 + 10.94 35.33 122.75 + 10.84 33.13 122.53 + 10.33 28.48 120.27 + 9.79 27.59 118.47 + 10.87 31.82 121.17 + 10.96 33.72 122.89 + 9.60 32.43 116.43 + 10.41 32.48 119.47 + 11.36 37.81 118.05 + 11.02 42.13 120.83 + 9.81 42.70 118.08 + 10.71 45.70 114.88 + 11.54 44.02 113.77 + 12.22 42.84 115.83 + 11.38 41.99 115.40 + 11.82 40.99 117.52 + 11.61 38.55 119.94 + 10.61 38.33 122.33 + 11.92 44.17 121.53 + 15.04 50.77 124.78 + 13.41 49.66 125.28 + 11.89 46.63 123.96 + 10.51 41.04 123.69 + 9.40 32.98 121.45 + 8.42 34.48 117.07 + 10.21 42.17 117.80 + 11.23 47.56 120.49 + 9.88 46.57 118.25 + 10.03 48.75 116.03 + 10.72 48.60 122.70 + 10.93 46.84 121.49 + 9.55 39.00 121.09 + 9.81 34.60 118.09 + 10.47 37.53 119.74 + 10.82 35.47 126.27 + 10.43 34.05 125.94 + 10.50 31.34 123.24 + 9.36 29.80 121.80 + 10.39 33.68 118.08 + 13.52 44.16 120.17 + 17.60 49.75 120.19 + 16.93 48.16 115.72 + 18.24 47.85 121.62 + 17.18 40.84 122.13 + 13.21 35.04 118.21 + 14.09 35.41 116.89 + 12.76 39.38 119.81 + 12.79 47.38 121.67 + 12.99 44.69 117.46 + 15.36 44.95 115.49 + 13.00 42.52 113.09 + 10.59 43.58 109.62 + 12.66 43.92 109.52 + 13.01 44.17 110.47 + 13.82 42.88 109.56 + 17.94 42.92 111.47 + 18.38 45.08 113.48 + 16.96 46.13 112.45 + 13.91 47.27 111.19 + 12.43 47.15 117.83 + 12.02 47.77 113.61 + 12.60 48.52 111.44 + 13.45 50.03 113.02 + 15.05 51.91 114.69 + 12.68 46.61 105.29 + 10.42 42.44 103.92 + 9.64 34.65 104.22 + 10.31 31.48 110.24 + 10.54 33.51 109.91 + 10.32 32.65 109.75 + 10.37 37.95 112.42 + 13.34 45.12 112.73 + 13.16 49.03 117.13 + 84.22 80.70 47.34 + 98.31 95.64 52.23 + 63.55 65.85 44.72 + 11.29 35.75 109.44 + 12.36 37.84 117.23 + 12.34 40.33 119.96 + 12.45 45.33 121.81 + 12.84 51.19 121.80 + 12.88 47.88 115.33 + 12.45 39.09 114.25 + 11.50 38.42 107.10 + 13.05 38.15 106.75 + 14.23 43.95 104.56 + 15.54 49.54 111.28 + 14.66 46.66 111.43 + 11.15 44.45 109.11 + 12.40 44.09 112.19 + 12.51 45.68 117.11 + 13.00 46.53 114.41 + 12.88 46.08 110.84 + 12.71 41.42 115.14 + 12.79 40.45 115.86 + 13.68 38.52 116.31 + 14.32 36.48 118.75 + 13.81 38.98 117.50 + 12.85 39.98 110.38 + 12.44 42.77 113.92 + 11.97 41.02 116.54 + 12.21 38.46 117.64 + 12.96 39.20 117.83 + 13.39 37.28 119.25 + 12.66 35.31 114.32 + 12.70 37.89 117.00 + 12.60 39.48 117.99 + 11.10 36.21 116.57 + 9.74 30.23 115.69 + 9.03 25.86 118.17 + 11.76 27.51 121.01 + 11.99 29.34 118.14 + 13.62 34.59 120.66 + 12.60 32.04 119.97 + 10.97 29.41 116.09 + 10.46 26.54 115.20 + 9.66 24.66 119.36 + 10.68 28.93 123.54 + 10.72 27.80 124.66 + 9.21 23.19 121.19 + 9.31 21.48 121.99 + 10.13 21.76 125.66 + 9.06 18.78 126.44 + 8.88 18.83 125.74 + 8.12 15.84 124.39 + 9.05 18.68 127.29 + 9.49 23.72 127.20 + 9.13 23.82 127.59 + 9.21 23.45 126.03 + 8.30 21.60 124.25 + 8.08 20.48 123.86 + 7.88 18.42 122.75 + 8.01 17.55 123.13 + 8.69 16.21 124.47 + 9.44 17.08 125.70 + 9.21 16.19 123.18 + 9.09 16.57 122.06 + 7.41 15.46 123.30 + 7.70 15.04 124.86 + 7.50 13.62 126.67 + 6.49 11.36 126.49 + 7.26 11.12 124.66 + 7.67 9.40 124.18 + 7.98 9.53 124.87 + 7.22 9.06 125.45 + 6.60 8.06 124.83 + 6.23 6.39 124.59 +sample_blocks: | + 2 2 0.00 0.00 3.33 + 2 18 0.00 0.00 3.33 + 2 34 0.00 0.00 3.33 + 2 50 81.67 69.33 4.56 + 2 66 0.00 0.00 3.33 + 2 82 6.56 36.33 38.78 + 2 98 0.78 7.22 10.33 + 2 114 13.44 13.44 75.67 + 2 130 4.22 3.56 3.33 + 2 146 44.00 41.22 6.89 + 2 162 0.00 0.00 3.33 + 2 178 0.00 0.00 3.33 + 2 194 0.00 0.00 3.33 + 18 2 0.00 0.00 23.67 + 18 18 0.00 0.00 23.67 + 18 34 41.11 34.78 14.44 + 18 50 0.00 0.00 23.67 + 18 66 0.00 0.00 23.67 + 18 82 6.11 7.22 62.11 + 18 98 3.44 32.56 53.00 + 18 114 8.22 8.22 60.11 + 18 130 14.22 53.00 94.78 + 18 146 0.11 5.44 25.11 + 18 162 0.00 0.00 23.67 + 18 178 17.33 72.22 106.00 + 18 194 129.22 121.67 24.89 + 34 2 0.00 0.00 44.00 + 34 18 12.44 74.67 98.00 + 34 34 0.00 0.00 44.00 + 34 50 5.22 36.56 68.22 + 34 66 0.00 0.00 44.00 + 34 82 1.22 21.78 48.56 + 34 98 0.00 0.00 44.00 + 34 114 10.00 29.78 94.00 + 34 130 8.89 64.56 79.67 + 34 146 0.00 0.00 44.89 + 34 162 0.22 6.56 47.78 + 34 178 17.22 101.67 116.89 + 34 194 0.00 0.00 44.00 + 50 2 111.22 104.22 45.22 + 50 18 0.00 0.00 64.67 + 50 34 21.78 21.78 142.00 + 50 50 16.22 103.44 121.67 + 50 66 15.56 65.78 114.67 + 50 82 11.56 30.78 97.56 + 50 98 7.33 24.22 60.67 + 50 114 11.89 15.22 102.11 + 50 130 13.56 55.56 108.56 + 50 146 5.78 31.56 83.11 + 50 162 10.44 83.22 104.00 + 50 178 0.00 0.00 64.67 + 50 194 0.00 0.00 64.67 + 66 2 0.00 0.00 85.00 + 66 18 10.11 81.00 98.33 + 66 34 6.00 6.00 100.56 + 66 50 8.67 73.89 87.78 + 66 66 117.00 122.11 51.22 + 66 82 6.78 42.11 87.22 + 66 98 11.44 48.78 104.33 + 66 114 15.11 36.78 115.22 + 66 130 11.89 85.44 101.67 + 66 146 23.78 38.89 66.00 + 66 162 0.00 0.00 77.89 + 66 178 0.22 9.56 75.78 + 66 194 1.22 14.33 88.78 + 82 2 0.00 0.00 105.33 + 82 18 5.78 5.78 115.78 + 82 34 0.00 7.78 96.33 + 82 50 11.11 52.11 109.22 + 82 66 9.78 66.11 114.67 + 82 82 10.78 86.44 97.22 + 82 98 4.56 41.22 111.44 + 82 114 165.44 165.67 50.33 + 82 130 150.67 130.56 28.11 + 82 146 10.44 61.22 114.89 + 82 162 1.22 14.78 91.11 + 82 178 0.00 0.00 105.33 + 82 194 0.00 0.00 105.33 + 98 2 0.00 0.00 125.67 + 98 18 0.00 0.00 125.67 + 98 34 5.78 37.67 116.33 + 98 50 2.44 5.11 112.11 + 98 66 19.00 96.11 136.56 + 98 82 11.22 37.56 113.33 + 98 98 8.33 81.44 104.44 + 98 114 21.67 120.22 147.89 + 98 130 11.44 30.11 116.67 + 98 146 18.33 112.22 139.44 + 98 162 9.67 77.11 133.33 + 98 178 2.11 2.11 123.89 + 98 194 0.00 0.00 125.67 + 114 2 0.00 0.00 146.00 + 114 18 2.56 27.44 103.67 + 114 34 0.22 5.56 130.00 + 114 50 16.56 92.11 144.11 + 114 66 2.78 40.67 106.56 + 114 82 20.11 113.44 147.33 + 114 98 9.67 37.56 141.33 + 114 114 13.44 48.44 146.67 + 114 130 5.89 52.33 113.00 + 114 146 11.22 28.56 131.11 + 114 162 4.78 32.56 113.33 + 114 178 0.22 9.44 136.67 + 114 194 0.00 0.00 146.00 + 130 2 0.00 0.00 166.67 + 130 18 1.11 20.44 137.56 + 130 34 1.56 18.33 154.89 + 130 50 11.33 41.33 121.67 + 130 66 9.78 72.78 148.56 + 130 82 0.00 1.33 156.67 + 130 98 20.44 114.44 153.78 + 130 114 8.78 71.44 109.00 + 130 130 29.67 38.78 101.56 + 130 146 3.78 27.00 125.67 + 130 162 6.44 18.78 145.78 + 130 178 0.00 0.00 166.67 + 130 194 0.00 0.00 166.67 + 146 2 0.00 0.00 187.00 + 146 18 6.56 14.33 133.33 + 146 34 3.78 45.33 109.00 + 146 50 5.22 11.56 146.33 + 146 66 13.56 63.33 156.11 + 146 82 0.33 8.44 181.78 + 146 98 11.22 77.33 142.78 + 146 114 0.67 2.44 118.67 + 146 130 2.78 24.89 86.33 + 146 146 2.22 27.22 139.11 + 146 162 12.89 12.89 155.78 + 146 178 2.33 2.33 164.89 + 146 194 37.89 36.22 160.33 + 162 2 0.00 0.00 207.33 + 162 18 20.22 54.89 158.11 + 162 34 1.89 13.22 189.00 + 162 50 0.00 0.00 207.33 + 162 66 4.44 7.67 146.44 + 162 82 1.89 24.22 180.44 + 162 98 0.00 2.00 199.00 + 162 114 1.44 26.67 151.22 + 162 130 0.00 9.00 179.11 + 162 146 1.56 29.11 151.00 + 162 162 6.00 44.00 152.56 + 162 178 0.00 0.00 207.33 + 162 194 0.00 0.00 207.33 + 178 2 92.22 88.89 156.56 + 178 18 0.00 0.00 227.67 + 178 34 2.56 26.11 184.33 + 178 50 0.00 0.00 227.67 + 178 66 11.44 11.44 156.33 + 178 82 0.11 9.67 195.11 + 178 98 0.00 0.00 227.67 + 178 114 9.11 37.78 164.44 + 178 130 0.67 0.67 182.44 + 178 146 7.67 69.00 139.89 + 178 162 0.00 0.00 227.67 + 178 178 0.00 0.00 227.67 + 178 194 0.00 0.00 227.67 + 194 2 0.00 0.00 248.00 + 194 18 0.00 0.00 248.00 + 194 34 0.00 0.00 248.00 + 194 50 74.11 68.44 153.67 + 194 66 2.22 26.78 202.78 + 194 82 0.00 0.00 248.00 + 194 98 0.00 0.00 248.00 + 194 114 8.56 63.00 163.00 + 194 130 7.78 49.56 143.67 + 194 146 0.00 0.00 248.00 + 194 162 0.00 0.00 248.00 + 194 178 0.00 0.00 248.00 + 194 194 0.00 0.00 248.00 +... diff --git a/unittest/graphics/tests/dump-image-outline.yaml b/unittest/graphics/tests/dump-image-outline.yaml new file mode 100644 index 00000000000..eb2b5eb5fbb --- /dev/null +++ b/unittest/graphics/tests/dump-image-outline.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 15:21:42 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 outline yes 1 black + dump_modify viz backcolor gray +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 111.91 118.92 113.09 + 107.23 111.59 113.43 + 107.72 111.36 114.68 + 110.61 114.82 115.25 + 109.44 112.34 110.31 + 110.48 114.46 110.12 + 113.48 116.92 111.58 + 117.64 121.09 115.47 + 116.69 118.83 113.67 + 113.82 114.58 110.11 + 112.90 118.83 113.53 + 114.28 119.31 115.09 + 102.11 105.70 101.81 + 93.56 102.25 99.94 + 85.43 104.72 105.60 + 83.02 103.89 104.11 + 80.72 92.53 89.59 + 79.45 85.44 84.37 + 86.61 93.90 97.81 + 86.18 95.77 101.05 + 75.97 90.86 101.19 + 73.74 95.01 105.87 + 69.09 92.98 100.76 + 69.79 90.34 97.36 + 69.75 88.58 90.96 + 73.72 94.55 95.67 + 80.49 97.45 102.79 + 75.08 91.78 97.35 + 64.24 80.57 87.42 + 65.49 84.70 99.20 + 60.44 75.75 87.92 + 60.94 78.41 86.58 + 65.69 89.93 92.57 + 68.12 93.57 97.21 + 63.29 86.57 90.94 + 64.29 83.22 88.55 + 69.52 86.90 90.96 + 66.88 84.43 90.86 + 60.70 86.29 88.82 + 58.02 81.39 86.56 + 55.34 78.72 86.16 + 56.19 78.03 84.78 + 48.98 72.75 80.39 + 54.92 78.56 85.91 + 50.88 67.64 72.25 + 53.05 75.45 75.47 + 51.23 77.22 86.20 + 43.72 71.08 86.77 + 39.55 66.05 81.52 + 43.20 70.46 84.31 + 50.04 74.76 83.19 + 56.85 82.97 92.36 + 45.98 71.79 78.22 + 42.92 69.77 76.25 + 51.67 69.97 73.13 + 56.66 83.30 80.79 + 59.41 84.67 85.27 + 63.73 92.11 93.31 + 62.63 81.66 86.04 + 59.40 74.94 77.00 + 52.59 70.00 79.36 + 48.03 64.84 75.77 + 51.27 71.39 78.23 + 52.78 83.53 87.48 + 51.48 86.89 83.22 + 46.72 78.72 79.97 + 53.94 73.54 73.04 + 57.51 81.70 86.91 + 53.35 80.06 87.94 + 56.88 79.05 85.17 + 51.76 67.79 75.50 + 49.66 63.85 75.65 + 48.49 60.72 76.52 + 43.27 64.28 77.12 + 41.14 69.98 77.36 + 42.95 77.12 83.05 + 43.21 74.30 88.08 + 43.27 65.75 81.55 + 47.48 65.45 78.91 + 54.20 75.74 77.88 + 55.94 85.28 85.88 + 52.04 84.56 90.94 + 45.51 71.49 81.06 + 47.87 71.36 83.69 + 50.32 70.25 80.52 + 54.13 79.01 84.69 + 49.74 76.05 83.47 + 50.43 83.72 92.17 + 33.42 64.53 75.62 + 33.27 68.56 86.87 + 31.52 61.83 79.11 + 34.44 63.56 83.74 + 32.40 63.34 81.94 + 38.29 71.08 82.19 + 40.01 70.22 82.60 + 37.80 65.31 77.66 + 40.16 66.08 81.72 + 48.70 79.30 96.46 + 50.20 77.72 91.30 + 47.73 67.80 79.14 + 53.73 76.36 91.53 + 51.77 70.05 85.87 + 46.17 65.65 85.10 + 38.23 70.84 84.31 + 37.66 80.68 96.94 + 28.43 67.19 81.56 + 29.88 60.22 75.88 + 32.92 58.83 78.89 + 33.34 59.02 82.16 + 40.02 60.93 89.34 + 42.35 56.77 76.50 + 43.01 56.13 75.01 + 39.66 72.83 80.04 + 41.17 84.70 90.44 + 36.41 73.94 78.28 + 34.09 62.63 72.67 + 40.34 68.69 82.13 + 44.18 70.61 78.22 + 46.31 74.92 78.57 + 44.38 68.09 84.19 + 49.05 67.66 85.41 + 48.27 70.55 86.42 + 38.46 65.14 79.22 + 35.76 72.36 92.97 + 31.16 65.53 82.06 + 36.12 69.41 87.39 + 33.92 62.44 76.61 + 32.85 61.49 73.02 + 33.44 66.22 75.06 + 40.03 77.45 88.45 + 44.25 74.92 88.14 + 43.66 74.28 81.86 + 45.52 78.17 89.36 + 49.16 75.92 90.64 + 56.66 75.39 89.72 + 46.62 65.94 73.73 + 47.81 81.39 86.73 + 51.12 85.91 91.56 + 43.91 74.92 86.30 + 40.16 61.55 73.63 + 48.45 72.66 92.26 + 38.16 66.12 84.12 + 37.16 68.42 82.97 + 35.45 63.95 73.06 + 43.60 72.86 83.11 + 46.08 71.39 78.27 + 53.17 76.67 83.74 + 51.10 66.08 74.34 + 53.15 81.03 91.38 + 55.33 80.72 88.42 + 54.91 80.04 92.32 + 57.40 84.98 90.63 + 55.81 84.63 93.90 + 48.23 73.56 84.07 + 43.83 70.40 84.66 + 42.56 74.53 83.04 + 43.23 77.30 88.11 + 48.97 73.28 82.39 + 58.73 76.28 87.90 + 63.16 78.00 87.72 + 68.91 87.33 92.59 + 72.95 91.78 97.06 + 72.72 93.81 95.24 + 66.72 89.45 89.39 + 66.03 84.01 88.90 + 65.31 86.19 97.03 + 66.63 92.11 99.53 + 67.84 90.19 94.30 + 72.00 85.81 89.36 + 73.85 84.55 88.36 + 77.23 90.46 96.80 + 72.05 91.37 95.34 + 71.56 100.15 106.10 + 72.50 95.69 102.04 + 76.96 91.12 92.47 + 86.89 92.64 91.19 + 97.25 106.00 105.22 + 97.34 111.78 110.13 + 94.54 106.77 106.19 + 98.45 107.12 107.62 + 95.47 101.67 98.94 + 96.44 105.40 100.61 + 95.94 109.47 103.48 + 96.04 108.20 102.92 + 100.57 109.27 104.47 + 101.30 108.41 106.80 + 106.48 109.72 108.69 + 105.00 107.47 107.08 + 102.04 107.38 104.67 + 105.21 111.49 108.88 + 108.30 113.22 108.80 + 108.66 111.09 106.28 + 109.30 110.56 106.55 + 107.67 112.78 108.53 + 104.39 112.02 109.44 + 103.78 109.50 108.52 + 108.53 116.40 115.38 + 109.06 115.36 114.06 + 112.66 116.00 110.89 + 121.54 122.64 114.22 +col_means: | + 120.29 123.38 117.48 + 116.28 121.14 116.08 + 116.83 121.22 115.97 + 113.31 115.78 111.44 + 107.38 111.50 109.74 + 104.32 111.83 115.28 + 100.36 110.96 112.73 + 99.03 112.43 109.42 + 96.57 107.21 107.34 + 94.78 103.38 105.11 + 90.78 103.41 106.22 + 91.06 100.94 104.09 + 91.28 98.12 102.73 + 90.93 96.43 98.67 + 90.54 99.99 101.30 + 91.42 101.50 100.83 + 90.26 102.11 100.42 + 86.94 100.28 98.52 + 83.55 95.62 100.30 + 81.03 91.44 99.75 + 80.22 95.29 100.86 + 82.01 97.13 102.83 + 80.00 91.08 99.09 + 74.52 87.75 96.61 + 65.59 79.17 91.26 + 63.24 88.59 99.89 + 65.01 86.67 94.54 + 69.14 84.83 91.31 + 76.11 86.88 87.52 + 72.36 87.48 89.81 + 72.06 94.97 101.60 + 70.73 94.30 100.84 + 67.08 90.18 91.92 + 70.14 89.58 90.84 + 76.46 89.38 94.83 + 66.97 76.48 81.70 + 70.01 85.12 93.94 + 69.12 89.48 96.72 + 64.98 93.44 99.60 + 62.24 88.53 95.94 + 66.28 83.86 90.17 + 68.86 84.41 90.62 + 66.90 89.57 95.74 + 61.06 87.22 91.06 + 55.33 84.61 87.17 + 56.20 89.64 95.11 + 55.65 81.97 91.53 + 54.64 70.53 85.56 + 55.01 69.56 85.70 + 56.45 78.50 90.11 + 60.80 86.43 91.59 + 60.11 86.47 88.50 + 59.37 83.86 89.64 + 59.30 80.91 91.73 + 58.83 83.34 95.79 + 59.16 74.72 87.23 + 61.23 75.51 88.58 + 59.35 77.91 88.30 + 61.72 87.86 94.08 + 49.37 69.39 74.27 + 55.38 74.22 85.67 + 51.62 74.22 87.68 + 46.09 79.48 96.08 + 37.96 71.02 80.62 + 36.46 69.48 81.56 + 37.59 71.17 87.77 + 38.40 68.71 80.40 + 40.17 69.28 76.89 + 51.21 80.58 89.14 + 47.44 71.66 80.95 + 49.86 75.48 85.94 + 42.89 73.33 82.15 + 33.34 70.92 79.42 + 40.31 81.73 87.94 + 35.97 73.81 82.92 + 44.45 77.52 89.57 + 44.08 64.84 79.00 + 40.23 62.77 77.40 + 40.05 72.25 84.95 + 38.87 76.18 87.02 + 39.34 77.01 85.43 + 34.99 71.12 75.83 + 41.51 77.06 85.66 + 41.86 78.22 87.56 + 43.23 75.43 88.95 + 44.62 64.92 80.42 + 42.85 65.23 78.79 + 46.61 69.64 89.92 + 49.58 72.36 90.80 + 47.88 66.03 80.67 + 51.62 66.14 79.28 + 55.92 74.69 84.69 + 56.77 83.69 85.20 + 54.59 87.14 88.23 + 51.53 76.83 74.70 + 53.91 85.48 87.05 + 56.54 80.09 89.24 + 48.88 67.22 82.30 + 54.40 66.94 80.14 + 51.11 73.61 80.31 + 39.77 73.33 79.73 + 37.14 68.30 82.22 + 36.81 66.78 82.66 + 35.94 62.63 75.44 + 35.47 66.11 70.35 + 46.37 77.17 82.86 + 43.73 70.33 79.75 + 44.95 69.24 80.07 + 47.98 71.10 80.95 + 49.45 69.82 79.11 + 42.09 67.69 79.04 + 37.38 67.34 79.28 + 34.03 68.72 86.69 + 36.27 67.00 79.73 + 31.64 61.68 77.42 + 33.12 64.36 82.41 + 39.13 72.32 89.94 + 38.25 66.32 81.67 + 37.25 62.33 75.81 + 43.85 61.44 74.95 + 52.80 72.22 87.08 + 52.79 68.08 83.12 + 53.50 71.86 82.70 + 51.26 74.97 88.19 + 45.16 68.27 79.45 + 44.76 73.98 81.85 + 23.82 32.66 37.27 + 125.53 119.67 45.52 + 22.89 31.31 35.23 + 44.34 68.34 83.30 + 48.88 68.80 87.23 + 44.43 64.98 85.67 + 43.79 70.61 84.52 + 40.44 77.42 88.12 + 45.25 77.29 84.21 + 52.97 75.89 86.92 + 52.52 72.15 80.23 + 55.15 75.45 86.98 + 50.43 74.89 79.87 + 49.52 82.95 91.04 + 44.45 76.05 83.75 + 41.77 69.27 76.81 + 44.69 76.78 83.53 + 45.05 76.08 87.34 + 41.73 72.81 81.05 + 39.90 75.55 80.51 + 42.62 75.19 85.69 + 42.90 74.02 85.19 + 42.25 73.85 86.25 + 43.63 68.68 89.41 + 47.21 73.19 87.50 + 50.39 76.41 81.18 + 52.28 88.03 92.31 + 53.06 78.26 81.50 + 54.81 77.68 85.90 + 51.38 77.73 85.42 + 50.53 78.56 90.64 + 51.92 74.39 81.38 + 55.51 79.47 82.52 + 60.84 89.38 90.83 + 59.51 90.14 92.59 + 63.41 87.39 93.83 + 59.97 76.73 86.27 + 65.46 83.12 94.20 + 58.52 79.84 86.79 + 63.15 87.81 95.03 + 63.60 85.14 93.61 + 62.93 82.00 86.63 + 64.75 80.05 81.92 + 73.39 88.51 93.39 + 70.72 90.94 96.33 + 70.60 91.11 98.67 + 73.18 87.66 93.61 + 76.58 88.75 91.09 + 85.88 99.17 104.19 + 82.45 94.58 100.98 + 81.41 92.62 102.23 + 87.31 92.56 97.38 + 94.47 101.25 101.89 + 90.50 106.17 104.83 + 91.82 108.07 107.64 + 86.12 102.06 102.27 + 83.19 97.45 100.39 + 82.00 97.53 99.55 + 85.12 99.23 100.23 + 90.38 101.14 100.78 + 94.89 103.33 104.71 + 93.86 100.06 104.36 + 93.96 103.14 105.56 + 95.55 105.67 103.66 + 96.09 103.95 101.33 + 99.22 105.98 105.45 + 104.21 111.53 110.69 + 109.97 116.39 113.36 + 110.86 114.34 109.21 + 114.70 117.70 113.78 + 116.22 117.77 114.13 + 114.92 118.23 116.69 + 115.89 117.59 116.08 + 120.28 120.59 116.89 +sample_blocks: | + 2 2 128.00 128.00 128.00 + 2 18 128.00 128.00 128.00 + 2 34 128.00 128.00 128.00 + 2 50 107.22 93.11 17.56 + 2 66 128.00 128.00 128.00 + 2 82 76.11 92.44 92.44 + 2 98 99.56 99.56 99.56 + 2 114 27.44 27.44 148.44 + 2 130 113.78 113.78 113.78 + 2 146 85.33 85.33 85.33 + 2 162 128.00 128.00 128.00 + 2 178 128.00 128.00 128.00 + 2 194 128.00 128.00 128.00 + 18 2 128.00 128.00 128.00 + 18 18 128.00 128.00 128.00 + 18 34 86.00 79.22 43.44 + 18 50 128.00 128.00 128.00 + 18 66 128.00 128.00 128.00 + 18 82 10.78 13.22 77.00 + 18 98 7.67 56.11 56.11 + 18 114 52.00 52.00 90.33 + 18 130 21.89 38.56 54.00 + 18 146 85.33 85.33 85.33 + 18 162 128.00 128.00 128.00 + 18 178 18.22 50.33 92.22 + 18 194 99.33 94.33 14.00 + 34 2 128.00 128.00 128.00 + 34 18 54.56 101.78 101.78 + 34 34 128.00 128.00 128.00 + 34 50 10.78 69.33 79.33 + 34 66 128.00 128.00 128.00 + 34 82 44.89 68.44 68.44 + 34 98 128.00 128.00 128.00 + 34 114 10.56 10.56 64.44 + 34 130 13.67 75.56 75.56 + 34 146 99.56 99.56 99.56 + 34 162 113.78 113.78 113.78 + 34 178 20.33 107.56 107.56 + 34 194 128.00 128.00 128.00 + 50 2 127.67 126.89 56.78 + 50 18 128.00 128.00 128.00 + 50 34 19.56 19.56 96.56 + 50 50 14.56 76.67 76.67 + 50 66 23.11 95.33 132.78 + 50 82 17.11 38.89 101.00 + 50 98 31.33 43.89 43.89 + 50 114 21.33 21.33 114.33 + 50 130 52.56 69.33 85.78 + 50 146 11.11 47.56 78.78 + 50 162 13.89 83.89 83.89 + 50 178 128.00 128.00 128.00 + 50 194 128.00 128.00 128.00 + 66 2 128.00 128.00 128.00 + 66 18 12.67 81.22 81.22 + 66 34 60.56 60.56 74.67 + 66 50 10.67 69.89 69.89 + 66 66 57.22 67.00 20.11 + 66 82 7.00 38.78 63.67 + 66 98 11.44 42.56 89.78 + 66 114 8.56 26.78 57.00 + 66 130 10.78 72.89 72.89 + 66 146 56.89 56.89 56.89 + 66 162 113.78 113.78 113.78 + 66 178 71.67 79.11 79.11 + 66 194 99.56 99.56 99.56 + 82 2 128.00 128.00 128.00 + 82 18 89.67 89.67 105.11 + 82 34 99.56 99.56 99.56 + 82 50 9.33 42.33 45.78 + 82 66 14.11 58.56 85.56 + 82 82 11.89 79.44 79.44 + 82 98 45.11 59.00 59.00 + 82 114 87.56 85.78 29.89 + 82 130 92.11 80.33 17.22 + 82 146 19.33 93.89 115.78 + 82 162 58.56 74.56 74.56 + 82 178 128.00 128.00 128.00 + 82 194 128.00 128.00 128.00 + 98 2 128.00 128.00 128.00 + 98 18 128.00 128.00 128.00 + 98 34 32.22 46.78 46.78 + 98 50 56.89 56.89 56.89 + 98 66 14.22 56.00 70.78 + 98 82 13.11 28.44 76.44 + 98 98 11.44 81.89 81.89 + 98 114 17.67 88.67 88.67 + 98 130 19.00 53.89 113.78 + 98 146 24.11 143.67 143.67 + 98 162 18.67 42.67 42.67 + 98 178 85.33 85.33 85.33 + 98 194 128.00 128.00 128.00 + 114 2 128.00 128.00 128.00 + 114 18 18.56 46.11 54.00 + 114 34 85.33 85.33 85.33 + 114 50 25.67 134.22 134.22 + 114 66 3.67 28.89 28.89 + 114 82 20.78 112.56 112.56 + 114 98 12.11 40.67 61.33 + 114 114 31.22 31.22 45.89 + 114 130 0.78 22.44 22.44 + 114 146 14.56 29.89 76.11 + 114 162 2.11 15.22 28.78 + 114 178 99.56 99.56 99.56 + 114 194 128.00 128.00 128.00 + 130 2 128.00 128.00 128.00 + 130 18 56.89 56.89 56.89 + 130 34 85.33 85.33 85.33 + 130 50 18.33 51.11 51.11 + 130 66 14.44 88.56 88.56 + 130 82 99.56 99.56 99.56 + 130 98 9.44 42.11 42.11 + 130 114 11.44 82.89 90.78 + 130 130 14.22 14.22 14.22 + 130 146 13.00 46.00 77.89 + 130 162 7.78 34.67 72.22 + 130 178 128.00 128.00 128.00 + 130 194 128.00 128.00 128.00 + 146 2 128.00 128.00 128.00 + 146 18 11.56 25.67 75.56 + 146 34 5.78 45.44 45.44 + 146 50 11.67 25.00 102.22 + 146 66 13.78 54.00 82.00 + 146 82 113.78 113.78 113.78 + 146 98 12.56 54.44 69.33 + 146 114 29.44 29.44 45.56 + 146 130 3.89 8.33 27.33 + 146 146 16.78 38.11 41.78 + 146 162 21.11 21.11 127.56 + 146 178 73.78 73.78 86.00 + 146 194 99.44 99.44 76.00 + 162 2 128.00 128.00 128.00 + 162 18 36.22 61.11 47.00 + 162 34 85.33 85.33 85.33 + 162 50 128.00 128.00 128.00 + 162 66 22.89 28.78 80.78 + 162 82 71.11 71.11 71.11 + 162 98 113.78 113.78 113.78 + 162 114 56.89 56.89 56.89 + 162 130 99.56 99.56 99.56 + 162 146 31.11 57.56 57.56 + 162 162 7.33 48.33 60.44 + 162 178 128.00 128.00 128.00 + 162 194 128.00 128.00 128.00 + 178 2 127.67 125.78 56.44 + 178 18 128.00 128.00 128.00 + 178 34 58.11 76.00 76.00 + 178 50 128.00 128.00 128.00 + 178 66 11.89 11.89 67.44 + 178 82 85.33 85.33 85.33 + 178 98 128.00 128.00 128.00 + 178 114 15.33 57.44 102.56 + 178 130 71.78 71.78 80.67 + 178 146 11.67 84.33 84.33 + 178 162 128.00 128.00 128.00 + 178 178 128.00 128.00 128.00 + 178 194 128.00 128.00 128.00 + 194 2 128.00 128.00 128.00 + 194 18 128.00 128.00 128.00 + 194 34 128.00 128.00 128.00 + 194 50 127.67 123.67 55.56 + 194 66 73.00 85.78 85.78 + 194 82 128.00 128.00 128.00 + 194 98 128.00 128.00 128.00 + 194 114 22.22 59.33 59.33 + 194 130 11.67 61.22 88.44 + 194 146 128.00 128.00 128.00 + 194 162 128.00 128.00 128.00 + 194 178 128.00 128.00 128.00 + 194 194 128.00 128.00 128.00 +... diff --git a/unittest/graphics/tests/dump-image-ssao.yaml b/unittest/graphics/tests/dump-image-ssao.yaml index 15a0a99047c..8e45ecf9b22 100644 --- a/unittest/graphics/tests/dump-image-ssao.yaml +++ b/unittest/graphics/tests/dump-image-ssao.yaml @@ -1,7 +1,7 @@ --- lammps_version: 4 Jul 2026 tags: graphics -date_generated: Thu Jul 9 13:32:20 2026 +date_generated: Fri Jul 24 13:12:43 2026 epsilon_projection: 0.5 epsilon_blocks: 2 nprocs: 1 @@ -29,573 +29,573 @@ run_commands: | image_size: 200 200 sampling: 3 16 row_means: | - 137.18 134.94 122.08 - 136.46 130.91 120.92 - 138.25 128.89 119.14 - 138.59 129.78 116.73 - 138.81 131.00 117.52 - 136.04 130.53 116.95 - 134.31 131.61 117.81 - 134.32 133.93 120.54 - 132.86 132.07 118.86 - 133.55 131.28 117.91 - 134.20 131.44 117.88 - 134.41 131.81 118.39 - 135.81 130.81 117.42 - 140.12 133.34 120.00 - 145.88 138.03 124.62 - 144.37 137.09 123.56 - 139.22 132.47 118.81 - 134.81 123.90 111.00 - 132.41 120.36 107.97 - 133.88 120.72 110.97 - 134.63 117.83 111.94 - 137.42 120.90 116.91 - 139.11 122.64 117.69 - 138.24 124.23 117.99 - 135.30 124.91 117.30 - 133.97 125.86 117.75 - 134.02 125.79 117.51 - 137.93 125.86 117.53 - 139.53 122.11 114.03 - 139.73 116.59 108.36 - 139.03 116.30 107.58 - 136.94 115.92 107.46 - 134.84 120.66 112.25 - 136.24 126.47 118.19 - 137.88 127.16 118.59 - 133.76 124.03 115.50 - 134.06 122.91 113.55 - 135.37 121.81 112.86 - 133.00 118.83 110.61 - 130.28 116.45 108.08 - 129.87 112.70 104.41 - 128.99 112.72 104.70 - 127.44 110.78 102.75 - 125.22 106.89 98.70 - 120.92 105.14 97.16 - 122.55 108.64 101.44 - 126.36 107.48 101.62 - 127.73 105.45 100.11 - 131.99 106.37 98.66 - 131.28 107.44 96.66 - 137.22 114.68 100.36 - 141.96 121.78 107.17 - 136.73 117.75 103.14 - 130.72 111.84 96.98 - 126.17 109.62 94.67 - 124.28 110.90 95.95 - 125.43 114.55 98.55 - 128.72 118.11 101.25 - 131.41 117.94 101.44 - 127.69 111.92 96.55 - 124.33 104.50 89.17 - 124.87 103.32 88.16 - 129.84 106.48 91.33 - 132.53 113.63 98.38 - 127.19 112.79 97.83 - 119.60 109.23 94.37 - 123.27 114.56 99.48 - 128.80 116.06 101.13 - 131.00 117.34 102.22 - 133.63 117.06 102.01 - 129.12 106.83 91.89 - 123.60 100.99 86.06 - 124.83 100.12 85.05 - 127.21 102.58 87.82 - 127.70 109.42 94.47 - 126.77 113.73 98.21 - 123.73 108.61 92.85 - 121.76 102.38 87.48 - 119.31 101.08 86.21 - 121.53 106.19 91.02 - 127.34 115.75 100.74 - 131.74 120.70 105.75 - 135.99 118.03 102.78 - 132.59 113.80 98.86 - 123.97 105.11 91.07 - 121.17 104.08 94.53 - 123.05 109.61 104.65 - 126.72 113.78 110.88 - 128.88 113.00 110.11 - 125.83 104.38 101.48 - 122.45 99.03 96.12 - 120.70 96.07 93.16 - 118.30 95.50 92.58 - 115.97 98.24 95.33 - 119.31 103.79 100.88 - 117.23 100.84 97.93 - 120.38 104.28 101.39 - 124.17 108.61 105.72 - 128.09 111.28 108.39 - 128.70 109.68 106.78 - 124.12 109.53 106.64 - 122.83 104.64 101.75 - 127.09 105.56 102.67 - 130.57 109.38 106.58 - 135.10 111.36 108.47 - 134.77 113.11 110.22 - 131.81 109.31 106.41 - 130.09 103.90 101.00 - 125.22 97.90 95.01 - 118.64 92.27 89.36 - 113.58 86.71 83.81 - 109.78 83.84 80.84 - 109.15 90.84 87.94 - 114.29 103.41 100.51 - 117.34 106.14 103.25 - 120.56 107.43 104.46 - 121.16 106.42 103.14 - 123.33 109.83 106.44 - 127.08 110.97 107.42 - 128.81 109.49 105.61 - 126.36 105.52 102.11 - 128.66 104.96 102.06 - 127.12 102.91 100.01 - 125.57 101.97 99.06 - 129.20 105.00 102.09 - 129.22 103.71 100.31 - 126.99 103.35 99.27 - 124.00 102.45 99.00 - 119.31 100.62 97.73 - 120.30 105.43 102.53 - 123.78 110.68 107.58 - 126.33 109.78 106.41 - 124.04 106.38 103.23 - 118.23 101.28 98.19 - 117.61 101.61 98.38 - 120.98 106.22 103.18 - 124.86 111.94 108.58 - 128.65 116.11 112.31 - 132.09 115.17 110.58 - 134.32 110.05 105.17 - 133.51 105.83 101.73 - 135.72 107.44 104.18 - 128.98 104.88 101.45 - 125.86 106.86 103.80 - 124.27 107.95 104.45 - 124.78 109.18 103.94 - 124.65 110.83 103.58 - 123.80 108.78 99.38 - 122.61 105.83 96.39 - 125.83 109.05 101.51 - 129.02 112.99 107.46 - 127.17 113.15 109.11 - 127.93 114.42 109.76 - 133.46 115.91 110.08 - 140.95 121.54 114.90 - 144.44 124.38 116.42 - 144.68 122.50 114.94 - 140.44 122.09 115.41 - 132.53 114.83 109.19 - 125.91 107.47 103.22 - 124.36 111.23 106.31 - 125.31 116.65 109.83 - 128.69 123.34 115.00 - 129.05 124.07 115.18 - 130.41 121.33 112.63 - 139.42 127.50 118.31 - 142.22 128.38 119.23 - 139.69 122.23 112.58 - 135.73 120.00 109.76 - 130.28 118.22 108.47 - 133.54 117.94 109.86 - 139.87 123.92 116.88 - 144.60 132.62 125.26 - 145.36 133.28 124.26 - 139.59 128.87 119.27 - 132.00 123.22 113.94 - 128.12 124.19 115.81 - 132.09 128.47 120.81 - 137.88 131.10 121.27 - 140.49 131.52 118.94 - 138.75 130.69 117.59 - 136.99 131.08 117.05 - 139.62 136.73 120.63 - 140.34 139.66 123.39 - 140.09 137.70 122.44 - 137.76 133.84 119.31 - 136.68 129.01 113.87 - 136.66 126.98 110.41 - 136.58 127.11 110.58 - 135.81 128.93 112.45 - 134.21 130.53 114.22 - 133.62 131.91 115.45 - 133.45 129.79 113.03 - 134.94 131.28 114.53 - 138.25 132.27 115.75 - 138.51 131.72 115.98 - 137.71 132.25 120.02 - 137.94 134.22 122.44 - 136.62 134.41 119.53 - 135.47 135.10 118.47 + 137.12 134.90 122.06 + 136.47 130.92 120.91 + 138.27 128.91 119.14 + 138.53 129.72 116.74 + 138.81 130.97 117.44 + 136.10 130.56 117.00 + 134.32 131.63 117.78 + 134.36 133.97 120.55 + 132.90 132.09 118.83 + 133.44 131.16 117.86 + 134.19 131.43 117.91 + 134.32 131.72 118.31 + 135.84 130.84 117.42 + 140.04 133.28 119.98 + 145.82 137.94 124.58 + 144.18 136.94 123.45 + 139.32 132.56 118.88 + 134.81 123.93 110.97 + 132.59 120.45 108.06 + 133.83 120.69 110.92 + 134.69 117.83 111.94 + 137.48 121.00 117.00 + 139.16 122.67 117.70 + 138.24 124.16 117.93 + 135.28 124.86 117.28 + 133.90 125.82 117.71 + 134.09 125.77 117.50 + 138.00 125.92 117.59 + 139.56 122.12 114.03 + 139.74 116.63 108.42 + 139.07 116.32 107.56 + 136.93 115.94 107.42 + 134.99 120.73 112.31 + 136.01 126.34 118.08 + 137.87 127.20 118.62 + 133.50 123.80 115.31 + 134.06 122.88 113.50 + 135.22 121.68 112.72 + 132.98 118.84 110.64 + 130.00 116.20 107.82 + 129.88 112.74 104.45 + 129.03 112.69 104.67 + 127.07 110.48 102.45 + 125.58 107.17 99.00 + 120.81 105.05 97.08 + 122.53 108.63 101.45 + 126.19 107.43 101.60 + 127.67 105.42 100.05 + 132.16 106.45 98.77 + 131.37 107.63 96.80 + 137.26 114.81 100.47 + 141.99 121.81 107.22 + 136.69 117.78 103.12 + 130.83 111.95 97.07 + 126.28 109.76 94.81 + 124.50 111.08 96.12 + 125.43 114.57 98.54 + 128.56 117.94 101.10 + 131.35 117.97 101.48 + 127.78 111.94 96.53 + 124.59 104.66 89.31 + 124.72 103.19 88.03 + 129.73 106.44 91.28 + 132.28 113.44 98.22 + 127.31 112.89 97.94 + 119.91 109.53 94.69 + 123.36 114.65 99.58 + 128.83 116.06 101.14 + 130.99 117.39 102.28 + 133.58 117.00 101.92 + 129.15 106.81 91.86 + 123.77 101.19 86.27 + 124.92 100.27 85.19 + 127.30 102.71 87.94 + 127.83 109.47 94.52 + 126.70 113.67 98.17 + 123.50 108.47 92.75 + 121.77 102.29 87.40 + 119.17 100.99 86.14 + 121.61 106.28 91.11 + 127.17 115.54 100.55 + 131.81 120.78 105.82 + 136.26 118.26 102.98 + 132.74 113.96 99.04 + 124.18 105.22 91.17 + 121.31 104.16 94.62 + 122.80 109.46 104.50 + 126.23 113.39 110.49 + 128.87 113.04 110.15 + 126.18 104.75 101.84 + 122.45 99.07 96.17 + 120.64 96.11 93.19 + 118.29 95.55 92.64 + 115.87 98.16 95.23 + 119.24 103.70 100.80 + 117.37 101.06 98.16 + 120.25 104.19 101.30 + 124.19 108.70 105.81 + 128.01 111.31 108.42 + 128.50 109.47 106.58 + 124.20 109.59 106.69 + 123.00 104.75 101.85 + 127.00 105.58 102.69 + 130.49 109.33 106.53 + 135.12 111.46 108.56 + 134.63 112.97 110.08 + 131.81 109.31 106.40 + 129.90 103.78 100.89 + 125.00 97.67 94.78 + 118.72 92.34 89.44 + 113.58 86.56 83.66 + 109.86 83.92 80.94 + 109.10 90.78 87.89 + 114.36 103.44 100.55 + 117.59 106.31 103.41 + 120.47 107.36 104.39 + 121.19 106.45 103.17 + 123.31 109.86 106.47 + 126.97 110.86 107.32 + 128.81 109.47 105.56 + 126.41 105.52 102.14 + 128.65 104.95 102.06 + 127.08 102.91 100.00 + 125.64 102.02 99.12 + 129.22 105.05 102.15 + 129.16 103.61 100.20 + 127.33 103.58 99.48 + 124.06 102.47 99.03 + 119.13 100.39 97.50 + 120.11 105.23 102.34 + 123.96 110.78 107.67 + 125.89 109.38 106.03 + 124.35 106.59 103.44 + 118.14 101.27 98.19 + 117.64 101.64 98.39 + 121.08 106.24 103.20 + 124.78 111.87 108.51 + 128.82 116.28 112.44 + 132.06 115.06 110.52 + 134.25 110.03 105.11 + 133.48 105.86 101.72 + 135.81 107.59 104.32 + 128.81 104.68 101.28 + 125.72 106.62 103.58 + 124.16 107.78 104.28 + 124.84 109.23 103.99 + 124.78 110.88 103.62 + 124.06 109.09 99.62 + 122.44 105.67 96.31 + 125.91 109.12 101.56 + 128.97 112.97 107.47 + 127.15 113.11 109.05 + 127.88 114.42 109.75 + 133.38 115.84 110.06 + 141.13 121.68 115.11 + 144.54 124.44 116.53 + 144.43 122.38 114.81 + 140.45 122.08 115.41 + 132.53 114.80 109.16 + 125.97 107.59 103.35 + 124.25 111.08 106.14 + 125.48 116.74 109.94 + 128.71 123.31 114.98 + 129.02 124.06 115.17 + 130.31 121.29 112.50 + 139.28 127.39 118.25 + 142.38 128.49 119.31 + 139.74 122.23 112.58 + 135.57 119.91 109.67 + 130.35 118.25 108.47 + 133.56 117.89 109.83 + 139.81 123.92 116.90 + 144.43 132.44 125.08 + 145.51 133.47 124.45 + 139.70 128.91 119.29 + 131.99 123.19 113.94 + 128.10 124.22 115.81 + 132.25 128.62 120.92 + 137.91 131.12 121.27 + 140.60 131.61 119.03 + 138.72 130.62 117.54 + 136.91 131.00 116.97 + 139.63 136.75 120.62 + 140.41 139.75 123.47 + 140.04 137.64 122.40 + 137.78 133.82 119.31 + 136.65 129.00 113.89 + 136.66 126.98 110.42 + 136.55 127.07 110.53 + 135.80 128.98 112.47 + 134.31 130.57 114.25 + 133.50 131.80 115.36 + 133.49 129.83 113.03 + 135.12 131.39 114.61 + 138.20 132.22 115.67 + 138.45 131.66 115.95 + 137.75 132.29 120.01 + 137.97 134.22 122.44 + 136.71 134.50 119.56 + 135.51 135.15 118.49 col_means: | - 135.12 135.12 123.99 - 136.64 136.64 124.83 - 135.22 135.22 123.63 - 134.24 132.09 121.63 - 137.74 131.08 122.35 - 141.42 133.16 124.39 - 142.97 136.24 127.19 - 139.94 134.57 124.48 - 140.43 132.50 122.06 - 142.06 132.72 122.25 - 142.55 130.07 119.59 - 142.27 127.45 116.64 - 138.10 123.89 112.52 - 136.00 123.44 112.18 - 133.55 122.22 111.33 - 135.38 129.18 118.43 - 135.63 129.56 119.17 - 136.63 129.34 119.50 - 138.39 128.38 119.25 - 137.88 125.47 115.99 - 136.54 122.87 113.60 - 135.16 122.06 112.43 - 131.69 117.94 108.08 - 131.91 114.02 104.11 - 135.46 114.69 103.88 - 135.68 115.14 105.61 - 132.47 113.85 104.00 - 128.74 114.14 103.48 - 130.25 119.14 109.15 - 136.22 123.80 114.53 - 139.83 127.68 118.52 - 137.82 128.62 119.30 - 132.84 125.07 116.07 - 129.68 120.54 111.07 - 126.28 115.33 105.92 - 123.31 109.62 99.53 - 128.72 113.11 102.94 - 137.73 122.60 113.51 - 139.91 122.83 113.33 - 136.74 119.61 110.31 - 129.97 115.61 106.51 - 129.42 117.56 108.15 - 130.88 118.53 109.27 - 132.77 121.89 112.18 - 134.56 124.55 115.42 - 132.78 118.68 109.20 - 133.41 111.08 101.80 - 133.27 106.72 97.39 - 129.27 102.75 93.31 - 126.25 105.97 96.46 - 127.74 118.22 108.28 - 128.38 120.22 111.01 - 129.06 117.91 109.18 - 128.54 116.67 109.21 - 125.22 110.32 103.75 - 126.11 107.56 100.96 - 126.03 109.03 102.67 - 128.46 111.36 104.56 - 127.51 112.31 106.30 - 124.49 107.51 101.83 - 129.29 110.59 104.85 - 129.85 110.61 106.81 - 128.44 109.53 106.17 - 127.14 108.61 105.62 - 128.62 112.17 108.72 - 127.52 109.40 104.83 - 128.31 108.58 101.46 - 125.45 109.24 102.44 - 127.06 111.95 106.28 - 126.56 109.56 103.92 - 125.24 110.88 105.96 - 124.34 108.67 101.48 - 128.51 112.19 104.86 - 133.00 116.83 110.28 - 135.69 117.27 111.64 - 132.01 110.80 107.16 - 124.33 101.09 97.69 - 117.30 96.64 93.61 - 117.00 102.75 99.31 - 118.78 105.25 102.17 - 121.96 108.27 105.35 - 121.29 110.72 107.50 - 127.88 118.55 115.56 - 127.01 115.40 112.30 - 127.65 108.80 105.76 - 127.80 105.45 102.30 - 126.56 102.88 99.67 - 131.72 104.80 101.87 - 128.49 102.61 99.36 - 122.28 99.70 96.71 - 120.28 102.86 99.56 - 122.28 108.96 105.67 - 125.97 115.88 112.67 - 126.11 117.36 114.14 - 127.31 115.39 112.45 - 132.28 113.96 110.73 - 132.53 110.87 107.88 - 128.93 106.23 103.12 - 124.91 102.75 99.71 - 124.72 106.26 103.09 - 127.38 110.33 107.11 - 126.75 107.78 104.82 - 123.83 101.38 98.41 - 119.84 100.61 97.58 - 117.39 104.31 100.78 - 117.37 108.86 105.27 - 117.52 105.53 102.11 - 121.72 105.71 101.87 - 124.15 101.77 98.03 - 127.77 103.25 99.29 - 126.81 103.91 100.00 - 126.85 106.00 102.93 - 124.87 103.98 101.21 - 126.08 104.79 101.96 - 129.15 104.66 101.41 - 135.29 109.65 106.66 - 136.96 112.13 109.00 - 129.57 107.35 104.30 - 124.21 100.15 96.98 - 117.17 94.97 91.78 - 116.28 96.54 93.59 - 113.83 96.28 93.06 - 114.20 98.62 95.64 - 114.59 99.47 96.36 - 113.44 99.11 96.09 - 113.83 99.70 96.63 - 154.16 143.18 45.19 - 190.49 180.90 51.02 - 164.47 155.71 44.30 - 118.27 95.11 89.98 - 122.13 100.70 95.61 - 122.74 102.00 96.61 - 126.18 107.69 102.48 - 125.69 107.97 103.17 - 126.83 111.19 106.56 - 126.55 111.03 106.15 - 122.47 109.06 104.14 - 122.38 106.47 100.98 - 121.95 107.77 101.26 - 127.14 112.25 105.56 - 130.51 113.20 106.56 - 127.86 113.39 107.00 - 125.24 111.69 105.02 - 124.64 111.50 105.00 - 120.33 107.36 99.87 - 116.11 101.59 93.45 - 119.17 101.82 92.94 - 120.92 102.57 92.89 - 124.03 102.47 92.46 - 128.29 105.29 95.17 - 128.82 109.88 99.80 - 132.33 118.08 107.83 - 136.89 124.55 114.75 - 138.24 126.21 116.00 - 136.56 121.83 111.30 - 131.04 111.58 101.03 - 125.45 103.59 92.80 - 120.67 104.71 94.37 - 126.44 116.21 106.05 - 133.91 125.31 115.67 - 136.72 126.03 117.33 - 133.96 119.33 111.14 - 127.62 107.73 100.12 - 126.28 105.78 95.51 - 124.95 106.14 95.52 - 128.37 112.13 101.19 - 132.01 116.62 105.70 - 130.22 114.69 104.17 - 129.18 115.25 104.66 - 134.62 121.16 111.47 - 137.76 124.80 115.17 - 135.98 123.30 113.50 - 130.57 119.20 109.32 - 133.12 120.91 110.83 - 137.62 124.45 114.53 - 141.03 123.08 113.23 - 137.24 120.39 110.53 - 133.65 121.36 111.06 - 138.25 129.22 119.30 - 140.55 133.79 123.88 - 144.29 136.65 126.72 - 143.07 134.40 124.68 - 140.94 131.54 122.45 - 141.50 129.21 119.77 - 138.01 128.31 118.82 - 135.62 128.86 119.44 - 135.93 126.20 115.36 - 138.15 125.50 114.00 - 135.95 123.03 111.55 - 134.19 125.36 113.95 - 135.04 128.62 118.25 - 135.00 128.55 119.05 - 134.97 129.83 120.95 - 134.53 132.19 122.22 - 132.69 131.17 119.76 - 133.32 131.10 119.95 - 136.00 132.00 120.48 - 136.15 131.34 120.50 - 133.56 129.38 118.86 - 130.81 128.72 118.62 + 135.22 135.22 124.09 + 136.59 136.59 124.79 + 135.19 135.19 123.58 + 134.26 132.12 121.63 + 137.65 130.97 122.29 + 141.38 133.12 124.36 + 142.86 136.11 127.08 + 140.03 134.66 124.56 + 140.47 132.53 122.06 + 142.06 132.74 122.25 + 142.53 130.00 119.55 + 142.30 127.46 116.65 + 138.18 123.97 112.52 + 136.03 123.51 112.27 + 133.54 122.22 111.31 + 135.49 129.23 118.53 + 135.66 129.59 119.22 + 136.59 129.32 119.47 + 138.55 128.50 119.38 + 137.93 125.50 116.02 + 136.58 122.81 113.52 + 135.39 122.22 112.60 + 131.80 117.97 108.14 + 131.92 114.12 104.18 + 135.47 114.78 103.95 + 135.95 115.42 105.88 + 132.49 113.83 103.95 + 128.71 114.03 103.41 + 130.38 119.25 109.23 + 136.34 123.89 114.64 + 139.78 127.64 118.50 + 138.04 128.82 119.55 + 132.69 124.89 115.87 + 129.56 120.45 111.02 + 126.33 115.31 105.89 + 123.17 109.56 99.45 + 128.78 113.11 102.96 + 137.78 122.64 113.50 + 139.84 122.72 113.20 + 136.64 119.66 110.37 + 130.10 115.76 106.68 + 129.42 117.66 108.25 + 131.03 118.62 109.37 + 132.76 121.86 112.16 + 134.47 124.56 115.44 + 132.94 118.82 109.34 + 133.31 111.05 101.74 + 133.06 106.50 97.19 + 129.32 102.74 93.30 + 126.23 105.95 96.39 + 127.50 118.08 108.12 + 128.22 120.14 110.94 + 129.21 118.02 109.27 + 128.60 116.70 109.28 + 125.47 110.38 103.81 + 126.17 107.66 101.03 + 125.91 108.94 102.59 + 128.28 111.28 104.49 + 127.39 112.19 106.19 + 124.44 107.50 101.81 + 129.28 110.52 104.81 + 130.08 110.83 107.03 + 128.40 109.48 106.09 + 127.17 108.70 105.70 + 128.67 112.18 108.72 + 127.52 109.45 104.89 + 128.20 108.64 101.50 + 125.32 109.17 102.38 + 126.88 111.80 106.14 + 126.41 109.45 103.78 + 124.88 110.55 105.62 + 124.52 108.86 101.64 + 128.53 112.11 104.70 + 133.06 116.89 110.36 + 135.56 117.05 111.42 + 131.86 110.66 107.01 + 124.56 101.23 97.84 + 117.06 96.44 93.42 + 117.36 103.03 99.61 + 118.96 105.43 102.37 + 122.03 108.28 105.38 + 121.29 110.69 107.46 + 127.92 118.56 115.58 + 127.28 115.64 112.55 + 127.55 108.75 105.71 + 127.79 105.50 102.34 + 126.66 102.94 99.74 + 131.93 105.02 102.09 + 128.19 102.50 99.26 + 122.34 99.69 96.69 + 120.53 103.05 99.75 + 122.16 108.96 105.67 + 126.12 116.05 112.83 + 126.02 117.28 114.08 + 127.22 115.30 112.38 + 132.06 113.68 110.44 + 132.44 110.81 107.83 + 128.84 106.16 103.05 + 124.56 102.50 99.44 + 125.08 106.59 103.44 + 127.44 110.34 107.14 + 127.13 108.04 105.08 + 123.91 101.51 98.54 + 120.12 100.81 97.78 + 117.61 104.51 100.99 + 117.28 108.80 105.22 + 117.50 105.58 102.15 + 121.60 105.58 101.74 + 124.19 101.78 98.03 + 127.80 103.33 99.35 + 126.78 103.97 100.03 + 126.90 106.03 102.97 + 124.86 103.94 101.17 + 125.94 104.68 101.85 + 128.78 104.45 101.22 + 135.19 109.57 106.57 + 136.69 111.91 108.78 + 129.65 107.42 104.36 + 124.03 100.08 96.91 + 117.12 95.03 91.81 + 116.38 96.70 93.77 + 113.66 96.08 92.86 + 114.19 98.67 95.69 + 114.37 99.11 96.01 + 113.14 98.94 95.90 + 113.61 99.47 96.42 + 154.34 143.29 45.30 + 190.28 180.78 50.91 + 164.49 155.77 44.31 + 117.89 94.81 89.72 + 122.09 100.67 95.56 + 122.80 102.11 96.69 + 126.31 107.73 102.53 + 125.79 108.03 103.24 + 126.92 111.25 106.64 + 126.59 111.05 106.19 + 122.47 109.00 104.07 + 122.27 106.27 100.80 + 122.00 107.80 101.31 + 127.11 112.20 105.52 + 130.65 113.26 106.64 + 128.07 113.60 107.22 + 125.31 111.75 105.08 + 124.33 111.19 104.68 + 120.38 107.43 99.95 + 116.41 101.88 93.69 + 119.11 101.82 92.94 + 120.86 102.50 92.81 + 123.97 102.45 92.41 + 128.31 105.31 95.16 + 129.05 110.11 100.02 + 132.49 118.21 107.92 + 136.88 124.64 114.86 + 138.40 126.32 116.11 + 136.50 121.71 111.25 + 131.07 111.60 100.98 + 125.39 103.61 92.80 + 120.80 104.83 94.49 + 126.58 116.32 106.16 + 133.76 125.20 115.57 + 136.60 125.95 117.25 + 133.96 119.27 111.06 + 127.70 107.79 100.15 + 126.11 105.56 95.28 + 124.89 106.06 95.48 + 128.34 112.08 101.08 + 131.87 116.53 105.57 + 130.28 114.74 104.25 + 129.12 115.17 104.50 + 134.81 121.33 111.61 + 137.61 124.61 114.98 + 136.10 123.40 113.57 + 130.79 119.30 109.40 + 133.18 120.92 110.86 + 137.64 124.50 114.61 + 140.83 122.92 113.10 + 137.19 120.37 110.53 + 133.76 121.41 111.12 + 138.19 129.16 119.30 + 140.51 133.78 123.88 + 144.22 136.56 126.63 + 143.02 134.35 124.64 + 140.99 131.56 122.48 + 141.44 129.15 119.74 + 137.97 128.31 118.80 + 135.66 128.85 119.39 + 136.02 126.23 115.39 + 138.14 125.51 113.97 + 136.04 123.14 111.61 + 134.12 125.33 113.94 + 134.87 128.51 118.18 + 135.12 128.65 119.12 + 135.00 129.84 120.93 + 134.56 132.22 122.22 + 132.67 131.15 119.76 + 133.29 131.09 119.95 + 135.99 131.95 120.47 + 136.12 131.31 120.48 + 133.49 129.31 118.83 + 130.76 128.69 118.61 sample_blocks: | 2 2 128.00 128.00 128.00 2 18 128.00 128.00 128.00 2 34 128.00 128.00 128.00 - 2 50 185.67 185.67 15.11 + 2 50 186.78 186.78 15.22 2 66 128.00 128.00 128.00 - 2 82 158.11 158.11 158.11 - 2 98 131.00 131.00 131.00 - 2 114 222.89 85.67 85.67 - 2 130 130.89 130.89 97.22 - 2 146 142.78 142.78 99.44 + 2 82 158.22 158.22 158.22 + 2 98 131.33 131.33 131.33 + 2 114 221.89 85.44 85.44 + 2 130 131.44 131.44 97.33 + 2 146 142.44 142.44 99.44 2 162 128.00 128.00 128.00 2 178 128.00 128.00 128.00 2 194 128.00 128.00 128.00 18 2 128.00 128.00 128.00 18 18 128.00 128.00 128.00 - 18 34 141.00 141.00 53.78 + 18 34 141.67 141.67 53.78 18 50 128.00 128.00 128.00 - 18 66 123.78 123.78 123.78 - 18 82 94.11 48.00 48.00 - 18 98 87.78 66.78 66.78 - 18 114 101.33 53.78 53.78 - 18 130 179.67 136.56 136.56 - 18 146 115.44 115.44 115.44 + 18 66 123.67 123.67 123.67 + 18 82 93.11 47.44 47.44 + 18 98 88.33 67.11 67.11 + 18 114 100.56 53.33 53.33 + 18 130 180.56 136.78 136.78 + 18 146 115.33 115.33 115.33 18 162 128.00 128.00 128.00 - 18 178 177.11 150.22 150.22 - 18 194 170.89 170.89 25.56 + 18 178 176.89 150.33 150.33 + 18 194 171.33 171.33 25.56 34 2 128.00 128.00 128.00 - 34 18 158.11 158.11 154.33 + 34 18 158.78 158.78 155.00 34 34 128.00 128.00 128.00 - 34 50 73.11 48.22 48.22 - 34 66 122.89 122.89 122.89 + 34 50 71.78 47.44 47.44 + 34 66 122.67 122.67 122.67 34 82 114.56 114.56 114.56 34 98 128.00 128.00 128.00 - 34 114 136.56 77.00 77.00 - 34 130 158.33 158.33 158.33 - 34 146 122.22 114.67 114.67 - 34 162 125.22 119.00 119.00 - 34 178 153.56 153.56 153.56 + 34 114 135.33 76.22 76.22 + 34 130 158.22 158.22 158.22 + 34 146 122.33 114.67 114.67 + 34 162 125.00 119.00 119.00 + 34 178 153.11 153.11 153.11 34 194 128.00 128.00 128.00 - 50 2 192.22 192.22 44.56 - 50 18 123.44 123.44 123.44 - 50 34 187.11 80.00 80.00 + 50 2 191.89 191.89 44.44 + 50 18 123.56 123.56 123.56 + 50 34 187.67 80.00 80.00 50 50 167.56 167.56 167.56 - 50 66 136.56 97.00 97.00 - 50 82 137.78 84.44 84.44 - 50 98 91.33 91.33 91.33 - 50 114 118.22 47.56 47.56 - 50 130 109.00 94.22 94.22 - 50 146 77.67 60.78 60.78 + 50 66 138.78 98.67 98.67 + 50 82 137.78 84.22 84.22 + 50 98 91.44 91.44 91.44 + 50 114 116.78 47.22 47.22 + 50 130 110.33 95.33 95.33 + 50 146 77.11 60.67 60.67 50 162 138.11 136.78 136.78 50 178 128.00 128.00 128.00 50 194 128.00 128.00 128.00 - 66 2 125.78 125.78 125.78 - 66 18 188.67 188.67 188.67 - 66 34 98.11 67.56 67.56 - 66 50 135.22 135.22 121.56 - 66 66 140.00 138.78 50.44 - 66 82 127.78 72.78 72.78 - 66 98 166.00 118.00 118.00 - 66 114 128.22 85.56 85.56 - 66 130 121.00 121.00 121.00 - 66 146 123.44 122.11 86.78 + 66 2 125.67 125.67 125.67 + 66 18 188.78 188.78 188.78 + 66 34 99.56 68.22 68.22 + 66 50 135.33 135.33 121.67 + 66 66 140.11 138.78 50.56 + 66 82 128.00 73.11 73.11 + 66 98 165.78 118.33 118.33 + 66 114 128.44 86.00 86.00 + 66 130 120.89 120.89 120.89 + 66 146 123.33 122.00 86.56 66 162 125.11 125.11 125.11 - 66 178 106.00 103.22 103.22 + 66 178 106.22 103.56 103.56 66 194 129.11 129.11 129.11 82 2 128.00 128.00 128.00 - 82 18 122.67 93.78 93.78 - 82 34 123.44 123.44 123.44 - 82 50 132.11 92.44 92.44 - 82 66 103.22 91.11 91.11 - 82 82 166.22 163.78 163.78 - 82 98 99.22 99.22 99.22 - 82 114 207.78 206.56 28.00 - 82 130 184.44 184.44 29.78 - 82 146 91.89 84.33 84.33 - 82 162 97.44 97.44 97.44 - 82 178 128.11 128.11 128.11 + 82 18 123.00 93.89 93.89 + 82 34 123.22 123.22 123.22 + 82 50 131.78 91.89 91.89 + 82 66 102.56 90.78 90.78 + 82 82 166.56 164.11 164.11 + 82 98 98.44 98.44 98.44 + 82 114 207.22 206.11 27.78 + 82 130 184.67 184.67 29.89 + 82 146 93.00 85.44 85.44 + 82 162 97.33 97.33 97.33 + 82 178 128.22 128.22 128.22 82 194 128.00 128.00 128.00 98 2 128.00 128.00 128.00 98 18 124.00 118.89 118.89 - 98 34 93.56 75.44 75.44 - 98 50 110.44 73.89 73.89 - 98 66 185.67 166.56 166.56 - 98 82 92.00 52.44 52.44 - 98 98 136.89 136.89 136.89 - 98 114 126.22 121.67 121.67 - 98 130 104.89 44.89 44.89 - 98 146 178.78 178.78 178.78 - 98 162 132.56 128.56 128.56 + 98 34 94.22 75.56 75.56 + 98 50 109.67 73.89 73.89 + 98 66 185.67 166.67 166.67 + 98 82 92.78 52.44 52.44 + 98 98 138.00 138.00 138.00 + 98 114 127.44 123.00 123.00 + 98 130 103.00 43.33 43.33 + 98 146 178.00 178.00 178.00 + 98 162 132.56 128.33 128.33 98 178 128.67 108.56 108.56 98 194 126.89 126.89 126.89 114 2 128.00 128.00 128.00 - 114 18 118.33 109.56 109.56 - 114 34 111.89 105.89 105.89 - 114 50 95.44 95.44 95.44 - 114 66 70.78 70.78 70.78 - 114 82 157.78 155.22 155.22 - 114 98 80.67 59.44 59.44 - 114 114 129.44 114.33 114.33 - 114 130 78.11 69.89 69.89 - 114 146 133.22 68.00 68.00 - 114 162 89.78 69.89 69.89 - 114 178 130.00 130.00 130.00 + 114 18 118.78 110.22 110.22 + 114 34 112.67 106.22 106.22 + 114 50 96.33 96.33 96.33 + 114 66 69.33 69.33 69.33 + 114 82 158.44 155.89 155.89 + 114 98 80.44 59.22 59.22 + 114 114 128.33 113.56 113.56 + 114 130 77.22 69.22 69.22 + 114 146 134.11 69.33 69.33 + 114 162 88.78 69.44 69.44 + 114 178 129.89 129.89 129.89 114 194 128.00 128.00 128.00 130 2 128.00 128.00 128.00 130 18 112.11 112.11 112.11 - 130 34 119.00 119.00 119.00 - 130 50 103.44 103.44 94.56 - 130 66 83.11 76.56 76.56 - 130 82 106.11 106.11 106.11 - 130 98 163.11 163.11 163.11 - 130 114 126.78 110.00 110.00 - 130 130 91.33 65.22 59.11 - 130 146 79.22 54.56 54.56 - 130 162 94.11 47.00 47.00 + 130 34 118.89 118.89 118.89 + 130 50 102.22 102.22 93.33 + 130 66 81.67 75.33 75.33 + 130 82 105.89 105.89 105.89 + 130 98 162.78 162.78 162.78 + 130 114 125.33 108.33 108.33 + 130 130 90.67 64.44 58.22 + 130 146 80.00 54.56 54.56 + 130 162 95.67 48.00 48.00 130 178 128.00 128.00 128.00 130 194 128.00 128.00 128.00 146 2 129.89 129.89 129.89 - 146 18 129.44 59.11 59.11 - 146 34 159.11 159.11 151.11 - 146 50 89.44 40.44 40.44 - 146 66 155.33 132.00 132.00 - 146 82 128.89 128.89 128.89 - 146 98 122.67 119.00 119.00 - 146 114 98.78 65.67 65.67 - 146 130 89.89 60.11 60.11 - 146 146 82.56 78.33 78.33 - 146 162 190.00 68.00 68.00 - 146 178 145.56 80.00 80.00 - 146 194 135.22 135.22 93.33 + 146 18 129.00 59.00 59.00 + 146 34 158.67 158.67 150.56 + 146 50 90.00 40.44 40.44 + 146 66 155.78 132.56 132.56 + 146 82 128.67 128.67 128.67 + 146 98 123.11 119.56 119.56 + 146 114 99.33 66.11 66.11 + 146 130 89.44 59.89 59.89 + 146 146 83.33 78.89 78.89 + 146 162 190.33 68.22 68.22 + 146 178 144.56 79.78 79.78 + 146 194 135.33 135.33 93.22 162 2 128.00 128.00 128.00 - 162 18 117.56 83.00 72.56 - 162 34 125.89 123.22 123.22 + 162 18 117.56 82.56 72.22 + 162 34 125.67 123.11 123.11 162 50 128.00 128.00 128.00 - 162 66 118.33 43.78 43.78 + 162 66 117.78 43.56 43.56 162 82 121.44 121.44 121.44 162 98 123.00 123.00 123.00 - 162 114 110.00 110.00 110.00 - 162 130 124.56 124.56 124.56 - 162 146 77.22 67.89 67.89 - 162 162 128.22 103.89 103.89 + 162 114 110.67 110.67 110.67 + 162 130 124.33 124.33 124.33 + 162 146 78.33 68.78 68.78 + 162 162 129.44 105.11 105.11 162 178 128.00 128.00 128.00 162 194 128.00 128.00 128.00 - 178 2 175.11 175.11 65.33 + 178 2 175.44 175.44 65.44 178 18 128.00 128.00 128.00 - 178 34 121.67 121.67 121.67 + 178 34 121.89 121.89 121.89 178 50 128.00 128.00 128.00 - 178 66 198.56 73.44 73.44 - 178 82 113.56 113.56 113.56 + 178 66 197.78 73.22 73.22 + 178 82 113.78 113.78 113.78 178 98 128.00 128.00 128.00 - 178 114 99.67 69.22 69.22 - 178 130 108.78 83.11 83.11 - 178 146 160.33 156.67 156.67 + 178 114 98.22 68.33 68.33 + 178 130 109.22 83.33 83.33 + 178 146 162.11 158.22 158.22 178 162 128.00 128.00 128.00 178 178 128.00 128.00 128.00 178 194 128.00 128.00 128.00 194 2 128.00 128.00 128.00 194 18 128.00 128.00 128.00 194 34 128.00 128.00 128.00 - 194 50 181.22 181.22 48.89 - 194 66 139.00 139.00 139.00 + 194 50 181.44 181.44 49.00 + 194 66 139.33 139.33 139.33 194 82 125.89 125.89 125.89 194 98 128.00 128.00 128.00 - 194 114 143.00 143.00 143.00 - 194 130 117.44 92.78 92.78 + 194 114 143.56 143.56 143.56 + 194 130 117.00 92.44 92.44 194 146 128.00 128.00 128.00 194 162 128.00 128.00 128.00 194 178 128.00 128.00 128.00 diff --git a/unittest/graphics/tests/dump-modify-gamma.yaml b/unittest/graphics/tests/dump-modify-gamma.yaml new file mode 100644 index 00000000000..10c40112449 --- /dev/null +++ b/unittest/graphics/tests/dump-modify-gamma.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 13:10:05 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 + dump_modify viz backcolor gray gamma 2.2 +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 126.56 137.10 128.99 + 121.51 132.43 130.35 + 123.40 131.46 132.21 + 128.18 133.51 130.68 + 126.00 131.81 128.12 + 125.22 132.39 126.57 + 127.77 133.32 124.52 + 129.80 135.56 126.00 + 129.57 134.22 125.08 + 127.50 134.64 126.44 + 129.81 136.88 128.44 + 129.53 136.84 128.61 + 123.63 137.95 130.81 + 117.30 138.19 136.37 + 116.12 147.16 143.68 + 115.72 145.56 140.03 + 108.91 137.37 131.78 + 107.48 130.24 133.28 + 114.62 132.66 138.22 + 111.20 133.41 142.18 + 101.53 127.14 144.98 + 102.47 135.95 150.41 + 99.03 136.96 150.44 + 98.64 136.27 145.58 + 96.14 134.37 138.66 + 99.31 135.41 138.18 + 105.80 136.45 141.63 + 103.94 135.94 144.41 + 95.24 130.50 146.21 + 99.53 129.91 148.45 + 95.81 129.65 146.81 + 91.89 127.74 144.09 + 95.53 135.28 144.25 + 98.92 140.66 146.56 + 95.36 139.69 147.13 + 92.66 134.32 139.44 + 97.58 132.75 136.91 + 97.33 132.66 142.09 + 94.66 136.47 146.54 + 93.69 140.24 150.33 + 94.27 138.05 148.88 + 92.72 136.25 146.15 + 91.16 137.05 151.40 + 96.56 133.69 144.44 + 91.08 132.66 136.69 + 89.88 135.89 143.75 + 91.88 136.22 154.69 + 87.19 135.12 159.41 + 87.35 134.09 157.79 + 87.16 133.79 154.44 + 95.45 138.63 151.57 + 99.95 138.28 150.24 + 89.47 136.31 146.98 + 92.56 138.47 145.91 + 92.14 133.82 141.34 + 96.56 138.71 143.29 + 102.86 147.57 143.96 + 106.65 148.99 146.35 + 101.75 141.91 142.88 + 98.15 132.87 144.54 + 100.59 134.40 151.22 + 97.03 131.33 146.24 + 102.03 141.71 151.56 + 100.83 146.44 153.33 + 96.77 147.78 150.06 + 90.83 141.74 143.57 + 91.09 139.09 140.18 + 98.21 142.30 152.31 + 97.42 143.25 151.54 + 99.83 136.80 147.94 + 92.67 126.00 140.50 + 95.71 123.39 142.06 + 95.96 128.43 149.94 + 87.44 127.62 151.27 + 86.04 139.85 151.62 + 89.36 146.04 154.59 + 89.08 137.55 153.16 + 87.92 133.00 152.07 + 87.47 129.25 145.88 + 92.77 135.95 146.00 + 96.65 145.97 148.76 + 98.78 148.19 154.86 + 91.44 137.88 153.00 + 89.67 135.96 150.19 + 88.75 129.51 145.93 + 90.27 136.11 151.21 + 85.12 141.16 154.13 + 85.19 139.59 154.00 + 74.80 137.28 159.15 + 75.75 132.84 159.50 + 74.82 132.99 159.07 + 77.81 130.31 161.03 + 74.07 130.04 158.06 + 75.86 134.09 154.03 + 77.13 135.47 153.53 + 75.69 130.46 154.00 + 79.55 133.25 157.46 + 87.14 139.88 159.35 + 88.06 134.43 156.90 + 80.17 122.61 147.44 + 84.72 129.11 148.47 + 86.66 125.24 152.94 + 84.78 130.02 159.16 + 81.24 137.00 163.34 + 83.56 142.36 168.72 + 73.00 139.81 162.34 + 68.70 129.19 152.12 + 72.42 124.43 155.52 + 72.11 121.58 155.37 + 78.79 121.53 158.18 + 82.06 118.56 150.30 + 79.69 115.83 151.61 + 85.44 141.50 161.63 + 85.03 152.46 163.74 + 77.86 143.71 157.24 + 75.95 138.72 155.71 + 79.12 131.22 149.55 + 84.63 142.16 153.46 + 84.22 134.50 150.13 + 85.57 131.89 150.90 + 81.80 123.39 147.44 + 82.79 124.94 151.74 + 77.75 129.88 156.91 + 78.75 134.62 164.09 + 75.17 134.40 161.35 + 76.08 129.75 155.43 + 77.16 130.93 153.29 + 75.60 133.41 154.32 + 75.39 135.35 152.50 + 80.89 139.74 159.51 + 82.77 137.44 152.74 + 83.34 138.88 154.37 + 82.27 135.22 154.27 + 82.31 128.68 149.41 + 87.04 127.67 147.91 + 78.45 129.00 147.56 + 85.49 140.51 154.50 + 89.58 145.93 159.69 + 84.48 137.26 153.96 + 81.60 130.28 153.11 + 86.36 128.79 158.26 + 81.56 130.94 160.38 + 74.39 125.97 151.41 + 71.57 128.25 149.17 + 78.75 132.26 149.94 + 83.05 135.32 148.44 + 88.38 133.06 145.47 + 89.48 133.22 146.16 + 94.42 139.69 153.76 + 90.83 134.47 150.47 + 91.74 137.93 153.00 + 86.94 135.24 146.44 + 90.42 138.66 151.81 + 87.53 137.21 152.61 + 87.66 141.12 158.72 + 84.57 137.71 153.22 + 84.62 135.41 154.08 + 83.87 131.01 147.84 + 86.86 123.44 140.57 + 90.86 124.73 142.12 + 96.47 131.19 140.97 + 101.56 138.24 143.94 + 103.61 145.14 143.21 + 98.92 142.85 143.94 + 98.78 137.66 144.22 + 102.51 142.03 149.89 + 102.05 140.36 148.63 + 98.34 131.40 141.41 + 98.62 129.60 135.95 + 97.44 125.14 131.06 + 104.48 129.37 142.66 + 101.67 136.32 146.88 + 104.44 145.31 150.97 + 104.22 140.49 144.82 + 101.56 130.28 132.08 + 106.22 128.32 129.46 + 114.91 135.48 133.16 + 116.31 138.16 136.34 + 117.11 136.26 135.42 + 120.29 135.76 134.03 + 114.00 132.75 129.82 + 118.83 136.79 129.47 + 119.69 141.69 131.69 + 120.83 142.90 131.58 + 120.78 139.16 130.78 + 121.31 135.29 130.61 + 124.83 131.70 128.93 + 124.72 131.93 129.21 + 122.60 132.65 129.99 + 124.36 133.84 127.84 + 125.66 135.28 126.39 + 125.09 133.91 123.88 + 126.27 132.24 123.73 + 128.12 138.84 129.84 + 125.99 137.50 131.22 + 123.09 134.91 130.14 + 123.56 134.35 129.76 + 124.23 133.94 128.47 + 129.01 135.19 124.04 + 132.71 136.25 123.44 +col_means: | + 130.43 135.81 126.82 + 129.97 137.67 127.59 + 129.96 137.26 126.83 + 126.72 135.88 127.56 + 122.67 134.15 132.14 + 122.79 134.28 134.96 + 120.75 137.78 137.13 + 117.78 138.16 134.84 + 117.36 135.63 134.30 + 118.02 135.99 136.26 + 114.15 132.66 137.07 + 112.84 129.50 133.93 + 112.36 127.44 131.55 + 115.22 133.31 134.29 + 112.65 132.03 132.91 + 112.17 133.30 131.96 + 112.13 137.72 133.72 + 110.69 136.60 136.17 + 108.69 134.63 139.87 + 107.92 135.37 141.92 + 107.48 132.22 141.12 + 106.36 129.09 140.44 + 107.75 129.69 141.67 + 105.42 130.40 143.55 + 101.84 132.65 147.01 + 99.11 133.30 150.01 + 96.34 129.67 144.03 + 97.92 127.17 139.53 + 100.52 129.68 135.63 + 104.12 138.99 144.78 + 106.29 140.28 149.12 + 103.94 141.57 148.28 + 95.80 137.90 141.62 + 98.58 134.60 141.11 + 103.84 132.00 140.23 + 97.42 132.67 143.03 + 104.00 133.84 144.20 + 105.85 140.51 150.72 + 100.35 139.83 149.25 + 94.20 133.50 145.96 + 94.47 131.50 141.72 + 98.70 136.97 143.93 + 101.05 139.46 149.63 + 98.25 139.03 150.54 + 95.21 145.84 151.50 + 94.24 145.59 151.96 + 92.22 134.28 149.74 + 92.21 128.91 149.44 + 90.80 127.39 148.97 + 89.17 123.58 146.25 + 95.37 138.23 147.44 + 93.94 143.14 147.12 + 93.53 140.24 148.40 + 93.67 138.84 149.56 + 92.77 136.14 149.80 + 92.61 127.55 147.00 + 92.00 126.89 146.67 + 93.53 130.83 147.31 + 95.78 134.84 150.25 + 82.76 130.62 147.16 + 88.65 132.37 149.85 + 90.34 138.38 156.50 + 88.19 140.97 162.21 + 79.34 134.96 159.49 + 78.88 138.91 160.51 + 78.75 139.09 158.91 + 80.96 133.57 155.82 + 79.67 132.56 151.63 + 86.72 138.27 153.35 + 84.75 133.14 152.46 + 85.75 133.26 152.75 + 82.92 140.53 154.84 + 84.09 145.20 157.18 + 83.02 143.69 156.53 + 80.40 140.31 150.54 + 81.22 135.76 154.79 + 78.81 123.61 151.56 + 76.71 127.86 154.26 + 79.93 139.46 157.94 + 82.36 143.66 162.74 + 79.11 140.74 158.59 + 75.70 143.41 157.79 + 82.44 148.62 158.94 + 80.00 144.60 157.30 + 81.47 136.44 157.78 + 81.72 127.08 154.55 + 79.27 128.03 153.12 + 85.01 126.03 153.94 + 85.53 122.47 152.69 + 82.56 120.79 149.58 + 81.98 120.23 144.05 + 89.92 128.46 146.37 + 93.62 141.92 151.31 + 97.39 151.28 150.66 + 91.84 147.90 145.88 + 96.14 147.88 153.76 + 97.39 138.33 153.75 + 89.09 129.14 148.53 + 87.89 127.12 149.81 + 89.27 131.66 153.04 + 83.48 139.74 158.83 + 80.41 137.44 158.69 + 82.40 135.03 158.00 + 78.52 131.14 152.33 + 71.48 128.94 148.87 + 84.44 140.59 149.04 + 85.83 137.62 150.16 + 86.16 138.06 147.88 + 90.94 135.71 149.26 + 92.11 134.08 151.74 + 85.44 132.91 150.12 + 79.73 134.57 152.07 + 78.73 135.74 159.99 + 79.71 138.50 160.18 + 77.64 134.53 162.62 + 78.09 131.75 162.94 + 83.50 135.88 162.02 + 75.53 131.75 153.59 + 73.26 125.05 153.44 + 75.78 120.61 147.77 + 85.44 123.13 148.68 + 87.08 125.79 148.85 + 88.02 123.09 146.25 + 87.84 129.48 151.28 + 87.47 136.50 154.09 + 86.17 140.83 157.88 + 152.87 159.81 90.58 + 162.81 173.33 107.00 + 139.34 151.19 86.30 + 80.58 124.28 150.96 + 89.67 129.94 153.90 + 84.80 128.03 156.72 + 84.89 134.16 158.68 + 82.48 138.79 160.31 + 82.44 136.44 151.43 + 85.59 129.28 149.44 + 83.70 129.97 148.22 + 90.02 130.86 151.06 + 91.75 137.15 153.16 + 92.44 146.78 157.07 + 88.89 140.29 153.55 + 79.87 136.73 151.09 + 82.55 136.57 152.13 + 85.32 141.10 155.32 + 83.80 139.97 153.72 + 80.69 139.13 149.53 + 83.92 136.71 153.18 + 84.13 138.10 152.35 + 84.44 134.38 152.71 + 86.98 128.97 153.97 + 88.61 133.43 152.84 + 85.31 133.59 145.78 + 89.37 140.00 150.19 + 90.74 140.28 147.57 + 90.28 138.47 145.56 + 89.29 137.01 149.12 + 89.69 131.95 151.27 + 86.54 128.85 146.00 + 93.00 138.96 148.54 + 96.30 145.46 149.18 + 92.32 141.01 146.91 + 94.64 137.53 144.43 + 91.53 129.56 144.67 + 100.56 132.22 146.22 + 94.56 130.25 147.19 + 100.44 140.78 149.75 + 100.44 136.13 148.64 + 96.61 133.71 142.75 + 95.47 130.44 138.01 + 100.93 131.05 138.59 + 101.33 136.68 143.38 + 101.67 134.79 142.95 + 98.25 129.96 138.16 + 101.36 129.03 137.71 + 109.99 133.49 139.78 + 110.46 129.84 141.32 + 107.17 129.38 140.13 + 107.78 126.19 133.69 + 118.11 135.60 135.83 + 114.12 139.24 138.26 + 115.20 141.62 139.83 + 109.99 139.28 138.77 + 105.97 135.79 137.50 + 105.87 133.65 137.47 + 106.99 131.09 135.20 + 110.95 134.47 134.75 + 116.07 133.68 134.26 + 117.12 132.71 136.04 + 115.14 129.73 133.75 + 114.64 131.49 131.75 + 114.72 133.43 132.37 + 117.37 134.01 130.69 + 120.86 132.95 130.67 + 122.14 132.68 127.33 + 123.92 134.66 126.06 + 127.67 133.49 125.69 + 129.66 134.00 127.34 + 128.38 133.45 127.94 + 127.11 131.74 126.83 + 129.38 130.78 124.62 +sample_blocks: | + 2 2 128.00 128.00 128.00 + 2 18 128.00 128.00 128.00 + 2 34 128.00 128.00 128.00 + 2 50 202.22 188.67 54.44 + 2 66 128.00 128.00 128.00 + 2 82 113.44 163.67 163.67 + 2 98 109.78 130.00 130.00 + 2 114 90.56 90.56 197.78 + 2 130 130.00 128.78 117.11 + 2 146 168.89 166.44 115.00 + 2 162 128.00 128.00 128.00 + 2 178 128.00 128.00 128.00 + 2 194 128.00 128.00 128.00 + 18 2 128.00 128.00 128.00 + 18 18 128.00 128.00 128.00 + 18 34 152.67 144.44 52.44 + 18 50 128.00 128.00 128.00 + 18 66 128.00 128.00 128.00 + 18 82 59.00 66.33 166.44 + 18 98 41.67 123.22 149.22 + 18 114 98.78 98.78 167.00 + 18 130 97.33 148.22 198.44 + 18 146 92.78 117.33 117.33 + 18 162 128.00 128.00 128.00 + 18 178 92.89 169.11 205.89 + 18 194 227.67 220.56 84.89 + 34 2 128.00 128.00 128.00 + 34 18 103.89 180.78 180.78 + 34 34 128.00 128.00 128.00 + 34 50 51.56 111.22 154.00 + 34 66 128.00 128.00 128.00 + 34 82 58.67 124.56 124.56 + 34 98 128.00 128.00 128.00 + 34 114 65.11 91.44 180.33 + 34 130 55.22 162.11 162.11 + 34 146 100.78 100.78 127.00 + 34 162 118.33 132.67 132.67 + 34 178 90.00 203.33 203.33 + 34 194 128.00 128.00 128.00 + 50 2 196.56 191.44 101.78 + 50 18 128.00 128.00 128.00 + 50 34 90.33 90.33 206.22 + 50 50 76.89 190.33 190.33 + 50 66 81.33 144.33 189.33 + 50 82 61.67 106.11 169.00 + 50 98 76.00 122.33 122.33 + 50 114 76.67 89.44 186.44 + 50 130 109.44 159.67 184.00 + 50 146 52.67 122.44 161.78 + 50 162 67.44 180.89 180.89 + 50 178 128.00 128.00 128.00 + 50 194 128.00 128.00 128.00 + 66 2 128.00 128.00 128.00 + 66 18 57.33 164.44 164.44 + 66 34 102.33 102.33 164.56 + 66 50 51.89 151.89 151.89 + 66 66 150.11 189.89 106.11 + 66 82 48.56 99.78 152.11 + 66 98 60.00 105.22 168.78 + 66 114 68.56 116.00 178.11 + 66 130 61.56 161.78 161.78 + 66 146 93.22 131.67 114.00 + 66 162 113.78 113.78 113.78 + 66 178 77.78 111.22 124.11 + 66 194 112.67 139.11 139.11 + 82 2 128.00 128.00 128.00 + 82 18 116.22 116.22 153.33 + 82 34 100.22 126.33 126.33 + 82 50 68.22 135.22 168.44 + 82 66 62.78 153.44 177.67 + 82 82 55.56 159.89 159.89 + 82 98 89.56 168.22 168.22 + 82 114 195.44 203.44 111.00 + 82 130 190.89 190.89 69.89 + 82 146 68.11 156.67 181.11 + 82 162 74.78 123.00 123.00 + 82 178 128.00 128.00 128.00 + 82 194 128.00 128.00 128.00 + 98 2 128.00 128.00 128.00 + 98 18 128.00 128.00 128.00 + 98 34 73.78 125.00 157.89 + 98 50 80.56 92.56 142.11 + 98 66 81.78 174.22 186.33 + 98 82 68.78 114.22 169.89 + 98 98 57.11 167.33 167.33 + 98 114 91.00 200.33 200.33 + 98 130 67.33 104.44 174.67 + 98 146 84.22 194.67 194.67 + 98 162 79.22 185.22 185.22 + 98 178 104.56 104.56 143.33 + 98 194 128.00 128.00 128.00 + 114 2 128.00 128.00 128.00 + 114 18 46.67 112.22 135.56 + 114 34 92.33 116.78 126.89 + 114 50 89.22 194.67 194.67 + 114 66 36.44 141.22 141.22 + 114 82 87.22 195.78 195.78 + 114 98 80.11 129.89 191.11 + 114 114 95.22 131.22 182.78 + 114 130 44.44 136.56 150.11 + 114 146 66.11 104.33 181.11 + 114 162 45.00 124.22 150.33 + 114 178 107.22 132.00 132.00 + 114 194 128.00 128.00 128.00 + 130 2 128.00 128.00 128.00 + 130 18 72.33 134.33 134.33 + 130 34 103.56 141.11 141.11 + 130 50 77.56 145.89 128.22 + 130 66 76.67 188.78 188.78 + 130 82 101.78 118.00 118.00 + 130 98 82.67 192.67 192.67 + 130 114 52.56 146.33 159.78 + 130 130 110.44 130.56 112.78 + 130 146 50.56 112.22 155.89 + 130 162 64.44 103.11 179.56 + 130 178 128.00 128.00 128.00 + 130 194 128.00 128.00 128.00 + 146 2 128.00 128.00 128.00 + 146 18 53.56 77.89 149.89 + 146 34 31.56 135.89 135.89 + 146 50 53.22 66.22 164.44 + 146 66 79.56 152.78 193.00 + 146 82 119.11 133.67 133.67 + 146 98 71.33 171.78 183.89 + 146 114 39.78 52.00 125.00 + 146 130 20.00 90.89 123.33 + 146 146 45.22 116.33 127.44 + 146 162 78.56 78.56 190.33 + 146 178 95.78 95.78 137.33 + 146 194 179.11 176.56 109.33 + 162 2 128.00 128.00 128.00 + 162 18 101.56 163.67 153.11 + 162 34 105.22 128.11 142.78 + 162 50 128.00 128.00 128.00 + 162 66 56.67 68.67 147.67 + 162 82 90.00 142.67 142.67 + 162 98 113.78 126.11 126.11 + 162 114 69.67 131.44 131.44 + 162 130 102.22 126.78 126.78 + 162 146 53.89 135.56 135.56 + 162 162 54.78 143.00 167.00 + 162 178 128.00 128.00 128.00 + 162 194 128.00 128.00 128.00 + 178 2 212.11 209.00 110.78 + 178 18 128.00 128.00 128.00 + 178 34 78.11 140.22 140.22 + 178 50 128.00 128.00 128.00 + 178 66 67.56 67.56 179.22 + 178 82 91.11 126.11 126.11 + 178 98 128.00 128.00 128.00 + 178 114 67.33 126.00 178.89 + 178 130 84.56 84.56 134.33 + 178 146 51.00 162.89 162.89 + 178 162 128.00 128.00 128.00 + 178 178 128.00 128.00 128.00 + 178 194 128.00 128.00 128.00 + 194 2 128.00 128.00 128.00 + 194 18 128.00 128.00 128.00 + 194 34 128.00 128.00 128.00 + 194 50 177.11 171.78 92.00 + 194 66 91.33 141.22 141.22 + 194 82 128.00 128.00 128.00 + 194 98 128.00 128.00 128.00 + 194 114 69.33 163.11 163.11 + 194 130 53.00 137.11 161.44 + 194 146 128.00 128.00 128.00 + 194 162 128.00 128.00 128.00 + 194 178 128.00 128.00 128.00 + 194 194 128.00 128.00 128.00 +... diff --git a/unittest/graphics/tests/dump-modify-specular-none.yaml b/unittest/graphics/tests/dump-modify-specular-none.yaml new file mode 100644 index 00000000000..e81471da9a4 --- /dev/null +++ b/unittest/graphics/tests/dump-modify-specular-none.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 15:24:54 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 + dump_modify viz backcolor gray specular none +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 115.01 123.37 113.48 + 111.03 118.25 115.56 + 111.41 117.16 116.05 + 116.55 120.50 115.39 + 115.44 119.57 112.47 + 116.34 121.17 111.91 + 120.42 124.33 112.59 + 124.19 127.72 115.77 + 123.83 126.21 114.73 + 120.81 125.41 114.64 + 120.12 126.16 115.80 + 119.70 125.30 115.58 + 109.53 120.21 112.08 + 97.22 115.62 111.23 + 87.18 116.75 111.88 + 87.66 115.35 107.39 + 87.61 107.86 99.14 + 85.55 99.94 100.58 + 89.44 103.62 108.84 + 84.47 104.31 111.47 + 72.22 96.56 111.98 + 68.47 100.81 115.06 + 63.69 98.60 111.21 + 66.08 98.97 106.72 + 68.81 99.69 101.49 + 71.60 102.03 103.88 + 77.53 104.02 109.74 + 73.43 101.33 110.11 + 62.09 90.97 105.88 + 62.23 89.27 108.01 + 58.76 86.93 103.03 + 56.97 87.94 100.66 + 61.24 97.23 103.47 + 64.61 102.67 107.33 + 60.27 98.47 104.97 + 62.80 95.03 99.48 + 70.25 97.45 100.69 + 65.40 96.21 103.42 + 57.51 95.34 103.47 + 54.47 95.25 104.72 + 53.52 92.24 103.03 + 54.94 90.47 99.36 + 47.01 86.77 98.50 + 56.16 87.47 94.38 + 54.42 87.00 87.89 + 49.76 90.13 95.20 + 44.43 86.92 104.55 + 35.88 80.59 103.37 + 37.05 77.83 100.45 + 39.52 79.42 96.11 + 50.19 89.74 98.77 + 56.44 91.36 99.84 + 46.09 84.10 90.17 + 49.48 86.64 89.29 + 54.41 85.25 86.38 + 58.73 94.52 91.78 + 62.45 101.38 95.53 + 63.99 102.71 99.83 + 65.65 98.41 98.22 + 62.84 89.93 95.41 + 56.83 84.30 96.30 + 55.70 82.19 90.07 + 56.01 89.61 94.03 + 52.46 95.53 96.22 + 50.06 95.44 91.61 + 48.68 90.93 88.80 + 55.73 92.20 90.48 + 55.39 94.15 102.34 + 52.95 94.25 100.41 + 59.05 88.19 96.92 + 52.53 77.33 87.86 + 53.06 75.06 88.51 + 49.58 75.64 94.21 + 42.63 77.27 92.72 + 40.10 87.58 93.38 + 41.93 91.85 96.49 + 41.59 82.19 94.92 + 41.89 78.20 93.77 + 47.87 80.78 91.81 + 56.13 91.94 94.30 + 55.62 100.11 98.25 + 51.54 96.92 100.97 + 45.67 84.16 96.99 + 46.47 83.00 94.48 + 49.94 83.56 93.97 + 49.97 90.77 101.61 + 43.30 92.53 104.23 + 43.10 90.22 104.31 + 26.46 80.56 99.61 + 23.09 74.61 97.64 + 23.27 74.59 97.92 + 25.84 73.55 100.47 + 23.91 73.44 96.78 + 30.95 81.05 97.50 + 32.87 82.06 97.41 + 31.59 78.62 97.36 + 32.87 79.92 102.08 + 39.27 86.83 106.89 + 43.10 86.17 106.19 + 43.10 77.32 97.28 + 47.59 84.37 102.62 + 46.30 79.73 105.59 + 39.91 80.44 107.17 + 29.59 82.03 105.65 + 27.11 84.86 108.97 + 19.43 77.66 98.17 + 22.62 70.31 90.97 + 25.82 68.42 95.98 + 24.55 63.00 95.16 + 32.16 63.87 99.59 + 40.97 68.27 95.44 + 38.43 68.94 97.01 + 34.24 88.62 103.58 + 32.70 94.48 104.56 + 28.27 84.00 95.67 + 27.69 78.61 95.06 + 33.55 76.59 92.72 + 37.44 87.53 96.37 + 39.98 82.98 95.27 + 40.32 79.72 98.39 + 43.55 76.94 98.67 + 43.50 79.15 101.11 + 31.59 77.27 101.34 + 25.18 76.14 103.41 + 23.28 75.05 99.25 + 28.23 72.92 95.55 + 28.84 74.31 92.70 + 25.96 74.44 93.11 + 26.88 79.89 93.39 + 31.59 85.69 103.48 + 38.59 85.94 99.35 + 39.38 88.61 100.88 + 38.45 84.94 101.44 + 41.83 80.59 99.18 + 51.33 83.92 101.45 + 43.10 85.88 98.28 + 41.49 93.20 104.06 + 42.92 95.91 106.56 + 40.08 85.17 99.61 + 38.42 76.60 95.97 + 39.61 76.04 102.67 + 31.27 76.78 102.45 + 31.50 74.97 93.49 + 29.66 77.48 92.67 + 37.86 82.89 96.48 + 44.07 88.16 96.28 + 53.12 88.44 95.97 + 52.65 88.23 95.93 + 50.98 91.10 101.51 + 51.10 88.58 101.39 + 50.77 92.49 106.43 + 51.72 92.42 101.58 + 50.49 93.77 105.70 + 44.52 87.27 102.31 + 37.31 86.25 104.28 + 35.63 83.97 97.39 + 36.41 81.89 98.27 + 43.24 81.89 97.12 + 54.31 81.75 97.62 + 60.16 88.59 102.08 + 66.21 97.20 103.62 + 69.48 101.54 107.36 + 71.30 107.83 107.05 + 65.67 104.61 104.53 + 64.81 99.02 105.38 + 62.98 99.53 109.00 + 62.76 98.67 107.19 + 64.19 92.99 100.53 + 70.98 94.20 99.02 + 73.92 94.75 98.81 + 76.33 100.64 110.80 + 69.34 103.02 111.67 + 66.79 105.52 112.03 + 70.40 102.40 106.61 + 77.21 99.00 99.19 + 88.75 104.61 103.94 + 98.15 116.36 114.16 + 97.91 118.30 116.34 + 98.69 114.80 112.84 + 102.11 113.27 110.02 + 98.06 110.91 106.14 + 102.68 117.23 106.27 + 101.58 120.98 107.70 + 103.51 121.33 108.27 + 105.83 119.28 109.44 + 107.08 117.08 110.62 + 111.51 115.40 110.44 + 110.56 115.19 109.84 + 107.57 115.42 109.33 + 112.03 118.81 109.44 + 115.43 121.84 110.27 + 117.00 120.88 108.75 + 118.16 120.50 109.44 + 114.61 122.97 112.83 + 110.31 119.58 111.94 + 108.75 117.11 110.72 + 111.59 120.39 115.13 + 114.29 121.88 115.02 + 122.24 125.42 111.78 + 127.48 128.25 113.86 +col_means: | + 124.01 128.55 118.22 + 121.17 128.03 117.44 + 122.73 128.12 116.82 + 118.72 125.36 116.17 + 109.33 119.21 116.94 + 105.93 116.98 117.56 + 102.64 118.46 116.83 + 100.09 117.75 112.72 + 98.16 114.04 111.89 + 97.06 112.89 112.41 + 92.64 107.93 110.83 + 91.45 104.52 108.53 + 94.70 104.70 106.82 + 95.95 110.33 109.23 + 92.78 108.92 106.92 + 93.91 110.67 107.18 + 93.72 114.33 108.47 + 88.81 110.89 107.78 + 83.66 105.30 110.14 + 81.61 103.25 109.75 + 80.78 102.61 108.67 + 79.39 99.86 107.83 + 80.75 99.41 109.23 + 75.08 95.89 107.52 + 64.98 91.77 104.64 + 60.27 92.18 106.59 + 64.57 91.89 102.56 + 70.71 93.43 101.52 + 76.64 98.71 101.38 + 72.64 103.76 107.51 + 70.11 102.80 109.89 + 69.44 104.15 108.69 + 66.61 100.72 101.64 + 70.69 99.63 103.33 + 78.10 99.53 105.99 + 66.41 92.69 102.97 + 68.86 95.46 104.85 + 67.53 101.82 110.00 + 61.08 98.89 105.67 + 59.56 93.30 102.00 + 67.20 93.76 101.52 + 69.71 99.56 105.11 + 63.20 98.75 107.74 + 59.22 97.09 105.39 + 53.42 99.46 102.93 + 51.41 96.98 102.61 + 52.58 87.40 101.34 + 53.53 82.14 100.40 + 52.36 81.22 99.89 + 52.34 82.73 98.31 + 59.67 97.59 102.08 + 58.51 100.39 101.42 + 55.39 95.19 102.00 + 55.71 94.37 103.98 + 55.74 91.47 103.72 + 59.13 87.50 102.67 + 58.28 85.92 102.48 + 57.60 90.08 102.00 + 58.24 95.49 105.34 + 47.45 85.37 96.80 + 51.34 86.31 102.17 + 46.22 88.50 104.78 + 37.88 88.66 107.41 + 30.95 82.92 101.59 + 29.48 83.05 101.38 + 29.84 80.26 99.40 + 33.02 80.02 96.86 + 36.54 81.89 95.06 + 46.33 90.08 101.72 + 43.77 85.45 99.41 + 44.95 87.67 101.00 + 37.81 88.69 99.11 + 32.91 87.17 95.11 + 31.45 86.78 97.06 + 32.42 83.46 93.83 + 39.19 84.83 100.66 + 40.83 77.10 98.72 + 34.87 77.47 98.68 + 32.73 85.47 101.36 + 30.88 88.53 103.93 + 31.36 86.77 101.11 + 28.74 88.28 98.19 + 34.72 93.92 102.94 + 32.70 90.08 101.03 + 36.20 83.20 102.69 + 39.78 77.54 101.39 + 37.27 77.61 99.01 + 39.34 75.28 100.72 + 43.59 77.12 101.05 + 43.58 73.94 96.84 + 48.16 77.45 95.49 + 55.33 87.56 99.75 + 54.03 98.28 102.32 + 54.24 102.33 99.52 + 49.45 96.31 92.64 + 51.12 96.90 99.71 + 54.52 89.78 103.19 + 49.45 81.26 99.36 + 52.95 82.64 99.42 + 47.40 87.48 101.32 + 34.77 87.33 101.05 + 31.51 79.15 98.48 + 31.96 76.23 96.46 + 32.24 76.99 93.50 + 28.63 78.48 89.76 + 42.46 90.08 95.06 + 39.75 85.64 94.75 + 41.88 84.11 94.12 + 46.50 82.69 93.56 + 46.31 82.84 95.55 + 39.28 79.83 92.73 + 31.64 79.52 94.06 + 27.20 78.10 100.69 + 30.64 82.16 100.79 + 24.32 75.32 99.72 + 23.80 72.92 100.25 + 30.30 78.42 101.73 + 31.84 75.92 94.81 + 30.76 73.67 95.97 + 38.74 72.38 93.92 + 47.73 77.77 99.30 + 48.09 80.47 99.16 + 49.21 79.28 97.30 + 46.12 84.28 102.53 + 41.63 85.28 99.07 + 36.96 86.94 100.34 + 104.36 104.75 43.74 + 114.95 117.05 44.30 + 83.68 90.44 43.32 + 39.59 74.64 97.75 + 45.39 81.00 102.94 + 37.11 76.06 102.86 + 36.37 82.19 103.25 + 31.43 84.92 101.91 + 39.31 85.67 96.90 + 49.11 81.94 100.20 + 47.98 83.44 98.89 + 50.09 83.48 100.44 + 47.72 88.11 99.51 + 43.79 91.31 101.16 + 41.71 87.57 97.59 + 39.05 86.94 96.30 + 39.69 85.64 98.08 + 39.30 89.00 101.28 + 36.77 87.18 97.92 + 36.01 85.92 92.22 + 38.26 83.36 96.92 + 38.99 84.31 96.61 + 36.99 78.29 96.47 + 38.38 74.14 98.17 + 43.83 83.40 99.34 + 47.00 87.94 95.49 + 48.48 93.86 100.19 + 51.78 94.10 99.56 + 52.70 91.48 98.44 + 46.41 86.73 98.01 + 45.23 82.67 98.38 + 48.85 84.30 93.76 + 52.38 93.31 99.94 + 57.13 101.28 103.32 + 55.90 97.73 101.72 + 61.10 95.85 102.57 + 57.90 87.11 101.65 + 65.10 93.12 104.31 + 58.37 89.86 100.61 + 59.13 96.08 103.61 + 62.12 95.17 104.22 + 63.83 94.88 99.89 + 67.31 93.54 97.33 + 72.64 96.93 103.17 + 69.51 99.08 105.31 + 69.22 97.17 105.25 + 72.44 95.69 102.16 + 76.88 97.77 103.83 + 84.40 104.83 109.84 + 83.41 101.08 111.47 + 80.90 98.59 109.11 + 89.24 102.23 107.42 + 98.47 114.45 113.38 + 89.70 114.27 111.80 + 90.96 116.11 113.65 + 86.20 110.58 109.75 + 82.62 106.42 107.70 + 82.09 105.06 107.56 + 86.59 106.17 107.41 + 92.69 110.64 110.06 + 96.79 110.05 111.69 + 95.83 108.92 111.29 + 96.49 109.03 108.97 + 97.92 111.78 107.89 + 99.18 113.81 110.49 + 102.69 115.32 110.96 + 107.97 118.37 113.75 + 112.40 120.50 114.11 + 116.31 122.73 113.04 + 120.78 123.96 114.90 + 120.79 124.07 116.67 + 118.76 122.23 116.94 + 119.58 122.03 116.55 + 124.88 124.94 117.26 +sample_blocks: | + 2 2 128.00 128.00 128.00 + 2 18 128.00 128.00 128.00 + 2 34 128.00 128.00 128.00 + 2 50 162.67 139.00 14.22 + 2 66 128.00 128.00 128.00 + 2 82 71.11 130.67 130.67 + 2 98 99.56 113.56 113.56 + 2 114 0.00 0.00 120.33 + 2 130 121.78 120.56 113.78 + 2 146 166.00 155.22 85.33 + 2 162 128.00 128.00 128.00 + 2 178 128.00 128.00 128.00 + 2 194 128.00 128.00 128.00 + 18 2 128.00 128.00 128.00 + 18 18 128.00 128.00 128.00 + 18 34 109.33 98.89 42.67 + 18 50 128.00 128.00 128.00 + 18 66 128.00 128.00 128.00 + 18 82 0.00 2.33 93.44 + 18 98 0.00 58.22 73.89 + 18 114 42.67 42.67 114.78 + 18 130 14.22 76.33 132.89 + 18 146 85.33 95.22 95.22 + 18 162 128.00 128.00 128.00 + 18 178 0.00 89.22 131.11 + 18 194 203.00 176.11 0.00 + 34 2 128.00 128.00 128.00 + 34 18 42.67 132.33 132.33 + 34 34 128.00 128.00 128.00 + 34 50 0.00 58.11 78.67 + 34 66 128.00 128.00 128.00 + 34 82 42.67 77.22 77.22 + 34 98 128.00 128.00 128.00 + 34 114 0.00 28.11 107.56 + 34 130 0.00 86.22 86.22 + 34 146 99.56 99.56 111.11 + 34 162 113.78 124.78 124.78 + 34 178 0.00 128.67 128.67 + 34 194 128.00 128.00 128.00 + 50 2 177.56 159.33 42.67 + 50 18 128.00 128.00 128.00 + 50 34 0.00 0.00 132.78 + 50 50 0.00 118.11 118.11 + 50 66 0.00 72.00 113.89 + 50 82 0.00 27.22 95.00 + 50 98 39.67 67.11 67.11 + 50 114 0.00 6.11 109.89 + 50 130 42.67 104.22 134.00 + 50 146 0.00 46.33 87.67 + 50 162 0.00 106.67 106.67 + 50 178 128.00 128.00 128.00 + 50 194 128.00 128.00 128.00 + 66 2 128.00 128.00 128.00 + 66 18 0.00 88.56 88.56 + 66 34 56.89 56.89 122.56 + 66 50 0.00 78.22 78.22 + 66 66 127.67 138.00 25.11 + 66 82 0.00 40.78 77.78 + 66 98 0.00 42.44 93.67 + 66 114 0.00 27.67 103.67 + 66 130 0.00 89.56 89.56 + 66 146 81.22 99.11 78.67 + 66 162 113.78 113.78 113.78 + 66 178 71.11 87.44 92.44 + 66 194 99.56 123.11 123.11 + 82 2 128.00 128.00 128.00 + 82 18 85.33 85.33 128.00 + 82 34 99.56 110.44 110.44 + 82 50 0.00 69.67 94.89 + 82 66 0.00 78.00 104.89 + 82 82 0.00 83.78 83.78 + 82 98 42.67 120.11 120.11 + 82 114 160.89 151.78 24.11 + 82 130 160.33 143.33 20.44 + 82 146 0.00 85.67 107.33 + 82 162 56.89 84.22 84.22 + 82 178 128.00 128.00 128.00 + 82 194 128.00 128.00 128.00 + 98 2 128.00 128.00 128.00 + 98 18 128.00 128.00 128.00 + 98 34 28.44 80.78 100.00 + 98 50 56.89 62.22 101.11 + 98 66 0.00 96.00 110.78 + 98 82 0.00 40.33 93.33 + 98 98 0.00 92.33 92.33 + 98 114 0.00 123.67 123.67 + 98 130 0.00 34.67 102.00 + 98 146 0.00 118.89 118.89 + 98 162 14.22 121.67 121.67 + 98 178 85.33 85.33 119.56 + 98 194 128.00 128.00 128.00 + 114 2 128.00 128.00 128.00 + 114 18 14.22 55.22 68.89 + 114 34 85.33 96.33 102.56 + 114 50 0.00 116.67 116.67 + 114 66 0.00 67.33 67.33 + 114 82 0.00 119.22 119.22 + 114 98 0.00 54.56 116.78 + 114 114 28.44 67.89 124.67 + 114 130 0.00 65.67 78.33 + 114 146 0.00 32.44 107.67 + 114 162 0.00 48.44 78.00 + 114 178 99.56 115.44 115.44 + 114 194 128.00 128.00 128.00 + 130 2 128.00 128.00 128.00 + 130 18 56.89 93.44 93.44 + 130 34 85.33 116.67 116.67 + 130 50 38.56 86.33 65.89 + 130 66 0.00 113.67 113.67 + 130 82 99.56 104.44 104.44 + 130 98 0.00 118.00 118.00 + 130 114 0.00 76.44 84.33 + 130 130 77.11 91.00 48.00 + 130 146 0.00 49.67 81.22 + 130 162 0.00 26.78 106.22 + 130 178 128.00 128.00 128.00 + 130 194 128.00 128.00 128.00 + 146 2 128.00 128.00 128.00 + 146 18 0.00 14.11 77.78 + 146 34 0.00 62.67 62.67 + 146 50 0.00 13.22 90.11 + 146 66 0.00 75.44 118.33 + 146 82 113.78 126.00 126.00 + 146 98 0.00 94.44 109.33 + 146 114 28.44 33.11 68.78 + 146 130 0.00 29.44 52.33 + 146 146 14.22 64.56 68.22 + 146 162 0.00 0.00 115.56 + 146 178 71.11 71.11 103.56 + 146 194 173.22 160.89 71.11 + 162 2 128.00 128.00 128.00 + 162 18 28.44 94.22 89.44 + 162 34 85.33 105.33 118.00 + 162 50 128.00 128.00 128.00 + 162 66 14.22 20.00 80.67 + 162 82 71.11 111.11 111.11 + 162 98 113.78 118.22 118.22 + 162 114 56.89 92.00 92.00 + 162 130 99.56 110.89 110.89 + 162 146 28.44 78.78 78.78 + 162 162 0.00 67.67 93.56 + 162 178 128.00 128.00 128.00 + 162 194 128.00 128.00 128.00 + 178 2 208.00 187.00 42.67 + 178 18 128.00 128.00 128.00 + 178 34 56.89 99.89 99.89 + 178 50 128.00 128.00 128.00 + 178 66 0.00 0.00 104.78 + 178 82 85.33 102.44 102.44 + 178 98 128.00 128.00 128.00 + 178 114 0.00 48.33 104.44 + 178 130 71.11 71.11 101.56 + 178 146 0.00 88.56 88.56 + 178 162 128.00 128.00 128.00 + 178 178 128.00 128.00 128.00 + 178 194 128.00 128.00 128.00 + 194 2 128.00 128.00 128.00 + 194 18 128.00 128.00 128.00 + 194 34 128.00 128.00 128.00 + 194 50 155.33 139.00 42.67 + 194 66 71.11 108.56 108.56 + 194 82 128.00 128.00 128.00 + 194 98 128.00 128.00 128.00 + 194 114 14.22 94.78 94.78 + 194 130 0.00 59.56 86.56 + 194 146 128.00 128.00 128.00 + 194 162 128.00 128.00 128.00 + 194 178 128.00 128.00 128.00 + 194 194 128.00 128.00 128.00 +... diff --git a/unittest/graphics/tests/dump-modify-specular.yaml b/unittest/graphics/tests/dump-modify-specular.yaml new file mode 100644 index 00000000000..f216a728a76 --- /dev/null +++ b/unittest/graphics/tests/dump-modify-specular.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 14:37:33 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} type type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 + dump_modify viz backcolor gray specular tight +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 115.01 123.50 113.70 + 111.04 118.34 115.64 + 111.44 117.31 116.31 + 116.63 120.78 115.66 + 115.44 119.69 112.69 + 116.44 121.42 112.19 + 120.42 124.48 112.80 + 124.19 127.88 115.97 + 123.84 126.36 114.94 + 120.81 125.56 114.84 + 120.18 126.38 116.04 + 119.98 125.72 116.09 + 109.53 120.39 112.25 + 97.31 115.83 111.55 + 87.67 117.44 112.56 + 87.81 115.64 107.78 + 87.61 108.04 99.32 + 85.59 100.12 100.86 + 89.80 104.17 109.42 + 84.61 104.59 111.83 + 72.27 96.61 112.03 + 68.95 101.29 115.53 + 64.02 98.94 111.55 + 66.31 99.20 106.95 + 68.83 99.71 101.52 + 71.65 102.09 103.94 + 77.95 104.44 110.17 + 73.45 101.35 110.14 + 62.48 91.37 106.28 + 62.27 89.31 108.08 + 58.82 87.00 103.11 + 57.05 88.05 100.76 + 61.40 97.41 103.66 + 64.64 102.70 107.36 + 60.40 98.61 105.11 + 62.85 95.08 99.53 + 70.30 97.50 100.74 + 65.56 96.37 103.58 + 57.70 95.53 103.66 + 54.69 95.48 104.96 + 53.62 92.36 103.14 + 55.10 90.63 99.53 + 47.24 87.11 98.84 + 56.34 87.66 94.56 + 54.63 87.22 88.11 + 49.83 90.20 95.28 + 45.09 87.60 105.23 + 36.27 81.00 103.79 + 37.37 78.18 100.81 + 40.12 80.19 96.96 + 50.45 90.16 99.25 + 56.81 91.90 100.42 + 46.32 84.47 90.63 + 49.64 86.97 89.64 + 54.45 85.42 86.64 + 59.16 95.17 92.42 + 63.02 102.08 96.33 + 64.27 103.17 100.30 + 65.85 98.75 98.66 + 63.15 90.44 95.91 + 56.98 84.61 96.69 + 56.01 82.66 90.56 + 56.30 90.05 94.53 + 53.00 96.25 97.00 + 50.19 95.75 91.97 + 48.79 91.20 89.14 + 55.80 92.43 90.72 + 55.52 94.43 102.70 + 53.05 94.56 100.72 + 59.48 88.74 97.47 + 52.71 77.70 88.22 + 53.20 75.33 88.89 + 49.60 75.86 94.45 + 42.94 77.72 93.27 + 40.14 87.80 93.61 + 42.03 92.12 96.84 + 41.78 82.56 95.33 + 42.20 78.67 94.31 + 48.25 81.31 92.41 + 56.19 92.17 94.56 + 55.71 100.36 98.58 + 52.09 97.64 101.72 + 45.68 84.30 97.23 + 46.97 83.68 95.17 + 50.12 83.89 94.39 + 49.98 90.86 101.70 + 43.55 92.80 104.50 + 43.43 90.56 104.65 + 26.59 80.69 99.75 + 23.27 74.81 97.84 + 23.51 74.84 98.17 + 26.27 73.97 100.89 + 24.14 73.69 97.03 + 31.20 81.31 97.76 + 33.05 82.26 97.61 + 31.82 78.86 97.61 + 33.12 80.19 102.36 + 39.70 87.28 107.35 + 43.27 86.35 106.37 + 43.17 77.39 97.36 + 47.78 84.58 102.83 + 46.45 79.89 105.75 + 40.11 80.65 107.38 + 29.84 82.31 105.92 + 27.78 85.56 109.67 + 19.61 77.86 98.37 + 22.67 70.37 91.03 + 25.96 68.56 96.14 + 24.84 63.30 95.47 + 32.35 64.06 99.78 + 41.04 68.34 95.51 + 38.73 69.25 97.33 + 34.55 88.94 103.91 + 33.23 95.11 105.18 + 28.41 84.16 95.84 + 27.75 78.67 95.13 + 33.94 76.98 93.12 + 37.66 87.84 96.69 + 40.01 83.02 95.31 + 40.52 79.93 98.61 + 43.68 77.08 98.81 + 43.73 79.39 101.35 + 31.68 77.38 101.44 + 25.44 76.41 103.69 + 23.52 75.30 99.50 + 28.32 73.02 95.66 + 29.08 74.55 92.94 + 26.48 74.97 93.64 + 27.00 80.03 93.55 + 31.70 85.82 103.61 + 39.05 86.42 99.83 + 39.45 88.67 100.95 + 38.77 85.28 101.78 + 42.31 81.08 99.68 + 51.33 83.92 101.45 + 43.20 85.97 98.38 + 42.00 93.73 104.60 + 43.26 96.33 106.97 + 40.16 85.27 99.70 + 38.45 76.81 96.17 + 40.23 76.78 103.53 + 31.41 76.92 102.59 + 31.92 75.39 93.91 + 29.71 77.54 92.73 + 38.58 83.62 97.22 + 44.09 88.22 96.33 + 53.19 88.66 96.25 + 52.71 88.44 96.20 + 51.12 91.43 101.88 + 51.30 88.91 101.81 + 50.83 92.56 106.50 + 51.90 92.62 101.78 + 50.63 93.91 105.85 + 44.78 87.53 102.58 + 37.95 86.91 104.95 + 35.95 84.31 97.72 + 36.66 82.16 98.53 + 43.34 81.99 97.23 + 54.56 82.02 97.90 + 60.17 88.61 102.09 + 66.44 97.43 103.86 + 70.03 102.10 107.92 + 71.41 107.94 107.16 + 65.92 104.87 104.80 + 65.08 99.31 105.67 + 63.07 99.62 109.09 + 62.98 98.91 107.44 + 64.25 93.06 100.59 + 71.25 94.48 99.30 + 73.94 94.77 98.83 + 76.58 100.89 111.06 + 69.64 103.33 111.99 + 66.91 105.66 112.17 + 70.44 102.44 106.64 + 77.33 99.13 99.31 + 88.75 104.61 103.94 + 98.40 116.61 114.42 + 98.08 118.47 116.52 + 98.91 115.14 113.20 + 102.26 113.55 110.39 + 98.06 111.09 106.33 + 102.68 117.36 106.48 + 101.72 121.31 108.02 + 103.80 121.75 108.79 + 105.89 119.53 109.67 + 107.08 117.21 110.83 + 111.55 115.60 110.67 + 110.58 115.35 110.07 + 107.58 115.59 109.55 + 112.08 119.02 109.69 + 115.43 121.99 110.47 + 117.00 121.03 108.92 + 118.16 120.64 109.66 + 114.67 123.22 113.08 + 110.40 119.80 112.27 + 108.95 117.50 111.10 + 111.59 120.41 115.14 + 114.29 121.94 115.08 + 122.24 125.55 112.00 + 127.48 128.42 114.05 +col_means: | + 124.06 128.73 118.42 + 121.19 128.06 117.47 + 122.73 128.16 116.86 + 118.72 125.58 116.54 + 109.51 119.41 117.13 + 106.11 117.17 117.75 + 102.64 118.67 117.11 + 100.12 117.91 112.87 + 98.35 114.24 112.09 + 97.27 113.16 112.67 + 92.97 108.49 111.53 + 91.64 104.71 108.72 + 94.86 104.86 106.98 + 95.96 110.56 109.55 + 93.03 109.27 107.26 + 93.91 110.68 107.19 + 93.92 114.61 108.75 + 88.84 111.16 108.14 + 83.69 105.33 110.17 + 81.75 103.39 109.90 + 81.06 103.16 109.31 + 79.42 99.95 107.91 + 80.97 99.63 109.45 + 75.13 96.05 107.69 + 65.08 92.08 105.04 + 60.60 92.53 106.94 + 64.94 92.27 102.94 + 70.73 93.70 101.92 + 76.65 98.77 101.42 + 72.88 104.02 107.77 + 70.31 103.15 110.24 + 69.47 104.37 108.97 + 66.84 100.96 101.86 + 70.89 99.86 103.56 + 78.14 99.81 106.42 + 66.42 92.74 103.02 + 69.06 95.67 105.07 + 67.94 102.39 110.58 + 61.61 99.59 106.42 + 59.57 93.31 102.03 + 67.42 94.01 101.77 + 69.75 99.83 105.55 + 63.45 99.03 108.02 + 59.37 97.27 105.57 + 53.58 99.81 103.31 + 51.62 97.38 103.02 + 52.61 87.44 101.39 + 53.76 82.39 100.65 + 52.55 81.66 100.47 + 52.40 82.81 98.39 + 59.92 97.85 102.33 + 58.72 100.81 101.89 + 55.60 95.56 102.35 + 55.90 94.56 104.19 + 55.96 91.75 104.01 + 59.16 87.75 103.07 + 58.36 86.00 102.57 + 57.81 90.33 102.23 + 58.35 95.83 105.76 + 47.53 85.56 96.98 + 51.73 86.72 102.58 + 46.45 88.81 105.08 + 38.24 89.17 107.94 + 31.32 83.30 101.96 + 29.82 83.41 101.73 + 30.16 80.73 99.98 + 33.24 80.31 97.14 + 36.71 82.06 95.25 + 46.53 90.41 102.03 + 43.78 85.69 99.73 + 45.27 88.02 101.35 + 38.17 89.08 99.50 + 33.15 87.67 95.72 + 31.69 87.08 97.38 + 32.66 83.71 94.08 + 39.23 84.98 100.81 + 40.88 77.25 98.86 + 35.12 77.73 98.95 + 33.26 86.03 101.94 + 31.30 89.09 104.59 + 31.82 87.23 101.58 + 29.15 88.72 98.62 + 35.12 94.44 103.47 + 33.12 90.58 101.53 + 36.29 83.30 102.79 + 40.03 77.81 101.66 + 37.63 78.11 99.60 + 39.74 75.70 101.13 + 43.73 77.28 101.20 + 43.62 74.12 97.03 + 48.34 77.69 95.72 + 55.41 87.65 99.83 + 54.16 98.44 102.48 + 54.49 102.71 99.97 + 49.66 96.56 92.88 + 51.22 97.06 99.86 + 54.70 90.13 103.58 + 49.52 81.37 99.47 + 53.22 82.91 99.69 + 47.54 87.66 101.50 + 34.92 87.64 101.41 + 32.01 79.66 99.00 + 32.25 76.55 96.77 + 32.60 77.47 94.06 + 28.86 78.73 90.01 + 42.55 90.18 95.16 + 40.23 86.17 95.30 + 42.45 84.81 94.86 + 46.73 82.92 93.81 + 46.40 83.05 95.75 + 39.65 80.35 93.33 + 31.96 79.86 94.30 + 27.54 78.44 101.04 + 30.68 82.27 100.91 + 24.41 75.53 99.95 + 24.02 73.16 100.51 + 30.73 78.86 102.19 + 32.15 76.36 95.34 + 30.93 73.86 96.15 + 39.01 72.64 94.20 + 48.04 78.18 99.70 + 48.49 80.97 99.67 + 49.49 79.58 97.59 + 46.37 84.56 102.79 + 41.73 85.50 99.39 + 37.25 87.34 100.73 + 104.42 104.81 43.80 + 114.97 117.12 44.39 + 83.69 90.44 43.33 + 39.81 74.87 97.98 + 45.47 81.08 103.02 + 37.62 76.57 103.39 + 36.67 82.51 103.58 + 31.61 85.23 102.33 + 39.51 85.89 97.11 + 49.20 82.05 100.30 + 48.14 83.61 99.06 + 50.30 83.77 100.73 + 48.13 88.58 99.98 + 44.23 91.79 101.64 + 41.83 87.83 97.95 + 39.31 87.20 96.56 + 39.87 85.83 98.28 + 39.50 89.34 101.63 + 36.87 87.34 98.08 + 36.34 86.28 92.56 + 38.30 83.42 97.00 + 39.35 84.78 97.19 + 37.35 78.66 96.84 + 38.68 74.44 98.51 + 44.09 83.78 99.76 + 47.19 88.17 95.72 + 48.88 94.27 100.61 + 51.94 94.28 99.74 + 52.91 91.81 98.85 + 46.62 86.95 98.22 + 45.41 82.89 98.58 + 49.06 84.70 94.22 + 52.51 93.48 100.11 + 57.70 101.87 103.92 + 56.10 97.98 101.97 + 61.15 96.02 102.78 + 57.95 87.17 101.72 + 65.19 93.22 104.41 + 58.57 90.28 101.11 + 59.51 96.58 104.11 + 62.20 95.28 104.33 + 63.90 95.02 100.03 + 67.44 93.89 97.80 + 72.81 97.11 103.35 + 69.64 99.23 105.45 + 69.36 97.44 105.62 + 72.47 95.73 102.19 + 77.06 97.95 104.02 + 84.78 105.30 110.31 + 83.41 101.19 111.58 + 81.06 98.77 109.28 + 89.34 102.35 107.53 + 98.47 114.57 113.59 + 89.96 114.55 112.08 + 91.00 116.16 113.70 + 86.20 110.68 109.84 + 82.92 106.81 108.09 + 82.14 105.11 107.61 + 86.61 106.20 107.44 + 92.81 110.88 110.39 + 96.96 110.26 111.89 + 95.99 109.08 111.45 + 96.56 109.27 109.20 + 97.94 111.97 108.14 + 99.18 113.81 110.49 + 102.79 115.43 111.07 + 107.99 118.63 114.17 + 112.40 120.53 114.13 + 116.31 122.73 113.04 + 120.82 124.17 115.12 + 120.83 124.27 116.90 + 118.83 122.30 117.02 + 119.58 122.06 116.57 + 124.88 125.17 117.65 +sample_blocks: | + 2 2 128.00 128.00 128.00 + 2 18 128.00 128.00 128.00 + 2 34 128.00 128.00 128.00 + 2 50 162.67 139.00 14.22 + 2 66 128.00 128.00 128.00 + 2 82 72.78 132.33 132.33 + 2 98 99.56 113.56 113.56 + 2 114 0.22 0.22 120.56 + 2 130 121.78 120.56 113.78 + 2 146 166.00 155.22 85.33 + 2 162 128.00 128.00 128.00 + 2 178 128.00 128.00 128.00 + 2 194 128.00 128.00 128.00 + 18 2 128.00 128.00 128.00 + 18 18 128.00 128.00 128.00 + 18 34 109.33 98.89 42.67 + 18 50 128.00 128.00 128.00 + 18 66 128.00 128.00 128.00 + 18 82 0.00 2.33 93.44 + 18 98 0.00 58.22 73.89 + 18 114 43.33 43.33 115.44 + 18 130 14.22 76.33 132.89 + 18 146 85.33 95.22 95.22 + 18 162 128.00 128.00 128.00 + 18 178 2.56 91.78 133.67 + 18 194 203.00 179.00 3.11 + 34 2 128.00 128.00 128.00 + 34 18 42.78 132.44 132.44 + 34 34 128.00 128.00 128.00 + 34 50 0.00 58.11 78.67 + 34 66 128.00 128.00 128.00 + 34 82 42.67 77.22 77.22 + 34 98 128.00 128.00 128.00 + 34 114 0.00 28.11 107.56 + 34 130 0.11 86.33 86.33 + 34 146 99.56 99.56 111.11 + 34 162 113.78 124.78 124.78 + 34 178 2.33 131.11 131.11 + 34 194 128.00 128.00 128.00 + 50 2 177.56 162.56 47.00 + 50 18 128.00 128.00 128.00 + 50 34 0.00 0.00 132.89 + 50 50 0.00 118.11 118.11 + 50 66 1.00 73.11 115.00 + 50 82 1.78 29.00 96.78 + 50 98 39.67 67.11 67.11 + 50 114 0.78 6.89 110.78 + 50 130 48.11 109.67 139.56 + 50 146 0.00 46.33 87.67 + 50 162 0.00 106.67 106.67 + 50 178 128.00 128.00 128.00 + 50 194 128.00 128.00 128.00 + 66 2 128.00 128.00 128.00 + 66 18 0.00 88.56 88.56 + 66 34 56.89 56.89 122.56 + 66 50 0.00 78.22 78.22 + 66 66 127.67 140.89 29.89 + 66 82 0.00 40.78 77.78 + 66 98 0.00 42.44 93.67 + 66 114 0.00 27.67 103.67 + 66 130 0.00 89.56 89.56 + 66 146 81.22 99.11 78.67 + 66 162 113.78 113.78 113.78 + 66 178 71.11 87.44 92.44 + 66 194 99.56 123.11 123.11 + 82 2 128.00 128.00 128.00 + 82 18 85.33 85.33 128.00 + 82 34 99.56 110.44 110.44 + 82 50 0.00 69.67 94.89 + 82 66 0.00 78.00 104.89 + 82 82 0.00 83.78 83.78 + 82 98 42.67 120.11 120.11 + 82 114 160.89 155.56 28.11 + 82 130 160.33 143.33 20.44 + 82 146 1.56 87.33 109.00 + 82 162 56.89 84.22 84.22 + 82 178 128.00 128.00 128.00 + 82 194 128.00 128.00 128.00 + 98 2 128.00 128.00 128.00 + 98 18 128.00 128.00 128.00 + 98 34 28.44 80.78 100.00 + 98 50 56.89 62.22 101.11 + 98 66 1.00 97.00 111.78 + 98 82 0.00 40.33 93.33 + 98 98 0.00 92.33 92.33 + 98 114 0.11 123.89 123.89 + 98 130 0.00 34.67 102.00 + 98 146 0.22 119.11 119.11 + 98 162 14.22 121.67 121.67 + 98 178 85.33 85.33 119.56 + 98 194 128.00 128.00 128.00 + 114 2 128.00 128.00 128.00 + 114 18 14.22 55.22 68.89 + 114 34 85.33 96.33 102.56 + 114 50 4.22 120.89 120.89 + 114 66 0.00 67.33 67.33 + 114 82 0.00 119.22 119.22 + 114 98 0.33 54.89 117.11 + 114 114 28.44 67.89 124.67 + 114 130 0.00 65.67 78.33 + 114 146 0.00 32.44 107.67 + 114 162 0.00 48.44 78.00 + 114 178 99.56 115.44 115.44 + 114 194 128.00 128.00 128.00 + 130 2 128.00 128.00 128.00 + 130 18 56.89 93.44 93.44 + 130 34 85.33 116.67 116.67 + 130 50 38.56 86.33 65.89 + 130 66 0.00 113.67 113.67 + 130 82 99.56 104.44 104.44 + 130 98 0.11 118.11 118.11 + 130 114 0.00 76.44 84.33 + 130 130 77.11 91.00 48.00 + 130 146 0.22 49.89 81.44 + 130 162 0.00 26.78 106.22 + 130 178 128.00 128.00 128.00 + 130 194 128.00 128.00 128.00 + 146 2 128.00 128.00 128.00 + 146 18 0.00 14.11 77.78 + 146 34 0.00 62.67 62.67 + 146 50 0.00 13.22 90.11 + 146 66 0.00 75.44 118.33 + 146 82 113.78 126.00 126.00 + 146 98 0.00 94.44 109.33 + 146 114 28.44 33.11 68.78 + 146 130 0.00 29.44 52.33 + 146 146 14.22 64.56 68.22 + 146 162 0.11 0.11 115.67 + 146 178 71.11 71.11 103.56 + 146 194 173.22 161.44 71.56 + 162 2 128.00 128.00 128.00 + 162 18 28.44 94.22 89.44 + 162 34 85.33 105.33 118.00 + 162 50 128.00 128.00 128.00 + 162 66 14.22 20.00 80.67 + 162 82 71.11 111.11 111.11 + 162 98 113.78 118.22 118.22 + 162 114 56.89 92.00 92.00 + 162 130 99.56 110.89 110.89 + 162 146 28.44 78.78 78.78 + 162 162 0.00 67.67 93.56 + 162 178 128.00 128.00 128.00 + 162 194 128.00 128.00 128.00 + 178 2 208.00 189.67 47.33 + 178 18 128.00 128.00 128.00 + 178 34 56.89 99.89 99.89 + 178 50 128.00 128.00 128.00 + 178 66 0.00 0.00 104.78 + 178 82 85.33 102.44 102.44 + 178 98 128.00 128.00 128.00 + 178 114 0.00 48.33 104.44 + 178 130 71.11 71.11 101.56 + 178 146 0.00 88.56 88.56 + 178 162 128.00 128.00 128.00 + 178 178 128.00 128.00 128.00 + 178 194 128.00 128.00 128.00 + 194 2 128.00 128.00 128.00 + 194 18 128.00 128.00 128.00 + 194 34 128.00 128.00 128.00 + 194 50 155.33 140.67 44.22 + 194 66 71.11 108.56 108.56 + 194 82 128.00 128.00 128.00 + 194 98 128.00 128.00 128.00 + 194 114 14.22 94.78 94.78 + 194 130 0.00 59.56 86.56 + 194 146 128.00 128.00 128.00 + 194 162 128.00 128.00 128.00 + 194 178 128.00 128.00 128.00 + 194 194 128.00 128.00 128.00 +... diff --git a/unittest/graphics/tests/dump-modify-ssaosamples.yaml b/unittest/graphics/tests/dump-modify-ssaosamples.yaml new file mode 100644 index 00000000000..452c78b3199 --- /dev/null +++ b/unittest/graphics/tests/dump-modify-ssaosamples.yaml @@ -0,0 +1,603 @@ +--- +lammps_version: 4 Jul 2026 +tags: graphics +date_generated: Fri Jul 24 21:20:48 2026 +epsilon_projection: 0.5 +epsilon_blocks: 2 +nprocs: 1 +prerequisites: | + atom full + pair lj/charmm/coul/charmm + bond harmonic + angle charmm + dihedral charmm + improper harmonic +setup_commands: | + units real + atom_style full + pair_style lj/charmm/coul/charmm 8.0 10.0 + bond_style harmonic + angle_style charmm + dihedral_style charmm + improper_style harmonic + read_data ${input_dir}/data.peptide + neighbor 2.0 bin + dump viz all image 1 ${imagefile} element type size 200 200 zoom 1.5 view 60 30 shiny 0.2 box yes 0.02 bond atom 0.3 fsaa yes ssao yes 314123 0.7 + dump_modify viz ssaosamples 8 backcolor gray boxcolor yellow element C C O H N C C C O H H S O H acolor 1 silver +run_commands: | + run 0 +image_size: 200 200 +sampling: 3 16 +row_means: | + 137.69 135.44 122.43 + 136.39 130.82 120.99 + 138.20 128.78 119.11 + 138.74 129.85 116.89 + 138.77 130.86 117.45 + 135.84 130.17 116.77 + 133.99 131.25 117.60 + 134.14 133.75 120.45 + 132.88 132.09 118.92 + 133.56 131.24 118.05 + 133.97 131.24 117.83 + 134.69 132.06 118.56 + 136.16 130.99 117.48 + 139.87 133.19 119.55 + 145.02 137.32 123.97 + 144.28 137.11 123.46 + 139.56 132.72 118.84 + 136.32 125.11 111.81 + 134.34 121.53 108.84 + 135.77 122.19 112.17 + 135.87 118.91 113.00 + 138.26 121.71 117.81 + 140.09 123.38 118.50 + 138.98 124.70 118.55 + 135.44 124.94 117.50 + 133.88 125.75 117.78 + 134.94 126.44 118.34 + 138.37 126.05 117.86 + 140.29 122.73 114.77 + 140.46 117.25 109.20 + 140.32 117.34 108.72 + 137.79 116.45 108.08 + 135.51 120.92 112.58 + 136.03 126.14 117.97 + 137.75 127.12 118.74 + 133.86 124.23 115.88 + 133.97 122.74 113.34 + 136.24 122.44 113.60 + 133.78 119.51 111.53 + 130.38 116.44 108.22 + 130.31 113.10 104.95 + 130.36 113.86 106.06 + 129.33 112.45 104.55 + 128.36 109.23 101.16 + 122.30 106.17 98.29 + 123.54 109.41 102.30 + 127.47 108.53 102.81 + 129.30 106.86 101.59 + 133.57 107.53 99.93 + 133.05 108.70 98.04 + 137.28 114.62 100.39 + 141.25 121.08 106.78 + 136.93 117.81 103.34 + 132.44 113.05 98.32 + 128.09 110.98 96.26 + 125.95 112.26 97.47 + 128.00 116.80 100.80 + 131.03 119.95 103.05 + 133.03 119.05 102.61 + 128.78 112.62 97.39 + 125.90 105.49 90.33 + 125.91 103.83 88.87 + 130.10 106.41 91.44 + 133.17 113.81 98.72 + 128.05 113.14 98.37 + 121.23 110.63 95.87 + 123.97 115.17 100.11 + 130.43 117.11 102.36 + 133.42 119.33 104.38 + 135.70 118.82 103.91 + 130.12 107.66 92.85 + 124.53 101.50 86.77 + 125.76 100.75 85.78 + 127.92 102.92 88.34 + 128.76 109.84 95.10 + 128.66 115.14 99.84 + 125.92 110.25 94.68 + 124.53 104.00 89.25 + 121.76 102.75 88.03 + 123.58 107.80 92.75 + 128.47 116.83 102.00 + 133.97 122.43 107.65 + 137.49 118.94 103.87 + 133.79 114.64 99.90 + 124.98 105.86 92.02 + 123.22 105.58 96.14 + 124.56 110.78 105.87 + 127.07 114.28 111.37 + 130.18 114.24 111.33 + 127.02 105.61 102.70 + 123.33 100.19 97.28 + 121.61 96.92 94.02 + 119.61 96.29 93.38 + 116.62 98.64 95.73 + 121.29 105.21 102.30 + 119.83 103.04 100.13 + 123.06 106.51 103.61 + 127.36 111.19 108.27 + 130.39 113.17 110.25 + 130.49 110.88 107.96 + 125.17 110.28 107.39 + 124.23 105.75 102.84 + 128.48 106.81 103.91 + 130.76 109.94 107.12 + 135.75 112.24 109.33 + 135.16 113.49 110.56 + 132.43 109.89 107.00 + 130.00 103.81 100.89 + 126.45 98.58 95.68 + 121.27 93.73 90.83 + 116.67 88.32 85.41 + 112.94 85.75 82.72 + 112.25 93.02 90.11 + 117.19 105.88 102.95 + 119.47 108.17 105.27 + 122.29 109.11 106.12 + 123.08 107.91 104.59 + 124.58 110.65 107.25 + 127.83 111.72 108.16 + 130.25 110.78 106.79 + 127.56 106.41 102.97 + 130.48 106.20 103.31 + 128.34 103.90 101.00 + 127.55 103.52 100.60 + 130.01 105.69 102.78 + 130.97 104.83 101.45 + 128.78 104.60 100.53 + 125.45 103.67 100.17 + 120.29 101.38 98.45 + 121.78 106.77 103.86 + 125.94 112.53 109.39 + 127.78 111.18 107.81 + 125.27 107.44 104.30 + 119.60 102.12 99.02 + 119.64 102.81 99.53 + 121.78 106.51 103.44 + 125.53 112.67 109.32 + 131.29 118.53 114.58 + 134.49 117.45 112.93 + 134.81 110.80 105.81 + 134.75 106.84 102.56 + 136.77 108.22 104.91 + 129.24 104.94 101.58 + 126.09 107.15 104.08 + 124.36 107.92 104.44 + 125.55 109.65 104.39 + 126.22 112.00 104.84 + 125.30 109.96 100.58 + 124.70 107.42 97.66 + 126.68 109.86 102.02 + 129.81 113.66 108.12 + 128.22 114.16 110.17 + 129.54 115.69 111.10 + 135.19 117.17 111.47 + 142.12 122.39 115.99 + 145.25 124.78 116.98 + 144.60 122.36 114.93 + 140.97 122.39 115.84 + 134.38 116.28 110.61 + 127.56 108.80 104.47 + 126.45 112.94 107.87 + 128.10 118.78 111.84 + 131.00 125.25 116.62 + 130.84 125.89 116.70 + 131.21 122.05 113.30 + 140.22 127.92 118.93 + 143.16 129.02 120.19 + 139.65 122.03 112.89 + 135.91 119.93 109.87 + 130.66 118.31 108.61 + 134.44 118.23 110.16 + 139.93 123.98 117.05 + 145.57 133.60 126.29 + 146.16 134.04 125.15 + 140.03 129.29 119.80 + 132.29 123.28 114.11 + 128.84 124.81 116.44 + 133.16 129.57 121.99 + 137.85 131.07 121.32 + 140.36 131.28 118.81 + 138.21 130.06 117.24 + 136.59 130.77 116.99 + 139.52 136.69 120.75 + 140.16 139.56 123.53 + 140.26 137.72 122.55 + 138.31 134.06 119.50 + 137.47 129.44 114.30 + 136.99 127.12 110.61 + 136.84 127.31 110.89 + 136.04 129.17 112.59 + 134.52 130.84 114.48 + 133.37 131.65 115.33 + 133.15 129.60 112.94 + 134.84 131.18 114.64 + 137.81 131.90 115.55 + 137.98 131.19 115.56 + 137.87 132.37 120.22 + 138.16 134.40 122.80 + 136.85 134.66 119.65 + 135.56 135.21 118.53 +col_means: | + 134.76 134.76 123.81 + 136.24 136.24 124.62 + 135.31 135.31 123.98 + 134.21 131.99 121.75 + 137.34 130.56 122.14 + 141.35 133.02 124.53 + 142.74 135.96 127.16 + 139.75 134.36 124.50 + 140.03 132.06 121.81 + 141.68 132.30 122.21 + 142.38 129.74 119.77 + 142.31 127.61 117.19 + 138.51 124.48 113.18 + 137.17 124.72 113.45 + 134.25 122.87 111.92 + 135.96 129.82 119.10 + 136.34 130.13 119.85 + 136.41 128.97 119.25 + 138.00 127.83 118.83 + 138.18 125.53 116.20 + 138.18 123.61 114.39 + 136.43 122.70 113.20 + 133.16 118.86 109.14 + 132.87 114.77 104.97 + 136.28 115.44 104.74 + 136.04 115.45 105.97 + 132.47 113.90 104.06 + 129.43 114.73 104.12 + 130.72 119.59 109.58 + 137.19 124.44 115.26 + 140.49 128.03 119.02 + 137.96 128.61 119.41 + 133.47 125.52 116.50 + 130.99 121.50 112.07 + 128.46 116.81 107.45 + 125.30 110.98 101.08 + 130.36 114.45 104.35 + 138.65 123.46 114.50 + 140.28 123.05 113.72 + 137.48 120.20 111.01 + 130.50 116.28 107.33 + 129.75 118.03 108.78 + 132.38 119.64 110.50 + 134.19 123.06 113.50 + 136.03 126.06 117.02 + 134.34 119.92 110.57 + 134.25 111.72 102.55 + 134.44 107.64 98.44 + 130.87 103.89 94.56 + 127.92 106.98 97.58 + 129.07 119.33 109.53 + 129.63 121.61 112.47 + 130.43 119.08 110.46 + 129.19 117.08 109.71 + 125.98 110.55 104.03 + 127.52 108.39 101.82 + 127.44 110.16 103.93 + 129.97 112.67 105.92 + 128.50 112.91 106.90 + 125.78 108.55 102.97 + 130.85 111.94 106.22 + 131.16 112.02 108.19 + 130.21 111.14 107.80 + 129.72 110.28 107.31 + 131.06 113.84 110.44 + 129.21 110.64 106.12 + 128.66 108.98 101.88 + 126.50 110.11 103.28 + 128.10 112.83 107.22 + 128.26 110.88 105.28 + 126.97 111.99 107.08 + 126.80 110.41 103.22 + 129.79 113.12 105.61 + 134.14 117.89 111.09 + 136.85 118.05 112.25 + 132.21 110.66 107.03 + 125.21 101.59 98.25 + 118.50 97.56 94.56 + 119.45 104.78 101.38 + 120.77 106.98 103.94 + 122.39 108.48 105.59 + 122.22 111.55 108.36 + 129.42 119.66 116.70 + 128.70 116.43 113.37 + 128.84 109.34 106.33 + 129.28 106.53 103.43 + 127.61 103.52 100.34 + 132.16 105.09 102.19 + 129.17 103.09 99.89 + 124.19 100.90 97.93 + 122.46 104.58 101.31 + 123.39 109.72 106.48 + 127.88 117.56 114.38 + 126.97 118.21 115.04 + 127.45 115.60 112.68 + 132.24 113.78 110.56 + 133.10 111.39 108.41 + 129.67 106.83 103.75 + 125.21 103.16 100.14 + 127.28 108.66 105.54 + 130.38 112.92 109.74 + 129.62 109.72 106.78 + 126.31 102.53 99.58 + 121.60 100.95 97.94 + 119.70 105.77 102.28 + 119.58 110.62 107.00 + 119.66 107.24 103.83 + 123.02 106.83 103.00 + 124.48 102.13 98.34 + 128.66 104.42 100.28 + 127.40 104.66 100.64 + 128.00 106.85 103.81 + 127.36 105.83 103.08 + 128.13 106.42 103.60 + 131.58 106.75 103.55 + 137.56 111.64 108.67 + 136.15 111.59 108.53 + 129.51 107.39 104.36 + 124.62 100.23 97.11 + 118.10 95.80 92.62 + 117.92 97.85 94.92 + 115.48 97.44 94.25 + 116.92 100.80 97.81 + 117.58 101.75 98.65 + 114.77 100.24 97.22 + 114.44 100.36 97.31 + 155.30 144.36 45.97 + 188.78 179.28 50.87 + 167.69 158.81 44.85 + 119.72 96.19 91.13 + 124.00 101.98 96.92 + 125.51 103.86 98.52 + 128.40 109.49 104.33 + 126.48 108.42 103.70 + 127.28 111.52 106.97 + 128.44 112.37 107.55 + 125.53 111.48 106.58 + 123.81 107.41 101.96 + 122.66 108.22 101.80 + 128.85 113.64 107.07 + 131.38 113.80 107.27 + 128.98 113.99 107.59 + 125.73 111.76 105.14 + 124.33 111.06 104.57 + 120.67 107.86 100.42 + 117.12 102.27 94.19 + 120.85 102.76 93.99 + 122.63 103.47 93.91 + 125.78 103.38 93.38 + 130.06 106.58 96.45 + 130.53 111.34 101.33 + 133.12 118.53 108.40 + 136.53 124.36 114.68 + 138.62 126.70 116.75 + 138.34 123.21 112.93 + 133.53 113.39 102.89 + 128.19 105.31 94.47 + 122.84 106.38 96.00 + 128.03 117.58 107.46 + 134.74 126.34 116.72 + 135.65 125.23 116.58 + 133.04 118.58 110.44 + 128.65 108.58 101.05 + 127.69 107.06 96.80 + 126.39 107.53 97.11 + 129.55 113.22 102.31 + 132.07 116.56 105.72 + 130.37 114.55 104.11 + 130.09 115.64 105.02 + 136.07 122.33 112.55 + 138.96 125.65 115.98 + 137.45 124.42 114.61 + 131.59 120.02 110.21 + 134.59 122.02 112.06 + 139.34 125.81 115.97 + 142.29 124.10 114.31 + 137.75 120.95 111.19 + 133.79 121.58 111.42 + 138.59 129.59 119.73 + 141.22 134.33 124.50 + 143.84 136.16 126.42 + 142.73 134.06 124.41 + 140.76 131.40 122.33 + 141.37 129.23 119.81 + 138.41 128.56 119.26 + 136.16 129.07 119.78 + 136.15 126.25 115.55 + 138.15 125.34 113.89 + 136.20 123.09 111.56 + 135.44 126.39 114.89 + 135.53 129.19 118.83 + 135.71 129.47 119.80 + 135.87 130.84 121.56 + 135.41 133.15 122.86 + 132.74 131.23 119.84 + 133.17 130.90 119.83 + 135.86 131.82 120.48 + 136.32 131.68 120.80 + 133.60 129.56 119.25 + 130.76 128.69 118.94 +sample_blocks: | + 2 2 128.00 128.00 128.00 + 2 18 128.00 128.00 128.00 + 2 34 128.00 128.00 128.00 + 2 50 181.89 181.89 15.22 + 2 66 128.00 128.00 128.00 + 2 82 161.78 161.78 161.78 + 2 98 131.78 131.78 131.78 + 2 114 224.78 86.44 86.44 + 2 130 129.67 129.67 97.22 + 2 146 142.44 142.44 99.44 + 2 162 128.00 128.00 128.00 + 2 178 128.00 128.00 128.00 + 2 194 128.00 128.00 128.00 + 18 2 128.00 128.00 128.00 + 18 18 128.00 128.00 128.00 + 18 34 143.44 143.44 53.78 + 18 50 128.00 128.00 128.00 + 18 66 122.67 122.67 122.67 + 18 82 95.67 48.89 48.89 + 18 98 91.89 70.11 70.11 + 18 114 99.22 53.00 53.00 + 18 130 181.22 137.89 137.89 + 18 146 112.89 112.89 112.89 + 18 162 128.00 128.00 128.00 + 18 178 181.78 155.67 155.67 + 18 194 177.00 177.00 26.33 + 34 2 128.00 128.00 128.00 + 34 18 156.44 156.44 152.56 + 34 34 128.00 128.00 128.00 + 34 50 80.00 53.11 53.11 + 34 66 122.67 122.67 122.67 + 34 82 110.56 110.56 110.56 + 34 98 128.00 128.00 128.00 + 34 114 138.22 77.89 77.89 + 34 130 148.44 148.44 148.44 + 34 146 124.11 115.44 115.44 + 34 162 124.78 118.33 118.33 + 34 178 152.44 152.44 152.44 + 34 194 128.00 128.00 128.00 + 50 2 189.33 189.33 44.44 + 50 18 123.67 123.67 123.67 + 50 34 187.89 80.89 80.89 + 50 50 169.67 169.67 169.67 + 50 66 140.11 99.00 99.00 + 50 82 136.11 82.44 82.44 + 50 98 88.22 88.22 88.22 + 50 114 122.00 50.11 50.11 + 50 130 107.33 90.44 90.44 + 50 146 80.00 63.56 63.56 + 50 162 125.56 124.11 124.11 + 50 178 128.00 128.00 128.00 + 50 194 128.00 128.00 128.00 + 66 2 125.22 125.22 125.22 + 66 18 190.44 190.44 190.44 + 66 34 103.11 69.89 69.89 + 66 50 134.67 134.67 121.67 + 66 66 141.22 139.89 51.67 + 66 82 129.89 72.78 72.78 + 66 98 163.89 118.78 118.78 + 66 114 131.44 88.11 88.11 + 66 130 126.44 126.44 126.44 + 66 146 123.89 122.78 87.00 + 66 162 125.33 125.33 125.33 + 66 178 106.56 103.89 103.89 + 66 194 130.89 130.89 130.89 + 82 2 128.00 128.00 128.00 + 82 18 125.11 94.89 94.89 + 82 34 124.00 124.00 124.00 + 82 50 129.89 90.33 90.33 + 82 66 103.11 90.33 90.33 + 82 82 169.89 167.11 167.11 + 82 98 97.44 97.44 97.44 + 82 114 206.22 205.00 27.89 + 82 130 181.56 181.56 29.78 + 82 146 96.33 88.11 88.11 + 82 162 98.11 98.11 98.11 + 82 178 128.22 128.22 128.22 + 82 194 128.00 128.00 128.00 + 98 2 128.00 128.00 128.00 + 98 18 122.67 118.56 118.56 + 98 34 94.89 76.78 76.78 + 98 50 112.78 74.89 74.89 + 98 66 190.89 171.00 171.00 + 98 82 107.78 59.11 59.11 + 98 98 142.56 142.56 142.56 + 98 114 136.00 131.33 131.33 + 98 130 104.56 44.67 44.67 + 98 146 166.67 166.67 166.67 + 98 162 129.44 124.67 124.67 + 98 178 128.56 108.56 108.56 + 98 194 126.78 126.78 126.78 + 114 2 128.00 128.00 128.00 + 114 18 112.44 104.00 104.00 + 114 34 113.44 106.89 106.89 + 114 50 113.89 113.89 113.89 + 114 66 75.78 75.78 75.78 + 114 82 162.78 160.44 160.44 + 114 98 88.78 66.33 66.33 + 114 114 126.56 111.89 111.89 + 114 130 82.11 74.33 74.33 + 114 146 141.44 73.00 73.00 + 114 162 93.00 73.11 73.11 + 114 178 130.11 130.11 130.11 + 114 194 128.00 128.00 128.00 + 130 2 128.00 128.00 128.00 + 130 18 114.78 114.78 114.78 + 130 34 116.67 116.67 116.67 + 130 50 106.89 106.89 98.00 + 130 66 85.22 78.11 78.11 + 130 82 105.44 105.44 105.44 + 130 98 169.22 169.22 169.22 + 130 114 139.22 121.67 121.67 + 130 130 96.67 70.44 63.78 + 130 146 84.11 58.11 58.11 + 130 162 90.00 44.44 44.44 + 130 178 128.00 128.00 128.00 + 130 194 128.00 128.00 128.00 + 146 2 130.00 130.00 130.00 + 146 18 127.44 58.78 58.78 + 146 34 162.33 162.33 153.56 + 146 50 99.22 45.33 45.33 + 146 66 153.00 131.00 131.00 + 146 82 128.56 128.56 128.56 + 146 98 129.67 126.44 126.44 + 146 114 101.78 67.44 67.44 + 146 130 91.67 62.00 62.00 + 146 146 85.33 80.56 80.56 + 146 162 195.78 70.22 70.22 + 146 178 152.56 82.22 82.22 + 146 194 136.89 136.89 93.67 + 162 2 128.00 128.00 128.00 + 162 18 126.78 90.44 78.89 + 162 34 125.44 122.56 122.56 + 162 50 128.00 128.00 128.00 + 162 66 129.33 47.78 47.78 + 162 82 125.00 125.00 125.00 + 162 98 124.00 124.00 124.00 + 162 114 112.89 112.89 112.89 + 162 130 125.11 125.11 125.11 + 162 146 81.22 70.67 70.67 + 162 162 126.78 102.78 102.78 + 162 178 128.00 128.00 128.00 + 162 194 128.00 128.00 128.00 + 178 2 170.44 170.44 64.89 + 178 18 128.00 128.00 128.00 + 178 34 121.22 121.22 121.22 + 178 50 128.00 128.00 128.00 + 178 66 194.56 72.33 72.33 + 178 82 117.00 117.00 117.00 + 178 98 128.00 128.00 128.00 + 178 114 106.67 75.44 75.44 + 178 130 111.56 83.78 83.78 + 178 146 156.11 152.00 152.00 + 178 162 128.00 128.00 128.00 + 178 178 128.00 128.00 128.00 + 178 194 128.00 128.00 128.00 + 194 2 128.00 128.00 128.00 + 194 18 128.00 128.00 128.00 + 194 34 128.00 128.00 128.00 + 194 50 180.33 180.33 49.00 + 194 66 134.33 134.33 134.33 + 194 82 126.00 126.00 126.00 + 194 98 128.00 128.00 128.00 + 194 114 142.00 142.00 142.00 + 194 130 122.78 96.00 96.00 + 194 146 128.00 128.00 128.00 + 194 162 128.00 128.00 128.00 + 194 178 128.00 128.00 128.00 + 194 194 128.00 128.00 128.00 +...