diff --git a/.github/workflows/backend-template.yml b/.github/workflows/backend-template.yml index 8654eff09..ed7c9f355 100644 --- a/.github/workflows/backend-template.yml +++ b/.github/workflows/backend-template.yml @@ -81,14 +81,6 @@ jobs: restore-keys: | ${{ runner.os }}-build-${{ inputs.backend_name }}- - # Using an exact key to forgo saving it in case of a match (tarring up - # is expensive); also including a date to allow a force-update. - - name: Load containers cache - uses: actions/cache@v3 - with: - path: ~/.apptainer - key: Linux-x86_64-containers-build-2023-09-05 - - name: Checkout OpenMM (for Lepton library) uses: actions/checkout@v3 with: @@ -132,12 +124,8 @@ jobs: shell: bash working-directory: devel-tools run: | - # Pull all containers used to build backends - # (contains build tools, OpenMPI, FFTW, Tcl/Tk and Charm++) - apptainer remote status SylabsCloud || apptainer remote add --no-login SylabsCloud cloud.sylabs.io - apptainer remote use SylabsCloud - apptainer pull CentOS7-devel.sif library://giacomofiorin/default/colvars_development:centos7 - apptainer pull CentOS9-devel.sif library://giacomofiorin/default/colvars_development:centos9 + apptainer pull CentOS7-devel.sif oras://ghcr.io/Colvars/devel-containers:CentOS7-devel + apptainer pull CentOS9-devel.sif oras://ghcr.io/Colvars/devel-containers:CentOS9-devel - name: Update and build ${{ inputs.backend_name }} shell: bash @@ -162,6 +150,13 @@ jobs: apptainer exec ${{github.workspace}}/devel-tools/${{ inputs.container_name }}.sif \ ./run_tests.sh ${{github.workspace}}/${{ inputs.backend_name }}-source/${{ inputs.rpath_exe }} 0??_* + - name: Save failed library test artifact + if: ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: failed-library-test-diffs-${{ inputs.backend_name }} + path: ${{ github.workspace }}/${{ inputs.test_lib_directory }}/*/*.diff + - name: Run regression tests for ${{ inputs.backend_name }} interface code if: ${{ inputs.test_interface_directory }} shell: bash @@ -169,3 +164,20 @@ jobs: run: | apptainer exec ${{github.workspace}}/devel-tools/${{ inputs.container_name }}.sif \ ./run_tests.sh ${{github.workspace}}/${{ inputs.backend_name }}-source/${{ inputs.rpath_exe }} + + - name: Save failed interface test artifact + if: ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: failed-interface-test-diffs-${{ inputs.backend_name }} + path: ${{ github.workspace }}/${{ inputs.test_interface_directory }}/*/*.diff + + - name: Run regression tests for library code with ${{ inputs.backend_name }} (binary restarts) + if: ${{ inputs.test_lib_directory }} + shell: bash + working-directory: ${{ inputs.test_lib_directory }} + env: + COLVARS_BINARY_RESTART: 1 + run: | + apptainer exec ${{github.workspace}}/devel-tools/${{ inputs.container_name }}.sif \ + ./run_tests.sh ${{github.workspace}}/${{ inputs.backend_name }}-source/${{ inputs.rpath_exe }} 0??_* diff --git a/.github/workflows/test-backends.yml b/.github/workflows/test-backends.yml index e9116e35d..79233b8b3 100644 --- a/.github/workflows/test-backends.yml +++ b/.github/workflows/test-backends.yml @@ -99,19 +99,6 @@ jobs: private_key: ${{ secrets.PULL_VMD_KEY }} private_key_vmd_plugins: ${{ secrets.PULL_VMD_PLUGINS_KEY }} - gromacs-2021: - name: GROMACS 2021 - if: github.event_name == 'pull_request' || contains(github.event.head_commit.message, 'test-gromacs-2021') - uses: ./.github/workflows/backend-template.yml - with: - backend_name: GROMACS-2021 - backend_repo: gromacs/gromacs - backend_repo_ref: release-2021 - container_name: CentOS9-devel - path_compile_script: devel-tools/compile-gromacs.sh - test_lib_directory: gromacs/tests/library - rpath_exe: install/bin/gmx_d - gromacs-2022: name: GROMACS 2022 if: github.event_name == 'pull_request' || contains(github.event.head_commit.message, 'test-gromacs-2022') @@ -137,3 +124,16 @@ jobs: path_compile_script: devel-tools/compile-gromacs.sh test_lib_directory: gromacs/tests/library rpath_exe: install/bin/gmx_d + + gromacs-devel: + name: GROMACS (MDModules) + if: github.event_name == 'pull_request' || contains(github.event.head_commit.message, 'test-gromacs-devel') + uses: ./.github/workflows/backend-template.yml + with: + backend_name: GROMACS-devel + backend_repo: gromacs/gromacs + backend_repo_ref: main + container_name: CentOS9-devel + path_compile_script: devel-tools/compile-gromacs.sh + test_lib_directory: gromacs/tests/library + rpath_exe: install/bin/gmx_d diff --git a/.github/workflows/test-library.yml b/.github/workflows/test-library.yml index 5ac11ea42..3a3a9776e 100644 --- a/.github/workflows/test-library.yml +++ b/.github/workflows/test-library.yml @@ -93,12 +93,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Load containers cache - uses: actions/cache@v3 - with: - path: ~/.apptainer - key: Linux-x86_64-containers-build-doc-2023-07-19 - - name: Install Apptainer shell: bash run: | @@ -110,9 +104,7 @@ jobs: shell: bash working-directory: devel-tools run: | - apptainer remote status SylabsCloud || apptainer remote add --no-login SylabsCloud cloud.sylabs.io - apptainer remote use SylabsCloud - apptainer pull texlive.sif library://giacomofiorin/default/colvars_development:texlive + apptainer pull texlive.sif oras://ghcr.io/Colvars/devel-containers:texlive - name: Checkout website repository uses: actions/checkout@v3 @@ -228,14 +220,6 @@ jobs: key: ${{ runner.os }}-build-multiple-${{ github.sha }} restore-keys: ${{ runner.os }}-build-multiple- - # Using an exact key to forgo saving it in case of a match (tarring up - # is expensive); also including a date to allow a force-update. - - name: Load containers cache - uses: actions/cache@v3 - with: - path: ~/.apptainer - key: Linux-x86_64-containers-build-2023-09-05 - - name: Get small downloadable packages uses: actions/checkout@v3 with: @@ -250,14 +234,12 @@ jobs: sudo apt update sudo apt install -y apptainer-suid - - name: Get container image + - name: Get container images for build dependencies shell: bash working-directory: devel-tools run: | - apptainer remote status SylabsCloud || apptainer remote add --no-login SylabsCloud cloud.sylabs.io - apptainer remote use SylabsCloud - apptainer pull CentOS7-devel.sif library://giacomofiorin/default/colvars_development:centos7 - apptainer pull CentOS9-devel.sif library://giacomofiorin/default/colvars_development:centos9 + apptainer pull CentOS7-devel.sif oras://ghcr.io/Colvars/devel-containers:CentOS7-devel + apptainer pull CentOS9-devel.sif oras://ghcr.io/Colvars/devel-containers:CentOS9-devel - name: GCC 4.8, C++11 (CentOS 7) env: @@ -384,12 +366,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Load containers cache - uses: actions/cache@v3 - with: - path: ~/.apptainer - key: Linux-x86_64-containers-build-2023-09-05 - - name: Checkout Sun compiler (Oracle Developer Studio) uses: actions/checkout@v3 with: @@ -412,14 +388,11 @@ jobs: sudo apt update sudo apt install -y apptainer-suid - - name: Get container image + - name: Get container images for build dependencies shell: bash working-directory: devel-tools run: | - apptainer remote status SylabsCloud || apptainer remote add --no-login SylabsCloud cloud.sylabs.io - apptainer remote use SylabsCloud - apptainer pull CentOS7-devel.sif library://giacomofiorin/default/colvars_development:centos7 - apptainer pull CentOS9-devel.sif library://giacomofiorin/default/colvars_development:centos9 + apptainer pull CentOS7-devel.sif oras://ghcr.io/Colvars/devel-containers:CentOS7-devel - name: Build library with Sun compiler (Oracle Developer Studio) shell: bash diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index d3e87459c..2c548ea6a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -142,7 +142,7 @@ if(COLVARS_DEBUG) endif() option(ENABLE_COVERAGE "Enable code coverage reporting" ON) -if(ENABLE_COVERAGE AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")) +if(ENABLE_COVERAGE AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")) target_compile_options(colvars PUBLIC --coverage) target_link_options(colvars PUBLIC --coverage) endif() diff --git a/colvartools/plot_colvars_traj.py b/colvartools/plot_colvars_traj.py index 00f3e42ab..981e0053f 100644 --- a/colvartools/plot_colvars_traj.py +++ b/colvartools/plot_colvars_traj.py @@ -26,6 +26,7 @@ def __init__(self, name): self._name = name self._step = np.zeros(shape=(0), dtype=np.int64) self._colvar = np.zeros(shape=(0), dtype=np.float64) + self._warned_dimensions = False def __len__(self): """Returns the length of the trajectory""" @@ -40,11 +41,12 @@ def __str__(self): def _set_num_dimensions(self, n_d): """Set the number of components of the collective variable""" - if (len(self) > 0): + if len(self) > 0 and not self._warned_dimensions: print("Warning: changing the number of dimensions " - "of collective variable \""+self._name+ + "of collective variable \""+self._name + "\" after it has already been read.") - if (n_d > 1): + self._warned_dimensions = True + if n_d > 1: self._colvar.resize((len(self), n_d)) else: self._colvar.resize((len(self))) diff --git a/colvartools/poisson_integrator.cpp b/colvartools/poisson_integrator.cpp index 5e561e29e..01aa220f7 100644 --- a/colvartools/poisson_integrator.cpp +++ b/colvartools/poisson_integrator.cpp @@ -1,3 +1,4 @@ +#include #include #include "colvargrid.h" diff --git a/devel-tools/build_test_library.cmake b/devel-tools/build_test_library.cmake index 53fb22bd1..eb778c905 100644 --- a/devel-tools/build_test_library.cmake +++ b/devel-tools/build_test_library.cmake @@ -31,8 +31,8 @@ if(DEFINED CMAKE_SYSTEM_NAME AND COLVARS_TCL) if(EXISTS "${COLVARS_SOURCE_DIR}/devel-tools/packages") if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(TCL_DIR "${COLVARS_SOURCE_DIR}/devel-tools/packages/tcl8.5.9-linux-x86_64") - set(TCL_LIBRARY "libtcl8.5.a") + set(TCL_DIR "${COLVARS_SOURCE_DIR}/devel-tools/packages/tcl8.6.13-linux-x86_64-threaded") + set(TCL_LIBRARY "libtcl8.6.a") endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") diff --git a/devel-tools/compile-gromacs.sh b/devel-tools/compile-gromacs.sh index 788a345ae..e0afccf78 100755 --- a/devel-tools/compile-gromacs.sh +++ b/devel-tools/compile-gromacs.sh @@ -9,6 +9,10 @@ source $(dirname $0)/set-ccache.sh compile_gromacs_target() { + if [ -n "${GROMACS_REGRESSION_TESTS}" ] ; then + export GROMACS_BUILD_TESTS=1 + fi + local CMAKE=cmake CTEST=ctest if hash cmake3 >& /dev/null ; then CMAKE=cmake3 @@ -68,8 +72,9 @@ compile_gromacs_target() { fi fi - # When on GitHub Actions, download the tests as well + # When on GitHub Actions, build the tests as well if [ -n "${GITHUB_ACTION}" ] ; then + export GROMACS_BUILD_TESTS=1 GMX_BUILD_OPTS+=(-DREGRESSIONTEST_DOWNLOAD=ON) fi @@ -98,25 +103,22 @@ compile_gromacs_target() { ${CMAKE} --build "${GMX_BUILD_DIR}" --parallel $(nproc --all) ret_code=$? - if [ -n "${GROMACS_REGRESSION_TESTS}" ] ; then + if [ -n "${GROMACS_BUILD_TESTS}" ] ; then # Build the tests as well ${CMAKE} --build "${GMX_BUILD_DIR}" --target tests --parallel $(nproc --all) ret_code=$((${ret_code} || $?)) fi if [ ${ret_code} = 0 ] ; then - pushd "${GMX_BUILD_DIR}" - ${CTEST} --output-on-failure - retcode=$? - if [ -n "${GMX_INSTALL_DIR}" ] ; then - if hash ninja >& /dev/null ; then - ninja install - else - make install - fi - ret_code=$((${ret_code} || $?)) + if [ -n "${GROMACS_BUILD_TESTS}" ] && [ -z "${GITHUB_ACTION}" ] ; then + # Some GROMACS tests are extremely long, we run them only offline + pushd "${GMX_BUILD_DIR}" + ${CTEST} --output-on-failure + retcode=$((${ret_code} || $?)) + popd fi - popd + ${CMAKE} --install "${GMX_BUILD_DIR}" + ret_code=$((${ret_code} || $?)) fi popd diff --git a/devel-tools/compile-namd.sh b/devel-tools/compile-namd.sh index 6f206b64a..ee772b32e 100755 --- a/devel-tools/compile-namd.sh +++ b/devel-tools/compile-namd.sh @@ -4,6 +4,9 @@ source $(dirname $0)/load-recent-git.sh source $(dirname $0)/set-ccache.sh +# Save path to be used later +devel_tools_folder=$(realpath $(dirname $0)) + compile_namd_target() { @@ -64,13 +67,28 @@ EOF cmd+=(--charm-arch netlrts-linux-x86_64) fi - # Quick check for more recent Tcl using RH and Debian paths - if [ -f /usr/lib64/libtcl8.6.so ] || \ - [ -f /usr/lib/x86_64-linux-gnu/libtcl8.6.so ] ; then - sed -i 's/-ltcl8.5/-ltcl8.6/' arch/Linux-x86_64.tcl + if grep -q -- -ltcl8.6 arch/Linux-x86_64.tcl ; then + if [ -d ${devel_tools_folder}/packages/tcl8.6.13-linux-x86_64-threaded ] ; then + export TCL_HOME=${devel_tools_folder}/packages/tcl8.6.13-linux-x86_64-threaded + fi + else + # Amend NAMD 2.x arch file for recent Tcl versions under RH and Debian paths + if [ -f /usr/lib64/libtcl8.6.so ] || \ + [ -f /usr/lib/x86_64-linux-gnu/libtcl8.6.so ] ; then + sed -i 's/-ltcl8.5/-ltcl8.6/' arch/Linux-x86_64.tcl + fi + fi + + if [ -z "${TCL_HOME}" ] ; then + if [ -f /usr/local/include/tcl.h ] ; then + export TCL_HOME=/usr/local + else + export TCL_HOME=/usr + fi fi - cmd+=(--tcl-prefix ${TCL_HOME:-/usr}) + cmd+=(--tcl-prefix ${TCL_HOME}) + cmd+=(--with-fftw3 --fftw-prefix ${FFTW_HOME:-/usr}) local python_version=$(python3 --version 2> /dev/null | cut -d' ' -f 2) @@ -83,10 +101,10 @@ EOF eval ${cmd[@]} - if pushd ${dirname} ; then + if pushd ${dirname} ; then make -j$(nproc --all) ret_code=$? - popd + popd else ret_code=1 fi diff --git a/devel-tools/containers/CentOS7-devel.def b/devel-tools/containers/CentOS7-devel.def index 616659ec3..7ea04a13b 100644 --- a/devel-tools/containers/CentOS7-devel.def +++ b/devel-tools/containers/CentOS7-devel.def @@ -10,8 +10,9 @@ From: centos:7 yum -y update yum -y install epel-release centos-release-scl yum -y install \ - redhat-lsb-core "@Development Tools" \ - ncurses which bc man-db vim emacs screen tmux \ + redhat-lsb-core \ + bc man-db vim emacs tcsh which bash-completion screen tmux \ + "@Development Tools" \ gcc gcc-c++ gcc-gfortran glibc-static libstdc++-static clang cppcheck \ autoconf automake cvs git git-cvs cvsps subversion mercurial \ rh-git227 devtoolset-{7..11} llvm-toolset-7 cmake3 ccache ninja-build \ @@ -55,3 +56,13 @@ EOF git clone https://github.com/jhenin/spiff /tmp/spiff && \ make -C /tmp/spiff && \ install /tmp/spiff/spiff /usr/local/bin/ + + # Install Tcl 8.6 to support newer NAMD versions + cd /tmp && \ + rm -f tcl8.6.13-linux-x86_64-threaded.tar.gz && \ + curl -O https://www.ks.uiuc.edu/Research/namd/libraries/tcl8.6.13-linux-x86_64-threaded.tar.gz && \ + tar xzf tcl8.6.13-linux-x86_64-threaded.tar.gz && \ + cd tcl8.6.13-linux-x86_64-threaded && \ + find . -type f -exec install -v -D "{}" "/opt/tcl/8.6/{}" \; && \ + cd && \ + rm -fr /tmp/tcl8.6.13-linux-x86_64-threaded /tmp/tcl8.6.13-linux-x86_64-threaded.tar.gz diff --git a/devel-tools/load-openmpi.sh b/devel-tools/load-openmpi.sh index e2109f9c6..1e6623d9d 100644 --- a/devel-tools/load-openmpi.sh +++ b/devel-tools/load-openmpi.sh @@ -1,6 +1,12 @@ if declare -f module >& /dev/null ; then + # Ensure that Lmod is properly initialized + source /etc/profile # Default modulefile in OpenMPI RPM package if module load mpi/openmpi-x86_64 >& /dev/null ; then echo "Loaded OpenMPI version $(mpirun --version | head -n 1 | rev | cut -d' ' -f1 | rev)" + if ompi_info --param btl vader | grep -q vader ; then + # Enforce intra-node communication on recent OpenMPI versions + export OMPI_MCA_btl="vader,self" + fi fi fi diff --git a/devel-tools/load-recent-gcc.sh b/devel-tools/load-recent-gcc.sh index e0cfe24b2..98deb5656 100644 --- a/devel-tools/load-recent-gcc.sh +++ b/devel-tools/load-recent-gcc.sh @@ -1,7 +1,4 @@ -# Load Software Collections packages on a RedHat-style distribution -if hash scl >& /dev/null ; then - if scl -l | grep -q ^devtoolset-10 ; then - source /opt/rh/devtoolset-10/enable && \ - echo "Loaded: $(gcc --version)" - fi +# Load Software Collections package for RHEL/CentOS 7 +if [ -s /etc/redhat-release ] && [ -s /opt/rh/devtoolset-10/enable ] ; then + source /opt/rh/devtoolset-10/enable && echo "Loaded: $(gcc --version)" | head -n 1 fi diff --git a/devel-tools/load-recent-git.sh b/devel-tools/load-recent-git.sh index 58431b2dc..3a1da9550 100644 --- a/devel-tools/load-recent-git.sh +++ b/devel-tools/load-recent-git.sh @@ -1,7 +1,4 @@ -# Load Software Collections packages on a RedHat-style distribution -if hash scl >& /dev/null ; then - if scl -l | grep -q ^rh-git227 ; then - source /opt/rh/rh-git227/enable && \ - echo "Loaded: $(git --version)" - fi +# Load Software Collections package for RHEL/CentOS 7 +if [ -s /etc/redhat-release ] && [ -s /opt/rh/rh-git227/enable ] ; then + source /opt/rh/rh-git227/enable && echo "Loaded: $(git --version)" fi diff --git a/devel-tools/version_functions.sh b/devel-tools/version_functions.sh index 40077c215..f6f94adc0 100644 --- a/devel-tools/version_functions.sh +++ b/devel-tools/version_functions.sh @@ -52,6 +52,22 @@ get_colvarproxy_vmd_version() { vmd/src/colvarproxy_vmd.h } +get_cv_dashboard_version() { + local commit="${1}:" + if [ "${commit}" = ":" ] ; then + # Use work tree + commit="HEAD:" + fi + local file1="vmd/cv_dashboard/VERSION" + local file2="vmd/cv_dashboard/cv_dashboard.tcl" + local version=$(git cat-file -p ${commit}${file1} 2> /dev/null) + if [ "x${version}" = "x" ] ; then + version=$(git grep "package provide cv_dashboard" ${commit}${file2} 2> /dev/null) + version=$(echo ${version} | awk '{ print $4 }' | tr -d '"') + fi + echo ${version} +} + get_last_master_commit() { local grep_pattern=${1} local commit @@ -89,9 +105,13 @@ write_version_string() { local macro=${1} local file=${2} local version_str=${3} - echo -e "#ifndef ${macro}\n\ + if [ "${macro}" = "none" ] ; then + echo -e "${version_str}" > ${file} + else + echo -e "#ifndef ${macro}\n\ #define ${macro} \"${version_str}\"\n\ #endif" > ${file} + fi if [ "${file}" = "src/colvars_version.h" ] ; then local version_str_tex=$(version_str_for_tex ${version_str}) echo -E "\newcommand{\cvversion}{${version_str_tex}}" \ @@ -196,6 +216,13 @@ update_all_versions() { vmd/src/colvarproxy_vmd_version.h \ ${branch} \ && \ + update_version_string "Colvars Dashboard" \ + '^vmd/cv_dashboard' \ + get_cv_dashboard_version \ + none \ + vmd/cv_dashboard/VERSION \ + ${branch} \ + && \ git commit -m "Update version strings" } @@ -226,4 +253,8 @@ write_all_versions_branch() { COLVARPROXY_VERSION \ gromacs/src/colvarproxy_gromacs_version.h \ ${branch} + write_version_branch get_cv_dashboard_version \ + none \ + vmd/cv_dashboard/VERSION \ + ${branch} } diff --git a/doc/colvars-code-refs.bib b/doc/colvars-code-refs.bib index 2c02f181d..ff9b04273 100644 --- a/doc/colvars-code-refs.bib +++ b/doc/colvars-code-refs.bib @@ -11,6 +11,19 @@ @article{Abraham2015 url = {https://doi.org/10.1016/j.softx.2015.06.001} } +% BAOA integrator +@article{BouRabee2010, + doi = {10.1137/090758842}, + url = {https://doi.org/10.1137/090758842}, + year = {2010}, + volume = {48}, + number = {1}, + pages = {278--297}, + author = {Nawaf Bou-Rabee and Houman Owhadi}, + title = {Long-Run Accuracy of Variational Integrators in the Stochastic Context}, + journal = {{SIAM} Journal on Numerical Analysis} +} + % reweightaMD colvar bias implementation (NAMD) @article{Chen2021, author = {Chen, Haochuan and Fu, Haohao and Chipot, Christophe and Shao, Xueguang and Cai, Wensheng}, @@ -194,6 +207,16 @@ @article{Henin2010 url = {https://doi.org/10.1021/ct9004432} } +% Poisson integration of 2D/3D free energy surfaces +@Article{Henin2021, + author = {H\'enin, J.}, + journal = {J. Chem. Theory Comput.}, + title = {Fast and accurate multidimensional free energy integration}, + year = {2021}, + doi = {10.1021/acs.jctc.1c00593}, + url = {https://doi.org/10.1021/acs.jctc.1c00593}, +} + % VMD engine @article{Humphrey1996, title = {{VMD}: visual molecular dynamics}, @@ -222,16 +245,6 @@ @article{Lesage2017 url = {https://doi.org/10.1021/acs.jpcb.6b10055} } -% Poisson integration of 2D/3D free energy surfaces -@Article{Henin2021, - author = {H\'enin, J.}, - journal = {J. Chem. Theory Comput.}, - title = {Fast and accurate multidimensional free energy integration}, - year = {2021}, - doi = {10.1021/acs.jctc.1c00593}, - url = {https://doi.org/10.1021/acs.jctc.1c00593}, -} - % Ensemble-biased metadynamics (ebMetaD) @article{Marinelli2015, author = {Marinelli, Fabrizio and Faraldo-G\'omez, Jos\'e D.}, @@ -319,7 +332,6 @@ @article{White2014 % --- NO CITATIONS AVAILABLE YET FOR THESE FEATURES --- % Colvars-GROMACS interface -% Colvars Dashboard (Colvars-VMD graphical user interface) % gspath colvar component % gzpath colvar component % linearCombination colvar component diff --git a/doc/colvars-refman-main.tex b/doc/colvars-refman-main.tex index 1c5285eb8..e48361bb0 100644 --- a/doc/colvars-refman-main.tex +++ b/doc/colvars-refman-main.tex @@ -171,7 +171,7 @@ Alternately, use the Automatic colvars features in the Actions tab. -Now, clicking ``Edit'' in the Dashboard window (or right-clikcing on a colvar in the list view), you can modify the collective variable to reflect interesting geometric properties of the system. +Now, clicking ``Edit'' in the Dashboard window (or right-clicking on a colvar in the list view), you can modify the collective variable to reflect interesting geometric properties of the system. The power of the collective variables approach lies in the variety of geometric functions (``components'') and their combinations. The editor window provides a number of helpers to make it easy and quick to define the most relevant variables. See section \ref{sec:dashboard_config_editor} for details. @@ -381,7 +381,7 @@ The ``internal units'' of the Colvars module are the units in which values are expected to be in the configuration file, and in which collective variable values, energies, etc. are expressed in the output and colvars trajectory files. Generally \textbf{the Colvars module uses internally the same units as its back-end MD engine, with the exception of VMD}, where different unit sets are supported to allow for easy setup, visualization and analysis of Colvars simulations performed with any simulation engine. -Note that \textbf{angles} are expressed in degrees, and derived quantites such as force constants are based on degrees as well. +Note that \textbf{angles} are expressed in degrees, and derived quantities such as force constants are based on degrees as well. Some colvar components have default values, expressed in \AA{}ngstr\"om in this documentation. They are converted to the current length unit as needed. Atomic coordinates read from \textbf{XYZ files} (and PDB files where applicable) are expected to be expressed in \AA{}ngstr\"om, no matter what unit system is in use by the back-end (\MDENGINE) or the Colvars Module. They are converted internally to the current length unit as needed. Note that force constants in \texttt{harmonic} and \texttt{harmonicWalls} biases (\ref{sec:colvarbias_harmonic}) are rescaled according to the \refkey{width}{colvar|width} parameter of colvars, so that they are formally in energy units, although if \refkey{width}{colvar|width} is given its default value of 1.0, force constants are effectively expressed in \energyunit/\textit{(colvar unit)}$^2$. @@ -481,7 +481,9 @@ string}{% ``out''}{% If a value is provided, it is interpreted as the prefix to all output files that will be written by the Colvars module (see \ref{sec:colvars_output}). - A value must be defined and is set by default, even when Colvars embeds its state information in a LAMMPS restart files, to allow the output of other files (see \ref{sec:colvars_output}). + This includes output state files for checkpointing, as well as accumulated information such as PMFs or histograms and trajectories of the collective variables. + Because this information is often useful, a default value is set for this keyword when not provided. + However, supplying an empty string suppresses any file output from Colvars to file, except for data saved into the LAMMPS binary restart file. } \item % @@ -522,11 +524,11 @@ Thermostating fix (optional)}{% string}{% NULL}{% - This keyword provides the \emph{ID} of an applicable thermostating fix command. This will be used to provide the Colvars module with the current thermostat target temperature when using a method that needs this information.} + This keyword provides the \emph{ID} of an applicable thermostatting fix command. This will be used to provide the Colvars module with the current thermostat target temperature when using a method that needs this information.} \end{itemize} -All of the above keywords except for the name of the configuration file may also be given (or overriden) using \texttt{fix\_modify}, as well as new Colvars configuration files (see \ref{sec:cv_scripting} for more details). +All of the above keywords except for the name of the configuration file may also be given (or overridden) using \texttt{fix\_modify}, as well as new Colvars configuration files (see \ref{sec:cv_scripting} for more details). } @@ -694,7 +696,7 @@ \end{mdexampleinput} The step number contained by the loaded file will be used internally by Colvars to control time-dependent biases, unless \texttt{firstTimestep} is issued, in which case that value will be used.} -\cvnamdonly{When the system's topology is changed during simulation via the \texttt{structure} command (e.g.{} in constant-pH simulations), it is generally best to reset and re-initalize the module from scratch before loading the corresponding snapshot: +\cvnamdonly{When the system's topology is changed during simulation via the \texttt{structure} command (e.g.{} in constant-pH simulations), it is generally best to reset and re-initialize the module from scratch before loading the corresponding snapshot: \begin{mdexampleinput} \-structure~newsystem.psf\\ \-reinitatoms~$<$snapshot$>$\\ @@ -809,7 +811,7 @@ \cvvmdonly{Note that in VMD, any forces applied via \texttt{addforce} do not have any effect on the movement of atoms: this feature is only available for compatibility.} For certain types of variable, the force applied directly on a colvar may be combined with those acting \emph{indirectly} on it via the interatomic force field, making up the \emph{total force}. -When the \refkey{outputTotalForce}{colvar|outputTotalForce} kewyord is enabled, or when a biasing method that makes explicit use of the total force is enabled, the total force may be obtained as: +When the \refkey{outputTotalForce}{colvar|outputTotalForce} keyword is enabled, or when a biasing method that makes explicit use of the total force is enabled, the total force may be obtained as: \cvscriptexampleinputcolvar{gettotalforce}{}{"xi"} \noindent{}Note that not all types of variable support total-force computation, and the value of the total force may not be available immediately within the same simulation step: see the documentation of \refkey{outputTotalForce}{colvar|outputTotalForce} for more details. @@ -956,36 +958,71 @@ \cvsubsec{Input state file}{sec:colvars_input} -A \emph{state file} contains the information produced during a Colvars-based simulation besides atomic data, which is provided by \MDENGINE{}. +Several of the sampling methods implemented in Colvars are time- or history-dependent, i.e.\ they work by accumulating data as a simulation progresses, and use these data to determine their biasing forces. If the simulation engine uses a checkpoint or restart file (as GROMACS and LAMMPS do), any data needed by Colvars are embedded inti that file. Otherwise, a dedicated \emph{state file} can be loaded into Colvars directly. -Because many of the methods implemented in Colvars are history-dependent, this file is often needed to continue a long simulation over consecutive runs. -Such state file is written automatically at the end of any simulation with Colvars, and contains data accumulated during that simulation along with the step number at the end of it. -The step number read from the state file is then used to control such time-dependent biases: because of this essential role, the step number internal to Colvars may not always match the step number reported by the MD program that carried during the simulation (which may instead restart from zero each time). -\cvnamdonly{If a state file is not given, the NAMD command \texttt{firstTimestep} may be used to control the Colvars step number.} +When a dedicated Colvars state file is used, it may be in either one of two formats: +\begin{itemize} + +\item Formatted, i.e.\ \emph{``text''} format, which takes more space and is slower to to load/save but is also portable across different platforms and even different simulation engines (save for changes in physical units). This format is used by default, unless explicitly requested otherwise. + +\item Unformatted, i.e.\ \emph{``binary''} format, which is both space-efficient and quick to load/save, but requires that the same \MDENGINE{} build was used to write the file and that the Colvars configuration remains the same. This format is supported by Colvars versions starting 2023-09-25. +Colvars state files are written in binary format by setting the environment variable ``\texttt{COLVARS\_BINARY\_RESTART}'' to 1. + +\end{itemize} + +\cvsubsubsec{Contents of the state file.}{} +In either format, the state file contains accumulated data as well as the step number at the end of the run. +The step number read from a state file overrides any value that \MDENGINE{} provides, and will be incremented if the simulation proceeds. +This means that the step number used internally by Colvars may not always match the step number reported by \MDENGINE{}. +\cvnamdonly{This is particularly inmportant in NAMD, which represents step numbers as a 32-bit integers that overflows after $\sim$ 2 billion steps, effectively negating the usefulness of the \texttt{firstTimeStep} keyword. However, step numbers are implemented correctly in the Colvars state file.} + +% \cvgromacsonly{\cvsubsubsec{Restarting in GROMACS.}{} TODO } + +\cvlammpsonly{\cvsubsubsec{Restarting in LAMMPS.}{} +For continuing a Colvars-based simulation, the recommended method is using the standard LAMMPS \texttt{read\_restart} command, which reads the Colvars state data from the LAMMPS restart file (in binary format). +\begin{mdexampleinput}{} +\-read\_restart~\emph{filename} +\end{mdexampleinput} +Alternatively, restarting from a Colvars-specific state file is also possible by providing the \texttt{input} keyword to the \texttt{fix colvars} command: +\begin{mdexampleinput}{} +\-fix~Colvars~all~colvars~\emph{configfile}~input~\emph{input\_prefix} +\end{mdexampleinput} +When the ``\texttt{input}'' keyword is used, the contents of the file \texttt{$<$\emph{input\_prefix}$>$.colvar.state} override the information read from the LAMMPS restart file. Finally, a state file may also be loaded after initialization through the ``\texttt{fix\_modify}'' command: +\begin{mdexampleinput}{% +}fix\_modify~Colvars~\texttt{input}~\emph{new\_input\_prefix} +\end{mdexampleinput} +} % end \cvlammpsonly -Depending on the configuration, a state file may need to be loaded issued at the beginning of a new simulation when time-dependent biasing methods are applied (moving restraints, metadynamics, ABF, ...). -\cvnamdonly{When the Colvars module is initialized in NAMD, the \texttt{colvarsInput} keyword can be used to give the name of the state file}. -\cvlammpsonly{When the Colvars fix is defined in LAMMPS, the keyword \texttt{input} can be used to load the state file, although it is typically easier to use the LAMMPS \texttt{read\_restart} to re-initialize Colvars together with other fixes.} -After initialization of the Colvars module, a state file may be loaded at any time \cvnamdonly{with the Tcl command \texttt{cv load}}% -\cvvmdonly{with the Tcl command \texttt{cv load}}% -\cvlammpsonly{with the \texttt{fix\_modify load } LAMMPS command}. -It is possible to load a state file even if the configuration has changed: -for example, new variables may be defined or restraints be added in between consecutive runs. +\cvnamdonly{\cvsubsubsec{Restarting in NAMD.}{} +Before the Colvars module is initialized in NAMD, the \texttt{colvarsInput} keyword can be used to give the name of a state file. +After initialization of the Colvars module, a state file may be loaded at any time with the Tcl command \texttt{cv load}. +Both versions support loading Colvars state files in either format (binary or text). +} % end \cvnamdonly + + +\cvsubsubsec{Restarting after a change in Colvars configuration.}{} +It useful in some cases to modify the configuration of variables or biases between consecutive runs: a typical example would the addition or removal of a restraint in a simulation. +By restarting using text-format Colvars state files, it is possible to read previous data while allowing for changes in configuration. For each newly defined variable or bias, no information will be read from the state file if this is unavailable: such new objects will remain uninitialized until the first compute step. Conversely, any information that the state file has about variables or biases that are no longer defined is silently ignored. -\emph{Because these checks are performed based on the names of variables and biases, it is the user's responsibility to ensure that these definitions are consistent between runs.} +\emph{Because these checks are performed based solely on the names of variables and biases, it is your responsibility to ensure that these names correspond to consistent definitions between runs.} +When restarting using binary state files, configuration changes are not allowed. The easiest solution would be to produce a text-format state file specifically for that purpose. +\ifdefined\cvscriptapi{% +Alternatively, after restarting Colvars using a state file consistent with the previous configuration, the configuration may be changed using the scripting interface (see \ref{sec:cv_scripting}). +}\fi \cvsubsec{Output files}{sec:colvars_output} -During a simulation with collective variables defined, the following three output files are written: +If the output prefix \outputName{} is defined, the following output files are written during a simulation run: \begin{itemize} -\item A \emph{state file}, named \outputName\texttt{.colvars.state}; this file is in ASCII (plain text) format\cvnamdonly{, regardless of the value of \texttt{binaryOutput} in the NAMD configuration}. This file is written at the end of the specified run\cvscriptonly{, but can also be written at any time with the command \texttt{cv save} (\ref{sec:cv_command_loadsave})}.\\ - \emph{This is the only Colvars output file needed to continue a simulation.} +\item A \emph{state file}, named \outputName\texttt{.colvars.state}, which is written at the end of the specified run\cvscriptonly{, and can also be written at any time with the scripting command \texttt{save} (\ref{sec:cv_command_loadsave})}. +This file is in plain text format by default\cvnamdonly{, regardless of the value of \texttt{binaryOutput} of the NAMD coordinate and velocity files}, or in binary format if the environment variable \texttt{COLVARS\_BINARY\_RESTART} is set to a non-zero integer. +The state file is used to continue a simulation, and is required to restart a simulation unless the engine supports embedding information into their checkpoint file (as GROMACS or LAMMPS currently do). \item If the parameter \refkey{colvarsRestartFrequency}{Colvars-global|colvarsRestartFrequency} is larger than zero, a \emph{restart file} is written every that many steps: this file is fully equivalent to the final state file. The name of this file is \restartName\texttt{.colvars.state}. @@ -1096,7 +1133,7 @@ \cvsubsubsec{Grid files: multicolumn text format}{sec:colvar_multicolumn_grid} -Many simulation methods and analysis tools write files that contain functions of the collective variables tabulated on a grid (e.g.{} potentials of mean force or multidimentional histograms) for the purpose of analyzing results. +Many simulation methods and analysis tools write files that contain functions of the collective variables tabulated on a grid (e.g.{} potentials of mean force or multidimensional histograms) for the purpose of analyzing results. Such files are produced by ABF (\ref{sec:colvarbias_abf}), metadynamics (\ref{sec:colvarbias_meta}), multidimensional histograms (\ref{sec:colvarbias_histogram}), as well as any restraint with optional thermodynamic integration support (\ref{sec:colvarbias_ti}). In some cases, these files may also be read as input of a new simulation. @@ -1128,7 +1165,7 @@ \item $\mathtt{periodic}(\xi_{i})$ is set to 1 if and only if $\xi_{i}$ is periodic and the grids' boundaries cover its period. \end{itemize} -How the grid's boundaries affect the sequence of points depends on how the contents of the file were computed. In many cases, such as histograms and PMFs computed by metadynamics (\ref{sec:colvarbias_ebmeta}), the values of $\xi_i$ in the first few columns correspond to the \emph{midpoints} of the corresponing bins, i.e.\ $\xi^{1}_{1} = \mathtt{min}(\xi_{i}) + \mathtt{width}(\xi_{i})/2$. +How the grid's boundaries affect the sequence of points depends on how the contents of the file were computed. In many cases, such as histograms and PMFs computed by metadynamics (\ref{sec:colvarbias_ebmeta}), the values of $\xi_i$ in the first few columns correspond to the \emph{midpoints} of the corresponding bins, i.e.\ $\xi^{1}_{1} = \mathtt{min}(\xi_{i}) + \mathtt{width}(\xi_{i})/2$. However, there is a slightly different format in PMF files computed by ABF (\ref{sec:colvarbias_abf}) or other biases that use thermodynamic integration (\ref{sec:colvarbias_ti}). In these cases, it is free-energy gradients that are accumulated on an \texttt{(npoints)}-long grid along each variable $\xi$: after these gradients are integrated, the resulting PMF is discretized on a slightly larger grid with \texttt{(npoints+1)} points along $\xi$ (unless the interval is periodic). Therefore, the grid's outer edges extend by $\mathtt{width}(\xi_{i})/2$ above and below the specified boundaries, so that for instance $\mathtt{min}(\xi_{i})$ in the header appears to be shifted back by $\mathtt{width}(\xi_{i})/2$ compared to what would be expected. \emph{Please keep this difference in mind when comparing PMFs computed by different methods.} @@ -1796,7 +1833,7 @@ \texttt{coordNum}}{% Pairlist control}{% decimal}{% - 0.0}{This controls the pairlist feature, dictating the minimum value for each summation element in Eq.~\ref{eq:cvc_coordNum} such that the pair that contributed the summation element is included in subsequent simulation timesteps until the next pairlist recalculation. For most applications, this value should be small (eg. 0.001) to avoid missing important contributions to the overall sum. Higher values will improve performance by reducing the number of pairs that contribute to the sum. Values above 1 will exclude all possible pair interactions. Similarly, values below 0 will never exclude a pair from consideration. To ensure continuous forces, Eq.~\ref{eq:cvc_coordNum} is further modified by subtracting the tolerance and then rescaling so that each pair covers the range $\left[0, 1\right]$. + 0.0}{This controls the pair list feature, dictating the minimum value for each summation element in Eq.~\ref{eq:cvc_coordNum} such that the pair that contributed the summation element is included in subsequent simulation timesteps until the next pai r list recalculation. For most applications, this value should be small (eg. 0.001) to avoid missing important contributions to the overall sum. Higher values will improve performance by reducing the number of pairs that contribute to the sum. Values above 1 will exclude all possible pair interactions. Similarly, values below 0 will never exclude a pair from consideration. To ensure continuous forces, Eq.~\ref{eq:cvc_coordNum} is further modified by subtracting the tolerance and then rescaling so that each pair covers the range $\left[0, 1\right]$. } \item % @@ -1806,7 +1843,7 @@ \texttt{coordNum}}{% Pairlist regeneration frequency}{% positive integer}{% - 100}{This controls the pairlist feature, dictating how many steps are taken between regenerating pairlists if the tolerance is greater than 0. + 100}{This controls the pairlist feature, dictating how many steps are taken between regenerating pair lists if the tolerance is greater than 0. } \end{cvcoptions} @@ -1816,7 +1853,7 @@ are less than the cutoff), or $N_{\mathtt{group1}}$ if \texttt{group2CenterOnly} is used. For performance reasons, at least one of \texttt{group1} and \texttt{group2} should be of limited size or \texttt{group2CenterOnly} should be used: the cost of the loop over all pairs grows as $N_{\mathtt{group1}} \times N_{\mathtt{group2}}$. -Setting $\mathtt{tolerance} > 0$ ameliorates this to some degree, although every pair is still checked to regenerate the pairlist. +Setting $\mathtt{tolerance} > 0$ ameliorates this to some degree, although every pair is still checked to regenerate the pair list. @@ -1875,7 +1912,7 @@ 3.3~\AA{}), \texttt{expNumer} (with a default value of 6) and \texttt{expDenom} (with a default value of 8). Unlike \texttt{coordNum}, it requires two atom numbers, \texttt{acceptor} and -\texttt{donor}, to be defined. It returns an adimensional number, +\texttt{donor}, to be defined. It returns a dimensionless number, with values between 0 (acceptor and donor far outside the cutoff distance) and 1 (acceptor and donor much closer than the cutoff). @@ -2287,7 +2324,7 @@ Altogether, these are sufficient to represent all three degrees of freedom of a full rotation. However, they also suffer from the potential ``gimbal lock'' problem, which emerges whenever $\theta \simeq \pm 90^\circ$, which includes also the case where the full rotation is small. Under such conditions, the angles $\phi$ and $\psi$ are both ill-defined and cannot be used as collective variables. -For these reasons, it is highly recommmended that Euler angles are used only in simulations where their range of applicability is \emph{known ahead of time}, and excludes configurations where $\theta \simeq \pm 90^\circ$ altogether. +For these reasons, it is highly recommended that Euler angles are used only in simulations where their range of applicability is \emph{known ahead of time}, and excludes configurations where $\theta \simeq \pm 90^\circ$ altogether. \cvsubsubsec{\texttt{orientation}: orientation from reference coordinates.}{sec:cvc_orientation} \labelkey{colvar|orientation} @@ -2312,7 +2349,7 @@ As for the component \texttt{rmsd}, the available options are \texttt{atoms}, \texttt{refPositionsFile}\cvnamebasedonly{, \texttt{refPositionsCol} and \texttt{refPositionsColValue}, } and \texttt{refPositions}. -\textbf{Note:} \texttt{refPositions}and \texttt{refPositionsFile} define the set of positions \emph{from which} the optimal rotation is calculated, but this rotation is not applied to the coordinates of the atoms involved: it is used instead to define the variable itself. +\textbf{Note:} \texttt{refPositions} and \texttt{refPositionsFile} define the set of positions \emph{from which} the optimal rotation is calculated, but this rotation is not applied to the coordinates of the atoms involved: it is used instead to define the variable itself. \begin{cvcoptions} \item % @@ -3207,7 +3244,7 @@ \texttt{aspathCV} and \texttt{azpathCV}}{% The file name of the path file.}{% UNIX filename}{% - Defines the nodes or images that constitutes the path in CV space. The CVs of an image are listed in a line of \texttt{pathFile} using space-seperated format. Lines from top to button in \texttt{pathFile} corresponds images from initial to last. + Defines the nodes or images that constitutes the path in CV space. The CVs of an image are listed in a line of \texttt{pathFile} using space-separated format. Lines from top to button in \texttt{pathFile} corresponds images from initial to last. } \end{cvcoptions} @@ -4104,7 +4141,7 @@ Histograms (\ref{sec:colvarbias_histogram}), ABF (\ref{sec:colvarbias_abf}) and metadynamics (\ref{sec:colvarbias_meta}) all use this number as the initial choice for the grid spacing along this variable. As a typical rule of thumb, \texttt{width} should be no larger than the standard deviation of the colvar in an unbiased simulation (to characterize a local free-energy minimum with at least two points). - Further, many restraints such as harmonic potentials (\ref{sec:colvarbias_harmonic}), harmonic walls (\ref{sec:colvarbias_harmonic_walls}) and linear restraints (\ref{sec:colvarbias_linear}) also use this parameter to define the \emph{expected fluctuations} of the colvar, alowing to express the force constant in terms of this unit. + Further, many restraints such as harmonic potentials (\ref{sec:colvarbias_harmonic}), harmonic walls (\ref{sec:colvarbias_harmonic_walls}) and linear restraints (\ref{sec:colvarbias_linear}) also use this parameter to define the \emph{expected fluctuations} of the colvar, allowing to express the force constant in terms of this unit. This is most useful with multi-dimensional restraints acting on variables that have very different units (for examples, working with \lengthunit{} and degrees $^\circ$ simultaneously): a single force constant can be used for all, which is converted to the respective unit of each variable when forces are applied (the are printed at initialization time. } @@ -5205,7 +5242,7 @@ free energy gradient at the current point $\bm{\xi}$ in the collective variable subspace, and $\alpha(N_\xi)$ is a scaling factor that is ramped from 0 to 1 as the local number of samples $N_\xi$ increases -to prevent nonequilibrium effects in the early phase of the simulation, +to prevent non-equilibrium effects in the early phase of the simulation, when the gradient estimate has a large variance. See the \texttt{fullSamples} parameter below for details. @@ -5214,7 +5251,7 @@ force introduced in the equations of motion guarantees that in the bin centered around $\bm{\xi}$, the forces acting along the selected collective variables average -to zero over time. Eventually, as the undelying free energy surface is canceled +to zero over time. Eventually, as the underlying free energy surface is canceled by the adaptive bias, evolution of the system along $\bm{\xi}$ is governed mainly by diffusion. Although this implementation of ABF can in principle be used in @@ -5282,7 +5319,7 @@ to application of the ABF} {positive integer} {200} - {To avoid nonequilibrium effects due to large fluctuations of the force exerted along the + {To avoid non-equilibrium effects due to large fluctuations of the force exerted along the colvars, it is recommended to apply a biasing force only after a the estimate has started converging. If \texttt{fullSamples} is non-zero, the applied biasing force is scaled by a factor $\alpha(N_\xi)$ between 0 and 1. @@ -5753,13 +5790,13 @@ V_{\mathrm{meta}}(\bm{\xi},t)dt} } \end{equation} -where $t_{e}$ is the time after which the bias potential grows (approximately) evenly during the simulation and $t_{tot}$ is the total simulation time. The free energy calculated according to eq.~\ref{eq:colvars_meta_fes_av} can thus be obtained averaging on time mutiple time-dependent free energy estimates, that can be printed out through the keyword \texttt{keepFreeEnergyFiles}. An alternative is to obtain the free energy profiles by summing the hills added during the simulation; the hills trajectory can be printed out by enabling the option \texttt{writeHillsTrajectory}. +where $t_{e}$ is the time after which the bias potential grows (approximately) evenly during the simulation and $t_{tot}$ is the total simulation time. The free energy calculated according to eq.~\ref{eq:colvars_meta_fes_av} can thus be obtained averaging on time multiple time-dependent free energy estimates, that can be printed out through the keyword \texttt{keepFreeEnergyFiles}. An alternative is to obtain the free energy profiles by summing the hills added during the simulation; the hills trajectory can be printed out by enabling the option \texttt{writeHillsTrajectory}. \cvsubsubsec{Treatment of the PMF boundaries}{sec:colvarbias_meta_boundaries} In typical scenarios the Gaussian hills of a metadynamics potential are interpolated and summed together onto a grid, which is much more efficient than computing each hill independently at every step (the keyword \refkey{useGrids}{metadynamics|useGrids} is \texttt{on} by default). -This numerical approximation typically yields neglibile errors in the resulting PMF \cite{Fiorin2013}. +This numerical approximation typically yields negligible errors in the resulting PMF \cite{Fiorin2013}. However, due to the finite thickness of the Gaussian function, the metadynamics potential would suddenly vanish each time a variable exceeds its grid boundaries. To avoid such discontinuity the Colvars metadynamics code will keep an explicit copy of each hill that straddles a grid's boundary, and will use it to compute metadynamics forces outside the grid. @@ -6105,7 +6142,7 @@ \\ \end{tabular} -\textbf{Tip:} Besides setting a meaninful value for \texttt{targetDistMinVal}, the exploration of unphysically low values of the target distribution (which would lead to very large hills and possibly numerical instabilities) can be also prevented by restricting sampling to a given interval, using e.g.{} \texttt{harmonicWalls} restraint (\ref{sec:colvarbias_harmonic_walls}). +\textbf{Tip:} Besides setting a meaningful value for \texttt{targetDistMinVal}, the exploration of unphysically low values of the target distribution (which would lead to very large hills and possibly numerical instabilities) can be also prevented by restricting sampling to a given interval, using e.g.{} \texttt{harmonicWalls} restraint (\ref{sec:colvarbias_harmonic_walls}). @@ -6372,7 +6409,7 @@ boolean}{% \texttt{off}}{% If this option is chosen and \texttt{colvarsTrajFrequency} is not zero, the positions of the restraint centers will be written to the trajectory file during the simulation. - This option allows to conveniently extract the PMF from the colvars trajectory files in a steered MD calculation. + This option allows to conveniently extract the PMF from the Colvars trajectory files in a steered MD calculation. } \end{itemize} @@ -6537,7 +6574,7 @@ V(\xi) = \left\{ \begin{array}{l l} \frac{1}{2} k \left(\frac{\xi - \xi_{\mathrm{upper}}}{w_{\xi}}\right)^2 & \mathrm{if }\ \xi > \xi_{\mathrm{upper}} \\ - 0 & \mathrm{if }\ \xi_{\mathrm{lower}} \leq \xi \geq \xi_{\mathrm{upper}} \\ + 0 & \mathrm{if }\ \xi_{\mathrm{lower}} \leq \xi \leq \xi_{\mathrm{upper}} \\ \frac{1}{2} k \left(\frac{\xi - \xi_{\mathrm{lower}}}{w_{\xi}}\right)^2 & \mathrm{if }\ \xi < \xi_{\mathrm{lower}} \end{array} \right. diff --git a/doc/cv_version.tex b/doc/cv_version.tex index b6e6fcfa9..1360e7493 100644 --- a/doc/cv_version.tex +++ b/doc/cv_version.tex @@ -1 +1 @@ -\newcommand{\cvversion}{2023-09-07} +\newcommand{\cvversion}{2023-10-03} diff --git a/gromacs/cmake/gmxManageColvars.cmake b/gromacs/cmake/gmxManageColvars.cmake index 6fb5c9e9c..f8057f435 100644 --- a/gromacs/cmake/gmxManageColvars.cmake +++ b/gromacs/cmake/gmxManageColvars.cmake @@ -1,27 +1,63 @@ -# This file is part of the Collective Variables module (Colvars). -# The original version of Colvars and its updates are located at: -# https://github.com/Colvars/colvars -# Please update all Colvars source files before making any changes. -# If you wish to distribute your changes, please submit them to the -# Colvars repository at GitHub. +# +# This file is part of the GROMACS molecular simulation package. +# +# Copyright 2023- The GROMACS Authors +# and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. +# Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. +# +# GROMACS is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# GROMACS is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with GROMACS; if not, see +# https://www.gnu.org/licenses, or write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# If you want to redistribute modifications to GROMACS, please +# consider that scientific software is very special. Version +# control is crucial - bugs must be traceable. We will be happy to +# consider code for inclusion in the official distribution, but +# derived work must not be called official GROMACS. Details are found +# in the README & COPYING files - if they are missing, get the +# official version at https://www.gromacs.org. +# +# To help us fund GROMACS development, we humbly ask that you cite +# the research papers on the package. Check out https://www.gromacs.org. -function(gmx_manage_colvars) - file(GLOB COLVARS_SOURCES ${PROJECT_SOURCE_DIR}/src/external/colvars/*.cpp) - add_library(colvars OBJECT ${COLVARS_SOURCES}) +# Build Colvars library as bundled in a GROMACS worktree; not supporting external linkage yet +gmx_option_multichoice(GMX_USE_COLVARS + "Build the collective variables (Colvars) library interfaced with GROMACS" + INTERNAL + INTERNAL NONE) +mark_as_advanced(GMX_USE_COLVARS) - # Colvars requires a correct definition of __cplusplus, which MSVC doesn't give by default - target_compile_options(colvars PRIVATE $<$:/Zc:__cplusplus>) +function(gmx_manage_colvars) + if(GMX_USE_COLVARS STREQUAL "INTERNAL") + file(GLOB COLVARS_SOURCES ${PROJECT_SOURCE_DIR}/src/external/colvars/*.cpp) + add_library(colvars OBJECT ${COLVARS_SOURCES}) + # Set correctly the value of __cplusplus, which MSVC doesn't do by default + target_compile_options(colvars PRIVATE $<$:/Zc:__cplusplus>) + set(HAVE_COLVARS 1 CACHE INTERNAL "Is Colvars available?") + else() + set(HAVE_COLVARS 0 CACHE INTERNAL "Is Colvars available?") + endif() endfunction() function(gmx_include_colvars_headers) - target_include_directories(libgromacs PRIVATE ${PROJECT_SOURCE_DIR}/src/external/colvars) - + if(GMX_USE_COLVARS STREQUAL "INTERNAL") + target_include_directories(libgromacs PRIVATE ${PROJECT_SOURCE_DIR}/src/external/colvars) + endif() endfunction() function(gmx_set_colvars_torch) - find_package(Torch) - if (Torch_FOUND) set_property(TARGET colvars PROPERTY CXX_STANDARD 17) target_compile_definitions(colvars PRIVATE -DTORCH) @@ -29,6 +65,5 @@ function(gmx_set_colvars_torch) target_include_directories(colvars PRIVATE ${TORCH_INCLUDE_DIRS}) target_link_libraries(libgromacs PRIVATE "${TORCH_LIBRARIES}") endif() - endfunction() diff --git a/gromacs/gromacs-2020.x/colvarproxy_gromacs.cpp b/gromacs/gromacs-2020.x/colvarproxy_gromacs.cpp index ab959e126..2db82a776 100644 --- a/gromacs/gromacs-2020.x/colvarproxy_gromacs.cpp +++ b/gromacs/gromacs-2020.x/colvarproxy_gromacs.cpp @@ -471,6 +471,7 @@ void colvarproxy_gromacs::calculateForces( const gmx::ArrayRef &f_out = forceProviderOutput->forceWithVirial_.force_; matrix local_colvars_virial = { { 0 } }; + const bool computeVirial = forceProviderOutput->forceWithVirial_.computeVirial_; // Pass the applied forces back to GROMACS for (int i = 0; i < n_colvars_atoms; i++) @@ -482,16 +483,22 @@ void colvarproxy_gromacs::calculateForces( const int *locndx = cr->dd->ga2la->findHome(i_global); if (locndx) { f_out[*locndx] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } // Do nothing if atom is not local } else { // Non MPI-parallel f_out[i_global] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } } - forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + if (computeVirial) { + forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + } return; } diff --git a/gromacs/gromacs-2021.x/colvarproxy_gromacs.cpp b/gromacs/gromacs-2021.x/colvarproxy_gromacs.cpp index 892637ea9..3ae4a69f2 100644 --- a/gromacs/gromacs-2021.x/colvarproxy_gromacs.cpp +++ b/gromacs/gromacs-2021.x/colvarproxy_gromacs.cpp @@ -473,6 +473,7 @@ void colvarproxy_gromacs::calculateForces( const gmx::ArrayRef &f_out = forceProviderOutput->forceWithVirial_.force_; matrix local_colvars_virial = { { 0 } }; + const bool computeVirial = forceProviderOutput->forceWithVirial_.computeVirial_; // Pass the applied forces back to GROMACS for (int i = 0; i < n_colvars_atoms; i++) @@ -484,16 +485,22 @@ void colvarproxy_gromacs::calculateForces( const int *locndx = cr->dd->ga2la->findHome(i_global); if (locndx) { f_out[*locndx] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } // Do nothing if atom is not local } else { // Non MPI-parallel f_out[i_global] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } } - forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + if (computeVirial) { + forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + } return; } diff --git a/gromacs/gromacs-2022.x/colvarproxy_gromacs.cpp b/gromacs/gromacs-2022.x/colvarproxy_gromacs.cpp index 59b8661f5..02b673f02 100644 --- a/gromacs/gromacs-2022.x/colvarproxy_gromacs.cpp +++ b/gromacs/gromacs-2022.x/colvarproxy_gromacs.cpp @@ -473,6 +473,7 @@ void colvarproxy_gromacs::calculateForces( const gmx::ArrayRef &f_out = forceProviderOutput->forceWithVirial_.force_; matrix local_colvars_virial = { { 0 } }; + const bool computeVirial = forceProviderOutput->forceWithVirial_.computeVirial_; // Pass the applied forces back to GROMACS for (int i = 0; i < n_colvars_atoms; i++) @@ -484,16 +485,22 @@ void colvarproxy_gromacs::calculateForces( const int *locndx = cr->dd->ga2la->findHome(i_global); if (locndx) { f_out[*locndx] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } // Do nothing if atom is not local } else { // Non MPI-parallel f_out[i_global] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } } - forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + if (computeVirial) { + forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + } return; } diff --git a/gromacs/gromacs-2023.x/colvarproxy_gromacs.cpp b/gromacs/gromacs-2023.x/colvarproxy_gromacs.cpp index 6b17cda5a..d9eba8713 100644 --- a/gromacs/gromacs-2023.x/colvarproxy_gromacs.cpp +++ b/gromacs/gromacs-2023.x/colvarproxy_gromacs.cpp @@ -473,6 +473,7 @@ void colvarproxy_gromacs::calculateForces( const gmx::ArrayRef &f_out = forceProviderOutput->forceWithVirial_.force_; matrix local_colvars_virial = { { 0 } }; + const bool computeVirial = forceProviderOutput->forceWithVirial_.computeVirial_; // Pass the applied forces back to GROMACS for (int i = 0; i < n_colvars_atoms; i++) @@ -484,16 +485,22 @@ void colvarproxy_gromacs::calculateForces( const int *locndx = cr->dd->ga2la->findHome(i_global); if (locndx) { f_out[*locndx] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } // Do nothing if atom is not local } else { // Non MPI-parallel f_out[i_global] += f_colvars[i]; - add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i], x_colvars_unwrapped[i]); + } } } - forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + if (computeVirial) { + forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + } return; } diff --git a/gromacs/gromacs-mdmodules.patch b/gromacs/gromacs-mdmodules.patch new file mode 100644 index 000000000..5220f5506 --- /dev/null +++ b/gromacs/gromacs-mdmodules.patch @@ -0,0 +1,227 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 31e2bbbec5..5dc774e726 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -646,6 +646,8 @@ include(gmxManageLmfit) + + include(gmxManageMuparser) + ++include(gmxManageColvars) ++ + ################################################## + # Process SIMD instruction settings + ################################################## +diff --git a/src/config.h.cmakein b/src/config.h.cmakein +index 470777bbff..5e3fac0c93 100644 +--- a/src/config.h.cmakein ++++ b/src/config.h.cmakein +@@ -457,6 +457,9 @@ + /* Define if we have muparser support */ + #cmakedefine01 HAVE_MUPARSER + ++/* Define if we are building with Colvars */ ++#cmakedefine01 HAVE_COLVARS ++ + /* Build using clang analyzer */ + #cmakedefine01 GMX_CLANG_ANALYZER + +diff --git a/src/gromacs/CMakeLists.txt b/src/gromacs/CMakeLists.txt +index 96107341de..a722ddd5da 100644 +--- a/src/gromacs/CMakeLists.txt ++++ b/src/gromacs/CMakeLists.txt +@@ -146,6 +146,14 @@ if (WIN32) + endif() + list(APPEND libgromacs_object_library_dependencies thread_mpi) + ++ ++gmx_manage_colvars() ++if(NOT GMX_USE_COLVARS STREQUAL "NONE") ++ list(APPEND libgromacs_object_library_dependencies colvars) ++endif() ++ ++ ++ + # This code is here instead of utility/CMakeLists.txt, because CMake + # custom commands and source file properties can only be set in the directory + # that contains the target that uses them. +@@ -210,6 +218,8 @@ if(GMX_GPU_FFT_ROCFFT) + target_link_libraries(libgromacs PRIVATE roc::rocfft) + endif() + ++gmx_include_colvars_headers() ++ + target_link_libraries(libgromacs PRIVATE $) + # As long as the libgromacs target has source files that reference headers from + # modules that don't provide CMake targets, libgromacs needs to use `src/` +diff --git a/src/gromacs/applied_forces/CMakeLists.txt b/src/gromacs/applied_forces/CMakeLists.txt +index 3c4987f892..cc5f50c7a6 100644 +--- a/src/gromacs/applied_forces/CMakeLists.txt ++++ b/src/gromacs/applied_forces/CMakeLists.txt +@@ -67,6 +67,10 @@ gmx_add_libgromacs_sources( + add_subdirectory(awh) + add_subdirectory(densityfitting) + add_subdirectory(qmmm) ++if(NOT GMX_USE_COLVARS STREQUAL "NONE") ++ # Build Colvars interface files if the library is available (default) ++ add_subdirectory(colvars) ++endif() + + if (BUILD_TESTING) + add_subdirectory(tests) +diff --git a/src/gromacs/mdrun/mdmodules.cpp b/src/gromacs/mdrun/mdmodules.cpp +index 5221ff025c..faa8ac0b9e 100644 +--- a/src/gromacs/mdrun/mdmodules.cpp ++++ b/src/gromacs/mdrun/mdmodules.cpp +@@ -33,10 +33,15 @@ + */ + #include "gmxpre.h" + ++#include "config.h" // Allow conditional compilation of individual MDModules ++ + #include "mdmodules.h" + + #include + ++#ifdef HAVE_COLVARS ++#include "gromacs/applied_forces/colvars/colvarsMDModule.h" ++#endif + #include "gromacs/applied_forces/densityfitting/densityfitting.h" + #include "gromacs/applied_forces/electricfield.h" + #include "gromacs/applied_forces/qmmm/qmmm.h" +@@ -67,7 +72,12 @@ public: + field_(createElectricFieldModule()), + imd_(createInteractiveMolecularDynamicsModule()), + qmmm_(QMMMModuleInfo::create()), ++#ifdef HAVE_COLVARS ++ swapCoordinates_(createSwapCoordinatesModule()), ++ colvars_(ColvarsModuleInfo::create()) ++#else + swapCoordinates_(createSwapCoordinatesModule()) ++#endif + { + } + +@@ -78,6 +88,9 @@ public: + field_->mdpOptionProvider()->initMdpOptions(&appliedForcesOptions); + densityFitting_->mdpOptionProvider()->initMdpOptions(&appliedForcesOptions); + qmmm_->mdpOptionProvider()->initMdpOptions(&appliedForcesOptions); ++#ifdef HAVE_COLVARS ++ colvars_->mdpOptionProvider()->initMdpOptions(&appliedForcesOptions); ++#endif + // In future, other sections would also go here. + } + +@@ -106,6 +119,9 @@ public: + std::unique_ptr imd_; + std::unique_ptr qmmm_; + std::unique_ptr swapCoordinates_; ++#ifdef HAVE_COLVARS ++ std::unique_ptr colvars_; ++#endif + + /*! \brief List of registered MDModules + * +@@ -129,6 +145,9 @@ void MDModules::initMdpTransform(IKeyValueTreeTransformRules* rules) + impl_->field_->mdpOptionProvider()->initMdpTransform(appliedForcesScope.rules()); + impl_->densityFitting_->mdpOptionProvider()->initMdpTransform(appliedForcesScope.rules()); + impl_->qmmm_->mdpOptionProvider()->initMdpTransform(appliedForcesScope.rules()); ++#ifdef HAVE_COLVARS ++ impl_->colvars_->mdpOptionProvider()->initMdpTransform(appliedForcesScope.rules()); ++#endif + } + + void MDModules::buildMdpOutput(KeyValueTreeObjectBuilder* builder) +@@ -136,6 +155,9 @@ void MDModules::buildMdpOutput(KeyValueTreeObjectBuilder* builder) + impl_->field_->mdpOptionProvider()->buildMdpOutput(builder); + impl_->densityFitting_->mdpOptionProvider()->buildMdpOutput(builder); + impl_->qmmm_->mdpOptionProvider()->buildMdpOutput(builder); ++#ifdef HAVE_COLVARS ++ impl_->colvars_->mdpOptionProvider()->buildMdpOutput(builder); ++#endif + } + + void MDModules::assignOptionsToModules(const KeyValueTreeObject& params, IKeyValueTreeErrorHandler* errorHandler) +@@ -173,6 +195,9 @@ ForceProviders* MDModules::initForceProviders() + impl_->field_->initForceProviders(impl_->forceProviders_.get()); + impl_->densityFitting_->initForceProviders(impl_->forceProviders_.get()); + impl_->qmmm_->initForceProviders(impl_->forceProviders_.get()); ++#ifdef HAVE_COLVARS ++ impl_->colvars_->initForceProviders(impl_->forceProviders_.get()); ++#endif + for (auto&& module : impl_->modules_) + { + module->initForceProviders(impl_->forceProviders_.get()); +@@ -184,12 +209,18 @@ void MDModules::subscribeToPreProcessingNotifications() + { + impl_->densityFitting_->subscribeToPreProcessingNotifications(&impl_->notifiers_); + impl_->qmmm_->subscribeToPreProcessingNotifications(&impl_->notifiers_); ++#ifdef HAVE_COLVARS ++ impl_->colvars_->subscribeToPreProcessingNotifications(&impl_->notifiers_); ++#endif + } + + void MDModules::subscribeToSimulationSetupNotifications() + { + impl_->densityFitting_->subscribeToSimulationSetupNotifications(&impl_->notifiers_); + impl_->qmmm_->subscribeToSimulationSetupNotifications(&impl_->notifiers_); ++#ifdef HAVE_COLVARS ++ impl_->colvars_->subscribeToSimulationSetupNotifications(&impl_->notifiers_); ++#endif + } + + void MDModules::add(std::shared_ptr module) +diff --git a/src/gromacs/mdrun/runner.cpp b/src/gromacs/mdrun/runner.cpp +index bacb6321e9..68cbdc02c4 100644 +--- a/src/gromacs/mdrun/runner.cpp ++++ b/src/gromacs/mdrun/runner.cpp +@@ -1135,10 +1135,12 @@ int Mdrunner::mdrunner() + setupNotifier.notify(*inputrec->internalParameters); + } + +- // Let MdModules know the .tpr filename ++ // Let MdModules know the .tpr input and .edr output filenames + { + gmx::MdRunInputFilename mdRunInputFilename = { ftp2fn(efTPR, filenames.size(), filenames.data()) }; + setupNotifier.notify(mdRunInputFilename); ++ gmx::EdrOutputFilename edrOutputFilename = { ftp2fn(efEDR, filenames.size(), filenames.data()) }; ++ setupNotifier.notify(edrOutputFilename); + } + + if (fplog != nullptr) +diff --git a/src/gromacs/mdrunutility/mdmodulesnotifiers.h b/src/gromacs/mdrunutility/mdmodulesnotifiers.h +index 69872b3535..7d1520fc26 100644 +--- a/src/gromacs/mdrunutility/mdmodulesnotifiers.h ++++ b/src/gromacs/mdrunutility/mdmodulesnotifiers.h +@@ -167,6 +167,14 @@ struct MdRunInputFilename + std::string mdRunFilename_; + }; + ++/*! \libinternal \brief Energy trajectory output filename from Mdrun. ++ */ ++struct EdrOutputFilename ++{ ++ //! The name of energy output file ++ std::string edrOutputFilename_; ++}; ++ + /*! \libinternal \brief Notification for QM program input filename + * provided by user as command-line argument for grompp + */ +@@ -354,6 +362,7 @@ struct MDModulesNotifiers + * \tparam t_commrec& Provides a communicator to the modules during simulation + * setup + * \tparam MdRunInputFilename& Allows modules to know .tpr filename during mdrun ++ * \tparam EdrOutputFilename& Allows modules to know .edr filename during mdrun + */ + BuildMDModulesNotifier::type simulationSetupNotifier_; ++ const MdRunInputFilename&, ++ const EdrOutputFilename&>::type simulationSetupNotifier_; + }; + + } // namespace gmx diff --git a/gromacs/gromacs-mdmodules/.clang-format b/gromacs/gromacs-mdmodules/.clang-format new file mode 100644 index 000000000..258e4e29d --- /dev/null +++ b/gromacs/gromacs-mdmodules/.clang-format @@ -0,0 +1,131 @@ +--- +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlinesLeft: true +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: true +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: false +BinPackParameters: false +BraceWrapping: + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Allman +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: AfterColon +BreakAfterJavaFieldAnnotations: false +BreakInheritanceList: AfterColon +BreakStringLiterals: true +ColumnLimit: 100 +CommentPragmas: '^ IWYU pragma:|NOLINT' +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 8 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeBlocks: Regroup +IncludeCategories: + # Make sure gmxpre.h goes first. + - Regex: 'gmxpre.h' + Priority: -1 + # config.h goes immediately after the main header. + - Regex: 'config.h' + Priority: 1 + # Group deprecated C compatibility headers. + - Regex: '^<[^/]*\.h>' + Priority: 2 + # Group C compatibility headers. + - Regex: '^' + Priority: 3 + # Get remaining C++ headers, as best we can tell. + - Regex: '^<[^/]*>' + Priority: 4 + # Get any other headers included from the system. + - Regex: '^<.*>' + Priority: 5 + # Group headers by API level. + # Non-private gromacs headers. + - Regex: 'gromacs/.*' + Priority: 20 + - Regex: 'testutils/.*' + Priority: 30 + - Regex: 'programs/.*' + Priority: 40 + - Regex: 'gmxapi/.*' + Priority: 50 + - Regex: 'nblib/.*' + Priority: 60 + # Try to match external headers by looking for paths not yet matched, + # but insert before recognized paths. + - Regex: '.*/.*' + Priority: 10 + # Private headers. Unfortunately, also matches headers without subdirectories or angle-brackets. + - Regex: '.*' + Priority: 100 +IncludeIsMainRegex: '(([-_](test|tests|unittest))?([-_][0-9]+)*)$' +IncludeIsMainSourceRegex: '(\.cu)$' +IndentPPDirectives: AfterHash +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 2 +PenaltyReturnTypeOnItsOwnLine: 100 +PointerAlignment: Left +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpaceAfterTemplateKeyword: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/CMakeLists.txt b/gromacs/gromacs-mdmodules/applied_forces/colvars/CMakeLists.txt new file mode 100644 index 000000000..caac6e083 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/CMakeLists.txt @@ -0,0 +1,45 @@ +# +# This file is part of the GROMACS molecular simulation package. +# +# Copyright 2023- The GROMACS Authors +# and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. +# Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. +# +# GROMACS is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# GROMACS is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with GROMACS; if not, see +# https://www.gnu.org/licenses, or write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# If you want to redistribute modifications to GROMACS, please +# consider that scientific software is very special. Version +# control is crucial - bugs must be traceable. We will be happy to +# consider code for inclusion in the official distribution, but +# derived work must not be called official GROMACS. Details are found +# in the README & COPYING files - if they are missing, get the +# official version at https://www.gromacs.org. +# +# To help us fund GROMACS development, we humbly ask that you cite +# the research papers on the package. Check out https://www.gromacs.org. + +gmx_add_libgromacs_sources( + colvarsMDModule.cpp + colvarsoptions.cpp + colvarspreprocessor.cpp + colvarssimulationsparameters.cpp + colvarsforceprovider.cpp + colvarproxygromacs.cpp + ) + +if (BUILD_TESTING) + add_subdirectory(tests) +endif() diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.cpp new file mode 100644 index 000000000..934b19a36 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.cpp @@ -0,0 +1,258 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements the Colvars GROMACS proxy class + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ + +#include "colvarproxygromacs.h" + +#include + + +namespace gmx +{ + +ColvarProxyGromacs::ColvarProxyGromacs(const std::string& colvarsConfigString, + t_atoms atoms, + PbcType pbcType, + const MDLogger* logger, + bool doParsing, + const std::map& input_strings, + real ensTemp) : + gmx_atoms(atoms), pbcType_(pbcType), logger_(logger), doParsing_(doParsing) +{ + + //! From colvarproxy + + // Retrieve masses and charges from input file + updated_masses_ = updated_charges_ = true; + + // User-scripted forces are not available in GROMACS + have_scripts = false; + + angstrom_value_ = 0.1; + + // From Gnu units + // $ units -ts 'k' 'kJ/mol/K/avogadro' + // 0.0083144621 + boltzmann_ = 0.0083144621; + + // Get the thermostat temperature. + set_target_temperature(ensTemp); + + // GROMACS random number generation. + rng.seed(makeRandomSeed()); + + + // Read configuration file and set up the proxy during Pre processing + // and during simulation phase but only on the master node. + if (doParsing) + { + + // Retrieve input files stored as string in the KVT + // Add them to the map of colvars input data. + for (const auto& [input_name, content] : input_strings) + { + input_streams_[input_name] = new std::istringstream(content); + } + + colvars = new colvarmodule(this); + cvm::log(cvm::line_marker); + cvm::log("Start colvars Initialization."); + + + colvars->cite_feature("GROMACS engine"); + colvars->cite_feature("Colvars-GROMACS interface"); + + if (cvm::debug()) + { + cvm::log("Initializing the colvars proxy object.\n"); + } + + int error_code = colvarproxy::setup(); + error_code |= colvars->read_config_string(colvarsConfigString); + error_code |= colvars->update_engine_parameters(); + error_code |= colvars->setup_input(); + + if (error_code != COLVARS_OK) + { + error("Error when initializing Colvars module."); + } + + // Citation Reporter + cvm::log(std::string("\n") + colvars->feature_report(0) + std::string("\n")); + + // TODO: Retrieve step + // if (step != 0) { + // cvm::log("Initializing step number to "+cvm::to_str(step)+".\n"); + // } + + // colvars->it = colvars->it_restart = step; + colvars->set_initial_step(static_cast(0L)); + } +} + + +cvm::real ColvarProxyGromacs::rand_gaussian() +{ + return normal_distribution(rng); +} + +void ColvarProxyGromacs::log(std::string const& message) +{ + if (logger_) + { + std::istringstream is(message); + std::string line; + while (std::getline(is, line)) + { + GMX_LOG(logger_->info).appendText("colvars: " + line + "\n"); + } + } +} + +void ColvarProxyGromacs::error(std::string const& message) +{ + log(message); + GMX_THROW(InternalError("Error in collective variables module.\n")); +} + + +int ColvarProxyGromacs::set_unit_system(std::string const& units_in, bool /*colvars_defined*/) +{ + if (units_in != "gromacs") + { + cvm::error( + "Specified unit system \"" + units_in + + "\" is unsupported in Gromacs. Supported units are \"gromacs\" (nm, kJ/mol).\n"); + return COLVARS_ERROR; + } + return COLVARS_OK; +} + + +// **************** ATOMS **************** + +int ColvarProxyGromacs::check_atom_id(int atom_number) +{ + // GROMACS uses zero-based arrays. + int const aid = (atom_number - 1); + + if (cvm::debug()) + { + log("Adding atom " + cvm::to_str(atom_number) + " for collective variables calculation.\n"); + } + if ((aid < 0) || (aid >= gmx_atoms.nr)) + { + cvm::error("Error: invalid atom number specified, " + cvm::to_str(atom_number) + "\n", + COLVARS_INPUT_ERROR); + return COLVARS_INPUT_ERROR; + } + + return aid; +} + + +int ColvarProxyGromacs::init_atom(int atom_number) +{ + // GROMACS uses zero-based arrays. + int aid = atom_number - 1; + + for (size_t i = 0; i < atoms_ids.size(); i++) + { + if (atoms_ids[i] == aid) + { + // this atom id was already recorded + atoms_refcount[i] += 1; + return i; + } + } + + aid = check_atom_id(atom_number); + + if (aid < 0) + { + return COLVARS_INPUT_ERROR; + } + + int const index = add_atom_slot(aid); + update_atom_properties(index); + return index; +} + +void ColvarProxyGromacs::update_atom_properties(int index) +{ + + // update mass + double const mass = gmx_atoms.atom[atoms_ids[index]].m; + if (mass <= 0.001) + { + this->log("Warning: near-zero mass for atom " + cvm::to_str(atoms_ids[index] + 1) + + "; expect unstable dynamics if you apply forces to it.\n"); + } + atoms_masses[index] = mass; + // update charge + atoms_charges[index] = gmx_atoms.atom[atoms_ids[index]].q; +} + +ColvarProxyGromacs::~ColvarProxyGromacs() +{ + if (colvars != nullptr) + { + delete colvars; + colvars = nullptr; + } +} + + +cvm::rvector ColvarProxyGromacs::position_distance(cvm::atom_pos const& pos1, cvm::atom_pos const& pos2) const +{ + rvec r1, r2, dr; + r1[0] = pos1.x; + r1[1] = pos1.y; + r1[2] = pos1.z; + r2[0] = pos2.x; + r2[1] = pos2.y; + r2[2] = pos2.z; + + pbc_dx(&gmx_pbc, r2, r1, dr); + return cvm::atom_pos(dr[0], dr[1], dr[2]); +} + + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.h new file mode 100644 index 000000000..008a19410 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarproxygromacs.h @@ -0,0 +1,141 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares the Colvars GROMACS proxy class + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ + +#ifndef GMX_APPLIED_FORCES_COLVARPROXYGROMACS_H +#define GMX_APPLIED_FORCES_COLVARPROXYGROMACS_H + +#include "external/colvars/colvaratoms.h" +#include "external/colvars/colvarproxy.h" + +#include "gromacs/pbcutil/pbc.h" +#include "gromacs/random/tabulatednormaldistribution.h" +#include "gromacs/random/threefry.h" +#include "gromacs/topology/atoms.h" +#include "gromacs/utility/logger.h" + + +namespace gmx +{ + + +/*! \internal \brief + * Implements a GROMACS version of colvarproxy. + * This class hold for the communication between colvars and GROMACS. + * 2 child class will inherit from this one: one during pre processing (ColvarsPreProcessor) + * and one during the simulation (ColvarsForceProvider). + * Most of the work needed for the communication will be implemented in this class. + */ +class ColvarProxyGromacs : public colvarproxy +{ + +protected: + //! Atoms topology + t_atoms gmx_atoms; + + //! Box infos + PbcType pbcType_; + t_pbc gmx_pbc; + + // GROMACS logger instance + const MDLogger* logger_ = nullptr; + + //! Activate or not the parsing of the Colvars config file + bool doParsing_; + + + // GROMACS random number generation. + DefaultRandomEngine rng; // gromacs random number generator + TabulatedNormalDistribution<> normal_distribution; + + +public: + friend class cvm::atom; + + /*! \brief Construct ColvarProxyGromacs from its parameters + * + * \param[in] colvarsConfigString Content of the colvars input file. + * \param[in] atoms Atoms topology + * \param[in] pbcType Periodic boundary conditions + * \param[in] logger GROMACS logger instance + * \param[in] doParsing Wether the input file should be parsed. + * \param[in] input_strings Input files stored as string in the KVT + * \param[in] ensTemp the constant ensemble temperature + */ + ColvarProxyGromacs(const std::string& colvarsConfigString, + t_atoms atoms, + PbcType pbcType, + const MDLogger* logger, + bool doParsing, + const std::map& input_strings, + real ensTemp); + ~ColvarProxyGromacs() override; + + /// Update colvars topology of one atom mass and charge from the GROMACS topology + void update_atom_properties(int index); + + //! From colvarproxy + + // **************** SYSTEM-WIDE PHYSICAL QUANTITIES **************** + cvm::real rand_gaussian() override; + + // **************** INPUT/OUTPUT **************** + /// Print a message to the main log + void log(std::string const& message) override; + /// Print a message to the main log and let the rest of the program handle the error + void error(std::string const& message) override; + /// Request to set the units used internally by Colvars + int set_unit_system(std::string const& units_in, bool colvars_defined) override; + + /// Initialize colvars atom from GROMACS topology + int init_atom(int atom_number) override; + + /*! \brief Check if atom belongs to the global index of atoms + * \param[in] atom_number Colvars index of the atom to check + */ + int check_atom_id(int atom_number) override; + + // **************** PERIODIC BOUNDARY CONDITIONS **************** + cvm::rvector position_distance(cvm::atom_pos const& pos1, cvm::atom_pos const& pos2) const override; +}; + +} // namespace gmx + +#endif // GMX_APPLIED_FORCES_COLVARPROXYGROMACS_H diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.cpp new file mode 100644 index 000000000..8130e1b52 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.cpp @@ -0,0 +1,277 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements Colvars MDModule class + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include "colvarsMDModule.h" + +#include +#include + +#include "gromacs/domdec/localatomsetmanager.h" +#include "gromacs/fileio/checkpoint.h" +#include "gromacs/mdtypes/commrec.h" +#include "gromacs/mdtypes/imdmodule.h" +#include "gromacs/utility/keyvaluetreebuilder.h" + +#include "colvarsforceprovider.h" +#include "colvarsoptions.h" +#include "colvarssimulationsparameters.h" + + +namespace gmx +{ + +namespace +{ + +/*! \internal + * \brief Colvars module + * + * Class that implements the colvars MDModule + */ +class ColvarsMDModule final : public IMDModule +{ +public: + //! \brief Construct the colvars module. + explicit ColvarsMDModule() = default; + + // Now callbacks for several kinds of MdModuleNotification are created + // and subscribed, and will be dispatched correctly at run time + // based on the type of the parameter required by the lambda. + + /*! \brief Requests to be notified during pre-processing. + * + * \param[in] notifier allows the module to subscribe to notifications from MdModules. + * + * The Colvars MDModule subscribes to these notifications: + * - storing its internal parameters in a tpr file by writing to a + * key-value-tree during pre-processing by a function taking a + * KeyValueTreeObjectBuilder as parameter + * - Acess topology using gmx_mtop_t notification + * - Access MDLogger for notifications output + * - Access warninp for for grompp warnings output + * - Coordinates, PBC and box for setting up the proxy + */ + void subscribeToPreProcessingNotifications(MDModulesNotifiers* notifier) override + { + + if (!colvarsOptions_.isActive()) + { + return; + } + + // Writing internal parameters during pre-processing + const auto writeInternalParametersFunction = [this](KeyValueTreeObjectBuilder treeBuilder) { + colvarsOptions_.writeInternalParametersToKvt(treeBuilder); + }; + notifier->preProcessingNotifier_.subscribe(writeInternalParametersFunction); + + // Access of the topology during pre-processing + const auto processTopologyFunction = [this](gmx_mtop_t* mtop) { + colvarsOptions_.processTopology(mtop); + }; + notifier->preProcessingNotifier_.subscribe(processTopologyFunction); + + // Set Logger during pre-processing + const auto setLoggerFunction = [this](const MDLogger& logger) { + colvarsOptions_.setLogger(logger); + }; + notifier->preProcessingNotifier_.subscribe(setLoggerFunction); + + // Notification of the Coordinates, box and pbc during pre-processing + const auto processCoordinatesFunction = [this](const CoordinatesAndBoxPreprocessed& coord) { + colvarsOptions_.processCoordinates(coord); + }; + notifier->preProcessingNotifier_.subscribe(processCoordinatesFunction); + + // Notification for the temperature + const auto processTemperatureFunction = [this](const EnsembleTemperature& temp) { + colvarsOptions_.processTemperature(temp); + }; + notifier->preProcessingNotifier_.subscribe(processTemperatureFunction); + } + + + /*! \brief Request to be notified. + * The Colvars MDModule subscribes to these notifications: + * - the LocalAtomSetManager sets in the simulation parameter setup + * by taking a LocalAtomSetManager * as parameter + * - the type of periodic boundary conditions that are used + * by taking a PeriodicBoundaryConditionType as parameter + * - the topology of the system + * by taking a gmx_mtop_t * as parameter + * - the communicator + * by taking a t_commrec as parameter + * - the simulation time step + * by taking a SimulationTimeStep as a parameter + * - MDLogger for notifications output + * - the .edr filename + * to provide a user-defined output prefix for Colvars output files + */ + void subscribeToSimulationSetupNotifications(MDModulesNotifiers* notifier) override + { + if (!colvarsOptions_.isActive()) + { + return; + } + + // Reading internal parameters during simulation setup + const auto readInternalParametersFunction = [this](const KeyValueTreeObject& tree) { + colvarsOptions_.readInternalParametersFromKvt(tree); + }; + notifier->simulationSetupNotifier_.subscribe(readInternalParametersFunction); + // Retrieve the LocalAtomSetManager during simulation setup + const auto setLocalAtomManagerFunction = [this](LocalAtomSetManager* localAtomSetManager) { + this->ColvarsSimulationsParameters_.setLocalAtomSetManager(localAtomSetManager); + }; + notifier->simulationSetupNotifier_.subscribe(setLocalAtomManagerFunction); + + // constructing PBC during simulation setup + const auto setPeriodicBoundaryContionsFunction = [this](const PbcType& pbc) { + this->ColvarsSimulationsParameters_.setPeriodicBoundaryConditionType(pbc); + }; + notifier->simulationSetupNotifier_.subscribe(setPeriodicBoundaryContionsFunction); + + // Retrieve the topology during simulation setup + const auto setTopologyFunction = [this](const gmx_mtop_t& mtop) { + this->ColvarsSimulationsParameters_.setTopology(mtop); + }; + notifier->simulationSetupNotifier_.subscribe(setTopologyFunction); + + // Retrieve the Communication Record during simulations setup + const auto setCommFunction = [this](const t_commrec& cr) { + this->ColvarsSimulationsParameters_.setComm(cr); + }; + notifier->simulationSetupNotifier_.subscribe(setCommFunction); + + // setting the simulation time step + const auto setSimulationTimeStepFunction = [this](const SimulationTimeStep& simulationTimeStep) { + this->ColvarsSimulationsParameters_.setSimulationTimeStep(simulationTimeStep.delta_t); + }; + notifier->simulationSetupNotifier_.subscribe(setSimulationTimeStepFunction); + // Saving MDLogger during simulation setup + const auto setLoggerFunction = [this](const MDLogger& logger) { + this->ColvarsSimulationsParameters_.setLogger(logger); + }; + notifier->simulationSetupNotifier_.subscribe(setLoggerFunction); + + // Get edr filename + const auto setEdrFileNameFunction = [this](const EdrOutputFilename& filename) { + colvarsOptions_.processEdrFilename(filename); + }; + notifier->simulationSetupNotifier_.subscribe(setEdrFileNameFunction); + + // writing checkpoint data + const auto checkpointDataWriting = [this](MDModulesWriteCheckpointData checkpointData) { + colvarsForceProvider_->writeCheckpointData(checkpointData, ColvarsModuleInfo::name_); + }; + notifier->checkpointingNotifier_.subscribe(checkpointDataWriting); + + // reading checkpoint data + const auto checkpointDataReading = [this](MDModulesCheckpointReadingDataOnMain checkpointData) { + colvarsState_.readState(checkpointData.checkpointedData_, ColvarsModuleInfo::name_); + }; + notifier->checkpointingNotifier_.subscribe(checkpointDataReading); + + // Handle the atoms redistributed signal + const auto handleAtomsRedistributedSignal = + [this](const MDModulesAtomsRedistributedSignal& atomsRedistributedSignal) { + colvarsForceProvider_->processAtomsRedistributedSignal(atomsRedistributedSignal); + }; + notifier->simulationSetupNotifier_.subscribe(handleAtomsRedistributedSignal); + } + + //! From IMDModule + IMdpOptionProvider* mdpOptionProvider() override { return &colvarsOptions_; } + //! From IMDModule + //! Colvars provide its own output + IMDOutputProvider* outputProvider() override { return nullptr; } + + //! From IMDModule + //! Add this module to the force providers if active + void initForceProviders(ForceProviders* forceProviders) override + { + if (colvarsOptions_.isActive()) + { + + colvarsForceProvider_ = std::make_unique( + colvarsOptions_.colvarsConfigContent(), + ColvarsSimulationsParameters_.localAtomSetManager(), + ColvarsSimulationsParameters_.periodicBoundaryConditionType(), + ColvarsSimulationsParameters_.simulationTimeStep(), + ColvarsSimulationsParameters_.topology(), + ColvarsSimulationsParameters_.comm(), + ColvarsSimulationsParameters_.logger(), + colvarsOptions_.colvarsAtomCoords(), + colvarsOptions_.colvarsOutputPrefix(), + colvarsOptions_.colvarsInputFiles(), + colvarsState_, + colvarsOptions_.colvarsEnsTemp()); + forceProviders->addForceProvider(colvarsForceProvider_.get()); + } + } + + +private: + //! The options provided for colvars + ColvarsOptions colvarsOptions_; + + //! Parameters that become available at simulation setup time. + ColvarsSimulationsParameters ColvarsSimulationsParameters_; + + //! Object that evaluates the forces + std::unique_ptr colvarsForceProvider_; + + //! The state of colvars force provider to be written in the checkpoint + ColvarsForceProviderState colvarsState_; +}; + + +} // namespace + +std::unique_ptr ColvarsModuleInfo::create() +{ + return std::make_unique(); +} + +const std::string ColvarsModuleInfo::name_ = "colvars"; + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.h new file mode 100644 index 000000000..67cd450f9 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsMDModule.h @@ -0,0 +1,70 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares factory structure for Colvars MDModule class + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#ifndef COLVARS_MDMODULE_H +#define COLVARS_MDMODULE_H + +#include +#include + +namespace gmx +{ + +class IMDModule; + +/*! \internal + \brief Information about the colvars module. + * + * Provides name and method to create a colvars module. + */ +struct ColvarsModuleInfo +{ + /*! \brief + * Creates a module for applying forces according to a colvar bias. + */ + static std::unique_ptr create(); + //! The name of the module + static const std::string name_; +}; + + +} // namespace gmx + +#endif diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.cpp new file mode 100644 index 000000000..bd414fda3 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.cpp @@ -0,0 +1,457 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements the force provider for colvars + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ + +#include "colvarsforceprovider.h" + +#include + +#include "external/colvars/colvars_memstream.h" + +#include "gromacs/domdec/localatomsetmanager.h" +#include "gromacs/fileio/checkpoint.h" +#include "gromacs/gmxlib/network.h" +#include "gromacs/mdlib/broadcaststructs.h" +#include "gromacs/mdlib/groupcoord.h" +#include "gromacs/mdtypes/commrec.h" +#include "gromacs/mdtypes/enerdata.h" +#include "gromacs/mdtypes/forceoutput.h" + + +namespace gmx +{ + +/******************************************************************** + * ColvarsForceProviderState + */ + +const std::string ColvarsForceProviderState::nColvarsAtomsName_ = "nColvarsAtoms"; + +const std::string ColvarsForceProviderState::xOldWholeName_ = "xOldWhole"; + +const std::string ColvarsForceProviderState::colvarStateFileName_ = "colvarStateFile"; + +const std::string ColvarsForceProviderState::colvarStateFileSizeName_ = "colvarStateFileSize"; + +void ColvarsForceProviderState::writeState(KeyValueTreeObjectBuilder kvtBuilder, + const std::string& identifier) const +{ + writeKvtCheckpointValue(nColvarsAtoms_, nColvarsAtomsName_, identifier, kvtBuilder); + + // Write colvars atoms coords + auto DoubleArrayAdder = kvtBuilder.addUniformArray(xOldWholeName_); + for (int i = 0; i < nColvarsAtoms_; i++) + { + for (int j = 0; j < DIM; j++) + { + DoubleArrayAdder.addValue(static_cast(xOldWhole_[i][j])); + } + } + + + writeKvtCheckpointValue( + static_cast(colvarStateFile_.size()), colvarStateFileSizeName_, identifier, kvtBuilder); + + // Write unformatted Colvars state file, one character at a time + auto charArrayAdder = kvtBuilder.addUniformArray(colvarStateFileName_); + for (const unsigned char& c : colvarStateFile_) + { + charArrayAdder.addValue(c); + } +} + +void ColvarsForceProviderState::readState(const KeyValueTreeObject& kvtData, const std::string& identifier) +{ + + stateRead_ = true; + + readKvtCheckpointValue(compat::make_not_null(&nColvarsAtoms_), nColvarsAtomsName_, identifier, kvtData); + + + // Read colvars atoms coords + auto kvtDoubleArray = kvtData[xOldWholeName_].asArray().values(); + + + // Make sure the coordinates saved are consistent with the dimensions + if (kvtDoubleArray.size() % DIM != 0) + { + GMX_THROW(InconsistentInputError( + "Coordinates saved in the checkpoint file are in the wrong format.")); + } + + snew(xOldWhole_, nColvarsAtoms_); + for (size_t i = 0; i < kvtDoubleArray.size() / DIM; i++) + { + for (int j = 0; j < DIM; j++) + { + xOldWhole_[i][j] = static_cast(kvtDoubleArray[i * DIM + j].cast()); + } + } + + int64_t colvarStateFileSize_ = 0L; + readKvtCheckpointValue( + compat::make_not_null(&colvarStateFileSize_), colvarStateFileSizeName_, identifier, kvtData); + + // Read Colvars state file; use explicit loop because kvt types don't support std::copy + auto charArray = kvtData[colvarStateFileName_].asArray().values(); + colvarStateFile_.resize(colvarStateFileSize_); + auto it = colvarStateFile_.begin(); + for (const auto& c : charArray) + { + *it = c.cast(); + it++; + } +} + + +/******************************************************************** + * ColvarsForceProvider + */ + +ColvarsForceProvider::ColvarsForceProvider(const std::string& colvarsConfigString, + LocalAtomSetManager* localAtomSetManager, + PbcType pbcType, + double simulationTimeStep, + t_atoms atoms, + const t_commrec* cr, + const MDLogger* logger, + const std::vector& colvarsCoords, + const std::string& outputPrefix, + const std::map& KVTInputs, + const ColvarsForceProviderState& state, + real ensTemp) : + ColvarProxyGromacs(colvarsConfigString, atoms, pbcType, logger, MAIN(cr), KVTInputs, ensTemp), + stateToCheckpoint_(state) +{ + + + // Total forces on each atom is not available in GROMACS + total_force_requested = false; + + // Neighbor Search boolean activated during initialization + gmx_bNS = true; + + // Get GROMACS timestep (picosecond to femtosecond) + set_integration_timestep(simulationTimeStep * 1000.0); + + output_prefix_str = outputPrefix; + + + if (doParsing_) + { + colvars->setup_output(); + } + + + // MPI initialisation + + // Initialise attributs for the MPI communication + if (MAIN(cr)) + { + // Retrieve the number of colvar atoms + n_colvars_atoms = atoms_ids.size(); + } + + if (PAR(cr)) + { + // Let the other nodes know the number of colvar atoms and their ids to construct a gmx::LocalAtomSet + block_bc(cr->mpi_comm_mygroup, n_colvars_atoms); + atoms_ids.resize(n_colvars_atoms); + nblock_bc(cr->mpi_comm_mygroup, n_colvars_atoms, atoms_ids.data()); + + // Initialise atoms_new_colvar_forces on non-MAIN nodes + if (!MAIN(cr)) + { + atoms_new_colvar_forces.resize(n_colvars_atoms); + } + } + + // Cast int into Index of the indices for the localAtomSetManager->add() function + std::vector index_atoms(atoms_ids.begin(), atoms_ids.end()); + colvars_atoms = std::make_unique(localAtomSetManager->add(index_atoms)); + + + snew(x_colvars_unwrapped, n_colvars_atoms); + snew(xa_shifts, n_colvars_atoms); + snew(xa_eshifts, n_colvars_atoms); + snew(f_colvars, n_colvars_atoms); + snew(xa_old_whole, n_colvars_atoms); + + + // Check state status (did we read a cpt file?) + if (MAIN(cr)) + { + if (stateToCheckpoint_.stateRead_) + { + if (stateToCheckpoint_.nColvarsAtoms_ != n_colvars_atoms) + { + cvm::error( + "Number of colvars atoms in the .cpt file differs from the one in .tpr " + "file"); + } + + // Copy back the last whole positions from the .cpt file + for (int i = 0; i < n_colvars_atoms; i++) + { + copy_rvec(stateToCheckpoint_.xOldWhole_[i], xa_old_whole[i]); + } + + int error_code = colvarproxy::setup(); + // Read input state file + error_code |= colvars->set_input_state_buffer(stateToCheckpoint_.colvarStateFile_); + error_code |= colvars->setup_input(); + + if (error_code != COLVARS_OK) + { + error("Error when initializing Colvars module."); + } + } + else + { + // Initialize state variables + stateToCheckpoint_.nColvarsAtoms_ = n_colvars_atoms; + snew(stateToCheckpoint_.xOldWhole_, n_colvars_atoms); + + // Use input coords for the last whole positions. + for (int i = 0; i < n_colvars_atoms; i++) + { + copy_rvec(colvarsCoords[i], xa_old_whole[i]); + } + } + } + + + // // Communicate initial coordinates to all processes + if (PAR(cr)) + { + nblock_bc(cr->mpi_comm_mygroup, n_colvars_atoms, xa_old_whole); + } + + + if (MAIN(cr) && cvm::debug()) + { + cvm::log("atoms_ids = " + cvm::to_str(atoms_ids) + "\n"); + cvm::log("atoms_refcount = " + cvm::to_str(atoms_refcount) + "\n"); + cvm::log("positions = " + cvm::to_str(atoms_positions) + "\n"); + cvm::log("total_forces = " + cvm::to_str(atoms_total_forces) + "\n"); + cvm::log("atoms_new_colvar_forces = " + cvm::to_str(atoms_new_colvar_forces) + "\n"); + cvm::log(cvm::line_marker); + log("done initializing the colvars proxy object.\n"); + } + + if (MAIN(cr)) + { + cvm::log(cvm::line_marker); + cvm::log("End colvars Initialization.\n\n"); + } +} + +ColvarsForceProvider::~ColvarsForceProvider() +{ + if (doParsing_) + { + post_run(); + sfree(stateToCheckpoint_.xOldWhole_); + } + sfree(x_colvars_unwrapped); + sfree(xa_shifts); + sfree(xa_eshifts); + sfree(f_colvars); + sfree(xa_old_whole); +} + +void ColvarsForceProvider::calculateForces(const ForceProviderInput& forceProviderInput, + ForceProviderOutput* forceProviderOutput) +{ + + // Construct t_pbc struct + set_pbc(&gmx_pbc, pbcType_, forceProviderInput.box_); + + const t_commrec* cr = &(forceProviderInput.cr_); + // Local atom coords + const gmx::ArrayRef x = forceProviderInput.x_; + // Local atom coords (coerced into into old gmx type) + const rvec* x_pointer = &(x.data()->as_vec()); + const auto& box = forceProviderInput.box_; + + colvars->it = forceProviderInput.step_; + + + // Eventually there needs to be an interface to update local data upon neighbor search + // We could check if by chance all atoms are in one node, and skip communication + communicate_group_positions(cr, + x_colvars_unwrapped, + xa_shifts, + xa_eshifts, + gmx_bNS, + x_pointer, + colvars_atoms->numAtomsGlobal(), + colvars_atoms->numAtomsLocal(), + colvars_atoms->localIndex().data(), + colvars_atoms->collectiveIndex().data(), + xa_old_whole, + box); + + + // Communicate_group_positions takes care of removing shifts (unwrapping) + // in single node jobs, communicate_group_positions() is efficient and adds no overhead + + if (MAIN(cr)) + { + // On non-MAIN nodes, jump directly to applying the forces + + // backup applied forces if necessary to calculate total forces (if available in future + // version of Gromacs) if (total_force_requested) + // previous_atoms_new_colvar_forces = atoms_new_colvar_forces; + + // Zero the forces on the atoms, so that they can be accumulated by the colvars. + for (size_t i = 0; i < atoms_new_colvar_forces.size(); i++) + { + atoms_new_colvar_forces[i].x = atoms_new_colvar_forces[i].y = + atoms_new_colvar_forces[i].z = 0.0; + } + + // Get the atom positions from the Gromacs array. + for (size_t i = 0; i < atoms_ids.size(); i++) + { + atoms_positions[i] = cvm::rvector( + x_colvars_unwrapped[i][0], x_colvars_unwrapped[i][1], x_colvars_unwrapped[i][2]); + } + + // // Get total forces if required (if available in future version of Gromacs) + // if (total_force_requested && cvm::step_relative() > 0) { + // for (size_t i = 0; i < atoms_ids.size(); i++) { + // size_t aid = atoms_ids[i]; + // atoms_total_forces[i] = cvm::rvector(f[aid][0], f[aid][1], f[aid][2]); + // } + // } + + bias_energy = 0.0; + // Call the collective variable module to fill atoms_new_colvar_forces + if (colvars->calc() != COLVARS_OK) + { + cvm::error("Error calling colvars->calc()\n"); + } + + // Copy the forces to C array for broadcasting + for (int i = 0; i < n_colvars_atoms; i++) + { + f_colvars[i][0] = atoms_new_colvar_forces[i].x; + f_colvars[i][1] = atoms_new_colvar_forces[i].y; + f_colvars[i][2] = atoms_new_colvar_forces[i].z; + } + + forceProviderOutput->enerd_.term[F_COM_PULL] += bias_energy; + + // Copy last whole positions into State struct. + for (int i = 0; i < n_colvars_atoms; i++) + { + copy_rvec(xa_old_whole[i], stateToCheckpoint_.xOldWhole_[i]); + } + } // MAIN node + + + // Broadcast the forces to all the nodes + if (PAR(cr)) + { + nblock_bc(cr->mpi_comm_mygroup, n_colvars_atoms, f_colvars); + } + + + const gmx::ArrayRef& f_out = forceProviderOutput->forceWithVirial_.force_; + matrix local_colvars_virial = { { 0 } }; + const bool computeVirial = forceProviderOutput->forceWithVirial_.computeVirial_; + const auto& localcolvarsIndex = colvars_atoms->localIndex(); + const auto& collectivecolvarsIndex = colvars_atoms->collectiveIndex(); + // Loop through local atoms to aply the colvars forces + for (gmx::Index l = 0; l < localcolvarsIndex.ssize(); l++) + { + /* Get the right index of the local colvars atoms */ + int i_local = localcolvarsIndex[l]; + /* Index of this local atom in the collective colvars atom arrays */ + int i_colvars = collectivecolvarsIndex[l]; + /* Add */ + rvec_inc(f_out[i_local], f_colvars[i_colvars]); + if (computeVirial) { + add_virial_term(local_colvars_virial, f_colvars[i_colvars], x_colvars_unwrapped[i_colvars]); + } + } + + if (computeVirial) { + forceProviderOutput->forceWithVirial_.addVirialContribution(local_colvars_virial); + } + + // Re-set the flag for proper update + gmx_bNS = false; +} + +void ColvarsForceProvider::add_virial_term(matrix vir, const rvec& f, const gmx::RVec& x) +{ + for (int j = 0; j < DIM; j++) + { + for (int m = 0; m < DIM; m++) + { + vir[j][m] -= 0.5 * f[j] * x[m]; + } + } +} + +// Pass restraint energy value for current timestep to MD engine +void ColvarsForceProvider::add_energy(cvm::real energy) +{ + bias_energy += energy; +} + + +void ColvarsForceProvider::writeCheckpointData(MDModulesWriteCheckpointData checkpointWriting, + const std::string& moduleName) +{ + colvars->write_state_buffer(stateToCheckpoint_.colvarStateFile_); + stateToCheckpoint_.writeState(checkpointWriting.builder_, moduleName); +} + +void ColvarsForceProvider::processAtomsRedistributedSignal(const MDModulesAtomsRedistributedSignal& /*signal*/) +{ + // So far, just update the Neighbor Search boolean for the communicate_group_positions() in calculateForces() + gmx_bNS = true; +} + + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.h new file mode 100644 index 000000000..0647db0f7 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsforceprovider.h @@ -0,0 +1,210 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares the force provider for colvars + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ + +#ifndef GMX_APPLIED_FORCES_COLVARSFORCEPROVIDER_H +#define GMX_APPLIED_FORCES_COLVARSFORCEPROVIDER_H + + +#include "gromacs/domdec/localatomset.h" +#include "gromacs/mdrunutility/mdmodulesnotifiers.h" +#include "gromacs/mdtypes/iforceprovider.h" + +#include "colvarproxygromacs.h" + + +namespace gmx +{ + + +/*! \internal + * \brief Parameters defining the internal colvars force provider state. + */ +struct ColvarsForceProviderState +{ + + /*! \brief Indicate if a colvars state was read. + */ + bool stateRead_ = false; + + /*! \brief The number of colvars atoms. + */ + std::int64_t nColvarsAtoms_ = 0; + + /*! \brief String naming variable holding the number of colvars atoms. + * \note Changing this name will break backwards compability for checkpoint file writing. + */ + static const std::string nColvarsAtomsName_; + + //! Last known whole positions of the colvars atoms + //! \todo Change the type to a standard one to avoid memory leak. + rvec* xOldWhole_ = nullptr; + + /*! \brief String naming variable holding the last known whole positions of the colvars atoms + * \note Changing this name will break backwards compability for checkpoint file writing. + */ + static const std::string xOldWholeName_; + + /*! \brief Content of the unformatted Colvars state file. + */ + std::vector colvarStateFile_; + + /*! \brief String naming variable holding the content of the unformatted Colvars state file. + * \note Changing this name will break backwards compability for checkpoint file writing. + */ + static const std::string colvarStateFileName_; + + /*! \brief String naming variable holding the size of the unformatted Colvars state file. + * \note Changing this name will break backwards compability for checkpoint file writing. + */ + static const std::string colvarStateFileSizeName_; + + /*! \brief Write internal colvars data into a key value tree. + * The entries to the kvt are identified with identifier, so that a variable + * is indentified with the key "identifier-variablename" + * + * \param[in] kvtBuilder enables writing to the Key-Value-Tree + * the state is written to + * + * \param[in] identifier denotes the module that is checkpointing the data + */ + void writeState(KeyValueTreeObjectBuilder kvtBuilder, const std::string& identifier) const; + + /*! \brief Read the internal parameters from the checkpoint file on master + * \param[in] kvtData holding the checkpoint information + * \param[in] identifier identifies the data in a key-value-tree + */ + void readState(const KeyValueTreeObject& kvtData, const std::string& identifier); +}; + + +/*! \internal \brief + * Implements IForceProvider for colvars. + * Override the ColvarProxyGromacs generic class for the communication. + */ +class ColvarsForceProvider final : public ColvarProxyGromacs, public IForceProvider +{ + +private: + //! The total bias energy on all colvars atoms. + double bias_energy; + + //! Is this a neighbor-search step? + bool gmx_bNS; + + + // Node-local bookkepping data + //! The colvars atom indices + std::unique_ptr colvars_atoms; + //! Total number of Colvars atoms + int n_colvars_atoms = 0; + //! Unwrapped positions for all Colvars atoms, communicated to all nodes. + rvec* x_colvars_unwrapped = nullptr; + //! Shifts for all Colvars atoms, to make molecule(s) whole. + ivec* xa_shifts = nullptr; + //! Extra shifts since last DD step. + ivec* xa_eshifts = nullptr; + //! Old positions for all Colvars atoms on master. + rvec* xa_old_whole = nullptr; + //! Position of each local atom in the collective array. + int* xa_ind = nullptr; + //! Bias forces on all Colvars atoms + rvec* f_colvars = nullptr; + + ColvarsForceProviderState stateToCheckpoint_; + + +public: + friend class cvm::atom; + //! Construct force provider for colvars from its parameters + ColvarsForceProvider(const std::string& colvarsConfigString, + LocalAtomSetManager* localAtomSetManager, + PbcType pbcType, + double simulationTimeStep, + t_atoms atoms, + const t_commrec* cr, + const MDLogger* logger, + const std::vector& colvarsCoords, + const std::string& outputPrefix, + const std::map& KVTInputs, + const ColvarsForceProviderState& state, + real ensTemp); + + ~ColvarsForceProvider() override; + + /*! \brief Calculate colvars forces + * \param[in] forceProviderInput input for force provider + * \param[out] forceProviderOutput output for force provider + */ + void calculateForces(const ForceProviderInput& forceProviderInput, + ForceProviderOutput* forceProviderOutput) override; + + // Compute virial tensor for position r and force f, and add to matrix vir + void add_virial_term(matrix vir, const rvec& f, const gmx::RVec& x); + + /*! \brief Write internal colvars data to checkpoint file. + * \param[in] checkpointWriting enables writing to the Key-Value-Tree + * that is used for storing the checkpoint + * information + * \param[in] moduleName names the module that is checkpointing this force-provider + * + * \note The provided state to checkpoint has to change if checkpointing + * is moved before the force provider call in the MD-loop. + */ + void writeCheckpointData(MDModulesWriteCheckpointData checkpointWriting, const std::string& moduleName); + + /*! \brief Process atomsRedistributedSignal notification during mdrun. + * \param[in] atomsRedistributedSignal signal recieved + */ + void processAtomsRedistributedSignal(const MDModulesAtomsRedistributedSignal& atomsRedistributedSignal); + + + //! From colvarproxy + + /*! \brief add energy to the total count of bias energy bias_energy + * \param[in] energy the value of energy to add + * + */ + void add_energy(cvm::real energy) override; +}; + +} // namespace gmx + +#endif // GMX_APPLIED_FORCES_COLVARSFORCEPROVIDER_H diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.cpp new file mode 100644 index 000000000..47a8e3fad --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.cpp @@ -0,0 +1,324 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements options for Colvars. + */ +#include "gmxpre.h" + +#include "colvarsoptions.h" + +#include + +#include "gromacs/math/vec.h" +#include "gromacs/options/basicoptions.h" +#include "gromacs/options/optionsection.h" +#include "gromacs/topology/mtop_util.h" +#include "gromacs/utility/arrayref.h" +#include "gromacs/utility/keyvaluetreebuilder.h" +#include "gromacs/utility/keyvaluetreetransform.h" +#include "gromacs/utility/path.h" +#include "gromacs/utility/strconvert.h" +#include "gromacs/utility/textreader.h" + +#include "colvarspreprocessor.h" + + +namespace gmx +{ + +namespace +{ + +/*! \brief Helper to declare mdp transform rules. + * + * Enforces uniform mdp options that are always prepended with the correct + * string for the densityfitting mdp options. + * + * \tparam ToType type to be transformed to + * \tparam TransformWithFunctionType type of transformation function to be used + * + * \param[in] rules KVT transformation rules + * \param[in] transformationFunction the function to transform the flat kvt tree + * \param[in] optionTag string tag that describes the mdp option, appended to the + * default string for the density guided simulation + */ +template +void colvarsMdpTransformFromString(IKeyValueTreeTransformRules* rules, + TransformWithFunctionType transformationFunction, + const std::string& optionTag) +{ + rules->addRule() + .from("/" + c_colvarsModuleName + "-" + optionTag) + .to("/" + c_colvarsModuleName + "/" + optionTag) + .transformWith(transformationFunction); +} + +} // namespace + + +void ColvarsOptions::initMdpTransform(IKeyValueTreeTransformRules* rules) +{ + const auto& stringIdentityTransform = [](std::string s) { return s; }; + colvarsMdpTransformFromString(rules, &fromStdString, c_activeTag_); + colvarsMdpTransformFromString(rules, stringIdentityTransform, c_colvarsFileNameTag_); +} + + +void ColvarsOptions::buildMdpOutput(KeyValueTreeObjectBuilder* builder) const +{ + // new empty line before writing colvars mdp values + builder->addValue("comment-" + c_colvarsModuleName + "empty-line", ""); + + builder->addValue("comment-" + c_colvarsModuleName + "-module", "; Colvars bias"); + builder->addValue(c_colvarsModuleName + "-" + c_activeTag_, active_); + + if (active_) + { + builder->addValue("comment-" + c_colvarsModuleName + "-" + c_colvarsFileNameTag_, + "; colvars config file"); + builder->addValue(c_colvarsModuleName + "-" + c_colvarsFileNameTag_, colvarsFileName_); + } +} + + +void ColvarsOptions::initMdpOptions(IOptionsContainerWithSections* options) +{ + auto section = options->addSection(OptionSection(c_colvarsModuleName.c_str())); + section.addOption(BooleanOption(c_activeTag_.c_str()).store(&active_)); + section.addOption(StringOption(c_colvarsFileNameTag_.c_str()).store(&colvarsFileName_)); +} + + +void ColvarsOptions::writeInternalParametersToKvt(KeyValueTreeObjectBuilder treeBuilder) +{ + + // Copy the content of the colvars input file into a string for latter save in KVT + colvarsConfigString = TextReader::readFileToString(colvarsFileName_); + + // Write colvars input file as a string + treeBuilder.addValue(c_colvarsModuleName + "-" + c_configStringTag_, colvarsConfigString); + + + ColvarsPreProcessor colvarsPreProcess( + colvarsConfigString, gmx_atoms, pbc, logger_, box, x, ensembleTemperature); + //! Vector with colvars atoms coordinates + colvarsAtomCoords_ = colvarsPreProcess.getColvarsCoords(); + + // Save other colvars input files into the KVT + if (!colvarsPreProcess.inputStreamsToKVT(treeBuilder, c_colvarsModuleName + "-" + c_inputStreamsTag_)) + { + GMX_THROW(InternalError("Cannot save colvars input files into the tpr.")); + } + + // Write colvars atoms coords + auto DoubleArrayAdder = + treeBuilder.addUniformArray(c_colvarsModuleName + "-" + c_startingCoordsTag_); + for (const auto& indexValue : colvarsAtomCoords_) + { + for (int j = 0; j < DIM; j++) + { + DoubleArrayAdder.addValue(static_cast(indexValue[j])); + } + } + + // Write ensemble temperature + treeBuilder.addValue(c_colvarsModuleName + "-" + c_ensTempTag_, ensembleTemperature); +} + + +void ColvarsOptions::readInternalParametersFromKvt(const KeyValueTreeObject& tree) +{ + + if (!active_) + { + return; + } + + + // Retrieve the content of all inputfiles listed in the KVT as "colvars-inputStreams-filename" + for (const auto& a : tree.properties()) + { + std::size_t pos = a.key().find(c_colvarsModuleName + "-" + c_inputStreamsTag_); + if (pos != std::string::npos) + { + std::string filename = a.key().substr( + pos + std::string(c_colvarsModuleName + "-" + c_inputStreamsTag_).size() + 1); + + inputFiles[filename] = tree[a.key()].cast(); + } + } + + if (!tree.keyExists(c_colvarsModuleName + "-" + c_configStringTag_)) + { + GMX_THROW(InconsistentInputError( + "Cannot find colvars-configString required for colvars simulation.")); + } + colvarsConfigString = tree[c_colvarsModuleName + "-" + c_configStringTag_].cast(); + + + if (!tree.keyExists(c_colvarsModuleName + "-" + c_startingCoordsTag_)) + { + GMX_THROW(InconsistentInputError( + "Cannot find colvars-startingCoords required for colvars simulation.")); + } + + auto kvtDoubleArray = tree[c_colvarsModuleName + "-" + c_startingCoordsTag_].asArray().values(); + + + // Make sure the coordinates saved are consistent with the dimensions + if (kvtDoubleArray.size() % DIM != 0) + { + GMX_THROW(InconsistentInputError( + "Coordinates saved in colvars-startingCoords are in the wrong format.")); + } + + for (size_t i = 0; i < kvtDoubleArray.size() / DIM; i++) + { + RVec x; + for (int j = 0; j < DIM; j++) + { + x[j] = static_cast(kvtDoubleArray[i * DIM + j].cast()); + } + colvarsAtomCoords_.push_back(x); + } + + if (!tree.keyExists(c_colvarsModuleName + "-" + c_ensTempTag_)) + { + GMX_THROW(InconsistentInputError( + "Cannot find ensemble temperature required for colvars simulation.")); + } + ensembleTemperature = tree[c_colvarsModuleName + "-" + c_ensTempTag_].cast(); +} + + +void ColvarsOptions::processTopology(gmx_mtop_t* mtop) +{ + gmx_atoms = gmx_mtop_global_atoms(*mtop); +} + + +void ColvarsOptions::processCoordinates(const CoordinatesAndBoxPreprocessed& coord) +{ + + x = coord.coordinates_.unpaddedConstArrayRef(); + pbc = coord.pbc_; + copy_mat(coord.box_, box); +} + +void ColvarsOptions::setLogger(const MDLogger& logger) +{ + logger_ = &logger; +} + +void ColvarsOptions::processEdrFilename(const EdrOutputFilename& filename) +{ + // Do nothing if Colvars is not active + if (!active_) + { + return; + } + + // Provided name should not be empty + GMX_RELEASE_ASSERT(!filename.edrOutputFilename_.empty(), "Empty name for the *.edr output file"); + + output_prefix_ = stripExtension(std::filesystem::path(filename.edrOutputFilename_).filename()); +} + + +void ColvarsOptions::processTemperature(const EnsembleTemperature& temp) +{ + if (temp.constantEnsembleTemperature_) + { + ensembleTemperature = temp.constantEnsembleTemperature_.value(); + } + else + { + ensembleTemperature = -1; + } +} + +bool ColvarsOptions::isActive() const +{ + return active_; +} + +const std::string& ColvarsOptions::colvarsFileName() const +{ + return colvarsFileName_; +} + + +const std::string& ColvarsOptions::colvarsConfigContent() const +{ + return colvarsConfigString; +} + +const std::vector& ColvarsOptions::colvarsAtomCoords() const +{ + return colvarsAtomCoords_; +} + +const std::string& ColvarsOptions::colvarsOutputPrefix() const +{ + return output_prefix_; +} + +const real& ColvarsOptions::colvarsEnsTemp() const +{ + return ensembleTemperature; +} + +const std::map& ColvarsOptions::colvarsInputFiles() const +{ + return inputFiles; +} + +void ColvarsOptions::setParameters(const std::string& colvarsfile, + t_atoms topology, + ArrayRef coords, + PbcType pbcType, + const matrix boxValues, + real temperature) +{ + colvarsFileName_ = colvarsfile; + gmx_atoms = topology; + x = coords; + pbc = pbcType; + copy_mat(boxValues, box); + ensembleTemperature = temperature; +} + + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.h new file mode 100644 index 000000000..208d7deb6 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarsoptions.h @@ -0,0 +1,217 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares options for Colvars. This class handles parameters set during + * pre-processing time. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#ifndef GMX_APPLIED_FORCES_COLVARSOPTIONS_H +#define GMX_APPLIED_FORCES_COLVARSOPTIONS_H + +#include +#include +#include + +#include "gromacs/math/vectypes.h" +#include "gromacs/mdrunutility/mdmodulesnotifiers.h" +#include "gromacs/mdtypes/imdpoptionprovider.h" +#include "gromacs/topology/atoms.h" +#include "gromacs/utility/logger.h" +#include "gromacs/utility/real.h" + + +namespace gmx +{ + +class KeyValueTreeObject; +class KeyValueTreeBuilder; +struct CoordinatesAndBoxPreprocessed; +struct MdRunInputFilename; + + +//! Tag with name of the Colvars MDModule +static const std::string c_colvarsModuleName = "colvars"; + + +/*! \internal + * \brief Input data storage for colvars + */ +class ColvarsOptions final : public IMdpOptionProvider +{ +public: + //! From IMdpOptionProvider + void initMdpTransform(IKeyValueTreeTransformRules* rules) override; + + /*! \brief + * Build mdp parameters for colvars to be output after pre-processing. + * \param[in, out] builder the builder for the mdp options output KV-tree. + */ + void buildMdpOutput(KeyValueTreeObjectBuilder* builder) const override; + + /*! \brief + * Connect option name and data. + */ + void initMdpOptions(IOptionsContainerWithSections* options) override; + + //! Store the paramers that are not mdp options in the tpr file + void writeInternalParametersToKvt(KeyValueTreeObjectBuilder treeBuilder); + + //! Set the internal parameters that are stored in the tpr file + void readInternalParametersFromKvt(const KeyValueTreeObject& tree); + + /*! \brief Store the topology of the system. + * \param[in,out] mtop topology object + */ + void processTopology(gmx_mtop_t* mtop); + + /*! \brief Process coordinates, PbcType and Box in order to validate the colvars input. + * \param[in] coord structure with coordinates and box dimensions + */ + void processCoordinates(const CoordinatesAndBoxPreprocessed& coord); + + //! Set the MDLogger instance + void setLogger(const MDLogger& logger); + + /*! \brief Process EdrOutputFilename notification during mdrun. + * Used to set the prefix of Colvars output files based on the .edr filename + * \param[in] filename name of the *.edr file that mdrun will produce + */ + void processEdrFilename(const EdrOutputFilename& filename); + + /*! \brief Store the ensemble temperature of the system if available. + * \param[in] temp temperature object + */ + void processTemperature(const EnsembleTemperature& temp); + + //! Report if this colvars module is active + bool isActive() const; + + //! Return the file name of the colvars config + const std::string& colvarsFileName() const; + + //! Return the content of the colvars config file + const std::string& colvarsConfigContent() const; + + //! Return the colvars atoms coordinates + const std::vector& colvarsAtomCoords() const; + + //! Return the prefix for output colvars files + const std::string& colvarsOutputPrefix() const; + + //! Return the ensemble temperature + const real& colvarsEnsTemp() const; + + //! Return the map of all others colvars input files + const std::map& colvarsInputFiles() const; + + /*! \brief Function to set internal paramaters outside the way done + * through the MDModule notifiers and callbacks. + * Use exclusively in the test framework. + * + * \param[in] colvarsfile Name of the colvars input file. + * \param[in] topology Atoms topology + * \param[in] coords Coordinates of each atom in the system + * \param[in] pbcType Periodic boundary conditions + * \param[in] boxValues Matrix with full box of the system + * \param[in] temperature the constant ensemble temperature + */ + void setParameters(const std::string& colvarsfile, + t_atoms topology, + ArrayRef coords, + PbcType pbcType, + const matrix boxValues, + real temperature); + + +private: + //! Indicate if colvars module is active + bool active_ = false; + + /*! \brief Following Tags denotes names of parameters from .mdp file + * \note Changing this strings will break .tpr backwards compability + */ + //! \{ + const std::string c_activeTag_ = "active"; + const std::string c_colvarsFileNameTag_ = "configfile"; + //! \} + + + /*! \brief This tags for parameters which will be generated during grompp + * and stored into *.tpr file via KVT + */ + //! \{ + const std::string c_inputStreamsTag_ = "inputStreams"; + const std::string c_configStringTag_ = "configString"; + const std::string c_startingCoordsTag_ = "startingCoords"; + const std::string c_ensTempTag_ = "ensTemp"; + + //! \} + + //! Colvars config filename, default colvars.dat + std::string colvarsFileName_ = "colvars.dat"; + + + //! Content of the colvars config file + std::string colvarsConfigString; + //! Topology of the system + t_atoms gmx_atoms; + //! Coordinates + ArrayRef x; + //! PBC Type + PbcType pbc; + //! Box + matrix box; + //! Vector with colvars atoms coordinates + std::vector colvarsAtomCoords_; + //! Inputs files saved as strings inside KVT + std::map inputFiles; + + real ensembleTemperature; + + + //! Logger instance + const MDLogger* logger_ = nullptr; + + /*! \brief String containing the prefix for output colvars files + * default value empty, means will be deduced from *.tpr name during mdrun + */ + std::string output_prefix_; +}; + +} // namespace gmx + +#endif diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.cpp new file mode 100644 index 000000000..23414eba0 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.cpp @@ -0,0 +1,95 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements the Colvars GROMACS proxy class during pre-processing. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include "colvarspreprocessor.h" + +#include + +namespace gmx +{ + +ColvarsPreProcessor::ColvarsPreProcessor(const std::string& colvarsConfigString, + t_atoms atoms, + PbcType pbcType, + const MDLogger* logger, + const matrix box, + ArrayRef x, + real ensTemp) : + ColvarProxyGromacs(colvarsConfigString, atoms, pbcType, logger, true, std::map(), ensTemp), + x_(x) +{ + + // Initialize t_pbc struct + set_pbc(&gmx_pbc, pbcType, box); + + cvm::log(cvm::line_marker); + cvm::log("End colvars Initialization.\n\n"); +} + +std::vector ColvarsPreProcessor::getColvarsCoords() +{ + + std::vector colvarsCoords; + + for (const auto& atom_id : atoms_ids) + { + colvarsCoords.push_back(x_[atom_id]); + } + return colvarsCoords; +} + +bool ColvarsPreProcessor::inputStreamsToKVT(KeyValueTreeObjectBuilder treeBuilder, const std::string& tag) +{ + + // Save full copy of the content of the input streams (aka input files) into the KVT. + for (const auto& input_name : list_input_stream_names()) + { + std::istream& stream = input_stream(input_name); + std::ostringstream os; + os << stream.rdbuf(); + treeBuilder.addValue(tag + "-" + input_name, os.str()); + } + return true; +} + + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.h new file mode 100644 index 000000000..3f568fab0 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarspreprocessor.h @@ -0,0 +1,95 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares the Colvars GROMACS proxy class during pre-processing. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#ifndef GMX_APPLIED_FORCES_COLVARSPREPROCESSOR_H +#define GMX_APPLIED_FORCES_COLVARSPREPROCESSOR_H + + +#include "gromacs/utility/arrayref.h" +#include "gromacs/utility/keyvaluetreebuilder.h" + +#include "colvarproxygromacs.h" + + +namespace gmx +{ + +/*! \internal \brief + * Class that read a colvars configuration file during pre-processing and + * retrieve the colvars atoms coordinates to be stored in tpr KVT. + */ +class ColvarsPreProcessor : public ColvarProxyGromacs +{ +public: + /*! \brief Construct ColvarsPreProcessor from its parameters + * + + * \param[in] colvarsConfigString Content of the colvars input file. + * \param[in] atoms Atoms topology + * \param[in] pbcType Periodic boundary conditions + * \param[in] logger GROMACS logger instance + * \param[in] box Matrix with full box of the system + * \param[in] x Coordinates of each atom in the system + * \param[in] ensTemp the constant ensemble temperature + */ + ColvarsPreProcessor(const std::string& colvarsConfigString, + t_atoms atoms, + PbcType pbcType, + const MDLogger* logger, + const matrix box, + ArrayRef x, + real ensTemp); + + + //! Return a vector of the colvars atoms coordinates + std::vector getColvarsCoords(); + + //! Save all input files of colvars into the KVT + bool inputStreamsToKVT(KeyValueTreeObjectBuilder treeBuilder, const std::string& tag); + +private: + //! Atoms coordinates of the whole system + ArrayRef x_; +}; + + +} // namespace gmx + +#endif // GMX_APPLIED_FORCES_COLVARSPREPROCESSOR_H diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.cpp new file mode 100644 index 000000000..238605028 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.cpp @@ -0,0 +1,131 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements the class holding parameters needed during simulation time + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "colvarssimulationsparameters.h" + +#include "gromacs/topology/mtop_util.h" +#include "gromacs/utility/exceptions.h" + +namespace gmx +{ + +void ColvarsSimulationsParameters::setLocalAtomSetManager(LocalAtomSetManager* localAtomSetManager) +{ + localAtomSetManager_ = localAtomSetManager; +} + +LocalAtomSetManager* ColvarsSimulationsParameters::localAtomSetManager() const +{ + if (localAtomSetManager_ == nullptr) + { + GMX_THROW(InternalError("Local atom manager not set for Colvars simulation.")); + } + return localAtomSetManager_; +} + +void ColvarsSimulationsParameters::setTopology(const gmx_mtop_t& mtop) +{ + gmx_atoms = gmx_mtop_global_atoms(mtop); +} + +t_atoms ColvarsSimulationsParameters::topology() const +{ + return gmx_atoms; +} + + +void ColvarsSimulationsParameters::setPeriodicBoundaryConditionType(const PbcType& pbcType) +{ + pbcType_ = std::make_unique(pbcType); +} + +PbcType ColvarsSimulationsParameters::periodicBoundaryConditionType() +{ + if (pbcType_ == nullptr) + { + GMX_THROW( + InternalError("Periodic boundary condition enum not set for Colvars simulation.")); + } + return *pbcType_; +} + + +void ColvarsSimulationsParameters::setSimulationTimeStep(double timeStep) +{ + simulationTimeStep_ = timeStep; +} + +double ColvarsSimulationsParameters::simulationTimeStep() const +{ + return simulationTimeStep_; +} + + +void ColvarsSimulationsParameters::setComm(const t_commrec& cr) +{ + cr_ = &cr; +} + +const t_commrec* ColvarsSimulationsParameters::comm() const +{ + if (cr_ == nullptr) + { + GMX_THROW(InternalError("Communication record not set for Colvars simulation.")); + } + return cr_; +} + + +void ColvarsSimulationsParameters::setLogger(const MDLogger& logger) +{ + logger_ = &logger; +} + + +const MDLogger* ColvarsSimulationsParameters::logger() const +{ + if (logger_ == nullptr) + { + GMX_THROW(InternalError("Logger not set for Colvars simulation.")); + } + return logger_; +} + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.h b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.h new file mode 100644 index 000000000..2f22631ad --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/colvarssimulationsparameters.h @@ -0,0 +1,135 @@ + +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Declares parameters needed during simulation time + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#ifndef GMX_APPLIED_FORCES_COLVARSIMULATIONSPARAMETERS_H +#define GMX_APPLIED_FORCES_COLVARSIMULATIONSPARAMETERS_H + +#include "gromacs/domdec/localatomsetmanager.h" +#include "gromacs/mdtypes/commrec.h" +#include "gromacs/pbcutil/pbc.h" +#include "gromacs/topology/atoms.h" +#include "gromacs/utility/logger.h" + +namespace gmx +{ + +/*! \internal + * \brief Collect colvars parameters only available during simulation setup. + * + * To build the colvars force provider during simulation setup, + * one needs access to parameters that become available only during simulation setup. + * + * This class collects these parameters via MdModuleNotifications in the + * simulation setup phase and provides a check if all necessary parameters have + * been provided. + */ +class ColvarsSimulationsParameters +{ +public: + ColvarsSimulationsParameters() = default; + + //! Set the local atom set Manager for colvars. + void setLocalAtomSetManager(LocalAtomSetManager* localAtomSetManager); + //! Get the local atom set Manager for colvars. + LocalAtomSetManager* localAtomSetManager() const; + + + /*! \brief Construct the topology of the system. + * + * \param[in] mtop is the pointer to the global topology struct + */ + void setTopology(const gmx_mtop_t& mtop); + + //! Get the topology + t_atoms topology() const; + + /*! \brief Set the periodic boundary condition via MdModuleNotifier. + * + * The pbc type is wrapped in PeriodicBoundaryConditionType to + * allow the MdModuleNotifier to statically distinguish the callback + * function type from other 'int' function callbacks. + * + * \param[in] pbcType enumerates the periodic boundary condition. + */ + void setPeriodicBoundaryConditionType(const PbcType& pbcType); + + //! Get the periodic boundary conditions + PbcType periodicBoundaryConditionType(); + + //! Set the simulation time step + void setSimulationTimeStep(double timeStep); + //! Return the simulation time step + double simulationTimeStep() const; + + //! Set the communicator + void setComm(const t_commrec& cr); + //! Return the communicator + const t_commrec* comm() const; + + /*! \brief Set the logger for QMMM during mdrun + * \param[in] logger Logger instance to be used for output + */ + void setLogger(const MDLogger& logger); + + //! Get the logger instance + const MDLogger* logger() const; + +private: + //! The LocalAtomSetManager + LocalAtomSetManager* localAtomSetManager_; + //! The type of periodic boundary conditions in the simulation + std::unique_ptr pbcType_; + //! The simulation time step + double simulationTimeStep_ = 1; + //! The topology + t_atoms gmx_atoms; + //! The communicator + const t_commrec* cr_; + //! MDLogger for notifications during mdrun + const MDLogger* logger_ = nullptr; + + + // GMX_DISALLOW_COPY_AND_ASSIGN(ColvarsSimulationsParameters); +}; + +} // namespace gmx + +#endif diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/.clang-tidy b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/.clang-tidy new file mode 100644 index 000000000..458c9c0ee --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/.clang-tidy @@ -0,0 +1,9 @@ +# List of rationales for check suppressions (where known). +# This have to precede the list because inline comments are not +# supported by clang-tidy. +# +# -cppcoreguidelines-avoid-non-const-global-variables +# There are quite a lot of static variables in the test code that +# can not be replaced. +Checks: -cppcoreguidelines-avoid-non-const-global-variables, +InheritParentConfig: true diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/CMakeLists.txt b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/CMakeLists.txt new file mode 100644 index 000000000..2e7eddcf4 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/CMakeLists.txt @@ -0,0 +1,44 @@ +# +# This file is part of the GROMACS molecular simulation package. +# +# Copyright 2021- The GROMACS Authors +# and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. +# Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. +# +# GROMACS is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 +# of the License, or (at your option) any later version. +# +# GROMACS is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with GROMACS; if not, see +# https://www.gnu.org/licenses, or write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# If you want to redistribute modifications to GROMACS, please +# consider that scientific software is very special. Version +# control is crucial - bugs must be traceable. We will be happy to +# consider code for inclusion in the official distribution, but +# derived work must not be called official GROMACS. Details are found +# in the README & COPYING files - if they are missing, get the +# official version at https://www.gromacs.org. +# +# To help us fund GROMACS development, we humbly ask that you cite +# the research papers on the package. Check out https://www.gromacs.org. + +gmx_add_unit_test(ColvarsAppliedForcesUnitTest colvars_applied_forces-test + CPP_SOURCE_FILES + colvarspreprocessor.cpp + colvars.cpp + colvarsoptions.cpp + colvarsforceprovider.cpp + + ) +target_link_libraries(colvars_applied_forces-test PRIVATE applied_forces math topology mdlib + mdtypes) + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars.cpp new file mode 100644 index 000000000..bc8a286f6 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars.cpp @@ -0,0 +1,126 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Tests for functionality of the Colvars module. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include + +#include "gromacs/applied_forces/colvars/colvarsMDModule.h" +#include "gromacs/gmxlib/network.h" +#include "gromacs/math/paddedvector.h" +#include "gromacs/math/vec.h" +#include "gromacs/mdrunutility/mdmodulesnotifiers.h" +#include "gromacs/mdtypes/enerdata.h" +#include "gromacs/mdtypes/forceoutput.h" +#include "gromacs/mdtypes/iforceprovider.h" +#include "gromacs/mdtypes/imdmodule.h" +#include "gromacs/mdtypes/imdpoptionprovider.h" +#include "gromacs/mdtypes/mdatom.h" +#include "gromacs/options/options.h" +#include "gromacs/options/treesupport.h" +#include "gromacs/utility/keyvaluetreebuilder.h" +#include "gromacs/utility/keyvaluetreetransform.h" +#include "gromacs/utility/real.h" +#include "gromacs/utility/smalloc.h" +#include "gromacs/utility/stringcompare.h" + +#include "testutils/testasserts.h" +#include "testutils/testfilemanager.h" +#include "testutils/testmatchers.h" + +namespace gmx +{ + +namespace +{ + +class ColvarsTest : public ::testing::Test +{ +public: + void addMdpOptionColvarsActive() + { + mdpValueBuilder_.rootObject().addValue("colvars-active", std::string("yes")); + mdpValueBuilder_.rootObject().addValue("colvars-filename", std::string("colvars.dat")); + } + + //! build an mdp options tree that sets the options for the Colvars module + void makeColvarsModuleWithSetOptions() + { + KeyValueTreeObject mdpOptionsTree = mdpValueBuilder_.build(); + + ColvarsModule_ = ColvarsModuleInfo::create(); + + // set up options + Options ColvarsModuleOptions; + ColvarsModule_->mdpOptionProvider()->initMdpOptions(&ColvarsModuleOptions); + + // Add rules to transform mdp inputs to ColvarsModule data + KeyValueTreeTransformer transform; + transform.rules()->addRule().keyMatchType("/", StringCompareType::CaseAndDashInsensitive); + ColvarsModule_->mdpOptionProvider()->initMdpTransform(transform.rules()); + + // Execute the transform on the mdpValues + auto transformedMdpValues = transform.transform(mdpOptionsTree, nullptr); + assignOptionsFromKeyValueTree(&ColvarsModuleOptions, transformedMdpValues.object(), nullptr); + } + + void intializeForceProviders() { ColvarsModule_->initForceProviders(&ColvarsForces_); } + +protected: + KeyValueTreeBuilder mdpValueBuilder_; + ForceProviders ColvarsForces_; + std::unique_ptr ColvarsModule_; +}; + +TEST_F(ColvarsTest, ForceProviderLackingInputThrows) +{ + // Prepare MDP inputs + addMdpOptionColvarsActive(); + + // Initialize with default options + makeColvarsModuleWithSetOptions(); + + // Build the force provider with missing input data + EXPECT_ANY_THROW(intializeForceProviders()); +} + +} // namespace + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample.dat b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample.dat new file mode 100644 index 000000000..818983e91 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample.dat @@ -0,0 +1,17 @@ +units gromacs +colvar { + name d_atoms + distance { + group1 { + atomNumbers 1 + } + group2 { + atomNumbers 5 + } + } +} +harmonic { + colvars d_atoms + forceConstant 2000 + centers 0.3 +} diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample_alanine.dat b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample_alanine.dat new file mode 100644 index 000000000..3cacd0d6c --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvars_sample_alanine.dat @@ -0,0 +1,26 @@ +units gromacs +colvar { + + name one + width 0.5 + dihedral { + group1 { + atomNumbers 1 + } + group2 { + atomNumbers 5 + } + group3 { + atomNumbers 11 + } + group4 { + atomNumbers 12 + } + } +} + +harmonic { + colvars one + centers 0.1 + forceConstant 0.01 +} diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsforceprovider.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsforceprovider.cpp new file mode 100644 index 000000000..34b655ac0 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsforceprovider.cpp @@ -0,0 +1,351 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Tests for ColvarsForceProvider class of Colvars MDModule. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include "gromacs/applied_forces/colvars/colvarsforceprovider.h" + +#include + +#include + +#include "gromacs/applied_forces/colvars/colvarssimulationsparameters.h" +#include "gromacs/domdec/localatomsetmanager.h" +#include "gromacs/fileio/confio.h" +#include "gromacs/gmxpreprocess/grompp.h" +#include "gromacs/math/paddedvector.h" +#include "gromacs/math/vec.h" +#include "gromacs/mdlib/forcerec.h" +#include "gromacs/mdtypes/commrec.h" +#include "gromacs/mdtypes/enerdata.h" +#include "gromacs/mdtypes/forceoutput.h" +#include "gromacs/mdtypes/iforceprovider.h" +#include "gromacs/pbcutil/pbc.h" +#include "gromacs/topology/mtop_lookup.h" +#include "gromacs/topology/mtop_util.h" +#include "gromacs/topology/topology.h" +#include "gromacs/utility/arrayref.h" +#include "gromacs/utility/textreader.h" +#include "gromacs/utility/textwriter.h" + +#include "testutils/cmdlinetest.h" +#include "testutils/refdata.h" +#include "testutils/testasserts.h" +#include "testutils/testfilemanager.h" + +namespace gmx +{ + +class ColvarsForceProviderTest : public ::testing::Test +{ +public: + void PrepareInputForceProvider(const std::string& fileName) + { + + gmx::test::TestFileManager fileManager_; + const std::string simData = + gmx::test::TestFileManager::getTestSimulationDatabaseDirectory().u8string(); + + // Generate empty mdp file + const std::string mdpInputFileName = + fileManager_.getTemporaryFilePath(fileName + ".mdp").u8string(); + gmx::TextWriter::writeFileFromString(mdpInputFileName, ""); + + // Generate tpr file + const std::string tprName = fileManager_.getTemporaryFilePath(fileName + ".tpr").u8string(); + { + gmx::test::CommandLine caller; + caller.append("grompp"); + caller.addOption("-f", mdpInputFileName); + caller.addOption( + "-p", + std::filesystem::path(simData).append(fileName).replace_extension(".top").u8string()); + caller.addOption( + "-c", + std::filesystem::path(simData).append(fileName).replace_extension(".gro").u8string()); + caller.addOption("-o", tprName); + ASSERT_EQ(0, gmx_grompp(caller.argc(), caller.argv())); + } + + + bool fullTopology; + gmx_mtop_t mtop; + rvec* coords; + // Load topology + readConfAndTopology(tprName.c_str(), &fullTopology, &mtop, &pbcType_, &coords, nullptr, box_); + + x_ = gmx::constArrayRefFromArray(reinterpret_cast(coords), atoms_.nr); + atoms_ = gmx_mtop_global_atoms(mtop); + } + + void ColvarsConfigStringFromFile(const std::string& filename) + { + // Path to the sample colvars input file + std::string colvarsInputFile = gmx::test::TestFileManager::getInputFilePath(filename).u8string(); + + colvarsConfigString_ = TextReader::readFileToString(colvarsInputFile); + } + + void CorrectColvarsConfigString() + { + // atomNumbers start at 1 in colvars + colvarsConfigString_ = R"(units gromacs + colvar { + name d_atoms + distance { + group1 { + atomNumbers 1 + } + group2 { + atomNumbers 5 + } + } + } + harmonic { + colvars d_atoms + forceConstant 20000 + centers 0.3 + })"; + } + + void IncorrectColvarsConfigString() + { + // Path to the sample colvars input file + std::string colvarsInputFile = + gmx::test::TestFileManager::getInputFilePath("colvars_sample.dat").u8string(); + + colvarsConfigString_ = TextReader::readFileToString(colvarsInputFile); + } + +protected: + std::string colvarsConfigString_; + std::vector atomCoords_; + LocalAtomSetManager atomSetManager_; + PbcType pbcType_; + MDLogger logger_; + t_atoms atoms_; + t_commrec cr_; + std::map KVTInputs; + ColvarsForceProviderState colvarsState_; + + double simulationTimeStep_ = 0.002; + real temperature_ = 300; + std::string prefixOutput_; + + ArrayRef x_; + matrix box_; +}; + +TEST_F(ColvarsForceProviderTest, CanConstructOrNot) +{ + + EXPECT_NO_THROW(ColvarsForceProvider forceProvider(colvarsConfigString_, + &atomSetManager_, + pbcType_, + simulationTimeStep_, + atoms_, + &cr_, + &logger_, + atomCoords_, + prefixOutput_, + KVTInputs, + colvarsState_, + temperature_)); +} + +TEST_F(ColvarsForceProviderTest, SimpleInputs) +{ + PrepareInputForceProvider("4water"); + ColvarsConfigStringFromFile("colvars_sample.dat"); + + // Indexes taken from the Colvars Config file. + atomCoords_ = { RVec(x_[0]), RVec(x_[4]) }; + + + ColvarsForceProvider forceProvider(colvarsConfigString_, + &atomSetManager_, + pbcType_, + simulationTimeStep_, + atoms_, + &cr_, + &logger_, + atomCoords_, + prefixOutput_, + KVTInputs, + colvarsState_, + temperature_); + + + // Re-use the PreProcessorTest since the ForceProvider recalls colvars initilization and the input are identicals. + gmx::test::TestReferenceData data("ColvarsPreProcessorTest_CheckValuesFourWaters.xml"); + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + // Check colvars & atoms values are correctly read + checker.setDefaultTolerance(gmx::test::absoluteTolerance(0.001)); + checker.checkVector(atomCoords_[1], "Coords Atom 4"); + + const auto* const atom_ids = forceProvider.get_atom_ids(); + checker.checkSequence(atom_ids->begin(), atom_ids->end(), "Index of colvars atoms"); + + const auto* const atom_masses = forceProvider.get_atom_masses(); + checker.checkSequence(atom_masses->begin(), atom_masses->end(), "Masses of colvars atoms"); + + const auto* const atom_charges = forceProvider.get_atom_charges(); + checker.checkSequence(atom_charges->begin(), atom_charges->end(), "Charges of colvars atoms"); +} + +TEST_F(ColvarsForceProviderTest, WrongColvarsInput) +{ + PrepareInputForceProvider("4water"); + + // atom 100 does not exist + colvarsConfigString_ = R"(units gromacs + colvar { + name d_atoms + distance { + group1 { + atomNumbers 100 + } + group2 { + atomNumbers 2 + } + } + } + harmonic { + colvars d_atoms + forceConstant 2000 + centers 0.6 + })"; + + EXPECT_ANY_THROW(ColvarsForceProvider forceProvider(colvarsConfigString_, + &atomSetManager_, + pbcType_, + simulationTimeStep_, + atoms_, + &cr_, + &logger_, + atomCoords_, + prefixOutput_, + KVTInputs, + colvarsState_, + temperature_)); +} + +TEST_F(ColvarsForceProviderTest, CalculateForces4water) +{ + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + PrepareInputForceProvider("4water"); + ColvarsConfigStringFromFile("colvars_sample.dat"); + + // Indexes taken from the Colvars Config file. + atomCoords_ = { RVec(x_[0]), RVec(x_[4]) }; + + // Prepare a ForceProviderInput + ForceProviderInput forceProviderInput(x_, atoms_.nr, {}, {}, 0.0, 0, box_, cr_); + + // Prepare a ForceProviderOutput + std::vector forces(atoms_.nr, RVec{ 0, 0, 0 }); + ForceWithVirial forceWithVirial(forces, true); + gmx_enerdata_t enerdDummy(1, nullptr); + ForceProviderOutput forceProviderOutput(&forceWithVirial, &enerdDummy); + + ColvarsForceProvider forceProvider(colvarsConfigString_, + &atomSetManager_, + pbcType_, + simulationTimeStep_, + atoms_, + &cr_, + &logger_, + atomCoords_, + prefixOutput_, + KVTInputs, + colvarsState_, + temperature_); + + forceProvider.calculateForces(forceProviderInput, &forceProviderOutput); + + checker.setDefaultTolerance(gmx::test::defaultFloatTolerance()); + checker.checkDouble(enerdDummy.term[F_COM_PULL], "Bias Energy"); + checker.checkSequence(forces.begin(), forces.end(), "Forces"); +} + +TEST_F(ColvarsForceProviderTest, CalculateForcesAlanine) +{ + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + PrepareInputForceProvider("ala"); + ColvarsConfigStringFromFile("colvars_sample_alanine.dat"); + + // Indexes taken from the Colvars Config file. + atomCoords_ = { RVec(x_[0]), RVec(x_[4]), RVec(x_[10]), RVec(x_[11]) }; + + // Prepare a ForceProviderInput + ForceProviderInput forceProviderInput(x_, atoms_.nr, {}, {}, 0.0, 0, box_, cr_); + + // Prepare a ForceProviderOutput + std::vector forces(atoms_.nr, RVec{ 0, 0, 0 }); + ForceWithVirial forceWithVirial(forces, true); + gmx_enerdata_t enerdDummy(1, nullptr); + ForceProviderOutput forceProviderOutput(&forceWithVirial, &enerdDummy); + + ColvarsForceProvider forceProvider(colvarsConfigString_, + &atomSetManager_, + pbcType_, + simulationTimeStep_, + atoms_, + &cr_, + &logger_, + atomCoords_, + prefixOutput_, + KVTInputs, + colvarsState_, + temperature_); + + forceProvider.calculateForces(forceProviderInput, &forceProviderOutput); + + checker.setDefaultTolerance(gmx::test::defaultFloatTolerance()); + checker.checkDouble(enerdDummy.term[F_COM_PULL], "Bias Energy"); + checker.checkSequence(forces.begin(), forces.end(), "Forces"); +} + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsoptions.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsoptions.cpp new file mode 100644 index 000000000..2f966de02 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarsoptions.cpp @@ -0,0 +1,282 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2023- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Tests for ColvarsOptions class of Colvars MDModule. + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include "gromacs/applied_forces/colvars/colvarsoptions.h" + +#include +#include + +#include + +#include "gromacs/fileio/confio.h" +#include "gromacs/gmxpreprocess/grompp.h" +#include "gromacs/math/paddedvector.h" +#include "gromacs/mdrunutility/mdmodulesnotifiers.h" +#include "gromacs/mdtypes/inputrec.h" +#include "gromacs/options/options.h" +#include "gromacs/options/treesupport.h" +#include "gromacs/selection/indexutil.h" +#include "gromacs/topology/index.h" +#include "gromacs/topology/mtop_util.h" +#include "gromacs/topology/topology.h" +#include "gromacs/utility/keyvaluetreebuilder.h" +#include "gromacs/utility/keyvaluetreemdpwriter.h" +#include "gromacs/utility/keyvaluetreetransform.h" +#include "gromacs/utility/smalloc.h" +#include "gromacs/utility/stringcompare.h" +#include "gromacs/utility/stringstream.h" +#include "gromacs/utility/textwriter.h" + +#include "testutils/cmdlinetest.h" +#include "testutils/refdata.h" +#include "testutils/testasserts.h" +#include "testutils/testfilemanager.h" +#include "testutils/testmatchers.h" + +namespace gmx +{ + +static const std::string colvarsConfig = "colvars_sample.dat"; + +class ColvarsOptionsTest : public ::testing::Test +{ +public: + void setFromMdpValues(const KeyValueTreeObject& ColvarsMdpValues) + { + // Setup options + Options colvarsModuleOptions; + colvarsOptions_.initMdpOptions(&colvarsModuleOptions); + + // Add rules to transform mdp inputs to densityFittingModule data + KeyValueTreeTransformer transform; + transform.rules()->addRule().keyMatchType("/", StringCompareType::CaseAndDashInsensitive); + + colvarsOptions_.initMdpTransform(transform.rules()); + + // Execute the transform on the mdpValues + auto transformedMdpValues = transform.transform(ColvarsMdpValues, nullptr); + assignOptionsFromKeyValueTree(&colvarsModuleOptions, transformedMdpValues.object(), nullptr); + } + + static KeyValueTreeObject ColvarsBuildDefaulMdpValues() + { + // Prepare MDP inputs + KeyValueTreeBuilder mdpValueBuilder; + mdpValueBuilder.rootObject().addValue(c_colvarsModuleName + "-active", std::string("true")); + return mdpValueBuilder.build(); + } + + static KeyValueTreeObject ColvarsBuildInputMdpValues() + { + // Prepare MDP inputs + KeyValueTreeBuilder mdpValueBuilder; + mdpValueBuilder.rootObject().addValue(c_colvarsModuleName + "-active", std::string("true")); + mdpValueBuilder.rootObject().addValue(c_colvarsModuleName + "-configfile", colvarsConfig); + return mdpValueBuilder.build(); + } + + void PrepareInputColvarsPreProcessor(const std::string& fileName) + { + + // Path to the sample colvars input file + std::string colvarsConfigFile = + gmx::test::TestFileManager::getInputFilePath("colvars_sample.dat").u8string(); + + gmx::test::TestFileManager fileManager_; + const std::string simData = + gmx::test::TestFileManager::getTestSimulationDatabaseDirectory().u8string(); + + // Generate empty mdp file + const std::string mdpInputFileName = + fileManager_.getTemporaryFilePath(fileName + ".mdp").u8string(); + gmx::TextWriter::writeFileFromString(mdpInputFileName, ""); + + // Generate tpr file + const std::string tprName = fileManager_.getTemporaryFilePath(fileName + ".tpr").u8string(); + { + gmx::test::CommandLine caller; + caller.append("grompp"); + caller.addOption("-f", mdpInputFileName); + caller.addOption( + "-p", + std::filesystem::path(simData).append(fileName).replace_extension(".top").u8string()); + caller.addOption( + "-c", + std::filesystem::path(simData).append(fileName).replace_extension(".gro").u8string()); + caller.addOption("-o", tprName); + ASSERT_EQ(0, gmx_grompp(caller.argc(), caller.argv())); + } + + + bool fullTopology; + PbcType pbcType; + matrix box; + gmx_mtop_t mtop; + rvec* coords; + // Load topology + readConfAndTopology(tprName.c_str(), &fullTopology, &mtop, &pbcType, &coords, nullptr, box); + + t_atoms atoms = gmx_mtop_global_atoms(mtop); + x = gmx::constArrayRefFromArray(reinterpret_cast(coords), atoms.nr); + + // Populate attributes outside the use of the defined callbacks. + colvarsOptions_.setParameters(colvarsConfigFile, atoms, x, pbcType, box, 300); + } + + +protected: + ColvarsOptions colvarsOptions_; + ArrayRef x; +}; + + +TEST_F(ColvarsOptionsTest, OptionSetsActive) +{ + EXPECT_FALSE(colvarsOptions_.isActive()); + setFromMdpValues(ColvarsBuildDefaulMdpValues()); + EXPECT_TRUE(colvarsOptions_.isActive()); +} + +TEST_F(ColvarsOptionsTest, OutputNoDefaultValuesWhenInactive) +{ + // Test buildMdpOutput() + StringOutputStream stream; + KeyValueTreeBuilder builder; + KeyValueTreeObjectBuilder builderObject = builder.rootObject(); + + colvarsOptions_.buildMdpOutput(&builderObject); + { + TextWriter writer(&stream); + writeKeyValueTreeAsMdp(&writer, builder.build()); + } + stream.close(); + + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + checker.checkString(stream.toString(), "Mdp output"); +} + +TEST_F(ColvarsOptionsTest, OutputDefaultValuesWhenActive) +{ + + // Activate colvars + setFromMdpValues(ColvarsBuildDefaulMdpValues()); + + // Transform module data into a flat key-value tree for output. + StringOutputStream stream; + KeyValueTreeBuilder builder; + KeyValueTreeObjectBuilder builderObject = builder.rootObject(); + + colvarsOptions_.buildMdpOutput(&builderObject); + { + TextWriter writer(&stream); + writeKeyValueTreeAsMdp(&writer, builder.build()); + } + stream.close(); + + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + checker.checkString(stream.toString(), "Mdp output"); +} + +TEST_F(ColvarsOptionsTest, OutputValuesWhenActive) +{ + + // Activate colvars + setFromMdpValues(ColvarsBuildInputMdpValues()); + + // Transform module data into a flat key-value tree for output. + StringOutputStream stream; + KeyValueTreeBuilder builder; + KeyValueTreeObjectBuilder builderObject = builder.rootObject(); + + colvarsOptions_.buildMdpOutput(&builderObject); + { + TextWriter writer(&stream); + writeKeyValueTreeAsMdp(&writer, builder.build()); + } + stream.close(); + + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + checker.checkString(stream.toString(), "Mdp output"); +} + +TEST_F(ColvarsOptionsTest, InternalsToKvtAndBack) +{ + + // Activate colvars + setFromMdpValues(ColvarsBuildInputMdpValues()); + // Set up parameters with a test system + PrepareInputColvarsPreProcessor("4water"); + + // Write parameters to the KVT + KeyValueTreeBuilder builder; + colvarsOptions_.writeInternalParametersToKvt(builder.rootObject()); + const auto inputTree = builder.build(); + + // Copy internal parameters + auto refColvarsInputContent = colvarsOptions_.colvarsConfigContent(); + auto refColvarsCoordinates = colvarsOptions_.colvarsAtomCoords(); + auto refTemperature = colvarsOptions_.colvarsEnsTemp(); + + // Retrieve paramaters from the KVT + colvarsOptions_.readInternalParametersFromKvt(inputTree); + + // Check parameters taken back from KVT + EXPECT_EQ(refColvarsInputContent, colvarsOptions_.colvarsConfigContent()); + + auto actualColvarsCoordinates = colvarsOptions_.colvarsAtomCoords(); + EXPECT_REAL_EQ(refColvarsCoordinates[0][XX], actualColvarsCoordinates[0][XX]); + EXPECT_REAL_EQ(refColvarsCoordinates[0][YY], actualColvarsCoordinates[0][YY]); + EXPECT_REAL_EQ(refColvarsCoordinates[0][ZZ], actualColvarsCoordinates[0][ZZ]); + EXPECT_REAL_EQ(refColvarsCoordinates[1][XX], actualColvarsCoordinates[1][XX]); + EXPECT_REAL_EQ(refColvarsCoordinates[1][YY], actualColvarsCoordinates[1][YY]); + EXPECT_REAL_EQ(refColvarsCoordinates[1][ZZ], actualColvarsCoordinates[1][ZZ]); + + EXPECT_EQ(refTemperature, colvarsOptions_.colvarsEnsTemp()); +} + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarspreprocessor.cpp b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarspreprocessor.cpp new file mode 100644 index 000000000..c360f4b92 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/colvarspreprocessor.cpp @@ -0,0 +1,236 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright 2021- The GROMACS Authors + * and the project initiators Erik Lindahl, Berk Hess and David van der Spoel. + * Consult the AUTHORS/COPYING files and https://www.gromacs.org for details. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * https://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at https://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out https://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Tests for ColvarsPreProcessor class for Colvars MDModule + * + * \author Hubert Santuz + * \ingroup module_applied_forces + */ +#include "gmxpre.h" + +#include "gromacs/applied_forces/colvars/colvarspreprocessor.h" + +#include +#include + +#include + +#include "gromacs/fileio/confio.h" +#include "gromacs/gmxpreprocess/grompp.h" +#include "gromacs/math/vec.h" +#include "gromacs/pbcutil/pbc.h" +#include "gromacs/topology/mtop_lookup.h" +#include "gromacs/topology/mtop_util.h" +#include "gromacs/topology/topology.h" +#include "gromacs/utility/arrayref.h" +#include "gromacs/utility/path.h" +#include "gromacs/utility/textwriter.h" + +#include "testutils/cmdlinetest.h" +#include "testutils/refdata.h" +#include "testutils/testasserts.h" +#include "testutils/testfilemanager.h" + +namespace gmx +{ + +class ColvarsPreProcessorTest : public ::testing::Test +{ +public: + /*! \brief Generates tpr file from *.top and *.gro existing in the simulation database directory + * and loads gmx_mtop_t from it + */ + void makeMtopFromFile(const std::string& fileName, const std::string& mdpContent) + { + const std::string simData = + gmx::test::TestFileManager::getTestSimulationDatabaseDirectory().u8string(); + + // Generate empty mdp file + const std::string mdpInputFileName = + fileManager_.getTemporaryFilePath(fileName + ".mdp").u8string(); + gmx::TextWriter::writeFileFromString(mdpInputFileName, mdpContent); + + // Generate tpr file + const std::string tprName = fileManager_.getTemporaryFilePath(fileName + ".tpr").u8string(); + { + gmx::test::CommandLine caller; + caller.append("grompp"); + caller.addOption("-f", mdpInputFileName); + caller.addOption( + "-p", + std::filesystem::path(simData).append(fileName).replace_extension(".top").u8string()); + caller.addOption( + "-c", + std::filesystem::path(simData).append(fileName).replace_extension(".gro").u8string()); + caller.addOption("-o", tprName); + ASSERT_EQ(0, gmx_grompp(caller.argc(), caller.argv())); + } + + // Load topology + bool fullTopology; + gmx_mtop_t mtop_; + rvec* coords; + readConfAndTopology(tprName.c_str(), &fullTopology, &mtop_, &pbcType_, &coords, nullptr, box_); + atoms_ = gmx_mtop_global_atoms(mtop_); + x_ = gmx::constArrayRefFromArray(reinterpret_cast(coords), atoms_.nr); + } + +protected: + gmx::test::TestFileManager fileManager_; + t_atoms atoms_; + PbcType pbcType_; + matrix box_; + ArrayRef x_; +}; + +TEST_F(ColvarsPreProcessorTest, CanConstructColvarsPreProcess) +{ + // Reference input 4x SPCE waters from database 4water.top + makeMtopFromFile("4water", ""); + + EXPECT_NO_THROW(ColvarsPreProcessor colvarsPreProcess("", atoms_, pbcType_, nullptr, box_, x_, 0)); +} + +TEST_F(ColvarsPreProcessorTest, CheckValuesFourWaters) +{ + // Reference input 4x SPCE waters from database 4water.top + makeMtopFromFile("4water", ""); + + // atomNumbers start at 1 in colvars + std::string colvarsInput = R"(units gromacs + colvar { + name d_atoms + distance { + group1 { + atomNumbers 1 + } + group2 { + atomNumbers 5 + } + } + } + harmonic { + colvars d_atoms + forceConstant 20000 + centers 0.3 + })"; + + ColvarsPreProcessor colvarsPreProcess(colvarsInput, atoms_, pbcType_, nullptr, box_, x_, 0); + + gmx::test::TestReferenceData data; + gmx::test::TestReferenceChecker checker(data.rootChecker()); + + // Check colvars & atoms values are correctly read + checker.setDefaultTolerance(gmx::test::absoluteTolerance(0.001)); + checker.checkVector(colvarsPreProcess.getColvarsCoords()[1], "Coords Atom 4"); + + const auto* const atom_ids = colvarsPreProcess.get_atom_ids(); + checker.checkSequence(atom_ids->begin(), atom_ids->end(), "Index of colvars atoms"); + + const auto* const atom_masses = colvarsPreProcess.get_atom_masses(); + checker.checkSequence(atom_masses->begin(), atom_masses->end(), "Masses of colvars atoms"); + + const auto* const atom_charges = colvarsPreProcess.get_atom_charges(); + checker.checkSequence(atom_charges->begin(), atom_charges->end(), "Charges of colvars atoms"); +} + + +TEST_F(ColvarsPreProcessorTest, CheckNestedInputFiles) +{ + // Reference input 4x SPCE waters from database 4water.top + makeMtopFromFile("4water", ""); + + // TODO: add ref xyz file + std::string colvarsInput = R"(units gromacs + indexFile + colvar { + name d_atoms + distance { + group1 { + atomNumbers 1 + } + group2 { + atomNumbers 5 + } + } + } + harmonic { + colvars d_atoms + forceConstant 20000 + centers 0.6 + })"; + + // Replace index.ndx by its absolute path so Colvars can parse it. + std::string pathIndex = gmx::test::TestFileManager::getInputFilePath("index.ndx").u8string(); + size_t index = colvarsInput.find(""); + colvarsInput.replace(index, std::string("").length(), pathIndex); + + ColvarsPreProcessor colvarsPreProcess(colvarsInput, atoms_, pbcType_, nullptr, box_, x_, 0); + + // Make sure the index file inside colvarsInput was correctly read + auto listInputStreams = colvarsPreProcess.list_input_stream_names(); + auto inputStreamIndex = listInputStreams.begin(); + EXPECT_EQ(pathIndex, *inputStreamIndex); +} + +TEST_F(ColvarsPreProcessorTest, WrongColvarsInput) +{ + // Reference input 4x SPCE waters from database 4water.top + makeMtopFromFile("4water", ""); + + // atom 100 does not exist + std::string colvarsInput = R"(units gromacs + colvar { + name d_atoms + distance { + group1 { + atomNumbers 100 + } + group2 { + atomNumbers 2 + } + } + } + harmonic { + colvars d_atoms + forceConstant 20000 + centers 0.6 + })"; + + EXPECT_ANY_THROW(ColvarsPreProcessor colvarsPreProcess( + colvarsInput, atoms_, pbcType_, nullptr, box_, x_, 0)); +} + +} // namespace gmx diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/index.ndx b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/index.ndx new file mode 100644 index 000000000..de5faf39d --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/index.ndx @@ -0,0 +1,2 @@ +[ Colvars ] +2 4 diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForces4water.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForces4water.xml new file mode 100644 index 000000000..d452cb080 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForces4water.xml @@ -0,0 +1,68 @@ + + + + 49.728973388671875 + + 12 + + 48.608006 + 138.14906 + 421.2695 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + -48.608006 + -138.14906 + -421.2695 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForcesAlanine.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForcesAlanine.xml new file mode 100644 index 000000000..6faa4aa7b --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsForceProviderTest_CalculateForcesAlanine.xml @@ -0,0 +1,123 @@ + + + + 0.007179399486631155 + + 23 + + 2.6480298 + -0.60938436 + -9.4919109 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + -4.9235234 + 1.1406431 + 17.493099 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 5.8324962 + -1.3687972 + -20.363705 + + + -3.5570025 + 0.83753848 + 12.362517 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputDefaultValuesWhenActive.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputDefaultValuesWhenActive.xml new file mode 100644 index 000000000..ea71ed868 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputDefaultValuesWhenActive.xml @@ -0,0 +1,10 @@ + + + + +; Colvars bias +colvars-active = true +; colvars config file +colvars-configfile = colvars.dat + + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputNoDefaultValuesWhenInactive.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputNoDefaultValuesWhenInactive.xml new file mode 100644 index 000000000..e32ea031d --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputNoDefaultValuesWhenInactive.xml @@ -0,0 +1,8 @@ + + + + +; Colvars bias +colvars-active = false + + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputValuesWhenActive.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputValuesWhenActive.xml new file mode 100644 index 000000000..8bae24579 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsOptionsTest_OutputValuesWhenActive.xml @@ -0,0 +1,10 @@ + + + + +; Colvars bias +colvars-active = true +; colvars config file +colvars-configfile = colvars_sample.dat + + diff --git a/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsPreProcessorTest_CheckValuesFourWaters.xml b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsPreProcessorTest_CheckValuesFourWaters.xml new file mode 100644 index 000000000..678fd5757 --- /dev/null +++ b/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/ColvarsPreProcessorTest_CheckValuesFourWaters.xml @@ -0,0 +1,24 @@ + + + + + 0.82499999 + 1.306 + 1.517 + + + 2 + 0 + 4 + + + 2 + 15.99940013885498 + 1.0080000162124634 + + + 2 + -0.81999999284744263 + 0.40999999642372131 + + diff --git a/gromacs/src/colvarproxy_gromacs_version.h b/gromacs/src/colvarproxy_gromacs_version.h index 53c2d8efc..5f7e40b66 100644 --- a/gromacs/src/colvarproxy_gromacs_version.h +++ b/gromacs/src/colvarproxy_gromacs_version.h @@ -1,3 +1,3 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2023-07-06" +#define COLVARPROXY_VERSION "2023-10-03" #endif diff --git a/gromacs/tests/interface/run_tests.sh b/gromacs/tests/interface/run_tests.sh index b579038dc..1cdfc2e2e 100755 --- a/gromacs/tests/interface/run_tests.sh +++ b/gromacs/tests/interface/run_tests.sh @@ -291,10 +291,8 @@ for dir in ${DIRLIST} ; do fi if [ $RETVAL -ne 0 ] then - if [ ${base} != ${base%.out} ] + if [ ${base} == ${base%.out} ] # Ignore differences in stdout log then - echo -n "(warning: differences in log file $base) " - else echo -e "\n*** Failure for file $(${TPUT_RED})$base$(${TPUT_CLEAR}): see `pwd`/$base.diff " SUCCESS=0 ALL_SUCCESS=0 @@ -321,7 +319,7 @@ for dir in ${DIRLIST} ; do if [ "x${gen_ref_output}" == 'xyes' ]; then echo "Reference files copied successfully." else - echo "$(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" + echo " $(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" fi cleanup_files fi diff --git a/gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_angle_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_coordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_coordnum_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_customfunction_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_customfunction_harmonic-fixed/disabled b/gromacs/tests/library/000_customfunction_harmonic-fixed/disabled new file mode 100644 index 000000000..9a3927eb6 --- /dev/null +++ b/gromacs/tests/library/000_customfunction_harmonic-fixed/disabled @@ -0,0 +1 @@ +Temporarily disabled to stay in sync with the GROMACS GitLab repository. diff --git a/gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_dihedral_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_dihedralwalls/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-coeffs_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.histogram1.dat b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.histogram1.dat similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.part0002.histogram1.dat rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic-customgrid/AutoDiff/test.restart.histogram1.dat diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.histogram1.dat b/gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.histogram1.dat similarity index 100% rename from gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.part0002.histogram1.dat rename to gromacs/tests/library/000_distance-dihedral_histogram2d-periodic/AutoDiff/test.restart.histogram1.dat diff --git a/gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.pmf b/gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.pmf similarity index 100% rename from gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.part0002.pmf rename to gromacs/tests/library/000_distance-grid-expand_metadynamics/AutoDiff/test.restart.pmf diff --git a/gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid_harmonic-centers-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid_harmonic-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.histogram1.dat b/gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.histogram1.dat similarity index 100% rename from gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.part0002.histogram1.dat rename to gromacs/tests/library/000_distance-grid_histogram/AutoDiff/test.restart.histogram1.dat diff --git a/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.pmf b/gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.pmf similarity index 100% rename from gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.part0002.pmf rename to gromacs/tests/library/000_distance-grid_metadynamics/AutoDiff/test.restart.pmf diff --git a/gromacs/tests/library/000_distance/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonic-centers-moving-full/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonic-centers-moving-stages/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonic-centers-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonic-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonicwalls-both-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonicwalls-both-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonicwalls-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonicwalls-upper-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_harmonicwalls-upper-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_linear-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distance_linear-k-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancedir_harmonic-ddir-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.out b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.out index 43cfc3327..e69de29bb 100644 --- a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.out +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.out @@ -1,109 +0,0 @@ -colvars: ---------------------------------------------------------------------- -colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. -colvars: ---------------------------------------------------------------------- -colvars: Reading new configuration from file "test.dat": -colvars: # units = "" [default] -colvars: # indexFile = "index.ndx" -colvars: The following index groups are currently defined: -colvars: Protein (104 atoms) -colvars: Protein_noH (51 atoms) -colvars: Protein_Backbone (40 atoms) -colvars: Protein_C-alpha (10 atoms) -colvars: RMSD_atoms (10 atoms) -colvars: Protein_C-alpha_1_2 (2 atoms) -colvars: Protein_C-alpha_9_10 (2 atoms) -colvars: Protein_C-alpha_1 (1 atoms) -colvars: group1 (4 atoms) -colvars: Protein_C-alpha_2 (1 atoms) -colvars: group2 (4 atoms) -colvars: Protein_C-alpha_3 (1 atoms) -colvars: group3 (4 atoms) -colvars: Protein_C-alpha_4 (1 atoms) -colvars: group4 (4 atoms) -colvars: Protein_C-alpha_5 (1 atoms) -colvars: group5 (4 atoms) -colvars: Protein_C-alpha_6 (1 atoms) -colvars: group6 (4 atoms) -colvars: Protein_C-alpha_7 (1 atoms) -colvars: group7 (4 atoms) -colvars: Protein_C-alpha_8 (1 atoms) -colvars: group8 (4 atoms) -colvars: Protein_C-alpha_9 (1 atoms) -colvars: group9 (4 atoms) -colvars: Protein_C-alpha_10 (1 atoms) -colvars: group10 (4 atoms) -colvars: heavy_atoms (51 atoms) -colvars: # smp = on [default] -colvars: # colvarsTrajFrequency = 1 -colvars: # colvarsRestartFrequency = 10 -colvars: # scriptedColvarForces = off [default] -colvars: # scriptingAfterBiases = off [default] -colvars: ---------------------------------------------------------------------- -colvars: Initializing a new collective variable. -colvars: # name = "one" -colvars: Initializing a new "distanceDir" component. -colvars: # name = "" [default] -colvars: # componentCoeff = 1 [default] -colvars: # componentExp = 1 [default] -colvars: # period = 0 [default] -colvars: # wrapAround = 0 [default] -colvars: # forceNoPBC = off [default] -colvars: # scalable = on [default] -colvars: Initializing atom group "group1". -colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] -colvars: # atomsOfGroup = "" [default] -colvars: # indexGroup = "group1" -colvars: # psfSegID = [default] -colvars: # atomsFile = "" [default] -colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] -colvars: # enableFitGradients = on [default] -colvars: # printAtomIDs = off [default] -colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. -colvars: Initializing atom group "group2". -colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] -colvars: # atomsOfGroup = "" [default] -colvars: # indexGroup = "group2" -colvars: # psfSegID = [default] -colvars: # atomsFile = "" [default] -colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] -colvars: # enableFitGradients = on [default] -colvars: # printAtomIDs = off [default] -colvars: Atom group "group2" defined with 4 atoms requested: total mass = 54.028, total charge = -0.4. -colvars: # oneSiteSystemForce = off [default] -colvars: # oneSiteTotalForce = off [default] -colvars: All components initialized. -colvars: # timeStepFactor = 1 [default] -colvars: # width = 0.05 -colvars: # expandBoundaries = off [default] -colvars: # extendedLagrangian = off [default] -colvars: # outputValue = on [default] -colvars: # outputVelocity = off [default] -colvars: # outputTotalForce = off [default] -colvars: # outputAppliedForce = on -colvars: # subtractAppliedForce = off [default] -colvars: # runAve = off [default] -colvars: # corrFunc = off [default] -colvars: ---------------------------------------------------------------------- -colvars: Collective variables initialized, 1 in total. -colvars: ---------------------------------------------------------------------- -colvars: Initializing a new "harmonic" instance. -colvars: # name = "harmonic1" [default] -colvars: # colvars = { one } -colvars: # outputEnergy = on -colvars: # timeStepFactor = 1 [default] -colvars: # writeTISamples = off [default] -colvars: # writeTIPMF = off [default] -colvars: # centers = { ( 1 , 0 , 0 ) } -colvars: # targetCenters = { ( -1 , 0 , 0 ) } -colvars: # targetNumSteps = 10 -colvars: # targetNumStages = 0 [default] -colvars: # outputAccumulatedWork = on -colvars: Error: interpolation between ( 1 , 0 , 0 ) and ( -1 , 0 , 0 ) with lambda = 0.5 is undefined: result = ( 0 , 0 , 0 ) -colvars: If this error message is unclear, try recompiling with -DCOLVARS_DEBUG. diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.state.stripped b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.state.stripped new file mode 100644 index 000000000..668eb79a8 --- /dev/null +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.state.stripped @@ -0,0 +1,20 @@ +configuration { + step 20 + dt 1.000000e+00 +} + +colvar { + name one + x ( -3.10885706960921e-01 , 2.11412551292752e-01 , 9.26636288067383e-01 ) +} + +restraint { + configuration { + step 20 + name harmonic1 + firstStep 0 + centers ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) + accumulatedWork -5.55059495927072e-01 + } +} + diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.traj b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.traj new file mode 100644 index 000000000..a0e19b09e --- /dev/null +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.colvars.traj @@ -0,0 +1,22 @@ +# step one fa_one E_harmonic1 x0_one W_harmonic1 + 0 ( -3.30999991751309e-01 , 2.15045331613065e-01 , 9.18800582722965e-01 ) ( 1.11378079309750e+00 , -1.79949933493813e-01 , -7.68852327622577e-01 ) 2.22756158619499e+00 ( 1.00000000000000e+00 , 0.00000000000000e+00 , 0.00000000000000e+00 ) 0.00000000000000e+00 + 1 ( -3.30676782623035e-01 , 2.14698535143340e-01 , 9.18998043763632e-01 ) ( 1.11048488664575e+00 , -1.08566615530599e-01 , -7.69017563021407e-01 ) 2.19449259764792e+00 ( 9.96384506389575e-01 , 8.49583158190100e-02 , 0.00000000000000e+00 ) -1.72056748042513e-02 + 2 ( -3.30191402709992e-01 , 2.14462744628538e-01 , 9.19227593549499e-01 ) ( 1.09445346557288e+00 , -3.77530718922370e-03 , -7.69209650282220e-01 ) 2.13853504700783e+00 ( 9.77711878328341e-01 , 2.09951144259006e-01 , 0.00000000000000e+00 ) -4.66529868068846e-02 + 3 ( -3.29533211475485e-01 , 2.14332374411399e-01 , 9.19494152136829e-01 ) ( 1.04314868322252e+00 , 1.54321220161941e-01 , -7.69432706508098e-01 ) 2.03632995237275e+00 ( 9.17059383197694e-01 , 3.98750658543737e-01 , 0.00000000000000e+00 ) -1.00805936302149e-01 + 4 ( -3.28699069057470e-01 , 2.14296787722334e-01 , 9.19800961497998e-01 ) ( 8.99582104322054e-01 , 3.77633009931505e-01 , -7.69689444581524e-01 ) 1.84545470089225e+00 ( 7.46327346241351e-01 , 6.65579065365146e-01 , 0.00000000000000e+00 ) -1.99926587941052e-01 + 5 ( -3.27691834282163e-01 , 2.14340399151662e-01 , 9.20150126357812e-01 ) ( 5.94442023130421e-01 , 5.93742346795334e-01 , -7.69981625736217e-01 ) 1.55205903108605e+00 ( 3.82683432365090e-01 , 9.23879532511287e-01 , 0.00000000000000e+00 ) -3.39925761052374e-01 + 6 ( -3.26525219575073e-01 , 2.14443853732057e-01 , 9.20540664271815e-01 ) ( 2.25456984382301e-01 , 6.55988226043346e-01 , -7.70308427862655e-01 ) 1.28408996002688e+00 ( -5.70976569767208e-02 , 9.98368598047719e-01 , 0.00000000000000e+00 ) -4.54082888609383e-01 + 7 ( -3.25217810308112e-01 , 2.14583532852425e-01 , 9.20970837370527e-01 ) ( -3.45446132883389e-02 , 5.99010452204356e-01 , -7.70668396711657e-01 ) 1.13998163222684e+00 ( -3.66499613950964e-01 , 9.30418203268721e-01 , 0.00000000000000e+00 ) -5.12696099304228e-01 + 8 ( -3.23796753972870e-01 , 2.14734087750040e-01 , 9.21436342714346e-01 ) ( -1.83336242013975e-01 , 5.23058985434512e-01 , -7.71057931583365e-01 ) 1.07759705274523e+00 ( -5.42888821389189e-01 , 8.39804577036026e-01 , 0.00000000000000e+00 ) -5.38347687996117e-01 + 9 ( -3.22294835838418e-01 , 2.14869803103587e-01 , 9.21931128938661e-01 ) ( -2.69600896841635e-01 , 4.60035016859046e-01 , -7.71471968695871e-01 ) 1.05101082552318e+00 ( -6.44475639903469e-01 , 7.64624842371090e-01 , 0.00000000000000e+00 ) -5.49741754293482e-01 + 10 ( -3.20749363670832e-01 , 2.14966659531062e-01 , 9.22447386572705e-01 ) ( -3.23303886977151e-01 , 4.11822853801310e-01 , -7.71903973084039e-01 ) 1.03962620687203e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 11 ( -3.19200405834927e-01 , 2.15004012199105e-01 , 9.22975826147741e-01 ) ( -3.24600054894236e-01 , 4.11791597088692e-01 , -7.72346171320430e-01 ) 1.04141506145259e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 12 ( -3.17690153264675e-01 , 2.14966086384984e-01 , 9.23505575631783e-01 ) ( -3.25863834245023e-01 , 4.11823333409948e-01 , -7.72789465688676e-01 ) 1.04324719728625e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 13 ( -3.16259183478589e-01 , 2.14842289084984e-01 , 9.24025389091761e-01 ) ( -3.27061269762020e-01 , 4.11926926990588e-01 , -7.73224445591986e-01 ) 1.04508713028118e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 14 ( -3.14945243314928e-01 , 2.14626623157147e-01 , 9.24524151304584e-01 ) ( -3.28160774890971e-01 , 4.12107396239002e-01 , -7.73641809811676e-01 ) 1.04689728740514e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 15 ( -3.13782120484417e-01 , 2.14317396540321e-01 , 9.24991261798987e-01 ) ( -3.29134076075543e-01 , 4.12366157071962e-01 , -7.74032687873392e-01 ) 1.04863968622001e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 16 ( -3.12796860422836e-01 , 2.13914513281047e-01 , 9.25418124480686e-01 ) ( -3.29958541695074e-01 , 4.12703289783323e-01 , -7.74389886565438e-01 ) 1.05028243433359e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 17 ( -3.12009150054690e-01 , 2.13419871583257e-01 , 9.25798168444686e-01 ) ( -3.30617697731138e-01 , 4.13117205956034e-01 , -7.74707907354513e-01 ) 1.05179998760465e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 18 ( -3.11428813565447e-01 , 2.12836854235221e-01 , 9.26127727454735e-01 ) ( -3.31103323305337e-01 , 4.13605074872870e-01 , -7.74983682334123e-01 ) 1.05317671671676e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 19 ( -3.11057435290019e-01 , 2.12166908276454e-01 , 9.26406214888051e-01 ) ( -3.31414092646215e-01 , 4.14165685651166e-01 , -7.75216720618321e-01 ) 1.05440903429928e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 20 ( -3.10885706960921e-01 , 2.11412551292752e-01 , 9.26636288067383e-01 ) ( -3.31557794912004e-01 , 4.14796931575128e-01 , -7.75409245854786e-01 ) 1.05550497653936e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.out b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.out new file mode 100644 index 000000000..e69de29bb diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.state.stripped b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.state.stripped new file mode 100644 index 000000000..bdc922a18 --- /dev/null +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.state.stripped @@ -0,0 +1,20 @@ +configuration { + step 40 + dt 1.000000e+00 +} + +colvar { + name one + x ( -3.08639969524265e-01 , 1.95850147681302e-01 , 9.30797555253167e-01 ) +} + +restraint { + configuration { + step 40 + name harmonic1 + firstStep 0 + centers ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) + accumulatedWork -5.55059495927072e-01 + } +} + diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.traj b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.traj new file mode 100644 index 000000000..fb24bade0 --- /dev/null +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/AutoDiff/test.restart.colvars.traj @@ -0,0 +1,22 @@ +# step one fa_one E_harmonic1 x0_one W_harmonic1 + 20 ( -3.10885706960921e-01 , 2.11412551292752e-01 , 9.26636288067383e-01 ) ( -3.31557794912004e-01 , 4.14796931575128e-01 , -7.75409245854786e-01 ) 1.05550497653936e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 21 ( -3.10897091374193e-01 , 2.10576898213230e-01 , 9.26822727663689e-01 ) ( -3.31548268434978e-01 , 4.15496206072072e-01 , -7.75565258508975e-01 ) 1.05648042754375e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 22 ( -3.11064705021948e-01 , 2.09664336230821e-01 , 9.26973362833311e-01 ) ( -3.31408009334537e-01 , 4.16259837938952e-01 , -7.75691310018915e-01 ) 1.05736200976446e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 23 ( -3.11357671914477e-01 , 2.08681834875126e-01 , 9.27096700421886e-01 ) ( -3.31162854638869e-01 , 4.17081995073397e-01 , -7.75794518913034e-01 ) 1.05817801443891e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 24 ( -3.11740853393812e-01 , 2.07639270301561e-01 , 9.27202013454421e-01 ) ( -3.30842208376961e-01 , 4.17954413108557e-01 , -7.75882644858660e-01 ) 1.05895833756397e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 25 ( -3.12177635464617e-01 , 2.06549698371545e-01 , 9.27298412604241e-01 ) ( -3.30476709140112e-01 , 4.18866166899594e-01 , -7.75963311667228e-01 ) 1.05973085816301e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 26 ( -3.12630971759631e-01 , 2.05428922422296e-01 , 9.27394648102437e-01 ) ( -3.30097357328444e-01 , 4.19804032213926e-01 , -7.76043841532119e-01 ) 1.06052071553325e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 27 ( -3.13066251934311e-01 , 2.04294843741088e-01 , 9.27498322758918e-01 ) ( -3.29733114878271e-01 , 4.20753029254360e-01 , -7.76130596484663e-01 ) 1.06134768340546e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 28 ( -3.13451817595270e-01 , 2.03166745880829e-01 , 9.27615885706156e-01 ) ( -3.29410473533181e-01 , 4.21697021543826e-01 , -7.76228973158911e-01 ) 1.06222640633799e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 29 ( -3.13760105408211e-01 , 2.02063706631599e-01 , 9.27752582705393e-01 ) ( -3.29152498291312e-01 , 4.22620044787581e-01 , -7.76343361207873e-01 ) 1.06316692624188e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 30 ( -3.13968838424589e-01 , 2.01004279720987e-01 , 9.27912090681096e-01 ) ( -3.28977830503207e-01 , 4.23506573226381e-01 , -7.76476837481941e-01 ) 1.06417364922862e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 31 ( -3.14060414173331e-01 , 2.00005821063283e-01 , 9.28096831041933e-01 ) ( -3.28901199916659e-01 , 4.24342083431148e-01 , -7.76631428215889e-01 ) 1.06524686707691e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 32 ( -3.14021712205281e-01 , 1.99084361748090e-01 , 9.28308020632710e-01 ) ( -3.28933585723524e-01 , 4.25113160586101e-01 , -7.76808151665451e-01 ) 1.06638313529438e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 33 ( -3.13844134973355e-01 , 1.98254442559562e-01 , 9.28545655823247e-01 ) ( -3.29082182351199e-01 , 4.25807636963061e-01 , -7.77007004792893e-01 ) 1.06757542057160e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 34 ( -3.13523097439585e-01 , 1.97529381671397e-01 , 9.28808597477653e-01 ) ( -3.29350826559459e-01 , 4.26414367914278e-01 , -7.77227034369300e-01 ) 1.06881338799430e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 35 ( -3.13056497779899e-01 , 1.96920823570625e-01 , 9.29095161133697e-01 ) ( -3.29741277154683e-01 , 4.26923609333004e-01 , -7.77466830836678e-01 ) 1.07008574464239e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 36 ( -3.12445608882840e-01 , 1.96438331222221e-01 , 9.29402885468116e-01 ) ( -3.30252468983742e-01 , 4.27327358930148e-01 , -7.77724334559719e-01 ) 1.07137966721610e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 37 ( -3.11693070648280e-01 , 1.96088634007210e-01 , 9.29729357029793e-01 ) ( -3.30882192978423e-01 , 4.27619985559669e-01 , -7.77997525962531e-01 ) 1.07268406797811e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 38 ( -3.10803479062424e-01 , 1.95875135976297e-01 , 9.30072109306026e-01 ) ( -3.31626603217466e-01 , 4.27798640711938e-01 , -7.78284341067283e-01 ) 1.07398947957346e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 39 ( -3.09783190290509e-01 , 1.95797219440961e-01 , 9.30428838693547e-01 ) ( -3.32480380861805e-01 , 4.27863841268707e-01 , -7.78582852218760e-01 ) 1.07528911100899e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 + 40 ( -3.08639969524265e-01 , 1.95850147681302e-01 , 9.30797555253167e-01 ) ( -3.33437027998998e-01 , 4.27819550917190e-01 , -7.78891394235850e-01 ) 1.07657937834902e+00 ( -7.07106781186548e-01 , 7.07106781186548e-01 , 0.00000000000000e+00 ) -5.55059495927072e-01 diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/gromacs-version.txt b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/gromacs-version.txt index 08734a593..1fcba9718 100644 --- a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/gromacs-version.txt +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/gromacs-version.txt @@ -1 +1,3 @@ - :-) GROMACS - gmx mdrun, 2020.3-MODIFIED (double precision) (-: + :-) GROMACS - gmx mdrun, 2020.7-Colvars-2023-01-31-dev-20230405-4336830f69-unknown (double precision) (-: +colvars: Initializing the collective variables module, version 2023-01-31. +colvars: Using GROMACS interface, version "2023-01-31". diff --git a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/test.in b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/test.in index 77d51bb9e..826133b94 100644 --- a/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/test.in +++ b/gromacs/tests/library/000_distancedir_harmonic-ddir-moving/test.in @@ -25,9 +25,8 @@ harmonic { centers (1.0, 0.0, 0.0) forceConstant 0.004184 - targetCenters (-1.0, 0.0, 0.0) + targetCenters (-0.707106781, 0.707106781, 0.0) targetNumSteps 10 - lambda = -0.5 outputEnergy yes outputCenters yes diff --git a/gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distanceinv_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancevec-fitgroup_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancevec_harmonic-dvec-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancewalls-compatible/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancewalls/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancexy-axis_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancez-axis-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancez-axis_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancez-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_distancez_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_eigenvector-difference_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_eigenvector-normalized_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_eigenvector_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_gyration_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_inertia_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_inertiaz_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_orientation-fitgroup_harmonic-ori-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_orientation_harmonic-ori-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_orientation_harmonic-ori-moving/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_rmsd-fitgroup_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_rmsd_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_selfcoordnum-pairlist_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_selfcoordnum_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_spinangle_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped b/gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped similarity index 100% rename from gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.state.stripped rename to gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.colvars.state.stripped diff --git a/gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj b/gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.colvars.traj similarity index 100% rename from gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.part0002.colvars.traj rename to gromacs/tests/library/000_tilt_harmonic-fixed/AutoDiff/test.restart.colvars.traj diff --git a/gromacs/tests/library/Common/test.mdp b/gromacs/tests/library/Common/test.mdp index 63e8b6849..c3953c389 100644 --- a/gromacs/tests/library/Common/test.mdp +++ b/gromacs/tests/library/Common/test.mdp @@ -51,3 +51,7 @@ pbc = xyz tcoupl = no ;Velocity generation gen_vel = no + +; Colvars configuration +colvars-active = Yes +colvars-configfile = test.in diff --git a/gromacs/tests/library/run_tests.sh b/gromacs/tests/library/run_tests.sh index 078bef5b3..7e30acbc5 100755 --- a/gromacs/tests/library/run_tests.sh +++ b/gromacs/tests/library/run_tests.sh @@ -93,6 +93,12 @@ cleanup_files() { } +if ${BINARY} mdrun -colvars 2>&1 | grep -q 'Unknown command-line option -colvars' ; then + MDMODULES_INTERFACE=yes +else + MDMODULES_INTERFACE=no +fi + for dir in ${DIRLIST} ; do if [ -f ${dir}/disabled ] ; then @@ -131,27 +137,10 @@ for dir in ${DIRLIST} ; do fi fi - SCRIPTS="../Common/test.tpr ../Common/test.restart.tpr" - restart=false - cleanup_files - - - # run simulation(s) - for script in ${SCRIPTS} ; do - - basename=`basename ${script}` - basename=${basename%.tpr} - - #prefix of the Gromacs generated files - output="" - - #Different command line if it's a restart (checkpoint needed) - if echo "${basename}" |grep -q "restart" - then - restart=true - fi + # Run simulation(s) + for basename in test test.restart ; do # Input files # Symbolink link to the colvars input file, index file, and xyz file @@ -169,49 +158,70 @@ for dir in ${DIRLIST} ; do fi # Try running the test - if [ "$restart" = "false" ] - then - $BINARY mdrun -s ${script} -deffnm ${basename} -colvars test.dat &> ${basename}.out - RETVAL=$? - output=${basename} - else - if [ -f test.restart.in ] ; then - ln -fs test.restart.in test.dat + + if [ "x${MDMODULES_INTERFACE}" == "xyes" ] ; then + + if [ "${basename}" == "test" ] ; then + ${BINARY} grompp -f ../Common/test.mdp -c ../Common/da.pdb -p ../Common/da.top -t ../Common/da.trr -o ${basename}.tpr >& ${basename}.grompp.out + ${BINARY} mdrun -s ${basename}.tpr -ntomp 1 -deffnm ${basename} >& ${basename}.out + RETVAL=$? fi - $BINARY mdrun -s ${script} -deffnm ${basename} -noappend -cpi ${basename%.restart}.cpt -colvars test.dat -colvars_restart test.colvars.state.dat &> ${basename}.out - RETVAL=$? - output="${basename}.part0002" - fi + if [ "${basename}" == "test.restart" ] ; then + ${BINARY} convert-tpr -s ${basename%.restart}.tpr -nsteps 40 -o ${basename}.tpr >& ${basename}.grompp.out + ${BINARY} mdrun -s ${basename}.tpr -ntomp 1 -deffnm ${basename} -noappend -cpi ${basename%.restart}.cpt >& ${basename}.out + RETVAL=$? + output=${basename}.part0002 + for file in ${output}.* ; do + # Remove the part number + mv -f ${file} ${file/.part0002/} + done + fi - # Output of Colvars module, minus the version numbers - grep "^colvars:" ${basename}.out | grep -v 'Initializing the collective variables module' \ - | grep -v 'Using GROMACS interface, version' > ${basename}.colvars.out + else + if [ "${basename}" == "test" ] ; then + ln -fs ${basename}.in ${basename}.dat + ${BINARY} mdrun -s ../Common/${basename} -deffnm ${basename} -colvars test.dat &> ${basename}.out + RETVAL=$? + ln -fs ${basename}.colvars.state{,.dat} + fi + + if [ "${basename}" == "test.restart" ] ; then + ${BINARY} mdrun -s ../Common/${basename} -deffnm ${basename} -noappend -cpi ${basename%.restart}.cpt -colvars ${basename%.restart}.dat -colvars_restart ${basename%.restart}.colvars.state.dat &> ${basename}.out + RETVAL=$? + output="${basename}.part0002" + for file in ${output}.* ; do + # Remove the part number + mv -f ${file} ${file/.part0002/} + done + fi - if [ -f ${output}.colvars.state ] ; then - # Filter out the version number from the state files to allow comparisons - grep -sv 'version' ${output}.colvars.state > ${TMPDIR}/${output}.colvars.state.stripped - mv -f ${TMPDIR}/${output}.colvars.state.stripped ${output}.colvars.state.stripped - #Create symlink for restart input - ln -sf ${output}.colvars.state{,.dat} fi - #Convert the output of the traj files + # Filter out the version numbers to allow comparisons + grep "^colvars:" ${basename}.log \ + | grep -v 'Initializing the collective variables module' \ + | grep -v 'Using GROMACS interface, version' > ${basename}.colvars.out + if [ -f ${basename}.colvars.state ] ; then + grep -sv 'version' ${basename}.colvars.state \ + > ${TMPDIR}/${basename}.colvars.state.stripped && \ + mv -f ${TMPDIR}/${basename}.colvars.state.stripped ${basename}.colvars.state.stripped + fi # If this test is used to generate the reference output files, copy them if [ "x${gen_ref_output}" = 'xyes' ]; then grep ':-) GROMACS -' ${basename}.out | head -n 1 > gromacs-version.txt grep 'Initializing the collective variables module, version' ${basename}.out | head -n 1 >> gromacs-version.txt grep 'Using GROMACS interface, version' ${basename}.out | head -n 1 >> gromacs-version.txt - cp ${output}.colvars.state.stripped AutoDiff/ - cp ${output}.colvars.traj AutoDiff/ + cp ${basename}.colvars.state.stripped AutoDiff/ + cp ${basename}.colvars.traj AutoDiff/ cp ${basename}.colvars.out AutoDiff/ - if [ -f ${output}.histogram1.dat ] ; then - cp -f ${output}.histogram1.dat AutoDiff/ + if [ -f ${basename}.histogram1.dat ] ; then + cp -f ${basename}.histogram1.dat AutoDiff/ fi - if [ -f ${output}.pmf ] ; then - cp -f ${output}.pmf AutoDiff/ + if [ -f ${basename}.pmf ] ; then + cp -f ${basename}.pmf AutoDiff/ fi fi @@ -223,6 +233,12 @@ for dir in ${DIRLIST} ; do for f in AutoDiff/* do base=`basename $f` + + if [ "${base%.state.stripped}" != "${base}" ] && [ -n "${COLVARS_BINARY_RESTART}" ] ; then + # Do not try comparing binary state files, they will never match anyway + continue + fi + if [ ! -f $base ] ; then echo -e "\n*** File $(${TPUT_RED})$base$(${TPUT_CLEAR}) is missing. ***" SUCCESS=0 @@ -245,10 +261,8 @@ for dir in ${DIRLIST} ; do fi if [ $RETVAL -ne 0 ] then - if [ ${base} != ${base%.out} ] + if [ ${base} == ${base%.out} ] # Ignore differences in stdout log then - echo -n "(warning: differences in log file $base) " - else echo -e "\n*** Failure for file $(${TPUT_RED})$base$(${TPUT_CLEAR}): see `pwd`/$base.diff " SUCCESS=0 ALL_SUCCESS=0 @@ -275,7 +289,7 @@ for dir in ${DIRLIST} ; do if [ "x${gen_ref_output}" == 'xyes' ]; then echo "Reference files copied successfully." else - echo "$(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" + echo " $(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" fi cleanup_files fi diff --git a/lammps/doc/src/fix_colvars.rst b/lammps/doc/src/fix_colvars.rst index 9ac9893c2..936fdaa83 100644 --- a/lammps/doc/src/fix_colvars.rst +++ b/lammps/doc/src/fix_colvars.rst @@ -85,9 +85,10 @@ selection keywords in the Colvars configuration file or files. There is no need to define multiple "fix colvars" instances and it is not allowed. -The "output" keyword allows to specify the prefix of output files -generated by Colvars, for example "*output*.colvars.traj" or -"output.pmf". +The "output" keyword allows to specify the prefix of output files generated +by Colvars, for example "*output*.colvars.traj" or "output.pmf". Supplying +an empty string suppresses any file output from Colvars to file, except for +data saved into the LAMMPS :doc:`binary restart ` files. The "input" keyword allows to specify an optional state file that contains the restart information needed to continue a previous simulation state. diff --git a/lammps/lib/colvars/Makefile.common b/lammps/lib/colvars/Makefile.common index 34107eb79..d57d89614 100644 --- a/lammps/lib/colvars/Makefile.common +++ b/lammps/lib/colvars/Makefile.common @@ -60,6 +60,7 @@ COLVARS_SRCS = \ colvarscript_commands.cpp \ colvarscript_commands_bias.cpp \ colvarscript_commands_colvar.cpp \ + colvars_memstream.cpp \ colvartypes.cpp \ colvarvalue.cpp \ colvar_neuralnetworkcompute.cpp diff --git a/lammps/lib/colvars/Makefile.deps b/lammps/lib/colvars/Makefile.deps index c4658ad0a..c3029f45c 100644 --- a/lammps/lib/colvars/Makefile.deps +++ b/lammps/lib/colvars/Makefile.deps @@ -1,88 +1,101 @@ -$(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ +$(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvardeps.h \ + colvarmodule.h colvars_version.h colvarparse.h colvarvalue.h \ + colvartypes.h ../../src/math_eigen_impl.h colvarparams.h colvarproxy.h \ colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvarparse.h colvarparams.h colvaratoms.h \ - colvardeps.h colvar_rotation_derivative.h + colvarproxy_volmaps.h colvaratoms.h colvar_rotation_derivative.h $(COLVARS_OBJ_DIR)colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h \ - colvars_version.h colvar.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvardeps.h colvarbias_abf.h colvarproxy.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvarbias.h colvargrid.h colvar_UIestimator.h + colvars_version.h colvar.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvardeps.h \ + colvarbias_abf.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvarbias.h colvargrid.h \ + colvar_UIestimator.h $(COLVARS_OBJ_DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h \ - colvars_version.h colvarbias.h colvar.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h colvarbias_alb.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvarbias.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ + colvarbias_alb.h $(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvarbias.h colvar.h colvarparse.h colvarparams.h \ - colvardeps.h colvargrid.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvarbias.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ + colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ - colvarbias_histogram.h colvarbias.h colvargrid.h + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h \ + colvarparse.h colvarparams.h colvardeps.h colvarbias_histogram.h \ + colvarbias.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_histogram_reweight_amd.o: \ colvarbias_histogram_reweight_amd.cpp \ colvarbias_histogram_reweight_amd.h colvarbias_histogram.h colvarbias.h \ colvar.h colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h colvargrid.h colvarproxy.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvardeps.h \ + colvargrid.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h $(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ - colvarbias_meta.h colvarbias.h colvargrid.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h \ + colvarparse.h colvarparams.h colvardeps.h colvarbias_meta.h colvarbias.h \ + colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_restraint.o: colvarbias_restraint.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvarbias_restraint.h colvarbias.h colvar.h \ - colvarparse.h colvarparams.h colvardeps.h + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \ + colvarparams.h colvardeps.h $(COLVARS_OBJ_DIR)colvarcomp_alchlambda.o: colvarcomp_alchlambda.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ - colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_angles.o: colvarcomp_angles.cpp \ colvarmodule.h colvars_version.h colvar.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvardeps.h \ + colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_apath.o: colvarcomp_apath.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_coordnums.o: colvarcomp_coordnums.cpp \ colvarmodule.h colvars_version.h colvarparse.h colvarvalue.h \ - colvartypes.h colvarparams.h colvaratoms.h colvarproxy.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvartypes.h ../../src/math_eigen_impl.h colvarparams.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ colvarproxy_volmaps.h colvardeps.h colvar.h colvarcomp.h \ colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp.o: colvarcomp.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvar.h colvarparse.h \ - colvarparams.h colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvar.h colvarparse.h colvarparams.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_distances.o: colvarcomp_distances.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ - colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h colvar_rotation_derivative.h -$(COLVARS_OBJ_DIR)colvarcomp_gpath.o: colvarcomp_gpath.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h -$(COLVARS_OBJ_DIR)colvarcomp_neuralnetwork.o: \ - colvarcomp_neuralnetwork.cpp colvarmodule.h colvars_version.h \ - colvarvalue.h colvartypes.h colvarparse.h colvarparams.h colvar.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ colvar_arithmeticpath.h colvar_geometricpath.h \ + colvar_rotation_derivative.h +$(COLVARS_OBJ_DIR)colvarcomp_gpath.o: colvarcomp_gpath.cpp colvarmodule.h \ + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h +$(COLVARS_OBJ_DIR)colvarcomp_neuralnetwork.o: \ + colvarcomp_neuralnetwork.cpp colvarmodule.h colvars_version.h \ + colvarvalue.h colvartypes.h ../../src/math_eigen_impl.h colvarparse.h \ + colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h \ colvar_neuralnetworkcompute.h $(COLVARS_OBJ_DIR)colvarcomp_torchann.o: \ colvarcomp_torchann.cpp colvarmodule.h colvars_version.h \ @@ -90,117 +103,134 @@ $(COLVARS_OBJ_DIR)colvarcomp_torchann.o: \ colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ colvarproxy_system.h colvarproxy_tcl.h $(COLVARS_OBJ_DIR)colvarcomp_combination.o: colvarcomp_combination.cpp \ - colvarcomp.h colvarmodule.h colvars_version.h colvar.h colvarvalue.h \ - colvartypes.h colvarparse.h colvarparams.h colvardeps.h colvaratoms.h \ - colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h + colvarcomp.h colvarmodule.h colvars_version.h colvaratoms.h \ + colvarproxy.h colvartypes.h ../../src/math_eigen_impl.h colvarvalue.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarparse.h colvarparams.h colvardeps.h colvar.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_protein.o: colvarcomp_protein.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ - colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_rotations.o: colvarcomp_rotations.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ - colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h colvar_rotation_derivative.h + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h \ + colvar_rotation_derivative.h $(COLVARS_OBJ_DIR)colvarcomp_volmaps.o: colvarcomp_volmaps.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ - colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h -$(COLVARS_OBJ_DIR)colvar.o: colvar.cpp colvarmodule.h colvars_version.h \ - colvarvalue.h colvartypes.h colvarparse.h colvarparams.h colvar.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h colvarscript.h \ - colvarbias.h colvarscript_commands.h colvarscript_commands_colvar.h \ - colvarscript_commands_bias.h + colvar_arithmeticpath.h colvar_geometricpath.h +$(COLVARS_OBJ_DIR)colvar.o: colvar.cpp colvarmodule.h colvars_version.h \ + colvarvalue.h colvartypes.h ../../src/math_eigen_impl.h colvarparse.h \ + colvarparams.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvar.h colvar_arithmeticpath.h colvar_geometricpath.h \ + colvarscript.h colvarbias.h colvarscript_commands.h \ + colvarscript_commands_colvar.h colvarscript_commands_bias.h \ + colvars_memstream.h $(COLVARS_OBJ_DIR)colvardeps.o: colvardeps.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvarparse.h colvarparams.h $(COLVARS_OBJ_DIR)colvargrid.o: colvargrid.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h \ - colvargrid.h colvargrid_def.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h colvar.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvar_arithmeticpath.h colvar_geometricpath.h colvargrid.h \ + colvargrid_def.h $(COLVARS_OBJ_DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h \ colvars_version.h colvarparse.h colvarvalue.h colvartypes.h \ - colvarparams.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h colvardeps.h \ - colvarbias.h colvarbias_abf.h colvargrid.h colvar_UIestimator.h \ - colvarbias_alb.h colvarbias_histogram.h \ - colvarbias_histogram_reweight_amd.h colvarbias_meta.h \ - colvarbias_restraint.h colvarscript.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h \ - colvaratoms.h colvarcomp.h colvar_arithmeticpath.h \ - colvar_geometricpath.h colvarmodule_refs.h + ../../src/math_eigen_impl.h colvarparams.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar.h colvardeps.h colvarbias.h \ + colvarbias_abf.h colvargrid.h colvar_UIestimator.h colvarbias_alb.h \ + colvarbias_histogram.h colvarbias_histogram_reweight_amd.h \ + colvarbias_meta.h colvarbias_restraint.h colvarscript.h \ + colvarscript_commands.h colvarscript_commands_colvar.h \ + colvarscript_commands_bias.h colvaratoms.h colvarcomp.h \ + colvar_arithmeticpath.h colvar_geometricpath.h colvarmodule_refs.h $(COLVARS_OBJ_DIR)colvarparams.o: colvarparams.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparams.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparams.h $(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarparse.h colvarparams.h \ + colvars_memstream.h $(COLVARS_OBJ_DIR)colvarproxy.o: colvarproxy.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvarscript.h colvarbias.h colvar.h colvarparse.h \ - colvarparams.h colvardeps.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h \ - colvaratoms.h colvarmodule_utils.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvarscript.h colvarbias.h colvar.h colvarparse.h colvarparams.h \ + colvardeps.h colvarscript_commands.h colvarscript_commands_colvar.h \ + colvarscript_commands_bias.h colvaratoms.h colvarmodule_utils.h $(COLVARS_OBJ_DIR)colvarproxy_io.o: colvarproxy_io.cpp colvarmodule.h \ colvars_version.h colvarproxy_io.h $(COLVARS_OBJ_DIR)colvarproxy_replicas.o: colvarproxy_replicas.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h $(COLVARS_OBJ_DIR)colvarproxy_system.o: colvarproxy_system.cpp \ - colvarmodule.h colvars_version.h colvartypes.h colvarproxy_system.h + colvarmodule.h colvars_version.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarproxy_system.h $(COLVARS_OBJ_DIR)colvarproxy_tcl.o: colvarproxy_tcl.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvaratoms.h colvarparse.h colvarparams.h \ - colvardeps.h + colvars_version.h colvarproxy.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvaratoms.h colvarparse.h colvarparams.h colvardeps.h $(COLVARS_OBJ_DIR)colvarproxy_volmaps.o: colvarproxy_volmaps.cpp \ colvarmodule.h colvars_version.h colvarproxy_volmaps.h \ colvarmodule_utils.h $(COLVARS_OBJ_DIR)colvarscript.o: colvarscript.cpp colvarproxy.h \ - colvarmodule.h colvars_version.h colvartypes.h colvarvalue.h \ - colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ - colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h -$(COLVARS_OBJ_DIR)colvarscript_commands.o: colvarscript_commands.cpp \ - colvarproxy.h colvarmodule.h colvars_version.h colvartypes.h \ - colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ - colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h -$(COLVARS_OBJ_DIR)colvarscript_commands_bias.o: \ - colvarscript_commands_bias.cpp colvarproxy.h colvarmodule.h \ - colvars_version.h colvartypes.h colvarvalue.h colvarproxy_io.h \ + colvarmodule.h colvars_version.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ colvardeps.h colvarparse.h colvarparams.h colvarscript.h colvarbias.h \ colvar.h colvarscript_commands.h colvarscript_commands_colvar.h \ colvarscript_commands_bias.h -$(COLVARS_OBJ_DIR)colvarscript_commands_colvar.o: \ - colvarscript_commands_colvar.cpp colvarproxy.h colvarmodule.h \ - colvars_version.h colvartypes.h colvarvalue.h colvarproxy_io.h \ +$(COLVARS_OBJ_DIR)colvarscript_commands.o: colvarscript_commands.cpp \ + colvarproxy.h colvarmodule.h colvars_version.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvarproxy_io.h \ colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ colvardeps.h colvarparse.h colvarparams.h colvarscript.h colvarbias.h \ colvar.h colvarscript_commands.h colvarscript_commands_colvar.h \ colvarscript_commands_bias.h +$(COLVARS_OBJ_DIR)colvarscript_commands_bias.o: \ + colvarscript_commands_bias.cpp colvarproxy.h colvarmodule.h \ + colvars_version.h colvartypes.h ../../src/math_eigen_impl.h \ + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ + colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ + colvarscript_commands_colvar.h colvarscript_commands_bias.h +$(COLVARS_OBJ_DIR)colvarscript_commands_colvar.o: \ + colvarscript_commands_colvar.cpp colvarproxy.h colvarmodule.h \ + colvars_version.h colvartypes.h ../../src/math_eigen_impl.h \ + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ + colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ + colvarscript_commands_colvar.h colvarscript_commands_bias.h +$(COLVARS_OBJ_DIR)colvars_memstream.o: colvars_memstream.cpp \ + colvarmodule.h colvars_version.h colvartypes.h \ + ../../src/math_eigen_impl.h colvarvalue.h colvars_memstream.h $(COLVARS_OBJ_DIR)colvartypes.o: colvartypes.cpp colvarmodule.h \ - colvars_version.h colvartypes.h colvarparse.h colvarvalue.h \ - colvarparams.h colvar_rotation_derivative.h ../../src/math_eigen_impl.h + colvars_version.h colvartypes.h ../../src/math_eigen_impl.h \ + colvarparse.h colvarvalue.h colvarparams.h colvaratoms.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvar_rotation_derivative.h $(COLVARS_OBJ_DIR)colvarvalue.o: colvarvalue.cpp colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h + colvars_version.h colvarvalue.h colvartypes.h \ + ../../src/math_eigen_impl.h colvars_memstream.h $(COLVARS_OBJ_DIR)colvar_neuralnetworkcompute.o: \ colvar_neuralnetworkcompute.cpp colvar_neuralnetworkcompute.h \ colvarparse.h colvarmodule.h colvars_version.h colvarvalue.h \ - colvartypes.h colvarparams.h colvarproxy.h colvarproxy_io.h \ - colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h + colvartypes.h ../../src/math_eigen_impl.h colvarparams.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h diff --git a/lammps/src/COLVARS/colvarproxy_lammps.cpp b/lammps/src/COLVARS/colvarproxy_lammps.cpp index 95513547c..bb1b2e8f0 100644 --- a/lammps/src/COLVARS/colvarproxy_lammps.cpp +++ b/lammps/src/COLVARS/colvarproxy_lammps.cpp @@ -67,18 +67,7 @@ void colvarproxy_lammps::init() set_integration_timestep(_lmp->update->dt * _lmp->force->femtosecond); if (_lmp->update->ntimestep != 0) { - cvm::log("Setting initial step number from LAMMPS: "+ - cvm::to_str(_lmp->update->ntimestep)+"\n"); - colvarmodule::it = colvarmodule::it_restart = - static_cast(_lmp->update->ntimestep); - } - - if (cvm::debug()) { - cvm::log("atoms_ids = "+cvm::to_str(atoms_ids)+"\n"); - cvm::log("atoms_refcount = "+cvm::to_str(atoms_refcount)+"\n"); - cvm::log("atoms_positions = "+cvm::to_str(atoms_positions)+"\n"); - cvm::log(cvm::line_marker); - cvm::log("Info: done initializing the colvars proxy object.\n"); + colvars->set_initial_step(static_cast(_lmp->update->ntimestep)); } } @@ -206,23 +195,6 @@ double colvarproxy_lammps::compute() return bias_energy; } -void colvarproxy_lammps::serialize_status(std::string &rst) -{ - std::ostringstream os; - colvars->write_restart(os); - rst = os.str(); -} - -// set status from string -bool colvarproxy_lammps::deserialize_status(std::string &rst) -{ - if (! colvarproxy_io::input_stream_from_string("input state string", rst)) { - return false; - } else { - return true; - } -} - cvm::rvector colvarproxy_lammps::position_distance(cvm::atom_pos const &pos1, cvm::atom_pos const &pos2) diff --git a/lammps/src/COLVARS/colvarproxy_lammps.h b/lammps/src/COLVARS/colvarproxy_lammps.h index 6d85a378e..5cad6a247 100644 --- a/lammps/src/COLVARS/colvarproxy_lammps.h +++ b/lammps/src/COLVARS/colvarproxy_lammps.h @@ -76,12 +76,6 @@ class colvarproxy_lammps : public colvarproxy { // perform colvars computation. returns biasing energy double compute(); - // dump status to string - void serialize_status(std::string &); - - // set status from string - bool deserialize_status(std::string &); - // Request to set the units used internally by Colvars int set_unit_system(std::string const &units_in, bool check_only) override; diff --git a/lammps/src/COLVARS/colvarproxy_lammps_version.h b/lammps/src/COLVARS/colvarproxy_lammps_version.h index 53c2d8efc..5f7e40b66 100644 --- a/lammps/src/COLVARS/colvarproxy_lammps_version.h +++ b/lammps/src/COLVARS/colvarproxy_lammps_version.h @@ -1,3 +1,3 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2023-07-06" +#define COLVARPROXY_VERSION "2023-10-03" #endif diff --git a/lammps/src/COLVARS/fix_colvars.cpp b/lammps/src/COLVARS/fix_colvars.cpp index bca3a37e1..246e905a5 100644 --- a/lammps/src/COLVARS/fix_colvars.cpp +++ b/lammps/src/COLVARS/fix_colvars.cpp @@ -45,9 +45,11 @@ #include #include -#include "colvarproxy_lammps.h" #include "colvarmodule.h" +#include "colvarproxy.h" +#include "colvarproxy_lammps.h" #include "colvarscript.h" +#include "colvars_memstream.h" /* struct for packed data communication of coordinates and forces. */ @@ -888,13 +890,17 @@ void FixColvars::end_of_step() void FixColvars::write_restart(FILE *fp) { if (me == 0) { - std::string rest_text; - proxy->serialize_status(rest_text); - // TODO call write_output_files() - const char *cvm_state = rest_text.c_str(); - int len = strlen(cvm_state) + 1; // need to include terminating null byte. - fwrite(&len,sizeof(int),1,fp); - fwrite(cvm_state,1,len,fp); + cvm::memory_stream ms; + if (proxy->colvars->write_state(ms)) { + int len_cv_state = ms.length(); + // Will write the buffer's length twice, so that the fix can read it later, too + int len = len_cv_state + sizeof(int); + fwrite(&len, sizeof(int), 1, fp); + fwrite(&len, sizeof(int), 1, fp); + fwrite(ms.output_buffer(), 1, len_cv_state, fp); + } else { + error->all(FLERR, "Failed to write Colvars state to binary file"); + } } } @@ -903,8 +909,10 @@ void FixColvars::write_restart(FILE *fp) void FixColvars::restart(char *buf) { if (me == 0) { - std::string rest_text(buf); - if (!proxy->deserialize_status(rest_text)) { + // Read the buffer's length, then load it into Colvars starting right past that location + int length = *(reinterpret_cast(buf)); + unsigned char *colvars_state_buffer = reinterpret_cast(buf + sizeof(int)); + if (proxy->colvars->set_input_state_buffer(length, colvars_state_buffer) != COLVARS_OK) { error->all(FLERR, "Failed to set the Colvars input state from string buffer"); } } diff --git a/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.harmonic1.ti.force b/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.harmonic1.ti.force deleted file mode 100644 index 41cb0281e..000000000 --- a/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.harmonic1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 -2.90562076256881e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.restart.harmonic1.ti.force b/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.restart.harmonic1.ti.force deleted file mode 100644 index 2dd4b82ed..000000000 --- a/lammps/tests/library/000_distance-grid_harmonic-centers-moving-ti/test.restart.harmonic1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 4.14032182279625e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.harmonic1.ti.force b/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.harmonic1.ti.force deleted file mode 100644 index 369453b97..000000000 --- a/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.harmonic1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 -2.90553316335429e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.restart.harmonic1.ti.force b/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.restart.harmonic1.ti.force deleted file mode 100644 index 969743f75..000000000 --- a/lammps/tests/library/000_distance-grid_harmonic-fixed-ti/test.restart.harmonic1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 4.14054595271415e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/000_distance-grid_metadynamics-ti/test.metadynamics1.ti.force b/lammps/tests/library/000_distance-grid_metadynamics-ti/test.metadynamics1.ti.force deleted file mode 100644 index 3edb75d55..000000000 --- a/lammps/tests/library/000_distance-grid_metadynamics-ti/test.metadynamics1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 -2.91090719796635e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/000_distance-grid_metadynamics-ti/test.restart.metadynamics1.ti.force b/lammps/tests/library/000_distance-grid_metadynamics-ti/test.restart.metadynamics1.ti.force deleted file mode 100644 index ced5d2875..000000000 --- a/lammps/tests/library/000_distance-grid_metadynamics-ti/test.restart.metadynamics1.ti.force +++ /dev/null @@ -1,23 +0,0 @@ -# 1 -# 0.00000000000000e+00 5.00000000000000e-01 20 0 - - 2.50000000000000e-01 0.00000000000000e+00 - 7.50000000000000e-01 0.00000000000000e+00 - 1.25000000000000e+00 0.00000000000000e+00 - 1.75000000000000e+00 0.00000000000000e+00 - 2.25000000000000e+00 0.00000000000000e+00 - 2.75000000000000e+00 0.00000000000000e+00 - 3.25000000000000e+00 4.13122374770902e+00 - 3.75000000000000e+00 0.00000000000000e+00 - 4.25000000000000e+00 0.00000000000000e+00 - 4.75000000000000e+00 0.00000000000000e+00 - 5.25000000000000e+00 0.00000000000000e+00 - 5.75000000000000e+00 0.00000000000000e+00 - 6.25000000000000e+00 0.00000000000000e+00 - 6.75000000000000e+00 0.00000000000000e+00 - 7.25000000000000e+00 0.00000000000000e+00 - 7.75000000000000e+00 0.00000000000000e+00 - 8.25000000000000e+00 0.00000000000000e+00 - 8.75000000000000e+00 0.00000000000000e+00 - 9.25000000000000e+00 0.00000000000000e+00 - 9.75000000000000e+00 0.00000000000000e+00 diff --git a/lammps/tests/library/run_tests.sh b/lammps/tests/library/run_tests.sh index 514bf18c7..e972ce117 100755 --- a/lammps/tests/library/run_tests.sh +++ b/lammps/tests/library/run_tests.sh @@ -40,13 +40,14 @@ if [ ${NUM_TASKS} -gt ${NUM_CPUS} ] ; then NUM_TASKS=${NUM_CPUS} fi -if $BINARY -h > /dev/null ; then - if $BINARY -h | grep ^MPI | grep -q STUBS ; then +if $BINARY -h >& /dev/null ; then + if $BINARY -h 2> /dev/null | grep ^MPI | grep -q STUBS ; then MPI_BUILD=no else - MPI_BUILD=yes - source ${TOPDIR}/devel-tools/load-openmpi.sh - BINARY="mpirun -n ${NUM_TASKS} $BINARY" + if source ${TOPDIR}/devel-tools/load-openmpi.sh ; then + MPI_BUILD=yes + BINARY="mpirun -n ${NUM_TASKS} $BINARY" + fi fi else echo "Error: executable $BINARY did not return a help screen" >& 2 @@ -172,6 +173,7 @@ for dir in ${DIRLIST} ; do "${extra_args[@]}" \ -echo log > /dev/null + # Output of Colvars module, minus the version numbers for log_file in *.out ; do if [ x${log_file%.colvars.out} != x${log_file} ] ; then @@ -227,6 +229,10 @@ for dir in ${DIRLIST} ; do for f in AutoDiff/* do base=`basename $f` + if [ "${base%.state.stripped}" != "${base}" ] && [ -n "${COLVARS_BINARY_RESTART}" ] ; then + # Do not try comparing binary state files, they will never match anyway + continue + fi if [ "${base}" != "${base%.traj}" ] ; then # System force is now total force sed 's/fs_/ft_/g' < ${base} > ${TMPDIR}/${base} @@ -236,10 +242,8 @@ for dir in ${DIRLIST} ; do RETVAL=$? if [ $RETVAL -ne 0 ] then - if [ ${base##*\.} = 'out' ] + if [ ${base} == ${base%.out} ] # Ignore differences in stdout log then - echo -n "(warning: differences in log file $base) " - else echo -e "\n*** Failure for file $(${TPUT_RED})$base$(${TPUT_CLEAR}): see `pwd`/$base.diff " SUCCESS=0 ALL_SUCCESS=0 @@ -268,7 +272,7 @@ for dir in ${DIRLIST} ; do if [ "x${gen_ref_output}" == 'xyes' ]; then echo "Reference files copied successfully." else - echo "$(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" + echo " $(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" fi cleanup_files fi diff --git a/misc_interfaces/stubs/colvarproxy_stub.cpp b/misc_interfaces/stubs/colvarproxy_stub.cpp index 576d23a0e..bc656f728 100644 --- a/misc_interfaces/stubs/colvarproxy_stub.cpp +++ b/misc_interfaces/stubs/colvarproxy_stub.cpp @@ -7,6 +7,8 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include + #include "colvarmodule.h" #include "colvarscript.h" #include "colvaratoms.h" @@ -76,7 +78,7 @@ int colvarproxy_stub::set_unit_system(std::string const &units_in, bool check_only) { // if check_only is specified, just test for compatibility - // cvolvarmodule does that if new units are requested while colvars are already defined + // colvarmodule sets this flag if new units are requested while colvars are already defined if (check_only) { if ((units != "" && units_in != units) || (units == "" && units_in != "real")) { cvm::error("Specified unit system \"" + units_in + "\" is incompatible with previous setting \"" diff --git a/namd/Makefile.patch b/namd/Makefile.patch index 5e812279c..a1349b313 100644 --- a/namd/Makefile.patch +++ b/namd/Makefile.patch @@ -1,8 +1,8 @@ diff --git a/Makefile b/Makefile -index 57618904..b51789b3 100644 +index 1456d146..4bae1b7a 100644 --- a/Makefile +++ b/Makefile -@@ -406,13 +406,7 @@ SBLIB = \ +@@ -404,13 +404,7 @@ SBLIB = \ include colvars/src/Makefile.namd diff --git a/namd/colvars/Make.depends b/namd/colvars/Make.depends index 2a1329f8a..5598fd149 100644 --- a/namd/colvars/Make.depends +++ b/namd/colvars/Make.depends @@ -7,8 +7,6 @@ obj/colvar.o: \ colvars/src/colvartypes.h \ colvars/src/colvarparse.h \ colvars/src/colvarparams.h \ - colvars/src/colvar.h \ - colvars/src/colvardeps.h \ colvars/src/colvarcomp.h \ colvars/src/colvaratoms.h \ colvars/src/colvarproxy.h \ @@ -16,31 +14,34 @@ obj/colvar.o: \ colvars/src/colvarproxy_system.h \ colvars/src/colvarproxy_tcl.h \ colvars/src/colvarproxy_volmaps.h \ + colvars/src/colvardeps.h \ + colvars/src/colvar.h \ colvars/src/colvar_arithmeticpath.h \ colvars/src/colvar_geometricpath.h \ colvars/src/colvarscript.h \ colvars/src/colvarbias.h \ colvars/src/colvarscript_commands.h \ colvars/src/colvarscript_commands_colvar.h \ - colvars/src/colvarscript_commands_bias.h + colvars/src/colvarscript_commands_bias.h \ + colvars/src/colvars_memstream.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvar.o $(COPTC) colvars/src/colvar.cpp obj/colvaratoms.o: \ obj/.exists \ colvars/src/colvaratoms.cpp \ + colvars/src/colvardeps.h \ colvars/src/colvarmodule.h \ colvars/src/colvars_version.h \ - colvars/src/colvarproxy.h \ - colvars/src/colvartypes.h \ + colvars/src/colvarparse.h \ colvars/src/colvarvalue.h \ + colvars/src/colvartypes.h \ + colvars/src/colvarparams.h \ + colvars/src/colvarproxy.h \ colvars/src/colvarproxy_io.h \ colvars/src/colvarproxy_system.h \ colvars/src/colvarproxy_tcl.h \ colvars/src/colvarproxy_volmaps.h \ - colvars/src/colvarparse.h \ - colvars/src/colvarparams.h \ colvars/src/colvaratoms.h \ - colvars/src/colvardeps.h \ - colvars/src/colvar_rotation_derivative.h + colvars/src/colvar_rotation_derivative.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvaratoms.o $(COPTC) colvars/src/colvaratoms.cpp obj/colvarbias.o: \ obj/.exists \ @@ -87,10 +88,15 @@ obj/colvarbias_alb.o: \ colvars/src/colvarbias_alb.cpp \ colvars/src/colvarmodule.h \ colvars/src/colvars_version.h \ + colvars/src/colvarproxy.h \ + colvars/src/colvartypes.h \ + colvars/src/colvarvalue.h \ + colvars/src/colvarproxy_io.h \ + colvars/src/colvarproxy_system.h \ + colvars/src/colvarproxy_tcl.h \ + colvars/src/colvarproxy_volmaps.h \ colvars/src/colvarbias.h \ colvars/src/colvar.h \ - colvars/src/colvarvalue.h \ - colvars/src/colvartypes.h \ colvars/src/colvarparse.h \ colvars/src/colvarparams.h \ colvars/src/colvardeps.h \ @@ -301,7 +307,7 @@ obj/colvarcomp_distances.o: \ colvars/src/colvarproxy_volmaps.h \ colvars/src/colvar_arithmeticpath.h \ colvars/src/colvar_geometricpath.h \ - colvars/src/colvar_rotation_derivative.h + colvars/src/colvar_rotation_derivative.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarcomp_distances.o $(COPTC) colvars/src/colvarcomp_distances.cpp obj/colvarcomp_gpath.o: \ obj/.exists \ @@ -365,7 +371,7 @@ obj/colvarcomp_rotations.o: \ colvars/src/colvarproxy_volmaps.h \ colvars/src/colvar_arithmeticpath.h \ colvars/src/colvar_geometricpath.h \ - colvars/src/colvar_rotation_derivative.h + colvars/src/colvar_rotation_derivative.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarcomp_rotations.o $(COPTC) colvars/src/colvarcomp_rotations.cpp obj/colvarcomp_volmaps.o: \ obj/.exists \ @@ -394,18 +400,18 @@ obj/colvarcomp_combination.o: \ colvars/src/colvarcomp.h \ colvars/src/colvarmodule.h \ colvars/src/colvars_version.h \ - colvars/src/colvar.h \ - colvars/src/colvarvalue.h \ - colvars/src/colvartypes.h \ - colvars/src/colvarparse.h \ - colvars/src/colvarparams.h \ - colvars/src/colvardeps.h \ colvars/src/colvaratoms.h \ colvars/src/colvarproxy.h \ + colvars/src/colvartypes.h \ + colvars/src/colvarvalue.h \ colvars/src/colvarproxy_io.h \ colvars/src/colvarproxy_system.h \ colvars/src/colvarproxy_tcl.h \ colvars/src/colvarproxy_volmaps.h \ + colvars/src/colvarparse.h \ + colvars/src/colvarparams.h \ + colvars/src/colvardeps.h \ + colvars/src/colvar.h \ colvars/src/colvar_arithmeticpath.h \ colvars/src/colvar_geometricpath.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarcomp_combination.o $(COPTC) colvars/src/colvarcomp_combination.cpp @@ -557,7 +563,8 @@ obj/colvarparse.o: \ colvars/src/colvarvalue.h \ colvars/src/colvartypes.h \ colvars/src/colvarparse.h \ - colvars/src/colvarparams.h + colvars/src/colvarparams.h \ + colvars/src/colvars_memstream.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarparse.o $(COPTC) colvars/src/colvarparse.cpp obj/colvarproxy.o: \ obj/.exists \ @@ -724,6 +731,15 @@ obj/colvarscript_commands_colvar.o: \ colvars/src/colvarscript_commands_colvar.h \ colvars/src/colvarscript_commands_bias.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarscript_commands_colvar.o $(COPTC) colvars/src/colvarscript_commands_colvar.cpp +obj/colvars_memstream.o: \ + obj/.exists \ + colvars/src/colvars_memstream.cpp \ + colvars/src/colvarmodule.h \ + colvars/src/colvars_version.h \ + colvars/src/colvartypes.h \ + colvars/src/colvarvalue.h \ + colvars/src/colvars_memstream.h + $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvars_memstream.o $(COPTC) colvars/src/colvars_memstream.cpp obj/colvartypes.o: \ obj/.exists \ colvars/src/colvartypes.cpp \ @@ -733,8 +749,15 @@ obj/colvartypes.o: \ colvars/src/colvarparse.h \ colvars/src/colvarvalue.h \ colvars/src/colvarparams.h \ - colvars/src/nr_jacobi.h \ - colvars/src/colvar_rotation_derivative.h + colvars/src/colvaratoms.h \ + colvars/src/colvarproxy.h \ + colvars/src/colvarproxy_io.h \ + colvars/src/colvarproxy_system.h \ + colvars/src/colvarproxy_tcl.h \ + colvars/src/colvarproxy_volmaps.h \ + colvars/src/colvardeps.h \ + colvars/src/colvar_rotation_derivative.h \ + colvars/src/nr_jacobi.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvartypes.o $(COPTC) colvars/src/colvartypes.cpp obj/colvarvalue.o: \ obj/.exists \ @@ -742,7 +765,8 @@ obj/colvarvalue.o: \ colvars/src/colvarmodule.h \ colvars/src/colvars_version.h \ colvars/src/colvarvalue.h \ - colvars/src/colvartypes.h + colvars/src/colvartypes.h \ + colvars/src/colvars_memstream.h $(CXX) $(COLVARSCXXFLAGS) $(COPTO)obj/colvarvalue.o $(COPTC) colvars/src/colvarvalue.cpp obj/nr_jacobi.o: \ obj/.exists \ diff --git a/namd/colvars/src/Makefile.namd b/namd/colvars/src/Makefile.namd index ef8f06729..c85f36f3b 100644 --- a/namd/colvars/src/Makefile.namd +++ b/namd/colvars/src/Makefile.namd @@ -37,6 +37,7 @@ COLVARSLIB = \ $(DSTDIR)/colvarscript_commands.o \ $(DSTDIR)/colvarscript_commands_bias.o \ $(DSTDIR)/colvarscript_commands_colvar.o \ + $(DSTDIR)/colvars_memstream.o \ $(DSTDIR)/colvartypes.o \ $(DSTDIR)/colvarvalue.o \ $(DSTDIR)/nr_jacobi.o diff --git a/namd/src/colvarproxy_namd.C b/namd/src/colvarproxy_namd.C index fac6de032..1f6e00342 100644 --- a/namd/src/colvarproxy_namd.C +++ b/namd/src/colvarproxy_namd.C @@ -72,7 +72,7 @@ colvarproxy_namd::colvarproxy_namd() // both fields are taken from data structures already available updated_masses_ = updated_charges_ = true; - // take the output prefixes from the namd input + // Take the output prefixes from the NAMD input colvarproxy_io::set_output_prefix(std::string(simparams->outputFilename)); colvarproxy_io::set_restart_output_prefix(std::string(simparams->restartFilename)); colvarproxy_io::set_default_restart_frequency(simparams->restartFrequency); @@ -122,9 +122,7 @@ colvarproxy_namd::colvarproxy_namd() #endif if (simparams->firstTimestep != 0) { - cvm::log("Initializing step number as firstTimestep.\n"); - colvars->it = colvars->it_restart = - static_cast(simparams->firstTimestep); + colvars->set_initial_step(static_cast(simparams->firstTimestep)); } reduction = ReductionMgr::Object()->willSubmit(REDUCTIONS_BASIC); @@ -323,6 +321,8 @@ void colvarproxy_namd::calculate() if (first_timestep) { + // First run after the proxy is constructed + colvarproxy_namd::setup(); colvars->update_engine_parameters(); colvars->setup_input(); @@ -331,17 +331,26 @@ void colvarproxy_namd::calculate() first_timestep = false; } else { + // Use the time step number inherited from GlobalMaster if ( step - previous_NAMD_step == 1 ) { colvars->it++; b_simulation_continuing = false; } else { + // Cases covered by this condition: // - run 0 // - beginning of a new run statement // The internal counter is not incremented, and the objects are made // aware of this via the following flag b_simulation_continuing = true; + + // Update NAMD output and restart prefixes + colvarproxy_io::set_output_prefix(std::string(simparams->outputFilename)); + colvarproxy_io::set_restart_output_prefix(std::string(simparams->restartFilename)); + colvarproxy_io::set_default_restart_frequency(simparams->restartFrequency); + colvars->setup_output(); + } } @@ -1049,7 +1058,7 @@ std::ostream & colvarproxy_namd::output_stream(std::string const &output_name, backup_file(output_name.c_str()); - output_streams_[output_name] = new ofstream_namd(output_name.c_str()); + output_streams_[output_name] = new ofstream_namd(output_name.c_str(), std::ios::binary); if (! output_streams_[output_name]->good()) { cvm::error("Error: cannot write to "+description+" \""+output_name+"\".\n", COLVARS_FILE_ERROR); @@ -1139,7 +1148,7 @@ int colvarproxy_namd::backup_file(char const *filename) int colvarproxy_namd::init_atom_group(std::vector const &atoms_ids) { if (cvm::debug()) - cvm::log("Reguesting from NAMD a group of size "+cvm::to_str(atoms_ids.size())+ + cvm::log("Requesting from NAMD a group of size "+cvm::to_str(atoms_ids.size())+ " for collective variables calculation.\n"); colvars->cite_feature("Scalable center-of-mass computation (NAMD)"); diff --git a/namd/src/colvarproxy_namd.h b/namd/src/colvarproxy_namd.h index afbfbcb52..d2551c544 100644 --- a/namd/src/colvarproxy_namd.h +++ b/namd/src/colvarproxy_namd.h @@ -191,13 +191,13 @@ class colvarproxy_namd : public colvarproxy, public GlobalMaster { int load_atoms(char const *filename, cvm::atom_group &atoms, std::string const &pdb_field, - double const pdb_field_value = 0.0) override; + double const pdb_field_value) override; int load_coords(char const *filename, std::vector &pos, const std::vector &indices, std::string const &pdb_field, - double const pdb_field_value = 0.0) override; + double const pdb_field_value) override; int scalable_group_coms() override @@ -250,7 +250,7 @@ class colvarproxy_namd : public colvarproxy, public GlobalMaster { #endif std::ostream &output_stream(std::string const &output_name, - std::string const description = "file/channel") override; + std::string const description) override; int flush_output_stream(std::string const &output_name) override; diff --git a/namd/src/colvarproxy_namd_version.h b/namd/src/colvarproxy_namd_version.h index 53c2d8efc..5f7e40b66 100644 --- a/namd/src/colvarproxy_namd_version.h +++ b/namd/src/colvarproxy_namd_version.h @@ -1,3 +1,3 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2023-07-06" +#define COLVARPROXY_VERSION "2023-10-03" #endif diff --git a/namd/tests/interface/008_change_outputName/AutoDiff/test.Tcl.out b/namd/tests/interface/008_change_outputName/AutoDiff/test.Tcl.out new file mode 100644 index 000000000..b2de5837b --- /dev/null +++ b/namd/tests/interface/008_change_outputName/AutoDiff/test.Tcl.out @@ -0,0 +1,108 @@ +TCL: Running for 10 steps +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: Setting parameter outputName to test.alt +TCL: Running for 10 steps +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: NUM. ATOMS REQUESTED: 0 +TCL: NUM. ATOMS USED: 0 +TCL: NUM. ATOM GROUPS USED: 2 +TCL: TOTAL FORCE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } +TCL: TOTAL TORQUE: { 0.0000000000000000 0.0000000000000000 0.0000000000000000 } diff --git a/namd/tests/interface/008_change_outputName/AutoDiff/test.alt.colvars.traj b/namd/tests/interface/008_change_outputName/AutoDiff/test.alt.colvars.traj new file mode 100644 index 000000000..ec7c88344 --- /dev/null +++ b/namd/tests/interface/008_change_outputName/AutoDiff/test.alt.colvars.traj @@ -0,0 +1,12 @@ +# step one fa_one E_h + 10 3.21732987848069e+00 -1.24693195139228e-02 1.94354911425369e-02 + 11 3.21949341092696e+00 -1.24779736437079e-02 1.94624782816335e-02 + 12 3.22129300880163e+00 -1.24851720352065e-02 1.94849400935879e-02 + 13 3.22262098902515e+00 -1.24904839561006e-02 1.95015236822008e-02 + 14 3.22340199261010e+00 -1.24936079704404e-02 1.95112800148814e-02 + 15 3.22359705879087e+00 -1.24943882351635e-02 1.95137171713739e-02 + 16 3.22320445242483e+00 -1.24928178096993e-02 1.95088121032925e-02 + 17 3.22225759147620e+00 -1.24890303659048e-02 1.94969849350616e-02 + 18 3.22082078911784e+00 -1.24832831564714e-02 1.94790447955802e-02 + 19 3.21898355455808e+00 -1.24759342182323e-02 1.94561168272076e-02 + 20 3.21685399837991e+00 -1.24674159935196e-02 1.94295576944337e-02 diff --git a/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.out b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.out new file mode 100644 index 000000000..cb131694e --- /dev/null +++ b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.out @@ -0,0 +1,171 @@ +colvars: ---------------------------------------------------------------------- +colvars: Please cite Fiorin et al, Mol Phys 2013: +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. +colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. +colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: ---------------------------------------------------------------------- +colvars: Reading new configuration from file "test.in": +colvars: # units = "" [default] +colvars: # indexFile = "index.ndx" +colvars: The following index groups are currently defined: +colvars: Protein (104 atoms) +colvars: Protein_noH (51 atoms) +colvars: Protein_Backbone (40 atoms) +colvars: Protein_C-alpha (10 atoms) +colvars: RMSD_atoms (10 atoms) +colvars: Protein_C-alpha_1_2 (2 atoms) +colvars: Protein_C-alpha_9_10 (2 atoms) +colvars: Protein_C-alpha_1 (1 atoms) +colvars: group1 (4 atoms) +colvars: Protein_C-alpha_2 (1 atoms) +colvars: group2 (4 atoms) +colvars: Protein_C-alpha_3 (1 atoms) +colvars: group3 (4 atoms) +colvars: Protein_C-alpha_4 (1 atoms) +colvars: group4 (4 atoms) +colvars: Protein_C-alpha_5 (1 atoms) +colvars: group5 (4 atoms) +colvars: Protein_C-alpha_6 (1 atoms) +colvars: group6 (4 atoms) +colvars: Protein_C-alpha_7 (1 atoms) +colvars: group7 (4 atoms) +colvars: Protein_C-alpha_8 (1 atoms) +colvars: group8 (4 atoms) +colvars: Protein_C-alpha_9 (1 atoms) +colvars: group9 (4 atoms) +colvars: Protein_C-alpha_10 (1 atoms) +colvars: group10 (4 atoms) +colvars: heavy_atoms (51 atoms) +colvars: # smp = on [default] +colvars: # colvarsTrajFrequency = 1 +colvars: # colvarsRestartFrequency = 10 +colvars: # scriptedColvarForces = off [default] +colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] +colvars: ---------------------------------------------------------------------- +colvars: Initializing a new collective variable. +colvars: # name = "one" +colvars: Initializing a new "distance" component. +colvars: # name = "" [default] +colvars: # componentCoeff = 1 [default] +colvars: # componentExp = 1 [default] +colvars: # period = 0 [default] +colvars: # wrapAround = 0 [default] +colvars: # forceNoPBC = off [default] +colvars: # scalable = on [default] +colvars: Initializing atom group "group1". +colvars: # name = "" [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] +colvars: # atomsOfGroup = "" [default] +colvars: # indexGroup = "group1" +colvars: # psfSegID = [default] +colvars: # atomsFile = "" [default] +colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] +colvars: # enableFitGradients = on [default] +colvars: Enabling scalable calculation for group "group1". +colvars: # printAtomIDs = off [default] +colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. +colvars: Initializing atom group "group2". +colvars: # name = "" [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] +colvars: # atomsOfGroup = "" [default] +colvars: # indexGroup = "group2" +colvars: # psfSegID = [default] +colvars: # atomsFile = "" [default] +colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] +colvars: # enableFitGradients = on [default] +colvars: Enabling scalable calculation for group "group2". +colvars: # printAtomIDs = off [default] +colvars: Atom group "group2" defined with 4 atoms requested: total mass = 54.028, total charge = -0.4. +colvars: # oneSiteSystemForce = off [default] +colvars: # oneSiteTotalForce = off [default] +colvars: All components initialized. +colvars: # timeStepFactor = 1 [default] +colvars: # width = 0.5 +colvars: # lowerBoundary = 0 [default] +colvars: # upperBoundary = 0.5 [default] +colvars: # hardLowerBoundary = on [default] +colvars: # hardUpperBoundary = off [default] +colvars: # expandBoundaries = off [default] +colvars: # extendedLagrangian = off [default] +colvars: # outputValue = on [default] +colvars: # outputVelocity = off [default] +colvars: # outputTotalForce = off [default] +colvars: # outputAppliedForce = on +colvars: # subtractAppliedForce = off [default] +colvars: # runAve = off [default] +colvars: # corrFunc = off [default] +colvars: ---------------------------------------------------------------------- +colvars: Collective variables initialized, 1 in total. +colvars: ---------------------------------------------------------------------- +colvars: Initializing a new "harmonic" instance. +colvars: # name = "h" +colvars: # colvars = { one } +colvars: # stepZeroData = off [default] +colvars: # outputEnergy = on +colvars: # outputFreq = 10 [default] +colvars: # timeStepFactor = 1 [default] +colvars: # writeTISamples = off [default] +colvars: # writeTIPMF = off [default] +colvars: # centers = { 0.1 } +colvars: # targetCenters = { 0.1 } [default] +colvars: # outputCenters = off [default] +colvars: # forceConstant = 0.001 +colvars: # decoupling = off [default] +colvars: # targetForceConstant = -1 [default] +colvars: The force constant for colvar "one" will be rescaled to 0.004 according to the specified width (0.5). +colvars: ---------------------------------------------------------------------- +colvars: Collective variables biases initialized, 1 in total. +colvars: ---------------------------------------------------------------------- +colvars: Collective variables module (re)initialized. +colvars: ---------------------------------------------------------------------- +colvars: Updating NAMD interface: +colvars: updating atomic data (0 atoms). +colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Harmonic colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). +colvars: Current simulation parameters: initial step = 0, integration timestep = 1 +colvars: Updating atomic parameters (masses, charges, etc). +colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. +colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. +colvars: The restart output state file will be "test.tmp.colvars.state". +colvars: The final output state file will be "test.colvars.state". +colvars: Updating NAMD interface: +colvars: updating atomic data (0 atoms). +colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). +colvars: Current simulation parameters: initial step = 0, integration timestep = 1 +colvars: Updating atomic parameters (masses, charges, etc). +colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. +colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. +colvars: Synchronizing (emptying the buffer of) trajectory file "test.colvars.traj". +colvars: Synchronizing (emptying the buffer of) trajectory file "test.colvars.traj". +colvars: Saving collective variables state to "test.tmp.colvars.state". +colvars: Saving collective variables state to "test.colvars.state". +colvars: The final output state file will be "test.alt.colvars.state". +colvars: Synchronizing (emptying the buffer of) trajectory file "test.alt.colvars.traj". +colvars: Saving collective variables state to "test.tmp.colvars.state". +colvars: Synchronizing (emptying the buffer of) trajectory file "test.alt.colvars.traj". +colvars: Saving collective variables state to "test.tmp.colvars.state". +colvars: Saving collective variables state to "test.alt.colvars.state". diff --git a/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.state.stripped b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.state.stripped new file mode 100644 index 000000000..63e4dfd0e --- /dev/null +++ b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.state.stripped @@ -0,0 +1,17 @@ +configuration { + step 10 + dt 1.000000e+00 +} + +colvar { + name one + x 3.21732987848069e+00 +} + +restraint { + configuration { + step 10 + name h + } +} + diff --git a/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.traj b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.traj new file mode 100644 index 000000000..cb3f3f619 --- /dev/null +++ b/namd/tests/interface/008_change_outputName/AutoDiff/test.colvars.traj @@ -0,0 +1,12 @@ +# step one fa_one E_h + 0 3.20554673468334e+00 -1.24221869387334e-02 1.92888410426048e-02 + 1 3.20437138788663e+00 -1.24174855515465e-02 1.92742434278583e-02 + 2 3.20383990619321e+00 -1.24153596247728e-02 1.92676443265549e-02 + 3 3.20396636247149e+00 -1.24158654498859e-02 1.92692143587090e-02 + 4 3.20472667452156e+00 -1.24189066980862e-02 1.92786554469713e-02 + 5 3.20606076202988e+00 -1.24242430481195e-02 1.92952269148432e-02 + 6 3.20787658913670e+00 -1.24315063565468e-02 1.93177937866079e-02 + 7 3.21005554475098e+00 -1.24402221790039e-02 1.93448909828726e-02 + 8 3.21245889760366e+00 -1.24498355904146e-02 1.93748007785444e-02 + 9 3.21493536150581e+00 -1.24597414460232e-02 1.94056446127186e-02 + 10 3.21732987848069e+00 -1.24693195139228e-02 1.94354911425369e-02 diff --git a/namd/tests/interface/008_change_outputName/namd-version.txt b/namd/tests/interface/008_change_outputName/namd-version.txt new file mode 100644 index 000000000..e26da9c13 --- /dev/null +++ b/namd/tests/interface/008_change_outputName/namd-version.txt @@ -0,0 +1,3 @@ +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-21. +colvars: Using NAMD interface, version "2023-09-19". diff --git a/namd/tests/interface/008_change_outputName/test.in b/namd/tests/interface/008_change_outputName/test.in new file mode 100644 index 000000000..27fbcab06 --- /dev/null +++ b/namd/tests/interface/008_change_outputName/test.in @@ -0,0 +1,30 @@ +colvarsTrajFrequency 1 +colvarsRestartFrequency 10 +indexFile index.ndx + +colvar { + + name one + + outputAppliedForce on + + width 0.5 + + distance { + group1 { + indexGroup group1 + } + group2 { + indexGroup group2 + } + } +} + +harmonic { + name h + colvars one + centers 0.1 + forceConstant 0.001 + outputEnergy yes +# outputCenters yes +} diff --git a/namd/tests/interface/008_change_outputName/test.namd b/namd/tests/interface/008_change_outputName/test.namd new file mode 100644 index 000000000..8bb95fc6c --- /dev/null +++ b/namd/tests/interface/008_change_outputName/test.namd @@ -0,0 +1,22 @@ +# -*- tcl -*- + + +source ../Common/common.namd +source ../Common/measure_net_force_torque.tcl + +stepspercycle 5 + +colvars on +colvarsConfig test.in + +if { [file exists test.prerun.tcl] > 0 } { + source test.prerun.tcl +} + +run 10 + +outputName test.alt + +run 10 + +source ../Common/delete_tmp_files.tcl diff --git a/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.colvars.state.stripped index e7e077dc2..63ece5809 100644 --- a/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.colvars.state.stripped @@ -5,16 +5,16 @@ configuration { colvar { name one - x -1.07125200380591e+00 - extended_x -1.14502810666269e+00 - extended_v 4.95564329068073e-03 + x -1.07138955585665e+00 + extended_x -1.14562476858342e+00 + extended_v 4.99210251616576e-03 } colvar { name two - x -2.08003771427216e+00 - extended_x -2.11383784748319e+00 - extended_v -1.36281501667060e-03 + x -2.07996825855988e+00 + extended_x -2.11359237961121e+00 + extended_v -1.38673870606335e-03 } abf { @@ -72,8 +72,8 @@ samples 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 7 - 13 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 6 + 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -277,8 +277,8 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.44217917439085e+00 -5.98164763101832e-02 - -1.27364364576590e+00 5.92207052437209e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.58813053768885e+00 -2.04203085025158e-01 + -1.47974303036444e+00 6.34264008246081e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -742,8 +742,8 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.99167734468048e+00 8.18204122082025e-01 - -1.10446519237127e-01 1.29634199488531e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -2.02437284919381e+00 8.31267182057937e-01 + -1.18168483290997e-01 1.41756073716440e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -751,7 +751,7 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.41379423028293e+00 4.48413868549199e-01 -4.68422646703017e+00 -9.21947758969847e-01 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.45119053138215e+00 4.87710364809453e-01 -4.72507054399555e+00 -8.96116534859770e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.restart.colvars.state.stripped index 79c22e76f..80a29c2d0 100644 --- a/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_dihedralPC_abf2d/AutoDiff/test.restart.colvars.state.stripped @@ -5,16 +5,16 @@ configuration { colvar { name one - x -1.13179064675608e+00 - extended_x -1.00821119176407e+00 - extended_v 5.18736771376423e-03 + x -1.13197161390512e+00 + extended_x -1.00850210662739e+00 + extended_v 5.26399951143340e-03 } colvar { name two - x -2.08292882801807e+00 - extended_x -2.10748583893117e+00 - extended_v 2.29199416893047e-03 + x -2.08284255790243e+00 + extended_x -2.10748148531090e+00 + extended_v 2.24780631834573e-03 } abf { @@ -73,11 +73,11 @@ samples 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 - 13 0 0 0 0 0 0 0 + 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 13 0 0 0 0 0 + 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -277,8 +277,8 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -3.73396120561055e+00 -1.75628766709736e+00 - -1.27364364576590e+00 5.92207052437209e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -3.54536635159579e+00 -2.13141186228562e+00 + -1.47974303036444e+00 6.34264008246081e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -286,7 +286,7 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 3.34288912937489e+00 -3.44051808013774e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 3.64648384718580e+00 -3.33271622311002e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -538,11 +538,11 @@ z_samples 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 - 14 0 0 0 0 0 0 0 + 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 3 13 0 0 0 0 + 0 0 3 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -742,8 +742,8 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -1.99167734468048e+00 8.18204122082025e-01 - 3.06576718993810e+00 -2.18500214664296e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -2.02437284919381e+00 8.31267182057937e-01 + 2.88659177839596e+00 -2.32398202632015e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -751,7 +751,7 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.41379423028293e+00 4.48413868549199e-01 -2.70291154716236e+00 -3.11948642099510e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 -4.45119053138215e+00 4.87710364809453e-01 -3.02460848092237e+00 -2.98906142950661e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_dihedralPC_abf2d/namd-version.txt b/namd/tests/library/000_dihedralPC_abf2d/namd-version.txt index 8b2783508..0c1e6111b 100644 --- a/namd/tests/library/000_dihedralPC_abf2d/namd-version.txt +++ b/namd/tests/library/000_dihedralPC_abf2d/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.13 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2019-08-17". -colvars: Using NAMD interface, version "2019-08-17". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.out b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.out index afc18582f..44ca3d5aa 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.out +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.tmp.colvars.state". +colvars: The final output state file will be "test.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -53,9 +57,12 @@ colvars: # period = 0 [default] colvars: # wrapAround = 0 [default] colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: # psfSegID = "BH" colvars: # vectorFile = "../Common/eigenvectors-localmin" colvars: # vectorNumber = 1 +colvars: Warning: cannot cite unknown feature "dihedralPC colvar component (derived from dihedPC)" +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.2 @@ -93,9 +100,12 @@ colvars: # period = 0 [default] colvars: # wrapAround = 0 [default] colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: # psfSegID = "BH" colvars: # vectorFile = "../Common/eigenvectors-localmin" colvars: # vectorNumber = 2 +colvars: Warning: cannot cite unknown feature "dihedralPC colvar component (derived from dihedPC)" +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.2 @@ -160,157 +170,29 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (30 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. -colvars: Re-initialized atom group for variable "one":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. -colvars: Re-initialized atom group for variable "one":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/3. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/4. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/5. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/6. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/7. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/8. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/9. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/10. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/11. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/12. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/13. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/14. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/15. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/16. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/17. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/18. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/19. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/20. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/21. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/22. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/23. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/24. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/25. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/26. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/27. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/28. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/29. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/30. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/31. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/32. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/33. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/34. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/35. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/36. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/37. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/38. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/39. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/40. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/41. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/42. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/43. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/44. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/45. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/46. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/47. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/48. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/49. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/50. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/51. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/52. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/53. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/54. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/55. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/56. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/57. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/58. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/59. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/60. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/61. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/62. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/63. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/64. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/65. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/66. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/67. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/68. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/69. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/70. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/71. 1 atoms: total mass = 12.011, total charge = 0.55. -colvars: Re-initialized atom group for variable "two":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. -colvars: Re-initialized atom group for variable "two":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. -colvars: Re-initialized atom group for variable "two":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/3. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/4. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/5. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/6. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/7. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/8. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/9. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/10. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/11. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/12. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/13. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/14. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/15. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/16. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/17. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/18. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/19. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/20. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/21. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/22. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/23. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/24. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/25. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/26. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/27. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/28. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/29. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/30. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/31. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/32. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/33. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/34. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/35. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/36. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/37. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/38. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/39. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/40. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/41. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/42. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/43. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/44. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/45. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/46. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/47. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/48. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/49. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/50. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/51. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/52. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/53. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/54. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/55. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/56. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/57. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/58. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/59. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/60. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/61. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/62. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/63. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/64. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/65. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/66. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/67. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/68. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/69. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/70. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/71. 1 atoms: total mass = 12.011, total charge = 0.55. -colvars: The restart output state file will be "test.tmp.colvars.state". -colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - BAOA integrator: +colvars: BouRabee2010 https://doi.org/10.1137/090758842 +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Metadynamics colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - dihedral colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: Updating NAMD interface: colvars: updating atomic data (30 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. colvars: Re-initialized atom group for variable "one":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. colvars: Re-initialized atom group for variable "one":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.state.stripped index 6e70950e5..52f25a95a 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.state.stripped @@ -5,16 +5,16 @@ configuration { colvar { name one - x -1.07125254953554e+00 - extended_x -1.14504260899319e+00 - extended_v 4.95309531977019e-03 + x -1.07139020852240e+00 + extended_x -1.14563889103481e+00 + extended_v 4.98962426723432e-03 } colvar { name two - x -2.08003709484154e+00 - extended_x -2.11384256732221e+00 - extended_v -1.36924161929424e-03 + x -2.07996734380763e+00 + extended_x -2.11357763689771e+00 + extended_v -1.39054429900791e-03 } metadynamics { @@ -113,8 +113,8 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 1.11272221887018e-06 2.98620452056995e-06 - 2.95292942514468e-06 1.07588595058025e-06 1.04746276876539e-07 + 0.00000000000000e+00 1.12314993914291e-06 3.01875063256813e-06 + 2.98967234334661e-06 1.09095163400181e-06 1.06350524430211e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -124,9 +124,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 3.02837109654147e-07 5.96326142927254e-06 - 4.32739423279661e-05 1.15724155940458e-04 1.14041074951682e-04 - 4.14114998361346e-05 5.54094393591201e-06 1.92821479119623e-07 + 0.00000000000000e+00 3.03946727865229e-07 5.99392481473353e-06 + 4.35611652049253e-05 1.16667276734088e-04 1.15144883787325e-04 + 4.18763407579725e-05 5.61179567242265e-06 1.95573050903909e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -136,9 +136,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 4.39937759918221e-06 8.63016936797653e-05 6.23927594389754e-04 - 1.66237273653295e-03 1.63226945208545e-03 5.90625112625675e-04 - 7.87541801100468e-05 3.86954470159011e-06 0.00000000000000e+00 + 4.40353925722969e-06 8.65096296384818e-05 6.26354678394888e-04 + 1.67132922370537e-03 1.64353635129118e-03 5.95606609525681e-04 + 7.95403451484122e-05 3.91422606348301e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -147,10 +147,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 4.47029869024381e-07 2.37030846054380e-05 - 4.63196495317153e-04 3.33594635561228e-03 8.85451373032529e-03 - 8.66159502275279e-03 3.12256438601792e-03 4.14854208714858e-04 - 2.03113055491758e-05 3.66457595467656e-07 0.00000000000000e+00 + 0.00000000000000e+00 4.45589507140437e-07 2.36606797350996e-05 + 4.63039318377210e-04 3.33970664224496e-03 8.87763067134682e-03 + 8.69720600627929e-03 3.14014124894404e-03 4.17825993181693e-04 + 2.04883080889403e-05 3.70225422023879e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -159,10 +159,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 8.96672660794069e-07 4.73644585203165e-05 9.22043062779678e-04 - 6.61510996566458e-03 1.74910007203883e-02 1.70445537399254e-02 - 6.12137250062036e-03 8.10214757186560e-04 3.95214483169629e-05 - 7.10456394715233e-07 0.00000000000000e+00 0.00000000000000e+00 + 8.91325848340779e-07 4.71493126744222e-05 9.19179454857848e-04 + 6.60417736539816e-03 1.74878015727524e-02 1.70667760816183e-02 + 6.13855803460022e-03 8.13721474873902e-04 3.97532679043380e-05 + 7.15727864415604e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -170,10 +170,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 6.66909576440522e-07 - 3.50978313893110e-05 6.80690345316509e-04 4.86505335168894e-03 - 1.28145853795347e-02 1.24396460984983e-02 4.45043876600499e-03 - 5.86801174134267e-04 2.85148837755018e-05 5.10670807831033e-07 + 0.00000000000000e+00 0.00000000000000e+00 6.61091712306048e-07 + 3.48411003266329e-05 6.76680746744917e-04 4.84340196712421e-03 + 1.27762184383105e-02 1.24207253672819e-02 4.45030015038717e-03 + 5.87667111647544e-04 2.86004151700852e-05 5.12989407296103e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -182,10 +182,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 1.23220838697972e-07 9.64229979493634e-06 - 1.86327760441826e-04 1.32682446838689e-03 3.48179888250574e-03 - 3.36714029173921e-03 1.20004241127164e-03 1.57622326102803e-04 - 7.63009211020073e-06 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 1.21870626179123e-07 9.54485554720021e-06 + 1.84707919545391e-04 1.31718390208982e-03 3.46152592959716e-03 + 3.35244940177649e-03 1.19657798218665e-03 1.57402601370466e-04 + 7.63097670630823e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -194,9 +194,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 9.81746912602683e-07 1.89061069527375e-05 - 1.34154263519734e-04 3.50773018706593e-04 3.37975239318941e-04 - 1.20004126791871e-04 1.57026653232117e-05 7.57229110962765e-07 + 0.00000000000000e+00 9.69067785197416e-07 1.86884254818758e-05 + 1.32799531655943e-04 3.47732614112229e-04 3.35534553363504e-04 + 1.19313007877432e-04 1.56354544499830e-05 7.55120632984980e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -206,9 +206,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 7.10800877155664e-07 5.02694548972315e-06 - 1.30989484815541e-05 1.25766812859419e-05 4.44951601645823e-06 - 5.80088820847934e-07 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 7.00601032634471e-07 4.96186629538919e-06 + 1.29479438212343e-05 1.24497205864730e-05 4.41104428784053e-06 + 5.75922906763234e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -218,8 +218,8 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 1.29216294359471e-07 - 1.20575349446592e-07 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 1.27335321976968e-07 + 1.18977661017585e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -613,10 +613,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 2.31278278352251e-05 - 8.26962949863584e-06 6.20166028422408e-05 7.28636763654428e-06 - 6.12762106229642e-05 -7.53618578733491e-06 2.23082932078077e-05 - -8.11698994547979e-06 2.14428084659913e-06 -1.30095612395932e-06 + 0.00000000000000e+00 0.00000000000000e+00 2.33293879058975e-05 + 8.35557849923944e-06 6.26515473624877e-05 7.38871190210260e-06 + 6.19979366030288e-05 -7.60703995628465e-06 2.26057618893020e-05 + -8.22221720635756e-06 2.17568577410462e-06 -1.31999291160277e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -635,12 +635,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 4.80299459692474e-06 - 5.26829305336511e-06 9.44655554225196e-05 7.39760447105059e-05 - 6.84715159040213e-04 3.20833297118679e-04 1.82898528958214e-03 - 2.80347716511955e-04 1.80036510361511e-03 -2.92981985646035e-04 - 6.53048004778370e-04 -3.13110111739028e-04 8.72862370525376e-05 - -6.95556445807518e-05 2.98317757546063e-06 -3.35896372435564e-06 + 0.00000000000000e+00 0.00000000000000e+00 4.81648910241581e-06 + 5.28982127756346e-06 9.48700436710842e-05 7.44007592048412e-05 + 6.88666922289583e-04 3.23288162231386e-04 1.84229686167779e-03 + 2.83512507285046e-04 1.81621160225089e-03 -2.94940990081284e-04 + 6.59801972330986e-04 -3.16302976292571e-04 8.83248497909780e-05 + -7.04015541355360e-05 3.02310706723988e-06 -3.40526316606529e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -659,12 +659,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 4.79547710813726e-05 7.64497998429463e-05 9.39068019567754e-04 - 1.06897073509117e-03 6.77725260410739e-03 4.61419219144782e-03 - 1.80258980483106e-02 3.99676400313392e-03 1.76692952413578e-02 - -4.22271828029563e-03 6.38278829766979e-03 -4.47602721622795e-03 - 8.49684813993208e-04 -9.89946095750120e-04 4.16817985190437e-05 - -6.79565755079708e-05 0.00000000000000e+00 0.00000000000000e+00 + 4.79401663360663e-05 7.65541217685005e-05 9.40148125696277e-04 + 1.07218150713862e-03 6.79502240112033e-03 4.63678717800684e-03 + 1.81000005304998e-02 4.03081798676921e-03 1.77685419701696e-02 + -4.23943386621920e-03 6.42836068515699e-03 -4.50923141249383e-03 + 8.57059746412795e-04 -9.99215386978386e-04 4.21084428789922e-05 + -6.87108439457987e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -681,14 +681,14 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 2.66439792711700e-06 - 9.99074241057699e-06 1.40821748015350e-04 4.11442830877582e-04 - 2.74298241121092e-03 5.72847446676952e-03 1.96908890422489e-02 - 2.46070540467636e-02 5.20954998258159e-02 2.11212672510428e-02 - 5.07958703017001e-02 -2.25692205474935e-02 1.82535690117242e-02 - -2.37214853977262e-02 2.41742731414894e-03 -5.22220739851244e-03 - 1.17987937423289e-04 -3.57061960173332e-04 2.12221807320614e-06 - -8.27133816749347e-06 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 2.64970865572513e-06 + 9.96173634978990e-06 1.40244614465335e-04 4.10877577161123e-04 + 2.73566560853973e-03 5.72990747692202e-03 1.96668627628215e-02 + 2.46593941944944e-02 5.21082031587264e-02 2.12424679777135e-02 + 5.08834828284722e-02 -2.25966533175014e-02 1.83123960591883e-02 + -2.38311869194381e-02 2.42888049194247e-03 -5.25641619497100e-03 + 1.18727678662459e-04 -3.60015221709943e-04 2.13880997815971e-06 + -8.35349572180457e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -705,13 +705,13 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 8.96920911202663e-07 2.00229337467769e-05 4.64878484683815e-05 - 8.21258234785574e-04 8.87464265084299e-04 1.13854685379464e-02 - 6.24042609465244e-03 4.86681493456093e-02 1.61642368416455e-02 - 4.13869488798600e-02 1.54240717115415e-02 -4.47376139765438e-02 - 5.42213614226485e-03 -4.66185746324708e-02 7.02252350289755e-04 - -1.02141583302988e-02 3.35112138511424e-05 -6.95492397507722e-04 - 5.89227137249657e-07 -1.60485623523158e-05 0.00000000000000e+00 + 8.79239972612125e-07 1.99098718652156e-05 4.56223853023327e-05 + 8.17866104395147e-04 8.71912261615813e-04 1.13567692059116e-02 + 6.13787374943553e-03 4.86360524518590e-02 1.59162042746878e-02 + 4.15086552317432e-02 1.52041846626289e-02 -4.46685188069318e-02 + 5.35074164406116e-03 -4.67031712575526e-02 6.93771392170053e-04 + -1.02521719551366e-02 3.31431404290654e-05 -6.99266442776765e-04 + 5.83401849274110e-07 -1.61620899943885e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -728,13 +728,13 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 -2.64155717249247e-06 1.48800440926095e-05 - -1.39655230721680e-04 6.07911779015681e-04 -2.72106098037520e-03 - 8.39237554245534e-03 -1.95393057964610e-02 3.57000647667507e-02 - -5.17098028046055e-02 3.00760299535485e-02 -5.04347408119489e-02 - -3.28899248748727e-02 -1.81291431446468e-02 -3.39786361550258e-02 - -2.40165121569057e-03 -7.40884898088774e-03 -1.17251830945576e-04 - -5.02340451332711e-04 -2.10957812117200e-06 -1.15451408427677e-05 + 0.00000000000000e+00 -2.62775167682191e-06 1.47549093327497e-05 + -1.39121882708181e-04 6.03713645798334e-04 -2.71454179152735e-03 + 8.34781440172321e-03 -1.95206217847896e-02 3.55764128691038e-02 + -5.17356622543389e-02 3.00798263301172e-02 -5.05342656925296e-02 + -3.27477588118662e-02 -1.81919360269255e-02 -3.39442366171063e-02 + -2.41358983731561e-03 -7.41533612304254e-03 -1.18013420185720e-04 + -5.03628768434281e-04 -2.12653156481193e-06 -1.15936036734502e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -751,13 +751,13 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 -1.06291099166693e-06 - 2.72982655182499e-06 -8.62124484546621e-05 1.66836673591529e-04 - -1.66926513480357e-03 2.29386778046841e-03 -1.19107010519156e-02 - 9.71164584166047e-03 -3.13197723555859e-02 8.10620467413459e-03 - -3.03514357039363e-02 -8.96668849993800e-03 -1.08399354903456e-02 - -9.18519145818739e-03 -1.42680840627485e-03 -1.99314028183449e-03 - -6.92146433369001e-05 -1.34564127221374e-04 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.05308070205675e-06 + 2.70072121126136e-06 -8.54761997756620e-05 1.65218374170491e-04 + -1.65737303516390e-03 2.27524888165342e-03 -1.18428950494345e-02 + 9.65060461944134e-03 -3.11868017323176e-02 8.08427276598510e-03 + -3.02670010114878e-02 -8.90285590129101e-03 -1.08258271173117e-02 + -9.14976736682080e-03 -1.42708773862744e-03 -1.98917857637688e-03 + -6.93330057577516e-05 -1.34521797906847e-04 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -775,12 +775,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 -1.36513057193848e-05 - 1.69701008487424e-05 -2.63207116163892e-04 2.32422057577011e-04 - -1.86997470368458e-03 9.79540784972136e-04 -4.89560825894587e-03 - 8.10258909875143e-04 -4.72309338236105e-03 -9.06301161337512e-04 - -1.67922634165552e-03 -9.20777103118081e-04 -2.20022066157373e-04 - -1.98859451902330e-04 -1.06244489234353e-05 -1.33689752024101e-05 + 0.00000000000000e+00 0.00000000000000e+00 -1.34888303712637e-05 + 1.67577772772305e-05 -2.60443974015987e-04 2.29879107029597e-04 + -1.85299637318233e-03 9.70603546217200e-04 -4.85817829940636e-03 + 8.05758430618162e-04 -4.69382922174756e-03 -8.97298852534430e-04 + -1.67128351252832e-03 -9.14591855365312e-04 -2.19307545664087e-04 + -1.97891517730209e-04 -1.06058770455875e-05 -1.33260544108719e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -799,11 +799,11 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 -1.34249503290855e-05 - 8.72657592688637e-06 -9.50251734349522e-05 3.66197644800541e-05 - -2.47829339986562e-04 3.00298656968067e-05 -2.38163556810107e-04 - -3.39492139153494e-05 -8.43383654480558e-05 -3.42215774411738e-05 - -1.10057368970433e-05 -7.35702561533471e-06 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -1.32424095282496e-05 + 8.60631551197807e-06 -9.38667242189058e-05 3.61811420924296e-05 + -2.45160147457255e-04 2.97770421127166e-05 -2.35940433026644e-04 + -3.35158984837922e-05 -8.36735365256005e-05 -3.38932818931820e-05 + -1.09351340344721e-05 -7.29991879265744e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -824,8 +824,8 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 -3.05287259864765e-06 2.78323604553755e-07 - -2.84872107053183e-06 -3.43165183419302e-07 0.00000000000000e+00 + 0.00000000000000e+00 -3.01033081659652e-06 2.75115485791023e-07 + -2.81274758556462e-06 -3.37830039549844e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -1267,7 +1267,7 @@ grid_parameters { hill { step 20 weight 1.00000000000000e-02 - centers -1.14504260899319e+00 -2.11384256732221e+00 + centers -1.14563889103481e+00 -2.11357763689771e+00 widths 4.00000000000000e-01 4.00000000000000e-01 } } diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.traj b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.traj index f81c1c442..d9eb4de40 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.traj +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step one r_one two r_two 0 -1.19120112453471e+00 -1.19120112453471e+00 -2.09082981124238e+00 -2.09082981124238e+00 - 1 -1.19027227984283e+00 -1.19124908071137e+00 -2.09272452828860e+00 -2.09131020072356e+00 - 2 -1.18860275847737e+00 -1.19086689001131e+00 -2.09473851565547e+00 -2.09183146277416e+00 - 3 -1.18597722231747e+00 -1.19014685214326e+00 -2.09686481359922e+00 -2.09248820782692e+00 - 4 -1.18224857030905e+00 -1.18928506434606e+00 -2.09912110640348e+00 -2.09336207910669e+00 - 5 -1.17735136609492e+00 -1.18855275634259e+00 -2.10153230998990e+00 -2.09402942053557e+00 - 6 -1.17130603191809e+00 -1.18747237788461e+00 -2.10410658903753e+00 -2.09454320173110e+00 - 7 -1.16420908070740e+00 -1.18639347095792e+00 -2.10681301108330e+00 -2.09483211417828e+00 - 8 -1.15621579326938e+00 -1.18469189867095e+00 -2.10956424855819e+00 -2.09525358847313e+00 - 9 -1.14751719163916e+00 -1.18283117790964e+00 -2.11220923830592e+00 -2.09575640198447e+00 - 10 -1.13832391425078e+00 -1.18115243403772e+00 -2.11453576969846e+00 -2.09680281256878e+00 - 11 -1.12885821355440e+00 -1.17896424379998e+00 -2.11628609148056e+00 -2.09772192445714e+00 - 12 -1.11935210305029e+00 -1.17636425683617e+00 -2.11718283826894e+00 -2.09860338562464e+00 - 13 -1.11005124649393e+00 -1.17381445295915e+00 -2.11696507708109e+00 -2.10015087471355e+00 - 14 -1.10121713693430e+00 -1.17107437388848e+00 -2.11542832708559e+00 -2.10209549655041e+00 - 15 -1.09312013054900e+00 -1.16760587753595e+00 -2.11245850155019e+00 -2.10449110700785e+00 - 16 -1.08602180598940e+00 -1.16380338986179e+00 -2.10805487668867e+00 -2.10675465879423e+00 - 17 -1.08015289148595e+00 -1.15940799224662e+00 -2.10233613753236e+00 -2.10897120789576e+00 - 18 -1.07568672699449e+00 -1.15490408207339e+00 -2.09553343073553e+00 -2.11077273010373e+00 - 19 -1.07271887790079e+00 -1.14999570431296e+00 -2.08797050187549e+00 -2.11247332570291e+00 - 20 -1.07125254953554e+00 -1.14504260899319e+00 -2.08003709484154e+00 -2.11384256732221e+00 + 1 -1.19027227984131e+00 -1.19122509063899e+00 -2.09272452828756e+00 -2.09106988593563e+00 + 2 -1.18860279572505e+00 -1.19105622344705e+00 -2.09473807622652e+00 -2.09157420153440e+00 + 3 -1.18597782336080e+00 -1.19050026294611e+00 -2.09686341317830e+00 -2.09217061005793e+00 + 4 -1.18225064361509e+00 -1.18969947067829e+00 -2.09911811660717e+00 -2.09294738186964e+00 + 5 -1.17735595274439e+00 -1.18888526208100e+00 -2.10152699097941e+00 -2.09373379973339e+00 + 6 -1.17131388098621e+00 -1.18795230094496e+00 -2.10409853321966e+00 -2.09434484583846e+00 + 7 -1.16422120861076e+00 -1.18683446829184e+00 -2.10680202332709e+00 -2.09477158450896e+00 + 8 -1.15623299784273e+00 -1.18539262882474e+00 -2.10955045442136e+00 -2.09515715374536e+00 + 9 -1.14754082207020e+00 -1.18354496916368e+00 -2.11219266615327e+00 -2.09565453819700e+00 + 10 -1.13835521812589e+00 -1.18169250757862e+00 -2.11451646147957e+00 -2.09646879267398e+00 + 11 -1.12889790952415e+00 -1.17965969598956e+00 -2.11626378075907e+00 -2.09749414764173e+00 + 12 -1.11940107658313e+00 -1.17714954760921e+00 -2.11715740039687e+00 -2.09843951571168e+00 + 13 -1.11011037398052e+00 -1.17444215486761e+00 -2.11693647157491e+00 -2.09969948601932e+00 + 14 -1.10128678465993e+00 -1.17164919615408e+00 -2.11539611430731e+00 -2.10148749607165e+00 + 15 -1.09320038702157e+00 -1.16838311261147e+00 -2.11242202032470e+00 -2.10369475078562e+00 + 16 -1.08611325009073e+00 -1.16457421982529e+00 -2.10801302635965e+00 -2.10605379202963e+00 + 17 -1.08025584704120e+00 -1.16029294007998e+00 -2.10228802270478e+00 -2.10831277817717e+00 + 18 -1.07580163447542e+00 -1.15565515108412e+00 -2.09547821716303e+00 -2.11032759787176e+00 + 19 -1.07284542049665e+00 -1.15075858835322e+00 -2.08790799432598e+00 -2.11206911002397e+00 + 20 -1.07139020852240e+00 -1.14563889103481e+00 -2.07996734380763e+00 -2.11357763689771e+00 diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.pmf b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.pmf index 867d3bb98..4fa817b6a 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.pmf +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.pmf @@ -2,1262 +2,1262 @@ # -3.50000000000000e+00 2.00000000000000e-01 35 0 # -3.50000000000000e+00 2.00000000000000e-01 35 0 - -3.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -3.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -3.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -3.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -3.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -3.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -3.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -3.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -3.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -3.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -3.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -3.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -3.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -3.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -3.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -3.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -3.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -3.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -3.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -3.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -3.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -3.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -3.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -3.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -2.80000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -2.80000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -2.80000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -2.80000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -2.80000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -2.80000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -2.80000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -2.80000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -2.60000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -2.60000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -2.60000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -2.60000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -2.60000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -2.60000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -2.60000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -2.60000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -2.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -2.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -2.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -2.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -2.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -2.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -2.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -2.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -2.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -2.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -2.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -2.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -2.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -2.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -2.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -2.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -2.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -2.40000000000000e+00 1.74898879981694e-02 - -2.00000000000000e+00 -2.20000000000000e+00 1.74880145158677e-02 - -2.00000000000000e+00 -2.00000000000000e+00 1.74880477909632e-02 - -2.00000000000000e+00 -1.80000000000000e+00 1.74899248344377e-02 - -2.00000000000000e+00 -1.60000000000000e+00 1.74908959741114e-02 - -2.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -2.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -2.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -2.40000000000000e+00 1.74866784228132e-02 + -2.00000000000000e+00 -2.20000000000000e+00 1.74847828221198e-02 + -2.00000000000000e+00 -2.00000000000000e+00 1.74848119004090e-02 + -2.00000000000000e+00 -1.80000000000000e+00 1.74867106211184e-02 + -2.00000000000000e+00 -1.60000000000000e+00 1.74876952222280e-02 + -2.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -2.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -1.80000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 -2.80000000000000e+00 1.74906978832787e-02 - -1.80000000000000e+00 -2.60000000000000e+00 1.74850374589590e-02 - -1.80000000000000e+00 -2.40000000000000e+00 1.74477267780604e-02 - -1.80000000000000e+00 -2.20000000000000e+00 1.73752765644479e-02 - -1.80000000000000e+00 -2.00000000000000e+00 1.73769596454366e-02 - -1.80000000000000e+00 -1.80000000000000e+00 1.74495892205522e-02 - -1.80000000000000e+00 -1.60000000000000e+00 1.74854597764524e-02 - -1.80000000000000e+00 -1.40000000000000e+00 1.74908078989092e-02 - -1.80000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -1.80000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -1.80000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -1.80000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -1.80000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 -2.80000000000000e+00 1.74874976260245e-02 + -1.80000000000000e+00 -2.60000000000000e+00 1.74818076479376e-02 + -1.80000000000000e+00 -2.40000000000000e+00 1.74442404075475e-02 + -1.80000000000000e+00 -2.20000000000000e+00 1.73711342960183e-02 + -1.80000000000000e+00 -2.00000000000000e+00 1.73726566889651e-02 + -1.80000000000000e+00 -1.80000000000000e+00 1.74459252319944e-02 + -1.80000000000000e+00 -1.60000000000000e+00 1.74821897770800e-02 + -1.80000000000000e+00 -1.40000000000000e+00 1.74876059997015e-02 + -1.80000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -1.80000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -1.80000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -1.80000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -1.60000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 -2.80000000000000e+00 1.74866013427891e-02 - -1.60000000000000e+00 -2.60000000000000e+00 1.74046990267086e-02 - -1.60000000000000e+00 -2.40000000000000e+00 1.68670731259986e-02 - -1.60000000000000e+00 -2.20000000000000e+00 1.58286279838554e-02 - -1.60000000000000e+00 -2.00000000000000e+00 1.58587312683029e-02 - -1.60000000000000e+00 -1.80000000000000e+00 1.69003756077626e-02 - -1.60000000000000e+00 -1.60000000000000e+00 1.74122465402783e-02 - -1.60000000000000e+00 -1.40000000000000e+00 1.74871311756867e-02 - -1.60000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -1.60000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -1.60000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -1.60000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -1.60000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 -2.80000000000000e+00 1.74833980334952e-02 + -1.60000000000000e+00 -2.60000000000000e+00 1.74012919431139e-02 + -1.60000000000000e+00 -2.40000000000000e+00 1.68614468943575e-02 + -1.60000000000000e+00 -2.20000000000000e+00 1.58164723490470e-02 + -1.60000000000000e+00 -2.00000000000000e+00 1.58442652214612e-02 + -1.60000000000000e+00 -1.80000000000000e+00 1.68921949632267e-02 + -1.60000000000000e+00 -1.60000000000000e+00 1.74082612276040e-02 + -1.60000000000000e+00 -1.40000000000000e+00 1.74838873466889e-02 + -1.60000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -1.60000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -1.60000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -1.60000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -1.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 -3.00000000000000e+00 1.74905536905193e-02 - -1.40000000000000e+00 -2.80000000000000e+00 1.74672976357829e-02 - -1.40000000000000e+00 -2.60000000000000e+00 1.70278042250712e-02 - -1.40000000000000e+00 -2.40000000000000e+00 1.41550543647760e-02 - -1.40000000000000e+00 -2.20000000000000e+00 8.63648699006302e-03 - -1.40000000000000e+00 -2.00000000000000e+00 8.82940569763553e-03 - -1.40000000000000e+00 -1.80000000000000e+00 1.43684363343704e-02 - -1.40000000000000e+00 -1.60000000000000e+00 1.70761465116735e-02 - -1.40000000000000e+00 -1.40000000000000e+00 1.74706894148391e-02 - -1.40000000000000e+00 -1.20000000000000e+00 1.74906342627929e-02 - -1.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -1.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -1.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -1.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -1.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 -3.00000000000000e+00 1.74873559832452e-02 + -1.40000000000000e+00 -2.80000000000000e+00 1.74641408930173e-02 + -1.40000000000000e+00 -2.60000000000000e+00 1.70247622543752e-02 + -1.40000000000000e+00 -2.40000000000000e+00 1.41480949305074e-02 + -1.40000000000000e+00 -2.20000000000000e+00 8.61017090140556e-03 + -1.40000000000000e+00 -2.00000000000000e+00 8.79059556647309e-03 + -1.40000000000000e+00 -1.80000000000000e+00 1.43476603238083e-02 + -1.40000000000000e+00 -1.60000000000000e+00 1.70699755795707e-02 + -1.40000000000000e+00 -1.40000000000000e+00 1.74673132646634e-02 + -1.40000000000000e+00 -1.20000000000000e+00 1.74874313473304e-02 + -1.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -1.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -1.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -1.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -1.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 -3.00000000000000e+00 1.74901040477275e-02 - -1.20000000000000e+00 -2.80000000000000e+00 1.74436362618680e-02 - -1.20000000000000e+00 -2.60000000000000e+00 1.65689576576086e-02 - -1.20000000000000e+00 -2.40000000000000e+00 1.08758907547237e-02 + -1.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 -3.00000000000000e+00 1.74869102469040e-02 + -1.20000000000000e+00 -2.80000000000000e+00 1.74406522600780e-02 + -1.20000000000000e+00 -2.60000000000000e+00 1.65686221178945e-02 + -1.20000000000000e+00 -2.40000000000000e+00 1.08836242073542e-02 -1.20000000000000e+00 -2.20000000000000e+00 -0.00000000000000e+00 - -1.20000000000000e+00 -2.00000000000000e+00 4.46446980462943e-04 - -1.20000000000000e+00 -1.80000000000000e+00 1.13696282197680e-02 - -1.20000000000000e+00 -1.60000000000000e+00 1.66807859632018e-02 - -1.20000000000000e+00 -1.40000000000000e+00 1.74514792720714e-02 - -1.20000000000000e+00 -1.20000000000000e+00 1.74902902639936e-02 - -1.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -1.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -1.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -1.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -1.20000000000000e+00 -2.00000000000000e+00 4.21025491134132e-04 + -1.20000000000000e+00 -1.80000000000000e+00 1.13492435381522e-02 + -1.20000000000000e+00 -1.60000000000000e+00 1.66740800978785e-02 + -1.20000000000000e+00 -1.40000000000000e+00 1.74480483048480e-02 + -1.20000000000000e+00 -1.20000000000000e+00 1.74870858448880e-02 + -1.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -1.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -1.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -1.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -1.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 -3.00000000000000e+00 1.74903338108119e-02 - -1.00000000000000e+00 -2.80000000000000e+00 1.74559028889990e-02 - -1.00000000000000e+00 -2.60000000000000e+00 1.68103103750718e-02 - -1.00000000000000e+00 -2.40000000000000e+00 1.26259473686994e-02 - -1.00000000000000e+00 -2.20000000000000e+00 4.67641534085367e-03 - -1.00000000000000e+00 -2.00000000000000e+00 5.05135462189003e-03 - -1.00000000000000e+00 -1.80000000000000e+00 1.30405619543833e-02 - -1.00000000000000e+00 -1.60000000000000e+00 1.69041995462541e-02 - -1.00000000000000e+00 -1.40000000000000e+00 1.74624858366128e-02 - -1.00000000000000e+00 -1.20000000000000e+00 1.74904900495805e-02 - -1.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - -1.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - -1.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - -1.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + -1.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 -3.00000000000000e+00 1.74871404810401e-02 + -1.00000000000000e+00 -2.80000000000000e+00 1.74529604724258e-02 + -1.00000000000000e+00 -2.60000000000000e+00 1.68111208260075e-02 + -1.00000000000000e+00 -2.40000000000000e+00 1.26443996056282e-02 + -1.00000000000000e+00 -2.20000000000000e+00 4.71158313444187e-03 + -1.00000000000000e+00 -2.00000000000000e+00 5.06707620547048e-03 + -1.00000000000000e+00 -1.80000000000000e+00 1.30375014223652e-02 + -1.00000000000000e+00 -1.60000000000000e+00 1.69001344611048e-02 + -1.00000000000000e+00 -1.40000000000000e+00 1.74592011575823e-02 + -1.00000000000000e+00 -1.20000000000000e+00 1.74872885833451e-02 + -1.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + -1.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + -1.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + -1.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - -8.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 -3.00000000000000e+00 1.74908774995496e-02 - -8.00000000000000e-01 -2.80000000000000e+00 1.74813584205934e-02 - -8.00000000000000e-01 -2.60000000000000e+00 1.73046729599465e-02 - -8.00000000000000e-01 -2.40000000000000e+00 1.61641762520014e-02 - -8.00000000000000e-01 -2.20000000000000e+00 1.40092018378826e-02 - -8.00000000000000e-01 -2.00000000000000e+00 1.41238604286491e-02 - -8.00000000000000e-01 -1.80000000000000e+00 1.62909583091167e-02 - -8.00000000000000e-01 -1.60000000000000e+00 1.73333783942855e-02 - -8.00000000000000e-01 -1.40000000000000e+00 1.74833706282781e-02 - -8.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - -8.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - -8.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - -8.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + -8.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 -3.00000000000000e+00 1.74876797021262e-02 + -8.00000000000000e-01 -2.80000000000000e+00 1.74782567172052e-02 + -8.00000000000000e-01 -2.60000000000000e+00 1.73030936532070e-02 + -8.00000000000000e-01 -2.40000000000000e+00 1.61706176706626e-02 + -8.00000000000000e-01 -2.20000000000000e+00 1.40262756431552e-02 + -8.00000000000000e-01 -2.00000000000000e+00 1.41353521709759e-02 + -8.00000000000000e-01 -1.80000000000000e+00 1.62912235905657e-02 + -8.00000000000000e-01 -1.60000000000000e+00 1.73303989713819e-02 + -8.00000000000000e-01 -1.40000000000000e+00 1.74801705960461e-02 + -8.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + -8.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + -8.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + -8.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - -6.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 -2.80000000000000e+00 1.74900189734757e-02 - -6.00000000000000e-01 -2.60000000000000e+00 1.74720946134356e-02 - -6.00000000000000e-01 -2.40000000000000e+00 1.73568464568686e-02 - -6.00000000000000e-01 -2.20000000000000e+00 1.71402277016817e-02 - -6.00000000000000e-01 -2.00000000000000e+00 1.71530254810694e-02 - -6.00000000000000e-01 -1.80000000000000e+00 1.73709965935964e-02 - -6.00000000000000e-01 -1.60000000000000e+00 1.74752980550651e-02 - -6.00000000000000e-01 -1.40000000000000e+00 1.74902434912774e-02 - -6.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - -6.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - -6.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - -6.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + -6.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 -2.80000000000000e+00 1.74868325049672e-02 + -6.00000000000000e-01 -2.60000000000000e+00 1.74691131472705e-02 + -6.00000000000000e-01 -2.40000000000000e+00 1.73550020410964e-02 + -6.00000000000000e-01 -2.20000000000000e+00 1.71400689586402e-02 + -6.00000000000000e-01 -2.00000000000000e+00 1.71522670193889e-02 + -6.00000000000000e-01 -1.80000000000000e+00 1.73684885648750e-02 + -6.00000000000000e-01 -1.60000000000000e+00 1.74721661183024e-02 + -6.00000000000000e-01 -1.40000000000000e+00 1.74870464521194e-02 + -6.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + -6.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + -6.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + -6.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - -4.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -2.80000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -2.60000000000000e+00 1.74902899195112e-02 - -4.00000000000000e-01 -2.40000000000000e+00 1.74859737748986e-02 - -4.00000000000000e-01 -2.20000000000000e+00 1.74779017719068e-02 - -4.00000000000000e-01 -2.00000000000000e+00 1.74784240391024e-02 - -4.00000000000000e-01 -1.80000000000000e+00 1.74865512043719e-02 - -4.00000000000000e-01 -1.60000000000000e+00 1.74904206315675e-02 - -4.00000000000000e-01 -1.40000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - -4.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - -4.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - -4.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + -4.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -2.80000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -2.60000000000000e+00 1.74871009717197e-02 + -4.00000000000000e-01 -2.40000000000000e+00 1.74828397064570e-02 + -4.00000000000000e-01 -2.20000000000000e+00 1.74748536289311e-02 + -4.00000000000000e-01 -2.00000000000000e+00 1.74753518521659e-02 + -4.00000000000000e-01 -1.80000000000000e+00 1.74833905284645e-02 + -4.00000000000000e-01 -1.60000000000000e+00 1.74872256498456e-02 + -4.00000000000000e-01 -1.40000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + -4.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + -4.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + -4.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - -2.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -2.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -2.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -2.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -2.20000000000000e+00 1.74908715040940e-02 - -2.00000000000000e-01 -2.00000000000000e+00 1.74908801450389e-02 - -2.00000000000000e-01 -1.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -1.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -1.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - -2.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - -2.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - -2.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + -2.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -2.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -2.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -2.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -2.20000000000000e+00 1.74876742374304e-02 + -2.00000000000000e-01 -2.00000000000000e+00 1.74876825950914e-02 + -2.00000000000000e-01 -1.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -1.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -1.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + -2.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + -2.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + -2.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - 0.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 0.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 0.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 0.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 0.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 0.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 0.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 0.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -2.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -2.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -2.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -2.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -2.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -1.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -1.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -1.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - 2.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + 2.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -2.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -2.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -2.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -2.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -2.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -1.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -1.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -1.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + 2.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - 4.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -2.80000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -2.60000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -2.40000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -2.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -2.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -1.80000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -1.60000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -1.40000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - 4.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - 4.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - 4.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + 4.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -2.80000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -2.60000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -2.40000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -2.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -2.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -1.80000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -1.60000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -1.40000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + 4.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + 4.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + 4.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - 6.00000000000001e-01 -3.40000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -3.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -3.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -2.80000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -2.60000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -2.40000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -2.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -2.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -1.80000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -1.60000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -1.40000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -1.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -1.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 -8.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 -6.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 -4.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 -2.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 0.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 4.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 6.00000000000001e-01 1.74910007203883e-02 - 6.00000000000001e-01 8.00000000000000e-01 1.74910007203883e-02 - 6.00000000000001e-01 1.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 1.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 1.40000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 1.60000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 1.80000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.40000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.60000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 2.80000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 3.00000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 3.20000000000000e+00 1.74910007203883e-02 - 6.00000000000001e-01 3.40000000000000e+00 1.74910007203883e-02 + 6.00000000000001e-01 -3.40000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -3.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -3.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -2.80000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -2.60000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -2.40000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -2.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -2.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -1.80000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -1.60000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -1.40000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -1.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -1.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 -8.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 -6.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 -4.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 -2.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 0.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 4.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 6.00000000000001e-01 1.74878015727524e-02 + 6.00000000000001e-01 8.00000000000000e-01 1.74878015727524e-02 + 6.00000000000001e-01 1.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 1.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 1.40000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 1.60000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 1.80000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.40000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.60000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 2.80000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 3.00000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 3.20000000000000e+00 1.74878015727524e-02 + 6.00000000000001e-01 3.40000000000000e+00 1.74878015727524e-02 - 8.00000000000000e-01 -3.40000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -3.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -3.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -2.80000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -2.60000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -2.40000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -2.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -2.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -1.80000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -1.60000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -1.40000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -1.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -1.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 -8.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 -6.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 -4.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 -2.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 0.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 4.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 6.00000000000001e-01 1.74910007203883e-02 - 8.00000000000000e-01 8.00000000000000e-01 1.74910007203883e-02 - 8.00000000000000e-01 1.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 1.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 1.40000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 1.60000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 1.80000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.40000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.60000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 2.80000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 3.00000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 3.20000000000000e+00 1.74910007203883e-02 - 8.00000000000000e-01 3.40000000000000e+00 1.74910007203883e-02 + 8.00000000000000e-01 -3.40000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -3.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -3.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -2.80000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -2.60000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -2.40000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -2.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -2.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -1.80000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -1.60000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -1.40000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -1.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -1.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 -8.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 -6.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 -4.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 -2.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 0.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 4.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 6.00000000000001e-01 1.74878015727524e-02 + 8.00000000000000e-01 8.00000000000000e-01 1.74878015727524e-02 + 8.00000000000000e-01 1.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 1.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 1.40000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 1.60000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 1.80000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.40000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.60000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 2.80000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 3.00000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 3.20000000000000e+00 1.74878015727524e-02 + 8.00000000000000e-01 3.40000000000000e+00 1.74878015727524e-02 - 1.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 1.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 1.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 1.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 1.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 1.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 1.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 1.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 1.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 1.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 1.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 1.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 1.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 1.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 1.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 1.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 1.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 1.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 1.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 1.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 1.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 1.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 1.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 1.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 1.60000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 1.60000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 1.60000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 1.60000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 1.60000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 1.60000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 1.60000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 1.60000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 1.80000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 1.80000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 1.80000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 1.80000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 1.80000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 1.80000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 1.80000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 1.80000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 2.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 2.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 2.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 2.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 2.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 2.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 2.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 2.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 2.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 2.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 2.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 2.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 2.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 2.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 2.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 2.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 2.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 2.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 2.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 2.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 2.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.60000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 2.60000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 2.60000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 2.60000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 2.60000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 2.60000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 2.60000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 2.60000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 2.80000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 2.80000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 2.80000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 2.80000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 2.80000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 2.80000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 2.80000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 2.80000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 3.00000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 3.00000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 3.00000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 3.00000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 3.00000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 3.00000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 3.00000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 3.00000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 3.20000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 3.20000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 3.20000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 3.20000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 3.20000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 3.20000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 3.20000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 3.20000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 - 3.40000000000000e+00 -3.40000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -3.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -3.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -2.80000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -2.60000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -2.40000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -2.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -2.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -1.80000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -1.60000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -1.40000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -1.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -1.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 -8.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 -6.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 -4.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 -2.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 0.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 4.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 6.00000000000001e-01 1.74910007203883e-02 - 3.40000000000000e+00 8.00000000000000e-01 1.74910007203883e-02 - 3.40000000000000e+00 1.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 1.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 1.40000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 1.60000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 1.80000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.40000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.60000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 2.80000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 3.00000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 3.20000000000000e+00 1.74910007203883e-02 - 3.40000000000000e+00 3.40000000000000e+00 1.74910007203883e-02 + 3.40000000000000e+00 -3.40000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -3.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -3.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -2.80000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -2.60000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -2.40000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -2.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -2.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -1.80000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -1.60000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -1.40000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -1.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -1.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 -8.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 -6.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 -4.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 -2.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 0.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 4.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 6.00000000000001e-01 1.74878015727524e-02 + 3.40000000000000e+00 8.00000000000000e-01 1.74878015727524e-02 + 3.40000000000000e+00 1.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 1.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 1.40000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 1.60000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 1.80000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.40000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.60000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 2.80000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 3.00000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 3.20000000000000e+00 1.74878015727524e-02 + 3.40000000000000e+00 3.40000000000000e+00 1.74878015727524e-02 diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.out b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.out index 61704a1b8..2176b6914 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.out +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.restart.tmp.colvars.state". +colvars: The final output state file will be "test.restart.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -53,9 +57,12 @@ colvars: # period = 0 [default] colvars: # wrapAround = 0 [default] colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: # psfSegID = "BH" colvars: # vectorFile = "../Common/eigenvectors-localmin" colvars: # vectorNumber = 1 +colvars: Warning: cannot cite unknown feature "dihedralPC colvar component (derived from dihedPC)" +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.2 @@ -93,9 +100,12 @@ colvars: # period = 0 [default] colvars: # wrapAround = 0 [default] colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: # psfSegID = "BH" colvars: # vectorFile = "../Common/eigenvectors-localmin" colvars: # vectorNumber = 2 +colvars: Warning: cannot cite unknown feature "dihedralPC colvar component (derived from dihedPC)" +colvars: Warning: cannot cite unknown feature "dihedPC colvar component" colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.2 @@ -160,163 +170,37 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (30 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. -colvars: Re-initialized atom group for variable "one":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. -colvars: Re-initialized atom group for variable "one":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/3. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/4. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/5. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/6. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/7. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/8. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/9. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/10. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/11. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/12. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/13. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/14. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/15. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/16. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/17. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/18. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/19. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/20. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/21. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/22. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/23. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/24. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/25. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/26. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/27. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/28. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/29. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/30. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/31. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/32. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/33. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/34. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/35. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/36. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/37. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/38. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/39. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/40. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/41. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/42. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/43. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/44. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/45. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/46. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/47. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/48. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/49. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/50. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/51. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/52. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/53. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/54. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/55. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/56. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/57. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/58. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/59. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/60. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/61. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/62. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/63. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/64. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/65. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/66. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/67. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/68. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "one":0/69. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "one":0/70. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "one":0/71. 1 atoms: total mass = 12.011, total charge = 0.55. -colvars: Re-initialized atom group for variable "two":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. -colvars: Re-initialized atom group for variable "two":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. -colvars: Re-initialized atom group for variable "two":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/3. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/4. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/5. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/6. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/7. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/8. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/9. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/10. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/11. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/12. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/13. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/14. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/15. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/16. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/17. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/18. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/19. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/20. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/21. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/22. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/23. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/24. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/25. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/26. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/27. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/28. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/29. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/30. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/31. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/32. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/33. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/34. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/35. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/36. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/37. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/38. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/39. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/40. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/41. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/42. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/43. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/44. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/45. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/46. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/47. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/48. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/49. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/50. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/51. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/52. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/53. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/54. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/55. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/56. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/57. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/58. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/59. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/60. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/61. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/62. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/63. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/64. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/65. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/66. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/67. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/68. 1 atoms: total mass = 12.011, total charge = 0.51. -colvars: Re-initialized atom group for variable "two":0/69. 1 atoms: total mass = 14.007, total charge = -0.47. -colvars: Re-initialized atom group for variable "two":0/70. 1 atoms: total mass = 12.011, total charge = 0.07. -colvars: Re-initialized atom group for variable "two":0/71. 1 atoms: total mass = 12.011, total charge = 0.55. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - BAOA integrator: +colvars: BouRabee2010 https://doi.org/10.1137/090758842 +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Metadynamics colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - dihedral colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: ---------------------------------------------------------------------- -colvars: Restarting from file "test.colvars.state". -colvars: Restarting collective variable "one" from value: -1.07125 -colvars: Restarting collective variable "two" from value: -2.08004 -colvars: Restarting metadynamics bias "metadynamics1" from step number 20. +colvars: Loading state from file "test.colvars.state". +colvars: Restarting collective variable "one" from value: -1.07139 +colvars: Restarting collective variable "two" from value: -2.07997 +colvars: Restarting metadynamics bias "metadynamics1" from step number 0. +colvars: read biasing energy and forces from grids. +colvars: read 0 additional explicit hills. colvars: ---------------------------------------------------------------------- -colvars: The restart output state file will be "test.restart.tmp.colvars.state". -colvars: The final output state file will be "test.restart.colvars.state". -colvars: Opening trajectory file "test.restart.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Updating NAMD interface: colvars: updating atomic data (30 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 1 atoms: total mass = 14.007, total charge = -0.62. colvars: Re-initialized atom group for variable "one":0/1. 1 atoms: total mass = 12.011, total charge = -0.1. colvars: Re-initialized atom group for variable "one":0/2. 1 atoms: total mass = 12.011, total charge = 0.51. diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.state.stripped index 5d6526f3b..d09e6d782 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.state.stripped @@ -5,16 +5,16 @@ configuration { colvar { name one - x -1.13178988227807e+00 - extended_x -1.00800789919324e+00 - extended_v 5.23317358324059e-03 + x -1.13197437578394e+00 + extended_x -1.00834779777182e+00 + extended_v 5.30672069616506e-03 } colvar { name two - x -2.08296172274834e+00 - extended_x -2.10807875324241e+00 - extended_v 2.24662046396417e-03 + x -2.08286935214585e+00 + extended_x -2.10803774920239e+00 + extended_v 2.20179026067253e-03 } metadynamics { @@ -113,8 +113,8 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 1.11272221887018e-06 3.20247560132600e-06 - 3.14826775463842e-06 1.07588595058025e-06 1.04746276876539e-07 + 0.00000000000000e+00 1.12314993914291e-06 3.23835864283634e-06 + 3.18837574379657e-06 1.09095163400181e-06 1.06350524430211e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -124,9 +124,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 3.02837109654147e-07 6.96509766396487e-06 - 5.00408266117772e-05 1.32548907739626e-04 1.29439849105306e-04 - 4.65996300549532e-05 6.18442008747974e-06 1.92821479119623e-07 + 0.00000000000000e+00 3.03946727865229e-07 7.00371500812350e-06 + 5.03915754857089e-05 1.33673841558955e-04 1.30731416533348e-04 + 4.71347513413164e-05 6.26483667841322e-06 1.95573050903909e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -136,9 +136,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 5.72443446435168e-06 1.10702223097227e-04 7.89342949487738e-04 - 2.07520496075793e-03 2.01158594132007e-03 7.18937668622134e-04 - 9.47344660701261e-05 4.60229536357798e-06 0.00000000000000e+00 + 5.73306143241110e-06 1.11026517791148e-04 7.92784634891750e-04 + 2.08724242890717e-03 2.02617379828929e-03 7.25203347235883e-04 + 9.56999428328911e-05 4.65605648658524e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -147,10 +147,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 6.17283376926752e-07 3.57872560425740e-05 - 6.86658690634754e-04 4.85737685088278e-03 1.26684089516479e-02 - 1.21817456117681e-02 4.31885400361286e-03 5.64546780344434e-04 - 2.72082801176802e-05 3.66457595467656e-07 0.00000000000000e+00 + 0.00000000000000e+00 6.15473526526448e-07 3.57511371174026e-05 + 6.86910807524001e-04 4.86585949309658e-03 1.27080612572104e-02 + 1.22368061716961e-02 4.34441200475281e-03 5.68682201257651e-04 + 2.74461829454408e-05 3.70225422023879e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -159,10 +159,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 1.72022127856507e-06 8.89224919517835e-05 1.69421293266856e-03 - 1.18979579718996e-02 3.07993876881154e-02 2.93894864791798e-02 - 1.03379617394403e-02 1.34054409437686e-03 6.40823087507254e-05 - 1.12930405068074e-06 0.00000000000000e+00 0.00000000000000e+00 + 1.71216163292921e-06 8.86226992378869e-05 1.69071477701497e-03 + 1.18888741601188e-02 3.08158497484176e-02 2.94433063569133e-02 + 1.03703095780873e-02 1.34648278346832e-03 6.44499235670144e-05 + 1.13726668389421e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -170,10 +170,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 1.73246135496388e-06 - 8.91423138330038e-05 1.69003866391095e-03 1.18064204015409e-02 - 3.03923554909611e-02 2.88303341389261e-02 1.00783114334844e-02 - 1.29834768467880e-03 6.16410978888387e-05 1.07853776015495e-06 + 0.00000000000000e+00 0.00000000000000e+00 1.72085789219159e-06 + 8.86546275675720e-05 1.68283704924228e-03 1.17702109928311e-02 + 3.03350346780391e-02 2.88096819057150e-02 1.00827913572633e-02 + 1.30042380111360e-03 6.18106065187528e-05 1.08274398801814e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -182,10 +182,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 6.45241406399235e-07 3.62581009655544e-05 - 6.86019423477795e-04 4.78122270850261e-03 1.22749965204361e-02 - 1.16089217624534e-02 4.04443948613133e-03 5.19072660864983e-04 - 2.45419041654891e-05 1.94351193496667e-07 0.00000000000000e+00 + 0.00000000000000e+00 6.40110451046741e-07 3.59957736136374e-05 + 6.81804356561631e-04 4.75694060096285e-03 1.22254492771890e-02 + 1.15739134150090e-02 4.03629375611645e-03 5.18538388577290e-04 + 2.45404627487981e-05 1.94188369698545e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -194,9 +194,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 5.94481770003537e-06 1.12553950524831e-04 - 7.84769788052063e-04 2.01504145944096e-03 1.90540164901014e-03 - 6.63514516510673e-04 8.50895118700598e-05 4.01849665239562e-06 + 0.00000000000000e+00 5.89321809187914e-06 1.11685155926194e-04 + 7.79441216284340e-04 2.00317016878846e-03 1.89583425089636e-03 + 6.60742618703458e-04 8.48037451826453e-05 4.00820366205230e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -206,9 +206,9 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 3.49806207958978e-07 7.34153117884373e-06 5.13002091042089e-05 - 1.31983317458996e-04 1.25020600426375e-04 4.36015519863556e-05 - 5.59854730476825e-06 1.86789361432100e-07 0.00000000000000e+00 + 2.46376451325848e-07 7.27495363428157e-06 5.08758698598880e-05 + 1.30992467689441e-04 1.24173710437319e-04 4.33369024818516e-05 + 5.56835625492613e-06 1.85961457424101e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -218,8 +218,8 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 1.38698799766107e-07 1.23870531087997e-06 3.32350511267815e-06 - 3.15267519710571e-06 1.05941557843544e-06 1.13333618234241e-07 + 1.37680105931028e-07 1.22721624940429e-06 3.29393301416170e-06 + 3.12653235837878e-06 1.05141496482870e-06 1.12616606970089e-07 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -613,10 +613,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 2.31278278352251e-05 - 8.26962949863584e-06 6.70101426836238e-05 7.71696384912329e-06 - 6.57864286672178e-05 -8.12395837749149e-06 2.23082932078077e-05 - -8.11698994547979e-06 2.14428084659913e-06 -1.30095612395932e-06 + 0.00000000000000e+00 0.00000000000000e+00 2.33293879058975e-05 + 8.35557849923944e-06 6.77183243752410e-05 7.82789396827317e-06 + 6.65824042666908e-05 -8.20318087986522e-06 2.26057618893020e-05 + -8.22221720635756e-06 2.17568577410462e-06 -1.31999291160277e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -635,12 +635,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 4.80299459692474e-06 - 5.26829305336511e-06 1.12914860981479e-04 8.60477281590471e-05 - 8.09442442815930e-04 3.68556903550862e-04 2.13938766228929e-03 - 3.14932664685857e-04 2.08473288097900e-03 -3.38273059244740e-04 - 7.48952093259965e-04 -3.54293043117682e-04 9.91933029491725e-05 - -7.78786897365226e-05 2.98317757546063e-06 -3.35896372435564e-06 + 0.00000000000000e+00 0.00000000000000e+00 4.81648910241581e-06 + 5.28982127756346e-06 1.13449453651543e-04 8.65756114647140e-05 + 8.14451880259520e-04 3.71508297407394e-04 2.15576489085002e-03 + 3.18589212263868e-04 2.10377558592384e-03 -3.40678793254122e-04 + 7.56911382756425e-04 -3.58009132265948e-04 1.00396942036513e-04 + -7.88441342498812e-05 3.02310706723988e-06 -3.40526316606529e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -659,12 +659,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 6.58378255243521e-05 9.90605970627213e-05 1.26885118524095e-03 - 1.36342394062139e-03 9.01620898582968e-03 5.78385629547920e-03 - 2.36222121999800e-02 4.85329215057413e-03 2.28192865540429e-02 - -5.33087139540405e-03 8.12767483154479e-03 -5.49194881035683e-03 - 1.06735157679088e-03 -1.19630852446980e-03 5.16792384229682e-05 - -8.10797574396904e-05 0.00000000000000e+00 0.00000000000000e+00 + 6.58637370230391e-05 9.92504907157671e-05 1.27113019737368e-03 + 1.36820749971712e-03 9.04510521961482e-03 5.81474005382660e-03 + 2.37313814577560e-02 4.89644456244732e-03 2.29572794235440e-02 + -5.35487488253978e-03 8.18849820322356e-03 -5.53452946914962e-03 + 1.07688470754396e-03 -1.20779814270557e-03 5.22163191894865e-05 + -8.19924299027048e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -681,14 +681,14 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 4.04162331229628e-06 - 1.37347876892220e-05 2.44882862400609e-04 6.17897446287810e-04 - 4.67233127021253e-03 8.42985517776889e-03 3.28618195800552e-02 - 3.53984019772030e-02 8.52018810361822e-02 2.91194572315694e-02 - 8.14368098888324e-02 -3.27726519651500e-02 2.86957806768867e-02 - -3.31652347035553e-02 3.72777703829194e-03 -7.15170771187374e-03 - 1.78534548944028e-04 -4.80416042362040e-04 2.12221807320614e-06 - -8.27133816749347e-06 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 4.02099776209912e-06 + 1.36991585099172e-05 2.44196102513867e-04 6.17519974219686e-04 + 4.66541723464651e-03 8.43767973348783e-03 3.28566199828025e-02 + 3.54937631183707e-02 8.53009002960734e-02 2.92984254683264e-02 + 8.16390529787792e-02 -3.28358994481630e-02 2.88050438539838e-02 + -3.33312158151046e-02 3.74692616895343e-03 -7.20010762897811e-03 + 1.79690244219923e-04 -4.84422881236418e-04 2.13880997815971e-06 + -8.35349572180457e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -705,13 +705,13 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 3.95914299263381e-06 3.82265818115122e-05 2.02037086714065e-04 - 1.53224688502224e-03 3.79693357510979e-03 2.07386192563353e-02 - 2.62793535788264e-02 8.62680519579717e-02 6.69859513210589e-02 - 6.96265991634228e-02 6.28850705079488e-02 -8.02098552660051e-02 - 2.17426933295632e-02 -7.97979076366115e-02 2.76877762172194e-03 - -1.70363530838813e-02 1.29860934060231e-04 -1.13413381211102e-03 - 2.24331993112255e-06 -2.56211807198152e-05 0.00000000000000e+00 + 3.92189414473847e-06 3.80588178247303e-05 2.00356320367603e-04 + 1.52766349047296e-03 3.76934074153100e-03 2.07068419908081e-02 + 2.61150485914872e-02 8.62794825027918e-02 6.66326637405550e-02 + 6.98635494439653e-02 6.26126531044651e-02 -8.01661646857379e-02 + 2.16682187931839e-02 -7.99804519353648e-02 2.76170920595249e-03 + -1.71030887565164e-02 1.29638392929760e-04 -1.14022013045465e-03 + 2.24128700614383e-06 -2.57943861992276e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -728,13 +728,13 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 -3.85692736858852e-06 3.84598905854972e-05 - -1.99889491075751e-04 1.53390535822502e-03 -3.81958508600884e-03 - 2.06444657246771e-02 -2.69117781956383e-02 8.52845055246836e-02 - -6.99177537611560e-02 6.78337427002428e-02 -6.69833084145879e-02 - -7.95584137167197e-02 -2.36641539096223e-02 -7.81155969285727e-02 - -3.08295817706694e-03 -1.65436113535291e-02 -1.48115055179706e-04 - -1.09308902085485e-03 -2.62412142627646e-06 -2.45087896271388e-05 + 0.00000000000000e+00 -3.84701790232031e-06 3.82130045596661e-05 + -1.99659473549772e-04 1.52605641327668e-03 -3.82060603334556e-03 + 2.05666495255184e-02 -2.69571529835613e-02 8.50930299065967e-02 + -7.01349803347731e-02 6.78843485105251e-02 -6.72868182850159e-02 + -7.93335064530012e-02 -2.38051951428986e-02 -7.80920041945267e-02 + -3.10575725653726e-03 -1.65625851980554e-02 -1.49424041298915e-04 + -1.09574050902469e-03 -2.65112006548936e-06 -2.45981679677064e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -751,14 +751,14 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 -4.19226242555207e-06 - 1.42954145039803e-05 -2.45072273022842e-04 6.23566580580924e-04 - -4.63879709725517e-03 8.37249316288454e-03 -3.23505057136338e-02 - 3.44774834632457e-02 -8.31257823346198e-02 2.72219965730463e-02 - -7.87015273646957e-02 -3.22213540117781e-02 -2.74559374639244e-02 - -3.14201465431150e-02 -3.52945080889722e-03 -6.62430323413701e-03 - -1.67188632757061e-04 -4.35736667346323e-04 -1.01066458662350e-06 - -4.41215473704067e-06 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 -4.16410899915809e-06 + 1.41853399537393e-05 -2.43588094311579e-04 6.19255198664553e-04 + -4.61619528552726e-03 8.32474788440458e-03 -3.22305588696707e-02 + 3.43275719390633e-02 -8.29129467210221e-02 2.71754035232290e-02 + -7.85891161952420e-02 -3.20655140963277e-02 -2.74474475059759e-02 + -3.13367887252739e-02 -3.53227208378628e-03 -6.61494872536247e-03 + -1.67506294950176e-04 -4.35592741300181e-04 -1.01146797948982e-06 + -4.40825925355873e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -775,12 +775,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 -6.73897475514336e-05 - 1.02262489546657e-04 -1.27492868464018e-03 1.37396571968713e-03 - -8.88342250162743e-03 5.66007716605609e-03 -2.27971787961938e-02 - 4.46864284603031e-03 -2.15472577516050e-02 -5.29151305869696e-03 - -7.50095458721570e-03 -5.15674286025331e-03 -9.61740662559205e-04 - -1.08630440780360e-03 -4.54170998866411e-05 -7.13739305008083e-05 + 0.00000000000000e+00 0.00000000000000e+00 -6.68438407314432e-05 + 1.01403924566886e-04 -1.26590039666148e-03 1.36389180532399e-03 + -8.82930526309527e-03 5.62522980734564e-03 -2.26802133032326e-02 + 4.45122383641948e-03 -2.14568482218361e-02 -5.25678316534657e-03 + -7.47631074454558e-03 -5.13244308359127e-03 -9.59435216283728e-04 + -1.08231249932260e-03 -4.53476713817755e-05 -7.11753056023775e-05 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -799,12 +799,12 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - -5.49155994289569e-06 6.01964865805263e-06 -1.17377894846997e-04 - 8.97034938878903e-05 -8.19507621917738e-04 3.70532657888432e-04 - -2.10674791883695e-03 2.93922685619022e-04 -1.99416723447505e-03 - -3.46175509065280e-04 -6.95018666345888e-04 -3.38562531455186e-04 - -8.91894914274312e-05 -7.14427583618481e-05 -2.83923518089943e-06 - -3.30653945404465e-06 0.00000000000000e+00 0.00000000000000e+00 + -3.74706428967292e-06 4.26208009507402e-06 -1.16360201643970e-04 + 8.89198795930162e-05 -8.13088135795563e-04 3.67667885594643e-04 + -2.09193957310727e-03 2.92210073233015e-04 -1.98169272965543e-03 + -3.43381365631709e-04 -6.91188435665462e-04 -3.36357047829999e-04 + -8.87619617025164e-05 -7.10389015412434e-05 -2.82823107735977e-06 + -3.29169329382394e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -823,10 +823,10 @@ grid_parameters { 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - -2.80174314549090e-06 1.70572216261814e-06 -2.54572956347690e-05 - 8.96199419526157e-06 -6.86466414453448e-05 7.42711051687085e-06 - -6.50628208131938e-05 -8.70902973668050e-06 -2.17210748865457e-05 - -8.21714377678674e-06 -2.28936146943544e-06 -1.43956008632260e-06 + -2.78233526065845e-06 1.69333537009704e-06 -2.52302258708530e-05 + 8.88272832596476e-06 -6.80602104811845e-05 7.37134848776804e-06 + -6.45479525225560e-05 -8.62750870311771e-06 -2.15660888307118e-05 + -8.15228971678873e-06 -2.27583465592016e-06 -1.43033718819736e-06 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -1267,13 +1267,13 @@ grid_parameters { hill { step 30 weight 1.00000000000000e-02 - centers -1.07642948397421e+00 -2.12035990922620e+00 + centers -1.07712346073985e+00 -2.12000618454050e+00 widths 4.00000000000000e-01 4.00000000000000e-01 } hill { step 40 weight 1.00000000000000e-02 - centers -1.00800789919324e+00 -2.10807875324241e+00 + centers -1.00834779777182e+00 -2.10803774920239e+00 widths 4.00000000000000e-01 4.00000000000000e-01 } } diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.traj b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.traj index d3a2457e5..815ac8fac 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.traj +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.colvars.traj @@ -1,22 +1,22 @@ # step one r_one two r_two - 20 -1.07125254953554e+00 -1.14504260899319e+00 -2.08003709484154e+00 -2.11384256732221e+00 - 21 -1.07119796918443e+00 -1.13985232700735e+00 -2.07215411011455e+00 -2.11556017658898e+00 - 22 -1.07238196627094e+00 -1.13397115957196e+00 -2.06473689576996e+00 -2.11714330518857e+00 - 23 -1.07456972666948e+00 -1.12752462497645e+00 -2.05815626048283e+00 -2.11864533464635e+00 - 24 -1.07749714966584e+00 -1.12075063661102e+00 -2.05270572735711e+00 -2.12011043298098e+00 - 25 -1.08090758091289e+00 -1.11397020265678e+00 -2.04857951018513e+00 -2.12108245515148e+00 - 26 -1.08458581444980e+00 -1.10676255472813e+00 -2.04586296155451e+00 -2.12158765929346e+00 - 27 -1.08837791545571e+00 -1.09953985926307e+00 -2.04453898245717e+00 -2.12153420708683e+00 - 28 -1.09219757379667e+00 -1.09174071275577e+00 -2.04450492888607e+00 -2.12126456175939e+00 - 29 -1.09601333021551e+00 -1.08389925842272e+00 -2.04559895948568e+00 -2.12071958611127e+00 - 30 -1.09982950294195e+00 -1.07642948397421e+00 -2.04762611374193e+00 -2.12035990922620e+00 - 31 -1.10366323002404e+00 -1.06871259846932e+00 -2.05038319291416e+00 -2.11952191064911e+00 - 32 -1.10752237362737e+00 -1.06092028249770e+00 -2.05367662138831e+00 -2.11830649523538e+00 - 33 -1.11139120516980e+00 -1.05358740527634e+00 -2.05733502902402e+00 -2.11743541238045e+00 - 34 -1.11522392549938e+00 -1.04654394287290e+00 -2.06121589004280e+00 -2.11666202023110e+00 - 35 -1.11894408707070e+00 -1.03931823572774e+00 -2.06520278625068e+00 -2.11607257620306e+00 - 36 -1.12244849901315e+00 -1.03236561806878e+00 -2.06919597301143e+00 -2.11512352898028e+00 - 37 -1.12561697198072e+00 -1.02548083118939e+00 -2.07309550431626e+00 -2.11394597129353e+00 - 38 -1.12831919699839e+00 -1.01919309486942e+00 -2.07678632360923e+00 -2.11222340556280e+00 - 39 -1.13042155168616e+00 -1.01324107277648e+00 -2.08012863616435e+00 -2.11032537370637e+00 - 40 -1.13178988227807e+00 -1.00800789919324e+00 -2.08296172274834e+00 -2.10807875324241e+00 + 20 -1.07139020852240e+00 -1.14563889103481e+00 -2.07996734380763e+00 -2.11357763689771e+00 + 21 -1.07134541827650e+00 -1.14038380434313e+00 -2.07207780857289e+00 -2.11507768654840e+00 + 22 -1.07253775201003e+00 -1.13467355748825e+00 -2.06465449633230e+00 -2.11666726427053e+00 + 23 -1.07473285920836e+00 -1.12834731056824e+00 -2.05806819168533e+00 -2.11813287779448e+00 + 24 -1.07766703492786e+00 -1.12158934211256e+00 -2.05261228995111e+00 -2.11952520866886e+00 + 25 -1.08108375161885e+00 -1.11468104542564e+00 -2.04848085769139e+00 -2.12064093922482e+00 + 26 -1.08476725468940e+00 -1.10757406333789e+00 -2.04575977479158e+00 -2.12126823113822e+00 + 27 -1.08856380562621e+00 -1.10026509448324e+00 -2.04443216317635e+00 -2.12137751353518e+00 + 28 -1.09238667868240e+00 -1.09268241752961e+00 -2.04439587036069e+00 -2.12109760439365e+00 + 29 -1.09620514476393e+00 -1.08481052698243e+00 -2.04548875063710e+00 -2.12057271749051e+00 + 30 -1.10002345489701e+00 -1.07712346073985e+00 -2.04751585065132e+00 -2.12000618454050e+00 + 31 -1.10385834834101e+00 -1.06951845331871e+00 -2.05027359712424e+00 -2.11929942142859e+00 + 32 -1.10771797054803e+00 -1.06177269209356e+00 -2.05356853345987e+00 -2.11817251364513e+00 + 33 -1.11158675426556e+00 -1.05423929494120e+00 -2.05722935446114e+00 -2.11703804252277e+00 + 34 -1.11541867932467e+00 -1.04710049923444e+00 -2.06111297397515e+00 -2.11613453260045e+00 + 35 -1.11913727989748e+00 -1.04003535599087e+00 -2.06510262547885e+00 -2.11538260131536e+00 + 36 -1.12264008168898e+00 -1.03303520585768e+00 -2.06909795920183e+00 -2.11455421265413e+00 + 37 -1.12580681485762e+00 -1.02622424241271e+00 -2.07299922375146e+00 -2.11344349267500e+00 + 38 -1.12850747463206e+00 -1.01976327197941e+00 -2.07669134474466e+00 -2.11195779261659e+00 + 39 -1.13060801591005e+00 -1.01378475014668e+00 -2.08003497306252e+00 -2.11012335395400e+00 + 40 -1.13197437578394e+00 -1.00834779777182e+00 -2.08286935214585e+00 -2.10803774920239e+00 diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.pmf b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.pmf index 5f4a7648b..003c811d3 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.pmf +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/AutoDiff/test.restart.pmf @@ -2,1262 +2,1262 @@ # -3.50000000000000e+00 2.00000000000000e-01 35 0 # -3.50000000000000e+00 2.00000000000000e-01 35 0 - -3.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -3.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -3.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -3.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -3.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -3.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -3.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -3.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -3.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -3.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -3.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -3.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -3.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -3.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -3.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -3.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -3.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -3.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -3.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -3.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -3.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -3.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -3.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -3.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -2.80000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -2.80000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -2.80000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -2.80000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -2.80000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -2.80000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -2.80000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -2.80000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -2.60000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -2.60000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -2.60000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -2.60000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -2.60000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -2.60000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -2.60000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -2.60000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -2.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -2.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -2.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -2.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -2.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -2.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -2.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -2.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -2.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -2.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -2.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -2.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -2.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -2.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -2.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -2.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -2.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -2.40000000000000e+00 3.07982749658965e-02 - -2.00000000000000e+00 -2.20000000000000e+00 3.07961852125141e-02 - -2.00000000000000e+00 -2.00000000000000e+00 3.07962394203607e-02 - -2.00000000000000e+00 -1.80000000000000e+00 3.07983118021648e-02 - -2.00000000000000e+00 -1.60000000000000e+00 3.07992829418385e-02 - -2.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -2.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -2.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -2.40000000000000e+00 3.08147265984784e-02 + -2.00000000000000e+00 -2.20000000000000e+00 3.08126113897747e-02 + -2.00000000000000e+00 -2.00000000000000e+00 3.08126613726738e-02 + -2.00000000000000e+00 -1.80000000000000e+00 3.08147587967836e-02 + -2.00000000000000e+00 -1.60000000000000e+00 3.08157433978931e-02 + -2.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -2.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -1.80000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 -2.80000000000000e+00 3.07990848510057e-02 - -1.80000000000000e+00 -2.60000000000000e+00 3.07924225904514e-02 - -1.80000000000000e+00 -2.40000000000000e+00 3.07493468615036e-02 - -1.80000000000000e+00 -2.20000000000000e+00 3.06668387803758e-02 - -1.80000000000000e+00 -2.00000000000000e+00 3.06699478390101e-02 - -1.80000000000000e+00 -1.80000000000000e+00 3.07527880580604e-02 - -1.80000000000000e+00 -1.60000000000000e+00 3.07932032680279e-02 - -1.80000000000000e+00 -1.40000000000000e+00 3.07991948666363e-02 - -1.80000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -1.80000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -1.80000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -1.80000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -1.80000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 -2.80000000000000e+00 3.08155458016897e-02 + -1.80000000000000e+00 -2.60000000000000e+00 3.08088460334095e-02 + -1.80000000000000e+00 -2.40000000000000e+00 3.07654581729319e-02 + -1.80000000000000e+00 -2.20000000000000e+00 3.06821759068586e-02 + -1.80000000000000e+00 -2.00000000000000e+00 3.06851183318842e-02 + -1.80000000000000e+00 -1.80000000000000e+00 3.07687149970763e-02 + -1.80000000000000e+00 -1.60000000000000e+00 3.08095849117392e-02 + -1.80000000000000e+00 -1.40000000000000e+00 3.08156541753667e-02 + -1.80000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -1.80000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -1.80000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -1.80000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -1.60000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 -2.80000000000000e+00 3.07936632536510e-02 - -1.60000000000000e+00 -2.60000000000000e+00 3.06886854650182e-02 - -1.60000000000000e+00 -2.40000000000000e+00 3.00100447386277e-02 - -1.60000000000000e+00 -2.20000000000000e+00 2.87241827273575e-02 - -1.60000000000000e+00 -2.00000000000000e+00 2.87878017467953e-02 - -1.60000000000000e+00 -1.80000000000000e+00 3.00804500194933e-02 - -1.60000000000000e+00 -1.60000000000000e+00 3.07046532220453e-02 - -1.60000000000000e+00 -1.40000000000000e+00 3.07947853927518e-02 - -1.60000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -1.60000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -1.60000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -1.60000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -1.60000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 -2.80000000000000e+00 3.08101166869852e-02 + -1.60000000000000e+00 -2.60000000000000e+00 3.07048232306264e-02 + -1.60000000000000e+00 -2.40000000000000e+00 3.00230651135258e-02 + -1.60000000000000e+00 -2.20000000000000e+00 2.87286073195104e-02 + -1.60000000000000e+00 -2.00000000000000e+00 2.87896759501283e-02 + -1.60000000000000e+00 -1.80000000000000e+00 3.00906464011817e-02 + -1.60000000000000e+00 -1.60000000000000e+00 3.07201498055847e-02 + -1.60000000000000e+00 -1.40000000000000e+00 3.08111936919310e-02 + -1.60000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -1.60000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -1.60000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -1.60000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -1.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 -3.00000000000000e+00 3.07987704047385e-02 - -1.40000000000000e+00 -2.80000000000000e+00 3.07636004320728e-02 - -1.40000000000000e+00 -2.60000000000000e+00 3.01127289974806e-02 - -1.40000000000000e+00 -2.40000000000000e+00 2.59420108372326e-02 - -1.40000000000000e+00 -2.20000000000000e+00 1.81309787364675e-02 - -1.40000000000000e+00 -2.00000000000000e+00 1.86176420763473e-02 - -1.40000000000000e+00 -1.80000000000000e+00 2.64805336845025e-02 - -1.40000000000000e+00 -1.60000000000000e+00 3.02348409077710e-02 - -1.40000000000000e+00 -1.40000000000000e+00 3.07721794079977e-02 - -1.40000000000000e+00 -1.20000000000000e+00 3.07990212305199e-02 - -1.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -1.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -1.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -1.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -1.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 -3.00000000000000e+00 3.08152342748911e-02 + -1.40000000000000e+00 -2.80000000000000e+00 3.07800986113002e-02 + -1.40000000000000e+00 -2.60000000000000e+00 3.01289389408936e-02 + -1.40000000000000e+00 -2.40000000000000e+00 2.59499902553210e-02 + -1.40000000000000e+00 -2.20000000000000e+00 1.81077884912072e-02 + -1.40000000000000e+00 -2.00000000000000e+00 1.85790435767215e-02 + -1.40000000000000e+00 -1.80000000000000e+00 2.64714377436648e-02 + -1.40000000000000e+00 -1.60000000000000e+00 3.02471675471599e-02 + -1.40000000000000e+00 -1.40000000000000e+00 3.07884035654721e-02 + -1.40000000000000e+00 -1.20000000000000e+00 3.08154795229956e-02 + -1.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -1.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -1.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -1.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -1.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 -3.00000000000000e+00 3.07976674668368e-02 - -1.20000000000000e+00 -2.80000000000000e+00 3.07104651961636e-02 - -1.20000000000000e+00 -2.60000000000000e+00 2.91051747554468e-02 - -1.20000000000000e+00 -2.40000000000000e+00 1.89014297162158e-02 + -1.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 -3.00000000000000e+00 3.08141375867846e-02 + -1.20000000000000e+00 -2.80000000000000e+00 3.07272270491797e-02 + -1.20000000000000e+00 -2.60000000000000e+00 2.91251349714026e-02 + -1.20000000000000e+00 -2.40000000000000e+00 1.89269755882988e-02 -1.20000000000000e+00 -2.20000000000000e+00 -0.00000000000000e+00 - -1.20000000000000e+00 -2.00000000000000e+00 1.40990120893560e-03 - -1.20000000000000e+00 -1.80000000000000e+00 2.04614259486751e-02 - -1.20000000000000e+00 -1.60000000000000e+00 2.94588435937385e-02 - -1.20000000000000e+00 -1.40000000000000e+00 3.07353053793647e-02 - -1.20000000000000e+00 -1.20000000000000e+00 3.07982583840647e-02 - -1.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -1.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -1.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -1.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -1.20000000000000e+00 -2.00000000000000e+00 1.37254339150428e-03 + -1.20000000000000e+00 -1.80000000000000e+00 2.04455401703303e-02 + -1.20000000000000e+00 -1.60000000000000e+00 2.94693669649493e-02 + -1.20000000000000e+00 -1.40000000000000e+00 3.07513998248506e-02 + -1.20000000000000e+00 -1.20000000000000e+00 3.08147124817337e-02 + -1.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -1.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -1.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -1.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -1.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 -3.00000000000000e+00 3.07976552267604e-02 - -1.00000000000000e+00 -2.80000000000000e+00 3.07102453742824e-02 - -1.00000000000000e+00 -2.60000000000000e+00 2.91093490242044e-02 - -1.00000000000000e+00 -2.40000000000000e+00 1.89929672865745e-02 - -1.00000000000000e+00 -2.20000000000000e+00 4.07032197154253e-04 - -1.00000000000000e+00 -2.00000000000000e+00 1.96905354918927e-03 - -1.00000000000000e+00 -1.80000000000000e+00 2.07210762546310e-02 - -1.00000000000000e+00 -1.60000000000000e+00 2.95010400034366e-02 - -1.00000000000000e+00 -1.40000000000000e+00 3.07377465902266e-02 - -1.00000000000000e+00 -1.20000000000000e+00 3.07983091503552e-02 - -1.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - -1.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - -1.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - -1.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + -1.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 -3.00000000000000e+00 3.08141288905254e-02 + -1.00000000000000e+00 -2.80000000000000e+00 3.07271951208500e-02 + -1.00000000000000e+00 -2.60000000000000e+00 2.91330126991753e-02 + -1.00000000000000e+00 -2.40000000000000e+00 1.90456387555865e-02 + -1.00000000000000e+00 -2.20000000000000e+00 4.80815070378511e-04 + -1.00000000000000e+00 -2.00000000000000e+00 2.00616784270262e-03 + -1.00000000000000e+00 -1.80000000000000e+00 2.07330583911543e-02 + -1.00000000000000e+00 -1.60000000000000e+00 2.95154259473040e-02 + -1.00000000000000e+00 -1.40000000000000e+00 3.07540391418988e-02 + -1.00000000000000e+00 -1.20000000000000e+00 3.08147670044296e-02 + -1.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + -1.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + -1.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + -1.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - -8.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 -3.00000000000000e+00 3.07987424467090e-02 - -8.00000000000000e-01 -2.80000000000000e+00 3.07631295871498e-02 - -8.00000000000000e-01 -2.60000000000000e+00 3.01133682646376e-02 - -8.00000000000000e-01 -2.40000000000000e+00 2.60181649796128e-02 - -8.00000000000000e-01 -2.20000000000000e+00 1.85243911676793e-02 - -8.00000000000000e-01 -2.00000000000000e+00 1.91904659256620e-02 - -8.00000000000000e-01 -1.80000000000000e+00 2.67549482019841e-02 - -8.00000000000000e-01 -1.60000000000000e+00 3.02803150272504e-02 - -8.00000000000000e-01 -1.40000000000000e+00 3.07748457839499e-02 - -8.00000000000000e-01 -1.20000000000000e+00 3.07991933369219e-02 - -8.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - -8.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - -8.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - -8.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + -8.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 -3.00000000000000e+00 3.08152096379665e-02 + -8.00000000000000e-01 -2.80000000000000e+00 3.07798539748039e-02 + -8.00000000000000e-01 -2.60000000000000e+00 3.01340453918559e-02 + -8.00000000000000e-01 -2.40000000000000e+00 2.60589091474547e-02 + -8.00000000000000e-01 -2.20000000000000e+00 1.85904004712286e-02 + -8.00000000000000e-01 -2.00000000000000e+00 1.92419363334086e-02 + -8.00000000000000e-01 -1.80000000000000e+00 2.67795559923011e-02 + -8.00000000000000e-01 -1.60000000000000e+00 3.02973113598403e-02 + -8.00000000000000e-01 -1.40000000000000e+00 3.07913092856688e-02 + -8.00000000000000e-01 -1.20000000000000e+00 3.08156555600479e-02 + -8.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + -8.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + -8.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + -8.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - -6.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 -2.80000000000000e+00 3.07934428704154e-02 - -6.00000000000000e-01 -2.60000000000000e+00 3.06868337375906e-02 - -6.00000000000000e-01 -2.40000000000000e+00 3.00146179000633e-02 - -6.00000000000000e-01 -2.20000000000000e+00 2.87843462286744e-02 - -6.00000000000000e-01 -2.00000000000000e+00 2.88939860391053e-02 - -6.00000000000000e-01 -1.80000000000000e+00 3.01358731716047e-02 - -6.00000000000000e-01 -1.60000000000000e+00 3.07142981762453e-02 - -6.00000000000000e-01 -1.40000000000000e+00 3.07953691914630e-02 - -6.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - -6.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - -6.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - -6.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + -6.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 -2.80000000000000e+00 3.08099565303257e-02 + -6.00000000000000e-01 -2.60000000000000e+00 3.07041645924914e-02 + -6.00000000000000e-01 -2.40000000000000e+00 3.00364085321332e-02 + -6.00000000000000e-01 -2.20000000000000e+00 2.88126795796291e-02 + -6.00000000000000e-01 -2.00000000000000e+00 2.89200154975212e-02 + -6.00000000000000e-01 -1.80000000000000e+00 3.01551071297141e-02 + -6.00000000000000e-01 -1.60000000000000e+00 3.07310460032349e-02 + -6.00000000000000e-01 -1.40000000000000e+00 3.08118415447555e-02 + -6.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + -6.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + -6.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + -6.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - -4.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 -2.80000000000000e+00 3.07990378819074e-02 - -4.00000000000000e-01 -2.60000000000000e+00 3.07920461569365e-02 - -4.00000000000000e-01 -2.40000000000000e+00 3.07480874790112e-02 - -4.00000000000000e-01 -2.20000000000000e+00 3.06674043706564e-02 - -4.00000000000000e-01 -2.00000000000000e+00 3.06743670876890e-02 - -4.00000000000000e-01 -1.80000000000000e+00 3.07557861361290e-02 - -4.00000000000000e-01 -1.60000000000000e+00 3.07937891408106e-02 - -4.00000000000000e-01 -1.40000000000000e+00 3.07992008987540e-02 - -4.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - -4.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - -4.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - -4.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + -4.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 -2.80000000000000e+00 3.08156033719662e-02 + -4.00000000000000e-01 -2.60000000000000e+00 3.08085747947833e-02 + -4.00000000000000e-01 -2.40000000000000e+00 3.07649738785577e-02 + -4.00000000000000e-01 -2.20000000000000e+00 3.06848572807281e-02 + -4.00000000000000e-01 -2.00000000000000e+00 3.06916760379803e-02 + -4.00000000000000e-01 -1.80000000000000e+00 3.07725128459357e-02 + -4.00000000000000e-01 -1.60000000000000e+00 3.08102813921627e-02 + -4.00000000000000e-01 -1.40000000000000e+00 3.08156637869602e-02 + -4.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + -4.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + -4.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + -4.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - -2.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -2.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -2.60000000000000e+00 3.07992489893156e-02 - -2.00000000000000e-01 -2.40000000000000e+00 3.07981489828045e-02 - -2.00000000000000e-01 -2.20000000000000e+00 3.07960641830027e-02 - -2.00000000000000e-01 -2.00000000000000e+00 3.07962350129183e-02 - -2.00000000000000e-01 -1.80000000000000e+00 3.07983282725370e-02 - -2.00000000000000e-01 -1.60000000000000e+00 3.07992743544972e-02 - -2.00000000000000e-01 -1.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - -2.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - -2.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - -2.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + -2.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -2.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -2.60000000000000e+00 3.08157120683116e-02 + -2.00000000000000e-01 -2.40000000000000e+00 3.08146225321682e-02 + -2.00000000000000e-01 -2.20000000000000e+00 3.08125558154034e-02 + -2.00000000000000e-01 -2.00000000000000e+00 3.08127232160592e-02 + -2.00000000000000e-01 -1.80000000000000e+00 3.08147983334527e-02 + -2.00000000000000e-01 -1.60000000000000e+00 3.08157371318106e-02 + -2.00000000000000e-01 -1.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + -2.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + -2.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + -2.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - 0.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 0.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 0.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 0.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 0.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 0.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 0.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 0.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -2.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -2.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -2.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -2.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -2.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -1.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -1.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -1.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - 2.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + 2.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -2.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -2.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -2.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -2.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -2.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -1.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -1.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -1.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + 2.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - 4.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -2.80000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -2.60000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -2.40000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -2.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -2.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -1.80000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -1.60000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -1.40000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - 4.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - 4.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - 4.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + 4.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -2.80000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -2.60000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -2.40000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -2.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -2.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -1.80000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -1.60000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -1.40000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + 4.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + 4.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + 4.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - 6.00000000000001e-01 -3.40000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -3.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -3.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -2.80000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -2.60000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -2.40000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -2.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -2.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -1.80000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -1.60000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -1.40000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -1.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -1.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 -8.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 -6.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 -4.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 -2.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 0.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 4.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 6.00000000000001e-01 3.07993876881154e-02 - 6.00000000000001e-01 8.00000000000000e-01 3.07993876881154e-02 - 6.00000000000001e-01 1.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 1.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 1.40000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 1.60000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 1.80000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.40000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.60000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 2.80000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 3.00000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 3.20000000000000e+00 3.07993876881154e-02 - 6.00000000000001e-01 3.40000000000000e+00 3.07993876881154e-02 + 6.00000000000001e-01 -3.40000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -3.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -3.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -2.80000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -2.60000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -2.40000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -2.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -2.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -1.80000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -1.60000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -1.40000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -1.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -1.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 -8.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 -6.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 -4.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 -2.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 0.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 4.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 6.00000000000001e-01 3.08158497484176e-02 + 6.00000000000001e-01 8.00000000000000e-01 3.08158497484176e-02 + 6.00000000000001e-01 1.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 1.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 1.40000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 1.60000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 1.80000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.40000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.60000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 2.80000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 3.00000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 3.20000000000000e+00 3.08158497484176e-02 + 6.00000000000001e-01 3.40000000000000e+00 3.08158497484176e-02 - 8.00000000000000e-01 -3.40000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -3.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -3.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -2.80000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -2.60000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -2.40000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -2.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -2.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -1.80000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -1.60000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -1.40000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -1.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -1.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 -8.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 -6.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 -4.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 -2.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 0.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 4.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 6.00000000000001e-01 3.07993876881154e-02 - 8.00000000000000e-01 8.00000000000000e-01 3.07993876881154e-02 - 8.00000000000000e-01 1.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 1.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 1.40000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 1.60000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 1.80000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.40000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.60000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 2.80000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 3.00000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 3.20000000000000e+00 3.07993876881154e-02 - 8.00000000000000e-01 3.40000000000000e+00 3.07993876881154e-02 + 8.00000000000000e-01 -3.40000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -3.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -3.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -2.80000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -2.60000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -2.40000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -2.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -2.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -1.80000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -1.60000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -1.40000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -1.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -1.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 -8.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 -6.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 -4.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 -2.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 0.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 4.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 6.00000000000001e-01 3.08158497484176e-02 + 8.00000000000000e-01 8.00000000000000e-01 3.08158497484176e-02 + 8.00000000000000e-01 1.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 1.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 1.40000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 1.60000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 1.80000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.40000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.60000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 2.80000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 3.00000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 3.20000000000000e+00 3.08158497484176e-02 + 8.00000000000000e-01 3.40000000000000e+00 3.08158497484176e-02 - 1.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 1.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 1.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 1.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 1.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 1.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 1.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 1.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 1.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 1.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 1.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 1.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 1.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 1.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 1.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 1.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 1.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 1.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 1.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 1.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 1.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 1.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 1.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 1.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 1.60000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 1.60000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 1.60000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 1.60000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 1.60000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 1.60000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 1.60000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 1.60000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 1.80000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 1.80000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 1.80000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 1.80000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 1.80000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 1.80000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 1.80000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 1.80000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 2.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 2.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 2.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 2.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 2.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 2.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 2.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 2.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 2.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 2.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 2.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 2.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 2.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 2.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 2.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 2.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 2.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 2.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 2.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 2.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 2.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.60000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 2.60000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 2.60000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 2.60000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 2.60000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 2.60000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 2.60000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 2.60000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 2.80000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 2.80000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 2.80000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 2.80000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 2.80000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 2.80000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 2.80000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 2.80000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 3.00000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 3.00000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 3.00000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 3.00000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 3.00000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 3.00000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 3.00000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 3.00000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 3.20000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 3.20000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 3.20000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 3.20000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 3.20000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 3.20000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 3.20000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 3.20000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 - 3.40000000000000e+00 -3.40000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -3.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -3.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -2.80000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -2.60000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -2.40000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -2.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -2.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -1.80000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -1.60000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -1.40000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -1.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -1.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 -8.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 -6.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 -4.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 -2.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 0.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 4.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 6.00000000000001e-01 3.07993876881154e-02 - 3.40000000000000e+00 8.00000000000000e-01 3.07993876881154e-02 - 3.40000000000000e+00 1.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 1.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 1.40000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 1.60000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 1.80000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.40000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.60000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 2.80000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 3.00000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 3.20000000000000e+00 3.07993876881154e-02 - 3.40000000000000e+00 3.40000000000000e+00 3.07993876881154e-02 + 3.40000000000000e+00 -3.40000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -3.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -3.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -2.80000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -2.60000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -2.40000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -2.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -2.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -1.80000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -1.60000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -1.40000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -1.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -1.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 -8.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 -6.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 -4.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 -2.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 0.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 4.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 6.00000000000001e-01 3.08158497484176e-02 + 3.40000000000000e+00 8.00000000000000e-01 3.08158497484176e-02 + 3.40000000000000e+00 1.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 1.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 1.40000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 1.60000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 1.80000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.40000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.60000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 2.80000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 3.00000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 3.20000000000000e+00 3.08158497484176e-02 + 3.40000000000000e+00 3.40000000000000e+00 3.08158497484176e-02 diff --git a/namd/tests/library/000_dihedralPC_metadynamics-2d/namd-version.txt b/namd/tests/library/000_dihedralPC_metadynamics-2d/namd-version.txt index e2b19c981..0c1e6111b 100644 --- a/namd/tests/library/000_dihedralPC_metadynamics-2d/namd-version.txt +++ b/namd/tests/library/000_dihedralPC_metadynamics-2d/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.14b1 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2020-04-09". -colvars: Using NAMD interface, version "2020-04-07". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.out b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.out index 8f7f16dfc..29efeb040 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.out +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.tmp.colvars.state". +colvars: The final output state file will be "test.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -131,15 +135,27 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. -colvars: The restart output state file will be "test.tmp.colvars.state". -colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Histogram colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.state.stripped index 1496b7b42..80db08403 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21549729243177e+00 - v 1.66004320267550e-04 - extended_x 3.20655438768302e+00 - extended_v 1.66004320267550e-04 + x 3.21549729223606e+00 + v 1.66004318946232e-04 + extended_x 3.20655438767549e+00 + extended_v 1.66004318946232e-04 } histogram { diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.traj b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.traj index 806e5b8bd..fd37c0df1 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.traj +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one 0 3.20554673468334e+00 3.20554673468334e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 1 3.20437148316546e+00 3.20554673468334e+00 -1.17525151787978e-03 0.00000000000000e+00 0.00000000000000e+00 - 2 3.20384207676648e+00 3.20554557475659e+00 -5.29406398987575e-04 -1.15992675532533e-06 0.00000000000000e+00 - 3 3.20397336463584e+00 3.20554273354471e+00 1.31287869361341e-04 -2.84121188137078e-06 0.00000000000000e+00 - 4 3.20474099644192e+00 3.20553834342780e+00 7.67631806078306e-04 -4.39011691036157e-06 0.00000000000000e+00 - 5 3.20608362355857e+00 3.20553316636095e+00 1.34262711665745e-03 -5.17706684246563e-06 0.00000000000000e+00 - 6 3.20790705618803e+00 3.20552853257359e+00 1.82343262945217e-03 -4.63378736444209e-06 0.00000000000000e+00 - 7 3.21008981945490e+00 3.20552624629494e+00 2.18276326687761e-03 -2.28627865112881e-06 0.00000000000000e+00 - 8 3.21248983390024e+00 3.20552846408246e+00 2.40001444533844e-03 2.21778752329949e-06 0.00000000000000e+00 - 9 3.21495224228226e+00 3.20553755246660e+00 2.46240838201839e-03 9.08838414241666e-06 0.00000000000000e+00 - 10 3.21731847446546e+00 3.20555593277715e+00 2.36623218319787e-03 1.83803105463654e-05 0.00000000000000e+00 - 11 3.21943632296051e+00 3.20558592225102e+00 2.11784849505436e-03 2.99894738678567e-05 0.00000000000000e+00 - 12 3.22117027447190e+00 3.20562958152247e+00 1.73395151138855e-03 4.36592714477837e-05 0.00000000000000e+00 - 13 3.22241091368139e+00 3.20568857884307e+00 1.24063920948991e-03 5.89973206007553e-05 0.00000000000000e+00 - 14 3.22308214692374e+00 3.20576408044662e+00 6.71233242349967e-04 7.55016035524360e-05 0.00000000000000e+00 - 15 3.22314537206879e+00 3.20585667429668e+00 6.32251450487509e-05 9.25938500645313e-05 0.00000000000000e+00 - 16 3.22260032437968e+00 3.20596633140751e+00 -5.45047689109790e-04 1.09657110826599e-04 0.00000000000000e+00 - 17 3.22148294583595e+00 3.20609240561136e+00 -1.11737854372507e-03 1.26074203851179e-04 0.00000000000000e+00 - 18 3.21986099902724e+00 3.20623366966957e+00 -1.62194680871552e-03 1.41264058204757e-04 0.00000000000000e+00 - 19 3.21782818036332e+00 3.20638838336275e+00 -2.03281866392047e-03 1.54713693185114e-04 0.00000000000000e+00 - 20 3.21549729243177e+00 3.20655438768302e+00 -2.33088793154801e-03 1.66004320267550e-04 0.00000000000000e+00 + 1 3.20437148316484e+00 3.20554673468334e+00 -1.17525151850328e-03 0.00000000000000e+00 0.00000000000000e+00 + 2 3.20384207676395e+00 3.20554557475659e+00 -5.29406400886501e-04 -1.15992675594070e-06 0.00000000000000e+00 + 3 3.20397336463013e+00 3.20554273354470e+00 1.31287866173224e-04 -2.84121188447568e-06 0.00000000000000e+00 + 4 3.20474099643173e+00 3.20553834342779e+00 7.67631801607216e-04 -4.39011691909949e-06 0.00000000000000e+00 + 5 3.20608362354267e+00 3.20553316636092e+00 1.34262711093314e-03 -5.17706686124102e-06 0.00000000000000e+00 + 6 3.20790705616520e+00 3.20552853257352e+00 1.82343262252793e-03 -4.63378739888577e-06 0.00000000000000e+00 + 7 3.21008981942402e+00 3.20552624629482e+00 2.18276325882849e-03 -2.28627870804055e-06 0.00000000000000e+00 + 8 3.21248983386027e+00 3.20552846408225e+00 2.40001443624793e-03 2.21778743603120e-06 0.00000000000000e+00 + 9 3.21495224223226e+00 3.20553755246627e+00 2.46240837198597e-03 9.08838401590574e-06 0.00000000000000e+00 + 10 3.21731847440459e+00 3.20555593277664e+00 2.36623217233012e-03 1.83803103708351e-05 0.00000000000000e+00 + 11 3.21943632288805e+00 3.20558592225027e+00 2.11784848345964e-03 2.99894736327547e-05 0.00000000000000e+00 + 12 3.22117027438722e+00 3.20562958152141e+00 1.73395149917299e-03 4.36592711418987e-05 0.00000000000000e+00 + 13 3.22241091358397e+00 3.20568857884163e+00 1.24063919675121e-03 5.89973202123335e-05 0.00000000000000e+00 + 14 3.22308214681315e+00 3.20576408044470e+00 6.71233229177393e-04 7.55016030692882e-05 0.00000000000000e+00 + 15 3.22314537194466e+00 3.20585667429417e+00 6.32251315102472e-05 9.25938494741335e-05 0.00000000000000e+00 + 16 3.22260032424170e+00 3.20596633140428e+00 -5.45047702959156e-04 1.09657110116172e-04 0.00000000000000e+00 + 17 3.22148294568386e+00 3.20609240560729e+00 -1.11737855784311e-03 1.26074203007756e-04 0.00000000000000e+00 + 18 3.21986099886079e+00 3.20623366966451e+00 -1.62194682306716e-03 1.41264057215237e-04 0.00000000000000e+00 + 19 3.21782818018232e+00 3.20638838335654e+00 -2.03281867847016e-03 1.54713692036308e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 -2.33088794625580e-03 1.66004318946232e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.histogram1.dat b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.histogram1.dat index 09d19a2d1..69e912676 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.histogram1.dat +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.histogram1.dat @@ -1,23 +1,23 @@ # 1 -# 0 0.5 20 0 +# 0.00000000000000e+00 5.00000000000000e-01 20 0 - 0.25 0 - 0.75 0 - 1.25 0 - 1.75 0 - 2.25 0 - 2.75 0 - 3.25 20 - 3.75 0 - 4.25 0 - 4.75 0 - 5.25 0 - 5.75 0 - 6.25 0 - 6.75 0 - 7.25 0 - 7.75 0 - 8.25 0 - 8.75 0 - 9.25 0 - 9.75 0 + 2.50000000000000e-01 0.00000000000000e+00 + 7.50000000000000e-01 0.00000000000000e+00 + 1.25000000000000e+00 0.00000000000000e+00 + 1.75000000000000e+00 0.00000000000000e+00 + 2.25000000000000e+00 0.00000000000000e+00 + 2.75000000000000e+00 0.00000000000000e+00 + 3.25000000000000e+00 2.00000000000000e+01 + 3.75000000000000e+00 0.00000000000000e+00 + 4.25000000000000e+00 0.00000000000000e+00 + 4.75000000000000e+00 0.00000000000000e+00 + 5.25000000000000e+00 0.00000000000000e+00 + 5.75000000000000e+00 0.00000000000000e+00 + 6.25000000000000e+00 0.00000000000000e+00 + 6.75000000000000e+00 0.00000000000000e+00 + 7.25000000000000e+00 0.00000000000000e+00 + 7.75000000000000e+00 0.00000000000000e+00 + 8.25000000000000e+00 0.00000000000000e+00 + 8.75000000000000e+00 0.00000000000000e+00 + 9.25000000000000e+00 0.00000000000000e+00 + 9.75000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.out b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.out index e576ed733..cdf554a37 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.out +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.restart.tmp.colvars.state". +colvars: The final output state file will be "test.restart.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -131,20 +135,32 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Histogram colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: ---------------------------------------------------------------------- -colvars: Restarting from file "test.colvars.state". +colvars: Loading state from file "test.colvars.state". colvars: Restarting collective variable "one" from value: 3.2155 -colvars: Restarting histogram bias "histogram1" from step number 20. +colvars: Restarting histogram bias "histogram1" from step number 0. colvars: ---------------------------------------------------------------------- -colvars: The restart output state file will be "test.restart.tmp.colvars.state". -colvars: The final output state file will be "test.restart.colvars.state". -colvars: Opening trajectory file "test.restart.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.restart.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.state.stripped index 3110bf4ce..beb2691ef 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21132143720911e+00 - v 1.04669174158030e-04 - extended_x 3.20946748687297e+00 - extended_v 1.04669174158030e-04 + x 3.21132143681526e+00 + v 1.04669167318816e-04 + extended_x 3.20946748678570e+00 + extended_v 1.04669167318816e-04 } histogram { diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.traj b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.traj index 1791c31a3..2713c291f 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.traj +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one - 20 3.21549729243177e+00 3.20655438768302e+00 0.00000000000000e+00 1.66004320267550e-04 0.00000000000000e+00 - 21 3.21299279860961e+00 3.20672921829649e+00 -2.50449382215923e-03 1.74830613474229e-04 0.00000000000000e+00 - 22 3.21044297404629e+00 3.20691023081595e+00 -2.54982456331954e-03 1.81012519456721e-04 0.00000000000000e+00 - 23 3.20797196956081e+00 3.20709473001322e+00 -2.47100448548521e-03 1.84499197270131e-04 0.00000000000000e+00 - 24 3.20569233667745e+00 3.20728009501122e+00 -2.27963288336186e-03 1.85364998000097e-04 0.00000000000000e+00 - 25 3.20369874909954e+00 3.20746389295456e+00 -1.99358757790735e-03 1.83797943336207e-04 0.00000000000000e+00 - 26 3.20206356012972e+00 3.20764397484986e+00 -1.63518896981651e-03 1.80081895299983e-04 0.00000000000000e+00 - 27 3.20083453399825e+00 3.20781854909659e+00 -1.22902613147335e-03 1.74574246731807e-04 0.00000000000000e+00 - 28 3.20003466940781e+00 3.20798623039671e+00 -7.99864590434129e-04 1.67681300116621e-04 0.00000000000000e+00 - 29 3.19966366617398e+00 3.20814606382069e+00 -3.71003233836653e-04 1.59833423983471e-04 0.00000000000000e+00 - 30 3.19970060593396e+00 3.20829752545376e+00 3.69397599828680e-05 1.51461633068893e-04 0.00000000000000e+00 - 31 3.20010746077786e+00 3.20844050226735e+00 4.06854843902238e-04 1.42976813596051e-04 0.00000000000000e+00 - 32 3.20083326294086e+00 3.20857525469865e+00 7.25802162999667e-04 1.34752431300136e-04 0.00000000000000e+00 - 33 3.20181875720671e+00 3.20870236609036e+00 9.85494265844711e-04 1.27111391707545e-04 0.00000000000000e+00 - 34 3.20300129361245e+00 3.20882268363242e+00 1.18253640574428e-03 1.20317542054195e-04 0.00000000000000e+00 - 35 3.20431952758785e+00 3.20893725569281e+00 1.31823397539854e-03 1.14572060398045e-04 0.00000000000000e+00 - 36 3.20571748562482e+00 3.20904727023825e+00 1.39795803697362e-03 1.10014545435265e-04 0.00000000000000e+00 - 37 3.20714765705722e+00 3.20915399841800e+00 1.43017143239943e-03 1.06728179747730e-04 0.00000000000000e+00 - 38 3.20857308613613e+00 3.20925874641819e+00 1.42542907890419e-03 1.04748000195290e-04 0.00000000000000e+00 - 39 3.20996861050691e+00 3.20936281769881e+00 1.39552437078372e-03 1.04071280621537e-04 0.00000000000000e+00 - 40 3.21132143720911e+00 3.20946748687297e+00 1.35282670220427e-03 1.04669174158030e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 0.00000000000000e+00 1.66004318946232e-04 0.00000000000000e+00 + 21 3.21299279839909e+00 3.20672921828746e+00 -2.50449383696960e-03 1.74830611967189e-04 0.00000000000000e+00 + 22 3.21044297382093e+00 3.20691023080521e+00 -2.54982457816277e-03 1.81012517750828e-04 0.00000000000000e+00 + 23 3.20797196932066e+00 3.20709473000056e+00 -2.47100450027160e-03 1.84499195352419e-04 0.00000000000000e+00 + 24 3.20569233642268e+00 3.20728009499642e+00 -2.27963289798438e-03 1.85364995857865e-04 0.00000000000000e+00 + 25 3.20369874883042e+00 3.20746389293738e+00 -1.99358759225499e-03 1.83797940957138e-04 0.00000000000000e+00 + 26 3.20206355984665e+00 3.20764397483005e+00 -1.63518898377291e-03 1.80081892672264e-04 0.00000000000000e+00 + 27 3.20083453370172e+00 3.20781854907389e+00 -1.22902614493015e-03 1.74574243844257e-04 0.00000000000000e+00 + 28 3.20003466909842e+00 3.20798623037085e+00 -7.99864603297173e-04 1.67681296958808e-04 0.00000000000000e+00 + 29 3.19966366585238e+00 3.20814606379140e+00 -3.71003246035784e-04 1.59833420545817e-04 0.00000000000000e+00 + 30 3.19970060560089e+00 3.20829752542074e+00 3.69397485058265e-05 1.51461629342751e-04 0.00000000000000e+00 + 31 3.20010746043407e+00 3.20844050223031e+00 4.06854833183257e-04 1.42976809573772e-04 0.00000000000000e+00 + 32 3.20083326258715e+00 3.20857525465729e+00 7.25802153073385e-04 1.34752426975110e-04 0.00000000000000e+00 + 33 3.20181875684390e+00 3.20870236604436e+00 9.85494256751096e-04 1.27111387074243e-04 0.00000000000000e+00 + 34 3.20300129324144e+00 3.20882268358147e+00 1.18253639754595e-03 1.20317537108215e-04 0.00000000000000e+00 + 35 3.20431952720963e+00 3.20893725563661e+00 1.31823396818787e-03 1.14572055136176e-04 0.00000000000000e+00 + 36 3.20571748524051e+00 3.20904727017646e+00 1.39795803087983e-03 1.10014539855585e-04 0.00000000000000e+00 + 37 3.20714765666810e+00 3.20915399835031e+00 1.43017142759172e-03 1.06728173849729e-04 0.00000000000000e+00 + 38 3.20857308574368e+00 3.20925874634429e+00 1.42542907557441e-03 1.04747993980047e-04 0.00000000000000e+00 + 39 3.20996861011282e+00 3.20936281761839e+00 1.39552436913792e-03 1.04071274091898e-04 0.00000000000000e+00 + 40 3.21132143681526e+00 3.20946748678570e+00 1.35282670244763e-03 1.04669167318816e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.histogram1.dat b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.histogram1.dat index 544c0ba33..fe4ddc2fd 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.histogram1.dat +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/AutoDiff/test.restart.histogram1.dat @@ -1,23 +1,23 @@ # 1 -# 0 0.5 20 0 +# 0.00000000000000e+00 5.00000000000000e-01 20 0 - 0.25 0 - 0.75 0 - 1.25 0 - 1.75 0 - 2.25 0 - 2.75 0 - 3.25 40 - 3.75 0 - 4.25 0 - 4.75 0 - 5.25 0 - 5.75 0 - 6.25 0 - 6.75 0 - 7.25 0 - 7.75 0 - 8.25 0 - 8.75 0 - 9.25 0 - 9.75 0 + 2.50000000000000e-01 0.00000000000000e+00 + 7.50000000000000e-01 0.00000000000000e+00 + 1.25000000000000e+00 0.00000000000000e+00 + 1.75000000000000e+00 0.00000000000000e+00 + 2.25000000000000e+00 0.00000000000000e+00 + 2.75000000000000e+00 0.00000000000000e+00 + 3.25000000000000e+00 4.00000000000000e+01 + 3.75000000000000e+00 0.00000000000000e+00 + 4.25000000000000e+00 0.00000000000000e+00 + 4.75000000000000e+00 0.00000000000000e+00 + 5.25000000000000e+00 0.00000000000000e+00 + 5.75000000000000e+00 0.00000000000000e+00 + 6.25000000000000e+00 0.00000000000000e+00 + 6.75000000000000e+00 0.00000000000000e+00 + 7.25000000000000e+00 0.00000000000000e+00 + 7.75000000000000e+00 0.00000000000000e+00 + 8.25000000000000e+00 0.00000000000000e+00 + 8.75000000000000e+00 0.00000000000000e+00 + 9.25000000000000e+00 0.00000000000000e+00 + 9.75000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/namd-version.txt b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/namd-version.txt index e2b19c981..0c1e6111b 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/namd-version.txt +++ b/namd/tests/library/000_distance-extended-grid_histogram-bypassExtended/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.14b1 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2020-04-09". -colvars: Using NAMD interface, version "2020-04-07". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.out b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.out index 8cc6fdd1e..3a60d5ed3 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.out +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.tmp.colvars.state". +colvars: The final output state file will be "test.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -130,15 +134,27 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. -colvars: The restart output state file will be "test.tmp.colvars.state". -colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Histogram colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.state.stripped index 1496b7b42..80db08403 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21549729243177e+00 - v 1.66004320267550e-04 - extended_x 3.20655438768302e+00 - extended_v 1.66004320267550e-04 + x 3.21549729223606e+00 + v 1.66004318946232e-04 + extended_x 3.20655438767549e+00 + extended_v 1.66004318946232e-04 } histogram { diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.traj b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.traj index 806e5b8bd..fd37c0df1 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.traj +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one 0 3.20554673468334e+00 3.20554673468334e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 1 3.20437148316546e+00 3.20554673468334e+00 -1.17525151787978e-03 0.00000000000000e+00 0.00000000000000e+00 - 2 3.20384207676648e+00 3.20554557475659e+00 -5.29406398987575e-04 -1.15992675532533e-06 0.00000000000000e+00 - 3 3.20397336463584e+00 3.20554273354471e+00 1.31287869361341e-04 -2.84121188137078e-06 0.00000000000000e+00 - 4 3.20474099644192e+00 3.20553834342780e+00 7.67631806078306e-04 -4.39011691036157e-06 0.00000000000000e+00 - 5 3.20608362355857e+00 3.20553316636095e+00 1.34262711665745e-03 -5.17706684246563e-06 0.00000000000000e+00 - 6 3.20790705618803e+00 3.20552853257359e+00 1.82343262945217e-03 -4.63378736444209e-06 0.00000000000000e+00 - 7 3.21008981945490e+00 3.20552624629494e+00 2.18276326687761e-03 -2.28627865112881e-06 0.00000000000000e+00 - 8 3.21248983390024e+00 3.20552846408246e+00 2.40001444533844e-03 2.21778752329949e-06 0.00000000000000e+00 - 9 3.21495224228226e+00 3.20553755246660e+00 2.46240838201839e-03 9.08838414241666e-06 0.00000000000000e+00 - 10 3.21731847446546e+00 3.20555593277715e+00 2.36623218319787e-03 1.83803105463654e-05 0.00000000000000e+00 - 11 3.21943632296051e+00 3.20558592225102e+00 2.11784849505436e-03 2.99894738678567e-05 0.00000000000000e+00 - 12 3.22117027447190e+00 3.20562958152247e+00 1.73395151138855e-03 4.36592714477837e-05 0.00000000000000e+00 - 13 3.22241091368139e+00 3.20568857884307e+00 1.24063920948991e-03 5.89973206007553e-05 0.00000000000000e+00 - 14 3.22308214692374e+00 3.20576408044662e+00 6.71233242349967e-04 7.55016035524360e-05 0.00000000000000e+00 - 15 3.22314537206879e+00 3.20585667429668e+00 6.32251450487509e-05 9.25938500645313e-05 0.00000000000000e+00 - 16 3.22260032437968e+00 3.20596633140751e+00 -5.45047689109790e-04 1.09657110826599e-04 0.00000000000000e+00 - 17 3.22148294583595e+00 3.20609240561136e+00 -1.11737854372507e-03 1.26074203851179e-04 0.00000000000000e+00 - 18 3.21986099902724e+00 3.20623366966957e+00 -1.62194680871552e-03 1.41264058204757e-04 0.00000000000000e+00 - 19 3.21782818036332e+00 3.20638838336275e+00 -2.03281866392047e-03 1.54713693185114e-04 0.00000000000000e+00 - 20 3.21549729243177e+00 3.20655438768302e+00 -2.33088793154801e-03 1.66004320267550e-04 0.00000000000000e+00 + 1 3.20437148316484e+00 3.20554673468334e+00 -1.17525151850328e-03 0.00000000000000e+00 0.00000000000000e+00 + 2 3.20384207676395e+00 3.20554557475659e+00 -5.29406400886501e-04 -1.15992675594070e-06 0.00000000000000e+00 + 3 3.20397336463013e+00 3.20554273354470e+00 1.31287866173224e-04 -2.84121188447568e-06 0.00000000000000e+00 + 4 3.20474099643173e+00 3.20553834342779e+00 7.67631801607216e-04 -4.39011691909949e-06 0.00000000000000e+00 + 5 3.20608362354267e+00 3.20553316636092e+00 1.34262711093314e-03 -5.17706686124102e-06 0.00000000000000e+00 + 6 3.20790705616520e+00 3.20552853257352e+00 1.82343262252793e-03 -4.63378739888577e-06 0.00000000000000e+00 + 7 3.21008981942402e+00 3.20552624629482e+00 2.18276325882849e-03 -2.28627870804055e-06 0.00000000000000e+00 + 8 3.21248983386027e+00 3.20552846408225e+00 2.40001443624793e-03 2.21778743603120e-06 0.00000000000000e+00 + 9 3.21495224223226e+00 3.20553755246627e+00 2.46240837198597e-03 9.08838401590574e-06 0.00000000000000e+00 + 10 3.21731847440459e+00 3.20555593277664e+00 2.36623217233012e-03 1.83803103708351e-05 0.00000000000000e+00 + 11 3.21943632288805e+00 3.20558592225027e+00 2.11784848345964e-03 2.99894736327547e-05 0.00000000000000e+00 + 12 3.22117027438722e+00 3.20562958152141e+00 1.73395149917299e-03 4.36592711418987e-05 0.00000000000000e+00 + 13 3.22241091358397e+00 3.20568857884163e+00 1.24063919675121e-03 5.89973202123335e-05 0.00000000000000e+00 + 14 3.22308214681315e+00 3.20576408044470e+00 6.71233229177393e-04 7.55016030692882e-05 0.00000000000000e+00 + 15 3.22314537194466e+00 3.20585667429417e+00 6.32251315102472e-05 9.25938494741335e-05 0.00000000000000e+00 + 16 3.22260032424170e+00 3.20596633140428e+00 -5.45047702959156e-04 1.09657110116172e-04 0.00000000000000e+00 + 17 3.22148294568386e+00 3.20609240560729e+00 -1.11737855784311e-03 1.26074203007756e-04 0.00000000000000e+00 + 18 3.21986099886079e+00 3.20623366966451e+00 -1.62194682306716e-03 1.41264057215237e-04 0.00000000000000e+00 + 19 3.21782818018232e+00 3.20638838335654e+00 -2.03281867847016e-03 1.54713692036308e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 -2.33088794625580e-03 1.66004318946232e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.histogram1.dat b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.histogram1.dat index 09d19a2d1..69e912676 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.histogram1.dat +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.histogram1.dat @@ -1,23 +1,23 @@ # 1 -# 0 0.5 20 0 +# 0.00000000000000e+00 5.00000000000000e-01 20 0 - 0.25 0 - 0.75 0 - 1.25 0 - 1.75 0 - 2.25 0 - 2.75 0 - 3.25 20 - 3.75 0 - 4.25 0 - 4.75 0 - 5.25 0 - 5.75 0 - 6.25 0 - 6.75 0 - 7.25 0 - 7.75 0 - 8.25 0 - 8.75 0 - 9.25 0 - 9.75 0 + 2.50000000000000e-01 0.00000000000000e+00 + 7.50000000000000e-01 0.00000000000000e+00 + 1.25000000000000e+00 0.00000000000000e+00 + 1.75000000000000e+00 0.00000000000000e+00 + 2.25000000000000e+00 0.00000000000000e+00 + 2.75000000000000e+00 0.00000000000000e+00 + 3.25000000000000e+00 2.00000000000000e+01 + 3.75000000000000e+00 0.00000000000000e+00 + 4.25000000000000e+00 0.00000000000000e+00 + 4.75000000000000e+00 0.00000000000000e+00 + 5.25000000000000e+00 0.00000000000000e+00 + 5.75000000000000e+00 0.00000000000000e+00 + 6.25000000000000e+00 0.00000000000000e+00 + 6.75000000000000e+00 0.00000000000000e+00 + 7.25000000000000e+00 0.00000000000000e+00 + 7.75000000000000e+00 0.00000000000000e+00 + 8.25000000000000e+00 0.00000000000000e+00 + 8.75000000000000e+00 0.00000000000000e+00 + 9.25000000000000e+00 0.00000000000000e+00 + 9.75000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.out b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.out index f67286f65..89726d6e4 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.out +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.restart.tmp.colvars.state". +colvars: The final output state file will be "test.restart.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -130,20 +134,32 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Histogram colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: ---------------------------------------------------------------------- -colvars: Restarting from file "test.colvars.state". +colvars: Loading state from file "test.colvars.state". colvars: Restarting collective variable "one" from value: 3.2155 -colvars: Restarting histogram bias "histogram1" from step number 20. +colvars: Restarting histogram bias "histogram1" from step number 0. colvars: ---------------------------------------------------------------------- -colvars: The restart output state file will be "test.restart.tmp.colvars.state". -colvars: The final output state file will be "test.restart.colvars.state". -colvars: Opening trajectory file "test.restart.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.restart.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.state.stripped index 3110bf4ce..beb2691ef 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21132143720911e+00 - v 1.04669174158030e-04 - extended_x 3.20946748687297e+00 - extended_v 1.04669174158030e-04 + x 3.21132143681526e+00 + v 1.04669167318816e-04 + extended_x 3.20946748678570e+00 + extended_v 1.04669167318816e-04 } histogram { diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.traj b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.traj index 1791c31a3..2713c291f 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.traj +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one - 20 3.21549729243177e+00 3.20655438768302e+00 0.00000000000000e+00 1.66004320267550e-04 0.00000000000000e+00 - 21 3.21299279860961e+00 3.20672921829649e+00 -2.50449382215923e-03 1.74830613474229e-04 0.00000000000000e+00 - 22 3.21044297404629e+00 3.20691023081595e+00 -2.54982456331954e-03 1.81012519456721e-04 0.00000000000000e+00 - 23 3.20797196956081e+00 3.20709473001322e+00 -2.47100448548521e-03 1.84499197270131e-04 0.00000000000000e+00 - 24 3.20569233667745e+00 3.20728009501122e+00 -2.27963288336186e-03 1.85364998000097e-04 0.00000000000000e+00 - 25 3.20369874909954e+00 3.20746389295456e+00 -1.99358757790735e-03 1.83797943336207e-04 0.00000000000000e+00 - 26 3.20206356012972e+00 3.20764397484986e+00 -1.63518896981651e-03 1.80081895299983e-04 0.00000000000000e+00 - 27 3.20083453399825e+00 3.20781854909659e+00 -1.22902613147335e-03 1.74574246731807e-04 0.00000000000000e+00 - 28 3.20003466940781e+00 3.20798623039671e+00 -7.99864590434129e-04 1.67681300116621e-04 0.00000000000000e+00 - 29 3.19966366617398e+00 3.20814606382069e+00 -3.71003233836653e-04 1.59833423983471e-04 0.00000000000000e+00 - 30 3.19970060593396e+00 3.20829752545376e+00 3.69397599828680e-05 1.51461633068893e-04 0.00000000000000e+00 - 31 3.20010746077786e+00 3.20844050226735e+00 4.06854843902238e-04 1.42976813596051e-04 0.00000000000000e+00 - 32 3.20083326294086e+00 3.20857525469865e+00 7.25802162999667e-04 1.34752431300136e-04 0.00000000000000e+00 - 33 3.20181875720671e+00 3.20870236609036e+00 9.85494265844711e-04 1.27111391707545e-04 0.00000000000000e+00 - 34 3.20300129361245e+00 3.20882268363242e+00 1.18253640574428e-03 1.20317542054195e-04 0.00000000000000e+00 - 35 3.20431952758785e+00 3.20893725569281e+00 1.31823397539854e-03 1.14572060398045e-04 0.00000000000000e+00 - 36 3.20571748562482e+00 3.20904727023825e+00 1.39795803697362e-03 1.10014545435265e-04 0.00000000000000e+00 - 37 3.20714765705722e+00 3.20915399841800e+00 1.43017143239943e-03 1.06728179747730e-04 0.00000000000000e+00 - 38 3.20857308613613e+00 3.20925874641819e+00 1.42542907890419e-03 1.04748000195290e-04 0.00000000000000e+00 - 39 3.20996861050691e+00 3.20936281769881e+00 1.39552437078372e-03 1.04071280621537e-04 0.00000000000000e+00 - 40 3.21132143720911e+00 3.20946748687297e+00 1.35282670220427e-03 1.04669174158030e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 0.00000000000000e+00 1.66004318946232e-04 0.00000000000000e+00 + 21 3.21299279839909e+00 3.20672921828746e+00 -2.50449383696960e-03 1.74830611967189e-04 0.00000000000000e+00 + 22 3.21044297382093e+00 3.20691023080521e+00 -2.54982457816277e-03 1.81012517750828e-04 0.00000000000000e+00 + 23 3.20797196932066e+00 3.20709473000056e+00 -2.47100450027160e-03 1.84499195352419e-04 0.00000000000000e+00 + 24 3.20569233642268e+00 3.20728009499642e+00 -2.27963289798438e-03 1.85364995857865e-04 0.00000000000000e+00 + 25 3.20369874883042e+00 3.20746389293738e+00 -1.99358759225499e-03 1.83797940957138e-04 0.00000000000000e+00 + 26 3.20206355984665e+00 3.20764397483005e+00 -1.63518898377291e-03 1.80081892672264e-04 0.00000000000000e+00 + 27 3.20083453370172e+00 3.20781854907389e+00 -1.22902614493015e-03 1.74574243844257e-04 0.00000000000000e+00 + 28 3.20003466909842e+00 3.20798623037085e+00 -7.99864603297173e-04 1.67681296958808e-04 0.00000000000000e+00 + 29 3.19966366585238e+00 3.20814606379140e+00 -3.71003246035784e-04 1.59833420545817e-04 0.00000000000000e+00 + 30 3.19970060560089e+00 3.20829752542074e+00 3.69397485058265e-05 1.51461629342751e-04 0.00000000000000e+00 + 31 3.20010746043407e+00 3.20844050223031e+00 4.06854833183257e-04 1.42976809573772e-04 0.00000000000000e+00 + 32 3.20083326258715e+00 3.20857525465729e+00 7.25802153073385e-04 1.34752426975110e-04 0.00000000000000e+00 + 33 3.20181875684390e+00 3.20870236604436e+00 9.85494256751096e-04 1.27111387074243e-04 0.00000000000000e+00 + 34 3.20300129324144e+00 3.20882268358147e+00 1.18253639754595e-03 1.20317537108215e-04 0.00000000000000e+00 + 35 3.20431952720963e+00 3.20893725563661e+00 1.31823396818787e-03 1.14572055136176e-04 0.00000000000000e+00 + 36 3.20571748524051e+00 3.20904727017646e+00 1.39795803087983e-03 1.10014539855585e-04 0.00000000000000e+00 + 37 3.20714765666810e+00 3.20915399835031e+00 1.43017142759172e-03 1.06728173849729e-04 0.00000000000000e+00 + 38 3.20857308574368e+00 3.20925874634429e+00 1.42542907557441e-03 1.04747993980047e-04 0.00000000000000e+00 + 39 3.20996861011282e+00 3.20936281761839e+00 1.39552436913792e-03 1.04071274091898e-04 0.00000000000000e+00 + 40 3.21132143681526e+00 3.20946748678570e+00 1.35282670244763e-03 1.04669167318816e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.histogram1.dat b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.histogram1.dat index 544c0ba33..fe4ddc2fd 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.histogram1.dat +++ b/namd/tests/library/000_distance-extended-grid_histogram/AutoDiff/test.restart.histogram1.dat @@ -1,23 +1,23 @@ # 1 -# 0 0.5 20 0 +# 0.00000000000000e+00 5.00000000000000e-01 20 0 - 0.25 0 - 0.75 0 - 1.25 0 - 1.75 0 - 2.25 0 - 2.75 0 - 3.25 40 - 3.75 0 - 4.25 0 - 4.75 0 - 5.25 0 - 5.75 0 - 6.25 0 - 6.75 0 - 7.25 0 - 7.75 0 - 8.25 0 - 8.75 0 - 9.25 0 - 9.75 0 + 2.50000000000000e-01 0.00000000000000e+00 + 7.50000000000000e-01 0.00000000000000e+00 + 1.25000000000000e+00 0.00000000000000e+00 + 1.75000000000000e+00 0.00000000000000e+00 + 2.25000000000000e+00 0.00000000000000e+00 + 2.75000000000000e+00 0.00000000000000e+00 + 3.25000000000000e+00 4.00000000000000e+01 + 3.75000000000000e+00 0.00000000000000e+00 + 4.25000000000000e+00 0.00000000000000e+00 + 4.75000000000000e+00 0.00000000000000e+00 + 5.25000000000000e+00 0.00000000000000e+00 + 5.75000000000000e+00 0.00000000000000e+00 + 6.25000000000000e+00 0.00000000000000e+00 + 6.75000000000000e+00 0.00000000000000e+00 + 7.25000000000000e+00 0.00000000000000e+00 + 7.75000000000000e+00 0.00000000000000e+00 + 8.25000000000000e+00 0.00000000000000e+00 + 8.75000000000000e+00 0.00000000000000e+00 + 9.25000000000000e+00 0.00000000000000e+00 + 9.75000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended-grid_histogram/namd-version.txt b/namd/tests/library/000_distance-extended-grid_histogram/namd-version.txt index e2b19c981..0c1e6111b 100644 --- a/namd/tests/library/000_distance-extended-grid_histogram/namd-version.txt +++ b/namd/tests/library/000_distance-extended-grid_histogram/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.14b1 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2020-04-09". -colvars: Using NAMD interface, version "2020-04-07". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.out b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.out index 01c072afe..7fd16b5d8 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.out +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.tmp.colvars.state". +colvars: The final output state file will be "test.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -87,7 +91,7 @@ colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.5 colvars: # lowerBoundary = 0 [default] -colvars: # upperBoundary = 0 [default] +colvars: # upperBoundary = 0.5 [default] colvars: # hardLowerBoundary = on [default] colvars: # hardUpperBoundary = off [default] colvars: # expandBoundaries = off [default] @@ -118,15 +122,26 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. -colvars: The restart output state file will be "test.tmp.colvars.state". -colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.state.stripped index f51aa3936..27b752242 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.state.stripped @@ -6,8 +6,8 @@ configuration { colvar { name one x 3.21549729223606e+00 - v 1.66004318946233e-04 + v 1.66004318946232e-04 extended_x 3.20655438767549e+00 - extended_v 1.66004318946233e-04 + extended_v 1.66004318946232e-04 } diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.traj b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.traj index 2dae7b9d3..732bd415c 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.traj +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.colvars.traj @@ -2,21 +2,21 @@ 0 3.20554673468334e+00 3.20554673468334e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 1 3.20437148316484e+00 3.20554673468334e+00 -1.17525151850328e-03 0.00000000000000e+00 0.00000000000000e+00 2 3.20384207676395e+00 3.20554557475659e+00 -5.29406400886501e-04 -1.15992675594070e-06 0.00000000000000e+00 - 3 3.20397336463013e+00 3.20554273354470e+00 1.31287866173224e-04 -2.84121188447525e-06 0.00000000000000e+00 - 4 3.20474099643173e+00 3.20553834342778e+00 7.67631801607216e-04 -4.39011691909861e-06 0.00000000000000e+00 - 5 3.20608362354267e+00 3.20553316636092e+00 1.34262711093314e-03 -5.17706686123971e-06 0.00000000000000e+00 - 6 3.20790705616520e+00 3.20552853257352e+00 1.82343262252793e-03 -4.63378739888402e-06 0.00000000000000e+00 - 7 3.21008981942402e+00 3.20552624629482e+00 2.18276325882849e-03 -2.28627870803880e-06 0.00000000000000e+00 - 8 3.21248983386027e+00 3.20552846408225e+00 2.40001443624793e-03 2.21778743603339e-06 0.00000000000000e+00 - 9 3.21495224223226e+00 3.20553755246627e+00 2.46240837198597e-03 9.08838401590881e-06 0.00000000000000e+00 - 10 3.21731847440459e+00 3.20555593277664e+00 2.36623217233012e-03 1.83803103708391e-05 0.00000000000000e+00 - 11 3.21943632288805e+00 3.20558592225027e+00 2.11784848345964e-03 2.99894736327591e-05 0.00000000000000e+00 - 12 3.22117027438722e+00 3.20562958152141e+00 1.73395149917299e-03 4.36592711419031e-05 0.00000000000000e+00 - 13 3.22241091358397e+00 3.20568857884163e+00 1.24063919675121e-03 5.89973202123374e-05 0.00000000000000e+00 - 14 3.22308214681315e+00 3.20576408044470e+00 6.71233229177837e-04 7.55016030692917e-05 0.00000000000000e+00 - 15 3.22314537194466e+00 3.20585667429417e+00 6.32251315098031e-05 9.25938494741371e-05 0.00000000000000e+00 - 16 3.22260032424170e+00 3.20596633140429e+00 -5.45047702959156e-04 1.09657110116175e-04 0.00000000000000e+00 - 17 3.22148294568386e+00 3.20609240560729e+00 -1.11737855784311e-03 1.26074203007759e-04 0.00000000000000e+00 - 18 3.21986099886079e+00 3.20623366966451e+00 -1.62194682306760e-03 1.41264057215238e-04 0.00000000000000e+00 - 19 3.21782818018232e+00 3.20638838335655e+00 -2.03281867846972e-03 1.54713692036309e-04 0.00000000000000e+00 - 20 3.21549729223606e+00 3.20655438767549e+00 -2.33088794625580e-03 1.66004318946233e-04 0.00000000000000e+00 + 3 3.20397336463013e+00 3.20554273354470e+00 1.31287866173224e-04 -2.84121188447568e-06 0.00000000000000e+00 + 4 3.20474099643173e+00 3.20553834342779e+00 7.67631801607216e-04 -4.39011691909949e-06 0.00000000000000e+00 + 5 3.20608362354267e+00 3.20553316636092e+00 1.34262711093314e-03 -5.17706686124102e-06 0.00000000000000e+00 + 6 3.20790705616520e+00 3.20552853257352e+00 1.82343262252793e-03 -4.63378739888577e-06 0.00000000000000e+00 + 7 3.21008981942402e+00 3.20552624629482e+00 2.18276325882849e-03 -2.28627870804055e-06 0.00000000000000e+00 + 8 3.21248983386027e+00 3.20552846408225e+00 2.40001443624793e-03 2.21778743603120e-06 0.00000000000000e+00 + 9 3.21495224223226e+00 3.20553755246627e+00 2.46240837198597e-03 9.08838401590574e-06 0.00000000000000e+00 + 10 3.21731847440459e+00 3.20555593277664e+00 2.36623217233012e-03 1.83803103708351e-05 0.00000000000000e+00 + 11 3.21943632288805e+00 3.20558592225027e+00 2.11784848345964e-03 2.99894736327547e-05 0.00000000000000e+00 + 12 3.22117027438722e+00 3.20562958152141e+00 1.73395149917299e-03 4.36592711418987e-05 0.00000000000000e+00 + 13 3.22241091358397e+00 3.20568857884163e+00 1.24063919675121e-03 5.89973202123335e-05 0.00000000000000e+00 + 14 3.22308214681315e+00 3.20576408044470e+00 6.71233229177393e-04 7.55016030692882e-05 0.00000000000000e+00 + 15 3.22314537194466e+00 3.20585667429417e+00 6.32251315102472e-05 9.25938494741335e-05 0.00000000000000e+00 + 16 3.22260032424170e+00 3.20596633140428e+00 -5.45047702959156e-04 1.09657110116172e-04 0.00000000000000e+00 + 17 3.22148294568386e+00 3.20609240560729e+00 -1.11737855784311e-03 1.26074203007756e-04 0.00000000000000e+00 + 18 3.21986099886079e+00 3.20623366966451e+00 -1.62194682306716e-03 1.41264057215237e-04 0.00000000000000e+00 + 19 3.21782818018232e+00 3.20638838335654e+00 -2.03281867847016e-03 1.54713692036308e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 -2.33088794625580e-03 1.66004318946232e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.out b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.out index 008768aaf..26ea35d7c 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.out +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.out @@ -1,9 +1,12 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The restart output state file will be "test.restart.tmp.colvars.state". +colvars: The final output state file will be "test.restart.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -42,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -55,28 +59,28 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "group1". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group1" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group1". colvars: # printAtomIDs = off [default] colvars: Atom group "group1" defined with 4 atoms requested: total mass = 54.028, total charge = -0.72. colvars: Initializing atom group "group2". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "group2" colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: Enabling scalable calculation for group "group2". colvars: # printAtomIDs = off [default] @@ -87,7 +91,7 @@ colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.5 colvars: # lowerBoundary = 0 [default] -colvars: # upperBoundary = 0 [default] +colvars: # upperBoundary = 0.5 [default] colvars: # hardLowerBoundary = on [default] colvars: # hardUpperBoundary = off [default] colvars: # expandBoundaries = off [default] @@ -118,19 +122,30 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). -colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. -colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: ---------------------------------------------------------------------- -colvars: Restarting from file "test.colvars.state". +colvars: Loading state from file "test.colvars.state". colvars: Restarting collective variable "one" from value: 3.2155 colvars: ---------------------------------------------------------------------- -colvars: The restart output state file will be "test.restart.tmp.colvars.state". -colvars: The final output state file will be "test.restart.colvars.state". -colvars: Opening trajectory file "test.restart.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.restart.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped index d0ac119c8..658a18125 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.state.stripped @@ -6,8 +6,8 @@ configuration { colvar { name one x 3.21132143681526e+00 - v 1.04669167318825e-04 + v 1.04669167318816e-04 extended_x 3.20946748678570e+00 - extended_v 1.04669167318825e-04 + extended_v 1.04669167318816e-04 } diff --git a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj index c86f1abc7..220a5517c 100644 --- a/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj +++ b/namd/tests/library/000_distance-extended/AutoDiff/test.restart.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one - 20 3.21549729223606e+00 3.20655438767549e+00 0.00000000000000e+00 1.66004318946233e-04 0.00000000000000e+00 - 21 3.21299279839909e+00 3.20672921828746e+00 -2.50449383697005e-03 1.74830611967190e-04 0.00000000000000e+00 - 22 3.21044297382093e+00 3.20691023080521e+00 -2.54982457816233e-03 1.81012517750828e-04 0.00000000000000e+00 - 23 3.20797196932066e+00 3.20709473000056e+00 -2.47100450027116e-03 1.84499195352419e-04 0.00000000000000e+00 - 24 3.20569233642268e+00 3.20728009499642e+00 -2.27963289798483e-03 1.85364995857866e-04 0.00000000000000e+00 - 25 3.20369874883042e+00 3.20746389293738e+00 -1.99358759225454e-03 1.83797940957138e-04 0.00000000000000e+00 - 26 3.20206355984665e+00 3.20764397483005e+00 -1.63518898377335e-03 1.80081892672265e-04 0.00000000000000e+00 - 27 3.20083453370172e+00 3.20781854907389e+00 -1.22902614492970e-03 1.74574243844258e-04 0.00000000000000e+00 - 28 3.20003466909842e+00 3.20798623037085e+00 -7.99864603297173e-04 1.67681296958810e-04 0.00000000000000e+00 - 29 3.19966366585239e+00 3.20814606379140e+00 -3.71003246035340e-04 1.59833420545819e-04 0.00000000000000e+00 - 30 3.19970060560089e+00 3.20829752542074e+00 3.69397485053824e-05 1.51461629342754e-04 0.00000000000000e+00 - 31 3.20010746043407e+00 3.20844050223031e+00 4.06854833183701e-04 1.42976809573776e-04 0.00000000000000e+00 - 32 3.20083326258715e+00 3.20857525465729e+00 7.25802153071609e-04 1.34752426975114e-04 0.00000000000000e+00 - 33 3.20181875684390e+00 3.20870236604436e+00 9.85494256751984e-04 1.27111387074247e-04 0.00000000000000e+00 - 34 3.20300129324144e+00 3.20882268358147e+00 1.18253639754595e-03 1.20317537108219e-04 0.00000000000000e+00 - 35 3.20431952720963e+00 3.20893725563661e+00 1.31823396818653e-03 1.14572055136181e-04 0.00000000000000e+00 - 36 3.20571748524051e+00 3.20904727017646e+00 1.39795803088116e-03 1.10014539855589e-04 0.00000000000000e+00 - 37 3.20714765666810e+00 3.20915399835031e+00 1.43017142759083e-03 1.06728173849736e-04 0.00000000000000e+00 - 38 3.20857308574368e+00 3.20925874634429e+00 1.42542907557397e-03 1.04747993980054e-04 0.00000000000000e+00 - 39 3.20996861011282e+00 3.20936281761838e+00 1.39552436913837e-03 1.04071274091906e-04 0.00000000000000e+00 - 40 3.21132143681526e+00 3.20946748678570e+00 1.35282670244719e-03 1.04669167318825e-04 0.00000000000000e+00 + 20 3.21549729223606e+00 3.20655438767549e+00 0.00000000000000e+00 1.66004318946232e-04 0.00000000000000e+00 + 21 3.21299279839909e+00 3.20672921828746e+00 -2.50449383696960e-03 1.74830611967189e-04 0.00000000000000e+00 + 22 3.21044297382093e+00 3.20691023080521e+00 -2.54982457816277e-03 1.81012517750828e-04 0.00000000000000e+00 + 23 3.20797196932066e+00 3.20709473000056e+00 -2.47100450027160e-03 1.84499195352419e-04 0.00000000000000e+00 + 24 3.20569233642268e+00 3.20728009499642e+00 -2.27963289798438e-03 1.85364995857865e-04 0.00000000000000e+00 + 25 3.20369874883042e+00 3.20746389293738e+00 -1.99358759225499e-03 1.83797940957138e-04 0.00000000000000e+00 + 26 3.20206355984665e+00 3.20764397483005e+00 -1.63518898377291e-03 1.80081892672264e-04 0.00000000000000e+00 + 27 3.20083453370172e+00 3.20781854907389e+00 -1.22902614493015e-03 1.74574243844257e-04 0.00000000000000e+00 + 28 3.20003466909842e+00 3.20798623037085e+00 -7.99864603297173e-04 1.67681296958808e-04 0.00000000000000e+00 + 29 3.19966366585238e+00 3.20814606379140e+00 -3.71003246035784e-04 1.59833420545817e-04 0.00000000000000e+00 + 30 3.19970060560089e+00 3.20829752542074e+00 3.69397485058265e-05 1.51461629342751e-04 0.00000000000000e+00 + 31 3.20010746043407e+00 3.20844050223031e+00 4.06854833183257e-04 1.42976809573772e-04 0.00000000000000e+00 + 32 3.20083326258715e+00 3.20857525465729e+00 7.25802153073385e-04 1.34752426975110e-04 0.00000000000000e+00 + 33 3.20181875684390e+00 3.20870236604436e+00 9.85494256751096e-04 1.27111387074243e-04 0.00000000000000e+00 + 34 3.20300129324144e+00 3.20882268358147e+00 1.18253639754595e-03 1.20317537108215e-04 0.00000000000000e+00 + 35 3.20431952720963e+00 3.20893725563661e+00 1.31823396818787e-03 1.14572055136176e-04 0.00000000000000e+00 + 36 3.20571748524051e+00 3.20904727017646e+00 1.39795803087983e-03 1.10014539855585e-04 0.00000000000000e+00 + 37 3.20714765666810e+00 3.20915399835031e+00 1.43017142759172e-03 1.06728173849729e-04 0.00000000000000e+00 + 38 3.20857308574368e+00 3.20925874634429e+00 1.42542907557441e-03 1.04747993980047e-04 0.00000000000000e+00 + 39 3.20996861011282e+00 3.20936281761839e+00 1.39552436913792e-03 1.04071274091898e-04 0.00000000000000e+00 + 40 3.21132143681526e+00 3.20946748678570e+00 1.35282670244763e-03 1.04669167318816e-04 0.00000000000000e+00 diff --git a/namd/tests/library/000_distance-extended/namd-version.txt b/namd/tests/library/000_distance-extended/namd-version.txt index 6fd41ef56..0c1e6111b 100644 --- a/namd/tests/library/000_distance-extended/namd-version.txt +++ b/namd/tests/library/000_distance-extended/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.13 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2019-06-19". -colvars: Using NAMD interface, version "2019-02-12". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.out b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.out index f9858b5a8..ec75406ef 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.out +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.out @@ -4,10 +4,9 @@ colvars: https://doi.org/10.1080/00268976.2013.813594 colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. colvars: The restart output state file will be "test.tmp.colvars.state". colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -46,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -91,7 +91,7 @@ colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.5 colvars: # lowerBoundary = 0 [default] -colvars: # upperBoundary = 0 [default] +colvars: # upperBoundary = 0.5 [default] colvars: # hardLowerBoundary = on [default] colvars: # hardUpperBoundary = off [default] colvars: # expandBoundaries = off [default] @@ -127,9 +127,10 @@ colvars: # timeStepFactor = 1 [default] colvars: # writeTISamples = off [default] colvars: # writeTIPMF = off [default] colvars: # forceConstant = 0.001 +colvars: # decoupling = off [default] colvars: # targetForceConstant = -1 [default] colvars: # lowerWalls = { 0.1 } -colvars: # upperWalls = { 0.2 } +colvars: # upperWalls = { 0.3 } colvars: # lowerWallConstant = 0.001 [default] colvars: # upperWallConstant = 0.001 [default] colvars: The lower wall force constant for colvar "one" will be rescaled to 0.004 according to the specified width (0.5). @@ -143,11 +144,12 @@ colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). colvars: updating grid object data (0 grid objects in total). +colvars: colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: colvars: colvars: - Colvars module: colvars: - Colvars-NAMD interface: -colvars: - Linear and polynomial combination of colvar components: +colvars: - Optimal rotation via flexible fitting: colvars: - distance colvar component: colvars: - harmonicWalls colvar bias implementation: colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 @@ -155,22 +157,13 @@ colvars: colvars: - NAMD engine: colvars: - Scalable center-of-mass computation (NAMD): colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). colvars: updating grid object data (0 grid objects in total). -colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: -colvars: -colvars: - Colvars module: -colvars: - Colvars-NAMD interface: -colvars: - Linear and polynomial combination of colvar components: -colvars: - distance colvar component: -colvars: - harmonicWalls colvar bias implementation: -colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 -colvars: -colvars: - NAMD engine: -colvars: - Scalable center-of-mass computation (NAMD): -colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.state.stripped b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.state.stripped index 747b45745..868eb59c6 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21549617606775e+00 - v 1.63765400741131e-04 - extended_x 3.20653014355194e+00 - extended_v 1.63765400741131e-04 + x 3.21549621301549e+00 + v 1.63839888121770e-04 + extended_x 3.20653095017852e+00 + extended_v 1.63839888121770e-04 } restraint { diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.traj b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.traj index e78c74303..64538e290 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.traj +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one - 0 3.20554673468334e+00 3.20554673468334e+00 0.00000000000000e+00 0.00000000000000e+00 -1.20221869387334e-02 - 1 3.20437148316546e+00 3.20554661526430e+00 -1.17525151787978e-03 -1.19419048416828e-07 -1.20221864610572e-02 - 2 3.20384207658450e+00 3.20554521661731e+00 -5.29406580961123e-04 -1.39864698553752e-06 -1.20221808664692e-02 - 3 3.20397336372901e+00 3.20554201761950e+00 1.31287144503833e-04 -3.19899780998369e-06 -1.20221680704780e-02 - 4 3.20474099373313e+00 3.20553715100349e+00 7.67630004118391e-04 -4.86661600511761e-06 -1.20221486040140e-02 - 5 3.20608361727106e+00 3.20553137919309e+00 1.34262353793657e-03 -5.77181040270690e-06 -1.20221255167724e-02 - 6 3.20790704368963e+00 3.20552603300139e+00 1.82342641856614e-03 -5.34619170452791e-06 -1.20221041320056e-02 - 7 3.21008979711353e+00 3.20552291735481e+00 2.18275342390539e-03 -3.11564657363747e-06 -1.20220916694193e-02 - 8 3.21248979695188e+00 3.20552418961980e+00 2.39999983834460e-03 1.27226498086710e-06 -1.20220967584792e-02 - 9 3.21495218471243e+00 3.20553221724550e+00 2.46238776055163e-03 8.02762570632936e-06 -1.20221288689820e-02 - 10 3.21731838890489e+00 3.20554942258797e+00 2.36620419245748e-03 1.72053424717036e-05 -1.20221976903519e-02 - 11 3.21943620059508e+00 3.20557812401547e+00 2.11781169019343e-03 2.87014274922572e-05 -1.20223124960619e-02 - 12 3.22117010496679e+00 3.20562038339602e+00 1.73390437170573e-03 4.22593805567318e-05 -1.20224815335841e-02 - 13 3.22241068511834e+00 3.20567787031465e+00 1.24058015155670e-03 5.74869186270917e-05 -1.20227114812586e-02 - 14 3.22308184575111e+00 3.20575175243528e+00 6.71160632762735e-04 7.38821206311925e-05 -1.20230070097411e-02 - 15 3.22314498306341e+00 3.20584261924524e+00 6.31373123058943e-05 9.08668099629442e-05 -1.20233704769810e-02 - 16 3.22259983061978e+00 3.20595044337301e+00 -5.45152443630847e-04 1.07824127767084e-04 -1.20238017734920e-02 - 17 3.22148232868433e+00 3.20607458035225e+00 -1.11750193545301e-03 1.24136979242771e-04 -1.20242983214090e-02 - 18 3.21986023812409e+00 3.20621380472955e+00 -1.62209056023332e-03 1.39224377296434e-04 -1.20248552189182e-02 - 19 3.21782725362733e+00 3.20636637815120e+00 -2.03298449676304e-03 1.52573421652395e-04 -1.20254655126048e-02 - 20 3.21549617606775e+00 3.20653014355194e+00 -2.33107755958173e-03 1.63765400741131e-04 -1.20261205742078e-02 + 0 3.20554673468334e+00 3.20554673468334e+00 0.00000000000000e+00 0.00000000000000e+00 -1.16221869387334e-02 + 1 3.20437148316484e+00 3.20554661923758e+00 -1.17525151850328e-03 -1.15445759728991e-07 -1.16221864769503e-02 + 2 3.20384207658804e+00 3.20554522853325e+00 -5.29406576805336e-04 -1.39070433041396e-06 -1.16221809141330e-02 + 3 3.20397336375347e+00 3.20554204143963e+00 1.31287165431537e-04 -3.18709362372464e-06 -1.16221681657585e-02 + 4 3.20474099381307e+00 3.20553719067761e+00 7.67630059602453e-04 -4.85076201650243e-06 -1.16221487627105e-02 + 5 3.20608361746435e+00 3.20553143865541e+00 1.34262365128279e-03 -5.75202220486511e-06 -1.16221257546216e-02 + 6 3.20790704408264e+00 3.20552611616669e+00 1.82342661828994e-03 -5.32248871654545e-06 -1.16221044646668e-02 + 7 3.21008979782599e+00 3.20552302811470e+00 2.18275374334675e-03 -3.08805199324812e-06 -1.16220921124588e-02 + 8 3.21248979814124e+00 3.20552433183893e+00 2.40000031525378e-03 1.30372423308412e-06 -1.16220973273557e-02 + 9 3.21495218657788e+00 3.20553239475798e+00 2.46238843663571e-03 8.06291905077686e-06 -1.16221295790319e-02 + 10 3.21731839169077e+00 3.20554963919372e+00 2.36620511289365e-03 1.72444357411129e-05 -1.16221985567749e-02 + 11 3.21943620459394e+00 3.20557838347673e+00 2.11781290316582e-03 2.87442830099992e-05 -1.16223135339069e-02 + 12 3.22117011052185e+00 3.20562068943396e+00 1.73390592791511e-03 4.23059572215591e-05 -1.16224827577358e-02 + 13 3.22241069262564e+00 3.20567822660596e+00 1.24058210378664e-03 5.75371720037448e-05 -1.16227129064238e-02 + 14 3.22308185566108e+00 3.20575216260901e+00 6.71163035445232e-04 7.39360030463537e-05 -1.16230086504360e-02 + 15 3.22314499588221e+00 3.20584308687961e+00 6.31402211261900e-05 9.09242706060132e-05 -1.16233723475184e-02 + 16 3.22259984691011e+00 3.20595097199241e+00 -5.45148972103338e-04 1.07885112795286e-04 -1.16238038879696e-02 + 17 3.22148234906601e+00 3.20607517342430e+00 -1.11749784410220e-03 1.24201431890135e-04 -1.16243006936972e-02 + 18 3.21986026327429e+00 3.20621446566228e+00 -1.62208579171264e-03 1.39292237986185e-04 -1.16248578626491e-02 + 19 3.21782728428053e+00 3.20636711029040e+00 -2.03297899376365e-03 1.52644628112363e-04 -1.16254684411616e-02 + 20 3.21549621301549e+00 3.20653095017852e+00 -2.33107126504306e-03 1.63839888121770e-04 -1.16261238007141e-02 diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.out b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.out index e7b81c1e7..c94a47cb7 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.out +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.out @@ -4,10 +4,9 @@ colvars: https://doi.org/10.1080/00268976.2013.813594 colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. colvars: The restart output state file will be "test.restart.tmp.colvars.state". colvars: The final output state file will be "test.restart.colvars.state". -colvars: Opening trajectory file "test.restart.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -46,6 +45,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "one" @@ -91,7 +91,7 @@ colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.5 colvars: # lowerBoundary = 0 [default] -colvars: # upperBoundary = 0 [default] +colvars: # upperBoundary = 0.5 [default] colvars: # hardLowerBoundary = on [default] colvars: # hardUpperBoundary = off [default] colvars: # expandBoundaries = off [default] @@ -127,9 +127,10 @@ colvars: # timeStepFactor = 1 [default] colvars: # writeTISamples = off [default] colvars: # writeTIPMF = off [default] colvars: # forceConstant = 0.001 +colvars: # decoupling = off [default] colvars: # targetForceConstant = -1 [default] colvars: # lowerWalls = { 0.1 } -colvars: # upperWalls = { 0.2 } +colvars: # upperWalls = { 0.3 } colvars: # lowerWallConstant = 0.001 [default] colvars: # upperWallConstant = 0.001 [default] colvars: The lower wall force constant for colvar "one" will be rescaled to 0.004 according to the specified width (0.5). @@ -143,11 +144,12 @@ colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). colvars: updating grid object data (0 grid objects in total). +colvars: colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: colvars: colvars: - Colvars module: colvars: - Colvars-NAMD interface: -colvars: - Linear and polynomial combination of colvar components: +colvars: - Optimal rotation via flexible fitting: colvars: - distance colvar component: colvars: - harmonicWalls colvar bias implementation: colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 @@ -155,27 +157,18 @@ colvars: colvars: - NAMD engine: colvars: - Scalable center-of-mass computation (NAMD): colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 0 K). colvars: ---------------------------------------------------------------------- colvars: Loading state from file "test.colvars.state". colvars: Restarting collective variable "one" from value: 3.2155 -colvars: Restarting harmonicwalls bias "harmonicwalls1" from step number 20. +colvars: Restarting harmonicwalls bias "harmonicwalls1" from step number 0. colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 8 atoms in total). colvars: updating grid object data (0 grid objects in total). -colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: -colvars: -colvars: - Colvars module: -colvars: - Colvars-NAMD interface: -colvars: - Linear and polynomial combination of colvar components: -colvars: - distance colvar component: -colvars: - harmonicWalls colvar bias implementation: -colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 -colvars: -colvars: - NAMD engine: -colvars: - Scalable center-of-mass computation (NAMD): -colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: updating target temperature (T = 0 K). colvars: Re-initialized atom group for variable "one":0/0. 4 atoms: total mass = 54.028, total charge = -0.72. colvars: Re-initialized atom group for variable "one":0/1. 4 atoms: total mass = 54.028, total charge = -0.4. colvars: The restart output state file will be "test.restart.tmp.colvars.state". diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.state.stripped b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.state.stripped index 38e912279..67e9debbf 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.state.stripped +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.state.stripped @@ -5,10 +5,10 @@ configuration { colvar { name one - x 3.21130917331427e+00 - v 1.00951355693882e-04 - extended_x 3.20938126640048e+00 - extended_v 1.00951355693882e-04 + x 3.21130958093225e+00 + v 1.01074979342738e-04 + extended_x 3.20938413437057e+00 + extended_v 1.01074979342738e-04 } restraint { diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.traj b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.traj index 532fb06c0..457fcb155 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.traj +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/AutoDiff/test.restart.colvars.traj @@ -1,22 +1,22 @@ # step one r_one v_one vr_one fa_one - 20 3.21549617606775e+00 3.20653014355194e+00 0.00000000000000e+00 1.63765400741131e-04 -1.20261205742078e-02 - 21 3.21299146712053e+00 3.20670263861396e+00 -2.50470894721611e-03 1.72495062016875e-04 -1.20268105544558e-02 - 22 3.21044140024819e+00 3.20688122103595e+00 -2.55006687233861e-03 1.78582421991679e-04 -1.20275248841438e-02 - 23 3.20797012460099e+00 3.20706319774191e+00 -2.47127564720051e-03 1.81976705962452e-04 -1.20282527909676e-02 - 24 3.20569019005604e+00 3.20724595006950e+00 -2.27993454495001e-03 1.82752327592568e-04 -1.20289838002780e-02 - 25 3.20369626869598e+00 3.20742704743694e+00 -1.99392136005994e-03 1.81097367441832e-04 -1.20297081897478e-02 - 26 3.20206071223530e+00 3.20760434317960e+00 -1.63555646068803e-03 1.77295742655034e-04 -1.20304173727184e-02 - 27 3.20083128336097e+00 3.20777604807702e+00 -1.22942887432353e-03 1.71704897415300e-04 -1.20311041923081e-02 - 28 3.20003097928630e+00 3.20794077925876e+00 -8.00304074670688e-04 1.64731181749229e-04 -1.20317631170351e-02 - 29 3.19965949840204e+00 3.20809758426668e+00 -3.71480884266973e-04 1.56805007916514e-04 -1.20323903370667e-02 - 30 3.19969592099552e+00 3.20824594169726e+00 3.64225934861295e-05 1.48357430576832e-04 -1.20329837667890e-02 - 31 3.20010221789303e+00 3.20838574106934e+00 4.06296897506930e-04 1.39799372086402e-04 -1.20335429642774e-02 - 32 3.20082742014926e+00 3.20851724539990e+00 7.25202256227853e-04 1.31504330556317e-04 -1.20340689815996e-02 - 33 3.20181227147044e+00 3.20864104064007e+00 9.84851321187641e-04 1.23795240167197e-04 -1.20345641625603e-02 - 34 3.20299412090831e+00 3.20875797661322e+00 1.18184943786748e-03 1.16935973148017e-04 -1.20350319064529e-02 - 35 3.20431162299519e+00 3.20886910434216e+00 1.31750208687542e-03 1.11127728944451e-04 -1.20354764173686e-02 - 36 3.20570880341320e+00 3.20897561446625e+00 1.39718041801373e-03 1.06510124092699e-04 -1.20359024578650e-02 - 37 3.20713815074963e+00 3.20907878082178e+00 1.42934733642930e-03 1.03166355530316e-04 -1.20363151232871e-02 - 38 3.20856270857345e+00 3.20917991229282e+00 1.42455782382234e-03 1.01131471033408e-04 -1.20367196491713e-02 - 39 3.20995731392663e+00 3.20928031504479e+00 1.39460535317548e-03 1.00402751973855e-04 -1.20371212601792e-02 - 40 3.21130917331427e+00 3.20938126640048e+00 1.35185938764515e-03 1.00951355693882e-04 -1.20375250656019e-02 + 20 3.21549621301549e+00 3.20653095017852e+00 0.00000000000000e+00 1.63839888121770e-04 -1.16261238007141e-02 + 21 3.21299151121102e+00 3.20670352294153e+00 -2.50470180446749e-03 1.72572763011582e-04 -1.16268140917661e-02 + 22 3.21044145238583e+00 3.20688218620849e+00 -2.55005882518766e-03 1.78663266959169e-04 -1.16275287448340e-02 + 23 3.20797018574579e+00 3.20706424683154e+00 -2.47126664004549e-03 1.82060623050948e-04 -1.16282569873262e-02 + 24 3.20569026122289e+00 3.20724708607441e+00 -2.27992452289572e-03 1.82839242865593e-04 -1.16289883442976e-02 + 25 3.20369635095381e+00 3.20742827327941e+00 -1.99391026908335e-03 1.81187205005368e-04 -1.16297130931177e-02 + 26 3.20206080670596e+00 3.20760566170420e+00 -1.63554424784840e-03 1.77388424785744e-04 -1.16304226468168e-02 + 27 3.20083139121777e+00 3.20777746204889e+00 -1.22941548818822e-03 1.71800344689496e-04 -1.16311098481956e-02 + 28 3.20003110175216e+00 3.20794229136206e+00 -8.00289465613613e-04 1.64829313172020e-04 -1.16317691654482e-02 + 29 3.19965963674732e+00 3.20809919710311e+00 -3.71465004831428e-04 1.56905741050733e-04 -1.16323967884124e-02 + 30 3.19969607653556e+00 3.20824765778478e+00 3.64397882326450e-05 1.48460681671230e-04 -1.16329906311391e-02 + 31 3.20010239198518e+00 3.20838756284098e+00 4.06315449623662e-04 1.39905056202667e-04 -1.16335502513639e-02 + 32 3.20082761419017e+00 3.20851917520268e+00 7.25222204989162e-04 1.31612361694413e-04 -1.16340767008107e-02 + 33 3.20181248689262e+00 3.20864308073407e+00 9.84872702445738e-04 1.23905531389011e-04 -1.16345723229363e-02 + 34 3.20299435917704e+00 3.20876012917077e+00 1.18187228442679e-03 1.17048436698551e-04 -1.16350405166831e-02 + 35 3.20431188560568e+00 3.20887137144714e+00 1.31752642863958e-03 1.11242276370810e-04 -1.16354854857885e-02 + 36 3.20570909188769e+00 3.20897799811350e+00 1.39720628201090e-03 1.06626666360912e-04 -1.16359119924540e-02 + 37 3.20713846663531e+00 3.20908128291664e+00 1.42937474761640e-03 1.03284803139886e-04 -1.16363251316666e-02 + 38 3.20856305344034e+00 3.20918253465077e+00 1.42458680502822e-03 1.01251734130282e-04 -1.16367301386031e-02 + 39 3.20995768936497e+00 3.20928305939123e+00 1.39463592463418e-03 1.00524740461639e-04 -1.16371322375649e-02 + 40 3.21130958093225e+00 3.20938413437057e+00 1.35189156727877e-03 1.01074979342738e-04 -1.16375365374823e-02 diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/namd-version.txt b/namd/tests/library/000_distance-wall-bypassExtended-off/namd-version.txt index de8afabca..0c1e6111b 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/namd-version.txt +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/namd-version.txt @@ -1,3 +1,3 @@ Info: NAMD 2.15alpha2 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version 2021-08-30. -colvars: Using NAMD interface, version "2021-08-30". +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/000_distance-wall-bypassExtended-off/test.in b/namd/tests/library/000_distance-wall-bypassExtended-off/test.in index 5a5def555..770d32a5b 100644 --- a/namd/tests/library/000_distance-wall-bypassExtended-off/test.in +++ b/namd/tests/library/000_distance-wall-bypassExtended-off/test.in @@ -30,7 +30,7 @@ colvar { harmonicWalls { colvars one lowerWalls 0.1 - upperWalls 0.2 + upperWalls 0.3 forceConstant 0.001 bypassExtendedLagrangian off } diff --git a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.out b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.out index 44602f5d0..6a672dfff 100644 --- a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.out +++ b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.out @@ -1,12 +1,11 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. -colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". colvars: Redefining the Tcl "cv" command to the new script interface. +colvars: The final output state file will be "test.colvars.state". colvars: ---------------------------------------------------------------------- colvars: Reading new configuration: colvars: # units = "" [default] @@ -15,6 +14,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 0 [default] colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "s" @@ -28,14 +28,14 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "atoms". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "" [default] colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: # printAtomIDs = off [default] colvars: Atom group "atoms" defined with 104 atoms requested: total mass = 727.821, total charge = 6.70552e-08. @@ -43,7 +43,7 @@ colvars: # refPositions = [default] colvars: # refPositionsFile = "../Common/da.xyz" colvars: # refPositionsCol = "" [default] colvars: Warning: beginning from 2019-11-26 the XYZ file reader assumes Angstrom units. -colvars: Enabling "centerReference" and "rotateReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. +colvars: Enabling "centerToReference" and "rotateToReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. colvars: This is a standard minimum RMSD, derivatives of the optimal rotation will not be computed as they cancel out in the gradients. colvars: Initializing a new "rmsd" component. colvars: # name = "" [default] @@ -55,21 +55,21 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "atoms". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "" [default] colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: # printAtomIDs = off [default] colvars: Atom group "atoms" defined with 104 atoms requested: total mass = 727.821, total charge = 6.70552e-08. colvars: # refPositions = [default] colvars: # refPositionsFile = "../Common/310turn-ideal.xyz" colvars: # refPositionsCol = "" [default] -colvars: Enabling "centerReference" and "rotateReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. +colvars: Enabling "centerToReference" and "rotateToReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. colvars: This is a standard minimum RMSD, derivatives of the optimal rotation will not be computed as they cancel out in the gradients. colvars: All components initialized. colvars: This colvar uses scripted function "pathCVs". @@ -122,21 +122,21 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "atoms". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "" [default] colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: # printAtomIDs = off [default] colvars: Atom group "atoms" defined with 104 atoms requested: total mass = 727.821, total charge = 6.70552e-08. colvars: # refPositions = [default] colvars: # refPositionsFile = "../Common/da.xyz" colvars: # refPositionsCol = "" [default] -colvars: Enabling "centerReference" and "rotateReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. +colvars: Enabling "centerToReference" and "rotateToReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. colvars: This is a standard minimum RMSD, derivatives of the optimal rotation will not be computed as they cancel out in the gradients. colvars: Initializing a new "rmsd" component. colvars: # name = "" [default] @@ -148,21 +148,21 @@ colvars: # forceNoPBC = off [default] colvars: # scalable = on [default] colvars: Initializing atom group "atoms". colvars: # name = "" [default] -colvars: # centerReference = off [default] -colvars: # rotateReference = off [default] +colvars: # centerToOrigin = off [default] +colvars: # centerToReference = off [default] +colvars: # rotateToReference = off [default] colvars: # atomsOfGroup = "" [default] colvars: # indexGroup = "" [default] colvars: # psfSegID = [default] colvars: # atomsFile = "" [default] colvars: # dummyAtom = ( 0 , 0 , 0 ) [default] -colvars: # enableForces = on [default] colvars: # enableFitGradients = on [default] colvars: # printAtomIDs = off [default] colvars: Atom group "atoms" defined with 104 atoms requested: total mass = 727.821, total charge = 6.70552e-08. colvars: # refPositions = [default] colvars: # refPositionsFile = "../Common/310turn-ideal.xyz" colvars: # refPositionsCol = "" [default] -colvars: Enabling "centerReference" and "rotateReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. +colvars: Enabling "centerToReference" and "rotateToReference", to minimize RMSD before calculating it as a variable: if this is not the desired behavior, disable them explicitly within the "atoms" block. colvars: This is a standard minimum RMSD, derivatives of the optimal rotation will not be computed as they cancel out in the gradients. colvars: All components initialized. colvars: This colvar uses scripted function "pathCVz". @@ -218,11 +218,6 @@ colvars: # shared = off [default] colvars: # maxForce = [default] colvars: # CZARestimator = on [default] colvars: # integrate = on [default] -colvars: # pABFintegrateFreq = 0 [default] -colvars: # integrateInitMaxIterations = 10000 [default] -colvars: # integrateInitTol = 1e-06 [default] -colvars: # integrateMaxIterations = 100 [default] -colvars: # integrateTol = 0.0001 [default] colvars: # UIestimator = off [default] colvars: Finished ABF setup. colvars: ---------------------------------------------------------------------- @@ -233,6 +228,7 @@ colvars: # colvarsTrajFrequency = 1 [default] colvars: # colvarsRestartFrequency = 0 [default] colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Collective variables initialized, 2 in total. colvars: ---------------------------------------------------------------------- @@ -246,6 +242,7 @@ colvars: # timeStepFactor = 1 colvars: # writeTISamples = off [default] colvars: # writeTIPMF = off [default] colvars: # forceConstant = 1 [default] +colvars: # decoupling = off [default] colvars: # targetForceConstant = -1 [default] colvars: # lowerWalls = { -0.2 } colvars: # upperWalls = { 1.2 } @@ -261,9 +258,42 @@ colvars: ---------------------------------------------------------------------- colvars: Updating NAMD interface: colvars: updating atomic data (104 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - BAOA integrator: +colvars: BouRabee2010 https://doi.org/10.1137/090758842 +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Optimal rotation via flexible fitting: +colvars: - harmonicWalls colvar bias implementation: +colvars: - rmsd colvar component: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - ABF colvar bias implementation: +colvars: Henin2010 https://doi.org/10.1021/ct9004432 +colvars: +colvars: - Poisson integration of 2D/3D free energy surfaces: +colvars: Henin2021 https://doi.org/10.1021/acs.jctc.1c00593 +colvars: +colvars: - CZAR eABF estimator: +colvars: - eABF implementation: +colvars: Lesage2017 https://doi.org/10.1021/acs.jpcb.6b10055 +colvars: +colvars: - NAMD engine: +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: - Scripted functions (Tcl): +colvars: n/a +colvars: +colvars: updating target temperature (T = 300 K). colvars: Updating NAMD interface: colvars: updating atomic data (104 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). +colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 300 K). colvars: Re-initialized atom group for variable "s":0/0. 104 atoms: total mass = 727.821, total charge = 6.70552e-08. colvars: Re-initialized atom group for variable "s":1/0. 104 atoms: total mass = 727.821, total charge = 6.70552e-08. colvars: Re-initialized atom group for variable "z":0/0. 104 atoms: total mass = 727.821, total charge = 6.70552e-08. @@ -277,5 +307,5 @@ colvars: PathCV STEP 6 next pathCV flags 1 1 colvars: PathCV WARNING: less than 2 RMSDs are above threshold, selecting 2 closest images colvars: PathCV STEP 11 next pathCV flags 1 1 colvars: Saving collective variables state to "test.colvars.state". -colvars: Integrated in 143 steps, error: 9.52755e-07 -colvars: Integrated in 143 steps, error: 8.74992e-07 +colvars: Integrated in 143 steps, error: 9.02625e-07 +colvars: Integrated in 142 steps, error: 9.86746e-07 diff --git a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.state.stripped b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.state.stripped index addd2a2f0..b92ecc6e5 100644 --- a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.state.stripped @@ -5,16 +5,16 @@ configuration { colvar { name s - x 1.88162886110026e-215 - extended_x 1.51318200440576e-04 - extended_v 4.15297363896536e-05 + x 1.88169145390613e-215 + extended_x 1.40893578825849e-04 + extended_v 4.15362186545699e-05 } colvar { name z - x 4.99981821584820e-01 - extended_x 5.04130336462937e-01 - extended_v -3.06412816932531e-05 + x 4.99983213750952e-01 + extended_x 5.04137015603104e-01 + extended_v -3.06370867449497e-05 } abf { @@ -201,7 +201,7 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - -5.05394403557552e-03 9.61026562737795e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + -2.52634040637666e-03 9.86346225256722e-01 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -211,7 +211,7 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 3.16448816297608e-01 7.02396019515835e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 2.72854053576603e-01 7.04290046777368e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -634,8 +634,8 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 7.78303220576288e-01 2.01155592501129e+01 - 2.29409131340735e-01 4.89567878545001e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 6.99268139691302e-01 2.01229199330169e+01 + 1.94876889121305e-01 4.91661450024477e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.traj b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.traj index bf44f480b..9cf5172d1 100644 --- a/namd/tests/library/018_pathCV/AutoDiff/test.colvars.traj +++ b/namd/tests/library/018_pathCV/AutoDiff/test.colvars.traj @@ -1,12 +1,12 @@ # step s r_s z r_z 0 3.00814883534435e-215 3.00814883534435e-215 5.04223676928709e-01 5.04223676928709e-01 - 1 2.79773744065899e-215 -8.47753442854012e-07 5.04053981240470e-01 5.04215184762215e-01 - 2 2.60900632724628e-215 5.84013717452316e-06 5.04017885810743e-01 5.04206024707080e-01 - 3 2.48746158657393e-215 1.83444183792222e-05 5.03925949021255e-01 5.04194621361562e-01 - 4 2.33749398457775e-215 3.30663322771117e-05 5.03744457918909e-01 5.04179636036195e-01 - 5 2.19481225930835e-215 4.50102286359236e-05 5.03426140315685e-01 5.04168625648446e-01 - 6 2.06818775768437e-215 6.23252616516950e-05 5.02953441020839e-01 5.04160718764085e-01 - 7 1.99241404617557e-215 7.84867300879842e-05 5.02333036275841e-01 5.04157231816793e-01 - 8 1.94602382038457e-215 1.04106424125391e-04 5.01588199274176e-01 5.04151900677087e-01 - 9 1.90193758423791e-215 1.30553332245749e-04 5.00771453810440e-01 5.04145657103784e-01 - 10 1.88162886110026e-215 1.51318200440576e-04 4.99981821584820e-01 5.04130336462937e-01 + 1 2.79773744080269e-215 -4.23770774320244e-07 5.04053981240426e-01 5.04219431906761e-01 + 2 2.60900847780748e-215 2.49556789490259e-06 5.04017921282668e-01 5.04210587066118e-01 + 3 2.48746781445528e-215 1.20892555960855e-05 5.03926056790795e-01 5.04200282559501e-01 + 4 2.33750613647379e-215 2.56988998248665e-05 5.03744681560205e-01 5.04187067003941e-01 + 5 2.19483238621295e-215 3.90282685346562e-05 5.03426534412398e-01 5.04174033567399e-01 + 6 2.06821654791110e-215 5.36535999110737e-05 5.02954037863991e-01 5.04164509109472e-01 + 7 1.99245194229624e-215 7.03868185877368e-05 5.02333848769048e-01 5.04158701221282e-01 + 8 1.94607036513624e-215 9.12708950263107e-05 5.01589215390416e-01 5.04154123763789e-01 + 9 1.90199211917260e-215 1.17295911614485e-04 5.00772663551120e-01 5.04148101532508e-01 + 10 1.88169145390613e-215 1.40893578825849e-04 4.99983213750952e-01 5.04137015603104e-01 diff --git a/namd/tests/library/018_pathCV/AutoDiff/test.pmf b/namd/tests/library/018_pathCV/AutoDiff/test.pmf index c6d9993a3..68438f4fa 100644 --- a/namd/tests/library/018_pathCV/AutoDiff/test.pmf +++ b/namd/tests/library/018_pathCV/AutoDiff/test.pmf @@ -2,1220 +2,1220 @@ # -2.25000000000000e-01 5.00000000000000e-02 29 0 # -5.25000000000000e-01 5.00000000000000e-02 41 0 - -2.00000000000000e-01 -5.00000000000000e-01 5.70517047513764e-02 - -2.00000000000000e-01 -4.50000000000000e-01 5.70314133512830e-02 - -2.00000000000000e-01 -4.00000000000000e-01 5.69701421808571e-02 - -2.00000000000000e-01 -3.50000000000000e-01 5.68666911787773e-02 - -2.00000000000000e-01 -3.00000000000000e-01 5.67190424847436e-02 - -2.00000000000000e-01 -2.50000000000000e-01 5.65243452970642e-02 - -2.00000000000000e-01 -2.00000000000000e-01 5.62788845639861e-02 - -2.00000000000000e-01 -1.50000000000000e-01 5.59781651275093e-02 - -2.00000000000000e-01 -1.00000000000000e-01 5.56170820377633e-02 - -2.00000000000000e-01 -5.00000000000000e-02 5.51902886232320e-02 - -2.00000000000000e-01 0.00000000000000e+00 5.46930729733900e-02 - -2.00000000000000e-01 5.00000000000000e-02 5.41231306987124e-02 - -2.00000000000000e-01 1.00000000000000e-01 5.34841272779175e-02 - -2.00000000000000e-01 1.50000000000000e-01 5.27925332820017e-02 - -2.00000000000000e-01 2.00000000000000e-01 5.20905600971221e-02 - -2.00000000000000e-01 2.50000000000000e-01 5.14698076526550e-02 - -2.00000000000000e-01 3.00000000000000e-01 5.11120137701121e-02 - -2.00000000000000e-01 3.50000000000000e-01 5.13514952600134e-02 - -2.00000000000000e-01 4.00000000000000e-01 5.27452718369350e-02 - -2.00000000000000e-01 4.50000000000000e-01 5.60670091683773e-02 - -2.00000000000000e-01 5.00000000000000e-01 6.19606129807167e-02 - -2.00000000000000e-01 5.50000000000000e-01 6.97624576413127e-02 - -2.00000000000000e-01 6.00000000000000e-01 7.58579533281349e-02 - -2.00000000000000e-01 6.50000000000000e-01 7.94768301846018e-02 - -2.00000000000000e-01 7.00000000000000e-01 8.11734593823368e-02 - -2.00000000000000e-01 7.50000000000000e-01 8.16784413870776e-02 - -2.00000000000000e-01 8.00000000000000e-01 8.15376633810764e-02 - -2.00000000000000e-01 8.50000000000000e-01 8.10890739849921e-02 - -2.00000000000000e-01 9.00000000000000e-01 8.05226640484542e-02 - -2.00000000000000e-01 9.50000000000000e-01 7.99384339102008e-02 - -2.00000000000000e-01 1.00000000000000e+00 7.93856823442703e-02 - -2.00000000000000e-01 1.05000000000000e+00 7.88863999817826e-02 - -2.00000000000000e-01 1.10000000000000e+00 7.84484408252454e-02 - -2.00000000000000e-01 1.15000000000000e+00 7.80726720895413e-02 - -2.00000000000000e-01 1.20000000000000e+00 7.77568047877663e-02 - -2.00000000000000e-01 1.25000000000000e+00 7.74973669193293e-02 - -2.00000000000000e-01 1.30000000000000e+00 7.72907230904643e-02 - -2.00000000000000e-01 1.35000000000000e+00 7.71335889959089e-02 - -2.00000000000000e-01 1.40000000000000e+00 7.70232920587822e-02 - -2.00000000000000e-01 1.45000000000000e+00 7.69578965205320e-02 - -2.00000000000000e-01 1.50000000000000e+00 7.69362317921545e-02 + -2.00000000000000e-01 -5.00000000000000e-01 5.69586149951569e-02 + -2.00000000000000e-01 -4.50000000000000e-01 5.69382966644937e-02 + -2.00000000000000e-01 -4.00000000000000e-01 5.68769461750447e-02 + -2.00000000000000e-01 -3.50000000000000e-01 5.67733665267178e-02 + -2.00000000000000e-01 -3.00000000000000e-01 5.66255457146456e-02 + -2.00000000000000e-01 -2.50000000000000e-01 5.64306427548948e-02 + -2.00000000000000e-01 -2.00000000000000e-01 5.61849600753329e-02 + -2.00000000000000e-01 -1.50000000000000e-01 5.58840288715106e-02 + -2.00000000000000e-01 -1.00000000000000e-01 5.55227848234053e-02 + -2.00000000000000e-01 -5.00000000000000e-02 5.50959454137594e-02 + -2.00000000000000e-01 0.00000000000000e+00 5.45988989681669e-02 + -2.00000000000000e-01 5.00000000000000e-02 5.40294992011255e-02 + -2.00000000000000e-01 1.00000000000000e-01 5.33916589593868e-02 + -2.00000000000000e-01 1.50000000000000e-01 5.27022394910228e-02 + -2.00000000000000e-01 2.00000000000000e-01 5.20040670648128e-02 + -2.00000000000000e-01 2.50000000000000e-01 5.13897033729455e-02 + -2.00000000000000e-01 3.00000000000000e-01 5.10423626115960e-02 + -2.00000000000000e-01 3.50000000000000e-01 5.12985377781979e-02 + -2.00000000000000e-01 4.00000000000000e-01 5.27181985397260e-02 + -2.00000000000000e-01 4.50000000000000e-01 5.60782581523479e-02 + -2.00000000000000e-01 5.00000000000000e-01 6.20237943536309e-02 + -2.00000000000000e-01 5.50000000000000e-01 6.98823887905351e-02 + -2.00000000000000e-01 6.00000000000000e-01 7.60044966151296e-02 + -2.00000000000000e-01 6.50000000000000e-01 7.96239617900707e-02 + -2.00000000000000e-01 7.00000000000000e-01 8.13077153155626e-02 + -2.00000000000000e-01 7.50000000000000e-01 8.17953161839064e-02 + -2.00000000000000e-01 8.00000000000000e-01 8.16372048306354e-02 + -2.00000000000000e-01 8.50000000000000e-01 8.11731427050515e-02 + -2.00000000000000e-01 9.00000000000000e-01 8.05935862919719e-02 + -2.00000000000000e-01 9.50000000000000e-01 7.99984398126379e-02 + -2.00000000000000e-01 1.00000000000000e+00 7.94367189537887e-02 + -2.00000000000000e-01 1.05000000000000e+00 7.89301053676405e-02 + -2.00000000000000e-01 1.10000000000000e+00 7.84861755647861e-02 + -2.00000000000000e-01 1.15000000000000e+00 7.81055663777811e-02 + -2.00000000000000e-01 1.20000000000000e+00 7.77858043866154e-02 + -2.00000000000000e-01 1.25000000000000e+00 7.75232734973943e-02 + -2.00000000000000e-01 1.30000000000000e+00 7.73142286913480e-02 + -2.00000000000000e-01 1.35000000000000e+00 7.71553039111600e-02 + -2.00000000000000e-01 1.40000000000000e+00 7.70437678236428e-02 + -2.00000000000000e-01 1.45000000000000e+00 7.69776442679124e-02 + -2.00000000000000e-01 1.50000000000000e+00 7.69557395004421e-02 - -1.50000000000000e-01 -5.00000000000000e-01 5.70719795596613e-02 - -1.50000000000000e-01 -4.50000000000000e-01 5.70518887671378e-02 - -1.50000000000000e-01 -4.00000000000000e-01 5.69912240076489e-02 - -1.50000000000000e-01 -3.50000000000000e-01 5.68887897471763e-02 - -1.50000000000000e-01 -3.00000000000000e-01 5.67425802749730e-02 - -1.50000000000000e-01 -2.50000000000000e-01 5.65497274280372e-02 - -1.50000000000000e-01 -2.00000000000000e-01 5.63065120083545e-02 - -1.50000000000000e-01 -1.50000000000000e-01 5.60083565928943e-02 - -1.50000000000000e-01 -1.00000000000000e-01 5.56499488378170e-02 - -1.50000000000000e-01 -5.00000000000000e-02 5.52255116262210e-02 - -1.50000000000000e-01 0.00000000000000e+00 5.47294340681052e-02 - -1.50000000000000e-01 5.00000000000000e-02 5.41576586538688e-02 - -1.50000000000000e-01 1.00000000000000e-01 5.35104201880976e-02 - -1.50000000000000e-01 1.50000000000000e-01 5.27977224357830e-02 - -1.50000000000000e-01 2.00000000000000e-01 5.20499597435580e-02 - -1.50000000000000e-01 2.50000000000000e-01 5.13383373171648e-02 - -1.50000000000000e-01 3.00000000000000e-01 5.08133866336713e-02 - -1.50000000000000e-01 3.50000000000000e-01 5.07743533862142e-02 - -1.50000000000000e-01 4.00000000000000e-01 5.17812789194638e-02 - -1.50000000000000e-01 4.50000000000000e-01 5.47810588177580e-02 - -1.50000000000000e-01 5.00000000000000e-01 6.10064783698713e-02 - -1.50000000000000e-01 5.50000000000000e-01 7.06156399777621e-02 - -1.50000000000000e-01 6.00000000000000e-01 7.70962866656842e-02 - -1.50000000000000e-01 6.50000000000000e-01 8.04379806831208e-02 - -1.50000000000000e-01 7.00000000000000e-01 8.17693039826990e-02 - -1.50000000000000e-01 7.50000000000000e-01 8.20013241770629e-02 - -1.50000000000000e-01 8.00000000000000e-01 8.16915664270129e-02 - -1.50000000000000e-01 8.50000000000000e-01 8.11479773589115e-02 - -1.50000000000000e-01 9.00000000000000e-01 8.05315686536506e-02 - -1.50000000000000e-01 9.50000000000000e-01 7.99227029836700e-02 - -1.50000000000000e-01 1.00000000000000e+00 7.93589479645910e-02 - -1.50000000000000e-01 1.05000000000000e+00 7.88557348062155e-02 - -1.50000000000000e-01 1.10000000000000e+00 7.84173352260294e-02 - -1.50000000000000e-01 1.15000000000000e+00 7.80427241485443e-02 - -1.50000000000000e-01 1.20000000000000e+00 7.77286021971204e-02 - -1.50000000000000e-01 1.25000000000000e+00 7.74709829314100e-02 - -1.50000000000000e-01 1.30000000000000e+00 7.72659719107807e-02 - -1.50000000000000e-01 1.35000000000000e+00 7.71101634463899e-02 - -1.50000000000000e-01 1.40000000000000e+00 7.70008387272713e-02 - -1.50000000000000e-01 1.45000000000000e+00 7.69360333427400e-02 - -1.50000000000000e-01 1.50000000000000e+00 7.69145604568307e-02 + -1.50000000000000e-01 -5.00000000000000e-01 5.69789167870231e-02 + -1.50000000000000e-01 -4.50000000000000e-01 5.69587986209315e-02 + -1.50000000000000e-01 -4.00000000000000e-01 5.68980528515944e-02 + -1.50000000000000e-01 -3.50000000000000e-01 5.67954866062013e-02 + -1.50000000000000e-01 -3.00000000000000e-01 5.66490993774396e-02 + -1.50000000000000e-01 -2.50000000000000e-01 5.64560327764615e-02 + -1.50000000000000e-01 -2.00000000000000e-01 5.62125820265710e-02 + -1.50000000000000e-01 -1.50000000000000e-01 5.59141941381976e-02 + -1.50000000000000e-01 -1.00000000000000e-01 5.55555933406029e-02 + -1.50000000000000e-01 -5.00000000000000e-02 5.51310598644380e-02 + -1.50000000000000e-01 0.00000000000000e+00 5.46350734903752e-02 + -1.50000000000000e-01 5.00000000000000e-02 5.40637165378219e-02 + -1.50000000000000e-01 1.00000000000000e-01 5.34174464615303e-02 + -1.50000000000000e-01 1.50000000000000e-01 5.27066154263324e-02 + -1.50000000000000e-01 2.00000000000000e-01 5.19621723950180e-02 + -1.50000000000000e-01 2.50000000000000e-01 5.12562005554054e-02 + -1.50000000000000e-01 3.00000000000000e-01 5.07406150755176e-02 + -1.50000000000000e-01 3.50000000000000e-01 5.07168009324635e-02 + -1.50000000000000e-01 4.00000000000000e-01 5.17479880199090e-02 + -1.50000000000000e-01 4.50000000000000e-01 5.47855043576297e-02 + -1.50000000000000e-01 5.00000000000000e-01 6.10672523401434e-02 + -1.50000000000000e-01 5.50000000000000e-01 7.07506402246161e-02 + -1.50000000000000e-01 6.00000000000000e-01 7.72558411119642e-02 + -1.50000000000000e-01 6.50000000000000e-01 8.05918431991469e-02 + -1.50000000000000e-01 7.00000000000000e-01 8.19058119987516e-02 + -1.50000000000000e-01 7.50000000000000e-01 8.21181753856239e-02 + -1.50000000000000e-01 8.00000000000000e-01 8.17901780272889e-02 + -1.50000000000000e-01 8.50000000000000e-01 8.12308834040688e-02 + -1.50000000000000e-01 9.00000000000000e-01 8.06013761823343e-02 + -1.50000000000000e-01 9.50000000000000e-01 7.99817348021264e-02 + -1.50000000000000e-01 1.00000000000000e+00 7.94091653886967e-02 + -1.50000000000000e-01 1.05000000000000e+00 7.88987599491811e-02 + -1.50000000000000e-01 1.10000000000000e+00 7.84545048791745e-02 + -1.50000000000000e-01 1.15000000000000e+00 7.80751452042266e-02 + -1.50000000000000e-01 1.20000000000000e+00 7.77571998912700e-02 + -1.50000000000000e-01 1.25000000000000e+00 7.74965425816075e-02 + -1.50000000000000e-01 1.30000000000000e+00 7.72891715904581e-02 + -1.50000000000000e-01 1.35000000000000e+00 7.71316025142116e-02 + -1.50000000000000e-01 1.40000000000000e+00 7.70210583961004e-02 + -1.50000000000000e-01 1.45000000000000e+00 7.69555364476163e-02 + -1.50000000000000e-01 1.50000000000000e+00 7.69338274146209e-02 - -1.00000000000000e-01 -5.00000000000000e-01 5.71324180463209e-02 - -1.00000000000000e-01 -4.50000000000000e-01 5.71129263902988e-02 - -1.00000000000000e-01 -4.00000000000000e-01 5.70540659994676e-02 - -1.00000000000000e-01 -3.50000000000000e-01 5.69546727086248e-02 - -1.00000000000000e-01 -3.00000000000000e-01 5.68127564768405e-02 - -1.00000000000000e-01 -2.50000000000000e-01 5.66254848120849e-02 - -1.00000000000000e-01 -2.00000000000000e-01 5.63890822809280e-02 - -1.00000000000000e-01 -1.50000000000000e-01 5.60988063913649e-02 - -1.00000000000000e-01 -1.00000000000000e-01 5.57488581477500e-02 - -1.00000000000000e-01 -5.00000000000000e-02 5.53323742445892e-02 - -1.00000000000000e-01 0.00000000000000e+00 5.48415009382523e-02 - -1.00000000000000e-01 5.00000000000000e-02 5.42676456122447e-02 - -1.00000000000000e-01 1.00000000000000e-01 5.36021697543665e-02 - -1.00000000000000e-01 1.50000000000000e-01 5.28379804562544e-02 - -1.00000000000000e-01 2.00000000000000e-01 5.19732234997309e-02 - -1.00000000000000e-01 2.50000000000000e-01 5.10202072510407e-02 - -1.00000000000000e-01 3.00000000000000e-01 5.00288459687872e-02 - -1.00000000000000e-01 3.50000000000000e-01 4.91512536109060e-02 - -1.00000000000000e-01 4.00000000000000e-01 4.88244355972501e-02 - -1.00000000000000e-01 4.50000000000000e-01 5.02694539351110e-02 - -1.00000000000000e-01 5.00000000000000e-01 5.66686036259299e-02 - -1.00000000000000e-01 5.50000000000000e-01 7.45973391974885e-02 - -1.00000000000000e-01 6.00000000000000e-01 8.14735838778873e-02 - -1.00000000000000e-01 6.50000000000000e-01 8.34095238125602e-02 - -1.00000000000000e-01 7.00000000000000e-01 8.34644604056433e-02 - -1.00000000000000e-01 7.50000000000000e-01 8.28659969204675e-02 - -1.00000000000000e-01 8.00000000000000e-01 8.20792969652647e-02 - -1.00000000000000e-01 8.50000000000000e-01 8.12796891488048e-02 - -1.00000000000000e-01 9.00000000000000e-01 8.05329351414093e-02 - -1.00000000000000e-01 9.50000000000000e-01 7.98618551959090e-02 - -1.00000000000000e-01 1.00000000000000e+00 7.92716821979324e-02 - -1.00000000000000e-01 1.05000000000000e+00 7.87602452374119e-02 - -1.00000000000000e-01 1.10000000000000e+00 7.83224441984684e-02 - -1.00000000000000e-01 1.15000000000000e+00 7.79522859264060e-02 - -1.00000000000000e-01 1.20000000000000e+00 7.76439091668227e-02 - -1.00000000000000e-01 1.25000000000000e+00 7.73920015522409e-02 - -1.00000000000000e-01 1.30000000000000e+00 7.71920200354453e-02 - -1.00000000000000e-01 1.35000000000000e+00 7.70402569105542e-02 - -1.00000000000000e-01 1.40000000000000e+00 7.69338669567752e-02 - -1.00000000000000e-01 1.45000000000000e+00 7.68708279595465e-02 - -1.00000000000000e-01 1.50000000000000e+00 7.68499457936114e-02 + -1.00000000000000e-01 -5.00000000000000e-01 5.70394373451525e-02 + -1.00000000000000e-01 -4.50000000000000e-01 5.70199168951794e-02 + -1.00000000000000e-01 -4.00000000000000e-01 5.69609705416256e-02 + -1.00000000000000e-01 -3.50000000000000e-01 5.68614362183793e-02 + -1.00000000000000e-01 -3.00000000000000e-01 5.67193276120699e-02 + -1.00000000000000e-01 -2.50000000000000e-01 5.65318182888045e-02 + -1.00000000000000e-01 -2.00000000000000e-01 5.62951438082895e-02 + -1.00000000000000e-01 -1.50000000000000e-01 5.60045775596525e-02 + -1.00000000000000e-01 -1.00000000000000e-01 5.56543463667500e-02 + -1.00000000000000e-01 -5.00000000000000e-02 5.52376266821339e-02 + -1.00000000000000e-01 0.00000000000000e+00 5.47466249549229e-02 + -1.00000000000000e-01 5.00000000000000e-02 5.41728440306570e-02 + -1.00000000000000e-01 1.00000000000000e-01 5.35077914452451e-02 + -1.00000000000000e-01 1.50000000000000e-01 5.27446078927066e-02 + -1.00000000000000e-01 2.00000000000000e-01 5.18818103127473e-02 + -1.00000000000000e-01 2.50000000000000e-01 5.09323232974232e-02 + -1.00000000000000e-01 3.00000000000000e-01 4.99471002077913e-02 + -1.00000000000000e-01 3.50000000000000e-01 4.90800644223999e-02 + -1.00000000000000e-01 4.00000000000000e-01 4.87714522682168e-02 + -1.00000000000000e-01 4.50000000000000e-01 5.02485055529545e-02 + -1.00000000000000e-01 5.00000000000000e-01 5.67090731405982e-02 + -1.00000000000000e-01 5.50000000000000e-01 7.47970807360597e-02 + -1.00000000000000e-01 6.00000000000000e-01 8.16763953835768e-02 + -1.00000000000000e-01 6.50000000000000e-01 8.35817795190296e-02 + -1.00000000000000e-01 7.00000000000000e-01 8.36055225614645e-02 + -1.00000000000000e-01 7.50000000000000e-01 8.29814071328532e-02 + -1.00000000000000e-01 8.00000000000000e-01 8.21744451684796e-02 + -1.00000000000000e-01 8.50000000000000e-01 8.13588264092735e-02 + -1.00000000000000e-01 9.00000000000000e-01 8.05993045510761e-02 + -1.00000000000000e-01 9.50000000000000e-01 7.99179519227624e-02 + -1.00000000000000e-01 1.00000000000000e+00 7.93194577896342e-02 + -1.00000000000000e-01 1.05000000000000e+00 7.88012531007122e-02 + -1.00000000000000e-01 1.10000000000000e+00 7.83579419170115e-02 + -1.00000000000000e-01 1.15000000000000e+00 7.79833075742096e-02 + -1.00000000000000e-01 1.20000000000000e+00 7.76713191400892e-02 + -1.00000000000000e-01 1.25000000000000e+00 7.74165347028633e-02 + -1.00000000000000e-01 1.30000000000000e+00 7.72143144542921e-02 + -1.00000000000000e-01 1.35000000000000e+00 7.70608777525274e-02 + -1.00000000000000e-01 1.40000000000000e+00 7.69533273735387e-02 + -1.00000000000000e-01 1.45000000000000e+00 7.68896058125447e-02 + -1.00000000000000e-01 1.50000000000000e+00 7.68684986460991e-02 - -5.00000000000000e-02 -5.00000000000000e-01 5.72318296783572e-02 - -5.00000000000000e-02 -4.50000000000000e-01 5.72133245284921e-02 - -5.00000000000000e-02 -4.00000000000000e-01 5.71574443870317e-02 - -5.00000000000000e-02 -3.50000000000000e-01 5.70630685598334e-02 - -5.00000000000000e-02 -3.00000000000000e-01 5.69283031816811e-02 - -5.00000000000000e-02 -2.50000000000000e-01 5.67503675332961e-02 - -5.00000000000000e-02 -2.00000000000000e-01 5.65255415062731e-02 - -5.00000000000000e-02 -1.50000000000000e-01 5.62489339240399e-02 - -5.00000000000000e-02 -1.00000000000000e-01 5.59143011408400e-02 - -5.00000000000000e-02 -5.00000000000000e-02 5.55136355124612e-02 - -5.00000000000000e-02 0.00000000000000e+00 5.50365493974676e-02 - -5.00000000000000e-02 5.00000000000000e-02 5.44692477794063e-02 - -5.00000000000000e-02 1.00000000000000e-01 5.37926273915988e-02 - -5.00000000000000e-02 1.50000000000000e-01 5.29788229046109e-02 - -5.00000000000000e-02 2.00000000000000e-01 5.19847427728418e-02 - -5.00000000000000e-02 2.50000000000000e-01 5.07404312789935e-02 - -5.00000000000000e-02 3.00000000000000e-01 4.91305413508758e-02 - -5.00000000000000e-02 3.50000000000000e-01 4.69773824952545e-02 - -5.00000000000000e-02 4.00000000000000e-01 4.40957613035285e-02 - -5.00000000000000e-02 4.50000000000000e-01 4.08037223560333e-02 - -5.00000000000000e-02 5.00000000000000e-01 4.08011360608585e-02 - -5.00000000000000e-02 5.50000000000000e-01 8.96315372381631e-02 - -5.00000000000000e-02 6.00000000000000e-01 9.07911860358257e-02 - -5.00000000000000e-02 6.50000000000000e-01 8.82620783284282e-02 - -5.00000000000000e-02 7.00000000000000e-01 8.58130276502557e-02 - -5.00000000000000e-02 7.50000000000000e-01 8.39189154714030e-02 - -5.00000000000000e-02 8.00000000000000e-01 8.24799352472960e-02 - -5.00000000000000e-02 8.50000000000000e-01 8.13585531511443e-02 - -5.00000000000000e-02 9.00000000000000e-01 8.04586092065231e-02 - -5.00000000000000e-02 9.50000000000000e-01 7.97201062750506e-02 - -5.00000000000000e-02 1.00000000000000e+00 7.91056762203004e-02 - -5.00000000000000e-02 1.05000000000000e+00 7.85911268464648e-02 - -5.00000000000000e-02 1.10000000000000e+00 7.81598966102483e-02 - -5.00000000000000e-02 1.15000000000000e+00 7.78000789873192e-02 - -5.00000000000000e-02 1.20000000000000e+00 7.75027548136268e-02 - -5.00000000000000e-02 1.25000000000000e+00 7.72611001282382e-02 - -5.00000000000000e-02 1.30000000000000e+00 7.70698514854258e-02 - -5.00000000000000e-02 1.35000000000000e+00 7.69249858241346e-02 - -5.00000000000000e-02 1.40000000000000e+00 7.68235374524673e-02 - -5.00000000000000e-02 1.45000000000000e+00 7.67634656993293e-02 - -5.00000000000000e-02 1.50000000000000e+00 7.67435717492359e-02 + -5.00000000000000e-02 -5.00000000000000e-01 5.71389889403397e-02 + -5.00000000000000e-02 -4.50000000000000e-01 5.71204526771821e-02 + -5.00000000000000e-02 -4.00000000000000e-01 5.70644798600095e-02 + -5.00000000000000e-02 -3.50000000000000e-01 5.69699502068805e-02 + -5.00000000000000e-02 -3.00000000000000e-01 5.68349707255305e-02 + -5.00000000000000e-02 -2.50000000000000e-01 5.66567637302400e-02 + -5.00000000000000e-02 -2.00000000000000e-01 5.64316117651012e-02 + -5.00000000000000e-02 -1.50000000000000e-01 5.61546308942936e-02 + -5.00000000000000e-02 -1.00000000000000e-01 5.58195861618646e-02 + -5.00000000000000e-02 -5.00000000000000e-02 5.54184834679763e-02 + -5.00000000000000e-02 0.00000000000000e+00 5.49409561379830e-02 + -5.00000000000000e-02 5.00000000000000e-02 5.43732365960837e-02 + -5.00000000000000e-02 1.00000000000000e-01 5.36962635659655e-02 + -5.00000000000000e-02 1.50000000000000e-01 5.28822290566889e-02 + -5.00000000000000e-02 2.00000000000000e-01 5.18881349194210e-02 + -5.00000000000000e-02 2.50000000000000e-01 5.06441904441539e-02 + -5.00000000000000e-02 3.00000000000000e-01 4.90354030999905e-02 + -5.00000000000000e-02 3.50000000000000e-01 4.68849072250751e-02 + -5.00000000000000e-02 4.00000000000000e-01 4.40092574684697e-02 + -5.00000000000000e-02 4.50000000000000e-01 4.07279971327864e-02 + -5.00000000000000e-02 5.00000000000000e-01 4.07234479775400e-02 + -5.00000000000000e-02 5.50000000000000e-01 9.00522223986334e-02 + -5.00000000000000e-02 6.00000000000000e-01 9.10708811131198e-02 + -5.00000000000000e-02 6.50000000000000e-01 8.84533642807943e-02 + -5.00000000000000e-02 7.00000000000000e-01 8.59531026360488e-02 + -5.00000000000000e-02 7.50000000000000e-01 8.40274942286798e-02 + -5.00000000000000e-02 8.00000000000000e-01 8.25673692290654e-02 + -5.00000000000000e-02 8.50000000000000e-01 8.14306779912017e-02 + -5.00000000000000e-02 9.00000000000000e-01 8.05190463849904e-02 + -5.00000000000000e-02 9.50000000000000e-01 7.97713161685316e-02 + -5.00000000000000e-02 1.00000000000000e+00 7.91494561397810e-02 + -5.00000000000000e-02 1.05000000000000e+00 7.86288600836754e-02 + -5.00000000000000e-02 1.10000000000000e+00 7.81926879626874e-02 + -5.00000000000000e-02 1.15000000000000e+00 7.78288366429898e-02 + -5.00000000000000e-02 1.20000000000000e+00 7.75282407576041e-02 + -5.00000000000000e-02 1.25000000000000e+00 7.72839687649258e-02 + -5.00000000000000e-02 1.30000000000000e+00 7.70906743724182e-02 + -5.00000000000000e-02 1.35000000000000e+00 7.69442750857352e-02 + -5.00000000000000e-02 1.40000000000000e+00 7.68417604021593e-02 + -5.00000000000000e-02 1.45000000000000e+00 7.67810605573789e-02 + -5.00000000000000e-02 1.50000000000000e+00 7.67609592007179e-02 - 0.00000000000000e+00 -5.00000000000000e-01 5.73682450521874e-02 - 0.00000000000000e+00 -4.50000000000000e-01 5.73510975512595e-02 - 0.00000000000000e+00 -4.00000000000000e-01 5.72993088368013e-02 - 0.00000000000000e+00 -3.50000000000000e-01 5.72118696168989e-02 - 0.00000000000000e+00 -3.00000000000000e-01 5.70870119634156e-02 - 0.00000000000000e+00 -2.50000000000000e-01 5.69221646353599e-02 - 0.00000000000000e+00 -2.00000000000000e-01 5.67137764148140e-02 - 0.00000000000000e+00 -1.50000000000000e-01 5.64570949295560e-02 - 0.00000000000000e+00 -1.00000000000000e-01 5.61457865332567e-02 - 0.00000000000000e+00 -5.00000000000000e-02 5.57713132190735e-02 - 0.00000000000000e+00 0.00000000000000e+00 5.53218168680443e-02 - 0.00000000000000e+00 5.00000000000000e-02 5.47801613629021e-02 - 0.00000000000000e+00 1.00000000000000e-01 5.41202685014943e-02 - 0.00000000000000e+00 1.50000000000000e-01 5.32999415283640e-02 - 0.00000000000000e+00 2.00000000000000e-01 5.22465012606997e-02 - 0.00000000000000e+00 2.50000000000000e-01 5.08262378652278e-02 - 0.00000000000000e+00 3.00000000000000e-01 4.87755018227987e-02 - 0.00000000000000e+00 3.50000000000000e-01 4.55319879982991e-02 - 0.00000000000000e+00 4.00000000000000e-01 3.97775091200787e-02 - 0.00000000000000e+00 4.50000000000000e-01 2.80485407376803e-02 + 0.00000000000000e+00 -5.00000000000000e-01 5.72756062320320e-02 + 0.00000000000000e+00 -4.50000000000000e-01 5.72584252960532e-02 + 0.00000000000000e+00 -4.00000000000000e-01 5.72065363895202e-02 + 0.00000000000000e+00 -3.50000000000000e-01 5.71189288467221e-02 + 0.00000000000000e+00 -3.00000000000000e-01 5.69938336429756e-02 + 0.00000000000000e+00 -2.50000000000000e-01 5.68286766004051e-02 + 0.00000000000000e+00 -2.00000000000000e-01 5.66199032619524e-02 + 0.00000000000000e+00 -1.50000000000000e-01 5.63627557717564e-02 + 0.00000000000000e+00 -1.00000000000000e-01 5.60508924635702e-02 + 0.00000000000000e+00 -5.00000000000000e-02 5.56757616126449e-02 + 0.00000000000000e+00 0.00000000000000e+00 5.52254816346592e-02 + 0.00000000000000e+00 5.00000000000000e-02 5.46828768414905e-02 + 0.00000000000000e+00 1.00000000000000e-01 5.40217949545702e-02 + 0.00000000000000e+00 1.50000000000000e-01 5.31999114801298e-02 + 0.00000000000000e+00 2.00000000000000e-01 5.21443164748250e-02 + 0.00000000000000e+00 2.50000000000000e-01 5.07209048374505e-02 + 0.00000000000000e+00 3.00000000000000e-01 4.86654107005178e-02 + 0.00000000000000e+00 3.50000000000000e-01 4.54149181929113e-02 + 0.00000000000000e+00 4.00000000000000e-01 3.96526773621780e-02 + 0.00000000000000e+00 4.50000000000000e-01 2.79307809896966e-02 0.00000000000000e+00 5.00000000000000e-01 0.00000000000000e+00 - 0.00000000000000e+00 5.50000000000000e-01 1.28184471221416e-01 - 0.00000000000000e+00 6.00000000000000e-01 1.03797549223777e-01 - 0.00000000000000e+00 6.50000000000000e-01 9.30345830904686e-02 - 0.00000000000000e+00 7.00000000000000e-01 8.76066540328128e-02 - 0.00000000000000e+00 7.50000000000000e-01 8.45167183687205e-02 - 0.00000000000000e+00 8.00000000000000e-01 8.25629822716557e-02 - 0.00000000000000e+00 8.50000000000000e-01 8.12159666944304e-02 - 0.00000000000000e+00 9.00000000000000e-01 8.02228503562939e-02 - 0.00000000000000e+00 9.50000000000000e-01 7.94542723259148e-02 - 0.00000000000000e+00 1.00000000000000e+00 7.88397977945828e-02 - 0.00000000000000e+00 1.05000000000000e+00 7.83386794855796e-02 - 0.00000000000000e+00 1.10000000000000e+00 7.79259434363440e-02 - 0.00000000000000e+00 1.15000000000000e+00 7.75853780618439e-02 - 0.00000000000000e+00 1.20000000000000e+00 7.73059402553391e-02 - 0.00000000000000e+00 1.25000000000000e+00 7.70797994633801e-02 - 0.00000000000000e+00 1.30000000000000e+00 7.69013020934401e-02 - 0.00000000000000e+00 1.35000000000000e+00 7.67662966043270e-02 - 0.00000000000000e+00 1.40000000000000e+00 7.66718338585653e-02 - 0.00000000000000e+00 1.45000000000000e+00 7.66159270791484e-02 - 0.00000000000000e+00 1.50000000000000e+00 7.65974153926833e-02 + 0.00000000000000e+00 5.50000000000000e-01 1.28895663005651e-01 + 0.00000000000000e+00 6.00000000000000e-01 1.04101546482178e-01 + 0.00000000000000e+00 6.50000000000000e-01 9.32077019824563e-02 + 0.00000000000000e+00 7.00000000000000e-01 8.77260267329504e-02 + 0.00000000000000e+00 7.50000000000000e-01 8.46081139339523e-02 + 0.00000000000000e+00 8.00000000000000e-01 8.26368657376922e-02 + 0.00000000000000e+00 8.50000000000000e-01 8.12774582610419e-02 + 0.00000000000000e+00 9.00000000000000e-01 8.02748944535190e-02 + 0.00000000000000e+00 9.50000000000000e-01 7.94987983497728e-02 + 0.00000000000000e+00 1.00000000000000e+00 7.88781988252472e-02 + 0.00000000000000e+00 1.05000000000000e+00 7.83720325434045e-02 + 0.00000000000000e+00 1.10000000000000e+00 7.79551208578914e-02 + 0.00000000000000e+00 1.15000000000000e+00 7.76111081917547e-02 + 0.00000000000000e+00 1.20000000000000e+00 7.73288481636863e-02 + 0.00000000000000e+00 1.25000000000000e+00 7.71004303812231e-02 + 0.00000000000000e+00 1.30000000000000e+00 7.69201419284621e-02 + 0.00000000000000e+00 1.35000000000000e+00 7.67837860088421e-02 + 0.00000000000000e+00 1.40000000000000e+00 7.66883813032786e-02 + 0.00000000000000e+00 1.45000000000000e+00 7.66319175263435e-02 + 0.00000000000000e+00 1.50000000000000e+00 7.66132218848662e-02 - 5.00000000000000e-02 -5.00000000000000e-01 5.75389602519181e-02 - 5.00000000000000e-02 -4.50000000000000e-01 5.75235016023489e-02 - 5.00000000000000e-02 -4.00000000000000e-01 5.74768368921666e-02 - 5.00000000000000e-02 -3.50000000000000e-01 5.73980823494028e-02 - 5.00000000000000e-02 -3.00000000000000e-01 5.72857263479412e-02 - 5.00000000000000e-02 -2.50000000000000e-01 5.71375103271721e-02 - 5.00000000000000e-02 -2.00000000000000e-01 5.69503175010377e-02 - 5.00000000000000e-02 -1.50000000000000e-01 5.67198854407359e-02 - 5.00000000000000e-02 -1.00000000000000e-01 5.64404455867888e-02 - 5.00000000000000e-02 -5.00000000000000e-02 5.61040124960770e-02 - 5.00000000000000e-02 0.00000000000000e+00 5.56992322287285e-02 - 5.00000000000000e-02 5.00000000000000e-02 5.52093230345800e-02 - 5.00000000000000e-02 1.00000000000000e-01 5.46083357581076e-02 - 5.00000000000000e-02 1.50000000000000e-01 5.38541713543311e-02 - 5.00000000000000e-02 2.00000000000000e-01 5.28750810755428e-02 - 5.00000000000000e-02 2.50000000000000e-01 5.15425183575789e-02 - 5.00000000000000e-02 3.00000000000000e-01 4.96132498910919e-02 - 5.00000000000000e-02 3.50000000000000e-01 4.65975544768760e-02 - 5.00000000000000e-02 4.00000000000000e-01 4.14337555207059e-02 - 5.00000000000000e-02 4.50000000000000e-01 3.16129372370502e-02 - 5.00000000000000e-02 5.00000000000000e-01 1.06280889942267e-02 - 5.00000000000000e-02 5.50000000000000e-01 1.27721706581849e-01 - 5.00000000000000e-02 6.00000000000000e-01 1.03179953105152e-01 - 5.00000000000000e-02 6.50000000000000e-01 9.24720589720672e-02 - 5.00000000000000e-02 7.00000000000000e-01 8.70622992458244e-02 - 5.00000000000000e-02 7.50000000000000e-01 8.39783225938880e-02 - 5.00000000000000e-02 8.00000000000000e-01 8.20393044193384e-02 - 5.00000000000000e-02 8.50000000000000e-01 8.07194934618307e-02 - 5.00000000000000e-02 9.00000000000000e-01 7.97625468984186e-02 - 5.00000000000000e-02 9.50000000000000e-01 7.90343424672342e-02 - 5.00000000000000e-02 1.00000000000000e+00 7.84605489218648e-02 - 5.00000000000000e-02 1.05000000000000e+00 7.79978561959969e-02 - 5.00000000000000e-02 1.10000000000000e+00 7.76198189542274e-02 - 5.00000000000000e-02 1.15000000000000e+00 7.73095565162028e-02 - 5.00000000000000e-02 1.20000000000000e+00 7.70558195766513e-02 - 5.00000000000000e-02 1.25000000000000e+00 7.68508735886470e-02 - 5.00000000000000e-02 1.30000000000000e+00 7.66892525912547e-02 - 5.00000000000000e-02 1.35000000000000e+00 7.65670666061119e-02 - 5.00000000000000e-02 1.40000000000000e+00 7.64815808910289e-02 - 5.00000000000000e-02 1.45000000000000e+00 7.64309850436412e-02 - 5.00000000000000e-02 1.50000000000000e+00 7.64142339699679e-02 + 5.00000000000000e-02 -5.00000000000000e-01 5.74465899101006e-02 + 5.00000000000000e-02 -4.50000000000000e-01 5.74310958314036e-02 + 5.00000000000000e-02 -4.00000000000000e-01 5.73843240211753e-02 + 5.00000000000000e-02 -3.50000000000000e-01 5.73053887139659e-02 + 5.00000000000000e-02 -3.00000000000000e-01 5.71927733719627e-02 + 5.00000000000000e-02 -2.50000000000000e-01 5.70442132788116e-02 + 5.00000000000000e-02 -2.00000000000000e-01 5.68565808531274e-02 + 5.00000000000000e-02 -1.50000000000000e-01 5.66255988340878e-02 + 5.00000000000000e-02 -1.00000000000000e-01 5.63454747746730e-02 + 5.00000000000000e-02 -5.00000000000000e-02 5.60081865219147e-02 + 5.00000000000000e-02 0.00000000000000e+00 5.56023219910271e-02 + 5.00000000000000e-02 5.00000000000000e-02 5.51110030467861e-02 + 5.00000000000000e-02 1.00000000000000e-01 5.45081212453193e-02 + 5.00000000000000e-02 1.50000000000000e-01 5.37513026312881e-02 + 5.00000000000000e-02 2.00000000000000e-01 5.27683133727099e-02 + 5.00000000000000e-02 2.50000000000000e-01 5.14297024515201e-02 + 5.00000000000000e-02 3.00000000000000e-01 4.94904265593905e-02 + 5.00000000000000e-02 3.50000000000000e-01 4.64566734133697e-02 + 5.00000000000000e-02 4.00000000000000e-01 4.12557618170967e-02 + 5.00000000000000e-02 4.50000000000000e-01 3.13424549333376e-02 + 5.00000000000000e-02 5.00000000000000e-01 1.00657851067270e-02 + 5.00000000000000e-02 5.50000000000000e-01 1.27582232913454e-01 + 5.00000000000000e-02 6.00000000000000e-01 1.03231937777629e-01 + 5.00000000000000e-02 6.50000000000000e-01 9.25498776848678e-02 + 5.00000000000000e-02 7.00000000000000e-01 8.71352009073516e-02 + 5.00000000000000e-02 7.50000000000000e-01 8.40420694584433e-02 + 5.00000000000000e-02 8.00000000000000e-01 8.20945176410252e-02 + 5.00000000000000e-02 8.50000000000000e-01 8.07674064610573e-02 + 5.00000000000000e-02 9.00000000000000e-01 7.98042684114036e-02 + 5.00000000000000e-02 9.50000000000000e-01 7.90707912599030e-02 + 5.00000000000000e-02 1.00000000000000e+00 7.84924939091552e-02 + 5.00000000000000e-02 1.05000000000000e+00 7.80259572536730e-02 + 5.00000000000000e-02 1.10000000000000e+00 7.76446524336671e-02 + 5.00000000000000e-02 1.15000000000000e+00 7.73316349177509e-02 + 5.00000000000000e-02 1.20000000000000e+00 7.70756029451179e-02 + 5.00000000000000e-02 1.25000000000000e+00 7.68687809526785e-02 + 5.00000000000000e-02 1.30000000000000e+00 7.67056679090827e-02 + 5.00000000000000e-02 1.35000000000000e+00 7.65823483413563e-02 + 5.00000000000000e-02 1.40000000000000e+00 7.64960666294871e-02 + 5.00000000000000e-02 1.45000000000000e+00 7.64449988617569e-02 + 5.00000000000000e-02 1.50000000000000e+00 7.64280911857832e-02 - 1.00000000000000e-01 -5.00000000000000e-01 5.77405936533210e-02 - 1.00000000000000e-01 -4.50000000000000e-01 5.77271162391078e-02 - 1.00000000000000e-01 -4.00000000000000e-01 5.76864527647051e-02 - 1.00000000000000e-01 -3.50000000000000e-01 5.76179133281916e-02 - 1.00000000000000e-01 -3.00000000000000e-01 5.75202993683089e-02 - 1.00000000000000e-01 -2.50000000000000e-01 5.73918503619193e-02 - 1.00000000000000e-01 -2.00000000000000e-01 5.72300970035859e-02 - 1.00000000000000e-01 -1.50000000000000e-01 5.70316950109265e-02 - 1.00000000000000e-01 -1.00000000000000e-01 5.67920979718090e-02 - 1.00000000000000e-01 -5.00000000000000e-02 5.65050557713981e-02 - 1.00000000000000e-01 0.00000000000000e+00 5.61617717998731e-02 - 1.00000000000000e-01 5.00000000000000e-02 5.57495587034530e-02 - 1.00000000000000e-01 1.00000000000000e-01 5.52495846127029e-02 - 1.00000000000000e-01 1.50000000000000e-01 5.46333118455770e-02 - 1.00000000000000e-01 2.00000000000000e-01 5.38571346416226e-02 - 1.00000000000000e-01 2.50000000000000e-01 5.28555055539503e-02 - 1.00000000000000e-01 3.00000000000000e-01 5.15374272324202e-02 - 1.00000000000000e-01 3.50000000000000e-01 4.98112397470368e-02 - 1.00000000000000e-01 4.00000000000000e-01 4.77470202495746e-02 - 1.00000000000000e-01 4.50000000000000e-01 4.63413691927602e-02 - 1.00000000000000e-01 5.00000000000000e-01 5.08655008212081e-02 - 1.00000000000000e-01 5.50000000000000e-01 8.53840829843064e-02 - 1.00000000000000e-01 6.00000000000000e-01 8.87285130920120e-02 - 1.00000000000000e-01 6.50000000000000e-01 8.66113934433457e-02 - 1.00000000000000e-01 7.00000000000000e-01 8.41921763415971e-02 - 1.00000000000000e-01 7.50000000000000e-01 8.22949611957692e-02 - 1.00000000000000e-01 8.00000000000000e-01 8.08964291090510e-02 - 1.00000000000000e-01 8.50000000000000e-01 7.98601540004782e-02 - 1.00000000000000e-01 9.00000000000000e-01 7.90735099728349e-02 - 1.00000000000000e-01 9.50000000000000e-01 7.84599988174111e-02 - 1.00000000000000e-01 1.00000000000000e+00 7.79701957276147e-02 - 1.00000000000000e-01 1.05000000000000e+00 7.75723735189535e-02 - 1.00000000000000e-01 1.10000000000000e+00 7.72459285553554e-02 - 1.00000000000000e-01 1.15000000000000e+00 7.69772002904062e-02 - 1.00000000000000e-01 1.20000000000000e+00 7.67569154290488e-02 - 1.00000000000000e-01 1.25000000000000e+00 7.65786211218193e-02 - 1.00000000000000e-01 1.30000000000000e+00 7.64377727087933e-02 - 1.00000000000000e-01 1.35000000000000e+00 7.63311302199634e-02 - 1.00000000000000e-01 1.40000000000000e+00 7.62564345099368e-02 - 1.00000000000000e-01 1.45000000000000e+00 7.62121902389812e-02 - 1.00000000000000e-01 1.50000000000000e+00 7.61975404518825e-02 + 1.00000000000000e-01 -5.00000000000000e-01 5.76485625071097e-02 + 1.00000000000000e-01 -4.50000000000000e-01 5.76350483078850e-02 + 1.00000000000000e-01 -4.00000000000000e-01 5.75942734725504e-02 + 1.00000000000000e-01 -3.50000000000000e-01 5.75255445338086e-02 + 1.00000000000000e-01 -3.00000000000000e-01 5.74276567163196e-02 + 1.00000000000000e-01 -2.50000000000000e-01 5.72988389472203e-02 + 1.00000000000000e-01 -2.00000000000000e-01 5.71366073025230e-02 + 1.00000000000000e-01 -1.50000000000000e-01 5.69375947700617e-02 + 1.00000000000000e-01 -1.00000000000000e-01 5.66972211406066e-02 + 1.00000000000000e-01 -5.00000000000000e-02 5.64091851871212e-02 + 1.00000000000000e-01 0.00000000000000e+00 5.60646113933535e-02 + 1.00000000000000e-01 5.00000000000000e-02 5.56506887660103e-02 + 1.00000000000000e-01 1.00000000000000e-01 5.51483877877115e-02 + 1.00000000000000e-01 1.50000000000000e-01 5.45288501056573e-02 + 1.00000000000000e-01 2.00000000000000e-01 5.37479327720630e-02 + 1.00000000000000e-01 2.50000000000000e-01 5.27391660858559e-02 + 1.00000000000000e-01 3.00000000000000e-01 5.14099214206514e-02 + 1.00000000000000e-01 3.50000000000000e-01 4.96656016301189e-02 + 1.00000000000000e-01 4.00000000000000e-01 4.75712407869589e-02 + 1.00000000000000e-01 4.50000000000000e-01 4.61174972568922e-02 + 1.00000000000000e-01 5.00000000000000e-01 5.05896165402202e-02 + 1.00000000000000e-01 5.50000000000000e-01 8.52416791195682e-02 + 1.00000000000000e-01 6.00000000000000e-01 8.86941080886648e-02 + 1.00000000000000e-01 6.50000000000000e-01 8.66246641610795e-02 + 1.00000000000000e-01 7.00000000000000e-01 8.42228432531086e-02 + 1.00000000000000e-01 7.50000000000000e-01 8.23304391287207e-02 + 1.00000000000000e-01 8.00000000000000e-01 8.09317374365788e-02 + 1.00000000000000e-01 8.50000000000000e-01 7.98933797104825e-02 + 1.00000000000000e-01 9.00000000000000e-01 7.91039897952285e-02 + 1.00000000000000e-01 9.50000000000000e-01 7.84876007947005e-02 + 1.00000000000000e-01 1.00000000000000e+00 7.79950255622760e-02 + 1.00000000000000e-01 1.05000000000000e+00 7.75946453606130e-02 + 1.00000000000000e-01 1.10000000000000e+00 7.72659062007679e-02 + 1.00000000000000e-01 1.15000000000000e+00 7.69951658858151e-02 + 1.00000000000000e-01 1.20000000000000e+00 7.67731560700394e-02 + 1.00000000000000e-01 1.25000000000000e+00 7.65934196630683e-02 + 1.00000000000000e-01 1.30000000000000e+00 7.64514058075120e-02 + 1.00000000000000e-01 1.35000000000000e+00 7.63438662413824e-02 + 1.00000000000000e-01 1.40000000000000e+00 7.62685354204406e-02 + 1.00000000000000e-01 1.45000000000000e+00 7.62239120521643e-02 + 1.00000000000000e-01 1.50000000000000e+00 7.62091359573428e-02 - 1.50000000000000e-01 -5.00000000000000e-01 5.79691898877835e-02 - 1.50000000000000e-01 -4.50000000000000e-01 5.79579241688637e-02 - 1.50000000000000e-01 -4.00000000000000e-01 5.79239514967290e-02 - 1.50000000000000e-01 -3.50000000000000e-01 5.78668214212823e-02 - 1.50000000000000e-01 -3.00000000000000e-01 5.77857244508577e-02 - 1.50000000000000e-01 -2.50000000000000e-01 5.76794956925100e-02 - 1.50000000000000e-01 -2.00000000000000e-01 5.75465308818273e-02 - 1.50000000000000e-01 -1.50000000000000e-01 5.73847016735568e-02 - 1.50000000000000e-01 -1.00000000000000e-01 5.71911991826123e-02 - 1.50000000000000e-01 -5.00000000000000e-02 5.69623315888254e-02 - 1.50000000000000e-01 0.00000000000000e+00 5.66932409187113e-02 - 1.50000000000000e-01 5.00000000000000e-02 5.63775554545651e-02 - 1.50000000000000e-01 1.00000000000000e-01 5.60071178668044e-02 - 1.50000000000000e-01 1.50000000000000e-01 5.55723491098961e-02 - 1.50000000000000e-01 2.00000000000000e-01 5.50646416660526e-02 - 1.50000000000000e-01 2.50000000000000e-01 5.44849360376522e-02 - 1.50000000000000e-01 3.00000000000000e-01 5.38697296026600e-02 - 1.50000000000000e-01 3.50000000000000e-01 5.33629614982074e-02 - 1.50000000000000e-01 4.00000000000000e-01 5.34017318537761e-02 - 1.50000000000000e-01 4.50000000000000e-01 5.51400179080560e-02 - 1.50000000000000e-01 5.00000000000000e-01 6.11084625222927e-02 - 1.50000000000000e-01 5.50000000000000e-01 7.42206174220656e-02 - 1.50000000000000e-01 6.00000000000000e-01 7.97386179646965e-02 - 1.50000000000000e-01 6.50000000000000e-01 8.10528344423962e-02 - 1.50000000000000e-01 7.00000000000000e-01 8.08000372815983e-02 - 1.50000000000000e-01 7.50000000000000e-01 8.01129202829308e-02 - 1.50000000000000e-01 8.00000000000000e-01 7.93912941758479e-02 - 1.50000000000000e-01 8.50000000000000e-01 7.87511854090184e-02 - 1.50000000000000e-01 9.00000000000000e-01 7.82113462921191e-02 - 1.50000000000000e-01 9.50000000000000e-01 7.77619518878371e-02 - 1.50000000000000e-01 1.00000000000000e+00 7.73878585158377e-02 - 1.50000000000000e-01 1.05000000000000e+00 7.70755146664905e-02 - 1.50000000000000e-01 1.10000000000000e+00 7.68143224359847e-02 - 1.50000000000000e-01 1.15000000000000e+00 7.65964088463181e-02 - 1.50000000000000e-01 1.20000000000000e+00 7.64160135836188e-02 - 1.50000000000000e-01 1.25000000000000e+00 7.62689343796408e-02 - 1.50000000000000e-01 1.30000000000000e+00 7.61520796941704e-02 - 1.50000000000000e-01 1.35000000000000e+00 7.60632425858159e-02 - 1.50000000000000e-01 1.40000000000000e+00 7.60008282053883e-02 - 1.50000000000000e-01 1.45000000000000e+00 7.59637890295186e-02 - 1.50000000000000e-01 1.50000000000000e+00 7.59515148930114e-02 + 1.50000000000000e-01 -5.00000000000000e-01 5.78775712901200e-02 + 1.50000000000000e-01 -4.50000000000000e-01 5.78662683395563e-02 + 1.50000000000000e-01 -4.00000000000000e-01 5.78321837680070e-02 + 1.50000000000000e-01 -3.50000000000000e-01 5.77748618661759e-02 + 1.50000000000000e-01 -3.00000000000000e-01 5.76934861916811e-02 + 1.50000000000000e-01 -2.50000000000000e-01 5.75868795649693e-02 + 1.50000000000000e-01 -2.00000000000000e-01 5.74534201821094e-02 + 1.50000000000000e-01 -1.50000000000000e-01 5.72909536089226e-02 + 1.50000000000000e-01 -1.00000000000000e-01 5.70966334519423e-02 + 1.50000000000000e-01 -5.00000000000000e-02 5.68667124029016e-02 + 1.50000000000000e-01 0.00000000000000e+00 5.65962503060272e-02 + 1.50000000000000e-01 5.00000000000000e-02 5.62787522366447e-02 + 1.50000000000000e-01 1.00000000000000e-01 5.59058776852442e-02 + 1.50000000000000e-01 1.50000000000000e-01 5.54677696899032e-02 + 1.50000000000000e-01 2.00000000000000e-01 5.49554027676167e-02 + 1.50000000000000e-01 2.50000000000000e-01 5.43691019626782e-02 + 1.50000000000000e-01 3.00000000000000e-01 5.37445062235779e-02 + 1.50000000000000e-01 3.50000000000000e-01 5.32245755031485e-02 + 1.50000000000000e-01 4.00000000000000e-01 5.32461162989926e-02 + 1.50000000000000e-01 4.50000000000000e-01 5.49666763061792e-02 + 1.50000000000000e-01 5.00000000000000e-01 6.09335053748784e-02 + 1.50000000000000e-01 5.50000000000000e-01 7.41007639759652e-02 + 1.50000000000000e-01 6.00000000000000e-01 7.96781472311755e-02 + 1.50000000000000e-01 6.50000000000000e-01 8.10318357300620e-02 + 1.50000000000000e-01 7.00000000000000e-01 8.08010559700649e-02 + 1.50000000000000e-01 7.50000000000000e-01 8.01251090689566e-02 + 1.50000000000000e-01 8.00000000000000e-01 7.94086111375893e-02 + 1.50000000000000e-01 8.50000000000000e-01 7.87703866531764e-02 + 1.50000000000000e-01 9.00000000000000e-01 7.82307154339724e-02 + 1.50000000000000e-01 9.50000000000000e-01 7.77806013721409e-02 + 1.50000000000000e-01 1.00000000000000e+00 7.74053583619883e-02 + 1.50000000000000e-01 1.05000000000000e+00 7.70916940069396e-02 + 1.50000000000000e-01 1.10000000000000e+00 7.68291608916202e-02 + 1.50000000000000e-01 1.15000000000000e+00 7.66099751194614e-02 + 1.50000000000000e-01 1.20000000000000e+00 7.64284278678316e-02 + 1.50000000000000e-01 1.25000000000000e+00 7.62803479020167e-02 + 1.50000000000000e-01 1.30000000000000e+00 7.61626618270826e-02 + 1.50000000000000e-01 1.35000000000000e+00 7.60731717587198e-02 + 1.50000000000000e-01 1.40000000000000e+00 7.60102885802773e-02 + 1.50000000000000e-01 1.45000000000000e+00 7.59729669854405e-02 + 1.50000000000000e-01 1.50000000000000e+00 7.59605981346401e-02 - 2.00000000000000e-01 -5.00000000000000e-01 5.82203426173860e-02 - 2.00000000000000e-01 -4.50000000000000e-01 5.82114337824088e-02 - 2.00000000000000e-01 -4.00000000000000e-01 5.81846219261064e-02 - 2.00000000000000e-01 -3.50000000000000e-01 5.81396970337003e-02 - 2.00000000000000e-01 -3.00000000000000e-01 5.80762867766703e-02 - 2.00000000000000e-01 -2.50000000000000e-01 5.79938826522154e-02 - 2.00000000000000e-01 -2.00000000000000e-01 5.78918353980342e-02 - 2.00000000000000e-01 -1.50000000000000e-01 5.77693812354391e-02 - 2.00000000000000e-01 -1.00000000000000e-01 5.76256550478177e-02 - 2.00000000000000e-01 -5.00000000000000e-02 5.74598280889989e-02 - 2.00000000000000e-01 0.00000000000000e+00 5.72713065580593e-02 - 2.00000000000000e-01 5.00000000000000e-02 5.70602924497283e-02 - 2.00000000000000e-01 1.00000000000000e-01 5.68289757530761e-02 - 2.00000000000000e-01 1.50000000000000e-01 5.65843291760972e-02 - 2.00000000000000e-01 2.00000000000000e-01 5.63441261642598e-02 - 2.00000000000000e-01 2.50000000000000e-01 5.61498803623395e-02 - 2.00000000000000e-01 3.00000000000000e-01 5.60935982485684e-02 - 2.00000000000000e-01 3.50000000000000e-01 5.63691556533117e-02 - 2.00000000000000e-01 4.00000000000000e-01 5.73569382164517e-02 - 2.00000000000000e-01 4.50000000000000e-01 5.97085069016254e-02 - 2.00000000000000e-01 5.00000000000000e-01 6.42077139088580e-02 - 2.00000000000000e-01 5.50000000000000e-01 7.06513028605092e-02 - 2.00000000000000e-01 6.00000000000000e-01 7.49525170471812e-02 - 2.00000000000000e-01 6.50000000000000e-01 7.70612754502331e-02 - 2.00000000000000e-01 7.00000000000000e-01 7.78422194853164e-02 - 2.00000000000000e-01 7.50000000000000e-01 7.79653732101190e-02 - 2.00000000000000e-01 8.00000000000000e-01 7.78046377586450e-02 - 2.00000000000000e-01 8.50000000000000e-01 7.75419547847425e-02 - 2.00000000000000e-01 9.00000000000000e-01 7.72587393148760e-02 - 2.00000000000000e-01 9.50000000000000e-01 7.69886028941744e-02 - 2.00000000000000e-01 1.00000000000000e+00 7.67437822030820e-02 - 2.00000000000000e-01 1.05000000000000e+00 7.65275039010208e-02 - 2.00000000000000e-01 1.10000000000000e+00 7.63394387859622e-02 - 2.00000000000000e-01 1.15000000000000e+00 7.61781035607093e-02 - 2.00000000000000e-01 1.20000000000000e+00 7.60418101619634e-02 - 2.00000000000000e-01 1.25000000000000e+00 7.59290050447113e-02 - 2.00000000000000e-01 1.30000000000000e+00 7.58383833339673e-02 - 2.00000000000000e-01 1.35000000000000e+00 7.57689214940412e-02 - 2.00000000000000e-01 1.40000000000000e+00 7.57198429305866e-02 - 2.00000000000000e-01 1.45000000000000e+00 7.56906069670694e-02 - 2.00000000000000e-01 1.50000000000000e+00 7.56808997277496e-02 + 2.00000000000000e-01 -5.00000000000000e-01 5.81292101129104e-02 + 2.00000000000000e-01 -4.50000000000000e-01 5.81202654902005e-02 + 2.00000000000000e-01 -4.00000000000000e-01 5.80933450181648e-02 + 2.00000000000000e-01 -3.50000000000000e-01 5.80482338639499e-02 + 2.00000000000000e-01 -3.00000000000000e-01 5.79845518249671e-02 + 2.00000000000000e-01 -2.50000000000000e-01 5.79017784137479e-02 + 2.00000000000000e-01 -2.00000000000000e-01 5.77992461632387e-02 + 2.00000000000000e-01 -1.50000000000000e-01 5.76761657158874e-02 + 2.00000000000000e-01 -1.00000000000000e-01 5.75316365820017e-02 + 2.00000000000000e-01 -5.00000000000000e-02 5.73647785908902e-02 + 2.00000000000000e-01 0.00000000000000e+00 5.71749262713416e-02 + 2.00000000000000e-01 5.00000000000000e-02 5.69621811029227e-02 + 2.00000000000000e-01 1.00000000000000e-01 5.67285945239345e-02 + 2.00000000000000e-01 1.50000000000000e-01 5.64809519617999e-02 + 2.00000000000000e-01 2.00000000000000e-01 5.62367870030707e-02 + 2.00000000000000e-01 2.50000000000000e-01 5.60373446331375e-02 + 2.00000000000000e-01 3.00000000000000e-01 5.59744306828469e-02 + 2.00000000000000e-01 3.50000000000000e-01 5.62420872032241e-02 + 2.00000000000000e-01 4.00000000000000e-01 5.72219831257859e-02 + 2.00000000000000e-01 4.50000000000000e-01 5.95695847851901e-02 + 2.00000000000000e-01 5.00000000000000e-01 6.40769641967790e-02 + 2.00000000000000e-01 5.50000000000000e-01 7.05497215833828e-02 + 2.00000000000000e-01 6.00000000000000e-01 7.48858900876938e-02 + 2.00000000000000e-01 6.50000000000000e-01 7.70234633093129e-02 + 2.00000000000000e-01 7.00000000000000e-01 7.78244364891538e-02 + 2.00000000000000e-01 7.50000000000000e-01 7.79603159919505e-02 + 2.00000000000000e-01 8.00000000000000e-01 7.78072071243056e-02 + 2.00000000000000e-01 8.50000000000000e-01 7.75488473931663e-02 + 2.00000000000000e-01 9.00000000000000e-01 7.72678850897452e-02 + 2.00000000000000e-01 9.50000000000000e-01 7.69987293643149e-02 + 2.00000000000000e-01 1.00000000000000e+00 7.67541224678426e-02 + 2.00000000000000e-01 1.05000000000000e+00 7.65376105578561e-02 + 2.00000000000000e-01 1.10000000000000e+00 7.63490699000604e-02 + 2.00000000000000e-01 1.15000000000000e+00 7.61871494062410e-02 + 2.00000000000000e-01 1.20000000000000e+00 7.60502467282354e-02 + 2.00000000000000e-01 1.25000000000000e+00 7.59368648689336e-02 + 2.00000000000000e-01 1.30000000000000e+00 7.58457358390557e-02 + 2.00000000000000e-01 1.35000000000000e+00 7.57758603317179e-02 + 2.00000000000000e-01 1.40000000000000e+00 7.57264768727554e-02 + 2.00000000000000e-01 1.45000000000000e+00 7.56970544784210e-02 + 2.00000000000000e-01 1.50000000000000e+00 7.56872842534385e-02 - 2.50000000000000e-01 -5.00000000000000e-01 5.84893181555756e-02 - 2.50000000000000e-01 -4.50000000000000e-01 5.84828414912791e-02 - 2.50000000000000e-01 -4.00000000000000e-01 5.84634072585246e-02 - 2.50000000000000e-01 -3.50000000000000e-01 5.84310589215524e-02 - 2.50000000000000e-01 -3.00000000000000e-01 5.83858430459974e-02 - 2.50000000000000e-01 -2.50000000000000e-01 5.83279100600793e-02 - 2.50000000000000e-01 -2.00000000000000e-01 5.82575519143411e-02 - 2.50000000000000e-01 -1.50000000000000e-01 5.81753200799838e-02 - 2.50000000000000e-01 -1.00000000000000e-01 5.80822077767736e-02 - 2.50000000000000e-01 -5.00000000000000e-02 5.79800132745569e-02 - 2.50000000000000e-01 0.00000000000000e+00 5.78718686644256e-02 - 2.50000000000000e-01 5.00000000000000e-02 5.77633157427780e-02 - 2.50000000000000e-01 1.00000000000000e-01 5.76641577290243e-02 - 2.50000000000000e-01 1.50000000000000e-01 5.75918648754712e-02 - 2.50000000000000e-01 2.00000000000000e-01 5.75776543428135e-02 - 2.50000000000000e-01 2.50000000000000e-01 5.76768563968322e-02 - 2.50000000000000e-01 3.00000000000000e-01 5.79856322691422e-02 - 2.50000000000000e-01 3.50000000000000e-01 5.86631452046577e-02 - 2.50000000000000e-01 4.00000000000000e-01 5.99483693709062e-02 - 2.50000000000000e-01 4.50000000000000e-01 6.21293378344297e-02 - 2.50000000000000e-01 5.00000000000000e-01 6.53625844298327e-02 - 2.50000000000000e-01 5.50000000000000e-01 6.92243603041341e-02 - 2.50000000000000e-01 6.00000000000000e-01 7.23588694729739e-02 - 2.50000000000000e-01 6.50000000000000e-01 7.43975436323186e-02 - 2.50000000000000e-01 7.00000000000000e-01 7.55421527145646e-02 - 2.50000000000000e-01 7.50000000000000e-01 7.61017236546529e-02 - 2.50000000000000e-01 8.00000000000000e-01 7.63199220061195e-02 - 2.50000000000000e-01 8.50000000000000e-01 7.63532596270775e-02 - 2.50000000000000e-01 9.00000000000000e-01 7.62930581081656e-02 - 2.50000000000000e-01 9.50000000000000e-01 7.61899353201120e-02 - 2.50000000000000e-01 1.00000000000000e+00 7.60711789877052e-02 - 2.50000000000000e-01 1.05000000000000e+00 7.59512759582207e-02 - 2.50000000000000e-01 1.10000000000000e+00 7.58378236078476e-02 - 2.50000000000000e-01 1.15000000000000e+00 7.57347672504468e-02 - 2.50000000000000e-01 1.20000000000000e+00 7.56441256710799e-02 - 2.50000000000000e-01 1.25000000000000e+00 7.55668965580614e-02 - 2.50000000000000e-01 1.30000000000000e+00 7.55035291466548e-02 - 2.50000000000000e-01 1.35000000000000e+00 7.54542184713530e-02 - 2.50000000000000e-01 1.40000000000000e+00 7.54190029844790e-02 - 2.50000000000000e-01 1.45000000000000e+00 7.53978898499957e-02 - 2.50000000000000e-01 1.50000000000000e+00 7.53908525016925e-02 + 2.50000000000000e-01 -5.00000000000000e-01 5.83987437635454e-02 + 2.50000000000000e-01 -4.50000000000000e-01 5.83922339523641e-02 + 2.50000000000000e-01 -4.00000000000000e-01 5.83726992016981e-02 + 2.50000000000000e-01 -3.50000000000000e-01 5.83401776417322e-02 + 2.50000000000000e-01 -3.00000000000000e-01 5.82947094316053e-02 + 2.50000000000000e-01 -2.50000000000000e-01 5.82364334225551e-02 + 2.50000000000000e-01 -2.00000000000000e-01 5.81656252769302e-02 + 2.50000000000000e-01 -1.50000000000000e-01 5.80828146231779e-02 + 2.50000000000000e-01 -1.00000000000000e-01 5.79889648996593e-02 + 2.50000000000000e-01 -5.00000000000000e-02 5.78858332521201e-02 + 2.50000000000000e-01 0.00000000000000e+00 5.77764991553968e-02 + 2.50000000000000e-01 5.00000000000000e-02 5.76664354726792e-02 + 2.50000000000000e-01 1.00000000000000e-01 5.75653620814754e-02 + 2.50000000000000e-01 1.50000000000000e-01 5.74906554338943e-02 + 2.50000000000000e-01 2.00000000000000e-01 5.74734493192217e-02 + 2.50000000000000e-01 2.50000000000000e-01 5.75690545919989e-02 + 2.50000000000000e-01 3.00000000000000e-01 5.78737883654603e-02 + 2.50000000000000e-01 3.50000000000000e-01 5.85473795085957e-02 + 2.50000000000000e-01 4.00000000000000e-01 5.98301537993457e-02 + 2.50000000000000e-01 4.50000000000000e-01 6.20126968905984e-02 + 2.50000000000000e-01 5.00000000000000e-01 6.52550461841867e-02 + 2.50000000000000e-01 5.50000000000000e-01 6.91352648525812e-02 + 2.50000000000000e-01 6.00000000000000e-01 7.22922265814369e-02 + 2.50000000000000e-01 6.50000000000000e-01 7.43517021868120e-02 + 2.50000000000000e-01 7.00000000000000e-01 7.55128740793361e-02 + 2.50000000000000e-01 7.50000000000000e-01 7.60845185559074e-02 + 2.50000000000000e-01 8.00000000000000e-01 7.63110476891440e-02 + 2.50000000000000e-01 8.50000000000000e-01 7.63499131000196e-02 + 2.50000000000000e-01 9.00000000000000e-01 7.62932526062811e-02 + 2.50000000000000e-01 9.50000000000000e-01 7.61923056155535e-02 + 2.50000000000000e-01 1.00000000000000e+00 7.60748060870512e-02 + 2.50000000000000e-01 1.05000000000000e+00 7.59555519614539e-02 + 2.50000000000000e-01 1.10000000000000e+00 7.58423572164715e-02 + 2.50000000000000e-01 1.15000000000000e+00 7.57393163512059e-02 + 2.50000000000000e-01 1.20000000000000e+00 7.56485519799792e-02 + 2.50000000000000e-01 1.25000000000000e+00 7.55711329131361e-02 + 2.50000000000000e-01 1.30000000000000e+00 7.55075589819198e-02 + 2.50000000000000e-01 1.35000000000000e+00 7.54580583136107e-02 + 2.50000000000000e-01 1.40000000000000e+00 7.54226931741502e-02 + 2.50000000000000e-01 1.45000000000000e+00 7.54014844361709e-02 + 2.50000000000000e-01 1.50000000000000e+00 7.53944142665857e-02 - 3.00000000000000e-01 -5.00000000000000e-01 5.87712386811042e-02 - 3.00000000000000e-01 -4.50000000000000e-01 5.87671906270712e-02 - 3.00000000000000e-01 -4.00000000000000e-01 5.87551177475046e-02 - 3.00000000000000e-01 -3.50000000000000e-01 5.87352747515328e-02 - 3.00000000000000e-01 -3.00000000000000e-01 5.87081161266170e-02 - 3.00000000000000e-01 -2.50000000000000e-01 5.86743598412819e-02 - 3.00000000000000e-01 -2.00000000000000e-01 5.86351386479721e-02 - 3.00000000000000e-01 -1.50000000000000e-01 5.85921208874902e-02 - 3.00000000000000e-01 -1.00000000000000e-01 5.85478460500432e-02 - 3.00000000000000e-01 -5.00000000000000e-02 5.85061372438901e-02 - 3.00000000000000e-01 0.00000000000000e+00 5.84728353657108e-02 - 3.00000000000000e-01 5.00000000000000e-02 5.84569379077384e-02 - 3.00000000000000e-01 1.00000000000000e-01 5.84724668595274e-02 - 3.00000000000000e-01 1.50000000000000e-01 5.85413415777556e-02 - 3.00000000000000e-01 2.00000000000000e-01 5.86977426074903e-02 - 3.00000000000000e-01 2.50000000000000e-01 5.89942633693502e-02 - 3.00000000000000e-01 3.00000000000000e-01 5.95089362205337e-02 - 3.00000000000000e-01 3.50000000000000e-01 6.03494430782859e-02 - 3.00000000000000e-01 4.00000000000000e-01 6.16440484460111e-02 - 3.00000000000000e-01 4.50000000000000e-01 6.34978827969821e-02 - 3.00000000000000e-01 5.00000000000000e-01 6.58889055976576e-02 - 3.00000000000000e-01 5.50000000000000e-01 6.85246890033007e-02 - 3.00000000000000e-01 6.00000000000000e-01 7.08610570667742e-02 - 3.00000000000000e-01 6.50000000000000e-01 7.26278771775016e-02 - 3.00000000000000e-01 7.00000000000000e-01 7.38271103868164e-02 - 3.00000000000000e-01 7.50000000000000e-01 7.45794308990689e-02 - 3.00000000000000e-01 8.00000000000000e-01 7.50200705855354e-02 - 3.00000000000000e-01 8.50000000000000e-01 7.52581164798633e-02 - 3.00000000000000e-01 9.00000000000000e-01 7.53702927301745e-02 - 3.00000000000000e-01 9.50000000000000e-01 7.54068967623467e-02 - 3.00000000000000e-01 1.00000000000000e+00 7.53997272769366e-02 - 3.00000000000000e-01 1.05000000000000e+00 7.53686021987943e-02 - 3.00000000000000e-01 1.10000000000000e+00 7.53258142998067e-02 - 3.00000000000000e-01 1.15000000000000e+00 7.52790231137529e-02 - 3.00000000000000e-01 1.20000000000000e+00 7.52330438221670e-02 - 3.00000000000000e-01 1.25000000000000e+00 7.51909241287491e-02 - 3.00000000000000e-01 1.30000000000000e+00 7.51546300077512e-02 - 3.00000000000000e-01 1.35000000000000e+00 7.51254088126462e-02 - 3.00000000000000e-01 1.40000000000000e+00 7.51040686747944e-02 - 3.00000000000000e-01 1.45000000000000e+00 7.50910916176693e-02 - 3.00000000000000e-01 1.50000000000000e+00 7.50867377454870e-02 + 3.00000000000000e-01 -5.00000000000000e-01 5.86812897722335e-02 + 3.00000000000000e-01 -4.50000000000000e-01 5.86772125767117e-02 + 3.00000000000000e-01 -4.00000000000000e-01 5.86650508382249e-02 + 3.00000000000000e-01 -3.50000000000000e-01 5.86450556143064e-02 + 3.00000000000000e-01 -3.00000000000000e-01 5.86176748206902e-02 + 3.00000000000000e-01 -2.50000000000000e-01 5.85836178578104e-02 + 3.00000000000000e-01 -2.00000000000000e-01 5.85440039204915e-02 + 3.00000000000000e-01 -1.50000000000000e-01 5.85004849209529e-02 + 3.00000000000000e-01 -1.00000000000000e-01 5.84555782785308e-02 + 3.00000000000000e-01 -5.00000000000000e-02 5.84130798693967e-02 + 3.00000000000000e-01 0.00000000000000e+00 5.83787979305813e-02 + 3.00000000000000e-01 5.00000000000000e-02 5.83616940594221e-02 + 3.00000000000000e-01 1.00000000000000e-01 5.83757551018078e-02 + 3.00000000000000e-01 1.50000000000000e-01 5.84428808045339e-02 + 3.00000000000000e-01 2.00000000000000e-01 5.85972740864004e-02 + 3.00000000000000e-01 2.50000000000000e-01 5.88916397662899e-02 + 3.00000000000000e-01 3.00000000000000e-01 5.94042955791446e-02 + 3.00000000000000e-01 3.50000000000000e-01 6.02435064571562e-02 + 3.00000000000000e-01 4.00000000000000e-01 6.15385486217321e-02 + 3.00000000000000e-01 4.50000000000000e-01 6.33959949466713e-02 + 3.00000000000000e-01 5.00000000000000e-01 6.57952397827738e-02 + 3.00000000000000e-01 5.50000000000000e-01 6.84440695384512e-02 + 3.00000000000000e-01 6.00000000000000e-01 7.07960486721066e-02 + 3.00000000000000e-01 6.50000000000000e-01 7.25782457011813e-02 + 3.00000000000000e-01 7.00000000000000e-01 7.37908252764051e-02 + 3.00000000000000e-01 7.50000000000000e-01 7.45538217732207e-02 + 3.00000000000000e-01 8.00000000000000e-01 7.50025550910795e-02 + 3.00000000000000e-01 8.50000000000000e-01 7.52465168947618e-02 + 3.00000000000000e-01 9.00000000000000e-01 7.53629011976297e-02 + 3.00000000000000e-01 9.50000000000000e-01 7.54024301674058e-02 + 3.00000000000000e-01 1.00000000000000e+00 7.53972484178213e-02 + 3.00000000000000e-01 1.05000000000000e+00 7.53674389012956e-02 + 3.00000000000000e-01 1.10000000000000e+00 7.53254920363092e-02 + 3.00000000000000e-01 1.15000000000000e+00 7.52792141017871e-02 + 3.00000000000000e-01 1.20000000000000e+00 7.52335260556371e-02 + 3.00000000000000e-01 1.25000000000000e+00 7.51915546554426e-02 + 3.00000000000000e-01 1.30000000000000e+00 7.51553200135878e-02 + 3.00000000000000e-01 1.35000000000000e+00 7.51261107988151e-02 + 3.00000000000000e-01 1.40000000000000e+00 7.51047610950139e-02 + 3.00000000000000e-01 1.45000000000000e+00 7.50917714728307e-02 + 3.00000000000000e-01 1.50000000000000e+00 7.50874121105256e-02 - 3.50000000000000e-01 -5.00000000000000e-01 5.90612513668882e-02 - 3.50000000000000e-01 -4.50000000000000e-01 5.90595521908960e-02 - 3.50000000000000e-01 -4.00000000000000e-01 5.90545957145230e-02 - 3.50000000000000e-01 -3.50000000000000e-01 5.90468078383682e-02 - 3.50000000000000e-01 -3.00000000000000e-01 5.90369706681027e-02 - 3.50000000000000e-01 -2.50000000000000e-01 5.90262813402357e-02 - 3.50000000000000e-01 -2.00000000000000e-01 5.90165083914859e-02 - 3.50000000000000e-01 -1.50000000000000e-01 5.90101774333200e-02 - 3.50000000000000e-01 -1.00000000000000e-01 5.90109054391341e-02 - 3.50000000000000e-01 -5.00000000000000e-02 5.90238472609210e-02 - 3.50000000000000e-01 0.00000000000000e+00 5.90563800268209e-02 - 3.50000000000000e-01 5.00000000000000e-02 5.91191422272503e-02 - 3.50000000000000e-01 1.00000000000000e-01 5.92274550155774e-02 - 3.50000000000000e-01 1.50000000000000e-01 5.94032785357134e-02 - 3.50000000000000e-01 2.00000000000000e-01 5.96776994649993e-02 - 3.50000000000000e-01 2.50000000000000e-01 6.00935196086529e-02 - 3.50000000000000e-01 3.00000000000000e-01 6.07064113396880e-02 - 3.50000000000000e-01 3.50000000000000e-01 6.15816485992639e-02 - 3.50000000000000e-01 4.00000000000000e-01 6.27804998772375e-02 - 3.50000000000000e-01 4.50000000000000e-01 6.43292124897062e-02 - 3.50000000000000e-01 5.00000000000000e-01 6.61704590061848e-02 - 3.50000000000000e-01 5.50000000000000e-01 6.81244288177305e-02 - 3.50000000000000e-01 6.00000000000000e-01 6.99327997466635e-02 - 3.50000000000000e-01 6.50000000000000e-01 7.14258062511367e-02 - 3.50000000000000e-01 7.00000000000000e-01 7.25589598451756e-02 - 3.50000000000000e-01 7.50000000000000e-01 7.33688216568329e-02 - 3.50000000000000e-01 8.00000000000000e-01 7.39227977914524e-02 - 3.50000000000000e-01 8.50000000000000e-01 7.42888574572101e-02 - 3.50000000000000e-01 9.00000000000000e-01 7.45231117857209e-02 - 3.50000000000000e-01 9.50000000000000e-01 7.46676100896173e-02 - 3.50000000000000e-01 1.00000000000000e+00 7.47522301290966e-02 - 3.50000000000000e-01 1.05000000000000e+00 7.47975967593949e-02 - 3.50000000000000e-01 1.10000000000000e+00 7.48178186687416e-02 - 3.50000000000000e-01 1.15000000000000e+00 7.48224770078371e-02 - 3.50000000000000e-01 1.20000000000000e+00 7.48180986470897e-02 - 3.50000000000000e-01 1.25000000000000e+00 7.48091332861677e-02 - 3.50000000000000e-01 1.30000000000000e+00 7.47986527872335e-02 - 3.50000000000000e-01 1.35000000000000e+00 7.47887310634207e-02 - 3.50000000000000e-01 1.40000000000000e+00 7.47807739177445e-02 - 3.50000000000000e-01 1.45000000000000e+00 7.47756736697123e-02 - 3.50000000000000e-01 1.50000000000000e+00 7.47739219646917e-02 + 3.50000000000000e-01 -5.00000000000000e-01 5.89719874460436e-02 + 3.50000000000000e-01 -4.50000000000000e-01 5.89702643031630e-02 + 3.50000000000000e-01 -4.00000000000000e-01 5.89652341991236e-02 + 3.50000000000000e-01 -3.50000000000000e-01 5.89573208273319e-02 + 3.50000000000000e-01 -3.00000000000000e-01 5.89473012018574e-02 + 3.50000000000000e-01 -2.50000000000000e-01 5.89363660648392e-02 + 3.50000000000000e-01 -2.00000000000000e-01 5.89262745073590e-02 + 3.50000000000000e-01 -1.50000000000000e-01 5.89195418472991e-02 + 3.50000000000000e-01 -1.00000000000000e-01 5.89197711172559e-02 + 3.50000000000000e-01 -5.00000000000000e-02 5.89321034192676e-02 + 3.50000000000000e-01 0.00000000000000e+00 5.89639020734021e-02 + 3.50000000000000e-01 5.00000000000000e-02 5.90257956580007e-02 + 3.50000000000000e-01 1.00000000000000e-01 5.91331073045389e-02 + 3.50000000000000e-01 1.50000000000000e-01 5.93078257132718e-02 + 3.50000000000000e-01 2.00000000000000e-01 5.95811150748120e-02 + 3.50000000000000e-01 2.50000000000000e-01 5.99959359182942e-02 + 3.50000000000000e-01 3.00000000000000e-01 6.06082519835549e-02 + 3.50000000000000e-01 3.50000000000000e-01 6.14838079989206e-02 + 3.50000000000000e-01 4.00000000000000e-01 6.26845401803076e-02 + 3.50000000000000e-01 4.50000000000000e-01 6.42374689411714e-02 + 3.50000000000000e-01 5.00000000000000e-01 6.60858412109008e-02 + 3.50000000000000e-01 5.50000000000000e-01 6.80497206340761e-02 + 3.50000000000000e-01 6.00000000000000e-01 6.98696599095114e-02 + 3.50000000000000e-01 6.50000000000000e-01 7.13744139993097e-02 + 3.50000000000000e-01 7.00000000000000e-01 7.25183398290695e-02 + 3.50000000000000e-01 7.50000000000000e-01 7.33373906410375e-02 + 3.50000000000000e-01 8.00000000000000e-01 7.38988194658257e-02 + 3.50000000000000e-01 8.50000000000000e-01 7.42707119864662e-02 + 3.50000000000000e-01 9.00000000000000e-01 7.45094163036427e-02 + 3.50000000000000e-01 9.50000000000000e-01 7.46572447142758e-02 + 3.50000000000000e-01 1.00000000000000e+00 7.47443178196470e-02 + 3.50000000000000e-01 1.05000000000000e+00 7.47914677165445e-02 + 3.50000000000000e-01 1.10000000000000e+00 7.48129686059306e-02 + 3.50000000000000e-01 1.15000000000000e+00 7.48185306035689e-02 + 3.50000000000000e-01 1.20000000000000e+00 7.48147814211341e-02 + 3.50000000000000e-01 1.25000000000000e+00 7.48062456989166e-02 + 3.50000000000000e-01 1.30000000000000e+00 7.47960523172675e-02 + 3.50000000000000e-01 1.35000000000000e+00 7.47863159596867e-02 + 3.50000000000000e-01 1.40000000000000e+00 7.47784722079376e-02 + 3.50000000000000e-01 1.45000000000000e+00 7.47734322752081e-02 + 3.50000000000000e-01 1.50000000000000e+00 7.47716991375291e-02 - 4.00000000000000e-01 -5.00000000000000e-01 5.93546609765484e-02 - 4.00000000000000e-01 -4.50000000000000e-01 5.93551705107607e-02 - 4.00000000000000e-01 -4.00000000000000e-01 5.93568905108697e-02 - 4.00000000000000e-01 -3.50000000000000e-01 5.93603892756544e-02 - 4.00000000000000e-01 -3.00000000000000e-01 5.93666726586337e-02 - 4.00000000000000e-01 -2.50000000000000e-01 5.93772860634871e-02 - 4.00000000000000e-01 -2.00000000000000e-01 5.93944308120103e-02 - 4.00000000000000e-01 -1.50000000000000e-01 5.94211681596760e-02 - 4.00000000000000e-01 -1.00000000000000e-01 5.94617462726601e-02 - 4.00000000000000e-01 -5.00000000000000e-02 5.95219410148186e-02 - 4.00000000000000e-01 0.00000000000000e+00 5.96096962495438e-02 - 4.00000000000000e-01 5.00000000000000e-02 5.97358153148441e-02 - 4.00000000000000e-01 1.00000000000000e-01 5.99149349159263e-02 - 4.00000000000000e-01 1.50000000000000e-01 6.01665979749586e-02 - 4.00000000000000e-01 2.00000000000000e-01 6.05162656474582e-02 - 4.00000000000000e-01 2.50000000000000e-01 6.09957015985042e-02 - 4.00000000000000e-01 3.00000000000000e-01 6.16415408656227e-02 - 4.00000000000000e-01 3.50000000000000e-01 6.24902537821495e-02 - 4.00000000000000e-01 4.00000000000000e-01 6.35670735414956e-02 - 4.00000000000000e-01 4.50000000000000e-01 6.48680100860244e-02 - 4.00000000000000e-01 5.00000000000000e-01 6.63392626954134e-02 - 4.00000000000000e-01 5.50000000000000e-01 6.78697681551125e-02 - 4.00000000000000e-01 6.00000000000000e-01 6.93199119626509e-02 - 4.00000000000000e-01 6.50000000000000e-01 7.05835808235686e-02 - 4.00000000000000e-01 7.00000000000000e-01 7.16141058878581e-02 - 4.00000000000000e-01 7.50000000000000e-01 7.24140795989190e-02 - 4.00000000000000e-01 8.00000000000000e-01 7.30134506227266e-02 - 4.00000000000000e-01 8.50000000000000e-01 7.34513996975018e-02 - 4.00000000000000e-01 9.00000000000000e-01 7.37656971083154e-02 - 4.00000000000000e-01 9.50000000000000e-01 7.39882176264019e-02 - 4.00000000000000e-01 1.00000000000000e+00 7.41439569456490e-02 - 4.00000000000000e-01 1.05000000000000e+00 7.42517372177223e-02 - 4.00000000000000e-01 1.10000000000000e+00 7.43253922580367e-02 - 4.00000000000000e-01 1.15000000000000e+00 7.43749750360249e-02 - 4.00000000000000e-01 1.20000000000000e+00 7.44077325257992e-02 - 4.00000000000000e-01 1.25000000000000e+00 7.44288710433440e-02 - 4.00000000000000e-01 1.30000000000000e+00 7.44421104874265e-02 - 4.00000000000000e-01 1.35000000000000e+00 7.44500923991208e-02 - 4.00000000000000e-01 1.40000000000000e+00 7.44546283313222e-02 - 4.00000000000000e-01 1.45000000000000e+00 7.44569091605434e-02 - 4.00000000000000e-01 1.50000000000000e+00 7.44575990777848e-02 + 4.00000000000000e-01 -5.00000000000000e-01 5.92661313658164e-02 + 4.00000000000000e-01 -4.50000000000000e-01 5.92666229300354e-02 + 4.00000000000000e-01 -4.00000000000000e-01 5.92682875350865e-02 + 4.00000000000000e-01 -3.50000000000000e-01 5.92716917328540e-02 + 4.00000000000000e-01 -3.00000000000000e-01 5.92778391568240e-02 + 4.00000000000000e-01 -2.50000000000000e-01 5.92882700671595e-02 + 4.00000000000000e-01 -2.00000000000000e-01 5.93051818043499e-02 + 4.00000000000000e-01 -1.50000000000000e-01 5.93316297925470e-02 + 4.00000000000000e-01 -1.00000000000000e-01 5.93718570639707e-02 + 4.00000000000000e-01 -5.00000000000000e-02 5.94316363549511e-02 + 4.00000000000000e-01 0.00000000000000e+00 5.95189124654351e-02 + 4.00000000000000e-01 5.00000000000000e-02 5.96444977508893e-02 + 4.00000000000000e-01 1.00000000000000e-01 5.98230551070225e-02 + 4.00000000000000e-01 1.50000000000000e-01 6.00741805052654e-02 + 4.00000000000000e-01 2.00000000000000e-01 6.04234320039849e-02 + 4.00000000000000e-01 2.50000000000000e-01 6.09027341218760e-02 + 4.00000000000000e-01 3.00000000000000e-01 6.15489680120481e-02 + 4.00000000000000e-01 3.50000000000000e-01 6.23989461267166e-02 + 4.00000000000000e-01 4.00000000000000e-01 6.34783192127055e-02 + 4.00000000000000e-01 4.50000000000000e-01 6.47835008406415e-02 + 4.00000000000000e-01 5.00000000000000e-01 6.62609104708398e-02 + 4.00000000000000e-01 5.50000000000000e-01 6.77993120623813e-02 + 4.00000000000000e-01 6.00000000000000e-01 6.92584606678069e-02 + 4.00000000000000e-01 6.50000000000000e-01 7.05314035574545e-02 + 4.00000000000000e-01 7.00000000000000e-01 7.15707336389311e-02 + 4.00000000000000e-01 7.50000000000000e-01 7.23785634307317e-02 + 4.00000000000000e-01 8.00000000000000e-01 7.29846288975610e-02 + 4.00000000000000e-01 8.50000000000000e-01 7.34280911609548e-02 + 4.00000000000000e-01 9.00000000000000e-01 7.37468174193106e-02 + 4.00000000000000e-01 9.50000000000000e-01 7.39728291863349e-02 + 4.00000000000000e-01 1.00000000000000e+00 7.41312822449578e-02 + 4.00000000000000e-01 1.05000000000000e+00 7.42411474314018e-02 + 4.00000000000000e-01 1.10000000000000e+00 7.43163885438208e-02 + 4.00000000000000e-01 1.15000000000000e+00 7.43671666512753e-02 + 4.00000000000000e-01 1.20000000000000e+00 7.44008147222836e-02 + 4.00000000000000e-01 1.25000000000000e+00 7.44226087778857e-02 + 4.00000000000000e-01 1.30000000000000e+00 7.44363211029110e-02 + 4.00000000000000e-01 1.35000000000000e+00 7.44446333060912e-02 + 4.00000000000000e-01 1.40000000000000e+00 7.44493857640613e-02 + 4.00000000000000e-01 1.45000000000000e+00 7.44517888092925e-02 + 4.00000000000000e-01 1.50000000000000e+00 7.44525179091533e-02 - 4.50000000000000e-01 -5.00000000000000e-01 5.96470468266392e-02 - 4.50000000000000e-01 -4.50000000000000e-01 5.96495830001494e-02 - 4.50000000000000e-01 -4.00000000000000e-01 5.96574041726823e-02 - 4.50000000000000e-01 -3.50000000000000e-01 5.96711730005258e-02 - 4.50000000000000e-01 -3.00000000000000e-01 5.96920500839128e-02 - 4.50000000000000e-01 -2.50000000000000e-01 5.97217574096973e-02 - 4.50000000000000e-01 -2.00000000000000e-01 5.97627447188666e-02 - 4.50000000000000e-01 -1.50000000000000e-01 5.98183298565830e-02 - 4.50000000000000e-01 -1.00000000000000e-01 5.98929432311870e-02 - 4.50000000000000e-01 -5.00000000000000e-02 5.99924807918943e-02 - 4.50000000000000e-01 0.00000000000000e+00 6.01246496121038e-02 - 4.50000000000000e-01 5.00000000000000e-02 6.02994922609517e-02 - 4.50000000000000e-01 1.00000000000000e-01 6.05298698829995e-02 - 4.50000000000000e-01 1.50000000000000e-01 6.08319060308768e-02 - 4.50000000000000e-01 2.00000000000000e-01 6.12250617088896e-02 - 4.50000000000000e-01 2.50000000000000e-01 6.17314743555460e-02 - 4.50000000000000e-01 3.00000000000000e-01 6.23738105453473e-02 - 4.50000000000000e-01 3.50000000000000e-01 6.31707409894522e-02 - 4.50000000000000e-01 4.00000000000000e-01 6.41295390176974e-02 - 4.50000000000000e-01 4.50000000000000e-01 6.52364811124529e-02 - 4.50000000000000e-01 5.00000000000000e-01 6.64487955680325e-02 - 4.50000000000000e-01 5.50000000000000e-01 6.76954720196229e-02 - 4.50000000000000e-01 6.00000000000000e-01 6.88934938072002e-02 - 4.50000000000000e-01 6.50000000000000e-01 6.99744913166454e-02 - 4.50000000000000e-01 7.00000000000000e-01 7.08998083598057e-02 - 4.50000000000000e-01 7.50000000000000e-01 7.16599256426022e-02 - 4.50000000000000e-01 8.00000000000000e-01 7.22655302165478e-02 - 4.50000000000000e-01 8.50000000000000e-01 7.27375920384627e-02 - 4.50000000000000e-01 9.00000000000000e-01 7.31000728284738e-02 - 4.50000000000000e-01 9.50000000000000e-01 7.33756032193551e-02 - 4.50000000000000e-01 1.00000000000000e+00 7.35836427400228e-02 - 4.50000000000000e-01 1.05000000000000e+00 7.37399863617331e-02 - 4.50000000000000e-01 1.10000000000000e+00 7.38570367913633e-02 - 4.50000000000000e-01 1.15000000000000e+00 7.39442994729829e-02 - 4.50000000000000e-01 1.20000000000000e+00 7.40089899009784e-02 - 4.50000000000000e-01 1.25000000000000e+00 7.40565048445019e-02 - 4.50000000000000e-01 1.30000000000000e+00 7.40908355802060e-02 - 4.50000000000000e-01 1.35000000000000e+00 7.41148943597060e-02 - 4.50000000000000e-01 1.40000000000000e+00 7.41307454585343e-02 - 4.50000000000000e-01 1.45000000000000e+00 7.41397348646954e-02 - 4.50000000000000e-01 1.50000000000000e+00 7.41426495827279e-02 + 4.50000000000000e-01 -5.00000000000000e-01 5.95592890478848e-02 + 4.50000000000000e-01 -4.50000000000000e-01 5.95618135678768e-02 + 4.50000000000000e-01 -4.00000000000000e-01 5.95695992389959e-02 + 4.50000000000000e-01 -3.50000000000000e-01 5.95833078358468e-02 + 4.50000000000000e-01 -3.00000000000000e-01 5.96040983359309e-02 + 4.50000000000000e-01 -2.50000000000000e-01 5.96336923240338e-02 + 4.50000000000000e-01 -2.00000000000000e-01 5.96745370855915e-02 + 4.50000000000000e-01 -1.50000000000000e-01 5.97299504947262e-02 + 4.50000000000000e-01 -1.00000000000000e-01 5.98043644326006e-02 + 4.50000000000000e-01 -5.00000000000000e-02 5.99036795232158e-02 + 4.50000000000000e-01 0.00000000000000e+00 6.00356139873226e-02 + 4.50000000000000e-01 5.00000000000000e-02 6.02102325259961e-02 + 4.50000000000000e-01 1.00000000000000e-01 6.04404333914494e-02 + 4.50000000000000e-01 1.50000000000000e-01 6.07424021791113e-02 + 4.50000000000000e-01 2.00000000000000e-01 6.11356966145459e-02 + 4.50000000000000e-01 2.50000000000000e-01 6.16425944010208e-02 + 4.50000000000000e-01 3.00000000000000e-01 6.22859527954292e-02 + 4.50000000000000e-01 3.50000000000000e-01 6.30846784979838e-02 + 4.50000000000000e-01 4.00000000000000e-01 6.40462975517864e-02 + 4.50000000000000e-01 4.50000000000000e-01 6.51572948761381e-02 + 4.50000000000000e-01 5.00000000000000e-01 6.63749699368235e-02 + 4.50000000000000e-01 5.50000000000000e-01 6.76281594495562e-02 + 4.50000000000000e-01 6.00000000000000e-01 6.88334615196791e-02 + 4.50000000000000e-01 6.50000000000000e-01 6.99219983888405e-02 + 4.50000000000000e-01 7.00000000000000e-01 7.08546318769993e-02 + 4.50000000000000e-01 7.50000000000000e-01 7.16214870773676e-02 + 4.50000000000000e-01 8.00000000000000e-01 7.22330454053350e-02 + 4.50000000000000e-01 8.50000000000000e-01 7.27102052703957e-02 + 4.50000000000000e-01 9.00000000000000e-01 7.30769454025048e-02 + 4.50000000000000e-01 9.50000000000000e-01 7.33559698631221e-02 + 4.50000000000000e-01 1.00000000000000e+00 7.35668341413284e-02 + 4.50000000000000e-01 1.05000000000000e+00 7.37254351409630e-02 + 4.50000000000000e-01 1.10000000000000e+00 7.38442712510047e-02 + 4.50000000000000e-01 1.15000000000000e+00 7.39329328208550e-02 + 4.50000000000000e-01 1.20000000000000e+00 7.39987076290187e-02 + 4.50000000000000e-01 1.25000000000000e+00 7.40470502619402e-02 + 4.50000000000000e-01 1.30000000000000e+00 7.40820003760695e-02 + 4.50000000000000e-01 1.35000000000000e+00 7.41065054709039e-02 + 4.50000000000000e-01 1.40000000000000e+00 7.41226568451571e-02 + 4.50000000000000e-01 1.45000000000000e+00 7.41318192725604e-02 + 4.50000000000000e-01 1.50000000000000e+00 7.41347901617908e-02 - 5.00000000000000e-01 -5.00000000000000e-01 5.99343611154060e-02 - 5.00000000000000e-01 -4.50000000000000e-01 5.99387123915088e-02 - 5.00000000000000e-01 -4.00000000000000e-01 5.99519685453846e-02 - 5.00000000000000e-01 -3.50000000000000e-01 5.99748557003988e-02 - 5.00000000000000e-01 -3.00000000000000e-01 6.00085820328048e-02 - 5.00000000000000e-01 -2.50000000000000e-01 6.00549468592997e-02 - 5.00000000000000e-01 -2.00000000000000e-01 6.01164609653108e-02 - 5.00000000000000e-01 -1.50000000000000e-01 6.01964482322906e-02 - 5.00000000000000e-01 -1.00000000000000e-01 6.02992281079781e-02 - 5.00000000000000e-01 -5.00000000000000e-02 6.04303840161853e-02 - 5.00000000000000e-01 0.00000000000000e+00 6.05969349863451e-02 - 5.00000000000000e-01 5.00000000000000e-02 6.08076272798784e-02 - 5.00000000000000e-01 1.00000000000000e-01 6.10731543853977e-02 - 5.00000000000000e-01 1.50000000000000e-01 6.14060902849873e-02 - 5.00000000000000e-01 2.00000000000000e-01 6.18205913619585e-02 - 5.00000000000000e-01 2.50000000000000e-01 6.23313224903300e-02 - 5.00000000000000e-01 3.00000000000000e-01 6.29514800998556e-02 - 5.00000000000000e-01 3.50000000000000e-01 6.36893681736270e-02 - 5.00000000000000e-01 4.00000000000000e-01 6.45438593782349e-02 - 5.00000000000000e-01 4.50000000000000e-01 6.54995611493818e-02 - 5.00000000000000e-01 5.00000000000000e-01 6.65239799783723e-02 - 5.00000000000000e-01 5.50000000000000e-01 6.75698057860465e-02 - 5.00000000000000e-01 6.00000000000000e-01 6.85841096218371e-02 - 5.00000000000000e-01 6.50000000000000e-01 6.95210779375827e-02 - 5.00000000000000e-01 7.00000000000000e-01 7.03506985891916e-02 - 5.00000000000000e-01 7.50000000000000e-01 7.10602904031747e-02 - 5.00000000000000e-01 8.00000000000000e-01 7.16511377581907e-02 - 5.00000000000000e-01 8.50000000000000e-01 7.21333803490000e-02 - 5.00000000000000e-01 9.00000000000000e-01 7.25213859212793e-02 - 5.00000000000000e-01 9.50000000000000e-01 7.28304841903064e-02 - 5.00000000000000e-01 1.00000000000000e+00 7.30750177141372e-02 - 5.00000000000000e-01 1.05000000000000e+00 7.32675320970758e-02 - 5.00000000000000e-01 1.10000000000000e+00 7.34184489196867e-02 - 5.00000000000000e-01 1.15000000000000e+00 7.35361962356133e-02 - 5.00000000000000e-01 1.20000000000000e+00 7.36274245272975e-02 - 5.00000000000000e-01 1.25000000000000e+00 7.36973193505524e-02 - 5.00000000000000e-01 1.30000000000000e+00 7.37498354960736e-02 - 5.00000000000000e-01 1.35000000000000e+00 7.37879226368230e-02 - 5.00000000000000e-01 1.40000000000000e+00 7.38137159320360e-02 - 5.00000000000000e-01 1.45000000000000e+00 7.38286511357643e-02 - 5.00000000000000e-01 1.50000000000000e+00 7.38335337067216e-02 + 5.00000000000000e-01 -5.00000000000000e-01 5.98473994472971e-02 + 5.00000000000000e-01 -4.50000000000000e-01 5.98517455019416e-02 + 5.00000000000000e-01 -4.00000000000000e-01 5.98649869243849e-02 + 5.00000000000000e-01 -3.50000000000000e-01 5.98878488797091e-02 + 5.00000000000000e-01 -3.00000000000000e-01 5.99215402955752e-02 + 5.00000000000000e-01 -2.50000000000000e-01 5.99678616166686e-02 + 5.00000000000000e-01 -2.00000000000000e-01 6.00293244036685e-02 + 5.00000000000000e-01 -1.50000000000000e-01 6.01092560394353e-02 + 5.00000000000000e-01 -1.00000000000000e-01 6.02119830049866e-02 + 5.00000000000000e-01 -5.00000000000000e-02 6.03430976921817e-02 + 5.00000000000000e-01 0.00000000000000e+00 6.05096380847681e-02 + 5.00000000000000e-01 5.00000000000000e-02 6.07203778022192e-02 + 5.00000000000000e-01 1.00000000000000e-01 6.09860511781372e-02 + 5.00000000000000e-01 1.50000000000000e-01 6.13192942171456e-02 + 5.00000000000000e-01 2.00000000000000e-01 6.17343483173678e-02 + 5.00000000000000e-01 2.50000000000000e-01 6.22459931071958e-02 + 5.00000000000000e-01 3.00000000000000e-01 6.28675644213212e-02 + 5.00000000000000e-01 3.50000000000000e-01 6.36075244301690e-02 + 5.00000000000000e-01 4.00000000000000e-01 6.44648968382820e-02 + 5.00000000000000e-01 4.50000000000000e-01 6.54243928347771e-02 + 5.00000000000000e-01 5.00000000000000e-01 6.64535282789541e-02 + 5.00000000000000e-01 5.50000000000000e-01 6.75048698681076e-02 + 5.00000000000000e-01 6.00000000000000e-01 6.85252371907429e-02 + 5.00000000000000e-01 6.50000000000000e-01 6.94684914364887e-02 + 5.00000000000000e-01 7.00000000000000e-01 7.03042974907650e-02 + 5.00000000000000e-01 7.50000000000000e-01 7.10197121685536e-02 + 5.00000000000000e-01 8.00000000000000e-01 7.16158470677184e-02 + 5.00000000000000e-01 8.50000000000000e-01 7.21027527379199e-02 + 5.00000000000000e-01 9.00000000000000e-01 7.24947770460959e-02 + 5.00000000000000e-01 9.50000000000000e-01 7.28072749295805e-02 + 5.00000000000000e-01 1.00000000000000e+00 7.30546430169487e-02 + 5.00000000000000e-01 1.05000000000000e+00 7.32494913283241e-02 + 5.00000000000000e-01 1.10000000000000e+00 7.34023087079598e-02 + 5.00000000000000e-01 1.15000000000000e+00 7.35215870703701e-02 + 5.00000000000000e-01 1.20000000000000e+00 7.36140334323427e-02 + 5.00000000000000e-01 1.25000000000000e+00 7.36848823095675e-02 + 5.00000000000000e-01 1.30000000000000e+00 7.37381269900368e-02 + 5.00000000000000e-01 1.35000000000000e+00 7.37767501021438e-02 + 5.00000000000000e-01 1.40000000000000e+00 7.38029093230364e-02 + 5.00000000000000e-01 1.45000000000000e+00 7.38180570686560e-02 + 5.00000000000000e-01 1.50000000000000e+00 7.38230095485001e-02 - 5.50000000000000e-01 -5.00000000000000e-01 6.02129946242351e-02 - 5.50000000000000e-01 -4.50000000000000e-01 6.02189217001573e-02 - 5.50000000000000e-01 -4.00000000000000e-01 6.02369136970213e-02 - 5.50000000000000e-01 -3.50000000000000e-01 6.02676919486023e-02 - 5.50000000000000e-01 -3.00000000000000e-01 6.03124646686220e-02 - 5.50000000000000e-01 -2.50000000000000e-01 6.03729911662799e-02 - 5.50000000000000e-01 -2.00000000000000e-01 6.04517135150231e-02 - 5.50000000000000e-01 -1.50000000000000e-01 6.05517625334961e-02 - 5.50000000000000e-01 -1.00000000000000e-01 6.06771568656352e-02 - 5.50000000000000e-01 -5.00000000000000e-02 6.08328923690875e-02 - 5.50000000000000e-01 0.00000000000000e+00 6.10250624183887e-02 - 5.50000000000000e-01 5.00000000000000e-02 6.12609468464290e-02 - 5.50000000000000e-01 1.00000000000000e-01 6.15490200305250e-02 - 5.50000000000000e-01 1.50000000000000e-01 6.18987122407320e-02 - 5.50000000000000e-01 2.00000000000000e-01 6.23198685082376e-02 - 5.50000000000000e-01 2.50000000000000e-01 6.28217507332845e-02 - 5.50000000000000e-01 3.00000000000000e-01 6.34114199122235e-02 - 5.50000000000000e-01 3.50000000000000e-01 6.40913853480651e-02 - 5.50000000000000e-01 4.00000000000000e-01 6.48569682839079e-02 - 5.50000000000000e-01 4.50000000000000e-01 6.56939296411558e-02 - 5.50000000000000e-01 5.00000000000000e-01 6.65777445756168e-02 - 5.50000000000000e-01 5.50000000000000e-01 6.74756655286406e-02 - 5.50000000000000e-01 6.00000000000000e-01 6.83520379801081e-02 - 5.50000000000000e-01 6.50000000000000e-01 6.91750176504401e-02 - 5.50000000000000e-01 7.00000000000000e-01 6.99216162216111e-02 - 5.50000000000000e-01 7.50000000000000e-01 7.05793837639711e-02 - 5.50000000000000e-01 8.00000000000000e-01 7.11453462433901e-02 - 5.50000000000000e-01 8.50000000000000e-01 7.16233978236649e-02 - 5.50000000000000e-01 9.00000000000000e-01 7.20216255176552e-02 - 5.50000000000000e-01 9.50000000000000e-01 7.23499051890788e-02 - 5.50000000000000e-01 1.00000000000000e+00 7.26184204648736e-02 - 5.50000000000000e-01 1.05000000000000e+00 7.28366667507496e-02 - 5.50000000000000e-01 1.10000000000000e+00 7.30130298957469e-02 - 5.50000000000000e-01 1.15000000000000e+00 7.31545886584296e-02 - 5.50000000000000e-01 1.20000000000000e+00 7.32671887017706e-02 - 5.50000000000000e-01 1.25000000000000e+00 7.33555073775563e-02 - 5.50000000000000e-01 1.30000000000000e+00 7.34232654298814e-02 - 5.50000000000000e-01 1.35000000000000e+00 7.34732526604822e-02 - 5.50000000000000e-01 1.40000000000000e+00 7.35075687981450e-02 - 5.50000000000000e-01 1.45000000000000e+00 7.35276165331703e-02 - 5.50000000000000e-01 1.50000000000000e+00 7.35342040325814e-02 + 5.50000000000000e-01 -5.00000000000000e-01 6.01268392346355e-02 + 5.50000000000000e-01 -4.50000000000000e-01 6.01327679102908e-02 + 5.50000000000000e-01 -4.00000000000000e-01 6.01507656255254e-02 + 5.50000000000000e-01 -3.50000000000000e-01 6.01815537115967e-02 + 5.50000000000000e-01 -3.00000000000000e-01 6.02263422932328e-02 + 5.50000000000000e-01 -2.50000000000000e-01 6.02868934510928e-02 + 5.50000000000000e-01 -2.00000000000000e-01 6.03656519711967e-02 + 5.50000000000000e-01 -1.50000000000000e-01 6.04657560497085e-02 + 5.50000000000000e-01 -1.00000000000000e-01 6.05912322937235e-02 + 5.50000000000000e-01 -5.00000000000000e-02 6.07470914336694e-02 + 5.50000000000000e-01 0.00000000000000e+00 6.09394465560793e-02 + 5.50000000000000e-01 5.00000000000000e-02 6.11756079214450e-02 + 5.50000000000000e-01 1.00000000000000e-01 6.14640899429325e-02 + 5.50000000000000e-01 1.50000000000000e-01 6.18143774791298e-02 + 5.50000000000000e-01 2.00000000000000e-01 6.22363879766184e-02 + 5.50000000000000e-01 2.50000000000000e-01 6.27394712370666e-02 + 5.50000000000000e-01 3.00000000000000e-01 6.33307880938468e-02 + 5.50000000000000e-01 3.50000000000000e-01 6.40129517636248e-02 + 5.50000000000000e-01 4.00000000000000e-01 6.47813709795123e-02 + 5.50000000000000e-01 4.50000000000000e-01 6.56218572542151e-02 + 5.50000000000000e-01 5.00000000000000e-01 6.65098676130219e-02 + 5.50000000000000e-01 5.50000000000000e-01 6.74125589727794e-02 + 5.50000000000000e-01 6.00000000000000e-01 6.82941031863504e-02 + 5.50000000000000e-01 6.50000000000000e-01 6.91224385625323e-02 + 5.50000000000000e-01 7.00000000000000e-01 6.98743520829737e-02 + 5.50000000000000e-01 7.50000000000000e-01 7.05372024754742e-02 + 5.50000000000000e-01 8.00000000000000e-01 7.11078735482308e-02 + 5.50000000000000e-01 8.50000000000000e-01 7.15901746757467e-02 + 5.50000000000000e-01 9.00000000000000e-01 7.19921533442632e-02 + 5.50000000000000e-01 9.50000000000000e-01 7.23236861578474e-02 + 5.50000000000000e-01 1.00000000000000e+00 7.25949803493584e-02 + 5.50000000000000e-01 1.05000000000000e+00 7.28155699551900e-02 + 5.50000000000000e-01 1.10000000000000e+00 7.29938851674126e-02 + 5.50000000000000e-01 1.15000000000000e+00 7.31370505374438e-02 + 5.50000000000000e-01 1.20000000000000e+00 7.32509543606387e-02 + 5.50000000000000e-01 1.25000000000000e+00 7.33403128060351e-02 + 5.50000000000000e-01 1.30000000000000e+00 7.34088774940711e-02 + 5.50000000000000e-01 1.35000000000000e+00 7.34594660361722e-02 + 5.50000000000000e-01 1.40000000000000e+00 7.34941969627057e-02 + 5.50000000000000e-01 1.45000000000000e+00 7.35144875196735e-02 + 5.50000000000000e-01 1.50000000000000e+00 7.35211551644030e-02 - 6.00000000000000e-01 -5.00000000000000e-01 6.04797881211086e-02 - 6.00000000000000e-01 -4.50000000000000e-01 6.04870550388646e-02 - 6.00000000000000e-01 -4.00000000000000e-01 6.05090799223437e-02 - 6.00000000000000e-01 -3.50000000000000e-01 6.05465304272616e-02 - 6.00000000000000e-01 -3.00000000000000e-01 6.06005765625344e-02 - 6.00000000000000e-01 -2.50000000000000e-01 6.06728570537834e-02 - 6.00000000000000e-01 -2.00000000000000e-01 6.07656305738414e-02 - 6.00000000000000e-01 -1.50000000000000e-01 6.08817433339235e-02 - 6.00000000000000e-01 -1.00000000000000e-01 6.10247558081058e-02 - 6.00000000000000e-01 -5.00000000000000e-02 6.11989684821864e-02 - 6.00000000000000e-01 0.00000000000000e+00 6.14094679263556e-02 - 6.00000000000000e-01 5.00000000000000e-02 6.16620751764177e-02 - 6.00000000000000e-01 1.00000000000000e-01 6.19632766929294e-02 - 6.00000000000000e-01 1.50000000000000e-01 6.23198600683292e-02 - 6.00000000000000e-01 2.00000000000000e-01 6.27384046706484e-02 - 6.00000000000000e-01 2.50000000000000e-01 6.32243980857203e-02 - 6.00000000000000e-01 3.00000000000000e-01 6.37810572183027e-02 - 6.00000000000000e-01 3.50000000000000e-01 6.44077907672252e-02 - 6.00000000000000e-01 4.00000000000000e-01 6.50986912081415e-02 - 6.00000000000000e-01 4.50000000000000e-01 6.58414482834461e-02 - 6.00000000000000e-01 5.00000000000000e-01 6.66174025786492e-02 - 6.00000000000000e-01 5.50000000000000e-01 6.74030620614598e-02 - 6.00000000000000e-01 6.00000000000000e-01 6.81733476984638e-02 - 6.00000000000000e-01 6.50000000000000e-01 6.89053383255098e-02 - 6.00000000000000e-01 7.00000000000000e-01 6.95813509120117e-02 - 6.00000000000000e-01 7.50000000000000e-01 7.01902859548823e-02 - 6.00000000000000e-01 8.00000000000000e-01 7.07274340947788e-02 - 6.00000000000000e-01 8.50000000000000e-01 7.11932610822846e-02 - 6.00000000000000e-01 9.00000000000000e-01 7.15917938456021e-02 - 6.00000000000000e-01 9.50000000000000e-01 7.19290970145335e-02 - 6.00000000000000e-01 1.00000000000000e+00 7.22120790556784e-02 - 6.00000000000000e-01 1.05000000000000e+00 7.24476906306958e-02 - 6.00000000000000e-01 1.10000000000000e+00 7.26424020131985e-02 - 6.00000000000000e-01 1.15000000000000e+00 7.28019364660094e-02 - 6.00000000000000e-01 1.20000000000000e+00 7.29312049846688e-02 - 6.00000000000000e-01 1.25000000000000e+00 7.30342730229987e-02 - 6.00000000000000e-01 1.30000000000000e+00 7.31144434780709e-02 - 6.00000000000000e-01 1.35000000000000e+00 7.31742731339623e-02 - 6.00000000000000e-01 1.40000000000000e+00 7.32156985448673e-02 - 6.00000000000000e-01 1.45000000000000e+00 7.32400368066503e-02 - 6.00000000000000e-01 1.50000000000000e+00 7.32480625655927e-02 + 6.00000000000000e-01 -5.00000000000000e-01 6.03944355996953e-02 + 6.00000000000000e-01 -4.50000000000000e-01 6.04017109386512e-02 + 6.00000000000000e-01 -4.00000000000000e-01 6.04237608741364e-02 + 6.00000000000000e-01 -3.50000000000000e-01 6.04612555064485e-02 + 6.00000000000000e-01 -3.00000000000000e-01 6.05153652229635e-02 + 6.00000000000000e-01 -2.50000000000000e-01 6.05877348781334e-02 + 6.00000000000000e-01 -2.00000000000000e-01 6.06806262932670e-02 + 6.00000000000000e-01 -1.50000000000000e-01 6.07968945770263e-02 + 6.00000000000000e-01 -1.00000000000000e-01 6.09401108951772e-02 + 6.00000000000000e-01 -5.00000000000000e-02 6.11145907314269e-02 + 6.00000000000000e-01 0.00000000000000e+00 6.13254421176826e-02 + 6.00000000000000e-01 5.00000000000000e-02 6.15785151549778e-02 + 6.00000000000000e-01 1.00000000000000e-01 6.18803322469498e-02 + 6.00000000000000e-01 1.50000000000000e-01 6.22377284052126e-02 + 6.00000000000000e-01 2.00000000000000e-01 6.26573403638836e-02 + 6.00000000000000e-01 2.50000000000000e-01 6.31447216080183e-02 + 6.00000000000000e-01 3.00000000000000e-01 6.37031593703592e-02 + 6.00000000000000e-01 3.50000000000000e-01 6.43321281864780e-02 + 6.00000000000000e-01 4.00000000000000e-01 6.50257721036176e-02 + 6.00000000000000e-01 4.50000000000000e-01 6.57717999585036e-02 + 6.00000000000000e-01 5.00000000000000e-01 6.65515264123310e-02 + 6.00000000000000e-01 5.50000000000000e-01 6.73413832834781e-02 + 6.00000000000000e-01 6.00000000000000e-01 6.81161679306653e-02 + 6.00000000000000e-01 6.50000000000000e-01 6.88528065837925e-02 + 6.00000000000000e-01 7.00000000000000e-01 6.95334567768919e-02 + 6.00000000000000e-01 7.50000000000000e-01 7.01468751450413e-02 + 6.00000000000000e-01 8.00000000000000e-01 7.06882401894743e-02 + 6.00000000000000e-01 8.50000000000000e-01 7.11579396031767e-02 + 6.00000000000000e-01 9.00000000000000e-01 7.15599572184413e-02 + 6.00000000000000e-01 9.50000000000000e-01 7.19003424023502e-02 + 6.00000000000000e-01 1.00000000000000e+00 7.21860095993550e-02 + 6.00000000000000e-01 1.05000000000000e+00 7.24239294144070e-02 + 6.00000000000000e-01 1.10000000000000e+00 7.26205986655703e-02 + 6.00000000000000e-01 1.15000000000000e+00 7.27817727838155e-02 + 6.00000000000000e-01 1.20000000000000e+00 7.29123928759469e-02 + 6.00000000000000e-01 1.25000000000000e+00 7.30165537019478e-02 + 6.00000000000000e-01 1.30000000000000e+00 7.30975827733396e-02 + 6.00000000000000e-01 1.35000000000000e+00 7.31580585591157e-02 + 6.00000000000000e-01 1.40000000000000e+00 7.31999332989001e-02 + 6.00000000000000e-01 1.45000000000000e+00 7.32245363953510e-02 + 6.00000000000000e-01 1.50000000000000e+00 7.32326495948411e-02 - 6.50000000000000e-01 -5.00000000000000e-01 6.07320418128355e-02 - 6.50000000000000e-01 -4.50000000000000e-01 6.07404363341050e-02 - 6.50000000000000e-01 -4.00000000000000e-01 6.07658059932942e-02 - 6.50000000000000e-01 -3.50000000000000e-01 6.08087907959600e-02 - 6.50000000000000e-01 -3.00000000000000e-01 6.08704355186387e-02 - 6.50000000000000e-01 -2.50000000000000e-01 6.09522402929889e-02 - 6.50000000000000e-01 -2.00000000000000e-01 6.10562061049931e-02 - 6.50000000000000e-01 -1.50000000000000e-01 6.11848362413939e-02 - 6.50000000000000e-01 -1.00000000000000e-01 6.13411577843654e-02 - 6.50000000000000e-01 -5.00000000000000e-02 6.15287687706283e-02 - 6.50000000000000e-01 0.00000000000000e+00 6.17517495691547e-02 - 6.50000000000000e-01 5.00000000000000e-02 6.20146174301004e-02 - 6.50000000000000e-01 1.00000000000000e-01 6.23221451294739e-02 - 6.50000000000000e-01 1.50000000000000e-01 6.26790470473876e-02 - 6.50000000000000e-01 2.00000000000000e-01 6.30894806763871e-02 - 6.50000000000000e-01 2.50000000000000e-01 6.35563829218771e-02 - 6.50000000000000e-01 3.00000000000000e-01 6.40806252729864e-02 - 6.50000000000000e-01 3.50000000000000e-01 6.46600252931096e-02 - 6.50000000000000e-01 4.00000000000000e-01 6.52885361260435e-02 - 6.50000000000000e-01 4.50000000000000e-01 6.59557881262681e-02 - 6.50000000000000e-01 5.00000000000000e-01 6.66473458815248e-02 - 6.50000000000000e-01 5.50000000000000e-01 6.73458311542463e-02 - 6.50000000000000e-01 6.00000000000000e-01 6.80329321158985e-02 - 6.50000000000000e-01 6.50000000000000e-01 6.86916369043070e-02 - 6.50000000000000e-01 7.00000000000000e-01 6.93081614755069e-02 - 6.50000000000000e-01 7.50000000000000e-01 6.98729562892126e-02 - 6.50000000000000e-01 8.00000000000000e-01 7.03808371909417e-02 - 6.50000000000000e-01 8.50000000000000e-01 7.08304096197141e-02 - 6.50000000000000e-01 9.00000000000000e-01 7.12231899541173e-02 - 6.50000000000000e-01 9.50000000000000e-01 7.15625969483843e-02 - 6.50000000000000e-01 1.00000000000000e+00 7.18531123132840e-02 - 6.50000000000000e-01 1.05000000000000e+00 7.20996187172682e-02 - 6.50000000000000e-01 1.10000000000000e+00 7.23069409108627e-02 - 6.50000000000000e-01 1.15000000000000e+00 7.24795465854816e-02 - 6.50000000000000e-01 1.20000000000000e+00 7.26214086398891e-02 - 6.50000000000000e-01 1.25000000000000e+00 7.27359347283743e-02 - 6.50000000000000e-01 1.30000000000000e+00 7.28259514291759e-02 - 6.50000000000000e-01 1.35000000000000e+00 7.28937034975455e-02 - 6.50000000000000e-01 1.40000000000000e+00 7.29409133778589e-02 - 6.50000000000000e-01 1.45000000000000e+00 7.29687687264820e-02 - 6.50000000000000e-01 1.50000000000000e+00 7.29779766314348e-02 + 6.50000000000000e-01 -5.00000000000000e-01 6.06474759209718e-02 + 6.50000000000000e-01 -4.50000000000000e-01 6.06558844773249e-02 + 6.50000000000000e-01 -4.00000000000000e-01 6.06812985053733e-02 + 6.50000000000000e-01 -3.50000000000000e-01 6.07243578634792e-02 + 6.50000000000000e-01 -3.00000000000000e-01 6.07861117844794e-02 + 6.50000000000000e-01 -2.50000000000000e-01 6.08680639993091e-02 + 6.50000000000000e-01 -2.00000000000000e-01 6.09722219367431e-02 + 6.50000000000000e-01 -1.50000000000000e-01 6.11010970916695e-02 + 6.50000000000000e-01 -1.00000000000000e-01 6.12577286808574e-02 + 6.50000000000000e-01 -5.00000000000000e-02 6.14457295559794e-02 + 6.50000000000000e-01 0.00000000000000e+00 6.16692008312070e-02 + 6.50000000000000e-01 5.00000000000000e-02 6.19326859499878e-02 + 6.50000000000000e-01 1.00000000000000e-01 6.22409893857149e-02 + 6.50000000000000e-01 1.50000000000000e-01 6.25988642193340e-02 + 6.50000000000000e-01 2.00000000000000e-01 6.30105121502225e-02 + 6.50000000000000e-01 2.50000000000000e-01 6.34789192995067e-02 + 6.50000000000000e-01 3.00000000000000e-01 6.40050037951545e-02 + 6.50000000000000e-01 3.50000000000000e-01 6.45866268120531e-02 + 6.50000000000000e-01 4.00000000000000e-01 6.52177682042775e-02 + 6.50000000000000e-01 4.50000000000000e-01 6.58880623575077e-02 + 6.50000000000000e-01 5.00000000000000e-01 6.65830455920815e-02 + 6.50000000000000e-01 5.50000000000000e-01 6.72852788261697e-02 + 6.50000000000000e-01 6.00000000000000e-01 6.79763590258332e-02 + 6.50000000000000e-01 6.50000000000000e-01 6.86391634201417e-02 + 6.50000000000000e-01 7.00000000000000e-01 6.92597910110094e-02 + 6.50000000000000e-01 7.50000000000000e-01 6.98285834865186e-02 + 6.50000000000000e-01 8.00000000000000e-01 7.03402661215828e-02 + 6.50000000000000e-01 8.50000000000000e-01 7.07933781645938e-02 + 6.50000000000000e-01 9.00000000000000e-01 7.11893917947000e-02 + 6.50000000000000e-01 9.50000000000000e-01 7.15317039991049e-02 + 6.50000000000000e-01 1.00000000000000e+00 7.18247911581409e-02 + 6.50000000000000e-01 1.05000000000000e+00 7.20735425906153e-02 + 6.50000000000000e-01 1.10000000000000e+00 7.22827983580595e-02 + 6.50000000000000e-01 1.15000000000000e+00 7.24570454543776e-02 + 6.50000000000000e-01 1.20000000000000e+00 7.26002783829188e-02 + 6.50000000000000e-01 1.25000000000000e+00 7.27159252319984e-02 + 6.50000000000000e-01 1.30000000000000e+00 7.28068311628223e-02 + 6.50000000000000e-01 1.35000000000000e+00 7.28752578825056e-02 + 6.50000000000000e-01 1.40000000000000e+00 7.29229396821560e-02 + 6.50000000000000e-01 1.45000000000000e+00 7.29510745407392e-02 + 6.50000000000000e-01 1.50000000000000e+00 7.29603749074680e-02 - 7.00000000000000e-01 -5.00000000000000e-01 6.09675171105216e-02 - 7.00000000000000e-01 -4.50000000000000e-01 6.09768271969968e-02 - 7.00000000000000e-01 -4.00000000000000e-01 6.10049315204807e-02 - 7.00000000000000e-01 -3.50000000000000e-01 6.10523909394218e-02 - 7.00000000000000e-01 -3.00000000000000e-01 6.11201299090132e-02 - 7.00000000000000e-01 -2.50000000000000e-01 6.12094711494547e-02 - 7.00000000000000e-01 -2.00000000000000e-01 6.13221290717425e-02 - 7.00000000000000e-01 -1.50000000000000e-01 6.14602310181858e-02 - 7.00000000000000e-01 -1.00000000000000e-01 6.16262881570085e-02 - 7.00000000000000e-01 -5.00000000000000e-02 6.18231970999542e-02 - 7.00000000000000e-01 0.00000000000000e+00 6.20541365582606e-02 - 7.00000000000000e-01 5.00000000000000e-02 6.23224935334661e-02 - 7.00000000000000e-01 1.00000000000000e-01 6.26316427496848e-02 - 7.00000000000000e-01 1.50000000000000e-01 6.29846947514392e-02 - 7.00000000000000e-01 2.00000000000000e-01 6.33840830638691e-02 - 7.00000000000000e-01 2.50000000000000e-01 6.38310461133791e-02 - 7.00000000000000e-01 3.00000000000000e-01 6.43250308517529e-02 - 7.00000000000000e-01 3.50000000000000e-01 6.48631349613279e-02 - 7.00000000000000e-01 4.00000000000000e-01 6.54396315409743e-02 - 7.00000000000000e-01 4.50000000000000e-01 6.60458335366931e-02 - 7.00000000000000e-01 5.00000000000000e-01 6.66703538286783e-02 - 7.00000000000000e-01 5.50000000000000e-01 6.72999843084105e-02 - 7.00000000000000e-01 6.00000000000000e-01 6.79208927350993e-02 - 7.00000000000000e-01 6.50000000000000e-01 6.85201122161657e-02 - 7.00000000000000e-01 7.00000000000000e-01 6.90866999701977e-02 - 7.00000000000000e-01 7.50000000000000e-01 6.96125367685647e-02 - 7.00000000000000e-01 8.00000000000000e-01 7.00925262381749e-02 - 7.00000000000000e-01 8.50000000000000e-01 7.05243449262846e-02 - 7.00000000000000e-01 9.00000000000000e-01 7.09079563963326e-02 - 7.00000000000000e-01 9.50000000000000e-01 7.12449873753883e-02 - 7.00000000000000e-01 1.00000000000000e+00 7.15381530500889e-02 - 7.00000000000000e-01 1.05000000000000e+00 7.17907421919731e-02 - 7.00000000000000e-01 1.10000000000000e+00 7.20061918586980e-02 - 7.00000000000000e-01 1.15000000000000e+00 7.21878933654807e-02 - 7.00000000000000e-01 1.20000000000000e+00 7.23389406005885e-02 - 7.00000000000000e-01 1.25000000000000e+00 7.24621027969163e-02 - 7.00000000000000e-01 1.30000000000000e+00 7.25597080635645e-02 - 7.00000000000000e-01 1.35000000000000e+00 7.26336820874026e-02 - 7.00000000000000e-01 1.40000000000000e+00 7.26854769433999e-02 - 7.00000000000000e-01 1.45000000000000e+00 7.27161473265892e-02 - 7.00000000000000e-01 1.50000000000000e+00 7.27263042539326e-02 + 7.00000000000000e-01 -5.00000000000000e-01 6.08837086720968e-02 + 7.00000000000000e-01 -4.50000000000000e-01 6.08930387135159e-02 + 7.00000000000000e-01 -4.00000000000000e-01 6.09212036464352e-02 + 7.00000000000000e-01 -3.50000000000000e-01 6.09687667109931e-02 + 7.00000000000000e-01 -3.00000000000000e-01 6.10366548646495e-02 + 7.00000000000000e-01 -2.50000000000000e-01 6.11261964259177e-02 + 7.00000000000000e-01 -2.00000000000000e-01 6.12391116419636e-02 + 7.00000000000000e-01 -1.50000000000000e-01 6.13775367639964e-02 + 7.00000000000000e-01 -1.00000000000000e-01 6.15439946684517e-02 + 7.00000000000000e-01 -5.00000000000000e-02 6.17413959116241e-02 + 7.00000000000000e-01 0.00000000000000e+00 6.19729387366643e-02 + 7.00000000000000e-01 5.00000000000000e-02 6.22420320994342e-02 + 7.00000000000000e-01 1.00000000000000e-01 6.25520787095558e-02 + 7.00000000000000e-01 1.50000000000000e-01 6.29062191380889e-02 + 7.00000000000000e-01 2.00000000000000e-01 6.33069209282490e-02 + 7.00000000000000e-01 2.50000000000000e-01 6.37554562784204e-02 + 7.00000000000000e-01 3.00000000000000e-01 6.42513062652615e-02 + 7.00000000000000e-01 3.50000000000000e-01 6.47915931650985e-02 + 7.00000000000000e-01 4.00000000000000e-01 6.53706041659487e-02 + 7.00000000000000e-01 4.50000000000000e-01 6.59796465577396e-02 + 7.00000000000000e-01 5.00000000000000e-01 6.66073072157180e-02 + 7.00000000000000e-01 5.50000000000000e-01 6.72403276909478e-02 + 7.00000000000000e-01 6.00000000000000e-01 6.78648066415148e-02 + 7.00000000000000e-01 6.50000000000000e-01 6.84676938635473e-02 + 7.00000000000000e-01 7.00000000000000e-01 6.90379584462314e-02 + 7.00000000000000e-01 7.50000000000000e-01 6.95673975978663e-02 + 7.00000000000000e-01 8.00000000000000e-01 7.00508414388680e-02 + 7.00000000000000e-01 8.50000000000000e-01 7.04859095083999e-02 + 7.00000000000000e-01 9.00000000000000e-01 7.08725250212500e-02 + 7.00000000000000e-01 9.50000000000000e-01 7.12122896396520e-02 + 7.00000000000000e-01 1.00000000000000e+00 7.15079067182784e-02 + 7.00000000000000e-01 1.05000000000000e+00 7.17626627483471e-02 + 7.00000000000000e-01 1.10000000000000e+00 7.19800021011053e-02 + 7.00000000000000e-01 1.15000000000000e+00 7.21633259975708e-02 + 7.00000000000000e-01 1.20000000000000e+00 7.23157426841319e-02 + 7.00000000000000e-01 1.25000000000000e+00 7.24400346951730e-02 + 7.00000000000000e-01 1.30000000000000e+00 7.25385441755452e-02 + 7.00000000000000e-01 1.35000000000000e+00 7.26132075812091e-02 + 7.00000000000000e-01 1.40000000000000e+00 7.26654882147436e-02 + 7.00000000000000e-01 1.45000000000000e+00 7.26964464301375e-02 + 7.00000000000000e-01 1.50000000000000e+00 7.27066989257947e-02 - 7.50000000000000e-01 -5.00000000000000e-01 6.11843835976351e-02 - 7.50000000000000e-01 -4.50000000000000e-01 6.11944257112996e-02 - 7.50000000000000e-01 -4.00000000000000e-01 6.12247097841713e-02 - 7.50000000000000e-01 -3.50000000000000e-01 6.12757106226278e-02 - 7.50000000000000e-01 -3.00000000000000e-01 6.13482277995243e-02 - 7.50000000000000e-01 -2.50000000000000e-01 6.14433848216307e-02 - 7.50000000000000e-01 -2.00000000000000e-01 6.15626150833233e-02 - 7.50000000000000e-01 -1.50000000000000e-01 6.17076751746360e-02 - 7.50000000000000e-01 -1.00000000000000e-01 6.18805792855213e-02 - 7.50000000000000e-01 -5.00000000000000e-02 6.20835902944590e-02 - 7.50000000000000e-01 0.00000000000000e+00 6.23191073024060e-02 - 7.50000000000000e-01 5.00000000000000e-02 6.25895561216238e-02 - 7.50000000000000e-01 1.00000000000000e-01 6.28972247132656e-02 - 7.50000000000000e-01 1.50000000000000e-01 6.32440104679679e-02 - 7.50000000000000e-01 2.00000000000000e-01 6.36311280321780e-02 - 7.50000000000000e-01 2.50000000000000e-01 6.40586836199972e-02 - 7.50000000000000e-01 3.00000000000000e-01 6.45253135085134e-02 - 7.50000000000000e-01 3.50000000000000e-01 6.50278432127550e-02 - 7.50000000000000e-01 4.00000000000000e-01 6.55610275884385e-02 - 7.50000000000000e-01 4.50000000000000e-01 6.61175474382655e-02 - 7.50000000000000e-01 5.00000000000000e-01 6.66882651446170e-02 - 7.50000000000000e-01 5.50000000000000e-01 6.72628377426345e-02 - 7.50000000000000e-01 6.00000000000000e-01 6.78305432987061e-02 - 7.50000000000000e-01 6.50000000000000e-01 6.83812013917414e-02 - 7.50000000000000e-01 7.00000000000000e-01 6.89059799192269e-02 - 7.50000000000000e-01 7.50000000000000e-01 6.93979716652338e-02 - 7.50000000000000e-01 8.00000000000000e-01 6.98523808053415e-02 - 7.50000000000000e-01 8.50000000000000e-01 7.02664782971392e-02 - 7.50000000000000e-01 9.00000000000000e-01 7.06392889164168e-02 - 7.50000000000000e-01 9.50000000000000e-01 7.09712484718674e-02 - 7.50000000000000e-01 1.00000000000000e+00 7.12637940068990e-02 - 7.50000000000000e-01 1.05000000000000e+00 7.15189922955439e-02 - 7.50000000000000e-01 1.10000000000000e+00 7.17392062655590e-02 - 7.50000000000000e-01 1.15000000000000e+00 7.19268780579627e-02 - 7.50000000000000e-01 1.20000000000000e+00 7.20843634935502e-02 - 7.50000000000000e-01 1.25000000000000e+00 7.22138128961895e-02 - 7.50000000000000e-01 1.30000000000000e+00 7.23171102801157e-02 - 7.50000000000000e-01 1.35000000000000e+00 7.23958205294095e-02 - 7.50000000000000e-01 1.40000000000000e+00 7.24511702551891e-02 - 7.50000000000000e-01 1.45000000000000e+00 7.24840303067019e-02 - 7.50000000000000e-01 1.50000000000000e+00 7.24949309257720e-02 + 7.50000000000000e-01 -5.00000000000000e-01 6.11012920555541e-02 + 7.50000000000000e-01 -4.50000000000000e-01 6.11113590427066e-02 + 7.50000000000000e-01 -4.00000000000000e-01 6.11417191639592e-02 + 7.50000000000000e-01 -3.50000000000000e-01 6.11928485269086e-02 + 7.50000000000000e-01 -3.00000000000000e-01 6.12655512066931e-02 + 7.50000000000000e-01 -2.50000000000000e-01 6.13609540874327e-02 + 7.50000000000000e-01 -2.00000000000000e-01 6.14804986105593e-02 + 7.50000000000000e-01 -1.50000000000000e-01 6.16259482689186e-02 + 7.50000000000000e-01 -1.00000000000000e-01 6.17993290321649e-02 + 7.50000000000000e-01 -5.00000000000000e-02 6.20029167764482e-02 + 7.50000000000000e-01 0.00000000000000e+00 6.22391267242918e-02 + 7.50000000000000e-01 5.00000000000000e-02 6.25104052628241e-02 + 7.50000000000000e-01 1.00000000000000e-01 6.28190614246453e-02 + 7.50000000000000e-01 1.50000000000000e-01 6.31670175835526e-02 + 7.50000000000000e-01 2.00000000000000e-01 6.35555117058699e-02 + 7.50000000000000e-01 2.50000000000000e-01 6.39846760105234e-02 + 7.50000000000000e-01 3.00000000000000e-01 6.44531677610613e-02 + 7.50000000000000e-01 3.50000000000000e-01 6.49578276058686e-02 + 7.50000000000000e-01 4.00000000000000e-01 6.54934144973322e-02 + 7.50000000000000e-01 4.50000000000000e-01 6.60526002567882e-02 + 7.50000000000000e-01 5.00000000000000e-01 6.66262223607630e-02 + 7.50000000000000e-01 5.50000000000000e-01 6.72038970387418e-02 + 7.50000000000000e-01 6.00000000000000e-01 6.77748476600807e-02 + 7.50000000000000e-01 6.50000000000000e-01 6.83288292301283e-02 + 7.50000000000000e-01 7.00000000000000e-01 6.88569427855548e-02 + 7.50000000000000e-01 7.50000000000000e-01 6.93522134145150e-02 + 7.50000000000000e-01 8.00000000000000e-01 6.98097870162732e-02 + 7.50000000000000e-01 8.50000000000000e-01 7.02268848279150e-02 + 7.50000000000000e-01 9.00000000000000e-01 7.06024949225335e-02 + 7.50000000000000e-01 9.50000000000000e-01 7.09370282036791e-02 + 7.50000000000000e-01 1.00000000000000e+00 7.12319056694409e-02 + 7.50000000000000e-01 1.05000000000000e+00 7.14891873658953e-02 + 7.50000000000000e-01 1.10000000000000e+00 7.17112357805667e-02 + 7.50000000000000e-01 1.15000000000000e+00 7.19004982190669e-02 + 7.50000000000000e-01 1.20000000000000e+00 7.20593374060556e-02 + 7.50000000000000e-01 1.25000000000000e+00 7.21899126811276e-02 + 7.50000000000000e-01 1.30000000000000e+00 7.22941166435888e-02 + 7.50000000000000e-01 1.35000000000000e+00 7.23735225307825e-02 + 7.50000000000000e-01 1.40000000000000e+00 7.24293632403205e-02 + 7.50000000000000e-01 1.45000000000000e+00 7.24625160364619e-02 + 7.50000000000000e-01 1.50000000000000e+00 7.24735134353388e-02 - 8.00000000000000e-01 -5.00000000000000e-01 6.13811756325633e-02 - 8.00000000000000e-01 -4.50000000000000e-01 6.13917918814536e-02 - 8.00000000000000e-01 -4.00000000000000e-01 6.14237725213462e-02 - 8.00000000000000e-01 -3.50000000000000e-01 6.14775133887658e-02 - 8.00000000000000e-01 -3.00000000000000e-01 6.15536897457988e-02 - 8.00000000000000e-01 -2.50000000000000e-01 6.16532201782613e-02 - 8.00000000000000e-01 -2.00000000000000e-01 6.17772859018794e-02 - 8.00000000000000e-01 -1.50000000000000e-01 6.19272778455471e-02 - 8.00000000000000e-01 -1.00000000000000e-01 6.21047762405141e-02 - 8.00000000000000e-01 -5.00000000000000e-02 6.23114810691863e-02 - 8.00000000000000e-01 0.00000000000000e+00 6.25491316585383e-02 - 8.00000000000000e-01 5.00000000000000e-02 6.28193826222838e-02 - 8.00000000000000e-01 1.00000000000000e-01 6.31236716286467e-02 - 8.00000000000000e-01 1.50000000000000e-01 6.34630142925791e-02 - 8.00000000000000e-01 2.00000000000000e-01 6.38377370378914e-02 - 8.00000000000000e-01 2.50000000000000e-01 6.42472379027697e-02 - 8.00000000000000e-01 3.00000000000000e-01 6.46896953279164e-02 - 8.00000000000000e-01 3.50000000000000e-01 6.51618891213642e-02 - 8.00000000000000e-01 4.00000000000000e-01 6.56590885457392e-02 - 8.00000000000000e-01 4.50000000000000e-01 6.61750612527041e-02 - 8.00000000000000e-01 5.00000000000000e-01 6.67023189651878e-02 - 8.00000000000000e-01 5.50000000000000e-01 6.72325562856768e-02 - 8.00000000000000e-01 6.00000000000000e-01 6.77572323174797e-02 - 8.00000000000000e-01 6.50000000000000e-01 6.82681534759834e-02 - 8.00000000000000e-01 7.00000000000000e-01 6.87580499197316e-02 - 8.00000000000000e-01 7.50000000000000e-01 6.92209850088113e-02 - 8.00000000000000e-01 8.00000000000000e-01 6.96525619285160e-02 - 8.00000000000000e-01 8.50000000000000e-01 7.00498909602489e-02 - 8.00000000000000e-01 9.00000000000000e-01 7.04114649957055e-02 - 8.00000000000000e-01 9.50000000000000e-01 7.07369178092436e-02 - 8.00000000000000e-01 1.00000000000000e+00 7.10267971681065e-02 - 8.00000000000000e-01 1.05000000000000e+00 7.12822365506991e-02 - 8.00000000000000e-01 1.10000000000000e+00 7.15047599153638e-02 - 8.00000000000000e-01 1.15000000000000e+00 7.16960516433296e-02 - 8.00000000000000e-01 1.20000000000000e+00 7.18578160629990e-02 - 8.00000000000000e-01 1.25000000000000e+00 7.19916789990341e-02 - 8.00000000000000e-01 1.30000000000000e+00 7.20991008424484e-02 - 8.00000000000000e-01 1.35000000000000e+00 7.21813245518095e-02 - 8.00000000000000e-01 1.40000000000000e+00 7.22393434851259e-02 - 8.00000000000000e-01 1.45000000000000e+00 7.22738679220308e-02 - 8.00000000000000e-01 1.50000000000000e+00 7.22853316253273e-02 + 8.00000000000000e-01 -5.00000000000000e-01 6.12987501227973e-02 + 8.00000000000000e-01 -4.50000000000000e-01 6.13093958021127e-02 + 8.00000000000000e-01 -4.00000000000000e-01 6.13414653750341e-02 + 8.00000000000000e-01 -3.50000000000000e-01 6.13953576561637e-02 + 8.00000000000000e-01 -3.00000000000000e-01 6.14717496968981e-02 + 8.00000000000000e-01 -2.50000000000000e-01 6.15715665509518e-02 + 8.00000000000000e-01 -2.00000000000000e-01 6.16959937147135e-02 + 8.00000000000000e-01 -1.50000000000000e-01 6.18464314667691e-02 + 8.00000000000000e-01 -1.00000000000000e-01 6.20244688187856e-02 + 8.00000000000000e-01 -5.00000000000000e-02 6.22318181808446e-02 + 8.00000000000000e-01 0.00000000000000e+00 6.24702330870989e-02 + 8.00000000000000e-01 5.00000000000000e-02 6.27413844368766e-02 + 8.00000000000000e-01 1.00000000000000e-01 6.30467278599754e-02 + 8.00000000000000e-01 1.50000000000000e-01 6.33872961758574e-02 + 8.00000000000000e-01 2.00000000000000e-01 6.37634352470048e-02 + 8.00000000000000e-01 2.50000000000000e-01 6.41745592207951e-02 + 8.00000000000000e-01 3.00000000000000e-01 6.46188608972747e-02 + 8.00000000000000e-01 3.50000000000000e-01 6.50931275628594e-02 + 8.00000000000000e-01 4.00000000000000e-01 6.55926268604635e-02 + 8.00000000000000e-01 4.50000000000000e-01 6.61111155140556e-02 + 8.00000000000000e-01 5.00000000000000e-01 6.66410827240849e-02 + 8.00000000000000e-01 5.50000000000000e-01 6.71741890630483e-02 + 8.00000000000000e-01 6.00000000000000e-01 6.77018486128242e-02 + 8.00000000000000e-01 6.50000000000000e-01 6.82158178197250e-02 + 8.00000000000000e-01 7.00000000000000e-01 6.87087721427529e-02 + 8.00000000000000e-01 7.50000000000000e-01 6.91747228725831e-02 + 8.00000000000000e-01 8.00000000000000e-01 6.96092224220184e-02 + 8.00000000000000e-01 8.50000000000000e-01 7.00093399314212e-02 + 8.00000000000000e-01 9.00000000000000e-01 7.03735348080748e-02 + 8.00000000000000e-01 9.50000000000000e-01 7.07014164630957e-02 + 8.00000000000000e-01 1.00000000000000e+00 7.09935150670424e-02 + 8.00000000000000e-01 1.05000000000000e+00 7.12509542043414e-02 + 8.00000000000000e-01 1.10000000000000e+00 7.14752531231965e-02 + 8.00000000000000e-01 1.15000000000000e+00 7.16680957918742e-02 + 8.00000000000000e-01 1.20000000000000e+00 7.18311900208927e-02 + 8.00000000000000e-01 1.25000000000000e+00 7.19661657335543e-02 + 8.00000000000000e-01 1.30000000000000e+00 7.20744886467616e-02 + 8.00000000000000e-01 1.35000000000000e+00 7.21574066311174e-02 + 8.00000000000000e-01 1.40000000000000e+00 7.22159177475625e-02 + 8.00000000000000e-01 1.45000000000000e+00 7.22507357025442e-02 + 8.00000000000000e-01 1.50000000000000e+00 7.22622969574963e-02 - 8.50000000000000e-01 -5.00000000000000e-01 6.15567458621369e-02 - 8.50000000000000e-01 -4.50000000000000e-01 6.15677986585871e-02 - 8.50000000000000e-01 -4.00000000000000e-01 6.16010689843020e-02 - 8.50000000000000e-01 -3.50000000000000e-01 6.16568856455652e-02 - 8.50000000000000e-01 -3.00000000000000e-01 6.17357856867840e-02 - 8.50000000000000e-01 -2.50000000000000e-01 6.18385306333255e-02 - 8.50000000000000e-01 -2.00000000000000e-01 6.19660361456266e-02 - 8.50000000000000e-01 -1.50000000000000e-01 6.21193865596098e-02 - 8.50000000000000e-01 -1.00000000000000e-01 6.22997759841750e-02 - 8.50000000000000e-01 -5.00000000000000e-02 6.25084284319311e-02 - 8.50000000000000e-01 0.00000000000000e+00 6.27465380613644e-02 - 8.50000000000000e-01 5.00000000000000e-02 6.30151554339294e-02 - 8.50000000000000e-01 1.00000000000000e-01 6.33150733734697e-02 - 8.50000000000000e-01 1.50000000000000e-01 6.36466352259002e-02 - 8.50000000000000e-01 2.00000000000000e-01 6.40095681387292e-02 - 8.50000000000000e-01 2.50000000000000e-01 6.44028238661818e-02 - 8.50000000000000e-01 3.00000000000000e-01 6.48243227906497e-02 - 8.50000000000000e-01 3.50000000000000e-01 6.52709325740975e-02 - 8.50000000000000e-01 4.00000000000000e-01 6.57383754231871e-02 - 8.50000000000000e-01 4.50000000000000e-01 6.62212804464606e-02 - 8.50000000000000e-01 5.00000000000000e-01 6.67133860375447e-02 - 8.50000000000000e-01 5.50000000000000e-01 6.72078434964842e-02 - 8.50000000000000e-01 6.00000000000000e-01 6.76976727586687e-02 - 8.50000000000000e-01 6.50000000000000e-01 6.81761240044616e-02 - 8.50000000000000e-01 7.00000000000000e-01 6.86370710129666e-02 - 8.50000000000000e-01 7.50000000000000e-01 6.90753776108815e-02 - 8.50000000000000e-01 8.00000000000000e-01 6.94869987525857e-02 - 8.50000000000000e-01 8.50000000000000e-01 6.98690702949038e-02 - 8.50000000000000e-01 9.00000000000000e-01 7.02197389587439e-02 - 8.50000000000000e-01 9.50000000000000e-01 7.05381641065196e-02 - 8.50000000000000e-01 1.00000000000000e+00 7.08242329161604e-02 - 8.50000000000000e-01 1.05000000000000e+00 7.10784098692074e-02 - 8.50000000000000e-01 1.10000000000000e+00 7.13015522219022e-02 - 8.50000000000000e-01 1.15000000000000e+00 7.14947510363872e-02 - 8.50000000000000e-01 1.20000000000000e+00 7.16591697832912e-02 - 8.50000000000000e-01 1.25000000000000e+00 7.17959837091668e-02 - 8.50000000000000e-01 1.30000000000000e+00 7.19062932862629e-02 - 8.50000000000000e-01 1.35000000000000e+00 7.19910427017090e-02 - 8.50000000000000e-01 1.40000000000000e+00 7.20510081141740e-02 - 8.50000000000000e-01 1.45000000000000e+00 7.20867606537572e-02 - 8.50000000000000e-01 1.50000000000000e+00 7.20986388807913e-02 + 8.50000000000000e-01 -5.00000000000000e-01 6.14749266621162e-02 + 8.50000000000000e-01 -4.50000000000000e-01 6.14860127394987e-02 + 8.50000000000000e-01 -4.00000000000000e-01 6.15193838832536e-02 + 8.50000000000000e-01 -3.50000000000000e-01 6.15753703152943e-02 + 8.50000000000000e-01 -3.00000000000000e-01 6.16545134292424e-02 + 8.50000000000000e-01 -2.50000000000000e-01 6.17575771378471e-02 + 8.50000000000000e-01 -2.00000000000000e-01 6.18854847063246e-02 + 8.50000000000000e-01 -1.50000000000000e-01 6.20393264814280e-02 + 8.50000000000000e-01 -1.00000000000000e-01 6.22203056010747e-02 + 8.50000000000000e-01 -5.00000000000000e-02 6.24296566841341e-02 + 8.50000000000000e-01 0.00000000000000e+00 6.26685859055244e-02 + 8.50000000000000e-01 5.00000000000000e-02 6.29381572362084e-02 + 8.50000000000000e-01 1.00000000000000e-01 6.32391766727865e-02 + 8.50000000000000e-01 1.50000000000000e-01 6.35720020444473e-02 + 8.50000000000000e-01 2.00000000000000e-01 6.39363738177701e-02 + 8.50000000000000e-01 2.50000000000000e-01 6.43312537785317e-02 + 8.50000000000000e-01 3.00000000000000e-01 6.47545720970139e-02 + 8.50000000000000e-01 3.50000000000000e-01 6.52031980200788e-02 + 8.50000000000000e-01 4.00000000000000e-01 6.56728496103849e-02 + 8.50000000000000e-01 4.50000000000000e-01 6.61581434052228e-02 + 8.50000000000000e-01 5.00000000000000e-01 6.66527976428374e-02 + 8.50000000000000e-01 5.50000000000000e-01 6.71499348245295e-02 + 8.50000000000000e-01 6.00000000000000e-01 6.76425376918594e-02 + 8.50000000000000e-01 6.50000000000000e-01 6.81238143092177e-02 + 8.50000000000000e-01 7.00000000000000e-01 6.85875965806449e-02 + 8.50000000000000e-01 7.50000000000000e-01 6.90287026869213e-02 + 8.50000000000000e-01 8.00000000000000e-01 6.94430476243042e-02 + 8.50000000000000e-01 8.50000000000000e-01 6.98277287306329e-02 + 8.50000000000000e-01 9.00000000000000e-01 7.01808653132354e-02 + 8.50000000000000e-01 9.50000000000000e-01 7.05015913208623e-02 + 8.50000000000000e-01 1.00000000000000e+00 7.07897766375245e-02 + 8.50000000000000e-01 1.05000000000000e+00 7.10458740849127e-02 + 8.50000000000000e-01 1.10000000000000e+00 7.12707329006021e-02 + 8.50000000000000e-01 1.15000000000000e+00 7.14654407802229e-02 + 8.50000000000000e-01 1.20000000000000e+00 7.16311606396587e-02 + 8.50000000000000e-01 1.25000000000000e+00 7.17690692966240e-02 + 8.50000000000000e-01 1.30000000000000e+00 7.18802689706955e-02 + 8.50000000000000e-01 1.35000000000000e+00 7.19657068844221e-02 + 8.50000000000000e-01 1.40000000000000e+00 7.20261618378935e-02 + 8.50000000000000e-01 1.45000000000000e+00 7.20622070343757e-02 + 8.50000000000000e-01 1.50000000000000e+00 7.20741826440162e-02 - 9.00000000000000e-01 -5.00000000000000e-01 6.17102113239839e-02 - 9.00000000000000e-01 -4.50000000000000e-01 6.17215816284095e-02 - 9.00000000000000e-01 -4.00000000000000e-01 6.17558207909747e-02 - 9.00000000000000e-01 -3.50000000000000e-01 6.18131581783229e-02 - 9.00000000000000e-01 -3.00000000000000e-01 6.18940495032104e-02 - 9.00000000000000e-01 -2.50000000000000e-01 6.19990763670591e-02 - 9.00000000000000e-01 -2.00000000000000e-01 6.21289479443189e-02 - 9.00000000000000e-01 -1.50000000000000e-01 6.22844705235140e-02 - 9.00000000000000e-01 -1.00000000000000e-01 6.24665161013491e-02 - 9.00000000000000e-01 -5.00000000000000e-02 6.26759133274165e-02 - 9.00000000000000e-01 0.00000000000000e+00 6.29134244237013e-02 - 9.00000000000000e-01 5.00000000000000e-02 6.31796331771163e-02 - 9.00000000000000e-01 1.00000000000000e-01 6.34748236066960e-02 - 9.00000000000000e-01 1.50000000000000e-01 6.37988695937176e-02 - 9.00000000000000e-01 2.00000000000000e-01 6.41510916404941e-02 - 9.00000000000000e-01 2.50000000000000e-01 6.45301408747893e-02 - 9.00000000000000e-01 3.00000000000000e-01 6.49338270824960e-02 - 9.00000000000000e-01 3.50000000000000e-01 6.53591434810845e-02 - 9.00000000000000e-01 4.00000000000000e-01 6.58021991625037e-02 - 9.00000000000000e-01 4.50000000000000e-01 6.62583028131715e-02 - 9.00000000000000e-01 5.00000000000000e-01 6.67220805469676e-02 - 9.00000000000000e-01 5.50000000000000e-01 6.71877698006170e-02 - 9.00000000000000e-01 6.00000000000000e-01 6.76495026810607e-02 - 9.00000000000000e-01 6.50000000000000e-01 6.81015793716533e-02 - 9.00000000000000e-01 7.00000000000000e-01 6.85387405697427e-02 - 9.00000000000000e-01 7.50000000000000e-01 6.89564555208746e-02 - 9.00000000000000e-01 8.00000000000000e-01 6.93510261960904e-02 - 9.00000000000000e-01 8.50000000000000e-01 6.97196283716596e-02 - 9.00000000000000e-01 9.00000000000000e-01 7.00602744597254e-02 - 9.00000000000000e-01 9.50000000000000e-01 7.03717571915973e-02 - 9.00000000000000e-01 1.00000000000000e+00 7.06535564734625e-02 - 9.00000000000000e-01 1.05000000000000e+00 7.09056152755144e-02 - 9.00000000000000e-01 1.10000000000000e+00 7.11283038403079e-02 - 9.00000000000000e-01 1.15000000000000e+00 7.13222286025874e-02 - 9.00000000000000e-01 1.20000000000000e+00 7.14881294498674e-02 - 9.00000000000000e-01 1.25000000000000e+00 7.16268036736175e-02 - 9.00000000000000e-01 1.30000000000000e+00 7.17390456154284e-02 - 9.00000000000000e-01 1.35000000000000e+00 7.18255461815064e-02 - 9.00000000000000e-01 1.40000000000000e+00 7.18868916951490e-02 - 9.00000000000000e-01 1.45000000000000e+00 7.19235214751438e-02 - 9.00000000000000e-01 1.50000000000000e+00 7.19356989440525e-02 + 9.00000000000000e-01 -5.00000000000000e-01 6.16289312620101e-02 + 9.00000000000000e-01 -4.50000000000000e-01 6.16403386823369e-02 + 9.00000000000000e-01 -4.00000000000000e-01 6.16746877439127e-02 + 9.00000000000000e-01 -3.50000000000000e-01 6.17322115986493e-02 + 9.00000000000000e-01 -3.00000000000000e-01 6.18133673395063e-02 + 9.00000000000000e-01 -2.50000000000000e-01 6.19187408641196e-02 + 9.00000000000000e-01 -2.00000000000000e-01 6.20490469066325e-02 + 9.00000000000000e-01 -1.50000000000000e-01 6.22050981463643e-02 + 9.00000000000000e-01 -1.00000000000000e-01 6.23877737333667e-02 + 9.00000000000000e-01 -5.00000000000000e-02 6.25979120176824e-02 + 9.00000000000000e-01 0.00000000000000e+00 6.28362851435401e-02 + 9.00000000000000e-01 5.00000000000000e-02 6.31034868623526e-02 + 9.00000000000000e-01 1.00000000000000e-01 6.33998127399526e-02 + 9.00000000000000e-01 1.50000000000000e-01 6.37251467731882e-02 + 9.00000000000000e-01 2.00000000000000e-01 6.40788184890995e-02 + 9.00000000000000e-01 2.50000000000000e-01 6.44594859593929e-02 + 9.00000000000000e-01 3.00000000000000e-01 6.48649636722832e-02 + 9.00000000000000e-01 3.50000000000000e-01 6.52922439943596e-02 + 9.00000000000000e-01 4.00000000000000e-01 6.57374289996746e-02 + 9.00000000000000e-01 4.50000000000000e-01 6.61958150829026e-02 + 9.00000000000000e-01 5.00000000000000e-01 6.66620099709559e-02 + 9.00000000000000e-01 5.50000000000000e-01 6.71302260464632e-02 + 9.00000000000000e-01 6.00000000000000e-01 6.75945633745374e-02 + 9.00000000000000e-01 6.50000000000000e-01 6.80492878682235e-02 + 9.00000000000000e-01 7.00000000000000e-01 6.84891041051947e-02 + 9.00000000000000e-01 7.50000000000000e-01 6.89094446251477e-02 + 9.00000000000000e-01 8.00000000000000e-01 6.93065749709701e-02 + 9.00000000000000e-01 8.50000000000000e-01 6.96776395381208e-02 + 9.00000000000000e-01 9.00000000000000e-01 7.00206234451960e-02 + 9.00000000000000e-01 9.50000000000000e-01 7.03342974361181e-02 + 9.00000000000000e-01 1.00000000000000e+00 7.06181226662911e-02 + 9.00000000000000e-01 1.05000000000000e+00 7.08720294669027e-02 + 9.00000000000000e-01 1.10000000000000e+00 7.10963792458918e-02 + 9.00000000000000e-01 1.15000000000000e+00 7.12917712883376e-02 + 9.00000000000000e-01 1.20000000000000e+00 7.14589437327831e-02 + 9.00000000000000e-01 1.25000000000000e+00 7.15986921021023e-02 + 9.00000000000000e-01 1.30000000000000e+00 7.17118106684354e-02 + 9.00000000000000e-01 1.35000000000000e+00 7.17989912746165e-02 + 9.00000000000000e-01 1.40000000000000e+00 7.18608216073879e-02 + 9.00000000000000e-01 1.45000000000000e+00 7.18977416856509e-02 + 9.00000000000000e-01 1.50000000000000e+00 7.19100159558812e-02 - 9.50000000000000e-01 -5.00000000000000e-01 6.18409039052731e-02 - 9.50000000000000e-01 -4.50000000000000e-01 6.18525146731733e-02 - 9.50000000000000e-01 -4.00000000000000e-01 6.18874431221105e-02 - 9.50000000000000e-01 -3.50000000000000e-01 6.19458846207922e-02 - 9.50000000000000e-01 -3.00000000000000e-01 6.20281782770829e-02 - 9.50000000000000e-01 -2.50000000000000e-01 6.21347757955163e-02 - 9.50000000000000e-01 -2.00000000000000e-01 6.22662052906347e-02 - 9.50000000000000e-01 -1.50000000000000e-01 6.24230433561961e-02 - 9.50000000000000e-01 -1.00000000000000e-01 6.26058970168112e-02 - 9.50000000000000e-01 -5.00000000000000e-02 6.28152776569780e-02 - 9.50000000000000e-01 0.00000000000000e+00 6.30516171857177e-02 - 9.50000000000000e-01 5.00000000000000e-02 6.33151178005468e-02 - 9.50000000000000e-01 1.00000000000000e-01 6.36057104909887e-02 - 9.50000000000000e-01 1.50000000000000e-01 6.39229234203584e-02 - 9.50000000000000e-01 2.00000000000000e-01 6.42657949011283e-02 - 9.50000000000000e-01 2.50000000000000e-01 6.46327963201897e-02 - 9.50000000000000e-01 3.00000000000000e-01 6.50216982146702e-02 - 9.50000000000000e-01 3.50000000000000e-01 6.54296149193891e-02 - 9.50000000000000e-01 4.00000000000000e-01 6.58529933491711e-02 - 9.50000000000000e-01 4.50000000000000e-01 6.62876358634876e-02 - 9.50000000000000e-01 5.00000000000000e-01 6.67288570905012e-02 - 9.50000000000000e-01 5.50000000000000e-01 6.71716600004904e-02 - 9.50000000000000e-01 6.00000000000000e-01 6.76109987314477e-02 - 9.50000000000000e-01 6.50000000000000e-01 6.80419354279562e-02 - 9.50000000000000e-01 7.00000000000000e-01 6.84598501007627e-02 - 9.50000000000000e-01 7.50000000000000e-01 6.88606947222772e-02 - 9.50000000000000e-01 8.00000000000000e-01 6.92410356511323e-02 - 9.50000000000000e-01 8.50000000000000e-01 6.95981529029163e-02 - 9.50000000000000e-01 9.00000000000000e-01 6.99299616111026e-02 - 9.50000000000000e-01 9.50000000000000e-01 7.02350602229136e-02 - 9.50000000000000e-01 1.00000000000000e+00 7.05126043155406e-02 - 9.50000000000000e-01 1.05000000000000e+00 7.07621979564307e-02 - 9.50000000000000e-01 1.10000000000000e+00 7.09838288994084e-02 - 9.50000000000000e-01 1.15000000000000e+00 7.11777361131237e-02 - 9.50000000000000e-01 1.20000000000000e+00 7.13443148345777e-02 - 9.50000000000000e-01 1.25000000000000e+00 7.14840740791599e-02 - 9.50000000000000e-01 1.30000000000000e+00 7.15975388228093e-02 - 9.50000000000000e-01 1.35000000000000e+00 7.16852032728802e-02 - 9.50000000000000e-01 1.40000000000000e+00 7.17474954786365e-02 - 9.50000000000000e-01 1.45000000000000e+00 7.17847344168399e-02 - 9.50000000000000e-01 1.50000000000000e+00 7.17971244454503e-02 + 9.50000000000000e-01 -5.00000000000000e-01 6.17600900880153e-02 + 9.50000000000000e-01 -4.50000000000000e-01 6.17717404345558e-02 + 9.50000000000000e-01 -4.00000000000000e-01 6.18067873556466e-02 + 9.50000000000000e-01 -3.50000000000000e-01 6.18654278124864e-02 + 9.50000000000000e-01 -3.00000000000000e-01 6.19480039334107e-02 + 9.50000000000000e-01 -2.50000000000000e-01 6.20549703642739e-02 + 9.50000000000000e-01 -2.00000000000000e-01 6.21868605180443e-02 + 9.50000000000000e-01 -1.50000000000000e-01 6.23442567408482e-02 + 9.50000000000000e-01 -1.00000000000000e-01 6.25277719744231e-02 + 9.50000000000000e-01 -5.00000000000000e-02 6.27379264569071e-02 + 9.50000000000000e-01 0.00000000000000e+00 6.29751592262390e-02 + 9.50000000000000e-01 5.00000000000000e-02 6.32396818564409e-02 + 9.50000000000000e-01 1.00000000000000e-01 6.35314332597871e-02 + 9.50000000000000e-01 1.50000000000000e-01 6.38499491796236e-02 + 9.50000000000000e-01 2.00000000000000e-01 6.41942748386601e-02 + 9.50000000000000e-01 2.50000000000000e-01 6.45628838726892e-02 + 9.50000000000000e-01 3.00000000000000e-01 6.49535504257292e-02 + 9.50000000000000e-01 3.50000000000000e-01 6.53633845157539e-02 + 9.50000000000000e-01 4.00000000000000e-01 6.57888256627050e-02 + 9.50000000000000e-01 4.50000000000000e-01 6.62256631705213e-02 + 9.50000000000000e-01 5.00000000000000e-01 6.66691955587281e-02 + 9.50000000000000e-01 5.50000000000000e-01 6.71144029081783e-02 + 9.50000000000000e-01 6.00000000000000e-01 6.75562122704154e-02 + 9.50000000000000e-01 6.50000000000000e-01 6.79896551184170e-02 + 9.50000000000000e-01 7.00000000000000e-01 6.84100823273008e-02 + 9.50000000000000e-01 7.50000000000000e-01 6.88134124058982e-02 + 9.50000000000000e-01 8.00000000000000e-01 6.91961818503326e-02 + 9.50000000000000e-01 8.50000000000000e-01 6.95556405338456e-02 + 9.50000000000000e-01 9.00000000000000e-01 6.98896804549721e-02 + 9.50000000000000e-01 9.50000000000000e-01 7.01968779374871e-02 + 9.50000000000000e-01 1.00000000000000e+00 7.04763705190520e-02 + 9.50000000000000e-01 1.05000000000000e+00 7.07277496339992e-02 + 9.50000000000000e-01 1.10000000000000e+00 7.09509911306735e-02 + 9.50000000000000e-01 1.15000000000000e+00 7.11463275788684e-02 + 9.50000000000000e-01 1.20000000000000e+00 7.13141493523729e-02 + 9.50000000000000e-01 1.25000000000000e+00 7.14549620686578e-02 + 9.50000000000000e-01 1.30000000000000e+00 7.15692894931440e-02 + 9.50000000000000e-01 1.35000000000000e+00 7.16576246611252e-02 + 9.50000000000000e-01 1.40000000000000e+00 7.17203957182148e-02 + 9.50000000000000e-01 1.45000000000000e+00 7.17579219650351e-02 + 9.50000000000000e-01 1.50000000000000e+00 7.17704076593005e-02 - 1.00000000000000e+00 -5.00000000000000e-01 6.19483467269234e-02 - 1.00000000000000e+00 -4.50000000000000e-01 6.19601278136456e-02 - 1.00000000000000e+00 -4.00000000000000e-01 6.19955453420626e-02 - 1.00000000000000e+00 -3.50000000000000e-01 6.20547517336065e-02 - 1.00000000000000e+00 -3.00000000000000e-01 6.21380030381931e-02 - 1.00000000000000e+00 -2.50000000000000e-01 6.22456409897644e-02 - 1.00000000000000e+00 -2.00000000000000e-01 6.23780415515473e-02 - 1.00000000000000e+00 -1.50000000000000e-01 6.25356155275397e-02 - 1.00000000000000e+00 -1.00000000000000e-01 6.27187337372765e-02 - 1.00000000000000e+00 -5.00000000000000e-02 6.29276907729585e-02 - 1.00000000000000e+00 0.00000000000000e+00 6.31626352010485e-02 - 1.00000000000000e+00 5.00000000000000e-02 6.34235071091953e-02 - 1.00000000000000e+00 1.00000000000000e-01 6.37099688529979e-02 - 1.00000000000000e+00 1.50000000000000e-01 6.40213141623566e-02 - 1.00000000000000e+00 2.00000000000000e-01 6.43563793388221e-02 - 1.00000000000000e+00 2.50000000000000e-01 6.47135372179654e-02 - 1.00000000000000e+00 3.00000000000000e-01 6.50905447880438e-02 - 1.00000000000000e+00 3.50000000000000e-01 6.54846459500937e-02 - 1.00000000000000e+00 4.00000000000000e-01 6.58925299978806e-02 - 1.00000000000000e+00 4.50000000000000e-01 6.63103907756534e-02 - 1.00000000000000e+00 5.00000000000000e-01 6.67340348195052e-02 - 1.00000000000000e+00 5.50000000000000e-01 6.71590261901513e-02 - 1.00000000000000e+00 6.00000000000000e-01 6.75809084785973e-02 - 1.00000000000000e+00 6.50000000000000e-01 6.79952874786749e-02 - 1.00000000000000e+00 7.00000000000000e-01 6.83980303284104e-02 - 1.00000000000000e+00 7.50000000000000e-01 6.87854354491037e-02 - 1.00000000000000e+00 8.00000000000000e-01 6.91542978035466e-02 - 1.00000000000000e+00 8.50000000000000e-01 6.95019801824642e-02 - 1.00000000000000e+00 9.00000000000000e-01 6.98263686992377e-02 - 1.00000000000000e+00 9.50000000000000e-01 7.01259293264698e-02 - 1.00000000000000e+00 1.00000000000000e+00 7.03996113432988e-02 - 1.00000000000000e+00 1.05000000000000e+00 7.06467541103568e-02 - 1.00000000000000e+00 1.10000000000000e+00 7.08670888167341e-02 - 1.00000000000000e+00 1.15000000000000e+00 7.10605660423537e-02 - 1.00000000000000e+00 1.20000000000000e+00 7.12273276081012e-02 - 1.00000000000000e+00 1.25000000000000e+00 7.13676401336070e-02 - 1.00000000000000e+00 1.30000000000000e+00 7.14818382176834e-02 - 1.00000000000000e+00 1.35000000000000e+00 7.15702396944292e-02 - 1.00000000000000e+00 1.40000000000000e+00 7.16331510980821e-02 - 1.00000000000000e+00 1.45000000000000e+00 7.16708001476149e-02 - 1.00000000000000e+00 1.50000000000000e+00 7.16833330426769e-02 + 1.00000000000000e+00 -5.00000000000000e-01 6.18679209338698e-02 + 1.00000000000000e+00 -4.50000000000000e-01 6.18797438457759e-02 + 1.00000000000000e+00 -4.00000000000000e-01 6.19152858451139e-02 + 1.00000000000000e+00 -3.50000000000000e-01 6.19747018828753e-02 + 1.00000000000000e+00 -3.00000000000000e-01 6.20582495780913e-02 + 1.00000000000000e+00 -2.50000000000000e-01 6.21662741930628e-02 + 1.00000000000000e+00 -2.00000000000000e-01 6.22991559571566e-02 + 1.00000000000000e+00 -1.50000000000000e-01 6.24573105439313e-02 + 1.00000000000000e+00 -1.00000000000000e-01 6.26411146452466e-02 + 1.00000000000000e+00 -5.00000000000000e-02 6.28508693988166e-02 + 1.00000000000000e+00 0.00000000000000e+00 6.30867305303922e-02 + 1.00000000000000e+00 5.00000000000000e-02 6.33486448632714e-02 + 1.00000000000000e+00 1.00000000000000e-01 6.36362810340903e-02 + 1.00000000000000e+00 1.50000000000000e-01 6.39489383821092e-02 + 1.00000000000000e+00 2.00000000000000e-01 6.42854572157744e-02 + 1.00000000000000e+00 2.50000000000000e-01 6.46442120288252e-02 + 1.00000000000000e+00 3.00000000000000e-01 6.50229594048204e-02 + 1.00000000000000e+00 3.50000000000000e-01 6.54189392570670e-02 + 1.00000000000000e+00 4.00000000000000e-01 6.58288312756831e-02 + 1.00000000000000e+00 4.50000000000000e-01 6.62488179736627e-02 + 1.00000000000000e+00 5.00000000000000e-01 6.66746892207961e-02 + 1.00000000000000e+00 5.50000000000000e-01 6.71019900273782e-02 + 1.00000000000000e+00 6.00000000000000e-01 6.75262381672551e-02 + 1.00000000000000e+00 6.50000000000000e-01 6.79430142240975e-02 + 1.00000000000000e+00 7.00000000000000e-01 6.83481579435858e-02 + 1.00000000000000e+00 7.50000000000000e-01 6.87379398052583e-02 + 1.00000000000000e+00 8.00000000000000e-01 6.91091266756310e-02 + 1.00000000000000e+00 8.50000000000000e-01 6.94590551641924e-02 + 1.00000000000000e+00 9.00000000000000e-01 6.97855892741400e-02 + 1.00000000000000e+00 9.50000000000000e-01 7.00871738486811e-02 + 1.00000000000000e+00 1.00000000000000e+00 7.03627407669356e-02 + 1.00000000000000e+00 1.05000000000000e+00 7.06116161119413e-02 + 1.00000000000000e+00 1.10000000000000e+00 7.08335191263151e-02 + 1.00000000000000e+00 1.15000000000000e+00 7.10283920086760e-02 + 1.00000000000000e+00 1.20000000000000e+00 7.11963711005714e-02 + 1.00000000000000e+00 1.25000000000000e+00 7.13377186628878e-02 + 1.00000000000000e+00 1.30000000000000e+00 7.14527656673496e-02 + 1.00000000000000e+00 1.35000000000000e+00 7.15418288497558e-02 + 1.00000000000000e+00 1.40000000000000e+00 7.16052132824427e-02 + 1.00000000000000e+00 1.45000000000000e+00 7.16431462077246e-02 + 1.00000000000000e+00 1.50000000000000e+00 7.16557737498033e-02 - 1.05000000000000e+00 -5.00000000000000e-01 6.20322038282146e-02 - 1.05000000000000e+00 -4.50000000000000e-01 6.20440973106412e-02 - 1.05000000000000e+00 -4.00000000000000e-01 6.20798485098545e-02 - 1.05000000000000e+00 -3.50000000000000e-01 6.21395622834388e-02 - 1.05000000000000e+00 -3.00000000000000e-01 6.22234425759192e-02 - 1.05000000000000e+00 -2.50000000000000e-01 6.23317351912550e-02 - 1.05000000000000e+00 -2.00000000000000e-01 6.24647157544660e-02 - 1.05000000000000e+00 -1.50000000000000e-01 6.26226410406319e-02 - 1.05000000000000e+00 -1.00000000000000e-01 6.28057374752323e-02 - 1.05000000000000e+00 -5.00000000000000e-02 6.30141092153991e-02 - 1.05000000000000e+00 0.00000000000000e+00 6.32477160612041e-02 - 1.05000000000000e+00 5.00000000000000e-02 6.35063037274320e-02 - 1.05000000000000e+00 1.00000000000000e-01 6.37893521399439e-02 - 1.05000000000000e+00 1.50000000000000e-01 6.40959692706834e-02 - 1.05000000000000e+00 2.00000000000000e-01 6.44248952422687e-02 - 1.05000000000000e+00 2.50000000000000e-01 6.47744092991459e-02 - 1.05000000000000e+00 3.00000000000000e-01 6.51423039097106e-02 - 1.05000000000000e+00 3.50000000000000e-01 6.55259071484058e-02 - 1.05000000000000e+00 4.00000000000000e-01 6.59221017337197e-02 - 1.05000000000000e+00 4.50000000000000e-01 6.63273671470725e-02 - 1.05000000000000e+00 5.00000000000000e-01 6.67378431043809e-02 - 1.05000000000000e+00 5.50000000000000e-01 6.71495199655885e-02 - 1.05000000000000e+00 6.00000000000000e-01 6.75583202292845e-02 - 1.05000000000000e+00 6.50000000000000e-01 6.79602629235604e-02 - 1.05000000000000e+00 7.00000000000000e-01 6.83515412813996e-02 - 1.05000000000000e+00 7.50000000000000e-01 6.87287201347826e-02 - 1.05000000000000e+00 8.00000000000000e-01 6.90887604524051e-02 - 1.05000000000000e+00 8.50000000000000e-01 6.94290962566853e-02 - 1.05000000000000e+00 9.00000000000000e-01 6.97476179793273e-02 - 1.05000000000000e+00 9.50000000000000e-01 7.00426982601292e-02 - 1.05000000000000e+00 1.00000000000000e+00 7.03131486765139e-02 - 1.05000000000000e+00 1.05000000000000e+00 7.05581473962845e-02 - 1.05000000000000e+00 1.10000000000000e+00 7.07772061409586e-02 - 1.05000000000000e+00 1.15000000000000e+00 7.09701056453450e-02 - 1.05000000000000e+00 1.20000000000000e+00 7.11367784781516e-02 - 1.05000000000000e+00 1.25000000000000e+00 7.12773270910470e-02 - 1.05000000000000e+00 1.30000000000000e+00 7.13919284526711e-02 - 1.05000000000000e+00 1.35000000000000e+00 7.14807752719942e-02 - 1.05000000000000e+00 1.40000000000000e+00 7.15440711424282e-02 - 1.05000000000000e+00 1.45000000000000e+00 7.15819830435303e-02 - 1.05000000000000e+00 1.50000000000000e+00 7.15946044900386e-02 + 1.05000000000000e+00 -5.00000000000000e-01 6.19520837802284e-02 + 1.05000000000000e+00 -4.50000000000000e-01 6.19640207223159e-02 + 1.05000000000000e+00 -4.00000000000000e-01 6.19999013700869e-02 + 1.05000000000000e+00 -3.50000000000000e-01 6.20598324579396e-02 + 1.05000000000000e+00 -3.00000000000000e-01 6.21440201354227e-02 + 1.05000000000000e+00 -2.50000000000000e-01 6.22527125663498e-02 + 1.05000000000000e+00 -2.00000000000000e-01 6.23861895322454e-02 + 1.05000000000000e+00 -1.50000000000000e-01 6.25447123914818e-02 + 1.05000000000000e+00 -1.00000000000000e-01 6.27285120973668e-02 + 1.05000000000000e+00 -5.00000000000000e-02 6.29376991462862e-02 + 1.05000000000000e+00 0.00000000000000e+00 6.31722390025957e-02 + 1.05000000000000e+00 5.00000000000000e-02 6.34318830779824e-02 + 1.05000000000000e+00 1.00000000000000e-01 6.37161158243297e-02 + 1.05000000000000e+00 1.50000000000000e-01 6.40240499199007e-02 + 1.05000000000000e+00 2.00000000000000e-01 6.43544277737898e-02 + 1.05000000000000e+00 2.50000000000000e-01 6.47055280157448e-02 + 1.05000000000000e+00 3.00000000000000e-01 6.50751426837154e-02 + 1.05000000000000e+00 3.50000000000000e-01 6.54605933393655e-02 + 1.05000000000000e+00 4.00000000000000e-01 6.58587544008614e-02 + 1.05000000000000e+00 4.50000000000000e-01 6.62660923135194e-02 + 1.05000000000000e+00 5.00000000000000e-01 6.66787330298483e-02 + 1.05000000000000e+00 5.50000000000000e-01 6.70926471319205e-02 + 1.05000000000000e+00 6.00000000000000e-01 6.75037357263433e-02 + 1.05000000000000e+00 6.50000000000000e-01 6.79079932523827e-02 + 1.05000000000000e+00 7.00000000000000e-01 6.83015895408551e-02 + 1.05000000000000e+00 7.50000000000000e-01 6.86810629622653e-02 + 1.05000000000000e+00 8.00000000000000e-01 6.90433497447121e-02 + 1.05000000000000e+00 8.50000000000000e-01 6.93858594093975e-02 + 1.05000000000000e+00 9.00000000000000e-01 6.97064609189573e-02 + 1.05000000000000e+00 9.50000000000000e-01 7.00035075561831e-02 + 1.05000000000000e+00 1.00000000000000e+00 7.02757934223933e-02 + 1.05000000000000e+00 1.05000000000000e+00 7.05224830216523e-02 + 1.05000000000000e+00 1.10000000000000e+00 7.07430763059657e-02 + 1.05000000000000e+00 1.15000000000000e+00 7.09373443384307e-02 + 1.05000000000000e+00 1.20000000000000e+00 7.11052137032078e-02 + 1.05000000000000e+00 1.25000000000000e+00 7.12467813812713e-02 + 1.05000000000000e+00 1.30000000000000e+00 7.13622200580996e-02 + 1.05000000000000e+00 1.35000000000000e+00 7.14517205623620e-02 + 1.05000000000000e+00 1.40000000000000e+00 7.15154841666198e-02 + 1.05000000000000e+00 1.45000000000000e+00 7.15536770229251e-02 + 1.05000000000000e+00 1.50000000000000e+00 7.15663921166485e-02 - 1.10000000000000e+00 -5.00000000000000e-01 6.20922464376866e-02 - 1.10000000000000e+00 -4.50000000000000e-01 6.21042120467087e-02 - 1.10000000000000e+00 -4.00000000000000e-01 6.21401687681085e-02 - 1.10000000000000e+00 -3.50000000000000e-01 6.22002000370711e-02 - 1.10000000000000e+00 -3.00000000000000e-01 6.22844652412096e-02 - 1.10000000000000e+00 -2.50000000000000e-01 6.23931501455569e-02 - 1.10000000000000e+00 -2.00000000000000e-01 6.25264458635773e-02 - 1.10000000000000e+00 -1.50000000000000e-01 6.26845148698900e-02 - 1.10000000000000e+00 -1.00000000000000e-01 6.28674730027089e-02 - 1.10000000000000e+00 -5.00000000000000e-02 6.30752924776831e-02 - 1.10000000000000e+00 0.00000000000000e+00 6.33078170806192e-02 - 1.10000000000000e+00 5.00000000000000e-02 6.35646534186520e-02 - 1.10000000000000e+00 1.00000000000000e-01 6.38451528998768e-02 - 1.10000000000000e+00 1.50000000000000e-01 6.41483286885264e-02 - 1.10000000000000e+00 2.00000000000000e-01 6.44728253573673e-02 - 1.10000000000000e+00 2.50000000000000e-01 6.48168975340384e-02 - 1.10000000000000e+00 3.00000000000000e-01 6.51783504853670e-02 - 1.10000000000000e+00 3.50000000000000e-01 6.55545917054740e-02 - 1.10000000000000e+00 4.00000000000000e-01 6.59426256759818e-02 - 1.10000000000000e+00 4.50000000000000e-01 6.63391165985441e-02 - 1.10000000000000e+00 5.00000000000000e-01 6.67404585375186e-02 - 1.10000000000000e+00 5.50000000000000e-01 6.71428854006926e-02 - 1.10000000000000e+00 6.00000000000000e-01 6.75426065847392e-02 - 1.10000000000000e+00 6.50000000000000e-01 6.79358829913358e-02 - 1.10000000000000e+00 7.00000000000000e-01 6.83191528598201e-02 - 1.10000000000000e+00 7.50000000000000e-01 6.86891417846383e-02 - 1.10000000000000e+00 8.00000000000000e-01 6.90429413195998e-02 - 1.10000000000000e+00 8.50000000000000e-01 6.93780302841204e-02 - 1.10000000000000e+00 9.00000000000000e-01 6.96923139749579e-02 - 1.10000000000000e+00 9.50000000000000e-01 6.99841084600312e-02 - 1.10000000000000e+00 1.00000000000000e+00 7.02521439999437e-02 - 1.10000000000000e+00 1.05000000000000e+00 7.04954775956259e-02 - 1.10000000000000e+00 1.10000000000000e+00 7.07135060043309e-02 - 1.10000000000000e+00 1.15000000000000e+00 7.09058499224418e-02 - 1.10000000000000e+00 1.20000000000000e+00 7.10723490888219e-02 - 1.10000000000000e+00 1.25000000000000e+00 7.12129598099544e-02 - 1.10000000000000e+00 1.30000000000000e+00 7.13277640327361e-02 - 1.10000000000000e+00 1.35000000000000e+00 7.14168582186383e-02 - 1.10000000000000e+00 1.40000000000000e+00 7.14803842294479e-02 - 1.10000000000000e+00 1.45000000000000e+00 7.15184486397343e-02 - 1.10000000000000e+00 1.50000000000000e+00 7.15311262705192e-02 + 1.10000000000000e+00 -5.00000000000000e-01 6.20123467021387e-02 + 1.10000000000000e+00 -4.50000000000000e-01 6.20243570311973e-02 + 1.10000000000000e+00 -4.00000000000000e-01 6.20604466959801e-02 + 1.10000000000000e+00 -3.50000000000000e-01 6.21207010873844e-02 + 1.10000000000000e+00 -3.00000000000000e-01 6.22052810768622e-02 + 1.10000000000000e+00 -2.50000000000000e-01 6.23143749422316e-02 + 1.10000000000000e+00 -2.00000000000000e-01 6.24481776453702e-02 + 1.10000000000000e+00 -1.50000000000000e-01 6.26068555418095e-02 + 1.10000000000000e+00 -1.00000000000000e-01 6.27905288283860e-02 + 1.10000000000000e+00 -5.00000000000000e-02 6.29991755433247e-02 + 1.10000000000000e+00 0.00000000000000e+00 6.32326437940025e-02 + 1.10000000000000e+00 5.00000000000000e-02 6.34905454657113e-02 + 1.10000000000000e+00 1.00000000000000e-01 6.37722356093516e-02 + 1.10000000000000e+00 1.50000000000000e-01 6.40767307151991e-02 + 1.10000000000000e+00 2.00000000000000e-01 6.44026766853779e-02 + 1.10000000000000e+00 2.50000000000000e-01 6.47483274196147e-02 + 1.10000000000000e+00 3.00000000000000e-01 6.51114852344764e-02 + 1.10000000000000e+00 3.50000000000000e-01 6.54895516771259e-02 + 1.10000000000000e+00 4.00000000000000e-01 6.58795220452082e-02 + 1.10000000000000e+00 4.50000000000000e-01 6.62780487349102e-02 + 1.10000000000000e+00 5.00000000000000e-01 6.66815110614159e-02 + 1.10000000000000e+00 5.50000000000000e-01 6.70861254833912e-02 + 1.10000000000000e+00 6.00000000000000e-01 6.74880805891662e-02 + 1.10000000000000e+00 6.50000000000000e-01 6.78836151969051e-02 + 1.10000000000000e+00 7.00000000000000e-01 6.82691450364112e-02 + 1.10000000000000e+00 7.50000000000000e-01 6.86413717292834e-02 + 1.10000000000000e+00 8.00000000000000e-01 6.89973630654906e-02 + 1.10000000000000e+00 8.50000000000000e-01 6.93345750948008e-02 + 1.10000000000000e+00 9.00000000000000e-01 6.96508925806327e-02 + 1.10000000000000e+00 9.50000000000000e-01 6.99446124673962e-02 + 1.10000000000000e+00 1.00000000000000e+00 7.02144479732768e-02 + 1.10000000000000e+00 1.05000000000000e+00 7.04594426029741e-02 + 1.10000000000000e+00 1.10000000000000e+00 7.06789806538215e-02 + 1.10000000000000e+00 1.15000000000000e+00 7.08726736393366e-02 + 1.10000000000000e+00 1.20000000000000e+00 7.10403535629916e-02 + 1.10000000000000e+00 1.25000000000000e+00 7.11819711673696e-02 + 1.10000000000000e+00 1.30000000000000e+00 7.12976039699040e-02 + 1.10000000000000e+00 1.35000000000000e+00 7.13873452684716e-02 + 1.10000000000000e+00 1.40000000000000e+00 7.14513349937133e-02 + 1.10000000000000e+00 1.45000000000000e+00 7.14896778536870e-02 + 1.10000000000000e+00 1.50000000000000e+00 7.15024484275112e-02 - 1.15000000000000e+00 -5.00000000000000e-01 6.21283278434177e-02 - 1.15000000000000e+00 -4.50000000000000e-01 6.21403329700373e-02 - 1.15000000000000e+00 -4.00000000000000e-01 6.21763956712022e-02 - 1.15000000000000e+00 -3.50000000000000e-01 6.22366005330375e-02 - 1.15000000000000e+00 -3.00000000000000e-01 6.23210729178342e-02 - 1.15000000000000e+00 -2.50000000000000e-01 6.24299595390053e-02 - 1.15000000000000e+00 -2.00000000000000e-01 6.25634084545648e-02 - 1.15000000000000e+00 -1.50000000000000e-01 6.27215254823364e-02 - 1.15000000000000e+00 -1.00000000000000e-01 6.29043476521951e-02 - 1.15000000000000e+00 -5.00000000000000e-02 6.31117870289766e-02 - 1.15000000000000e+00 0.00000000000000e+00 6.33436125730986e-02 - 1.15000000000000e+00 5.00000000000000e-02 6.35993519858356e-02 - 1.15000000000000e+00 1.00000000000000e-01 6.38782821938329e-02 - 1.15000000000000e+00 1.50000000000000e-01 6.41793632660110e-02 - 1.15000000000000e+00 2.00000000000000e-01 6.45011879035980e-02 - 1.15000000000000e+00 2.50000000000000e-01 6.48420004597927e-02 - 1.15000000000000e+00 3.00000000000000e-01 6.51996188644604e-02 - 1.15000000000000e+00 3.50000000000000e-01 6.55714894890664e-02 - 1.15000000000000e+00 4.00000000000000e-01 6.59547068159878e-02 - 1.15000000000000e+00 4.50000000000000e-01 6.63460207800664e-02 - 1.15000000000000e+00 5.00000000000000e-01 6.67419846349205e-02 - 1.15000000000000e+00 5.50000000000000e-01 6.71389670917519e-02 - 1.15000000000000e+00 6.00000000000000e-01 6.75333422347327e-02 - 1.15000000000000e+00 6.50000000000000e-01 6.79215066933213e-02 - 1.15000000000000e+00 7.00000000000000e-01 6.83000349873041e-02 - 1.15000000000000e+00 7.50000000000000e-01 6.86657652643703e-02 - 1.15000000000000e+00 8.00000000000000e-01 6.90158308059683e-02 - 1.15000000000000e+00 8.50000000000000e-01 6.93477811548026e-02 - 1.15000000000000e+00 9.00000000000000e-01 6.96594977059192e-02 - 1.15000000000000e+00 9.50000000000000e-01 6.99492911293853e-02 - 1.15000000000000e+00 1.00000000000000e+00 7.02158350818553e-02 - 1.15000000000000e+00 1.05000000000000e+00 7.04581229931683e-02 - 1.15000000000000e+00 1.10000000000000e+00 7.06754789500698e-02 - 1.15000000000000e+00 1.15000000000000e+00 7.08674493017853e-02 - 1.15000000000000e+00 1.20000000000000e+00 7.10337898157917e-02 - 1.15000000000000e+00 1.25000000000000e+00 7.11744049195305e-02 - 1.15000000000000e+00 1.30000000000000e+00 7.12892896145057e-02 - 1.15000000000000e+00 1.35000000000000e+00 7.13785085589931e-02 - 1.15000000000000e+00 1.40000000000000e+00 7.14421512192187e-02 - 1.15000000000000e+00 1.45000000000000e+00 7.14802962916421e-02 - 1.15000000000000e+00 1.50000000000000e+00 7.14930071295678e-02 + 1.15000000000000e+00 -5.00000000000000e-01 6.20485609017337e-02 + 1.15000000000000e+00 -4.50000000000000e-01 6.20606115237028e-02 + 1.15000000000000e+00 -4.00000000000000e-01 6.20968097017544e-02 + 1.15000000000000e+00 -3.50000000000000e-01 6.21572410291926e-02 + 1.15000000000000e+00 -3.00000000000000e-01 6.22420325071394e-02 + 1.15000000000000e+00 -2.50000000000000e-01 6.23513337406164e-02 + 1.15000000000000e+00 -2.00000000000000e-01 6.24852954436991e-02 + 1.15000000000000e+00 -1.50000000000000e-01 6.26440279462125e-02 + 1.15000000000000e+00 -1.00000000000000e-01 6.28275722434023e-02 + 1.15000000000000e+00 -5.00000000000000e-02 6.30358455482548e-02 + 1.15000000000000e+00 0.00000000000000e+00 6.32686208362773e-02 + 1.15000000000000e+00 5.00000000000000e-02 6.35254304495529e-02 + 1.15000000000000e+00 1.00000000000000e-01 6.38055547987662e-02 + 1.15000000000000e+00 1.50000000000000e-01 6.41079561273551e-02 + 1.15000000000000e+00 2.00000000000000e-01 6.44312287155330e-02 + 1.15000000000000e+00 2.50000000000000e-01 6.47736145754775e-02 + 1.15000000000000e+00 3.00000000000000e-01 6.51329287854781e-02 + 1.15000000000000e+00 3.50000000000000e-01 6.55066112854186e-02 + 1.15000000000000e+00 4.00000000000000e-01 6.58917469362351e-02 + 1.15000000000000e+00 4.50000000000000e-01 6.62850747722371e-02 + 1.15000000000000e+00 5.00000000000000e-01 6.66831327300227e-02 + 1.15000000000000e+00 5.50000000000000e-01 6.70822733332530e-02 + 1.15000000000000e+00 6.00000000000000e-01 6.74788501326990e-02 + 1.15000000000000e+00 6.50000000000000e-01 6.78692395716269e-02 + 1.15000000000000e+00 7.00000000000000e-01 6.82499937430635e-02 + 1.15000000000000e+00 7.50000000000000e-01 6.86179279906919e-02 + 1.15000000000000e+00 8.00000000000000e-01 6.89701534565138e-02 + 1.15000000000000e+00 8.50000000000000e-01 6.93041967997077e-02 + 1.15000000000000e+00 9.00000000000000e-01 6.96179198301409e-02 + 1.15000000000000e+00 9.50000000000000e-01 6.99096143033165e-02 + 1.15000000000000e+00 1.00000000000000e+00 7.01779369482837e-02 + 1.15000000000000e+00 1.05000000000000e+00 7.04218679540311e-02 + 1.15000000000000e+00 1.10000000000000e+00 7.06407184464224e-02 + 1.15000000000000e+00 1.15000000000000e+00 7.08340256829020e-02 + 1.15000000000000e+00 1.20000000000000e+00 7.10015372852586e-02 + 1.15000000000000e+00 1.25000000000000e+00 7.11431517070459e-02 + 1.15000000000000e+00 1.30000000000000e+00 7.12588592897220e-02 + 1.15000000000000e+00 1.35000000000000e+00 7.13487215862813e-02 + 1.15000000000000e+00 1.40000000000000e+00 7.14128249541996e-02 + 1.15000000000000e+00 1.45000000000000e+00 7.14512471791521e-02 + 1.15000000000000e+00 1.50000000000000e+00 7.14640500860344e-02 - 1.20000000000000e+00 -5.00000000000000e-01 6.21403713006446e-02 - 1.20000000000000e+00 -4.50000000000000e-01 6.21523836150051e-02 - 1.20000000000000e+00 -4.00000000000000e-01 6.21884770774604e-02 - 1.20000000000000e+00 -3.50000000000000e-01 6.22487353259695e-02 - 1.20000000000000e+00 -3.00000000000000e-01 6.23332710334749e-02 - 1.20000000000000e+00 -2.50000000000000e-01 6.24422183224618e-02 - 1.20000000000000e+00 -2.00000000000000e-01 6.25757131626912e-02 - 1.20000000000000e+00 -1.50000000000000e-01 6.27338423089304e-02 - 1.20000000000000e+00 -1.00000000000000e-01 6.29166096043838e-02 - 1.20000000000000e+00 -5.00000000000000e-02 6.31239179671470e-02 - 1.20000000000000e+00 0.00000000000000e+00 6.33554972800404e-02 - 1.20000000000000e+00 5.00000000000000e-02 6.36108681107128e-02 - 1.20000000000000e+00 1.00000000000000e-01 6.38892705706998e-02 - 1.20000000000000e+00 1.50000000000000e-01 6.41896412400133e-02 - 1.20000000000000e+00 2.00000000000000e-01 6.45105791823869e-02 - 1.20000000000000e+00 2.50000000000000e-01 6.48502966776062e-02 - 1.20000000000000e+00 3.00000000000000e-01 6.52066401831165e-02 - 1.20000000000000e+00 3.50000000000000e-01 6.55770693554056e-02 - 1.20000000000000e+00 4.00000000000000e-01 6.59586867465898e-02 - 1.20000000000000e+00 4.50000000000000e-01 6.63483002305529e-02 - 1.20000000000000e+00 5.00000000000000e-01 6.67424788994457e-02 - 1.20000000000000e+00 5.50000000000000e-01 6.71376758035774e-02 - 1.20000000000000e+00 6.00000000000000e-01 6.75302817926700e-02 - 1.20000000000000e+00 6.50000000000000e-01 6.79167585127515e-02 - 1.20000000000000e+00 7.00000000000000e-01 6.82937227373062e-02 - 1.20000000000000e+00 7.50000000000000e-01 6.86580295466890e-02 - 1.20000000000000e+00 8.00000000000000e-01 6.90068640496832e-02 - 1.20000000000000e+00 8.50000000000000e-01 6.93377534380364e-02 - 1.20000000000000e+00 9.00000000000000e-01 6.96486162279368e-02 - 1.20000000000000e+00 9.50000000000000e-01 6.99377376953672e-02 - 1.20000000000000e+00 1.00000000000000e+00 7.02037727086277e-02 - 1.20000000000000e+00 1.05000000000000e+00 7.04457140879971e-02 - 1.20000000000000e+00 1.10000000000000e+00 7.06628342056659e-02 - 1.20000000000000e+00 1.15000000000000e+00 7.08546738263088e-02 - 1.20000000000000e+00 1.20000000000000e+00 7.10209587448924e-02 - 1.20000000000000e+00 1.25000000000000e+00 7.11615646947720e-02 - 1.20000000000000e+00 1.30000000000000e+00 7.12764723423177e-02 - 1.20000000000000e+00 1.35000000000000e+00 7.13657287232828e-02 - 1.20000000000000e+00 1.40000000000000e+00 7.14294054465411e-02 - 1.20000000000000e+00 1.45000000000000e+00 7.14675777001017e-02 - 1.20000000000000e+00 1.50000000000000e+00 7.14803006738486e-02 + 1.20000000000000e+00 -5.00000000000000e-01 6.20606481683998e-02 + 1.20000000000000e+00 -4.50000000000000e-01 6.20727065809948e-02 + 1.20000000000000e+00 -4.00000000000000e-01 6.21089365524274e-02 + 1.20000000000000e+00 -3.50000000000000e-01 6.21694224349191e-02 + 1.20000000000000e+00 -3.00000000000000e-01 6.22542789047274e-02 + 1.20000000000000e+00 -2.50000000000000e-01 6.23636425844642e-02 + 1.20000000000000e+00 -2.00000000000000e-01 6.24976523370920e-02 + 1.20000000000000e+00 -1.50000000000000e-01 6.26563987734955e-02 + 1.20000000000000e+00 -1.00000000000000e-01 6.28398905945923e-02 + 1.20000000000000e+00 -5.00000000000000e-02 6.30480348739394e-02 + 1.20000000000000e+00 0.00000000000000e+00 6.32805660351790e-02 + 1.20000000000000e+00 5.00000000000000e-02 6.35370085055962e-02 + 1.20000000000000e+00 1.00000000000000e-01 6.38166061086429e-02 + 1.20000000000000e+00 1.50000000000000e-01 6.41182977632992e-02 + 1.20000000000000e+00 2.00000000000000e-01 6.44406827738801e-02 + 1.20000000000000e+00 2.50000000000000e-01 6.47819723504526e-02 + 1.20000000000000e+00 3.00000000000000e-01 6.51400086336794e-02 + 1.20000000000000e+00 3.50000000000000e-01 6.55122448868537e-02 + 1.20000000000000e+00 4.00000000000000e-01 6.58957748149062e-02 + 1.20000000000000e+00 4.50000000000000e-01 6.62873944812557e-02 + 1.20000000000000e+00 5.00000000000000e-01 6.66836589117340e-02 + 1.20000000000000e+00 5.50000000000000e-01 6.70810036099681e-02 + 1.20000000000000e+00 6.00000000000000e-01 6.74758007977368e-02 + 1.20000000000000e+00 6.50000000000000e-01 6.78644912759477e-02 + 1.20000000000000e+00 7.00000000000000e-01 6.82436700498163e-02 + 1.20000000000000e+00 7.50000000000000e-01 6.86101700552058e-02 + 1.20000000000000e+00 8.00000000000000e-01 6.89611536526430e-02 + 1.20000000000000e+00 8.50000000000000e-01 6.92941265955217e-02 + 1.20000000000000e+00 9.00000000000000e-01 6.96069868002243e-02 + 1.20000000000000e+00 9.50000000000000e-01 6.98980011716814e-02 + 1.20000000000000e+00 1.00000000000000e+00 7.01658081430419e-02 + 1.20000000000000e+00 1.05000000000000e+00 7.04093860664382e-02 + 1.20000000000000e+00 1.10000000000000e+00 7.06279959420303e-02 + 1.20000000000000e+00 1.15000000000000e+00 7.08211681397031e-02 + 1.20000000000000e+00 1.20000000000000e+00 7.09886207596865e-02 + 1.20000000000000e+00 1.25000000000000e+00 7.11302234016283e-02 + 1.20000000000000e+00 1.30000000000000e+00 7.12459520822547e-02 + 1.20000000000000e+00 1.35000000000000e+00 7.13358501394341e-02 + 1.20000000000000e+00 1.40000000000000e+00 7.13999868099928e-02 + 1.20000000000000e+00 1.45000000000000e+00 7.14384354298744e-02 + 1.20000000000000e+00 1.50000000000000e+00 7.14512501512653e-02 diff --git a/namd/tests/library/018_pathCV/namd-version.txt b/namd/tests/library/018_pathCV/namd-version.txt index 8b2783508..0c1e6111b 100644 --- a/namd/tests/library/018_pathCV/namd-version.txt +++ b/namd/tests/library/018_pathCV/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.13 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2019-08-17". -colvars: Using NAMD interface, version "2019-08-17". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.out b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.out index 9367eb566..953bbf98c 100644 --- a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.out +++ b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.out @@ -1,9 +1,10 @@ colvars: ---------------------------------------------------------------------- colvars: Please cite Fiorin et al, Mol Phys 2013: -colvars: https://dx.doi.org/10.1080/00268976.2013.813594 -colvars: in any publication based on this calculation. +colvars: https://doi.org/10.1080/00268976.2013.813594 +colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -13,6 +14,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "end_to_end_distance" @@ -151,7 +153,7 @@ colvars: # outputFileDX = "none" [default] colvars: # gatherVectorColvars = off [default] colvars: # CollectAfterSteps = 0 [default] colvars: # CumulantExpansion = on [default] -colvars: # WriteGradients = on [default] +colvars: # WritePMFGradients = on [default] colvars: # historyFreq = 10 colvars: WARNING: there are 2 time-dependent biases with non-zero force parameters: colvars: { production_abf, production_mtd } @@ -164,6 +166,7 @@ colvars: # colvarsTrajFrequency = 1 [default] colvars: # colvarsRestartFrequency = 10 [default] colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Collective variables initialized, 1 in total. colvars: ---------------------------------------------------------------------- @@ -177,6 +180,7 @@ colvars: # timeStepFactor = 1 colvars: # writeTISamples = off [default] colvars: # writeTIPMF = off [default] colvars: # forceConstant = 1 [default] +colvars: # decoupling = off [default] colvars: # targetForceConstant = -1 [default] colvars: # lowerWalls = { 3 } colvars: # upperWalls = { 14 } @@ -197,45 +201,54 @@ colvars: Warning: enabling wrapAll can lead to inconsistent results for Colvars colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 2 atoms in total). colvars: updating grid object data (0 grid objects in total). +colvars: +colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: +colvars: +colvars: - BAOA integrator: +colvars: BouRabee2010 https://doi.org/10.1137/090758842 +colvars: +colvars: - reweightaMD colvar bias implementation (NAMD): +colvars: Chen2021 https://doi.org/10.1021/acs.jctc.1c00103 +colvars: +colvars: - Colvars module: +colvars: - Colvars-NAMD interface: +colvars: - Histogram colvar bias implementation: +colvars: - Metadynamics colvar bias implementation: +colvars: - Optimal rotation via flexible fitting: +colvars: - distance colvar component: +colvars: - harmonicWalls colvar bias implementation: +colvars: Fiorin2013 https://doi.org/10.1080/00268976.2013.813594 +colvars: +colvars: - ABF colvar bias implementation: +colvars: Henin2010 https://doi.org/10.1021/ct9004432 +colvars: +colvars: - CZAR eABF estimator: +colvars: - eABF implementation: +colvars: Lesage2017 https://doi.org/10.1021/acs.jpcb.6b10055 +colvars: +colvars: - NAMD engine: +colvars: - Scalable center-of-mass computation (NAMD): +colvars: Phillips2020 https://doi.org/10.1063/5.0014475 +colvars: +colvars: updating target temperature (T = 300 K). colvars: Re-initialized atom group for variable "end_to_end_distance":0/0. 1 atoms: total mass = 12.01, total charge = -0.3662. colvars: Re-initialized atom group for variable "end_to_end_distance":0/1. 1 atoms: total mass = 12.01, total charge = -0.149. colvars: The restart output state file will be "test.colvars.state". colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Initializing step number as firstTimestep. colvars: Updating NAMD interface: colvars: Warning: enabling wrapAll can lead to inconsistent results for Colvars calculations: please disable wrapAll, as is the default option in NAMD. colvars: updating atomic data (0 atoms). colvars: updating group data (2 scalable groups, 2 atoms in total). colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 300 K). colvars: Re-initialized atom group for variable "end_to_end_distance":0/0. 1 atoms: total mass = 12.01, total charge = -0.3662. colvars: Re-initialized atom group for variable "end_to_end_distance":0/1. 1 atoms: total mass = 12.01, total charge = -0.149. colvars: The restart output state file will be "test.colvars.state". colvars: The final output state file will be "test.colvars.state". colvars: Prepared sample and gradient buffers at step 500000000. colvars: Metadynamics bias "production_mtd": new upper boundary for colvar "end_to_end_distance", at 16.2. -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.grad". -colvars: Writing the accelerated MD count file "test.production_amd.count". -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.hist.grad". -colvars: Writing the accelerated MD count file "test.production_amd.hist.count". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.grad". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.hist.grad". colvars: Synchronizing (emptying the buffer of) trajectory file "test.colvars.traj". -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.grad". -colvars: Writing the accelerated MD count file "test.production_amd.count". -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.hist.grad". -colvars: Writing the accelerated MD count file "test.production_amd.hist.count". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.grad". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.hist.grad". colvars: Synchronizing (emptying the buffer of) trajectory file "test.colvars.traj". colvars: Saving collective variables state to "test.colvars.state". colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.pmf". @@ -248,16 +261,6 @@ colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.p colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.grad". colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.hist.pmf". colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.hist.grad". -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.grad". -colvars: Writing the accelerated MD count file "test.production_amd.count". -colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.reweight.hist.grad". -colvars: Writing the accelerated MD count file "test.production_amd.hist.count". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.grad". -colvars: Writing the accelerated MD PMF file using cumulant expansion: "test.production_amd.cumulant.hist.pmf". -colvars: Writing the accelerated MD gradients file "test.production_amd.cumulant.hist.grad". colvars: Synchronizing (emptying the buffer of) trajectory file "test.colvars.traj". colvars: Saving collective variables state to "test.colvars.state". colvars: Writing the accelerated MD PMF file "test.production_amd.reweight.pmf". diff --git a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.state.stripped b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.state.stripped index 068879497..7eddd64b0 100644 --- a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.state.stripped @@ -5,9 +5,9 @@ configuration { colvar { name end_to_end_distance - x 1.45658595679527e+01 - extended_x 1.45679030161301e+01 - extended_v -3.36435197039109e-04 + x 1.45658974873707e+01 + extended_x 1.45679724556133e+01 + extended_v -3.38170305625943e-04 } abf { diff --git a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.traj b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.traj index 04ba1fe63..1d73f6422 100644 --- a/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.traj +++ b/namd/tests/library/029_reweightamd/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step end_to_end_distance r_end_to_end_distance 500000000 1.45755558523024e+01 1.45755558523024e+01 - 500000001 1.45693359473303e+01 1.45755446081083e+01 - 500000002 1.45628402190201e+01 1.45754140089661e+01 - 500000003 1.45566980726478e+01 1.45751765694009e+01 - 500000004 1.45518722505900e+01 1.45751147140370e+01 - 500000005 1.45481722064913e+01 1.45748892991244e+01 - 500000006 1.45465111153725e+01 1.45749016780397e+01 - 500000007 1.45465013918011e+01 1.45750705918230e+01 - 500000008 1.45480404597657e+01 1.45748366095764e+01 - 500000009 1.45519258972887e+01 1.45743007914383e+01 - 500000010 1.45581216093189e+01 1.45738263846955e+01 - 500000011 1.45621006734552e+01 1.45732654404771e+01 - 500000012 1.45669373702181e+01 1.45727559925024e+01 - 500000013 1.45711318686060e+01 1.45719919701784e+01 - 500000014 1.45751961651583e+01 1.45713341151667e+01 - 500000015 1.45777741345957e+01 1.45706842018549e+01 - 500000016 1.45789047468076e+01 1.45700236082559e+01 - 500000017 1.45784967568080e+01 1.45693339831311e+01 - 500000018 1.45763907761870e+01 1.45687607451921e+01 - 500000019 1.45718203234566e+01 1.45682394513271e+01 - 500000020 1.45658595679527e+01 1.45679030161301e+01 + 500000001 1.45693359473303e+01 1.45755502358228e+01 + 500000002 1.45628402410838e+01 1.45754763156054e+01 + 500000003 1.45566983601392e+01 1.45752862080976e+01 + 500000004 1.45518732211679e+01 1.45751274162263e+01 + 500000005 1.45481738712624e+01 1.45749722682313e+01 + 500000006 1.45465137388615e+01 1.45748524055470e+01 + 500000007 1.45465046874642e+01 1.45749287358700e+01 + 500000008 1.45480437633554e+01 1.45748820642582e+01 + 500000009 1.45519292949635e+01 1.45744842122370e+01 + 500000010 1.45581257379899e+01 1.45739682718371e+01 + 500000011 1.45621059888141e+01 1.45734429362649e+01 + 500000012 1.45669444392867e+01 1.45729021680397e+01 + 500000013 1.45711410887856e+01 1.45722624634006e+01 + 500000014 1.45752083670870e+01 1.45715508189035e+01 + 500000015 1.45777898545186e+01 1.45708983011225e+01 + 500000016 1.45789244204116e+01 1.45702458137939e+01 + 500000017 1.45785207566311e+01 1.45695741760963e+01 + 500000018 1.45764194478224e+01 1.45689461002292e+01 + 500000019 1.45718536943028e+01 1.45684011973632e+01 + 500000020 1.45658974873707e+01 1.45679724556133e+01 diff --git a/namd/tests/library/029_reweightamd/namd-version.txt b/namd/tests/library/029_reweightamd/namd-version.txt index fffa4ec38..0c1e6111b 100644 --- a/namd/tests/library/029_reweightamd/namd-version.txt +++ b/namd/tests/library/029_reweightamd/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.15alpha1 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version "2021-03-09". -colvars: Using NAMD interface, version "2021-03-02". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.out b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.out index d6c3e3625..cbe302858 100644 --- a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.out +++ b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.out @@ -4,6 +4,7 @@ colvars: https://doi.org/10.1080/00268976.2013.813594 colvars: as well as all other papers listed below for individual features used. colvars: SMP parallelism is enabled; if needed, use "smp off" to override this. colvars: This version was built with the C++11 standard or higher. +colvars: Redefining the Tcl "cv" command to the new script interface. colvars: ---------------------------------------------------------------------- colvars: Reading new configuration from file "test.in": colvars: # units = "" [default] @@ -12,6 +13,7 @@ colvars: # colvarsTrajFrequency = 1 colvars: # colvarsRestartFrequency = 10 colvars: # scriptedColvarForces = off [default] colvars: # scriptingAfterBiases = off [default] +colvars: # sourceTclFile = "" [default] colvars: ---------------------------------------------------------------------- colvars: Initializing a new collective variable. colvars: # name = "nn_output_1" @@ -450,106 +452,7 @@ colvars: # layer1_activation = "tanh" colvars: The activation function for layer[1] is tanh colvars: # layer2_activation = "tanh" colvars: The activation function for layer[2] is tanh -colvars: Layer 0 : has 6 input nodes and 12 output nodes. -colvars: weights[0][0] = -2.9535 -colvars: weights[0][1] = -0.598211 -colvars: weights[0][2] = 0.241177 -colvars: weights[0][3] = 0.12947 -colvars: weights[0][4] = 0.440179 -colvars: weights[0][5] = -0.876459 -colvars: biases[0] = 0.161657 -colvars: weights[1][0] = 0.107366 -colvars: weights[1][1] = -0.0457882 -colvars: weights[1][2] = 0.0748285 -colvars: weights[1][3] = 0.156815 -colvars: weights[1][4] = 0.703526 -colvars: weights[1][5] = 0.241432 -colvars: biases[1] = -0.632794 -colvars: weights[2][0] = 0.513796 -colvars: weights[2][1] = -1.5317 -colvars: weights[2][2] = -0.0686078 -colvars: weights[2][3] = 0.0673673 -colvars: weights[2][4] = 0.196759 -colvars: weights[2][5] = 0.24494 -colvars: biases[2] = -0.211808 -colvars: weights[3][0] = -0.294562 -colvars: weights[3][1] = -0.847604 -colvars: weights[3][2] = 0.0499617 -colvars: weights[3][3] = 0.278501 -colvars: weights[3][4] = 0.147737 -colvars: weights[3][5] = 0.0557929 -colvars: biases[3] = -0.883388 -colvars: weights[4][0] = 1.07255 -colvars: weights[4][1] = 0.406689 -colvars: weights[4][2] = -0.0419776 -colvars: weights[4][3] = 0.45796 -colvars: weights[4][4] = 0.577049 -colvars: weights[4][5] = 0.0100782 -colvars: biases[4] = 0.742559 -colvars: weights[5][0] = 0.449182 -colvars: weights[5][1] = -1.05176 -colvars: weights[5][2] = 0.0394351 -colvars: weights[5][3] = 0.292022 -colvars: weights[5][4] = -0.118907 -colvars: weights[5][5] = -0.47341 -colvars: biases[5] = -0.737871 -colvars: weights[6][0] = -0.944659 -colvars: weights[6][1] = -0.511769 -colvars: weights[6][2] = 0.178793 -colvars: weights[6][3] = -0.633922 -colvars: weights[6][4] = -0.00172785 -colvars: weights[6][5] = -0.429998 -colvars: biases[6] = 0.00994667 -colvars: weights[7][0] = -0.638807 -colvars: weights[7][1] = -0.221756 -colvars: weights[7][2] = 0.214317 -colvars: weights[7][3] = -0.920973 -colvars: weights[7][4] = -0.241485 -colvars: weights[7][5] = -0.408489 -colvars: biases[7] = -0.522987 -colvars: weights[8][0] = -0.234213 -colvars: weights[8][1] = -0.307255 -colvars: weights[8][2] = 0.053139 -colvars: weights[8][3] = 0.121992 -colvars: weights[8][4] = 0.505387 -colvars: weights[8][5] = 0.192305 -colvars: biases[8] = -0.196265 -colvars: weights[9][0] = 2.77237 -colvars: weights[9][1] = -3.33375 -colvars: weights[9][2] = -0.23642 -colvars: weights[9][3] = 0.18987 -colvars: weights[9][4] = -0.244024 -colvars: weights[9][5] = 0.108861 -colvars: biases[9] = 2.3784 -colvars: weights[10][0] = 0.541434 -colvars: weights[10][1] = 0.0763588 -colvars: weights[10][2] = -0.180858 -colvars: weights[10][3] = 0.905805 -colvars: weights[10][4] = 0.435476 -colvars: weights[10][5] = 0.280653 -colvars: biases[10] = 0.87492 -colvars: weights[11][0] = 1.74269 -colvars: weights[11][1] = -1.64159 -colvars: weights[11][2] = -0.144023 -colvars: weights[11][3] = 0.1227 -colvars: weights[11][4] = -0.263546 -colvars: weights[11][5] = -0.111931 -colvars: biases[11] = 0.984634 -colvars: Layer 1 : has 12 input nodes and 1 output nodes. -colvars: weights[0][0] = 0.341442 -colvars: weights[0][1] = 0.477212 -colvars: weights[0][2] = 0.465421 -colvars: weights[0][3] = 0.796558 -colvars: weights[0][4] = 0.571714 -colvars: weights[0][5] = -0.303513 -colvars: weights[0][6] = 0.718882 -colvars: weights[0][7] = -0.999872 -colvars: weights[0][8] = -1.06988 -colvars: weights[0][9] = 1.18542 -colvars: weights[0][10] = -0.797083 -colvars: weights[0][11] = -0.713431 -colvars: biases[0] = -0.15288 -colvars: Warning: cannot cite unknown feature "NeuralNetwork colvar component" +colvars: Warning: cannot cite unknown feature "NeuralNetwork colvar component (derived from neuralNetwork)" colvars: All components initialized. colvars: # timeStepFactor = 1 [default] colvars: # width = 0.01 @@ -611,6 +514,12 @@ colvars: updating grid object data (0 grid objects in total). colvars: colvars: SUMMARY OF COLVARS FEATURES USED SO FAR AND THEIR CITATIONS: colvars: +colvars: - BAOA integrator: +colvars: BouRabee2010 https://doi.org/10.1137/090758842 +colvars: +colvars: - neuralNetwork colvar component: +colvars: Chen2022 https://doi.org/10.1021/acs.jcim.1c01010 +colvars: colvars: - Colvars module: colvars: - Colvars-NAMD interface: colvars: - Optimal rotation via flexible fitting: @@ -627,6 +536,7 @@ colvars: colvars: - NAMD engine: colvars: Phillips2020 https://doi.org/10.1063/5.0014475 colvars: +colvars: updating target temperature (T = 300 K). colvars: Re-initialized atom group for variable "nn_output_1":0/0. 1 atoms: total mass = 12.011, total charge = 0.51. colvars: Re-initialized atom group for variable "nn_output_1":0/1. 1 atoms: total mass = 14.007, total charge = -0.47. colvars: Re-initialized atom group for variable "nn_output_1":0/2. 1 atoms: total mass = 12.011, total charge = 0.07. @@ -653,12 +563,11 @@ colvars: Re-initialized atom group for variable "nn_output_1":0/22. 1 atoms: tot colvars: Re-initialized atom group for variable "nn_output_1":0/23. 1 atoms: total mass = 14.007, total charge = -0.47. colvars: The restart output state file will be "test.colvars.state". colvars: The final output state file will be "test.colvars.state". -colvars: Opening trajectory file "test.colvars.traj". -colvars: Redefining the Tcl "cv" command to the new script interface. colvars: Updating NAMD interface: colvars: updating atomic data (11 atoms). colvars: updating group data (0 scalable groups, 0 atoms in total). colvars: updating grid object data (0 grid objects in total). +colvars: updating target temperature (T = 300 K). colvars: Re-initialized atom group for variable "nn_output_1":0/0. 1 atoms: total mass = 12.011, total charge = 0.51. colvars: Re-initialized atom group for variable "nn_output_1":0/1. 1 atoms: total mass = 14.007, total charge = -0.47. colvars: Re-initialized atom group for variable "nn_output_1":0/2. 1 atoms: total mass = 12.011, total charge = 0.07. diff --git a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.state.stripped b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.state.stripped index 2b90f8763..10afb7dc5 100644 --- a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.state.stripped +++ b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.state.stripped @@ -5,9 +5,9 @@ configuration { colvar { name nn_output_1 - x 4.26943252814275e-01 - extended_x 4.27181632632770e-01 - extended_v -1.80742442300696e-05 + x 4.26944443559188e-01 + extended_x 4.27183631213753e-01 + extended_v -1.80960155650553e-05 } abf { @@ -61,7 +61,7 @@ gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.97075471798650e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.98666421389892e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 @@ -115,7 +115,7 @@ z_gradient 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 - 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.97075471798650e+00 0.00000000000000e+00 + 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 5.98666421389892e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 diff --git a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.traj b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.traj index ee31d239a..4fb0ea1d1 100644 --- a/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.traj +++ b/namd/tests/library/031_neuralnetwork/AutoDiff/test.colvars.traj @@ -1,22 +1,22 @@ # step nn_output_1 r_nn_output_1 0 4.27348452931304e-01 4.27348452931304e-01 - 1 4.27087400544899e-01 4.27348171826451e-01 - 2 4.26872449841523e-01 4.27344995138961e-01 - 3 4.26690641734216e-01 4.27339335868139e-01 - 4 4.26521984974831e-01 4.27338352623853e-01 - 5 4.26348782957326e-01 4.27333649320732e-01 - 6 4.26237986306272e-01 4.27335297557551e-01 - 7 4.26159119823266e-01 4.27341288086432e-01 - 8 4.26065140004549e-01 4.27337624261422e-01 - 9 4.25982327211413e-01 4.27326751284842e-01 - 10 4.25889821691884e-01 4.27317612124617e-01 - 11 4.25796380107146e-01 4.27306325283953e-01 - 12 4.25853273875579e-01 4.27296206178797e-01 - 13 4.25946758708552e-01 4.27279489786973e-01 - 14 4.26004982039489e-01 4.27265090179969e-01 - 15 4.25996648098236e-01 4.27250457384053e-01 - 16 4.26004686486549e-01 4.27235048351846e-01 - 17 4.26150792725303e-01 4.27218365788428e-01 - 18 4.26358491527167e-01 4.27204077561140e-01 - 19 4.26610336700383e-01 4.27190669754885e-01 - 20 4.26943252814275e-01 4.27181632632770e-01 + 1 4.27087400544899e-01 4.27348312414008e-01 + 2 4.26872450296396e-01 4.27346551743906e-01 + 3 4.26690647683911e-01 4.27342076152309e-01 + 4 4.26522005235959e-01 4.27338674601854e-01 + 5 4.26348818295766e-01 4.27335730155590e-01 + 6 4.26238043055371e-01 4.27334079828963e-01 + 7 4.26159193274459e-01 4.27337761524583e-01 + 8 4.26065217585930e-01 4.27338778273542e-01 + 9 4.25982411875574e-01 4.27331353969824e-01 + 10 4.25889928078528e-01 4.27321182692511e-01 + 11 4.25796519562365e-01 4.27310793395096e-01 + 12 4.25853460937317e-01 4.27299903044534e-01 + 13 4.25947005263650e-01 4.27286305999077e-01 + 14 4.26005311535346e-01 4.27270581213223e-01 + 15 4.25997078773281e-01 4.27255905652364e-01 + 16 4.26005236400443e-01 4.27240725046359e-01 + 17 4.26151479874847e-01 4.27224521443315e-01 + 18 4.26359335262689e-01 4.27208896839964e-01 + 19 4.26611349581861e-01 4.27194935615553e-01 + 20 4.26944443559188e-01 4.27183631213753e-01 diff --git a/namd/tests/library/031_neuralnetwork/AutoDiff/test.grad b/namd/tests/library/031_neuralnetwork/AutoDiff/test.grad index 90605d565..1f400ab92 100644 --- a/namd/tests/library/031_neuralnetwork/AutoDiff/test.grad +++ b/namd/tests/library/031_neuralnetwork/AutoDiff/test.grad @@ -143,7 +143,7 @@ 3.95000000000000e-01 0.00000000000000e+00 4.05000000000000e-01 0.00000000000000e+00 4.15000000000000e-01 0.00000000000000e+00 - 4.25000000000000e-01 5.97075473808997e+00 + 4.25000000000000e-01 5.98666421389892e+00 4.35000000000000e-01 0.00000000000000e+00 4.45000000000000e-01 0.00000000000000e+00 4.55000000000000e-01 0.00000000000000e+00 diff --git a/namd/tests/library/031_neuralnetwork/AutoDiff/test.pmf b/namd/tests/library/031_neuralnetwork/AutoDiff/test.pmf index 5e30b5ca2..a542ac129 100644 --- a/namd/tests/library/031_neuralnetwork/AutoDiff/test.pmf +++ b/namd/tests/library/031_neuralnetwork/AutoDiff/test.pmf @@ -144,61 +144,61 @@ 4.00000000000000e-01 0.00000000000000e+00 4.10000000000000e-01 0.00000000000000e+00 4.20000000000000e-01 0.00000000000000e+00 - 4.30000000000000e-01 5.97075473808997e-02 - 4.40000000000000e-01 5.97075473808997e-02 - 4.50000000000000e-01 5.97075473808997e-02 - 4.60000000000000e-01 5.97075473808997e-02 - 4.70000000000000e-01 5.97075473808997e-02 - 4.80000000000000e-01 5.97075473808997e-02 - 4.90000000000000e-01 5.97075473808997e-02 - 5.00000000000000e-01 5.97075473808997e-02 - 5.10000000000000e-01 5.97075473808997e-02 - 5.20000000000000e-01 5.97075473808997e-02 - 5.30000000000000e-01 5.97075473808997e-02 - 5.40000000000000e-01 5.97075473808997e-02 - 5.50000000000000e-01 5.97075473808997e-02 - 5.60000000000000e-01 5.97075473808997e-02 - 5.70000000000000e-01 5.97075473808997e-02 - 5.80000000000000e-01 5.97075473808997e-02 - 5.90000000000000e-01 5.97075473808997e-02 - 6.00000000000000e-01 5.97075473808997e-02 - 6.10000000000000e-01 5.97075473808997e-02 - 6.20000000000000e-01 5.97075473808997e-02 - 6.30000000000000e-01 5.97075473808997e-02 - 6.40000000000000e-01 5.97075473808997e-02 - 6.50000000000000e-01 5.97075473808997e-02 - 6.60000000000000e-01 5.97075473808997e-02 - 6.70000000000000e-01 5.97075473808997e-02 - 6.80000000000000e-01 5.97075473808997e-02 - 6.90000000000000e-01 5.97075473808997e-02 - 7.00000000000000e-01 5.97075473808997e-02 - 7.10000000000000e-01 5.97075473808997e-02 - 7.20000000000000e-01 5.97075473808997e-02 - 7.30000000000000e-01 5.97075473808997e-02 - 7.40000000000000e-01 5.97075473808997e-02 - 7.50000000000000e-01 5.97075473808997e-02 - 7.60000000000000e-01 5.97075473808997e-02 - 7.70000000000000e-01 5.97075473808997e-02 - 7.80000000000000e-01 5.97075473808997e-02 - 7.90000000000000e-01 5.97075473808997e-02 - 8.00000000000000e-01 5.97075473808997e-02 - 8.10000000000000e-01 5.97075473808997e-02 - 8.20000000000000e-01 5.97075473808997e-02 - 8.30000000000000e-01 5.97075473808997e-02 - 8.40000000000000e-01 5.97075473808997e-02 - 8.50000000000000e-01 5.97075473808997e-02 - 8.60000000000000e-01 5.97075473808997e-02 - 8.70000000000000e-01 5.97075473808997e-02 - 8.80000000000000e-01 5.97075473808997e-02 - 8.90000000000000e-01 5.97075473808997e-02 - 9.00000000000000e-01 5.97075473808997e-02 - 9.10000000000000e-01 5.97075473808997e-02 - 9.20000000000000e-01 5.97075473808997e-02 - 9.30000000000000e-01 5.97075473808997e-02 - 9.40000000000000e-01 5.97075473808997e-02 - 9.50000000000000e-01 5.97075473808997e-02 - 9.60000000000000e-01 5.97075473808997e-02 - 9.70000000000000e-01 5.97075473808997e-02 - 9.80000000000000e-01 5.97075473808997e-02 - 9.90000000000000e-01 5.97075473808997e-02 - 1.00000000000000e+00 5.97075473808997e-02 + 4.30000000000000e-01 5.98666421389892e-02 + 4.40000000000000e-01 5.98666421389892e-02 + 4.50000000000000e-01 5.98666421389892e-02 + 4.60000000000000e-01 5.98666421389892e-02 + 4.70000000000000e-01 5.98666421389892e-02 + 4.80000000000000e-01 5.98666421389892e-02 + 4.90000000000000e-01 5.98666421389892e-02 + 5.00000000000000e-01 5.98666421389892e-02 + 5.10000000000000e-01 5.98666421389892e-02 + 5.20000000000000e-01 5.98666421389892e-02 + 5.30000000000000e-01 5.98666421389892e-02 + 5.40000000000000e-01 5.98666421389892e-02 + 5.50000000000000e-01 5.98666421389892e-02 + 5.60000000000000e-01 5.98666421389892e-02 + 5.70000000000000e-01 5.98666421389892e-02 + 5.80000000000000e-01 5.98666421389892e-02 + 5.90000000000000e-01 5.98666421389892e-02 + 6.00000000000000e-01 5.98666421389892e-02 + 6.10000000000000e-01 5.98666421389892e-02 + 6.20000000000000e-01 5.98666421389892e-02 + 6.30000000000000e-01 5.98666421389892e-02 + 6.40000000000000e-01 5.98666421389892e-02 + 6.50000000000000e-01 5.98666421389892e-02 + 6.60000000000000e-01 5.98666421389892e-02 + 6.70000000000000e-01 5.98666421389892e-02 + 6.80000000000000e-01 5.98666421389892e-02 + 6.90000000000000e-01 5.98666421389892e-02 + 7.00000000000000e-01 5.98666421389892e-02 + 7.10000000000000e-01 5.98666421389892e-02 + 7.20000000000000e-01 5.98666421389892e-02 + 7.30000000000000e-01 5.98666421389892e-02 + 7.40000000000000e-01 5.98666421389892e-02 + 7.50000000000000e-01 5.98666421389892e-02 + 7.60000000000000e-01 5.98666421389892e-02 + 7.70000000000000e-01 5.98666421389892e-02 + 7.80000000000000e-01 5.98666421389892e-02 + 7.90000000000000e-01 5.98666421389892e-02 + 8.00000000000000e-01 5.98666421389892e-02 + 8.10000000000000e-01 5.98666421389892e-02 + 8.20000000000000e-01 5.98666421389892e-02 + 8.30000000000000e-01 5.98666421389892e-02 + 8.40000000000000e-01 5.98666421389892e-02 + 8.50000000000000e-01 5.98666421389892e-02 + 8.60000000000000e-01 5.98666421389892e-02 + 8.70000000000000e-01 5.98666421389892e-02 + 8.80000000000000e-01 5.98666421389892e-02 + 8.90000000000000e-01 5.98666421389892e-02 + 9.00000000000000e-01 5.98666421389892e-02 + 9.10000000000000e-01 5.98666421389892e-02 + 9.20000000000000e-01 5.98666421389892e-02 + 9.30000000000000e-01 5.98666421389892e-02 + 9.40000000000000e-01 5.98666421389892e-02 + 9.50000000000000e-01 5.98666421389892e-02 + 9.60000000000000e-01 5.98666421389892e-02 + 9.70000000000000e-01 5.98666421389892e-02 + 9.80000000000000e-01 5.98666421389892e-02 + 9.90000000000000e-01 5.98666421389892e-02 + 1.00000000000000e+00 5.98666421389892e-02 diff --git a/namd/tests/library/031_neuralnetwork/namd-version.txt b/namd/tests/library/031_neuralnetwork/namd-version.txt index a8832c1ef..0c1e6111b 100644 --- a/namd/tests/library/031_neuralnetwork/namd-version.txt +++ b/namd/tests/library/031_neuralnetwork/namd-version.txt @@ -1,3 +1,3 @@ -Info: NAMD 2.14 for Linux-x86_64-multicore -colvars: Initializing the collective variables module, version 2021-12-20. -colvars: Using NAMD interface, version "2021-10-13". +Info: NAMD 2.15alpha2 for Linux-x86_64-multicore +colvars: Initializing the collective variables module, version 2023-09-05. +colvars: Using NAMD interface, version "2023-07-06". diff --git a/namd/tests/library/Common/common.namd b/namd/tests/library/Common/common.namd index cfd9ac352..846f52d08 100644 --- a/namd/tests/library/Common/common.namd +++ b/namd/tests/library/Common/common.namd @@ -70,7 +70,8 @@ if { [info exists xsc_file] > 0 } { } COMmotion no -zeroMomentum yes +# incompatible with CUDASOAIntegrate as of 09/2023 +#zeroMomentum yes timestep 1.0 diff --git a/namd/tests/library/Common/test.namd b/namd/tests/library/Common/test.namd index 0672c2767..77643f701 100644 --- a/namd/tests/library/Common/test.namd +++ b/namd/tests/library/Common/test.namd @@ -3,7 +3,14 @@ # Note: see also test.restart.namd, test.legacy.namd, test.restart.legacy.namd source ../Common/common.namd -source ../Common/measure_net_force_torque.tcl + +if { [info exists env(NAMD_CUDASOA)] && $env(NAMD_CUDASOA) } { + CUDASOAIntegrate on + # incompatible with TclForces as of 07/2023 +} else { + source ../Common/measure_net_force_torque.tcl +} + colvars on diff --git a/namd/tests/library/README.md b/namd/tests/library/README.md index 43056eab5..2f0b32c79 100644 --- a/namd/tests/library/README.md +++ b/namd/tests/library/README.md @@ -12,6 +12,7 @@ This is the usage information for `run_tests.sh`: ``` Usage: ./run_tests.sh [-h] [-g] [path_to_namd2] [testdir1 [testdir2 ...]] The -g option (re)generates reference outputs in the given directories + The -cudasoa option enables the GPU-resident NAMD3 code path (CUDASOAIntegrate) If no executable is given, "namd2" is used If no directories are given, all matches of [0-9][0-9][0-9]_* are used ``` diff --git a/namd/tests/library/run_tests.sh b/namd/tests/library/run_tests.sh index b67af39e2..efc896c29 100755 --- a/namd/tests/library/run_tests.sh +++ b/namd/tests/library/run_tests.sh @@ -14,6 +14,8 @@ export TMPDIR=${TMPDIR:-/tmp} DIRLIST='' BINARY=namd2 +CUDASOA=0 + while [ $# -ge 1 ]; do if { echo $1 | grep -q namd ; }; then echo "Using NAMD executable from $1" @@ -22,13 +24,16 @@ while [ $# -ge 1 ]; do gen_ref_output='yes' echo "Generating reference output" elif [ "x$1" = 'x-h' ]; then - echo "Usage: ./run_tests.sh [-h] [-g] [path_to_namd2] [testdir1 [testdir2 ...]]" >& 2 + echo "Usage: ./run_tests.sh [-h] [-g] [-cudasoa] [path_to_namd2] [testdir1 [testdir2 ...]]" >& 2 echo " The -g option (re)generates reference outputs in the given directories" >& 2 + echo " The -cudasoa option enables the GPU-resident NAMD3 code path (CUDASOAIntegrate)" >& 2 echo " If no executable is given, \"namd2\" is used" >& 2 echo " If no directories are given, all matches of [0-9][0-9][0-9]_* are used" >& 2 echo " This script relies on the executable spiff to be available, and will try to " >& 2 echo " download and build it into $TMPDIR if needed." >& 2 exit 0 + elif [ "x$1" = 'x-cudasoa' ]; then + CUDASOA=1 else DIRLIST=`echo ${DIRLIST} $1` fi @@ -54,11 +59,8 @@ if ! { echo ${DIRLIST} | grep -q 0 ; } then DIRLIST=`eval ls -d [0-9][0-9][0-9]_*` fi -NUM_THREADS=1 NUM_CPUS=$(nproc) -if [ ${NUM_THREADS} -gt ${NUM_CPUS} ] ; then - NUM_THREADS=${NUM_CPUS} -fi +NUM_THREADS=${NUM_THREADS:-${NUM_CPUS}} TPUT_RED='true' TPUT_GREEN='true' @@ -156,15 +158,18 @@ for dir in ${DIRLIST} ; do script=`basename ${script}` basename=${script%.namd} - # Don't do multithreading for reinitatoms - NUM_THREADS_THIS=${NUM_THREADS} - if [ ${dir} == 003_reinitatoms ] ; then - NUM_THREADS_THIS=1 + # If we are doing binary restarts, make an exception for tests that don't support it + if [ -n "${COLVARS_BINARY_RESTART}" ] ; then + if [ ${dir} == 004_10ala_moving_restart ] ; then + export COLVARS_BINARY_RESTART=0 + else + export COLVARS_BINARY_RESTART=1 + fi fi # Run the test (use a subshell to avoid cluttering stdout) # Use multiple threads to test SMP code (TODO: move SMP tests to interface?) - $BINARY +p ${NUM_THREADS_THIS} $script > ${basename}.out + NAMD_CUDASOA=$CUDASOA $BINARY +p ${NUM_THREADS} $script > ${basename}.out # Output of Colvars module, minus the version numbers grep "^colvars:" ${basename}.out | grep -v 'Initializing the collective variables module' \ @@ -222,6 +227,10 @@ for dir in ${DIRLIST} ; do for f in AutoDiff/* do base=`basename $f` + if [ "${base%.state.stripped}" != "${base}" ] && [ -n "${COLVARS_BINARY_RESTART}" ] ; then + # Do not try comparing binary state files, they will never match anyway + continue + fi if [ ! -f $base ] ; then echo -e "\n*** File $(${TPUT_RED})$base$(${TPUT_CLEAR}) is missing. ***" SUCCESS=0 @@ -244,10 +253,8 @@ for dir in ${DIRLIST} ; do fi if [ $RETVAL -ne 0 ] then - if [ ${base} != ${base%.out} ] + if [ ${base} == ${base%.out} ] # Ignore differences in stdout log then - echo -n "(warning: differences in log file $base) " - else echo -e "\n*** Failure for file $(${TPUT_RED})$base$(${TPUT_CLEAR}): see `pwd`/$base.diff " SUCCESS=0 ALL_SUCCESS=0 @@ -276,7 +283,7 @@ for dir in ${DIRLIST} ; do if [ "x${gen_ref_output}" == 'xyes' ]; then echo "Reference files copied successfully." else - echo "$(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" + echo " $(${TPUT_GREEN})Success!$(${TPUT_CLEAR})" fi cleanup_files fi @@ -296,11 +303,11 @@ else echo "$(${TPUT_RED})There were failed tests.$(${TPUT_CLEAR})" if [ ${#failed_tests[@]} -gt 0 ]; then echo "The following tests are failed:" - printf "%s\n" "${failed_tests[@]}" + printf "%s\n" "${failed_tests[@]}" | sort -u fi if [ ${#failed_tests_low_prec[@]} -gt 0 ]; then echo "The following tests are failed, but passed at low precisions:" - printf "%s\n" "${failed_tests_low_prec[@]}" + printf "%s\n" "${failed_tests_low_prec[@]}" | sort -u fi exit 1 fi diff --git a/src/.clang-format b/src/.clang-format index e05242256..66e78c8b5 100644 --- a/src/.clang-format +++ b/src/.clang-format @@ -8,4 +8,7 @@ ObjCBlockIndentWidth: 2 PenaltyBreakAssignment: 2 AccessModifierOffset: -2 BreakBeforeBraces: WebKit +EmptyLineAfterAccessModifier: Leave +NamespaceIndentation: None +MaxEmptyLinesToKeep: 2 ... diff --git a/src/colvar.cpp b/src/colvar.cpp index 1fc93fe1f..d90089ce9 100644 --- a/src/colvar.cpp +++ b/src/colvar.cpp @@ -19,6 +19,7 @@ #include "colvarcomp.h" #include "colvar.h" #include "colvarscript.h" +#include "colvars_memstream.h" std::map> @@ -37,6 +38,8 @@ colvar::colvar() dev_null = 0.0; #endif + matching_state = false; + expand_boundaries = false; description = "uninitialized colvar"; @@ -691,9 +694,14 @@ int colvar::init_extended_Lagrangian(std::string const &conf) } if (ext_gamma != 0.0) { enable(f_cv_Langevin); + cvm::main()->cite_feature("BAOA integrator"); ext_gamma *= 1.0e-3; // correct as long as input is required in ps-1 and cvm::dt() is in fs // Adjust Langevin sigma for slow time step if time_step_factor != 1 - ext_sigma = cvm::sqrt(2.0 * proxy->boltzmann() * temp * ext_gamma * ext_mass / (cvm::dt() * cvm::real(time_step_factor))); + // Eq. (6a) in https://doi.org/10.1021/acs.jctc.2c00585 + ext_sigma = cvm::sqrt((1.0 - cvm::exp(-2.0 * ext_gamma * cvm::dt() * cvm::real(time_step_factor))) + * ext_mass * proxy->boltzmann() * temp); + } else { + ext_sigma = 0.0; } get_keyval_feature(this, conf, "reflectingLowerBoundary", f_cv_reflecting_lower_boundary, false); @@ -1822,9 +1830,11 @@ void colvar::update_extended_Lagrangian() f += fb_actual; } - fr = f; - // External force has been scaled for a 1-timestep impulse, scale it back because we will - // integrate it with the colvar's own timestep factor + // fr: bias force on extended variable (without harmonic spring), for output in trajectory + fr = f; + + // External force has been scaled for an inner-timestep impulse (for the back-end integrator) + // here we scale it back because this integrator uses only the outer (long) timestep f_ext = f / cvm::real(time_step_factor); colvarvalue f_system(fr.type()); // force exterted by the system on the extended DOF @@ -1837,15 +1847,14 @@ void colvar::update_extended_Lagrangian() } else { // the total force is applied to the fictitious mass, while the // atoms only feel the harmonic force + wall force - // fr: bias force on extended variable (without harmonic spring), for output in trajectory // f_ext: total force on extended variable (including harmonic spring) // f: - initially, external biasing force // - after this code block, colvar force to be applied to atomic coordinates // ie. spring force (fb_actual will be added just below) f_system = (-0.5 * ext_force_k) * this->dist2_lgrad(x_ext, x); f = -1.0 * f_system; - // Coupling force is a slow force, to be applied to atomic coords impulse-style - // over a single MD timestep + // Coupling force will be applied to atomic coords impulse-style + // over an inner timestep of the back-end integrator f *= cvm::real(time_step_factor); } f_ext += f_system; @@ -1865,26 +1874,48 @@ void colvar::update_extended_Lagrangian() prev_x_ext = x_ext; prev_v_ext = v_ext; - // leapfrog: starting from x_i, f_i, v_(i-1/2) - v_ext += (0.5 * dt) * f_ext / ext_mass; - // Because of leapfrog, kinetic energy at time i is approximate + // BAOA (GSD) integrator as formulated in https://doi.org/10.1021/acs.jctc.2c00585 + // starting from x_t, f_t, v_(t-1/2) + // Variation: the velocity step is split in two to estimate the kinetic energy at time t + // so this is more of a "BBAOA" scheme: a rearranged BAOAB where the second B is deferred + // to the next time step for implementation reasons (waiting for the force calculation) + + // [B] Eq. (10a) split into two half-steps + // would reduce to leapfrog when gamma = 0 if this was the reported velocity + v_ext += 0.5 * dt * f_ext / ext_mass; + + // Kinetic energy at t kinetic_energy = 0.5 * ext_mass * v_ext * v_ext; + + // Potential energy at t potential_energy = 0.5 * ext_force_k * this->dist2(x_ext, x); - // leap to v_(i+1/2) + + // Total energy will lag behind position by one timestep + // (current kinetic energy is not accessible before the next force calculation) + + v_ext += 0.5 * dt * f_ext / ext_mass; + // Final v_ext lags behind x_ext by half a timestep + + // [A] Half step in position (10b) + x_ext += dt * v_ext / 2.0; + + // [O] leap to v_(i+1/2) (10c) if (is_enabled(f_cv_Langevin)) { - v_ext -= dt * ext_gamma * v_ext; colvarvalue rnd(x); rnd.set_random(); - v_ext += dt * ext_sigma * rnd / ext_mass; + // ext_sigma has been computed at init time according to (10c) + v_ext = cvm::exp(- 1.0 * dt * ext_gamma) * v_ext + ext_sigma * rnd / ext_mass; } - v_ext += (0.5 * dt) * f_ext / ext_mass; - x_ext += dt * v_ext; + // [A] Second half step in position (10d) + x_ext += dt * v_ext / 2.0; cvm::real delta = 0; // Length of overshoot past either reflecting boundary if ((is_enabled(f_cv_reflecting_lower_boundary) && (delta = x_ext - lower_boundary) < 0) || (is_enabled(f_cv_reflecting_upper_boundary) && (delta = x_ext - upper_boundary) > 0)) { + // Reflect arrival position x_ext -= 2.0 * delta; - v_ext *= -1.0; + // Bounce happened on average at t+1/2 -> reflect velocity at t+1/2 + v_ext = -0.5 * (prev_v_ext + v_ext); if ((is_enabled(f_cv_reflecting_lower_boundary) && (x_ext - lower_boundary) < 0.0) || (is_enabled(f_cv_reflecting_upper_boundary) && (x_ext - upper_boundary) > 0.0)) { cvm::error("Error: extended coordinate value " + cvm::to_str(x_ext) + " is still outside boundaries after reflection.\n"); @@ -1893,6 +1924,7 @@ void colvar::update_extended_Lagrangian() x_ext.apply_constraints(); this->wrap(x_ext); + if (is_enabled(f_cv_external)) { // Colvar value is constrained to the extended value x = x_ext; @@ -2248,44 +2280,65 @@ void colvar::wrap(colvarvalue &x_unwrapped) const std::istream & colvar::read_state(std::istream &is) { - std::streampos const start_pos = is.tellg(); + auto const start_pos = is.tellg(); std::string conf; - if ( !(is >> colvarparse::read_block("colvar", &conf)) ) { + if ( !(is >> colvarparse::read_block("colvar", &conf)) || + (check_matching_state(conf) != COLVARS_OK) ) { // this is not a colvar block is.clear(); - is.seekg(start_pos, std::ios::beg); + is.seekg(start_pos); is.setstate(std::ios::failbit); return is; } - { - std::string check_name = ""; - get_keyval(conf, "name", check_name, - std::string(""), colvarparse::parse_silent); - if (check_name.size() == 0) { - cvm::error("Error: Collective variable in the " - "restart file without any identifier.\n", COLVARS_INPUT_ERROR); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } + if (!matching_state) { + // No errors reading, but this state is not for this colvar; rewind + is.seekg(start_pos); + return is; + } - if (check_name != name) { - if (cvm::debug()) { - cvm::log("Ignoring state of colvar \""+check_name+ - "\": this colvar is named \""+name+"\".\n"); - } - is.seekg(start_pos, std::ios::beg); - return is; + if (set_state_params(conf) != COLVARS_OK) { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + } + + return is; +} + + +int colvar::check_matching_state(std::string const &conf) +{ + std::string check_name = ""; + get_keyval(conf, "name", check_name, std::string(""), colvarparse::parse_silent); + + if (check_name.size() == 0) { + return cvm::error("Error: Collective variable in the " + "state file without any identifier.\n", COLVARS_INPUT_ERROR); + } + + if (check_name != name) { + if (cvm::debug()) { + cvm::log("Ignoring state of colvar \""+check_name+ + "\": this colvar is named \""+name+"\".\n"); } + matching_state = false; + } else { + matching_state = true; } + return COLVARS_OK; +} + + +int colvar::set_state_params(std::string const &conf) +{ + int error_code = COLVARS_OK; if ( !(get_keyval(conf, "x", x, x, colvarparse::parse_silent)) ) { - cvm::log("Error: restart file does not contain " - "the value of the colvar \""+ - name+"\" .\n"); + error_code |= cvm::error("Error: restart file does not contain " + "the value of the colvar \""+ + name+"\" .\n", COLVARS_INPUT_ERROR); } else { cvm::log("Restarting collective variable \""+name+"\" from value: "+ cvm::to_str(x)+"\n"); @@ -2298,9 +2351,10 @@ std::istream & colvar::read_state(std::istream &is) colvarvalue(x.type()), colvarparse::parse_silent)) || !(get_keyval(conf, "extended_v", v_ext, colvarvalue(x.type()), colvarparse::parse_silent)) ) { - cvm::log("Error: restart file does not contain " - "\"extended_x\" or \"extended_v\" for the colvar \""+ - name+"\", but you requested \"extendedLagrangian\".\n"); + error_code |= cvm::error("Error: restart file does not contain " + "\"extended_x\" or \"extended_v\" for the colvar \""+ + name+"\", but you requested \"extendedLagrangian\".\n", + COLVARS_INPUT_ERROR); } x_reported = x_ext; } else { @@ -2311,9 +2365,10 @@ std::istream & colvar::read_state(std::istream &is) if ( !(get_keyval(conf, "v", v_fdiff, colvarvalue(x.type()), colvarparse::parse_silent)) ) { - cvm::log("Error: restart file does not contain " - "the velocity for the colvar \""+ - name+"\", but you requested \"outputVelocity\".\n"); + error_code |= cvm::error("Error: restart file does not contain " + "the velocity for the colvar \""+ + name+"\", but you requested \"outputVelocity\".\n", + COLVARS_INPUT_ERROR); } if (is_enabled(f_cv_extended_Lagrangian)) { @@ -2323,6 +2378,41 @@ std::istream & colvar::read_state(std::istream &is) } } + return error_code; +} + + +cvm::memory_stream &colvar::read_state(cvm::memory_stream &is) +{ + auto const start_pos = is.tellg(); + std::string key, data; + if (is >> key) { + if (key == "colvar") { + // Read a formatted config string, then read the state parameters from it + if (is >> data) { + if (set_state_params(data) == COLVARS_OK) { + return is; + } + } + } + } + + auto const error_pos = is.tellg(); + + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + + std::string error_msg("Error: in reading state data for colvar \"" + name + " at position " + + cvm::to_str(error_pos) + " in unformatted stream.\n"); + if (key.size() && key != "colvar") { + error_msg += "; the keyword read was \"" + key + "\", but \"colvar\" was expected"; + } + if (data.size()) { + error_msg += "; the configuration string read was not recognized"; + } + error_msg += ".\n"; + cvm::error(error_msg, COLVARS_INPUT_ERROR); return is; } @@ -2337,7 +2427,7 @@ std::istream & colvar::read_traj(std::istream &is) cvm::log("Error: in reading the value of colvar \""+ this->name+"\" from trajectory.\n"); is.clear(); - is.seekg(start_pos, std::ios::beg); + is.seekg(start_pos); is.setstate(std::ios::failbit); return is; } @@ -2377,10 +2467,23 @@ std::istream & colvar::read_traj(std::istream &is) // ******************** OUTPUT FUNCTIONS ******************** -std::ostream & colvar::write_state(std::ostream &os) { +std::ostream & colvar::write_state(std::ostream &os) const +{ + os << "colvar {\n" << get_state_params() << "}\n\n"; + + if (runave_outfile.size() > 0) { + cvm::main()->proxy->flush_output_stream(runave_outfile); + } + + return os; +} + - os << "colvar {\n" - << " name " << name << "\n" +std::string const colvar::get_state_params() const +{ + std::ostringstream os; + + os << " name " << name << "\n" << " x " << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) @@ -2404,7 +2507,13 @@ std::ostream & colvar::write_state(std::ostream &os) { << v_reported << "\n"; } - os << "}\n\n"; + return os.str(); +} + + +cvm::memory_stream & colvar::write_state(cvm::memory_stream &os) const +{ + os << std::string("colvar") << get_state_params(); if (runave_outfile.size() > 0) { cvm::main()->proxy->flush_output_stream(runave_outfile); @@ -2867,14 +2976,11 @@ int colvar::calc_runave() runave_variance *= 1.0 / cvm::real(runave_length-1); if (runave_outfile.size() > 0) { - std::ostream &runave_os = proxy->output_stream(runave_outfile); - runave_os << std::setw(cvm::it_width) << cvm::step_relative() - << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) - << runave << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) + std::ostream &runave_os = + proxy->output_stream(runave_outfile, "running average output file"); + runave_os << std::setw(cvm::it_width) << cvm::step_relative() << " " + << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) << runave << " " + << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) << cvm::sqrt(runave_variance) << "\n"; } } diff --git a/src/colvar.h b/src/colvar.h index 05769aaeb..00231984d 100644 --- a/src/colvar.h +++ b/src/colvar.h @@ -10,9 +10,9 @@ #ifndef COLVAR_H #define COLVAR_H -#include -#include #include +#include +#include #include "colvarmodule.h" #include "colvarvalue.h" @@ -88,7 +88,7 @@ class colvar : public colvarparse, public colvardeps { /// calculations, \link colvarbias_abf \endlink, it is used to /// calculate the grid spacing in the direction of this collective /// variable. - cvm::real width; + cvm::real width = 1.0; /// \brief Implementation of the feature list for colvar static std::vector cv_features; @@ -181,13 +181,13 @@ class colvar : public colvarparse, public colvardeps { /// Previous velocity of the restraint center colvarvalue prev_v_ext; /// Mass of the restraint center - cvm::real ext_mass; + cvm::real ext_mass = 0.0; /// Restraint force constant - cvm::real ext_force_k; + cvm::real ext_force_k = 0.0; /// Friction coefficient for Langevin extended dynamics - cvm::real ext_gamma; + cvm::real ext_gamma = 0.0; /// Amplitude of Gaussian white noise for Langevin extended dynamics - cvm::real ext_sigma; + cvm::real ext_sigma = 0.0; /// \brief Applied force on extended DOF, for output (unscaled if using MTS) colvarvalue fr; @@ -221,14 +221,14 @@ class colvar : public colvarparse, public colvardeps { colvarvalue ft; /// Period, if this variable is periodic - cvm::real period; + cvm::real period = 0.0; /// Center of wrapping, if this variable is periodic - cvm::real wrap_center; + cvm::real wrap_center = 0.0; /// \brief Expand the boundaries of multiples of width, to keep the /// value always within range - bool expand_boundaries; + bool expand_boundaries = false; /// \brief Location of the lower boundary colvarvalue lower_boundary; @@ -383,10 +383,10 @@ class colvar : public colvarparse, public colvardeps { protected: /// \brief Number of CVC objects with an active flag - size_t n_active_cvcs; + size_t n_active_cvcs = 0; /// Sum of square coefficients for active cvcs - cvm::real active_cvc_square_norm; + cvm::real active_cvc_square_norm = 0.0; /// Update the sum of square coefficients for active cvcs void update_active_cvc_square_norm(); @@ -456,16 +456,35 @@ class colvar : public colvarparse, public colvardeps { /// Write a label to the trajectory file (comment line) std::ostream & write_traj_label(std::ostream &os); - /// Read the collective variable from a restart file + /// Read the colvar's state from a formatted input stream std::istream & read_state(std::istream &is); - /// Write the collective variable to a restart file - std::ostream & write_state(std::ostream &os); + + /// Read the colvar's state from an unformatted input stream + cvm::memory_stream & read_state(cvm::memory_stream &is); + + /// Check the name of the bias vs. the given string, set the matching_state flag accordingly + int check_matching_state(std::string const &state_conf); + + /// Read the values of colvar mutable data from a string (used by both versions of read_state()) + int set_state_params(std::string const &state_conf); + + /// Write the state information of this colvar in a block of text, suitable for later parsing + std::string const get_state_params() const; + + /// Write the colvar's state to a formatted output stream + std::ostream & write_state(std::ostream &os) const; + + /// Write the colvar's state to an unformatted output stream + cvm::memory_stream & write_state(cvm::memory_stream &os) const; /// Write output files (if defined, e.g. in analysis mode) int write_output_files(); protected: + /// Flag used to tell if the state string being read is for this colvar + bool matching_state; + /// Previous value (to calculate velocities during analysis) colvarvalue x_old; @@ -550,15 +569,15 @@ class colvar : public colvarparse, public colvardeps { /// Current value of the running average colvarvalue runave; /// Current value of the square deviation from the running average - cvm::real runave_variance; + cvm::real runave_variance = 0.0; /// Calculate the running average and its standard deviation int calc_runave(); /// If extended Lagrangian active: colvar kinetic energy - cvm::real kinetic_energy; + cvm::real kinetic_energy = 0.0; /// If extended Lagrangian active: colvar harmonic potential - cvm::real potential_energy; + cvm::real potential_energy = 0.0; public: @@ -759,4 +778,3 @@ inline void colvar::reset_bias_force() { } #endif - diff --git a/src/colvar_geometricpath.h b/src/colvar_geometricpath.h index 9ff78261f..51f97bb67 100644 --- a/src/colvar_geometricpath.h +++ b/src/colvar_geometricpath.h @@ -8,12 +8,13 @@ // Colvars repository at GitHub. -#include "colvarmodule.h" - -#include -#include #include +#include #include +#include + +#include "colvarmodule.h" + namespace GeometricPathCV { @@ -171,10 +172,14 @@ void GeometricPathBase::determineClosestFr sign = -1; } if (cvm::fabs(static_cast(frame_index[0]) - static_cast(frame_index[1])) > 1) { - std::cout << "Warning: Geometrical pathCV relies on the assumption that the second closest frame is the neighbouring frame\n"; - std::cout << " Please check your configuration or increase restraint on z(σ)\n"; + std::string message( + "Warning: Geometrical pathCV relies on the assumption that the second closest frame is " + "the neighbouring frame\n" + " Please check your configuration or increase restraint on z(σ)\n"); for (size_t i_frame = 0; i_frame < frame_index.size(); ++i_frame) { - std::cout << "Frame index: " << frame_index[i_frame] << " ; optimal RMSD = " << frame_distances[frame_index[i_frame]] << "\n"; + message += "Frame index: " + cvm::to_str(frame_index[i_frame]) + + " ; optimal RMSD = " + cvm::to_str(frame_distances[frame_index[i_frame]]) + + "\n"; } } min_frame_index_1 = frame_index[0]; // s_m diff --git a/src/colvar_neuralnetworkcompute.cpp b/src/colvar_neuralnetworkcompute.cpp index b0b5e2941..b77db0cfa 100644 --- a/src/colvar_neuralnetworkcompute.cpp +++ b/src/colvar_neuralnetworkcompute.cpp @@ -271,9 +271,12 @@ std::vector> neuralNetworkCompute::multiply_matrix(const std const size_t t = B[0].size(); std::vector> C(m, std::vector(t, 0.0)); for (size_t i = 0; i < m; ++i) { - for (size_t j = 0; j < t; ++j) { - for (size_t k = 0; k < n; ++k) { - C[i][j] += A[i][k] * B[k][j]; + for (size_t k = 0; k < n; ++k) { + const auto tmp = A[i][k]; + auto& C_i = C[i]; + auto& B_k = B[k]; + for (size_t j = 0; j < t; ++j) { + C_i[j] += tmp * B_k[j]; } } } diff --git a/src/colvar_rotation_derivative.h b/src/colvar_rotation_derivative.h index 162067536..50f4f1aa9 100644 --- a/src/colvar_rotation_derivative.h +++ b/src/colvar_rotation_derivative.h @@ -3,6 +3,7 @@ #include "colvartypes.h" #include +#include /// \brief Helper function for loading the ia-th atom in the vector pos to x, y and z (C++11 SFINAE is used) template ::value, bool>::type = true> @@ -80,7 +81,7 @@ struct rotation_derivative { */ void prepare_derivative(rotation_derivative_dldq require_dl_dq) { if (require_dl_dq & rotation_derivative_dldq::use_dl) { - const auto &Q0 = m_rot.S_eigvec[0].data; + const auto &Q0 = m_rot.S_eigvec[0]; tmp_Q0Q0[0][0] = Q0[0] * Q0[0]; tmp_Q0Q0[0][1] = Q0[0] * Q0[1]; tmp_Q0Q0[0][2] = Q0[0] * Q0[2]; @@ -99,10 +100,10 @@ struct rotation_derivative { tmp_Q0Q0[3][3] = Q0[3] * Q0[3]; } if (require_dl_dq & rotation_derivative_dldq::use_dq) { - const auto &Q0 = m_rot.S_eigvec[0].data; - const auto &Q1 = m_rot.S_eigvec[1].data; - const auto &Q2 = m_rot.S_eigvec[2].data; - const auto &Q3 = m_rot.S_eigvec[3].data; + const auto &Q0 = m_rot.S_eigvec[0]; + const auto &Q1 = m_rot.S_eigvec[1]; + const auto &Q2 = m_rot.S_eigvec[2]; + const auto &Q3 = m_rot.S_eigvec[3]; cvm::real const L0 = m_rot.S_eigval[0]; cvm::real const L1 = m_rot.S_eigval[1]; cvm::real const L2 = m_rot.S_eigval[2]; @@ -572,14 +573,17 @@ void debug_gradients( cvm::vector1d dq0_2(4); cvm::matrix2d ds_2; #ifdef COLVARS_LAMMPS - MathEigen::Jacobi &, - cvm::matrix2d &> *ecalc = - reinterpret_cast &, - cvm::matrix2d &> *>(rot.jacobi); + MathEigen::Jacobi *ecalc = + reinterpret_cast *>(rot.jacobi); #endif deriv.prepare_derivative(rotation_derivative_dldq::use_dl | rotation_derivative_dldq::use_dq); + cvm::real S_new[4][4]; + cvm::real S_new_eigval[4]; + cvm::real S_new_eigvec[4][4]; for (size_t ia = 0; ia < pos2.size(); ++ia) { // cvm::real const &a1x = pos1[ia].x; // cvm::real const &a1y = pos1[ia].y; @@ -588,10 +592,9 @@ void debug_gradients( // make an infitesimal move along each cartesian coordinate of // this atom, and solve again the eigenvector problem for (size_t comp = 0; comp < 3; comp++) { - cvm::matrix2d S_new(4, 4); - cvm::vector1d S_new_eigval(4); - cvm::matrix2d S_new_eigvec(4, 4); - S_new = rot.S_backup; + std::memcpy(S_new, rot.S_backup, sizeof(cvm::real) * 4 * 4); + std::memset(S_new_eigval, 0, sizeof(cvm::real) * 4); + std::memset(S_new_eigvec, 0, sizeof(cvm::real) * 4 * 4); for (size_t i = 0; i < 4; i++) { for (size_t j = 0; j < 4; j++) { S_new[i][j] += diff --git a/src/colvaratoms.cpp b/src/colvaratoms.cpp index 4fe1b6936..534ca967b 100644 --- a/src/colvaratoms.cpp +++ b/src/colvaratoms.cpp @@ -1062,14 +1062,15 @@ void cvm::atom_group::calc_apply_roto_translation() fitting_group->atoms: this->atoms, ref_pos); + const auto rot_mat = rot.matrix(); cvm::atom_iter ai; for (ai = this->begin(); ai != this->end(); ai++) { - ai->pos = rot.rotate(ai->pos); + ai->pos = rot_mat * ai->pos; } if (fitting_group) { for (ai = fitting_group->begin(); ai != fitting_group->end(); ai++) { - ai->pos = rot.rotate(ai->pos); + ai->pos = rot_mat * ai->pos; } } } @@ -1109,9 +1110,10 @@ void cvm::atom_group::read_velocities() if (is_enabled(f_ag_rotate)) { + const auto rot_mat = rot.matrix(); for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { ai->read_velocity(); - ai->vel = rot.rotate(ai->vel); + ai->vel = rot_mat * ai->vel; } } else { @@ -1130,9 +1132,10 @@ void cvm::atom_group::read_total_forces() if (is_enabled(f_ag_rotate)) { + const auto rot_mat = rot.matrix(); for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { ai->read_total_force(); - ai->total_force = rot.rotate(ai->total_force); + ai->total_force = rot_mat * ai->total_force; } } else { @@ -1234,7 +1237,7 @@ void cvm::atom_group::calc_fit_gradients_impl() { // the center of geometry contribution to the gradients cvm::rvector atom_grad; // the rotation matrix contribution to the gradients - cvm::rotation const rot_inv = rot.inverse(); + const auto rot_inv = rot.inverse().matrix(); // temporary variables for computing and summing derivatives cvm::real sum_dxdq[4] = {0, 0, 0, 0}; cvm::vector1d dq0_1(4); @@ -1243,7 +1246,7 @@ void cvm::atom_group::calc_fit_gradients_impl() { cvm::atom_pos pos_orig; if (B_ag_center) { atom_grad += atoms[i].grad; - if (B_ag_rotate) pos_orig = rot_inv.rotate(atoms[i].pos - ref_pos_cog); + if (B_ag_rotate) pos_orig = rot_inv * (atoms[i].pos - ref_pos_cog); } else { if (B_ag_rotate) pos_orig = atoms[i].pos; } @@ -1258,7 +1261,7 @@ void cvm::atom_group::calc_fit_gradients_impl() { } } if (B_ag_center) { - if (B_ag_rotate) atom_grad = (rot.inverse()).rotate(atom_grad); + if (B_ag_rotate) atom_grad = rot.inverse().matrix() * atom_grad; atom_grad *= (-1.0)/(cvm::real(group_for_fit->size())); } // loop 2: iterate over the fitting group @@ -1406,9 +1409,9 @@ void cvm::atom_group::apply_colvar_force(cvm::real const &force) if (is_enabled(f_ag_rotate)) { // rotate forces back to the original frame - cvm::rotation const rot_inv = rot.inverse(); + const auto rot_inv = rot.inverse().matrix(); for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { - ai->apply_force(rot_inv.rotate(force * ai->grad)); + ai->apply_force(rot_inv * (force * ai->grad)); } } else { @@ -1451,9 +1454,9 @@ void cvm::atom_group::apply_force(cvm::rvector const &force) if (is_enabled(f_ag_rotate)) { - cvm::rotation const rot_inv = rot.inverse(); + const auto rot_inv = rot.inverse().matrix(); for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { - ai->apply_force(rot_inv.rotate((ai->mass/total_mass) * force)); + ai->apply_force(rot_inv * ((ai->mass/total_mass) * force)); } } else { diff --git a/src/colvaratoms.h b/src/colvaratoms.h index eaebcbd32..d16ca7bd5 100644 --- a/src/colvaratoms.h +++ b/src/colvaratoms.h @@ -183,7 +183,7 @@ class colvarmodule::atom_group int init(); /// \brief Initialize dependency tree - virtual int init_dependencies() override; + int init_dependencies() override; /// \brief Update data required to calculate cvc's int setup(); @@ -224,16 +224,13 @@ class colvarmodule::atom_group static std::vector ag_features; /// \brief Implementation of the feature list accessor for atom group - virtual const std::vector &features() const override - { - return ag_features; - } - virtual std::vector &modify_features() override + const std::vector &features() const override { return ag_features; } + + std::vector &modify_features() override { return ag_features; } + + static void delete_features() { - return ag_features; - } - static void delete_features() { - for (size_t i=0; i < ag_features.size(); i++) { + for (size_t i = 0; i < ag_features.size(); i++) { delete ag_features[i]; } ag_features.clear(); diff --git a/src/colvarbias.cpp b/src/colvarbias.cpp index 653804a4b..169fc073b 100644 --- a/src/colvarbias.cpp +++ b/src/colvarbias.cpp @@ -15,6 +15,7 @@ #include "colvarvalue.h" #include "colvarbias.h" #include "colvargrid.h" +#include "colvars_memstream.h" colvarbias::colvarbias(char const *key) @@ -499,68 +500,98 @@ int colvarbias::set_state_params(std::string const &conf) std::ostream & colvarbias::write_state(std::ostream &os) { if (cvm::debug()) { - cvm::log("Writing state file for bias \""+name+"\"\n"); + cvm::log("Writing formatted state for bias \""+name+"\"\n"); } os.setf(std::ios::scientific, std::ios::floatfield); os.precision(cvm::cv_prec); os << state_keyword << " {\n" - << " configuration {\n"; - std::istringstream is(get_state_params()); - std::string line; - while (std::getline(is, line)) { - os << " " << line << "\n"; - } - os << " }\n"; + << " configuration {\n" + << get_state_params() + << " }\n"; write_state_data(os); os << "}\n\n"; return os; } -std::istream & colvarbias::read_state(std::istream &is) +cvm::memory_stream & colvarbias::write_state(cvm::memory_stream &os) +{ + if (cvm::debug()) { + cvm::log("Writing unformatted state for bias \""+name+"\"\n"); + } + os << state_keyword << std::string("configuration") << get_state_params(); + write_state_data(os); + return os; +} + + +template +void raise_error_rewind(IST &is, SPT start_pos, std::string const &bias_type, + std::string const &bias_name, std::string const added_msg = "") +{ + auto state = is.rdstate(); + is.clear(); + is.seekg(start_pos); + is.setstate(state | std::ios::failbit); + cvm::error("Error: in reading state for \"" + bias_type + "\" bias \"" + bias_name + + "\" at position " + cvm::to_str(static_cast(is.tellg())) + " in stream." + + added_msg + "\n", + COLVARS_INPUT_ERROR); +} + + +template IST & colvarbias::read_state_template_(IST &is) { auto const start_pos = is.tellg(); std::string key, brace, conf; - if ( !(is >> key) || !(key == state_keyword || key == bias_type) || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", &conf)) || - (check_matching_state(conf) != COLVARS_OK) ) { - cvm::error("Error: in reading state configuration for \""+bias_type+ - "\" bias \""+ - this->name+"\" at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream.\n", COLVARS_INPUT_ERROR); - is.clear(); - is.seekg(start_pos); - is.setstate(std::ios::failbit); + if (is >> key) { + if (key == state_keyword || key == bias_type) { + + if (! std::is_same::value) { + // Formatted input only + if (!(is >> brace) || !(brace == "{") ) { + raise_error_rewind(is, start_pos, bias_type, name); + return is; + } + } + + if (!(is >> colvarparse::read_block("configuration", &conf)) || + (check_matching_state(conf) != COLVARS_OK)) { + raise_error_rewind(is, start_pos, bias_type, name); + return is; + } + + } else { + // Not a match for this bias type, rewind without error + is.seekg(start_pos); + return is; + } + + } else { + raise_error_rewind(is, start_pos, bias_type, name); return is; } if (!matching_state) { - // No errors reading, but this state is not for this bias; rewind + // No errors, but not a match for this bias instance; rewind is.seekg(start_pos); return is; } if ((set_state_params(conf) != COLVARS_OK) || !read_state_data(is)) { - cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+ - this->name+"\" at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream.\n", COLVARS_INPUT_ERROR); - auto state = is.rdstate(); - is.clear(); - is.seekg(start_pos); - is.setstate(state); + raise_error_rewind(is, start_pos, bias_type, name); } - is >> brace; - if (brace != "}") { - cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream.\n"); - is.setstate(std::ios::failbit); + if (! std::is_same::value) { + is >> brace; + if (brace != "}") { + cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+ + this->name+"\": no matching brace at position "+ + cvm::to_str(static_cast(is.tellg()))+ + " in stream.\n"); + raise_error_rewind(is, start_pos, bias_type, name); + } } cvm::log("Restarted " + bias_type + " bias \"" + name + "\" with step number " + @@ -570,6 +601,18 @@ std::istream & colvarbias::read_state(std::istream &is) } +std::istream &colvarbias::read_state(std::istream &is) +{ + return read_state_template_(is); +} + + +cvm::memory_stream &colvarbias::read_state(cvm::memory_stream &is) +{ + return read_state_template_(is); +} + + int colvarbias::write_state_prefix(std::string const &prefix) { std::string const filename = @@ -640,25 +683,51 @@ int colvarbias::read_state_string(char const *buffer) } -std::istream & colvarbias::read_state_data_key(std::istream &is, char const *key) +std::ostream &colvarbias::write_state_data_key(std::ostream &os, std::string const &key, + bool header) +{ + os << (header ? "\n" : "") << key << (header ? "\n" : " "); + return os; +} + + +cvm::memory_stream &colvarbias::write_state_data_key(cvm::memory_stream &os, std::string const &key, + bool /* header */) { - std::streampos const start_pos = is.tellg(); + os << std::string(key); + return os; +} + + +template +IST &colvarbias::read_state_data_key_template_(IST &is, std::string const &key) +{ + auto const start_pos = is.tellg(); std::string key_in; - if ( !(is >> key_in) || - !(to_lower_cppstr(key_in) == to_lower_cppstr(std::string(key))) ) { - cvm::error("Error: in reading restart configuration for "+ - bias_type+" bias \""+this->name+"\" at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream.\n", COLVARS_INPUT_ERROR); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; + if (is >> key_in) { + if (key_in != key) { + raise_error_rewind(is, start_pos, bias_type, name, + " Expected keyword \"" + std::string(key) + "\", found \"" + key_in + + "\"."); + } + } else { + raise_error_rewind(is, start_pos, bias_type, name); } return is; } +std::istream & colvarbias::read_state_data_key(std::istream &is, std::string const &key) +{ + return read_state_data_key_template_(is, key); +} + + +cvm::memory_stream & colvarbias::read_state_data_key(cvm::memory_stream &is, std::string const &key) +{ + return read_state_data_key_template_(is, key); +} + std::ostream & colvarbias::write_traj_label(std::ostream &os) { @@ -865,9 +934,22 @@ std::ostream & colvarbias_ti::write_state_data(std::ostream &os) if (! is_enabled(f_cvb_calc_ti_samples)) { return os; } - os << "\nhistogram\n"; + write_state_data_key(os, "histogram"); ti_count->write_raw(os); - os << "\nsystem_forces\n"; + write_state_data_key(os, "system_forces"); + ti_avg_forces->write_raw(os); + return os; +} + + +cvm::memory_stream & colvarbias_ti::write_state_data(cvm::memory_stream &os) +{ + if (! is_enabled(f_cvb_calc_ti_samples)) { + return os; + } + write_state_data_key(os, "histogram"); + ti_count->write_raw(os); + write_state_data_key(os, "system_forces"); ti_avg_forces->write_raw(os); return os; } @@ -900,6 +982,33 @@ std::istream & colvarbias_ti::read_state_data(std::istream &is) } +cvm::memory_stream & colvarbias_ti::read_state_data(cvm::memory_stream &is) +{ + if (! is_enabled(f_cvb_calc_ti_samples)) { + return is; + } + if (cvm::debug()) { + cvm::log("Reading state data for the TI estimator.\n"); + } + if (! read_state_data_key(is, "histogram")) { + return is; + } + if (! ti_count->read_raw(is)) { + return is; + } + if (! read_state_data_key(is, "system_forces")) { + return is; + } + if (! ti_avg_forces->read_raw(is)) { + return is; + } + if (cvm::debug()) { + cvm::log("Done reading state data for the TI estimator.\n"); + } + return is; +} + + int colvarbias_ti::write_output_files() { int error_code = COLVARS_OK; diff --git a/src/colvarbias.h b/src/colvarbias.h index de7b04b51..9a51f9d51 100644 --- a/src/colvarbias.h +++ b/src/colvarbias.h @@ -139,29 +139,81 @@ class colvarbias /// Read the values of specific mutable properties from a string virtual int set_state_params(std::string const &state_conf); - /// Write all mutable data not already written by get_state_params() + /// Write all mutable data not already written by get_state_params() to a formatted stream virtual std::ostream & write_state_data(std::ostream &os) { return os; } - /// Read all mutable data not already set by set_state_params() + /// Write all mutable data not already written by get_state_params() to an unformatted stream + virtual cvm::memory_stream & write_state_data(cvm::memory_stream &os) + { + return os; + } + + /// Read all mutable data not already set by set_state_params() from a formatted stream virtual std::istream & read_state_data(std::istream &is) { return is; } - /// Read a keyword from the state data (typically a header) - /// \param Input stream - /// \param Keyword labeling the header block - std::istream & read_state_data_key(std::istream &is, char const *key); + /// Read all mutable data not already set by set_state_params() from an unformatted stream + virtual cvm::memory_stream & read_state_data(cvm::memory_stream &is) + { + return is; + } + + /// Write a keyword header for a data sequence to a formatted stream + /// \param[in,out] os Output stream + /// \param[in] key Keyword labeling the header block + /// \param[in] header Whether this is the header of a multi-line segment vs a single line + std::ostream &write_state_data_key(std::ostream &os, std::string const &key, bool header = true); + + /// Write a keyword header for a data sequence to an unformatted stream + /// \param[in,out] os Output stream + /// \param[in] key Keyword labeling the header block + /// \param[in] header Ignored + cvm::memory_stream &write_state_data_key(cvm::memory_stream &os, std::string const &key, + bool header = true); - /// Write the bias configuration to a state file or other stream - std::ostream & write_state(std::ostream &os); +private: + + /// Read a keyword header for a data sequence from a stream + /// \param[in,out] Input stream + /// \param[in] Keyword labeling the header block; an error will be raised if not matching + template IST &read_state_data_key_template_(IST &is, std::string const &key); - /// Read the bias configuration from a restart file or other stream +public: + + /// Read a keyword header for a data sequence from a formatted stream + /// \param[in,out] Input stream + /// \param[in] Keyword labeling the header block; an error will be raised if not matching + std::istream & read_state_data_key(std::istream &is, std::string const &key); + + /// Read a keyword header for a data sequence from an unformatted stream + /// \param[in,out] Input stream + /// \param[in] Keyword labeling the header block; an error will be raised if not matching + cvm::memory_stream & read_state_data_key(cvm::memory_stream &is, std::string const &key); + +private: + + /// Generic stream reading function (formatted and not) + template IST & read_state_template_(IST &is); + +public: + + /// Write the bias configuration to a formatted stream + std::ostream &write_state(std::ostream &os); + + /// Write the bias configuration to an unformatted stream + cvm::memory_stream & write_state(cvm::memory_stream &os); + + /// Read the bias configuration from a formatted stream std::istream & read_state(std::istream &is); + /// Read the bias configuration from an unformatted stream + cvm::memory_stream & read_state(cvm::memory_stream &is); + /// Write the bias state to a file with the given prefix int write_state_prefix(std::string const &prefix); @@ -291,7 +343,9 @@ class colvarbias_ti : public virtual colvarbias { virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &state_conf); virtual std::ostream & write_state_data(std::ostream &os); + virtual cvm::memory_stream & write_state_data(cvm::memory_stream &os); virtual std::istream & read_state_data(std::istream &is); + virtual cvm::memory_stream & read_state_data(cvm::memory_stream &is); virtual int write_output_files(); protected: diff --git a/src/colvarbias_abf.cpp b/src/colvarbias_abf.cpp index 7d6b7b7fe..dcf58a319 100644 --- a/src/colvarbias_abf.cpp +++ b/src/colvarbias_abf.cpp @@ -12,6 +12,7 @@ #include "colvarmodule.h" #include "colvar.h" #include "colvarbias_abf.h" +#include "colvars_memstream.h" colvarbias_abf::colvarbias_abf(char const *key) @@ -601,7 +602,7 @@ int colvarbias_abf::replica_share() { template int colvarbias_abf::write_grid_to_file(T const *grid, std::string const &filename, bool close) { - std::ostream &os = cvm::proxy->output_stream(filename); + std::ostream &os = cvm::proxy->output_stream(filename, "multicolumn grid file"); if (!os) { return cvm::error("Error opening file " + filename + " for writing.\n", COLVARS_ERROR | COLVARS_FILE_ERROR); } @@ -619,7 +620,7 @@ template int colvarbias_abf::write_grid_to_file(T const *grid, // (could be implemented as multiple dx files) if (num_variables() > 2 && close) { std::string dx = filename + ".dx"; - std::ostream &dx_os = cvm::proxy->output_stream(dx); + std::ostream &dx_os = cvm::proxy->output_stream(dx, "OpenDX grid file"); if (!dx_os) { return cvm::error("Error opening file " + dx + " for writing.\n", COLVARS_ERROR | COLVARS_FILE_ERROR); } @@ -741,24 +742,24 @@ int colvarbias_abf::read_gradients_samples() } -std::ostream & colvarbias_abf::write_state_data(std::ostream& os) +template OST & colvarbias_abf::write_state_data_template_(OST &os) { - std::ios::fmtflags flags(os.flags()); + auto flags = os.flags(); os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format - os << "\nsamples\n"; + write_state_data_key(os, "samples"); samples->write_raw(os, 8); os.flags(flags); - os << "\ngradient\n"; + write_state_data_key(os, "gradient"); gradients->write_raw(os, 8); if (b_CZAR_estimator) { os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format - os << "\nz_samples\n"; + write_state_data_key(os, "z_samples"); z_samples->write_raw(os, 8); os.flags(flags); - os << "\nz_gradient\n"; + write_state_data_key(os, "z_gradient"); z_gradients->write_raw(os, 8); } @@ -767,7 +768,19 @@ std::ostream & colvarbias_abf::write_state_data(std::ostream& os) } -std::istream & colvarbias_abf::read_state_data(std::istream& is) +std::ostream & colvarbias_abf::write_state_data(std::ostream& os) +{ + return write_state_data_template_(os); +} + + +cvm::memory_stream & colvarbias_abf::write_state_data(cvm::memory_stream& os) +{ + return write_state_data_template_(os); +} + + +template IST &colvarbias_abf::read_state_data_template_(IST &is) { if ( input_prefix.size() > 0 ) { cvm::error("ERROR: cannot provide both inputPrefix and a colvars state file.\n", COLVARS_INPUT_ERROR); @@ -812,6 +825,18 @@ std::istream & colvarbias_abf::read_state_data(std::istream& is) } +std::istream & colvarbias_abf::read_state_data(std::istream& is) +{ + return read_state_data_template_(is); +} + + +cvm::memory_stream & colvarbias_abf::read_state_data(cvm::memory_stream& is) +{ + return read_state_data_template_(is); +} + + int colvarbias_abf::write_output_files() { if (cvm::debug()) { diff --git a/src/colvarbias_abf.h b/src/colvarbias_abf.h index 9eae867a7..635e0fbfd 100644 --- a/src/colvarbias_abf.h +++ b/src/colvarbias_abf.h @@ -159,8 +159,24 @@ class colvarbias_abf : public colvarbias { std::string const &name, bool close); - virtual std::istream& read_state_data(std::istream&); - virtual std::ostream& write_state_data(std::ostream&); +private: + + /// Generic stream writing function (formatted and not) + template OST &write_state_data_template_(OST &os); + + /// Generic stream readingx function (formatted and not) + template IST &read_state_data_template_(IST &is); + +public: + + virtual std::ostream &write_state_data(std::ostream &os); + + virtual cvm::memory_stream &write_state_data(cvm::memory_stream &os); + + virtual std::istream &read_state_data(std::istream &is); + + virtual cvm::memory_stream &read_state_data(cvm::memory_stream &is); + virtual int write_output_files(); /// Calculate the bias energy for 1D ABF diff --git a/src/colvarbias_histogram.cpp b/src/colvarbias_histogram.cpp index 84f1a5bde..640bec353 100644 --- a/src/colvarbias_histogram.cpp +++ b/src/colvarbias_histogram.cpp @@ -7,10 +7,13 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include + #include "colvarmodule.h" #include "colvarproxy.h" #include "colvar.h" #include "colvarbias_histogram.h" +#include "colvars_memstream.h" colvarbias_histogram::colvarbias_histogram(char const *key) @@ -197,13 +200,18 @@ int colvarbias_histogram::write_output_files() std::istream & colvarbias_histogram::read_state_data(std::istream& is) { - if (! read_state_data_key(is, "grid")) { - return is; - } - if (! grid->read_raw(is)) { - return is; + if (read_state_data_key(is, "grid")) { + grid->read_raw(is); } + return is; +} + +cvm::memory_stream & colvarbias_histogram::read_state_data(cvm::memory_stream& is) +{ + if (read_state_data_key(is, "grid")) { + grid->read_raw(is); + } return is; } @@ -212,8 +220,16 @@ std::ostream & colvarbias_histogram::write_state_data(std::ostream& os) { std::ios::fmtflags flags(os.flags()); os.setf(std::ios::fmtflags(0), std::ios::floatfield); - os << "grid\n"; + write_state_data_key(os, "grid"); grid->write_raw(os, 8); os.flags(flags); return os; } + + +cvm::memory_stream & colvarbias_histogram::write_state_data(cvm::memory_stream& os) +{ + write_state_data_key(os, "grid"); + grid->write_raw(os); + return os; +} diff --git a/src/colvarbias_histogram.h b/src/colvarbias_histogram.h index 6044fa189..2c6ee84d1 100644 --- a/src/colvarbias_histogram.h +++ b/src/colvarbias_histogram.h @@ -24,11 +24,16 @@ class colvarbias_histogram : public colvarbias { public: colvarbias_histogram(char const *key); - ~colvarbias_histogram(); + virtual ~colvarbias_histogram(); virtual int init(std::string const &conf); virtual int update(); virtual int write_output_files(); + virtual std::ostream & write_state_data(std::ostream &os); + virtual cvm::memory_stream & write_state_data(cvm::memory_stream &os); + virtual std::istream & read_state_data(std::istream &is); + virtual cvm::memory_stream & read_state_data(cvm::memory_stream &is); + protected: /// n-dim histogram @@ -40,9 +45,6 @@ class colvarbias_histogram : public colvarbias { size_t colvar_array_size; /// If colvar_array_size is larger than 1, weigh each one by this number before accumulating the histogram std::vector weights; - - virtual std::istream & read_state_data(std::istream &is); - virtual std::ostream & write_state_data(std::ostream &os); }; #endif diff --git a/src/colvarbias_histogram_reweight_amd.cpp b/src/colvarbias_histogram_reweight_amd.cpp index 85f1bde35..de2f6d9b8 100644 --- a/src/colvarbias_histogram_reweight_amd.cpp +++ b/src/colvarbias_histogram_reweight_amd.cpp @@ -9,6 +9,7 @@ #include "colvarbias_histogram_reweight_amd.h" #include "colvarproxy.h" +#include "colvars_memstream.h" colvarbias_reweightaMD::colvarbias_reweightaMD(char const *key) : colvarbias_histogram(key), grid_count(NULL), grid_dV(NULL), @@ -343,23 +344,37 @@ void colvarbias_reweightaMD::compute_cumulant_expansion_factor( } } -std::ostream & colvarbias_reweightaMD::write_state_data(std::ostream& os) + +template OST & colvarbias_reweightaMD::write_state_data_template_(OST& os) { std::ios::fmtflags flags(os.flags()); os.setf(std::ios::fmtflags(0), std::ios::floatfield); - os << "grid\n"; + write_state_data_key(os, "grid"); grid->write_raw(os, 8); - os << "grid_count\n"; + write_state_data_key(os, "grid_count"); grid_count->write_raw(os, 8); - os << "grid_dV\n"; + write_state_data_key(os, "grid_dV"); grid_dV->write_raw(os, 8); - os << "grid_dV_square\n"; + write_state_data_key(os, "grid_dV_square"); grid_dV_square->write_raw(os, 8); os.flags(flags); return os; } -std::istream & colvarbias_reweightaMD::read_state_data(std::istream& is) + +std::ostream & colvarbias_reweightaMD::write_state_data(std::ostream& os) +{ + return write_state_data_template_(os); +} + + +cvm::memory_stream & colvarbias_reweightaMD::write_state_data(cvm::memory_stream& os) +{ + return write_state_data_template_(os); +} + + +template IST & colvarbias_reweightaMD::read_state_data_template_(IST& is) { if (! read_state_data_key(is, "grid")) { return is; @@ -387,3 +402,15 @@ std::istream & colvarbias_reweightaMD::read_state_data(std::istream& is) } return is; } + + +std::istream & colvarbias_reweightaMD::read_state_data(std::istream& is) +{ + return read_state_data_template_(is); +} + + +cvm::memory_stream & colvarbias_reweightaMD::read_state_data(cvm::memory_stream& is) +{ + return read_state_data_template_(is); +} diff --git a/src/colvarbias_histogram_reweight_amd.h b/src/colvarbias_histogram_reweight_amd.h index 7f50eb0f3..43759b3bd 100644 --- a/src/colvarbias_histogram_reweight_amd.h +++ b/src/colvarbias_histogram_reweight_amd.h @@ -79,9 +79,14 @@ class colvarbias_reweightaMD : public colvarbias_histogram { /// Write gradients of the PMF? bool b_write_gradients; + template OST & write_state_data_template_(OST& os); + template IST & read_state_data_template_(IST& is); + /// save and restore virtual std::istream & read_state_data(std::istream &is) override; + virtual cvm::memory_stream & read_state_data(cvm::memory_stream &is) override; virtual std::ostream & write_state_data(std::ostream &os) override; + virtual cvm::memory_stream & write_state_data(cvm::memory_stream &os) override; private: /// temporary grids for evaluating PMFs diff --git a/src/colvarbias_meta.cpp b/src/colvarbias_meta.cpp index 0d2634533..3a2bf6b59 100644 --- a/src/colvarbias_meta.cpp +++ b/src/colvarbias_meta.cpp @@ -35,6 +35,7 @@ #include "colvarproxy.h" #include "colvar.h" #include "colvarbias_meta.h" +#include "colvars_memstream.h" colvarbias_meta::colvarbias_meta(char const *key) @@ -623,9 +624,9 @@ int colvarbias_meta::update_bias() add_hill(hill(cvm::step_absolute(), hill_weight*hills_scale, colvar_values, colvar_sigmas, replica_id)); std::ostream &replica_hills_os = - cvm::proxy->output_stream(replica_hills_file); + cvm::proxy->output_stream(replica_hills_file, "replica hills file"); if (replica_hills_os) { - replica_hills_os << hills.back(); + write_hill(replica_hills_os, hills.back()); } else { return cvm::error("Error: in metadynamics bias \""+this->name+"\""+ ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ @@ -1298,20 +1299,39 @@ int colvarbias_meta::set_state_params(std::string const &state_conf) } -std::istream & colvarbias_meta::read_state_data(std::istream& is) +template +IST & colvarbias_meta::read_grid_data_template_(IST& is, std::string const &key, + GT *grid, GT *backup_grid) { - if (use_grids) { - - if (expand_grids) { - // the boundaries of the colvars may have been changed; TODO: - // this reallocation is only for backward-compatibility, and may - // be deleted when grid_parameters (i.e. colvargrid's own - // internal reallocation) has kicked in - delete hills_energy; - delete hills_energy_gradients; - hills_energy = new colvar_grid_scalar(colvars); - hills_energy_gradients = new colvar_grid_gradient(colvars); + auto const start_pos = is.tellg(); + std::string key_in; + if (is >> key_in) { + if ((key != key_in) || !(grid->read_restart(is))) { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + if (!rebin_grids) { + if ((backup_grid == nullptr) || (comm == single_replica)) { + cvm::error("Error: couldn't read grid data for metadynamics bias \""+ + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + "; if useGrids was off when the state file was written, " + "try enabling rebinGrids now to regenerate the grids.\n", COLVARS_INPUT_ERROR); + } + } } + } else { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + } + return is; +} + + +template IST &colvarbias_meta::read_state_data_template_(IST &is) +{ + if (use_grids) { colvar_grid_scalar *hills_energy_backup = NULL; colvar_grid_gradient *hills_energy_gradients_backup = NULL; @@ -1327,95 +1347,26 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) hills_energy_gradients = new colvar_grid_gradient(colvars); } - std::streampos const hills_energy_pos = is.tellg(); - std::string key; - if (!(is >> key)) { - if (hills_energy_backup != NULL) { - delete hills_energy; - delete hills_energy_gradients; - hills_energy = hills_energy_backup; - hills_energy_gradients = hills_energy_gradients_backup; - } - is.clear(); - is.seekg(hills_energy_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } else if (!(key == std::string("hills_energy")) || - !(hills_energy->read_restart(is))) { - is.clear(); - is.seekg(hills_energy_pos, std::ios::beg); - if (!rebin_grids) { - if ((hills_energy_backup == NULL) || (comm == single_replica)) { - cvm::error("Error: couldn't read the energy grid for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - "; if useGrids was off when the state file was written, " - "enable rebinGrids now to regenerate the grids.\n"); - } else { - delete hills_energy; - delete hills_energy_gradients; - hills_energy = hills_energy_backup; - hills_energy_gradients = hills_energy_gradients_backup; - is.setstate(std::ios::failbit); - return is; - } - } - } + read_grid_data_template_(is, "hills_energy", hills_energy, + hills_energy_backup); - std::streampos const hills_energy_gradients_pos = is.tellg(); - if (!(is >> key)) { - if (hills_energy_backup != NULL) { - delete hills_energy; - delete hills_energy_gradients; - hills_energy = hills_energy_backup; - hills_energy_gradients = hills_energy_gradients_backup; + read_grid_data_template_( + is, "hills_energy_gradients", hills_energy_gradients, hills_energy_gradients_backup); + + if (is) { + cvm::log(" successfully read the biasing potential and its gradients from grids.\n"); + if (hills_energy_backup != nullptr) { + // Now that we have successfully updated the grids, delete the backup copies + delete hills_energy_backup; + delete hills_energy_gradients_backup; } - is.clear(); - is.seekg(hills_energy_gradients_pos, std::ios::beg); - is.setstate(std::ios::failbit); + } else { return is; - } else if (!(key == std::string("hills_energy_gradients")) || - !(hills_energy_gradients->read_restart(is))) { - is.clear(); - is.seekg(hills_energy_gradients_pos, std::ios::beg); - if (!rebin_grids) { - if ((hills_energy_backup == NULL) || (comm == single_replica)) { - cvm::error("Error: couldn't read the gradients grid for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - "; if useGrids was off when the state file was written, " - "enable rebinGrids now to regenerate the grids.\n"); - } else { - delete hills_energy; - delete hills_energy_gradients; - hills_energy = hills_energy_backup; - hills_energy_gradients = hills_energy_gradients_backup; - is.setstate(std::ios::failbit); - return is; - } - } - } - - if (cvm::debug()) - cvm::log("Successfully read new grids for bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); - - cvm::log(" read biasing energy and forces from grids.\n"); - - if (hills_energy_backup != NULL) { - // now that we have successfully updated the grids, delete the - // backup copies - if (cvm::debug()) - cvm::log("Deallocating the older grids.\n"); - - delete hills_energy_backup; - delete hills_energy_gradients_backup; } } - // Save references to the end of the list of existing hills, so that it can - // be cleared if hills are read successfully state + // Save references to the end of the list of existing hills, so that they can + // be cleared if hills are read successfully from the stream bool const existing_hills = !hills.empty(); size_t const old_hills_size = hills.size(); hill_iter old_hills_end = hills.end(); @@ -1429,17 +1380,20 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) while (read_hill(is)) { if (cvm::debug()) { cvm::log("Read a previously saved hill under the " - "metadynamics bias \""+ - this->name+"\", created at step "+ - cvm::to_str((hills.back()).it)+".\n"); + "metadynamics bias \"" + + this->name + "\", created at step " + cvm::to_str((hills.back()).it) + + "; position in stream is " + cvm::to_str(is.tellg()) + ".\n"); } } + is.clear(); + new_hills_begin = hills.end(); - cvm::log(" read "+cvm::to_str(hills.size() - old_hills_size)+ - " additional explicit hills.\n"); + cvm::log(" successfully read "+cvm::to_str(hills.size() - old_hills_size)+ + " explicit hills from state.\n"); if (existing_hills) { + // Prune any hills that pre-existed those just read hills.erase(hills.begin(), old_hills_end); hills_off_grid.erase(hills_off_grid.begin(), old_hills_off_grid_end); if (cvm::debug()) { @@ -1448,6 +1402,46 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) } } + // If rebinGrids is set, rebin the grids based on the current information + rebin_grids_after_restart(); + + if (use_grids) { + if (!hills_off_grid.empty()) { + cvm::log(cvm::to_str(hills_off_grid.size())+" hills are near the " + "grid boundaries: they will be computed analytically " + "and saved to the state files.\n"); + } + } + + colvarbias_ti::read_state_data(is); + + if (cvm::debug()) + cvm::log("colvarbias_meta::read_restart() done\n"); + + has_data = true; + + if (comm == multiple_replicas) { + read_replica_files(); + } + + return is; +} + + +std::istream & colvarbias_meta::read_state_data(std::istream& is) +{ + return read_state_data_template_(is); +} + + +cvm::memory_stream &colvarbias_meta::read_state_data(cvm::memory_stream &is) +{ + return read_state_data_template_(is); +} + + +void colvarbias_meta::rebin_grids_after_restart() +{ if (rebin_grids) { // allocate new grids (based on the new boundaries and widths just @@ -1462,9 +1456,9 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) if (cvm::debug()) { std::ostringstream tmp_os; tmp_os << "hills_energy parameters:\n"; - hills_energy->write_params(tmp_os); + tmp_os << hills_energy->get_state_params(); tmp_os << "new_hills_energy parameters:\n"; - new_hills_energy->write_params(tmp_os); + tmp_os << new_hills_energy->get_state_params(); cvm::log(tmp_os.str()); } @@ -1494,116 +1488,184 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) if (!hills.empty()) recount_hills_off_grid(hills.begin(), hills.end(), hills_energy); } +} - if (use_grids) { - if (!hills_off_grid.empty()) { - cvm::log(cvm::to_str(hills_off_grid.size())+" hills are near the " - "grid boundaries: they will be computed analytically " - "and saved to the state files.\n"); - } + +template +OST &colvarbias_meta::write_hill_template_(OST &os, colvarbias_meta::hill const &h) +{ + bool const formatted = !std::is_same::value; + + if (formatted) { + os.setf(std::ios::scientific, std::ios::floatfield); } - colvarbias_ti::read_state_data(is); + write_state_data_key(os, "hill", false); - if (cvm::debug()) - cvm::log("colvarbias_meta::read_restart() done\n"); + if (formatted) + os << "{\n"; - has_data = true; + write_state_data_key(os, "step", false); + if (formatted) + os << std::setw(cvm::it_width); + os << h.it; + if (formatted) + os << "\n"; - if (comm != single_replica) { - read_replica_files(); + write_state_data_key(os, "weight", false); + if (formatted) + os << std::setprecision(cvm::en_prec) << std::setw(cvm::en_width); + os << h.W; + if (formatted) + os << "\n"; + + size_t i; + write_state_data_key(os, "centers", false); + for (i = 0; i < (h.centers).size(); i++) { + if (formatted) + os << " " << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width); + os << h.centers[i]; } + if (formatted) + os << "\n"; - return is; + // For backward compatibility, write the widths instead of the sigmas + write_state_data_key(os, "widths", false); + for (i = 0; i < (h.sigmas).size(); i++) { + if (formatted) + os << " " << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width); + os << 2.0 * h.sigmas[i]; + } + if (formatted) + os << "\n"; + + if (h.replica.size()) { + write_state_data_key(os, "replicaID", false); + os << h.replica; + if (formatted) + os << "\n"; + } + + if (formatted) + os << "}\n"; + + return os; +} + + +std::ostream &colvarbias_meta::write_hill(std::ostream &os, colvarbias_meta::hill const &h) +{ + return write_hill_template_(os, h); } -inline std::istream & reset_istream(std::istream &is, size_t start_pos) +cvm::memory_stream &colvarbias_meta::write_hill(cvm::memory_stream &os, + colvarbias_meta::hill const &h) +{ + return write_hill_template_(os, h); +} + + +template IST &hill_stream_error(IST &is, size_t start_pos, std::string const &key) { is.clear(); - is.seekg(start_pos, std::ios::beg); + is.seekg(start_pos); is.setstate(std::ios::failbit); + cvm::error("Error: in reading data for keyword \"" + key + "\" from stream.\n", + COLVARS_INPUT_ERROR); return is; } -std::istream & colvarbias_meta::read_hill(std::istream &is) +template IST &colvarbias_meta::read_hill_template_(IST &is) { - if (!is) return is; // do nothing if failbit is set + if (!is) + return is; // do nothing if failbit is set - std::streampos const start_pos = is.tellg(); - size_t i = 0; + bool const formatted = !std::is_same::value; + + auto const start_pos = is.tellg(); - std::string data; - if ( !(is >> read_block("hill", &data)) ) { - return reset_istream(is, start_pos); + std::string key; + if (!(is >> key) || (key != "hill")) { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + return is; } - std::istringstream data_is(data); + if (formatted) { + std::string brace; + if (!(is >> brace) || (brace != "{")) { + return hill_stream_error(is, start_pos, "hill"); + } + } cvm::step_number h_it = 0L; cvm::real h_weight = 0.0; std::vector h_centers(num_variables()); - for (i = 0; i < num_variables(); i++) { + for (size_t i = 0; i < num_variables(); i++) { h_centers[i].type(variables(i)->value()); } std::vector h_sigmas(num_variables()); std::string h_replica; - std::string keyword; - while (data_is >> keyword) { + if (!read_state_data_key(is, "step") || !(is >> h_it)) { + return hill_stream_error(is, start_pos, "step"); + } - if (keyword == "step") { - if ( !(data_is >> h_it)) { - return reset_istream(is, start_pos); - } - if ((h_it <= state_file_step) && !restart_keep_hills) { - if (cvm::debug()) - cvm::log("Skipping a hill older than the state file for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); - return is; - } + if (read_state_data_key(is, "weight")) { + if (!(is >> h_weight)) { + return hill_stream_error(is, start_pos, "weight"); } + } - if (keyword == "weight") { - if ( !(data_is >> h_weight)) { - return reset_istream(is, start_pos); + if (read_state_data_key(is, "centers")) { + for (size_t i = 0; i < num_variables(); i++) { + if (!(is >> h_centers[i])) { + return hill_stream_error(is, start_pos, "centers"); } } + } - if (keyword == "centers") { - for (i = 0; i < num_variables(); i++) { - if ( !(data_is >> h_centers[i])) { - return reset_istream(is, start_pos); - } + if (read_state_data_key(is, "widths")) { + for (size_t i = 0; i < num_variables(); i++) { + if (!(is >> h_sigmas[i])) { + return hill_stream_error(is, start_pos, "widths"); } + // For backward compatibility, read the widths instead of the sigmas + h_sigmas[i] /= 2.0; } + } - if (keyword == "widths") { - for (i = 0; i < num_variables(); i++) { - if ( !(data_is >> h_sigmas[i])) { - return reset_istream(is, start_pos); - } - // For backward compatibility, read the widths instead of the sigmas - h_sigmas[i] /= 2.0; + if (comm != single_replica) { + if (read_state_data_key(is, "replicaID")) { + if (!(is >> h_replica)) { + return hill_stream_error(is, start_pos, "replicaID"); + } + if (h_replica != replica_id) { + cvm::error("Error: trying to read a hill created by replica \"" + h_replica + + "\" for replica \"" + replica_id + "\"; did you swap output files?\n", + COLVARS_INPUT_ERROR); + return hill_stream_error(is, start_pos, "replicaID"); } } + } - if (comm != single_replica) { - if (keyword == "replicaID") { - if ( !(data_is >> h_replica)) { - return reset_istream(is, start_pos); - } - if (h_replica != replica_id) { - cvm::error("Error: trying to read a hill created by replica \""+ - h_replica+"\" for replica \""+replica_id+ - "\"; did you swap output files?\n", COLVARS_INPUT_ERROR); - } - } + if (formatted) { + std::string brace; + if (!(is >> brace) || (brace != "}")) { + return hill_stream_error(is, start_pos, "hill"); } } + if ((h_it <= state_file_step) && !restart_keep_hills) { + if (cvm::debug()) + cvm::log("Skipping a hill older than the state file for metadynamics bias \"" + this->name + + "\"" + ((comm != single_replica) ? ", replica \"" + replica_id + "\"" : "") + "\n"); + return is; + } + hill_iter const hills_end = hills.end(); hills.push_back(hill(h_it, h_weight, h_centers, h_sigmas, h_replica)); if (new_hills_begin == hills_end) { @@ -1616,7 +1678,7 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) // add this also to the list of hills that are off-grid, which will // be computed analytically cvm::real const min_dist = - hills_energy->bin_distance_from_boundaries((hills.back()).centers, true); + hills_energy->bin_distance_from_boundaries((hills.back()).centers, true); if (min_dist < (3.0 * cvm::floor(hill_width)) + 1.0) { hills_off_grid.push_back(hills.back()); } @@ -1627,6 +1689,18 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) } +std::istream &colvarbias_meta::read_hill(std::istream &is) +{ + return read_hill_template_(is); +} + + +cvm::memory_stream &colvarbias_meta::read_hill(cvm::memory_stream &is) +{ + return read_hill_template_(is); +} + + int colvarbias_meta::setup_output() { int error_code = COLVARS_OK; @@ -1703,7 +1777,7 @@ int colvarbias_meta::setup_output() // if we're running without grids, use a growing list of "hills" files // otherwise, just one state file and one "hills" file as buffer - std::ostream &list_os = cvm::proxy->output_stream(replica_list_file); + std::ostream &list_os = cvm::proxy->output_stream(replica_list_file, "replica list file"); if (list_os) { list_os << "stateFile " << replica_state_file << "\n"; list_os << "hillsFile " << replica_hills_file << "\n"; @@ -1725,7 +1799,7 @@ int colvarbias_meta::setup_output() if (b_hills_traj) { std::ostream &hills_traj_os = - cvm::proxy->output_stream(hills_traj_file_name()); + cvm::proxy->output_stream(hills_traj_file_name(), "hills trajectory file"); if (!hills_traj_os) { error_code |= COLVARS_FILE_ERROR; } @@ -1759,36 +1833,32 @@ std::string const colvarbias_meta::get_state_params() const } -std::ostream & colvarbias_meta::write_state_data(std::ostream& os) +template OST &colvarbias_meta::write_state_data_template_(OST &os) { if (use_grids) { // this is a very good time to project hills, if you haven't done // it already! - project_hills(new_hills_begin, hills.end(), - hills_energy, hills_energy_gradients); + project_hills(new_hills_begin, hills.end(), hills_energy, hills_energy_gradients); new_hills_begin = hills.end(); // write down the grids to the restart file - os << " hills_energy\n"; + write_state_data_key(os, "hills_energy"); hills_energy->write_restart(os); - os << " hills_energy_gradients\n"; + write_state_data_key(os, "hills_energy_gradients"); hills_energy_gradients->write_restart(os); } - if ( (!use_grids) || keep_hills ) { + if ((!use_grids) || keep_hills) { // write all hills currently in memory - for (std::list::const_iterator h = this->hills.begin(); - h != this->hills.end(); - h++) { - os << *h; + for (std::list::const_iterator h = this->hills.begin(); h != this->hills.end(); h++) { + write_hill(os, *h); } } else { // write just those that are near the grid boundaries for (std::list::const_iterator h = this->hills_off_grid.begin(); - h != this->hills_off_grid.end(); - h++) { - os << *h; + h != this->hills_off_grid.end(); h++) { + write_hill(os, *h); } } @@ -1797,6 +1867,18 @@ std::ostream & colvarbias_meta::write_state_data(std::ostream& os) } +std::ostream & colvarbias_meta::write_state_data(std::ostream& os) +{ + return write_state_data_template_(os); +} + + +cvm::memory_stream &colvarbias_meta::write_state_data(cvm::memory_stream &os) +{ + return write_state_data_template_(os); +} + + int colvarbias_meta::write_state_to_replicas() { int error_code = COLVARS_OK; @@ -1820,7 +1902,7 @@ int colvarbias_meta::write_output_files() } if (b_hills_traj) { std::ostream &hills_traj_os = - cvm::proxy->output_stream(hills_traj_file_name()); + cvm::proxy->output_stream(hills_traj_file_name(), "hills trajectory file"); hills_traj_os << hills_traj_os_buf.str(); cvm::proxy->flush_output_stream(hills_traj_file_name()); // clear the buffer @@ -1926,7 +2008,7 @@ int colvarbias_meta::write_replica_state_file() // Write to temporary state file std::string const tmp_state_file(replica_state_file+".tmp"); error_code |= proxy->remove_file(tmp_state_file); - std::ostream &rep_state_os = cvm::proxy->output_stream(tmp_state_file); + std::ostream &rep_state_os = cvm::proxy->output_stream(tmp_state_file, "temporary state file"); if (rep_state_os) { if (!write_state(rep_state_os)) { error_code |= cvm::error("Error: in writing to temporary file \""+ @@ -1945,11 +2027,11 @@ int colvarbias_meta::reopen_replica_buffer_file() { int error_code = COLVARS_OK; colvarproxy *proxy = cvm::proxy; - if (proxy->output_stream(replica_hills_file)) { + if (proxy->output_stream(replica_hills_file, "replica hills file")) { error_code |= proxy->close_output_stream(replica_hills_file); } error_code |= proxy->remove_file(replica_hills_file); - std::ostream &replica_hills_os = proxy->output_stream(replica_hills_file); + std::ostream &replica_hills_os = proxy->output_stream(replica_hills_file, "replica hills file"); if (replica_hills_os) { replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); } else { @@ -2048,43 +2130,3 @@ colvarbias_meta::hill::operator = (colvarbias_meta::hill const &h) colvarbias_meta::hill::~hill() {} - - -std::ostream & operator << (std::ostream &os, colvarbias_meta::hill const &h) -{ - os.setf(std::ios::scientific, std::ios::floatfield); - - os << "hill {\n"; - os << " step " << std::setw(cvm::it_width) << h.it << "\n"; - os << " weight " - << std::setprecision(cvm::en_prec) - << std::setw(cvm::en_width) - << h.W << "\n"; - - if (h.replica.size()) - os << " replicaID " << h.replica << "\n"; - - size_t i; - os << " centers "; - for (i = 0; i < (h.centers).size(); i++) { - os << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) - << h.centers[i]; - } - os << "\n"; - - // For backward compatibility, write the widths instead of the sigmas - os << " widths "; - for (i = 0; i < (h.sigmas).size(); i++) { - os << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) - << 2.0 * h.sigmas[i]; - } - os << "\n"; - - os << "}\n"; - - return os; -} diff --git a/src/colvarbias_meta.h b/src/colvarbias_meta.h index 59ce6a83f..f85bb0fdc 100644 --- a/src/colvarbias_meta.h +++ b/src/colvarbias_meta.h @@ -17,6 +17,7 @@ #include "colvarbias.h" #include "colvargrid.h" + /// Metadynamics bias (implementation of \link colvarbias \endlink) class colvarbias_meta : public virtual colvarbias, @@ -57,8 +58,25 @@ class colvarbias_meta virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &state_conf); - virtual std::ostream & write_state_data(std::ostream &os); - virtual std::istream & read_state_data(std::istream &os); + + virtual std::ostream &write_state_data(std::ostream &os); + virtual cvm::memory_stream &write_state_data(cvm::memory_stream &os); + virtual std::istream &read_state_data(std::istream &is); + virtual cvm::memory_stream &read_state_data(cvm::memory_stream &is); + +private: + + template + IST &read_grid_data_template_(IST &is, std::string const &key, GT *grid, GT *backup_grid); + + template IST &read_state_data_template_(IST &is); + + template OST &write_state_data_template_(OST &os); + +public: + + /// Function called by read_state_data() to execute rebinning (if requested) + void rebin_grids_after_restart(); virtual int setup_output(); virtual int write_output_files(); @@ -105,11 +123,24 @@ class colvarbias_meta /// Regenerate the hills_off_grid list void recount_hills_off_grid(hill_iter h_first, hill_iter h_last, - colvar_grid_scalar *ge); + colvar_grid_scalar *ge); + + template OST &write_hill_template_(OST &os, colvarbias_meta::hill const &h); + + /// Write a hill to a formatted stream + std::ostream &write_hill(std::ostream &os, hill const &h); + + /// Write a hill to an unformatted stream + cvm::memory_stream &write_hill(cvm::memory_stream &os, hill const &h); - /// Read a hill from a file + template IST &read_hill_template_(IST &is); + + /// Read a new hill from a formatted stream std::istream & read_hill(std::istream &is); + /// Read a new hill from an unformatted stream + cvm::memory_stream & read_hill(cvm::memory_stream &is); + /// \brief Add a new hill; if a .hills trajectory is written, /// write it there; if there is more than one replica, communicate /// it to the others @@ -401,9 +432,6 @@ class colvarbias_meta::hill { /// Represent the hill ina string suitable for a trajectory file std::string output_traj(); - /// Write the hill to an output stream - friend std::ostream & operator << (std::ostream &os, hill const &h); - }; diff --git a/src/colvarbias_restraint.cpp b/src/colvarbias_restraint.cpp index 0a66a2999..56200198d 100644 --- a/src/colvarbias_restraint.cpp +++ b/src/colvarbias_restraint.cpp @@ -844,18 +844,6 @@ int colvarbias_restraint_harmonic::set_state_params(std::string const &conf) } -std::ostream & colvarbias_restraint_harmonic::write_state_data(std::ostream &os) -{ - return colvarbias_ti::write_state_data(os); -} - - -std::istream & colvarbias_restraint_harmonic::read_state_data(std::istream &is) -{ - return colvarbias_ti::read_state_data(is); -} - - std::ostream & colvarbias_restraint_harmonic::write_traj_label(std::ostream &os) { colvarbias_restraint::write_traj_label(os); @@ -1143,18 +1131,6 @@ int colvarbias_restraint_harmonic_walls::set_state_params(std::string const &con } -std::ostream & colvarbias_restraint_harmonic_walls::write_state_data(std::ostream &os) -{ - return colvarbias_ti::write_state_data(os); -} - - -std::istream & colvarbias_restraint_harmonic_walls::read_state_data(std::istream &is) -{ - return colvarbias_ti::read_state_data(is); -} - - std::ostream & colvarbias_restraint_harmonic_walls::write_traj_label(std::ostream &os) { colvarbias_restraint::write_traj_label(os); @@ -1300,18 +1276,6 @@ int colvarbias_restraint_linear::set_state_params(std::string const &conf) } -std::ostream & colvarbias_restraint_linear::write_state_data(std::ostream &os) -{ - return colvarbias_ti::write_state_data(os); -} - - -std::istream & colvarbias_restraint_linear::read_state_data(std::istream &is) -{ - return colvarbias_ti::read_state_data(is); -} - - std::ostream & colvarbias_restraint_linear::write_traj_label(std::ostream &os) { colvarbias_restraint::write_traj_label(os); diff --git a/src/colvarbias_restraint.h b/src/colvarbias_restraint.h index 45a96d14f..f030a5cad 100644 --- a/src/colvarbias_restraint.h +++ b/src/colvarbias_restraint.h @@ -38,9 +38,6 @@ class colvarbias_restraint virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &conf); - // virtual std::ostream & write_state_data(std::ostream &os); - // virtual std::istream & read_state_data(std::istream &os); - virtual std::ostream & write_traj_label(std::ostream &os); virtual std::ostream & write_traj(std::ostream &os); @@ -242,8 +239,6 @@ class colvarbias_restraint_harmonic virtual int update(); virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &conf); - virtual std::ostream & write_state_data(std::ostream &os); - virtual std::istream & read_state_data(std::istream &os); virtual std::ostream & write_traj_label(std::ostream &os); virtual std::ostream & write_traj(std::ostream &os); virtual int change_configuration(std::string const &conf); @@ -269,8 +264,6 @@ class colvarbias_restraint_harmonic_walls virtual int update(); virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &conf); - virtual std::ostream & write_state_data(std::ostream &os); - virtual std::istream & read_state_data(std::istream &os); virtual std::ostream & write_traj_label(std::ostream &os); virtual std::ostream & write_traj(std::ostream &os); @@ -311,8 +304,6 @@ class colvarbias_restraint_linear virtual std::string const get_state_params() const; virtual int set_state_params(std::string const &conf); - virtual std::ostream & write_state_data(std::ostream &os); - virtual std::istream & read_state_data(std::istream &os); virtual std::ostream & write_traj_label(std::ostream &os); virtual std::ostream & write_traj(std::ostream &os); diff --git a/src/colvarcomp.cpp b/src/colvarcomp.cpp index 151a25569..a5327bb42 100644 --- a/src/colvarcomp.cpp +++ b/src/colvarcomp.cpp @@ -476,12 +476,12 @@ void colvar::cvc::collect_gradients(std::vector const &atom_ids, std::vecto // If necessary, apply inverse rotation to get atomic // gradient in the laboratory frame if (ag.is_enabled(f_ag_rotate)) { - cvm::rotation const rot_inv = ag.rot.inverse(); + const auto rot_inv = ag.rot.inverse().matrix(); for (size_t k = 0; k < ag.size(); k++) { size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(), ag[k].id) - atom_ids.begin(); - atomic_gradients[a] += coeff * rot_inv.rotate(ag[k].grad); + atomic_gradients[a] += coeff * (rot_inv * ag[k].grad); } } else { @@ -542,8 +542,8 @@ void colvar::cvc::debug_gradients() cvm::atom_group *group = atom_groups[ig]; if (group->b_dummy) continue; - cvm::rotation const rot_0 = group->rot; - cvm::rotation const rot_inv = group->rot.inverse(); + const auto rot_0 = group->rot.matrix(); + const auto rot_inv = group->rot.inverse().matrix(); cvm::real x_0 = x.real_value; if ((x.type() == colvarvalue::type_vector) && (x.size() == 1)) x_0 = x[0]; @@ -564,7 +564,7 @@ void colvar::cvc::debug_gradients() cvm::log((group->fitting_group ? std::string("refPosGroup") : group->key) + "[" + cvm::to_str(j) + "] = " + (group->is_enabled(f_ag_rotate) ? - cvm::to_str(rot_0.rotate(group_for_fit->fit_gradients[j])) : + cvm::to_str(rot_0 * (group_for_fit->fit_gradients[j])) : cvm::to_str(group_for_fit->fit_gradients[j]))); } } @@ -575,7 +575,7 @@ void colvar::cvc::debug_gradients() // tests are best conducted in the unrotated (simulation) frame cvm::rvector const atom_grad = (group->is_enabled(f_ag_rotate) ? - rot_inv.rotate((*group)[ia].grad) : + rot_inv * ((*group)[ia].grad) : (*group)[ia].grad); gradient_sum += atom_grad; diff --git a/src/colvarcomp_apath.cpp b/src/colvarcomp_apath.cpp index a5535ba40..38c570add 100644 --- a/src/colvarcomp_apath.cpp +++ b/src/colvarcomp_apath.cpp @@ -7,11 +7,12 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. -#include #include #include #include +#include #include +#include #include "colvarvalue.h" #include "colvarparse.h" diff --git a/src/colvarcomp_distances.cpp b/src/colvarcomp_distances.cpp index f051dc497..fbf54704d 100644 --- a/src/colvarcomp_distances.cpp +++ b/src/colvarcomp_distances.cpp @@ -1359,8 +1359,9 @@ colvar::eigenvector::eigenvector(std::string const &conf) } if (atoms->is_enabled(f_ag_rotate)) { atoms->rot.calc_optimal_rotation(eigenvec, ref_pos); + const auto rot_mat = atoms->rot.matrix(); for (size_t i = 0; i < atoms->size(); i++) { - eigenvec[i] = atoms->rot.rotate(eigenvec[i]); + eigenvec[i] = rot_mat * eigenvec[i]; } } cvm::log("\"differenceVector\" is on: subtracting the reference positions from the provided vector: v = x_vec - x_ref.\n"); diff --git a/src/colvarcomp_gpath.cpp b/src/colvarcomp_gpath.cpp index 9297eb323..ba7b11f92 100644 --- a/src/colvarcomp_gpath.cpp +++ b/src/colvarcomp_gpath.cpp @@ -222,8 +222,9 @@ void colvar::gspath::prepareVectors() { } else { rot_v3.calc_optimal_rotation(tmp_reference_frame_1, tmp_reference_frame_2); } + const auto rot_mat_v3 = rot_v3.matrix(); for (i_atom = 0; i_atom < atoms->size(); ++i_atom) { - v3[i_atom] = rot_v3.q.rotate(tmp_reference_frame_1[i_atom]) - tmp_reference_frame_2[i_atom]; + v3[i_atom] = rot_mat_v3 * tmp_reference_frame_1[i_atom] - tmp_reference_frame_2[i_atom]; } } else { cvm::atom_pos reference_cog_1, reference_cog_3; @@ -257,9 +258,10 @@ void colvar::gspath::prepareVectors() { } else { rot_v3.calc_optimal_rotation(tmp_reference_frame_1, tmp_reference_frame_3); } + const auto rot_mat_v3 = rot_v3.matrix(); for (i_atom = 0; i_atom < atoms->size(); ++i_atom) { // v3 = s_(m+1) - s_m - v3[i_atom] = tmp_reference_frame_3[i_atom] - rot_v3.q.rotate(tmp_reference_frame_1[i_atom]); + v3[i_atom] = tmp_reference_frame_3[i_atom] - rot_mat_v3 * tmp_reference_frame_1[i_atom]; } } } @@ -365,12 +367,13 @@ void colvar::gzpath::prepareVectors() { } else { rot_v4.calc_optimal_rotation(tmp_reference_frame_1, tmp_reference_frame_2); } + const auto rot_mat_v4 = rot_v4.matrix(); for (i_atom = 0; i_atom < atoms->size(); ++i_atom) { v1[i_atom] = reference_frames[min_frame_index_1][i_atom] - (*(comp_atoms[min_frame_index_1]))[i_atom].pos; v2[i_atom] = (*(comp_atoms[min_frame_index_2]))[i_atom].pos - reference_frames[min_frame_index_2][i_atom]; // v4 only computes in gzpath // v4 = s_m - s_(m-1) - v4[i_atom] = rot_v4.q.rotate(tmp_reference_frame_1[i_atom]) - tmp_reference_frame_2[i_atom]; + v4[i_atom] = rot_mat_v4 * tmp_reference_frame_1[i_atom] - tmp_reference_frame_2[i_atom]; } if (min_frame_index_3 < 0 || min_frame_index_3 > M) { v3 = v4; @@ -398,9 +401,10 @@ void colvar::gzpath::prepareVectors() { } else { rot_v3.calc_optimal_rotation(tmp_reference_frame_1, tmp_reference_frame_3); } + const auto rot_mat_v3 = rot_v3.matrix(); for (i_atom = 0; i_atom < atoms->size(); ++i_atom) { // v3 = s_(m+1) - s_m - v3[i_atom] = tmp_reference_frame_3[i_atom] - rot_v3.q.rotate(tmp_reference_frame_1[i_atom]); + v3[i_atom] = tmp_reference_frame_3[i_atom] - rot_mat_v3 * tmp_reference_frame_1[i_atom]; } } } diff --git a/src/colvargrid.cpp b/src/colvargrid.cpp index 2fd385cce..5ab10439c 100644 --- a/src/colvargrid.cpp +++ b/src/colvargrid.cpp @@ -37,6 +37,58 @@ colvar_grid_count::colvar_grid_count(std::vector &colvars, : colvar_grid(colvars, def_count, 1, margin) {} +std::string colvar_grid_count::get_state_params() const +{ + return colvar_grid::get_state_params(); +} + +int colvar_grid_count::parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode) +{ + return colvar_grid::parse_params(conf, parse_mode); +} + +std::istream & colvar_grid_count::read_restart(std::istream &is) +{ + return colvar_grid::read_restart(is); +} + +cvm::memory_stream & colvar_grid_count::read_restart(cvm::memory_stream &is) +{ + return colvar_grid::read_restart(is); +} + +std::ostream & colvar_grid_count::write_restart(std::ostream &os) +{ + return colvar_grid::write_restart(os); +} + +cvm::memory_stream & colvar_grid_count::write_restart(cvm::memory_stream &os) +{ + return colvar_grid::write_restart(os); +} + +std::istream &colvar_grid_count::read_raw(std::istream &is) +{ + return colvar_grid::read_raw(is); +} + +cvm::memory_stream &colvar_grid_count::read_raw(cvm::memory_stream &is) +{ + return colvar_grid::read_raw(is); +} + +std::ostream &colvar_grid_count::write_raw(std::ostream &os, size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} + +cvm::memory_stream &colvar_grid_count::write_raw(cvm::memory_stream &os, + size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} + std::istream & colvar_grid_count::read_multicol(std::istream &is, bool add) { return colvar_grid::read_multicol(is, add); @@ -96,6 +148,58 @@ colvar_grid_scalar::~colvar_grid_scalar() { } +std::string colvar_grid_scalar::get_state_params() const +{ + return colvar_grid::get_state_params(); +} + +int colvar_grid_scalar::parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode) +{ + return colvar_grid::parse_params(conf, parse_mode); +} + +std::istream &colvar_grid_scalar::read_restart(std::istream &is) +{ + return colvar_grid::read_restart(is); +} + +cvm::memory_stream &colvar_grid_scalar::read_restart(cvm::memory_stream &is) +{ + return colvar_grid::read_restart(is); +} + +std::ostream &colvar_grid_scalar::write_restart(std::ostream &os) +{ + return colvar_grid::write_restart(os); +} + +cvm::memory_stream &colvar_grid_scalar::write_restart(cvm::memory_stream &os) +{ + return colvar_grid::write_restart(os); +} + +std::istream &colvar_grid_scalar::read_raw(std::istream &is) +{ + return colvar_grid::read_raw(is); +} + +cvm::memory_stream &colvar_grid_scalar::read_raw(cvm::memory_stream &is) +{ + return colvar_grid::read_raw(is); +} + +std::ostream &colvar_grid_scalar::write_raw(std::ostream &os, size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} + +cvm::memory_stream &colvar_grid_scalar::write_raw(cvm::memory_stream &os, + size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} + std::istream & colvar_grid_scalar::read_multicol(std::istream &is, bool add) { return colvar_grid::read_multicol(is, add); @@ -280,6 +384,57 @@ colvar_grid_gradient::colvar_grid_gradient(std::string &filename) cvm::main()->proxy->close_input_stream(filename); } +std::string colvar_grid_gradient::get_state_params() const +{ + return colvar_grid::get_state_params(); +} + +int colvar_grid_gradient::parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode) +{ + return colvar_grid::parse_params(conf, parse_mode); +} + +std::istream &colvar_grid_gradient::read_restart(std::istream &is) +{ + return colvar_grid::read_restart(is); +} + +cvm::memory_stream &colvar_grid_gradient::read_restart(cvm::memory_stream &is) +{ + return colvar_grid::read_restart(is); +} + +std::ostream &colvar_grid_gradient::write_restart(std::ostream &os) +{ + return colvar_grid::write_restart(os); +} + +cvm::memory_stream &colvar_grid_gradient::write_restart(cvm::memory_stream &os) +{ + return colvar_grid::write_restart(os); +} + +std::istream &colvar_grid_gradient::read_raw(std::istream &is) +{ + return colvar_grid::read_raw(is); +} + +cvm::memory_stream &colvar_grid_gradient::read_raw(cvm::memory_stream &is) +{ + return colvar_grid::read_raw(is); +} + +std::ostream &colvar_grid_gradient::write_raw(std::ostream &os, size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} + +cvm::memory_stream &colvar_grid_gradient::write_raw(cvm::memory_stream &os, + size_t const buf_size) const +{ + return colvar_grid::write_raw(os, buf_size); +} std::istream & colvar_grid_gradient::read_multicol(std::istream &is, bool add) { diff --git a/src/colvargrid.h b/src/colvargrid.h index e2fc1e0fe..ef3d96734 100644 --- a/src/colvargrid.h +++ b/src/colvargrid.h @@ -10,8 +10,7 @@ #ifndef COLVARGRID_H #define COLVARGRID_H -#include -#include +#include #include "colvar.h" #include "colvarmodule.h" @@ -24,7 +23,8 @@ /// Only scalar colvars supported so far: vector colvars are treated as arrays template class colvar_grid : public colvarparse { -protected: + //protected: +public: // TODO create accessors for these after all instantiations work /// Number of dimensions size_t nd; @@ -803,109 +803,12 @@ template class colvar_grid : public colvarparse { } } - /// Write the grid parameters (number of colvars, boundaries, width and number of points) - std::ostream & write_params(std::ostream &os) - { - size_t i; - os << "grid_parameters {\n n_colvars " << nd << "\n"; - - os << " lower_boundaries "; - for (i = 0; i < nd; i++) - os << " " << lower_boundaries[i]; - os << "\n"; - - os << " upper_boundaries "; - for (i = 0; i < nd; i++) - os << " " << upper_boundaries[i]; - os << "\n"; - - os << " widths "; - for (i = 0; i < nd; i++) - os << " " << widths[i]; - os << "\n"; - - os << " sizes "; - for (i = 0; i < nd; i++) - os << " " << nx[i]; - os << "\n"; + /// Write the current grid parameters to a string + std::string get_state_params() const; - os << "}\n"; - return os; - } - - /// Read a grid definition from a config string + /// Read new grid parameters from a string int parse_params(std::string const &conf, - colvarparse::Parse_Mode const parse_mode = colvarparse::parse_normal) - { - if (cvm::debug()) cvm::log("Reading grid configuration from string.\n"); - - std::vector old_nx = nx; - std::vector old_lb = lower_boundaries; - std::vector old_ub = upper_boundaries; - std::vector old_w = widths; - - { - size_t nd_in = 0; - // this is only used in state files - colvarparse::get_keyval(conf, "n_colvars", nd_in, nd, colvarparse::parse_silent); - if (nd_in != nd) { - cvm::error("Error: trying to read data for a grid " - "that contains a different number of colvars ("+ - cvm::to_str(nd_in)+") than the grid defined " - "in the configuration file("+cvm::to_str(nd)+ - ").\n"); - return COLVARS_ERROR; - } - } - - // underscore keywords are used in state file - colvarparse::get_keyval(conf, "lower_boundaries", - lower_boundaries, lower_boundaries, colvarparse::parse_silent); - colvarparse::get_keyval(conf, "upper_boundaries", - upper_boundaries, upper_boundaries, colvarparse::parse_silent); - - // camel case keywords are used in config file - colvarparse::get_keyval(conf, "lowerBoundaries", - lower_boundaries, lower_boundaries, parse_mode); - colvarparse::get_keyval(conf, "upperBoundaries", - upper_boundaries, upper_boundaries, parse_mode); - - colvarparse::get_keyval(conf, "widths", widths, widths, parse_mode); - - // only used in state file - colvarparse::get_keyval(conf, "sizes", nx, nx, colvarparse::parse_silent); - - if (nd < lower_boundaries.size()) nd = lower_boundaries.size(); - - if (! use_actual_value.size()) use_actual_value.assign(nd, false); - if (! periodic.size()) periodic.assign(nd, false); - if (! widths.size()) widths.assign(nd, 1.0); - - cvm::real eps = 1.e-10; - - bool new_params = false; - if (old_nx.size()) { - for (size_t i = 0; i < nd; i++) { - if (old_nx[i] != nx[i] || - cvm::sqrt(cv[i]->dist2(old_lb[i], lower_boundaries[i])) > eps || - cvm::sqrt(cv[i]->dist2(old_ub[i], upper_boundaries[i])) > eps || - cvm::fabs(old_w[i] - widths[i]) > eps) { - new_params = true; - } - } - } else { - new_params = true; - } - - // reallocate the array in case the grid params have just changed - if (new_params) { - init_from_boundaries(); - // data.clear(); // no longer needed: setup calls clear() - return this->setup(nx, T(), mult); - } - - return COLVARS_OK; - } + colvarparse::Parse_Mode const parse_mode = colvarparse::parse_normal); /// \brief Check that the grid information inside (boundaries, /// widths, ...) is consistent with the current setting of the @@ -950,83 +853,33 @@ template class colvar_grid : public colvarparse { } } + /// Read all grid parameters and data from a formatted stream + std::istream & read_restart(std::istream &is); - /// \brief Read grid entry in restart file - std::istream & read_restart(std::istream &is) - { - std::streampos const start_pos = is.tellg(); - std::string key, conf; - if ((is >> key) && (key == std::string("grid_parameters"))) { - is.seekg(start_pos, std::ios::beg); - is >> colvarparse::read_block("grid_parameters", &conf); - parse_params(conf, colvarparse::parse_silent); - } else { - cvm::log("Grid parameters are missing in the restart file, using those from the configuration.\n"); - is.seekg(start_pos, std::ios::beg); - } - read_raw(is); - return is; - } - - /// \brief Write grid entry in restart file - std::ostream & write_restart(std::ostream &os) - { - write_params(os); - write_raw(os); - return os; - } - + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream & read_restart(cvm::memory_stream &is); - /// \brief Write the grid data without labels, as they are - /// represented in memory - /// \param buf_size Number of values per line - std::ostream & write_raw(std::ostream &os, - size_t const buf_size = 3) const - { - std::streamsize const w = os.width(); - std::streamsize const p = os.precision(); + /// Write all grid parameters and data to a formatted stream + std::ostream & write_restart(std::ostream &os); - std::vector ix = new_index(); - size_t count = 0; - for ( ; index_ok(ix); incr(ix)) { - for (size_t imult = 0; imult < mult; imult++) { - os << " " - << std::setw(w) << std::setprecision(p) - << value_output(ix, imult); - if (((++count) % buf_size) == 0) - os << "\n"; - } - } - // write a final newline only if buffer is not empty - if ((count % buf_size) != 0) - os << "\n"; + /// Write all grid parameters and data to an unformatted stream + cvm::memory_stream & write_restart(cvm::memory_stream &os); - return os; - } + /// Read all grid parameters and data from a formatted stream + std::istream &read_raw(std::istream &is); - /// \brief Read data written by colvar_grid::write_raw() - std::istream & read_raw(std::istream &is) - { - std::streampos const start_pos = is.tellg(); + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream &read_raw(cvm::memory_stream &is); - for (std::vector ix = new_index(); index_ok(ix); incr(ix)) { - for (size_t imult = 0; imult < mult; imult++) { - T new_value; - if (is >> new_value) { - value_input(ix, new_value, imult); - } else { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - cvm::error("Error: failed to read all of the grid points from file. Possible explanations: grid parameters in the configuration (lowerBoundary, upperBoundary, width) are different from those in the file, or the file is corrupt/incomplete.\n"); - return is; - } - } - } + /// Write all grid data to a formatted stream (without labels, as they are represented in memory) + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line + std::ostream &write_raw(std::ostream &os, size_t const buf_size = 3) const; - has_data = true; - return is; - } + /// Write all grid data to an unformatted stream + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line (note: ignored because there is no formatting) + cvm::memory_stream &write_raw(cvm::memory_stream &os, size_t const buf_size = 3) const; /// Read a grid written by write_multicol(), incrementing if add is true std::istream & read_multicol(std::istream &is, bool add = false); @@ -1088,6 +941,41 @@ class colvar_grid_count : public colvar_grid return new_data[address(ix) + imult]; } + /// Write the current grid parameters to a string + std::string get_state_params() const; + + /// Read new grid parameters from a string + int parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode = colvarparse::parse_normal); + + /// Read all grid parameters and data from a formatted stream + std::istream & read_restart(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream & read_restart(cvm::memory_stream &is); + + /// Write all grid parameters and data to a formatted stream + std::ostream & write_restart(std::ostream &os); + + /// Write all grid parameters and data to an unformatted stream + cvm::memory_stream & write_restart(cvm::memory_stream &os); + + /// Read all grid parameters and data from a formatted stream + std::istream &read_raw(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream &read_raw(cvm::memory_stream &is); + + /// Write all grid data to a formatted stream (without labels, as they are represented in memory) + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line + std::ostream &write_raw(std::ostream &os, size_t const buf_size = 3) const; + + /// Write all grid data to an unformatted stream + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line (note: ignored because there is no formatting) + cvm::memory_stream &write_raw(cvm::memory_stream &os, size_t const buf_size = 3) const; + /// Read a grid written by write_multicol(), incrementin if data is true std::istream & read_multicol(std::istream &is, bool add = false); @@ -1261,6 +1149,41 @@ class colvar_grid_scalar : public colvar_grid has_data = true; } + /// Write the current grid parameters to a string + std::string get_state_params() const; + + /// Read new grid parameters from a string + int parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode = colvarparse::parse_normal); + + /// Read all grid parameters and data from a formatted stream + std::istream & read_restart(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream & read_restart(cvm::memory_stream &is); + + /// Write all grid parameters and data to a formatted stream + std::ostream & write_restart(std::ostream &os); + + /// Write all grid parameters and data to an unformatted stream + cvm::memory_stream & write_restart(cvm::memory_stream &os); + + /// Read all grid parameters and data from a formatted stream + std::istream &read_raw(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream &read_raw(cvm::memory_stream &is); + + /// Write all grid data to a formatted stream (without labels, as they are represented in memory) + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line + std::ostream &write_raw(std::ostream &os, size_t const buf_size = 3) const; + + /// Write all grid data to an unformatted stream + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line (note: ignored because there is no formatting) + cvm::memory_stream &write_raw(cvm::memory_stream &os, size_t const buf_size = 3) const; + /// Read a grid written by write_multicol(), incrementin if data is true std::istream & read_multicol(std::istream &is, bool add = false); @@ -1471,6 +1394,41 @@ class colvar_grid_gradient : public colvar_grid /// Constructor from a multicol file colvar_grid_gradient(std::string &filename); + /// Write the current grid parameters to a string + std::string get_state_params() const; + + /// Read new grid parameters from a string + int parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode = colvarparse::parse_normal); + + /// Read all grid parameters and data from a formatted stream + std::istream & read_restart(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream & read_restart(cvm::memory_stream &is); + + /// Write all grid parameters and data to a formatted stream + std::ostream & write_restart(std::ostream &os); + + /// Write all grid parameters and data to an unformatted stream + cvm::memory_stream & write_restart(cvm::memory_stream &os); + + /// Read all grid parameters and data from a formatted stream + std::istream &read_raw(std::istream &is); + + /// Read all grid parameters and data from an unformatted stream + cvm::memory_stream &read_raw(cvm::memory_stream &is); + + /// Write all grid data to a formatted stream (without labels, as they are represented in memory) + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line + std::ostream &write_raw(std::ostream &os, size_t const buf_size = 3) const; + + /// Write all grid data to an unformatted stream + /// \param[in,out] os Stream object + /// \param[in] buf_size Number of values per line (note: ignored because there is no formatting) + cvm::memory_stream &write_raw(cvm::memory_stream &os, size_t const buf_size = 3) const; + /// Read a grid written by write_multicol(), incrementin if data is true virtual std::istream & read_multicol(std::istream &is, bool add = false); diff --git a/src/colvargrid_def.h b/src/colvargrid_def.h index f2245f3d8..92861f43b 100644 --- a/src/colvargrid_def.h +++ b/src/colvargrid_def.h @@ -19,6 +19,233 @@ #include "colvarproxy.h" #include "colvar.h" #include "colvargrid.h" +#include "colvars_memstream.h" + + +template IST &read_restart_template_(colvar_grid &g, IST &is) +{ + auto const start_pos = is.tellg(); + std::string conf; + if ((is >> colvarparse::read_block("grid_parameters", &conf)) && + (g.parse_params(conf, colvarparse::parse_restart) == COLVARS_OK) && g.read_raw(is)) { + return is; + } + auto const error_pos = is.tellg(); + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + cvm::error("Error: in reading grid state from stream at position " + cvm::to_str(error_pos) + + "\n", + COLVARS_INPUT_ERROR); + return is; +} + + +template std::istream &colvar_grid::read_restart(std::istream &is) +{ + return read_restart_template_(*this, is); +} + + +template cvm::memory_stream &colvar_grid::read_restart(cvm::memory_stream &is) +{ + return read_restart_template_(*this, is); +} + + +template std::ostream &colvar_grid::write_restart(std::ostream &os) +{ + os << "grid_parameters {\n" << get_state_params() << "}\n"; + write_raw(os); + return os; +} + + +template cvm::memory_stream &colvar_grid::write_restart(cvm::memory_stream &os) +{ + os << std::string("grid_parameters") << get_state_params(); + write_raw(os); + return os; +} + + +template IST &read_raw_template_(colvar_grid &g, IST &is) +{ + auto const start_pos = is.tellg(); + + for (std::vector ix = g.new_index(); g.index_ok(ix); g.incr(ix)) { + for (size_t imult = 0; imult < g.mult; imult++) { + T new_value; + if (is >> new_value) { + g.value_input(ix, new_value, imult); + } else { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + cvm::error( + "Error: failed to read all of the grid points from file. Possible explanations: grid " + "parameters in the configuration (lowerBoundary, upperBoundary, width) are different " + "from those in the file, or the file is corrupt/incomplete.\n", + COLVARS_INPUT_ERROR); + return is; + } + } + } + + g.has_data = true; + return is; +} + + +template std::istream &colvar_grid::read_raw(std::istream &is) +{ + return read_raw_template_(*this, is); +} + + +template cvm::memory_stream &colvar_grid::read_raw(cvm::memory_stream &is) +{ + return read_raw_template_(*this, is); +} + + +template +std::ostream &colvar_grid::write_raw(std::ostream &os, size_t const buf_size) const +{ + auto const w = os.width(); + auto const p = os.precision(); + + size_t count = 0; + for (auto ix = new_index(); index_ok(ix); incr(ix)) { + for (size_t imult = 0; imult < mult; imult++) { + os << " " << std::setw(w) << std::setprecision(p) << value_output(ix, imult); + if (((++count) % buf_size) == 0) + os << "\n"; + } + } + // write a final newline only if buffer is not empty + if ((count % buf_size) != 0) + os << "\n"; + + return os; +} + + +template +cvm::memory_stream &colvar_grid::write_raw(cvm::memory_stream &os, size_t const buf_size) const +{ + for (auto ix = new_index(); index_ok(ix); incr(ix)) { + for (size_t imult = 0; imult < mult; imult++) { + os << value_output(ix, imult); + } + } + return os; +} + + +template std::string colvar_grid::get_state_params() const +{ + std::ostringstream os; + size_t i; + os << " n_colvars " << nd << "\n"; + + os << " lower_boundaries "; + for (i = 0; i < nd; i++) + os << " " << lower_boundaries[i]; + os << "\n"; + + os << " upper_boundaries "; + for (i = 0; i < nd; i++) + os << " " << upper_boundaries[i]; + os << "\n"; + + os << " widths "; + for (i = 0; i < nd; i++) + os << " " << widths[i]; + os << "\n"; + + os << " sizes "; + for (i = 0; i < nd; i++) + os << " " << nx[i]; + os << "\n"; + + return os.str(); +} + + +template int colvar_grid::parse_params(std::string const &conf, + colvarparse::Parse_Mode const parse_mode) +{ + if (cvm::debug()) + cvm::log("Reading grid configuration from string.\n"); + + std::vector old_nx = nx; + std::vector old_lb = lower_boundaries; + std::vector old_ub = upper_boundaries; + std::vector old_w = widths; + + { + size_t nd_in = 0; + // this is only used in state files + colvarparse::get_keyval(conf, "n_colvars", nd_in, nd, colvarparse::parse_silent); + if (nd_in != nd) { + cvm::error("Error: trying to read data for a grid " + "that contains a different number of colvars ("+ + cvm::to_str(nd_in)+") than the grid defined " + "in the configuration file("+cvm::to_str(nd)+ + ").\n"); + return COLVARS_ERROR; + } + } + + // underscore keywords are used in state file + colvarparse::get_keyval(conf, "lower_boundaries", + lower_boundaries, lower_boundaries, colvarparse::parse_silent); + colvarparse::get_keyval(conf, "upper_boundaries", + upper_boundaries, upper_boundaries, colvarparse::parse_silent); + + // camel case keywords are used in config file + colvarparse::get_keyval(conf, "lowerBoundaries", + lower_boundaries, lower_boundaries, parse_mode); + colvarparse::get_keyval(conf, "upperBoundaries", + upper_boundaries, upper_boundaries, parse_mode); + + colvarparse::get_keyval(conf, "widths", widths, widths, parse_mode); + + // only used in state file + colvarparse::get_keyval(conf, "sizes", nx, nx, colvarparse::parse_silent); + + if (nd < lower_boundaries.size()) nd = lower_boundaries.size(); + + if (! use_actual_value.size()) use_actual_value.assign(nd, false); + if (! periodic.size()) periodic.assign(nd, false); + if (! widths.size()) widths.assign(nd, 1.0); + + cvm::real eps = 1.e-10; + + bool new_params = false; + if (old_nx.size()) { + for (size_t i = 0; i < nd; i++) { + if (old_nx[i] != nx[i] || + cvm::sqrt(cv[i]->dist2(old_lb[i], lower_boundaries[i])) > eps || + cvm::sqrt(cv[i]->dist2(old_ub[i], upper_boundaries[i])) > eps || + cvm::fabs(old_w[i] - widths[i]) > eps) { + new_params = true; + } + } + } else { + new_params = true; + } + + // reallocate the array in case the grid params have just changed + if (new_params) { + init_from_boundaries(); + // data.clear(); // no longer needed: setup calls clear() + return this->setup(nx, T(), mult); + } + + return COLVARS_OK; +} template diff --git a/src/colvarmodule.cpp b/src/colvarmodule.cpp index 5281be29a..0d80edf38 100644 --- a/src/colvarmodule.cpp +++ b/src/colvarmodule.cpp @@ -7,13 +7,14 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. -#include +#include +#include +#include #include +#include +#include #include -#include -#include #include -#include #include "colvarmodule.h" #include "colvarparse.h" @@ -29,7 +30,7 @@ #include "colvarscript.h" #include "colvaratoms.h" #include "colvarcomp.h" - +#include "colvars_memstream.h" /// Track usage of Colvars features @@ -69,6 +70,11 @@ class colvarmodule::usage { }; +namespace { + constexpr uint32_t colvars_magic_number = 2013813594; +} + + colvarmodule::colvarmodule(colvarproxy *proxy_in) { depth_s = 0; @@ -118,6 +124,12 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in) // set initial default values + binary_restart = false; + char const *env_var = getenv("COLVARS_BINARY_RESTART"); + if (env_var && atoi(env_var)) { + binary_restart = true; + } + // "it_restart" will be set by the input state file, if any; // "it" should be updated by the proxy colvarmodule::it = colvarmodule::it_restart = 0; @@ -182,6 +194,13 @@ size_t colvarmodule::size() const } +void colvarmodule::set_initial_step(step_number it_in) +{ + cvm::log("Setting initial step number from MD engine: " + cvm::to_str(it_in) + "\n"); + it = it_restart = it_in; +} + + int colvarmodule::read_config_file(char const *config_filename) { cvm::log(cvm::line_marker); @@ -788,28 +807,26 @@ int colvarmodule::calc() // write restart files and similar data if (restart_out_freq && (cvm::step_relative() > 0) && - ((cvm::step_absolute() % restart_out_freq) == 0) ) { + ((cvm::step_absolute() % restart_out_freq) == 0)) { if (restart_out_name.size()) { // Write restart file, if different from main output error_code |= write_restart_file(restart_out_name); - } else { - error_code |= write_restart_file(output_prefix()+".colvars.state"); + } else if (output_prefix().size()) { + error_code |= write_restart_file(output_prefix() + ".colvars.state"); } - cvm::increase_depth(); - for (std::vector::iterator cvi = colvars.begin(); - cvi != colvars.end(); - cvi++) { - // TODO remove this when corrFunc becomes a bias - error_code |= (*cvi)->write_output_files(); - } - for (std::vector::iterator bi = biases.begin(); - bi != biases.end(); - bi++) { - error_code |= (*bi)->write_state_to_replicas(); + if (output_prefix().size()) { + cvm::increase_depth(); + for (std::vector::iterator cvi = colvars.begin(); cvi != colvars.end(); cvi++) { + // TODO remove this when corrFunc becomes a bias + error_code |= (*cvi)->write_output_files(); + } + for (std::vector::iterator bi = biases.begin(); bi != biases.end(); bi++) { + error_code |= (*bi)->write_state_to_replicas(); + } + cvm::decrease_depth(); } - cvm::decrease_depth(); } // Write output files for biases, at the specified frequency for each @@ -1079,9 +1096,22 @@ int colvarmodule::write_restart_file(std::string const &out_name) cvm::log("Saving collective variables state to \""+out_name+"\".\n"); std::ostream &restart_out_os = proxy->output_stream(out_name, "state file"); if (!restart_out_os) return COLVARS_FILE_ERROR; - if (!write_restart(restart_out_os)) { - return cvm::error("Error: in writing restart file.\n", COLVARS_FILE_ERROR); + + if (binary_restart) { + cvm::memory_stream mem_os; + if (!write_state(mem_os)) { + return cvm::error("Error: in writing binary state information to file.\n", COLVARS_ERROR); + } + if (!restart_out_os.write(reinterpret_cast(mem_os.output_buffer()), + mem_os.length())) { + return cvm::error("Error: in writing restart file.\n", COLVARS_FILE_ERROR); + } + } else { + if (!write_state(restart_out_os)) { + return cvm::error("Error: in writing restart file.\n", COLVARS_FILE_ERROR); + } } + proxy->close_output_stream(out_name); // Take the opportunity to flush colvars.traj @@ -1094,7 +1124,7 @@ int colvarmodule::write_restart_string(std::string &output) { cvm::log("Saving state to output buffer.\n"); std::ostringstream os; - if (!write_restart(os)) { + if (!write_state(os)) { return cvm::error("Error: in writing restart to buffer.\n", COLVARS_FILE_ERROR); } output = os.str(); @@ -1279,24 +1309,24 @@ int colvarmodule::reset() proxy->flush_output_streams(); proxy->reset(); - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + clear_error(); + + return COLVARS_OK; } int colvarmodule::setup_input() { if (proxy->input_prefix().size()) { - // Read a state file - std::string restart_in_name(proxy->input_prefix()+ - std::string(".colvars.state")); - std::istream *input_is = &(proxy->input_stream(restart_in_name, - "restart file/channel", - false)); + + // Read state from a file + + std::string restart_in_name(proxy->input_prefix() + std::string(".colvars.state")); + std::istream *input_is = &(proxy->input_stream(restart_in_name, "restart file/channel", false)); if (!*input_is) { // Try without the suffix ".colvars.state" restart_in_name = proxy->input_prefix(); - input_is = &(proxy->input_stream(restart_in_name, - "restart file/channel")); + input_is = &(proxy->input_stream(restart_in_name, "restart file/channel")); if (!*input_is) { // Error message has already been printed, return now return COLVARS_FILE_ERROR; @@ -1308,22 +1338,72 @@ int colvarmodule::setup_input() proxy->set_input_prefix(""); cvm::log(cvm::line_marker); - cvm::log("Loading state from file \""+restart_in_name+"\".\n"); - read_restart(*input_is); + + input_is->seekg(0, std::ios::end); + size_t const file_size = input_is->tellg(); + input_is->seekg(0, std::ios::beg); + + bool binary_state_file = false; + + uint32_t file_magic_number = 0; + if (file_size > sizeof(uint32_t)) { + if (input_is->read(reinterpret_cast(&file_magic_number), sizeof(uint32_t))) { + if (file_magic_number == colvars_magic_number) { + binary_state_file = true; + } + input_is->seekg(0, std::ios::beg); + } + } + + if (binary_state_file) { + cvm::log("Loading state from binary file \"" + restart_in_name + "\".\n"); + // TODO integrate istream.read() into memory_stream to avoid copying + auto *buf = new unsigned char[file_size]; + if (input_is->read(reinterpret_cast(buf), file_size)) { + cvm::memory_stream mem_is(file_size, buf); + if (!read_state(mem_is)) { + input_is->setstate(std::ios::failbit); + cvm::error("Error: cannot interpret contents of binary file \"" + restart_in_name + + "\".\n", + COLVARS_INPUT_ERROR); + } + } else { + cvm::error("Error: cannot read from binary file \"" + restart_in_name + "\".\n", + COLVARS_INPUT_ERROR); + } + delete[] buf; + } else { + cvm::log("Loading state from text file \"" + restart_in_name + "\".\n"); + read_state(*input_is); + } cvm::log(cvm::line_marker); + // Now that the explicit input file was read, we shall ignore any unformatted buffer + input_state_buffer_.clear(); + proxy->delete_input_stream(restart_in_name); } if (proxy->input_stream_exists("input state string")) { + cvm::log(cvm::line_marker); - cvm::log("Loading state from string.\n"); - read_restart(proxy->input_stream("input state string")); + cvm::log("Loading state from formatted string.\n"); + read_state(proxy->input_stream("input state string")); cvm::log(cvm::line_marker); proxy->delete_input_stream("input state string"); } + if (input_state_buffer_.size() > 0) { + cvm::log(cvm::line_marker); + cvm::log("Loading state from unformatted memory.\n"); + cvm::memory_stream ms(input_state_buffer_.size(), input_state_buffer_.data()); + read_state(ms); + cvm::log(cvm::line_marker); + + input_state_buffer_.clear(); + } + return cvm::get_error(); } @@ -1337,36 +1417,39 @@ int colvarmodule::setup_output() std::string(proxy->restart_output_prefix()+".colvars.state") : std::string(""); + std::string const state_file_format(binary_restart ? " (binary format)" : ""); + if (restart_out_name.size()) { - cvm::log("The restart output state file will be \""+ + cvm::log("The restart output state file" + state_file_format + " will be \""+ restart_out_name+"\".\n"); } - output_prefix() = proxy->output_prefix(); - if (output_prefix().size()) { - cvm::log("The final output state file will be \""+ - (output_prefix().size() ? - std::string(output_prefix()+".colvars.state") : - std::string("colvars.state"))+"\".\n"); - // cvm::log (cvm::line_marker); - } + if (output_prefix() != proxy->output_prefix()) { + output_prefix() = proxy->output_prefix(); + if (output_prefix().size()) { + cvm::log("The final output state file will be \"" + + (output_prefix().size() ? std::string(output_prefix() + ".colvars.state") + : std::string("colvars.state")) + + "\".\n"); + } - cv_traj_name = - (output_prefix().size() ? - std::string(output_prefix()+".colvars.traj") : - std::string("")); + if (proxy->output_stream_exists(cv_traj_name)) { + // Close old file + proxy->close_output_stream(cv_traj_name); + cv_traj_write_labels = true; + } - for (std::vector::iterator bi = biases.begin(); - bi != biases.end(); - bi++) { - error_code |= (*bi)->setup_output(); - } + cv_traj_name = + (output_prefix().size() ? std::string(output_prefix() + ".colvars.traj") : std::string("")); - if (error_code != COLVARS_OK || cvm::get_error()) { - set_error_bits(COLVARS_FILE_ERROR); + for (std::vector::iterator bi = biases.begin(); + bi != biases.end(); + bi++) { + error_code |= (*bi)->setup_output(); + } } - return cvm::get_error(); + return error_code; } @@ -1383,8 +1466,7 @@ std::string colvarmodule::state_file_prefix(char const *filename) } - -std::istream & colvarmodule::read_restart(std::istream &is) +template IST & colvarmodule::read_state_template_(IST &is) { bool warn_total_forces = false; @@ -1410,8 +1492,11 @@ std::istream & colvarmodule::read_restart(std::istream &is) } if (restart_version() != version()) { - cvm::log("This state file was generated with version "+ - restart_version()+"\n"); + cvm::log("This state file was generated with version " + restart_version() + "\n"); + if (std::is_same::value) { + cvm::log("Warning: compatibility between differetn Colvars versions is not " + "guaranteed for unformatted (binary) state files.\n"); + } } if (restart_version_number() < 20160810) { @@ -1446,35 +1531,73 @@ std::istream & colvarmodule::read_restart(std::istream &is) } +std::istream & colvarmodule::read_state(std::istream &is) +{ + return read_state_template_(is); +} + + +cvm::memory_stream &colvarmodule::read_state(cvm::memory_stream &is) +{ + uint32_t file_magic_number = 0; + if (!(is >> file_magic_number)) { + return is; + } + if (file_magic_number == colvars_magic_number) { + return read_state_template_(is); + } else { + is.setstate(std::ios::failbit); + cvm::error("Error: magic number of binary file (" + + cvm::to_str(static_cast(file_magic_number)) + + ") does not match the expected magic number for a Colvars state file (" + + cvm::to_str(static_cast(colvars_magic_number)) + ").\n", + COLVARS_INPUT_ERROR); + } + return is; +} + + +int colvarmodule::set_input_state_buffer(size_t n, unsigned char *buf) +{ + input_state_buffer_.clear(); + std::copy(buf, buf + n, std::back_inserter(input_state_buffer_)); + return COLVARS_OK; +} + + +int colvarmodule::set_input_state_buffer(std::vector &buf) +{ + input_state_buffer_ = std::move(buf); + return COLVARS_OK; +} + std::istream & colvarmodule::read_objects_state(std::istream &is) { - std::streampos pos = 0; + auto pos = is.tellg(); std::string word; - while (is.good()) { + while (is) { pos = is.tellg(); - word.clear(); - is >> word; - if (word.size()) { + if (is >> word) { - is.seekg(pos, std::ios::beg); + is.seekg(pos); if (word == "colvar") { cvm::increase_depth(); - for (std::vector::iterator cvi = colvars.begin(); - cvi != colvars.end(); - cvi++) { - if ( !((*cvi)->read_state(is)) ) { + for (std::vector::iterator cvi = colvars.begin(); cvi != colvars.end(); cvi++) { + if (!((*cvi)->read_state(is))) { // Here an error signals that the variable is a match, but the // state is corrupt; otherwise, the variable rewinds is silently - cvm::error("Error: in reading restart configuration for " - "collective variable \""+(*cvi)->name+"\".\n", + cvm::error("Error: in reading state for collective variable \"" + + (*cvi)->name + "\" at position " + cvm::to_str(is.tellg()) + + " in stream.\n", COLVARS_INPUT_ERROR); } - if (is.tellg() > pos) break; // found it + if (is.tellg() > pos) + break; // found it } cvm::decrease_depth(); @@ -1491,11 +1614,12 @@ std::istream & colvarmodule::read_objects_state(std::istream &is) } if (!((*bi)->read_state(is))) { // Same as above, an error means a match but the state is incorrect - cvm::error("Error: in reading restart configuration for bias \""+ - (*bi)->name+"\".\n", + cvm::error("Error: in reading state for bias \"" + (*bi)->name + "\" at position " + + cvm::to_str(is.tellg()) + " in stream.\n", COLVARS_INPUT_ERROR); } - if (is.tellg() > pos) break; // found it + if (is.tellg() > pos) + break; // found it } cvm::decrease_depth(); } @@ -1514,6 +1638,25 @@ std::istream & colvarmodule::read_objects_state(std::istream &is) } +cvm::memory_stream &colvarmodule::read_objects_state(cvm::memory_stream &is) +{ + // An unformatted stream must match the objects' exact configuration + cvm::increase_depth(); + for (std::vector::iterator cvi = colvars.begin(); cvi != colvars.end(); cvi++) { + if (!(*cvi)->read_state(is)) { + return is; + } + } + for (std::vector::iterator bi = biases.begin(); bi != biases.end(); bi++) { + if (!(*bi)->read_state(is)) { + return is; + } + } + cvm::decrease_depth(); + return is; +} + + int colvarmodule::print_total_forces_errning(bool warn_total_forces) { if (warn_total_forces) { @@ -1636,18 +1779,24 @@ int colvarmodule::read_traj(char const *traj_filename, } -std::ostream & colvarmodule::write_restart(std::ostream &os) +template OST &colvarmodule::write_state_template_(OST &os) { - os.setf(std::ios::scientific, std::ios::floatfield); - os << "configuration {\n" - << " step " << std::setw(it_width) - << it << "\n" - << " dt " << dt() << "\n" - << " version " << std::string(COLVARS_VERSION) << "\n"; + bool const formatted = !std::is_same::value; + + std::ostringstream oss; + oss.setf(std::ios::scientific, std::ios::floatfield); + oss << " step " << std::setw(it_width) + << it << "\n" + << " dt " << dt() << "\n" + << " version " << std::string(COLVARS_VERSION) << "\n"; if (proxy->units.size() > 0) { - os << " units " << proxy->units << "\n"; + oss << " units " << proxy->units << "\n"; } - os << "}\n\n"; + + os << std::string("configuration"); + if (formatted) os << " {\n"; + os << oss.str(); + if (formatted) os << "}\n\n"; int error_code = COLVARS_OK; @@ -1674,7 +1823,32 @@ std::ostream & colvarmodule::write_restart(std::ostream &os) } -std::ostream & colvarmodule::write_traj_label(std::ostream &os) +std::ostream &colvarmodule::write_state(std::ostream &os) +{ + return write_state_template_(os); +} + + +cvm::memory_stream &colvarmodule::write_state(cvm::memory_stream &os) +{ + if (os << colvars_magic_number) { + write_state_template_(os); + } + return os; +} + + +int colvarmodule::write_state_buffer(std::vector &buffer) +{ + cvm::memory_stream os(buffer); + if (os << colvars_magic_number) { + write_state_template_(os); + } + return os ? COLVARS_OK : COLVARS_ERROR; +} + + +std::ostream &colvarmodule::write_traj_label(std::ostream &os) { os.setf(std::ios::scientific, std::ios::floatfield); @@ -1803,7 +1977,7 @@ void colvarmodule::clear_error() int colvarmodule::error(std::string const &message, int code) { - set_error_bits(code); + set_error_bits(code >= 0 ? code : COLVARS_ERROR); std::string const trailing_newline = (message.size() > 0) ? (message[message.size()-1] == '\n' ? "" : "\n") : ""; diff --git a/src/colvarmodule.h b/src/colvarmodule.h index 236d432a9..32f8c6c7e 100644 --- a/src/colvarmodule.h +++ b/src/colvarmodule.h @@ -33,16 +33,6 @@ You can browse the class hierarchy or the list of source files. /// shared between all object instances) to be accessed from other /// objects. -#define COLVARS_OK 0 -#define COLVARS_ERROR 1 -#define COLVARS_NOT_IMPLEMENTED (1<<1) -#define COLVARS_INPUT_ERROR (1<<2) // out of bounds or inconsistent input -#define COLVARS_BUG_ERROR (1<<3) // Inconsistent state indicating bug -#define COLVARS_FILE_ERROR (1<<4) -#define COLVARS_MEMORY_ERROR (1<<5) -#define COLVARS_NO_SUCH_FRAME (1<<6) // Cannot load the requested frame - -#include #include #include #include @@ -190,7 +180,9 @@ class colvarmodule { template class matrix2d; class quaternion; class rotation; + class usage; + class memory_stream; /// Residue identifier typedef int residue_id; @@ -247,6 +239,8 @@ class colvarmodule { return it; } + bool binary_restart; + /// \brief Finite difference step size (if there is no dynamics, or /// if gradients need to be tested independently from the size of /// dt) @@ -345,6 +339,9 @@ class colvarmodule { /// Destructor ~colvarmodule(); + /// Set the initial step number (it is 0 otherwise); may be overridden when reading a state + void set_initial_step(step_number it); + /// Actual function called by the destructor int reset(); @@ -449,17 +446,49 @@ class colvarmodule { /// (Re)initialize the output trajectory and state file (does not write it yet) int setup_output(); - /// Read a restart file - std::istream & read_restart(std::istream &is); +private: + + template IST & read_state_template_(IST &is); + + /// Internal state buffer, to be read as an unformatted stream + std::vector input_state_buffer_; + +public: + + /// Read all objects' state fron a formatted (text) stream + std::istream & read_state(std::istream &is); + + /// Read all objects' state fron an unformatted (binary) stream + memory_stream & read_state(memory_stream &is); + + /// Set an internal state buffer, to be read later as an unformatted stream when ready + int set_input_state_buffer(size_t n, unsigned char *buf); + + /// Same as set_input_state_buffer() for C array, but uses std::move + int set_input_state_buffer(std::vector &buf); /// Read the states of individual objects; allows for changes std::istream & read_objects_state(std::istream &is); + /// Read the states of individual objects; allows for changes + memory_stream & read_objects_state(memory_stream &is); + /// If needed (old restart file), print the warning that cannot be ignored int print_total_forces_errning(bool warn_total_forces); - /// Write the output restart file - std::ostream & write_restart(std::ostream &os); +private: + template OST &write_state_template_(OST &os); + +public: + + /// Write the state of the module to a formatted (text) file + std::ostream & write_state(std::ostream &os); + + /// Write the state of the module to an unformatted (binary) file + memory_stream & write_state(memory_stream &os); + + /// Write the state of the module to an array of bytes (wrapped as a memory_stream object) + int write_state_buffer(std::vector &buffer); /// Strips .colvars.state from filename and checks that it is not empty static std::string state_file_prefix(char const *filename); @@ -650,7 +679,7 @@ class colvarmodule { static void log(std::string const &message, int min_log_level = 10); /// Print a message to the main log and set global error code - static int error(std::string const &message, int code = COLVARS_ERROR); + static int error(std::string const &message, int code = -1); private: @@ -755,7 +784,7 @@ class colvarmodule { std::string restart_out_name; /// Pseudo-random number with Gaussian distribution - static real rand_gaussian(void); + static real rand_gaussian(); protected: @@ -838,9 +867,20 @@ class colvarmodule { typedef colvarmodule cvm; - std::ostream & operator << (std::ostream &os, cvm::rvector const &v); std::istream & operator >> (std::istream &is, cvm::rvector &v); +namespace { + constexpr int32_t COLVARS_OK = 0; + constexpr int32_t COLVARS_ERROR = 1; + constexpr int32_t COLVARS_NOT_IMPLEMENTED = (1<<1); + constexpr int32_t COLVARS_INPUT_ERROR = (1<<2); // out of bounds or inconsistent input + constexpr int32_t COLVARS_BUG_ERROR = (1<<3); // Inconsistent state indicating bug + constexpr int32_t COLVARS_FILE_ERROR = (1<<4); + constexpr int32_t COLVARS_MEMORY_ERROR = (1<<5); + constexpr int32_t COLVARS_NO_SUCH_FRAME = (1<<6); // Cannot load the requested frame +} + + #endif diff --git a/src/colvarmodule_refs.h b/src/colvarmodule_refs.h index b62310950..74aad5144 100644 --- a/src/colvarmodule_refs.h +++ b/src/colvarmodule_refs.h @@ -14,6 +14,22 @@ " url = {https://doi.org/10.1016/j.softx.2015.06.001}\n" "}\n"; + paper_count_[std::string("BouRabee2010")] = 0; + paper_url_[std::string("BouRabee2010")] = "https://doi.org/10.1137/090758842"; + paper_bibtex_[std::string("BouRabee2010")] = + "\n" + "@article{BouRabee2010,\n" + " doi = {10.1137/090758842},\n" + " url = {https://doi.org/10.1137/090758842},\n" + " year = {2010},\n" + " volume = {48},\n" + " number = {1},\n" + " pages = {278--297},\n" + " author = {Nawaf Bou-Rabee and Houman Owhadi},\n" + " title = {Long-Run Accuracy of Variational Integrators in the Stochastic Context},\n" + " journal = {{SIAM} Journal on Numerical Analysis}\n" + "}\n"; + paper_count_[std::string("Chen2021")] = 0; paper_url_[std::string("Chen2021")] = "https://doi.org/10.1021/acs.jctc.1c00103"; paper_bibtex_[std::string("Chen2021")] = @@ -182,6 +198,19 @@ " url = {https://doi.org/10.1021/ct9004432}\n" "}\n"; + paper_count_[std::string("Henin2021")] = 0; + paper_url_[std::string("Henin2021")] = "https://doi.org/10.1021/acs.jctc.1c00593"; + paper_bibtex_[std::string("Henin2021")] = + "\n" + "@Article{Henin2021,\n" + " author = {H\\'enin, J.},\n" + " journal = {J. Chem. Theory Comput.},\n" + " title = {Fast and accurate multidimensional free energy integration},\n" + " year = {2021},\n" + " doi = {10.1021/acs.jctc.1c00593},\n" + " url = {https://doi.org/10.1021/acs.jctc.1c00593},\n" + "}\n"; + paper_count_[std::string("Humphrey1996")] = 0; paper_url_[std::string("Humphrey1996")] = "https://doi.org/10.1016/0263-7855(96)00018-5"; paper_bibtex_[std::string("Humphrey1996")] = @@ -215,19 +244,6 @@ " url = {https://doi.org/10.1021/acs.jpcb.6b10055}\n" "}\n"; - paper_count_[std::string("Henin2021")] = 0; - paper_url_[std::string("Henin2021")] = "https://doi.org/10.1021/acs.jctc.1c00593"; - paper_bibtex_[std::string("Henin2021")] = - "\n" - "@Article{Henin2021,\n" - " author = {H\\'enin, J.},\n" - " journal = {J. Chem. Theory Comput.},\n" - " title = {Fast and accurate multidimensional free energy integration},\n" - " year = {2021},\n" - " doi = {10.1021/acs.jctc.1c00593},\n" - " url = {https://doi.org/10.1021/acs.jctc.1c00593},\n" - "}\n"; - paper_count_[std::string("Marinelli2015")] = 0; paper_url_[std::string("Marinelli2015")] = "https://doi.org/10.1016/j.bpj.2015.05.024"; paper_bibtex_[std::string("Marinelli2015")] = @@ -335,6 +351,9 @@ feature_count_[std::string("GROMACS engine")] = 0; feature_paper_map_[std::string("GROMACS engine")] = "Abraham2015"; + feature_count_[std::string("BAOA integrator")] = 0; + feature_paper_map_[std::string("BAOA integrator")] = "BouRabee2010"; + feature_count_[std::string("reweightaMD colvar bias implementation (NAMD)")] = 0; feature_paper_map_[std::string("reweightaMD colvar bias implementation (NAMD)")] = "Chen2021"; @@ -500,6 +519,9 @@ feature_count_[std::string("Internal-forces free energy estimator")] = 0; feature_paper_map_[std::string("Internal-forces free energy estimator")] = "Henin2010"; + feature_count_[std::string("Poisson integration of 2D/3D free energy surfaces")] = 0; + feature_paper_map_[std::string("Poisson integration of 2D/3D free energy surfaces")] = "Henin2021"; + feature_count_[std::string("VMD engine")] = 0; feature_paper_map_[std::string("VMD engine")] = "Humphrey1996"; @@ -509,9 +531,6 @@ feature_count_[std::string("CZAR eABF estimator")] = 0; feature_paper_map_[std::string("CZAR eABF estimator")] = "Lesage2017"; - feature_count_[std::string("Poisson integration of 2D/3D free energy surfaces")] = 0; - feature_paper_map_[std::string("Poisson integration of 2D/3D free energy surfaces")] = "Henin2021"; - feature_count_[std::string("Ensemble-biased metadynamics (ebMetaD)")] = 0; feature_paper_map_[std::string("Ensemble-biased metadynamics (ebMetaD)")] = "Marinelli2015"; @@ -539,9 +558,6 @@ feature_count_[std::string("Colvars-GROMACS interface")] = 0; feature_paper_map_[std::string("Colvars-GROMACS interface")] = "n/a"; - feature_count_[std::string("Colvars Dashboard (Colvars-VMD graphical user interface)")] = 0; - feature_paper_map_[std::string("Colvars Dashboard (Colvars-VMD graphical user interface)")] = "n/a"; - feature_count_[std::string("gspath colvar component")] = 0; feature_paper_map_[std::string("gspath colvar component")] = "n/a"; diff --git a/src/colvarparse.cpp b/src/colvarparse.cpp index 4146300c1..c189a9e89 100644 --- a/src/colvarparse.cpp +++ b/src/colvarparse.cpp @@ -14,6 +14,7 @@ #include "colvarmodule.h" #include "colvarvalue.h" #include "colvarparse.h" +#include "colvars_memstream.h" // space & tab @@ -866,55 +867,107 @@ colvarparse::read_block::~read_block() std::istream & operator>> (std::istream &is, colvarparse::read_block const &rb) { - std::streampos start_pos = is.tellg(); - std::string read_key, next; + auto start_pos = is.tellg(); - if ( !(is >> read_key) || !(read_key == rb.key) || - !(is >> next) ) { - // the requested keyword has not been found, or it is not possible - // to read data after it + std::string read_key; + if ( !(is >> read_key) || !(read_key == rb.key) ) { + // the requested keyword has not been found is.clear(); - is.seekg(start_pos, std::ios::beg); + is.seekg(start_pos); is.setstate(std::ios::failbit); return is; } - if (next != "{") { - if (rb.data) { - *(rb.data) = next; + std::string next; + if (is >> next) { + if (next == "{") { + // Parse a formatted brace-delimited block + rb.read_block_contents(is); + } else { + if (rb.data) { + *(rb.data) = next; + } } - return is; + } else { + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::badbit); } - size_t brace_count = 1; + return is; +} + + +std::istream &colvarparse::read_block::read_block_contents(std::istream &is, + bool block_only) const +{ + int brace_count = block_only ? 0 : 1; + auto const start_pos = is.tellg(); std::string line; while (colvarparse::getline_nocomments(is, line)) { size_t br = 0, br_old = 0; - while ( (br = line.find_first_of("{}", br)) != std::string::npos) { - if (line[br] == '{') brace_count++; - if (line[br] == '}') brace_count--; + while ((br = line.find_first_of("{}", br)) != std::string::npos) { + if (line[br] == '{') + brace_count++; + if (line[br] == '}') + brace_count--; br_old = br; br++; } - if (brace_count) { - if (rb.data) { - (rb.data)->append(line + "\n"); + if (brace_count || block_only) { + // Add whole line if (1) brace are unmatched or (2) we're reading the whole stream anyway + if (data) { + data->append(line + "\n"); } - } - else { - if (rb.data) { - (rb.data)->append(line, 0, br_old); + } else { + // Not reading whole block and braces are matched; add until before the last brace + if (data) { + data->append(line.substr(0, br_old) + "\n"); } break; } } - if (brace_count) { - // end-of-file reached - // restore initial position + + if (block_only) { + if (is.rdstate() & std::ios::eofbit) { + // Clear EOF errors if we were meant to read the whole block + is.clear(); + } + } else { + if (brace_count) { + // Could not match braces, restore initial position and set fail bit + is.clear(); + is.seekg(start_pos); + is.setstate(std::ios::failbit); + } + } + + return is; +} + + +cvm::memory_stream &operator>>(cvm::memory_stream &is, colvarparse::read_block const &rb) +{ + auto const start_pos = is.tellg(); + + std::string read_key; + if ( !(is >> read_key) || !(read_key == rb.key) ) { + // the requested keyword has not been found is.clear(); - is.seekg(start_pos, std::ios::beg); + is.seekg(start_pos); is.setstate(std::ios::failbit); + return is; } + + std::string content; + if (is >> content) { + std::istringstream iss(content); + if (!rb.read_block_contents(iss, true)) { + is.seekg(start_pos); + is.setstate(std::ios::failbit); + } + } + return is; } diff --git a/src/colvarparse.h b/src/colvarparse.h index 447651609..0ac9c1117 100644 --- a/src/colvarparse.h +++ b/src/colvarparse.h @@ -40,7 +40,7 @@ class colvarparse : public colvarparams { void set_string(std::string const &conf); /// Default destructor - virtual ~colvarparse() override; + ~colvarparse() override; /// Get the configuration string (includes comments) inline std::string const & get_config() const @@ -267,28 +267,36 @@ class colvarparse : public colvarparams { return out; } - /// \brief Helper class to read a block of the type "key { ... }" - /// from a stream and store it in a string + /// Helper class to read a block "key { ... }" from a stream and store it in a string /// - /// Useful on restarts, where the file is too big to be loaded in a - /// string by key_lookup; it can only check that the keyword is - /// correct and the block is properly delimited by braces, not - /// skipping other blocks + /// Useful on restarts, where the file is too big to be loaded in a string + /// by key_lookup(); it can only check that the keyword is correct and the + /// block is properly delimited by braces, not skipping other blocks class read_block { - - /// The keyword that identifies the block - std::string const key; - - /// Where to keep the data (may be NULL) - std::string * const data; - public: - read_block(std::string const &key_in, std::string *data_in = nullptr); + read_block(std::string const &key, std::string *data = nullptr); ~read_block(); + /// Read block from stream, first check that key matches, then call read_contents() friend std::istream & operator >> (std::istream &is, read_block const &rb); + + /// Read block from stream, first check that key matches, then call read_contents() + friend cvm::memory_stream & operator >> (cvm::memory_stream &is, read_block const &rb); + + private: + + /// Keyword that identifies the block + std::string const key; + + /// Where to keep the data + std::string * const data; + + /// Read the contents of a formatted block after checking that the keyword matches + /// \param[in] is Stream object + /// \param[in] block_only If true, stream is assumed to contain only the block without braces + std::istream & read_block_contents(std::istream &is, bool block_only = false) const; }; diff --git a/src/colvarproxy.h b/src/colvarproxy.h index f1bc947c0..b0bb33591 100644 --- a/src/colvarproxy.h +++ b/src/colvarproxy.h @@ -72,30 +72,26 @@ class colvarproxy_atoms { /// (costly) set the corresponding atoms_refcount to zero virtual void clear_atom(int index); - /// \brief Select atom IDs from a file (usually PDB) \param filename name of - /// the file \param atoms array to which atoms read from "filename" will be - /// appended \param pdb_field (optional) if the file is a PDB and this - /// string is non-empty, select atoms for which this field is non-zero - /// \param pdb_field_value (optional) if non-zero, select only atoms whose - /// pdb_field equals this - virtual int load_atoms(char const *filename, - cvm::atom_group &atoms, - std::string const &pdb_field, - double pdb_field_value = 0.0); - - /// \brief Load a set of coordinates from a file (usually PDB); if "pos" is - /// already allocated, the number of its elements must match the number of - /// entries in "filename" \param filename name of the file \param pos array - /// of coordinates \param sorted_ids array of sorted internal IDs, used to - /// loop through the file only once \param pdb_field (optional) if the file - /// is a PDB and this string is non-empty, select atoms for which this field - /// is non-zero \param pdb_field_value (optional) if non-zero, select only - /// atoms whose pdb_field equals this - virtual int load_coords(char const *filename, - std::vector &pos, - std::vector const &sorted_ids, - std::string const &pdb_field, - double pdb_field_value = 0.0); + /// \brief Read a selection of atom IDs from a coordinate file (only PDB is supported) + /// \param[in] filename name of the file + /// \param[in,out] atoms array into which atoms will be read from "filename" + /// \param[in] pdb_field if the file is a PDB and this string is non-empty, + /// select atoms for which this field is non-zero + /// \param[in] pdb_field_value if non-zero, select only atoms whose pdb_field equals this + virtual int load_atoms(char const *filename, cvm::atom_group &atoms, std::string const &pdb_field, + double pdb_field_value); + + /// \brief Load a set of coordinates from a file (PDB or XYZ) + /// \param[in] filename name of the file + /// \param[in,out] pos array of coordinates; if not empty, the number of its elements must match + /// the number of entries in "filename" + /// \param[in] sorted_ids array of sorted internal IDs, used to loop through the file only once + /// \param[in] pdb_field if the file is a PDB and this string is non-empty, only atoms for which + /// this field is non-zero will be processed + /// \param[in] pdb_field_value if non-zero, process only atoms whose pdb_field equals this + virtual int load_coords(char const *filename, std::vector &pos, + std::vector const &sorted_ids, std::string const &pdb_field, + double pdb_field_value); /// Clear atomic data int reset(); @@ -604,15 +600,15 @@ class colvarproxy colvarproxy(); /// Destructor - virtual ~colvarproxy() override; + ~colvarproxy() override; - virtual bool io_available() override; + bool io_available() override; /// Request deallocation of the module (currently only implemented by VMD) virtual int request_deletion(); /// Whether deallocation was requested - inline bool delete_requested() + inline bool delete_requested() const { return b_delete_requested; } diff --git a/src/colvarproxy_io.cpp b/src/colvarproxy_io.cpp index 7e7cd3829..df424c95e 100644 --- a/src/colvarproxy_io.cpp +++ b/src/colvarproxy_io.cpp @@ -29,7 +29,6 @@ colvarproxy_io::colvarproxy_io() { - input_buffer_ = NULL; restart_frequency_engine = 0; input_stream_error_ = new std::istringstream(); input_stream_error_->setstate(std::ios::badbit); @@ -358,7 +357,7 @@ std::ostream & colvarproxy_io::output_stream(std::string const &output_name, backup_file(output_name.c_str()); - output_streams_[output_name] = new std::ofstream(output_name.c_str()); + output_streams_[output_name] = new std::ofstream(output_name.c_str(), std::ios::binary); if (!*(output_streams_[output_name])) { cvm::error("Error: cannot write to "+description+" \""+output_name+"\".\n", COLVARS_FILE_ERROR); diff --git a/src/colvarproxy_io.h b/src/colvarproxy_io.h index 1af3090ac..68f8482bc 100644 --- a/src/colvarproxy_io.h +++ b/src/colvarproxy_io.h @@ -139,7 +139,7 @@ class colvarproxy_io { /// \param output_name File name or identifier /// \param description Purpose of the file virtual std::ostream &output_stream(std::string const &output_name, - std::string const description = "file/channel"); + std::string const description); /// Check if the file/channel is open (without opening it if not) virtual bool output_stream_exists(std::string const &output_name); @@ -181,9 +181,6 @@ class colvarproxy_io { /// Object whose reference is returned when write errors occur std::ostream *output_stream_error_; - - /// Buffer from which the input state information may be read - char const *input_buffer_; }; diff --git a/src/colvars_memstream.cpp b/src/colvars_memstream.cpp new file mode 100644 index 000000000..13cb8fb34 --- /dev/null +++ b/src/colvars_memstream.cpp @@ -0,0 +1,102 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + + +#include "colvarmodule.h" +#include "colvartypes.h" +#include "colvarvalue.h" +#include "colvars_memstream.h" + + +bool cvm::memory_stream::expand_output_buffer(size_t add_bytes) +{ + auto &buffer = external_output_buffer_ ? *external_output_buffer_ : internal_buffer_; + if ((buffer.size() + add_bytes) <= max_length_) { + buffer.resize((buffer.size() + add_bytes)); + } else { + setstate(std::ios::badbit); + } + return bool(*this); +} + + +template <> void cvm::memory_stream::write_object(std::string const &t) +{ + size_t const string_length = t.size(); + size_t const new_data_size = sizeof(size_t) + sizeof(char) * string_length; + if (expand_output_buffer(new_data_size)) { + std::memcpy(output_location(), &string_length, sizeof(size_t)); + incr_write_pos(sizeof(size_t)); + std::memcpy(output_location(), t.c_str(), t.size() * sizeof(char)); + incr_write_pos(t.size() * sizeof(char)); + } +} + +template <> cvm::memory_stream &operator<<(cvm::memory_stream &os, std::string const &t) +{ + os.write_object(t); + return os; +} + +template <> void cvm::memory_stream::write_object(colvarvalue const &t) +{ + *this << t; +} + +template <> void cvm::memory_stream::write_object(cvm::vector1d const &t) +{ + return write_vector(t.data_array()); +} + +template <> +cvm::memory_stream &operator<<(cvm::memory_stream &os, cvm::vector1d const &t) +{ + os.write_vector(t.data_array()); + return os; +} + + +template <> void cvm::memory_stream::read_object(std::string &t) +{ + begin_reading(); + size_t string_length = 0; + if (has_remaining(sizeof(size_t))) { + std::memcpy(&string_length, input_location(), sizeof(size_t)); + incr_read_pos(sizeof(size_t)); + if (has_remaining(string_length * sizeof(char))) { + t.assign(reinterpret_cast(input_location()), string_length); + incr_read_pos(string_length * sizeof(char)); + done_reading(); + } else { + setstate(std::ios::failbit); + } + } +} + +template <> cvm::memory_stream &operator>>(cvm::memory_stream &is, std::string &t) +{ + is.read_object(t); + return is; +} + +template <> void cvm::memory_stream::read_object(colvarvalue &t) +{ + *this >> t; +} + +template <> void cvm::memory_stream::read_object(cvm::vector1d &t) +{ + return read_vector(t.data_array()); +} + +template <> cvm::memory_stream &operator>>(cvm::memory_stream &is, cvm::vector1d &t) +{ + is.read_vector(t.data_array()); + return is; +} diff --git a/src/colvars_memstream.h b/src/colvars_memstream.h new file mode 100644 index 000000000..0d80d2794 --- /dev/null +++ b/src/colvars_memstream.h @@ -0,0 +1,289 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +#ifndef MEMORY_STREAM_H +#define MEMORY_STREAM_H + +#include +#include +#include +#include +#include + + +// Work around missing std::is_trivially_copyable in old GCC and Clang versions +// TODO remove this after CentOS 7 has been beyond EOL for a while +#if (defined(__GNUC__) && (__GNUC__ < 5) && !defined(__clang__)) || (defined(__clang__) && (__clang_major__ < 7)) +// Clang needs an exception, because it defines __GNUC__ as well +#define IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T) +#else +#define IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable::value +#endif + + +class cvm::memory_stream { + +public: + + /// Set up an empty stream with an internal buffer, suitable for writing to + /// \param max_length Maximum allowed capacity (default is 64 GiB) + memory_stream(size_t max_length = (static_cast(1L) << 36)) : max_length_(max_length) {} + + /// Set up a stream based on an external input buffer + memory_stream(size_t n, unsigned char const *buf) + : external_input_buffer_(buf), internal_buffer_(), data_length_(n), max_length_(data_length_) + { + } + + /// Set up a stream based on an external output buffer + memory_stream(std::vector &buf) : memory_stream() + { + external_output_buffer_ = &buf; + } + + /// Length of the buffer + inline size_t length() const { return data_length_; } + + /// Output buffer + inline unsigned char *output_buffer() + { + return (external_output_buffer_ ? external_output_buffer_->data() : internal_buffer_.data()); + } + + /// Next location to write to + inline unsigned char *output_location() { return output_buffer() + data_length_; } + + /// Input buffer + inline unsigned char const *input_buffer() const + { + return (external_input_buffer_ ? external_input_buffer_ : internal_buffer_.data()); + } + + /// Next location to read from + inline unsigned char const *input_location() const { return input_buffer() + read_pos_; } + + /// Cast operator to be used to test for errors + inline explicit operator bool() const { return state_ == std::ios::goodbit; } + + /// Write a simple object to the output buffer + template void write_object(T const &t); + + /// Wrapper to write_object() + template friend memory_stream &operator<<(memory_stream &os, T const &t); + + /// Write a vector of simple objects to the output buffer + template void write_vector(std::vector const &t); + + /// Wrapper to write_vector() + template + friend memory_stream &operator<<(memory_stream &os, std::vector const &t); + + /// Read a simple object from the buffer + template void read_object(T &t); + + /// Wrapper to read_object() + template friend memory_stream &operator>>(memory_stream &is, T &t); + + /// Read a vector of simple objects from the buffer + template void read_vector(std::vector &t); + + /// Wrapper to read_vector() + template friend memory_stream &operator>>(memory_stream &is, std::vector &t); + + + // Compatibility with STL stream functions + + /// Report the current position in the buffer + inline size_t tellg() const { return read_pos_; } + + /// Report the current position in the buffer + inline memory_stream & seekg(size_t pos) { read_pos_ = pos; return *this; } + + /// Ignore formatting operators + inline void setf(decltype(std::ios::fmtflags(0)), decltype(std::ios::floatfield)) {} + + /// Ignore formatting operators + inline void flags(decltype(std::ios::fmtflags(0))) {} + + /// Get the current formatting flags (i.e. none because this stream is unformatted) + inline decltype(std::ios::fmtflags(0)) flags() const { return std::ios::fmtflags(0); } + + /// Get the error code + inline std::ios::iostate rdstate() const { return state_; } + + /// Set the error code + inline void setstate(std::ios::iostate new_state) { state_ |= new_state; } + + /// Clear the error code + inline void clear() { state_ = std::ios::goodbit; } + +protected: + + /// External output buffer + std::vector *external_output_buffer_ = nullptr; + + /// External input buffer + unsigned char const *external_input_buffer_ = nullptr; + + /// Internal buffer (may server for both input and output) + std::vector internal_buffer_; + + /// Length of the data buffer (either internal or external) + size_t data_length_ = 0L; + + /// Largest allowed capacity of the data buffer + size_t const max_length_; + + /// Error status + std::ios::iostate state_ = std::ios::goodbit; + + /// Add the requester number of bytes to the array capacity; return false if buffer is external + bool expand_output_buffer(size_t add_bytes); + + /// Move the buffer position past the data just written + inline void incr_write_pos(size_t c) { data_length_ += c; } + + /// Current position when reading from the buffer + size_t read_pos_ = 0L; + + /// Begin an attempt to read an object; assume EOF unless there is space remaining + inline void begin_reading() { setstate(std::ios::eofbit); } + + /// Mark the reading attempt succesful + inline void done_reading() { clear(); } + + /// Move the buffer position past the data just read + inline void incr_read_pos(size_t c) { read_pos_ += c; } + + /// Check that the buffer contains enough bytes to read as the argument says, set error + /// otherwise + inline bool has_remaining(size_t c) { return c <= (data_length_ - read_pos_); } + }; + +template void cvm::memory_stream::write_object(T const &t) +{ + static_assert(IS_TRIVIALLY_COPYABLE(T), "Cannot use write_object() on complex type"); + size_t const new_data_size = sizeof(T); + if (expand_output_buffer(new_data_size)) { + std::memcpy(output_location(), &t, sizeof(T)); + incr_write_pos(new_data_size); + } +} + +template cvm::memory_stream &operator<<(cvm::memory_stream &os, T const &t) +{ + os.write_object(t); + return os; +} + +template void cvm::memory_stream::write_vector(std::vector const &t) +{ + static_assert(IS_TRIVIALLY_COPYABLE(T), "Cannot use write_vector() on complex type"); + size_t const vector_length = t.size(); + size_t const new_data_size = sizeof(size_t) + sizeof(T) * vector_length; + if (expand_output_buffer(new_data_size)) { + std::memcpy(output_location(), &vector_length, sizeof(size_t)); + incr_write_pos(sizeof(T)); + std::memcpy(output_location(), t.data(), t.size() * sizeof(T)); + incr_write_pos(t.size() * sizeof(T)); + } +} + +template +cvm::memory_stream &operator<<(cvm::memory_stream &os, std::vector const &t) +{ + os.write_vector(t); + return os; +} + +template void cvm::memory_stream::read_object(T &t) +{ + static_assert(IS_TRIVIALLY_COPYABLE(T), "Cannot use read_object() on complex type"); + begin_reading(); + if (has_remaining(sizeof(T))) { + std::memcpy(&t, input_location(), sizeof(T)); + incr_read_pos(sizeof(T)); + done_reading(); + } +} + +template cvm::memory_stream &operator>>(cvm::memory_stream &is, T &t) +{ + is.read_object(t); + return is; +} + +template void cvm::memory_stream::read_vector(std::vector &t) +{ + static_assert(IS_TRIVIALLY_COPYABLE(T), "Cannot use read_vector() on complex type"); + begin_reading(); + size_t vector_length = 0; + if (has_remaining(sizeof(size_t))) { + std::memcpy(&vector_length, input_location(), sizeof(size_t)); + incr_read_pos(sizeof(size_t)); + if (has_remaining(vector_length * sizeof(T))) { + t.resize(vector_length); + std::memcpy(t.data(), input_location(), vector_length * sizeof(T)); + incr_read_pos(vector_length * sizeof(T)); + done_reading(); + } else { + setstate(std::ios::failbit); + } + } +} + +template cvm::memory_stream &operator>>(cvm::memory_stream &is, std::vector &t) +{ + is.read_vector(t); + return is; +} + +template cvm::memory_stream &operator<<(cvm::memory_stream &os, + decltype(std::setprecision(10)) const &) +{ + return os; +} + +#if !defined(_MSC_VER) && !defined(__SUNPRO_CC) +// Visual Studio and MSVC use the same return type for both modifiers +template cvm::memory_stream &operator<<(cvm::memory_stream &os, + decltype(std::setw(10)) const &) +{ + return os; +} +#endif + +// Declare specializations + +template <> void cvm::memory_stream::write_object(std::string const &t); + +template <> cvm::memory_stream &operator<<(cvm::memory_stream &os, std::string const &t); + +template <> void cvm::memory_stream::write_object(colvarvalue const &t); + +template <> cvm::memory_stream &operator<<(cvm::memory_stream &os, colvarvalue const &x); + +template <> void cvm::memory_stream::write_object(cvm::vector1d const &t); + +template <> +cvm::memory_stream &operator<<(cvm::memory_stream &os, cvm::vector1d const &t); + +template <> void cvm::memory_stream::read_object(std::string &t); + +template <> cvm::memory_stream &operator>>(cvm::memory_stream &is, std::string &t); + +template <> void cvm::memory_stream::read_object(colvarvalue &t); + +template <> cvm::memory_stream &operator>>(cvm::memory_stream &is, colvarvalue &t); + +template <> void cvm::memory_stream::read_object(cvm::vector1d &t); + +template <> cvm::memory_stream &operator>>(cvm::memory_stream &is, cvm::vector1d &t); + +#endif diff --git a/src/colvars_version.h b/src/colvars_version.h index 7d6b181ee..7b21f44a7 100644 --- a/src/colvars_version.h +++ b/src/colvars_version.h @@ -1,3 +1,3 @@ #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2023-09-07" +#define COLVARS_VERSION "2023-10-03" #endif diff --git a/src/colvartypes.cpp b/src/colvartypes.cpp index 5a13e2323..b75bef8ea 100644 --- a/src/colvartypes.cpp +++ b/src/colvartypes.cpp @@ -340,26 +340,24 @@ void colvarmodule::rotation::compute_overlap_matrix() #ifndef COLVARS_LAMMPS namespace NR { -void diagonalize_matrix(cvm::matrix2d &m, - cvm::vector1d &eigval, - cvm::matrix2d &eigvec) +void diagonalize_matrix(cvm::real m[4][4], + cvm::real eigval[4], + cvm::real eigvec[4][4]) { - eigval.resize(4); - eigval.reset(); - eigvec.resize(4, 4); - eigvec.reset(); + std::memset(eigval, 0, sizeof(cvm::real) * 4); + std::memset(eigvec, 0, sizeof(cvm::real) * 4 * 4); // diagonalize int jac_nrot = 0; - if (NR_Jacobi::jacobi(m.c_array(), eigval.c_array(), eigvec.c_array(), &jac_nrot) != + if (NR_Jacobi::jacobi(m, eigval, eigvec, &jac_nrot) != COLVARS_OK) { cvm::error("Too many iterations in jacobi diagonalization.\n" "This is usually the result of an ill-defined set of atoms for " "rotational alignment (RMSD, rotateReference, etc).\n"); } - NR_Jacobi::eigsrt(eigval.c_array(), eigvec.c_array()); + NR_Jacobi::eigsrt(eigval, eigvec); // jacobi saves eigenvectors by columns - NR_Jacobi::transpose(eigvec.c_array()); + NR_Jacobi::transpose(eigvec); // normalize eigenvectors for (size_t ie = 0; ie < 4; ie++) { @@ -410,27 +408,29 @@ void colvarmodule::rotation::calc_optimal_rotation( // Seok C, Dill KA. Using quaternions to calculate RMSD. J Comput // Chem. 25(15):1849-57 (2004) DOI: 10.1002/jcc.20110 PubMed: 15376254 void colvarmodule::rotation::calc_optimal_rotation_impl() { - S.resize(4, 4); - S.reset(); compute_overlap_matrix(); - S_backup.resize(4, 4); - S_backup = S; + // S_backup = S; + std::memcpy(&S_backup[0][0], &S, 4*4*sizeof(cvm::real)); if (b_debug_gradients) { - cvm::log("S = "+cvm::to_str(S_backup, cvm::cv_width, cvm::cv_prec)+"\n"); + cvm::matrix2d S_backup_out(4, 4); + for (size_t i = 0; i < 4; ++i) { + for (size_t j = 0; j < 4; ++j) { + S_backup_out[i][j] = S_backup[i][j]; + } + } + cvm::log("S = "+cvm::to_str(S_backup_out, cvm::cv_width, cvm::cv_prec)+"\n"); } - S_eigval.resize(4); - S_eigvec.resize(4, 4); #ifdef COLVARS_LAMMPS MathEigen::Jacobi &, - cvm::matrix2d &> *ecalc = + cvm::real[4], + cvm::real[4][4]> *ecalc = reinterpret_cast &, - cvm::matrix2d &> *>(jacobi); + cvm::real[4], + cvm::real[4][4]> *>(jacobi); int ierror = ecalc->Diagonalize(S, S_eigval, S_eigvec); if (ierror) { @@ -441,7 +441,7 @@ void colvarmodule::rotation::calc_optimal_rotation_impl() { #else NR::diagonalize_matrix(S, S_eigval, S_eigvec); #endif - q = cvm::quaternion(S_eigvec[0]); + q = cvm::quaternion{S_eigvec[0][0], S_eigvec[0][1], S_eigvec[0][2], S_eigvec[0][3]}; if (cvm::rotation::monitor_crossings) { if (q_old.norm2() > 0.0) { diff --git a/src/colvartypes.h b/src/colvartypes.h index 2630fa99a..455e628f1 100644 --- a/src/colvartypes.h +++ b/src/colvartypes.h @@ -10,6 +10,7 @@ #ifndef COLVARTYPES_H #define COLVARTYPES_H +#include // TODO specialize templates and replace this with iosfwd #include #ifdef COLVARS_LAMMPS @@ -80,6 +81,12 @@ template class colvarmodule::vector1d return data; } + /// Return a reference to the data + inline std::vector const &data_array() const + { + return data; + } + inline ~vector1d() { data.clear(); @@ -504,6 +511,12 @@ template class colvarmodule::matrix2d return data; } + /// Return a reference to the data + inline std::vector const &data_array() const + { + return data; + } + inline row & operator [] (size_t const i) { return rows[i]; @@ -1288,9 +1301,9 @@ class colvarmodule::quaternion { #ifndef COLVARS_LAMMPS namespace NR { -void diagonalize_matrix(cvm::matrix2d &m, - cvm::vector1d &eigval, - cvm::matrix2d &eigvec); +void diagonalize_matrix(cvm::real m[4][4], + cvm::real eigval[4], + cvm::real eigvec[4][4]); } #endif @@ -1304,16 +1317,16 @@ class colvarmodule::rotation cvm::rmatrix C; /// Overlap matrix S (4, 4) - cvm::matrix2d S; + cvm::real S[4][4]; /// Eigenvalues of S - cvm::vector1d S_eigval; + cvm::real S_eigval[4]; /// Eigenvectors of S - cvm::matrix2d S_eigvec; + cvm::real S_eigvec[4][4]; /// Used for debugging gradients - cvm::matrix2d S_backup; + cvm::real S_backup[4][4]; public: /// \brief Perform gradient tests diff --git a/src/colvarvalue.cpp b/src/colvarvalue.cpp index e57859dfa..64436db98 100644 --- a/src/colvarvalue.cpp +++ b/src/colvarvalue.cpp @@ -13,6 +13,7 @@ #include "colvarmodule.h" #include "colvarvalue.h" +#include "colvars_memstream.h" @@ -721,29 +722,43 @@ int colvarvalue::from_simple_string(std::string const &s) return COLVARS_ERROR; } -std::ostream & operator << (std::ostream &os, colvarvalue const &x) + +template void colvarvalue::write_to_stream_template_(OST &os) const { - switch (x.type()) { + switch (type()) { case colvarvalue::type_scalar: - os << x.real_value; + os << real_value; break; case colvarvalue::type_3vector: case colvarvalue::type_unit3vector: case colvarvalue::type_unit3vectorderiv: - os << x.rvector_value; + os << rvector_value; break; case colvarvalue::type_quaternion: case colvarvalue::type_quaternionderiv: - os << x.quaternion_value; + os << quaternion_value; break; case colvarvalue::type_vector: - os << x.vector1d_value; + os << vector1d_value; break; case colvarvalue::type_notset: default: os << "not set"; break; } +} + + +std::ostream & operator << (std::ostream &os, colvarvalue const &x) +{ + x.write_to_stream_template_(os); + return os; +} + + +cvm::memory_stream & operator << (cvm::memory_stream &os, colvarvalue const &x) +{ + x.write_to_stream_template_(os); return os; } @@ -758,44 +773,55 @@ std::ostream & operator << (std::ostream &os, std::vector const &v) } -std::istream & operator >> (std::istream &is, colvarvalue &x) +template void colvarvalue::read_from_stream_template_(IST &is) { - if (x.type() == colvarvalue::type_notset) { + if (type() == colvarvalue::type_notset) { cvm::error("Trying to read from a stream a colvarvalue, " "which has not yet been assigned a data type.\n"); - return is; } - switch (x.type()) { + switch (type()) { case colvarvalue::type_scalar: - is >> x.real_value; + is >> real_value; break; case colvarvalue::type_3vector: case colvarvalue::type_unit3vectorderiv: - is >> x.rvector_value; + is >> rvector_value; break; case colvarvalue::type_unit3vector: - is >> x.rvector_value; - x.apply_constraints(); + is >> rvector_value; + apply_constraints(); break; case colvarvalue::type_quaternion: - is >> x.quaternion_value; - x.apply_constraints(); + is >> quaternion_value; + apply_constraints(); break; case colvarvalue::type_quaternionderiv: - is >> x.quaternion_value; + is >> quaternion_value; break; case colvarvalue::type_vector: - is >> x.vector1d_value; + is >> vector1d_value; break; case colvarvalue::type_notset: default: - x.undef_op(); + undef_op(); } +} + + +std::istream & operator >> (std::istream &is, colvarvalue &x) +{ + x.read_from_stream_template_(is); return is; } +cvm::memory_stream & operator >> (cvm::memory_stream &is, colvarvalue &x) +{ + x.read_from_stream_template_(is); + return is; +} + size_t colvarvalue::output_width(size_t const &real_width) const { switch (this->value_type) { diff --git a/src/colvarvalue.h b/src/colvarvalue.h index 6bc7a57c7..5670906cd 100644 --- a/src/colvarvalue.h +++ b/src/colvarvalue.h @@ -298,12 +298,31 @@ class colvarvalue { /// Undefined operation void undef_op() const; +private: - /// \brief Formatted output operator - friend std::ostream & operator << (std::ostream &os, colvarvalue const &q); + /// Generic stream writing function (formatted and not) + template void write_to_stream_template_(OST &os) const; - /// \brief Formatted input operator - friend std::istream & operator >> (std::istream &is, colvarvalue &q); +public: + + /// Formatted output operator + friend std::ostream & operator << (std::ostream &os, colvarvalue const &x); + + /// Unformatted output operator + friend cvm::memory_stream & operator << (cvm::memory_stream &os, colvarvalue const &x); + +private: + + /// Generic stream reading function (formatted and not) + template void read_from_stream_template_(IST &is); + +public: + + /// Formatted input operator + friend std::istream & operator >> (std::istream &is, colvarvalue &x); + + /// Unformatted input operator + friend cvm::memory_stream & operator >> (cvm::memory_stream &is, colvarvalue &x); /// Give the number of characters required to output this /// colvarvalue, given the current type assigned and the number of diff --git a/src/nr_jacobi.cpp b/src/nr_jacobi.cpp index 58ff6d1dc..51c24e86c 100644 --- a/src/nr_jacobi.cpp +++ b/src/nr_jacobi.cpp @@ -14,13 +14,13 @@ namespace NR_Jacobi { -int jacobi(cvm::real **a, cvm::real *d, cvm::real **v, int *nrot) +int jacobi(cvm::real a[4][4], cvm::real d[4], cvm::real v[4][4], int *nrot) { int j,iq,ip,i; cvm::real tresh,theta,tau,t,sm,s,h,g,c; - cvm::vector1d b(n); - cvm::vector1d z(n); + cvm::real b[n]; + cvm::real z[n]; for (ip=0;ip + +#include "colvarmodule.h" +#include "colvartypes.h" +#include "colvarvalue.h" +#include "colvarparse.h" +#include "colvars_memstream.h" + + +template std::ostream &operator<<(std::ostream &os, std::vector const &v) +{ + os << "{"; + for (auto &vi : v) + os << " " << vi; + os << " }"; + return os; +} + +template void read_and_print(cvm::memory_stream &is, T &t) +{ + if (is >> t) { + std::cout << typeid(T).name() << ": " << t << std::endl; + } +} + + +int main(int argc, char const *argv[]) +{ + cvm::real x = -101.0; + size_t count = 1240566; + std::vector const a{1, 2, 3, 4, 5, 6, 7, 8}; + cvm::rvector const v = (cvm::rvector(-1.0, 1.0, 0.5)).unit(); + std::string const text("Vabbé / Está bien / Ça va / 好吧"); + std::vector> const a2(1, a); + + cvm::vector1d v_from_a(a.size(), a.data()); + + colvarvalue cv(v, colvarvalue::type_unit3vector); + + size_t n = (1L << 26); + if (argc > 1) { + n = atoi(argv[1]); + } + + cvm::memory_stream buf(n); + + // Use standard functions and operators interchangeably + buf.write_object(x); + buf.write_object(count); + buf.write_object(v); + buf << text; + buf << a; + + buf << v_from_a; + + buf << cv; + + std::string const block_key("colvar"); + std::string const block(" name a_colvar\n" + " x 1.0\n"); + buf << block_key << block; + + // // The following will raise a compile error + // buf << a2; + + if (buf) { + + cvm::real new_x = 0.0; + read_and_print(buf, new_x); + + size_t new_count = 0; + read_and_print(buf, new_count); + + cvm::rvector new_v; + read_and_print(buf, new_v); + + std::string new_text; + read_and_print(buf, new_text); + + std::vector new_a; + read_and_print(buf, new_a); + + cvm::vector1d new_v_from_a; + read_and_print(buf, new_v_from_a); + + colvarvalue new_cv(colvarvalue::type_unit3vector); + read_and_print(buf, new_cv); + + std::string block; + buf >> colvarparse::read_block("colvar", &block); + if (block.size()) { + std::cout << "block: \"\n" << block << "\"" << std::endl; + } + } + + std::cout << "buf.tellg() = " << buf.tellg() << std::endl; + std::cout << "buf.length() = " << buf.length() << std::endl; + std::cout << "buf.rdstate() = " << buf.rdstate() << std::endl; + std::cout << "goodbit = " << std::ios::goodbit << std::endl; + std::cout << "eofbit = " << std::ios::eofbit << std::endl; + std::cout << "badbit = " << std::ios::badbit << std::endl; + std::cout << "failbit = " << std::ios::failbit << std::endl; + + return buf ? 0 : 1; +} diff --git a/update-colvars-code.sh b/update-colvars-code.sh index 04b92325a..c75ab3083 100755 --- a/update-colvars-code.sh +++ b/update-colvars-code.sh @@ -84,7 +84,7 @@ then elif [ -f "${target}/include/molfile_plugin.h" ] then code="VMD-PLUGINS" -elif [ -f "${target}/src/gromacs/commandline/cmdlineinit.h" ] +elif [ -f "${target}/src/gromacs/version.h.cmakein" ] then code="GROMACS" else @@ -99,7 +99,7 @@ else elif [ -f "${target}/src/VMDApp.h" ] then code="VMD" - elif [ -f "${target}/src/gromacs/commandline/cmdlineinit.h" ] + elif [ -f "${target}/src/gromacs/version.h.cmakein" ] then code="GROMACS" else @@ -108,6 +108,12 @@ else fi fi +if [ ${code} == "GROMACS" ] ; then + if [ -f ${target}/src/gromacs/mdrunutility/mdmodulesnotifiers.cpp ] ; then + # Code after https://gitlab.com/gromacs/gromacs/-/merge_requests/3566 + code=GROMACS-DEV + fi +fi COLVARS_VERSION=$(grep define $(dirname $0)/src/colvars_version.h | cut -d' ' -f 3 | tr -d '"') if [ -z "${COLVARS_VERSION}" ] ; then @@ -518,7 +524,7 @@ then echo ' done.' fi -# Update GROMACS tree +# Update GROMACS tree (legacy versions) if [ ${code} = "GROMACS" ] then @@ -612,3 +618,81 @@ then exit 0 fi + +# Update GROMACS tree (MDModules interface-ready version) +if [ ${code} = "GROMACS-DEV" ] +then + + copy_lepton ${target}/src/external/ || exit 1 + + target_folder=${target}/src/external/colvars + patch_opts="-p1 --forward -s" + + echo "" + if [ -d ${target_folder} ] + then + echo "Your ${target} source tree seems to have already been patched." + echo "Update with the last Colvars source." + else + mkdir ${target_folder} + fi + + # Copy library files and proxy files to the "src/external/colvars" folder + for src in ${source}/src/*.h ${source}/src/*.cpp + do \ + tgt=$(basename ${src}) + condcopy "${src}" "${target_folder}/${tgt}" + done + echo "" + + # Copy CMake files + for src in ${source}/gromacs/cmake/gmxManage{Colvars,Lepton}.cmake + do \ + tgt=$(basename ${src}) + condcopy "${src}" "${target}/cmake/${tgt}" + done + echo "" + + # Copy MDModules files to the "src/gromacs/applied_forces/colvars" folder + target_folder=${target}/src/gromacs/applied_forces/colvars + if [ -d ${target_folder} ] + then + echo "Your ${target} source tree seems to have already been patched." + echo "Update with the last Colvars source." + else + mkdir ${target_folder} + mkdir -p ${target_folder}/tests/refdata + fi + for src in ${source}/gromacs/gromacs-mdmodules/applied_forces/colvars/*.* ; do + tgt=$(basename ${src}) + condcopy "${src}" "${target_folder}/${tgt}" + done + for src in ${source}/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/*.* ; do + tgt=$(basename ${src}) + condcopy "${src}" "${target_folder}/tests/${tgt}" + done + for src in ${source}/gromacs/gromacs-mdmodules/applied_forces/colvars/tests/refdata/*.* ; do + tgt=$(basename ${src}) + condcopy "${src}" "${target_folder}/tests/refdata/${tgt}" + done + + echo "" + + # Apply patch for Gromacs files + patch ${patch_opts} -d ${target} < ${source}/gromacs/gromacs-mdmodules.patch + ret_val=$? + if [ $ret_val -ne 0 ] + then + echo " ************************************************************************************************ " + echo " Patch fails. Your GROMACS developement tree may be different of one used for creating the patch. " + echo " ************************************************************************************************ " + else + echo ' done.' + echo "" + echo " *******************************************" + echo " Please create your build with cmake now." + echo " *******************************************" + fi + + exit 0 +fi diff --git a/vmd/cv_dashboard/Makefile b/vmd/cv_dashboard/Makefile index 09d880d58..93af75f0d 100644 --- a/vmd/cv_dashboard/Makefile +++ b/vmd/cv_dashboard/Makefile @@ -1,7 +1,8 @@ .SILENT: VMFILES := $(wildcard *.tcl) templates -VMVERSION = 1.5 +cat := $(if $(filter $(OS),Windows_NT),type,cat) +VMVERSION := $(shell $(cat) VERSION) DIR = $(PLUGINDIR)/noarch/tcl/cv_dashboard$(VMVERSION) bins: diff --git a/vmd/cv_dashboard/Makefile.local b/vmd/cv_dashboard/Makefile.local index 1b0cbaa37..ce84a5e25 100644 --- a/vmd/cv_dashboard/Makefile.local +++ b/vmd/cv_dashboard/Makefile.local @@ -1,6 +1,8 @@ # -*- makefile -*- -VERSION = 1.5 +cat := $(if $(filter $(OS),Windows_NT),type,cat) +VERSION := $(shell $(cat) VERSION) + ifeq (${DESTINATION},) DESTINATION = ${HOME}/lib/vmd/plugins/noarch/tcl/cv_dashboard${VERSION} endif diff --git a/vmd/cv_dashboard/VERSION b/vmd/cv_dashboard/VERSION new file mode 100644 index 000000000..b3f3232ae --- /dev/null +++ b/vmd/cv_dashboard/VERSION @@ -0,0 +1 @@ +2023-01-11 diff --git a/vmd/cv_dashboard/cv_dashboard.tcl b/vmd/cv_dashboard/cv_dashboard.tcl index 90c72a097..7d64ee82b 100644 --- a/vmd/cv_dashboard/cv_dashboard.tcl +++ b/vmd/cv_dashboard/cv_dashboard.tcl @@ -23,7 +23,13 @@ # TODO maybe: # - index group builder -package provide cv_dashboard 1.5 +set dir [file dirname [info script]] +set version_file [open "${dir}/VERSION"] +gets $version_file CV_DASHBOARD_VERSION +close $version_file +# Convert to Tcl-style package version number +set CV_DASHBOARD_TCL_VERSION [string map { "-" "." } $CV_DASHBOARD_VERSION] +package provide cv_dashboard $CV_DASHBOARD_TCL_VERSION namespace eval ::cv_dashboard { # General UI state diff --git a/vmd/cv_dashboard/pkgIndex.tcl b/vmd/cv_dashboard/pkgIndex.tcl index d3bada8cf..d546adde1 100644 --- a/vmd/cv_dashboard/pkgIndex.tcl +++ b/vmd/cv_dashboard/pkgIndex.tcl @@ -1,5 +1,6 @@ # Tcl package index file, version 1.1 -# This file is generated by the "pkg_mkIndex" command + +# This file is generated manually # and sourced either when an application starts up or # by a "package unknown" script. It invokes the # "package ifneeded" command to set up package-related @@ -8,4 +9,11 @@ # script is sourced, the variable $dir must contain the # full path name of this file's directory. -package ifneeded cv_dashboard 1.5 "set env(CV_DASHBOARD_DIR) [list $dir]; [list source [file join $dir cv_dashboard.tcl]]" +set dir [file dirname [info script]] +set version_file [open "${dir}/VERSION"] +gets $version_file CV_DASHBOARD_VERSION +close $version_file +# Convert to Tcl-style package version number +set CV_DASHBOARD_TCL_VERSION [string map { "-" "." } $CV_DASHBOARD_VERSION] + +package ifneeded cv_dashboard $CV_DASHBOARD_TCL_VERSION "set env(CV_DASHBOARD_DIR) [list $dir]; [list source [file join $dir cv_dashboard.tcl]]" diff --git a/vmd/src/colvarproxy_vmd.C b/vmd/src/colvarproxy_vmd.C index 4cd448112..53cd003ea 100644 --- a/vmd/src/colvarproxy_vmd.C +++ b/vmd/src/colvarproxy_vmd.C @@ -155,7 +155,7 @@ cvm::real colvarproxy_vmd::rand_gaussian() int colvarproxy_vmd::set_unit_system(std::string const &units_in, bool check_only) { // if check_only is specified, just test for compatibility - // cvolvarmodule does that if new units are requested while colvars are already defined + // colvarmodule sets this flag if new units are requested while colvars are already defined if (check_only) { if ((units != "" && units_in != units) || (units == "" && units_in != "real")) { cvm::error("Specified unit system \"" + units_in + "\" is incompatible with previous setting \"" diff --git a/vmd/src/colvarproxy_vmd_version.h b/vmd/src/colvarproxy_vmd_version.h index 53c2d8efc..5f7e40b66 100644 --- a/vmd/src/colvarproxy_vmd_version.h +++ b/vmd/src/colvarproxy_vmd_version.h @@ -1,3 +1,3 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2023-07-06" +#define COLVARPROXY_VERSION "2023-10-03" #endif diff --git a/vmd/src/colvars_files.pl b/vmd/src/colvars_files.pl index 1437df404..a79df23f1 100644 --- a/vmd/src/colvars_files.pl +++ b/vmd/src/colvars_files.pl @@ -50,6 +50,7 @@ 'colvarscript_commands.C', 'colvarscript_commands_bias.C', 'colvarscript_commands_colvar.C', + 'colvars_memstream.C', 'colvartypes.C', 'colvarvalue.C', 'nr_jacobi.C'); @@ -86,6 +87,7 @@ 'colvarscript_commands.h', 'colvarscript_commands_bias.h', 'colvarscript_commands_colvar.h', + 'colvars_memstream.h', 'colvars_version.h', 'colvartypes.h', 'colvarvalue.h', diff --git a/vmd/tests/interface/run_tests.sh b/vmd/tests/interface/run_tests.sh index 7681db075..ef8566ef5 100755 --- a/vmd/tests/interface/run_tests.sh +++ b/vmd/tests/interface/run_tests.sh @@ -78,10 +78,8 @@ do RETVAL=$? if [ $RETVAL -ne 0 ] then - if [ ${base##*\.} = 'out' ] + if [ ${base} == ${base%.out} ] # Ignore differences in stdout log then - echo -n "(warning: differences in log file $base) " - else echo -e "\n*** Failure for file $base: see $dir/$base.diff ***" SUCCESS=0 ALL_SUCCESS=0 @@ -91,7 +89,7 @@ do if [ $SUCCESS -eq 1 ] then - echo "Success!" + echo " Success!" cleanup_files fi